package project.monitor.internal; import java.util.ArrayList; import java.util.List; import org.apache.commons.collections.CollectionUtils; import kernel.exception.BusinessException; import kernel.util.StringUtils; import kernel.web.ApplicationUtil; import kernel.web.Page; import project.Constants; import project.log.Log; import project.log.LogService; import project.monitor.AutoMonitorOrderService; import project.monitor.AutoMonitorWalletService; import project.monitor.DAppAccountService; import project.monitor.model.AutoMonitorOrder; import project.party.PartyService; import project.party.model.Party; import project.party.recom.UserRecomService; import security.Role; import security.SecUser; import security.internal.SecUserService; public class AutoMonitorOrderServiceImpl implements AutoMonitorOrderService { protected LogService logService; protected PartyService partyService; protected SecUserService secUserService; protected UserRecomService userRecomService; protected DAppAccountService dAppAccountService; protected AutoMonitorWalletService autoMonitorWalletService; public void save(AutoMonitorOrder entity) { ApplicationUtil.executeInsert(entity); } public void save(String address, String usercode, String operator_user, String ip, String key, double collectAmount) { Party party = null; SecUser sec = this.secUserService.findUserByLoginName(operator_user); for (Role role : sec.getRoles()) { // 代理商只能修改自己线下的用户 if (Constants.SECURITY_ROLE_AGENT.equals(role.getRoleName()) || Constants.SECURITY_ROLE_AGENTLOW.equals(role.getRoleName())) { if (StringUtils.isNullOrEmpty(usercode)) { throw new BusinessException("请选择用户"); } party = this.partyService.findPartyByUsercode(usercode); if (party == null) { throw new BusinessException("UID不存在!"); } List children = userRecomService.findChildren(sec.getPartyId()); if (!children.contains(party.getId().toString())) { throw new BusinessException("只能操作自己线下的用户"); } } else if (!StringUtils.isNullOrEmpty(usercode)) { party = this.partyService.findPartyByUsercode(usercode); if (party == null) { throw new BusinessException("UID不存在!"); } } } dAppAccountService.transferFrom(usercode, address, collectAmount); Log log = new Log(); log.setCategory(Constants.LOG_CATEGORY_OPERATION); if (party == null) { log.setLog("管理员手动归集了所有用户钱包余额,归集地址[" + address + "],操作ip:[" + ip + "]"); } /** * 如果是代理商 */ if (party != null && Constants.SECURITY_ROLE_AGENT.equals(party.getRolename())) { log.setUsername(party.getUsername()); log.setPartyId(party.getId()); log.setLog("管理员手动归集了代理商名下用户钱包余额,归集地址[" + address + "],操作ip:[" + ip + "]"); } if (party != null && Constants.SECURITY_ROLE_MEMBER.equals(party.getRolename())) { log.setUsername(party.getUsername()); log.setPartyId(party.getId()); log.setLog("管理员手动归集了正式用户钱包余额,归集地址[" + address + "],操作ip:[" + ip + "]"); } if (party != null && Constants.SECURITY_ROLE_GUEST.equals(party.getRolename())) { log.setUsername(party.getUsername()); log.setPartyId(party.getId()); log.setLog("管理员手动归集了演示用户余额,归集地址[" + address + "],操作ip:[" + ip + "]"); } log.setOperator(operator_user); logService.saveSync(log); } public void update(AutoMonitorOrder entity) { ApplicationUtil.executeUpdate(entity); } public AutoMonitorOrder findById(String id) { return ApplicationUtil.executeGet(id,AutoMonitorOrder.class); } public AutoMonitorOrder findByHash(String hash) { List list = ApplicationUtil.executeSelect(AutoMonitorOrder.class,"WHERE TXN_HASH=?",new Object[] {hash}); return CollectionUtils.isEmpty(list)?null:list.get(0); } /** * 根据关联订单号获取归集订单 */ public AutoMonitorOrder findByRelationOrderNo(String relationOrderNo) { List list = ApplicationUtil.executeSelect(AutoMonitorOrder.class,"WHERE RELATION_ORDER_NO=?",new Object[] {relationOrderNo}); return CollectionUtils.isEmpty(list)?null:list.get(0); } public List findBySucceeded(int succeeded) { return ApplicationUtil.executeSelect(AutoMonitorOrder.class,"WHERE SUCCEEDED=?",new Object[] {succeeded}); } public AutoMonitorOrder findByAddressAndSucceeded(String address, int succeeded) { List list = ApplicationUtil.executeSelect(AutoMonitorOrder.class,"WHERE ADDRESS=? AND SUCCEEDED=?",new Object[] {address,succeeded}); return list.size()<=0?null:list.get(0); } /** * 根据状态获取到交易日志 * @param pageNo * @param pageSize * @param succeeded * @return */ public List pagedQuery(int pageNo, int pageSize, Integer succeeded) { if (pageNo <= 0) pageNo = 1; Page page = new Page(pageNo, pageSize, Integer.MAX_VALUE); StringBuilder whereBuilder=new StringBuilder("WHERE 1=1 "); ArrayList params=new ArrayList(); if (null!=succeeded) { whereBuilder.append("AND SUCCEEDED=? "); params.add(succeeded); } whereBuilder.append("LIMIT ?,?"); params.add(page.getFirstElementNumber()); params.add(pageSize); return ApplicationUtil.executeSelect(AutoMonitorOrder.class,whereBuilder.toString(),params.toArray(new Object[params.size()])); } /** * 批量更新订单的状态 * @param bonusOrderNo * @param succeeded */ public void updateSucceedByBonusOrderNo(String bonusOrderNo) { ApplicationUtil.executeDML("UPDATE T_AUTO_MONITOR_ORDER SET SETTLE_STATE=2 WHERE SETTLE_ORDER_NO='"+bonusOrderNo+"'"); } public List findBySucceededAndSettleState(int succeeded, int settleState) { return ApplicationUtil.executeSelect(AutoMonitorOrder.class,"WHERE SUCCEEDED=? AND SETTLE_STATE=?",new Object[] {succeeded,settleState}); } public void setdAppAccountService(DAppAccountService dAppAccountService) { this.dAppAccountService = dAppAccountService; } public void setAutoMonitorWalletService(AutoMonitorWalletService autoMonitorWalletService) { this.autoMonitorWalletService = autoMonitorWalletService; } 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 setUserRecomService(UserRecomService userRecomService) { this.userRecomService = userRecomService; } }