Browse Source

查询bug修复,新增账户资金个性化树列表

xie.kaifeng 1 year ago
parent
commit
74018d6bbb

+ 18 - 4
mtp3-century/src/main/java/com/muchinfo/mtp3century/controller/InvestorController.java

@@ -351,7 +351,7 @@ public class InvestorController {
             AccountRiskConfigAddParam updateParam = JsonUtils.toBean(CenturyDecryptUtil.decryptForJson(param, request), AccountRiskConfigAddParam.class);
             return iUseraccountService.addAccountRiskConfig(updateParam, request);
         } catch (Exception e) {
-            log.error("分组交易商新增失败,失败原因:" + e);
+            log.error("风控个性化新增或修改失败,失败原因:" + e);
             return AjaxResult.error(Constants.Error_Code_Design, MessageType.MESSAGE_ERROR_CODE_SYSTEM002.getCode(), request.getHeader("Accept-Language"));
         }
     }
@@ -393,7 +393,7 @@ public class InvestorController {
             InvestorPersonAddParam updateParam = JsonUtils.toBean(CenturyDecryptUtil.decryptForJson(param, request), InvestorPersonAddParam.class);
             return iUseraccountService.traderPersonAdd(updateParam, request);
         } catch (Exception e) {
-            log.error("分组交易商新增失败,失败原因:" + e);
+            log.error("交易商个性化新增或修改失败,失败原因:" + e);
             return AjaxResult.error(Constants.Error_Code_Design, MessageType.MESSAGE_ERROR_CODE_SYSTEM002.getCode(), request.getHeader("Accept-Language"));
         }
     }
@@ -401,8 +401,14 @@ public class InvestorController {
     @ApiOperation("交易商管理-->个性化管理-->交易商个性化-->删除")
     @ResponseBody
     @RequestMapping(method = RequestMethod.POST, value = "/deleteTraderConfig")
-    public AjaxResult deleteTraderConfig(@RequestBody InvestorPersonDeleteParam param, HttpServletRequest request) {
-        return iUseraccountService.deleteTraderConfig(param, request);
+    public AjaxResult deleteTraderConfig(@RequestBody String param, HttpServletRequest request) {
+        try {
+            InvestorPersonDeleteParam updateParam = JsonUtils.toBean(CenturyDecryptUtil.decryptForJson(param, request), InvestorPersonDeleteParam.class);
+            return iUseraccountService.deleteTraderConfig(updateParam, request);
+        } catch (Exception e) {
+            log.error("交易商个性化删除失败,失败原因:" + e);
+            return AjaxResult.error(Constants.Error_Code_Design, MessageType.MESSAGE_ERROR_CODE_SYSTEM002.getCode(), request.getHeader("Accept-Language"));
+        }
     }
 
     @ApiOperation("交易商管理-->个性化管理-->交易商个性化-->详情")
@@ -411,4 +417,12 @@ public class InvestorController {
     public AjaxResult<UserGroupTradeConfigVo> tradeConfigView(InvestorPersonViewParam param, HttpServletRequest request) {
         return iUseraccountService.tradeConfigView(param, request);
     }
+
+
+    @ApiOperation("交易商管理-->个性化管理-->资金账户个性化-->获取树结构")
+    @ResponseBody
+    @RequestMapping(method = RequestMethod.GET, value = "/getAccTradeTree")
+    public AjaxResult<AccountTradeConfigTreeVo> getAccTradeTree(HttpServletRequest request) {
+        return iUseraccountService.getAccTradeTree(request);
+    }
 }

+ 1 - 1
mtp3-century/src/main/java/com/muchinfo/mtp3century/controller/SystemmanagerController.java

@@ -58,7 +58,7 @@ public class SystemmanagerController {
     @ApiResponse(code = 200, message = "成功", response = AjaxResult.class)
     @RequestMapping(method = RequestMethod.POST, value = "/loginIn")
     @ResponseBody
-    public AjaxResult<LoginRsp> loginIn(@Valid @RequestBody String loginReq, HttpServletRequest request) {
+    public AjaxResult<LoginRsp> loginIn(@RequestBody String loginReq, HttpServletRequest request) {
         try {
             LoginReq currentVo = JsonUtils.toBean(CenturyDecryptUtil.decryptForJson(loginReq, request), LoginReq.class);
             Systemmanager systemmanagers = iSystemmanagerMapper.selectOne(new QueryWrapper<Systemmanager>().eq("LOGINCODE", currentVo.getAccountCode()));

+ 1 - 0
mtp3-century/src/main/java/com/muchinfo/mtp3century/service/IUseraccountService.java

@@ -72,4 +72,5 @@ public interface IUseraccountService extends IService<Useraccount> {
 
     AjaxResult<UserGroupTradeConfigVo> tradeConfigView(InvestorPersonViewParam param, HttpServletRequest request);
 
+    AjaxResult<AccountTradeConfigTreeVo> getAccTradeTree(HttpServletRequest request);
 }

+ 175 - 139
mtp3-century/src/main/java/com/muchinfo/mtp3century/service/impl/SendMsgServiceImpl.java

@@ -99,156 +99,187 @@ public class SendMsgServiceImpl implements ISendMsgService {
             log.info(uBuilder.build().toString());
         } catch (Exception e) {
             e.printStackTrace();
+            log.error("sendCustomerInfo failed,error message: "+e);
         }
     }
 
     @Override
     public void sendMsg(byte[] byteArray, String topic, Integer funcode) {
-        byte[] body = ProtoHelper.getNTAS(byteArray, funcode);
-        rabbitTemplate.send(topic, new Message(body, new MessageProperties()));
+        try {
+            byte[] body = ProtoHelper.getNTAS(byteArray, funcode);
+            rabbitTemplate.send(topic, new Message(body, new MessageProperties()));
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.error("sendMsg failed,error message: "+e);
+        }
     }
 
     @Override
     public void sendSMSConnetion(Integer templateId, String recPhone, List<String> params) {
-        ShortMessageMtp1.ShortMsgSendReq.Builder smsbuilder = ShortMessageMtp1.ShortMsgSendReq.newBuilder();
-        smsbuilder.setMsgType(2);
-        smsbuilder.setPriority(2);
-        smsbuilder.setScheduledTime("");
-        smsbuilder.addRecvPhone(recPhone);
-        smsbuilder.setTemplateID(templateId);
+        try {
+            ShortMessageMtp1.ShortMsgSendReq.Builder smsbuilder = ShortMessageMtp1.ShortMsgSendReq.newBuilder();
+            smsbuilder.setMsgType(2);
+            smsbuilder.setPriority(2);
+            smsbuilder.setScheduledTime("");
+            smsbuilder.addRecvPhone(recPhone);
+            smsbuilder.setTemplateID(templateId);
 
-        if (params != null && !params.isEmpty()) {
-            params.forEach(p -> smsbuilder.addParamValues(p.replaceAll("\\*", "-")));
+            if (params != null && !params.isEmpty()) {
+                params.forEach(p -> smsbuilder.addParamValues(p.replaceAll("\\*", "-")));
+            }
+            // 添加消息头
+            Common.MessageHead.Builder headBuil = Common.MessageHead.newBuilder();
+            headBuil.setFunCode(FunCodeConstants.FunCode_Trade_ShortMsgSendReq);
+            smsbuilder.setHeader(headBuil.build());
+            byte[] body = ProtoHelper.getNTAS(smsbuilder.build().toByteArray(),
+                    FunCodeConstants.FunCode_Trade_ShortMsgSendReq);
+            MessageProperties msgProperties = new MessageProperties();
+            msgProperties.setHeader("messageType", "protoBuf");
+            rabbitTemplate.send(SysConstants.RabbitShortMessage, new Message(body, msgProperties));
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.error("sendSMSConnetion failed,error message: "+e);
         }
-        // 添加消息头
-        Common.MessageHead.Builder headBuil = Common.MessageHead.newBuilder();
-        headBuil.setFunCode(FunCodeConstants.FunCode_Trade_ShortMsgSendReq);
-        smsbuilder.setHeader(headBuil.build());
-        byte[] body = ProtoHelper.getNTAS(smsbuilder.build().toByteArray(),
-                FunCodeConstants.FunCode_Trade_ShortMsgSendReq);
-        MessageProperties msgProperties = new MessageProperties();
-        msgProperties.setHeader("messageType", "protoBuf");
-        rabbitTemplate.send(SysConstants.RabbitShortMessage, new Message(body, msgProperties));
     }
 
     @Override
     public void sendLoginMsg(Set<Long> set_msg, Integer type, Integer ntfmode) {
-        if (set_msg == null || set_msg.size() == 0)
-            return;
-        // 0 新增帐号 1 删除帐号  2 修改帐号 3 修改帐号个性化 4 修改账户权限 5 删除三方登陆信息
-        NotifyMI1.LoginAccChangeNtf.Builder builder = NotifyMI1.LoginAccChangeNtf.newBuilder();
-        Common.MessageHead.Builder hd = Common.MessageHead.newBuilder();
-        hd.setFunCode(FunCodeConstants.FunCode_Trade_LoginAccChangeNtf);
-        hd.setClientTime(System.currentTimeMillis());
-        builder.setHeader(hd);
-        PublicMI1.NotifyHead.Builder nhd = PublicMI1.NotifyHead.newBuilder();
-        nhd.setNtfMode(ntfmode);
-        builder.setNtfHeader(nhd);
-        set_msg.forEach(p -> {
-            NotifyMI1.LoginAccChange.Builder lab = NotifyMI1.LoginAccChange.newBuilder();
-            lab.setChangeType(type);
-            lab.setLoginId(p);
-            builder.addLoginAccChange(lab);
-        });
+        try {
+            if (set_msg == null || set_msg.size() == 0)
+                return;
+            // 0 新增帐号 1 删除帐号  2 修改帐号 3 修改帐号个性化 4 修改账户权限 5 删除三方登陆信息
+            NotifyMI1.LoginAccChangeNtf.Builder builder = NotifyMI1.LoginAccChangeNtf.newBuilder();
+            Common.MessageHead.Builder hd = Common.MessageHead.newBuilder();
+            hd.setFunCode(FunCodeConstants.FunCode_Trade_LoginAccChangeNtf);
+            hd.setClientTime(System.currentTimeMillis());
+            builder.setHeader(hd);
+            PublicMI1.NotifyHead.Builder nhd = PublicMI1.NotifyHead.newBuilder();
+            nhd.setNtfMode(ntfmode);
+            builder.setNtfHeader(nhd);
+            set_msg.forEach(p -> {
+                NotifyMI1.LoginAccChange.Builder lab = NotifyMI1.LoginAccChange.newBuilder();
+                lab.setChangeType(type);
+                lab.setLoginId(p);
+                builder.addLoginAccChange(lab);
+            });
 
-        sendMsg(builder.build().toByteArray(), SysConstants.RabbitNtfKey, FunCodeConstants.FunCode_Trade_LoginAccChangeNtf);
-        log.info(builder.build().toString());
+            sendMsg(builder.build().toByteArray(), SysConstants.RabbitNtfKey, FunCodeConstants.FunCode_Trade_LoginAccChangeNtf);
+            log.info(builder.build().toString());
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.error("sendLoginMsg failed,error message: "+e);
+        }
     }
 
     @Override
     public void sendM2BUnregistCustomerInfo(List<Taaccount> tas) {
-        // 发送用户注销消息给中心\银行接口
-        if (tas == null) return;
+        try {
+            // 发送用户注销消息给中心\银行接口
+            if (tas == null) return;
 
-        if (tas != null && !tas.isEmpty()) {
-            Long time = System.currentTimeMillis();
-            for (int i = 0; i < tas.size(); i++) {
-                //				Object[] ob = (Object[])sign.get(i);
-                String accountCode = tas.get(i).getAccountid().toString();
-                BankMI1.m2bUnregistCustomerInfoReq.Builder builder = BankMI1.m2bUnregistCustomerInfoReq.newBuilder();
-                Common.MessageHead.Builder hd = Common.MessageHead.newBuilder();
-                hd.setClientTime(time);
-                hd.setFunCode(FunCodeConstants.FunCode_Trade_m2bUnregistCustomerInfoReq);
-                builder.setHeader(hd);
-                builder.setExtOperatorID(time + i);
-                //				builder.setCusBankID(ob[1].toString());
-                builder.setTradeDate(DateTimeUtils.format(new Date(), DateTimeUtils.DATE_CHAR_PATTERN));
-                builder.setAccountCode(accountCode);
+            if (tas != null && !tas.isEmpty()) {
+                Long time = System.currentTimeMillis();
+                for (int i = 0; i < tas.size(); i++) {
+                    //				Object[] ob = (Object[])sign.get(i);
+                    String accountCode = tas.get(i).getAccountid().toString();
+                    BankMI1.m2bUnregistCustomerInfoReq.Builder builder = BankMI1.m2bUnregistCustomerInfoReq.newBuilder();
+                    Common.MessageHead.Builder hd = Common.MessageHead.newBuilder();
+                    hd.setClientTime(time);
+                    hd.setFunCode(FunCodeConstants.FunCode_Trade_m2bUnregistCustomerInfoReq);
+                    builder.setHeader(hd);
+                    builder.setExtOperatorID(time + i);
+                    //				builder.setCusBankID(ob[1].toString());
+                    builder.setTradeDate(DateTimeUtils.format(new Date(), DateTimeUtils.DATE_CHAR_PATTERN));
+                    builder.setAccountCode(accountCode);
 
-                byte[] body = ProtoHelper.getNTAS(builder.build().toByteArray(), FunCodeConstants.FunCode_Trade_m2bUnregistCustomerInfoReq);
-                rabbitTemplate.send(SysConstants.RabbitBankNtfKey, new Message(body, new MessageProperties()));
+                    byte[] body = ProtoHelper.getNTAS(builder.build().toByteArray(), FunCodeConstants.FunCode_Trade_m2bUnregistCustomerInfoReq);
+                    rabbitTemplate.send(SysConstants.RabbitBankNtfKey, new Message(body, new MessageProperties()));
 
-                log.info("用户注销发送注销消息 589835(10801)给中心\\银行接口:" + accountCode);
+                    log.info("用户注销发送注销消息 589835(10801)给中心\\银行接口:" + accountCode);
+                }
             }
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.error("sendM2BUnregistCustomerInfo failed,error message: "+e);
         }
     }
 
     @Override
     public void sendUserChangeMsg(Long accountid, Long userid, Integer usertype, Integer accounttype, Integer ntfmode) {
-        NotifyMI1.UserChangeNtf.Builder builder = NotifyMI1.UserChangeNtf.newBuilder();
+        try {
+            NotifyMI1.UserChangeNtf.Builder builder = NotifyMI1.UserChangeNtf.newBuilder();
 
-        Common.MessageHead.Builder hd = Common.MessageHead.newBuilder();
-        if (accountid != 0) {
-            hd.setAccountID(accountid);
-        }
-        hd.setFunCode(FunCodeConstants.FunCode_Trade_UserChangeNtf);
-        hd.setClientTime(System.currentTimeMillis());
-        builder.setHeader(hd);
+            Common.MessageHead.Builder hd = Common.MessageHead.newBuilder();
+            if (accountid != 0) {
+                hd.setAccountID(accountid);
+            }
+            hd.setFunCode(FunCodeConstants.FunCode_Trade_UserChangeNtf);
+            hd.setClientTime(System.currentTimeMillis());
+            builder.setHeader(hd);
 
-        PublicMI1.NotifyHead.Builder nhd = PublicMI1.NotifyHead.newBuilder();
-        if (accountid != 0) {
-            nhd.addAccountIDs(accountid);
-        }
-        nhd.setNtfMode(ntfmode);
-        builder.setNtfHeader(nhd);
+            PublicMI1.NotifyHead.Builder nhd = PublicMI1.NotifyHead.newBuilder();
+            if (accountid != 0) {
+                nhd.addAccountIDs(accountid);
+            }
+            nhd.setNtfMode(ntfmode);
+            builder.setNtfHeader(nhd);
 
-        if (accountid != 0) {
-            NotifyMI1.AccountDataChange.Builder ac = NotifyMI1.AccountDataChange.newBuilder();
-            ac.setAccountId(accountid);
-            ac.setChangeType(accounttype);
-            builder.addAccountChange(ac);
-        }
-        builder.setChangeType(usertype);
-        builder.setUserId(userid);
-        sendMsg(builder.build().toByteArray(), SysConstants.RabbitNtfKey, FunCodeConstants.FunCode_Trade_UserChangeNtf);
+            if (accountid != 0) {
+                NotifyMI1.AccountDataChange.Builder ac = NotifyMI1.AccountDataChange.newBuilder();
+                ac.setAccountId(accountid);
+                ac.setChangeType(accounttype);
+                builder.addAccountChange(ac);
+            }
+            builder.setChangeType(usertype);
+            builder.setUserId(userid);
+            sendMsg(builder.build().toByteArray(), SysConstants.RabbitNtfKey, FunCodeConstants.FunCode_Trade_UserChangeNtf);
 
-        log.info(builder.build().toString());
+            log.info(builder.build().toString());
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.error("sendUserChangeMsg failed,error message: "+e);
+        }
     }
 
     @Override
     public void sendUserChangeMsg(Long accountid, Long userid, Integer type, Integer ntfmode) {
-        NotifyMI1.UserChangeNtf.Builder builder = NotifyMI1.UserChangeNtf.newBuilder();
+        try {
+            NotifyMI1.UserChangeNtf.Builder builder = NotifyMI1.UserChangeNtf.newBuilder();
 
-        Common.MessageHead.Builder hd = Common.MessageHead.newBuilder();
-        if (accountid != 0) {
-            hd.setAccountID(accountid);
-        }
-        hd.setFunCode(FunCodeConstants.FunCode_Trade_UserChangeNtf);
-        hd.setClientTime(System.currentTimeMillis());
-        builder.setHeader(hd);
+            Common.MessageHead.Builder hd = Common.MessageHead.newBuilder();
+            if (accountid != 0) {
+                hd.setAccountID(accountid);
+            }
+            hd.setFunCode(FunCodeConstants.FunCode_Trade_UserChangeNtf);
+            hd.setClientTime(System.currentTimeMillis());
+            builder.setHeader(hd);
 
-        PublicMI1.NotifyHead.Builder nhd = PublicMI1.NotifyHead.newBuilder();
-        if (accountid != 0) {
-            nhd.addAccountIDs(accountid);
-        }
-        nhd.setNtfMode(ntfmode);
-        builder.setNtfHeader(nhd);
+            PublicMI1.NotifyHead.Builder nhd = PublicMI1.NotifyHead.newBuilder();
+            if (accountid != 0) {
+                nhd.addAccountIDs(accountid);
+            }
+            nhd.setNtfMode(ntfmode);
+            builder.setNtfHeader(nhd);
 
-        if (accountid != 0) {
-            NotifyMI1.AccountDataChange.Builder ac = NotifyMI1.AccountDataChange.newBuilder();
-            ac.setAccountId(accountid);
-            ac.setChangeType(type);
-            builder.addAccountChange(ac);
-        }
-        if (type == 1) {
-            builder.setChangeType(2);
-        } else {
-            builder.setChangeType(type);
-        }
-        builder.setUserId(userid);
-        sendMsg(builder.build().toByteArray(), SysConstants.RabbitNtfKey, FunCodeConstants.FunCode_Trade_UserChangeNtf);
+            if (accountid != 0) {
+                NotifyMI1.AccountDataChange.Builder ac = NotifyMI1.AccountDataChange.newBuilder();
+                ac.setAccountId(accountid);
+                ac.setChangeType(type);
+                builder.addAccountChange(ac);
+            }
+            if (type == 1) {
+                builder.setChangeType(2);
+            } else {
+                builder.setChangeType(type);
+            }
+            builder.setUserId(userid);
+            sendMsg(builder.build().toByteArray(), SysConstants.RabbitNtfKey, FunCodeConstants.FunCode_Trade_UserChangeNtf);
 
-        log.info(builder.build().toString());
+            log.info(builder.build().toString());
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.error("sendUserChangeMsg failed,error message: "+e);
+        }
     }
 
     /**
@@ -257,37 +288,42 @@ public class SendMsgServiceImpl implements ISendMsgService {
     @Override
     public void sendAccountConfigChangeNtf(Integer nt, Integer ct, Long userid, Long accountid,
                                            Long goodsid, Long groupid, Integer rt) {
-        NotifyMI1.AccountConfigChangeNtf.Builder builder = NotifyMI1.AccountConfigChangeNtf.newBuilder();
-        Common.MessageHead.Builder mh = Common.MessageHead.newBuilder();
-        mh.setFunCode(FunCodeConstants.FunCode_Trade_AccountConfigChangeNtf);
-        builder.setHeader(mh);
-        PublicMI1.NotifyHead.Builder nf = PublicMI1.NotifyHead.newBuilder();
-        nf.setNtfMode(0);
-        builder.setNtfHeader(nf);
-        builder.setNtfType(nt);
-        builder.setChangType(ct);
-        if (userid != null) {
-            builder.setUserid(userid);
-        }
-        if (accountid != null) {
-            builder.setAccountid(accountid);
-        }
-        if (goodsid != null) {
-            builder.setGoodsid(goodsid);
-        }
-        if (rt != null) {
-            if (rt == 2) {
-                builder.setRoletype(2);
-            } else if (userid <= 9999) {
-                builder.setRoletype(1);
+        try {
+            NotifyMI1.AccountConfigChangeNtf.Builder builder = NotifyMI1.AccountConfigChangeNtf.newBuilder();
+            Common.MessageHead.Builder mh = Common.MessageHead.newBuilder();
+            mh.setFunCode(FunCodeConstants.FunCode_Trade_AccountConfigChangeNtf);
+            builder.setHeader(mh);
+            PublicMI1.NotifyHead.Builder nf = PublicMI1.NotifyHead.newBuilder();
+            nf.setNtfMode(0);
+            builder.setNtfHeader(nf);
+            builder.setNtfType(nt);
+            builder.setChangType(ct);
+            if (userid != null) {
+                builder.setUserid(userid);
+            }
+            if (accountid != null) {
+                builder.setAccountid(accountid);
+            }
+            if (goodsid != null) {
+                builder.setGoodsid(goodsid);
+            }
+            if (rt != null) {
+                if (rt == 2) {
+                    builder.setRoletype(2);
+                } else if (userid <= 9999) {
+                    builder.setRoletype(1);
+                }
+            }
+            if (groupid != null) {
+                builder.setGroupid(groupid);
             }
-        }
-        if (groupid != null) {
-            builder.setGroupid(groupid);
-        }
 
-        log.info(builder.build().toString());
-        byte[] body = ProtoHelper.getNTAS(builder.build().toByteArray(), FunCodeConstants.FunCode_Trade_AccountConfigChangeNtf, 0);
-        rabbitTemplate.send(SysConstants.RabbitNtfKey, new Message(body, new MessageProperties()));
+            log.info(builder.build().toString());
+            byte[] body = ProtoHelper.getNTAS(builder.build().toByteArray(), FunCodeConstants.FunCode_Trade_AccountConfigChangeNtf, 0);
+            rabbitTemplate.send(SysConstants.RabbitNtfKey, new Message(body, new MessageProperties()));
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.error("sendAccountConfigChangeNtf failed,error message: "+e);
+        }
     }
 }

+ 156 - 1
mtp3-century/src/main/java/com/muchinfo/mtp3century/service/impl/UseraccountServiceImpl.java

@@ -104,6 +104,8 @@ public class UseraccountServiceImpl extends ServiceImpl<IUseraccountMapper, User
     private IAccountriskconfigMapper iAccountriskconfigMapper;
     @Resource
     private IEnumdicitemMapper iEnumdicitemMapper;
+    @Resource
+    private IAccounttradeconfigMapper iAccounttradeconfigMapper;
 
     @Override
     public PageResult<DealerQueryResult> queryOrganPage(DealerQueryParam dealerQueryParam, HttpServletRequest request) {
@@ -1438,6 +1440,133 @@ public class UseraccountServiceImpl extends ServiceImpl<IUseraccountMapper, User
         return AjaxResult.success(Constants.Success_Code_Design, MessageType.MESSAGE_CODE_SYSTEM001.getCode(), request.getHeader("Accept-Language"), detail);
     }
 
+    @Override
+    public AjaxResult<AccountTradeConfigTreeVo> getAccTradeTree(HttpServletRequest request) {
+        Systemmanager systemmanager = iSystemmanagerMapper.selectOne(new QueryWrapper<Systemmanager>().eq("LOGINCODE", iCommonService.getUserLoginCode(request)));
+        List<Accounttradeconfig> list = iAccounttradeconfigMapper.getListForTree(systemmanager.getAreauserid());
+
+        if(CollectionUtils.isEmpty(list)){
+            return AjaxResult.success(Constants.Success_Code_Design, MessageType.MESSAGE_CODE_SYSTEM001.getCode(), request.getHeader("Accept-Language"), new ArrayList<AccountTradeConfigTreeVo>());
+        }
+
+        //先按类型
+        Map<Integer, List<Accounttradeconfig>> type = new HashMap<>();
+        for(Accounttradeconfig fig:list){
+            Integer key = fig.getTradetype();
+            if(type.containsKey(key)){
+                type.get(key).add(fig);
+            }else{
+                List<Accounttradeconfig> temp = new ArrayList<>();
+                temp.add(fig);
+                type.put(key, temp);
+            }
+        }
+
+        //用户userid
+        Map<Integer, Map<Long, List<Accounttradeconfig>>> users = new HashMap<>();
+        for(Map.Entry<Integer, List<Accounttradeconfig>> entry:type.entrySet()){
+            Map<Long, List<Accounttradeconfig>> market = new HashMap<>();
+            List<Accounttradeconfig> temp = entry.getValue();
+            for(Accounttradeconfig fig:temp){
+                Long key = fig.getUserid();
+                if(market.containsKey(key)){
+                    market.get(key).add(fig);
+                }else{
+                    List<Accounttradeconfig> _temp = new ArrayList<>();
+                    _temp.add(fig);
+                    market.put(key, _temp);
+                }
+            }
+            users.put(entry.getKey(), market);
+        }
+
+        //资金账户
+        Map<Integer, Map<Long, Map<Long, List<Accounttradeconfig>>>> user = new HashMap<>();
+        for(Map.Entry<Integer, Map<Long, List<Accounttradeconfig>>> entry:users.entrySet()){
+            Map<Long, Map<Long, List<Accounttradeconfig>>> u = new HashMap<>();
+
+            Map<Long, List<Accounttradeconfig>> temp = entry.getValue();//userid
+            for(Map.Entry<Long, List<Accounttradeconfig>> entry_:temp.entrySet()){
+                Map<Long, List<Accounttradeconfig>> market = new HashMap<>();
+                List<Accounttradeconfig> ul = entry_.getValue();//用户下所有的资金
+                for(Accounttradeconfig fig:ul){
+                    Long key = fig.getAccountid();
+                    if(market.containsKey(key)){
+                        market.get(key).add(fig);
+                    }else{
+                        List<Accounttradeconfig> _temp = new ArrayList<>();
+                        _temp.add(fig);
+                        market.put(key, _temp);
+                    }
+                }
+                u.put(entry_.getKey(), market);
+            }
+            user.put(entry.getKey(), u);
+        }
+
+        Set<String> set = new HashSet<>();
+        List<AccountTradeConfigTreeVo> result = new ArrayList<>();
+
+        for(Map.Entry<Integer, Map<Long, Map<Long, List<Accounttradeconfig>>>> entry_:user.entrySet()){
+            for(Map.Entry<Long, Map<Long, List<Accounttradeconfig>>> entry:entry_.getValue().entrySet()){
+                Accounttradeconfig base = null;
+                for(Map.Entry<Long, List<Accounttradeconfig>> _entry:entry.getValue().entrySet()){
+                    List<Accounttradeconfig> temp = _entry.getValue();
+                    for(int i=0;i<temp.size();i++ ){
+                        Accounttradeconfig fig = temp.get(i);
+                        if(fig.getTradetype()==null){
+                            fig.setTradetype(1);
+                        }
+                        if(i==0){
+                            base = fig;
+                        }
+                        String setKey = fig.getTradetype()+""+fig.getUserid()+""+fig.getAccountid()+""+fig.getGoodsid();
+                        if(!set.contains(setKey)){
+                            set.add(setKey);
+                            //商品级
+                            AccountTradeConfigTreeVo vo2 = new AccountTradeConfigTreeVo();
+                            vo2.setId(fig.getTradetype()+fig.getGoodsid().toString());
+                            vo2.setPid(fig.getTradetype()+fig.getUserid()+""+fig.getAccountid());
+                            vo2.setLevel(3);
+                            vo2.setName(fig.getGoodsname());//商品名称
+                            vo2.setUserid(fig.getUserid());
+                            vo2.setAccountid(fig.getAccountid());
+                            vo2.setMarketid(fig.getMarketid());
+                            vo2.setGoodsid(fig.getGoodsid());
+                            vo2.setTradetype(fig.getTradetype());
+                            result.add(vo2);
+                        }
+                    }
+                    //资金账户级
+                    AccountTradeConfigTreeVo vo1 = new AccountTradeConfigTreeVo();
+                    vo1.setId(base.getTradetype()+base.getUserid()+""+base.getAccountid());
+                    vo1.setPid(base.getTradetype()+"u"+base.getUserid().toString());
+                    vo1.setLevel(2);
+                    vo1.setName(base.getAccountid().toString());//市场名称
+                    vo1.setUserid(base.getUserid());
+                    vo1.setAccountid(base.getAccountid());
+                    vo1.setTradetype(base.getTradetype());
+                    result.add(vo1);
+                }
+                //用户级
+                AccountTradeConfigTreeVo vo = new AccountTradeConfigTreeVo();
+                vo.setId(base.getTradetype()+"u"+base.getUserid().toString());
+                if(base.getTradetype()==null || base.getTradetype()==0 || base.getTradetype()==1){
+                    vo.setPid("-1");
+                }else{
+                    vo.setPid("-2");
+                }
+                vo.setLevel(1);
+                vo.setName(StringUtils.isBlank(base.getAccountname())?"默认配置":base.getAccountname());//分组名称
+                vo.setUserid(base.getUserid());
+                vo.setTradetype(base.getTradetype());
+                result.add(vo);
+            }
+        }
+
+        return AjaxResult.success(Constants.Success_Code_Design, MessageType.MESSAGE_CODE_SYSTEM001.getCode(), request.getHeader("Accept-Language"), result);
+    }
+
     private List<RulesConfigVo> getTradeRuleDescriptions(Long marketid, Long goodsid, Long areauserid) {
         List<RulesConfigVo> list = iUseraccountMapper.getTradeRuleDescriptions(marketid, goodsid, areauserid,null);
 
@@ -1474,7 +1603,7 @@ public class UseraccountServiceImpl extends ServiceImpl<IUseraccountMapper, User
 
     private List<FeesConfigVo> getTradeFeeDescriptions(Long marketid, Long goodsid, Long areauserid) {
         List<FeesConfigVo> list = iUseraccountMapper.getTradeFeeDescriptions(marketid, goodsid, areauserid,null);
-        if (list != null && !list.isEmpty()) {
+        if (CollectionUtils.isNotEmpty(list)) {
             Object o = redisServiceUtil.getCacheMapValue(Constants.REDIS_HEADER_SYSPARAM, "007");
             if (o != null && "1".equals(o.toString())) {
                 //币种小数位
@@ -1511,6 +1640,32 @@ public class UseraccountServiceImpl extends ServiceImpl<IUseraccountMapper, User
                         }
                     }
                 }
+            }else {
+                for (int i = 0; i < list.size(); i++) {
+                    if (list.get(i).getFeealgorithm() == 1) {
+                        if (list.get(i).getExchangevalue() != null
+                                && list.get(i).getExchangevalue().compareTo(BigDecimal.ZERO) != 0) {
+                            list.get(i).setExchangevalue(list.get(i).getExchangevalue().multiply(new BigDecimal("10000")));
+                        }
+                        if (list.get(i).getDvalue() != null
+                                && list.get(i).getDvalue().compareTo(BigDecimal.ZERO) != 0) {
+                            list.get(i).setDvalue(list.get(i).getDvalue().multiply(new BigDecimal("10000")));
+                        }
+                        if (list.get(i).getGvalue() != null
+                                && list.get(i).getGvalue().compareTo(BigDecimal.ZERO) != 0) {
+                            list.get(i).setGvalue(list.get(i).getGvalue().multiply(new BigDecimal("10000")));
+                        }
+
+                        if (list.get(i).getMembermaxvalue() != null
+                                && list.get(i).getMembermaxvalue().compareTo(BigDecimal.ZERO) != 0) {
+                            list.get(i).setMembermaxvalue(list.get(i).getMembermaxvalue().multiply(new BigDecimal("10000")));
+                        }
+                        if (list.get(i).getMemberminvalue() != null
+                                && list.get(i).getMemberminvalue().compareTo(BigDecimal.ZERO) != 0) {
+                            list.get(i).setMemberminvalue(list.get(i).getMemberminvalue().multiply(new BigDecimal("10000")));
+                        }
+                    }
+                }
             }
         }
         return list;

+ 43 - 0
mtp3-century/src/main/resources/mapper/AccounttradeconfigMapper.xml

@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.muchinfo.mtp3interface.mapper.IAccounttradeconfigMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.muchinfo.mtp3pojos.entity.Accounttradeconfig">
+        <id column="AUTOID" property="autoid" />
+        <result column="ACCOUNTID" property="accountid" />
+        <result column="USERID" property="userid" />
+        <result column="MEMBERUSERID" property="memberuserid" />
+        <result column="GOODSID" property="goodsid" />
+        <result column="MARKETID" property="marketid" />
+        <result column="RULETYPE" property="ruletype" />
+        <result column="PARAMID" property="paramid" />
+        <result column="FEEALGORITHM" property="feealgorithm" />
+        <result column="PARAMVALUE" property="paramvalue" />
+        <result column="CREATETIME" property="createtime" />
+        <result column="CREATORID" property="creatorid" />
+        <result column="TRADETYPE" property="tradetype" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        AUTOID, ACCOUNTID, USERID, MEMBERUSERID, GOODSID, MARKETID, RULETYPE, PARAMID, FEEALGORITHM, PARAMVALUE, CREATETIME, CREATORID, TRADETYPE
+    </sql>
+
+
+    <select id="getListForTree"  resultType="com.muchinfo.mtp3pojos.entity.Accounttradeconfig">
+        select a.*,g.goodsname,m.marketname,t.userid || '/' || t.accountname as accountname
+        from accounttradeconfig a
+        left join goods g on g.goodsid=a.goodsid
+        left join MARKET m on  m.marketid = a.marketid
+        left join useraccount t on t.userid = a.userid
+        <where>
+            <if test="memberuserid != null ">
+                and memberuserid = #{memberuserid}
+            </if>
+        </where>
+        order by userid,goodsnamess asc
+    </select>
+
+
+</mapper>

+ 1 - 0
mtp3-century/src/main/resources/mapper/TradeOrderdetailMapper.xml

@@ -426,6 +426,7 @@
         left join goods g on g.goodsid=td.goodsid
         left join taaccount ta on ta.accountid = td.accountid
         left join useraccount ua on ta.userid = ua.userid
+        left join useraccount rua on ta.relateduserid = rua.userid
         left join market m on td.marketid = m.marketid
         left join useraccount memberua on memberua.userid = ua.memberuserid
         left join view_user_loginids vlog on vlog.userid = ta.userid

+ 20 - 0
mtp3-interface/src/main/java/com/muchinfo/mtp3interface/mapper/IAccounttradeconfigMapper.java

@@ -0,0 +1,20 @@
+package com.muchinfo.mtp3interface.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.muchinfo.mtp3pojos.entity.Accounttradeconfig;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 账户交易参数配置表 Mapper 接口
+ * </p>
+ *
+ * @author XKF
+ * @since 2024-09-10
+ */
+public interface IAccounttradeconfigMapper extends BaseMapper<Accounttradeconfig> {
+
+    List<Accounttradeconfig> getListForTree(@Param("areauserid") Long areauserid);
+}

+ 4 - 2
mtp3-pojos/src/main/java/com/muchinfo/mtp3pojos/entity/Accountriskconfig.java

@@ -7,8 +7,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
+import lombok.*;
 import lombok.experimental.Accessors;
 
 import java.io.Serializable;
@@ -27,6 +26,9 @@ import java.math.BigDecimal;
 @Accessors(chain = true)
 @TableName("ACCOUNTRISKCONFIG")
 @ApiModel(value="Accountriskconfig对象", description="账号风险率个性化表")
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
 public class Accountriskconfig extends Model<Accountriskconfig> {
 
     private static final long serialVersionUID = 1L;

+ 100 - 0
mtp3-pojos/src/main/java/com/muchinfo/mtp3pojos/entity/Accounttradeconfig.java

@@ -0,0 +1,100 @@
+package com.muchinfo.mtp3pojos.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * <p>
+ * 账户交易参数配置表
+ * </p>
+ *
+ * @author XKF
+ * @since 2024-09-10
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("ACCOUNTTRADECONFIG")
+@ApiModel(value="Accounttradeconfig对象", description="账户交易参数配置表")
+@KeySequence(value = "SEQ_ACCOUNTTRADECONFIG")
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class Accounttradeconfig extends Model<Accounttradeconfig> {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "自增ID")
+    @TableId(value = "AUTOID", type = IdType.INPUT)
+    private Long autoid;
+
+    @ApiModelProperty(value = "资金账号")
+    @TableField("ACCOUNTID")
+    private Long accountid;
+
+    @ApiModelProperty(value = "用户ID")
+    @TableField("USERID")
+    private Long userid;
+
+    @ApiModelProperty(value = "所属会员ID")
+    @TableField("MEMBERUSERID")
+    private Long memberuserid;
+
+    @ApiModelProperty(value = "商品ID")
+    @TableField("GOODSID")
+    private Long goodsid;
+
+    @ApiModelProperty(value = "市场ID")
+    @TableField("MARKETID")
+    private Long marketid;
+
+    @ApiModelProperty(value = "参数类型 -1.保证金类 2.交易规则 3.交易费用")
+    @TableField("RULETYPE")
+    private Integer ruletype;
+
+    @ApiModelProperty(value = "个性化参数ID - 1. 参照交易模式规则费用对应-参考表 可个性化类型 2.保证金类保存交易所创建的投资者客户类别ID")
+    @TableField("PARAMID")
+    private Integer paramid;
+
+    @ApiModelProperty(value = "费用算法 - 1:比率 2:固定")
+    @TableField("FEEALGORITHM")
+    private Integer feealgorithm;
+
+    @ApiModelProperty(value = "参数值(保证金类此项为空)")
+    @TableField("PARAMVALUE")
+    private BigDecimal paramvalue;
+
+    @ApiModelProperty(value = "创建时间")
+    @TableField("CREATETIME")
+    private Date createtime;
+
+    @ApiModelProperty(value = "创建人")
+    @TableField("CREATORID")
+    private Long creatorid;
+
+    @ApiModelProperty(value = "交易类型[交易费用] - 1:投资者自营 2:做市")
+    @TableField("TRADETYPE")
+    private Integer tradetype;
+
+    @TableField(select = false)
+    private String goodsname;
+
+    @TableField(select = false)
+    private String accountname;
+
+    @TableField(select = false)
+    private String marketname;
+    @Override
+    public Serializable pkVal() {
+        return this.autoid;
+    }
+
+}

+ 33 - 0
mtp3-pojos/src/main/java/com/muchinfo/mtp3pojos/vo/investor/AccountTradeConfigTreeVo.java

@@ -0,0 +1,33 @@
+package com.muchinfo.mtp3pojos.vo.investor;
+
+import io.swagger.annotations.ApiModel;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Builder
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@ApiModel(value = "AccountTradeConfigTreeVo对象", description = "资金账户个性化树结构")
+public class AccountTradeConfigTreeVo {
+
+    private String id;
+
+    private String pid;
+
+    private String name;
+
+    private Integer level;
+
+    private Long userid;
+
+    private Long accountid;
+
+    private Long marketid;
+
+    private Long goodsid;
+
+    private Integer tradetype;
+}