yangdamao 1 년 전
부모
커밋
0147a209d3
84개의 변경된 파일2022개의 추가작업 그리고 250개의 파일을 삭제
  1. 40 0
      run-prod.sh
  2. 2 3
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/financial/TopDivideLogController.java
  3. 3 1
      zhongzheng-admin-saas/src/main/resources/application-dev.yml
  4. 1 1
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/common/CommonController.java
  5. 119 11
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/user/DangAnController.java
  6. 4 1
      zhongzheng-admin/src/main/resources/application-dev.yml
  7. 4 1
      zhongzheng-api/src/main/resources/application-dev.yml
  8. 1 1
      zhongzheng-common/src/main/java/com/zhongzheng/common/utils/poi/EasyPoiUtil.java
  9. 244 13
      zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/UserServiceImpl.java
  10. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/alioss/service/OssService.java
  11. 22 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/alioss/service/impl/OssServiceImpl.java
  12. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/mapper/QuestionChapterExamMapper.java
  13. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/IQuestionChapterExamService.java
  14. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/impl/QuestionChapterExamServiceImpl.java
  15. 7 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/base/service/impl/UserProfileServiceImpl.java
  16. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/ICourseService.java
  17. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/service/IExamApplyService.java
  18. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/service/impl/ExamApplyServiceImpl.java
  19. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/mapper/GoodsAttachedMapper.java
  20. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/IGoodsAttachedService.java
  21. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/impl/GoodsAttachedServiceImpl.java
  22. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/mapper/ClassGradeMapper.java
  23. 4 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/mapper/ClassGradeUserMapper.java
  24. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/IClassGradeUserService.java
  25. 191 10
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeUserServiceImpl.java
  26. 7 21
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/UserPeriodServiceImpl.java
  27. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/vo/UserPeriodExportV2Vo.java
  28. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderGoodsServiceImpl.java
  29. 7 3
      zhongzheng-system/src/main/java/com/zhongzheng/modules/schedule/service/impl/ScheduleServiceImpl.java
  30. 6 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/system/domain/SysTask.java
  31. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/system/domain/SysTenant.java
  32. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/bo/TopDivideOrderQueryBo.java
  33. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/vo/TopCreateUserVo.java
  34. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/vo/TopDivideLogVo.java
  35. 9 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/vo/TopDivideOrderVo.java
  36. 9 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/bo/TopOldOrderQueryBo.java
  37. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/domain/TopOldOrderRefund.java
  38. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/service/impl/TopOldOrderCheckLogServiceImpl.java
  39. 37 13
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/service/impl/TopOldOrderServiceImpl.java
  40. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/vo/TopOldOrderRefundVo.java
  41. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/vo/TopRefundUserVo.java
  42. 12 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/settle/service/impl/ITopInstSettleServiceImpl.java
  43. 59 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserApplyRecordBo.java
  44. 8 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserCertificateQueryBo.java
  45. 17 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserDataDownloadUpBo.java
  46. 56 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserDataImportBo.java
  47. 28 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserDownloadBo.java
  48. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserExamRecordAddBo.java
  49. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserExamRecordEditBo.java
  50. 55 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserPromiseRecordBo.java
  51. 7 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserQueryBo.java
  52. 85 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserUsbRecordBo.java
  53. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/domain/UserExamRecord.java
  54. 1 5
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/mapper/UserStudyRecordMapper.java
  55. 7 6
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/mapper/UserSubscribeMapper.java
  56. 11 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/IUserService.java
  57. 4 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/IUserSubscribeService.java
  58. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserBankRecordServiceImpl.java
  59. 5 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserCertificateServiceImpl.java
  60. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserExamRecordServiceImpl.java
  61. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserStudyRecordServiceImpl.java
  62. 52 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserSubscribeServiceImpl.java
  63. 9 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/ExamStudyRecordVo.java
  64. 63 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/UserApplyRecordVo.java
  65. 9 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/UserCertificateVo.java
  66. 32 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/UserDownloadVo.java
  67. 7 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/UserExamRecordVo.java
  68. 54 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/UserPromiseRecordVo.java
  69. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/UserStudyRecordVo.java
  70. 68 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/UserUsbRecordVo.java
  71. 16 1
      zhongzheng-system/src/main/resources/mapper/modules/bank/QuestionChapterExamMapper.xml
  72. 154 129
      zhongzheng-system/src/main/resources/mapper/modules/goods/GoodsAttachedMapper.xml
  73. 1 1
      zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeMapper.xml
  74. 70 1
      zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeUserMapper.xml
  75. 1 2
      zhongzheng-system/src/main/resources/mapper/modules/settle/ExamActivityMapper.xml
  76. 43 4
      zhongzheng-system/src/main/resources/mapper/modules/top/TopDivideLogMapper.xml
  77. 24 4
      zhongzheng-system/src/main/resources/mapper/modules/top/TopDivideOrderMapper.xml
  78. 7 1
      zhongzheng-system/src/main/resources/mapper/modules/top/TopOldOrderGoodsMapper.xml
  79. 36 0
      zhongzheng-system/src/main/resources/mapper/modules/top/TopOldOrderMapper.xml
  80. 26 3
      zhongzheng-system/src/main/resources/mapper/modules/user/UserCertificateMapper.xml
  81. 2 0
      zhongzheng-system/src/main/resources/mapper/modules/user/UserExamRecordMapper.xml
  82. 23 2
      zhongzheng-system/src/main/resources/mapper/modules/user/UserMapper.xml
  83. 46 6
      zhongzheng-system/src/main/resources/mapper/modules/user/UserStudyRecordMapper.xml
  84. 136 0
      zhongzheng-system/src/main/resources/mapper/modules/user/UserSubscribeMapper.xml

+ 40 - 0
run-prod.sh

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

+ 2 - 3
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/financial/TopDivideLogController.java

@@ -127,10 +127,9 @@ public class TopDivideLogController extends BaseController {
     @ApiOperation("查询月份订单列表")
     @PreAuthorize("@ss.hasPermi('system:log:list')")
     @GetMapping("/monthOrderList")
-    public TableDataInfo<TopDivideOrderVo> getMonthOrderList(TopDivideOrderQueryBo bo) {
-        startPage();
+    public AjaxResult<List<TopDivideOrderVo>> getMonthOrderList(TopDivideOrderQueryBo bo) {
         List<TopDivideOrderVo> list = iTopDivideOrderService.getMonthOrderList(bo);
-        return getDataTable(list);
+        return AjaxResult.success(list);
     }
 
     @ApiOperation("查询月份订单统计")

+ 3 - 1
zhongzheng-admin-saas/src/main/resources/application-dev.yml

@@ -55,7 +55,7 @@ spring:
         # 数据库索引
         database: 0
         # 密码
-        password: zhongzheng@@2024
+        password: zhongzheng2021_redis
         # 连接超时时间
         timeout: 10s
         lettuce:
@@ -208,3 +208,5 @@ ZsBank:
     privatekey: NBtl7WnuUtA2v5FaebEkU0/Jj1IodLGT6lQqwkzmd2E=
     sm4key: VuAzSWQhsoNqzn0K
 
+record:
+    downloadPath: http://39.108.7.155:9099/common/user/data/download

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

@@ -622,7 +622,7 @@ public class CommonController extends BaseController {
     @ApiOperation("decodeTel加密")
     @GetMapping("common/free/decodeTel")
     public AjaxResult<String> decodeTel(String key) {
-        return AjaxResult.success("成功", EncryptHandler.decrypt(key));
+        return AjaxResult.success("成功", EncryptHandler.encrypt(key));
     }
 
     @ApiOperation("分销打款结果回调")

+ 119 - 11
zhongzheng-admin/src/main/java/com/zhongzheng/controller/user/DangAnController.java

@@ -1,27 +1,34 @@
 package com.zhongzheng.controller.user;
 
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 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.page.TableDataInfo;
+import com.zhongzheng.common.exception.CustomException;
+import com.zhongzheng.common.utils.SecurityUtils;
+import com.zhongzheng.common.utils.ServletUtils;
+import com.zhongzheng.common.utils.poi.EasyPoiUtil;
+import com.zhongzheng.framework.web.service.TokenService;
 import com.zhongzheng.modules.grade.bo.ClassGradeUserQueryBo;
 import com.zhongzheng.modules.grade.service.IClassGradeUserService;
 import com.zhongzheng.modules.grade.vo.ClassPeriodStudentVo;
+import com.zhongzheng.modules.grade.vo.UserPeriodExportV2Vo;
 import com.zhongzheng.modules.order.bo.OrderQueryBo;
 import com.zhongzheng.modules.order.service.IOrderService;
 import com.zhongzheng.modules.order.vo.OrderListVo;
-import com.zhongzheng.modules.user.bo.UserQueryBo;
-import com.zhongzheng.modules.user.bo.UserVisitLogQueryBo;
-import com.zhongzheng.modules.user.service.IUserStudyRecordService;
-import com.zhongzheng.modules.user.service.IUserVisitLogService;
-import com.zhongzheng.modules.user.vo.ExamStudyRecordVo;
-import com.zhongzheng.modules.user.vo.UserVisitLogVo;
+import com.zhongzheng.modules.top.order.bo.TopOldOrderCustomerBo;
+import com.zhongzheng.modules.user.bo.*;
+import com.zhongzheng.modules.user.service.*;
+import com.zhongzheng.modules.user.vo.*;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.util.List;
 
@@ -43,6 +50,14 @@ public class DangAnController extends BaseController {
 
     private final IUserStudyRecordService iUserStudyRecordService;
 
+    private final IUserCertificateService iUserCertificateService;
+
+    private final IUserSubscribeService iUserSubscribeService;
+
+    private final IUserService iUserService;
+
+    private final TokenService tokenService;
+
     @ApiOperation("查询档案网课列表")
     @PreAuthorize("@ss.hasPermi('grade:user:list')")
     @GetMapping("/listVideoUserPeriod")
@@ -75,9 +90,25 @@ public class DangAnController extends BaseController {
 
     @ApiOperation("学员约考记录")
     @GetMapping("/listUserSubscribe")
-    public TableDataInfo<ClassPeriodStudentVo> getListUserSubscribe(ClassGradeUserQueryBo bo) {
+    public TableDataInfo<UserUsbRecordVo> getListUserSubscribe(UserUsbRecordBo bo) {
         startPage();
-        List<ClassPeriodStudentVo> list = iClassGradeUserService.listVideoUserPeriod(bo);
+        List<UserUsbRecordVo> list = iClassGradeUserService.getListUserSubscribe(bo);
+        return getDataTable(list);
+    }
+
+    @ApiOperation("学员考试记录")
+    @GetMapping("/listUserApply")
+    public TableDataInfo<UserApplyRecordVo> listUserApply(UserApplyRecordBo bo) {
+        startPage();
+        List<UserApplyRecordVo> list = iUserSubscribeService.listUserApply(bo);
+        return getDataTable(list);
+    }
+
+    @ApiOperation("学员承诺书记录")
+    @GetMapping("/listPromise")
+    public TableDataInfo<UserPromiseRecordVo> listPromise(UserPromiseRecordBo bo) {
+        startPage();
+        List<UserPromiseRecordVo> list = iUserSubscribeService.listPromise(bo);
         return getDataTable(list);
     }
 
@@ -108,4 +139,81 @@ public class DangAnController extends BaseController {
         return getDataTable(list);
     }
 
+    @ApiOperation("查询档案证书列表")
+    @PreAuthorize("@ss.hasPermi('grade:student:list')")
+    @GetMapping("/listUserCertificate")
+    public TableDataInfo<UserCertificateVo> listUserCertificate(UserCertificateQueryBo bo) {
+        startPage();
+        List<UserCertificateVo> list = iUserCertificateService.selectList(bo);
+        return getDataTable(list);
+    }
+
+    @ApiOperation("获取证书详细信息")
+    @GetMapping("/certificateDetail")
+    public AjaxResult<UserCertificateVo> getInfo(UserCertificateQueryBo bo) {
+        return AjaxResult.success(iUserCertificateService.selectDetail(bo));
+    }
+
+    @ApiOperation("查询学员直播学习记录列表")
+    @PreAuthorize("@ss.hasPermi('grade:user:list')")
+    @GetMapping("/listUserStudyLiveRecord")
+    public TableDataInfo<UserPeriodExportV2Vo> listUserStudyRecordV2Week(ClassGradeUserQueryBo bo) {
+        startPage();
+        List<UserPeriodExportV2Vo> list = iClassGradeUserService.listUserStudyRecordV2Week(bo);
+        return getDataTable(list);
+    }
+
+    @ApiOperation("查询学员题库学习记录列表")
+    @PreAuthorize("@ss.hasPermi('grade:user:list')")
+    @GetMapping("/listUserStudyExamRecord")
+    public TableDataInfo<UserPeriodExportV2Vo> listUserStudyExamRecord(ClassGradeUserQueryBo bo) {
+        startPage();
+        List<UserPeriodExportV2Vo> list = iClassGradeUserService.listUserStudyQuestionRecordV2Week(bo);
+        return getDataTable(list);
+    }
+
+    @ApiOperation("学员资料导入更新")
+    @PostMapping("/userDataImportUp")
+    public AjaxResult userDataImportUp(MultipartFile file) {
+        List<UserDataImportBo> customerBos = EasyPoiUtil.importExcel(file,0,1,UserDataImportBo.class);
+        if (CollectionUtils.isEmpty(customerBos) || customerBos.stream().allMatch(x -> ObjectUtils.isNull(x.getUserCard()))){
+            throw new CustomException("导入文件格式不正确或文件为空,请检查文件!");
+        }
+        iUserService.userDataImportUp(customerBos);
+        return AjaxResult.success();
+    }
+
+    @ApiOperation("学员资料照片导入")
+    @PostMapping("/userDataImgImport")
+    public AjaxResult userDataImgImport(MultipartFile file) {
+        iUserService.userDataImgImport(file);
+        return AjaxResult.success();
+    }
+
+    @ApiOperation("学员资料批量下载")
+    @PostMapping("/data/download")
+    public AjaxResult userDataDownload(@RequestBody UserDownloadBo bo) {
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        bo.setCreateSysUserId(loginUser.getUser().getUserId());
+        iUserService.userDataDownload(bo);
+        return AjaxResult.success();
+    }
+
+    @ApiOperation("学员资料下载任务")
+    @GetMapping("/data/download/list")
+    public AjaxResult<List<UserDownloadVo>> userDataDownloadList() {
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        List<UserDownloadVo> list = iUserService.userDataDownloadList(loginUser.getUser().getUserId());
+        return AjaxResult.success(list);
+    }
+
+    @ApiOperation("学员资料下载任务回调")
+    @PostMapping("/data/download/up")
+    public AjaxResult userDataDownloadUp(@RequestBody UserDataDownloadUpBo bo) {
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        bo.setCreateSysUserId(loginUser.getUser().getUserId());
+        iUserService.userDataDownloadUp(bo);
+        return AjaxResult.success();
+    }
+
 }

+ 4 - 1
zhongzheng-admin/src/main/resources/application-dev.yml

@@ -55,7 +55,7 @@ spring:
         # 数据库索引
         database: 0
         # 密码
-        password: zhongzheng@@2024
+        password: zhongzheng2021_redis
         # 连接超时时间
         timeout: 10s
         lettuce:
@@ -208,3 +208,6 @@ ZsBank:
     publickey: BNsIe9U0x8IeSe4h/dxUzVEz9pie0hDSfMRINRXc7s1UIXfkExnYECF4QqJ2SnHxLv3z/99gsfDQrQ6dzN5lZj0=
     privatekey: NBtl7WnuUtA2v5FaebEkU0/Jj1IodLGT6lQqwkzmd2E=
     sm4key: VuAzSWQhsoNqzn0K
+
+record:
+    downloadPath: http://39.108.7.155:9099/common/user/data/download

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

@@ -55,7 +55,7 @@ spring:
         # 数据库索引
         database: 0
         # 密码
-        password: zhongzheng@@2024
+        password: zhongzheng2021_redis
         # 连接超时时间
         timeout: 10s
         lettuce:
@@ -210,3 +210,6 @@ ZsBank:
     publickey: BNsIe9U0x8IeSe4h/dxUzVEz9pie0hDSfMRINRXc7s1UIXfkExnYECF4QqJ2SnHxLv3z/99gsfDQrQ6dzN5lZj0=
     privatekey: NBtl7WnuUtA2v5FaebEkU0/Jj1IodLGT6lQqwkzmd2E=
     sm4key: VuAzSWQhsoNqzn0K
+
+record:
+    downloadPath: http://39.108.7.155:9099/common/user/data/download

+ 1 - 1
zhongzheng-common/src/main/java/com/zhongzheng/common/utils/poi/EasyPoiUtil.java

@@ -166,7 +166,7 @@ public class EasyPoiUtil {
         } catch (NoSuchElementException e) {
             throw new RuntimeException("excel文件不能为空");
         } catch (Exception e) {
-            throw new RuntimeException(e.getMessage());
+            throw new RuntimeException("导入的文件不正确,请重新导入!");
 
         }
         return list;

+ 244 - 13
zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/UserServiceImpl.java

@@ -25,9 +25,14 @@ import com.zhongzheng.common.exception.BaseException;
 import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.type.EncryptHandler;
 import com.zhongzheng.common.utils.*;
+import com.zhongzheng.common.utils.file.FileUtils;
 import com.zhongzheng.common.utils.http.HttpUtils;
 import com.zhongzheng.common.utils.ip.IpUtils;
+import com.zhongzheng.modules.alioss.bo.OssRequest;
+import com.zhongzheng.modules.alioss.service.OssService;
 import com.zhongzheng.modules.alisms.service.IAliSmsService;
+import com.zhongzheng.modules.base.domain.UserProfile;
+import com.zhongzheng.modules.base.service.IUserProfileService;
 import com.zhongzheng.modules.collect.domain.CollectBank;
 import com.zhongzheng.modules.collect.domain.CollectCourse;
 import com.zhongzheng.modules.collect.domain.CollectNote;
@@ -37,9 +42,12 @@ import com.zhongzheng.modules.collect.mapper.CollectNoteMapper;
 import com.zhongzheng.modules.course.domain.Course;
 import com.zhongzheng.modules.course.domain.CourseSection;
 import com.zhongzheng.modules.course.domain.CourseSubject;
+import com.zhongzheng.modules.course.domain.Major;
 import com.zhongzheng.modules.course.service.ICourseSectionService;
 import com.zhongzheng.modules.course.service.ICourseService;
 import com.zhongzheng.modules.course.service.ICourseSubjectService;
+import com.zhongzheng.modules.course.service.IMajorService;
+import com.zhongzheng.modules.exam.service.IExamApplyService;
 import com.zhongzheng.modules.goods.domain.Goods;
 import com.zhongzheng.modules.goods.service.IGoodsService;
 import com.zhongzheng.modules.goods.vo.UserNewGoodsVo;
@@ -47,11 +55,14 @@ import com.zhongzheng.modules.grade.bo.ClassGradeUserQueryBo;
 import com.zhongzheng.modules.grade.service.IClassGradeUserService;
 import com.zhongzheng.modules.grade.service.impl.ClassGradeServiceImpl;
 import com.zhongzheng.modules.grade.vo.ClassGradeUserGoodsVo;
+import com.zhongzheng.modules.system.domain.SysTask;
 import com.zhongzheng.modules.system.domain.SysTenant;
 import com.zhongzheng.modules.system.service.ISysConfigService;
+import com.zhongzheng.modules.system.service.ISysTaskService;
 import com.zhongzheng.modules.system.service.ISysTenantService;
 import com.zhongzheng.modules.user.bo.*;
 import com.zhongzheng.modules.user.domain.User;
+import com.zhongzheng.modules.user.domain.UserCertificate;
 import com.zhongzheng.modules.user.domain.UserStudyLog;
 import com.zhongzheng.modules.user.domain.UserVisitLog;
 import com.zhongzheng.modules.user.entity.ClientLoginUser;
@@ -65,14 +76,20 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
+import org.springframework.web.multipart.MultipartFile;
 
+import java.io.File;
+import java.io.IOException;
 import java.io.InputStream;
 import java.lang.reflect.Field;
 import java.math.BigDecimal;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
-
+import java.util.stream.Stream;
 
 
 /**
@@ -118,19 +135,24 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
 
     @Autowired
     private RedisCache redisCache;
-
+    @Autowired
+    private ISysTaskService iSysTaskService;
     @Autowired
     private ICourseSubjectService iCourseSubjectService;
-
+    @Autowired
+    private IUserCertificateService iUserCertificateService;
     @Autowired
     private TokenService tokenService;
-
+    @Autowired
+    private IMajorService iMajorService;
     @Autowired
     private IUserVisitLogService iUserVisitLogService;
-
+    @Autowired
+    private IUserProfileService iUserProfileService;
     @Autowired
     private IUserStudyLogService iUserStudyLogService;
-
+    @Autowired
+    private IExamApplyService iExamApplyService;
     @Autowired
     private IUserLoginErrorService iUserLoginErrorService;
     @Autowired
@@ -139,7 +161,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
     private IGoodsService iGoodsService;
     @Autowired
     private ISysTenantService iSysTenantService;
-
+    @Autowired
+    private OssService ossService;
     @Autowired
     private ICourseService iCourseService;
     @Autowired
@@ -148,6 +171,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
     private String liveGotoURL;
     @Value("${oldSys.goods}")
     private String OLD_GOODS;
+    @Value("${record.downloadPath}")
+    private String RECORD_DOWNLOAD;
 
 
     @Override
@@ -1723,6 +1748,215 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
         return null;
     }
 
+    @Override
+    public void userDataImportUp(List<UserDataImportBo> customerBos) {
+        if (CollectionUtils.isEmpty(customerBos)){
+            throw new CustomException("上传文件有误!请检查");
+        }
+        customerBos.forEach(item -> {
+            if (StringUtils.isBlank(item.getUserCard())){
+                throw new CustomException("身份证号码不能为空!");
+            }
+            User user = getOne(new LambdaQueryWrapper<User>()
+                    .eq(User::getIdCard, EncryptHandler.encrypt(item.getUserCard()))
+                    .eq(User::getStatus, 1));
+            if (Objects.isNull(user)){
+                throw new CustomException("用户获取失败,请检查身份证号码!");
+            }
+
+            //跟新用户资料
+            user.setRealname(item.getUserName());
+            if (ObjectUtils.isNotNull(item.getUserPhone())){
+                user.setTelphone(item.getUserPhone());
+            }
+            if (ObjectUtils.isNotNull(item.getSex())){
+                user.setSex(StringUtils.isNotBlank(item.getSex()) && item.getSex().equals("男") ? 1:2);
+            }
+            user.setEduLevel(item.getEducation());
+            user.setSchool(item.getSchool());
+            if (ObjectUtils.isNotNull(item.getGraduationTime())){
+                user.setGraduationTime(DateUtils.formatDate(item.getGraduationTime(),"yyyy-MM-dd"));
+            }
+            user.setMajor(item.getMajor());
+            user.setWorkYear(item.getWorkYear());
+            user.setCompanyName(item.getCompany());
+            user.setUnitContact(item.getCompanyContact());
+            user.setUnitTel(item.getCompanyPhone());
+            updateById(user);
+
+        });
+    }
+
+    @Override
+    public void userDataImgImport(MultipartFile file) {
+        String zhiyuan = System.getProperty("user.dir");
+        String path = zhiyuan+"/zhongzheng-admin/src/main/resources/xueyuanzhiliao";
+        try {
+            FileUtils.unzipWithStream(file.getInputStream(),path);
+        }catch (Exception e){
+            e.printStackTrace();
+            throw new CustomException("文件解压错误");
+        }
+        // 路径
+        try (Stream<Path> paths = Files.walk(Paths.get(path))){
+            List<Path> fileNames = paths
+                    .filter(Files::isRegularFile)
+                    .collect(Collectors.toList());
+            if (com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isEmpty(fileNames)){
+                return;
+            }
+            for (Path fileName : fileNames) {
+                Path name = fileName.getFileName();
+                //身份证号码
+                List<String> sign = Arrays.stream(name.toString().split("&")).collect(Collectors.toList());
+                //身份证号
+                String idCard = sign.get(0);
+                User user = getOne(new LambdaQueryWrapper<User>()
+                        .eq(User::getIdCard, EncryptHandler.encrypt(idCard)));
+                if (ObjectUtils.isNull(user)){
+                    throw new CustomException("文件名称有误,请按命名规则修改文件名!");
+                }
+
+                //上传OSS
+                File userFile = new File(fileName.toString());
+                MultipartFile multipartFile = FileUtils.getMultipartFile(userFile);
+                OssRequest ossRequest = new OssRequest();
+                ossRequest.setUserId(user.getUserId());
+                ossRequest.setFile(multipartFile);
+                ossRequest.setImageStatus(0);
+                String upload = "";
+                try {
+                    upload = ossService.upload(ossRequest);
+                }catch (Exception e) {
+                    throw new CustomException(name+"上传oss失败");
+                }
+                if (name.toString().contains("证件照")){
+                    user.setOneInchPhotos(upload);
+                }
+                if (name.toString().contains("身份证正面")){
+                    user.setIdCardImg1(upload);
+                }
+                if (name.toString().contains("身份证反面")){
+                    user.setIdCardImg2(upload);
+                }
+                if (name.toString().contains("承诺书")){
+                    //专业
+                    String major = sign.get(sign.size() - 1);
+                    List<UserProfile> userProfiles = iExamApplyService.getUserProfiles(idCard, "考前培训施工现场专业人员", major);
+                    for (UserProfile userItem : userProfiles) {
+                        JSONObject jsonObject = JSONObject.parseObject(userItem.getKeyValue());
+                        Map<String, Object> userMap = new HashMap<>();
+                        for (Map.Entry<String, Object> entry : jsonObject.entrySet()) {
+                            userMap.put(entry.getKey(), entry.getValue());
+                        }
+                        String key = "commitment_electr_signature";
+                        String fieldName = "承诺书电子签";
+                        JSONObject recentJson = JSONObject.parseObject(userMap.get(key).toString());
+                        Map<String, Object> recentMap = new HashMap<>();
+                        for (Map.Entry<String, Object> entry : recentJson.entrySet()) {
+                            recentMap.put(entry.getKey(), entry.getValue());
+                        }
+                        if (ObjectUtils.isNotNull(recentMap)){
+                            recentMap.put("value",upload);
+                        }else {
+                            recentMap.put("fieldKey",key);
+                            recentMap.put("value",upload);
+                            recentMap.put("fieldName",fieldName);
+                            recentMap.put("status",0);
+                        }
+                        userMap.put(key,recentMap);
+                        String content = JSONObject.toJSONString(userMap);
+                        userItem.setKeyValue(content);
+                    }
+                    iUserProfileService.updateBatchById(userProfiles);
+                }
+                if (name.toString().contains("证书")){
+                    //专业
+                    String majorName = sign.get(sign.size() - 1);
+                    Major major = iMajorService.getOne(new LambdaQueryWrapper<Major>()
+                            .eq(Major::getCategoryName, majorName)
+                            .eq(Major::getStatus, 1)
+                            .last("limit 1"));
+                    if (ObjectUtil.isNotNull(major)){
+                        iUserCertificateService.update(new LambdaUpdateWrapper<UserCertificate>()
+                                .set(UserCertificate::getCertificatePath,upload)
+                                .eq(UserCertificate::getUserId,user.getUserId())
+                                .eq(UserCertificate::getMajorId,major.getId()));
+                    }
+                }
+                updateById(user);
+            }
+            //删除本地文件
+            FileUtils.deleteFilePackage(path);
+        } catch (IOException e) {
+            e.printStackTrace();
+            throw new CustomException("学员资料有误");
+        }
+    }
+
+    @Override
+    public void userDataDownload(UserDownloadBo bo) {
+        if (CollectionUtils.isEmpty(bo.getUserIds())){
+            return;
+        }
+        //创建学员资料下载
+        SysTask task = new SysTask();
+        task.setTaskName(String.format("学员资料下载:操作人ID(%s),时间:%s",bo.getCreateSysUserId(),DateUtils.getTime()));
+        String code = ServletUtils.getEncoded("DA");
+        bo.setTaskCode(code);
+        task.setTaskCode(code);
+        task.setTaskNum(1);
+        task.setFinishNum(0);
+        task.setTaskStatus(1);
+        task.setTaskType(2);
+        task.setTaskParam(JSONObject.toJSONString(bo));
+        task.setSysUserId(bo.getCreateSysUserId());
+        task.setStatus(1);
+        task.setCreateTime(DateUtils.getNowTime());
+        task.setUpdateTime(DateUtils.getNowTime());
+        iSysTaskService.save(task);
+        //发送下载请求
+        String tenantId = ServletUtils.getRequest().getHeader("TenantId");
+        HashMap<String, String> map = new HashMap<>();
+        map.put("TenantId", tenantId);
+        HttpUtils.sendPostJsonHeader(RECORD_DOWNLOAD, JSONObject.toJSONString(bo),map);
+    }
+
+    @Override
+    public List<UserDownloadVo> userDataDownloadList(Long userId) {
+        List<SysTask> list = iSysTaskService.list(new LambdaQueryWrapper<SysTask>()
+                .eq(SysTask::getSysUserId, userId)
+                .eq(SysTask::getStatus, 1)
+                .eq(SysTask::getTaskType, 2)
+                .orderByDesc(SysTask::getCreateTime));
+        if (CollectionUtils.isEmpty(list)){
+            return new ArrayList<>();
+        }
+        List<UserDownloadVo> collect = list.stream().map(item -> {
+            UserDownloadVo vo = new UserDownloadVo();
+            vo.setId(item.getId());
+            vo.setTaskCode(item.getTaskCode());
+            vo.setTaskStatus(item.getTaskStatus());
+            vo.setCreateSysUserId(item.getSysUserId());
+            vo.setTaskPath(item.getTaskPath());
+            vo.setTaskTime(item.getCreateTime());
+            return vo;
+        }).collect(Collectors.toList());
+        return collect;
+    }
+
+    @Override
+    public void userDataDownloadUp(UserDataDownloadUpBo bo) {
+        SysTask task = iSysTaskService.getOne(new LambdaQueryWrapper<SysTask>()
+                .eq(SysTask::getTaskCode, bo.getTaskCode())
+                .eq(SysTask::getSysUserId, bo.getCreateSysUserId()));
+        if (ObjectUtils.isNull(task)){
+            return;
+        }
+        task.setTaskStatus(4);//已下载
+        iSysTaskService.updateById(task);
+    }
+
     @Override
     public Map<String, Object> accountLogin(UserAppAccountLoginBo bo) {
         if(Validator.isEmpty(bo.getAccount())){
@@ -1748,12 +1982,9 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
                 .eq(User::getIdCard,EncryptHandler.encrypt(bo.getAccount())));
         User user = getOne(queryWrapper);
         String tenantId = ServletUtils.getRequest().getHeader("TenantId");
-        Integer share = 1;
-        if (StringUtils.isNotBlank(tenantId)){
-            SysTenant sysTenant = iSysTenantService.getById(Long.valueOf(tenantId));
-            if (ObjectUtils.isNotNull(sysTenant)){
-                share = sysTenant.getShareClass();
-            }
+        Integer share = 0;
+        if (StringUtils.isNotBlank(tenantId) && "867735392558919680".equals(tenantId)){
+            share = 1;
         }
 
         if(Validator.isEmpty(user)){

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/alioss/service/OssService.java

@@ -45,4 +45,6 @@ public interface OssService {
 
     void processObject(String targetImage ,String sourceImage,String styleType) ;
 
+    void fileDownloadLocal(String key, String localPath);
+
 }

+ 22 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/alioss/service/impl/OssServiceImpl.java

@@ -35,6 +35,7 @@ import org.springframework.util.CollectionUtils;
 import org.springframework.web.multipart.MultipartFile;
 import sun.misc.BASE64Decoder;
 
+import javax.imageio.ImageIO;
 import javax.servlet.http.HttpServletRequest;
 import javax.sql.rowset.serial.SerialBlob;
 import javax.sql.rowset.serial.SerialException;
@@ -229,6 +230,10 @@ public class OssServiceImpl implements OssService {
             case 11:
                 RandomFilename = "file/pdf/" +(sdf.format(new Date())) + "/" + now + ".pdf";
                 break;
+            case 12:
+                String filename = ossRequest.getFile().getOriginalFilename();
+                RandomFilename = "file/dangan/upload/"+ filename.substring(0, filename.lastIndexOf("."));
+                break;
         }
 
         return RandomFilename;
@@ -432,6 +437,23 @@ public class OssServiceImpl implements OssService {
         }
     }
 
+    @Override
+    public void fileDownloadLocal(String key, String localPath) {
+        OSSObject ossObject = ossClient.getObject(ALIYUN_OSS_BUCKET_NAME, key);
+        InputStream in = ossObject.getObjectContent();
+        try {
+            OutputStream out = new FileOutputStream(localPath);
+            int data;
+            while ((data=in.read())!=-1){
+                out.write(data);
+            }
+            out.close();
+            in.close();
+        }catch (Exception e){
+
+        }
+    }
+
     public void zipFile(List<String> fileList, ZipOutputStream zipOut,String dir) {
         if (CollectionUtils.isEmpty(fileList)) {
             return;

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

@@ -24,4 +24,6 @@ public interface QuestionChapterExamMapper extends BaseMapper<QuestionChapterExa
 
     @InterceptorIgnore(tenantLine = "true")
     void deleteByIdAndTenant(@Param("newChapterExamId") Long newChapterExamId,@Param("newTenantId") Long newTenantId);
+
+    List<ExamVo> getSimpleList(QuestionChapterExamQueryBo bo);
 }

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

@@ -29,6 +29,8 @@ public interface IQuestionChapterExamService extends IService<QuestionChapterExa
 
 	List<ExamVo> getDoList(QuestionChapterExamQueryBo bo);
 
+	List<ExamVo> getSimpleList(QuestionChapterExamQueryBo bo);
+
 	/**
 	 * 查询列表
 	 */

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

@@ -52,6 +52,11 @@ public class QuestionChapterExamServiceImpl extends ServiceImpl<QuestionChapterE
         return questionChapterExamMapper.getDoList(bo);
     }
 
+    @Override
+    public List<ExamVo> getSimpleList(QuestionChapterExamQueryBo bo) {
+        return this.baseMapper.getSimpleList(bo);
+    }
+
     @Override
     public List<QuestionChapterExamVo> queryList(QuestionChapterExamQueryBo bo) {
         LambdaQueryWrapper<QuestionChapterExam> lqw = Wrappers.lambdaQuery();

+ 7 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/base/service/impl/UserProfileServiceImpl.java

@@ -501,7 +501,7 @@ public class UserProfileServiceImpl extends ServiceImpl<UserProfileMapper, UserP
         String keyValue = bo.getKeyValue();
         if (Validator.isNotEmpty(keyValue)) {
             Map<String, String> maps = JSONObject.parseObject(keyValue, Map.class);
-            String recent_photos, idcard_face_photo, idcard_national_photo,work_unit,idcard,name,education,apply_post,telphone,sex,school,unit_contact,unit_tel,graduation_time,major;
+            String recent_photos, idcard_face_photo, idcard_national_photo,work_unit,idcard,name,education,apply_post,telphone,sex,school,unit_contact,unit_tel,graduation_time,major,working_years;
             LambdaUpdateWrapper<User> objectLambdaUpdateWrapper = Wrappers.lambdaUpdate();
             objectLambdaUpdateWrapper.eq(User::getUserId, bo.getUserId());
             UserVo user = iUserService.queryById(bo.getUserId());
@@ -612,6 +612,12 @@ public class UserProfileServiceImpl extends ServiceImpl<UserProfileMapper, UserP
                     objectLambdaUpdateWrapper.set(User::getMajor, major);
                 }
             }
+            if (maps.containsKey("working_years")) {
+                working_years = JSONObject.parseObject(String.valueOf(maps.get("working_years")), UserProfileFit.class).getValue();
+                if(Validator.isNotEmpty(working_years)){
+                    objectLambdaUpdateWrapper.set(User::getWorkYear, working_years);
+                }
+            }
             objectLambdaUpdateWrapper.set(User::getUpdateTime, DateUtils.getNowTime());
             iUserService.update(null, objectLambdaUpdateWrapper);
         }

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/ICourseService.java

@@ -70,6 +70,7 @@ public interface ICourseService extends IService<Course> {
 
 	List<GoodsPeriodStatusVo> listSection(ClassGradeUserQueryBo bo);
 
+
     boolean editRebuild(ClassGradeUserQueryBo bo);
 
     List<GoodsUserVo> goodsList(CourseQueryBo bo);

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/service/IExamApplyService.java

@@ -2,6 +2,7 @@ package com.zhongzheng.modules.exam.service;
 
 import com.zhongzheng.common.core.page.TableDataInfo;
 import com.zhongzheng.modules.base.bo.UserProfileQueryBo;
+import com.zhongzheng.modules.base.domain.UserProfile;
 import com.zhongzheng.modules.exam.bo.*;
 import com.zhongzheng.modules.exam.domain.ExamApply;
 import com.zhongzheng.modules.exam.vo.*;
@@ -110,4 +111,6 @@ public interface IExamApplyService extends IService<ExamApply> {
     void examApplyResultReceipt(List<ExamApplyResultExportBo> exportBo, String time);
 
     String examApplyResultCertificate(List<MultipartFile> files);
+
+	List<UserProfile> getUserProfiles(String idCard, String businessName, String major);
 }

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/service/impl/ExamApplyServiceImpl.java

@@ -1145,6 +1145,11 @@ public class ExamApplyServiceImpl extends ServiceImpl<ExamApplyMapper, ExamApply
 
     }
 
+    @Override
+    public List<UserProfile> getUserProfiles(String idCard,String businessName,String major){
+       return baseMapper.getUserProfileList(idCard,businessName,major);
+    }
+
     @Override
     public String examUserProfileExport(UserProfileQueryBo bo) {
         List<UserProfileVo> userProfileVos = iUserProfileService.queryList(bo);

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/mapper/GoodsAttachedMapper.java

@@ -26,4 +26,6 @@ public interface GoodsAttachedMapper extends BaseMapper<GoodsAttached> {
 
     @InterceptorIgnore(tenantLine = "true")
     void deleteByIdTenant(@Param("newGoodsId") Long newGoodsId,@Param("newTenantId") Long newTenantId);
+
+    List<GoodsAttachedVo> getTopList(GoodsAttachedQueryBo bo);
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/IGoodsAttachedService.java

@@ -32,6 +32,8 @@ public interface IGoodsAttachedService extends IService<GoodsAttached> {
 
 	List<GoodsAttachedVo> getList(GoodsAttachedQueryBo bo);
 
+	List<GoodsAttachedVo> getTopList(GoodsAttachedQueryBo bo);
+
 	/**
 	 * 根据新增业务对象插入商品附加产品
 	 * @param bo 商品附加产品新增业务对象

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/impl/GoodsAttachedServiceImpl.java

@@ -76,6 +76,11 @@ public class GoodsAttachedServiceImpl extends ServiceImpl<GoodsAttachedMapper, G
         return list;
     }
 
+    @Override
+    public List<GoodsAttachedVo> getTopList(GoodsAttachedQueryBo bo) {
+        return this.baseMapper.getTopList(bo);
+    }
+
     /**
     * 实体类转化成视图对象
     *

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/mapper/ClassGradeMapper.java

@@ -109,5 +109,6 @@ public interface ClassGradeMapper extends BaseMapper<ClassGrade> {
     @InterceptorIgnore(tenantLine = "true")
     ClassGrade getCodeNoTenant(@Param("officialName") String officialName,@Param("tenantId") Long tenantId);
 
+    @InterceptorIgnore(tenantLine = "true")
     Long getGradeCount(String sevenCode);
 }

+ 4 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/mapper/ClassGradeUserMapper.java

@@ -7,7 +7,9 @@ import com.zhongzheng.modules.grade.domain.ClassGradeUser;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.zhongzheng.modules.grade.vo.*;
 import com.zhongzheng.modules.user.bo.UserQueryBo;
+import com.zhongzheng.modules.user.bo.UserUsbRecordBo;
 import com.zhongzheng.modules.user.domain.User;
+import com.zhongzheng.modules.user.vo.UserUsbRecordVo;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.Collection;
@@ -106,4 +108,6 @@ public interface ClassGradeUserMapper extends BaseMapper<ClassGradeUser> {
     List<ClassPeriodStudentVo> listVideoUserPeriod(ClassGradeUserQueryBo bo);
 
     List<ClassPeriodStudentVo> listBKUserPeriod(ClassGradeUserQueryBo bo);
+
+    List<UserUsbRecordVo> getListUserSubscribe(UserUsbRecordBo bo);
 }

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/IClassGradeUserService.java

@@ -6,7 +6,9 @@ import com.zhongzheng.modules.grade.domain.ClassGradeUser;
 import com.zhongzheng.modules.grade.vo.*;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.zhongzheng.modules.user.bo.UserQueryBo;
+import com.zhongzheng.modules.user.bo.UserUsbRecordBo;
 import com.zhongzheng.modules.user.domain.User;
+import com.zhongzheng.modules.user.vo.UserUsbRecordVo;
 
 import java.util.Collection;
 import java.util.List;
@@ -103,6 +105,8 @@ public interface IClassGradeUserService extends IService<ClassGradeUser> {
 
 	List<UserPeriodExportV2Vo> listUserStudyRecordV2Week(ClassGradeUserQueryBo bo);
 
+	List<UserPeriodExportV2Vo> listUserStudyQuestionRecordV2Week(ClassGradeUserQueryBo bo);
+
     List<ClassPeriodUserVo> listPeriod(ClassGradeUserQueryBo bo);
 
 	List<ClassPeriodVo> listPeriodAudit(ClassGradeUserQueryBo bo);
@@ -148,4 +152,5 @@ public interface IClassGradeUserService extends IService<ClassGradeUser> {
 
 	List<ClassPeriodStudentVo> listBKUserPeriod(ClassGradeUserQueryBo bo);
 
+    List<UserUsbRecordVo> getListUserSubscribe(UserUsbRecordBo bo);
 }

+ 191 - 10
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeUserServiceImpl.java

@@ -8,6 +8,7 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.pagehelper.Page;
@@ -26,6 +27,12 @@ import com.zhongzheng.common.utils.ToolsUtils;
 import com.zhongzheng.common.utils.file.FileUtils;
 import com.zhongzheng.common.utils.http.HttpUtils;
 import com.zhongzheng.modules.alioss.service.OssService;
+import com.zhongzheng.modules.bank.bo.QuestionChapterExamQueryBo;
+import com.zhongzheng.modules.bank.bo.QuestionModuleChapterQueryBo;
+import com.zhongzheng.modules.bank.service.IQuestionChapterExamService;
+import com.zhongzheng.modules.bank.service.IQuestionModuleChapterService;
+import com.zhongzheng.modules.bank.vo.ExamVo;
+import com.zhongzheng.modules.bank.vo.QuestionChapterVo;
 import com.zhongzheng.modules.base.service.IUserProfileService;
 import com.zhongzheng.modules.course.bo.CourseBusinessQueryBo;
 import com.zhongzheng.modules.course.bo.CourseProjectTypeQueryBo;
@@ -35,8 +42,11 @@ import com.zhongzheng.modules.course.vo.CourseBusinessVo;
 import com.zhongzheng.modules.course.vo.CourseChapterVo;
 import com.zhongzheng.modules.course.vo.CourseModuleVo;
 import com.zhongzheng.modules.course.vo.CourseProjectTypeVo;
+import com.zhongzheng.modules.goods.bo.GoodsAttachedQueryBo;
 import com.zhongzheng.modules.goods.domain.Goods;
+import com.zhongzheng.modules.goods.service.IGoodsAttachedService;
 import com.zhongzheng.modules.goods.service.IGoodsService;
+import com.zhongzheng.modules.goods.vo.GoodsAttachedVo;
 import com.zhongzheng.modules.goods.vo.GoodsVo;
 import com.zhongzheng.modules.grade.bo.*;
 import com.zhongzheng.modules.grade.domain.ClassGrade;
@@ -58,17 +68,11 @@ import com.zhongzheng.modules.system.domain.SysOldOrg;
 import com.zhongzheng.modules.system.service.ISysConfigService;
 import com.zhongzheng.modules.system.service.ISysOldOrgService;
 import com.zhongzheng.modules.system.service.ISysUserService;
-import com.zhongzheng.modules.user.bo.SubjectStudyRecordQueryBo;
-import com.zhongzheng.modules.user.bo.UserBankRecordQueryBo;
-import com.zhongzheng.modules.user.bo.UserQueryBo;
-import com.zhongzheng.modules.user.bo.UserStudyRecordQueryBo;
+import com.zhongzheng.modules.user.bo.*;
 import com.zhongzheng.modules.user.domain.User;
 import com.zhongzheng.modules.user.domain.UserStudyRecordPhoto;
 import com.zhongzheng.modules.user.mapper.UserStudyRecordPhotoMapper;
-import com.zhongzheng.modules.user.service.IUserBankRecordService;
-import com.zhongzheng.modules.user.service.IUserService;
-import com.zhongzheng.modules.user.service.IUserStudyRecordPhotoService;
-import com.zhongzheng.modules.user.service.IUserStudyRecordService;
+import com.zhongzheng.modules.user.service.*;
 import com.zhongzheng.modules.user.vo.*;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -82,6 +86,13 @@ import org.springframework.util.CollectionUtils;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.math.BigDecimal;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.ZoneId;
+import java.time.ZonedDateTime;
+import java.time.format.DateTimeFormatter;
+import java.time.temporal.TemporalAdjusters;
 import java.util.*;
 import java.util.stream.Collectors;
 import java.util.zip.ZipOutputStream;
@@ -165,6 +176,9 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
     @Autowired
     private ISysConfigService configService;
 
+    @Autowired
+    private IUserExamRecordService iUserExamRecordService;
+
     @Value("${aliyun.oss.endpoint}")
     private String ALIYUN_OSS_ENDPOINT;
 
@@ -201,6 +215,15 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
     @Autowired
     private IMajorService iMajorService;
 
+    @Autowired
+    private IGoodsAttachedService iGoodsAttachedService;
+
+    @Autowired
+    private IQuestionModuleChapterService iQuestionModuleChapterService;
+
+    @Autowired
+    private IQuestionChapterExamService iQuestionChapterExamService;
+
 
     private String SEVEN_OFFICIALPUSH_INFOACCOUNT;
     private String SEVEN_OFFICIALPUSH_TOKEN;
@@ -1686,6 +1709,7 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
     private UserPeriodExportV2Vo mergeEamDataV2(Long index, String moduleName, String chapterName, String sectionName, ClassPeriodSectionVo classPeriodSectionVo) {
         //试卷学习记录
         UserBankRecordQueryBo recordQueryBo = BeanUtil.toBean(classPeriodSectionVo, UserBankRecordQueryBo.class);
+        recordQueryBo.setCurrentStatus(1);
         List<UserBankRecordVo> recordList = iUserBankRecordService.queryList(recordQueryBo);
         //录入学时记录
         UserPeriodExportV2Vo userPeriodExportVo = new UserPeriodExportV2Vo();
@@ -1707,6 +1731,31 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
         return userPeriodExportVo;
     }
 
+    private UserPeriodExportV2Vo mergeQuestionEamDataV2(Long index, String moduleName, String chapterName, String examName, UserExamRecordQueryBo recordQueryBo) {
+        //试卷学习记录
+        List<UserExamRecordVo> recordList = iUserExamRecordService.queryList(recordQueryBo);
+        //录入学时记录
+        UserPeriodExportV2Vo userPeriodExportVo = new UserPeriodExportV2Vo();
+        userPeriodExportVo.setId(index);
+        userPeriodExportVo.setExamName(examName);
+        userPeriodExportVo.setModuleName(moduleName);
+        userPeriodExportVo.setChapterName(chapterName);
+        List<UserPeriodItemExportVo> studyList = new ArrayList<>();
+        for (UserExamRecordVo vo : recordList) {
+            UserPeriodItemExportVo exportVo = new UserPeriodItemExportVo();
+            exportVo.setStudyStartTime(vo.getCreateTime());
+            exportVo.setStudyEndTime(vo.getCommitTime());
+            exportVo.setSectionType(4);
+            exportVo.setStatus(vo.getReportStatus());
+            exportVo.setScore(vo.getPerformance());
+            exportVo.setFromPlat(vo.getFromPlat());
+            exportVo.setScore(vo.getPerformance());
+            studyList.add(exportVo);
+        }
+        userPeriodExportVo.setRecordList(studyList);
+        return userPeriodExportVo;
+    }
+
     private UserPeriodExportV2Vo mergeDataV2(Long index, String moduleName, String chapterName, String sectionName, ClassPeriodSectionVo classPeriodSectionVo, UserStudyRecordQueryBo recordQueryBo) {
         //节学习记录
         List<SectionStudyRecordVo> recordList = iUserStudyRecordService.selectSectionRecord(recordQueryBo);
@@ -1732,6 +1781,7 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
                     exportVo.setDurationTime(classPeriodSectionVo.getDurationTime());
                     exportVo.setSectionType(classPeriodSectionVo.getSectionType());
                     exportVo.setFromPlat(vo.getFromPlat());
+                    exportVo.setSectionType(vo.getSectionType());
                     studyList.add(exportVo);
                 }
                 endTime = vo.getEndTime();
@@ -1747,9 +1797,9 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
         if (classPeriodSectionVo.getSectionType() == 2 || classPeriodSectionVo.getSectionType() == 3) {
             //默认加上直播
             UserPeriodItemExportVo exportVo = new UserPeriodItemExportVo();
-            exportVo.setSectionType(2);
             exportVo.setStatus(0); //直播未参与
             exportVo.setDurationTime(classPeriodSectionVo.getRealDuration());
+            exportVo.setSectionType(classPeriodSectionVo.getSectionType());
             studyList.add(exportVo);
             Long startTime = null;
             Long endTime = null;
@@ -1770,7 +1820,9 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
                             exportItemVo.setStudyStartTime(startTime);
                             exportItemVo.setStatus(0);
                             exportItemVo.setDurationTime(classPeriodSectionVo.getDurationTime());
-                            exportVo.setSectionType(3);
+                            exportItemVo.setSectionType(3);
+                            exportItemVo.setFromPlat(vo.getFromPlat());
+                            exportItemVo.setVideoCurrentTime(vo.getVideoCurrentTime());
                             studyList.add(exportItemVo);
                         }
                         endTime = vo.getEndTime();
@@ -2857,6 +2909,83 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
         return studyList;
     }
 
+    @Override
+    public List<UserPeriodExportV2Vo> listUserStudyQuestionRecordV2Week(ClassGradeUserQueryBo bo) {
+        if(Validator.isEmpty(bo.getOrderGoodsId())){
+            throw new CustomException("orderGoodsId缺失");
+        }
+        GoodsAttachedQueryBo attachedQueryBo = new GoodsAttachedQueryBo();
+        attachedQueryBo.setGoodsId(bo.getGoodsId());
+        List<GoodsAttachedVo> topList = iGoodsAttachedService.getTopList(attachedQueryBo);
+        String moduleName = "";
+        String chapterName = "";
+        String examName = "";
+        List<UserPeriodExportV2Vo> studyList = new ArrayList<>();
+        long i = 0;
+        Long gradeId = bo.getGradeId();
+        Long userId = bo.getUserId();
+        Long goodsId = bo.getGoodsId();
+        Long courseId = bo.getCourseId();
+        Long orderGoodsId = bo.getOrderGoodsId();
+        for (GoodsAttachedVo classPeriodVo : topList) {
+            moduleName = "";
+            chapterName = "";
+            examName = "";
+            if (classPeriodVo.getType() == 1) {
+                moduleName = classPeriodVo.getName();
+                QuestionModuleChapterQueryBo moduleChapterQueryBo = new QuestionModuleChapterQueryBo();
+                moduleChapterQueryBo.setModuleExamId(classPeriodVo.getMajorId());
+                List<QuestionChapterVo> chapterList= iQuestionModuleChapterService.getList(moduleChapterQueryBo);
+                for (QuestionChapterVo chapterVo : chapterList) {
+                    chapterName = chapterVo.getName();
+                    QuestionChapterExamQueryBo chapterExamQueryBo = new QuestionChapterExamQueryBo();
+                    chapterExamQueryBo.setChapterExamId(chapterVo.getChapterExamId());
+                    List<ExamVo> examVoList = iQuestionChapterExamService.getSimpleList(chapterExamQueryBo);
+                    for (ExamVo examVo : examVoList) {
+                        examName = examVo.getExamName();
+                        i++;
+                        UserExamRecordQueryBo recordQueryBo = new UserExamRecordQueryBo();
+                        recordQueryBo.setExamId(examVo.getExamId());
+                        recordQueryBo.setModuleExamId(classPeriodVo.getMajorId());
+                        recordQueryBo.setChapterExamId(chapterVo.getChapterExamId());
+                        recordQueryBo.setUserId(userId);
+                        recordQueryBo.setOrderGoodsId(orderGoodsId);
+                        studyList.add(mergeQuestionEamDataV2(i, moduleName, chapterName, examName,  recordQueryBo));
+                    }
+                }
+            }
+            else if (classPeriodVo.getType() == 2) {
+                chapterName = classPeriodVo.getName();
+                QuestionChapterExamQueryBo chapterExamQueryBo = new QuestionChapterExamQueryBo();
+                chapterExamQueryBo.setChapterExamId(classPeriodVo.getMajorId());
+                List<ExamVo> examVoList = iQuestionChapterExamService.getSimpleList(chapterExamQueryBo);
+                for (ExamVo examVo : examVoList) {
+                    examName = examVo.getExamName();
+                    i++;
+                    UserExamRecordQueryBo recordQueryBo = new UserExamRecordQueryBo();
+                    recordQueryBo.setExamId(examVo.getExamId());
+                    recordQueryBo.setModuleExamId(0L);
+                    recordQueryBo.setChapterExamId(classPeriodVo.getMajorId());
+                    recordQueryBo.setUserId(userId);
+                    recordQueryBo.setOrderGoodsId(orderGoodsId);
+                    studyList.add(mergeQuestionEamDataV2(i, moduleName, chapterName, examName,  recordQueryBo));
+                }
+            }
+            else{
+                examName = classPeriodVo.getName();
+                i++;
+                UserExamRecordQueryBo recordQueryBo = new UserExamRecordQueryBo();
+                recordQueryBo.setExamId(classPeriodVo.getMajorId());
+                recordQueryBo.setModuleExamId(0L);
+                recordQueryBo.setChapterExamId(0L);
+                recordQueryBo.setUserId(userId);
+                recordQueryBo.setOrderGoodsId(orderGoodsId);
+                studyList.add(mergeQuestionEamDataV2(i, moduleName, chapterName, examName,  recordQueryBo));
+            }
+        }
+        return studyList;
+    }
+
     @Override
     public List<ClassPeriodUserVo> listPeriod(ClassGradeUserQueryBo bo) {
         if(Validator.isEmpty(bo.getOrderGoodsId())){
@@ -3638,6 +3767,58 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
         return this.baseMapper.listBKUserPeriod(bo);
     }
 
+    @Override
+    public List<UserUsbRecordVo> getListUserSubscribe(UserUsbRecordBo bo) {
+        if (ObjectUtils.isNotNull(bo.getApplyDateTime()) && bo.getApplyDateTime().length() == 6){
+            //根据月份筛选
+            String dateStr = String.format(bo.getApplyDateTime()); // 指定年月
+            LocalDate date = LocalDate.parse(dateStr + "01", DateTimeFormatter.BASIC_ISO_DATE);
+            LocalDate dateFirst = date.with(TemporalAdjusters.firstDayOfMonth()); // 指定年月的第一天
+            LocalDate dateEnd = date.with(TemporalAdjusters.lastDayOfMonth()); // 指定年月的最后一天
+            ZonedDateTime zonedDateTime1 = dateFirst.atStartOfDay(ZoneId.systemDefault());
+            Date date1 = Date.from(zonedDateTime1.toInstant());
+            ZonedDateTime zonedDateTime = dateEnd.atStartOfDay(ZoneId.systemDefault());
+            Date date2 = Date.from(zonedDateTime.toInstant());
+            Long startTime = date1.getTime()/1000;
+            Long endTime = (date2.getTime()/1000) + 86400;
+            bo.setMonthStartTime(startTime);
+            bo.setMonthEndTime(endTime);
+        }else if (ObjectUtils.isNotNull(bo.getApplyDateTime()) && bo.getApplyDateTime().length() > 6){
+            //根据某天筛选
+            String dateStr = String.format(bo.getApplyDateTime());
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
+            try {
+                Date parse = sdf.parse(dateStr);
+                bo.setMonthStartTime(parse.getTime()/1000);
+                bo.setMonthEndTime(parse.getTime()/1000);
+            } catch (ParseException e) {
+                e.printStackTrace();
+            }
+        }
+        List<UserUsbRecordVo> usbRecordVos = baseMapper.getListUserSubscribe(bo);
+        if (CollectionUtils.isEmpty(usbRecordVos)){
+            return new ArrayList<>();
+        }
+        usbRecordVos.forEach(item -> {
+            if (ObjectUtils.isNotNull(item.getApplyTime())){
+                item.setApplyTimeStr(String.format("%s (%s-%s)",DateUtils.timestampToDateFormat(item.getApplyTime(),"yyyy-MM-dd")
+                        ,item.getApplyStarTime(),item.getApplyEndTime()));
+            }
+            if (item.getSubscribeStatus() == 1){
+                if (ObjectUtils.isNull(item.getApplyTime())){
+                    item.setSubscribeStatus(3);
+                }else {
+                    Long aLong = DateUtils.dateTimeSec("HH:mm", item.getApplyEndTime());
+                    Long time = item.getApplyTime()+aLong;
+                    if (DateUtils.getNowTime() > time){
+                        item.setSubscribeStatus(3);
+                    }
+                }
+            }
+        });
+        return usbRecordVos;
+    }
+
 
 
 

+ 7 - 21
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/UserPeriodServiceImpl.java

@@ -130,6 +130,9 @@ public class UserPeriodServiceImpl extends ServiceImpl<UserPeriodMapper, UserPer
     @Autowired
     private IUserService iUserService;
 
+    @Autowired
+    private ISysTenantService iSysTenantService;
+
     @Autowired
     private IExamApplyGoodsService iExamApplyGoodsService;
 
@@ -205,9 +208,6 @@ public class UserPeriodServiceImpl extends ServiceImpl<UserPeriodMapper, UserPer
     @Autowired
     private ICourseModuleService iCourseModuleService;
 
-    @Autowired
-    private ISysTenantService iSysTenantService;
-
     @Value("${oldStudySys.syncPath}")
     private String SYNC_PATH;
 
@@ -881,7 +881,7 @@ public class UserPeriodServiceImpl extends ServiceImpl<UserPeriodMapper, UserPer
                 CourseMenuQueryBo menuQueryBo = new CourseMenuQueryBo();
                 menuQueryBo.setCourseId(courseVo.getCourseId());
                 List<CourseMenuVo> courseMenuVoList = iCourseMenuService.selectList(menuQueryBo);
-                for(CourseMenuVo courseMenuVo : courseMenuVoList){
+                courseMenuVoList.forEach(courseMenuVo -> {
                     if(courseMenuVo.getType()==1){
                         SyncUserChapterList syncUserChapterItem = new SyncUserChapterList();
                         syncUserChapterItem.setChapterId(courseMenuVo.getMenuId());
@@ -889,7 +889,7 @@ public class UserPeriodServiceImpl extends ServiceImpl<UserPeriodMapper, UserPer
                         List<SyncUserChapterList> ChildChapList = new ArrayList<>();
                         //获取章信息
                         List<CourseModuleChapterVo> courseModuleChapterVoList = iCourseModuleChapterService.getListById(courseMenuVo.getMenuId());
-                        for(CourseModuleChapterVo courseModuleChapterVo : courseModuleChapterVoList){
+                        courseModuleChapterVoList.forEach(courseModuleChapterVo -> {
                             SyncUserChapterList syncUserChapterChildItem = new SyncUserChapterList();
                             syncUserChapterChildItem.setChapterId(courseModuleChapterVo.getChapterId());
                             syncUserChapterChildItem.setChapterName(courseModuleChapterVo.getName());
@@ -909,9 +909,6 @@ public class UserPeriodServiceImpl extends ServiceImpl<UserPeriodMapper, UserPer
                                 LambdaQueryWrapper<UserStudyRecordPhoto> lqw = Wrappers.lambdaQuery();
                                 lqw.eq(UserStudyRecordPhoto::getPeriodId, userPeriodStatusVo.getId());
                                 List<UserStudyRecordPhoto> examPhoto = userStudyRecordPhotoService.list(lqw);
-                                if(Validator.isEmpty(studyEndTime)||(studyEndTime.longValue()<userPeriodStatusVo.getRecordEndTime().longValue())){
-                                    studyEndTime = userPeriodStatusVo.getRecordEndTime();
-                                }
                                 if(Validator.isNotEmpty(examPhoto)&&examPhoto.size()>0){
                                     UserStudyRecordPhoto photo = examPhoto.get(0);
                                     syncUserChapterChildItem.setImageSrc(ossHost+"/"+photo.getPhoto());
@@ -920,9 +917,6 @@ public class UserPeriodServiceImpl extends ServiceImpl<UserPeriodMapper, UserPer
                                     syncUserChapterChildItem.setExamTime(DateUtils.timestampToDateFormat(userPeriodStatusVo.getRecordStartTime(),DateUtils.YYYY_MM_DD_HH_MM_SS));
                                     syncUserChapterChildItem.setExamScore(userPeriodStatusVo.getPerformance().toString());
                                     syncUserChapterChildItem.setStudyIP(userPeriodStatusVo.getIp());
-                                    if(Validator.isEmpty(studyStartTime)||(studyStartTime.longValue()>examPhoto.get(0).getCreateTime().longValue())){
-                                        studyStartTime = examPhoto.get(0).getCreateTime();
-                                    }
                                 }
                             }
                             List<ClassPeriodSectionVo> classPeriodSectionVos = classGradeUserMapper.listPeriodSection(courseModuleChapterVo.getChapterId(), bo.getGoodsId(), courseVo.getCourseId(), bo.getUserId());
@@ -951,9 +945,6 @@ public class UserPeriodServiceImpl extends ServiceImpl<UserPeriodMapper, UserPer
                                     syncUserStudyRec.setCreateTime(DateUtils.timestampToDateFormat(userPeriodStatusVo.getRecordStartTime(),DateUtils.YYYY_MM_DD_HH_MM_SS));
                                     syncUserStudyRec.setEndTime(DateUtils.timestampToDateFormat(userPeriodStatusVo.getRecordEndTime(),DateUtils.YYYY_MM_DD_HH_MM_SS));
                                     syncUserStudyRec.setStudyIP(userPeriodStatusVo.getIp());
-                                    if(Validator.isEmpty(studyEndTime)||(studyEndTime.longValue()<userPeriodStatusVo.getRecordEndTime().longValue())){
-                                        studyEndTime = userPeriodStatusVo.getRecordEndTime();
-                                    }
                                     List<SyncUserImageRc> ImgList = new ArrayList<>();
                                     for (UserStudyRecordPhoto videoPhoto : videoPhoto2) {
                                         SyncUserImageRc imageRc = new SyncUserImageRc();
@@ -962,24 +953,19 @@ public class UserPeriodServiceImpl extends ServiceImpl<UserPeriodMapper, UserPer
                                         imageRc.setMatchData(Validator.isNotEmpty(videoPhoto.getSimilarity())?videoPhoto.getSimilarity().toString():null);
                                         ImgList.add(imageRc);
                                     }
-                                    if(Validator.isEmpty(studyStartTime)||(studyStartTime.longValue()>videoPhoto2.get(0).getCreateTime().longValue())){
-                                        studyStartTime = videoPhoto2.get(0).getCreateTime();
-                                    }
                                     syncUserStudyRec.setImgList(ImgList);
                                 }
                                 RecList.add(syncUserStudyRec);
                             }
                             syncUserChapterChildItem.setRecList(RecList);
                             ChildChapList.add(syncUserChapterChildItem);
-                        };
+                        });
                         syncUserChapterItem.setChildChapList(ChildChapList);
                         ChapterList.add(syncUserChapterItem);
                     }
-                }
+                });
             }
             studyRec.setChapterList(ChapterList);
-            studyRec.setBeginTime(DateUtils.timestampToDateFormat(studyStartTime));
-            studyRec.setEndTime(DateUtils.timestampToDateFormat(studyEndTime));
         }
         //学习记录推送到旧系统
 

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/vo/UserPeriodExportV2Vo.java

@@ -35,6 +35,9 @@ public class UserPeriodExportV2Vo {
 	@Excel(name = "节标题")
 	@ApiModelProperty("节标题")
 	private String sectionName;
+	@Excel(name = "试卷标题")
+	@ApiModelProperty("试卷标题")
+	private String examName;
 	@Excel(name = "学习列表")
 	@ApiModelProperty("学习列表")
 	private List<UserPeriodItemExportVo> recordList;

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderGoodsServiceImpl.java

@@ -691,7 +691,7 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
                             goodsVo.setSubscribeSign(1);
                         }else if (subscribe.getSubscribeStatus() == 1  && ObjectUtils.isNotNull(subscribe.getExamStatus())
                                 && subscribe.getExamStatus() == 1
-                                && ObjectUtils.isNull(userSubscribe.getResult())){
+                                && ObjectUtils.isNull(subscribe.getResult())){
                             goodsVo.setSubscribeSign(2);
                         }else if (subscribe.getSubscribeStatus() == 1 && ObjectUtils.isNotNull(subscribe.getExamStatus())
                                 && subscribe.getExamStatus() == 0){

+ 7 - 3
zhongzheng-system/src/main/java/com/zhongzheng/modules/schedule/service/impl/ScheduleServiceImpl.java

@@ -1492,6 +1492,7 @@ public class ScheduleServiceImpl extends ServiceImpl<PolyvVideoMapper, PolyvVide
             TopDivideLog divideLog = new TopDivideLog();
             divideLog.setCreateNo(createNo.getCreateNo());
             divideLog.setCreateUsername(createNo.getCreateUsername());
+            divideLog.setCreateSysUserId(createNo.getCreateSysUserId());
             divideLog.setTenantId(createNo.getTenantId().toString());
             divideLog.setDivideType(2);
             divideLog.setPayStatus(2);
@@ -1502,7 +1503,7 @@ public class ScheduleServiceImpl extends ServiceImpl<PolyvVideoMapper, PolyvVide
             divideLog.setUpdateTime(DateUtils.getNowTime());
             //判断账单是否生成
             TopDivideLog nowMonth = iTopDivideLogService.getOne(new LambdaQueryWrapper<TopDivideLog>()
-                    .eq(TopDivideLog::getCreateNo, createNo.getCreateNo())
+                    .eq(TopDivideLog::getCreateSysUserId, createNo.getCreateSysUserId())
                     .eq(TopDivideLog::getTenantId, createNo.getTenantId())
                     .eq(TopDivideLog::getDivideType, 2)
                     .eq(TopDivideLog::getYear, year)
@@ -1513,7 +1514,7 @@ public class ScheduleServiceImpl extends ServiceImpl<PolyvVideoMapper, PolyvVide
             }
             //获取上个账单
             LambdaQueryWrapper<TopDivideLog> lqw = Wrappers.lambdaQuery();
-            TopDivideLog divideLogLast = iTopDivideLogService.getOne(lqw.eq(TopDivideLog::getCreateNo, createNo.getCreateNo()).eq(TopDivideLog::getTenantId, createNo.getTenantId()).eq(TopDivideLog::getDivideType, 2).orderByDesc(TopDivideLog::getId).last("limit 1"));
+            TopDivideLog divideLogLast = iTopDivideLogService.getOne(lqw.eq(TopDivideLog::getCreateSysUserId, createNo.getCreateSysUserId()).eq(TopDivideLog::getTenantId, createNo.getTenantId()).eq(TopDivideLog::getDivideType, 2).orderByDesc(TopDivideLog::getId).last("limit 1"));
             divideLog.setDeductMoney(new BigDecimal(0));
             if (Validator.isNotEmpty(divideLogLast)) {
                 //上个月流入未扣金额
@@ -1526,7 +1527,10 @@ public class ScheduleServiceImpl extends ServiceImpl<PolyvVideoMapper, PolyvVide
                 queryBo1.setAccomplishEndTime(cal2.getTimeInMillis() / 1000);
                 queryBo1.setDivideModel(2);
                 queryBo1.setTenantId(createNo.getTenantId());
-                queryBo1.setCreateNo(createNo.getCreateNo());
+                queryBo1.setCreateSysUserId(createNo.getCreateSysUserId());
+                if(Validator.isEmpty(queryBo1.getCreateSysUserId())){
+                    queryBo1.setCreateSysUserId(0L);
+                }
                 //订单总待付分成
                 BigDecimal totalPayMoney = new BigDecimal(0);
                 List<TopDivideOrderVo> list1 = iTopDivideOrderService.getMonthFinishList(queryBo1);

+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/system/domain/SysTask.java

@@ -26,8 +26,14 @@ public class SysTask implements Serializable {
     private Long updateTime;
     /** 0 失效 1启用 */
     private Integer status;
+    /** 任务类型:1七大员新考 2学员资料 */
+    private Integer taskType;
+    /** 关联账号ID */
+    private Long sysUserId;
     /** 任务名称 */
     private String taskName;
+    /** 任务名称 */
+    private String taskCode;
     /** 任务数量 */
     private Integer taskNum;
     /** 完成数量 */

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/system/domain/SysTenant.java

@@ -115,4 +115,5 @@ private static final long serialVersionUID=1L;
     private Integer examRoom;
     /** 新考学时推送标识:1推送旧系统 0正常 */
     private Integer periodSign;
+
 }

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/bo/TopDivideOrderQueryBo.java

@@ -116,4 +116,7 @@ public class TopDivideOrderQueryBo extends BaseEntity {
 	@ApiModelProperty("重写审核状态:1待审核 2审核中")
 	private Integer reCheckStatus;
 
+	@ApiModelProperty("业务员ID")
+	private Long createSysUserId;
+
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/vo/TopCreateUserVo.java

@@ -29,6 +29,8 @@ public class TopCreateUserVo {
 	private String createUsername;
 	@ApiModelProperty("企业ID")
 	private Long tenantId;
+	@ApiModelProperty("业务员ID")
+	private Long createSysUserId;
 
 
 

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/vo/TopDivideLogVo.java

@@ -65,6 +65,9 @@ public class TopDivideLogVo {
 	@ApiModelProperty("总已扣分成(元)")
 	private BigDecimal deductMoneyTotal;
 
+	@ApiModelProperty("订单总待付分成")
+	private BigDecimal totalPayMoney;
+
 	@ApiModelProperty("总已付分成")
 	private BigDecimal payMoneyTotal;
 

+ 9 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/vo/TopDivideOrderVo.java

@@ -134,5 +134,14 @@ public class TopDivideOrderVo {
 	private Long payTime;
 	@ApiModelProperty("审核意见")
 	private String checkReason;
+	private BigDecimal acceptanceMoney;
 
+	@ApiModelProperty("佣金支付类型:1微信 4现金 5网银")
+	private Integer brokerageType;
+	@ApiModelProperty("奖金支付银行账号")
+	private String brokerageBankAccount;
+	@ApiModelProperty("奖金支付账号名称")
+	private String brokerageBankName;
+	@ApiModelProperty("奖金支付银行名称")
+	private String brokerageBank;
 }

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

@@ -172,4 +172,13 @@ public class TopOldOrderQueryBo extends BaseEntity {
 
 	@ApiModelProperty("学员审核状态")
 	private Integer studentCheckStatus;
+
+	@ApiModelProperty("重写审核状态:1待审核 2审核中")
+	private Integer reCheckStatus;
+
+	@ApiModelProperty("退款开始时间")
+	private Long refundStartTime;
+
+	@ApiModelProperty("退款结束时间")
+	private Long refundEndTime;
 }

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/domain/TopOldOrderRefund.java

@@ -1,6 +1,7 @@
 package com.zhongzheng.modules.top.goods.domain;
 
 import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 import lombok.experimental.Accessors;
@@ -64,6 +65,8 @@ private static final long serialVersionUID=1L;
     private Integer periodStatus;
     /** 退款时间 */
     private Long refundTime;
+    /** 支付审核时间 */
+    private Long payCheckTime;
     /** 机构ID*/
     private Long tenantId;
     /** 分成模式 1机构分成 2业务员分成*/

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/service/impl/TopOldOrderCheckLogServiceImpl.java

@@ -301,7 +301,7 @@ public class TopOldOrderCheckLogServiceImpl extends ServiceImpl<TopOldOrderCheck
                     .set(TopOldOrderCheckLog::getCheckStatus, 0)
                     .eq(TopOldOrderCheckLog::getOrderSn, checkLog.getOrderSn())
                     .eq(TopOldOrderCheckLog::getType, 5)//审核
-                    .eq(TopOldOrderCheckLog::getCheckSort, checkLog.getCheckSort() - 1)
+                    .eq(TopOldOrderCheckLog::getCheckSort, 1)
                     .eq(TopOldOrderCheckLog::getCheckFrom, checkLog.getCheckFrom()));
         } else {
             //初审拒绝

+ 37 - 13
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/service/impl/TopOldOrderServiceImpl.java

@@ -398,6 +398,7 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
             String name = topCourseBusinessService.getBusinessFullName(bo.getBusinessId());
             bo.setBusinessFullName(name);
         }
+
         List<TopOldOrderVo> orderVoList = baseMapper.queryList(bo);
         if (CollectionUtils.isNotEmpty(orderVoList)) {
             //订单业务类型
@@ -484,15 +485,10 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
                 List<TopOldOrderGoods> list = topOrderGoodsService.list(new LambdaQueryWrapper<TopOldOrderGoods>()
                         .eq(TopOldOrderGoods::getOrderSn, item.getOrderSn())
                         .isNotNull(TopOldOrderGoods::getRelSignId)
-                        .eq(TopOldOrderGoods::getStatus, 1));
+                        .eq(TopOldOrderGoods::getStatus, 1)
+                        .orderByDesc(TopOldOrderGoods::getOrderGoodsId));
                 if (CollectionUtils.isNotEmpty(list)){
-                    if (list.stream().anyMatch(x -> x.getCheckStatus() == 0)){
-                        item.setStudentCheckStatus(0);
-                    }else if (list.stream().allMatch(x -> x.getCheckStatus() == 1)){
-                        item.setStudentCheckStatus(1);
-                    }else if (list.stream().allMatch(x -> x.getCheckStatus() == 2)){
-                        item.setStudentCheckStatus(2);
-                    }
+                    item.setStudentCheckStatus(list.get(0).getCheckStatus());
                 }
 
                 //订单金额
@@ -1201,7 +1197,7 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
                     if (ObjectUtils.isNotNull(item.getDivideType()) && item.getDivideType() == 1){
                         item.setDivideRateStr(item.getDivideRate()+"%");
                     }else {
-                        item.setDivideRateStr(item.getDivideRate().toString());
+                        item.setDivideRateStr(ObjectUtil.isNull(item.getDivideRate())?"0%":item.getDivideRate().toString());
                     }
                 }
             }
@@ -1261,7 +1257,7 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
                             if (ObjectUtils.isNotNull(item.getDivideType()) && item.getDivideType() == 1){
                                 item.setDivideRateStr(item.getDivideRate()+"%");
                             }else {
-                                item.setDivideRateStr(item.getDivideRate().toString());
+                                item.setDivideRateStr(ObjectUtil.isNull(item.getDivideRate())?"0%":item.getDivideRate().toString());
                             }
                         });
                     }else {
@@ -1295,7 +1291,7 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
                                     if (ObjectUtils.isNotNull(x.getDivideType()) && x.getDivideType() == 1){
                                         x.setDivideRateStr(x.getDivideRate()+"%");
                                     }else {
-                                        x.setDivideRateStr(x.getDivideRate().toString());
+                                        x.setDivideRateStr(ObjectUtil.isNull(x.getDivideRate())?"0%":x.getDivideRate().toString());
                                     }
                                 }
                             } else {
@@ -1318,7 +1314,7 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
                                     if (ObjectUtils.isNotNull(item.getDivideType()) && item.getDivideType() == 1){
                                         item.setDivideRateStr(item.getDivideRate()+"%");
                                     }else {
-                                        item.setDivideRateStr(item.getDivideRate().toString());
+                                        item.setDivideRateStr(ObjectUtil.isNull(item.getDivideRate())?"0%":item.getDivideRate().toString());
                                     }
                                 }
                             }
@@ -1812,6 +1808,7 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
                 TopOldOrderGoods orderGoods = topOrderGoodsService.getById(x.getOrderGoodsId());
                 x.setDivideModel(orderGoods.getDivideModel());
                 x.setDivideMoney(orderGoods.getDivideMoney());
+                x.setPayCheckTime(DateUtils.getNowTime());
             });
             topOldOrderRefundService.updateBatchById(orderRefundList.stream().map(x -> BeanUtil.toBean(x, TopOldOrderRefund.class)).collect(Collectors.toList()));
             update(new LambdaUpdateWrapper<TopOldOrder>()
@@ -1837,6 +1834,7 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
                 TopOldOrderGoods orderGoods = topOrderGoodsService.getById(x.getOrderGoodsId());
                 x.setDivideModel(orderGoods.getDivideModel());
                 x.setDivideMoney(orderGoods.getDivideMoney());
+                x.setPayCheckTime(DateUtils.getNowTime());
             });
             topOldOrderRefundService.updateBatchById(orderRefundList.stream().map(x -> BeanUtil.toBean(x, TopOldOrderRefund.class)).collect(Collectors.toList()));
             topOrderGoodsService.update(new LambdaUpdateWrapper<TopOldOrderGoods>()
@@ -4632,6 +4630,8 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
                         topRefundUserVo.setRealRefundFee(item.getRealRefundFee());
                         topRefundUserVo.setRefundReason(item.getApplyReason());
                         topRefundUserVo.setOrderSn(orderSn);
+                        TopOldOrderGoods orderGoods1 = topOrderGoodsService.getById(item.getOrderGoodsId());
+                        topRefundUserVo.setGoodsRealPrice(orderGoods1.getGoodsRealPrice());
                         BigDecimal decimal1 = orderVo.getPretaxBrokerage();
                         if (ObjectUtils.isNotNull(decimal1) && count > 0){
                             decimal1 = orderVo.getPretaxBrokerage().divide(new BigDecimal(count), 2, RoundingMode.HALF_UP);
@@ -4677,6 +4677,7 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
                 topRefundUserVo.setRealRefundFee(item.getRealRefundFee());
                 topRefundUserVo.setRefundReason(item.getApplyReason());
                 topRefundUserVo.setOrderSn(orderSn);
+//                topRefundUserVo.setGoodsRealPrice();
                 BigDecimal decimal1 = orderVo.getPretaxBrokerage();
                 if (ObjectUtils.isNotNull(decimal1) && count > 0){
                     decimal1 = orderVo.getPretaxBrokerage().divide(new BigDecimal(count), 2, RoundingMode.HALF_UP);
@@ -4695,6 +4696,7 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
                     topRefundUserVo.setBusinessName(businessName);
                     topRefundUserVo.setGoodsYear(g.getSevenYear());
                     topRefundUserVo.setGoodsPrice(g.getStandPrice());
+                    topRefundUserVo.setGoodsRealPrice(g.getStandPrice());
                 } else {
                     TopOldOrderGoods orderGoods = topOrderGoodsService.getById(item.getOrderGoodsId());
                     topRefundUserVo.setUserName(orderGoods.getUserName());
@@ -4703,6 +4705,7 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
                     topRefundUserVo.setGoodsName(orderGoods.getGoodsName());
                     topRefundUserVo.setGoodsYear(orderGoods.getGoodsYear());
                     topRefundUserVo.setGoodsPrice(orderGoods.getGoodsPrice());
+                    topRefundUserVo.setGoodsRealPrice(orderGoods.getGoodsRealPrice());
                 }
                 topRefundUserVo.setRefundSn(item.getRefundSn());
                 return topRefundUserVo;
@@ -5354,7 +5357,7 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
             TopCostTpItemVo topCostTpItem = tpItems.stream().findFirst().get();
             BigDecimal divide = new BigDecimal("0.00");//成本
             BigDecimal bigDecimal = new BigDecimal("100");
-            if (topCostTpItem.getDockStatus() == 1) {
+            if (ObjectUtil.isNotNull(topCostTpItem.getDockStatus()) && topCostTpItem.getDockStatus() == 1) {
                 //启用成本扣除项
                 switch (topCostTpItem.getDockType()) {
                     case 1://百分比
@@ -5780,6 +5783,12 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
                     String businessName = orderGoodsService.getBusinessById(orderGoods.getOrderGoodsId());
                     //业务层次过滤
                     List<TopCostTpItemVo> items = itemList.stream().filter(item -> {
+                        if (ObjectUtils.isNull(item.getDockStatus())){
+                            item.setDockStatus(0);
+                        }
+                        if (ObjectUtils.isNull(item.getDockType())){
+                            item.setDockType(0);
+                        }
                         //教育类型不限
                         if (item.getEducationTypeId() == -1) {
                             return true;
@@ -6687,6 +6696,21 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
         if (Validator.isEmpty(bo.getTotalType())) {
             throw new CustomException("参数缺少");
         }
+        if(Validator.isNotEmpty(bo.getPayStatus())&&bo.getPayStatus().size()>0){
+            List<Integer> payStatus = new ArrayList<>();
+            for(Integer status : bo.getPayStatus()){
+                if(status==2){
+                    bo.setReCheckStatus(1);
+                }
+                else if(status==5){
+                    bo.setReCheckStatus(2);
+                }
+                else{
+                    payStatus.add(status);
+                }
+            }
+            bo.setPayStatus(payStatus);
+        }
         if(Validator.isNotEmpty(bo.getOverPayDay())&&bo.getOverPayDay()>0){
             bo.setNotPayStatus(1);
             if(bo.getOverPayDay()==1){

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/vo/TopOldOrderRefundVo.java

@@ -90,6 +90,9 @@ public class TopOldOrderRefundVo {
 	@ApiModelProperty("退款时间")
 	private Long refundTime;
 
+	@ApiModelProperty("支付审核时间")
+	private Long payCheckTime;
+
 	@ApiModelProperty("退款订单类型:1新系统,2旧系统")
 	private Integer refundType;
 

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

@@ -38,6 +38,9 @@ public class TopRefundUserVo {
     @ApiModelProperty("商品标准价格")
     private BigDecimal goodsPrice;
 
+    @ApiModelProperty("单价")
+    private BigDecimal goodsRealPrice;
+
     @ApiModelProperty("退款金额")
     private BigDecimal refundFee;
 

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

@@ -883,7 +883,7 @@ public class ITopInstSettleServiceImpl extends ServiceImpl<TopInstSettleMapper,
         }
         BigDecimal reduce = settleVos.stream().filter(x -> ObjectUtil.isNotNull(x.getSettleMoney())).map(SettleVo::getSettleMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
         settleVo.setSettleMoney(reduce);
-        Integer size = settleVos.stream().filter(x -> x.getCheckStatus() == 1 || x.getCheckStatus() == 2).collect(Collectors.toList()).size();
+        Integer size = settleVos.stream().filter(x -> x.getCheckStatus() == 2).collect(Collectors.toList()).size();
         settleVo.setSettleCheckNum(Long.valueOf(size));
         return settleVo;
     }
@@ -1120,6 +1120,17 @@ public class ITopInstSettleServiceImpl extends ServiceImpl<TopInstSettleMapper,
         if (CollectionUtils.isEmpty(settleRoleList)){
             return checkLog;
         }
+        List<TopOldOrderCheckLog> logs = topOldOrderCheckLogService
+                        .list(new LambdaQueryWrapper<TopOldOrderCheckLog>()
+                        .eq(TopOldOrderCheckLog::getOrderSn, settleSn)
+                        .eq(TopOldOrderCheckLog::getCheckFrom, 5));
+        if (CollectionUtils.isNotEmpty(logs)){
+            TopOldOrderCheckLog checkLog1 = logs.stream().max(Comparator.comparing(TopOldOrderCheckLog::getCheckSort)).get();
+            if (sort >= checkLog1.getCheckSort()){
+                return checkLog;
+            }
+        }
+
         List<Long> roleIds = settleRoleList.stream().map(TopSysUserRole::getRoleId).collect(Collectors.toList());
         if (roleIds.stream().anyMatch(x -> x.equals(checkLog.getRoleId()))){
             getNextCheck(settleRoleList,sort + 1,settleSn);

+ 59 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserApplyRecordBo.java

@@ -0,0 +1,59 @@
+package com.zhongzheng.modules.user.bo;
+
+import com.zhongzheng.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 【请填写功能名称】视图对象 mall_package
+ *
+ * @author change
+ * @date 2021-06-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("【请填写功能名称】视图对象")
+public class UserApplyRecordBo extends BaseEntity {
+
+    /** 分页大小 */
+    @ApiModelProperty("分页大小")
+    private Integer pageSize;
+    /** 当前页数 */
+    @ApiModelProperty("当前页数")
+    private Integer pageNum;
+    /** 排序列 */
+    @ApiModelProperty("排序列")
+    private String orderByColumn;
+    /** 排序的方向desc或者asc */
+    @ApiModelProperty(value = "排序的方向", example = "asc,desc")
+    private String isAsc;
+
+    @ApiModelProperty("考试开始时间")
+    private Long applyStartTime;
+
+    @ApiModelProperty("考试结束时间")
+    private Long applyEndTime;
+
+    private Long educationTypeId;
+
+    private Long projectId;
+
+    private Long businessId;
+
+    private Long majorId;
+
+    private Long userId;
+
+    @ApiModelProperty("课程名称")
+    private String goodsName;
+
+    @ApiModelProperty("考试状态:1通过 0不通过")
+    private Integer applyStatus;
+
+    @ApiModelProperty("是否新考:1是 0否")
+    private Integer applyNew;
+
+
+}

+ 8 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserCertificateQueryBo.java

@@ -93,4 +93,12 @@ public class UserCertificateQueryBo extends BaseEntity {
 	/** 证书发布年份 */
 	@ApiModelProperty("证书发布年份")
 	private String pushDate;
+
+	@ApiModelProperty("开始时间")
+	private Long searchStartTime;
+	/** 培训结束时间 */
+	@ApiModelProperty("结束时间")
+	private Long searchEndTime;
+
+	private String goodsName;
 }

+ 17 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserDataDownloadUpBo.java

@@ -0,0 +1,17 @@
+package com.zhongzheng.modules.user.bo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author yangdamao
+ * @date 2024年01月02日 14:34
+ */
+@Data
+public class UserDataDownloadUpBo implements Serializable {
+
+    private Long createSysUserId;
+
+    private String taskCode;
+}

+ 56 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserDataImportBo.java

@@ -0,0 +1,56 @@
+package com.zhongzheng.modules.user.bo;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author yangdamao
+ * @date 2023年12月22日 10:37
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+public class UserDataImportBo implements Serializable {
+
+    @Excel(name = "姓名")
+    private String userName;
+
+    @Excel(name = "身份证号")
+    private String userCard;
+
+    @Excel(name = "性别")
+    private String sex;
+
+    @Excel(name = "手机号码")
+    private String userPhone;
+
+    @Excel(name = "学历")
+    private String education;
+
+    @Excel(name = "毕业院校")
+    private String school;
+
+    @Excel(name = "毕业时间")
+    private Date graduationTime;
+
+    @Excel(name = "所学专业")
+    private String major;
+
+    @Excel(name = "工作年限")
+    private String workYear;
+
+    @Excel(name = "工作单位")
+    private String company;
+
+    @Excel(name = "单位联系人")
+    private String companyContact;
+
+    @Excel(name = "单位联系电话")
+    private String companyPhone;
+
+}

+ 28 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserDownloadBo.java

@@ -0,0 +1,28 @@
+package com.zhongzheng.modules.user.bo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author yangdamao
+ * @date 2023年12月26日 15:48
+ */
+@Data
+public class UserDownloadBo implements Serializable {
+
+    @ApiModelProperty("用户IDs")
+    private List<Long> userIds;
+
+    @ApiModelProperty("下载类型")
+    private List<Integer> types;
+
+    @ApiModelProperty("是否全部")
+    private Integer all;
+
+    private Long createSysUserId;
+
+    private String taskCode;
+}

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserExamRecordAddBo.java

@@ -96,4 +96,5 @@ public class UserExamRecordAddBo {
     private Long simulateExamId;
     @ApiModelProperty("来源平台 1小程序 2PC网站 3h5")
     private Integer fromPlat;
+    private BigDecimal rightRate;
 }

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserExamRecordEditBo.java

@@ -114,4 +114,5 @@ public class UserExamRecordEditBo {
     private Long simulateExamId;
     @ApiModelProperty("来源平台 1小程序 2PC网站 3h5")
     private Integer fromPlat;
+    private BigDecimal rightRate;
 }

+ 55 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserPromiseRecordBo.java

@@ -0,0 +1,55 @@
+package com.zhongzheng.modules.user.bo;
+
+import com.zhongzheng.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 【请填写功能名称】视图对象 mall_package
+ *
+ * @author change
+ * @date 2021-06-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("【请填写功能名称】视图对象")
+public class UserPromiseRecordBo extends BaseEntity {
+
+    /** 分页大小 */
+    @ApiModelProperty("分页大小")
+    private Integer pageSize;
+    /** 当前页数 */
+    @ApiModelProperty("当前页数")
+    private Integer pageNum;
+    /** 排序列 */
+    @ApiModelProperty("排序列")
+    private String orderByColumn;
+    /** 排序的方向desc或者asc */
+    @ApiModelProperty(value = "排序的方向", example = "asc,desc")
+    private String isAsc;
+
+    @ApiModelProperty("上传开始时间")
+    private Long uploadStartTime;
+
+    @ApiModelProperty("上传结束时间")
+    private Long uploadEndTime;
+
+    private Long educationTypeId;
+
+    private Long projectId;
+
+    private Long businessId;
+
+    private Long majorId;
+
+    private Long userId;
+
+    @ApiModelProperty("课程名称")
+    private String goodsName;
+
+    @ApiModelProperty("盖章状态:1已盖章 0待盖章")
+    private Integer stampStatus;
+
+}

+ 7 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserQueryBo.java

@@ -219,5 +219,12 @@ public class UserQueryBo extends BaseEntity {
 	@ApiModelProperty("教育类型id")
 	private Long educationTypeId;
 	private Long projectId;
+	private Long majorId;
+
+	@ApiModelProperty("承诺书上传:1是 0否")
+	private Integer promiseUploadSign;
+
+	@ApiModelProperty("承诺书签名:1是 0否")
+	private Integer promiseSign;
 
 }

+ 85 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserUsbRecordBo.java

@@ -0,0 +1,85 @@
+package com.zhongzheng.modules.user.bo;
+
+import com.zhongzheng.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 【请填写功能名称】视图对象 mall_package
+ *
+ * @author change
+ * @date 2021-06-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("【请填写功能名称】视图对象")
+public class UserUsbRecordBo extends BaseEntity {
+
+    /** 分页大小 */
+    @ApiModelProperty("分页大小")
+    private Integer pageSize;
+    /** 当前页数 */
+    @ApiModelProperty("当前页数")
+    private Integer pageNum;
+    /** 排序列 */
+    @ApiModelProperty("排序列")
+    private String orderByColumn;
+    /** 排序的方向desc或者asc */
+    @ApiModelProperty(value = "排序的方向", example = "asc,desc")
+    private String isAsc;
+
+    @ApiModelProperty("约考开始时间")
+    private Long subStartTime;
+
+    @ApiModelProperty("约考结束时间")
+    private Long subEndTime;
+
+    private Long educationTypeId;
+
+    private Long projectId;
+
+    private Long businessId;
+
+    private Long majorId;
+
+    private Long userId;
+
+    @ApiModelProperty("课程名称")
+    private String goodsName;
+
+    @ApiModelProperty("预约状态:1已预约 2已取消 3已过期")
+    private Integer subscribeStatus;
+
+    @ApiModelProperty("考试时间")
+    private Long applyTime;
+
+    @ApiModelProperty("考试月份")
+    private String applyMonth;
+
+    @ApiModelProperty("考试场次")
+    private String applySession;
+
+    @ApiModelProperty("月份")
+    private String ApplyDateTime;
+
+    @ApiModelProperty("月份开始时间")
+    private Long monthStartTime;
+
+    @ApiModelProperty("月份结束时间")
+    private Long monthEndTime;
+
+    /** 考试开始时间段 */
+    @ApiModelProperty("考试开始时间段")
+    private String applySiteStartTime;
+
+    /** 考试结束时间段 */
+    @ApiModelProperty("考试结束时间段")
+    private String applySiteEndTime;
+
+    /** 考试日期 */
+    @ApiModelProperty("考试日期")
+    private Long applySiteExamTime;
+
+}

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/domain/UserExamRecord.java

@@ -82,4 +82,7 @@ private static final long serialVersionUID=1L;
     private Long simulateExamId;
 
     private Integer fromPlat;
+
+    private BigDecimal rightRate;
+
 }

+ 1 - 5
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/mapper/UserStudyRecordMapper.java

@@ -11,10 +11,7 @@ import com.zhongzheng.modules.grade.domain.UserPeriod;
 import com.zhongzheng.modules.grade.domain.UserPeriodStatus;
 import com.zhongzheng.modules.grade.vo.ClassPeriodVo;
 import com.zhongzheng.modules.grade.vo.UserPeriodStatusVo;
-import com.zhongzheng.modules.user.bo.SubjectStudyRecordQueryBo;
-import com.zhongzheng.modules.user.bo.UserQueryBo;
-import com.zhongzheng.modules.user.bo.UserStudyRecordAddBo;
-import com.zhongzheng.modules.user.bo.UserStudyRecordQueryBo;
+import com.zhongzheng.modules.user.bo.*;
 import com.zhongzheng.modules.user.domain.UserBankRecord;
 import com.zhongzheng.modules.user.domain.UserStudyRecord;
 import com.zhongzheng.modules.user.vo.*;
@@ -139,5 +136,4 @@ public interface UserStudyRecordMapper extends BaseMapper<UserStudyRecord> {
 
     @InterceptorIgnore(tenantLine = "true")
     List<UserStudyRecord> getStudyRecordNoTenant(Long orderGoodsId);
-
 }

+ 7 - 6
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/mapper/UserSubscribeMapper.java

@@ -3,14 +3,10 @@ package com.zhongzheng.modules.user.mapper;
 import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
 import com.zhongzheng.modules.base.bo.ConsoleQueryBo;
 import com.zhongzheng.modules.goods.domain.GoodsQuestionRel;
-import com.zhongzheng.modules.user.bo.SubUserExportBo;
-import com.zhongzheng.modules.user.bo.UserSubQueryBo;
-import com.zhongzheng.modules.user.bo.UserSubscribeQueryBo;
+import com.zhongzheng.modules.user.bo.*;
 import com.zhongzheng.modules.user.domain.UserSubscribe;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.zhongzheng.modules.user.vo.UserSubVo;
-import com.zhongzheng.modules.user.vo.UserSubscribeVo;
-import com.zhongzheng.modules.user.vo.UserVo;
+import com.zhongzheng.modules.user.vo.*;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -83,4 +79,9 @@ public interface UserSubscribeMapper extends BaseMapper<UserSubscribe> {
 
     @InterceptorIgnore(tenantLine = "true")
     void updateByIdNoTenant(UserSubscribe subscribe);
+
+    List<UserApplyRecordVo> listUserApply(UserApplyRecordBo bo);
+
+    List<UserPromiseRecordVo> listPromise(UserPromiseRecordBo bo);
+
 }

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

@@ -5,6 +5,7 @@ import com.zhongzheng.common.core.domain.model.LoginUser;
 import com.zhongzheng.modules.user.bo.*;
 import com.zhongzheng.modules.user.domain.User;
 import com.zhongzheng.modules.user.vo.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.math.BigDecimal;
 import java.util.Collection;
@@ -147,4 +148,14 @@ public interface IUserService extends IService<User> {
     User getByCardNoTenant(String idCard);
 
 	Map<String, Object> importSevenUser(List<UserPeriodImportBo> userList);
+
+    void userDataImportUp(List<UserDataImportBo> customerBos);
+
+    void userDataImgImport(MultipartFile file);
+
+    void userDataDownload(UserDownloadBo bo);
+
+	List<UserDownloadVo> userDataDownloadList(Long userId);
+
+	void userDataDownloadUp(UserDataDownloadUpBo bo);
 }

+ 4 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/IUserSubscribeService.java

@@ -125,4 +125,8 @@ public interface IUserSubscribeService extends IService<UserSubscribe> {
 	String subRecordUserExport(SubUserExportBo bo);
 
 	List<SysTaskVo> subUserExportList();
+
+	List<UserApplyRecordVo> listUserApply(UserApplyRecordBo bo);
+
+	List<UserPromiseRecordVo> listPromise(UserPromiseRecordBo bo);
 }

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserBankRecordServiceImpl.java

@@ -135,6 +135,7 @@ public class UserBankRecordServiceImpl extends ServiceImpl<UserBankRecordMapper,
         lqw.eq(bo.getChapterId() != null, UserBankRecord::getChapterId, bo.getChapterId());
         lqw.eq(bo.getPerformance() != null, UserBankRecord::getPerformance, bo.getPerformance());
         lqw.eq(bo.getGradeId() != null, UserBankRecord::getGradeId, bo.getGradeId());
+        lqw.eq(bo.getOrderGoodsId() != null, UserBankRecord::getOrderGoodsId, bo.getOrderGoodsId());
         lqw.eq(bo.getCurrentStatus() != null, UserBankRecord::getCurrentStatus, bo.getCurrentStatus());
         lqw.between(bo.getSearchWeekStartTime()!= null, UserBankRecord::getUpdateTime,bo.getSearchWeekStartTime(),bo.getSearchWeekEndTime());
         return entity2Vo(this.list(lqw));

+ 5 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserCertificateServiceImpl.java

@@ -77,7 +77,11 @@ public class UserCertificateServiceImpl extends ServiceImpl<UserCertificateMappe
 
     @Override
     public List<UserCertificateVo> selectList(UserCertificateQueryBo bo) {
-        return this.baseMapper.selectList(bo);
+        List<UserCertificateVo> list = this.baseMapper.selectList(bo);
+        for(UserCertificateVo vo : list){
+            vo.setOrgName("广东省祥粤建设职业培训学院");
+        }
+        return list;
     }
 
     @Override

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserExamRecordServiceImpl.java

@@ -134,6 +134,7 @@ public class UserExamRecordServiceImpl extends ServiceImpl<UserExamRecordMapper,
         lqw.eq(bo.getUserId() != null, UserExamRecord::getUserId, bo.getUserId());
         lqw.eq(bo.getStatus() != null, UserExamRecord::getStatus, bo.getStatus());
         lqw.eq(bo.getGoodsId() != null, UserExamRecord::getGoodsId, bo.getGoodsId());
+        lqw.eq(bo.getOrderGoodsId() != null, UserExamRecord::getOrderGoodsId, bo.getOrderGoodsId());
         lqw.eq(bo.getReportStatus() != null, UserExamRecord::getReportStatus, bo.getReportStatus());
         lqw.eq(bo.getPerformance() != null, UserExamRecord::getPerformance, bo.getPerformance());
         return entity2Vo(this.list(lqw));

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserStudyRecordServiceImpl.java

@@ -237,6 +237,7 @@ public class UserStudyRecordServiceImpl extends ServiceImpl<UserStudyRecordMappe
             vo.setSectionType(sectionVo.getSectionType());
             vo.setLiveUrl(sectionVo.getLiveUrl());
             vo.setRecordingUrl(sectionVo.getRecordingUrl());
+            vo.setSectionName(sectionVo.getName());
             Integer learning = courseChapterSectionMapper.learningCheck(vo.getSectionId(), vo.getGradeId(), bo.getUserId(), vo.getModuleId(), vo.getChapterId(), 0L,vo.getCourseId(),vo.getOrderGoodsId());
             if (learning > 0) {
                 vo.setLearning(1L);

+ 52 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserSubscribeServiceImpl.java

@@ -80,6 +80,7 @@ import com.zhongzheng.modules.system.service.ISysConfigService;
 import com.zhongzheng.modules.system.service.ISysTaskService;
 import com.zhongzheng.modules.system.service.ISysTenantService;
 import com.zhongzheng.modules.system.vo.SysTaskVo;
+import com.zhongzheng.modules.tencentcloud.service.IFaceOcrService;
 import com.zhongzheng.modules.user.bo.*;
 import com.zhongzheng.modules.user.domain.User;
 import com.zhongzheng.modules.user.domain.UserExamGoods;
@@ -2947,13 +2948,63 @@ public class UserSubscribeServiceImpl extends ServiceImpl<UserSubscribeMapper, U
 
     @Override
     public List<SysTaskVo> subUserExportList() {
-        List<SysTask> list = iSysTaskService.list(new LambdaQueryWrapper<SysTask>().eq(SysTask::getStatus, 1));
+        List<SysTask> list = iSysTaskService.list(new LambdaQueryWrapper<SysTask>()
+                .eq(SysTask::getStatus, 1)
+                .eq(SysTask::getTaskType,1));
         if (CollectionUtils.isEmpty(list)){
             return new ArrayList<>();
         }
         return list.stream().map(item -> BeanUtil.toBean(item,SysTaskVo.class)).collect(Collectors.toList());
     }
 
+    @Override
+    public List<UserApplyRecordVo> listUserApply(UserApplyRecordBo bo) {
+        List<UserApplyRecordVo> applyRecordVos = baseMapper.listUserApply(bo);
+        if (org.springframework.util.CollectionUtils.isEmpty(applyRecordVos)){
+            return new ArrayList<>();
+        }
+        applyRecordVos.forEach(item -> {
+            if (ObjectUtils.isNotNull(item.getApplyTime())){
+                item.setApplyTimeStr(String.format("%s (%s-%s)",DateUtils.timestampToDateFormat(item.getApplyTime(),"yyyy-MM-dd")
+                        ,item.getApplyStarTime(),item.getApplyEndTime()));
+            }
+        });
+        return applyRecordVos;
+    }
+
+    @Override
+    public List<UserPromiseRecordVo> listPromise(UserPromiseRecordBo bo) {
+        List<UserPromiseRecordVo> recordVos = baseMapper.listPromise(bo);
+        if (CollectionUtils.isEmpty(recordVos)){
+            return new ArrayList<>();
+        }
+
+        recordVos.forEach(item -> {
+            item.setStampStatus(0);
+            if (ObjectUtils.isNotNull(item.getKeyValue())){
+                JSONObject jsonObject = JSONObject.parseObject(item.getKeyValue());
+                if (ObjectUtils.isNotNull(jsonObject.get("commitment_electr_signature"))){
+                    String json = JSONObject.toJSONString(jsonObject.get("commitment_electr_signature"));
+                    JSONObject jsonObject1 = JSONObject.parseObject(json);
+                    if (ObjectUtils.isNotNull(jsonObject1) && ObjectUtils.isNotNull(jsonObject1.get("value"))){
+                        item.setPromiseUrl(jsonObject1.get("value").toString());
+                    }
+                }
+
+                if (ObjectUtils.isNotNull(jsonObject.get("commitment_seal"))){
+                    String json = JSONObject.toJSONString(jsonObject.get("commitment_seal"));
+                    JSONObject jsonObject1 = JSONObject.parseObject(json);
+                    if (ObjectUtils.isNotNull(jsonObject1) && ObjectUtils.isNotNull(jsonObject1.get("value"))){
+                        item.setPromiseUrl(jsonObject1.get("value").toString());
+                        item.setStampStatus(1);
+                    }
+                }
+            }
+
+        });
+        return recordVos;
+    }
+
     private String applyTimeTransition(String time){
         List<String> collect = Arrays.stream(time.split(":")).collect(Collectors.toList());
         StringBuffer result = new StringBuffer();

+ 9 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/ExamStudyRecordVo.java

@@ -118,4 +118,13 @@ public class ExamStudyRecordVo {
     private Integer status;
     @ApiModelProperty("文件数量")
     private Long fileNum;
+
+    @ApiModelProperty("科目名称拼接")
+    private String subjectNames;
+
+    private Integer goodsStatus;
+
+
+    @ApiModelProperty("准确率")
+    private BigDecimal rightRate;
 }

+ 63 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/UserApplyRecordVo.java

@@ -0,0 +1,63 @@
+package com.zhongzheng.modules.user.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 【请填写功能名称】视图对象 mall_package
+ *
+ * @author change
+ * @date 2021-06-24
+ */
+@Data
+@ApiModel("【请填写功能名称】视图对象")
+public class UserApplyRecordVo {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("预约记录ID")
+    private Long subscribeId;
+
+    @ApiModelProperty("考试时间")
+    private String applyTimeStr;
+
+    private Long applyTime;
+
+    /** 课程名称 */
+    @ApiModelProperty("课程名称")
+    private String goodsName;
+
+    private Long educationTypeId;
+
+    private Long projectId;
+
+    private Long businessId;
+
+    private Long majorId;
+
+    @ApiModelProperty("业务类型")
+    private String businessName;
+
+    @ApiModelProperty("专业名称")
+    private String majorName;
+
+    @ApiModelProperty("是否新考:1是 0否")
+    private Integer applyNew;
+
+    @ApiModelProperty("出考状态:1正常 2缺考 3作弊 4替考")
+    private Integer examStatus;
+
+    @ApiModelProperty("考试状态:1通过 0不通过")
+    private Integer applyStatus;
+
+    @ApiModelProperty("成绩")
+    private BigDecimal performance;
+
+    private String applyStarTime;
+
+    private String applyEndTime;
+
+}

+ 9 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/UserCertificateVo.java

@@ -132,4 +132,13 @@ public class UserCertificateVo {
 
 	@ApiModelProperty("专业类型")
 	private String majorType;
+
+	@ApiModelProperty("商品名称")
+	private String goodsName;
+
+	@ApiModelProperty("专业名称")
+	private String categoryName;
+
+	@ApiModelProperty("培训机构名称")
+	private String orgName;
 }

+ 32 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/UserDownloadVo.java

@@ -0,0 +1,32 @@
+package com.zhongzheng.modules.user.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author yangdamao
+ * @date 2023年12月26日 15:48
+ */
+@Data
+public class UserDownloadVo implements Serializable {
+
+    private Long id;
+
+    @ApiModelProperty("1未开始 2执行中 3已完成 4已下载")
+    private Integer taskStatus;
+
+    @ApiModelProperty("任务编码")
+    private String taskCode;
+
+    @ApiModelProperty("下载路径")
+    private String taskPath;
+
+    @ApiModelProperty("下载时间")
+    private Long taskTime;
+
+    private Long createSysUserId;
+
+}

+ 7 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/UserExamRecordVo.java

@@ -69,6 +69,9 @@ public class UserExamRecordVo {
 	/** 更新时间 */
 	@ApiModelProperty("更新时间")
 	private Long updateTime;
+
+	@ApiModelProperty("创建时间")
+	private Long createTime;
 	@Excel(name = "试卷总题数")
 	@ApiModelProperty("试卷总题数")
 	private Long totalQuestionNum;
@@ -149,4 +152,8 @@ public class UserExamRecordVo {
 	private Long simulateExamId;
 	@ApiModelProperty("来源平台 1小程序 2PC网站 3h5")
 	private Integer fromPlat;
+	/** 准确率 */
+	@Excel(name = "准确率")
+	@ApiModelProperty("准确率")
+	private BigDecimal rightRate;
 }

+ 54 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/UserPromiseRecordVo.java

@@ -0,0 +1,54 @@
+package com.zhongzheng.modules.user.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 【请填写功能名称】视图对象 mall_package
+ *
+ * @author change
+ * @date 2021-06-24
+ */
+@Data
+@ApiModel("【请填写功能名称】视图对象")
+public class UserPromiseRecordVo {
+
+    private static final long serialVersionUID = 1L;
+
+    private Long id;
+
+    @ApiModelProperty("上传时间")
+    private Long uploadTime;
+
+    @ApiModelProperty("课程名称")
+    private String goodsName;
+
+    private Long educationTypeId;
+
+    private Long projectId;
+
+    private Long businessId;
+
+    private Long majorId;
+
+    private String keyValue;
+
+    @ApiModelProperty("业务类型")
+    private String businessName;
+
+    @ApiModelProperty("专业名称")
+    private String majorName;
+
+    @ApiModelProperty("签名状态:1已签名")
+    private Integer signStatus;
+
+    @ApiModelProperty("盖章状态:1已盖章 0待盖章")
+    private Integer stampStatus;
+
+    @ApiModelProperty("承诺书地址")
+    private String promiseUrl;
+
+}

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/UserStudyRecordVo.java

@@ -124,4 +124,9 @@ public class UserStudyRecordVo {
 	private String ip;
 	@ApiModelProperty("1已学习")
 	private Long learning;
+
+	/** 名称 */
+	@Excel(name = "节名称")
+	@ApiModelProperty("节名称")
+	private String sectionName;
 }

+ 68 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/UserUsbRecordVo.java

@@ -0,0 +1,68 @@
+package com.zhongzheng.modules.user.vo;
+
+import com.zhongzheng.common.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * 【请填写功能名称】视图对象 mall_package
+ *
+ * @author change
+ * @date 2021-06-24
+ */
+@Data
+@ApiModel("【请填写功能名称】视图对象")
+public class UserUsbRecordVo {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("预约记录ID")
+    private Long subscribeId;
+
+    @ApiModelProperty("约考时间")
+    private Long createTime;
+
+    /** 课程名称 */
+    @ApiModelProperty("课程名称")
+    private String goodsName;
+
+    private Long educationTypeId;
+
+    private Long projectId;
+
+    private Long businessId;
+
+    private Long majorId;
+
+    @ApiModelProperty("业务类型")
+    private String businessName;
+
+    @ApiModelProperty("预约状态:1已预约 2已取消 3已过期")
+    private Integer subscribeStatus;
+
+    @ApiModelProperty("专业名称")
+    private String majorName;
+
+    @ApiModelProperty("考试时间")
+    private String applyTimeStr;
+
+    @ApiModelProperty("考试时间")
+    private Long applyTime;
+
+    @ApiModelProperty("考试开始时间")
+    private String applyStarTime;
+
+    @ApiModelProperty("考试结束时间")
+    private String applyEndTime;
+
+    @ApiModelProperty("考试地点")
+    private String applyAddress;
+
+    @ApiModelProperty("备注")
+    private String remark;
+
+}

+ 16 - 1
zhongzheng-system/src/main/resources/mapper/modules/bank/QuestionChapterExamMapper.xml

@@ -123,8 +123,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             qce.chapter_exam_id =#{chapterExamId}
           AND e.status = 1 AND  e.exam_id IN ( SELECT exam_id FROM user_exam_record WHERE user_id = #{userId} AND goods_id = #{goodsId} AND module_exam_id = #{moduleExamId} AND chapter_exam_id = #{chapterExamId} GROUP BY exam_id )
     </select>
-    
+
     <delete id="deleteByIdAndTenant" parameterType="map">
         delete from question_chapter_exam where chapter_exam_id = #{newChapterExamId} and tenant_id = #{newTenantId}
     </delete>
+
+    <select id="getSimpleList" parameterType="com.zhongzheng.modules.bank.bo.QuestionChapterExamQueryBo" resultMap="QuestionChapterExamResultVo">
+        SELECT
+        e.*,
+        qce.sort AS exam_sort,
+        3 as type
+        FROM
+        question_chapter_exam qce
+        LEFT JOIN  exam e ON qce.exam_id = e.exam_id
+
+        WHERE
+        qce.chapter_exam_id =#{chapterExamId}
+        AND e.status = 1
+        order by qce.sort asc
+    </select>
 </mapper>

+ 154 - 129
zhongzheng-system/src/main/resources/mapper/modules/goods/GoodsAttachedMapper.xml

@@ -42,166 +42,191 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		<result property="simulateStatus" column="simulate_status"/>
     </resultMap>
 
-    <select id="getList" parameterType="com.zhongzheng.modules.goods.bo.GoodsAttachedQueryBo" resultMap="GoodsAttachedResultVo">
+	<select id="getList" parameterType="com.zhongzheng.modules.goods.bo.GoodsAttachedQueryBo" resultMap="GoodsAttachedResultVo">
 		SELECT
-		    g.external_link,
-		    g.external_link_status,
-			ga.*,
-			CASE
+		g.external_link,
+		g.external_link_status,
+		ga.*,
+		CASE
+
+		WHEN ga.type = 1 THEN
+		0
+		WHEN ga.type = 2 THEN
+		0
+		WHEN ga.type = 3 THEN
+		e.do_type
+		END do_type,
+		CASE
+
+		WHEN ga.type = 1 THEN
+		-1
+		WHEN ga.type = 2 THEN
+		-1
+		WHEN ga.type = 3 THEN
+		e.simulate_status
+		END simulate_status,
+		CASE
 
+		WHEN ga.type = 1 THEN
+		qm.module_name
+		WHEN ga.type = 2 THEN
+		qc.`name`
+		WHEN ga.type = 3 THEN
+		e.exam_name
+		END NAME,
+		CASE
+
+		WHEN ga.type = 1 THEN
+		cs.subject_name
+		WHEN ga.type = 2 THEN
+		cs1.subject_name
+		WHEN ga.type = 3 THEN
+		cs2.subject_name
+		END subject_name,
+		CASE
+
+		WHEN ga.type = 1 THEN
+		0
+		WHEN ga.type = 2 THEN
+		0
+		WHEN ga.type = 3 THEN
+		e.question_num
+		END question_num,
+		CASE
+		WHEN ga.type = 1 THEN
+		qm.publish_status
+		WHEN ga.type = 2 THEN
+		qc.publish_status
+		WHEN ga.type = 3 THEN
+		e.publish_status
+		END publish_status,
+		CASE
+		WHEN ga.type = 1 THEN
+		qm.`code`
+		WHEN ga.type = 2 THEN
+		qc.`code`
+		WHEN ga.type = 3 THEN
+		e.`code`
+		END code,
+		CASE
+		WHEN ga.type = 1 THEN
+		''
+		WHEN ga.type = 2 THEN
+		''
+		WHEN ga.type = 3 THEN
+		e.paper_name
+		END paper_name
+		<if test="userId != null ">
+			,
+			CASE
 			WHEN ga.type = 1 THEN
-			0
+			-1
 			WHEN ga.type = 2 THEN
-			0
+			-1
 			WHEN ga.type = 3 THEN
-			e.do_type
-			END do_type,
+			ifnull( (select `status` from user_exam_record uer where uer.exam_id = ga.major_id and uer.user_id = #{userId} and uer.order_goods_id = #{orderGoodsId} and ga.goods_id =uer.goods_id  ORDER BY uer.record_id desc limit 1),-1)
+			END record_status
+			,
 			CASE
-
 			WHEN ga.type = 1 THEN
 			-1
 			WHEN ga.type = 2 THEN
 			-1
 			WHEN ga.type = 3 THEN
-			e.simulate_status
-			END simulate_status,
+			ifnull( (select record_id from user_exam_record uer where uer.exam_id = ga.major_id and uer.user_id = #{userId} and uer.order_goods_id = #{orderGoodsId} and ga.goods_id =uer.goods_id ORDER BY uer.record_id desc limit 1),-1)
+			END record_id
+			,
 			CASE
-
-				WHEN ga.type = 1 THEN
-					qm.module_name
-				WHEN ga.type = 2 THEN
-					qc.`name`
-				WHEN ga.type = 3 THEN
-					e.exam_name
-				END NAME,
-			CASE
-
-				WHEN ga.type = 1 THEN
-					cs.subject_name
-				WHEN ga.type = 2 THEN
-					cs1.subject_name
-				WHEN ga.type = 3 THEN
-					cs2.subject_name
-				END subject_name,
-			CASE
-
-				WHEN ga.type = 1 THEN
-					0
-				WHEN ga.type = 2 THEN
-					0
-				WHEN ga.type = 3 THEN
-					e.question_num
-				END question_num,
+			WHEN ga.type = 1 THEN
+			-1
+			WHEN ga.type = 2 THEN
+			-1
+			WHEN ga.type = 3 THEN
+			e.answer_num
+			END answer_num
+			,
 			CASE
-				WHEN ga.type = 1 THEN
-					qm.publish_status
-				WHEN ga.type = 2 THEN
-					qc.publish_status
-				WHEN ga.type = 3 THEN
-					e.publish_status
-				END publish_status,
+			WHEN ga.type = 1 THEN
+			-1
+			WHEN ga.type = 2 THEN
+			-1
+			WHEN ga.type = 3 THEN
+			(select count(*) from user_exam_record uer where uer.exam_id = ga.major_id and uer.user_id = #{userId} and uer.order_goods_id = #{orderGoodsId} and ga.goods_id =uer.goods_id )
+			END do_num
+			,
 			CASE
 			WHEN ga.type = 1 THEN
-			qm.`code`
+			-1
 			WHEN ga.type = 2 THEN
-			qc.`code`
+			-1
 			WHEN ga.type = 3 THEN
-			e.`code`
-			END code,
+			(select do_question_num from user_exam_record uer where uer.exam_id = ga.major_id and uer.user_id = #{userId} and uer.order_goods_id = #{orderGoodsId} and uer.chapter_exam_id = 0 and uer.module_exam_id = 0 ORDER BY uer.record_id desc limit 1)
+			END do_question_num
+			,
 			CASE
 			WHEN ga.type = 1 THEN
-			''
+			-1
 			WHEN ga.type = 2 THEN
-			''
+			-1
 			WHEN ga.type = 3 THEN
-			e.paper_name
-			END paper_name
-			<if test="userId != null ">
-				,
-				CASE
-				WHEN ga.type = 1 THEN
-				-1
-				WHEN ga.type = 2 THEN
-				-1
-				WHEN ga.type = 3 THEN
-				ifnull( (select `status` from user_exam_record uer where uer.exam_id = ga.major_id and uer.user_id = #{userId} and uer.order_goods_id = #{orderGoodsId} and ga.goods_id =uer.goods_id  ORDER BY uer.record_id desc limit 1),-1)
-				END record_status
-				,
-				CASE
-				WHEN ga.type = 1 THEN
-				-1
-				WHEN ga.type = 2 THEN
-				-1
-				WHEN ga.type = 3 THEN
-				ifnull( (select record_id from user_exam_record uer where uer.exam_id = ga.major_id and uer.user_id = #{userId} and uer.order_goods_id = #{orderGoodsId} and ga.goods_id =uer.goods_id ORDER BY uer.record_id desc limit 1),-1)
-				END record_id
-				,
-				CASE
-				WHEN ga.type = 1 THEN
-				-1
-				WHEN ga.type = 2 THEN
-				-1
-				WHEN ga.type = 3 THEN
-				e.answer_num
-				END answer_num
-				,
-				CASE
-				WHEN ga.type = 1 THEN
-				-1
-				WHEN ga.type = 2 THEN
-				-1
-				WHEN ga.type = 3 THEN
-				(select count(*) from user_exam_record uer where uer.exam_id = ga.major_id and uer.user_id = #{userId} and uer.order_goods_id = #{orderGoodsId} and ga.goods_id =uer.goods_id )
-				END do_num
-				,
-				CASE
-				WHEN ga.type = 1 THEN
-				-1
-				WHEN ga.type = 2 THEN
-				-1
-				WHEN ga.type = 3 THEN
-				(select do_question_num from user_exam_record uer where uer.exam_id = ga.major_id and uer.user_id = #{userId} and uer.order_goods_id = #{orderGoodsId} and uer.chapter_exam_id = 0 and uer.module_exam_id = 0 ORDER BY uer.record_id desc limit 1)
-				END do_question_num
-				,
-				CASE
+			(select right_question_num from user_exam_record uer where uer.exam_id = ga.major_id and uer.user_id = #{userId} and uer.order_goods_id = #{orderGoodsId} and uer.chapter_exam_id = 0 and uer.module_exam_id = 0 ORDER BY uer.record_id desc limit 1)
+			END right_question_num
+		</if>
+		FROM
+		goods_attached ga
+		LEFT JOIN goods g ON ga.goods_id = g.goods_id
+		LEFT JOIN question_module qm ON ga.major_id = qm.module_exam_id
+		AND ga.type = 1
+		LEFT JOIN question_business qb ON qb.major_id = qm.module_exam_id
+		AND qb.type = 4
+		LEFT JOIN course_subject cs ON qb.subject_id = cs.id
+		LEFT JOIN question_chapter qc ON ga.major_id = qc.chapter_exam_id
+		AND ga.type = 2
+		LEFT JOIN question_business qb1 ON qb1.major_id = qc.chapter_exam_id
+		AND qb1.type = 3
+		LEFT JOIN course_subject cs1 ON qb1.subject_id = cs1.id
+		LEFT JOIN (
+		SELECT
+		e.*,
+		count( eq.question_id ) question_num,
+		ep.paper_name
+		FROM
+		exam e
+		LEFT JOIN exam_question eq ON e.exam_id = eq.exam_id
+		LEFT JOIN exam_paper ep ON e.exam_paper_id = ep.paper_id
+		GROUP BY
+		e.exam_id
+		) e ON ga.major_id = e.exam_id
+		AND ga.type = 3
+		AND e.STATUS = 1
+		LEFT JOIN question_business qb2 ON qb2.major_id = e.exam_id
+		AND qb2.type = 2
+		LEFT JOIN course_subject cs2 ON qb2.subject_id = cs2.id
+		WHERE
+		ga.goods_id = #{goodsId}
+		order by ga.sort,ga.id  asc
+	</select>
+
+    <select id="getTopList" parameterType="com.zhongzheng.modules.goods.bo.GoodsAttachedQueryBo" resultMap="GoodsAttachedResultVo">
+		SELECT
+			ga.*,
+			CASE
+
 				WHEN ga.type = 1 THEN
-				-1
+					qm.module_name
 				WHEN ga.type = 2 THEN
-				-1
+					qc.`name`
 				WHEN ga.type = 3 THEN
-				(select right_question_num from user_exam_record uer where uer.exam_id = ga.major_id and uer.user_id = #{userId} and uer.order_goods_id = #{orderGoodsId} and uer.chapter_exam_id = 0 and uer.module_exam_id = 0 ORDER BY uer.record_id desc limit 1)
-				END right_question_num
-			</if>
+					e.exam_name
+				END NAME
 		FROM
 			goods_attached ga
-				LEFT JOIN goods g ON ga.goods_id = g.goods_id
 				LEFT JOIN question_module qm ON ga.major_id = qm.module_exam_id
 				AND ga.type = 1
-				LEFT JOIN question_business qb ON qb.major_id = qm.module_exam_id
-				AND qb.type = 4
-				LEFT JOIN course_subject cs ON qb.subject_id = cs.id
 				LEFT JOIN question_chapter qc ON ga.major_id = qc.chapter_exam_id
 				AND ga.type = 2
-				LEFT JOIN question_business qb1 ON qb1.major_id = qc.chapter_exam_id
-				AND qb1.type = 3
-				LEFT JOIN course_subject cs1 ON qb1.subject_id = cs1.id
-				LEFT JOIN (
-				SELECT
-					e.*,
-					count( eq.question_id ) question_num,
-					ep.paper_name
-				FROM
-					exam e
-						LEFT JOIN exam_question eq ON e.exam_id = eq.exam_id
-						LEFT JOIN exam_paper ep ON e.exam_paper_id = ep.paper_id
-				GROUP BY
-					e.exam_id
-			) e ON ga.major_id = e.exam_id
+				LEFT JOIN exam e ON ga.major_id = e.exam_id
 				AND ga.type = 3
-				AND e.STATUS = 1
-				LEFT JOIN question_business qb2 ON qb2.major_id = e.exam_id
-				AND qb2.type = 2
-				LEFT JOIN course_subject cs2 ON qb2.subject_id = cs2.id
 		WHERE
 			ga.goods_id = #{goodsId}
 		order by ga.sort,ga.id  asc

+ 1 - 1
zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeMapper.xml

@@ -459,7 +459,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         LEFT JOIN course_project_type cpt ON g.project_id = cpt.id
         LEFT JOIN user_wx_follow uwf ON u.union_id = uwf.union_id
         LEFT JOIN user_exam_goods ueg ON ueg.order_goods_id = og.order_goods_id
-        where 1=1
+        where 1=1 and cgu.`status` = 1
         <if test="sevenCode != null and sevenCode !='' ">
             AND cg.seven_code = #{sevenCode}
         </if>

+ 70 - 1
zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeUserMapper.xml

@@ -1261,7 +1261,7 @@
         LIMIT 1 ) AS performance
         FROM
         course_menu cm
-        LEFT JOIN course_module_chapter cmc ON cm.menu_id = cmc.module_id
+        LEFT JOIN course_module_chapter cmc ON cm.menu_id = cmc.module_id and cm.type = 1
         LEFT JOIN course_chapter cc ON cmc.chapter_id = cc.chapter_id
         WHERE
         1 = 1
@@ -2031,4 +2031,73 @@
         </if>
         order by cgu.create_time desc
     </select>
+
+    <select id="getListUserSubscribe" resultType="com.zhongzheng.modules.user.vo.UserUsbRecordVo" parameterType="com.zhongzheng.modules.user.bo.UserUsbRecordBo">
+        SELECT
+            us.subscribe_id,
+            us.create_time,
+            g.goods_name,
+            CONCAT(cet.education_name,'-',cb.business_name,cpt.project_name) AS businessName,
+            m.category_name AS majorName,
+            us.subscribe_status,
+            us.apply_site_exam_time AS applyTime,
+            us.apply_site_start_time AS applyStarTime,
+            us.apply_site_end_time AS applyEndTime,
+            us.apply_site_address AS applyAddress,
+            '自带文具、身份证' AS remark
+        FROM user_subscribe us
+                 LEFT JOIN order_goods og ON us.order_goods_id = og.order_goods_id
+                 LEFT JOIN goods g ON og.goods_id = g.goods_id
+                 LEFT JOIN course_education_type cet ON g.education_type_id = cet.id
+                 LEFT JOIN course_project_type cpt ON g.project_id = cpt.id
+                 LEFT JOIN course_business cb ON g.business_id = cb.id
+                 LEFT JOIN major m ON g.major_id = m.id
+        WHERE 1=1 AND us.exam_status = 0
+        <if test="userId != null and userId !='' ">
+            AND us.user_id = #{userId}
+        </if>
+        <if test="subStartTime != null and subStartTime !='' ">
+            AND us.create_time &gt;= #{subStartTime}
+        </if>
+        <if test="subEndTime != null and subStartTime !='' ">
+            AND us.create_time &lt;= #{subEndTime}
+        </if>
+        <if test="educationTypeId != null and educationTypeId !='' ">
+            AND cet.id = #{educationTypeId}
+        </if>
+        <if test="businessId != null and businessId !='' ">
+            AND cb.id = #{businessId}
+        </if>
+        <if test="majorId != null and majorId !='' ">
+            AND m.id = #{majorId}
+        </if>
+        <if test="goodsName != null and goodsName !='' ">
+            AND g.goods_name like concat('%', #{goodsName}, '%')
+        </if>
+        <if test="subscribeStatus != null and subscribeStatus == 1">
+            AND us.subscribe_status = 1 AND (TIME_TO_SEC(us.apply_site_end_time) + us.apply_site_exam_time) &gt; UNIX_TIMESTAMP()
+        </if>
+        <if test="subscribeStatus != null and subscribeStatus == 2">
+            AND us.subscribe_status = #{subscribeStatus}
+        </if>
+        <if test="subscribeStatus != null and subscribeStatus == 3">
+            AND us.subscribe_status = 1 AND (TIME_TO_SEC(us.apply_site_end_time) + us.apply_site_exam_time) &lt; UNIX_TIMESTAMP()
+        </if>
+        <if test="applySiteExamTime != null and applySiteExamTime != '' ">
+            and us.apply_site_exam_time = #{applySiteExamTime}
+        </if>
+        <if test="monthStartTime != null and monthStartTime != '' ">
+            and us.apply_site_exam_time &gt;= #{monthStartTime}
+        </if>
+        <if test="monthEndTime != null and monthEndTime != '' ">
+            and us.apply_site_exam_time &lt;= #{monthEndTime}
+        </if>
+        <if test="applySiteStartTime != null and applySiteStartTime != '' ">
+            and us.apply_site_start_time = #{applySiteStartTime}
+        </if>
+        <if test="applySiteEndTime != null and applySiteEndTime != '' ">
+            and us.apply_site_end_time = #{applySiteEndTime}
+        </if>
+        order by us.create_time DESC
+    </select>
 </mapper>

+ 1 - 2
zhongzheng-system/src/main/resources/mapper/modules/settle/ExamActivityMapper.xml

@@ -29,8 +29,7 @@
 
     <select id="geTopCostBusinessName" parameterType="java.lang.Long" resultType="java.lang.String">
         SELECT CONCAT(( SELECT education_name FROM top_course_education_type WHERE id = ct.education_type_id ),
-                      ( SELECT business_name FROM top_course_business WHERE id = ct.business_id ),
-                      ( SELECT project_name FROM top_course_project_type WHERE id = ct.project_id )
+                      ( SELECT old_business_name FROM top_course_business WHERE id = ct.business_id )
                    )
         FROM
             top_cost_inst_tp_item ct

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

@@ -242,14 +242,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <select id="getSumMoney" parameterType="com.zhongzheng.modules.top.financial.bo.TopDivideLogQueryBo" resultType="com.zhongzheng.modules.top.financial.vo.TopDivideLogVo">
         SELECT
             sum(
-                    IF
-                        ( pay_status = 1, dl.pay_money, 0 )) AS pay_money_total,
+        dl.total_pay_money) AS pay_money_total,
             sum(
                     IF
                         ( pay_status = 1, dl.deduct_money, 0 )) AS deduct_money_total,
             sum(
-                    IF
-                        ( pay_status !=1, dl.pay_money, 0 )) AS un_pay_money_total,
+        dl.pay_money) AS un_pay_money_total,
             sum(
                     IF
                         ( pay_status !=1, dl.deduct_money, 0 )) AS un_deduct_money_total
@@ -264,6 +262,44 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <if test="tenantId != null and tenantId != ''">
             AND dl.tenant_id = #{tenantId}
         </if>
+        <if test="reCheckStatus == 1">
+            AND (SELECT
+            count(*)
+            FROM
+            top_divide_log bdl
+            LEFT JOIN top_divide_order btdo ON bdl.id = btdo.divide_log_id
+            LEFT JOIN top_old_order_check_log bcl ON btdo.order_sn = bcl.order_sn
+            WHERE
+            bcl.check_from = 2
+            AND bcl.check_status = 0
+            AND bcl.check_sign = 1
+            <if test="roleIds != null and roleIds.size()!=0">
+                AND bcl.role_id in
+                <foreach collection="roleIds" item="item" index="index" open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
+            </if>
+            AND bdl.id = dl.id)>0
+        </if>
+        <if test="reCheckStatus == 2">
+            AND (SELECT
+            count(*)
+            FROM
+            top_divide_log bdl
+            LEFT JOIN top_divide_order btdo ON bdl.id = btdo.divide_log_id
+            LEFT JOIN top_old_order_check_log bcl ON btdo.order_sn = bcl.order_sn
+            WHERE
+            bcl.check_from = 2
+            AND bcl.check_status = 0
+            AND bcl.check_sign = 1
+            <if test="roleIds != null and roleIds.size()!=0">
+                AND bcl.role_id not in
+                <foreach collection="roleIds" item="item" index="index" open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
+            </if>
+            AND bdl.id = dl.id)>0
+        </if>
         <if test="payStatus != null and payStatus.size()!=0">
             AND dl.pay_status in
             <foreach collection="payStatus" item="item" index="index" open="(" close=")" separator=",">
@@ -326,6 +362,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         LEFT JOIN sys_tenant st ON dl.tenant_id = st.tenant_id
         WHERE
         dl.divide_type = 2
+        <if test="overPayDay != null ">
+            AND dl.predict_pay_time <![CDATA[ <= ]]> #{overPayDayTime}
+        </if>
         <if test="tenantId != null and tenantId != ''">
             AND dl.tenant_id = #{tenantId}
         </if>

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

@@ -32,6 +32,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             oo.create_time as order_create_time,
             r.role_name,
             r.role_id,
+            oo.create_sys_user_id,
             oo.create_username,
             oo.create_no
         FROM
@@ -120,7 +121,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             oo.pretax_brokerage,
             tor.divide_money,
             tor.refund_time as order_time,
-            oo.create_time as order_create_time
+            oo.create_time as order_create_time,
+            oo.create_sys_user_id,
+            oo.create_username,
+            oo.create_no
         FROM
             top_divide_order tdo
                 LEFT JOIN top_divide_log dl ON tdo.divide_log_id = dl.id
@@ -239,6 +243,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <if test="createNo != null and createNo != ''">
             AND v.create_no = #{createNo}
         </if>
+        <if test="createSysUserId != null and createSysUserId !=0">
+            AND v.create_sys_user_id = #{createSysUserId}
+        </if>
+        <if test="createSysUserId == 0">
+            AND (v.create_sys_user_id is null or v.create_sys_user_id = 0)
+        </if>
     </select>
 
     <select id="getMonthCreditList" parameterType="com.zhongzheng.modules.top.financial.bo.TopDivideOrderQueryBo"  resultType="com.zhongzheng.modules.top.financial.vo.TopDivideOrderVo">
@@ -252,6 +262,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         v.create_no,
         v.create_username,
         v.brokerage,
+        v.brokerage_type,
+        v.brokerage_bank_account,
+        v.brokerage_bank_name,
+        v.brokerage_bank,
         v.order_price,
         st.tenant_name,
         v.pretax_brokerage,
@@ -418,6 +432,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <if test="createNo != null and createNo != ''">
             AND v.create_no = #{createNo}
         </if>
+        <if test="createSysUserId != null and createSysUserId !=0">
+            AND v.create_sys_user_id = #{createSysUserId}
+        </if>
+        <if test="createSysUserId == 0">
+            AND (v.create_sys_user_id is null or v.create_sys_user_id = 0)
+        </if>
     </select>
 
     <select id="getMonthBadSum" parameterType="com.zhongzheng.modules.top.financial.bo.TopDivideOrderQueryBo"  resultType="BigDecimal">
@@ -441,8 +461,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <select id="getMonthFinishAllSeller" parameterType="com.zhongzheng.modules.top.financial.bo.TopDivideOrderQueryBo"  resultType="com.zhongzheng.modules.top.financial.vo.TopCreateUserVo">
         SELECT
-        v.create_no,
-        v.create_username,
+        v.create_sys_user_id,
+        any_value (v.create_username) create_username,
         v.tenant_id
         FROM
         v_top_order v
@@ -461,7 +481,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <if test="createNo != null and createNo != ''">
             AND v.create_no = #{createNo}
         </if>
-        GROUP BY v.create_no,v.create_username,v.tenant_id
+        GROUP BY v.create_sys_user_id,v.tenant_id
     </select>
 
     <select id="getByOrderSn" parameterType="com.zhongzheng.modules.top.financial.bo.TopDivideOrderQueryBo"  resultType="com.zhongzheng.modules.top.financial.vo.TopDivideOrderVo">

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

@@ -83,9 +83,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         WHERE
             order_sn = #{orderSn}
             AND `status` = 1
-            AND check_status in (0,1)
+--             AND check_status in (0,1)
 --           AND refund_status != 2
 -- 	      AND pay_status IN (2,3,4)
+        <if test="checkStatus != null">
+            AND check_status = #{checkStatus}
+        </if>
+        <if test="checkStatus == null">
+            AND check_status in (0,1,2)
+        </if>
         <if test="userCard != null and userCard != ''">
             AND user_card = #{userCard,typeHandler=com.zhongzheng.common.type.EncryptHandler}
         </if>

+ 36 - 0
zhongzheng-system/src/main/resources/mapper/modules/top/TopOldOrderMapper.xml

@@ -151,6 +151,18 @@
         <if test="tenantId != null and tenantId != ''">
             AND vto.tenant_id = #{tenantId}
         </if>
+        <if test="refundStartTime != null or refundEndTime != null">
+            AND (SELECT COUNT(*)
+            FROM top_old_order_refund tor
+            WHERE vto.order_sn = tor.order_sn AND tor.`status` = 1
+            <if test="refundStartTime != null and refundStartTime != ''">
+                AND tor.pay_check_time &gt;= #{refundStartTime}
+            </if>
+            <if test="refundEndTime != null and refundEndTime != ''">
+                AND tor.pay_check_time &lt;= #{refundEndTime}
+            </if>
+             ) > 0
+        </if>
         <if test="studentCheckStatus != null">
             AND (vto.order_from != 1
                 AND (SELECT COUNT(too.order_sn)
@@ -256,6 +268,18 @@
             FROM top_old_order_goods too
             WHERE ot.order_sn = too.order_sn AND too.rel_sign_id IS NOT NULL AND too.check_status = #{studentCheckStatus}) > 0
         </if>
+        <if test="refundStartTime != null or refundEndTime != null">
+            AND (SELECT COUNT(*)
+            FROM top_old_order_refund tor
+            WHERE ot.order_sn = tor.order_sn AND tor.`status` = 1
+            <if test="refundStartTime != null and refundStartTime != ''">
+                AND tor.pay_check_time &gt;= #{refundStartTime}
+            </if>
+            <if test="refundEndTime != null and refundEndTime != ''">
+                AND tor.pay_check_time &lt;= #{refundEndTime}
+            </if>
+            ) > 0
+        </if>
         <if test="tenantId != null and tenantId != ''">
             AND ot.tenant_id = #{tenantId}
         </if>
@@ -313,6 +337,18 @@
         <if test="refundStatus != null">
             AND o.order_refund_status = #{refundStatus}
         </if>
+        <if test="refundStartTime != null or refundEndTime != null">
+            AND (SELECT COUNT(*)
+            FROM top_old_order_refund tor
+            WHERE o.order_sn = tor.order_sn AND tor.`status` = 1
+            <if test="refundStartTime != null and refundStartTime != ''">
+                AND tor.pay_check_time &gt;= #{refundStartTime}
+            </if>
+            <if test="refundEndTime != null and refundEndTime != ''">
+                AND tor.pay_check_time &lt;= #{refundEndTime}
+            </if>
+            ) > 0
+        </if>
         <if test="refundStatusList != null and refundStatusList.size()!=0 ">
             AND o.order_refund_status in
             <foreach collection="refundStatusList" item="item" index="index" open="(" close=")" separator=",">

+ 26 - 3
zhongzheng-system/src/main/resources/mapper/modules/user/UserCertificateMapper.xml

@@ -60,6 +60,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="moduleId" column="module_id"/>
         <result property="moreCertificateStatus" column="more_certificate_status"/>
         <result property="tenantId" column="tenant_id"/>
+        <result property="goodsName" column="goods_name"/>
+        <result property="categoryName" column="category_name"/>
     </resultMap>
 
     <select id="selectMaxId"   resultType="Long">
@@ -75,7 +77,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             c.certificate_name,
             cet.education_name,
             cpt.project_name,
-            cb.business_name
+            cb.business_name,
+            m.category_name,
+            g.goods_name
         FROM
             user_certificate uc
                 LEFT JOIN `user` u ON uc.user_id = u.user_id
@@ -84,6 +88,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 LEFT JOIN course_education_type cet ON uc.education_type_id = cet.id
                 LEFT JOIN course_project_type cpt ON uc.project_id = cpt.id
                 LEFT JOIN course_business cb ON uc.business_id = cb.id
+                LEFT JOIN goods g ON g.goods_id = uc.goods_id
+                LEFT JOIN major m ON g.major_id = m.id
         where 1=1
         <if test="typeId != null and typeId != ''">
             AND c.id = #{typeId}
@@ -100,15 +106,30 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <if test="businessId != null and businessId != ''">
             AND uc.business_id = #{businessId}
         </if>
+        <if test="educationTypeId != null and educationTypeId != ''">
+            AND uc.education_type_id = #{educationTypeId}
+        </if>
         <if test="schoolId != null and schoolId != ''">
             AND uc.school_id = #{schoolId}
         </if>
         <if test="majorId != null and majorId != ''">
             AND uc.major_id = #{majorId}
         </if>
-        <if test="userId != null and majorId != ''">
+        <if test="userId != null and userId != ''">
             AND uc.user_id = #{userId}
         </if>
+        <if test="goodsName != null and goodsName != ''">
+            AND (select count(*) from goods g where g.goods_id = uc.goods_id and g.goods_name like concat('%', #{goodsName}, '%'))>0
+        </if>
+        <if test="certificateCode != null and certificateCode != ''">
+            AND uc.certificate_code = #{certificateCode}
+        </if>
+        <if test="searchStartTime != null and searchStartTime != ''">
+            AND uc.create_time > #{searchStartTime}
+        </if>
+        <if test="searchEndTime != null and searchEndTime != ''">
+            AND #{searchEndTime} > uc.create_time
+        </if>
         order by uc.update_time desc
     </select>
 
@@ -122,7 +143,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         cet.education_name,
         cpt.project_name,
         cb.business_name,
-        ct.key_value
+        ct.key_value,
+        g.goods_name
         FROM
         user_certificate uc
         LEFT JOIN `user` u ON uc.user_id = u.user_id
@@ -131,6 +153,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         LEFT JOIN course_education_type cet ON uc.education_type_id = cet.id
         LEFT JOIN course_project_type cpt ON uc.project_id = cpt.id
         LEFT JOIN course_business cb ON uc.business_id = cb.id
+        LEFT JOIN goods g ON g.goods_id = uc.goods_id
         where uc.certificate_code = #{certificateCode}
 
     </select>

+ 2 - 0
zhongzheng-system/src/main/resources/mapper/modules/user/UserExamRecordMapper.xml

@@ -33,6 +33,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="doMode" column="do_mode"/>
         <result property="simulateExamId" column="simulate_exam_id"/>
         <result property="fromPlat" column="from_plat"/>
+        <result property="rightRate" column="right_rate"/>
     </resultMap>
 
     <resultMap type="com.zhongzheng.modules.user.vo.UserExamRecordVo" id="UserExamRecordVoResult">
@@ -66,6 +67,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="doMode" column="do_mode"/>
         <result property="simulateExamId" column="simulate_exam_id"/>
         <result property="fromPlat" column="from_plat"/>
+        <result property="rightRate" column="right_rate"/>
     </resultMap>
 
     <resultMap type="com.zhongzheng.modules.user.vo.UserExamWrongRecordVo" id="UserExamRecordQuestionVoResult">

+ 23 - 2
zhongzheng-system/src/main/resources/mapper/modules/user/UserMapper.xml

@@ -713,15 +713,36 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <if test="companyName != null and companyName != ''" >
             AND u.company_name like concat('%', #{companyName}, '%')
         </if>
+        <if test="majorId != null and majorId != ''" >
+            AND (SELECT count(*) FROM `order` o
+            LEFT JOIN order_goods og ON o.order_sn = og.order_sn
+            LEFT JOIN goods g ON og.goods_id = g.goods_id WHERE o.`status` = 1 AND o.user_id = u.user_id AND og.pay_status IN ( 2, 3, 4 )  AND og.refund_status != 2 AND g.major_id = #{majorId})>0
+        </if>
         <if test="educationTypeId != null and educationTypeId != ''" >
             AND (SELECT count(*) FROM `order` o
             LEFT JOIN order_goods og ON o.order_sn = og.order_sn
-            LEFT JOIN goods g ON og.goods_id = g.goods_id WHERE o.`status` = 1 AND og.pay_status IN ( 2, 3, 4 )  AND og.refund_status != 2 AND g.education_type_id = #{educationTypeId})>0
+            LEFT JOIN goods g ON og.goods_id = g.goods_id WHERE o.`status` = 1 AND o.user_id = u.user_id AND og.pay_status IN ( 2, 3, 4 )  AND og.refund_status != 2 AND g.education_type_id = #{educationTypeId})>0
         </if>
         <if test="businessId != null and businessId != ''" >
             AND (SELECT count(*) FROM `order` o
             LEFT JOIN order_goods og ON o.order_sn = og.order_sn
-            LEFT JOIN goods g ON og.goods_id = g.goods_id WHERE o.`status` = 1 AND og.pay_status IN ( 2, 3, 4 )  AND og.refund_status != 2 AND g.business_id = #{businessId})>0
+            LEFT JOIN goods g ON og.goods_id = g.goods_id WHERE o.`status` = 1 AND o.user_id = u.user_id AND og.pay_status IN ( 2, 3, 4 )  AND og.refund_status != 2 AND g.business_id = #{businessId})>0
+        </if>
+        <if test="promiseUploadSign != null and promiseUploadSign == 1" >
+            AND (SELECT COUNT(up.id) FROM user_profile up WHERE up.user_id = u.user_id AND up.current_status = 1
+            AND INSTR(up.key_value,'"fieldKey":"commitment_seal","value":"oss/images/avatar')) &gt; 0
+        </if>
+        <if test="promiseUploadSign != null and promiseUploadSign == 0" >
+            AND (SELECT COUNT(up.id) FROM user_profile up WHERE up.user_id = u.user_id AND up.current_status = 1
+            AND INSTR(up.key_value,'"fieldKey":"commitment_seal","value":"oss/images/avatar')) = 0
+        </if>
+        <if test="promiseSign != null and promiseSign == 1" >
+            AND (SELECT COUNT(up.id) FROM user_profile up WHERE up.user_id = u.user_id AND up.current_status = 1
+            AND INSTR(up.key_value,'"fieldKey":"commitment_electr_signature","value":"oss/images/avatar')) &gt; 0
+        </if>
+        <if test="promiseSign != null and promiseSign == 0" >
+            AND (SELECT COUNT(up.id) FROM user_profile up WHERE up.user_id = u.user_id AND up.current_status = 1
+            AND INSTR(up.key_value,'"fieldKey":"commitment_electr_signature","value":"oss/images/avatar')) = 0
         </if>
         order by u.user_id desc
     </select>

+ 46 - 6
zhongzheng-system/src/main/resources/mapper/modules/user/UserStudyRecordMapper.xml

@@ -129,6 +129,9 @@
         <result property="status" column="status"/>
         <result property="sectionNum" column="section_num"/>
         <result property="fileNum" column="file_num"/>
+        <result property="subjectNames" column="subject_names"/>
+        <result property="goodsStatus" column="goods_status"/>
+        <result property="rightRate" column="right_rate"/>
     </resultMap>
 
     <resultMap type="com.zhongzheng.modules.user.vo.ExamSonStudyRecordVo" id="ExamSonStudyRecordVoResult">
@@ -736,6 +739,7 @@
         g.goods_name,
         g.`year`,
         g.`code`,
+          g.`status` as goods_status,
         g.class_hours,
         g.study_start_time,
         g.study_end_time,
@@ -756,12 +760,14 @@
         JOIN question_module_chapter a on e.major_id = a.module_exam_id LEFT JOIN question_chapter_exam h on
         a.chapter_exam_id = h.chapter_exam_id where e.goods_id = g.goods_id and e.type=1) FROM goods_attached a where
         a.goods_id=g.goods_id and a.type = 3) as exam_num,
-        (SELECT create_time FROM user_exam_record r where r.goods_id=g.goods_id AND r.do_mode = 1 AND r.user_id = #{userId} ORDER BY
+        (SELECT create_time FROM user_exam_record r where r.order_goods_id=s.order_goods_id AND r.do_mode = 1 AND r.user_id = #{userId} ORDER BY
         create_time ASC LIMIT 1) as start_time,
-        (SELECT create_time FROM user_exam_record r where r.goods_id=g.goods_id AND r.do_mode = 1 AND r.user_id = #{userId} ORDER BY
+        (SELECT update_time FROM user_exam_record r where r.order_goods_id=s.order_goods_id AND r.do_mode = 1 AND r.user_id = #{userId} ORDER BY
         create_time DESC LIMIT 1) as end_time,
-        (SELECT COUNT(DISTINCT exam_id) FROM user_exam_record r where r.goods_id=g.goods_id AND r.do_mode = 1 AND r.user_id = #{userId})
-        as stu_all_num
+        (SELECT COUNT(DISTINCT exam_id) FROM user_exam_record r where r.order_goods_id=s.order_goods_id AND r.do_mode = 1 AND r.user_id = #{userId})
+        as stu_all_num,
+        (SELECT MAX(right_rate) FROM user_exam_record r where r.order_goods_id=s.order_goods_id AND r.do_mode = 1 AND r.user_id = #{userId})
+        as right_rate
         FROM
         goods g
         LEFT JOIN order_goods s ON g.goods_id = s.goods_id AND s.pay_status in (2,3,4)
@@ -780,12 +786,21 @@
         <if test="educationTypeId != null and educationTypeId != ''">
             AND g.education_type_id = #{educationTypeId}
         </if>
+        <if test="majorId != null and majorId != ''">
+            AND g.major_id = #{majorId}
+        </if>
         <if test="goodsName != null and goodsName != '' ">
             and g.goods_name like concat('%', #{goodsName}, '%')
         </if>
         <if test="goodsStatus != null and goodsStatus != '' ">
             and g.`status` = #{goodsStatus}
         </if>
+        <if test="status != null and status.size()!=0 ">
+            AND g.status in
+            <foreach collection="status" item="item" index="index" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
         <if test="studyStartTime != null and studyStartTime != '' ">
             and (SELECT count(*) FROM user_exam_record r where r.goods_id=g.goods_id AND r.do_mode = 1 AND r.user_id = #{userId} AND r.create_time >= #{studyStartTime} )>0
         </if>
@@ -810,9 +825,11 @@
         s.service_start_time,
         s.service_end_time,
         s.order_goods_id,
+        (SELECT GROUP_CONCAT(subject_name) from course_subject where FIND_IN_SET(id,g.subject_ids)) subject_names,
         ( SELECT m.category_name FROM major m WHERE   m.id =g.major_id LIMIT 1) AS category_name,
         ( SELECT i.business_name FROM course_business i WHERE i.id = g.business_id LIMIT 1) AS business_name,
         ( SELECT p.project_name FROM course_project_type p WHERE p.id = g.project_id LIMIT 1) AS project_name,
+        (SELECT e.education_name FROM course_education_type e where e.id = g.education_type_id) as education_name,
         ( SELECT count(*) FROM course_file cf WHERE  cf.handouts_id =g.handouts_id AND cf.type = 1 AND cf.`status` = 1 ) AS file_num
         FROM
         goods g
@@ -823,6 +840,12 @@
         AND s.pay_status in (2,3,4)
         AND o.`status` = 1
         AND g.goods_type = 8
+        <if test="status != null and status.size()!=0 ">
+            AND g.status in
+            <foreach collection="status" item="item" index="index" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
         <if test="userId != null and userId !=''">
             AND o.user_id = #{userId}
         </if>
@@ -832,6 +855,9 @@
         <if test="projectId != null and projectId != ''">
             AND g.project_id = #{projectId}
         </if>
+        <if test="majorId != null and majorId != ''">
+            AND g.major_id = #{majorId}
+        </if>
         <if test="educationTypeId != null and educationTypeId != ''">
             AND g.education_type_id = #{educationTypeId}
         </if>
@@ -868,6 +894,7 @@
         ( SELECT m.category_name FROM major m WHERE   m.id =g.major_id LIMIT 1) AS category_name,
         ( SELECT i.business_name FROM course_business i WHERE i.id = g.business_id LIMIT 1) AS business_name,
         ( SELECT p.project_name FROM course_project_type p WHERE p.id = g.project_id LIMIT 1) AS project_name,
+        (SELECT e.education_name FROM course_education_type e where e.id = g.education_type_id) as education_name,
         (SELECT COUNT(*)  FROM goods_course gc LEFT JOIN course_menu cm on cm.course_id = gc.course_id where gc.goods_id=g.goods_id and cm.type = 1 ) as module_num,
         (( SELECT
         COUNT( cm.id )
@@ -887,7 +914,6 @@
         WHERE
         gc.goods_id = g.goods_id
         AND cm.type = 1)) as chapter_num,
-        ( SELECT e.education_name FROM course_education_type e WHERE e.id = g.education_type_id LIMIT 1) AS education_name,
         (( SELECT
         COUNT( cm.id )
         FROM
@@ -928,6 +954,12 @@
         AND s.pay_status in (2,3,4)
         AND o.`status` = 1
         AND g.goods_type = 6
+        <if test="status != null and status.size()!=0 ">
+            AND g.status in
+            <foreach collection="status" item="item" index="index" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
         <if test="userId != null and userId !=''">
             AND o.user_id = #{userId}
         </if>
@@ -940,6 +972,9 @@
         <if test="educationTypeId != null and educationTypeId != ''">
             AND g.education_type_id = #{educationTypeId}
         </if>
+        <if test="majorId != null and majorId != ''">
+            AND g.major_id = #{majorId}
+        </if>
         <if test="goodsName != null and goodsName != '' ">
             and g.goods_name like concat('%', #{goodsName}, '%')
         </if>
@@ -2056,13 +2091,18 @@
         SELECT *
         FROM user_study_record
         WHERE user_id = #{userId}
-          AND grade_id = #{gradeId}
           AND course_id = #{courseId}
           AND module_id = #{moduleId}
           AND section_id = #{sectionId}
           AND chapter_id = #{chapterId}
           AND goods_id = #{goodsId}
           AND current_status = 1
+        <if test="orderGoodsId != null and orderGoodsId != '' ">
+            AND order_goods_id = #{orderGoodsId}
+        </if>
+        <if test="gradeId != null and gradeId != '' ">
+            AND grade_id = #{gradeId}
+        </if>
         <if test="searchWeekStartTime != null and searchWeekStartTime != '' ">
             AND update_time >= #{searchWeekStartTime}
         </if>

+ 136 - 0
zhongzheng-system/src/main/resources/mapper/modules/user/UserSubscribeMapper.xml

@@ -780,4 +780,140 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             subscribe_id = #{subscribeId}
     </update>
 
+    <select id="listUserApply" parameterType="com.zhongzheng.modules.user.bo.UserApplyRecordBo" resultType="com.zhongzheng.modules.user.vo.UserApplyRecordVo">
+        SELECT
+        us.subscribe_id,
+        us.exam_status,
+        us.result as applyStatus,
+        us.performance,
+        us.create_time,
+        g.goods_name,
+        CONCAT(cet.education_name,'-',cb.business_name,cpt.project_name) AS businessName,
+        m.category_name AS majorName,
+        us.subscribe_status,
+        us.apply_site_exam_time AS applyTime,
+        us.apply_site_start_time AS applyStarTime,
+        us.apply_site_end_time AS applyEndTime,
+        CASE
+        WHEN    (
+        SELECT
+        COUNT( usu.order_goods_id )
+        FROM
+        user_subscribe usu
+        WHERE
+        usu.user_id = us.user_id
+        AND usu.order_goods_id = us.order_goods_id
+        AND usu.subscribe_status = 1
+        ) = 1
+        THEN 1
+        WHEN    (
+        SELECT
+        COUNT( usu.order_goods_id )
+        FROM
+        user_subscribe usu
+        WHERE
+        usu.user_id = us.user_id
+        AND usu.order_goods_id = us.order_goods_id
+        AND usu.subscribe_status = 1
+        ) >1
+        THEN 0 ELSE NULL END
+        AS applyNew
+        FROM user_subscribe us
+        LEFT JOIN order_goods og ON us.order_goods_id = og.order_goods_id
+        LEFT JOIN goods g ON og.goods_id = g.goods_id
+        LEFT JOIN course_education_type cet ON g.education_type_id = cet.id
+        LEFT JOIN course_project_type cpt ON g.project_id = cpt.id
+        LEFT JOIN course_business cb ON g.business_id = cb.id
+        LEFT JOIN major m ON g.major_id = m.id
+        WHERE 1=1 AND us.exam_status != 0
+        <if test="userId != null and userId !='' ">
+            AND us.user_id = #{userId}
+        </if>
+        <if test="applyStartTime != null and applyStartTime !=''">
+            AND us.apply_site_exam_time &gt;= #{applyStartTime}
+        </if>
+        <if test="applyEndTime != null and applyEndTime !=''">
+            AND us.apply_site_exam_time &lt;= #{applyEndTime}
+        </if>
+        <if test="educationTypeId != null and educationTypeId !='' ">
+            AND cet.id = #{educationTypeId}
+        </if>
+        <if test="businessId != null and businessId !='' ">
+            AND cb.id = #{businessId}
+        </if>
+        <if test="majorId != null and majorId !='' ">
+            AND m.id = #{majorId}
+        </if>
+        <if test="goodsName != null and goodsName !='' ">
+            AND g.goods_name LIKE concat('%',#{goodsName},'%')
+        </if>
+        <if test="applyStatus != null ">
+            AND us.result = #{applyStatus}
+        </if>
+        <if test="applyNew != null and applyNew == 1">
+            AND (
+            SELECT
+            COUNT( usu.order_goods_id )
+            FROM
+            user_subscribe usu
+            WHERE
+            usu.user_id = us.user_id
+            AND usu.order_goods_id = us.order_goods_id
+            AND usu.subscribe_status = 1
+            ) = 1
+        </if>
+        <if test="applyNew != null and applyNew == 0">
+            AND (
+            SELECT
+            COUNT( usu.order_goods_id )
+            FROM
+            user_subscribe usu
+            WHERE
+            usu.user_id = us.user_id
+            AND usu.order_goods_id = us.order_goods_id
+            AND usu.subscribe_status = 1
+            ) &gt; 1
+        </if>
+    </select>
+
+    <select id="listPromise" parameterType="com.zhongzheng.modules.user.bo.UserPromiseRecordBo" resultType="com.zhongzheng.modules.user.vo.UserPromiseRecordVo">
+        SELECT
+            up.id,
+            up.create_time as uploadTime,
+            up.key_value,
+            g.goods_name,
+            CONCAT(cet.education_name,'-',cb.business_name,cpt.project_name) AS businessName,
+            m.category_name AS majorName,
+            1 AS signStatus
+        FROM
+            user_profile up
+                LEFT JOIN goods g ON up.goods_id = g.goods_id
+                LEFT JOIN course_education_type cet ON g.education_type_id = cet.id
+                LEFT JOIN course_project_type cpt ON g.project_id = cpt.id
+                LEFT JOIN course_business cb ON g.business_id = cb.id
+                LEFT JOIN major m ON g.major_id = m.id
+        WHERE up.`status` != -1 AND up.current_status = 1
+        <if test="userId != null ">
+            AND up.user_id = #{userId}
+        </if>
+        <if test="uploadStartTime != null and uploadStartTime !=''">
+            AND up.create_time &gt;= #{uploadStartTime}
+        </if>
+        <if test="uploadEndTime != null and uploadEndTime !=''">
+            AND up.create_time &lt;= #{uploadEndTime}
+        </if>
+        <if test="educationTypeId != null and educationTypeId !='' ">
+            AND cet.id = #{educationTypeId}
+        </if>
+        <if test="businessId != null and businessId !='' ">
+            AND cb.id = #{businessId}
+        </if>
+        <if test="majorId != null and majorId !='' ">
+            AND m.id = #{majorId}
+        </if>
+        <if test="goodsName != null and goodsName !='' ">
+            AND g.goods_name LIKE concat('%',#{goodsName},'%')
+        </if>
+    </select>
+
 </mapper>