yangdamao há 1 ano atrás
pai
commit
5468709231
81 ficheiros alterados com 2774 adições e 412 exclusões
  1. 10 49
      run-prod.sh
  2. 13 39
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/common/CommonController.java
  3. 4 0
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/financial/TopCostInstTpController.java
  4. 4 2
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/order/TopOrderAcceptanceController.java
  5. 18 0
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/order/TopSharedCustomerController.java
  6. 1 1
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/settle/TopInstSettleController.java
  7. 1 0
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/top/TopInstCategoryController.java
  8. 1 0
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/top/TopInstitutionController.java
  9. 7 0
      zhongzheng-admin-saas/src/main/resources/application-dev.yml
  10. 5 0
      zhongzheng-admin-saas/src/main/resources/application-pre.yml
  11. 7 0
      zhongzheng-admin-saas/src/main/resources/application-prod.yml
  12. 21 6
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/common/CommonController.java
  13. 26 13
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/user/UserController.java
  14. 7 0
      zhongzheng-admin/src/main/resources/application-dev.yml
  15. 4 0
      zhongzheng-admin/src/main/resources/application-pre.yml
  16. 7 0
      zhongzheng-admin/src/main/resources/application-prod.yml
  17. 8 1
      zhongzheng-api/src/main/resources/application-dev.yml
  18. 5 0
      zhongzheng-api/src/main/resources/application-pre.yml
  19. 7 0
      zhongzheng-api/src/main/resources/application-prod.yml
  20. 2 2
      zhongzheng-common/src/main/java/com/zhongzheng/common/utils/DateUtils.java
  21. 138 0
      zhongzheng-common/src/main/java/com/zhongzheng/common/utils/bank/DCCryptor.java
  22. 169 0
      zhongzheng-common/src/main/java/com/zhongzheng/common/utils/bank/DCHelper.java
  23. 61 0
      zhongzheng-common/src/main/java/com/zhongzheng/common/utils/bank/GENKey.java
  24. 93 2
      zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/UserServiceImpl.java
  25. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/IQuestionService.java
  26. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/impl/QuestionServiceImpl.java
  27. 19 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/bo/QuestionChapterJsonBo.java
  28. 24 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/bo/QuestionContentJsonBo.java
  29. 19 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/bo/QuestionDetailJsonBo.java
  30. 17 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/bo/QuestionJsonBo.java
  31. 19 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/bo/QuestionModuleJsonBo.java
  32. 73 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/sdk/bo/TopBankBillAddBo.java
  33. 88 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/sdk/bo/TopBankBillEditBo.java
  34. 85 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/sdk/bo/TopBankBillQueryBo.java
  35. 73 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/sdk/domain/TopBankBill.java
  36. 14 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/sdk/mapper/TopBankBillMapper.java
  37. 53 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/sdk/service/ITopBankBillService.java
  38. 9 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/sdk/service/IZsBankService.java
  39. 112 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/sdk/service/impl/TopBankBillServiceImpl.java
  40. 184 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/sdk/service/impl/ZsBankServiceImpl.java
  41. 87 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/sdk/vo/TopBankBillVo.java
  42. 3 2
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/service/impl/TopInformSysUserServiceImpl.java
  43. 44 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/vo/TopOrderGoodsOrgVo.java
  44. 36 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/vo/TopOrderOrgVo.java
  45. 18 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/bo/TopOldOrderAddBo.java
  46. 4 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/bo/TopOldOrderGoodsAddBo.java
  47. 7 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/bo/TopOldOrderGoodsQuery.java
  48. 6 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/bo/TopOldOrderQueryBo.java
  49. 11 3
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/domain/TopOldOrder.java
  50. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/domain/TopOldOrderGoods.java
  51. 4 3
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/mapper/TopOldOrderMapper.java
  52. 6 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/service/ITopOldOrderService.java
  53. 434 177
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/service/impl/TopOldOrderServiceImpl.java
  54. 6 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/vo/TopOldOrderGoodsListVo.java
  55. 14 3
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/vo/TopOldOrderVo.java
  56. 6 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/vo/TopRefundUserVo.java
  57. 34 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopDetailStatisticsTotal.java
  58. 4 4
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopOrderAcceptanceExportBo.java
  59. 4 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopOrderStatisticsBo.java
  60. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopOrderStatisticsViewBo.java
  61. 6 3
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/service/impl/TopOrderAcceptanceServiceImpl.java
  62. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopConversionRateDataVo.java
  63. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopOrderCustomerVo.java
  64. 9 7
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopOrderStatisticsDetailVo.java
  65. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopOrderStatisticsMoneyVo.java
  66. 4 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopOrderStatisticsNumVo.java
  67. 6 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopOrderStatisticsTwoVo.java
  68. 5 5
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopOrderTotalVo.java
  69. 22 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopTenantDataVo.java
  70. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/settle/service/ITopInstSettleService.java
  71. 18 6
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/settle/service/impl/ITopInstSettleServiceImpl.java
  72. 21 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/settle/vo/TopOrderSettleVo.java
  73. 63 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserPeriodImportBo.java
  74. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/IUserService.java
  75. 1 0
      zhongzheng-system/src/main/resources/mapper/modules/goods/GoodsMapper.xml
  76. 2 0
      zhongzheng-system/src/main/resources/mapper/modules/order/OrderGoodsMapper.xml
  77. 7 5
      zhongzheng-system/src/main/resources/mapper/modules/settle/ExamActivityMapper.xml
  78. 3 0
      zhongzheng-system/src/main/resources/mapper/modules/top/TopDivideOrderMapper.xml
  79. 13 1
      zhongzheng-system/src/main/resources/mapper/modules/top/TopOldOrderGoodsMapper.xml
  80. 435 69
      zhongzheng-system/src/main/resources/mapper/modules/top/TopOldOrderMapper.xml
  81. 4 4
      zhongzheng-system/src/main/resources/mapper/modules/top/TopOrderAcceptanceMapper.xml

+ 10 - 49
run-prod.sh

@@ -1,63 +1,24 @@
-#!/usr/bin/env bash
-# 定义应用组名
-group_name='zhongzheng'
-# 定义应用名称
-app_name='zhongzheng-saas-api'
-# 定义应用版本
-app_version='1.0-SNAPSHOT'
-# 定义应用环境
-profile_active='prod'
-echo '----copy jar----'
-docker stop ${app_name}
-echo '----stop container----'
-docker rm ${app_name}
-echo '----rm container----'
-docker rmi ${group_name}/${app_name}:${app_version}
-echo '----rm image----'
-# 打包编译docker镜像
-docker build -f /mydata/maven/build/Dockerfile -t ${group_name}/${app_name}:${app_version} .
-echo '----build image----'
-docker run -p 5055:5055 --name ${app_name} \
---restart=always \
--e 'spring.profiles.active'=${profile_active} \
--e TZ="Asia/Shanghai" \
--m 10240m \
---cpus=3 \
---log-opt max-size=50m \
---log-opt max-file=3 \
--v /etc/localtime:/etc/localtime \
--v /usr/share/fonts:/usr/share/fonts \
--v /data/logs/prod_api:/logs \
--v /mydata/app/${app_name}/logs:/var/logs \
--d ${group_name}/${app_name}:${app_version}
-echo '----start container----'
-
-echo "开始等待20秒..."
-# 1-10秒内随机
-sleep 5
-echo "等待后继续"
-
 #!/usr/bin/env bash
 # 定义应用组名
 group_admin_name='zhongzheng'
 # 定义应用名称
-app_admin_name='zhongzheng-saas-admin'
+app_admin_name='zhongzheng-saas-admin-top'
 # 定义应用版本
 app_admin_version='1.0-SNAPSHOT'
 # 定义应用环境
 profile_active='prod'
-echo '----copy jar admin----'
+echo '----copy jar admin top----'
 docker stop ${app_admin_name}
-echo '----stop container admin----'
+echo '----stop container admin top----'
 docker rm ${app_admin_name}
-echo '----rm container admin----'
+echo '----rm container admin top----'
 docker rmi ${group_admin_name}/${app_admin_name}:${app_admin_version}
-echo '----rm image admin----'
+echo '----rm image admin top----'
 # 打包编译docker镜像
-docker build -f /mydata/maven/build/Dockerfile-admi -t ${group_admin_name}/${app_admin_name}:${app_admin_version} .
-echo '----build image admin----'
+docker build -f /mydata/maven/build/Dockerfile-saas -t ${group_admin_name}/${app_admin_name}:${app_admin_version} .
+echo '----build image admin top----'
 docker run \
--p 5030:5030 \
+-p 7077:7077 \
 --name ${app_admin_name} \
 --restart=always \
 --log-opt max-size=50m \
@@ -66,8 +27,8 @@ docker run \
 -e TZ="Asia/Shanghai" \
 -v /etc/localtime:/etc/localtime \
 -v /usr/share/fonts:/usr/share/fonts \
--v /data/logs/prod_admin:/logs \
+-v /data/logs/prod_admin_top:/logs \
 -v /mydata/app/${app_admin_name}/logs:/var/logs \
 -v /data/nginx/conf.d:/data/nginx/conf.d \
 -d ${group_admin_name}/${app_admin_name}:${app_admin_version}
-echo '----start container admin----'
+echo '----start container admin top----'

+ 13 - 39
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/common/CommonController.java

@@ -1,61 +1,25 @@
 package com.zhongzheng.controller.common;
 
-import cn.hutool.core.lang.Validator;
 import cn.hutool.core.util.StrUtil;
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
 import com.zhongzheng.common.annotation.Log;
 import com.zhongzheng.common.config.RuoYiConfig;
 import com.zhongzheng.common.core.controller.BaseController;
 import com.zhongzheng.common.core.domain.AjaxResult;
-import com.zhongzheng.common.core.domain.model.TopLoginUser;
 import com.zhongzheng.common.core.page.TableDataInfo;
-import com.zhongzheng.common.core.redis.RedisCache;
 import com.zhongzheng.common.enums.BusinessType;
 import com.zhongzheng.common.exception.CustomException;
-import com.zhongzheng.common.utils.DateUtils;
-import com.zhongzheng.common.utils.ServletUtils;
 import com.zhongzheng.common.utils.ToolsUtils;
 import com.zhongzheng.common.utils.file.FileUtils;
-import com.zhongzheng.framework.web.service.WxLoginService;
-import com.zhongzheng.modules.activity.vo.ActivityGoodsPriceVo;
-import com.zhongzheng.modules.base.bo.ConfigQueryBo;
-import com.zhongzheng.modules.course.bo.CourseQueryBo;
-import com.zhongzheng.modules.course.bo.CourseTopicGoodsQueryBo;
-import com.zhongzheng.modules.course.service.ICourseService;
-import com.zhongzheng.modules.course.service.ICourseTopicService;
-import com.zhongzheng.modules.course.vo.CourseTopicGoodsVo;
-import com.zhongzheng.modules.course.vo.CourseTopicVo;
-import com.zhongzheng.modules.course.vo.CourseUserVo;
-import com.zhongzheng.modules.data.domain.DataWxTpClick;
-import com.zhongzheng.modules.data.service.IDataWxTpClickService;
-import com.zhongzheng.modules.distribution.bo.DistributionActivityGoodsQueryBo;
-import com.zhongzheng.modules.distribution.service.IDistributionActivityGoodsService;
-import com.zhongzheng.modules.distribution.service.IDistributionSellerService;
-import com.zhongzheng.modules.distribution.vo.DistributionSellerVo;
-import com.zhongzheng.modules.goods.bo.DistributionGoodsBo;
-import com.zhongzheng.modules.goods.service.IGoodsSpecTemplateService;
-import com.zhongzheng.modules.goods.vo.GoodsSpecTemplateVo;
-import com.zhongzheng.modules.goods.vo.GoodsUserVo;
-import com.zhongzheng.modules.goods.vo.GoodsVo;
-import com.zhongzheng.modules.order.domain.Printer;
 import com.zhongzheng.modules.sdk.bo.TopNuoMplatformLogAddBo;
 import com.zhongzheng.modules.sdk.service.ITopNuoMplatformLogService;
-import com.zhongzheng.modules.sdk.service.NuonuoService;
-import com.zhongzheng.modules.system.bo.SysTenantQueryBo;
-import com.zhongzheng.modules.system.service.ISysConfigService;
-import com.zhongzheng.modules.system.service.ISysTenantService;
 import com.zhongzheng.modules.top.financial.bo.*;
 import com.zhongzheng.modules.top.financial.vo.TopOrderLogVo;
+import com.zhongzheng.modules.top.financial.vo.TopOrderOrgVo;
 import com.zhongzheng.modules.top.financial.vo.TopOrderRevocationVo;
 import com.zhongzheng.modules.top.financial.vo.TopSellerDiscountVo;
 import com.zhongzheng.modules.top.goods.bo.*;
 import com.zhongzheng.modules.top.goods.service.ITopOldOrderService;
 import com.zhongzheng.modules.top.order.bo.PayOrderCallBackBo;
-import com.zhongzheng.modules.wx.bo.WxInfoBo;
-import com.zhongzheng.modules.wx.bo.WxInfoQuery;
-import com.zhongzheng.modules.wx.bo.WxServerBody;
-import com.zhongzheng.modules.wx.domain.*;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
@@ -68,8 +32,6 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import java.text.ParseException;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -313,4 +275,16 @@ public class CommonController extends BaseController {
         List<TopOrderLogVo> list = iTopOldOrderService.logList(bo);
         return getDataTable(list);
     }
+
+    /**
+     * 获取订单商品信息
+     */
+    @ApiOperation("获取订单商品信息")
+    @PostMapping("/order/goods/list")
+    public AjaxResult<TopOrderOrgVo> getOrderGoodsList(@RequestBody TopOldOrderQueryBo bo) {
+        if(!ToolsUtils.checkSignFromOldSys(bo.getStamp().toString(),bo.getSign())){
+            throw new CustomException("签名错误");
+        }
+        return AjaxResult.success(iTopOldOrderService.getTopOrderGoodsList(bo));
+    }
 }

+ 4 - 0
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/financial/TopCostInstTpController.java

@@ -1,5 +1,6 @@
 package com.zhongzheng.controller.financial;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Arrays;
 
@@ -52,6 +53,9 @@ public class TopCostInstTpController extends BaseController {
     @GetMapping("/list")
     public TableDataInfo<TopCostInstTpVo> list(TopCostInstTpQueryBo bo) {
         startPage();
+        List<Integer> statusList = new ArrayList<>();
+        statusList.add(1);
+        bo.setStatusList(statusList);
         List<TopCostInstTpVo> list = iTopCostInstTpService.selectList(bo);
         return getDataTable(list);
     }

+ 4 - 2
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/order/TopOrderAcceptanceController.java

@@ -8,6 +8,7 @@ import com.zhongzheng.common.core.domain.AjaxResult;
 import com.zhongzheng.common.core.domain.model.LoginUser;
 import com.zhongzheng.common.core.domain.model.TopLoginUser;
 import com.zhongzheng.common.core.page.TableDataInfo;
+import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.common.utils.ServletUtils;
 import com.zhongzheng.common.utils.poi.EasyPoiUtil;
 import com.zhongzheng.common.utils.poi.ExcelUtil;
@@ -121,11 +122,11 @@ public class TopOrderAcceptanceController extends BaseController {
 
     @ApiOperation("认款记录导入")
     @PostMapping("/importData")
-    public AjaxResult<Void> importData(MultipartFile file) {
+    public AjaxResult<Void> importData(MultipartFile files) {
         ExcelUtil<TopOrderAcceptanceExportBo> util = new ExcelUtil<TopOrderAcceptanceExportBo>(TopOrderAcceptanceExportBo.class);
         List<TopOrderAcceptanceExportBo> acceptanceExportBos;
         try {
-            acceptanceExportBos = util.importExcel(file.getInputStream());
+            acceptanceExportBos = util.importExcel(files.getInputStream());
         }catch (Exception e){
             e.printStackTrace();
             throw new IllegalArgumentException("模板格式不正确,请重新下载模板");
@@ -142,6 +143,7 @@ public class TopOrderAcceptanceController extends BaseController {
         List<TopOrderAcceptanceVo> list = iTopOrderAcceptanceService.queryAcceptanceList(bo);
         List<TopOrderAcceptanceExportBo> collect = list.stream().map(item -> {
             TopOrderAcceptanceExportBo exportBo = BeanUtil.toBean(item, TopOrderAcceptanceExportBo.class);
+            exportBo.setIncomeTimeStr(DateUtils.timestampToDateFormat(item.getIncomeTime(),"yyyy/MM/dd"));
             return exportBo;
         }).collect(Collectors.toList());
         ExcelUtil<TopOrderAcceptanceExportBo> util = new ExcelUtil<TopOrderAcceptanceExportBo>(TopOrderAcceptanceExportBo.class);

+ 18 - 0
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/order/TopSharedCustomerController.java

@@ -94,4 +94,22 @@ public class TopSharedCustomerController extends BaseController {
     public TableDataInfo<TopConversionRateDataVo> getCustomerOrderData(TopOrderStatisticsBo bo) {
         return iTopOldOrderService.getCustomerOrderData(bo);
     }
+
+    /**
+     * 公海客户机构列表
+     */
+    @ApiOperation("公海客户机构列表")
+    @GetMapping("/tenant")
+    public AjaxResult<List<TopTenantDataVo>> getTenantListData() {
+        return AjaxResult.success(iTopOldOrderService.getTenantListData());
+    }
+
+    /**
+     * 公海客户业务员列表
+     */
+    @ApiOperation("公海客户业务员列表")
+    @GetMapping("/sale")
+    public AjaxResult<List<TopTenantDataVo>> getSaleListData(TopOrderStatisticsBo bo) {
+        return AjaxResult.success(iTopOldOrderService.getSaleListData(bo));
+    }
 }

+ 1 - 1
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/settle/TopInstSettleController.java

@@ -197,7 +197,7 @@ public class TopInstSettleController extends BaseController {
      */
     @ApiOperation("结算单总金额")
     @PostMapping("/total/money")
-    public AjaxResult<BigDecimal> getSettleTotalMoney(SettleQueryBo bo) {
+    public AjaxResult<TopOrderSettleVo> getSettleTotalMoney(SettleQueryBo bo) {
         TopLoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
         bo.setLoginId(loginUser.getUser().getUserId());
         bo.setLoginName(loginUser.getUser().getUserName());

+ 1 - 0
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/top/TopInstCategoryController.java

@@ -52,6 +52,7 @@ public class TopInstCategoryController extends BaseController {
     @GetMapping("/list")
     public TableDataInfo<TopInstCategoryVo> list(TopInstCategoryQueryBo bo) {
         startPage();
+        bo.setStatus(1);
         List<TopInstCategoryVo> list = iTopInstCategoryService.queryList(bo);
         return getDataTable(list);
     }

+ 1 - 0
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/top/TopInstitutionController.java

@@ -53,6 +53,7 @@ public class TopInstitutionController extends BaseController {
     @GetMapping("/list")
     public TableDataInfo<TopInstitutionVo> list(TopInstitutionQueryBo bo) {
         startPage();
+        bo.setStatus(1);
         List<TopInstitutionVo> list = iTopInstitutionService.queryList(bo);
         return getDataTable(list);
     }

+ 7 - 0
zhongzheng-admin-saas/src/main/resources/application-dev.yml

@@ -196,4 +196,11 @@ shared:
     rateData: http://gdxypx.xy.com//WitSystem/BussinessApi/CustomerConversionRateData
     rateTrend: http://gdxypx.xy.com/WitSystem/BussinessApi/CustomerConversionRateTrendData
     customerOrder: http://gdxypx.xy.com/WitSystem/BussinessApi/CustomerOrderData
+    tenantData: http://gdxypx.xy.com/witsystem/bussinessapi/GetOrgList
+    saleData: http://gdxypx.xy.com/witsystem/bussinessapi/GetSaleListByOrgId
+
+ZsBank:
+    publickey: BNsIe9U0x8IeSe4h/dxUzVEz9pie0hDSfMRINRXc7s1UIXfkExnYECF4QqJ2SnHxLv3z/99gsfDQrQ6dzN5lZj0=
+    privatekey: NBtl7WnuUtA2v5FaebEkU0/Jj1IodLGT6lQqwkzmd2E=
+    sm4key: VuAzSWQhsoNqzn0K
 

+ 5 - 0
zhongzheng-admin-saas/src/main/resources/application-pre.yml

@@ -186,3 +186,8 @@ exam:
     subscribeSaveExam: http://192.168.1.7:9099/cd/subscribe/save/exam
     subscribeUpdateExam: http://192.168.1.7:9099/cd/subscribe/update/exam
     subscribeAddExamNum: http://192.168.1.7:9099/cd/subscribe/add/num
+
+ZsBank:
+    publickey: BNsIe9U0x8IeSe4h/dxUzVEz9pie0hDSfMRINRXc7s1UIXfkExnYECF4QqJ2SnHxLv3z/99gsfDQrQ6dzN5lZj0=
+    privatekey: NBtl7WnuUtA2v5FaebEkU0/Jj1IodLGT6lQqwkzmd2E=
+    sm4key: VuAzSWQhsoNqzn0K

+ 7 - 0
zhongzheng-admin-saas/src/main/resources/application-prod.yml

@@ -196,3 +196,10 @@ shared:
     rateData: http://www.xyyxt.net//WitSystem/BussinessApi/CustomerConversionRateData
     rateTrend: http://www.xyyxt.net/WitSystem/BussinessApi/CustomerConversionRateTrendData
     customerOrder: http://www.xyyxt.net/WitSystem/BussinessApi/CustomerOrderData
+    tenantData: http://www.xyyxt.net/witsystem/bussinessapi/GetOrgList
+    saleData: http://www.xyyxt.net/witsystem/bussinessapi/GetSaleListByOrgId
+
+ZsBank:
+    publickey: BNsIe9U0x8IeSe4h/dxUzVEz9pie0hDSfMRINRXc7s1UIXfkExnYECF4QqJ2SnHxLv3z/99gsfDQrQ6dzN5lZj0=
+    privatekey: NBtl7WnuUtA2v5FaebEkU0/Jj1IodLGT6lQqwkzmd2E=
+    sm4key: VuAzSWQhsoNqzn0K

+ 21 - 6
zhongzheng-admin/src/main/java/com/zhongzheng/controller/common/CommonController.java

@@ -16,6 +16,7 @@ import com.zhongzheng.common.core.page.TableDataInfo;
 import com.zhongzheng.common.enums.BusinessType;
 import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.type.EncryptHandler;
+import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.common.utils.ServletUtils;
 import com.zhongzheng.common.utils.ToolsUtils;
 import com.zhongzheng.common.utils.file.FileUploadUtils;
@@ -70,6 +71,7 @@ import com.zhongzheng.modules.order.service.IOrderGoodsRefundService;
 import com.zhongzheng.modules.order.service.IOrderGoodsService;
 import com.zhongzheng.modules.order.service.IOrderService;
 import com.zhongzheng.modules.order.vo.OrderGoodsVo;
+import com.zhongzheng.modules.sdk.service.IZsBankService;
 import com.zhongzheng.modules.system.bo.SysTenantAdminBo;
 import com.zhongzheng.modules.system.bo.SysTenantAdminOldBo;
 import com.zhongzheng.modules.system.bo.SysTenantQueryBo;
@@ -160,14 +162,9 @@ public class CommonController extends BaseController {
     private IUserSubscribeService iUserSubscribeService;
     @Autowired
     private IClassGradeUserService iClassGradeUserService;
-
     @Autowired
-    private IExamService iExamService;
+    private IQuestionService iQuestionService;
 
-    @Autowired
-    private IQuestionOtherService iQuestionOtherService;
-    @Autowired
-    private OssService ossService;
     @Autowired
     private ICertificateTpService iCertificateTpService;
 
@@ -176,6 +173,7 @@ public class CommonController extends BaseController {
 
     @Autowired
     private IMajorService iMajorService;
+    private IZsBankService iZsBankService;
     /**
      * 通用下载请求
      *
@@ -801,6 +799,16 @@ public class CommonController extends BaseController {
         return AjaxResult.success();
     }
 
+    @ApiOperation("测试网银")
+    @PreAuthorize("@ss.hasPermi('system:withdrawal:add')")
+    @Log(title = "测试网银", businessType = BusinessType.INSERT)
+    @GetMapping("/common/free/zsBank")
+    public AjaxResult zsBank() {
+        String date = DateUtils.dateTimeNow("yyyyMMdd");
+        System.out.println(iZsBankService.searchBreakPoint(null,"755915680210507",date,date));
+        return AjaxResult.success();
+    }
+
 
 
     @ApiOperation("旧系统post请求")
@@ -826,5 +834,12 @@ public class CommonController extends BaseController {
         return AjaxResult.success();
     }
 
+    @ApiOperation("新考题库导入")
+    @PostMapping("/common/question/import")
+    public AjaxResult<Void> questionImport(@RequestBody String param) {
+        iQuestionService.questionImport(param);
+        return AjaxResult.success();
+    }
+
 
 }

+ 26 - 13
zhongzheng-admin/src/main/java/com/zhongzheng/controller/user/UserController.java

@@ -164,21 +164,34 @@ public class UserController extends BaseController {
     @Log(title = "导入用户", businessType = BusinessType.IMPORT)
     @PreAuthorize("@ss.hasPermi('system:section:import')")
     @PostMapping("/importData")
-    public AjaxResult<Map<String,Object>> importData(MultipartFile file, String importNo) throws Exception
+    public AjaxResult<Map<String,Object>> importData(MultipartFile file, String importNo,Integer sign) throws Exception
     {
-        ExcelUtil<UserImportAddBo> util = new ExcelUtil<UserImportAddBo>(UserImportAddBo.class);
-        List<UserImportAddBo> userList = null;
-        try{
-            userList = util.importExcel(file.getInputStream());
-        }catch (Exception e){
-            e.printStackTrace();
-            throw new IllegalArgumentException("模板格式不正确,请重新下载模板");
+        Map<String, Object> rs = new HashMap<>();
+        if (ObjectUtils.isNotNull(sign) && sign == 1){
+            ExcelUtil<UserPeriodImportBo> util = new ExcelUtil<UserPeriodImportBo>(UserPeriodImportBo.class);
+            List<UserPeriodImportBo> userList = null;
+            try{
+                userList = util.importExcel(file.getInputStream());
+            }catch (Exception e){
+                e.printStackTrace();
+                throw new IllegalArgumentException("模板格式不正确,请重新下载模板");
+            }
+            rs = iUserService.importSevenUser(userList);
+        }else {
+            ExcelUtil<UserImportAddBo> util = new ExcelUtil<UserImportAddBo>(UserImportAddBo.class);
+            List<UserImportAddBo> userList = null;
+            try{
+                userList = util.importExcel(file.getInputStream());
+            }catch (Exception e){
+                e.printStackTrace();
+                throw new IllegalArgumentException("模板格式不正确,请重新下载模板");
+            }
+            Collections.reverse(userList);
+            if (userList.stream().allMatch(item -> ObjectUtils.isNull(item))){
+                throw new IllegalArgumentException("模板格式不正确,请重新下载模板");
+            }
+            rs = iUserService.importUser(userList,importNo);
         }
-        Collections.reverse(userList);
-        if (userList.stream().allMatch(item -> ObjectUtils.isNull(item))){
-            throw new IllegalArgumentException("模板格式不正确,请重新下载模板");
-        }
-        Map<String, Object> rs = iUserService.importUser(userList,importNo);
         return AjaxResult.success(rs);
     }
 

+ 7 - 0
zhongzheng-admin/src/main/resources/application-dev.yml

@@ -197,3 +197,10 @@ shared:
     rateData: http://gdxypx.xy.com//WitSystem/BussinessApi/CustomerConversionRateData
     rateTrend: http://gdxypx.xy.com/WitSystem/BussinessApi/CustomerConversionRateTrendData
     customerOrder: http://gdxypx.xy.com/WitSystem/BussinessApi/CustomerOrderData
+    tenantData: http://gdxypx.xy.com/witsystem/bussinessapi/GetOrgList
+    saleData: http://gdxypx.xy.com/witsystem/bussinessapi/GetSaleListByOrgId
+
+ZsBank:
+    publickey: BNsIe9U0x8IeSe4h/dxUzVEz9pie0hDSfMRINRXc7s1UIXfkExnYECF4QqJ2SnHxLv3z/99gsfDQrQ6dzN5lZj0=
+    privatekey: NBtl7WnuUtA2v5FaebEkU0/Jj1IodLGT6lQqwkzmd2E=
+    sm4key: VuAzSWQhsoNqzn0K

+ 4 - 0
zhongzheng-admin/src/main/resources/application-pre.yml

@@ -187,3 +187,7 @@ exam:
     subscribeUpdateExam: http://192.168.1.7:9099/cd/subscribe/update/exam
     subscribeAddExamNum: http://192.168.1.7:9099/cd/subscribe/add/num
 
+ZsBank:
+    publickey: BNsIe9U0x8IeSe4h/dxUzVEz9pie0hDSfMRINRXc7s1UIXfkExnYECF4QqJ2SnHxLv3z/99gsfDQrQ6dzN5lZj0=
+    privatekey: NBtl7WnuUtA2v5FaebEkU0/Jj1IodLGT6lQqwkzmd2E=
+    sm4key: VuAzSWQhsoNqzn0K

+ 7 - 0
zhongzheng-admin/src/main/resources/application-prod.yml

@@ -196,3 +196,10 @@ shared:
     rateData: http://www.xyyxt.net//WitSystem/BussinessApi/CustomerConversionRateData
     rateTrend: http://www.xyyxt.net/WitSystem/BussinessApi/CustomerConversionRateTrendData
     customerOrder: http://www.xyyxt.net/WitSystem/BussinessApi/CustomerOrderData
+    tenantData: http://www.xyyxt.net/witsystem/bussinessapi/GetOrgList
+    saleData: http://www.xyyxt.net/witsystem/bussinessapi/GetSaleListByOrgId
+
+ZsBank:
+    publickey: BNsIe9U0x8IeSe4h/dxUzVEz9pie0hDSfMRINRXc7s1UIXfkExnYECF4QqJ2SnHxLv3z/99gsfDQrQ6dzN5lZj0=
+    privatekey: NBtl7WnuUtA2v5FaebEkU0/Jj1IodLGT6lQqwkzmd2E=
+    sm4key: VuAzSWQhsoNqzn0K

+ 8 - 1
zhongzheng-api/src/main/resources/application-dev.yml

@@ -198,4 +198,11 @@ shared:
     orderArea: http://gdxypx.xy.com/WitSystem/BussinessApi/OrderAreaData
     rateData: http://gdxypx.xy.com//WitSystem/BussinessApi/CustomerConversionRateData
     rateTrend: http://gdxypx.xy.com/WitSystem/BussinessApi/CustomerConversionRateTrendData
-    customerOrder: http://gdxypx.xy.com/WitSystem/BussinessApi/CustomerOrderData
+    customerOrder: http://gdxypx.xy.com/WitSystem/BussinessApi/CustomerOrderData
+    tenantData: http://gdxypx.xy.com/witsystem/bussinessapi/GetOrgList
+    saleData: http://gdxypx.xy.com/witsystem/bussinessapi/GetSaleListByOrgId
+
+ZsBank:
+    publickey: BNsIe9U0x8IeSe4h/dxUzVEz9pie0hDSfMRINRXc7s1UIXfkExnYECF4QqJ2SnHxLv3z/99gsfDQrQ6dzN5lZj0=
+    privatekey: NBtl7WnuUtA2v5FaebEkU0/Jj1IodLGT6lQqwkzmd2E=
+    sm4key: VuAzSWQhsoNqzn0K

+ 5 - 0
zhongzheng-api/src/main/resources/application-pre.yml

@@ -186,3 +186,8 @@ exam:
     subscribeSaveExam: http://192.168.1.7:9099/cd/subscribe/save/exam
     subscribeUpdateExam: http://192.168.1.7:9099/cd/subscribe/update/exam
     subscribeAddExamNum: http://192.168.1.7:9099/cd/subscribe/add/num
+
+ZsBank:
+    publickey: BNsIe9U0x8IeSe4h/dxUzVEz9pie0hDSfMRINRXc7s1UIXfkExnYECF4QqJ2SnHxLv3z/99gsfDQrQ6dzN5lZj0=
+    privatekey: NBtl7WnuUtA2v5FaebEkU0/Jj1IodLGT6lQqwkzmd2E=
+    sm4key: VuAzSWQhsoNqzn0K

+ 7 - 0
zhongzheng-api/src/main/resources/application-prod.yml

@@ -209,3 +209,10 @@ shared:
     rateData: http://www.xyyxt.net//WitSystem/BussinessApi/CustomerConversionRateData
     rateTrend: http://www.xyyxt.net/WitSystem/BussinessApi/CustomerConversionRateTrendData
     customerOrder: http://www.xyyxt.net/WitSystem/BussinessApi/CustomerOrderData
+    tenantData: http://www.xyyxt.net/witsystem/bussinessapi/GetOrgList
+    saleData: http://www.xyyxt.net/witsystem/bussinessapi/GetSaleListByOrgId
+
+ZsBank:
+    publickey: BNsIe9U0x8IeSe4h/dxUzVEz9pie0hDSfMRINRXc7s1UIXfkExnYECF4QqJ2SnHxLv3z/99gsfDQrQ6dzN5lZj0=
+    privatekey: NBtl7WnuUtA2v5FaebEkU0/Jj1IodLGT6lQqwkzmd2E=
+    sm4key: VuAzSWQhsoNqzn0K

+ 2 - 2
zhongzheng-common/src/main/java/com/zhongzheng/common/utils/DateUtils.java

@@ -663,7 +663,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
 
 
     public static Map<Long,Long> getWeekTime(Long startTime,Long endTime){
-        Map<Long,Long> mapList = new HashMap<>();
+        Map<Long,Long> mapList = new LinkedHashMap<>();
         Long zeroTime = DateUtils.getScheduleTimeZeroTime(startTime);
         //一天的时间戳
         Long time = 86400L;
@@ -677,7 +677,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
     public static Map<Long,Long> getMonthTime(Long startTime,Long endTime){
         //一天的时间戳
         Long time = 86400L;
-        Map<Long,Long> map = new HashMap<>();
+        Map<Long,Long> map = new  LinkedHashMap<>();
         try{
             SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
             Date d1 = DateUtils.timeToDate(startTime);

+ 138 - 0
zhongzheng-common/src/main/java/com/zhongzheng/common/utils/bank/DCCryptor.java

@@ -0,0 +1,138 @@
+package com.zhongzheng.common.utils.bank;
+
+import org.bouncycastle.asn1.*;
+import org.bouncycastle.crypto.params.ECDomainParameters;
+import org.bouncycastle.crypto.params.ECPrivateKeyParameters;
+import org.bouncycastle.crypto.params.ECPublicKeyParameters;
+import org.bouncycastle.crypto.params.ParametersWithID;
+import org.bouncycastle.crypto.signers.SM2Signer;
+import org.bouncycastle.jce.ECNamedCurveTable;
+import org.bouncycastle.jce.provider.BouncyCastleProvider;
+import org.bouncycastle.jce.spec.ECParameterSpec;
+import org.bouncycastle.math.ec.ECPoint;
+
+import javax.crypto.Cipher;
+import javax.crypto.spec.IvParameterSpec;
+import javax.crypto.spec.SecretKeySpec;
+import java.io.ByteArrayInputStream;
+import java.math.BigInteger;
+import java.security.Security;
+import java.util.Enumeration;
+
+/**
+ * 示例代码,仅供参考
+ */
+public class DCCryptor {
+
+    static {
+        Security.addProvider(new BouncyCastleProvider());
+    }
+
+    public static byte[] CMBSM4EncryptWithCBC(byte key[], byte iv[], byte input[]) throws Exception {
+        if (key == null || iv == null || input == null) {
+            throw new Exception("CMBSM4EncryptWithCBC 非法输入");
+        }
+        return CMBSM4Crypt(key, iv, input, 1);
+    }
+
+    public static byte[] CMBSM4DecryptWithCBC(byte key[], byte iv[], byte input[]) throws Exception {
+        if (key == null || iv == null || input == null) {
+            throw new Exception("CMBSM4DecryptWithCBC 非法输入");
+        }
+        return CMBSM4Crypt(key, iv, input, 2);
+    }
+
+    public static byte[] CMBSM2SignWithSM3(byte[] id, byte privkey[], byte msg[]) throws Exception {
+        if (privkey == null || msg == null) {
+            throw new Exception("CMBSM2SignWithSM3 input error");
+        }
+        ECPrivateKeyParameters privateKey = encodePrivateKey(privkey);
+        SM2Signer signer = new SM2Signer();
+        ParametersWithID parameters = new ParametersWithID(privateKey, id);
+        signer.init(true, parameters);
+        signer.update(msg, 0, msg.length);
+        return decodeDERSignature(signer.generateSignature());
+    }
+
+    public static boolean CMBSM2VerifyWithSM3(byte[] id, byte pubkey[], byte msg[], byte signature[]) throws Exception {
+
+        if (pubkey == null || msg == null || signature == null) {
+            throw new Exception("CMBSM2VerifyWithSM3 input error");
+        }
+        ECPublicKeyParameters publicKey = encodePublicKey(pubkey);
+        SM2Signer signer = new SM2Signer();
+        ParametersWithID parameters = new ParametersWithID(publicKey, id);
+        signer.init(false, parameters);
+        signer.update(msg, 0, msg.length);
+        return signer.verifySignature(encodeDERSignature(signature));
+    }
+
+    private static byte[] CMBSM4Crypt(byte key[], byte iv[], byte input[], int mode) throws Exception {
+        SecretKeySpec spec = new SecretKeySpec(key, "SM4");
+        IvParameterSpec ivParameterSpec = new IvParameterSpec(iv);
+        Cipher cipher = Cipher.getInstance("SM4/CBC/PKCS7Padding", BouncyCastleProvider.PROVIDER_NAME);
+        cipher.init(mode, spec, ivParameterSpec);
+        return cipher.doFinal(input);
+    }
+
+    private static ECPrivateKeyParameters encodePrivateKey(byte[] value) {
+        BigInteger d = new BigInteger(1, value);
+        ECParameterSpec spec = ECNamedCurveTable.getParameterSpec("sm2p256v1");
+        ECDomainParameters ecParameters = new ECDomainParameters(spec.getCurve(), spec.getG(), spec.getN(), spec.getH(), spec.getSeed());
+        return new ECPrivateKeyParameters(d, ecParameters);
+    }
+
+    public static ECPublicKeyParameters encodePublicKey(byte[] value) {
+        byte[] x = new byte[32];
+        byte[] y = new byte[32];
+        System.arraycopy(value, 1, x, 0, 32);
+        System.arraycopy(value, 33, y, 0, 32);
+        BigInteger X = new BigInteger(1, x);
+        BigInteger Y = new BigInteger(1, y);
+        ECParameterSpec spec = ECNamedCurveTable.getParameterSpec("sm2p256v1");
+        ECPoint Q = spec.getCurve().createPoint(X, Y);
+        ECDomainParameters ecParameters = new ECDomainParameters(spec.getCurve(), spec.getG(), spec.getN(), spec.getH(), spec.getSeed());
+        return new ECPublicKeyParameters(Q, ecParameters);
+    }
+
+    @SuppressWarnings("unchecked")
+    private static byte[] decodeDERSignature(byte[] signature) throws Exception {
+        ASN1InputStream stream = new ASN1InputStream(new ByteArrayInputStream(signature));
+        ASN1Sequence primitive = (ASN1Sequence) stream.readObject();
+        Enumeration<ASN1Integer> enumeration = primitive.getObjects();
+        BigInteger R = enumeration.nextElement().getValue();
+        BigInteger S = enumeration.nextElement().getValue();
+        byte[] bytes = new byte[64];
+        byte[] r = format(R.toByteArray());
+        byte[] s = format(S.toByteArray());
+        System.arraycopy(r, 0, bytes, 0, 32);
+        System.arraycopy(s, 0, bytes, 32, 32);
+        return bytes;
+    }
+
+    private static byte[] encodeDERSignature(byte[] signature) throws Exception {
+        byte[] r = new byte[32];
+        byte[] s = new byte[32];
+        System.arraycopy(signature, 0, r, 0, 32);
+        System.arraycopy(signature, 32, s, 0, 32);
+        ASN1EncodableVector vector = new ASN1EncodableVector();
+        vector.add(new ASN1Integer(new BigInteger(1, r)));
+        vector.add(new ASN1Integer(new BigInteger(1, s)));
+        return (new DERSequence(vector)).getEncoded();
+    }
+
+    private static byte[] format(byte[] value) {
+        if (value.length == 32) {
+            return value;
+        } else {
+            byte[] bytes = new byte[32];
+            if (value.length > 32) {
+                System.arraycopy(value, value.length - 32, bytes, 0, 32);
+            } else {
+                System.arraycopy(value, 0, bytes, 32 - value.length, value.length);
+            }
+            return bytes;
+        }
+    }
+
+}

+ 169 - 0
zhongzheng-common/src/main/java/com/zhongzheng/common/utils/bank/DCHelper.java

@@ -0,0 +1,169 @@
+package com.zhongzheng.common.utils.bank;
+
+import com.google.gson.JsonArray;
+import com.google.gson.JsonObject;
+
+import javax.net.ssl.*;
+import java.io.*;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.security.KeyStore;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+/**
+ * 示例代码,仅供参考
+ * 本示例中用到的(HttpUrlConnection)存在不遵循RFC协议的重试机制,请在启动参数中将sun.net.http.retryPost参数设置为false,禁用重发。
+ */
+public class DCHelper {
+
+    public static String serialJsonOrdered(JsonObject json) throws Exception {
+        StringBuilder appender = new StringBuilder();
+        appender.append("{");
+        Iterator<String> keys = new TreeSet<>(json.keySet()).iterator();
+        boolean isFirstEle = true;
+        while (keys.hasNext()) {
+            if (!isFirstEle) {
+                appender.append(",");
+            }
+            String key = keys.next();
+            Object val = json.get(key);
+            if (val instanceof JsonObject) {
+                appender.append("\"").append(key).append("\":");
+                appender.append(serialJsonOrdered((JsonObject) val));
+            } else if (val instanceof JsonArray) {
+                JsonArray jarray = (JsonArray) val;
+                appender.append("\"").append(key).append("\":[");
+                boolean isFirstArrEle = true;
+                for (int i = 0; i < jarray.size(); i++) {
+                    if (!isFirstArrEle) {
+                        appender.append(",");
+                    }
+                    Object obj = jarray.get(i);
+                    if (obj instanceof JsonObject) {
+                        appender.append(serialJsonOrdered((JsonObject) obj));
+                    } else {
+                        appender.append(obj.toString());
+                    }
+                    isFirstArrEle = false;
+                }
+                appender.append("]");
+            } else {
+                String value = val.toString();
+                appender.append("\"").append(key).append("\":").append(value);
+            }
+            isFirstEle = false;
+        }
+        appender.append("}");
+        return appender.toString();
+    }
+
+    public static String getTime() {
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
+        return dateFormat.format(new Date());
+    }
+
+    public static String doPostForm(String httpUrl, Map<String, String> param) throws Exception {
+        HttpURLConnection connection = null;
+        InputStream is = null;
+        OutputStream os = null;
+        BufferedReader br = null;
+        String result = null;
+        try {
+            URL url = new URL(httpUrl);
+            SSLContext sslcontext;
+            sslcontext = SSLContext.getInstance("SSL");
+            TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
+            tmf.init((KeyStore) null);
+            X509TrustManager defaultTm = null;
+            for (TrustManager tm : tmf.getTrustManagers()) {
+                if (tm instanceof X509TrustManager) {
+                    defaultTm = (X509TrustManager) tm;
+                    break;
+                }
+            }
+            sslcontext.init(null, new TrustManager[] { defaultTm }, new java.security.SecureRandom());
+            HttpsURLConnection.setDefaultSSLSocketFactory(sslcontext.getSocketFactory());
+
+            connection = (HttpURLConnection) url.openConnection();
+            connection.setRequestMethod("POST");
+            connection.setConnectTimeout(15000);
+            connection.setReadTimeout(60000);
+            connection.setInstanceFollowRedirects(true);
+
+            connection.setDoOutput(true);
+            connection.setDoInput(true);
+
+            connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
+            os = connection.getOutputStream();
+            os.write(createLinkString(param).getBytes());
+            if (connection.getResponseCode() != 200) {
+                is = connection.getErrorStream();
+                br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
+                StringBuilder sbf = new StringBuilder();
+                String temp = null;
+                while ((temp = br.readLine()) != null) {
+                    sbf.append(temp);
+                    sbf.append("\r\n");
+                }
+                result = sbf.toString();
+            } else {
+                is = connection.getInputStream();
+                br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
+                StringBuilder sbf = new StringBuilder();
+                String temp = null;
+                boolean firstLine = true;
+                while ((temp = br.readLine()) != null) {
+                    if (!firstLine) {
+                        firstLine = false;
+                        sbf.append("\r\n");
+                    }
+                    sbf.append(temp);
+                }
+                result = sbf.toString();
+            }
+        } finally {
+            if (null != br) {
+                try {
+                    br.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+            if (null != os) {
+                try {
+                    os.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+            if (null != is) {
+                try {
+                    is.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+            connection.disconnect();
+        }
+        return result;
+    }
+
+    private static String createLinkString(Map<String, String> params) throws Exception {
+        ArrayList<String> keys = new ArrayList<>(params.keySet());
+        Collections.sort(keys);
+
+        StringBuilder prestr = new StringBuilder();
+        for (int i = 0; i < keys.size(); i++) {
+            String key = keys.get(i);
+            String value = params.get(key);
+            if (i == keys.size() - 1) {
+                prestr.append(key).append("=").append(value);
+            } else {
+                prestr.append(key).append("=").append(value).append("&");
+            }
+        }
+        return prestr.toString();
+    }
+
+}

+ 61 - 0
zhongzheng-common/src/main/java/com/zhongzheng/common/utils/bank/GENKey.java

@@ -0,0 +1,61 @@
+package com.zhongzheng.common.utils.bank;
+
+import org.bouncycastle.crypto.AsymmetricCipherKeyPair;
+import org.bouncycastle.crypto.params.ECDomainParameters;
+import org.bouncycastle.crypto.params.ECKeyGenerationParameters;
+import org.bouncycastle.crypto.params.ECPrivateKeyParameters;
+import org.bouncycastle.crypto.params.ECPublicKeyParameters;
+import org.bouncycastle.jce.ECNamedCurveTable;
+import org.bouncycastle.jce.spec.ECParameterSpec;
+import org.bouncycastle.crypto.generators.ECKeyPairGenerator;
+
+import java.math.BigInteger;
+import java.security.SecureRandom;
+import java.util.Base64;
+import java.util.HashMap;
+import java.util.Map;
+
+
+
+
+public class GENKey {
+
+    private static ECDomainParameters getECDomainParameters() {
+        ECParameterSpec spec = ECNamedCurveTable.getParameterSpec("sm2p256v1");
+        return new ECDomainParameters(spec.getCurve(), spec.getG(), spec.getN(), spec.getH(), spec.getSeed());
+    }
+
+
+    /**
+     * 生成国密密钥对
+     *
+     * @return
+     */
+    public static Map<String, byte[]> CMBSM2KeyGen() {
+        ECDomainParameters domainParameters = getECDomainParameters();
+        ECKeyPairGenerator generator = new ECKeyPairGenerator();
+        ECKeyGenerationParameters parameters = new ECKeyGenerationParameters(domainParameters, new SecureRandom());
+        generator.init(parameters);
+        AsymmetricCipherKeyPair keyPair = generator.generateKeyPair();
+        ECPublicKeyParameters publicKeyParameters = (ECPublicKeyParameters) keyPair.getPublic();
+        ECPrivateKeyParameters privateKeyParameters = (ECPrivateKeyParameters) keyPair.getPrivate();
+        Map<String, byte[]> map = new HashMap<>();
+        map.put("publickey", publicKeyParameters.getQ().getEncoded(false));
+        map.put("privatekey", format(privateKeyParameters.getD().toByteArray()));
+        return map;
+    }
+
+    private static byte[] format(byte[] value) {
+        if (value.length == 32) {
+            return value;
+        }
+        byte bytes[] = new byte[32];
+        if (value.length > 32) {
+            System.arraycopy(value, value.length - 32, bytes, 0, 32);
+        } else {
+            System.arraycopy(value, 0, bytes, 32 - value.length, value.length);
+        }
+        return bytes;
+    }
+
+}

+ 93 - 2
zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/UserServiceImpl.java

@@ -907,7 +907,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
                 errorList.add(itemImport);
                 continue;
             }
-            iSmsService.sendPwdSms(itemImport.getTelphone(),pwd);
+//            iSmsService.sendPwdSms(itemImport.getTelphone(),pwd);
             itemImport.setUserId(inertData.getUserId());
             itemImport.setImportNo(importNo);
             itemImport.setStudentCode(inertData.getUserAccount());
@@ -1626,6 +1626,96 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
         return baseMapper.getByCardNoTenant(idCard);
     }
 
+    @Override
+    public Map<String, Object> importSevenUser(List<UserPeriodImportBo> userList) {
+        if (CollectionUtils.isEmpty(userList)) {
+            throw new IllegalArgumentException("请勿导入空表格");
+        }
+        List<UserPeriodImportBo> errorList = new ArrayList<>();
+        List<UserPeriodImportBo> successList = new ArrayList<>();
+        String importNo = ServletUtils.getEncoded("IMPORT");
+        for (UserPeriodImportBo itemImport : userList) {
+            if(Validator.isEmpty(itemImport.getUserPhone())||itemImport.getUserPhone().length()!=11){
+                itemImport.setCause("手机号不能为空或者格式不对");
+                errorList.add(itemImport);
+                continue;
+            }
+            if(Validator.isEmpty(itemImport.getUserCard())){
+                itemImport.setCause("身份证不能为空");
+                errorList.add(itemImport);
+                continue;
+            }
+            if(Validator.isEmpty(itemImport.getUserName())){
+                itemImport.setCause("真实姓名不能为空");
+                errorList.add(itemImport);
+                continue;
+            }
+            User user = getOne(new LambdaQueryWrapper<User>()
+                    .eq(User::getTelphone,EncryptHandler.encrypt(itemImport.getUserPhone())).last("limit 1"));
+            if(Validator.isNotNull(user)){
+                if(Validator.isNotEmpty(user.getIdCard())&&Validator.isNotEmpty(itemImport.getUserCard())&&!itemImport.getUserCard().equals(user.getIdCard())){
+                    throw new CustomException(itemImport.getUserCard()+"身份证号码不一致");
+                }
+                if(Validator.isEmpty(user.getIdCard())){
+                    //更新身份证和姓名
+                    user.setIdCard(itemImport.getUserCard());
+                    user.setRealname(itemImport.getUserName());
+                    updateById(user);
+                }
+                //手机号已存在
+                itemImport.setUserId(user.getUserId());
+                itemImport.setStudentCode(user.getUserAccount());
+                itemImport.setUserName(user.getRealname());
+                itemImport.setUserCard(user.getIdCard());
+                successList.add(itemImport);
+                continue;
+            }else{
+                User user2 = getOne(new LambdaQueryWrapper<User>()
+                        .eq(User::getIdCard,EncryptHandler.encrypt(itemImport.getUserCard())).last("limit 1"));
+                if(Validator.isNotEmpty(user2)){
+                    throw new CustomException(itemImport.getUserName()+"身份证号码已存在,创建失败");
+                }
+            }
+            User inertData = new User();
+            inertData.setTelphone(itemImport.getUserPhone());
+            //隐藏手机号作为初始昵称
+            inertData.setNickname(TelPhoneUtils.hideTelPhone(itemImport.getUserPhone()));
+            //雪花算法产生账号ID
+            SnowflakeIdUtils idWorker = new SnowflakeIdUtils(3, 1);
+            inertData.setUserAccount(String.valueOf(idWorker.nextId()));
+            inertData.setSex(1);
+            if(Validator.isNotEmpty(itemImport.getSex())){
+                inertData.setSex(itemImport.getSex().equals("女")?2:1);
+            }
+            if(Validator.isNotEmpty(itemImport.getEducation())){
+                inertData.setEduLevel(itemImport.getEducation());
+            }
+            inertData.setIdCard(itemImport.getUserCard());
+            inertData.setRealname(itemImport.getUserName());
+            inertData.setStatus(1);
+            inertData.setRegisterPlat("3");
+            inertData.setAvatar(Constants.DEFAULT_AVATAR);
+            inertData.setLastLoginIp(IpUtils.getIpAddr(ServletUtils.getRequest()));
+            inertData.setLastLoginTime(DateUtils.getNowTime());
+            inertData.setCreateTime(DateUtils.getNowTime());
+            inertData.setUpdateTime(DateUtils.getNowTime());
+            //初始密码(身份证后6位)
+            String idCard = itemImport.getUserCard();
+            String pwd =  idCard.substring(idCard.length() - 6); // 随机密码
+            inertData.setPassword(SecurityUtils.encryptPassword(pwd));
+            inertData.setImportNo(importNo); //设置导入编号 一个导入页面同时导入多次算一个编号
+            if(!save(inertData)){
+                itemImport.setCause("注册失败");
+                errorList.add(itemImport);
+                continue;
+            }
+            itemImport.setUserId(inertData.getUserId());
+            itemImport.setImportNo(importNo);
+            itemImport.setStudentCode(inertData.getUserAccount());
+            successList.add(itemImport);
+        }
+        return null;
+    }
 
     @Override
     public Map<String, Object> accountLogin(UserAppAccountLoginBo bo) {
@@ -1678,7 +1768,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
         if (!SecurityUtils.matchesPassword(password,user.getPassword()))
         {
             iUserLoginErrorService.saveErrorLog(bo.getAccount());
-            throw new BaseException("登录信息错误");
+            //判断旧系统是否有账号
+            oldAccountLogin(bo,1);
         }
         //如果活动分销码变动
         if (StringUtils.isNotBlank(bo.getShareActivityCode())){

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/IQuestionService.java

@@ -108,4 +108,6 @@ public interface IQuestionService extends IService<Question> {
 	String insertByAddBoImport(QuestionAddBo bo, Integer no);
 
 	Long insertByAddBoImportBackId(QuestionAddBo bo, Integer no);
+
+    void questionImport(String param);
 }

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/impl/QuestionServiceImpl.java

@@ -3089,6 +3089,11 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
         return add.getQuestionId();
     }
 
+    @Override
+    public void questionImport(String param) {
+
+    }
+
     private boolean checkNameUnique(Question entity) {
         Question info = getOne(new LambdaQueryWrapper<Question>()
                 .eq(Question::getPrefixName, entity.getPrefixName()).eq(Question::getContent, entity.getContent()).ne(Question::getStatus, -1).last("limit 1"));

+ 19 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/bo/QuestionChapterJsonBo.java

@@ -0,0 +1,19 @@
+package com.zhongzheng.modules.goods.bo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author yangdamao
+ * @date 2023年11月28日 9:22
+ */
+@Data
+public class QuestionChapterJsonBo implements Serializable {
+
+    private String 章序号;
+
+    private String 章名;
+
+    private QuestionDetailJsonBo 章内容;
+}

+ 24 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/bo/QuestionContentJsonBo.java

@@ -0,0 +1,24 @@
+package com.zhongzheng.modules.goods.bo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author yangdamao
+ * @date 2023年11月28日 9:22
+ */
+@Data
+public class QuestionContentJsonBo implements Serializable {
+
+    private String 题目序号;
+
+    private String 标题;
+
+    private List<String> 选项;
+
+    private String 答案;
+
+    private String 解析;
+}

+ 19 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/bo/QuestionDetailJsonBo.java

@@ -0,0 +1,19 @@
+package com.zhongzheng.modules.goods.bo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author yangdamao
+ * @date 2023年11月28日 9:22
+ */
+@Data
+public class QuestionDetailJsonBo implements Serializable {
+
+    private String 题目类型;
+
+    private String 题目类型序号;
+
+    private QuestionContentJsonBo 题目内容;
+}

+ 17 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/bo/QuestionJsonBo.java

@@ -0,0 +1,17 @@
+package com.zhongzheng.modules.goods.bo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author yangdamao
+ * @date 2023年11月28日 9:22
+ */
+@Data
+public class QuestionJsonBo implements Serializable {
+
+    private String 书标题;
+
+    private QuestionModuleJsonBo 书内容;
+}

+ 19 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/bo/QuestionModuleJsonBo.java

@@ -0,0 +1,19 @@
+package com.zhongzheng.modules.goods.bo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author yangdamao
+ * @date 2023年11月28日 9:22
+ */
+@Data
+public class QuestionModuleJsonBo implements Serializable {
+
+    private String 模块序号;
+
+    private String 模块名;
+
+    private QuestionChapterJsonBo 模块内容;
+}

+ 73 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/sdk/bo/TopBankBillAddBo.java

@@ -0,0 +1,73 @@
+package com.zhongzheng.modules.sdk.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import java.util.Date;
+
+
+import java.math.BigDecimal;
+
+/**
+ * 银行账单添加对象 top_bank_bill
+ *
+ * @author ruoyi
+ * @date 2023-11-15
+ */
+@Data
+@ApiModel("银行账单添加对象")
+public class TopBankBillAddBo {
+
+    /** 余额 */
+    @ApiModelProperty("余额")
+    private BigDecimal acctOnlineBal;
+    /** 添加时间 */
+    @ApiModelProperty("添加时间")
+    private Long createTime;
+    /** 修改时间 */
+    @ApiModelProperty("修改时间")
+    private Long updateTime;
+    /** 状态 1正常 0关闭 */
+    @ApiModelProperty("状态 1正常 0关闭")
+    private Integer status;
+    /** 收付方名称 */
+    @ApiModelProperty("收付方名称")
+    private String ctpAcctName;
+    /** 收付方帐号 */
+    @ApiModelProperty("收付方帐号")
+    private String ctpAcctNbr;
+    /** 收付方开户行地址 */
+    @ApiModelProperty("收付方开户行地址")
+    private String ctpBankAddress;
+    /** 收付方开户行行名 */
+    @ApiModelProperty("收付方开户行行名")
+    private String ctpBankName;
+    /** 扩展摘要 */
+    @ApiModelProperty("扩展摘要")
+    private String extendedRemark;
+
+    @ApiModelProperty("")
+    private String infoFlag;
+    /** 你方摘要 */
+    @ApiModelProperty("你方摘要")
+    private String remarkTextClt;
+    /** 交易金额 */
+    @ApiModelProperty("交易金额")
+    private BigDecimal transAmount;
+    /** 交易日 */
+    @ApiModelProperty("交易日")
+    private String transDate;
+    /** 流水号 */
+    @ApiModelProperty("流水号")
+    private String transSequenceIdn;
+    /** 交易时间 */
+    @ApiModelProperty("交易时间")
+    private String transTime;
+    /** 起息日 */
+    @ApiModelProperty("起息日")
+    private String valueDate;
+    /** $column.columnComment */
+    @ApiModelProperty("$column.columnComment")
+    private String result;
+}

+ 88 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/sdk/bo/TopBankBillEditBo.java

@@ -0,0 +1,88 @@
+package com.zhongzheng.modules.sdk.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import java.util.Date;
+
+import java.math.BigDecimal;
+
+/**
+ * 银行账单编辑对象 top_bank_bill
+ *
+ * @author ruoyi
+ * @date 2023-11-15
+ */
+@Data
+@ApiModel("银行账单编辑对象")
+public class TopBankBillEditBo {
+
+    /** $column.columnComment */
+    @ApiModelProperty("$column.columnComment")
+    private Long id;
+
+    /** 余额 */
+    @ApiModelProperty("余额")
+    private BigDecimal acctOnlineBal;
+
+    /** 修改时间 */
+    @ApiModelProperty("修改时间")
+    private Long updateTime;
+
+    /** 状态 1正常 0关闭 */
+    @ApiModelProperty("状态 1正常 0关闭")
+    private Integer status;
+
+    /** 收付方名称 */
+    @ApiModelProperty("收付方名称")
+    private String ctpAcctName;
+
+    /** 收付方帐号 */
+    @ApiModelProperty("收付方帐号")
+    private String ctpAcctNbr;
+
+    /** 收付方开户行地址 */
+    @ApiModelProperty("收付方开户行地址")
+    private String ctpBankAddress;
+
+    /** 收付方开户行行名 */
+    @ApiModelProperty("收付方开户行行名")
+    private String ctpBankName;
+
+    /** 扩展摘要 */
+    @ApiModelProperty("扩展摘要")
+    private String extendedRemark;
+
+    @ApiModelProperty("")
+    private String infoFlag;
+
+    /** 你方摘要 */
+    @ApiModelProperty("你方摘要")
+    private String remarkTextClt;
+
+    /** 交易金额 */
+    @ApiModelProperty("交易金额")
+    private BigDecimal transAmount;
+
+    /** 交易日 */
+    @ApiModelProperty("交易日")
+    private String transDate;
+
+    /** 流水号 */
+    @ApiModelProperty("流水号")
+    private String transSequenceIdn;
+
+    /** 交易时间 */
+    @ApiModelProperty("交易时间")
+    private String transTime;
+
+    /** 起息日 */
+    @ApiModelProperty("起息日")
+    private String valueDate;
+
+    /** $column.columnComment */
+    @ApiModelProperty("$column.columnComment")
+    private String result;
+
+}

+ 85 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/sdk/bo/TopBankBillQueryBo.java

@@ -0,0 +1,85 @@
+package com.zhongzheng.modules.sdk.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+import java.util.Map;
+import java.util.HashMap;
+
+import java.math.BigDecimal;
+import com.zhongzheng.common.core.domain.BaseEntity;
+
+/**
+ * 银行账单分页查询对象 top_bank_bill
+ *
+ * @author ruoyi
+ * @date 2023-11-15
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("银行账单分页查询对象")
+public class TopBankBillQueryBo extends BaseEntity {
+
+	/** 分页大小 */
+	@ApiModelProperty("分页大小")
+	private Integer pageSize;
+	/** 当前页数 */
+	@ApiModelProperty("当前页数")
+	private Integer pageNum;
+	/** 排序列 */
+	@ApiModelProperty("排序列")
+	private String orderByColumn;
+	/** 排序的方向desc或者asc */
+	@ApiModelProperty(value = "排序的方向", example = "asc,desc")
+	private String isAsc;
+
+
+	/** 余额 */
+	@ApiModelProperty("余额")
+	private BigDecimal acctOnlineBal;
+	/** 状态 1正常 0关闭 */
+	@ApiModelProperty("状态 1正常 0关闭")
+	private Integer status;
+	/** 收付方名称 */
+	@ApiModelProperty("收付方名称")
+	private String ctpAcctName;
+	/** 收付方帐号 */
+	@ApiModelProperty("收付方帐号")
+	private String ctpAcctNbr;
+	/** 收付方开户行地址 */
+	@ApiModelProperty("收付方开户行地址")
+	private String ctpBankAddress;
+	/** 收付方开户行行名 */
+	@ApiModelProperty("收付方开户行行名")
+	private String ctpBankName;
+	/** 扩展摘要 */
+	@ApiModelProperty("扩展摘要")
+	private String extendedRemark;
+
+	@ApiModelProperty("")
+	private String infoFlag;
+	/** 你方摘要 */
+	@ApiModelProperty("你方摘要")
+	private String remarkTextClt;
+	/** 交易金额 */
+	@ApiModelProperty("交易金额")
+	private BigDecimal transAmount;
+	/** 交易日 */
+	@ApiModelProperty("交易日")
+	private String transDate;
+	/** 流水号 */
+	@ApiModelProperty("流水号")
+	private String transSequenceIdn;
+	/** 交易时间 */
+	@ApiModelProperty("交易时间")
+	private String transTime;
+	/** 起息日 */
+	@ApiModelProperty("起息日")
+	private String valueDate;
+	/** $column.columnComment */
+	@ApiModelProperty("$column.columnComment")
+	private String result;
+}

+ 73 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/sdk/domain/TopBankBill.java

@@ -0,0 +1,73 @@
+package com.zhongzheng.modules.sdk.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.zhongzheng.common.annotation.Excel;
+
+/**
+ * 银行账单对象 top_bank_bill
+ *
+ * @author ruoyi
+ * @date 2023-11-15
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("top_bank_bill")
+public class TopBankBill implements Serializable {
+
+private static final long serialVersionUID=1L;
+
+    /** $column.columnComment */
+    @TableId(value = "id")
+    private Long id;
+    /** 余额 */
+    private BigDecimal acctOnlineBal;
+    /** 添加时间 */
+    @TableField(fill = FieldFill.INSERT)
+    private Long createTime;
+    /** 修改时间 */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Long updateTime;
+    /** 状态 1正常 0关闭 */
+    private Integer status;
+    /** 收付方名称 */
+    private String ctpAcctName;
+    /** 收付方帐号 */
+    private String ctpAcctNbr;
+    /** 收付方开户行地址 */
+    private String ctpBankAddress;
+    /** 收付方开户行行名 */
+    private String ctpBankName;
+    /** 扩展摘要 */
+    private String extendedRemark;
+    /** 用于标识收/付方帐号和母/子公司的信息。
+
+为空表示付方帐号和子公司;
+
+为“1”表示收方帐号和子公司;
+
+为“2”表示收方帐号和母公司;
+
+为“3”表示原收方帐号和子公司; */
+    private String infoFlag;
+    /** 你方摘要 */
+    private String remarkTextClt;
+    /** 交易金额 */
+    private BigDecimal transAmount;
+    /** 交易日 */
+    private String transDate;
+    /** 流水号 */
+    private String transSequenceIdn;
+    /** 交易时间 */
+    private String transTime;
+    /** 起息日 */
+    private String valueDate;
+    /** $column.columnComment */
+    private String result;
+}

+ 14 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/sdk/mapper/TopBankBillMapper.java

@@ -0,0 +1,14 @@
+package com.zhongzheng.modules.sdk.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zhongzheng.modules.sdk.domain.TopBankBill;
+
+/**
+ * 银行账单Mapper接口
+ *
+ * @author ruoyi
+ * @date 2023-11-15
+ */
+public interface TopBankBillMapper extends BaseMapper<TopBankBill> {
+
+}

+ 53 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/sdk/service/ITopBankBillService.java

@@ -0,0 +1,53 @@
+package com.zhongzheng.modules.sdk.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhongzheng.modules.sdk.bo.TopBankBillAddBo;
+import com.zhongzheng.modules.sdk.bo.TopBankBillEditBo;
+import com.zhongzheng.modules.sdk.bo.TopBankBillQueryBo;
+import com.zhongzheng.modules.sdk.domain.TopBankBill;
+import com.zhongzheng.modules.sdk.vo.TopBankBillVo;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 银行账单Service接口
+ *
+ * @author ruoyi
+ * @date 2023-11-15
+ */
+public interface ITopBankBillService extends IService<TopBankBill> {
+	/**
+	 * 查询单个
+	 * @return
+	 */
+	TopBankBillVo queryById(Long id);
+
+	/**
+	 * 查询列表
+	 */
+	List<TopBankBillVo> queryList(TopBankBillQueryBo bo);
+
+	/**
+	 * 根据新增业务对象插入银行账单
+	 * @param bo 银行账单新增业务对象
+	 * @return
+	 */
+	Boolean insertByAddBo(TopBankBillAddBo bo);
+
+	/**
+	 * 根据编辑业务对象修改银行账单
+	 * @param bo 银行账单编辑业务对象
+	 * @return
+	 */
+	Boolean updateByEditBo(TopBankBillEditBo bo);
+
+	/**
+	 * 校验并删除数据
+	 * @param ids 主键集合
+	 * @param isValid 是否校验,true-删除前校验,false-不校验
+	 * @return
+	 */
+	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 9 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/sdk/service/IZsBankService.java

@@ -0,0 +1,9 @@
+package com.zhongzheng.modules.sdk.service;
+
+
+
+public interface IZsBankService {
+
+    Boolean searchBreakPoint(String queryAcctNbr,String cardNbr,String beginDate,String endDate);
+
+}

+ 112 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/sdk/service/impl/TopBankBillServiceImpl.java

@@ -0,0 +1,112 @@
+package com.zhongzheng.modules.sdk.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.StrUtil;
+import com.zhongzheng.common.utils.DateUtils;
+import com.zhongzheng.modules.sdk.bo.TopBankBillAddBo;
+import com.zhongzheng.modules.sdk.bo.TopBankBillEditBo;
+import com.zhongzheng.modules.sdk.bo.TopBankBillQueryBo;
+import com.zhongzheng.modules.sdk.domain.TopBankBill;
+import com.zhongzheng.modules.sdk.mapper.TopBankBillMapper;
+import com.zhongzheng.modules.sdk.service.ITopBankBillService;
+import com.zhongzheng.modules.sdk.vo.TopBankBillVo;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.github.pagehelper.Page;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 银行账单Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2023-11-15
+ */
+@Service
+public class TopBankBillServiceImpl extends ServiceImpl<TopBankBillMapper, TopBankBill> implements ITopBankBillService {
+
+    @Override
+    public TopBankBillVo queryById(Long id){
+        TopBankBill db = this.baseMapper.selectById(id);
+        return BeanUtil.toBean(db, TopBankBillVo.class);
+    }
+
+    @Override
+    public List<TopBankBillVo> queryList(TopBankBillQueryBo bo) {
+        LambdaQueryWrapper<TopBankBill> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getAcctOnlineBal() != null, TopBankBill::getAcctOnlineBal, bo.getAcctOnlineBal());
+        lqw.eq(bo.getStatus() != null, TopBankBill::getStatus, bo.getStatus());
+        lqw.like(StrUtil.isNotBlank(bo.getCtpAcctName()), TopBankBill::getCtpAcctName, bo.getCtpAcctName());
+        lqw.eq(StrUtil.isNotBlank(bo.getCtpAcctNbr()), TopBankBill::getCtpAcctNbr, bo.getCtpAcctNbr());
+        lqw.eq(StrUtil.isNotBlank(bo.getCtpBankAddress()), TopBankBill::getCtpBankAddress, bo.getCtpBankAddress());
+        lqw.like(StrUtil.isNotBlank(bo.getCtpBankName()), TopBankBill::getCtpBankName, bo.getCtpBankName());
+        lqw.eq(StrUtil.isNotBlank(bo.getExtendedRemark()), TopBankBill::getExtendedRemark, bo.getExtendedRemark());
+        lqw.eq(StrUtil.isNotBlank(bo.getInfoFlag()), TopBankBill::getInfoFlag, bo.getInfoFlag());
+        lqw.eq(StrUtil.isNotBlank(bo.getRemarkTextClt()), TopBankBill::getRemarkTextClt, bo.getRemarkTextClt());
+        lqw.eq(bo.getTransAmount() != null, TopBankBill::getTransAmount, bo.getTransAmount());
+        lqw.eq(StrUtil.isNotBlank(bo.getTransDate()), TopBankBill::getTransDate, bo.getTransDate());
+        lqw.eq(StrUtil.isNotBlank(bo.getTransSequenceIdn()), TopBankBill::getTransSequenceIdn, bo.getTransSequenceIdn());
+        lqw.eq(StrUtil.isNotBlank(bo.getTransTime()), TopBankBill::getTransTime, bo.getTransTime());
+        lqw.eq(StrUtil.isNotBlank(bo.getValueDate()), TopBankBill::getValueDate, bo.getValueDate());
+        lqw.eq(StrUtil.isNotBlank(bo.getResult()), TopBankBill::getResult, bo.getResult());
+        return entity2Vo(this.list(lqw));
+    }
+
+    /**
+    * 实体类转化成视图对象
+    *
+    * @param collection 实体类集合
+    * @return
+    */
+    private List<TopBankBillVo> entity2Vo(Collection<TopBankBill> collection) {
+        List<TopBankBillVo> voList = collection.stream()
+                .map(any -> BeanUtil.toBean(any, TopBankBillVo.class))
+                .collect(Collectors.toList());
+        if (collection instanceof Page) {
+            Page<TopBankBill> page = (Page<TopBankBill>)collection;
+            Page<TopBankBillVo> pageVo = new Page<>();
+            BeanUtil.copyProperties(page,pageVo);
+            pageVo.addAll(voList);
+            voList = pageVo;
+        }
+        return voList;
+    }
+
+    @Override
+    public Boolean insertByAddBo(TopBankBillAddBo bo) {
+        TopBankBill add = BeanUtil.toBean(bo, TopBankBill.class);
+        validEntityBeforeSave(add);
+        add.setCreateTime(DateUtils.getNowTime());
+        add.setUpdateTime(DateUtils.getNowTime());
+        return this.save(add);
+    }
+
+    @Override
+    public Boolean updateByEditBo(TopBankBillEditBo bo) {
+        TopBankBill update = BeanUtil.toBean(bo, TopBankBill.class);
+        validEntityBeforeSave(update);
+        update.setUpdateTime(DateUtils.getNowTime());
+        return this.updateById(update);
+    }
+
+    /**
+     * 保存前的数据校验
+     *
+     * @param entity 实体类数据
+     */
+    private void validEntityBeforeSave(TopBankBill entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return this.removeByIds(ids);
+    }
+}

+ 184 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/sdk/service/impl/ZsBankServiceImpl.java

@@ -0,0 +1,184 @@
+package com.zhongzheng.modules.sdk.service.impl;
+
+import cn.hutool.core.lang.Validator;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonObject;
+import com.zhongzheng.common.core.redis.RedisCache;
+import com.zhongzheng.common.exception.CustomException;
+import com.zhongzheng.common.utils.DateUtils;
+import com.zhongzheng.common.utils.bank.DCCryptor;
+import com.zhongzheng.common.utils.bank.DCHelper;
+import com.zhongzheng.modules.exam.bo.ExamApplySiteTimeTwoAddBo;
+import com.zhongzheng.modules.sdk.bo.TopBankBillAddBo;
+import com.zhongzheng.modules.sdk.service.ITopBankBillService;
+import com.zhongzheng.modules.sdk.service.IZsBankService;
+import com.zhongzheng.modules.sdk.service.NuonuoService;
+import nuonuo.open.sdk.NNOpenSDK;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import java.nio.charset.StandardCharsets;
+import java.util.*;
+import java.net.URLEncoder;
+
+@Service
+public class ZsBankServiceImpl implements IZsBankService {
+    private static final Logger LOGGER = LoggerFactory.getLogger(ZsBankServiceImpl.class);
+    @Value("${ZsBank.publickey}")
+    private String bankpubkey;
+    @Value("${ZsBank.privatekey}")
+    private String privkey;
+    @Value("${ZsBank.sm4key}")
+    private String sm4key;
+
+    private static Base64.Encoder encoder = Base64.getEncoder();
+    private static Base64.Decoder decoder = Base64.getDecoder();
+
+    private static final String ALG_SM = "SM"; // 采用国密算法
+
+    private static String UID = "N002463271"; // 测试的用户编号
+
+    private static String URL = "http://cdctest.cmburl.cn:80/cdcserver/api/v2"; // 银行服务地址(测试)
+  //  private static String bankpubkey = "BNsIe9U0x8IeSe4h/dxUzVEz9pie0hDSfMRINRXc7s1UIXfkExnYECF4QqJ2SnHxLv3z/99gsfDQrQ6dzN5lZj0="; // 银行公钥
+
+ //   private static String privkey = "NBtl7WnuUtA2v5FaebEkU0/Jj1IodLGT6lQqwkzmd2E=";
+  //  private static String sm4key = "VuAzSWQhsoNqzn0K";//"1234567890123456"; // 用户的对称密钥
+
+    private static String FunCode = "trsQryByBreakPoint"; // 测试的用户编号
+
+    @Autowired
+    private ITopBankBillService iTopBankBillService;
+
+
+    @Override
+    public Boolean searchBreakPoint(String queryAcctNbr,String cardNbr,String beginDate,String endDate) {
+        // 组织发送报文
+        JsonObject obj = new JsonObject();
+        JsonObject req = new JsonObject();
+        JsonObject body = new JsonObject();
+        JsonObject head = new JsonObject();
+        head.addProperty("funcode", FunCode); //DCLISMOD
+        head.addProperty("userid", UID);
+        head.addProperty("reqid", DCHelper.getTime() + "0000001");
+        Integer transactionSequence = 1;
+
+        JsonArray array = new JsonArray();
+        JsonObject item = new JsonObject();
+        item.addProperty("cardNbr", cardNbr);
+        item.addProperty("beginDate", beginDate);
+        item.addProperty("endDate", endDate);
+   //     item.addProperty("transactionSequence", transactionSequence);
+        if(Validator.isNotEmpty(queryAcctNbr)){
+            item.addProperty("queryAcctNbr", queryAcctNbr);
+        }
+
+
+        array.add(item);
+        body.add("TRANSQUERYBYBREAKPOINT_X1", array);
+
+        req.add("head", head);
+        req.add("body", body);
+        obj.add("request", req);
+
+        // 请求发送接收
+        String result = doProcess(obj,FunCode);
+        JSONObject jsonObject = (JSONObject) JSONObject.parse(result);
+        JSONObject resultObject = jsonObject.getJSONObject("response").getJSONObject("body");
+        JSONArray z1 = resultObject.getJSONArray("TRANSQUERYBYBREAKPOINT_Z1");
+        if(resultObject.containsKey("TRANSQUERYBYBREAKPOINT_Z2")){
+            JSONArray z2 = resultObject.getJSONArray("TRANSQUERYBYBREAKPOINT_Z2");
+            List<TopBankBillAddBo> list = JSONArray.parseArray(z2.toJSONString(), TopBankBillAddBo.class);
+            int i = 0;
+            for(TopBankBillAddBo addBo : list){
+                addBo.setResult(z2.getJSONObject(i).toJSONString());
+                iTopBankBillService.insertByAddBo(addBo);
+            }
+            System.out.println(list);
+        }
+        if(z1.size()>0){
+            JSONObject fObject = z1.getJSONObject(0);
+            String ctnFlag =(String) fObject.get("ctnFlag");
+            if("Y".equals(ctnFlag)){
+                String queryAcctNbrNext =(String) fObject.get("queryAcctNbr");
+                searchBreakPoint(queryAcctNbrNext,cardNbr,beginDate,endDate);
+            }
+
+        }
+        return null;
+    }
+
+    private  String doProcess(JsonObject jObject,String funCode)  {
+        try {
+            JsonObject object = new JsonObject();
+            // 签名
+            object.addProperty("sigdat", "__signature_sigdat__");
+            object.addProperty("sigtim", DCHelper.getTime());
+            jObject.add("signature", object);
+            String source = DCHelper.serialJsonOrdered(jObject);
+    //        System.out.println("签名原文: " + source);
+    //        System.out.println("签名原文A: " + decoder.decode(privkey));
+            byte[] signature1 = DCCryptor.CMBSM2SignWithSM3(getID_IV(), decoder.decode(privkey), source.getBytes(StandardCharsets.UTF_8));
+            String sigdat1 = new String(encoder.encode(signature1));
+    //        System.out.println("签名结果: " + sigdat1);
+            object.addProperty("sigdat", sigdat1);
+
+            // SM4-CBC加密
+            String plaintxt = jObject.toString();
+   //         System.out.println("加密前req:  " + plaintxt);
+            byte[] enInput = DCCryptor.CMBSM4EncryptWithCBC(sm4key.getBytes(), getID_IV(), plaintxt.getBytes(StandardCharsets.UTF_8));
+
+            String req = new String(encoder.encode(enInput));
+    //        System.out.println("加密后req:  " + req);
+
+            // 发送请求
+            HashMap<String, String> map = new HashMap<>();
+            map.put("UID", UID);
+            map.put("ALG", ALG_SM);
+            map.put("DATA", URLEncoder.encode(req, "utf-8"));
+            map.put("FUNCODE", funCode);
+            String res = DCHelper.doPostForm(URL, map);
+    //        System.out.println("res:  " + res);
+            try {
+                decoder.decode(res);
+            } catch (Exception e) {
+                System.err.println("访问返回错误.");
+                throw new CustomException("网银解码错误");
+            }
+
+            // 解密请求
+            String resplain = new String(DCCryptor.CMBSM4DecryptWithCBC(sm4key.getBytes(), getID_IV(), decoder.decode(res)), StandardCharsets.UTF_8);
+    //        System.out.println("res decrypt: " + resplain);
+
+            // 验签
+            JsonObject object2 = new GsonBuilder().create().fromJson(resplain, JsonObject.class);
+            JsonObject object3 = object2.getAsJsonObject("signature");
+            String resSign = object3.get("sigdat").getAsString();
+            object3.addProperty("sigdat", "__signature_sigdat__");
+            object2.add("signature", object3);
+            String resSignSource = DCHelper.serialJsonOrdered(object2);
+            System.out.println("验签原文: " + resSignSource);
+            boolean verify = DCCryptor.CMBSM2VerifyWithSM3(getID_IV(), decoder.decode(bankpubkey), resSignSource.getBytes(StandardCharsets.UTF_8), decoder.decode(resSign));
+    //        System.out.println("验签结果: " + verify);
+            if(verify){
+                return resSignSource;
+            }else{
+                throw new CustomException("网银验签错误");
+            }
+        }catch (Exception e){
+            throw new CustomException("网银错误"+e.getMessage());
+        }
+
+    }
+
+    private static byte[] getID_IV() {
+        String uid = UID; // 请替换为实际的用户UID
+        String userid = uid + "0000000000000000";
+        return userid.substring(0, 16).getBytes();
+    }
+}

+ 87 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/sdk/vo/TopBankBillVo.java

@@ -0,0 +1,87 @@
+package com.zhongzheng.modules.sdk.vo;
+
+import com.zhongzheng.common.annotation.Excel;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.math.BigDecimal;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 银行账单视图对象 mall_package
+ *
+ * @author ruoyi
+ * @date 2023-11-15
+ */
+@Data
+@ApiModel("银行账单视图对象")
+public class TopBankBillVo {
+	private static final long serialVersionUID = 1L;
+
+	/** $pkColumn.columnComment */
+	@ApiModelProperty("$pkColumn.columnComment")
+	private Long id;
+
+	/** 余额 */
+	@Excel(name = "余额")
+	@ApiModelProperty("余额")
+	private BigDecimal acctOnlineBal;
+	/** 状态 1正常 0关闭 */
+	@Excel(name = "状态 1正常 0关闭")
+	@ApiModelProperty("状态 1正常 0关闭")
+	private Integer status;
+	/** 收付方名称 */
+	@Excel(name = "收付方名称")
+	@ApiModelProperty("收付方名称")
+	private String ctpAcctName;
+	/** 收付方帐号 */
+	@Excel(name = "收付方帐号")
+	@ApiModelProperty("收付方帐号")
+	private String ctpAcctNbr;
+	/** 收付方开户行地址 */
+	@Excel(name = "收付方开户行地址")
+	@ApiModelProperty("收付方开户行地址")
+	private String ctpBankAddress;
+	/** 收付方开户行行名 */
+	@Excel(name = "收付方开户行行名")
+	@ApiModelProperty("收付方开户行行名")
+	private String ctpBankName;
+	/** 扩展摘要 */
+	@Excel(name = "扩展摘要")
+	@ApiModelProperty("扩展摘要")
+	private String extendedRemark;
+	/** */
+	@Excel(name = "")
+	private String infoFlag;
+	/** 你方摘要 */
+	@Excel(name = "你方摘要")
+	@ApiModelProperty("你方摘要")
+	private String remarkTextClt;
+	/** 交易金额 */
+	@Excel(name = "交易金额")
+	@ApiModelProperty("交易金额")
+	private BigDecimal transAmount;
+	/** 交易日 */
+	@Excel(name = "交易日")
+	@ApiModelProperty("交易日")
+	private String transDate;
+	/** 流水号 */
+	@Excel(name = "流水号")
+	@ApiModelProperty("流水号")
+	private String transSequenceIdn;
+	/** 交易时间 */
+	@Excel(name = "交易时间")
+	@ApiModelProperty("交易时间")
+	private String transTime;
+	/** 起息日 */
+	@Excel(name = "起息日")
+	@ApiModelProperty("起息日")
+	private String valueDate;
+	/** $column.columnComment */
+	@Excel(name = "起息日")
+	@ApiModelProperty("$column.columnComment")
+	private String result;
+}

+ 3 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/service/impl/TopInformSysUserServiceImpl.java

@@ -74,8 +74,9 @@ public class TopInformSysUserServiceImpl extends ServiceImpl<TopInformSysUserMap
         }
         informSysUserVos.forEach(item -> {
             if (ObjectUtils.isNotNull(item.getRemindId())){
-                TopInformRemind informRemind = iInformRemindService.getById(item.getRemindId());
-                item.setType(informRemind.getType());
+//                TopInformRemind informRemind = iInformRemindService.getById(item.getRemindId());
+//                item.setType(informRemind.getType());
+                item.setType(1);
             }else {
                 item.setType(1);
             }

+ 44 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/vo/TopOrderGoodsOrgVo.java

@@ -0,0 +1,44 @@
+package com.zhongzheng.modules.top.financial.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 成本模板对象 top_cost_tp
+ *
+ * @author ruoyi
+ * @date 2023-04-20
+ */
+@Data
+public class TopOrderGoodsOrgVo implements Serializable {
+
+    @ApiModelProperty("订单编号")
+    private String orderSn;
+
+    @ApiModelProperty("分成类型1百分比 2固定成本")
+    private Integer divideType;
+
+    @ApiModelProperty("分成比率(固定成本为固定值)")
+    private BigDecimal divideRate;
+
+    @ApiModelProperty("分成比率(固定成本为固定值)")
+    private String divideRateStr;
+
+    @ApiModelProperty("分成钱")
+    private BigDecimal divideMoney;
+
+    @ApiModelProperty("学习状态:0未开始,1学习中,2已结束")
+    private String studyStatus;
+
+    @ApiModelProperty("审核意见")
+    private String checkReason;
+
+    @ApiModelProperty("申请原因")
+    private String applyReason;
+
+    private Long signId;
+
+}

+ 36 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/vo/TopOrderOrgVo.java

@@ -0,0 +1,36 @@
+package com.zhongzheng.modules.top.financial.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * 成本模板对象 top_cost_tp
+ *
+ * @author ruoyi
+ * @date 2023-04-20
+ */
+@Data
+public class TopOrderOrgVo implements Serializable {
+
+    @ApiModelProperty("订单编号")
+    private String orderSn;
+
+    @ApiModelProperty("分成模式 1机构分成 2业务员分成")
+    private Integer divideModel;
+
+    @ApiModelProperty("机构分成钱")
+    private BigDecimal divideCompanyMoney;
+
+    @ApiModelProperty("业务员分成钱")
+    private BigDecimal divideSellerMoney;
+
+    @ApiModelProperty("分成审核状态 1正常 2待审核 3审核中  4审核不通过 5审核通过待支付 6支付中 7已支付 8支付失败")
+    private Integer divideStatus;
+
+    @ApiModelProperty("订单商品")
+    private List<TopOrderGoodsOrgVo> goodsOrgVos;
+}

+ 18 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/bo/TopOldOrderAddBo.java

@@ -183,6 +183,15 @@ public class TopOldOrderAddBo {
     @ApiModelProperty("佣金")
     private BigDecimal brokerage;
 
+    @ApiModelProperty("佣金支付类型:1微信 4现金 5网银")
+    private Integer brokerageType;
+    @ApiModelProperty("银行账号")
+    private String brokerageBankAccount;
+    @ApiModelProperty("账号名称")
+    private String brokerageBankName;
+    @ApiModelProperty("账号名称")
+    private String brokerageBank;
+
     @ApiModelProperty("下单企业")
     private String purchaseOrg;
 
@@ -194,4 +203,13 @@ public class TopOldOrderAddBo {
 
     @ApiModelProperty("新B端订单审核标识:1需要 0不需要")
     private Integer checkSign;
+
+    @ApiModelProperty("对应客户Id")
+    private Long oldCompanyId;
+
+    @ApiModelProperty("客户ID")
+    private Long oldCustomerId;
+
+    @ApiModelProperty("订单所属机构")
+    private Long oldInstitutionId;
 }

+ 4 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/bo/TopOldOrderGoodsAddBo.java

@@ -82,6 +82,10 @@ public class TopOldOrderGoodsAddBo {
 
     @ApiModelProperty("学员状态:0待审核,-1已取消")
     private Integer checkStatus;
+    @ApiModelProperty("申请修改时间")
+    private Integer applyUpTime;
+    @ApiModelProperty("申请修改原因")
+    private String applyUpReason;
     @ApiModelProperty("旧系统自增ID")
     private Long signId;
     @ApiModelProperty("关联的旧系统自增ID(修改学员时使用)")

+ 7 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/bo/TopOldOrderGoodsQuery.java

@@ -6,6 +6,7 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import javax.validation.constraints.NotBlank;
 import java.util.List;
 
 /**
@@ -32,7 +33,13 @@ public class TopOldOrderGoodsQuery extends BaseEntity {
 	@ApiModelProperty(value = "排序的方向", example = "asc,desc")
 	private String isAsc;
 
+	@ApiModelProperty("当前时间戳")
+	@NotBlank(message = "当前时间戳不能为空")
+	private Long stamp;
 
+	@ApiModelProperty("签名")
+	@NotBlank(message = "签名不能为空")
+	private String sign;
 	/** 订单编号 */
 	@ApiModelProperty("订单编号")
 	private String orderSn;

+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/bo/TopOldOrderQueryBo.java

@@ -163,4 +163,10 @@ public class TopOldOrderQueryBo extends BaseEntity {
 
 	@ApiModelProperty("预付超期时间戳")
 	private Long overPayDayTime;
+
+	@ApiModelProperty("下单客户")
+	private String purchaseOrg;
+
+	@ApiModelProperty("补款金额标识")
+	private Integer repairSign;
 }

+ 11 - 3
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/domain/TopOldOrder.java

@@ -130,6 +130,14 @@ private static final long serialVersionUID=1L;
     private BigDecimal pretax;
     /** 佣金 */
     private BigDecimal brokerage;
+    /** 佣金支付类型:1微信 4现金 5网银 */
+    private Integer brokerageType;
+    /** 奖金支付银行账号 */
+    private String brokerageBankAccount;
+    /** 奖金支付账号名称 */
+    private String brokerageBankName;
+    /** 奖金支付银行名称 */
+    private String brokerageBank;
     /** 待扣分成钱 */
     private BigDecimal deductDivideMoney;
     /** 开户银行 */
@@ -163,9 +171,9 @@ private static final long serialVersionUID=1L;
     @ApiModelProperty("补款金额")
     private BigDecimal repairMoneyTotal;
     /** 对应客户Id */
-    private Integer oldCompanyId;
+    private Long oldCompanyId;
     /** 客户ID */
-    private Integer oldCustomerId;
+    private Long oldCustomerId;
     /** 订单所属机构 */
-    private Integer oldInstitutionId;
+    private Long oldInstitutionId;
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/domain/TopOldOrderGoods.java

@@ -75,6 +75,8 @@ private static final long serialVersionUID=1L;
     private String businessFullName;
     /** 学习状态:0未开始,1学习中,2已结束 */
     private Integer checkStatus;
+    /** 审核意见 */
+    private String checkReason;
     /** 学申请修改时间 */
     private Long applyUpTime;
     /** 申请修改原因 */

+ 4 - 3
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/mapper/TopOldOrderMapper.java

@@ -9,6 +9,7 @@ import com.zhongzheng.modules.top.goods.domain.TopOldOrder;
 import com.zhongzheng.modules.top.goods.vo.TopOldOrderInvoiceVo;
 import com.zhongzheng.modules.top.goods.vo.TopOldOrderRefundVo;
 import com.zhongzheng.modules.top.goods.vo.TopOldOrderVo;
+import com.zhongzheng.modules.top.order.bo.TopDetailStatisticsTotal;
 import com.zhongzheng.modules.top.order.bo.TopOrderStatisticsBo;
 import com.zhongzheng.modules.top.order.bo.TopOrderStatisticsViewBo;
 import com.zhongzheng.modules.top.order.vo.*;
@@ -77,7 +78,7 @@ public interface TopOldOrderMapper extends BaseMapper<TopOldOrder> {
 
     Long getSingleTenantStatisticsOrderNum(TopOrderStatisticsBo bo);
 
-    Long getNumStatisticsTotalWithBo(TopOrderStatisticsBo bo);
+    BigDecimal getNumStatisticsTotalWithBo(TopOrderStatisticsBo bo);
 
     BigDecimal getMoneyStatisticsWithBo(TopOrderStatisticsBo bo);
 
@@ -93,9 +94,9 @@ public interface TopOldOrderMapper extends BaseMapper<TopOldOrder> {
 
     List<TopOrderStatisticsDetailVo> getDetailStatistics(TopOrderStatisticsBo bo);
 
-    TopOrderStatisticsDetailTotalVo getDetailStatisticsTotal(@Param("startTime")Long startTime,@Param("endTime")Long endTime);
+    TopOrderStatisticsDetailTotalVo getDetailStatisticsTotal(TopDetailStatisticsTotal total);
 
-    Long getOrderTenant(Long customerId);
+    String getOrderTenant(String customerId);
 
     List<TopOrderCustomerVo> getCustomerList();
 

+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/service/ITopOldOrderService.java

@@ -188,4 +188,10 @@ public interface ITopOldOrderService extends IService<TopOldOrder> {
 	List<TopOrderStatisticsTwoVo> getTenantCreateList(TopOrderStatisticsViewBo bo);
 
     TableDataInfo<TopConversionRateDataVo> getCustomerOrderData(TopOrderStatisticsBo bo);
+
+	List<TopTenantDataVo> getTenantListData();
+
+	List<TopTenantDataVo> getSaleListData(TopOrderStatisticsBo bo);
+
+	TopOrderOrgVo getTopOrderGoodsList(TopOldOrderQueryBo bo);
 }

Diff do ficheiro suprimidas por serem muito extensas
+ 434 - 177
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/service/impl/TopOldOrderServiceImpl.java


+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/vo/TopOldOrderGoodsListVo.java

@@ -80,6 +80,8 @@ public class TopOldOrderGoodsListVo {
 	private Integer checkStatus;
 	@ApiModelProperty("退款申请原因")
 	private String refundReason;
+	@ApiModelProperty("申请时间")
+	private Long applyUpTime;
 	@ApiModelProperty("审核意见")
 	private String checkReason;
 	@ApiModelProperty("分成类型1百分比 2固定成本")
@@ -92,6 +94,10 @@ public class TopOldOrderGoodsListVo {
 	private BigDecimal divideMoney;
 	@ApiModelProperty("税前奖金")
 	private BigDecimal pretaxBrokerage;
+	@ApiModelProperty("补款金额")
+	private BigDecimal repairMoney;
+	@ApiModelProperty("补款证明")
+	private String repairProve;
 
 	private Long signId;
 

+ 14 - 3
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/vo/TopOldOrderVo.java

@@ -222,7 +222,7 @@ public class TopOldOrderVo {
 	@ApiModelProperty("业务员分成钱")
 	private BigDecimal divideSellerMoney;
 	/** 分成审核状态 1正常 2待审核 3审核中  4审核不通过 5审核通过待支付 6已支付 */
-	@ApiModelProperty("分成审核状态 1正常 2待审核 3审核中  4审核不通过 5审核通过待支付 6已支付")
+	@ApiModelProperty("分成审核状态 1正常 2待审核 3审核中  4审核不通过 5审核通过待支付 6支付中 7已支付 8支付失败")
 	private Integer divideStatus;
 
 	@ApiModelProperty("角色名称")
@@ -256,8 +256,7 @@ public class TopOldOrderVo {
 		if (ObjectUtils.isNull(pretax)){
 			return "0";
 		}
-		BigDecimal multiply = pretax.multiply(new BigDecimal("100.00"));
-		return multiply.intValue()+"%";
+		return pretax.intValue()+"%";
 	}
 
 	@ApiModelProperty("税率")
@@ -267,6 +266,8 @@ public class TopOldOrderVo {
 	/** 账款结清时间 */
 	private Long creditTime;
 
+	@ApiModelProperty("补款金额")
+	private BigDecimal repairMoneyTotal;
 
 	@ApiModelProperty("是否坏账")
 	private boolean badBill;
@@ -295,4 +296,14 @@ public class TopOldOrderVo {
 
 	@ApiModelProperty("认款金额")
 	private BigDecimal acceptanceMoney;
+	@ApiModelProperty("佣金支付类型:1微信 4现金 5网银")
+	private Integer brokerageType;
+	@ApiModelProperty("状态:0待审核,1已通过,-1未通过,2待支付,3已支付 4审核中(非自己待审核显示审核中) 5支付失败(佣金结算) 6支付中")
+	private Integer brokerageCheck;
+
+	@ApiModelProperty("发票金额")
+	private BigDecimal invoiceMoney;
+
+	@ApiModelProperty("发票申请时间")
+	private String invoiceDate;
 }

+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/vo/TopRefundUserVo.java

@@ -35,9 +35,15 @@ public class TopRefundUserVo {
     @ApiModelProperty("学员身份证")
     private String userCard;
 
+    @ApiModelProperty("商品标准价格")
+    private BigDecimal goodsPrice;
+
     @ApiModelProperty("退款金额")
     private BigDecimal refundFee;
 
+    @ApiModelProperty("实际退款金额")
+    private BigDecimal realRefundFee;
+
     @ApiModelProperty("退款理由")
     private String refundReason;
 

+ 34 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopDetailStatisticsTotal.java

@@ -0,0 +1,34 @@
+package com.zhongzheng.modules.top.order.bo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author yangdamao
+ * @date 2023年11月21日 16:29
+ */
+@Data
+public class TopDetailStatisticsTotal implements Serializable {
+
+    @ApiModelProperty("开始时间")
+    private Long startTime;
+
+    @ApiModelProperty("结束时间")
+    private Long endTime;
+
+    private String customerId;
+
+    private String customerName;
+
+    @ApiModelProperty("业务号")
+    private String createNo;
+
+    @ApiModelProperty("企业ID")
+    private String tenantId;
+
+    @ApiModelProperty("业务层次")
+    private String businessName;
+
+}

+ 4 - 4
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopOrderAcceptanceExportBo.java

@@ -23,8 +23,8 @@ public class TopOrderAcceptanceExportBo implements Serializable {
     @Excel(name = "*收款账户名")
     private String incomeName;
     /** 收款账户行 */
-    @ApiModelProperty("收款账户行")
-    @Excel(name = "*收款账户名")
+    @ApiModelProperty("收款银行名")
+    @Excel(name = "*收款银行名")
     private String incomeBank;
     /** 收款账户号 */
     @ApiModelProperty("收款账户号")
@@ -37,10 +37,10 @@ public class TopOrderAcceptanceExportBo implements Serializable {
     /** 到账时间 */
     @ApiModelProperty("到账时间")
     @Excel(name = "*到账时间 yyyy/MM/dd")
-    private String incomeTime;
+    private String incomeTimeStr;
     /** 付款账户名 */
     @ApiModelProperty("付款账户名")
-    @Excel(name = "*到账时间")
+    @Excel(name = "*付款账户名")
     private String payName;
     /** 付款账户行 */
     @ApiModelProperty("付款账户行")

+ 4 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopOrderStatisticsBo.java

@@ -29,7 +29,7 @@ public class TopOrderStatisticsBo implements Serializable {
     @ApiModelProperty("结束时间")
     private Long endTime;
 
-    private Long customerId;
+    private String customerId;
 
     private String customerName;
 
@@ -46,4 +46,7 @@ public class TopOrderStatisticsBo implements Serializable {
     private Integer type;
 
     private Integer sort;
+
+    @ApiModelProperty("业务员ID")
+    private String createSysUserId;
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopOrderStatisticsViewBo.java

@@ -38,5 +38,7 @@ public class TopOrderStatisticsViewBo implements Serializable {
     @ApiModelProperty("业务号")
     private String createNo;
 
+    @ApiModelProperty("业务员ID")
+    private String createSysUserId;
 
 }

+ 6 - 3
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/service/impl/TopOrderAcceptanceServiceImpl.java

@@ -104,8 +104,11 @@ public class TopOrderAcceptanceServiceImpl extends ServiceImpl<TopOrderAcceptanc
         }
         List<TopOrderAcceptance> collect = acceptanceExportBos.stream().map(item -> {
             TopOrderAcceptance bo = BeanUtil.toBean(item, TopOrderAcceptance.class);
-            bo.setIncomeMoney(new BigDecimal(item.getIncomeMoney()));
-            bo.setIncomeTime(DateUtils.dateTimeSec(item.getIncomeTime(),"yyyy/MM/dd"));
+            BigDecimal bigDecimal = new BigDecimal(item.getIncomeMoney());
+            bo.setIncomeMoney(bigDecimal);
+            //待认款金额
+            bo.setUnacceptanceMoney(bigDecimal);
+            bo.setIncomeTime(DateUtils.dateTimeSec("yyyy/MM/dd",item.getIncomeTimeStr()));
             bo.setAcceptanceType(1);
             bo.setIncomeType(1);
             bo.setIncomeDepartment("祥粤学校");
@@ -116,7 +119,7 @@ public class TopOrderAcceptanceServiceImpl extends ServiceImpl<TopOrderAcceptanc
             return bo;
         }).collect(Collectors.toList());
 
-        return updateBatchById(collect);
+        return saveBatch(collect);
     }
 
     @Override

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopConversionRateDataVo.java

@@ -52,6 +52,9 @@ public class TopConversionRateDataVo implements Serializable {
     @ApiModelProperty("机构名称")
     private String orgName;
 
+    @ApiModelProperty("机构ID")
+    private String orgId;
+
     @ApiModelProperty("业务员名称")
     private String saleMan;
 

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopOrderCustomerVo.java

@@ -13,7 +13,7 @@ import java.io.Serializable;
 public class TopOrderCustomerVo implements Serializable {
 
     @ApiModelProperty("客户ID")
-    private Long customerId;
+    private String customerId;
 
     @ApiModelProperty("客户名称")
     private String customerName;

+ 9 - 7
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopOrderStatisticsDetailVo.java

@@ -14,10 +14,10 @@ import java.math.BigDecimal;
 public class TopOrderStatisticsDetailVo implements Serializable {
 
     @ApiModelProperty("客户ID")
-    private Long customerId;
+    private String customerId;
 
     @ApiModelProperty("机构ID")
-    private Long tenantId;
+    private String tenantId;
 
     @ApiModelProperty("客户名称")
     private String customerName;
@@ -29,22 +29,22 @@ public class TopOrderStatisticsDetailVo implements Serializable {
     private Integer orderType;
 
     @ApiModelProperty("环比")
-    private BigDecimal weekRate;
+    private BigDecimal weekRate = BigDecimal.ZERO;
 
     @ApiModelProperty("同比")
-    private BigDecimal yearRate;
+    private BigDecimal yearRate = BigDecimal.ZERO;
 
     @ApiModelProperty("占比")
     private String occupationRate;
 
     @ApiModelProperty("金额")
-    private BigDecimal money;
+    private BigDecimal money = BigDecimal.ZERO;
 
     @ApiModelProperty("环比")
-    private BigDecimal moneyWeekRate;
+    private BigDecimal moneyWeekRate = BigDecimal.ZERO;
 
     @ApiModelProperty("同比")
-    private BigDecimal moneyYearRate;
+    private BigDecimal moneyYearRate = BigDecimal.ZERO;
 
     @ApiModelProperty("占比")
     private String moneyOccupationRate;
@@ -61,4 +61,6 @@ public class TopOrderStatisticsDetailVo implements Serializable {
     @ApiModelProperty("业务层次")
     private String businessName;
 
+    @ApiModelProperty("业务员ID")
+    private String createSysUserId;
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopOrderStatisticsMoneyVo.java

@@ -14,7 +14,7 @@ import java.math.BigDecimal;
 public class TopOrderStatisticsMoneyVo implements Serializable {
 
     @ApiModelProperty("客户ID")
-    private Long customerId;
+    private String customerId;
 
     @ApiModelProperty("客户名称")
     private String customerName;

+ 4 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopOrderStatisticsNumVo.java

@@ -14,7 +14,7 @@ import java.math.BigDecimal;
 public class TopOrderStatisticsNumVo implements Serializable {
 
     @ApiModelProperty("客户ID")
-    private Long customerId;
+    private String customerId;
 
     @ApiModelProperty("客户名称")
     private String customerName;
@@ -46,4 +46,7 @@ public class TopOrderStatisticsNumVo implements Serializable {
     @ApiModelProperty("业务层次")
     private String businessName;
 
+    @ApiModelProperty("业务员ID")
+    private String createSysUserId;
+
 }

+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopOrderStatisticsTwoVo.java

@@ -42,5 +42,11 @@ public class TopOrderStatisticsTwoVo implements Serializable {
     @ApiModelProperty("业务员编号")
     private String createNo;
 
+    @ApiModelProperty("企业ID")
+    private String tenantId;
+
+    @ApiModelProperty("业务员ID")
+    private String createSysUserId;
+
 
 }

+ 5 - 5
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopOrderTotalVo.java

@@ -17,17 +17,17 @@ public class TopOrderTotalVo implements Serializable {
     private Long orderNum;
 
     @ApiModelProperty("环比")
-    private BigDecimal weekRate;
+    private BigDecimal weekRate = BigDecimal.ZERO;
 
     @ApiModelProperty("同比")
-    private BigDecimal yearRate;
+    private BigDecimal yearRate = BigDecimal.ZERO;
 
     @ApiModelProperty("金额")
-    private BigDecimal money;
+    private BigDecimal money = BigDecimal.ZERO;
 
     @ApiModelProperty("金额环比")
-    private BigDecimal moneyWeekRate;
+    private BigDecimal moneyWeekRate = BigDecimal.ZERO;
 
     @ApiModelProperty("金额同比")
-    private BigDecimal moneyYearRate;
+    private BigDecimal moneyYearRate = BigDecimal.ZERO;
 }

+ 22 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopTenantDataVo.java

@@ -0,0 +1,22 @@
+package com.zhongzheng.modules.top.order.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author yangdamao
+ * @date 2023年10月31日 14:50
+ */
+@Data
+public class TopTenantDataVo implements Serializable {
+
+    @ApiModelProperty("ID")
+    private Long id;
+
+    @ApiModelProperty("名称")
+    private String name;
+
+
+}

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/settle/service/ITopInstSettleService.java

@@ -36,7 +36,7 @@ public interface ITopInstSettleService extends IService<TopInstSettle> {
 
     boolean checkSettle(CheckSettleBo bo);
 
-    BigDecimal getSettleTotalMoney(SettleQueryBo bo);
+    TopOrderSettleVo getSettleTotalMoney(SettleQueryBo bo);
 
     SettleVo getSettlePayInfo(Long settleId);
 

+ 18 - 6
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/settle/service/impl/ITopInstSettleServiceImpl.java

@@ -118,7 +118,7 @@ public class ITopInstSettleServiceImpl extends ServiceImpl<TopInstSettleMapper,
         if (CollectionUtils.isEmpty(businessNames)){
             throw new CustomException("订单不存在业务层,请检查!");
         }
-        String eduName = getBusinessFullName(bo.getEducationTypeId(),bo.getProjectId(),bo.getBusinessId());
+        String eduName = getOldBusinessFullName(bo.getBusinessId());
         if (businessNames.stream().noneMatch(x -> x.contains(eduName))){
             throw new CustomException("订单业务层次不匹配,请检查!");
         }
@@ -272,7 +272,7 @@ public class ITopInstSettleServiceImpl extends ServiceImpl<TopInstSettleMapper,
             tpBusinessName = baseMapper.geTopCostBusinessName(tpItem.getId());
         }else {
             //模板业务层次全称
-            tpBusinessName = getBusinessFullName(paramBo.getEducationTypeId(),paramBo.getProjectId(),paramBo.getBusinessId());
+            tpBusinessName = getOldBusinessFullName(paramBo.getBusinessId());
         }
 
         for (SettleOrderImportBo bo : orderImportBo) {
@@ -866,7 +866,8 @@ public class ITopInstSettleServiceImpl extends ServiceImpl<TopInstSettleMapper,
     }
 
     @Override
-    public BigDecimal getSettleTotalMoney(SettleQueryBo bo) {
+    public TopOrderSettleVo getSettleTotalMoney(SettleQueryBo bo) {
+        TopOrderSettleVo settleVo = new TopOrderSettleVo();
         if (ObjectUtil.isNotNull(bo.getCheckStatus())
                 && (bo.getCheckStatus() == 2 || bo.getCheckStatus() == 7) && !bo.getLoginName().equals("admin")){
             List<TopSysUserRole> roleList = topSysUserRoleService.list(new LambdaQueryWrapper<TopSysUserRole>().eq(TopSysUserRole::getUserId, bo.getLoginId()));
@@ -876,9 +877,15 @@ public class ITopInstSettleServiceImpl extends ServiceImpl<TopInstSettleMapper,
         }
         List<SettleVo> settleVos = baseMapper.getSettleList(bo);
         if (CollectionUtils.isEmpty(settleVos)){
-            return BigDecimal.ZERO;
-        }
-        return settleVos.stream().filter(x -> ObjectUtil.isNotNull(x.getSettleMoney())).map(SettleVo::getSettleMoney).reduce(BigDecimal.ZERO,BigDecimal::add);
+            settleVo.setSettleMoney(BigDecimal.ZERO);
+            settleVo.setSettleCheckNum(0L);
+            return settleVo;
+        }
+        BigDecimal reduce = settleVos.stream().filter(x -> ObjectUtil.isNotNull(x.getSettleMoney())).map(SettleVo::getSettleMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
+        settleVo.setSettleMoney(reduce);
+        Integer size = settleVos.stream().filter(x -> x.getCheckStatus() == 1 || x.getCheckStatus() == 2).collect(Collectors.toList()).size();
+        settleVo.setSettleCheckNum(Long.valueOf(size));
+        return settleVo;
     }
 
     @Override
@@ -1191,4 +1198,9 @@ public class ITopInstSettleServiceImpl extends ServiceImpl<TopInstSettleMapper,
         TopCourseBusiness business = topCourseBusinessService.getById(businessId);
         return educationType.getEducationName()+business.getBusinessName()+projectType.getProjectName();
     }
+
+    private String getOldBusinessFullName(Long businessId){
+        TopCourseBusiness business = topCourseBusinessService.getById(businessId);
+        return business.getOldBusinessName();
+    }
 }

+ 21 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/settle/vo/TopOrderSettleVo.java

@@ -0,0 +1,21 @@
+package com.zhongzheng.modules.top.settle.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @author yangdamao
+ * @date 2023年11月23日 8:54
+ */
+@Data
+public class TopOrderSettleVo implements Serializable {
+
+    @ApiModelProperty("结算金额")
+    private BigDecimal settleMoney;
+
+    @ApiModelProperty("待审结算")
+    private Long settleCheckNum;
+}

+ 63 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserPeriodImportBo.java

@@ -0,0 +1,63 @@
+package com.zhongzheng.modules.user.bo;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * @author yangdamao
+ * @date 2023年11月21日 10:40
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+public class UserPeriodImportBo implements Serializable {
+
+    private Long userId;
+
+    private String studentCode;
+
+    private String importNo;
+
+    @Excel(name = "*学员姓名")
+    private String userName;
+
+    @Excel(name = "*身份证号")
+    private String userCard;
+
+    @Excel(name = "*手机号")
+    private String userPhone;
+
+    @Excel(name = "性别")
+    private String sex;
+
+    @Excel(name = "培训岗位")
+    private String applyPost;
+
+    @Excel(name = "毕业院校")
+    private String school;
+
+    @Excel(name = "学历")
+    private String education;
+
+    @Excel(name = "所学专业")
+    private String major;
+
+    @Excel(name = "毕业时间(yyyy-MM-dd)")
+    private String graduationTime;
+
+    @Excel(name = "工作年限")
+    private String workingYears;
+
+    @Excel(name = "单位联系人")
+    private String unitContact;
+
+    @Excel(name = "联系电话")
+    private String unitTel;
+
+    @Excel(name = "失败原因")
+    private String cause;
+}

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/IUserService.java

@@ -142,4 +142,6 @@ public interface IUserService extends IService<User> {
     User getByIdNoTenant(Long userId);
 
     User getByCardNoTenant(String idCard);
+
+	Map<String, Object> importSevenUser(List<UserPeriodImportBo> userList);
 }

+ 1 - 0
zhongzheng-system/src/main/resources/mapper/modules/goods/GoodsMapper.xml

@@ -1039,6 +1039,7 @@
         where
               g.goods_status = 1
               and g.status = 1
+              and g.goods_type != 5
               and g.education_type_id = #{educationTypeId}
               and g.project_id = #{projectId}
               and g.business_id = #{businessId}

+ 2 - 0
zhongzheng-system/src/main/resources/mapper/modules/order/OrderGoodsMapper.xml

@@ -802,6 +802,7 @@
     <resultMap id="getlist" type="com.zhongzheng.modules.top.goods.vo.TopOldOrderGoodsListVo">
         <result property="orderGoodsId" column="order_goods_id"/>
         <result property="gradeId" column="grade_id"/>
+        <result property="goodsId" column="goods_id"/>
         <result property="userId" column="user_id" />
         <result property="userName" column="realname" />
         <result property="userCard" column="id_card" typeHandler="com.zhongzheng.common.type.EncryptHandler"/>
@@ -823,6 +824,7 @@
         SELECT
             og.order_goods_id,
             og.grade_id,
+            og.goods_id,
             u.user_id,
             u.realname,
             u.id_card,

+ 7 - 5
zhongzheng-system/src/main/resources/mapper/modules/settle/ExamActivityMapper.xml

@@ -103,11 +103,13 @@
             </if>
             <if test="checkStatus != null and checkStatus != ''and checkStatus == 7">
                 AND tis.check_status = 2
-                AND ((SELECT tcl.role_id FROM top_old_order_check_log tcl
-                WHERE tis.settle_sn = tcl.order_sn AND tcl.check_sign = 1 AND tcl.`status` = 1 LIMIT 1) IN
-                <foreach collection="roleIds" item="item" index="index" open="(" close=")" separator=",">
-                    #{item}
-                </foreach>)
+                <if test="roleIds != null and roleIds.size()!=0">
+                    AND ((SELECT tcl.role_id FROM top_old_order_check_log tcl
+                    WHERE tis.settle_sn = tcl.order_sn AND tcl.check_sign = 1 AND tcl.`status` = 1 LIMIT 1) IN
+                    <foreach collection="roleIds" item="item" index="index" open="(" close=")" separator=",">
+                        #{item}
+                    </foreach>)
+                </if>
             </if>
             <if test="checkStatus != null and checkStatus != '' and checkStatus != 7">
                 AND tis.check_status = #{checkStatus}

+ 3 - 0
zhongzheng-system/src/main/resources/mapper/modules/top/TopDivideOrderMapper.xml

@@ -286,6 +286,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <if test="accomplishStartTime != null and accomplishStartTime != ''">
             AND v.accomplish_time BETWEEN #{accomplishStartTime} and #{accomplishEndTime}
         </if>
+        <if test="buyStartTime != null and buyStartTime != ''">
+            AND v.create_time BETWEEN #{buyStartTime} and #{buyEndTime}
+        </if>
         <if test="tenantId != null and tenantId != ''">
             AND v.tenant_id = #{tenantId}
         </if>

+ 13 - 1
zhongzheng-system/src/main/resources/mapper/modules/top/TopOldOrderGoodsMapper.xml

@@ -30,6 +30,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <resultMap id="getlist" type="com.zhongzheng.modules.top.goods.vo.TopOldOrderGoodsListVo">
         <result property="orderGoodsId" column="order_goods_id"/>
+        <result property="goodsId" column="goods_id"/>
         <result property="userName" column="user_name"/>
         <result property="userCard" column="user_card" typeHandler="com.zhongzheng.common.type.EncryptHandler"/>
         <result property="userPhone" column="user_phone"/>
@@ -40,15 +41,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="goodsRealPrice" column="goods_real_price"/>
         <result property="signId" column="sign_id"/>
         <result property="checkStatus" column="check_status"/>
+        <result property="checkReason" column="check_reason"/>
+        <result property="applyUpTime" column="apply_up_time"/>
+        <result property="refundReason" column="apply_up_reason"/>
         <result property="goodsYear" column="goods_year"/>
         <result property="divideType" column="divide_type"/>
         <result property="divideRate" column="divide_rate"/>
         <result property="divideMoney" column="divide_money"/>
+        <result property="repairMoney" column="repair_money"/>
+        <result property="repairProve" column="repairProve"/>
     </resultMap>
 
     <select id="getListByQuery" parameterType="com.zhongzheng.modules.top.goods.bo.TopOldOrderGoodsQuery" resultMap="getlist">
         SELECT
             order_goods_id,
+            goods_id,
             user_name,
             user_card,
             user_phone,
@@ -63,9 +70,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             divide_rate,
             divide_money,
             check_status,
+            check_reason,
+            apply_up_time,
+            apply_up_reason,
             divide_type,
             divide_rate,
-            divide_money
+            divide_money,
+            repair_money,
+            repair_prove
         FROM
             top_old_order_goods
         WHERE

Diff do ficheiro suprimidas por serem muito extensas
+ 435 - 69
zhongzheng-system/src/main/resources/mapper/modules/top/TopOldOrderMapper.xml


+ 4 - 4
zhongzheng-system/src/main/resources/mapper/modules/top/TopOrderAcceptanceMapper.xml

@@ -13,7 +13,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
       WHERE
           `status` = 1
             <if test="businessAffiliation != null and businessAffiliation != ''">
-                AND business_affiliation = #{invoiceStatus}
+                AND business_affiliation = #{businessAffiliation}
             </if>
             <if test="incomeType != null and incomeType != ''">
                 AND income_type = #{incomeType}
@@ -28,7 +28,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 AND acceptance_id IN (SELECT acceptance_id FROM top_order_acceptance_rel WHERE `status` = 1 AND order_sn = #{orderSn})
             </if>
             <if test="orderClient != null and orderClient != ''">
-                AND order_client = #{orderClient}
+                AND order_client like CONCAT('%',#{orderClient},'%')
             </if>
             <if test="incomeStartTime != null and incomeStartTime != ''">
                 AND income_time <![CDATA[ >= ]]> #{incomeStartTime}
@@ -66,7 +66,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 AND t.create_no = #{createNo}
             </if>
             <if test="purchaseOrg != null and purchaseOrg != ''">
-                AND t.purchase_org = #{purchaseOrg}
+                AND t.purchase_org like CONCAT('%',#{purchaseOrg},'%')
             </if>
             <if test="userKey != null and userKey != ''">
                 AND (
@@ -78,7 +78,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 tog.order_sn = t.order_sn
                 AND tog.`status` = 1
                 AND tog.check_status = 1
-                AND ( tog.user_name = #{userKey} OR tog.user_card = #{userKey,typeHandler=com.zhongzheng.common.type.EncryptHandler} )) > 0
+                AND ( tog.user_name like CONCAT('%',#{userKey},'%') OR tog.user_card = #{userKey,typeHandler=com.zhongzheng.common.type.EncryptHandler} )) > 0
             </if>
             ORDER BY t.create_time DESC
     </select>

Alguns ficheiros não foram mostrados porque muitos ficheiros mudaram neste diff