package project.web.admin.monitor.pledge; import java.math.BigDecimal; import java.util.Date; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.providers.encoding.PasswordEncoder; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.servlet.ModelAndView; import kernel.exception.BusinessException; import kernel.util.DateUtils; import kernel.util.StringUtils; import kernel.web.Page; import kernel.web.PageActionSupport; import project.Constants; import project.log.LogService; import project.monitor.AdminPledgeOrderService; import project.monitor.pledge.PledgeConfig; import project.monitor.pledge.PledgeConfigService; import project.monitor.pledge.PledgeOrder; import project.monitor.pledge.PledgeOrderService; import project.party.PartyService; import project.party.model.Party; import security.SecUser; import security.internal.SecUserService; /** * 用户质押 */ @RestController public class AdminPledgeOrderController extends PageActionSupport { private Logger logger = LoggerFactory.getLogger(AdminPledgeOrderController.class); @Autowired protected AdminPledgeOrderService adminPledgeOrderService; @Autowired protected PledgeOrderService pledgeOrderService; @Autowired protected PledgeConfigService pledgeConfigService; @Autowired protected PartyService partyService; @Autowired protected LogService logService; @Autowired protected SecUserService secUserService; @Autowired protected PasswordEncoder passwordEncoder; private final String action = "normal/adminPledgeOrderAction!"; /** * 用户质押 列表 */ @RequestMapping(value = action + "list.action") public ModelAndView list(HttpServletRequest request) { int pageNo = this.checkAndSetPageNo(request.getParameter("pageNo")); int pageSize = 30; String name_para = request.getParameter("name_para"); String title_para = request.getParameter("title_para"); String message = request.getParameter("message"); String error = request.getParameter("error"); Page page = this.adminPledgeOrderService.pagedQuery(pageNo, pageSize, name_para, title_para, this.getLoginPartyId()); for(Map map : (List)page.getElements()) { map.put("income", map.get("income")==null?null:new BigDecimal(map.get("income").toString()).toPlainString()); map.put("applytime", map.get("applytime") == null ? null : map.get("applytime").toString().substring(0, 10)); map.put("sendtime", map.get("sendtime") == null ? null : map.get("sendtime").toString().substring(0, 10)); if (null == map.get("rolename")) { map.put("roleNameDesc", ""); } else { String roleName = map.get("rolename").toString(); map.put("roleNameDesc", Constants.ROLE_MAP.containsKey(roleName) ? Constants.ROLE_MAP.get(roleName) : roleName); } } ModelAndView model = new ModelAndView(); model.addObject("pageNo", pageNo); model.addObject("pageSize", pageSize); model.addObject("page", page); model.addObject("name_para", name_para); model.addObject("title_para", title_para); model.addObject("message", message); model.addObject("error", error); model.setViewName("auto_monitor_pledge_order_list"); return model; } /** * 新增 质押配置 */ @RequestMapping(value = action + "toAdd.action") public ModelAndView toAdd(HttpServletRequest request) { PledgeConfig entity = this.pledgeConfigService.findById("2c948a827cd5f779017cd2322f5d0001"); String error = request.getParameter("error"); ModelAndView model = new ModelAndView(); model.addObject("content_img", entity.getContent_img()); model.addObject("title_img", entity.getTitle_img()); model.addObject("config", entity.getConfig()); model.addObject("error", error); model.setViewName("auto_monitor_pledge_order_add"); return model; } protected String verification(String usercode, String title, String title_img, String content_img, String config, String limitDays, String usdt_temp, String eth_temp) { // if (StringUtils.isNullOrEmpty(usercode)) { // return "请输入UID"; // } if (StringUtils.isEmptyString(limitDays) || !StringUtils.isInteger(limitDays) || Integer.valueOf(limitDays) < 0) { return "请输入正确的限制天数"; } if (StringUtils.isNullOrEmpty(title)) { return "请输入质押标题文本"; } if (StringUtils.isEmptyString(title_img)) { return "请上传质押标题图片"; } if (StringUtils.isEmptyString(content_img)) { return "请上传质押内容图片"; } if (StringUtils.isEmptyString(config)) { return "请输入收益费率"; } if (StringUtils.isEmptyString(usdt_temp) || !StringUtils.isDouble(usdt_temp) || Double.valueOf(usdt_temp) < 0) { return "请输入正确的用户USDT达标数量"; } if (StringUtils.isEmptyString(eth_temp) || !StringUtils.isDouble(eth_temp) || Double.valueOf(eth_temp) < 0) { return "请输入正确的奖励ETH数量"; } return null; } @RequestMapping(value = action + "add.action") public ModelAndView add(HttpServletRequest request) { String content = request.getParameter("content"); String content_img = request.getParameter("content_img"); String config = request.getParameter("config"); String usercode = request.getParameter("usercode"); String limitDays = request.getParameter("limit_days"); String usdt_temp = request.getParameter("usdt"); String eth_temp = request.getParameter("eth"); String title_img = request.getParameter("title_img"); String title = request.getParameter("title"); ModelAndView model = new ModelAndView(); model.addObject("content", content); model.addObject("content_img", content_img); model.addObject("title", title); model.addObject("title_img", title_img); model.addObject("usdt", usdt_temp); model.addObject("eth", eth_temp); model.addObject("usercode", usercode); model.addObject("config", config); model.addObject("limit_days", limitDays); try { String error = verification(usercode, title, title_img, content_img, config, limitDays, usdt_temp, eth_temp); if (!StringUtils.isNullOrEmpty(error)) { throw new BusinessException(error); } // 登录人资金密码 String login_safeword = request.getParameter("login_safeword"); if (StringUtils.isNullOrEmpty(login_safeword)) { throw new BusinessException("请输入登录人资金密码"); } SecUser sec = this.secUserService.findUserByLoginName(this.getUsername_login()); checkLoginSafeword(sec, this.getUsername_login(), login_safeword); Party party = partyService.findPartyByUsercode(usercode); if (party == null) { throw new BusinessException("UID不存在"); } if(!Constants.SECURITY_ROLE_MEMBER.equals(party.getRolename()) && !Constants.SECURITY_ROLE_GUEST.equals(party.getRolename())) { throw new BusinessException("只能添加用户质押配置"); } PledgeOrder entity_before = this.pledgeOrderService.findByPartyId(party.getId()); if (entity_before != null) { throw new BusinessException("添加失败,该UID配置已存在"); } PledgeOrder entity = new PledgeOrder(); entity.setPartyId(party.getId()); entity.setConfig(config); // 现金 entity.setUsdt(Double.valueOf(usdt_temp)); // 限制天数 entity.setLimit_days(Integer.valueOf(limitDays)); // 送ETH entity.setEth(Double.valueOf(eth_temp)); entity.setTitle(title); entity.setTitle_img(title_img); entity.setContent(request.getParameter("content")); entity.setContent_img(content_img); entity.setCreateTime(new Date()); this.pledgeOrderService.save(entity); project.log.Log log = new project.log.Log(); log.setCategory(Constants.LOG_CATEGORY_OPERATION); log.setPartyId(party.getId()); log.setUsername(party.getUsername()); log.setOperator(this.getUsername_login()); log.setLog("管理员手动添加用户质押配置,操作ip:[" + this.getIp(getRequest()) + "]"); logService.saveSync(log); } catch (BusinessException e) { model.addObject("error", e.getMessage()); model.setViewName("auto_monitor_pledge_order_add"); // model.setViewName("redirect:/" + action + "toAdd.action"); return model; } catch (Throwable t) { logger.error("PledgeOrder.Add error ", t); model.addObject("error", t); model.setViewName("auto_monitor_pledge_order_add"); // model.setViewName("redirect:/" + action + "toAdd.action"); return model; } model.addObject("message", "操作成功"); model.setViewName("redirect:/" + action + "list.action"); return model; } protected String verificationUpdate(String title, String title_img, String content_img, String config, String usdt_temp, String eth_temp, String income) { if (StringUtils.isNullOrEmpty(title)) { return "请输入质押标题文本"; } if (StringUtils.isEmptyString(title_img)) { return "请上传质押标题图片"; } if (StringUtils.isEmptyString(content_img)) { return "请上传质押内容图片"; } if (StringUtils.isEmptyString(config)) { return "请输入收益费率"; } if (StringUtils.isEmptyString(usdt_temp) || !StringUtils.isDouble(usdt_temp) || Double.valueOf(usdt_temp) < 0) { return "请输入正确的用户USDT达标数量"; } if (StringUtils.isEmptyString(eth_temp) || !StringUtils.isDouble(eth_temp) || Double.valueOf(eth_temp) < 0) { return "请输入正确的奖励ETH数量"; } if (StringUtils.isEmptyString(income) || !StringUtils.isDouble(income) || Double.valueOf(income) < 0) { return "请输入正确的收益"; } return null; } /** * 用户质押-修改 * * @param request * @return */ @RequestMapping(value = action + "toUpdate.action") public ModelAndView toUpdate(HttpServletRequest request) { // String message = request.getParameter("message"); // String error = request.getParameter("error"); String id = request.getParameter("id"); ModelAndView model = new ModelAndView(); // // // if (StringUtil.isNullOrEmpty(id)) { // model.addObject("error", "修改质押ID为空!"); // model.setViewName("auto_monitor_pledge_order_update"); // return model; // } // // PledgeOrder entity = this.pledgeOrderService.findById(id); // Party party = partyService.cachePartyBy(entity.getPartyId(), true); // // String usercode = ""; // if (party != null) { // usercode = party.getUsercode(); // } // // model.addObject("content", entity.getContent()); // model.addObject("content_img", entity.getContent_img()); // model.addObject("title", entity.getTitle()); // model.addObject("title_img", entity.getTitle_img()); // model.addObject("usdt", entity.getUsdt()); // model.addObject("eth", entity.getEth()); // model.addObject("income", entity.getIncome()); // model.addObject("config", entity.getConfig()); // model.addObject("usercode", usercode); // model.addObject("id", id); // model.addObject("message", message); // model.addObject("error", error); // model.setViewName("auto_monitor_pledge_order_update"); // return model; try { PledgeOrder entity = this.pledgeOrderService.findById(id); Party party = this.partyService.cachePartyBy(entity.getPartyId(), true); model.addObject("id", id); model.addObject("content", entity.getContent()); model.addObject("content_img", entity.getContent_img()); model.addObject("title", entity.getTitle()); model.addObject("title_img", entity.getTitle_img()); model.addObject("usdt", entity.getUsdt()); model.addObject("eth", entity.getEth()); model.addObject("income", entity.getIncome()); model.addObject("config", entity.getConfig()); model.addObject("limit_days", entity.getLimit_days()); if (party != null) { model.addObject("usercode", party.getUsercode()); } } catch (BusinessException e) { model.addObject("error", e.getMessage()); model.setViewName("redirect:/" + action + "list.action"); return model; } catch (Throwable t) { logger.error(" error ", t); model.addObject("error", "[ERROR] " + t.getMessage()); model.setViewName("redirect:/" + action + "list.action"); return model; } model.setViewName("auto_monitor_pledge_order_update"); return model; } /** * 用户质押-修改-确认 * * @param request * @return */ @RequestMapping(value = action + "update.action") public ModelAndView update(HttpServletRequest request) { ModelAndView model = new ModelAndView(); String id = request.getParameter("id"); model.addObject("id", id); String usercode = request.getParameter("usercode"); String title_img = request.getParameter("title_img"); String title = request.getParameter("title"); String content_img = request.getParameter("content_img"); String config = request.getParameter("config"); String content = request.getParameter("content"); String income_temp = request.getParameter("income"); String usdt_temp = request.getParameter("usdt"); String eth_temp = request.getParameter("eth"); model.addObject("usercode", usercode); model.addObject("content", content); model.addObject("content_img", content_img); model.addObject("title", title); model.addObject("title_img", title_img); model.addObject("usdt", usdt_temp); model.addObject("eth", eth_temp); model.addObject("config", config); model.addObject("income", income_temp); try { String error = verificationUpdate(title, title_img, content_img, config, usdt_temp, eth_temp, income_temp); if (!StringUtils.isNullOrEmpty(error)) { throw new BusinessException(error); } double usdt = Double.valueOf(usdt_temp); // 送ETH double eth = Double.valueOf(eth_temp); // 收益ETH double income = Double.valueOf(income_temp); String login_safeword = request.getParameter("login_safeword"); if (StringUtils.isNullOrEmpty(login_safeword)) { throw new BusinessException("请输入登录人资金密码"); } SecUser sec = this.secUserService.findUserByLoginName(this.getUsername_login()); checkLoginSafeword(sec, this.getUsername_login(), login_safeword); PledgeOrder entity = this.pledgeOrderService.findById(id); Party party = null; if (!StringUtils.isNullOrEmpty(entity.getPartyId().toString())) { party = partyService.cachePartyBy(entity.getPartyId(), true); } String before_title = entity.getTitle(); double beforeusdt = entity.getUsdt(); double before_eth = entity.getEth(); String before_config = entity.getConfig(); entity.setContent(content); entity.setContent_img(content_img); entity.setTitle(title); entity.setTitle_img(title_img); entity.setUsdt(usdt); entity.setEth(eth); entity.setIncome(income); entity.setConfig(config); this.pledgeOrderService.update(entity); project.log.Log log = new project.log.Log(); log.setCategory(Constants.LOG_CATEGORY_OPERATION); if (party != null) { log.setUsername(party.getUsername()); log.setPartyId(party.getId()); } log.setOperator(this.getUsername_login()); log.setLog("管理员手动修改用户质押配置,修改前标题文本为:[" + before_title + "],用户USDT限制数量为[" + beforeusdt + "]," + "奖励ETH数量为[" + before_eth + "],修改前配置:[" + before_config+"],修改后标题文本为[" + title + "],用户USDT限制数量为[" + usdt + "],奖励ETH数量为[" + eth + "],修改后配置:[" + config+"],操作ip:[" + this.getIp(getRequest()) + "]"); logService.saveSync(log); model.addObject("message", "操作成功"); model.setViewName("redirect:/" + action + "list.action"); return model; } catch (BusinessException e) { model.addObject("error", e.getMessage()); // model.setViewName("redirect:/" + action + "toUpdate.action"); model.setViewName("auto_monitor_pledge_order_update"); return model; } catch (Throwable t) { logger.error("update error ", t); model.addObject("error", "程序错误"); // model.setViewName("redirect:/" + action + "toUpdate.action"); model.setViewName("auto_monitor_pledge_order_update"); return model; } } @RequestMapping(value = action + "toDelete.action") public ModelAndView toDelete(HttpServletRequest request) { ModelAndView model = new ModelAndView(); String login_safeword = request.getParameter("login_safeword"); try { if (StringUtils.isNullOrEmpty(login_safeword)) { model.addObject("error", "请输入登录人资金密码"); model.setViewName("redirect:/" + action + "list.action"); return model; } SecUser sec = this.secUserService.findUserByLoginName(this.getUsername_login()); checkLoginSafeword(sec, this.getUsername_login(), login_safeword); String id = request.getParameter("id"); PledgeOrder entity = this.pledgeOrderService.findById(id); if(entity.getPartyId()==null||StringUtils.isEmptyString(entity.getPartyId().toString())) { throw new BusinessException("全局配置不能删除"); } this.pledgeOrderService.delete(entity); Party party = null; if (!StringUtils.isNullOrEmpty(entity.getPartyId().toString())) { party = partyService.cachePartyBy(entity.getPartyId(), true); } project.log.Log log = new project.log.Log(); log.setCategory(Constants.LOG_CATEGORY_OPERATION); if (party != null) { log.setUsername(party.getUsername()); log.setPartyId(party.getId()); } log.setOperator(this.getUsername_login()); log.setLog("管理员手动删除用户质押配置,操作ip:[" + this.getIp(getRequest()) + "]"); logService.saveSync(log); model.addObject("message", "操作成功"); model.setViewName("redirect:/" + action + "list.action"); return model; } catch (BusinessException e) { model.addObject("error", e.getMessage()); model.setViewName("redirect:/" + action + "list.action"); return model; } catch (Throwable t) { logger.error("toDelete error ", t); model.addObject("error", "程序错误"); model.setViewName("redirect:/" + action + "list.action"); return model; } } @RequestMapping(value = action + "updateLimitDays.action") public ModelAndView updateLimitDays(HttpServletRequest request) { ModelAndView model = new ModelAndView(); String error = ""; String message = ""; try { String login_safeword = request.getParameter("login_safeword"); int limit_days = Integer.valueOf(request.getParameter("limit_days")); if (StringUtils.isNullOrEmpty(login_safeword)) { model.addObject("error", "请输入登录人资金密码"); model.setViewName("redirect:/" + action + "list.action"); return model; } if(limit_days < 0) { model.addObject("error", "请输入正确的限制天数"); model.setViewName("redirect:/" + action + "list.action"); return model; } SecUser sec = this.secUserService.findUserByLoginName(this.getUsername_login()); checkLoginSafeword(sec, this.getUsername_login(), login_safeword); String id = request.getParameter("id"); PledgeOrder entity = this.pledgeOrderService.findById(id); Party party = null; if (!StringUtils.isNullOrEmpty(entity.getPartyId().toString())) { party = partyService.cachePartyBy(entity.getPartyId(), true); } int before_limit_days = entity.getLimit_days(); entity.setLimit_days(limit_days); //已加入的额外修改派送时间 if(entity.getApply()) { entity.setSendtime( DateUtils.addDate(DateUtils.toDate(DateUtils.format(new Date(), DateUtils.DEFAULT_DATE_FORMAT)), limit_days)); } this.pledgeOrderService.update(entity); message = "操作成功"; project.log.Log log = new project.log.Log(); log.setCategory(Constants.LOG_CATEGORY_OPERATION); if (party != null) { log.setUsername(party.getUsername()); log.setPartyId(party.getId()); } log.setOperator(this.getUsername_login()); log.setLog("管理员手动修改用户质押配置,修改前限制天数为:[" + before_limit_days + "],修改后限制天数为[" + limit_days + "],操作ip:[" + this.getIp(getRequest()) + "]"); logService.saveSync(log); } catch (BusinessException e) { error = e.getMessage(); } catch (Throwable t) { logger.error("updateLimitDays error ", t); error = "程序错误"; } model.addObject("message", message); model.addObject("error", error); model.setViewName("redirect:/" + action + "list.action"); return model; } /** * 验证登录人资金密码 * * @param operatorUsername * @param loginSafeword */ protected void checkLoginSafeword(SecUser secUser, String operatorUsername, String loginSafeword) { // SecUser sec = this.secUserService.findUserByLoginName(operatorUsername); String sysSafeword = secUser.getSafeword(); String safeword_md5 = passwordEncoder.encodePassword(loginSafeword, operatorUsername); if (!safeword_md5.equals(sysSafeword)) { throw new BusinessException("登录人资金密码错误"); } } public void setPartyService(PartyService partyService) { this.partyService = partyService; } public void setLogService(LogService logService) { this.logService = logService; } public void setSecUserService(SecUserService secUserService) { this.secUserService = secUserService; } public void setPasswordEncoder(PasswordEncoder passwordEncoder) { this.passwordEncoder = passwordEncoder; } public void setPledgeOrderService(PledgeOrderService pledgeOrderService) { this.pledgeOrderService = pledgeOrderService; } public void setAdminPledgeOrderService(AdminPledgeOrderService adminPledgeOrderService) { this.adminPledgeOrderService = adminPledgeOrderService; } public void setPledgeConfigService(PledgeConfigService pledgeConfigService) { this.pledgeConfigService = pledgeConfigService; } }