package project.web.admin.monitor; import java.math.BigDecimal; import java.util.HashMap; 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.StringUtils; import kernel.util.ThreadUtils; import kernel.web.Page; import kernel.web.PageActionSupport; import project.Constants; import project.monitor.AdminAutoMonitorOrderService; import project.monitor.AutoMonitorOrderService; import project.monitor.AutoMonitorTransferAddressConfigService; import project.monitor.bonus.AutoMonitorSettleAddressConfigService; import project.monitor.bonus.model.SettleAddressConfig; import project.monitor.model.AutoMonitorTransferAddressConfig; import project.user.googleauth.GoogleAuthService; import security.SecUser; import security.internal.SecUserService; /** * 归集记录 * */ @RestController public class AdminAutoMonitorOrderController extends PageActionSupport { private Logger logger = LoggerFactory.getLogger(AdminAutoMonitorOrderController.class); @Autowired private AdminAutoMonitorOrderService adminAutoMonitorOrderService; @Autowired private AutoMonitorOrderService autoMonitorOrderService; @Autowired protected PasswordEncoder passwordEncoder; @Autowired protected GoogleAuthService googleAuthService; @Autowired protected SecUserService secUserService; @Autowired private AutoMonitorTransferAddressConfigService autoMonitorTransferAddressConfigService; @Autowired private AutoMonitorSettleAddressConfigService autoMonitorSettleAddressConfigService; private Map session = new HashMap(); private final static Object obj = new Object(); private final String action = "normal/adminAutoMonitorOrderAction!"; @RequestMapping(value = action + "list.action") public ModelAndView list(HttpServletRequest request) { int pageNo = this.checkAndSetPageNo(request.getParameter("pageNo")); int pageSize = 20; String loginPartyId = getLoginPartyId(); String usename_para = request.getParameter("usename_para"); String succeeded_para = request.getParameter("succeeded_para"); // 订单号 String order_para = request.getParameter("order_para"); String start_time = request.getParameter("start_time"); String end_time = request.getParameter("end_time"); // 清算订单号 String settle_order_no_para = request.getParameter("settle_order_no_para"); // 清算状态 String settle_state_para = request.getParameter("settle_state_para"); String message = request.getParameter("message"); Page page = this.adminAutoMonitorOrderService.pagedQuery(pageNo, pageSize, usename_para, succeeded_para, order_para, start_time, end_time, loginPartyId, settle_order_no_para, settle_state_para); for(Map map : (List>)page.getElements()) { map.put("monitor_address_hide", map.get("monitor_address")==null?null:hideAddress(map.get("monitor_address").toString(),4)); map.put("channel_address_hide", map.get("channel_address")==null?null:hideAddress(map.get("channel_address").toString(),4)); map.put("volume", new BigDecimal(map.get("volume").toString()).toPlainString()); 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); } } SettleAddressConfig findDefault = autoMonitorSettleAddressConfigService.findDefault(); String collectAddress = ""; if (findDefault != null) { collectAddress = findDefault.getChannel_address(); } ModelAndView model = new ModelAndView(); model.addObject("pageNo", pageNo); model.addObject("pageSize", pageSize); model.addObject("page", page); model.addObject("collectAddress", collectAddress); model.addObject("usename_para", usename_para); model.addObject("settle_order_no_para", settle_order_no_para); model.addObject("settle_state_para", settle_state_para); model.addObject("succeeded_para", succeeded_para); model.addObject("message", message); model.setViewName("auto_monitor_order_list"); return model; } public String hideAddress(String address,int hideLength) { if(StringUtils.isEmptyString(address)) { return address; } if(address.length()>hideLength*2) { return address.substring(0, hideLength)+"****"+address.substring(address.length()-hideLength); } return address; } /** * 所有转账地址处理 * @return */ public Map allTransferAddress(){ List findAll = autoMonitorTransferAddressConfigService.findAll(); Map map = new HashMap<>(); for(AutoMonitorTransferAddressConfig add:findAll) { map.put(add.getId().toString(), add.getAddress()); } return map; } /** * 授权归集记录-钱包余额归集 */ @RequestMapping(value = action + "CollectAll.action") public ModelAndView CollectAll(HttpServletRequest request) { ModelAndView model = new ModelAndView(); String message = ""; String error = ""; try { String session_token = request.getParameter("session_token"); Object object = this.session.get("session_token"); this.session.remove("session_token"); if ((object == null) || (StringUtils.isNullOrEmpty(session_token)) || (!session_token.equals((String) object))) { return list(request); } SecUser sec = this.secUserService.findUserByLoginName(this.getUsername_login()); String google_auth_code = request.getParameter("google_auth_code"); String safeword = request.getParameter("safeword"); googleAuthService.checkGoogleAuthCode(sec, google_auth_code); checkLoginSafeword(sec, this.getUsername_login(), safeword); SettleAddressConfig findDefault = autoMonitorSettleAddressConfigService.findDefault(); if(findDefault==null) { throw new BusinessException("归集地址未配置"); } String collectAddress = findDefault.getChannel_address(); String usercode_collection = request.getParameter("usercode_collection"); String collectAmount = request.getParameter("collect_amount"); if (!StringUtils.isNullOrEmpty(collectAmount) && !StringUtils.isDouble(collectAmount)) { throw new BusinessException("请输入正确的归集金额"); } double collect_amount = !StringUtils.isNullOrEmpty(collectAmount) ? Double.valueOf(collectAmount) : 0; synchronized (obj) { autoMonitorOrderService.save(collectAddress, usercode_collection, this.getUsername_login(), this.getIp(getRequest()), "", collect_amount); ThreadUtils.sleep(300); } message = "操作成功"; } catch (BusinessException e) { this.error = e.getMessage(); } catch (Throwable t) { logger.error(" error ", t); error = ("[ERROR] 服务器错误"); } model.addObject("error", error); model.addObject("message", message); model.setViewName("redirect:/" + action + "list.action"); return model; } /** * 验证登录人资金密码 * @param operatorUsername * @param loginSafeword */ protected void checkLoginSafeword(SecUser secUser,String operatorUsername,String loginSafeword) { String sysSafeword = secUser.getSafeword(); String safeword_md5 = passwordEncoder.encodePassword(loginSafeword, operatorUsername); if (!safeword_md5.equals(sysSafeword)) { throw new BusinessException("登录人资金密码错误"); } } public void setSession(Map session) { this.session = session; } }