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

📄 magicaction.java

📁 论坛软件系统亦称电子公告板(BBS)系统
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
				value = (Integer)method_get.invoke(member);
			} catch (Exception e) {
				e.printStackTrace();
			}
			int discount  = getDiscount(usergroupMap);
			if(magicPrice*discount/10*magicnumLong>value){
				message = "您的 "+extcredits+" 不足,请返回修改购买道具数量。";
			}else{
				int timestamp=(Integer)request.getAttribute("timestamp");
				if(sendToOtherUser==null){ 
					if(!validateWeight(member.getUid(),usergroupMap,magics.getMagicid(),magicnumLong)){
						message = "超过最大道具负载量,请返回修改。";
					}else{
						updateMagics_NumAndSalevoume(magics, magicnumLong.intValue());
						Magiclog magiclog = getMagiclog(member.getUid(), magics.getMagicid(), magicnumLong.shortValue(), magicPrice*discount/10, member.getUid(),(byte)1,timestamp);
						setMemberBalance(value, magicPrice*discount/10*magicnumLong.intValue(), member, settingsValue);
						Membermagics memberMagics = creatOrUpdateMemberMagics(member.getUid(),  magics.getMagicid(), magicnumLong.shortValue());
						if(!MMMMService.userBuyMagic(magics, magiclog, member, memberMagics)){
							message = "道具购买失败!请稍后再试。如果无法解决请联系管理员";
						}
					}
				}else{ 
					String tousername = request.getParameter("tousername"); 
					if(tousername!=null&&tousername.trim().equals("")){
						message = "请输入要赠送的用户名。";
					} else if(member.getUsername().equals(tousername)){ 
						message = "对不起,不能赠送给自己,请返回修改。";
					} else {
						Members targetMembers = memberService.findByName(tousername);
						if (targetMembers == null) { 
							message = "对不起,您所指定的目标不存在,请返回。";
						} else {
							if (!validateWeight(targetMembers,magics.getMagicid(),magicnumLong)) {
								message = "超过最大道具负载量,请返回修改。";
							} else {
								updateMagics_NumAndSalevoume(magics,magicnumLong.intValue());
								Magiclog magiclog = getMagiclog(member.getUid(), magics.getMagicid(),magicnumLong.shortValue(), magicPrice* discount / 10, targetMembers.getUid(),(byte)3,timestamp);
								setMemberBalance(value, magicPrice*discount/10*magicnumLong.intValue(), member, settingsValue);
								Membermagics memberMagics = creatOrUpdateMemberMagics(targetMembers.getUid(),  magics.getMagicid(), magicnumLong.shortValue());
								if (!MMMMService.userBuyMagic(magics, magiclog,member, memberMagics)) {
									message = "道具购买失败!请稍后再试。如果无法解决请联系管理员";
								}
							}
						}
					}
				}
			}
		}
		if(message.equals(messageFinal)){
			 String requestPath =  request.getContextPath()+"/magic.jsp?action=shop";
			 request.setAttribute("requestPath", requestPath);
			 request.setAttribute("successInfo", message);
		}else{
			request.setAttribute("errorInfo", message);
		}
		return mapping.findForward("showMessage");
	}
	private boolean validateWeight(int userid,Map<String,String> usergroupMap,Short magicsidOfGet,Long magicsNum){
		Short maxmagicsweight = Short.valueOf(usergroupMap.get("maxmagicsweight"));
		boolean bool = false;
		try{
			bool = memberMagicsService.validateWeight(userid, maxmagicsweight, magicsidOfGet, magicsNum);
		}catch (Exception e) {
			e.printStackTrace();
		}
		return bool;
	}
	
	private boolean validateWeight(Members members,Short magicsidOfGet,Long magicsNum){
		Integer userid = members.getUid();
		short userGroupId = members.getGroupid();
		Usergroups usergroups = userGroupService.findUserGroupById(userGroupId);
		short maxmagicsweight = usergroups.getMaxmagicsweight();
		boolean bool = false;
		try{
			bool = memberMagicsService.validateWeight(userid, maxmagicsweight, magicsidOfGet, magicsNum);
		}catch (Exception e) {
			e.printStackTrace();
		}
		return bool;
	}
	private int getDiscount(Map<String,String> usergroupMap){
		int discount = 0;
		try{
			discount = Integer.parseInt(usergroupMap.get("magicsdiscount"));
		}catch(NumberFormatException exception){
			exception.printStackTrace();
		}
		if(discount==0){
			discount=10;
		}
		return discount;
	}
	private void updateMagics_NumAndSalevoume(Magics magics,int num){
		magics.setNum(magics.getNum()-num);
		magics.setSalevolume(Integer.valueOf(magics.getSalevolume()+num).shortValue());
	}
	private Magiclog getMagiclog(int uid,short magicid,short magicNum,Integer price,Integer targetUid,Byte action,int timestamp){
		Magiclog magiclog = new Magiclog();
		MagiclogId magiclogId = new MagiclogId();
		magiclogId.setUid(uid); 
		magiclogId.setMagicid(magicid); 
		magiclogId.setAction(action);
		magiclogId.setDateline(timestamp);
		magiclogId.setAmount(magicNum); 
		magiclogId.setPrice(price); 
		magiclogId.setTargettid(0);
		magiclogId.setTargetpid(action==3?0:targetUid); 
		magiclogId.setTargetuid(action==1?0:targetUid);
		magiclog.setId(magiclogId);
		return magiclog;
	}
	private void setMemberBalance(int moneyOfBefore,int moneyOfSpend,Members members,String extcreditsNumber){
		try {
			Integer balance = moneyOfBefore-moneyOfSpend; 
			Method method_set = Members.class.getMethod("setExtcredits"+extcreditsNumber,Integer.class); 
			method_set.invoke(members,balance);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	private Membermagics creatOrUpdateMemberMagics(int uid,short magicid,short magicNum){
		Membermagics memberMagics =  memberMagicsService.getMemberMagics(uid, magicid);
		if(memberMagics==null){
			memberMagics = new Membermagics();
			MembermagicsId membermagicsId = new MembermagicsId();
			membermagicsId.setUid(uid); 
			membermagicsId.setMagicid(magicid); 
			memberMagics.setId(membermagicsId);
			memberMagics.setNum(magicNum); 
		}else{
			memberMagics.setNum((short)(magicNum+memberMagics.getNum())); 
		}
		return memberMagics;
	}
	private Magic_navbarVO getMagic_navbarVO(int memberId,String memberCredits,
			Map<String,String> usergroups,Map<String,String> settingsMap,
			Map<Integer,String> extcreditsMap){
		Integer magicWeightNow = 0;
		String sql = "SELECT SUM(mm.num*m.weight) AS s FROM "+tablePrefix+"membermagics AS mm LEFT JOIN "+tablePrefix+"magics AS m ON mm.magicid=m.magicid WHERE mm.uid="+memberId;
		List<Map<String,String>> resultTemp = dataBaseService.executeQuery(sql, new String[]{"s"});
		if(resultTemp!=null&&resultTemp.size()>0){
			Map<String,String> resultMap = resultTemp.get(0);
			if(resultMap!=null){
				String reuslt = resultMap.get("s");
				if(reuslt!=null){
					magicWeightNow = Integer.valueOf(reuslt);
				}
			}
		}
		String magicmarket = settingsMap.get("magicmarket"); 
		Magic_navbarVO magic_navbarVO = new Magic_navbarVO();
		magic_navbarVO.setOpenmarket(magicmarket!=null&&magicmarket.equals("1"));
		magic_navbarVO.setAllowMagicWeigth(usergroups.get("maxmagicsweight"));
		magic_navbarVO.setMagicWeigthNow(magicWeightNow.toString());
		magic_navbarVO.setScoring(memberCredits);
		magic_navbarVO.setAgio(usergroups.get("magicsdiscount"));
		List<OtherScoring> otherScoringList = magic_navbarVO.getOtherScoringList();
		
		String extcreditsFromMap = null;
		String creditstrans = null;
		if(settingsMap!=null){
			extcreditsFromMap = settingsMap.get("extcredits");
			creditstrans = settingsMap.get("creditstrans");
		}else{
			extcreditsFromMap = ((Settings)creSetSer.getSetting("extcredits")).getValue();
			creditstrans = ((Settings)creSetSer.getSetting("creditstrans")).getValue();
		}
		Map tempMap1 = ((DataParse) BeanFactory.getBean("dataParse")).characterParse(extcreditsFromMap,  true);
		for(int i = 0;i<tempMap1.size();i++){
			Map tempMap2 = (Map)tempMap1.get(Integer.valueOf(i+1));
			String extcreditValue = extcreditsMap.get(i+1);
			otherScoringList.add(magic_navbarVO.getOtherScoring((String)tempMap2.get("title"), extcreditValue,(String)tempMap2.get("unit"),(Integer.valueOf(creditstrans)==i+1)));
		}
		return magic_navbarVO;
	}
	
	private void setPage(HttpServletRequest request,Integer size,Integer pagesize,Integer pages,String url){
		LogPage logpage = new LogPage(size, pagesize, pages);
		request.setAttribute("lpp", pagesize);
		request.setAttribute("url", url);
		request.setAttribute("logpage", logpage);
	}
	@SuppressWarnings("unused")
	private static int convertInt(String s) {
		int count = 0;
		try {
			count = Integer.valueOf(s);
		} catch (Exception e) {
		}
		return count;
	}
	private String getAccessInfo(Integer memberId,Map<String,String> settingsMap,Map<String,String> usergroupMap,Byte action){
		String accessInfo = null;
		if(memberId==null){
			return accessInfo = "您还没有登陆";
		}
		if(settingsMap==null){
			return accessInfo = "获取信息失败,请与管理员联系。";
		}
		String magicstatus = settingsMap.get("magicstatus");
		if(magicstatus==null||!magicstatus.equals("1")){
			return accessInfo = "对不起,道具功能没有开启.请返回。";
		}
		String creditstrans = settingsMap.get("creditstrans");
		if (creditstrans==null||creditstrans.equals("0")) {
			return accessInfo = "对不起,交易积分没有被启用,无法使用此功能,请返回或与管理员联系。";
		}
		if(usergroupMap==null){
			return accessInfo = "获取用户组信息失败,请与管理员联系。";
		}
		String allowMagics = usergroupMap.get("allowmagics");
		if(allowMagics==null){
			return accessInfo = "没有获得您是否能够使用道具的信息.请联系管理员";
		}
		if(Byte.parseByte(allowMagics)<action){
			if(action==1){
				return accessInfo = "您所在的用户组不允许使用道具系统,请返回。";
			}else{
				return accessInfo = "您所在的用户组不允许转让道具,请返回。";
			}
		}
		return accessInfo;
	}
	private boolean magicIsUserable(String magicperm,String currentUsergroupId){
		Map tempMap = ((DataParse)BeanFactory.getBean("dataParse")).characterParse(magicperm, false);
		String usergroups = (String)tempMap.get("usergroups");
		if(usergroups!=null&&!usergroups.trim().equals("")){
			String[] usergroupIdArray = usergroups.split("\t");
			for(String usergroupId : usergroupIdArray){
				if(usergroupId.equals(currentUsergroupId)){
					return true;
				}
			}
			return false;
		}else{
			return false;
		}
	}
	private Map<String, Integer> multi(HttpServletRequest request,int uid, String sql, String url) {
		HttpSession session=request.getSession();
		Map<String, String> settings = (Map<String, String>) request.getAttribute("settings");
		Members member = uid > 0 ? (Members)session.getAttribute("user") : null;
		List<Map<String, String>> count = dataBaseService.executeQuery(sql);
		int num = Integer.valueOf(count.get(0).get("count"));
		int tpp = member != null && member.getTpp() > 0 ? member.getTpp(): Integer.valueOf(settings.get("topicperpage"));
		int page = Common.toDigit(request.getParameter("page"),2147483647l, 1L).intValue();
		Map<String,Integer> multiInfo=Common.getMultiInfo(num, tpp, page);
		page=multiInfo.get("curpage");
		Map<String,Object> multi=Common.multi(num, tpp, page, url, 0, 10, true, false, null, false);
		request.setAttribute("multipage", (String)multi.get("multipage"));
		Map<String, Integer> map = new HashMap<String, Integer>();
		map.put("beginsize", multiInfo.get("start_limit"));
		map.put("pagesize", tpp);
		return map;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -