📄 mymagicboxaction.java
字号:
if(usergroupIdString==null){
return null;
}
String[] usergroupIdArray = usergroupIdString.split("\t");
List<Short> usergroutIdList = new ArrayList<Short>();
for(int i = 0;i<usergroupIdArray.length;i++){
if(!usergroupIdArray[i].equals("")){
usergroutIdList.add(Short.valueOf(usergroupIdArray[i]));
}
}
return userGroupService.getUsergroupList(usergroutIdList);
}else {
return null;
}
}
public ActionForward operating(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
String operation = request.getParameter("operation");
HttpSession session = request.getSession();
Integer memberId = (Integer)session.getAttribute("jsprun_uid");
Map<String,String> settingsMap = (Map<String,String>)request.getAttribute("settings");
Map<String,String> usergroupMap = (Map<String,String>)request.getAttribute("usergroups");
Byte action = buyOrUse;
if(operation.equals("sell")||operation.equals("give")){
action = sendOrSell;
}
String accessInfo = getAccessInfo(memberId, settingsMap, usergroupMap, action);
if(accessInfo!=null){
request.setAttribute("errorInfo", accessInfo);
return mapping.findForward("showMessage");
}
String targetPidFromPage = request.getParameter("targetPid");
String targetTidFromPage = request.getParameter("targetTid");
String targetUsername = request.getParameter("targetUsername");
short magicid = Short.valueOf(request.getParameter("magicid"));
String magicnumFromPage = request.getParameter("magicnum");
String toUsername = request.getParameter("tousername");
String priceFromPage = request.getParameter("price");
targetPidFromPage = getIntegerStringFromRequest(targetPidFromPage);
targetTidFromPage = getIntegerStringFromRequest(targetTidFromPage);
magicnumFromPage = getIntegerStringFromRequest(magicnumFromPage);
priceFromPage = getIntegerStringFromRequest(priceFromPage);
Integer targetPid = targetPidFromPage==null?null:Integer.valueOf(targetPidFromPage);
Integer targetTid = targetTidFromPage==null?null:Integer.valueOf(targetTidFromPage);
Integer magicnum = magicnumFromPage==null?null:Integer.valueOf(magicnumFromPage);
Integer price = priceFromPage==null?null:Integer.valueOf(priceFromPage);
Magics magics = otherSetService.queryMagicById(magicid);
if(!operation.equals("drop")&&!magicIsUserable(magics.getMagicperm(), usergroupMap.get("groupid"))){
request.setAttribute("errorInfo", "您所在的用户组不能使用该道具");
return mapping.findForward("showMessage");
}
if(operation.equals("use")){
if(targetTid!=null){
List<Map<String,String>> checkMapList = dataBaseService.executeQuery("SELECT * FROM "+tablePrefix+"threadsmod WHERE magicid='0' AND tid='"+targetTid+"'");
String[] tempActionArray = {"CLS", "ECL", "EHL", "EST", "HLT", "STK"};
for(Map<String,String> tempMap : checkMapList){
if("0".equals(tempMap.get("magicid"))&&Arrays.binarySearch(tempActionArray, tempMap.get("action"))>-1){
request.setAttribute("errorInfo", "对不起,此帖已被版主操作,禁止使用道具,请返回。");
return mapping.findForward("showMessage");
}
}
}
request.setAttribute("targetPid", targetPid);
request.setAttribute("targetTid", targetTid);
request.setAttribute("targetUsername", targetUsername);
if(operating_use(request,response, magics, targetPid,targetTid,targetUsername)){
if(magicid==2){
request.setAttribute("errorInfo", request.getAttribute("messageFromOperationMagic"));
}else if(magicid==3){
request.setAttribute("errorInfo", request.getAttribute("messageFromOperationMagic"));
}else if(magicid==7){
String messageFromOperationMagic = (String)request.getAttribute("messageFromOperationMagic");
if(messageFromOperationMagic!=null){
request.setAttribute("errorInfo", messageFromOperationMagic);
}else{
List<Short> keyList = (List<Short>)request.getAttribute("messageFromOperationMagic_rl");
StringBuffer message = null;
int keyListSize = keyList.size();
if(keyListSize==0){
message = new StringBuffer("您查找的用户并不在线.");
}else if(keyListSize==1){
message = new StringBuffer("您查找的用户在. ");
}else{
message = new StringBuffer("您查找的用户有多个 IP 登陆,位置分别在.:");
}
MessageResources mr = getResources(request);
for(Short key : keyList){
message.append(mr.getMessage(getLocale(request),key.toString())+"\t");
}
request.setAttribute("errorInfo", message);
}
}else {
String messageFromOperationMagic = (String)request.getAttribute("messageFromOperationMagic");
if(messageFromOperationMagic!=null){
request.setAttribute("errorInfo", messageFromOperationMagic);
}else{
request.setAttribute("successInfo", "道具使用成功!");
request.setAttribute("requestPath", request.getContextPath()+"/magic.jsp?action=user");
}
}
}else{
String tempMessage = (String)request.getAttribute("errorInfo");
if(tempMessage==null){
tempMessage = "道具使用失败";
}
request.setAttribute("errorInfo", tempMessage);
}
}else if(operation.equals("sell")){
if(price!=null&&magicnum!=null){
String result = operating_sell(magicnum, price, magics, request);
if(result==null){
request.setAttribute("successInfo", "道具操作成功");
request.setAttribute("requestPath", request.getContextPath()+"/magic.jsp?action=market");
}else{
request.setAttribute("errorInfo", result);
}
}else{
request.setAttribute("errorInfo", "道具操作失败!");
}
}else if(operation.equals("give")){
if(magicnum!=null&&toUsername!=null){
String result = operating_give(magicnum, toUsername, magics, request);
if(result==null){
request.setAttribute("successInfo", "道具操作成功");
request.setAttribute("requestPath", request.getContextPath()+"/magic.jsp?action=user");
}else{
request.setAttribute("errorInfo", result);
}
}else{
request.setAttribute("errorInfo", "道具操作失败!");
}
}else {
if(magicnum!=null){
String result = operating_drop(magicnum,magicid,request);
if(result==null){
request.setAttribute("successInfo", "道具操作成功!");
request.setAttribute("requestPath", request.getContextPath()+"/magic.jsp?action=user");
}else{
request.setAttribute("errorInfo", result);
}
}else{
request.setAttribute("errorInfo", "道具操作失败!");
}
}
return mapping.findForward("showMessage");
}
private String getIntegerStringFromRequest(String targetString){
if (targetString != null) {
targetString = FormDataCheck
.getNumberFromForm(targetString);
Long temp = Long.valueOf(targetString);
if (temp > Integer.MAX_VALUE) {
targetString = Integer.MAX_VALUE + "";
}
}
return targetString;
}
private boolean operating_use(HttpServletRequest request,HttpServletResponse response,Magics magics,Integer targetPid,Integer targetTid,String targetUsername){
Map magicPermMap = getMapByString(magics);
if(validateScriptFile(magics)){
if(usableByCurrentUser(request,magicPermMap)){
String temp = validateTargetBeing(magicPermMap,targetPid,targetTid,targetUsername);
if(temp==null){
if(magics.getAvailable()==1){
if(validateMemberMagics(magics, request)){
String scriptPath = "/include/magics/"+magics.getFilename();
RequestDispatcher dispatcher = request.getRequestDispatcher(scriptPath);
try {
dispatcher.include(request, response);
return true;
} catch (Exception exception){
return false;
}
}else{
request.setAttribute("errorInfo", "道具不存在或者不可用,请返回。");
return false;
}
}else{
request.setAttribute("errorInfo", "该道具不可用");
return false;
}
}else{
request.setAttribute("errorInfo", temp);
return false;
}
}else{
request.setAttribute("errorInfo", "您所在的用户组不能使用该道具");
return false;
}
}else {
request.setAttribute("errorInfo", "道具文件所需文件 ./include/magic/ "+magics.getFilename()+"不存在。");
return false;
}
}
private boolean validateScriptFile(Magics magics){
String fileName = magics.getFilename();
String filePath = servlet.getServletContext().getRealPath("include/magics/"+fileName);
File file = new File(filePath);
if(!file.isFile()){
return false;
}else{
return true;
}
}
private Map getMapByString(Magics magics){
return ((DataParse) BeanFactory.getBean("dataParse")).characterParse(magics.getMagicperm(), false);
}
private boolean usableByCurrentUser(HttpServletRequest request,Map magicPermMap){
Map<String,String> groupMap = (Map<String,String>)request.getAttribute("usergroups");
String groupId = groupMap.get("groupid");
String usergroups = (String)magicPermMap.get("usergroups");
if(usergroups!=null&&!usergroups.trim().equals("")){
String[] tempArray = usergroups.split("\t");
for(int i = 0;i<tempArray.length;i++){
if(tempArray[i].equals(groupId)){
return true;
}
}
}
return false;
}
private String validateTargetBeing(Map magicPermMap,Integer targePid,Integer targetTid,String targetUsername){
if(targePid!=null){
Posts posts = postsService.getPostsById(targePid);
if(posts==null){
return "该道具操作的目标并不存在";
}else{
Short fid = posts.getFid();
String targetModel = (String)magicPermMap.get("forum");
if(targetModel!=null&&!targetModel.trim().equals("")){
String[] targetModelIdArray = targetModel.split("\t");
for(int i=0;i<targetModelIdArray.length;i++){
if(targetModelIdArray[i].equals(fid.toString())){
return null;
}
}
}
return "该道具不能对该帖子所在的版块使用";
}
}else if(targetTid!=null){
Threads threads = threadsService.getThreadsById(targetTid);
if(threads==null){
return "该道具操作的目标并不存在";
}else {
Short fid = threads.getFid();
String targetModel = (String)magicPermMap.get("forum");
if(targetModel!=null&&!targetModel.trim().equals("")){
String[] targetModelIdArray = targetModel.split("\t");
for(int i=0;i<targetModelIdArray.length;i++){
if(targetModelIdArray[i].equals(fid.toString())){
return null;
}
}
}
return "该道具不能对该帖子所在的版块使用";
}
}else if(targetUsername!=null){
Members members = memberService.findByName(targetUsername);
if(members==null){
return "该道具操作的目标并不存在";
}else{
Short groupId = members.getGroupid();
String targetGroup = (String)magicPermMap.get("targetgroups");
if(targetGroup!=null&&!targetGroup.trim().equals("")){
String[] targetGroupIdArray = targetGroup.split("\t");
for(int i = 0;i<targetGroupIdArray.length;i++){
if(targetGroupIdArray[i].equals(groupId.toString())){
return null;
}
}
}
return "该道具不能对该用户所在的用户组使用";
}
}else {
return null;
}
}
private boolean validateMemberMagics(Magics magics,HttpServletRequest request){
Membermagics memberMagics = memberMagicsService.getMemberMagics((Integer)request.getSession().getAttribute("jsprun_uid"), magics.getMagicid());
if(memberMagics==null||memberMagics.getNum()<1){
return false;
}else{
return true;
}
}
private String operating_give(Integer magicnum,String targetUsername,Magics magics,HttpServletRequest request){
short magicid = magics.getMagicid();
if(magicnum==0){
return "操作数量不合法,请返回修改。";
}
Members members = (Members)request.getSession().getAttribute("user");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -