فهرست منبع

submit20240416

yangdamao 1 سال پیش
والد
کامیت
4523d2eaa9
40فایلهای تغییر یافته به همراه425 افزوده شده و 78 حذف شده
  1. 4 0
      zhongzheng-admin-saas/src/main/resources/application.yml
  2. 6 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/base/UserProfileController.java
  3. 1 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/common/CommonController.java
  4. 4 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/course/CourseController.java
  5. 6 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/exam/ExamApplyController.java
  6. 11 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/grade/ClassGradeController.java
  7. 11 4
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/schedule/ScheduleController.java
  8. 3 0
      zhongzheng-admin/src/main/resources/application.yml
  9. 4 0
      zhongzheng-api/src/main/resources/application.yml
  10. 4 0
      zhongzheng-common/src/main/java/com/zhongzheng/common/core/domain/entity/SysRole.java
  11. 5 0
      zhongzheng-common/src/main/java/com/zhongzheng/common/core/domain/model/LoginUser.java
  12. 34 1
      zhongzheng-common/src/main/java/com/zhongzheng/common/type/EncryptHandler.java
  13. 31 14
      zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/SysLoginService.java
  14. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/base/service/IUserProfileService.java
  15. 22 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/base/service/impl/UserProfileServiceImpl.java
  16. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/vo/GoodsBatchListVo.java
  17. 18 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/bo/UpdateApplyNumBo.java
  18. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/service/IExamApplyService.java
  19. 24 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/service/impl/ExamApplyServiceImpl.java
  20. 7 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/mapper/GoodsMapper.java
  21. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/IGoodsService.java
  22. 9 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/impl/GoodsServiceImpl.java
  23. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/IClassGradeUserService.java
  24. 30 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeUserServiceImpl.java
  25. 6 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/domain/OrderGoods.java
  26. 6 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/mapper/OrderGoodsMapper.java
  27. 4 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/IOrderGoodsService.java
  28. 10 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderGoodsServiceImpl.java
  29. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java
  30. 4 2
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/vo/OrderBusinessConfigVo.java
  31. 1 15
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/vo/OrderListExportVo.java
  32. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/schedule/service/IScheduleService.java
  33. 62 36
      zhongzheng-system/src/main/java/com/zhongzheng/modules/schedule/service/impl/ScheduleServiceImpl.java
  34. 10 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/system/service/impl/SysUserServiceImpl.java
  35. 1 0
      zhongzheng-system/src/main/resources/mapper/modules/course/CourseMapper.xml
  36. 58 0
      zhongzheng-system/src/main/resources/mapper/modules/goods/GoodsMapper.xml
  37. 5 1
      zhongzheng-system/src/main/resources/mapper/modules/order/OrderBusinessConfigMapper.xml
  38. 9 0
      zhongzheng-system/src/main/resources/mapper/modules/order/OrderGoodsMapper.xml
  39. 0 1
      zhongzheng-system/src/main/resources/mapper/modules/order/OrderHandleMapper.xml
  40. 1 1
      zhongzheng-system/src/main/resources/mapper/modules/system/SysUserMapper.xml

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

@@ -248,6 +248,9 @@ feign:
   hystrix:
   hystrix:
     enabled: true
     enabled: true
 
 
+phone:
+  conceal: false
+
 poliv:
 poliv:
   sdk:
   sdk:
     userid: egsxlptzdq
     userid: egsxlptzdq
@@ -303,6 +306,7 @@ aliyun:
     todayExamNotRecordWarn: SMS_257713140  #学员打卡提醒(每日一练)
     todayExamNotRecordWarn: SMS_257713140  #学员打卡提醒(每日一练)
     todayExamNotRecordTeachWarn: SMS_257702971  #学员打卡教务提醒(每日一练)
     todayExamNotRecordTeachWarn: SMS_257702971  #学员打卡教务提醒(每日一练)
     noFinishExamNoteCode: SMS_262460267  #未做完试卷通知
     noFinishExamNoteCode: SMS_262460267  #未做完试卷通知
+    orderServiceEndRemind : SMS_465555251  #学生购买未学习
 
 
 distributionOldPay:
 distributionOldPay:
       host: http://test.jqbao.net/System/BussinessApi/AddRedPackData
       host: http://test.jqbao.net/System/BussinessApi/AddRedPackData

+ 6 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/base/UserProfileController.java

@@ -160,6 +160,12 @@ public class UserProfileController extends BaseController {
         return AjaxResult.success(map);
         return AjaxResult.success(map);
     }
     }
 
 
+    @ApiOperation("承诺书下载")
+    @GetMapping("/querCommitment")
+    public AjaxResult querCommitment(UserProfileQueryBo bo) {
+        return AjaxResult.success(iUserProfileService.querCommitment(bo));
+    }
+
     /*@ApiOperation("审核资料测试")
     /*@ApiOperation("审核资料测试")
     @PreAuthorize("@ss.hasPermi('system:profile:edit')")
     @PreAuthorize("@ss.hasPermi('system:profile:edit')")
     @Log(title = "填写资料审核", businessType = BusinessType.UPDATE)
     @Log(title = "填写资料审核", businessType = BusinessType.UPDATE)

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

@@ -901,4 +901,5 @@ public class CommonController extends BaseController {
         iFaceService.DetectFace(bo);
         iFaceService.DetectFace(bo);
         return AjaxResult.success();
         return AjaxResult.success();
     }
     }
+
 }
 }

+ 4 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/course/CourseController.java

@@ -8,6 +8,7 @@ import cn.hutool.core.lang.Validator;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.type.EncryptHandler;
 import com.zhongzheng.common.type.EncryptHandler;
 import com.zhongzheng.common.utils.ServletUtils;
 import com.zhongzheng.common.utils.ServletUtils;
@@ -247,6 +248,9 @@ public class CourseController extends BaseController {
                 vo.setUserId(user.getUserId());
                 vo.setUserId(user.getUserId());
                 vo.setGoodsId(queryBo.getGoodsId());
                 vo.setGoodsId(queryBo.getGoodsId());
                 vo.setTelphone(queryBo.getTelphone());
                 vo.setTelphone(queryBo.getTelphone());
+                if (StringUtils.isNotBlank(user.getPasswordAes())){
+                    vo.setPasswordAes(EncryptHandler.decrypt(user.getPasswordAes()));
+                }
                 vo.setList(list);
                 vo.setList(list);
                 listVos.add(vo);
                 listVos.add(vo);
             }
             }

+ 6 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/exam/ExamApplyController.java

@@ -280,4 +280,10 @@ public class ExamApplyController extends BaseController {
         return AjaxResult.success(iExamApplyService.examUserProfileExport(bo));
         return AjaxResult.success(iExamApplyService.examUserProfileExport(bo));
     }
     }
 
 
+    @ApiOperation("修改考场人数")
+    @PostMapping ("/update/applyNum")
+    public AjaxResult updateApplyNum(@RequestBody UpdateApplyNumBo bo) {
+        return toAjax(iExamApplyService.updateApplyNum(bo) ? 1 : 0);
+    }
+
 }
 }

+ 11 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/grade/ClassGradeController.java

@@ -255,6 +255,17 @@ public class ClassGradeController extends BaseController {
         return getDataTable(list);
         return getDataTable(list);
     }
     }
 
 
+    /**
+     * 班级管理列表
+     */
+    @ApiOperation("班级管理列表")
+    @GetMapping("/listUserPeriodRecord/new")
+    public TableDataInfo<ClassPeriodStudentVo> listUserPeriodRecordNew(ClassGradeUserQueryBo bo) {
+        startPage();
+        List<ClassPeriodStudentVo> list = iClassGradeUserService.listUserPeriodRecordNew(bo);
+        return getDataTable(list);
+    }
+
     @ApiOperation("按周查询学员学时学习记录列表")
     @ApiOperation("按周查询学员学时学习记录列表")
     @PreAuthorize("@ss.hasPermi('grade:user:list')")
     @PreAuthorize("@ss.hasPermi('grade:user:list')")
     @GetMapping("/listUserPeriodWeekRecord")
     @GetMapping("/listUserPeriodWeekRecord")

+ 11 - 4
zhongzheng-admin/src/main/java/com/zhongzheng/controller/schedule/ScheduleController.java

@@ -416,10 +416,10 @@ public class ScheduleController extends BaseController {
         //茂名市建设培训学校 680980002459417532
         //茂名市建设培训学校 680980002459417532
         //肇庆市建筑业协会 480813706424615769
         //肇庆市建筑业协会 480813706424615769
 //        List<String> tenantIds = Arrays.asList("972001468256950403", "680980002459417532", "480813706424615769");
 //        List<String> tenantIds = Arrays.asList("972001468256950403", "680980002459417532", "480813706424615769");
-        List<String> tenantIds = Arrays.asList("87440920140968","694515817698614");
-        tenantIds.forEach(tenantId -> {
-            iScheduleService.synchronizationGoodsByTenantId(tenantId);
-        });
+//        List<String> tenantIds = Arrays.asList("87440920140968","694515817698614");
+//        tenantIds.forEach(tenantId -> {
+//            iScheduleService.synchronizationGoodsByTenantId(tenantId);
+//        });
         return AjaxResult.success();
         return AjaxResult.success();
     }
     }
 
 
@@ -485,4 +485,11 @@ public class ScheduleController extends BaseController {
         iClassGradeUserService.resetQdyCheckInfo();
         iClassGradeUserService.resetQdyCheckInfo();
         return AjaxResult.success();
         return AjaxResult.success();
     }
     }
+
+    @ApiOperation("计算课程总数")
+    @GetMapping("/order/courseNum")
+    public AjaxResult orderCourseNum(){
+        iScheduleService.orderCourseNum();
+        return AjaxResult.success();
+    }
 }
 }

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

@@ -248,6 +248,9 @@ feign:
   hystrix:
   hystrix:
     enabled: true
     enabled: true
 
 
+phone:
+  conceal: true
+
 poliv:
 poliv:
   sdk:
   sdk:
     userid: egsxlptzdq
     userid: egsxlptzdq

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

@@ -245,6 +245,9 @@ feign:
   hystrix:
   hystrix:
     enabled: true
     enabled: true
 
 
+phone:
+  conceal: false
+
 poliv:
 poliv:
   sdk:
   sdk:
     userid: egsxlptzdq
     userid: egsxlptzdq
@@ -301,3 +304,4 @@ aliyun:
     todayExamNotRecordWarn: SMS_257713140  #学员打卡提醒(每日一练)
     todayExamNotRecordWarn: SMS_257713140  #学员打卡提醒(每日一练)
     todayExamNotRecordTeachWarn: SMS_257702971  #学员打卡教务提醒(每日一练)
     todayExamNotRecordTeachWarn: SMS_257702971  #学员打卡教务提醒(每日一练)
     noFinishExamNoteCode: SMS_262460267  #未做完试卷通知
     noFinishExamNoteCode: SMS_262460267  #未做完试卷通知
+    orderServiceEndRemind : SMS_465555251  #学生购买未学习

+ 4 - 0
zhongzheng-common/src/main/java/com/zhongzheng/common/core/domain/entity/SysRole.java

@@ -103,6 +103,10 @@ public class SysRole implements Serializable
 
 
     private String tenantId;
     private String tenantId;
 
 
+    /** 手机号查看标识:1可以查到 0隐藏 */
+    @ApiModelProperty(value ="手机号查看标识:1可以查到 0隐藏")
+    private Integer phoneConceal;
+
     /**
     /**
      * 请求参数
      * 请求参数
      */
      */

+ 5 - 0
zhongzheng-common/src/main/java/com/zhongzheng/common/core/domain/model/LoginUser.java

@@ -68,6 +68,11 @@ public class LoginUser implements UserDetails
      */
      */
     private SysUser user;
     private SysUser user;
 
 
+    /**
+     * 手机号隐藏标识 1,不隐藏
+     */
+    private Integer phoneConcealSign;
+
 
 
     public LoginUser(SysUser user, Set<String> permissions)
     public LoginUser(SysUser user, Set<String> permissions)
     {
     {

+ 34 - 1
zhongzheng-common/src/main/java/com/zhongzheng/common/type/EncryptHandler.java

@@ -2,14 +2,26 @@ package com.zhongzheng.common.type;
 
 
 import cn.hutool.crypto.SecureUtil;
 import cn.hutool.crypto.SecureUtil;
 import cn.hutool.crypto.symmetric.AES;
 import cn.hutool.crypto.symmetric.AES;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.zhongzheng.common.core.domain.model.LoginUser;
+import com.zhongzheng.common.utils.SecurityUtils;
+import com.zhongzheng.common.utils.ServletUtils;
+import com.zhongzheng.common.utils.TelPhoneUtils;
 import org.apache.ibatis.type.*;
 import org.apache.ibatis.type.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.security.core.token.Token;
+import org.springframework.security.core.token.TokenService;
 import org.springframework.util.StringUtils;
 import org.springframework.util.StringUtils;
 
 
+import java.io.IOException;
+import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
 import java.nio.charset.StandardCharsets;
 import java.sql.CallableStatement;
 import java.sql.CallableStatement;
 import java.sql.PreparedStatement;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.sql.SQLException;
+import java.util.Properties;
 
 
 
 
 @MappedJdbcTypes(JdbcType.VARCHAR)
 @MappedJdbcTypes(JdbcType.VARCHAR)
@@ -20,7 +32,6 @@ public class EncryptHandler  implements TypeHandler<String> {
     public static final boolean ENCRYPT_STATUS = true; //是否开启字段加密
     public static final boolean ENCRYPT_STATUS = true; //是否开启字段加密
 
 
 
 
-
     public static String decrypt(String value) {
     public static String decrypt(String value) {
         if (null == value) {
         if (null == value) {
             return null;
             return null;
@@ -28,6 +39,27 @@ public class EncryptHandler  implements TypeHandler<String> {
         if (value.length()<=20 ) {
         if (value.length()<=20 ) {
             return value;
             return value;
         }
         }
+        String s = SecureUtil.aes(KEYS).decryptStr(value);
+        String authorizationToken = ServletUtils.getRequest().getHeader("AuthorizationToken");
+        if (com.baomidou.mybatisplus.core.toolkit.StringUtils.isNotBlank(authorizationToken)){
+            Boolean phoneConceal = false;
+            try (InputStream inputStream = EncryptHandler.class.getClassLoader().getResourceAsStream("application.yml")) {
+                Properties properties = new Properties();
+                properties.load(inputStream);
+                String property = properties.getProperty("conceal");
+                phoneConceal = Boolean.valueOf(property);
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+            if (phoneConceal){
+                //开启手机号码加密
+                LoginUser loginUser = SecurityUtils.getLoginUser();
+                if (s.length() <= 11 &&
+                        (ObjectUtils.isNull(loginUser.getPhoneConcealSign()) || loginUser.getPhoneConcealSign() != 1)){
+                    return TelPhoneUtils.hideTelPhone(s);
+                }
+            }
+        }
         return SecureUtil.aes(KEYS).decryptStr(value);
         return SecureUtil.aes(KEYS).decryptStr(value);
     }
     }
 
 
@@ -38,6 +70,7 @@ public class EncryptHandler  implements TypeHandler<String> {
         if(ENCRYPT_STATUS){
         if(ENCRYPT_STATUS){
             AES aes = SecureUtil.aes(KEYS);
             AES aes = SecureUtil.aes(KEYS);
             String encrypt = aes.encryptHex(value);
             String encrypt = aes.encryptHex(value);
+
             return encrypt;
             return encrypt;
         }else{
         }else{
             return value;
             return value;

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

@@ -3,6 +3,7 @@ package com.zhongzheng.framework.web.service;
 import cn.hutool.core.lang.Validator;
 import cn.hutool.core.lang.Validator;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.zhongzheng.common.constant.Constants;
 import com.zhongzheng.common.constant.Constants;
 import com.zhongzheng.common.core.domain.entity.SysRole;
 import com.zhongzheng.common.core.domain.entity.SysRole;
@@ -40,6 +41,7 @@ import javax.annotation.Resource;
 import java.io.InputStream;
 import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.List;
+import java.util.stream.Collectors;
 
 
 /**
 /**
  * 登录校验方法
  * 登录校验方法
@@ -91,20 +93,20 @@ public class SysLoginService
      */
      */
     public String login(String username, String password, String code, String uuid,String smsCode,String tel)
     public String login(String username, String password, String code, String uuid,String smsCode,String tel)
     {
     {
-        String verifyKey = Constants.CAPTCHA_CODE_KEY + uuid;
-        String captcha = redisCache.getCacheObject(verifyKey);
-        redisCache.deleteObject(verifyKey);
-        if (captcha == null)
-        {
-            AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire")));
-            throw new CaptchaExpireException();
-        }
-        if (!code.equalsIgnoreCase(captcha))
-        {
-            AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.error")));
-            throw new CaptchaException();
-        }
-        iUserLoginErrorService.checkLimit(username);
+//        String verifyKey = Constants.CAPTCHA_CODE_KEY + uuid;
+//        String captcha = redisCache.getCacheObject(verifyKey);
+//        redisCache.deleteObject(verifyKey);
+//        if (captcha == null)
+//        {
+//            AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire")));
+//            throw new CaptchaExpireException();
+//        }
+//        if (!code.equalsIgnoreCase(captcha))
+//        {
+//            AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.error")));
+//            throw new CaptchaException();
+//        }
+//        iUserLoginErrorService.checkLimit(username);
         // 用户验证
         // 用户验证
         Authentication authentication = null;
         Authentication authentication = null;
         try
         try
@@ -143,7 +145,22 @@ public class SysLoginService
         }
         }
         AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
         AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
         LoginUser loginUser = (LoginUser) authentication.getPrincipal();
         LoginUser loginUser = (LoginUser) authentication.getPrincipal();
+        loginUser.setPhoneConcealSign(0);
         SysUser user = iSysUserService.updateLoginTimeIp(loginUser.getUser().getUserId());
         SysUser user = iSysUserService.updateLoginTimeIp(loginUser.getUser().getUserId());
+        //查看用户权限是否可以查看手机号码
+        if (user.getUserName().equals("admin")){
+            loginUser.setPhoneConcealSign(1);
+        }else {
+            List<SysUserRole> list = iSysUserRoleService.list(new LambdaQueryWrapper<SysUserRole>()
+                    .eq(SysUserRole::getUserId, user.getUserId()));
+            if (CollectionUtils.isNotEmpty(list)){
+                List<SysRole> sysRoles = iSysRoleService.listByIds(list.stream().map(SysUserRole::getRoleId).collect(Collectors.toList()));
+                if (sysRoles.stream().anyMatch(x -> x.getPhoneConceal() == 1)){
+                    loginUser.setPhoneConcealSign(1);
+                }
+            }
+
+        }
         String dualAuth = configService.selectConfigByKey("login.dual.auth");
         String dualAuth = configService.selectConfigByKey("login.dual.auth");
         if(Validator.isNotEmpty(dualAuth)&&dualAuth.equals("1")){
         if(Validator.isNotEmpty(dualAuth)&&dualAuth.equals("1")){
             if(Validator.isEmpty(tel)){
             if(Validator.isEmpty(tel)){

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/base/service/IUserProfileService.java

@@ -38,6 +38,8 @@ public interface IUserProfileService extends IService<UserProfile> {
 
 
 	UserProfile queryLast(UserProfileQueryBo bo);
 	UserProfile queryLast(UserProfileQueryBo bo);
 
 
+	String querCommitment(UserProfileQueryBo bo);
+
 	/**
 	/**
 	 * 根据新增业务对象插入填写资料审核
 	 * 根据新增业务对象插入填写资料审核
 	 * @param bo 填写资料审核新增业务对象
 	 * @param bo 填写资料审核新增业务对象

+ 22 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/base/service/impl/UserProfileServiceImpl.java

@@ -147,6 +147,28 @@ public class UserProfileServiceImpl extends ServiceImpl<UserProfileMapper, UserP
         return profile;
         return profile;
     }
     }
 
 
+    @Override
+    public String querCommitment(UserProfileQueryBo bo) {
+        if(Validator.isNotEmpty(bo.getOrderGoodsId())){
+            throw new CustomException("OrderGoodsId缺失");
+        }
+        UserProfile profile = getOne(new LambdaQueryWrapper<UserProfile>()
+                .eq(UserProfile::getOrderGoodsId, bo.getOrderGoodsId())
+                .eq(UserProfile::getTypeStatus, 1)
+                .eq(UserProfile::getCurrentStatus, 1)
+                .in(UserProfile::getStatus, new ArrayList<Integer>(Arrays.asList(1,2)))
+                .orderByDesc(UserProfile::getId)
+                .last("limit 1"));
+        if(Validator.isNotEmpty(profile)){
+            Map<String, String> maps = JSONObject.parseObject(profile.getKeyValue(), Map.class);
+            if(maps.containsKey("commitment_electr_signature")){
+                String img = ALIYUN_OSS_ENDPOINT + "/" + jsonHandle(maps,"commitment_electr_signature");
+                return img;
+            }
+        }
+        return null;
+    }
+
     /**
     /**
      * 实体类转化成视图对象
      * 实体类转化成视图对象
      *
      *

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/vo/GoodsBatchListVo.java

@@ -19,5 +19,7 @@ public class GoodsBatchListVo implements Serializable {
 
 
     private Long userId;
     private Long userId;
 
 
+    private String passwordAes;
+
     private List<GoodsUserVo> list;
     private List<GoodsUserVo> list;
 }
 }

+ 18 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/bo/UpdateApplyNumBo.java

@@ -0,0 +1,18 @@
+package com.zhongzheng.modules.exam.bo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author yangdamao
+ * @date 2024年04月11日 15:03
+ */
+@Data
+public class UpdateApplyNumBo implements Serializable {
+
+    private List<Long> applyIds;
+
+    private Integer num;
+}

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

@@ -113,4 +113,6 @@ public interface IExamApplyService extends IService<ExamApply> {
     String examApplyResultCertificate(List<MultipartFile> files);
     String examApplyResultCertificate(List<MultipartFile> files);
 
 
 	List<UserProfile> getUserProfiles(String idCard, String businessName, String major);
 	List<UserProfile> getUserProfiles(String idCard, String businessName, String major);
+
+    boolean updateApplyNum(UpdateApplyNumBo bo);
 }
 }

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

@@ -1150,6 +1150,30 @@ public class ExamApplyServiceImpl extends ServiceImpl<ExamApplyMapper, ExamApply
        return baseMapper.getUserProfileList(idCard,businessName,major);
        return baseMapper.getUserProfileList(idCard,businessName,major);
     }
     }
 
 
+    @Override
+    public boolean updateApplyNum(UpdateApplyNumBo bo) {
+        for (Long applyId : bo.getApplyIds()) {
+            ExamApply apply = getById(applyId);
+            if (ObjectUtils.isNull(apply)){
+                throw new CustomException("考试信息获取有误!");
+            }
+            List<ExamApplySiteTime> siteTimeList = iExamApplySiteTimeService
+                    .list(new LambdaQueryWrapper<ExamApplySiteTime>().eq(ExamApplySiteTime::getApplyId, applyId));
+            if (CollectionUtils.isNotEmpty(siteTimeList)){
+                siteTimeList.forEach(item -> {
+                    List<ExamApplySiteTimeTwoAddBo> siteTimeTwoAddBos = JSONArray.parseArray(item.getSiteTime(), ExamApplySiteTimeTwoAddBo.class);
+                    if (CollectionUtils.isNotEmpty(siteTimeTwoAddBos)){
+                        siteTimeTwoAddBos.forEach(x -> x.setNum(bo.getNum().longValue()));
+                        String s = JSONArray.toJSONString(siteTimeTwoAddBos);
+                        item.setSiteTime(s);
+                    }
+                });
+            }
+            iExamApplySiteTimeService.updateBatchById(siteTimeList);
+        }
+        return true;
+    }
+
     @Override
     @Override
     public String examUserProfileExport(UserProfileQueryBo bo) {
     public String examUserProfileExport(UserProfileQueryBo bo) {
         List<UserProfileVo> userProfileVos = iUserProfileService.queryList(bo);
         List<UserProfileVo> userProfileVos = iUserProfileService.queryList(bo);

+ 7 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/mapper/GoodsMapper.java

@@ -14,6 +14,7 @@ import com.zhongzheng.modules.goods.bo.GoodsQueryBo;
 import com.zhongzheng.modules.goods.bo.UserGoodsListAllBo;
 import com.zhongzheng.modules.goods.bo.UserGoodsListAllBo;
 import com.zhongzheng.modules.goods.domain.Goods;
 import com.zhongzheng.modules.goods.domain.Goods;
 import com.zhongzheng.modules.goods.vo.*;
 import com.zhongzheng.modules.goods.vo.*;
+import com.zhongzheng.modules.system.domain.SysGoodsCopyRecord;
 import com.zhongzheng.modules.system.domain.SysTenant;
 import com.zhongzheng.modules.system.domain.SysTenant;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.security.core.parameters.P;
 import org.springframework.security.core.parameters.P;
@@ -103,4 +104,10 @@ public interface GoodsMapper extends BaseMapper<Goods> {
 
 
     @InterceptorIgnore(tenantLine = "true")
     @InterceptorIgnore(tenantLine = "true")
     List<Goods> getRelGoodsNoTenant(@Param("businessName") String businessName,@Param("categoryName") String categoryName,@Param("tenantId") Long tenantId);
     List<Goods> getRelGoodsNoTenant(@Param("businessName") String businessName,@Param("categoryName") String categoryName,@Param("tenantId") Long tenantId);
+
+    @InterceptorIgnore(tenantLine = "true")
+    Integer getCourseNum(Long goodsId);
+
+    @InterceptorIgnore(tenantLine = "true")
+    Integer getCourseExamNumNoTenant(Long goodsId);
 }
 }

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/IGoodsService.java

@@ -14,6 +14,7 @@ import com.zhongzheng.modules.goods.bo.*;
 import com.zhongzheng.modules.goods.domain.Goods;
 import com.zhongzheng.modules.goods.domain.Goods;
 import com.zhongzheng.modules.goods.vo.*;
 import com.zhongzheng.modules.goods.vo.*;
 import com.zhongzheng.modules.grade.vo.SyncGoodsExport;
 import com.zhongzheng.modules.grade.vo.SyncGoodsExport;
+import com.zhongzheng.modules.order.domain.OrderGoods;
 import com.zhongzheng.modules.system.domain.SysTenant;
 import com.zhongzheng.modules.system.domain.SysTenant;
 
 
 import java.util.Collection;
 import java.util.Collection;
@@ -163,5 +164,7 @@ public interface IGoodsService extends IService<Goods> {
 
 
 	List<Goods> getRelGoodsNoTenant(String businessName, String categoryName, Long tenantId);
 	List<Goods> getRelGoodsNoTenant(String businessName, String categoryName, Long tenantId);
 
 
+    Integer getCourseNum(Long goodsId);
 
 
+    Integer getCourseExamNum(Long goodsId);
 }
 }

+ 9 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/impl/GoodsServiceImpl.java

@@ -5288,6 +5288,15 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
         return baseMapper.getRelGoodsNoTenant(businessName, categoryName, tenantId);
         return baseMapper.getRelGoodsNoTenant(businessName, categoryName, tenantId);
     }
     }
 
 
+    @Override
+    public Integer getCourseNum(Long goodsId) {
+        return baseMapper.getCourseNum(goodsId);
+    }
+
+    @Override
+    public Integer getCourseExamNum(Long goodsId) {
+        return baseMapper.getCourseExamNumNoTenant(goodsId);
+    }
 
 
 
 
     private void updateHandoutsId(Long goodsId, Long tenantId, Long handoutsId) {
     private void updateHandoutsId(Long goodsId, Long tenantId, Long handoutsId) {

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

@@ -157,4 +157,6 @@ public interface IClassGradeUserService extends IService<ClassGradeUser> {
     List<UserUsbRecordVo> getListUserSubscribe(UserUsbRecordBo bo);
     List<UserUsbRecordVo> getListUserSubscribe(UserUsbRecordBo bo);
 
 
 	boolean resetQdyCheckInfo();
 	boolean resetQdyCheckInfo();
+
+	List<ClassPeriodStudentVo> listUserPeriodRecordNew(ClassGradeUserQueryBo bo);
 }
 }

+ 30 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeUserServiceImpl.java

@@ -944,6 +944,35 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
         return true;
         return true;
     }
     }
 
 
+    @Override
+    public List<ClassPeriodStudentVo> listUserPeriodRecordNew(ClassGradeUserQueryBo bo) {
+        //查询班级学员信息
+        List<ClassPeriodStudentVo> classPeriodStudentVos = baseMapper.listUserPeriod(bo);
+        //查找学员学习记录
+        for (ClassPeriodStudentVo classPeriodStudentVo : classPeriodStudentVos) {
+            //总的审核状态按照策划规则
+            ClassGradeUserQueryBo classGradeUserQueryBo = new ClassGradeUserQueryBo();
+            classGradeUserQueryBo.setGradeId(classPeriodStudentVo.getGradeId());
+            classGradeUserQueryBo.setUserId(classPeriodStudentVo.getUserId());
+            classGradeUserQueryBo.setGoodsId(classPeriodStudentVo.getGoodsId());
+            classGradeUserQueryBo.setOrderGoodsId(classPeriodStudentVo.getOrderGoodsId());
+            //當前班級學員審核狀態 -1不可审核 0待審  1未通过 2通过
+            Integer gradePeriodStatus = 0; //班级里的审核状态字段,保持一致 0 未通过 1通过 2待审核 -1 不可审核
+            classPeriodStudentVo.setAllStatus(changePeriodStatus(classPeriodStudentVo.getPeriodStatus()));
+            List<Long> timeList = baseMapper.selectStart(classPeriodStudentVo.getUserId(), classPeriodStudentVo.getGoodsId(), classPeriodStudentVo.getGradeId(),classPeriodStudentVo.getOrderGoodsId());
+            if (!CollectionUtils.isEmpty(timeList)) {
+                //查找开始学习时间
+                classPeriodStudentVo.setStartTime(timeList.get(0));
+            }
+            //取学时所有拍照最新的一张
+            String recentPhoto = userStudyRecordPhotoMapper.selectGradeRecentOnePhoto(classPeriodStudentVo.getUserId(), classPeriodStudentVo.getGradeId(),classPeriodStudentVo.getOrderGoodsId());
+            if (Validator.isNotEmpty(recentPhoto)) {
+                classPeriodStudentVo.setIdCardImg1(recentPhoto);
+            }
+        }
+        return classPeriodStudentVos;
+    }
+
     @Override
     @Override
     public ClassPeriodStudentVo DecryptOfficialInfo(ClassGradeDecryptQueryBo bo) {
     public ClassPeriodStudentVo DecryptOfficialInfo(ClassGradeDecryptQueryBo bo) {
         String pars;
         String pars;
@@ -1741,7 +1770,7 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
             System.out.println(e.getMessage() + "压缩");
             System.out.println(e.getMessage() + "压缩");
         }
         }
         rs.put("list", newList);
         rs.put("list", newList);
-    //    rs.put("zip", AjaxResult.success(filename));
+        rs.put("zip", AjaxResult.success(filename));
         return rs;
         return rs;
     }
     }
 
 

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

@@ -116,4 +116,10 @@ private static final long serialVersionUID=1L;
     @ApiModelProperty("新B端考试订单标识:1题库开通 2补冲考是标识")
     @ApiModelProperty("新B端考试订单标识:1题库开通 2补冲考是标识")
     private Integer openQuestionSign;
     private Integer openQuestionSign;
 
 
+    /** 商品课程节数量 */
+    private Integer courseNum;
+
+    /** 商品试卷数量 */
+    private Integer examNum;
+
 }
 }

+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/mapper/OrderGoodsMapper.java

@@ -82,4 +82,10 @@ public interface OrderGoodsMapper extends BaseMapper<OrderGoods> {
     List<MailOrderVo> getMailList(MailOrderBo bo);
     List<MailOrderVo> getMailList(MailOrderBo bo);
 
 
     List<OrderGoodsVo> sendTenOrderGoods(Long remindId);
     List<OrderGoodsVo> sendTenOrderGoods(Long remindId);
+
+    @InterceptorIgnore(tenantLine = "true")
+    List<OrderGoods> listByNotTenant();
+
+    @InterceptorIgnore(tenantLine = "true")
+    int upBatchNumById(OrderGoods orderGoods);
 }
 }

+ 4 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/IOrderGoodsService.java

@@ -137,4 +137,8 @@ public interface IOrderGoodsService extends IService<OrderGoods> {
     List<MailOrderVo> getMailList(MailOrderBo bo);
     List<MailOrderVo> getMailList(MailOrderBo bo);
 
 
     boolean mailOrderHandle(MailOrderHandleBo bo);
     boolean mailOrderHandle(MailOrderHandleBo bo);
+
+    List<OrderGoods> listByNotTenant();
+
+    Boolean upBatchNumById(OrderGoods orderGoods);
 }
 }

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

@@ -953,6 +953,16 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
         return iOrderService.updateBatchById(list);
         return iOrderService.updateBatchById(list);
     }
     }
 
 
+    @Override
+    public List<OrderGoods> listByNotTenant() {
+        return baseMapper.listByNotTenant();
+    }
+
+    @Override
+    public Boolean upBatchNumById(OrderGoods orderGoods) {
+        return baseMapper.upBatchNumById(orderGoods) > 0;
+    }
+
     private boolean checkUnique(Long GoodsId,Long UserId) {
     private boolean checkUnique(Long GoodsId,Long UserId) {
         ShoppingCart info = iShoppingCartService.getOne(new LambdaQueryWrapper<ShoppingCart>()
         ShoppingCart info = iShoppingCartService.getOne(new LambdaQueryWrapper<ShoppingCart>()
                 .eq(ShoppingCart::getUserId,UserId).eq(ShoppingCart::getGoodsId,GoodsId).last("limit 1"));
                 .eq(ShoppingCart::getUserId,UserId).eq(ShoppingCart::getGoodsId,GoodsId).last("limit 1"));

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

@@ -298,7 +298,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         List<OrderListExportVo> list = new ArrayList<>();
         List<OrderListExportVo> list = new ArrayList<>();
         for(OrderListVo vo : orderListVos){
         for(OrderListVo vo : orderListVos){
             OrderListExportVo item = BeanUtil.toBean(vo,OrderListExportVo.class);
             OrderListExportVo item = BeanUtil.toBean(vo,OrderListExportVo.class);
-            item.setPayTime(DateUtils.timestampToDate(vo.getPayTime()));
+            item.setPayTime(DateUtils.timestampToDateFormat(vo.getPayTime(),DateUtils.YYYY_MM_DD_HH_MM_SS));
             list.add(item);
             list.add(item);
         }
         }
         return list;
         return list;

+ 4 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/vo/OrderBusinessConfigVo.java

@@ -24,10 +24,12 @@ public class OrderBusinessConfigVo {
 	@ApiModelProperty("$pkColumn.columnComment")
 	@ApiModelProperty("$pkColumn.columnComment")
 	private Long id;
 	private Long id;
 
 
+	/** 教育类型id */
+	private Long educationTypeId;
 	/** 业务层次id */
 	/** 业务层次id */
-	@Excel(name = "业务层次id")
-	@ApiModelProperty("业务层次id")
 	private Long businessId;
 	private Long businessId;
+	/** 项目ID */
+	private Long projectId;
 	/** 配置名称 */
 	/** 配置名称 */
 	@Excel(name = "配置名称")
 	@Excel(name = "配置名称")
 	@ApiModelProperty("配置名称")
 	@ApiModelProperty("配置名称")

+ 1 - 15
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/vo/OrderListExportVo.java

@@ -34,12 +34,6 @@ public class OrderListExportVo {
     @ApiModelProperty("身份证号")
     @ApiModelProperty("身份证号")
     private String idCard;
     private String idCard;
 
 
-    /**
-     * 手机号码
-     */
-    @Excel(name = "手机号码")
-    @ApiModelProperty("手机号码")
-    private String telphone;
 
 
     @ApiModelProperty("公司名称")
     @ApiModelProperty("公司名称")
     private String companyName;
     private String companyName;
@@ -88,15 +82,7 @@ public class OrderListExportVo {
     @Excel(name = "教育名称")
     @Excel(name = "教育名称")
     @ApiModelProperty("教育名称")
     @ApiModelProperty("教育名称")
     private String educationName;
     private String educationName;
-    @Excel(name = "项目名称")
-    @ApiModelProperty("项目名称")
-    private String projectName;
-    @Excel(name = "业务名称")
-    @ApiModelProperty("业务名称")
-    private String businessName;
-    @Excel(name = "专业名称")
-    @ApiModelProperty("专业名称")
-    private String categoryName;
+
 
 
 
 
 }
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/schedule/service/IScheduleService.java

@@ -122,4 +122,6 @@ public interface IScheduleService extends IService<PolyvVideo> {
 
 
     void goodsCopyTwo();
     void goodsCopyTwo();
 
 
+    void orderCourseNum();
+
 }
 }

+ 62 - 36
zhongzheng-system/src/main/java/com/zhongzheng/modules/schedule/service/impl/ScheduleServiceImpl.java

@@ -596,44 +596,44 @@ public class ScheduleServiceImpl extends ServiceImpl<PolyvVideoMapper, PolyvVide
             List<OrderGoodsVo> list = orderGoodsMapper.sendTenOrderGoods(informRemindVo.getId());
             List<OrderGoodsVo> list = orderGoodsMapper.sendTenOrderGoods(informRemindVo.getId());
             for (OrderGoodsVo goodsVo : list) {
             for (OrderGoodsVo goodsVo : list) {
                 GoodsVo goods = iGoodsService.queryById(goodsVo.getGoodsId());
                 GoodsVo goods = iGoodsService.queryById(goodsVo.getGoodsId());
-                UserVo userVo = iUserService.queryById(goodsVo.getUserId());
-                if (informRemindVo.getWayStatus().equals(1)) {
-                    InformUserAddBo informUserAddBo = new InformUserAddBo();
-                    informUserAddBo.setUserId(goodsVo.getUserId());
-                    informUserAddBo.setSendStatus(1);
-                    informUserAddBo.setSendTime(DateUtils.getNowTime());
-                    informUserAddBo.setCreateTime(DateUtils.getNowTime());
-                    informUserAddBo.setUpdateTime(DateUtils.getNowTime());
-                    informUserAddBo.setRemindId(informRemindVo.getId());
-                    informUserAddBo.setSystemStatus(1);
-                    informUserAddBo.setGradeId(goodsVo.getGradeId());
-                    informUserAddBo.setOrderGoodsId(goodsVo.getOrderGoodsId());
-                    informUserAddBo.setRemind("二建继教学习服务还剩10天提醒");
-                    informUserAddBo.setGoodsId(goodsVo.getGoodsId());
-                    informUserAddBo.setText("尊敬的用户:您购买的课程二建继教学习服务还剩10天,请在"+DateUtils.timestampToDateFormat(goodsVo.getServiceEndTime(),DateUtils.YYYY__MM__DD)+"前完成学习,避免课程过期作废,无法学习给您带来不便。");
-                    iInformUserService.insertByAddBo(informUserAddBo);
-                }
-                if (informRemindVo.getNoteStatus().equals(1)) {
-                    InformUserAddBo informUserAddBo = new InformUserAddBo();
-                    informUserAddBo.setUserId(goodsVo.getUserId());
-                    informUserAddBo.setSendStatus(1);
-                    informUserAddBo.setSendTime(DateUtils.getNowTime());
-                    informUserAddBo.setCreateTime(DateUtils.getNowTime());
-                    informUserAddBo.setUpdateTime(DateUtils.getNowTime());
-                    informUserAddBo.setRemindId(informRemindVo.getId());
-                    informUserAddBo.setSystemStatus(3);
-                    informUserAddBo.setOrderGoodsId(goodsVo.getOrderGoodsId());
-                    informUserAddBo.setGradeId(goodsVo.getGradeId());
-                    informUserAddBo.setRemind("二建继教学习服务还剩10天提醒");
-                    informUserAddBo.setGoodsId(goodsVo.getGoodsId());
-                    informUserAddBo.setText("尊敬的用户:您购买的课程二建继教学习服务还剩10天,请在"+DateUtils.timestampToDateFormat(goodsVo.getServiceEndTime(),DateUtils.YYYY__MM__DD)+"前完成学习,避免课程过期作废,无法学习给您带来不便。");
-                    Map<String, Object> param = new HashMap<>();
-                    param.put("date", DateUtils.timestampToDateFormat(goodsVo.getServiceEndTime(),DateUtils.YYYY__MM__DD));
-                    param.put("day", "10");
-                    if (Validator.isNotEmpty(IAliSmsService.sendInformSms(userVo.getTelphone(), JSON.toJSONString(param), orderServiceEndRemind))) {
+                    UserVo userVo = iUserService.queryById(goodsVo.getUserId());
+                    if (informRemindVo.getWayStatus().equals(1)) {
+                        InformUserAddBo informUserAddBo = new InformUserAddBo();
+                        informUserAddBo.setUserId(goodsVo.getUserId());
+                        informUserAddBo.setSendStatus(1);
+                        informUserAddBo.setSendTime(DateUtils.getNowTime());
+                        informUserAddBo.setCreateTime(DateUtils.getNowTime());
+                        informUserAddBo.setUpdateTime(DateUtils.getNowTime());
+                        informUserAddBo.setRemindId(informRemindVo.getId());
+                        informUserAddBo.setSystemStatus(1);
+                        informUserAddBo.setGradeId(goodsVo.getGradeId());
+                        informUserAddBo.setOrderGoodsId(goodsVo.getOrderGoodsId());
+                        informUserAddBo.setRemind("二建继教学习服务还剩10天提醒");
+                        informUserAddBo.setGoodsId(goodsVo.getGoodsId());
+                        informUserAddBo.setText("尊敬的用户:您购买的课程二建继教学习服务还剩10天,请在"+DateUtils.timestampToDateFormat(goodsVo.getServiceEndTime(),DateUtils.YYYY__MM__DD)+"前完成学习,避免课程过期作废,无法学习给您带来不便。");
                         iInformUserService.insertByAddBo(informUserAddBo);
                         iInformUserService.insertByAddBo(informUserAddBo);
                     }
                     }
-                }
+                    if (informRemindVo.getNoteStatus().equals(1)) {
+                        InformUserAddBo informUserAddBo = new InformUserAddBo();
+                        informUserAddBo.setUserId(goodsVo.getUserId());
+                        informUserAddBo.setSendStatus(1);
+                        informUserAddBo.setSendTime(DateUtils.getNowTime());
+                        informUserAddBo.setCreateTime(DateUtils.getNowTime());
+                        informUserAddBo.setUpdateTime(DateUtils.getNowTime());
+                        informUserAddBo.setRemindId(informRemindVo.getId());
+                        informUserAddBo.setSystemStatus(3);
+                        informUserAddBo.setOrderGoodsId(goodsVo.getOrderGoodsId());
+                        informUserAddBo.setGradeId(goodsVo.getGradeId());
+                        informUserAddBo.setRemind("二建继教学习服务还剩10天提醒");
+                        informUserAddBo.setGoodsId(goodsVo.getGoodsId());
+                        informUserAddBo.setText("尊敬的用户:您购买的课程二建继教学习服务还剩10天,请在"+DateUtils.timestampToDateFormat(goodsVo.getServiceEndTime(),DateUtils.YYYY__MM__DD)+"前完成学习,避免课程过期作废,无法学习给您带来不便。");
+                        Map<String, Object> param = new HashMap<>();
+                        param.put("date", DateUtils.timestampToDateFormat(goodsVo.getServiceEndTime(),DateUtils.YYYY__MM__DD));
+                        param.put("day", "10");
+                        if (Validator.isNotEmpty(IAliSmsService.sendInformSms(userVo.getTelphone(), JSON.toJSONString(param), orderServiceEndRemind))) {
+                            iInformUserService.insertByAddBo(informUserAddBo);
+                        }
+                    }
             }
             }
         }
         }
 
 
@@ -2121,6 +2121,32 @@ public class ScheduleServiceImpl extends ServiceImpl<PolyvVideoMapper, PolyvVide
         iGoodsService.goodsCopyOne(bo);
         iGoodsService.goodsCopyOne(bo);
     }
     }
 
 
+    @Override
+    public void orderCourseNum() {
+        List<OrderGoods> orderGoods = iOrderGoodsService.listByNotTenant();
+        if (CollectionUtils.isEmpty(orderGoods)){
+            return;
+        }
+        orderGoods.forEach(item -> {
+            if (ObjectUtils.isNull(item.getCourseNum()) || item.getCourseNum() == 0){
+                //获取商品课程数量
+              Integer courseNum = iGoodsService.getCourseNum(item.getGoodsId());
+              if (courseNum > 0){
+                  item.setCourseNum(courseNum);
+              }
+            }
+            if (ObjectUtils.isNull(item.getExamNum()) || item.getExamNum() == 0){
+                //获取商品课程试卷数量
+                Integer courseExamNum = iGoodsService.getCourseExamNum(item.getGoodsId());
+                if (courseExamNum > 0){
+                    item.setExamNum(courseExamNum);
+                }
+            }
+            iOrderGoodsService.upBatchNumById(item);
+        });
+
+    }
+
 
 
     private String getWeeks(Long time){
     private String getWeeks(Long time){
         Calendar calendar = Calendar.getInstance();
         Calendar calendar = Calendar.getInstance();

+ 10 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/system/service/impl/SysUserServiceImpl.java

@@ -495,7 +495,16 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         user.setLoginDate(DateUtils.getNowDate());
         user.setLoginDate(DateUtils.getNowDate());
         user.setUpdateTime(DateUtils.getNowDate());
         user.setUpdateTime(DateUtils.getNowDate());
         user.setUpdateBy("sys");
         user.setUpdateBy("sys");
-        baseMapper.updateById(user);
+//        baseMapper.updateById(user);
+        update(new LambdaUpdateWrapper<SysUser>()
+        .set(SysUser::getPreLoginIp,user.getLoginIp())
+        .set(SysUser::getPreLoginDate,user.getLoginDate())
+        .set(SysUser::getLoginIp,IpUtils.getIpAddr(ServletUtils.getRequest()))
+        .set(SysUser::getLoginDate,DateUtils.getNowDate())
+        .set(SysUser::getUpdateTime,DateUtils.getNowDate())
+        .set(SysUser::getUpdateBy,"sys")
+        .eq(SysUser::getUserId,userId)
+        );
         return user;
         return user;
     }
     }
 
 

+ 1 - 0
zhongzheng-system/src/main/resources/mapper/modules/course/CourseMapper.xml

@@ -674,6 +674,7 @@
         og.grade_id,
         og.grade_id,
         IFNULL(ge.exam_num,0) as exam_num,
         IFNULL(ge.exam_num,0) as exam_num,
         og.create_time as open_goods_time,
         og.create_time as open_goods_time,
+        (SELECT MIN(usr.create_time) FROM user_study_record usr  where usr.`status`=1 and usr.grade_id = og.grade_id and usr.user_id = o.user_id and usr.current_status = 1 and usr.order_goods_id = og.order_goods_id) as start_time,
         (SELECT COUNT(DISTINCT ubr.module_id,ubr.chapter_id,ubr.exam_id) FROM user_bank_record ubr  where ubr.`status`=1 and ubr.`type` in (1,3) and ubr.report_status=1 and ubr.grade_id = og.grade_id and ubr.user_id = o.user_id and ubr.current_status = 1) as record_num,
         (SELECT COUNT(DISTINCT ubr.module_id,ubr.chapter_id,ubr.exam_id) FROM user_bank_record ubr  where ubr.`status`=1 and ubr.`type` in (1,3) and ubr.report_status=1 and ubr.grade_id = og.grade_id and ubr.user_id = o.user_id and ubr.current_status = 1) as record_num,
         (SELECT cgu.period_wait_time FROM class_grade_user cgu  where cgu.`status`=1  and cgu.grade_id = og.grade_id and cgu.user_id = o.user_id and cgu.order_goods_id = og.order_goods_id) as end_time,
         (SELECT cgu.period_wait_time FROM class_grade_user cgu  where cgu.`status`=1  and cgu.grade_id = og.grade_id and cgu.user_id = o.user_id and cgu.order_goods_id = og.order_goods_id) as end_time,
         oi.old_order_sn
         oi.old_order_sn

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

@@ -893,6 +893,64 @@
             AND INSTR(g.goods_name,'测试') &lt;= 0
             AND INSTR(g.goods_name,'测试') &lt;= 0
     </select>
     </select>
 
 
+
+    <select id="getCourseNum" parameterType="java.lang.Long" resultType="java.lang.Integer">
+        SELECT
+                (SELECT
+                     COUNT( cs.section_id )
+                 FROM
+                     goods g
+                         LEFT JOIN goods_course gc ON g.goods_id = gc.goods_id
+                         LEFT JOIN course_menu cm ON gc.course_id = cm.course_id
+                         LEFT JOIN course_module_chapter cmc ON cm.menu_id = cmc.module_id
+                         LEFT JOIN course_chapter_section ccs ON cmc.chapter_id = ccs.chapter_id
+                         LEFT JOIN course_section cs ON ccs.section_id = cs.section_id
+                 WHERE
+                     g.goods_id = #{goodsId}
+                   AND cm.`status` = 1
+                   AND cm.type = 1
+                   AND cs.`status` = 1
+                ) +
+                (SELECT
+                     COUNT( cs.section_id )
+                 FROM
+                     goods g
+                         LEFT JOIN goods_course gc ON g.goods_id = gc.goods_id
+                         LEFT JOIN course_menu cm ON gc.course_id = cm.course_id
+                         LEFT JOIN course_chapter_section ccs ON cm.menu_id = ccs.chapter_id
+                         LEFT JOIN course_section cs ON ccs.section_id = cs.section_id
+                 WHERE
+                     g.goods_id = #{goodsId}
+                   AND cm.`status` = 1
+                   AND cm.type = 2
+                   AND cs.`status` = 1
+                ) +
+                (SELECT
+                     COUNT( cs.section_id )
+                 FROM
+                     goods g
+                         LEFT JOIN goods_course gc ON g.goods_id = gc.goods_id
+                         LEFT JOIN course_menu cm ON gc.course_id = cm.course_id
+                         LEFT JOIN course_section cs ON cm.menu_id = cs.section_id
+                 WHERE
+                     g.goods_id = #{goodsId}
+                   AND cm.`status` = 1
+                   AND cm.type = 3
+                   AND cs.`status` = 1
+                )
+    </select>
+
+    <select id="getCourseExamNumNoTenant" parameterType="java.lang.Long" resultType="java.lang.Integer">
+        SELECT
+            COUNT(*)
+        FROM
+            course_menu_exam cme
+                LEFT JOIN goods_course gc ON cme.course_id = gc.course_id
+        WHERE
+            cme.type != 2
+	AND gc.goods_id = #{goodsId}
+    </select>
+
     <select id="queryGoodsByTenant" parameterType="map" resultType="com.zhongzheng.modules.goods.domain.Goods">
     <select id="queryGoodsByTenant" parameterType="map" resultType="com.zhongzheng.modules.goods.domain.Goods">
         SELECT *
         SELECT *
         FROM `goods`
         FROM `goods`

+ 5 - 1
zhongzheng-system/src/main/resources/mapper/modules/order/OrderBusinessConfigMapper.xml

@@ -17,7 +17,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
 
     <resultMap type="com.zhongzheng.modules.order.vo.OrderBusinessConfigVo" id="OrderBusinessConfigVoResult">
     <resultMap type="com.zhongzheng.modules.order.vo.OrderBusinessConfigVo" id="OrderBusinessConfigVoResult">
         <result property="id" column="id"/>
         <result property="id" column="id"/>
+        <result property="educationTypeId" column="education_type_id"/>
         <result property="businessId" column="business_id"/>
         <result property="businessId" column="business_id"/>
+        <result property="projectId" column="project_id"/>
         <result property="configName" column="config_name"/>
         <result property="configName" column="config_name"/>
         <result property="aliasName" column="alias_name"/>
         <result property="aliasName" column="alias_name"/>
         <result property="businessName" column="business_name"/>
         <result property="businessName" column="business_name"/>
@@ -33,7 +35,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         cb.alias_name,
         cb.alias_name,
         cb.business_name,
         cb.business_name,
         cpt.project_name,
         cpt.project_name,
-        cet.education_name
+        cet.education_name,
+        cpt.education_id as education_type_id,
+        cb.project_id
         FROM
         FROM
         order_business_config obc
         order_business_config obc
         LEFT JOIN course_business cb ON obc.business_id = cb.id
         LEFT JOIN course_business cb ON obc.business_id = cb.id

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

@@ -984,4 +984,13 @@
           and cgu.period_status in (0,-1)
           and cgu.period_status in (0,-1)
           AND og.service_end_time BETWEEN ( unix_timestamp(now()) + 864000) AND (unix_timestamp(now()) + 950400)
           AND og.service_end_time BETWEEN ( unix_timestamp(now()) + 864000) AND (unix_timestamp(now()) + 950400)
     </select>
     </select>
+
+    <select id="listByNotTenant"  resultType="com.zhongzheng.modules.order.domain.OrderGoods">
+        SELECT * FROM order_goods WHERE `status` = 1 AND ((course_num IS NULL OR course_num = 0)OR(exam_num IS NULL OR exam_num = 0)) AND refund_status != 2 AND pay_status != 1
+    </select>
+
+    <update id="upBatchNumById" parameterType="com.zhongzheng.modules.order.domain.OrderGoods">
+        UPDATE order_goods SET course_num = #{courseNum}, exam_num = #{examNum} WHERE order_goods_id = #{orderGoodsId}
+    </update>
+
 </mapper>
 </mapper>

+ 0 - 1
zhongzheng-system/src/main/resources/mapper/modules/order/OrderHandleMapper.xml

@@ -172,7 +172,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             oh.pay_status,
             oh.pay_status,
         </if>
         </if>
         og.goods_id
         og.goods_id
-
         FROM
         FROM
         `order` o
         `order` o
         <if test="handleOrderSn != null">
         <if test="handleOrderSn != null">

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

@@ -27,7 +27,7 @@
         <result property="preLoginIp" column="pre_login_ip"/>
         <result property="preLoginIp" column="pre_login_ip"/>
         <result property="preLoginDate" column="pre_login_date"/>
         <result property="preLoginDate" column="pre_login_date"/>
         <result property="pwdTime" column="pwd_time"/>
         <result property="pwdTime" column="pwd_time"/>
-        <result property="idCard" column="id_card" typeHandler="com.zhongzheng.common.type.EncryptHandler"/>
+        <result property="idCard" column="id_card"/>
         <result property="sellerId" column="seller_id"/>
         <result property="sellerId" column="seller_id"/>
         <association property="dept" column="dept_id" javaType="SysDept" resultMap="deptResult"/>
         <association property="dept" column="dept_id" javaType="SysDept" resultMap="deptResult"/>
         <collection property="roles" column="user_id" select="findRolesList" javaType="java.util.List" />
         <collection property="roles" column="user_id" select="findRolesList" javaType="java.util.List" />