Parcourir la source

修改2024.12.24-20251.14的内容

xie.kaifeng il y a 10 mois
Parent
commit
b233976c95
35 fichiers modifiés avec 844 ajouts et 84 suppressions
  1. 8 0
      mtp3-century/src/main/java/com/muchinfo/mtp3century/controller/BankAccountController.java
  2. 4 6
      mtp3-century/src/main/java/com/muchinfo/mtp3century/controller/CommonController.java
  3. 84 1
      mtp3-century/src/main/java/com/muchinfo/mtp3century/controller/InvestorController.java
  4. 3 0
      mtp3-century/src/main/java/com/muchinfo/mtp3century/controller/OrganController.java
  5. 8 2
      mtp3-century/src/main/java/com/muchinfo/mtp3century/controller/OrganSonController.java
  6. 3 0
      mtp3-century/src/main/java/com/muchinfo/mtp3century/service/IBankAccountSignService.java
  7. 1 1
      mtp3-century/src/main/java/com/muchinfo/mtp3century/service/ICommonService.java
  8. 8 0
      mtp3-century/src/main/java/com/muchinfo/mtp3century/service/IUseraccountService.java
  9. 22 2
      mtp3-century/src/main/java/com/muchinfo/mtp3century/service/impl/BankAccountSignServiceImpl.java
  10. 2 6
      mtp3-century/src/main/java/com/muchinfo/mtp3century/service/impl/CommonServiceImpl.java
  11. 52 47
      mtp3-century/src/main/java/com/muchinfo/mtp3century/service/impl/OrganServiceImpl.java
  12. 17 2
      mtp3-century/src/main/java/com/muchinfo/mtp3century/service/impl/OrganSonServiceService.java
  13. 0 2
      mtp3-century/src/main/java/com/muchinfo/mtp3century/service/impl/SystemSetUpServiceImpl.java
  14. 24 4
      mtp3-century/src/main/java/com/muchinfo/mtp3century/service/impl/SystemmanagerServiceImpl.java
  15. 1 2
      mtp3-century/src/main/java/com/muchinfo/mtp3century/service/impl/TaaccountServiceImpl.java
  16. 189 7
      mtp3-century/src/main/java/com/muchinfo/mtp3century/service/impl/UseraccountServiceImpl.java
  17. 28 1
      mtp3-century/src/main/java/com/muchinfo/mtp3century/service/impl/WskhUserinfoServiceImpl.java
  18. 5 0
      mtp3-century/src/main/resources/mapper/BankAccountoutinapplyMapper.xml
  19. 21 0
      mtp3-century/src/main/resources/mapper/UseraccountMapper.xml
  20. 5 0
      mtp3-century/src/main/resources/message_en.properties
  21. 5 0
      mtp3-century/src/main/resources/message_th.properties
  22. 5 0
      mtp3-century/src/main/resources/message_zh-CN.properties
  23. 5 0
      mtp3-century/src/main/resources/message_zh-HK.properties
  24. 5 0
      mtp3-century/src/main/resources/message_zh-TW.properties
  25. 5 0
      mtp3-common/src/main/java/com/muchinfo/mtp3common/enumtype/MessageType.java
  26. 143 0
      mtp3-common/src/main/java/com/muchinfo/mtp3common/utils/EncryptUtilForSearch.java
  27. 3 0
      mtp3-interface/src/main/java/com/muchinfo/mtp3interface/mapper/IBankAccountoutinapplyMapper.java
  28. 2 0
      mtp3-interface/src/main/java/com/muchinfo/mtp3interface/mapper/IUseraccountMapper.java
  29. 16 0
      mtp3-interface/src/main/java/com/muchinfo/mtp3interface/mapper/IUsercancelapplyMapper.java
  30. 76 0
      mtp3-pojos/src/main/java/com/muchinfo/mtp3pojos/entity/Usercancelapply.java
  31. 28 0
      mtp3-pojos/src/main/java/com/muchinfo/mtp3pojos/vo/investor/InvestorCancelApplyParam.java
  32. 39 0
      mtp3-pojos/src/main/java/com/muchinfo/mtp3pojos/vo/investor/InvestorCancelApplyResult.java
  33. 2 1
      mtp3-pojos/src/main/java/com/muchinfo/mtp3pojos/vo/organ/son/OrganSonTransferAddParam.java
  34. 7 0
      mtp3-pojos/src/main/java/com/muchinfo/mtp3pojos/vo/organ/son/OrganSonTransferParam.java
  35. 18 0
      mtp3-pojos/src/main/java/com/muchinfo/mtp3pojos/vo/organ/son/OrganSonTransferResult.java

+ 8 - 0
mtp3-century/src/main/java/com/muchinfo/mtp3century/controller/BankAccountController.java

@@ -7,6 +7,7 @@ import com.muchinfo.mtp3common.enumtype.MessageType;
 import com.muchinfo.mtp3common.vo.AjaxResult;
 import com.muchinfo.mtp3common.utils.JsonUtils;
 import com.muchinfo.mtp3common.vo.PageResult;
+import com.muchinfo.mtp3pojos.entity.BankCusbankinfo;
 import com.muchinfo.mtp3pojos.vo.bankaccountsign.*;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -34,6 +35,13 @@ public class BankAccountController {
         return iBankAccountSignService.query(taAccountQueryParam, request);
     }
 
+    @ApiOperation("资金账户管理->银行签约-->初始化托管银行")
+    @RequestMapping(method = RequestMethod.GET, value = "/dealAccountSignInit")
+    @ApiResponse(code = 200, message = "成功", response = AjaxResult.class)
+    private AjaxResult<BankCusbankinfo> dealAccountSignInit(Long accountid ,HttpServletRequest request) {
+        return iBankAccountSignService.dealAccountSignInit(accountid,request);
+    }
+
     @ApiOperation("资金账户管理-->处理银行签约")
     @ApiResponse(code = 200, message = "成功", response = AjaxResult.class)
     @RequestMapping(method = RequestMethod.POST, value = "/dealAccountSign")

+ 4 - 6
mtp3-century/src/main/java/com/muchinfo/mtp3century/controller/CommonController.java

@@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.muchinfo.mtp3century.service.ICommonService;
-import com.muchinfo.mtp3century.service.IOrganService;
 import com.muchinfo.mtp3century.service.IOrganSonService;
 import com.muchinfo.mtp3century.utils.RedisServiceUtil;
 import com.muchinfo.mtp3common.enumtype.*;
@@ -31,7 +30,6 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
 import java.util.Arrays;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
@@ -397,11 +395,11 @@ public class CommonController {
         return iCommonService.queryAccountId(userid, request);
     }
 
-    @RequestMapping(method = RequestMethod.GET, value = "queryMobileByUserId")
+    @RequestMapping(method = RequestMethod.GET, value = "queryUserinfoByUserId")
     @ApiResponse(code = 200, message = "成功", response = AjaxResult.class)
-    @ApiOperation("获取手机号")
-    public AjaxResult queryMobileByUserId(Long userid, HttpServletRequest request) {
-        return iCommonService.queryMobileByUserId(userid, request);
+    @ApiOperation("获取用户信息")
+    public AjaxResult<Userinfo> queryUserinfoByUserId(Long userid, HttpServletRequest request) {
+        return iCommonService.queryUserinfoUserId(userid, request);
     }
 
     @RequestMapping(method = RequestMethod.GET, value = "queryTAAccountList")

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

@@ -12,8 +12,11 @@ import com.muchinfo.mtp3common.utils.EncryptionUtils;
 import com.muchinfo.mtp3common.utils.JsonUtils;
 import com.muchinfo.mtp3common.vo.PageResult;
 import com.muchinfo.mtp3interface.mapper.ISystemmanagerMapper;
+import com.muchinfo.mtp3interface.mapper.ISystemparamMapper;
+import com.muchinfo.mtp3interface.mapper.IUseraccountMapper;
 import com.muchinfo.mtp3pojos.entity.*;
 import com.muchinfo.mtp3pojos.vo.investor.*;
+import com.muchinfo.mtp3pojos.vo.organ.son.OrganSonTransferAddParam;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiResponse;
@@ -45,7 +48,14 @@ public class InvestorController {
     private ITaaccountService iTaaccountService;
     @Resource
     private IDealLoginService iDealLoginService;
-
+    @Resource
+    private IOrganService iOrganService;
+    @Resource
+    private IOrganSonService iOrganSonService;
+    @Resource
+    private ISystemparamMapper iSystemparamMapper;
+    @Resource
+    private IUseraccountMapper iUseraccountMapper;
 
     @ApiOperation("交易商管理-->开户管理-->交易商开户列表信息获取")
     @RequestMapping(method = RequestMethod.GET, value = "/query")
@@ -425,4 +435,77 @@ public class InvestorController {
     public AjaxResult<AccountTradeConfigTreeVo> getAccTradeTree(HttpServletRequest request) {
         return iUseraccountService.getAccTradeTree(request);
     }
+
+    @ApiOperation("交易商管理-->个性化管理-->资金账户个性化--> 详情")
+    @RequestMapping(method = RequestMethod.GET, value = "/accTradeConfigView")
+    @ApiResponse(code = 200, message = "成功", response = AjaxResult.class)
+    private AjaxResult accTradeConfigView(PersonalizationDelParam param, HttpServletRequest request) {
+        //这个是投资者的userid ,获取投资者的分组ID
+        param.setMemberuserid(1L);
+        return iOrganService.tradeConfigView(param, request);
+    }
+
+    @ApiOperation("交易商管理-->个性化管理-->资金账户个性化--> 删除")
+    @ApiResponse(code = 200, message = "成功", response = AjaxResult.class)
+    @RequestMapping(method = RequestMethod.GET, value = "/accTradeConfigDelete")
+    public AjaxResult accTradeConfigDelete(PersonalizationDelParam param, HttpServletRequest request) {
+        return iOrganService.tradeConfigDelete(param, request);
+    }
+
+    @ApiOperation("交易商管理-->交易商批量转移-->新增")
+    @RequestMapping(method = RequestMethod.POST, value = "/organSonTransferAdd")
+    @ApiResponse(code = 200, message = "成功", response = AjaxResult.class)
+    private AjaxResult organSonTransferAdd(@RequestBody String param, HttpServletRequest request) {
+        Systemmanager systemmanager = iSystemmanagerMapper.selectOne(new QueryWrapper<Systemmanager>().eq("LOGINCODE", iCommonService.getUserLoginCode(request)));
+        try {
+            OrganSonTransferAddParam current = JsonUtils.toBean(CenturyDecryptUtil.decryptForJson(param, request), OrganSonTransferAddParam.class);
+            Systemparam p = iSystemparamMapper.selectOne(new QueryWrapper<Systemparam>().eq("PARAMCODE", SysConstants.SYPAMAM_CODE_TRANSFER_MEMBER));
+            if (p != null && "0".equals(p.getParamvalue())) {
+                //如果不允许转 会员,那么admin没有操作权限
+                if (systemmanager.getReletype() == 1) {
+                    return AjaxResult.error(Constants.Error_Code_Design, MessageType.MESSAGE_ERROR_CODE_SYSTEM003.getCode(), request.getHeader("Accept-Language"));
+                }
+            }
+            if (current.getDiversiontype() == 0) {
+                // 交易商单个转移时 更新转出会员、机构
+                Useraccount userAccount = iUseraccountMapper.selectOne(new QueryWrapper<Useraccount>().eq("userid", current.getOutinvestor()));
+                if (userAccount != null) {
+                    current.setOutmemberuserid(userAccount.getMemberuserid());
+                    current.setOutparentuserid(userAccount.getParentuserid());
+                }
+            }
+            return iOrganSonService.organSonTransferAdd(current, request);
+        } catch (Exception e) {
+            log.error("子机构管理修改失败,失败原因:" + Arrays.toString(e.getStackTrace()));
+            return AjaxResult.error(Constants.Error_Code_Design, MessageType.MESSAGE_ERROR_CODE_SYSTEM002.getCode(), request.getHeader("Accept-Language"));
+        }
+    }
+
+    @ApiOperation("交易商管理-->交易商批量转移-->获取列表")
+    @ApiResponse(code = 200, message = "成功", response = PageResult.class)
+    @RequestMapping(method = RequestMethod.GET, value = "/usercancelapply")
+    public PageResult<InvestorCancelApplyResult> usercancelapply(InvestorCancelApplyParam param, HttpServletRequest request) {
+        return iUseraccountService.usercancelapply(param, request);
+    }
+
+    @ApiOperation("交易商管理-->交易商批量转移-->详情")
+    @ApiResponse(code = 200, message = "成功", response = AjaxResult.class)
+    @RequestMapping(method = RequestMethod.GET, value = "/cancelview")
+    public AjaxResult cancelview(Long autoid, HttpServletRequest request) {
+        return iUseraccountService.cancelview(autoid, request);
+    }
+
+    @ApiOperation("交易商管理-->交易商批量转移-->新增初始化")
+    @ApiResponse(code = 200, message = "成功", response = AjaxResult.class)
+    @RequestMapping(method = RequestMethod.GET, value = "/getUserAccountDetail")
+    public AjaxResult<UserAccountDetailVo> getUserAccountDetail(Long userid, HttpServletRequest request) {
+        return iUseraccountService.getUserAccountDetail(userid, request);
+    }
+
+    @ApiOperation("交易商管理-->交易商批量转移-->审核")
+    @ApiResponse(code = 200, message = "成功", response = AjaxResult.class)
+    @RequestMapping(method = RequestMethod.GET, value = "/cancelaudit")
+    public AjaxResult cancelaudit(Long autoid, Integer auditflag, String msg, HttpServletRequest request) {
+        return iUseraccountService.cancelaudit(autoid, auditflag, msg, request);
+    }
 }

+ 3 - 0
mtp3-century/src/main/java/com/muchinfo/mtp3century/controller/OrganController.java

@@ -312,6 +312,9 @@ public class OrganController {
     @RequestMapping(method = RequestMethod.GET, value = "/tradeConfigView")
     @ApiResponse(code = 200, message = "成功", response = AjaxResult.class)
     private AjaxResult tradeConfigView(PersonalizationDelParam param, HttpServletRequest request) {
+        //这个是投资者的userid ,获取投资者的分组ID
+        param.setMemberuserid(0L);
+        param.setRuletype(1);
         return iOrganService.tradeConfigView(param, request);
     }
 

+ 8 - 2
mtp3-century/src/main/java/com/muchinfo/mtp3century/controller/OrganSonController.java

@@ -167,7 +167,13 @@ public class OrganSonController {
     @ApiOperation("会员机构管理-->子机构管理-->子机构转移-->新增")
     @RequestMapping(method = RequestMethod.POST, value = "/organSonTransferAdd")
     @ApiResponse(code = 200, message = "成功", response = AjaxResult.class)
-    private AjaxResult organSonTransferAdd(@RequestBody OrganSonTransferAddParam vo, HttpServletRequest request) {
-        return iOrganSonService.organSonTransferAdd(vo, request);
+    private AjaxResult organSonTransferAdd(@RequestBody String param, HttpServletRequest request) {
+        try {
+            OrganSonTransferAddParam current = JsonUtils.toBean(CenturyDecryptUtil.decryptForJson(param, request), OrganSonTransferAddParam.class);
+            return iOrganSonService.organSonTransferAdd(current, request);
+        } catch (Exception e) {
+            log.error("子机构管理修改失败,失败原因:" + Arrays.toString(e.getStackTrace()));
+            return AjaxResult.error(Constants.Error_Code_Design, MessageType.MESSAGE_ERROR_CODE_SYSTEM002.getCode(), request.getHeader("Accept-Language"));
+        }
     }
 }

+ 3 - 0
mtp3-century/src/main/java/com/muchinfo/mtp3century/service/IBankAccountSignService.java

@@ -2,6 +2,7 @@ package com.muchinfo.mtp3century.service;
 
 import com.muchinfo.mtp3common.vo.AjaxResult;
 import com.muchinfo.mtp3common.vo.PageResult;
+import com.muchinfo.mtp3pojos.entity.BankCusbankinfo;
 import com.muchinfo.mtp3pojos.entity.Systemmanager;
 import com.muchinfo.mtp3pojos.vo.bankaccountsign.*;
 
@@ -19,4 +20,6 @@ public interface IBankAccountSignService {
     AjaxResult<BankAccountsignResult> getSignBankById(String accountcode, String cusbankid, String applyexchticket, HttpServletRequest request);
 
     AjaxResult dealAccountSign(HttpServletRequest request, AccountSignParam param);
+
+    AjaxResult<BankCusbankinfo> dealAccountSignInit(Long accountid, HttpServletRequest request);
 }

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

@@ -77,7 +77,7 @@ public interface ICommonService {
 
     AjaxResult<TaAccountQueryResult> queryTAAccountList(TaAccountReportParam param, HttpServletRequest request);
 
-    AjaxResult queryMobileByUserId(Long userid, HttpServletRequest request);
+    AjaxResult queryUserinfoUserId(Long userid, HttpServletRequest request);
 
     AjaxResult<OrganSelectResult> queryExchSonOrgin(OrganSelectParam vo, HttpServletRequest request);
 }

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

@@ -75,4 +75,12 @@ public interface IUseraccountService extends IService<Useraccount> {
     AjaxResult<AccountTradeConfigTreeVo> getAccTradeTree(HttpServletRequest request);
 
     AjaxResult<InvestorInitBZResult> initBZList(Long goodsid, HttpServletRequest request);
+
+    PageResult<InvestorCancelApplyResult> usercancelapply(InvestorCancelApplyParam param, HttpServletRequest request);
+
+    AjaxResult cancelview(Long autoid, HttpServletRequest request);
+
+    AjaxResult cancelaudit(Long autoid, Integer auditflag, String msg, HttpServletRequest request);
+
+    AjaxResult<UserAccountDetailVo> getUserAccountDetail(Long userid, HttpServletRequest request);
 }

+ 22 - 2
mtp3-century/src/main/java/com/muchinfo/mtp3century/service/impl/BankAccountSignServiceImpl.java

@@ -228,8 +228,8 @@ public class BankAccountSignServiceImpl implements IBankAccountSignService {
                 builder.setCertType(bankaccountsign.getCardtype());
                 builder.setMobilePhone(EncryptionUtils.decryptForAES(sign.getMobilephone()));
             } else {
-                builder.setBankAccountNo(sign.getBankaccountno());
-                builder.setBankAccountName(sign.getBankaccountname());
+                builder.setBankAccountNo(sign.getBankaccountno().trim());
+                builder.setBankAccountName(sign.getBankaccountname().trim());
                 builder.setCertID(sign.getCertid() != null ? sign.getCertid() : "");
                 builder.setCertType(sign.getCerttype() != null ? String.valueOf(sign.getCerttype()) : "");
                 builder.setMobilePhone(sign.getMobilephone());
@@ -339,6 +339,26 @@ public class BankAccountSignServiceImpl implements IBankAccountSignService {
         return null;
     }
 
+    @Override
+    public AjaxResult<BankCusbankinfo> dealAccountSignInit(Long accountid, HttpServletRequest request) {
+        Taaccount ta = iTaaccountMapper.selectOne(new QueryWrapper<Taaccount>().eq("accountid",accountid));
+        Enumdicitem item = iEnumdicitemMapper.selectOne(new QueryWrapper<Enumdicitem>().eq("enumdiccode", "currency")
+                .eq("enumitemname", Long.valueOf(ta.getCurrencyid())));
+
+        // #6603 添加系统参数1016-是否强制配置使用银行渠道,若为1,则机构资料管理、会员子机构管理、经纪会员管理添加操作“银行渠道配置”
+        // #6606 管理端】 机构\子机构登录》账号管理>资金账户管理》银行签约信息》新增\修改:根据系统参数1016-是否强制配置使用银行渠道,若为1,则查询机构\子机构配置的渠道
+        String sp1016 = redisServiceUtil.getCacheMapValue(Constants.REDIS_HEADER_SYSPARAM, "1016");
+        sp1016 = StringUtils.isBlank(sp1016) ? "0" : sp1016;
+        List<BankCusbankinfo> cusBankList = null;
+        if (sp1016.equals("1")){
+            cusBankList = iBankAccountoutinapplyMapper.queryCusbanksForArea(ta.getUserid(),1);
+        }else{
+            cusBankList = iBankCusbankinfoMapper.selectList(new QueryWrapper<BankCusbankinfo>().
+                    eq("currency", item.getBankmappedvalue()));
+        }
+        return AjaxResult.success(Constants.Success_Code_Design, MessageType.MESSAGE_CODE_SYSTEM001.getCode(), request.getHeader("Accept-Language"), cusBankList);
+    }
+
     private void writelog(AccountSignParam sign, Integer type, Systemmanager user) {
         try {
             Systemmanagerlog syslog = new Systemmanagerlog();

+ 2 - 6
mtp3-century/src/main/java/com/muchinfo/mtp3century/service/impl/CommonServiceImpl.java

@@ -780,13 +780,9 @@ public class CommonServiceImpl implements ICommonService {
     }
 
     @Override
-    public AjaxResult queryMobileByUserId(Long userid, HttpServletRequest request) {
+    public AjaxResult queryUserinfoUserId(Long userid, HttpServletRequest request) {
         Userinfo userinfo = iUserinfoMapper.selectOne(new QueryWrapper<Userinfo>().eq("userid", userid));
-        String mobile = null;
-        if (StringUtils.isNotBlank(userinfo.getMobile())) {
-            mobile = EncryptionUtils.decryptForAES(userinfo.getMobile());
-        }
-        return AjaxResult.success(Constants.Success_Code_Design, MessageType.MESSAGE_CODE_SYSTEM001.getCode(), request.getHeader("Accept-Language"), mobile);
+        return AjaxResult.success(Constants.Success_Code_Design, MessageType.MESSAGE_CODE_SYSTEM001.getCode(), request.getHeader("Accept-Language"), userinfo);
     }
 
     @Override

+ 52 - 47
mtp3-century/src/main/java/com/muchinfo/mtp3century/service/impl/OrganServiceImpl.java

@@ -1124,6 +1124,11 @@ public class OrganServiceImpl implements IOrganService {
 
     @Override
     public AjaxResult editorgan(OrganAddSonOrganParam param, HttpServletRequest request) {
+        // #6597 管理端】不管是后台注册还是客户端注册,身份证号填写的那一栏,如果涉及到输入字母X,需要固定只能输入大写字母
+        if (param != null && StringUtils.isNotBlank(param.getCardnum())){
+            param.setCardnum(param.getCardnum().toUpperCase());
+        }
+
         Systemmanager systemmanager = iSystemmanagerMapper.selectOne(new QueryWrapper<Systemmanager>().eq("LOGINCODE", iCommonService.getUserLoginCode(request)));
 
         Useraccount organ = iUseraccountMapper.selectOne(new QueryWrapper<Useraccount>().eq("userid", param.getUserid()));
@@ -1348,9 +1353,6 @@ public class OrganServiceImpl implements IOrganService {
 
     @Override
     public AjaxResult tradeConfigView(PersonalizationDelParam param, HttpServletRequest request) {
-        //这个是投资者的userid ,获取投资者的分组ID
-        param.setMemberuserid(0L);
-        param.setRuletype(1);
         Map<String, Object> result = new HashMap<>();
         Usergroupdetail ug = iUsergroupdetailMapper.selectOne(new QueryWrapper<Usergroupdetail>().eq("userid", param.getUserid()));
         if (ug != null) {
@@ -1379,7 +1381,10 @@ public class OrganServiceImpl implements IOrganService {
         List<Accounttradeconfig> list = iAccounttradeconfigMapper.selectList(new QueryWrapper<Accounttradeconfig>()
                 .eq("accountid", param.getAccountid())
                 .eq("userid", param.getUserid())
-                .eq("tradetype", param.getTradetype()));
+                .eq("tradetype", param.getTradetype())
+                .eq("goodsid", param.getGoodsid())
+                .eq("marketid", param.getMarketid())
+                .eq("memberuserid", param.getMemberuserid()));
 
         Accounttradeconfig detail = new Accounttradeconfig();
         detail.setGoodsid(param.getGoodsid());
@@ -1389,79 +1394,79 @@ public class OrganServiceImpl implements IOrganService {
         detail.setAccountid(param.getAccountid());
         detail.setTradetype(param.getTradetype());
         Map<String, Accounttradeconfig> map = new HashMap<>();
-        if (list != null && !list.isEmpty()) {
-            for (Accounttradeconfig config : list) {
-                if (config.getRuletype() == 1) {
-                    detail.setParamid(config.getParamid());
-                } else if (config.getRuletype() == 2) {
-                    map.put("rule" + config.getParamid(), config);
-                } else {
-                    map.put("fee" + config.getParamid(), config);
-                }
+
+        for (Accounttradeconfig config : list) {
+            if (config.getRuletype() == 1) {
+                detail.setParamid(config.getParamid());
+            } else if (config.getRuletype() == 2) {
+                map.put("rule" + config.getParamid(), config);
+            } else {
+                map.put("fee" + config.getParamid(), config);
             }
         }
+
         if (ruleList != null && !ruleList.isEmpty()) {
-            for (int i = 0; i < ruleList.size(); i++) {
-                Accounttradeconfig config = map.get("rule" + ruleList.get(i).getRuleid());
+            for (RulesConfigVo rulesConfigVo : ruleList) {
+                Accounttradeconfig config = map.get("rule" + rulesConfigVo.getRuleid());
                 if (config != null) {
                     //小数位放大
-                    if (qtyde != null && ruleList.get(i).getRuleid() >= 101 && ruleList.get(i).getRuleid() <= 104) {
+                    if (qtyde != null && rulesConfigVo.getRuleid() >= 101 && rulesConfigVo.getRuleid() <= 104) {
                         if (config.getParamvalue() != null &&
                                 config.getParamvalue().compareTo(BigDecimal.ZERO) != 0) {
-                            ruleList.get(i).setCvalue(config.getParamvalue().divide(qtyde));
+                            rulesConfigVo.setCvalue(config.getParamvalue().divide(qtyde));
                         }
-                        if (ruleList.get(i).getParamvalue() != null &&
-                                ruleList.get(i).getParamvalue().compareTo(BigDecimal.ZERO) != 0) {
-                            ruleList.get(i).setParamvalue(ruleList.get(i).getParamvalue().divide(BigDecimal.valueOf(Math.pow(10, ruleList.get(i).getQtydecimalplace()))));
+                        if (rulesConfigVo.getParamvalue() != null &&
+                                rulesConfigVo.getParamvalue().compareTo(BigDecimal.ZERO) != 0) {
+                            rulesConfigVo.setParamvalue(rulesConfigVo.getParamvalue().divide(BigDecimal.valueOf(Math.pow(10, rulesConfigVo.getQtydecimalplace()))));
                         }
-                        if (ruleList.get(i).getGvalue() != null &&
-                                ruleList.get(i).getGvalue().compareTo(BigDecimal.ZERO) != 0) {
-                            ruleList.get(i).setGvalue(ruleList.get(i).getGvalue().divide(qtyde));
+                        if (rulesConfigVo.getGvalue() != null &&
+                                rulesConfigVo.getGvalue().compareTo(BigDecimal.ZERO) != 0) {
+                            rulesConfigVo.setGvalue(rulesConfigVo.getGvalue().divide(qtyde));
                         }
-                        if (ruleList.get(i).getDvalue() != null &&
-                                ruleList.get(i).getDvalue().compareTo(BigDecimal.ZERO) != 0) {
-                            ruleList.get(i).setDvalue(ruleList.get(i).getDvalue().divide(qtyde));
+                        if (rulesConfigVo.getDvalue() != null &&
+                                rulesConfigVo.getDvalue().compareTo(BigDecimal.ZERO) != 0) {
+                            rulesConfigVo.setDvalue(rulesConfigVo.getDvalue().divide(qtyde));
                         }
                     } else {
-                        ruleList.get(i).setCvalue(config.getParamvalue());
+                        rulesConfigVo.setCvalue(config.getParamvalue());
                     }
                 }
             }
         }
         if (feeList != null && !feeList.isEmpty()) {
-            for (int i = 0; i < feeList.size(); i++) {
-                Accounttradeconfig config = map.get("fee" + feeList.get(i).getTradefeeid());
+            for (FeesConfigVo feesConfigVo : feeList) {
+                Accounttradeconfig config = map.get("fee" + feesConfigVo.getTradefeeid());
                 if (config != null) {
-                    feeList.get(i).setCrithm(config.getFeealgorithm());
+                    feesConfigVo.setCrithm(config.getFeealgorithm());
                     if (Cude != null && config.getFeealgorithm() == 2) {
                         if (config.getParamvalue() != null
                                 && config.getParamvalue().compareTo(BigDecimal.ZERO) != 0) {
-                            feeList.get(i).setCvalue(config.getParamvalue().divide(Cude));
+                            feesConfigVo.setCvalue(config.getParamvalue().divide(Cude));
                         }
-                        if (feeList.get(i).getExchangevalue() != null
-                                && feeList.get(i).getExchangevalue().compareTo(BigDecimal.ZERO) != 0) {
-                            feeList.get(i).setExchangevalue(feeList.get(i).getExchangevalue().divide(Cude));
+                        if (feesConfigVo.getExchangevalue() != null
+                                && feesConfigVo.getExchangevalue().compareTo(BigDecimal.ZERO) != 0) {
+                            feesConfigVo.setExchangevalue(feesConfigVo.getExchangevalue().divide(Cude));
                         }
-                        if (feeList.get(i).getDvalue() != null
-                                && feeList.get(i).getDvalue().compareTo(BigDecimal.ZERO) != 0) {
-                            feeList.get(i).setDvalue(feeList.get(i).getDvalue().divide(Cude));
+                        if (feesConfigVo.getDvalue() != null
+                                && feesConfigVo.getDvalue().compareTo(BigDecimal.ZERO) != 0) {
+                            feesConfigVo.setDvalue(feesConfigVo.getDvalue().divide(Cude));
                         }
-                        if (feeList.get(i).getGvalue() != null
-                                && feeList.get(i).getGvalue().compareTo(BigDecimal.ZERO) != 0) {
-                            feeList.get(i).setGvalue(feeList.get(i).getGvalue().divide(Cude));
+                        if (feesConfigVo.getGvalue() != null
+                                && feesConfigVo.getGvalue().compareTo(BigDecimal.ZERO) != 0) {
+                            feesConfigVo.setGvalue(feesConfigVo.getGvalue().divide(Cude));
                         }
 
-                        if (feeList.get(i).getMembermaxvalue() != null
-                                && feeList.get(i).getMembermaxvalue().compareTo(BigDecimal.ZERO) != 0) {
-                            feeList.get(i).setMembermaxvalue(feeList.get(i).getMembermaxvalue().divide(Cude));
+                        if (feesConfigVo.getMembermaxvalue() != null
+                                && feesConfigVo.getMembermaxvalue().compareTo(BigDecimal.ZERO) != 0) {
+                            feesConfigVo.setMembermaxvalue(feesConfigVo.getMembermaxvalue().divide(Cude));
                         }
-                        if (feeList.get(i).getMemberminvalue() != null
-                                && feeList.get(i).getMemberminvalue().compareTo(BigDecimal.ZERO) != 0) {
-                            feeList.get(i).setMemberminvalue(feeList.get(i).getMemberminvalue().divide(Cude));
+                        if (feesConfigVo.getMemberminvalue() != null
+                                && feesConfigVo.getMemberminvalue().compareTo(BigDecimal.ZERO) != 0) {
+                            feesConfigVo.setMemberminvalue(feesConfigVo.getMemberminvalue().divide(Cude));
                         }
 
                     } else {
-                        feeList.get(i).setCvalue(config.getParamvalue());
+                        feesConfigVo.setCvalue(config.getParamvalue());
                     }
                 }
             }

+ 17 - 2
mtp3-century/src/main/java/com/muchinfo/mtp3century/service/impl/OrganSonServiceService.java

@@ -437,6 +437,11 @@ public class OrganSonServiceService implements IOrganSonService {
     @Override
     @Transactional(rollbackFor = Exception.class)
     public AjaxResult addsonorgan(OrganAddSonOrganParam param, HttpServletRequest request) {
+        // #6597 管理端】不管是后台注册还是客户端注册,身份证号填写的那一栏,如果涉及到输入字母X,需要固定只能输入大写字母
+        if (param != null && StringUtils.isNotBlank(param.getCardnum())){
+            param.setCardnum(param.getCardnum().toUpperCase());
+        }
+
         //校验唯一性
         List<Useraccount> c2 = iUseraccountMapper.selectList(new QueryWrapper<Useraccount>().eq("userid", createUserid(param.getParentuserid(), param.getUserid())));
         if (CollectionUtils.isNotEmpty(c2)) {
@@ -486,6 +491,11 @@ public class OrganSonServiceService implements IOrganSonService {
     @Override
     @Transactional(rollbackFor = Exception.class)
     public AjaxResult editsonorgan(OrganAddSonOrganParam param, HttpServletRequest request) {
+        // #6597 管理端】不管是后台注册还是客户端注册,身份证号填写的那一栏,如果涉及到输入字母X,需要固定只能输入大写字母
+        if (param != null && StringUtils.isNotBlank(param.getCardnum())){
+            param.setCardnum(param.getCardnum().toUpperCase());
+        }
+
         Systemmanager systemmanager = iSystemmanagerMapper.selectOne(new QueryWrapper<Systemmanager>().eq("LOGINCODE", iCommonService.getUserLoginCode(request)));
         Useraccount organ = iUseraccountMapper.selectOne(new QueryWrapper<Useraccount>().eq("userid", param.getUserid()));
 
@@ -579,6 +589,7 @@ public class OrganSonServiceService implements IOrganSonService {
         //资金账户配置变更  配置业务
         /*if (param.getConfig() != null && param.getConfig().getAccountid() != null) {
             //子账户为  投资者机构所有  关联给投资者使用,,
+
             //此处变更时,记为投资者变更  ,变更表userid填入投资者的userid
             DraftTaAccountConfig config = new DraftTaAccountConfig();
             config.setAccountid(param.getConfig().getAccountid());
@@ -798,7 +809,6 @@ public class OrganSonServiceService implements IOrganSonService {
 
     @Override
     public PageResult<OrganSonTransferResult> queryOrganSonTransfer(OrganSonTransferParam param, HttpServletRequest request) {
-        param.setTransferusertype(2);
         Systemmanager systemmanager = iSystemmanagerMapper.selectOne(new QueryWrapper<Systemmanager>().eq("LOGINCODE", iCommonService.getUserLoginCode(request)));
         if (systemmanager.getReletype() != 1) {
             param.setMemberuserid(systemmanager.getAreauserid());
@@ -808,6 +818,11 @@ public class OrganSonServiceService implements IOrganSonService {
         userAccountVos.getRecords().forEach(a->{
             a.setOutparentusername(iUseraccountMapper.selectOrganName(a.getAreauserid()));
             a.setInuseridname(iUseraccountMapper.selectOrganName(a.getNewareauserid()));
+            if(param.getTransferusertype() == 1){
+                a.setOutmemberusername(iUseraccountMapper.selectOrganName(a.getMemberuserid()));
+                a.setOutinvestorname(iUseraccountMapper.selectOrganName(a.getInvestoruserid()));
+                a.setInmemberusername(iUseraccountMapper.selectOrganName(a.getNewmemberuserid()));
+            }
         });
 
         PageResult<OrganSonTransferResult> pageResult = new PageResult<>();
@@ -864,7 +879,7 @@ public class OrganSonServiceService implements IOrganSonService {
         it.setNewmemberuserid(vo.getInmemberuserid());
         it.setNewbrokeruserid(vo.getInborker());
         it.setOperatorid(systemmanager.getAutoid().toString());
-        it.setTransfertype(vo.getDiversiontype() + 1);
+        it.setTransfertype(vo.getDiversiontype());
         it.setCreatetime(new Date());
         it.setTransferstatus(1);
         it.setTransfermode(vo.getTransfermode());

+ 0 - 2
mtp3-century/src/main/java/com/muchinfo/mtp3century/service/impl/SystemSetUpServiceImpl.java

@@ -138,6 +138,4 @@ public class SystemSetUpServiceImpl implements ISystemSetUpService {
             return AjaxResult.error(Constants.Error_Code_Design, MessageType.QUERY_ERROR_CODE_006.getCode(), request.getHeader("Accept-Language"));
         }
     }
-
-
 }

+ 24 - 4
mtp3-century/src/main/java/com/muchinfo/mtp3century/service/impl/SystemmanagerServiceImpl.java

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.muchinfo.mtp3century.service.IArearoleService;
 import com.muchinfo.mtp3century.service.ICommonService;
 import com.muchinfo.mtp3century.service.ISystemmanagerService;
@@ -420,13 +422,31 @@ public class SystemmanagerServiceImpl extends ServiceImpl<ISystemmanagerMapper,
             syslog.setContent(content);
         if (remark != null)
             syslog.setRemark(remark);
-        if (oldvalue != null)
-            syslog.setOldvalue(oldvalue);
-        if (newvalue != null)
-            syslog.setNewvalue(newvalue);
+        if(oldvalue != null)
+            if (isJsonObject(oldvalue)){
+                syslog.setPrevalue(oldvalue);
+            }else{
+                syslog.setPrevalue("{\"content\":\"" + oldvalue + "\"}");
+            }
+        if(newvalue != null)
+            if (isJsonObject(newvalue)){
+                syslog.setNewvalue(newvalue);
+            }else{
+                syslog.setNewvalue("{\"content\":\"" + newvalue + "\"}");
+            }
         iSystemmanagerlogMapper.insert(syslog);
     }
 
+    private boolean isJsonObject(String str){
+        ObjectMapper objectMapper = new ObjectMapper();
+        try {
+            JsonNode jsonNode = objectMapper.readTree(str); // 解析字符串
+            return jsonNode.isObject();  // 检查解析后的节点是否为 JSON 对象
+        } catch (Exception e) {
+            return false;  // 解析失败,说明不是 JSON
+        }
+    }
+
     private AjaxResult dealRoleMsg(SystemUserVo systemUserVo, Systemmanager addUser, HttpServletRequest request) {
         if (!StringUtils.isEmpty(systemUserVo.getRoleId())) {
             String r[] = systemUserVo.getRoleId().split(",");

+ 1 - 2
mtp3-century/src/main/java/com/muchinfo/mtp3century/service/impl/TaaccountServiceImpl.java

@@ -364,7 +364,6 @@ public class TaaccountServiceImpl extends ServiceImpl<ITaaccountMapper, Taaccoun
                     return AjaxResult.error(Constants.Error_Code_Design, MessageType.MESSAGE_ERROR_CODE_SYSTEM005.getCode(), request.getHeader("Accept-Language"));
                 }
             } catch (Exception e) {
-                e.printStackTrace();
                 log.error("mq接收出入金返回信息失败,失败信息:" + e);
             } finally {
                 SerialNumberUtils.lockMap.remove(uuid);
@@ -559,7 +558,7 @@ public class TaaccountServiceImpl extends ServiceImpl<ITaaccountMapper, Taaccoun
                         return AjaxResult.error(Constants.Error_Code_Design, MessageType.INVESTOR_ERROR_CODE_005.getCode(), request.getHeader("Accept-Language"));
                     }
                 } catch (InterruptedException e) {
-                    e.printStackTrace();
+                    log.error("mq接收出入金返回信息失败,失败信息:" + e);
                 } finally {
                     SerialNumberUtils.lockMap.remove(accountuuid);
                 }

+ 189 - 7
mtp3-century/src/main/java/com/muchinfo/mtp3century/service/impl/UseraccountServiceImpl.java

@@ -7,6 +7,9 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.muchinfo.mtp.proto.AkernelMI1;
+import com.muchinfo.mtp.proto.Common;
+import com.muchinfo.mtp.proto.ShortMessageMtp1;
 import com.muchinfo.mtp.proto.convert.ServiceMemoryCache;
 import com.muchinfo.mtp3century.exception.GlobalException;
 import com.muchinfo.mtp3century.service.ICommonService;
@@ -14,19 +17,18 @@ import com.muchinfo.mtp3century.service.ISendMsgService;
 import com.muchinfo.mtp3century.service.ISystemmanagerService;
 import com.muchinfo.mtp3century.service.IUseraccountService;
 import com.muchinfo.mtp3century.utils.RedisServiceUtil;
-import com.muchinfo.mtp3common.enumtype.Constants;
-import com.muchinfo.mtp3common.enumtype.MessageType;
-import com.muchinfo.mtp3common.enumtype.SysConstants;
-import com.muchinfo.mtp3common.enumtype.SysEnums;
+import com.muchinfo.mtp3common.enumtype.*;
 import com.muchinfo.mtp3common.utils.*;
-import com.muchinfo.mtp3common.vo.AjaxResult;
-import com.muchinfo.mtp3common.vo.ExportResult;
-import com.muchinfo.mtp3common.vo.PageResult;
+import com.muchinfo.mtp3common.vo.*;
 import com.muchinfo.mtp3interface.mapper.*;
 import com.muchinfo.mtp3pojos.entity.*;
+import com.muchinfo.mtp3pojos.vo.ProtoErrorCodes;
 import com.muchinfo.mtp3pojos.vo.investor.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.amqp.core.Message;
+import org.springframework.amqp.core.MessageProperties;
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -107,6 +109,13 @@ public class UseraccountServiceImpl extends ServiceImpl<IUseraccountMapper, User
     private IEnumdicitemMapper iEnumdicitemMapper;
     @Resource
     private IAccounttradeconfigMapper iAccounttradeconfigMapper;
+    @Resource
+    private IUsercancelapplyMapper iUsercancelapplyMapper;
+    @Resource
+    private RabbitTemplate rabbitTemplate;
+    @Resource
+    private IBankAccountsignMapper iBankAccountsignMapper;
+
 
     @Override
     public PageResult<DealerQueryResult> queryOrganPage(DealerQueryParam dealerQueryParam, HttpServletRequest request) {
@@ -1588,6 +1597,179 @@ public class UseraccountServiceImpl extends ServiceImpl<IUseraccountMapper, User
         return AjaxResult.success(Constants.Success_Code_Design, MessageType.MESSAGE_CODE_SYSTEM001.getCode(), request.getHeader("Accept-Language"), result);
     }
 
+    @Override
+    public PageResult<InvestorCancelApplyResult> usercancelapply(InvestorCancelApplyParam param, HttpServletRequest request) {
+        IPage<InvestorCancelApplyResult> page = new Page<>(param.getPageNum(), param.getPageSize());
+        IPage<InvestorCancelApplyResult> dealerQueryResults = iUseraccountMapper.usercancelapply(page, param);
+        PageResult<InvestorCancelApplyResult> pageResult = new PageResult<>();
+        pageResult.setCode(Constants.Success_Code_Design);
+        pageResult.setMessage(AjaxResult.dealMsg(MessageType.MESSAGE_CODE_SYSTEM001.getCode(), request.getHeader("Accept-Language")));
+        pageResult.setPages(dealerQueryResults.getPages());
+        pageResult.setCurrent(dealerQueryResults.getCurrent());
+        pageResult.setTotal(dealerQueryResults.getTotal());
+        pageResult.setPageSize(dealerQueryResults.getSize());
+        pageResult.setData(dealerQueryResults.getRecords());
+        return pageResult;
+    }
+
+    @Override
+    public AjaxResult cancelview(Long autoid, HttpServletRequest request) {
+        Usercancelapply result = iUsercancelapplyMapper.selectOne(new QueryWrapper<Usercancelapply>().eq("autoid", autoid));
+        Systemmanager systemmanager = iSystemmanagerMapper.selectOne(new QueryWrapper<Systemmanager>().eq("LOGINCODE", iCommonService.getUserLoginCode(request)));
+        if(!iCommonService.checkUserAccountRole(systemmanager, result.getUserid())){
+            return AjaxResult.error(Constants.Error_Code_Design, MessageType.MESSAGE_ERROR_CODE_SYSTEM003.getCode(), request.getHeader("Accept-Language"));
+        }
+        return AjaxResult.success(Constants.Success_Code_Design, MessageType.MESSAGE_CODE_SYSTEM001.getCode(), request.getHeader("Accept-Language"), result);
+    }
+
+    @Override
+    public AjaxResult cancelaudit(Long autoid, Integer auditflag, String msg, HttpServletRequest request) {
+        Usercancelapply temp = iUsercancelapplyMapper.selectOne(new QueryWrapper<Usercancelapply>().eq("autoid", autoid));
+        Systemmanager systemmanager = iSystemmanagerMapper.selectOne(new QueryWrapper<Systemmanager>().eq("LOGINCODE", iCommonService.getUserLoginCode(request)));
+        if(!iCommonService.checkUserAccountRole(systemmanager, temp.getUserid())){
+            return AjaxResult.error(Constants.Error_Code_Design, MessageType.MESSAGE_ERROR_CODE_SYSTEM003.getCode(), request.getHeader("Accept-Language"));
+        }
+        if(!Objects.equals(temp.getHandlestatus(), SysEnums.AccountOffStatusEnum.PENDING.getType())){
+            return AjaxResult.success(Constants.Success_Code_Design, MessageType.MESSAGE_CODE_SYSTEM022.getCode(), request.getHeader("Accept-Language"));
+        }
+
+        //判断资金账户
+        Taaccount ta = iTaaccountMapper.selectOne(new QueryWrapper<Taaccount>().eq("userid", temp.getUserid()));
+        if(ta == null){
+            return AjaxResult.success(Constants.Success_Code_Design, MessageType.MESSAGE_CODE_SYSTEM023.getCode(), request.getHeader("Accept-Language"));
+        }
+
+        Useraccount ua = iUseraccountMapper.selectOne(new QueryWrapper<Useraccount>().eq("userid", temp.getUserid()));
+
+        //审核拒绝
+        if(auditflag == 2){
+            temp.setHandlestatus(SysEnums.AccountOffStatusEnum.REFUSED.getType());
+            temp.setApplystatus(SysEnums.AccountOffApplyEnum.FINISH.getType());
+            temp.setAuditid(systemmanager.getAutoid());
+            temp.setAudittime(new Date());
+            temp.setAuditremark(msg);
+            iUsercancelapplyMapper.update(temp,new QueryWrapper<Usercancelapply>().eq("autoid", temp.getAutoid()));
+
+            sendSMS(ua.getAccountname(), temp.getUserid(), 15);
+            return AjaxResult.success(Constants.Success_Code_Design, MessageType.MESSAGE_CODE_SYSTEM024.getCode(), request.getHeader("Accept-Language"));
+        }
+
+        //校验账户类型
+        if(ua.getUsertype() != 5){
+            return AjaxResult.success(Constants.Success_Code_Design, MessageType.MESSAGE_CODE_SYSTEM025.getCode(), request.getHeader("Accept-Language"));
+        }
+
+        //判断资金账户签约信息
+        BankAccountsign sign = iBankAccountsignMapper.selectOne(new QueryWrapper<BankAccountsign>().eq("accountcode", ta.getAccountid().toString()));
+        if(sign != null && sign.getSignstatus() != 1 && sign.getSignstatus() != 7){
+            return AjaxResult.success(Constants.Success_Code_Design, MessageType.MESSAGE_CODE_SYSTEM026.getCode(), request.getHeader("Accept-Language"));
+        }
+
+        //审核通过
+        //判断是否是干净账户
+        if(ta.getTradestatus() != 7){
+            Long accountuuid = SerialNumberUtils.getNewSerialNumber(SerialNumberUtils.prefix_account);
+            AkernelMI1.AccountFundInfoReq.Builder accountbuilder = AkernelMI1.AccountFundInfoReq.newBuilder();
+            Common.MessageHead.Builder accounthd = Common.MessageHead.newBuilder();
+            accounthd.setAccountID(ta.getAccountid());
+            accounthd.setClientTime(System.currentTimeMillis());
+            accounthd.setResponseTopic(SysConstants.RabbitMoneyReqKey);
+            accounthd.setFunCode(FunCodeConstants.FunCode_Trade_AccountFundInfoReq);
+            accountbuilder.setOrderId(accountuuid);
+            accountbuilder.setAccountId(ta.getAccountid());
+            accountbuilder.setQueryBitMask(4);
+            byte[] accountbody = ProtoHelper.getNTAS(accountbuilder.build().toByteArray(),
+                    FunCodeConstants.FunCode_Trade_AccountFundInfoReq);
+            //卡住
+            Calculator accountca = new Calculator(accountuuid);
+            SerialNumberUtils.lockMap.put(accountuuid, accountca);
+            rabbitTemplate.send(SysConstants.RabbitMoneyReqKey,new Message(accountbody, new MessageProperties()));
+
+            synchronized(accountca){
+                try {
+                    accountca.wait(6000);
+                    Object o = accountca.obj;
+                    if(o != null){
+                        AkernelMI1.AccountFundInfoRsp accountrsp = (AkernelMI1.AccountFundInfoRsp)o;
+                        if(accountrsp.getRetCode() == 0){
+                            if(accountrsp.getIsCleanAccount() == 1){
+                                //干净账户
+                            }else{
+                                return AjaxResult.error(Constants.Error_Code_Design, MessageType.INVESTOR_ERROR_CODE_004.getCode(), request.getHeader("Accept-Language"));
+                            }
+                        } else {
+                            return AjaxResult.error(Constants.Error_Code_Design, "[" + accountrsp.getRetCode() + "]" + ProtoErrorCodes.resultMsg(accountrsp.getRetCode()), "");
+                        }
+                    } else {
+                        return AjaxResult.error(Constants.Error_Code_Design, MessageType.INVESTOR_ERROR_CODE_005.getCode(), request.getHeader("Accept-Language"));
+                    }
+                } catch (InterruptedException e) {
+                    log.error("mq接收出入金返回信息失败,失败信息:" + e);
+                }finally {
+                    SerialNumberUtils.lockMap.remove(accountuuid);
+                }
+            }
+        }
+        temp.setApplystatus(SysEnums.AccountOffApplyEnum.HANDLING.getType());
+        temp.setAuditremark(msg);
+        iUsercancelapplyMapper.update(temp,new QueryWrapper<Usercancelapply>().eq("autoid", temp.getAutoid()));
+
+        //判断并发送积分
+        //result = sendClearScore(temp, ta, user);
+
+        // 发送用户注销消息给中心\银行接口
+        List<Taaccount> tas = iTaaccountMapper.selectList(new QueryWrapper<Taaccount>()
+                .eq("userid", temp.getUserid())
+                .eq("ismain", 1));
+        iSendMsgService.sendM2BUnregistCustomerInfo(tas);
+
+        /*if(auditflag == 1){
+            if(result.get("userid") != null && result.get("accountid") != null){
+                sendMsgService.sendUserChangeMsg(
+                        Long.parseLong(result.get("accountid").toString()),
+                        Long.parseLong(result.get("userid").toString()),
+                        SysEnums.UserOperateTypeEnum.DEL.getType(),
+                        SysEnums.AccountOperateTypeEnum.DEL.getType(),
+                        SysEnums.NotifyModeEnum.UNICAST.getType());
+
+                List<Long> loginids = userCancelApplyService.queryLoginidByUserid(Long.parseLong(result.get("userid").toString()));
+                if(loginids != null && loginids.size() > 0){
+                    Set<Long> set_logid = new HashSet<>();
+                    set_logid.addAll(loginids);
+                    sendMsgService.sendLoginMsg(set_logid, SysEnums.UserOperateTypeEnum.DEL.getType(), SysEnums.NotifyModeEnum.UNICAST.getType());
+                }
+            }
+        }*/
+        return AjaxResult.success(Constants.Success_Code_Design, MessageType.MESSAGE_CODE_SYSTEM001.getCode(), request.getHeader("Accept-Language"));
+    }
+
+    private void sendSMS(String accountname, Long userid, int templateid){
+        Userinfo info = iUserinfoMapper.selectOne(new QueryWrapper<Userinfo>().eq("userid", userid));
+        if(info == null || info.getMobile() == null)
+            return;
+        ShortMessageMtp1.ShortMsgSendReq.Builder builder = ShortMessageMtp1.ShortMsgSendReq.newBuilder();
+        builder.setMsgType(2);
+        builder.setTemplateID(templateid);
+        builder.setPriority(2);
+        builder.setScheduledTime("");
+        builder.addRecvPhone(EncryptionUtils.decryptForAES(info.getMobile()));
+        builder.addParamValues(accountname);
+
+        Common.MessageHead.Builder headBuil = Common.MessageHead.newBuilder();
+        headBuil.setFunCode(FunCodeConstants.FunCode_Trade_ShortMsgSendReq);
+        builder.setHeader(headBuil.build());
+        byte[] body = ProtoHelper.getNTAS(builder.build().toByteArray(), FunCodeConstants.FunCode_Trade_ShortMsgSendReq);
+        MessageProperties msgProperties = new MessageProperties();
+        msgProperties.setHeader("messageType", "protoBuf");
+        rabbitTemplate.send(SysConstants.RabbitShortMessage,new Message(body, msgProperties));
+    }
+
+    @Override
+    public AjaxResult<UserAccountDetailVo> getUserAccountDetail(Long userid, HttpServletRequest request) {
+        UserAccountDetailVo userAccountDetailVo = iUseraccountMapper.selectDetail(userid);
+        return AjaxResult.success(Constants.Success_Code_Design, MessageType.MESSAGE_CODE_SYSTEM001.getCode(), request.getHeader("Accept-Language"), userAccountDetailVo);
+    }
+
     private List<RulesConfigVo> getTradeRuleDescriptions(PersonalizationDelParam param) {
         List<RulesConfigVo> list = iUseraccountMapper.getTradeRuleDescriptions(param);
 

+ 28 - 1
mtp3-century/src/main/java/com/muchinfo/mtp3century/service/impl/WskhUserinfoServiceImpl.java

@@ -155,6 +155,11 @@ public class WskhUserinfoServiceImpl extends ServiceImpl<IWskhUserinfoMapper, Ws
 
     @Override
     public AjaxResult addAreainfo(WskhUserinfo vo, Systemmanager systemmanager, HttpServletRequest request) {
+        // #6597 管理端】不管是后台注册还是客户端注册,身份证号填写的那一栏,如果涉及到输入字母X,需要固定只能输入大写字母
+        if (vo != null && StringUtils.isNotBlank(vo.getCardnum())){
+            vo.setCardnum(vo.getCardnum().toUpperCase());
+        }
+
         List<WskhBlacklist> wskhBlacklists = iWskhBlacklistMapper.selectList(new QueryWrapper<WskhBlacklist>().eq("CARDTYPE", vo.getCardtype()).eq("CARDNUM", vo.getCardnum()));
         if (!CollectionUtils.isEmpty(wskhBlacklists)) {
             return AjaxResult.error(Constants.Error_Code_Design, MessageType.ORGAN_ERROR_CODE_012.getCode(), request.getHeader("Accept-Language"));
@@ -195,6 +200,12 @@ public class WskhUserinfoServiceImpl extends ServiceImpl<IWskhUserinfoMapper, Ws
 
     @Override
     public AjaxResult updateAreainfo(WskhUserinfo vo, Systemmanager systemmanager, HttpServletRequest request) {
+
+        // #6597 管理端】不管是后台注册还是客户端注册,身份证号填写的那一栏,如果涉及到输入字母X,需要固定只能输入大写字母
+        if (vo != null && StringUtils.isNotBlank(vo.getCardnum())){
+            vo.setCardnum(vo.getCardnum().toUpperCase());
+        }
+
         List<WskhBlacklist> wskhBlacklists = iWskhBlacklistMapper.selectList(new QueryWrapper<WskhBlacklist>()
                 .eq("CARDTYPE", vo.getCardtype())
                 .eq("CARDNUM", vo.getCardnum()));
@@ -344,6 +355,11 @@ public class WskhUserinfoServiceImpl extends ServiceImpl<IWskhUserinfoMapper, Ws
 
     @Override
     public AjaxResult editWskhUserinfo(WskhUserinfo currentVo, Systemmanager systemmanager, HttpServletRequest request) {
+        // #6597 管理端】不管是后台注册还是客户端注册,身份证号填写的那一栏,如果涉及到输入字母X,需要固定只能输入大写字母
+        if (currentVo != null && StringUtils.isNotBlank(currentVo.getCardnum())){
+            currentVo.setCardnum(currentVo.getCardnum().toUpperCase());
+        }
+
         WskhUserinfo base = iWskhUserinfoMapper.selectOne(new QueryWrapper<WskhUserinfo>().eq("USERID", currentVo.getUserid()));
         if (!checkWskhAccountRole(systemmanager, currentVo.getUserid())) {
             return AjaxResult.error(Constants.Error_Code_Design, MessageType.MESSAGE_ERROR_CODE_SYSTEM003.getCode(), request.getHeader("Accept-Language"));
@@ -382,6 +398,11 @@ public class WskhUserinfoServiceImpl extends ServiceImpl<IWskhUserinfoMapper, Ws
 
     @Override
     public AjaxResult addWskhUserinfo(WskhUserinfo currentVo, Systemmanager systemmanager, HttpServletRequest request) {
+        // #6597 管理端】不管是后台注册还是客户端注册,身份证号填写的那一栏,如果涉及到输入字母X,需要固定只能输入大写字母
+        if (currentVo != null && StringUtils.isNotBlank(currentVo.getCardnum())){
+            currentVo.setCardnum(currentVo.getCardnum().toUpperCase());
+        }
+
         List<WskhBlacklist> wskhBlacklists = iWskhBlacklistMapper.selectList(new QueryWrapper<WskhBlacklist>()
                 .eq("CARDTYPE", currentVo.getCardtype())
                 .eq("CARDNUM", currentVo.getCardnum()));
@@ -586,10 +607,16 @@ public class WskhUserinfoServiceImpl extends ServiceImpl<IWskhUserinfoMapper, Ws
     }
 
     public void passauto(WskhUserinfo wui, Long userid, String countStr, Systemmanager user, InvestorProcessParam param) {
-
+        //系统默认登录密码
         String lpwd = redisServiceUtil.getCacheMapValue(Constants.REDIS_HEADER_SYSPARAM, "046");
+        //系统默认资金密码
         String zpwd = redisServiceUtil.getCacheMapValue(Constants.REDIS_HEADER_SYSPARAM, "047");
 
+        if (StringUtils.isNotBlank(wui.getLoginpwd())){
+            // 开户信息有密码时w使用其密码
+            lpwd = EncryptUtilForSearch.Base64ToString(wui.getLoginpwd());
+        }
+
         Useraccount ua = new Useraccount();
         ua.setUserid(userid);
         ua.setUsertype(5);

+ 5 - 0
mtp3-century/src/main/resources/mapper/BankAccountoutinapplyMapper.xml

@@ -154,4 +154,9 @@
             </if>
         </where>
     </select>
+    <select id="queryCusbanksForArea" resultType="com.muchinfo.mtp3pojos.entity.BankCusbankinfo">
+        select bc.* from tce_areacusbankconfig t
+        inner join bank_cusbankinfo bc on t.cusbankid = bc.cusbankid
+        where t.areauserid=${areauserid} and t.configtype=${configtype}
+    </select>
 </mapper>

+ 21 - 0
mtp3-century/src/main/resources/mapper/UseraccountMapper.xml

@@ -895,6 +895,9 @@
                 and (t.memberuserid = #{vo.outmemberuserid} or t.areauserid = #{vo.outmemberuserid}
                 or t.brokeruserid = #{vo.outmemberuserid})
             </if>
+            <if test="vo.outinvestor != null and vo.outinvestor!=0">
+                and t.investoruserid = #{vo.outinvestor}
+            </if>
             <if test="vo.inuserid != null and vo.inuserid!=0">
                 and (t.newmemberuserid = #{vo.inuserid} or t.newareauserid = #{vo.inuserid}
                 or t.newbrokeruserid = #{vo.inuserid})
@@ -965,4 +968,22 @@
             or(ua.userid like '%'||#{searchcode}||'%'))
         </if>
     </select>
+    <select id="usercancelapply" resultType="com.muchinfo.mtp3pojos.vo.investor.InvestorCancelApplyResult">
+        <![CDATA[select sm.logincode auditlogincode,
+		sm.username auditusername,
+		ua.accountname,
+		ua.accountstatus,
+		uca.* from USERCANCELAPPLY uca
+		left join systemmanager sm on sm.autoid = uca.auditid
+		left join useraccount ua on uca.userid = ua.userid]]>
+        <where>
+            <if test="vo.accountname != null and vo.accountname != ''">
+                <![CDATA[and (ua.accountname like '%${vo.accountname}%' escape '/' or uca.userid like '%${vo.accountname}%' escape '/')]]>
+            </if>
+            <if test="vo.handlestatus != null">
+                <![CDATA[and uca.handlestatus in (${vo.handlestatus})]]>
+            </if>
+        </where>
+        <![CDATA[order by uca.handlestatus asc,uca.applytime asc]]>
+    </select>
 </mapper>

+ 5 - 0
mtp3-century/src/main/resources/message_en.properties

@@ -18,6 +18,11 @@ message_code_system018=The contact information for performance has been sent. Pl
 message_code_system019=Execution succeeded
 message_code_system020=Batch import of position transfer successful
 message_code_system021=Submitted successfully, automatic transfer will be performed after market closure
+message_code_system022=The data has been reviewed or is currently being processed
+message_code_system023=No trader fund account found
+message_code_system024=Review Rejected
+message_code_system025=Non trading account cannot be closed for review
+message_code_system026=The fund account has not been terminated and cannot be closed
 
 message_error_code_system001=Token invalid, please log in again!
 message_error_code_system002=operation failed

+ 5 - 0
mtp3-century/src/main/resources/message_th.properties

@@ -18,6 +18,11 @@ message_code_system018=ข้อมูลการติดต่อการป
 message_code_system019=ความสำเร็จในการดำเนินการ
 message_code_system020=การนำเข้าแบทช์การเปิดสถานะสำเร็จแล้ว
 message_code_system021=ส่งเรียบร้อยแล้วโอนเงินโดยอัตโนมัติหลังจากปิดตลาด
+message_code_system022=ข้อมูลนี้ได้รับการตรวจสอบแล้วเสร็จหรือประมวลผล
+message_code_system023=ไม่พบบัญชีเงินของผู้ค้า
+message_code_system024=การปฏิเสธการตรวจสอบ
+message_code_system025=บัญชีที่ไม่ใช่ตัวแทนจำหน่ายและไม่สามารถตรวจสอบได้โดยผู้ขาย
+message_code_system026=บัญชีเงินไม่ถูกยกเลิก ขายไม่ออก
 
 message_error_code_system001=โทเค็นล้มเหลวโปรดเข้าสู่ระบบอีกครั้ง!
 message_error_code_system002=การดำเนินการล้มเหลว!

+ 5 - 0
mtp3-century/src/main/resources/message_zh-CN.properties

@@ -18,6 +18,11 @@ message_code_system018=履约联络信息已发送,稍后请重新查询
 message_code_system019=执行成功
 message_code_system020=批量导入持仓过户成功
 message_code_system021=提交成功,闭市后自动进行转移
+message_code_system022=该数据已经审核完成或处理中
+message_code_system023=没有找到交易商资金账户
+message_code_system024=审核拒绝
+message_code_system025=非交易商账户,不能销户审核
+message_code_system026=资金账户未解约,不能销户
 
 message_error_code_system001=令牌失效,请重新登录!
 message_error_code_system002=操作失败

+ 5 - 0
mtp3-century/src/main/resources/message_zh-HK.properties

@@ -18,6 +18,11 @@ message_code_system018=履約聯絡資訊已發送,稍後請重新查詢
 message_code_system019=執行成功
 message_code_system020=批量導入持倉過戶成功
 message_code_system021=提交成功,閉市後自動進行轉移
+message_code_system022=該數據已經稽核完成或處理中
+message_code_system023=沒有找到交易商資金帳戶
+message_code_system024=稽核拒絕
+message_code_system025=非交易商帳戶,不能銷戶稽核
+message_code_system026=資金帳戶未解約,不能銷戶
 
 message_error_code_system001=權杖失效,請重新登入!
 message_error_code_system002=操作失敗

+ 5 - 0
mtp3-century/src/main/resources/message_zh-TW.properties

@@ -18,6 +18,11 @@ message_code_system018=履約聯絡資訊已發送,稍後請重新查詢
 message_code_system019=執行成功
 message_code_system020=批量導入持倉過戶成功
 message_code_system021=提交成功,閉市後自動進行轉移
+message_code_system022=該數據已經稽核完成或處理中
+message_code_system023=沒有找到交易商資金帳戶
+message_code_system024=稽核拒絕
+message_code_system025=非交易商帳戶,不能銷戶稽核
+message_code_system026=資金帳戶未解約,不能銷戶
 
 message_error_code_system001=權杖失效,請重新登入!
 message_error_code_system002=操作失敗

+ 5 - 0
mtp3-common/src/main/java/com/muchinfo/mtp3common/enumtype/MessageType.java

@@ -25,6 +25,11 @@ public enum MessageType {
     MESSAGE_CODE_SYSTEM019("message_code_system019", "执行成功"),
     MESSAGE_CODE_SYSTEM020("message_code_system020", "批量导入持仓过户成功"),
     MESSAGE_CODE_SYSTEM021("message_code_system021", "提交成功,闭市后自动进行转移"),
+    MESSAGE_CODE_SYSTEM022("message_code_system022", "该数据已经审核完成或处理中"),
+    MESSAGE_CODE_SYSTEM023("message_code_system023", "没有找到交易商资金账户"),
+    MESSAGE_CODE_SYSTEM024("message_code_system024", "审核拒绝"),
+    MESSAGE_CODE_SYSTEM025("message_code_system025", "非交易商账户,不能销户审核"),
+    MESSAGE_CODE_SYSTEM026("message_code_system026", "资金账户未解约,不能销户"),
 
     MESSAGE_ERROR_CODE_SYSTEM001("message_error_code_system001", "令牌失效,请重新登录!"),
     MESSAGE_ERROR_CODE_SYSTEM002("message_error_code_system002", "操作失败"),

+ 143 - 0
mtp3-common/src/main/java/com/muchinfo/mtp3common/utils/EncryptUtilForSearch.java

@@ -0,0 +1,143 @@
+package com.muchinfo.mtp3common.utils;
+
+
+import javax.crypto.Cipher;
+import javax.crypto.SecretKey;
+import javax.crypto.SecretKeyFactory;
+import javax.crypto.spec.DESKeySpec;
+import javax.crypto.spec.IvParameterSpec;
+import java.util.Base64;
+import java.util.List;
+
+;
+
+public class EncryptUtilForSearch {
+	
+	private static final String PRIVATE_KEY = "Ub$kl^P3";
+	
+	public static <T> T decodeObject(T t){
+		try {
+			EncryptUtilForSearch.doEncryptionAndDecode(t,false);
+		} catch (NullPointerException e) {
+			throw new RuntimeException("Object为Null,无法解密!");
+		} catch (Exception e) {
+			throw new RuntimeException("(" + t.getClass() + ":" + t.toString() + ")解密失败!");
+		}
+		return t;
+	}
+	
+	public static <T> T encryptObject(T t){
+		try {
+			EncryptUtilForSearch.doEncryptionAndDecode(t,true);
+		} catch (NullPointerException e) {
+			throw new RuntimeException("Object为Null,无法加密!");
+		} catch (Exception e) {
+			throw new RuntimeException("(" + t.getClass() + ":" + t.toString() + ")加密失败!");
+		}
+		return t;
+	}
+	
+	public static void doEncryptionAndDecode(Object o, boolean flag)throws Exception{
+		doEncryptionAndDecode((List<?>) o, flag, PRIVATE_KEY);
+	}
+	
+	public static void doEncryptionAndDecode(List<?> list, boolean flag)throws Exception{
+		doEncryptionAndDecode(list, flag, PRIVATE_KEY);
+	}
+	
+	public static String decrypt(String message){
+		try {
+			return decrypt(message, PRIVATE_KEY);
+		} catch (Exception e) {
+			throw new RuntimeException("解密失败:" + message);
+		}
+	}
+	
+	public static String encrypt(String message){
+		try {
+			return encrypt(message, PRIVATE_KEY);
+		} catch (Exception e) {
+			throw new RuntimeException("加密失败:" + message);
+		}
+	}
+	
+	/**
+	 * 终端传来的是2次加密的,所以要进行二次解密(如123123加密为MTIzMTIz, MTIzMTIz再加密为 TVRJek1USXo=)
+	 * @param base64 
+	 * @return
+	 */
+	public static String Base64ToString(String base64){
+		try {
+			byte[] decoded = Base64.getDecoder().decode(base64);
+	    	String encoder = new String(Base64.getDecoder().decode(new String(decoded)));
+	    	return encoder;
+		} catch (Exception e) {
+			throw new RuntimeException("解密失败:" + base64);
+		}
+		
+	}
+	
+	/**
+	 * 
+	* <b>Summary: </b>
+	*     doEncryptionAndDecode(根据注解进行集合对象属性加解密)
+	* @param list
+	* @param flag true加密 false解密
+	* @param securityKey
+	* @throws Exception 
+	* @return void
+	 */
+	private static void doEncryptionAndDecode(List<?> list, boolean flag, String securityKey)throws Exception{
+		for (Object o : list) {
+			doEncryptionAndDecode(o, flag);
+		}
+	}
+	
+	private static String encrypt(String message, String key) throws Exception {
+        Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
+
+        DESKeySpec desKeySpec = new DESKeySpec(key.getBytes("UTF-8"));
+
+        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
+        SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
+
+//        printHexString("", secretKey.toString().getBytes());
+        IvParameterSpec iv = new IvParameterSpec(key.getBytes("UTF-8"));
+        cipher.init(Cipher.ENCRYPT_MODE, secretKey, iv);
+
+        return encodeBase64(cipher.doFinal(message.getBytes("UTF-8")));
+    }
+
+	private static String decrypt(String message, String key) throws Exception {
+        byte[] bytesrc = decodeBase64(message);//convertHexString(message);
+        Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
+        DESKeySpec desKeySpec = new DESKeySpec(key.getBytes("UTF-8"));
+        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
+        SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
+
+        IvParameterSpec iv = new IvParameterSpec(key.getBytes("UTF-8"));
+        cipher.init(Cipher.DECRYPT_MODE, secretKey, iv);
+
+        byte[] retByte = cipher.doFinal(bytesrc);
+        return new String(retByte);
+    }
+    
+	private static String encodeBase64(byte[] b) {
+        return Base64.getEncoder().encodeToString(b);
+    }
+
+	private static byte[] decodeBase64(String base64String) {
+        return Base64.getDecoder().decode(base64String);
+    }
+	
+	public static String toHexString(byte b[]) {
+        StringBuffer hexString = new StringBuffer();
+        for (int i = 0; i < b.length; i++) {
+            String plainText = Integer.toHexString(0xff & b[i]);
+            if (plainText.length() < 2)
+                plainText = "0" + plainText;
+            hexString.append(plainText);
+        }
+        return hexString.toString();
+    }
+}

+ 3 - 0
mtp3-interface/src/main/java/com/muchinfo/mtp3interface/mapper/IBankAccountoutinapplyMapper.java

@@ -3,6 +3,7 @@ package com.muchinfo.mtp3interface.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.muchinfo.mtp3pojos.entity.BankAccountoutinapply;
+import com.muchinfo.mtp3pojos.entity.BankCusbankinfo;
 import com.muchinfo.mtp3pojos.vo.bankaccountsign.PutOrInAmountQueryParam;
 import com.muchinfo.mtp3pojos.vo.bankaccountsign.PutOrInAmountQueryResult;
 import com.muchinfo.mtp3pojos.vo.bankaccountsign.PutOrInAmountQueryResultDetail;
@@ -27,4 +28,6 @@ public interface IBankAccountoutinapplyMapper extends BaseMapper<BankAccountouti
     List<PutOrInAmountQueryResult> queryPutOrIn(@Param("vo")PutOrInAmountQueryParam param);
 
     PutOrInAmountQueryResultDetail queryById(@Param("accountcode")String accountcode,@Param("cusbankid")String cusbankid,@Param("tradedate")String tradedate,@Param("exchticket")String exchticket);
+
+    List<BankCusbankinfo> queryCusbanksForArea(@Param("areauserid")Long userid,@Param("configtype") int configtype);
 }

+ 2 - 0
mtp3-interface/src/main/java/com/muchinfo/mtp3interface/mapper/IUseraccountMapper.java

@@ -100,4 +100,6 @@ public interface IUseraccountMapper extends BaseMapper<Useraccount> {
     void deleteSubAreaGroupDetailByUserid(Long userid);
 
     List<OrganSelectResult> querySonOrganPageByLevel(Integer subarealevel, String searchcode);
+
+    IPage<InvestorCancelApplyResult> usercancelapply(IPage<InvestorCancelApplyResult> page, @Param("vo") InvestorCancelApplyParam param);
 }

+ 16 - 0
mtp3-interface/src/main/java/com/muchinfo/mtp3interface/mapper/IUsercancelapplyMapper.java

@@ -0,0 +1,16 @@
+package com.muchinfo.mtp3interface.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.muchinfo.mtp3pojos.entity.Usercancelapply;
+
+/**
+ * <p>
+ * 用户销户申请表 Mapper 接口
+ * </p>
+ *
+ * @author XKF
+ * @since 2025-01-09
+ */
+public interface IUsercancelapplyMapper extends BaseMapper<Usercancelapply> {
+
+}

+ 76 - 0
mtp3-pojos/src/main/java/com/muchinfo/mtp3pojos/entity/Usercancelapply.java

@@ -0,0 +1,76 @@
+package com.muchinfo.mtp3pojos.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+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.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * <p>
+ * 用户销户申请表
+ * </p>
+ *
+ * @author XKF
+ * @since 2025-01-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("USERCANCELAPPLY")
+@ApiModel(value="Usercancelapply对象", description="用户销户申请表")
+public class Usercancelapply extends Model<Usercancelapply> {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "流水号(AutoID)")
+    private Long autoid;
+
+    @ApiModelProperty(value = "用户ID")
+    @TableField("USERID")
+    private Long userid;
+
+    @ApiModelProperty(value = "图片地址")
+    @TableField("IMAGEURL")
+    private String imageurl;
+
+    @ApiModelProperty(value = "申请状态 - 0:待处理 1:处理中 2:完成")
+    @TableField("APPLYSTATUS")
+    private Integer applystatus;
+
+    @ApiModelProperty(value = "申请时间")
+    @TableField("APPLYTIME")
+    private Date applytime;
+
+    @ApiModelProperty(value = "审核人")
+    @TableField("AUDITID")
+    private Long auditid;
+
+    @ApiModelProperty(value = "审核时间")
+    @TableField("AUDITTIME")
+    private Date audittime;
+
+    @ApiModelProperty(value = "审核备注")
+    @TableField("AUDITREMARK")
+    private String auditremark;
+
+    @ApiModelProperty(value = "处理状态 -  0:待审核 1:审核通过 2:审核拒绝 3:处理中")
+    @TableField("HANDLESTATUS")
+    private Integer handlestatus;
+
+
+    @Override
+    public Serializable pkVal() {
+        return this.autoid;
+    }
+
+}

+ 28 - 0
mtp3-pojos/src/main/java/com/muchinfo/mtp3pojos/vo/investor/InvestorCancelApplyParam.java

@@ -0,0 +1,28 @@
+package com.muchinfo.mtp3pojos.vo.investor;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Builder
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@ApiModel(value="InvestorCancelApplyParam对象", description="交易商销户审核")
+public class InvestorCancelApplyParam {
+
+    @ApiModelProperty(value = "交易商")
+    private String accountname;
+
+    @ApiModelProperty(value = "交易商状态")
+    private Integer handlestatus;
+
+    @ApiModelProperty(value = "* 页码 *")
+    private Integer pageNum;
+
+    @ApiModelProperty(value = "* 页大小 *")
+    private Integer pageSize;
+}

+ 39 - 0
mtp3-pojos/src/main/java/com/muchinfo/mtp3pojos/vo/investor/InvestorCancelApplyResult.java

@@ -0,0 +1,39 @@
+package com.muchinfo.mtp3pojos.vo.investor;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+@Builder
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@ApiModel(value="InvestorCancelApplyResult对象", description="交易商销户审核")
+public class InvestorCancelApplyResult {
+
+    private Long autoid;
+
+    @ApiModelProperty(value = "交易商名称")
+    private Long userid;
+
+    @ApiModelProperty(value = "申请状态")
+    private Integer applystatus;
+
+    @ApiModelProperty(value = "申请时间")
+    private Date applytime;
+
+    @ApiModelProperty(value = "处理状态")
+    private Integer handlestatus;
+
+    @ApiModelProperty(value = "审核人")
+    private Long auditlogincode;
+
+    @ApiModelProperty(value = "审核时间")
+    private Date audittime;
+
+}

+ 2 - 1
mtp3-pojos/src/main/java/com/muchinfo/mtp3pojos/vo/organ/son/OrganSonTransferAddParam.java

@@ -28,11 +28,12 @@ public class OrganSonTransferAddParam {
     @ApiModelProperty(value = "转入类型")
     private Integer diversioninlevel;
 
-    @ApiModelProperty(value = "转机构")
+    @ApiModelProperty(value = "转机构")
     private Long inuserid;
 
     private Long outborkerid;
 
+    @ApiModelProperty(value = "转出交易商")
     private Long outinvestor;
 
     private Long outmemberuserid;

+ 7 - 0
mtp3-pojos/src/main/java/com/muchinfo/mtp3pojos/vo/organ/son/OrganSonTransferParam.java

@@ -1,6 +1,7 @@
 package com.muchinfo.mtp3pojos.vo.organ.son;
 
 import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
@@ -15,10 +16,16 @@ public class OrganSonTransferParam {
 
     private Integer transferusertype;
 
+    @ApiModelProperty(value = "转出交易商")
+    private Long outinvestor;
+
+    @ApiModelProperty(value = "转出方")
     private Long outmemberuserid;
 
+    @ApiModelProperty(value = "转入方")
     private Long inuserid;
 
+    @ApiModelProperty(value = "转移状态")
     private Integer transferstatus;
 
     private Long memberuserid;

+ 18 - 0
mtp3-pojos/src/main/java/com/muchinfo/mtp3pojos/vo/organ/son/OrganSonTransferResult.java

@@ -25,6 +25,15 @@ public class OrganSonTransferResult {
     @ApiModelProperty(value = "转入机构")
     private String inuseridname;
 
+    @ApiModelProperty(value = "转出所属会员")
+    private String outmemberusername;
+
+    @ApiModelProperty(value = "转出交易商")
+    private String outinvestorname;
+
+    @ApiModelProperty(value = "转入所属会员")
+    private String inmemberusername;
+
     @ApiModelProperty(value = "转入机构类型")
     private Integer inlevel;
 
@@ -42,4 +51,13 @@ public class OrganSonTransferResult {
     private Long areauserid;
 
     private Long newareauserid;
+
+    private Long memberuserid;
+
+    private Long investoruserid;
+
+    private Long newmemberuserid;
+
+    @ApiModelProperty(value = "转移类型")
+    private Integer transfertype;
 }