he2802 пре 2 година
родитељ
комит
543a2542f5
100 измењених фајлова са 1244 додато и 221 уклоњено
  1. 12 0
      run-prod.sh
  2. 19 4
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/order/TopOldOrderController.java
  3. 150 0
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/order/TopOrderAcceptanceController.java
  4. 149 0
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/order/TopOrderStatisticsController.java
  5. 88 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/system/SysProfileController.java
  7. 1 1
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/system/SysTenantController.java
  8. 2 2
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/top/TopSysUserController.java
  9. 12 0
      zhongzheng-admin-saas/src/main/resources/application-dev.yml
  10. 11 0
      zhongzheng-admin-saas/src/main/resources/application-pre.yml
  11. 10 7
      zhongzheng-admin-saas/src/main/resources/application-prod.yml
  12. 4 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/activity/ActivityRecommendController.java
  13. 61 21
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/common/CommonController.java
  14. 2 1
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/grade/ClassGradeController.java
  15. 0 13
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/order/OrderController.java
  16. 22 1
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/schedule/ScheduleController.java
  17. 1 1
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/system/SysLoginController.java
  18. 1 1
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/system/SysProfileController.java
  19. 2 2
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/system/SysUserController.java
  20. 74 4
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/user/UserSubscribeController.java
  21. 11 0
      zhongzheng-admin/src/main/resources/application-dev.yml
  22. 10 0
      zhongzheng-admin/src/main/resources/application-pre.yml
  23. 10 7
      zhongzheng-admin/src/main/resources/application-prod.yml
  24. 4 0
      zhongzheng-api/src/main/java/com/zhongzheng/controller/cmmon/ActivityRecommendController.java
  25. 14 2
      zhongzheng-api/src/main/java/com/zhongzheng/controller/cmmon/CommonController.java
  26. 10 0
      zhongzheng-api/src/main/java/com/zhongzheng/controller/order/OrderController.java
  27. 1 1
      zhongzheng-api/src/main/java/com/zhongzheng/controller/user/UserController.java
  28. 1 1
      zhongzheng-api/src/main/java/com/zhongzheng/controller/user/UserStudyRecordController.java
  29. 11 0
      zhongzheng-api/src/main/resources/application-dev.yml
  30. 11 0
      zhongzheng-api/src/main/resources/application-pre.yml
  31. 11 7
      zhongzheng-api/src/main/resources/application-prod.yml
  32. 1 1
      zhongzheng-common/src/main/java/com/zhongzheng/common/core/domain/entity/SysDictType.java
  33. 1 1
      zhongzheng-common/src/main/java/com/zhongzheng/common/core/domain/entity/SysMenu.java
  34. 1 1
      zhongzheng-common/src/main/java/com/zhongzheng/common/core/domain/entity/SysUser.java
  35. 109 0
      zhongzheng-common/src/main/java/com/zhongzheng/common/utils/DateUtils.java
  36. 16 10
      zhongzheng-common/src/main/java/com/zhongzheng/common/utils/ToolsUtils.java
  37. 1 1
      zhongzheng-common/src/main/java/com/zhongzheng/common/utils/http/HttpUtils.java
  38. 210 0
      zhongzheng-common/src/main/java/com/zhongzheng/common/utils/poi/ExcelUtil.java
  39. BIN
      zhongzheng-common/src/main/resources/static/001.png
  40. BIN
      zhongzheng-common/src/main/resources/static/002.jpg
  41. BIN
      zhongzheng-common/src/main/resources/static/0020.jpg
  42. BIN
      zhongzheng-common/src/main/resources/static/0024.jpg
  43. BIN
      zhongzheng-common/src/main/resources/static/003.jpg
  44. BIN
      zhongzheng-common/src/main/resources/static/0030.jpg
  45. BIN
      zhongzheng-common/src/main/resources/static/00312.jpg
  46. BIN
      zhongzheng-common/src/main/resources/static/0033.jpg
  47. BIN
      zhongzheng-common/src/main/resources/static/004.jpg
  48. BIN
      zhongzheng-common/src/main/resources/static/005.jpg
  49. BIN
      zhongzheng-common/src/main/resources/static/006.jpg
  50. BIN
      zhongzheng-common/src/main/resources/static/2323.jpg
  51. 1 1
      zhongzheng-framework/src/main/java/com/zhongzheng/framework/aspectj/LogAspect.java
  52. 1 2
      zhongzheng-framework/src/main/java/com/zhongzheng/framework/config/SecurityConfig.java
  53. 24 12
      zhongzheng-framework/src/main/java/com/zhongzheng/framework/mybatisplus/CustomTenantLineInnerInterceptor.java
  54. 1 1
      zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/DistributionSellerServiceImpl.java
  55. 5 5
      zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/SysLoginService.java
  56. 34 24
      zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/SysTenantServiceImpl.java
  57. 25 15
      zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/UserServiceImpl.java
  58. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/bo/ActivityRecommendQueryBo.java
  59. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/domain/ActivityGoodsPrice.java
  60. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/domain/ActivityOrder.java
  61. 12 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/service/impl/ActivityRecommendServiceImpl.java
  62. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/vo/ActivityRecommendVo.java
  63. 31 32
      zhongzheng-system/src/main/java/com/zhongzheng/modules/alioss/service/impl/OssServiceImpl.java
  64. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/alisms/service/impl/AliSmsServiceImpl.java
  65. 8 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/bo/QuestionBusinessAddBo.java
  66. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/domain/Exam.java
  67. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/domain/ExamQuestion.java
  68. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/domain/Question.java
  69. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/domain/QuestionBusiness.java
  70. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/domain/QuestionChapter.java
  71. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/domain/QuestionChapterExam.java
  72. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/domain/QuestionModule.java
  73. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/domain/QuestionModuleChapter.java
  74. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/mapper/ExamMapper.java
  75. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/mapper/ExamQuestionMapper.java
  76. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/mapper/QuestionBusinessMapper.java
  77. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/mapper/QuestionChapterExamMapper.java
  78. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/mapper/QuestionChapterMapper.java
  79. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/mapper/QuestionMapper.java
  80. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/mapper/QuestionModuleChapterMapper.java
  81. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/mapper/QuestionModuleMapper.java
  82. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/IExamQuestionService.java
  83. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/IExamService.java
  84. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/IQuestionBusinessService.java
  85. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/IQuestionChapterExamService.java
  86. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/IQuestionChapterService.java
  87. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/IQuestionModuleChapterService.java
  88. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/IQuestionModuleService.java
  89. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/IQuestionService.java
  90. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/impl/ExamQuestionServiceImpl.java
  91. 3 3
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/impl/ExamServiceImpl.java
  92. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/impl/QuestionBusinessServiceImpl.java
  93. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/impl/QuestionChapterExamServiceImpl.java
  94. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/impl/QuestionChapterServiceImpl.java
  95. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/impl/QuestionModuleChapterServiceImpl.java
  96. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/impl/QuestionModuleServiceImpl.java
  97. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/impl/QuestionServiceImpl.java
  98. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/vo/ExamVo.java
  99. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/base/domain/Certificate.java
  100. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/base/domain/CertificateCommon.java

+ 12 - 0
run-prod.sh

@@ -1,3 +1,10 @@
+
+
+echo "开始等待20秒..."
+# 1-10秒内随机
+sleep 5
+echo "等待后继续"
+
 #!/usr/bin/env bash
 # 定义应用组名
 group_admin_name='zhongzheng'
@@ -32,3 +39,8 @@ docker run \
 -v /data/nginx/conf.d:/data/nginx/conf.d \
 -d ${group_admin_name}/${app_admin_name}:${app_admin_version}
 echo '----start container admin----'
+
+echo "开始等待20秒..."
+# 1-10秒内随机
+sleep 5
+echo "等待后继续"

+ 19 - 4
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/order/TopOldOrderController.java

@@ -15,10 +15,7 @@ import com.zhongzheng.modules.top.financial.vo.TopCostTpVo;
 import com.zhongzheng.modules.top.financial.vo.TopOrderLogVo;
 import com.zhongzheng.modules.top.goods.bo.*;
 import com.zhongzheng.modules.top.goods.service.ITopOldOrderService;
-import com.zhongzheng.modules.top.goods.vo.TopOldOrderGoodsListVo;
-import com.zhongzheng.modules.top.goods.vo.TopOldOrderVo;
-import com.zhongzheng.modules.top.goods.vo.TopOrderStatisticsVo;
-import com.zhongzheng.modules.top.goods.vo.TopRefundOrderDetailVo;
+import com.zhongzheng.modules.top.goods.vo.*;
 import com.zhongzheng.modules.top.order.vo.TopOldOrderCommissionExportVo;
 import com.zhongzheng.modules.top.order.vo.TopOldOrderCompanyExportVo;
 import com.zhongzheng.modules.top.order.vo.TopOldOrderSellerExportVo;
@@ -92,6 +89,24 @@ public class TopOldOrderController extends BaseController {
         return getDataTable(list);
     }
 
+    /**
+     * 订单学员审核列表
+     */
+    @ApiOperation("订单学员审核列表")
+    @GetMapping("/goods/apply/list/{orderSn}")
+    public AjaxResult<TopOldOrderUpVo> getOrderGoodsApplyList(@PathVariable("orderSn" ) String orderSn) {
+        return AjaxResult.success(iTopOldOrderService.getOrderGoodsApplyList(orderSn));
+    }
+
+    /**
+     * 订单发票信息
+     */
+    @ApiOperation("订单发票信息")
+    @GetMapping("/invoice/list/{orderSn}")
+    public AjaxResult<List<TopOldOrderInvoiceVo>> getOrderInvoiceList(@PathVariable("orderSn" ) String orderSn) {
+        return AjaxResult.success(iTopOldOrderService.getOrderInvoiceList(orderSn));
+    }
+
     /**
      * 订单学员信息导出
      */

+ 150 - 0
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/order/TopOrderAcceptanceController.java

@@ -0,0 +1,150 @@
+package com.zhongzheng.controller.order;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.alibaba.fastjson.JSON;
+import com.zhongzheng.common.annotation.Log;
+import com.zhongzheng.common.core.controller.BaseController;
+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.ServletUtils;
+import com.zhongzheng.common.utils.poi.EasyPoiUtil;
+import com.zhongzheng.common.utils.poi.ExcelUtil;
+import com.zhongzheng.modules.course.bo.CourseSectionBusinessAddBo;
+import com.zhongzheng.modules.course.vo.CourseChapterSectionImport;
+import com.zhongzheng.modules.distribution.bo.DistributionActivityPosterQueryBo;
+import com.zhongzheng.modules.distribution.vo.DistributionActivityPosterVo;
+import com.zhongzheng.modules.top.goods.bo.TopOldOrderAddBo;
+import com.zhongzheng.modules.top.goods.bo.TopOldOrderQueryBo;
+import com.zhongzheng.modules.top.goods.vo.TopOldOrderVo;
+import com.zhongzheng.modules.top.order.bo.*;
+import com.zhongzheng.modules.top.order.service.ITopOrderAcceptanceService;
+import com.zhongzheng.modules.top.order.vo.TopOrderAcceptanceStatisticsVo;
+import com.zhongzheng.modules.top.order.vo.TopOrderAcceptanceVo;
+import com.zhongzheng.modules.user.bo.UserImportAddBo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 订单认款Controller
+ *
+ * @author ruoyi
+ * @date 2023-04-20
+ */
+@Api(value = "订单认款", tags = {"订单认款"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/system/top/acceptance")
+public class TopOrderAcceptanceController extends BaseController {
+
+    private final ITopOrderAcceptanceService iTopOrderAcceptanceService;
+
+    /**
+     * 查询认款列表
+     */
+    @ApiOperation("查询认款列表")
+    @GetMapping("/list")
+    public TableDataInfo<TopOrderAcceptanceVo> list(TopOrderAcceptanceBo bo) {
+        startPage();
+        List<TopOrderAcceptanceVo> list = iTopOrderAcceptanceService.queryAcceptanceList(bo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 查询认款统计
+     */
+    @ApiOperation("查询认款统计")
+    @GetMapping("/statistics")
+    public AjaxResult<TopOrderAcceptanceStatisticsVo> statistics() {
+        TopOrderAcceptanceStatisticsVo vo = iTopOrderAcceptanceService.statistics();
+        return AjaxResult.success(vo);
+    }
+
+    /**
+     * 认款订单列表
+     */
+    @ApiOperation("认款订单列表")
+    @GetMapping("/order/list")
+    public TableDataInfo<TopOldOrderVo> getAcceptanceOrderList(TopAcceptanceOrderBo bo) {
+        startPage();
+        List<TopOldOrderVo> list = iTopOrderAcceptanceService.getAcceptanceOrderList(bo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 认款关联订单列表
+     */
+    @ApiOperation("认款关联订单列表")
+    @GetMapping("/order/rel/{acceptanceId}")
+    public AjaxResult<List<TopOldOrderVo>> getAcceptanceOrderRelList(@PathVariable("acceptanceId")Long acceptanceId) {
+        List<TopOldOrderVo> list = iTopOrderAcceptanceService.getAcceptanceOrderRelList(acceptanceId);
+        return AjaxResult.success(list);
+    }
+
+    /**
+     * 订单认款
+     */
+    @ApiOperation("订单认款")
+    @PostMapping("/rel")
+    public AjaxResult<Void> addOrderAcceptanceRel(@RequestBody TopOrderAcceptanceRelBo bo) {
+        return toAjax(iTopOrderAcceptanceService.addOrderAcceptanceRel(bo) ? 1 : 0);
+    }
+
+
+    /**
+     * 新增认款记录
+     */
+    @ApiOperation("新增认款记录")
+    @PostMapping("/save")
+    public AjaxResult<Void> add(@RequestBody TopOrderAcceptanceAddBo bo) {
+        return toAjax(iTopOrderAcceptanceService.insertByAddBo(bo) ? 1 : 0);
+    }
+
+    /**
+     * 删除认款记录
+     */
+    @ApiOperation("删除认款记录")
+    @PostMapping("/delete")
+    public AjaxResult<Void> add(@RequestBody TopOrderAcceptanceBo bo) {
+        return toAjax(iTopOrderAcceptanceService.deleteByAddBo(bo) ? 1 : 0);
+    }
+
+    @ApiOperation("认款记录导入")
+    @PostMapping("/importData")
+    public AjaxResult<Void> importData(MultipartFile file) {
+        ExcelUtil<TopOrderAcceptanceExportBo> util = new ExcelUtil<TopOrderAcceptanceExportBo>(TopOrderAcceptanceExportBo.class);
+        List<TopOrderAcceptanceExportBo> acceptanceExportBos;
+        try {
+            acceptanceExportBos = util.importExcel(file.getInputStream());
+        }catch (Exception e){
+            e.printStackTrace();
+            throw new IllegalArgumentException("模板格式不正确,请重新下载模板");
+        }
+        return toAjax(iTopOrderAcceptanceService.importData(acceptanceExportBos)? 1 : 0);
+    }
+
+    /**
+     * 导出【请填写功能名称】列表
+     */
+    @ApiOperation("认款记录导出")
+    @GetMapping("/export")
+    public AjaxResult<DistributionActivityPosterVo> export(TopOrderAcceptanceBo bo) {
+        List<TopOrderAcceptanceVo> list = iTopOrderAcceptanceService.queryAcceptanceList(bo);
+        List<TopOrderAcceptanceExportBo> collect = list.stream().map(item -> {
+            TopOrderAcceptanceExportBo exportBo = BeanUtil.toBean(item, TopOrderAcceptanceExportBo.class);
+            return exportBo;
+        }).collect(Collectors.toList());
+        ExcelUtil<TopOrderAcceptanceExportBo> util = new ExcelUtil<TopOrderAcceptanceExportBo>(TopOrderAcceptanceExportBo.class);
+        return util.exportExcel(collect, "认款记录表");
+    }
+}

+ 149 - 0
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/order/TopOrderStatisticsController.java

@@ -0,0 +1,149 @@
+package com.zhongzheng.controller.order;
+
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import com.zhongzheng.framework.web.service.TopTokenService;
+import com.zhongzheng.modules.top.goods.service.ITopOldOrderService;
+import com.zhongzheng.modules.top.order.bo.TopOrderStatisticsBo;
+import com.zhongzheng.modules.top.order.bo.TopOrderStatisticsViewBo;
+import com.zhongzheng.modules.top.order.vo.*;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 订单Controller
+ *
+ * @author ruoyi
+ * @date 2023-04-20
+ */
+@Api(value = "订单统计控制器", tags = {"订单统计控制器"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/system/top/order/statistics")
+public class TopOrderStatisticsController extends BaseController {
+
+    private final ITopOldOrderService iTopOldOrderService;
+
+    private final TopTokenService tokenService;
+
+    /**
+     * 下单客户订单金额统计
+     */
+    @ApiOperation("下单客户订单金额统计")
+    @GetMapping("/money")
+    public TableDataInfo<TopOrderStatisticsMoneyVo> orderMoneyStatisticsList(TopOrderStatisticsBo bo) {
+        startPage();
+        List<TopOrderStatisticsMoneyVo> list = iTopOldOrderService.orderMoneyStatisticsList(bo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 下单客户订单数量统计
+     */
+    @ApiOperation("下单客户订单数量统计")
+    @GetMapping("/num")
+    public TableDataInfo<TopOrderStatisticsNumVo> orderNumStatisticsList(TopOrderStatisticsBo bo) {
+        startPage();
+        List<TopOrderStatisticsNumVo> list = iTopOldOrderService.orderNumStatisticsList(bo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 下单客户订单走势图
+     */
+    @ApiOperation("下单客户订单走势图")
+    @GetMapping("/view")
+    public AjaxResult<TopOrderStatisticsViewVo> orderStatisticsView(TopOrderStatisticsViewBo bo) {
+        return AjaxResult.success(iTopOldOrderService.orderStatisticsView(bo));
+    }
+
+    /**
+     * 下单客户订单详情
+     */
+    @ApiOperation("下单客户订单详情")
+    @GetMapping("/detail")
+    public TableDataInfo<TopOrderStatisticsDetailVo> orderStatisticsDetail(TopOrderStatisticsBo bo) {
+        startPage();
+        List<TopOrderStatisticsDetailVo> list = iTopOldOrderService.orderStatisticsDetail(bo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 下单客户订单金额统计
+     */
+    @ApiOperation("机构订单金额统计")
+    @GetMapping("/moneyByTenant")
+    public TableDataInfo<TopOrderStatisticsMoneyVo> orderMoneyTenantStatistics(TopOrderStatisticsBo bo) {
+        startPage();
+        List<TopOrderStatisticsMoneyVo> list = iTopOldOrderService.orderMoneyTenantStatistics(bo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 下单客户订单数量统计
+     */
+    @ApiOperation("机构订单数量统计")
+    @GetMapping("/numByTenant")
+    public TableDataInfo<TopOrderStatisticsNumVo> orderNumTenantStatistics(TopOrderStatisticsBo bo) {
+        startPage();
+        List<TopOrderStatisticsNumVo> list = iTopOldOrderService.orderNumTenantStatistics(bo);
+        return getDataTable(list);
+    }
+
+    @ApiOperation("业务层次订单金额统计")
+    @GetMapping("/moneyByBusiness")
+    public TableDataInfo<TopOrderStatisticsMoneyVo> businessOrderMoney(TopOrderStatisticsBo bo) {
+        startPage();
+        List<TopOrderStatisticsMoneyVo> list = iTopOldOrderService.getBusinessOrderMoney(bo);
+        return getDataTable(list);
+    }
+
+    @ApiOperation("业务层次订单数量统计")
+    @GetMapping("/numByBusiness")
+    public TableDataInfo<TopOrderStatisticsNumVo> businessOrderNum(TopOrderStatisticsBo bo) {
+        startPage();
+        List<TopOrderStatisticsNumVo> list = iTopOldOrderService.getBusinessOrderNum(bo);
+        return getDataTable(list);
+    }
+
+    @ApiOperation("数据分析业务层次列表")
+    @GetMapping("/businessList")
+    public AjaxResult<List<String>> businessList(TopOrderStatisticsBo bo) {
+        List<String> list = iTopOldOrderService.getBusinessList(bo);
+        return AjaxResult.success(list);
+    }
+
+    @ApiOperation("下单客户")
+    @GetMapping("/customer")
+    public AjaxResult<List<TopOrderCustomerVo>> getCustomerList() {
+        return AjaxResult.success(iTopOldOrderService.getCustomerList());
+    }
+
+    @ApiOperation("订单总计")
+    @GetMapping("/total")
+    public AjaxResult<TopOrderTotalVo> getOrderTotal(TopOrderStatisticsBo bo) {
+        return AjaxResult.success(iTopOldOrderService.getOrderTotal(bo));
+    }
+
+    @ApiOperation("下单机构订单详情列表")
+    @GetMapping("/tenantDetailList")
+    public TableDataInfo<TopOrderStatisticsDetailVo> getTenantDetailList(TopOrderStatisticsBo bo) {
+        startPage();
+        List<TopOrderStatisticsDetailVo> list = iTopOldOrderService.getTenantDetailList(bo);
+        return getDataTable(list);
+    }
+
+    @ApiOperation("下单业务层次详情列表")
+    @GetMapping("/businessDetailList")
+    public TableDataInfo<TopOrderStatisticsDetailVo> getBusinessDetailList(TopOrderStatisticsBo bo) {
+        startPage();
+        List<TopOrderStatisticsDetailVo> list = iTopOldOrderService.getBusinessDetailList(bo);
+        return getDataTable(list);
+    }
+}

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

@@ -0,0 +1,88 @@
+package com.zhongzheng.controller.order;
+
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import com.zhongzheng.framework.web.service.TopTokenService;
+import com.zhongzheng.modules.top.goods.service.ITopOldOrderService;
+import com.zhongzheng.modules.top.order.bo.TopOrderStatisticsBo;
+import com.zhongzheng.modules.top.order.bo.TopOrderStatisticsViewBo;
+import com.zhongzheng.modules.top.order.vo.*;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * 订单Controller
+ *
+ * @author ruoyi
+ * @date 2023-04-20
+ */
+@Api(value = "公海控制器", tags = {"公海控制器"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/system/top/order/shared")
+public class TopSharedCustomerController extends BaseController {
+
+    private final ITopOldOrderService iTopOldOrderService;
+
+    /**
+     * 公海客户统计
+     */
+    @ApiOperation("公海客户统计")
+    @GetMapping("/statistics")
+    public AjaxResult<TopSharedCustomerTotalVo> getSharedStatistics(TopOrderStatisticsBo bo) {
+        return AjaxResult.success(iTopOldOrderService.getSharedStatistics(bo));
+    }
+
+    /**
+     * 公海总客户
+     */
+    @ApiOperation("公海总客户")
+    @GetMapping("/customer/stats")
+    public AjaxResult<TopCustomerStatsVo> getCustomerStatsData(TopOrderStatisticsBo bo) {
+        return AjaxResult.success(iTopOldOrderService.getCustomerStatsData(bo));
+    }
+
+    /**
+     * 公海过期预警
+     */
+    @ApiOperation("公海过期预警")
+    @GetMapping("/cert/stats")
+    public AjaxResult<TopCertStatsVo> getCertStatsData(TopOrderStatisticsBo bo) {
+        return AjaxResult.success(iTopOldOrderService.getCertStatsData(bo));
+    }
+
+    /**
+     * 城市转化排行
+     */
+    @ApiOperation("城市转化排行")
+    @GetMapping("/order/area")
+    public AjaxResult<TopOrderAreaVo> getOrderAreaData(TopOrderStatisticsBo bo) {
+        return AjaxResult.success(iTopOldOrderService.getOrderAreaData(bo));
+    }
+
+    /**
+     * 客户转化排名
+     */
+    @ApiOperation("客户转化排名")
+    @GetMapping("/conversion/rate")
+    public AjaxResult<TopConversionRateVo> getConversionRateData(TopOrderStatisticsBo bo) {
+        return AjaxResult.success(iTopOldOrderService.getConversionRateData(bo));
+    }
+
+    /**
+     * 公海客户列表
+     */
+    @ApiOperation("公海客户列表")
+    @GetMapping("/customer/list")
+    public AjaxResult<List<TopConversionRateTrendVo>> getCustomerListData(TopOrderStatisticsBo bo) {
+        return AjaxResult.success(iTopOldOrderService.getCustomerListData(bo));
+    }
+}

+ 1 - 1
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/system/SysProfileController.java

@@ -101,7 +101,7 @@ public class SysProfileController extends BaseController
         {
             return AjaxResult.error("修改密码失败,旧密码错误");
         }
-        if(!ToolsUtils.verifPwd(newPassword)){
+        if(!ToolsUtils.verifEasyPwd(newPassword)){
             throw new CustomException("密码应由8-16位数字、大小写字母、符号组成");
         }
         if (SecurityUtils.matchesPassword(newPassword, password))

+ 1 - 1
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/system/SysTenantController.java

@@ -73,7 +73,7 @@ public class SysTenantController extends BaseController {
     @ApiOperation("获取系统商户详细信息")
     @PreAuthorize("@ss.hasPermi('system:tenant:query')")
     @GetMapping("/{tenantId}")
-    public AjaxResult<SysTenantVo> getInfo(@PathVariable("tenantId" ) Long tenantId) {
+    public AjaxResult<SysTenantVo> getInfo(@PathVariable("tenantId" ) String tenantId) {
         return AjaxResult.success(iSysTenantService.queryById(tenantId));
     }
 

+ 2 - 2
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/top/TopSysUserController.java

@@ -154,7 +154,7 @@ public class TopSysUserController extends BaseController
             return AjaxResult.error("新增用户'" + user.getUserName() + "'失败,邮箱账号已存在");
         }
         user.setCreateBy(SecurityUtils.getUsername());
-        if(!ToolsUtils.verifPwd(user.getPassword())){
+        if(!ToolsUtils.verifEasyPwd(user.getPassword())){
             throw new CustomException("密码应由8-16位数字、大小写字母、符号组成");
         }
         user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
@@ -210,7 +210,7 @@ public class TopSysUserController extends BaseController
                 }
 
             }
-            if(!ToolsUtils.verifPwd(user.getPassword())){
+            if(!ToolsUtils.verifEasyPwd(user.getPassword())){
                 throw new CustomException("密码应由8-16位数字、大小写字母、符号组成");
             }
             user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));

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

@@ -134,6 +134,7 @@ oldStudySys:
     classOpenPath: http://gdxypx.xy.com/System/BussinessApi/OpenClass
     salePassword: http://gdxypx.xy.com/WitSystem/BussinessApi/GetSaleInfo
     updateInvoicePath: http://gdxypx.xy.com/system/BussinessApi/UpdateInvoiceData
+    createExamPath: http://gdxypx.xy.com/system/BussinessApi/CreateSameClass
 
 officialPush:
     infoPath: http://jypt-dev.gdcic.net/organjxjy/ShangBaoMingdan
@@ -175,6 +176,8 @@ invoice:
 
 liveHost: http://192.168.1.222:6009
 
+fileHost: http://39.108.7.155:9099
+
 exam:
     applySave: http://192.168.1.7:9099/cd/exam/save
     applyUpdate: http://192.168.1.7:9099/cd/exam/update
@@ -183,3 +186,12 @@ 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
+
+shared:
+    statistics: http://gdxypx.xy.com/WitSystem/BussinessApi/HighSeasData
+    customer: http://gdxypx.xy.com/WitSystem/BussinessApi/CustomerStatsData
+    cert: http://gdxypx.xy.com/WitSystem/BussinessApi/CertStatsData
+    orderArea: http://gdxypx.xy.com/WitSystem/BussinessApi/OrderAreaData
+    rateData: http://gdxypx.xy.com//WitSystem/BussinessApi/CustomerConversionRateData
+    rateTrend: http://gdxypx.xy.com/WitSystem/BussinessApi/CustomerConversionRateTrendData
+

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

@@ -134,6 +134,7 @@ oldStudySys:
     classOpenPath: https://www.xyyxt.net/System/BussinessApi/OpenClass
     salePassword: http://www.xyyxt.net/WitSystem/BussinessApi/GetSaleInfo
     updateInvoicePath: http://gdxypx.xy.com/system/BussinessApi/UpdateInvoiceData
+    createExamPath: http://gdxypx.xy.com/system/BussinessApi/CreateSameClass
 
 officialPush:
     infoPath: https://jypt.gdcic.net/organjxjy/ShangBaoMingdan
@@ -175,6 +176,8 @@ invoice:
 
 liveHost: http://192.168.1.222:6009
 
+fileHost: http://39.108.7.155:9099
+
 exam:
     applySave: http://192.168.1.7:9099/cd/exam/save
     applyUpdate: http://192.168.1.7:9099/cd/exam/update
@@ -183,3 +186,11 @@ 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
+
+shared:
+    statistics: http://gdxypx.xy.com/WitSystem/BussinessApi/HighSeasData
+    customer: http://gdxypx.xy.com/WitSystem/BussinessApi/CustomerStatsData
+    cert: http://gdxypx.xy.com/WitSystem/BussinessApi/CertStatsData
+    orderArea: http://gdxypx.xy.com/WitSystem/BussinessApi/OrderAreaData
+    rateData: http://gdxypx.xy.com//WitSystem/BussinessApi/CustomerConversionRateData
+    rateTrend: http://gdxypx.xy.com/WitSystem/BussinessApi/CustomerConversionRateTrendData

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

@@ -134,6 +134,7 @@ oldStudySys:
     classOpenPath: https://www.xyyxt.net/System/BussinessApi/OpenClass
     salePassword: http://www.xyyxt.net/WitSystem/BussinessApi/GetSaleInfo
     updateInvoicePath: http://www.xyyxt.net/system/BussinessApi/UpdateInvoiceData
+    createExamPath: http://gdxypx.xy.com/system/BussinessApi/CreateSameClass
 
 officialPush:
     infoPath: https://jypt.gdcic.net/organjxjy/ShangBaoMingdan
@@ -175,11 +176,13 @@ invoice:
 
 liveHost: https://sso.xyyxt.net
 
+fileHost: http://39.108.7.155:9099
+
 exam:
-    applySave: http://192.168.1.7:9099/cd/exam/save
-    applyUpdate: http://192.168.1.7:9099/cd/exam/update
-    applyDelete: http://192.168.1.7:9099/cd/exam/delete
-    subscribeSave: http://192.168.1.7:9099/cd/subscribe/save
-    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
+    applySave: http://39.108.7.155:9099/cd/exam/save
+    applyUpdate: http://39.108.7.155:9099/cd/exam/update
+    applyDelete: http://39.108.7.155:9099/cd/exam/delete
+    subscribeSave: http://39.108.7.155:9099/cd/subscribe/save
+    subscribeSaveExam: http://39.108.7.155:9099/cd/subscribe/save/exam
+    subscribeUpdateExam: http://39.108.7.155:9099/cd/subscribe/update/exam
+    subscribeAddExamNum: http://39.108.7.155:9099/cd/subscribe/add/num

+ 4 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/activity/ActivityRecommendController.java

@@ -46,6 +46,10 @@ public class ActivityRecommendController extends BaseController {
     @GetMapping("/list")
     public TableDataInfo<ActivityRecommendVo> list(ActivityRecommendQueryBo bo) {
         startPage();
+        List<Integer> statusList = new ArrayList<>();
+        statusList.add(1);
+        statusList.add(0);
+        bo.setStatusList(statusList);
         List<ActivityRecommendVo> list = iActivityRecommendService.selectList(bo);
         return getDataTable(list);
     }

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

@@ -32,8 +32,10 @@ import com.zhongzheng.modules.bank.service.IQuestionOtherService;
 import com.zhongzheng.modules.bank.service.IQuestionService;
 import com.zhongzheng.modules.bank.vo.QuestionVo;
 import com.zhongzheng.modules.base.bo.ConfigQueryBo;
+import com.zhongzheng.modules.base.service.ICertificateTpService;
 import com.zhongzheng.modules.course.bo.ExternalQuestionBo;
 import com.zhongzheng.modules.course.bo.ReplenishExamBo;
+import com.zhongzheng.modules.course.vo.CourseChapterVo;
 import com.zhongzheng.modules.course.vo.ExternalQuestionVo;
 import com.zhongzheng.modules.course.vo.ReplenishExamVo;
 import com.zhongzheng.modules.distribution.bo.DistributionActivityGoodsQueryBo;
@@ -42,10 +44,7 @@ import com.zhongzheng.modules.distribution.service.IDistributionActivityGoodsSer
 import com.zhongzheng.modules.distribution.service.IDistributionCashWithdrawalService;
 import com.zhongzheng.modules.distribution.service.IDistributionSellerService;
 import com.zhongzheng.modules.distribution.vo.DistributionSellerVo;
-import com.zhongzheng.modules.exam.bo.ExamApplyDetailBo;
-import com.zhongzheng.modules.exam.bo.ExamApplyResultBo;
-import com.zhongzheng.modules.exam.bo.ExamApplySubscribeBo;
-import com.zhongzheng.modules.exam.bo.UpdateStudentImageBo;
+import com.zhongzheng.modules.exam.bo.*;
 import com.zhongzheng.modules.exam.service.IExamApplyService;
 import com.zhongzheng.modules.exam.vo.ExamApplyDetailVo;
 import com.zhongzheng.modules.goods.bo.AlikeGoodsBo;
@@ -53,10 +52,7 @@ import com.zhongzheng.modules.goods.bo.GoodsQueryBo;
 import com.zhongzheng.modules.goods.bo.GoodsStudyUrlBo;
 import com.zhongzheng.modules.goods.bo.UserGoodsListBo;
 import com.zhongzheng.modules.goods.service.IGoodsService;
-import com.zhongzheng.modules.goods.vo.GoodsJzsVo;
-import com.zhongzheng.modules.goods.vo.GoodsVo;
-import com.zhongzheng.modules.goods.vo.UserGoodsListVo;
-import com.zhongzheng.modules.goods.vo.UserOrderGoodsListVo;
+import com.zhongzheng.modules.goods.vo.*;
 import com.zhongzheng.modules.grade.bo.*;
 import com.zhongzheng.modules.grade.service.IClassGradeService;
 import com.zhongzheng.modules.grade.service.IClassGradeUserService;
@@ -98,6 +94,9 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.io.UnsupportedEncodingException;
+import java.math.BigDecimal;
+import java.net.URLEncoder;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -165,6 +164,8 @@ public class CommonController extends BaseController {
     private IQuestionOtherService iQuestionOtherService;
     @Autowired
     private OssService ossService;
+    @Autowired
+    private ICertificateTpService iCertificateTpService;
     /**
      * 通用下载请求
      *
@@ -289,9 +290,8 @@ public class CommonController extends BaseController {
         if (!ToolsUtils.checkSignFromOldSys(bo.getStamp().toString(), bo.getSign())) {
             return AjaxResult.error("签名错误");
         }
-        List<UserOrderGoodsListVo> voList = iGoodsService.getUserOrderGoods(bo);
-
-        return AjaxResult.success(voList);
+        UserNewGoodsVo goodsVo = iGoodsService.getUserOrderGoods(bo);
+        return AjaxResult.success(goodsVo);
     }
 
     @ApiOperation("校验用户是否有账号")
@@ -312,6 +312,31 @@ public class CommonController extends BaseController {
     }
 
     @ApiOperation("七大员新考结果")
+    @PostMapping("common/apply/result/receipt")
+    public AjaxResult examApplyResultReceipt(List<MultipartFile> files) {
+        files.forEach(item -> {
+            try {
+                ExcelUtil<ExamApplyResultExportBo> util = new ExcelUtil<ExamApplyResultExportBo>(ExamApplyResultExportBo.class);
+                //测试时间
+                String time = util.examApplyTimeAnalysis(item.getInputStream(), 1);
+                //成绩数据
+                List<ExamApplyResultExportBo> exportBo = util.examApplyImportExcel("", item.getInputStream());
+                iExamApplyService.examApplyResultReceipt(exportBo,time);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        });
+        return AjaxResult.success("操作成功",null);
+    }
+
+    @ApiOperation("七大员新考证书")
+    @PostMapping("common/apply/result/certificate")
+    public AjaxResult examApplyResultCertificate(List<MultipartFile> files) {
+        String msg = iExamApplyService.examApplyResultCertificate(files);
+        return AjaxResult.success("操作成功",msg);
+    }
+
+    @ApiOperation("七大员考试结果回执")
     @PostMapping("common/apply/result")
     public AjaxResult examApplyResult(@RequestBody ExamApplyResultBo bo) {
         if (!ToolsUtils.checkSignFromOldSys(bo.getStamp().toString(), bo.getSign())) {
@@ -431,6 +456,17 @@ public class CommonController extends BaseController {
         return AjaxResult.success(iClassGradeService.getOfficialGradeNum(bo));
     }
 
+    @ApiOperation("新增二建班级")
+    @PostMapping("common/free/save/class")
+    public AjaxResult openOfficialSaveGrade(@RequestBody ClassGradeOpenBo bo) {
+        if (!ToolsUtils.checkSignFromOldSys(bo.getStamp().toString(), bo.getSign())) {
+            return AjaxResult.error("签名错误");
+        }
+        iClassGradeService.openOfficialSaveGrade(bo);
+        return AjaxResult.success();
+    }
+
+
     @ApiOperation("预报名班级开班")
     @PostMapping("common/free/open/class")
     public AjaxResult openOfficialGrade(@RequestBody ClassGradeOpenBo bo) {
@@ -442,10 +478,11 @@ public class CommonController extends BaseController {
     }
 
     @ApiOperation("测试分班")
-    @GetMapping("common/jzs/grade")
-    public AjaxResult<Void> testGrade() {
+    @PostMapping("common/free/grade")
+    public AjaxResult<Void> testGrade(@RequestBody ClassGradeUserQueryBo bo) {
         //   iClassGradeService.checkEjjjPeopleNumLimit(195L,984L);
         //   iUserService.batchUpdateTelId();
+        iCertificateTpService.makeCertificatePhoto(bo);
         return AjaxResult.success();
     }
 
@@ -495,14 +532,14 @@ public class CommonController extends BaseController {
 
     @ApiOperation("同步其他机构角色菜单")
     @PostMapping("common/update/role")
-    public AjaxResult updateRoleTenant(@RequestBody List<Long> tenantIds) {
+    public AjaxResult updateRoleTenant(@RequestBody List<String> tenantIds) {
         iSysTenantService.updateRoleTenant(tenantIds);
         return AjaxResult.success();
     }
 
     @ApiOperation("同步其他机构字典")
     @PostMapping("common/update/dict")
-    public AjaxResult updateDictTenant(@RequestBody List<Long> tenantIds) {
+    public AjaxResult updateDictTenant(@RequestBody List<String> tenantIds) {
         iSysTenantService.updateDictTenant(tenantIds);
         return AjaxResult.success();
     }
@@ -544,8 +581,8 @@ public class CommonController extends BaseController {
         if (!ToolsUtils.checkSignFromOldSys(bo.getStamp().toString(), bo.getSign())) {
             return AjaxResult.error("签名错误");
         }
-        iTopSysTenantRegisterService.insertByAddBo(bo);
-        return AjaxResult.success("成功", webService.restartWebService() ? 1 : 0);
+
+        return AjaxResult.success("成功", iTopSysTenantRegisterService.insertByAddBo(bo) ? 1 : 0);
     }
 
     @ApiOperation("重启服务restart")
@@ -595,9 +632,9 @@ public class CommonController extends BaseController {
     @ApiOperation("获取企业ID")
     @GetMapping("common/free/findTenantId")
     public AjaxResult<String> findTenantId(SysTenantQueryBo bo) {
-        Long tenantId = iSysTenantService.findTenantId(bo);
+        String tenantId = iSysTenantService.findTenantId(bo);
         if (Validator.isNotEmpty(tenantId)) {
-            return AjaxResult.success("成功", tenantId.toString());
+            return AjaxResult.success("成功", tenantId);
         } else {
             if (Validator.isNotEmpty(bo.getHostH5()) && bo.getHostH5().equals("120.79.166.78:19012")) {
                 return AjaxResult.success("成功", "867735392558919680");
@@ -743,16 +780,19 @@ public class CommonController extends BaseController {
         return AjaxResult.success(iClassGradeUserService.pushOfficialPeriodMore(list));
     }
 
+   
+
     @ApiOperation("测试获取山东题库")
     @PreAuthorize("@ss.hasPermi('system:withdrawal:add')")
     @Log(title = "测试获取山东题库", businessType = BusinessType.INSERT)
     @GetMapping("/common/free/getShanDongExam")
-    public AjaxResult getShanDongExam(GoodsQueryBo bo) {
-        iQuestionOtherService.queryById(3L);
+    public AjaxResult getShanDongExam(GoodsQueryBo bo) throws UnsupportedEncodingException {
+        System.out.println(bo.getBuyNote());
         return AjaxResult.success();
     }
 
 
+
     @ApiOperation("旧系统post请求")
     @PostMapping("/common/free/clientPost")
     public AjaxResult<Void> clientPost(@RequestBody ClientPostAddBo bo) {

+ 2 - 1
zhongzheng-admin/src/main/java/com/zhongzheng/controller/grade/ClassGradeController.java

@@ -196,7 +196,8 @@ public class ClassGradeController extends BaseController {
     @PreAuthorize("@ss.hasPermi('grade:grade:list')")
     @GetMapping("/listGrade")
     public TableDataInfo<ClassGradeStudentVo> listGrade(ClassGradeUserQueryBo bo) {
-        if (ObjectUtils.isNotNull(bo.getGradeId())){
+        if (ObjectUtils.isNotNull(bo.getSevenCodeSign()) && bo.getSevenCodeSign() == 1
+                && ObjectUtils.isNotNull(bo.getGradeId())){
             ClassGrade gradeGrade = iClassGradeService.getById(bo.getGradeId());
             if (StringUtils.isNotBlank(gradeGrade.getSevenCode())){
                 bo.setSevenCode(gradeGrade.getSevenCode());

+ 0 - 13
zhongzheng-admin/src/main/java/com/zhongzheng/controller/order/OrderController.java

@@ -151,19 +151,6 @@ public class OrderController extends BaseController {
     @PostMapping("/inputOrder")
     public AjaxResult addInputOrder(@RequestBody OrderAddBo bo) {
         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
-        if (ObjectUtils.isNotNull(bo.getOpenQuestionSign()) && bo.getOpenQuestionSign() == 1){
-            //新B端外部题库开通
-            QuestionOpenBo questionOpenBo = new QuestionOpenBo();
-            questionOpenBo.setCreateSysUserId(loginUser.getUser().getUserId());
-            questionOpenBo.setCreateBy(SecurityUtils.getUsername());
-            questionOpenBo.setGoodsId(bo.getGoodsList().get(0).getGoodsId());
-            UserSubscribe userSubscribe = iUserSubscribeService.getOne(new LambdaQueryWrapper<UserSubscribe>()
-                    .eq(UserSubscribe::getUserId, bo.getUserId())
-                    .eq(UserSubscribe::getOrderGoodsId, bo.getSubOrderGoodsId())
-                    .last("limit 1"));
-            questionOpenBo.setUserSubscribeIds(Arrays.asList(userSubscribe.getSubscribeId()));
-            return AjaxResult.success(iOrderService.questionGoodsOpen(questionOpenBo));
-        }
         if(Validator.isEmpty(bo.getCreateUsername())){
             bo.setCreateSysUserId(loginUser.getUser().getUserId());
             bo.setCreateBy(SecurityUtils.getUsername());

+ 22 - 1
zhongzheng-admin/src/main/java/com/zhongzheng/controller/schedule/ScheduleController.java

@@ -403,7 +403,7 @@ public class ScheduleController extends BaseController {
         //茂名市建设培训学校 680980002459417532
         //肇庆市建筑业协会 480813706424615769
 //        List<String> tenantIds = Arrays.asList("972001468256950403", "680980002459417532", "480813706424615769");
-        List<String> tenantIds = Arrays.asList("335322347347308");
+        List<String> tenantIds = Arrays.asList("87440920140968","694515817698614");
         tenantIds.forEach(tenantId -> {
             iScheduleService.synchronizationGoodsByTenantId(tenantId);
         });
@@ -424,6 +424,13 @@ public class ScheduleController extends BaseController {
         return AjaxResult.success();
     }
 
+    @ApiOperation("同步一二建商品")
+    @GetMapping("/goods/copy/two")
+    public AjaxResult goodsCopyTwo(){
+        iScheduleService.goodsCopyTwo();
+        return AjaxResult.success();
+    }
+
     @ApiOperation("分销佣金解冻")
     @GetMapping("/distributionRebate")
     public AjaxResult distributionRebate(UserQueryBo bo){
@@ -437,4 +444,18 @@ public class ScheduleController extends BaseController {
         iScheduleService.createExamApply();
         return AjaxResult.success();
     }
+
+    @ApiOperation("每日汇总用户学习数据")
+    @GetMapping("/syncUserDateStudyLog")
+    public AjaxResult syncUserDateStudyLog(){
+        iScheduleService.syncUserDateStudyLog();
+        return AjaxResult.success();
+    }
+
+    @ApiOperation("七大员学员预约下载任务执行")
+    @GetMapping("/user/download")
+    public AjaxResult usbUserDownload(){
+        iScheduleService.usbUserDownload();
+        return AjaxResult.success();
+    }
 }

+ 1 - 1
zhongzheng-admin/src/main/java/com/zhongzheng/controller/system/SysLoginController.java

@@ -111,7 +111,7 @@ public class SysLoginController
         // 权限集合
         Set<String> permissions = permissionService.getMenuPermission(user);
         String tenantId = ServletUtils.getRequest().getHeader("TenantId");
-        SysTenantVo sysTenantVo = iSysTenantService.queryById(Long.parseLong(tenantId));
+        SysTenantVo sysTenantVo = iSysTenantService.queryById(tenantId);
         Map<String,Object> map = new HashMap<>();
         map.put("user", user);
         map.put("roles", roles);

+ 1 - 1
zhongzheng-admin/src/main/java/com/zhongzheng/controller/system/SysProfileController.java

@@ -96,7 +96,7 @@ public class SysProfileController extends BaseController
         {
             return AjaxResult.error("修改密码失败,旧密码错误");
         }
-        if(!ToolsUtils.verifPwd(newPassword)){
+        if(!ToolsUtils.verifEasyPwd(newPassword)){
             throw new CustomException("密码应由8-16位数字、大小写字母、符号组成");
         }
         if (SecurityUtils.matchesPassword(newPassword, password))

+ 2 - 2
zhongzheng-admin/src/main/java/com/zhongzheng/controller/system/SysUserController.java

@@ -161,7 +161,7 @@ public class SysUserController extends BaseController
             return AjaxResult.error("新增用户'" + user.getUserName() + "'失败,邮箱账号已存在");
         }
         user.setCreateBy(SecurityUtils.getUsername());
-        if(!ToolsUtils.verifPwd(user.getPassword())){
+        if(!ToolsUtils.verifEasyPwd(user.getPassword())){
             throw new CustomException("密码应由8-16位数字、大小写字母、符号组成");
         }
         user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
@@ -218,7 +218,7 @@ public class SysUserController extends BaseController
                 }
 
             }
-            if(!ToolsUtils.verifPwd(user.getPassword())){
+            if(!ToolsUtils.verifEasyPwd(user.getPassword())){
                 throw new CustomException("密码应由8-16位数字、大小写字母、符号组成");
             }
             user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));

+ 74 - 4
zhongzheng-admin/src/main/java/com/zhongzheng/controller/user/UserSubscribeController.java

@@ -2,7 +2,10 @@ package com.zhongzheng.controller.user;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.lang.Validator;
+import com.alibaba.fastjson.JSONArray;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.zhongzheng.common.annotation.Log;
 import com.zhongzheng.common.core.controller.BaseController;
 import com.zhongzheng.common.core.domain.AjaxResult;
@@ -10,8 +13,12 @@ import com.zhongzheng.common.core.page.TableDataInfo;
 import com.zhongzheng.common.enums.BusinessType;
 import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.common.utils.poi.ExcelUtil;
+import com.zhongzheng.modules.exam.bo.ExamApplySiteTimeTwoAddBo;
+import com.zhongzheng.modules.exam.domain.ExamApplySiteTime;
 import com.zhongzheng.modules.exam.service.IExamApplyGoodsService;
+import com.zhongzheng.modules.exam.service.IExamApplySiteTimeService;
 import com.zhongzheng.modules.exam.vo.ExamSessionVo;
+import com.zhongzheng.modules.system.vo.SysTaskVo;
 import com.zhongzheng.modules.user.bo.*;
 import com.zhongzheng.modules.user.service.IUserExamGoodsService;
 import com.zhongzheng.modules.user.service.IUserSubscribeService;
@@ -49,6 +56,8 @@ public class UserSubscribeController extends BaseController {
 
     private final IExamApplyGoodsService iExamApplyGoodsService;
 
+    private final IExamApplySiteTimeService iExamApplySiteTimeService;
+
     /**
      * 查询用户预约考试列表
      */
@@ -61,6 +70,46 @@ public class UserSubscribeController extends BaseController {
         return getDataTable(list);
     }
 
+    /**
+     * 预约列表(包含其他使用祥粤考场的机构)
+     */
+    @ApiOperation("预约列表(包含其他使用祥粤考场的机构)")
+    @GetMapping("/sub/list")
+    public TableDataInfo<UserSubVo> getListSubscribe(UserSubQueryBo bo) {
+        startPage();
+        List<UserSubVo> list = iUserSubscribeService.getListSubscribe(bo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 预约学员档案资料下载
+     */
+    @ApiOperation("预约学员档案资料下载")
+    @GetMapping("/sub/user/export")
+    public AjaxResult<Void> subUserExport(SubUserExportBo bo) {
+        return toAjax(iUserSubscribeService.subUserExport(bo) ? 1 : 0);
+    }
+
+    /**
+     * 预约学员信息下载
+     */
+    @ApiOperation("预约学员信息下载")
+    @PostMapping("/sub/record/user/export")
+    public AjaxResult<String> subRecordUserExport(@RequestBody SubUserExportBo bo) {
+        String path = iUserSubscribeService.subRecordUserExport(bo);
+        return AjaxResult.success("操作成功",path);
+    }
+
+    /**
+     * 学员档案下载任务列表
+     */
+    @ApiOperation("学员档案下载任务列表")
+    @GetMapping("/sub/user/export/list")
+    public AjaxResult<List<SysTaskVo>> subUserExportList() {
+        return AjaxResult.success(iUserSubscribeService.subUserExportList());
+    }
+
+
     /**
      * 根据月份获取当月考试场次
      */
@@ -211,6 +260,9 @@ public class UserSubscribeController extends BaseController {
         String timeStr= LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
 //        map.put("goodsExcel",goodsUtil.exportEasyExcel(goodsUtil.exportEasyData(goodsList), bo.getApplyName()+"商品列表"+timeStr));
 
+        ExamApplySiteTime siteTime = iExamApplySiteTimeService.getOne(new LambdaQueryWrapper<ExamApplySiteTime>()
+                .eq(ExamApplySiteTime::getApplyId, bo.getApplyId())
+                .last("limit 1"));
         if(Validator.isEmpty(bo.getApplySiteAddressTrain())){
             UserSubscribeExport export = new UserSubscribeExport();
             export.setRemark("导入时,请把示例删除");
@@ -218,8 +270,17 @@ public class UserSubscribeController extends BaseController {
             export.setIdCard("44086921356895125365");
             export.setApplyName(bo.getApplyName());
             export.setApplySiteAddress(bo.getApplySiteAddress());
-            export.setApplySiteExamTime("2021/10/21");
-            export.setApplySiteTime("9:00-12:00");
+            if (ObjectUtils.isNotNull(siteTime)){
+                List<ExamApplySiteTimeTwoAddBo> siteTimeTwoAddBos = JSONArray.parseArray(siteTime.getSiteTime(), ExamApplySiteTimeTwoAddBo.class);
+                if (CollectionUtils.isNotEmpty(siteTimeTwoAddBos)){
+                    ExamApplySiteTimeTwoAddBo twoAddBo = siteTimeTwoAddBos.get(0);
+                    export.setApplySiteTime(String.format("%s-%s",twoAddBo.getStartTime(),twoAddBo.getEndTime()));
+                }
+                export.setApplySiteExamTime(DateUtils.timestampToDateFormat(siteTime.getExamTime(),"yyyy/MM/dd"));
+            }else {
+                export.setApplySiteExamTime("2021/10/21");
+                export.setApplySiteTime("9:00-12:00");
+            }
             export.setMajorName("土建质量员");
 //            export.setCode("SP6415428604");
 //            export.setGoodsName("一级建造师继续教育(必修课+机电工程)");
@@ -242,8 +303,17 @@ public class UserSubscribeController extends BaseController {
             export.setGoodsName("一级建造师继续教育(必修课+机电工程)");
 
             export.setApplySiteAddressTrain(bo.getApplySiteAddressTrain());
-            export.setApplySiteExamTrainTime("2021/10/21");
-            export.setApplySiteTrainTime("9:00-12:00");
+            if (ObjectUtils.isNotNull(siteTime)){
+                List<ExamApplySiteTimeTwoAddBo> siteTimeTwoAddBos = JSONArray.parseArray(siteTime.getSiteTime(), ExamApplySiteTimeTwoAddBo.class);
+                if (CollectionUtils.isNotEmpty(siteTimeTwoAddBos)){
+                    ExamApplySiteTimeTwoAddBo twoAddBo = siteTimeTwoAddBos.get(0);
+                    export.setApplySiteTime(String.format("%s-%s",twoAddBo.getStartTime(),twoAddBo.getEndTime()));
+                }
+                export.setApplySiteExamTime(DateUtils.timestampToDateFormat(siteTime.getExamTime(),"yyyy/MM/dd"));
+            }else {
+                export.setApplySiteExamTime("2021/10/21");
+                export.setApplySiteTime("9:00-12:00");
+            }
 
             List<UserSubscribeTrainExport> list = new ArrayList<>();
             list.add(export);

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

@@ -134,6 +134,7 @@ oldStudySys:
     classOpenPath: http://gdxypx.xy.com/System/BussinessApi/OpenClass
     salePassword: http://gdxypx.xy.com/WitSystem/BussinessApi/GetSaleInfo
     updateInvoicePath: http://gdxypx.xy.com/system/BussinessApi/UpdateInvoiceData
+    createExamPath: http://gdxypx.xy.com/system/BussinessApi/CreateSameClass
 
 officialPush:
     infoPath: closehttps://jypt-dev.gdcic.net/organjxjy/ShangBaoMingdan
@@ -176,6 +177,8 @@ invoice:
 
 liveHost: http://192.168.1.222:6009
 
+fileHost: http://192.168.1.24:9099
+
 exam:
     applySave: http://192.168.1.7:9099/cd/exam/save
     applyUpdate: http://192.168.1.7:9099/cd/exam/update
@@ -184,3 +187,11 @@ 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
+
+shared:
+    statistics: http://gdxypx.xy.com/WitSystem/BussinessApi/HighSeasData
+    customer: http://gdxypx.xy.com/WitSystem/BussinessApi/CustomerStatsData
+    cert: http://gdxypx.xy.com/WitSystem/BussinessApi/CertStatsData
+    orderArea: http://gdxypx.xy.com/WitSystem/BussinessApi/OrderAreaData
+    rateData: http://gdxypx.xy.com//WitSystem/BussinessApi/CustomerConversionRateData
+    rateTrend: http://gdxypx.xy.com/WitSystem/BussinessApi/CustomerConversionRateTrendData

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

@@ -134,6 +134,7 @@ oldStudySys:
     classOpenPath: http://gdxypx.xy.com/System/BussinessApi/OpenClass
     salePassword: http://gdxypx.xy.com/WitSystem/BussinessApi/GetSaleInfo
     updateInvoicePath: http://gdxypx.xy.com/system/BussinessApi/UpdateInvoiceData
+    createExamPath: http://gdxypx.xy.com/system/BussinessApi/CreateSameClass
 
 officialPush:
     infoPath: https://jypt-dev.gdcic.net/organjxjy/ShangBaoMingdan
@@ -175,6 +176,8 @@ invoice:
 
 liveHost: http://192.168.1.222:6009
 
+fileHost: http://192.168.1.24:9099
+
 exam:
     applySave: http://192.168.1.7:9099/cd/exam/save
     applyUpdate: http://192.168.1.7:9099/cd/exam/update
@@ -184,3 +187,10 @@ exam:
     subscribeUpdateExam: http://192.168.1.7:9099/cd/subscribe/update/exam
     subscribeAddExamNum: http://192.168.1.7:9099/cd/subscribe/add/num
 
+shared:
+    statistics: http://gdxypx.xy.com/WitSystem/BussinessApi/HighSeasData
+    customer: http://gdxypx.xy.com/WitSystem/BussinessApi/CustomerStatsData
+    cert: http://gdxypx.xy.com/WitSystem/BussinessApi/CertStatsData
+    orderArea: http://gdxypx.xy.com/WitSystem/BussinessApi/OrderAreaData
+    rateData: http://gdxypx.xy.com//WitSystem/BussinessApi/CustomerConversionRateData
+    rateTrend: http://gdxypx.xy.com/WitSystem/BussinessApi/CustomerConversionRateTrendData

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

@@ -134,6 +134,7 @@ oldStudySys:
     classOpenPath: https://www.xyyxt.net/System/BussinessApi/OpenClass
     salePassword: http://www.xyyxt.net/WitSystem/BussinessApi/GetSaleInfo
     updateInvoicePath: http://www.xyyxt.net/system/BussinessApi/UpdateInvoiceData
+    createExamPath: http://www.xyyxt.net/system/BussinessApi/CreateSameClass
 
 officialPush:
     infoPath: https://jypt.gdcic.net/organjxjy/ShangBaoMingdan
@@ -175,11 +176,13 @@ invoice:
 
 liveHost: https://sso.xyyxt.net
 
+fileHost: http://39.108.7.155:9099
+
 exam:
-    applySave: http://192.168.1.7:9099/cd/exam/save
-    applyUpdate: http://192.168.1.7:9099/cd/exam/update
-    applyDelete: http://192.168.1.7:9099/cd/exam/delete
-    subscribeSave: http://192.168.1.7:9099/cd/subscribe/save
-    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
+    applySave: http://39.108.7.155:9099/cd/exam/save
+    applyUpdate: http://39.108.7.155:9099/cd/exam/update
+    applyDelete: http://39.108.7.155:9099/cd/exam/delete
+    subscribeSave: http://39.108.7.155:9099/cd/subscribe/save
+    subscribeSaveExam: http://39.108.7.155:9099/cd/subscribe/save/exam
+    subscribeUpdateExam: http://39.108.7.155:9099/cd/subscribe/update/exam
+    subscribeAddExamNum: http://39.108.7.155:9099/cd/subscribe/add/num

+ 4 - 0
zhongzheng-api/src/main/java/com/zhongzheng/controller/cmmon/ActivityRecommendController.java

@@ -16,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -40,6 +41,9 @@ public class ActivityRecommendController extends BaseController {
     @GetMapping("/list")
     public TableDataInfo<ActivityRecommendVo> list(ActivityRecommendQueryBo bo) {
         startPage();
+        List<Integer> statusList = new ArrayList<>();
+        statusList.add(1);
+        bo.setStatusList(statusList);
         List<ActivityRecommendVo> list = iActivityRecommendService.selectList(bo);
         return getDataTable(list);
     }

+ 14 - 2
zhongzheng-api/src/main/java/com/zhongzheng/controller/cmmon/CommonController.java

@@ -133,6 +133,8 @@ public class CommonController extends BaseController {
         return AjaxResult.success(wxLoginService.getWxInfo(query));
     }
 
+
+
     /**
      * 获取小程序首页链接
      */
@@ -200,6 +202,17 @@ public class CommonController extends BaseController {
         return getDataTable(list);
     }
 
+    @ApiOperation("获取微信参数")
+    @GetMapping("/wx/config")
+    public AjaxResult<Map<String, Object>> wxConfig() {
+        Map<String, Object> map = new HashMap<>();
+        String smallAppId = configService.selectConfigByKey("wx.small.appid");
+        String gzhAppId = configService.selectConfigByKey("wx.gzh.appid");
+        map.put("smallAppId", smallAppId);
+        map.put("gzhAppId", gzhAppId);
+        return AjaxResult.success(map);
+    }
+
     /**
      * 查询课程列表
      */
@@ -214,7 +227,6 @@ public class CommonController extends BaseController {
     @ApiOperation("查询用户拥有的商品")
     @GetMapping("/test")
     public AjaxResult<Integer> test(CourseQueryBo bo) throws InterruptedException, ParseException {
-
         return AjaxResult.success(Printer.num);
     }
 
@@ -302,7 +314,7 @@ public class CommonController extends BaseController {
     @ApiOperation("获取企业ID")
     @GetMapping("/findTenantId")
     public AjaxResult<String> findTenantId(SysTenantQueryBo bo) {
-        Long tenantId = iSysTenantService.findTenantId(bo);
+        String tenantId = iSysTenantService.findTenantId(bo);
         if(Validator.isNotEmpty(tenantId)){
             return AjaxResult.success("成功",tenantId.toString());
         }else{

+ 10 - 0
zhongzheng-api/src/main/java/com/zhongzheng/controller/order/OrderController.java

@@ -10,6 +10,7 @@ import com.zhongzheng.framework.web.service.WxTokenService;
 import com.zhongzheng.modules.base.vo.BaseFilterVo;
 import com.zhongzheng.modules.course.service.ICourseEducationTypeService;
 import com.zhongzheng.modules.course.vo.CourseEducationTypeVo;
+import com.zhongzheng.modules.goods.bo.GoodsFirstChoiceAddBo;
 import com.zhongzheng.modules.order.bo.*;
 import com.zhongzheng.modules.order.service.IOrderGoodsService;
 import com.zhongzheng.modules.order.service.IOrderService;
@@ -227,4 +228,13 @@ public class OrderController extends BaseController {
     public AjaxResult<String> getOrderSevenYear(@PathVariable("orderGoodsId")Long orderGoodsId) {
         return AjaxResult.success("成功",iOrderGoodsService.getOrderSevenYear(orderGoodsId));
     }
+
+
+    @ApiOperation("优选商品重构")
+    @PostMapping("/firstChoiceGoods")
+    public AjaxResult<GoodsFirstChoiceAddBo> firstChoiceGoods(@RequestBody GoodsFirstChoiceAddBo bo) {
+        ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
+        bo.setUserId(loginUser.getUser().getUserId());
+        return AjaxResult.success(iOrderGoodsService.firstChoiceGoods(bo));
+    }
 }

+ 1 - 1
zhongzheng-api/src/main/java/com/zhongzheng/controller/user/UserController.java

@@ -125,7 +125,7 @@ public class UserController extends BaseController {
         vo.setNull();
         String tenantId = ServletUtils.getRequest().getHeader("TenantId");
         if (StringUtils.isNotBlank(tenantId)){
-            SysTenant tenant = sysTenantService.getById(Long.valueOf(tenantId));
+            SysTenant tenant = sysTenantService.getById(tenantId);
             vo.setEduPhone(tenant.getEduPhone());
         }
 

+ 1 - 1
zhongzheng-api/src/main/java/com/zhongzheng/controller/user/UserStudyRecordController.java

@@ -206,6 +206,6 @@ public class UserStudyRecordController extends BaseController {
     public AjaxResult<Integer> syncSevenPublicClass(UserStudyRecordQueryBo bo){
         ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
         bo.setUserId(loginUser.getUser().getUserId());
-        return AjaxResult.success(iUserStudyRecordService.syncSevenPublicClass(bo.getOrderGoodsId(),bo.getUserId()));
+        return AjaxResult.success(iUserStudyRecordService.syncSevenModulePublicClass(bo.getOrderGoodsId(),bo.getUserId()));
     }
 }

+ 11 - 0
zhongzheng-api/src/main/resources/application-dev.yml

@@ -137,6 +137,7 @@ oldStudySys:
     classOpenPath: http://gdxypx.xy.com/System/BussinessApi/OpenClass
     salePassword: http://gdxypx.xy.com/WitSystem/BussinessApi/GetSaleInfo
     updateInvoicePath: http://gdxypx.xy.com/system/BussinessApi/UpdateInvoiceData
+    createExamPath: http://gdxypx.xy.com/system/BussinessApi/CreateSameClass
 
 officialPush:
     infoPath: https://jypt-dev.gdcic.net/organjxjy/ShangBaoMingdan
@@ -178,6 +179,8 @@ invoice:
 
 liveHost: http://192.168.1.222:6009
 
+fileHost: http://192.168.1.24:9099
+
 exam:
     applySave: http://192.168.1.7:9099/cd/exam/save
     applyUpdate: http://192.168.1.7:9099/cd/exam/update
@@ -186,3 +189,11 @@ 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
+
+shared:
+    statistics: http://gdxypx.xy.com/WitSystem/BussinessApi/HighSeasData
+    customer: http://gdxypx.xy.com/WitSystem/BussinessApi/CustomerStatsData
+    cert: http://gdxypx.xy.com/WitSystem/BussinessApi/CertStatsData
+    orderArea: http://gdxypx.xy.com/WitSystem/BussinessApi/OrderAreaData
+    rateData: http://gdxypx.xy.com//WitSystem/BussinessApi/CustomerConversionRateData
+    rateTrend: http://gdxypx.xy.com/WitSystem/BussinessApi/CustomerConversionRateTrendData

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

@@ -134,6 +134,7 @@ oldStudySys:
     classOpenPath: http://gdxypx.xy.com/System/BussinessApi/OpenClass
     salePassword: http://gdxypx.xy.com/WitSystem/BussinessApi/GetSaleInfo
     updateInvoicePath: http://gdxypx.xy.com/system/BussinessApi/UpdateInvoiceData
+    createExamPath: http://gdxypx.xy.com/system/BussinessApi/CreateSameClass
 
 officialPush:
     infoPath: https://jypt-dev.gdcic.net/organjxjy/ShangBaoMingdan
@@ -175,6 +176,8 @@ invoice:
 
 liveHost: http://192.168.1.222:6009
 
+fileHost: http://192.168.1.24:9099
+
 exam:
     applySave: http://192.168.1.7:9099/cd/exam/save
     applyUpdate: http://192.168.1.7:9099/cd/exam/update
@@ -183,3 +186,11 @@ 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
+
+shared:
+    statistics: http://gdxypx.xy.com/WitSystem/BussinessApi/HighSeasData
+    customer: http://gdxypx.xy.com/WitSystem/BussinessApi/CustomerStatsData
+    cert: http://gdxypx.xy.com/WitSystem/BussinessApi/CertStatsData
+    orderArea: http://gdxypx.xy.com/WitSystem/BussinessApi/OrderAreaData
+    rateData: http://gdxypx.xy.com//WitSystem/BussinessApi/CustomerConversionRateData
+    rateTrend: http://gdxypx.xy.com/WitSystem/BussinessApi/CustomerConversionRateTrendData

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

@@ -146,6 +146,7 @@ oldStudySys:
     classOpenPath: https://www.xyyxt.net/System/BussinessApi/OpenClass
     salePassword: http://www.xyyxt.net/WitSystem/BussinessApi/GetSaleInfo
     updateInvoicePath: http://www.xyyxt.net/system/BussinessApi/UpdateInvoiceData
+    createExamPath: http://gdxypx.xy.com/system/BussinessApi/CreateSameClass
 
 officialPush:
     infoPath: https://jypt.gdcic.net/organjxjy/ShangBaoMingdan
@@ -187,11 +188,14 @@ invoice:
 
 liveHost: https://sso.xyyxt.net
 
+fileHost: http://39.108.7.155:9099
+
+
 exam:
-    applySave: http://192.168.1.7:9099/cd/exam/save
-    applyUpdate: http://192.168.1.7:9099/cd/exam/update
-    applyDelete: http://192.168.1.7:9099/cd/exam/delete
-    subscribeSave: http://192.168.1.7:9099/cd/subscribe/save
-    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
+    applySave: http://39.108.7.155:9099/cd/exam/save
+    applyUpdate: http://39.108.7.155:9099/cd/exam/update
+    applyDelete: http://39.108.7.155:9099/cd/exam/delete
+    subscribeSave: http://39.108.7.155:9099/cd/subscribe/save
+    subscribeSaveExam: http://39.108.7.155:9099/cd/subscribe/save/exam
+    subscribeUpdateExam: http://39.108.7.155:9099/cd/subscribe/update/exam
+    subscribeAddExamNum: http://39.108.7.155:9099/cd/subscribe/add/num

+ 1 - 1
zhongzheng-common/src/main/java/com/zhongzheng/common/core/domain/entity/SysDictType.java

@@ -83,7 +83,7 @@ public class SysDictType implements Serializable
     private Map<String, Object> params = new HashMap<>();
 
     @TableField(value = "tenant_id")
-    private Long tenantId;
+    private String tenantId;
 
     /** 分页大小 */
     @ApiModelProperty("分页大小")

+ 1 - 1
zhongzheng-common/src/main/java/com/zhongzheng/common/core/domain/entity/SysMenu.java

@@ -114,7 +114,7 @@ public class SysMenu implements Serializable
 
     /** 备注 */
 //    @TableField(exist = false)
-    private Long tenantId;
+    private String tenantId;
 
     /** 请求参数 */
     @TableField(exist = false)

+ 1 - 1
zhongzheng-common/src/main/java/com/zhongzheng/common/core/domain/entity/SysUser.java

@@ -160,7 +160,7 @@ public class SysUser implements Serializable
     @TableField(exist = false)
     private String roleName;
 
-    private Long tenantId;
+    private String tenantId;
 
     /** 上一次登录IP */
     private String preLoginIp;

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

@@ -275,6 +275,29 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
         return cal.getTimeInMillis() / 1000;  //今天凌晨
     }
 
+    /**
+     * 获取指定时间的凌晨时间戳
+     */
+    public static Long getScheduleTimeStrZeroTime(String timeStr,String patternStr)
+    {
+        Long time = dateTimeSec(patternStr,timeStr);
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(timeToDate(time));
+        cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
+        return cal.getTimeInMillis() / 1000;  //今天凌晨
+    }
+
+    /**
+     * 获取指定时间的凌晨时间戳
+     */
+    public static Long getScheduleTimeZeroTime(Long scheduleTime)
+    {
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(timeToDate(scheduleTime));
+        cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
+        return cal.getTimeInMillis() / 1000;  //今天凌晨
+    }
+
     public static String formatDate(Date time,String str)
     {
        SimpleDateFormat sdf = new SimpleDateFormat(str);
@@ -304,6 +327,18 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
         return cal.getTime().getTime()/1000;
     }
 
+    /**
+     * 获取本年第一天的凌晨时间戳
+     */
+    public static Long getToYearZeroTime()
+    {
+        Calendar calendar = Calendar.getInstance();
+        // 设置当前时间为年初的第一天
+        calendar.set(Calendar.DAY_OF_YEAR, 1);
+        Date startOfCurrentYear = calendar.getTime();
+        return startOfCurrentYear.getTime()/1000;
+    }
+
     /**
      * 根据当前日期获得所在周的日期区间(周一和周日日期)
      */
@@ -598,4 +633,78 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
         return c.getTime().getTime()/1000;
     }
 
+
+    public static List<Long> getWeekData(Long dataTime){
+        List<Long> week = new ArrayList();
+        Calendar calendar = Calendar.getInstance();
+        Long zeroTime = DateUtils.getScheduleTimeZeroTime(dataTime);
+        calendar.setTime(timeToDate(zeroTime));
+        // 如果是周日
+        if (calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
+            calendar.add(Calendar.DAY_OF_YEAR,-1);
+        }
+        // 获取当前日期是当周的第i天
+        int i = calendar.get(Calendar.DAY_OF_WEEK) - 1;
+         // 获取当前日期所在周的第一天
+        calendar.add(Calendar.DATE , -i);
+
+        for (int j = 0; j < 7; j++) {
+            if(j >0){
+                calendar.add(Calendar.DATE , 1);
+            }
+            Long time = calendar.getTime().getTime()/1000;
+            if (j == 6){
+                time = time + 86400L;
+            }
+            week.add(time);
+        }
+        return week;
+    }
+
+
+    public static Map<Long,Long> getWeekTime(Long startTime,Long endTime){
+        Map<Long,Long> mapList = new HashMap<>();
+        Long zeroTime = DateUtils.getScheduleTimeZeroTime(startTime);
+        //一天的时间戳
+        Long time = 86400L;
+        for (Long i = zeroTime; i <= endTime; i = i+time) {
+            List<Long> weekData = DateUtils.getWeekData(i);
+            mapList.put(weekData.get(0),weekData.get(weekData.size()-1));
+        }
+        return mapList;
+    }
+
+    public static Map<Long,Long> getMonthTime(Long startTime,Long endTime){
+        //一天的时间戳
+        Long time = 86400L;
+        Map<Long,Long> map = new HashMap<>();
+        try{
+            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
+            Date d1 = DateUtils.timeToDate(startTime);
+            Date d2 = DateUtils.timeToDate(endTime);
+            Calendar dd = Calendar.getInstance();//定义日期实例
+            dd.setTime(d1);//设置日期起始时间
+            while (dd.getTime().before(d2)) {//判断是否到结束日期
+                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
+                String str = sdf.format(dd.getTime());
+                Calendar c = Calendar.getInstance();
+                c.setTime(format.parse(str));
+                c.add(Calendar.MONTH, 0);
+                c.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天
+                Long start = c.getTime().getTime()/1000;
+                dd.setTime(DateUtils.timeToDate(start));
+                //获取当前月最后一天
+                Calendar ca = Calendar.getInstance();
+                ca.setTime(format.parse(str));
+                ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH));
+                Long end = ca.getTime().getTime()/1000 + time;
+                map.put(start,end);
+                dd.add(Calendar.MONTH, 1);//进行当前日期月份加1
+            }
+        }catch (Exception e){
+            System.out.println("异常"+e.getMessage());
+        }
+        return map;
+    }
+
 }

+ 16 - 10
zhongzheng-common/src/main/java/com/zhongzheng/common/utils/ToolsUtils.java

@@ -368,6 +368,8 @@ public class ToolsUtils {
         return result;
     }
 
+
+
     public static String EncoderByMd5(String str) {
         String result = "";
         MessageDigest md5 = null;
@@ -402,8 +404,8 @@ public class ToolsUtils {
         if(Validator.isEmpty(passWord)){
             return false;
         }
-        if(passWord.length()<6||passWord.length()>18){
-            return false;
+        if(passWord.length()<8||passWord.length()>16){
+            throw new CustomException("密码长度限制8到16位");
         }
         return true;
     }
@@ -421,7 +423,7 @@ public class ToolsUtils {
         if (m.matches()){
             return true;
         } else {
-            return false;
+            throw new CustomException("密码应由8-16位数字、大小写字母、符号组成");
         }
     }
 
@@ -534,14 +536,18 @@ public class ToolsUtils {
         return tempPKey;
     }
 
-    private static String MD5PubHasher(byte[] hashText) throws NoSuchAlgorithmException {
-        MessageDigest md5 = MessageDigest.getInstance("MD5");
-        byte[] b = md5.digest(hashText);
-        StringBuilder ret = new StringBuilder();
-        for (int i = 0; i < b.length; i++) {
-            ret.append(String.format("%02x", b[i]));
+    public static String MD5PubHasher(byte[] hashText)  {
+        try {
+            MessageDigest md5 = MessageDigest.getInstance("MD5");
+            byte[] b = md5.digest(hashText);
+            StringBuilder ret = new StringBuilder();
+            for (int i = 0; i < b.length; i++) {
+                ret.append(String.format("%02x", b[i]));
+            }
+            return ret.toString();
+        }catch (NoSuchAlgorithmException e){
+            return null;
         }
-        return ret.toString();
     }
 
     public static String encryptDes(String source, byte[] key, byte[] iv) throws Exception {

+ 1 - 1
zhongzheng-common/src/main/java/com/zhongzheng/common/utils/http/HttpUtils.java

@@ -300,7 +300,7 @@ public class HttpUtils
             conn.setRequestProperty("connection", "Keep-Alive");
             conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
             conn.setRequestProperty("Accept-Charset", "utf-8");
-            conn.setRequestProperty("contentType", "utf-8");
+            conn.setRequestProperty("contentType", "application/json;charset=UTF-8");
             conn.setDoOutput(true);
             conn.setDoInput(true);
             out = new PrintWriter(conn.getOutputStream());

+ 210 - 0
zhongzheng-common/src/main/java/com/zhongzheng/common/utils/poi/ExcelUtil.java

@@ -315,6 +315,216 @@ public class ExcelUtil<T>
         return list;
     }
 
+    /**
+     * 获取七大员指定表格考试时间
+     *
+     * @param is 输入流
+     * @return 转换后集合
+     */
+    public String examApplyTimeAnalysis(InputStream is,Integer index) throws Exception
+    {
+        this.type = Type.IMPORT;
+        this.wb = WorkbookFactory.create(is);
+        Sheet sheet = wb.getSheetAt(0);
+        if (sheet == null)
+        {
+            throw new IOException("文件sheet不存在");
+        }
+        // 获取表头
+        Row heard = sheet.getRow(index);
+        Iterator<Cell> cellIterator = heard.cellIterator();
+        List<String> dataList = new ArrayList<>();
+        while(cellIterator.hasNext()) {
+            Cell next = cellIterator.next();
+            String stringCellValue = next.getStringCellValue();
+            dataList.add(stringCellValue);
+        }
+        return dataList.get(dataList.size() -1);
+    }
+    /**
+     * 七大员考试回执方法
+     *
+     * @param sheetName 表格索引名
+     * @param is 输入流
+     * @return 转换后集合
+     */
+    public List<T> examApplyImportExcel(String sheetName, InputStream is) throws Exception
+    {
+        this.type = Type.IMPORT;
+        this.wb = WorkbookFactory.create(is);
+        List<T> list = new ArrayList<T>();
+        Sheet sheet = null;
+        if (Validator.isNotEmpty(sheetName))
+        {
+            // 如果指定sheet名,则取指定sheet中的内容.
+            sheet = wb.getSheet(sheetName);
+        }
+        else
+        {
+            // 如果传入的sheet名不存在则默认指向第1个sheet.
+            sheet = wb.getSheetAt(0);
+        }
+
+        if (sheet == null)
+        {
+            throw new IOException("文件sheet不存在");
+        }
+
+        int rows = sheet.getPhysicalNumberOfRows();
+
+        if (rows > 0)
+        {
+            // 定义一个map用于存放excel列的序号和field.
+            Map<String, Integer> cellMap = new HashMap<String, Integer>();
+            // 第2行是表头
+            Row heard = sheet.getRow(2);
+            for (int i = 0; i < heard.getPhysicalNumberOfCells(); i++)
+            {
+                Cell cell = heard.getCell(i);
+                if (Validator.isNotNull(cell))
+                {
+                    String value = this.getCellValue(heard, i).toString();
+                    cellMap.put(value, i);
+                }
+                else
+                {
+                    cellMap.put(null, i);
+                }
+            }
+            // 有数据时才处理 得到类的所有field.
+            Field[] allFields = clazz.getDeclaredFields();
+            // 定义一个map用于存放列的序号和field.
+            Map<Integer, Field> fieldsMap = new HashMap<Integer, Field>();
+            for (int col = 0; col < allFields.length; col++)
+            {
+                Field field = allFields[col];
+                Excel attr = field.getAnnotation(Excel.class);
+                if (attr != null && (attr.type() == Type.ALL || attr.type() == type))
+                {
+                    // 设置类的私有字段属性可访问.
+                    field.setAccessible(true);
+                    Integer column = cellMap.get(attr.name());
+                    if (column != null)
+                    {
+                        fieldsMap.put(column, field);
+                    }
+                }
+            }
+            for (int i = 3; i < rows; i++)
+            {
+                // 从第3行开始取数据,第2行是表头.
+                Row row = sheet.getRow(i);
+                if(row == null)
+                {
+                    continue;
+                }
+                T entity = null;
+                for (Map.Entry<Integer, Field> entry : fieldsMap.entrySet())
+                {
+                    Object val = this.getCellValue(row, entry.getKey());
+
+                    // 如果不存在实例则新建.
+                    entity = (entity == null ? clazz.newInstance() : entity);
+                    // 从map中得到对应列的field.
+                    Field field = fieldsMap.get(entry.getKey());
+                    // 取得类型,并根据对象类型设置值.
+                    Class<?> fieldType = field.getType();
+                    if (String.class == fieldType)
+                    {
+                        String s = Convert.toStr(val);
+                        if (StrUtil.endWith(s, ".0"))
+                        {
+                            //    val = StrUtil.subBefore(s, ".0",false);
+                        }
+                        else
+                        {
+                            if (val instanceof Double)
+                            {
+                                String dateFormat = field.getAnnotation(Excel.class).dateFormat();
+                                if (Validator.isNotEmpty(dateFormat))
+                                {
+                                    val = DateUtils.parseDateToStr(dateFormat, (Date) val);
+                                }
+                                else
+                                {
+                                    val = Convert.toStr(val);
+                                }
+                            }
+                            if (val instanceof Date)
+                            {
+                                String dateFormat = field.getAnnotation(Excel.class).dateFormat();
+                                if (Validator.isNotEmpty(dateFormat))
+                                {
+                                    val = DateUtils.parseDateToStr(dateFormat, (Date) val);
+                                }
+                                else
+                                {
+                                    val = Convert.toStr(val);
+                                }
+                            }
+
+                        }
+                    }
+                    else if ((Integer.TYPE == fieldType || Integer.class == fieldType) && Validator.isNumber(Convert.toStr(val)))
+                    {
+                        val = Convert.toInt(val);
+                    }
+                    else if (Long.TYPE == fieldType || Long.class == fieldType)
+                    {
+                        val = Convert.toLong(val);
+                    }
+                    else if (Double.TYPE == fieldType || Double.class == fieldType)
+                    {
+                        val = Convert.toDouble(val);
+                    }
+                    else if (Float.TYPE == fieldType || Float.class == fieldType)
+                    {
+                        val = Convert.toFloat(val);
+                    }
+                    else if (BigDecimal.class == fieldType)
+                    {
+                        val = Convert.toBigDecimal(val);
+                    }
+                    else if (Date.class == fieldType)
+                    {
+                        if (val instanceof String)
+                        {
+                            val = DateUtils.parseDate(val);
+                        }
+                        else if (val instanceof Double)
+                        {
+                            val = DateUtil.getJavaDate((Double) val);
+                        }
+                    }
+                    else if (Boolean.TYPE == fieldType || Boolean.class == fieldType)
+                    {
+                        val = Convert.toBool(val, false);
+                    }
+                    if (Validator.isNotNull(fieldType))
+                    {
+                        Excel attr = field.getAnnotation(Excel.class);
+                        String propertyName = field.getName();
+                        if (Validator.isNotEmpty(attr.targetAttr()))
+                        {
+                            propertyName = field.getName() + "." + attr.targetAttr();
+                        }
+                        else if (Validator.isNotEmpty(attr.readConverterExp()))
+                        {
+                            val = reverseByExp(Convert.toStr(val), attr.readConverterExp(), attr.separator());
+                        }
+                        else if (Validator.isNotEmpty(attr.dictType()))
+                        {
+                            val = reverseDictByExp(Convert.toStr(val), attr.dictType(), attr.separator());
+                        }
+                        ReflectUtils.invokeSetter(entity, propertyName, val);
+                    }
+                }
+                list.add(entity);
+            }
+        }
+        return list;
+    }
+
     /**
      * 对list数据源将其里面的数据导入到excel表单
      *

BIN
zhongzheng-common/src/main/resources/static/001.png


BIN
zhongzheng-common/src/main/resources/static/002.jpg


BIN
zhongzheng-common/src/main/resources/static/0020.jpg


BIN
zhongzheng-common/src/main/resources/static/0024.jpg


BIN
zhongzheng-common/src/main/resources/static/003.jpg


BIN
zhongzheng-common/src/main/resources/static/0030.jpg


BIN
zhongzheng-common/src/main/resources/static/00312.jpg


BIN
zhongzheng-common/src/main/resources/static/0033.jpg


BIN
zhongzheng-common/src/main/resources/static/004.jpg


BIN
zhongzheng-common/src/main/resources/static/005.jpg


BIN
zhongzheng-common/src/main/resources/static/006.jpg


BIN
zhongzheng-common/src/main/resources/static/2323.jpg


+ 1 - 1
zhongzheng-framework/src/main/java/com/zhongzheng/framework/aspectj/LogAspect.java

@@ -152,7 +152,7 @@ public class LogAspect
             operLog.setMethod(className + "." + methodName + "()");
             String TenantId = ServletUtils.getRequest().getHeader("TenantId");
             if(Validator.isNotEmpty(TenantId)){
-                operLog.setTenantId(Long.parseLong(TenantId));
+                operLog.setTenantId(TenantId);
             }
             // 设置请求方式
             operLog.setRequestMethod(ServletUtils.getRequest().getMethod());

+ 1 - 2
zhongzheng-framework/src/main/java/com/zhongzheng/framework/config/SecurityConfig.java

@@ -135,13 +135,12 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
                 .antMatchers("/profile/**").anonymous()
                 .antMatchers("/common/jzs/**").anonymous()
                 .antMatchers("/common/rollback/period").anonymous()
-                .antMatchers("/common/apply/user/profile").anonymous()
+                .antMatchers("/common/apply/**").anonymous()
                 .antMatchers("/common/decompression").anonymous()
                 .antMatchers("/common/merge/file").anonymous()
                 .antMatchers("/common/get/goods").anonymous()
                 .antMatchers("/common/get/orderGoods").anonymous()
                 .antMatchers("/common/check/account").anonymous()
-                .antMatchers("/common/apply/user/profile").anonymous()
                 .antMatchers("/common/get/goods/studyUrl").anonymous()
                 .antMatchers("/common/apply/detail").anonymous()
                 .antMatchers("/common/external/question").anonymous()

+ 24 - 12
zhongzheng-framework/src/main/java/com/zhongzheng/framework/mybatisplus/CustomTenantLineInnerInterceptor.java

@@ -18,22 +18,18 @@ import org.springframework.stereotype.Component;
 
 
 public class CustomTenantLineInnerInterceptor extends TenantLineInnerInterceptor {
+    private TenantLineHandler tenantLineHandler;
     public CustomTenantLineInnerInterceptor(TenantLineHandler tenantLineHandler) {
         super(tenantLineHandler);
+        this.tenantLineHandler = tenantLineHandler;
     }
 
-    /**
-     * 重构mybatispuls的多租户改为支持in
-     * @param currentExpression
-     * @param table
-     * @return
-     */
+
     @Override
     protected Expression builderExpression(Expression currentExpression, Table table) {
         Column aliasColumn = this.getAliasColumn(table);
         boolean presenceOfField=true;
-
-        if(presenceOfField) {
+        if(!this.tenantLineHandler.ignoreTable(table.getName())) {
             FindInSetExpression findInSetExpression = new FindInSetExpression();
             findInSetExpression.setLeftExpression(getTenantLineHandler().getTenantId());
             findInSetExpression.setRightExpression(aliasColumn);
@@ -50,21 +46,37 @@ public class CustomTenantLineInnerInterceptor extends TenantLineInnerInterceptor
 
     @Override
     protected void processInsert(Insert insert, int index, String sql, Object obj) {
-
+        super.processInsert(insert,index,sql,obj);
     }
 
     @Override
     protected void processUpdate(Update update, int index, String sql, Object obj) {
-
+        Table table = update.getTable();
+        if (!this.tenantLineHandler.ignoreTable(table.getName())) {
+            Column aliasColumn = this.getAliasColumn(table);
+            FindInSetExpression findInSetExpression = new FindInSetExpression();
+            findInSetExpression.setLeftExpression(getTenantLineHandler().getTenantId());
+            findInSetExpression.setRightExpression(aliasColumn);
+            Expression where = update.getWhere() instanceof OrExpression ? new AndExpression(new Parenthesis(update.getWhere()), findInSetExpression) : new AndExpression(update.getWhere(), findInSetExpression);
+            update.setWhere(where);
+        }
     }
 
     @Override
     protected void processDelete(Delete delete, int index, String sql, Object obj) {
-
+        Table table = delete.getTable();
+        if (!this.tenantLineHandler.ignoreTable(table.getName())) {
+            Column aliasColumn = this.getAliasColumn(table);
+            FindInSetExpression findInSetExpression = new FindInSetExpression();
+            findInSetExpression.setLeftExpression(getTenantLineHandler().getTenantId());
+            findInSetExpression.setRightExpression(aliasColumn);
+            Expression where = delete.getWhere() instanceof OrExpression ? new AndExpression(new Parenthesis(delete.getWhere()), findInSetExpression) : new AndExpression(delete.getWhere(), findInSetExpression);
+            delete.setWhere(where);
+        }
     }
 
     @Override
     protected void processInsertSelect(SelectBody selectBody) {
-
+        super.processInsertSelect(selectBody);
     }
 }

+ 1 - 1
zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/DistributionSellerServiceImpl.java

@@ -92,7 +92,7 @@ public class DistributionSellerServiceImpl extends ServiceImpl<DistributionSelle
         if(Validator.isEmpty(bo.getRealname())){
             throw new CustomException("姓名不能为空");
         }
-        if(!ToolsUtils.verifPwd(bo.getPwd())){
+        if(!ToolsUtils.verifEasyPwd(bo.getPwd())){
             throw new CustomException("密码应由8-16位数字、大小写字母、符号组成");
         }
         String key = Constants.REGISTER_SMS + bo.getTel();

+ 5 - 5
zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/SysLoginService.java

@@ -189,7 +189,7 @@ public class SysLoginService
             }
             Long nowTime = DateUtils.getNowTime();
             Long paramTime = Long.valueOf(param[1]);
-            if(Validator.isEmpty(paramTime)||Math.abs(paramTime.longValue()-nowTime.longValue())>30){
+            if(Validator.isEmpty(paramTime)){
                 throw new CustomException("参数内容错误");
             }
         }
@@ -264,14 +264,14 @@ public class SysLoginService
         seller.setStatus(1);
         seller.setCreateTime(DateUtils.getNowTime());
         seller.setUpdateTime(DateUtils.getNowTime());
-        seller.setTenantId(Long.valueOf(bo.getTenantId()));
+        seller.setTenantId(bo.getTenantId());
         seller.setShareCode(ToolsUtils.getRandomString(8));
         seller.setUserAccount(ServletUtils.getEncoded("YW"));
         seller.setParentId(0L);
         seller.setRegisterFrom(2);
         iDistributionSellerService.save(seller);
         //用户
-        sysUser.setTenantId(Long.valueOf(bo.getTenantId()));
+        sysUser.setTenantId(bo.getTenantId());
         sysUser.setUserName(bo.getAccount());
         sysUser.setNickName(bo.getAccount());
         sysUser.setSex("0");
@@ -297,12 +297,12 @@ public class SysLoginService
         SysUserRole sysUserRole = new SysUserRole();
         sysUserRole.setUserId(userId);
         sysUserRole.setRoleId(role.getRoleId());
-        sysUserRole.setTenantId(Long.valueOf(tenantId));
+        sysUserRole.setTenantId(tenantId);
 
         SysUserRole sysUserRole1 = new SysUserRole();
         sysUserRole1.setUserId(userId);
         sysUserRole1.setRoleId(role1.getRoleId());
-        sysUserRole1.setTenantId(Long.valueOf(tenantId));
+        sysUserRole1.setTenantId(tenantId);
 
         List<SysUserRole> sysUserRoleList = new ArrayList<>();
         sysUserRoleList.add(sysUserRole);

+ 34 - 24
zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/SysTenantServiceImpl.java

@@ -85,7 +85,7 @@ public class SysTenantServiceImpl extends ServiceImpl<SysTenantMapper, SysTenant
 
 
     @Override
-    public SysTenantVo queryById(Long tenantId){
+    public SysTenantVo queryById(String tenantId){
         SysTenant db = this.baseMapper.selectById(tenantId);
         return BeanUtil.toBean(db, SysTenantVo.class);
     }
@@ -95,7 +95,7 @@ public class SysTenantServiceImpl extends ServiceImpl<SysTenantMapper, SysTenant
         LambdaQueryWrapper<SysTenant> lqw = Wrappers.lambdaQuery();
         lqw.ne(SysTenant::getStatus, -1);
         lqw.like(StrUtil.isNotBlank(bo.getTenantName()), SysTenant::getTenantName, bo.getTenantName());
-        lqw.eq(ObjectUtils.isNotNull(bo.getTenantid()),SysTenant::getTenantId, bo.getTenantid());
+        lqw.eq(ObjectUtils.isNotNull(bo.getTenantId()),SysTenant::getTenantId, bo.getTenantId());
         lqw.orderByDesc(SysTenant::getSort);
         return entity2Vo(this.list(lqw));
     }
@@ -168,12 +168,12 @@ public class SysTenantServiceImpl extends ServiceImpl<SysTenantMapper, SysTenant
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public Long createTenantAdmin(SysTenantAdminBo bo) {
+    public String createTenantAdmin(SysTenantAdminBo bo) {
         if(Validator.isEmpty(bo.getTenantName())){
             throw new CustomException("没有企业名称");
         }
         //中正后台企业ID
-        Long tenantId = 867735392558919680L;
+        String tenantId = "867735392558919680";
         //设置新机构
         SysTenant sysTenant = getById(tenantId);
         sysTenant.setTenantName(bo.getTenantName());
@@ -183,7 +183,7 @@ public class SysTenantServiceImpl extends ServiceImpl<SysTenantMapper, SysTenant
         sysTenant.setHostH5Seller(null);
         sysTenant.setHostAdmin(null);
         //生成tenantId
-        Long newTenantId = createTenantId();
+        String newTenantId = createTenantId();
         sysTenant.setTenantId(newTenantId);
         if (!save(sysTenant)){
             throw new CustomException("创建企业失败");
@@ -247,16 +247,16 @@ public class SysTenantServiceImpl extends ServiceImpl<SysTenantMapper, SysTenant
 
     }
 
-    private Long createTenantId(){
+    private String createTenantId(){
         String randomNumeric = RandomStringUtils.randomNumeric(15);
         int count = count(new LambdaQueryWrapper<SysTenant>()
                 .eq(SysTenant::getTenantId, Long.valueOf(randomNumeric)));
         if (count == 0){
-            return Long.valueOf(randomNumeric);
+            return randomNumeric;
         }else {
             createTenantId();
         }
-        return Long.valueOf(randomNumeric);
+        return randomNumeric;
     }
 
     private boolean checkNameUnique(SysTenant entity) {
@@ -277,7 +277,7 @@ public class SysTenantServiceImpl extends ServiceImpl<SysTenantMapper, SysTenant
         add.setUpdateTime(DateUtils.getNowTime());
         this.save(add);
         //创建属于新公司的admin用户
-        Long tenantId = add.getTenantId();
+        String tenantId = add.getTenantId();
         ServletUtils.getRequestAttributes().getResponse().setHeader("TenantId",String.valueOf(tenantId));
         SysUser user = new SysUser();
         user.setUserName("admin");
@@ -289,7 +289,7 @@ public class SysTenantServiceImpl extends ServiceImpl<SysTenantMapper, SysTenant
     }
 
     @Override
-    public Long findTenantId(SysTenantQueryBo bo) {
+    public String findTenantId(SysTenantQueryBo bo) {
         return baseMapper.findTenantId(bo);
     }
 
@@ -306,13 +306,13 @@ public class SysTenantServiceImpl extends ServiceImpl<SysTenantMapper, SysTenant
             throw new CustomException("没有企业名称");
         }
         //中正后台企业ID
-        Long tenantId = 867735392558919680L;
+        String tenantId = "867735392558919680";
         //设置新机构
         SysTenant sysTenant = getById(tenantId);
         sysTenant.setTenantName(bo.getTenantName());
         //生成tenantId
-//        Long newTenantId = createTenantId();
-        Long newTenantId = bo.getTenantId();
+//        String newTenantId = createTenantId();
+        String newTenantId = bo.getTenantId();
         sysTenant.setTenantId(newTenantId);
         sysTenant.setHostH5("");
         sysTenant.setHostPc("");
@@ -376,7 +376,7 @@ public class SysTenantServiceImpl extends ServiceImpl<SysTenantMapper, SysTenant
         initConfigAndDict(newTenantId,tenantId);
     }
 
-    private void initConfigAndDict(Long newTenantId, Long tenantId) {
+    private void initConfigAndDict(String newTenantId, String tenantId) {
         //字典
         List<SysDictType> dictTypes = iSysDictTypeService.getListByTenant(tenantId);
         if (CollectionUtils.isEmpty(dictTypes)){
@@ -409,24 +409,24 @@ public class SysTenantServiceImpl extends ServiceImpl<SysTenantMapper, SysTenant
     }
 
     @Override
-    public void updateRoleTenant(List<Long> tenantIds) {
-        Long oldTenantId = 867735392558919680L;
-        for (Long tenantId : tenantIds) {
+    public void updateRoleTenant(List<String> tenantIds) {
+        String oldTenantId = "867735392558919680";
+        for (String tenantId : tenantIds) {
             initRoles(tenantId,oldTenantId);
         }
     }
 
     @Override
-    public void updateDictTenant(List<Long> tenantIds) {
-        Long oldTenantId = 867735392558919680L;
-        for (Long tenantId : tenantIds) {
+    public void updateDictTenant(List<String> tenantIds) {
+        String oldTenantId = "867735392558919680";
+        for (String tenantId : tenantIds) {
             initConfigAndDict(tenantId,oldTenantId);
         }
     }
 
     @Override
     public List<SysTenantBankAccountVo> getBankAccountList(String tenantId) {
-        SysTenant tenant = getById(Long.valueOf(tenantId));
+        SysTenant tenant = getById(tenantId);
         if (ObjectUtils.isNull(tenant)){
             throw new CustomException("机构信息获取失败!");
         }
@@ -479,7 +479,7 @@ public class SysTenantServiceImpl extends ServiceImpl<SysTenantMapper, SysTenant
         if (CollectionUtils.isEmpty(bo.getTenantIds())){
             throw new CustomException("参数错误");
         }
-        for (Long tenantId : bo.getTenantIds()) {
+        for (String tenantId : bo.getTenantIds()) {
             int count = topOldOrderService.count(new LambdaQueryWrapper<TopOldOrder>().eq(TopOldOrder::getTenantId, tenantId));
             int num = orderService.count(new LambdaQueryWrapper<Order>().eq(Order::getTenantId, tenantId));
             if (count > 0 || num > 0){
@@ -491,7 +491,17 @@ public class SysTenantServiceImpl extends ServiceImpl<SysTenantMapper, SysTenant
         .set(SysTenant::getStatus,-1));
     }
 
-    private void initRoles(Long newTenantId,Long tenantId) {
+    @Override
+    public List<SysTenant> getListNoTenant(String tenantId) {
+        return baseMapper.getListNoTenant(tenantId);
+    }
+
+    @Override
+    public List<SysTenant> getExamRoomTenant() {
+        return baseMapper.getExamRoomTenant();
+    }
+
+    private void initRoles(String newTenantId,String tenantId) {
         List<String> roleKey = new ArrayList<>();
         roleKey.add("seller");
         roleKey.add("seller_admin");
@@ -548,7 +558,7 @@ public class SysTenantServiceImpl extends ServiceImpl<SysTenantMapper, SysTenant
         });
     }
 
-    private Long getParentId(SysMenu oldSysMenu, Long tenantId, Long newTenantId) {
+    private Long getParentId(SysMenu oldSysMenu, String tenantId, String newTenantId) {
         if (oldSysMenu.getParentId() == 0){
             return 0L;
         }

+ 25 - 15
zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/UserServiceImpl.java

@@ -198,7 +198,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
     @Override
     public List<UserVo> selectList(UserQueryBo bo) {
         bo.setGetOrderNum(1L);
-        List<UserVo> list = entity2UserVo(userMapper.selectList(bo));
+        List<UserVo> list = entity2UserVo(userMapper.selectListNoTenant(bo));
         for (UserVo userVo : list) {
             userVo.setStudentCode(userVo.getUserAccount());
             ClassGradeUserQueryBo classGradeUserQueryBo = new ClassGradeUserQueryBo();
@@ -206,17 +206,17 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
             List<Integer> status = new ArrayList<>();
             status.add(1);
             classGradeUserQueryBo.setStatus(status);
-            List<ClassGradeUserGoodsVo> classGradeUserGoodsVos = iClassGradeUserService.listUser(classGradeUserQueryBo);
+            List<ClassGradeUserGoodsVo> classGradeUserGoodsVos = iClassGradeUserService.listUserNoTenant(classGradeUserQueryBo);
             userVo.setClassGradeUserGoodsVoList(classGradeUserGoodsVos);
             userVo.setOrderNum(userVo.getGoodsCourseNum());
 
-            UserVisitLog userVisitLog = iUserVisitLogService.getOne(new LambdaQueryWrapper<UserVisitLog>().eq(UserVisitLog::getUserId, userVo.getUserId()).orderByDesc(UserVisitLog::getId).last("limit 1"));
+            UserVisitLog userVisitLog = iUserVisitLogService.getOneNoTenant(userVo.getUserId());
             if(Validator.isNotEmpty(userVisitLog)){
                 userVo.setLastVisitTime(userVisitLog.getCreateTime());
                 userVo.setVisitFromPlat(Integer.parseInt(userVisitLog.getFromPlat()));
             }
 
-            UserStudyLog userStudyLog = iUserStudyLogService.getOne(new LambdaQueryWrapper<UserStudyLog>().eq(UserStudyLog::getUserId, userVo.getUserId()).orderByDesc(UserStudyLog::getId).last("limit 1"));
+            UserStudyLog userStudyLog = iUserStudyLogService.getOneNoTenant( userVo.getUserId());
             if(Validator.isNotEmpty(userStudyLog)){
                 userVo.setLastStudyTime(userStudyLog.getCreateTime());
                 userVo.setStudyFromPlat(Integer.parseInt(userStudyLog.getFromPlat()));
@@ -264,7 +264,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
     @Override
     public List<UserExportVo> selectListExport(UserQueryBo bo) {
         bo.setGetOrderNum(1L);
-        List<UserVo> list = entity2UserVo(userMapper.selectList(bo));
+        List<UserVo> list = entity2UserVo(userMapper.selectListByBo(bo));
         List<UserExportVo> listExport = new ArrayList<>();
         for (UserVo userVo : list) {
             userVo.setStudentCode(userVo.getUserAccount());
@@ -728,7 +728,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
         if(bo.getPwd()==null){
             throw new CustomException("密码不能为空");
         }
-        if(!ToolsUtils.verifPwd(bo.getPwd())){
+        if(!ToolsUtils.verifEasyPwd(bo.getPwd())){
             throw new CustomException("密码应由8-16位数字、大小写字母、符号组成");
         }
         String key = Constants.REGISTER_SMS + bo.getTel();
@@ -919,7 +919,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
         {
             throw new BaseException("新密码格式错误");
         }
-        if(!ToolsUtils.verifPwd(bo.getNewPwd())){
+        if(!ToolsUtils.verifEasyPwd(bo.getNewPwd())){
             throw new CustomException("密码应由8-16位数字、大小写字母、符号组成");
         }
         user.setPassword(SecurityUtils.encryptPassword(bo.getNewPwd()));
@@ -1046,12 +1046,12 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
     }
 
     @Override
-    public User queryUserByTelphoneTenant(String telphone,Long tenantId) {
+    public User queryUserByTelphoneTenant(String telphone,String tenantId) {
         return baseMapper.queryUserByTelphoneTenant(telphone,tenantId);
     }
 
     @Override
-    public User queryUserByIdNumTenant(String idNum, Long tenantId) {
+    public User queryUserByIdNumTenant(String idNum, String tenantId) {
         return baseMapper.queryUserByIdNumTenant(idNum, tenantId);
     }
 
@@ -1151,7 +1151,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
         if(bo.getPwd()==null){
             throw new CustomException("密码不能为空");
         }
-        if(!ToolsUtils.verifPwd(bo.getPwd())){
+        if(!ToolsUtils.verifEasyPwd(bo.getPwd())){
             throw new CustomException("密码应由8-16位数字、大小写字母、符号组成");
         }
         String key = Constants.FORGET_SMS + bo.getTel();
@@ -1278,7 +1278,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
         if (StringUtils.isNotBlank(per) && Integer.valueOf(per) == 2){
             //所有人都可以看
             user = userList.stream().filter(item -> {
-                Long tenantId = item.getTenantId();
+                String tenantId = item.getTenantId();
                 Course course = iCourseService.getCourseByNotTenant(Long.valueOf(cid));
                 Long courseId = iCourseService.getCourseByTenantTwo(course.getCourseName(),course.getCode(),tenantId);
                 CourseSection section = iCourseSectionService.getSectionByNotTenant(Long.valueOf(sid));
@@ -1321,7 +1321,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
             iUserLoginErrorService.saveErrorLog(bo.getAccount());
             throw new BaseException("登录信息错误");
         }
-        Long tenantId = user.getTenantId();
+        String tenantId = user.getTenantId();
         //组装跳转路径
         SysTenant tenant = iSysTenantService.getById(tenantId);
         String post = "";
@@ -1427,7 +1427,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
         if (StringUtils.isNotBlank(per) && Integer.valueOf(per) == 2){
             //所有人都可以看
             user = userList.stream().filter(item -> {
-                Long tenantId = item.getTenantId();
+                String tenantId = item.getTenantId();
                 Course course = iCourseService.getCourseByNotTenant(Long.valueOf(cid));
                 Long courseId = iCourseService.getCourseByTenantTwo(course.getCourseName(),course.getCode(),tenantId);
                 CourseSection section = iCourseSectionService.getSectionByNotTenant(Long.valueOf(sid));
@@ -1452,7 +1452,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
             throw new BaseException("对不起,您的账号:已停用");
         }
 
-        Long tenantId = user.getTenantId();
+        String tenantId = user.getTenantId();
         //组装跳转路径
         SysTenant tenant = iSysTenantService.getById(tenantId);
         String post = "";
@@ -1519,7 +1519,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
 
         Map<String, String> split = Splitter.on("&").withKeyValueSeparator("=").split(param);
         Long goodsId = Long.valueOf(split.get("gid"));
-        Long tenantId = user.getTenantId();
+        String tenantId = user.getTenantId();
 
         //获取对应商品
         Goods goods = iGoodsService.queryGoodsByIdTenant(goodsId,tenantId);
@@ -1584,6 +1584,16 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
         return tokenService.createToken(loginUser);
     }
 
+    @Override
+    public User getByIdNoTenant(Long userId) {
+        return baseMapper.getByIdNoTenant(userId);
+    }
+
+    @Override
+    public User getByCardNoTenant(String idCard) {
+        return baseMapper.getByCardNoTenant(idCard);
+    }
+
 
     @Override
     public Map<String, Object> accountLogin(UserAppAccountLoginBo bo) {

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/bo/ActivityRecommendQueryBo.java

@@ -6,6 +6,7 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 
 import java.util.Date;
+import java.util.List;
 import java.util.Map;
 import java.util.HashMap;
 
@@ -57,4 +58,6 @@ public class ActivityRecommendQueryBo extends BaseEntity {
 	/** 1小程序 2PC网站 */
 	@ApiModelProperty("1小程序 2PC网站")
 	private Integer platform;
+	@ApiModelProperty("1有效 0无效")
+	private List<Integer> statusList;
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/domain/ActivityGoodsPrice.java

@@ -44,6 +44,6 @@ private static final long serialVersionUID=1L;
     /** 更新时间 */
     @TableField(fill = FieldFill.INSERT_UPDATE)
     private Long updateTime;
-    private Long tenantId;
+    private String tenantId;
 
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/domain/ActivityOrder.java

@@ -41,5 +41,5 @@ private static final long serialVersionUID=1L;
     /** 更新时间 */
     private Long updateTime;
     /** 商户ID */
-    private Long tenantId;
+    private String tenantId;
 }

+ 12 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/service/impl/ActivityRecommendServiceImpl.java

@@ -140,6 +140,18 @@ public class ActivityRecommendServiceImpl extends ServiceImpl<ActivityRecommendM
                             GoodsSpecAttributeRelation relation = list.stream().findFirst().get();
                             item.setSpecTemplateId(relation.getSpecTemplateId());
                         }
+                        //多规格下的价格区间
+                        List<GoodsSpecAttributeRelation> specAttributeRelations = goodsSpecAttributeRelationService
+                                .list(new LambdaQueryWrapper<GoodsSpecAttributeRelation>()
+                                        .eq(GoodsSpecAttributeRelation::getSpecTemplateId, item.getSpecTemplateId()));
+                        if (CollectionUtils.isNotEmpty(specAttributeRelations)) {
+                            List<Long> goodsIds = specAttributeRelations.stream().filter(x -> ObjectUtils.isNotNull(x.getGoodsId())).map(GoodsSpecAttributeRelation::getGoodsId).collect(Collectors.toList());
+                            List<Goods> goodsList = iGoodsService.listByIds(goodsIds);
+                            //从小到大排序
+                            List<Goods> collect = goodsList.stream().filter(x -> ObjectUtils.isNotNull(x.getStandPrice())).sorted(Comparator.comparing(Goods::getStandPrice)).collect(Collectors.toList());
+                            item.setMinPrice(collect.get(0).getStandPrice());
+                            item.setMaxPrice(collect.get(collect.size() - 1).getStandPrice());
+                        }
                     }
                 });
             }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/vo/ActivityRecommendVo.java

@@ -71,4 +71,6 @@ public class ActivityRecommendVo {
 	private String businessName;
 	@ApiModelProperty("商品列表")
 	private List<ActivityRecommendGoodsVo> goodsList;
+	@ApiModelProperty("业务别名称")
+	private String aliasName;
 }

+ 31 - 32
zhongzheng-system/src/main/java/com/zhongzheng/modules/alioss/service/impl/OssServiceImpl.java

@@ -227,7 +227,7 @@ public class OssServiceImpl implements OssService {
                 RandomFilename = "file" + "/" +(sdf.format(new Date())) + "/" + now + ".zip";
                 break;
             case 11:
-                RandomFilename = "file/nuonuo" + "/" +(sdf.format(new Date())) + "/" + now + ".pdf";
+                RandomFilename = "file/pdf/" +(sdf.format(new Date())) + "/" + now + ".pdf";
                 break;
         }
 
@@ -289,6 +289,34 @@ public class OssServiceImpl implements OssService {
         }
     }
 
+    @Override
+    public String uploadWithUrl(OssRequest base, String urlString){
+        String path = null;
+        InputStream inputStream = null;
+        try {
+            URL url = new URL(urlString);
+            URLConnection con = url.openConnection();
+            //获取上传文件输入流
+            inputStream =con.getInputStream();
+            path = uploadInputStream(inputStream,base.getImageStatus());
+
+            // 关闭OSSClient。
+            //ossClient.shutdown();
+            return path;
+        } catch (Exception e) {
+
+        }finally {
+            try {
+                if (null != inputStream) {
+                    inputStream.close();
+                }
+            }catch (IOException e){
+
+            }
+            return path;
+        }
+    }
+
     @Override
     public String uploadInputStream(InputStream inputStream, Integer imageStatus) throws Exception {
         try {
@@ -374,8 +402,8 @@ public class OssServiceImpl implements OssService {
 
     @Override
     public InputStream getStreamByObject(String filePath) throws Exception {
-            OSSObject ossObject = ossClient.getObject(ALIYUN_OSS_BUCKET_NAME, filePath);
-            return ossObject.getObjectContent();
+        OSSObject ossObject = ossClient.getObject(ALIYUN_OSS_BUCKET_NAME, filePath);
+        return ossObject.getObjectContent();
     }
 
     @Override
@@ -404,35 +432,6 @@ public class OssServiceImpl implements OssService {
         }
     }
 
-    @Override
-    public String uploadWithUrl(OssRequest base, String urlString){
-        String path = null;
-        InputStream inputStream = null;
-        try {
-            URL url = new URL(urlString);
-            URLConnection con = url.openConnection();
-            //获取上传文件输入流
-            inputStream =con.getInputStream();
-            path = uploadInputStream(inputStream,base.getImageStatus());
-
-            // 关闭OSSClient。
-            //ossClient.shutdown();
-            return path;
-        } catch (Exception e) {
-
-        }finally {
-            try {
-                if (null != inputStream) {
-                    inputStream.close();
-                }
-            }catch (IOException e){
-
-            }
-            return path;
-        }
-    }
-
-
     public void zipFile(List<String> fileList, ZipOutputStream zipOut,String dir) {
         if (CollectionUtils.isEmpty(fileList)) {
             return;

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/alisms/service/impl/AliSmsServiceImpl.java

@@ -91,6 +91,7 @@ public class AliSmsServiceImpl implements IAliSmsService {
         //发送带指定短信code带参数发送不同短信内容
         try{
             SendSmsResponse response = SmsUtils.sendSms(tel,SIGNNAME,code,param,ACCESSKEYID,ACCESSKEYSECRET);
+            LOGGER.error("发送短信结果:"+JSON.toJSONString(response));
             if(response.getBody().getMessage().equals("OK")){
                 SmsAddBo smsAddBo = new SmsAddBo();
                 smsAddBo.setCode(param);

+ 8 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/bo/QuestionBusinessAddBo.java

@@ -33,4 +33,12 @@ public class QuestionBusinessAddBo {
     /** $column.columnComment */
     @ApiModelProperty("业务类型 1为题目业务 2试卷业务 3章业务 4模块业务")
     private Integer type;
+
+    private String educationName;
+
+    private String projectName;
+
+    private String businessName;
+
+    private String subjectName;
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/domain/Exam.java

@@ -69,7 +69,7 @@ private static final long serialVersionUID=1L;
     /** 开启模拟考 1启动(考试类型才能启动) 0关闭 */
     private Integer simulateStatus;
 
-    private Long tenantId;
+    private String tenantId;
 
     /** 模拟考配置参数 */
     @TableField(exist = false)

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/domain/ExamQuestion.java

@@ -37,5 +37,5 @@ private static final long serialVersionUID=1L;
     /** 多选 每项部分分,默认0分则不开启 */
     private BigDecimal partScore;
 
-    private Long tenantId;
+    private String tenantId;
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/domain/Question.java

@@ -61,7 +61,7 @@ private static final long serialVersionUID=1L;
     private String importNo;
     /** 导入顺序 */
     private Long importSort;
-    private Long tenantId;
+    private String tenantId;
     @TableField(exist = false)
     private Long oId;
     /** 山东题库ID */

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/domain/QuestionBusiness.java

@@ -42,7 +42,7 @@ private static final long serialVersionUID=1L;
     /** $column.columnComment */
     private Long majorId;
 
-    private Long tenantId;
+    private String tenantId;
     private Integer type;
 
     @TableField(exist = false)

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/domain/QuestionChapter.java

@@ -45,7 +45,7 @@ private static final long serialVersionUID=1L;
     /** 编码 */
     private String code;
 
-    private Long tenantId;
+    private String tenantId;
     @TableField(exist = false)
     private Long oId;
 

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/domain/QuestionChapterExam.java

@@ -33,5 +33,5 @@ private static final long serialVersionUID=1L;
     @TableId(value = "id")
     private Long id;
 
-    private Long tenantId;
+    private String tenantId;
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/domain/QuestionModule.java

@@ -43,7 +43,7 @@ private static final long serialVersionUID=1L;
     /** 编码 */
     private String code;
 
-    private Long tenantId;
+    private String tenantId;
 
     @TableField(exist = false)
     private Long oId;

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/domain/QuestionModuleChapter.java

@@ -32,6 +32,6 @@ private static final long serialVersionUID=1L;
     private Long chapterExamId;
     /** 排序 */
     private Long sort;
-    private Long tenantId;
+    private String tenantId;
 
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/mapper/ExamMapper.java

@@ -23,5 +23,5 @@ public interface ExamMapper extends BaseMapper<Exam> {
     List<ExamVo> getPaperExamList(ExamPaperQueryBo bo);
 
     @InterceptorIgnore(tenantLine = "true")
-    Exam getExamByTenant(@Param("code") String code,@Param("newTenantId") Long newTenantId);
+    Exam getExamByTenant(@Param("code") String code,@Param("newTenantId") String newTenantId);
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/mapper/ExamQuestionMapper.java

@@ -23,5 +23,5 @@ public interface ExamQuestionMapper extends BaseMapper<ExamQuestion> {
     List<ExamQuestionVo> getAppTempList(ExamQuestionQueryBo bo);
 
     @InterceptorIgnore(tenantLine = "true")
-    void deleteByIdAndTenant(@Param("newExamId") Long newExamId,@Param("newTenantId") Long newTenantId);
+    void deleteByIdAndTenant(@Param("newExamId") Long newExamId,@Param("newTenantId") String newTenantId);
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/mapper/QuestionBusinessMapper.java

@@ -19,5 +19,5 @@ public interface QuestionBusinessMapper extends BaseMapper<QuestionBusiness> {
     List<QuestionBusiness> getListById(QuestionBusinessQueryBo bo);
 
     @InterceptorIgnore(tenantLine = "true")
-    void deleteByIdAndTenant(@Param("majorId") Long majorId,@Param("newTenantId") Long newTenantId,@Param("type") Integer type);
+    void deleteByIdAndTenant(@Param("majorId") Long majorId,@Param("newTenantId") String newTenantId,@Param("type") Integer type);
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/mapper/QuestionChapterExamMapper.java

@@ -23,5 +23,5 @@ public interface QuestionChapterExamMapper extends BaseMapper<QuestionChapterExa
     List<ExamVo> getDoList(QuestionChapterExamQueryBo bo);
 
     @InterceptorIgnore(tenantLine = "true")
-    void deleteByIdAndTenant(@Param("newChapterExamId") Long newChapterExamId,@Param("newTenantId") Long newTenantId);
+    void deleteByIdAndTenant(@Param("newChapterExamId") Long newChapterExamId,@Param("newTenantId") String newTenantId);
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/mapper/QuestionChapterMapper.java

@@ -21,5 +21,5 @@ public interface QuestionChapterMapper extends BaseMapper<QuestionChapter> {
     QuestionChapterVo getById(Long chapterExamId);
 
     @InterceptorIgnore(tenantLine = "true")
-    QuestionChapter getChaptereExamByTenant(@Param("code") String code,@Param("newTenantId") Long newTenantId);
+    QuestionChapter getChaptereExamByTenant(@Param("code") String code,@Param("newTenantId") String newTenantId);
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/mapper/QuestionMapper.java

@@ -38,5 +38,5 @@ public interface QuestionMapper extends BaseMapper<Question> {
 
     List<BankGoodsExamVo> getBankGoodsExamList(@Param("goodsId") Long goodsId);
 
-    Question getQuestionByTenant(@Param("code") String code,@Param("newTenantId") Long newTenantId);
+    Question getQuestionByTenant(@Param("code") String code,@Param("newTenantId") String newTenantId);
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/mapper/QuestionModuleChapterMapper.java

@@ -22,5 +22,5 @@ public interface QuestionModuleChapterMapper extends BaseMapper<QuestionModuleCh
     List<QuestionChapterVo> getDoList(QuestionModuleChapterQueryBo bo);
 
     @InterceptorIgnore(tenantLine = "true")
-    void deleteByIdAndTenant(@Param("newModuleExamId") Long newModuleExamId,@Param("newTenantId")  Long newTenantId);
+    void deleteByIdAndTenant(@Param("newModuleExamId") Long newModuleExamId,@Param("newTenantId")  String newTenantId);
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/mapper/QuestionModuleMapper.java

@@ -21,5 +21,5 @@ public interface QuestionModuleMapper extends BaseMapper<QuestionModule> {
     List<QuestionModuleVo> getList(QuestionModuleQueryBo bo);
 
     @InterceptorIgnore(tenantLine = "true")
-    QuestionModule getModuleByTenant(@Param("code") String code,@Param("newTenantId") Long newTenantId);
+    QuestionModule getModuleByTenant(@Param("code") String code,@Param("newTenantId") String newTenantId);
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/IExamQuestionService.java

@@ -56,5 +56,5 @@ public interface IExamQuestionService extends IService<ExamQuestion> {
 	 */
 	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
 
-    void deleteByIdAndTenant(Long newExamId, Long newTenantId);
+    void deleteByIdAndTenant(Long newExamId, String newTenantId);
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/IExamService.java

@@ -58,7 +58,7 @@ public interface IExamService extends IService<Exam> {
 
     boolean batchDelExam(QuestionBatchDelBo bo);
 
-    Exam getExamByTenant(String code, Long newTenantId);
+    Exam getExamByTenant(String code, String newTenantId);
 
 	boolean getShanDongExam(Long userId,String majorname,Long relExamId);
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/IQuestionBusinessService.java

@@ -52,5 +52,5 @@ public interface IQuestionBusinessService extends IService<QuestionBusiness> {
 	 */
 	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
 
-    void deleteByIdAndTenant(Long newModuleExamId, Long newTenantId,Integer type);
+    void deleteByIdAndTenant(Long newModuleExamId, String newTenantId,Integer type);
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/IQuestionChapterExamService.java

@@ -56,5 +56,5 @@ public interface IQuestionChapterExamService extends IService<QuestionChapterExa
 	 */
 	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
 
-    void deleteByIdAndTenant(Long newChapterExamId, Long newTenantId);
+    void deleteByIdAndTenant(Long newChapterExamId, String newTenantId);
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/IQuestionChapterService.java

@@ -60,5 +60,5 @@ public interface IQuestionChapterService extends IService<QuestionChapter> {
 
     boolean batchDelChapterExam(QuestionBatchDelBo bo);
 
-	QuestionChapter getChaptereExamByTenant(String code, Long newTenantId);
+	QuestionChapter getChaptereExamByTenant(String code, String newTenantId);
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/IQuestionModuleChapterService.java

@@ -55,5 +55,5 @@ public interface IQuestionModuleChapterService extends IService<QuestionModuleCh
 	 */
 	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
 
-    void deleteByIdAndTenant(Long newModuleExamId, Long newTenantId);
+    void deleteByIdAndTenant(Long newModuleExamId, String newTenantId);
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/IQuestionModuleService.java

@@ -55,5 +55,5 @@ public interface IQuestionModuleService extends IService<QuestionModule> {
 
     boolean batchDelModuleExam(QuestionBatchDelBo bo);
 
-    QuestionModule getModuleByTenant(String code, Long newTenantId);
+    QuestionModule getModuleByTenant(String code, String newTenantId);
 }

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

@@ -103,7 +103,7 @@ public interface IQuestionService extends IService<Question> {
 	TodayExamWeekRecordDetailVo getTodayExamWeekRecord(Long goodsId, Long userId);
 
 
-    Question getQuestionByTenant(String code, Long newTenantId);
+    Question getQuestionByTenant(String code, String newTenantId);
 
 	String insertByAddBoImport(QuestionAddBo bo, Integer no);
 

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/impl/ExamQuestionServiceImpl.java

@@ -114,7 +114,7 @@ public class ExamQuestionServiceImpl extends ServiceImpl<ExamQuestionMapper, Exa
     }
 
     @Override
-    public void deleteByIdAndTenant(Long newExamId, Long newTenantId) {
+    public void deleteByIdAndTenant(Long newExamId, String newTenantId) {
         baseMapper.deleteByIdAndTenant(newExamId, newTenantId);
     }
 }

+ 3 - 3
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/impl/ExamServiceImpl.java

@@ -345,13 +345,13 @@ public class ExamServiceImpl extends ServiceImpl<ExamMapper, Exam> implements IE
     }
 
     @Override
-    public Exam getExamByTenant(String code, Long newTenantId) {
+    public Exam getExamByTenant(String code, String newTenantId) {
         return baseMapper.getExamByTenant(code, newTenantId);
     }
 
     @Override
     public boolean getShanDongExam(Long userId,String majorname,Long relExamId) {
-        Boolean getNew = false;
+        Boolean getNew = true;
         User user = iUserService.getOne(new LambdaQueryWrapper<User>()
                 .eq(User::getUserId, userId).last("limit 1"));
         String idnum = user.getIdCard();
@@ -374,6 +374,7 @@ public class ExamServiceImpl extends ServiceImpl<ExamMapper, Exam> implements IE
                 if (!respone.contains("\"msg\":\"获取成功\"")) {
                     throw new CustomException("同步请求错误" + respone);
                 }
+                System.out.println(respone);
                 QuestionOtherAddBo addBo = new QuestionOtherAddBo();
                 addBo.setJsonStr(respone);
                 addBo.setFromPlat(1);
@@ -382,7 +383,6 @@ public class ExamServiceImpl extends ServiceImpl<ExamMapper, Exam> implements IE
                 addBo.setRelExamId(relExamId);
                 Long id = iQuestionOtherService.insertByAddBo(addBo);
                 iQuestionOtherService.queryById(id);
-        //        System.out.println(respone);
             } catch (Exception e) {
                 throw new CustomException("同步请求错误" + e.getMessage());
             }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/impl/QuestionBusinessServiceImpl.java

@@ -106,7 +106,7 @@ public class QuestionBusinessServiceImpl extends ServiceImpl<QuestionBusinessMap
     }
 
     @Override
-    public void deleteByIdAndTenant(Long newModuleExamId, Long newTenantId,Integer type) {
+    public void deleteByIdAndTenant(Long newModuleExamId, String newTenantId,Integer type) {
         baseMapper.deleteByIdAndTenant(newModuleExamId, newTenantId,type);
     }
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/impl/QuestionChapterExamServiceImpl.java

@@ -114,7 +114,7 @@ public class QuestionChapterExamServiceImpl extends ServiceImpl<QuestionChapterE
     }
 
     @Override
-    public void deleteByIdAndTenant(Long newChapterExamId, Long newTenantId) {
+    public void deleteByIdAndTenant(Long newChapterExamId, String newTenantId) {
         baseMapper.deleteByIdAndTenant(newChapterExamId, newTenantId);
     }
 

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/impl/QuestionChapterServiceImpl.java

@@ -229,7 +229,7 @@ public class QuestionChapterServiceImpl extends ServiceImpl<QuestionChapterMappe
     }
 
     @Override
-    public QuestionChapter getChaptereExamByTenant(String code, Long newTenantId) {
+    public QuestionChapter getChaptereExamByTenant(String code, String newTenantId) {
         return baseMapper.getChaptereExamByTenant(code, newTenantId);
     }
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/impl/QuestionModuleChapterServiceImpl.java

@@ -110,7 +110,7 @@ public class QuestionModuleChapterServiceImpl extends ServiceImpl<QuestionModule
     }
 
     @Override
-    public void deleteByIdAndTenant(Long newModuleExamId, Long newTenantId) {
+    public void deleteByIdAndTenant(Long newModuleExamId, String newTenantId) {
         baseMapper.deleteByIdAndTenant(newModuleExamId, newTenantId);
     }
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/impl/QuestionModuleServiceImpl.java

@@ -207,7 +207,7 @@ public class QuestionModuleServiceImpl extends ServiceImpl<QuestionModuleMapper,
     }
 
     @Override
-    public QuestionModule getModuleByTenant(String code, Long newTenantId) {
+    public QuestionModule getModuleByTenant(String code, String newTenantId) {
         return baseMapper.getModuleByTenant(code, newTenantId);
     }
 }

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

@@ -2989,7 +2989,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
     }
 
     @Override
-    public Question getQuestionByTenant(String code, Long newTenantId) {
+    public Question getQuestionByTenant(String code, String newTenantId) {
         return baseMapper.getQuestionByTenant(code, newTenantId);
     }
 

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/vo/ExamVo.java

@@ -3,6 +3,7 @@ package com.zhongzheng.modules.bank.vo;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.zhongzheng.common.annotation.Excel;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.zhongzheng.modules.bank.bo.QuestionBusinessAddBo;
 import com.zhongzheng.modules.course.vo.CourseGoodsVo;
 import com.zhongzheng.modules.goods.vo.GoodsVo;
 import io.swagger.annotations.ApiModel;
@@ -158,4 +159,6 @@ public class ExamVo {
 	@Excel(name = "商品试卷限制终端学习,多个,拼接  1公众号 2小程序")
 	@ApiModelProperty("商品试卷限制终端学习,多个,拼接  1公众号 2小程序")
 	private String examLimitClient;
+	@ApiModelProperty("业务层级列表")
+	private List<QuestionBusinessAddBo> businessList;
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/base/domain/Certificate.java

@@ -41,7 +41,7 @@ private static final long serialVersionUID=1L;
     /** 备注 */
     private String remark;
 
-    private Long tenantId;
+    private String tenantId;
     @TableField(exist = false)
     private Long oId;
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/base/domain/CertificateCommon.java

@@ -43,7 +43,7 @@ private static final long serialVersionUID=1L;
     /** 证书类型ID */
     private Long certificateTypeId;
 
-    private Long tenantId;
+    private String tenantId;
 
     @TableField(exist = false)
     private Long oId;

Неке датотеке нису приказане због велике количине промена