⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mymagicboxaction.java

📁 论坛软件系统亦称电子公告板(BBS)系统
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
			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 + -