yangdamao 1 день назад
Родитель
Сommit
9fd4ddac21
15 измененных файлов с 477 добавлено и 65 удалено
  1. 6 0
      zhongzheng-api/src/main/java/com/zhongzheng/controller/order/OrderController.java
  2. 311 0
      zhongzheng-common/src/main/java/com/zhongzheng/common/utils/IdCardUtils.java
  3. 11 0
      zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/UserServiceImpl.java
  4. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseBusiness.java
  5. 27 27
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseServiceImpl.java
  6. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/bo/ClassGradeUserQueryBo.java
  7. 34 34
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeUserServiceImpl.java
  8. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/IOrderGoodsService.java
  9. 12 4
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderGoodsRefundServiceImpl.java
  10. 12 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderGoodsServiceImpl.java
  11. 23 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java
  12. 6 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/vo/OrderGoodsRefundVo.java
  13. 6 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/vo/OrderListVo.java
  14. 4 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/UserVo.java
  15. 19 0
      zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeUserMapper.xml

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

@@ -319,4 +319,10 @@ public class OrderController extends BaseController {
         return AjaxResult.success(iOrderGoodsService.engineerAdvancedCheck(bo,loginUser.getUser().getUserId()));
     }
 
+    @ApiOperation("屏幕检测")
+    @GetMapping("/screen/check/{orderGoodsId}")
+    public AjaxResult<Boolean> screenCheck(@PathVariable("orderGoodsId") Long orderGoodsId) {
+        return AjaxResult.success(iOrderGoodsService.screenCheck(orderGoodsId));
+    }
+
 }

+ 311 - 0
zhongzheng-common/src/main/java/com/zhongzheng/common/utils/IdCardUtils.java

@@ -0,0 +1,311 @@
+package com.zhongzheng.common.utils;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.regex.Pattern;
+
+
+public class IdCardUtils {
+
+    // 省份代码映射
+    private static final Map<String, String> PROVINCE_CODES = new HashMap<>();
+    // 加权因子
+    private static final int[] WEIGHT_FACTOR = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
+    // 校验码对应值
+    private static final char[] CHECK_CODE = {'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'};
+
+    static {
+        // 初始化省份代码
+        PROVINCE_CODES.put("11", "北京");
+        PROVINCE_CODES.put("12", "天津");
+        PROVINCE_CODES.put("13", "河北");
+        PROVINCE_CODES.put("14", "山西");
+        PROVINCE_CODES.put("15", "内蒙古");
+        PROVINCE_CODES.put("21", "辽宁");
+        PROVINCE_CODES.put("22", "吉林");
+        PROVINCE_CODES.put("23", "黑龙江");
+        PROVINCE_CODES.put("31", "上海");
+        PROVINCE_CODES.put("32", "江苏");
+        PROVINCE_CODES.put("33", "浙江");
+        PROVINCE_CODES.put("34", "安徽");
+        PROVINCE_CODES.put("35", "福建");
+        PROVINCE_CODES.put("36", "江西");
+        PROVINCE_CODES.put("37", "山东");
+        PROVINCE_CODES.put("41", "河南");
+        PROVINCE_CODES.put("42", "湖北");
+        PROVINCE_CODES.put("43", "湖南");
+        PROVINCE_CODES.put("44", "广东");
+        PROVINCE_CODES.put("45", "广西");
+        PROVINCE_CODES.put("46", "海南");
+        PROVINCE_CODES.put("50", "重庆");
+        PROVINCE_CODES.put("51", "四川");
+        PROVINCE_CODES.put("52", "贵州");
+        PROVINCE_CODES.put("53", "云南");
+        PROVINCE_CODES.put("54", "西藏");
+        PROVINCE_CODES.put("61", "陕西");
+        PROVINCE_CODES.put("62", "甘肃");
+        PROVINCE_CODES.put("63", "青海");
+        PROVINCE_CODES.put("64", "宁夏");
+        PROVINCE_CODES.put("65", "新疆");
+        PROVINCE_CODES.put("71", "台湾");
+        PROVINCE_CODES.put("81", "香港");
+        PROVINCE_CODES.put("82", "澳门");
+        PROVINCE_CODES.put("91", "国外");
+    }
+
+    /**
+     * 身份证脱敏
+     * @param idCard 身份证号码
+     * @return 脱敏后的身份证(如:510***********1234)
+     */
+    public static String maskIdCard(String idCard) {
+        if (idCard == null || idCard.trim().isEmpty()) {
+            return "";
+        }
+
+        String trimmedIdCard = idCard.trim();
+        int length = trimmedIdCard.length();
+
+        if (length == 15) {
+            // 15位身份证:显示前6位和后3位
+            return trimmedIdCard.substring(0, 6) + "******" + trimmedIdCard.substring(12);
+        } else if (length == 18) {
+            // 18位身份证:显示前6位和后4位
+            return trimmedIdCard.substring(0, 6) + "********" + trimmedIdCard.substring(14);
+        } else {
+            // 其他情况:保留前后各4位
+            if (length <= 8) {
+                return trimmedIdCard; // 太短不脱敏
+            }
+            int keep = Math.min(4, length / 4);
+
+            // JDK 8 兼容方式生成星号
+            int starsCount = length - 2 * keep;
+            StringBuilder starsBuilder = new StringBuilder();
+            for (int i = 0; i < starsCount; i++) {
+                starsBuilder.append("*");
+            }
+            String stars = starsBuilder.toString();
+
+            return trimmedIdCard.substring(0, keep)
+                    + stars
+                    + trimmedIdCard.substring(length - keep);
+        }
+    }
+
+    /**
+     * 验证身份证号码是否有效
+     * @param idCard 身份证号码
+     * @return true-有效,false-无效
+     */
+    public static boolean isValidIdCard(String idCard) {
+        if (idCard == null || idCard.trim().isEmpty()) {
+            return false;
+        }
+
+        String trimmedIdCard = idCard.trim().toUpperCase();
+        int length = trimmedIdCard.length();
+
+        // 长度校验
+        if (length != 15 && length != 18) {
+            return false;
+        }
+
+        // 15位身份证校验
+        if (length == 15) {
+            return isValid15IdCard(trimmedIdCard);
+        }
+
+        // 18位身份证校验
+        return isValid18IdCard(trimmedIdCard);
+    }
+
+    /**
+     * 验证15位身份证
+     */
+    private static boolean isValid15IdCard(String idCard) {
+        // 正则校验:全部为数字
+        if (!Pattern.matches("^[0-9]{15}$", idCard)) {
+            return false;
+        }
+
+        // 省份校验
+        String provinceCode = idCard.substring(0, 2);
+        if (!PROVINCE_CODES.containsKey(provinceCode)) {
+            return false;
+        }
+
+        // 出生日期校验
+        String birthday = "19" + idCard.substring(6, 12);
+        return isValidBirthday(birthday);
+    }
+
+    /**
+     * 验证18位身份证
+     */
+    private static boolean isValid18IdCard(String idCard) {
+        // 正则校验:前17位为数字,最后一位为数字或X
+        if (!Pattern.matches("^[0-9]{17}[0-9X]$", idCard)) {
+            return false;
+        }
+
+        // 省份校验
+        String provinceCode = idCard.substring(0, 2);
+        if (!PROVINCE_CODES.containsKey(provinceCode)) {
+            return false;
+        }
+
+        // 出生日期校验
+        String birthday = idCard.substring(6, 14);
+        if (!isValidBirthday(birthday)) {
+            return false;
+        }
+
+        // 校验码校验
+        return checkCodeValid(idCard);
+    }
+
+    /**
+     * 校验码验证
+     */
+    private static boolean checkCodeValid(String idCard) {
+        if (idCard.length() != 18) {
+            return false;
+        }
+
+        char[] chars = idCard.toCharArray();
+        int sum = 0;
+
+        // 计算加权和
+        for (int i = 0; i < 17; i++) {
+            sum += (chars[i] - '0') * WEIGHT_FACTOR[i];
+        }
+
+        // 计算校验码
+        char checkCode = CHECK_CODE[sum % 11];
+
+        // 校验码比对(不区分大小写)
+        return Character.toUpperCase(chars[17]) == checkCode;
+    }
+
+    /**
+     * 验证出生日期是否有效
+     */
+    private static boolean isValidBirthday(String birthday) {
+        if (birthday == null || birthday.length() != 8) {
+            return false;
+        }
+
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
+        sdf.setLenient(false); // 严格模式
+
+        try {
+            Date birthDate = sdf.parse(birthday);
+            Date now = new Date();
+
+            // 出生日期不能晚于当前日期
+            if (birthDate.after(now)) {
+                return false;
+            }
+
+            // 校验日期合理性(如月份1-12,日根据月份不同)
+            Calendar cal = Calendar.getInstance();
+            cal.setTime(birthDate);
+
+            int year = cal.get(Calendar.YEAR);
+            int month = cal.get(Calendar.MONTH) + 1;
+            int day = cal.get(Calendar.DAY_OF_MONTH);
+
+            // 简单校验(实际可以使用更精确的校验)
+            return year >= 1900 && month >= 1 && month <= 12 && day >= 1 && day <= 31;
+
+        } catch (ParseException e) {
+            return false;
+        }
+    }
+
+    /**
+     * 从身份证获取出生日期
+     */
+    public static Date getBirthdayFromIdCard(String idCard) {
+        if (!isValidIdCard(idCard)) {
+            return null;
+        }
+
+        String birthdayStr;
+        if (idCard.length() == 15) {
+            birthdayStr = "19" + idCard.substring(6, 12);
+        } else {
+            birthdayStr = idCard.substring(6, 14);
+        }
+
+        try {
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
+            return sdf.parse(birthdayStr);
+        } catch (ParseException e) {
+            return null;
+        }
+    }
+
+    /**
+     * 从身份证获取性别
+     * @param idCard 身份证
+     * @return 1-男,0-女,-1-未知
+     */
+    public static int getGenderFromIdCard(String idCard) {
+        if (!isValidIdCard(idCard)) {
+            return -1;
+        }
+
+        String genderStr;
+        if (idCard.length() == 15) {
+            genderStr = idCard.substring(14, 15); // 第15位
+        } else {
+            genderStr = idCard.substring(16, 17); // 第17位
+        }
+
+        int genderNum = Integer.parseInt(genderStr);
+        return genderNum % 2 == 1 ? 1 : 0; // 奇数男,偶数女
+    }
+
+    /**
+     * 获取省份信息
+     */
+    public static String getProvinceFromIdCard(String idCard) {
+        if (!isValidIdCard(idCard)) {
+            return "未知";
+        }
+
+        String provinceCode = idCard.substring(0, 2);
+        return PROVINCE_CODES.getOrDefault(provinceCode, "未知");
+    }
+
+    /**
+     * 15位身份证转18位
+     */
+    public static String convert15To18(String idCard15) {
+        if (!isValid15IdCard(idCard15)) {
+            return null;
+        }
+
+        // 在第6位后插入19
+        String idCard17 = idCard15.substring(0, 6) + "19" + idCard15.substring(6);
+
+        // 计算校验码
+        char[] chars = idCard17.toCharArray();
+        int sum = 0;
+
+        for (int i = 0; i < 17; i++) {
+            sum += (chars[i] - '0') * WEIGHT_FACTOR[i];
+        }
+
+        char checkCode = CHECK_CODE[sum % 11];
+
+        return idCard17 + checkCode;
+    }
+
+}

+ 11 - 0
zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/UserServiceImpl.java

@@ -273,6 +273,17 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
             userVo.setClassGradeUserGoodsVoList(classGradeUserGoodsVos);
             userVo.setOrderNum(userVo.getGoodsCourseNum());
 
+
+            if (net.polyv.common.v1.util.StringUtils.isNotBlank(userVo.getIdCard())){
+                //身份证号脱敏
+                userVo.setIdCardStr(IdCardUtils.maskIdCard(userVo.getIdCard()));
+            }
+
+            if (net.polyv.common.v1.util.StringUtils.isNotBlank(userVo.getTelphone())){
+                //手机号脱敏
+                userVo.setTelphoneStr(TelPhoneUtils.hideTelPhone(userVo.getTelphone()));
+
+            }
            /* UserVisitLog userVisitLog = iUserVisitLogService.getOneNoTenant(userVo.getUserId());
             if(Validator.isNotEmpty(userVisitLog)){
                 userVo.setLastVisitTime(userVisitLog.getCreateTime());

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseBusiness.java

@@ -82,6 +82,8 @@ private static final long serialVersionUID=1L;
     private Integer buySign;
     /** 是否延时生成证书: 1是 0否 */
     private Integer certificateSign;
+    /** 开启屏幕检测:0否 1是 */
+    private Long screenCheckSign;
     private Long tenantId;
 
     @TableField(exist = false)

+ 27 - 27
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseServiceImpl.java

@@ -1238,33 +1238,33 @@ public class CourseServiceImpl extends ServiceImpl<CourseMapper, Course> impleme
         if (ObjectUtils.isNull(user)){
             return null;
         }
-        String idCard = EncryptHandler.decrypt(user.getIdCard());
-        String telPhone = EncryptHandler.decrypt(user.getTelphone());
-        Map<String, String> params = new HashMap<>();
-        Long nowTime = DateUtils.getNowTime();
-        String sign = ToolsUtils.EncoderByMd5(idCard+telPhone+nowTime + "pubilc2022");
-        params.put("stamp", nowTime.toString());
-        params.put("sign", sign);
-        params.put("idNum", idCard);
-        params.put("passwordSign", "2");
-        params.put("telphone",telPhone);
-        String respone = "";
-        try {
-            respone = HttpUtils.postFormBody(OLD_GOODS, params);
-            if (!respone.contains("\"code\":200")) {
-                throw new CustomException("旧系统用户商品接口错误");
-            }
-            JSONObject jsonObject = JSONObject.parseObject(respone);
-            Object data = jsonObject.get("data");
-            if (ObjectUtils.isNotNull(data)){
-                vo = JSONObject.parseObject(JSONObject.toJSONString(data), UserNewGoodsVo.class);
-            }else {
-                return null;
-            }
-        }catch (Exception e){
-            e.printStackTrace();
-            throw new CustomException("旧系统用户商品接口错误");
-        }
+//        String idCard = EncryptHandler.decrypt(user.getIdCard());
+//        String telPhone = EncryptHandler.decrypt(user.getTelphone());
+//        Map<String, String> params = new HashMap<>();
+//        Long nowTime = DateUtils.getNowTime();
+//        String sign = ToolsUtils.EncoderByMd5(idCard+telPhone+nowTime + "pubilc2022");
+//        params.put("stamp", nowTime.toString());
+//        params.put("sign", sign);
+//        params.put("idNum", idCard);
+//        params.put("passwordSign", "2");
+//        params.put("telphone",telPhone);
+//        String respone = "";
+//        try {
+//            respone = HttpUtils.postFormBody(OLD_GOODS, params);
+//            if (!respone.contains("\"code\":200")) {
+//                throw new CustomException("旧系统用户商品接口错误");
+//            }
+//            JSONObject jsonObject = JSONObject.parseObject(respone);
+//            Object data = jsonObject.get("data");
+//            if (ObjectUtils.isNotNull(data)){
+//                vo = JSONObject.parseObject(JSONObject.toJSONString(data), UserNewGoodsVo.class);
+//            }else {
+//                return null;
+//            }
+//        }catch (Exception e){
+//            e.printStackTrace();
+//            throw new CustomException("旧系统用户商品接口错误");
+//        }
         return vo;
     }
 

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/bo/ClassGradeUserQueryBo.java

@@ -331,4 +331,6 @@ public class ClassGradeUserQueryBo extends BaseEntity {
 
 	private Long educationId;
 
+	private String sectionName;
+
 }

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

@@ -4120,40 +4120,40 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
     public Long checkFinishRequiredCourse(ClassGradeUserQueryBo bo) {
         //查询旧系统是否有学习
         String businessName = iGoodsService.getGoodsBusinessName(bo.getGoodsId());
-        if (businessName.contains("继续教育二级建造师") || businessName.contains("继续教育二级造价师")){
-            OrderGoods orderGoods = baseMapper.getOrderGoods(bo.getUserId(),bo.getGoodsId());
-            if (ObjectUtils.isNotNull(orderGoods)){
-                ClassGradeUser classGradeUser = getOne(new LambdaQueryWrapper<ClassGradeUser>()
-                        .eq(ClassGradeUser::getOrderGoodsId, orderGoods.getOrderGoodsId())
-                        .eq(ClassGradeUser::getUserId, bo.getUserId())
-                        .eq(ClassGradeUser::getStatus, 1)
-                        .last("limit 1"));
-                if (ObjectUtils.isNotNull(classGradeUser) && ObjectUtils.isNotNull(classGradeUser.getPeriodWaitTime())){
-                    //重修
-                    return 0L;
-                }
-            }
-            User user = iUserService.getById(bo.getUserId());
-            Integer type = "继续教育二级建造师".equals(businessName)?1:2;
-            String param = String.format("idnum=%s&type=%s",EncryptHandler.decrypt(user.getIdCard()),type);
-            String respone = "";
-            try {
-                respone = HttpUtils.sendGet(OLD_STUDY_CHECK, param);
-                JSONObject jsonObject1 = JSONObject.parseObject(respone);
-                UserStudyTimeVo timeVo = JSONArray.parseObject(jsonObject1.get("data").toString(), UserStudyTimeVo.class);
-                if (ObjectUtils.isNotNull(timeVo) && ObjectUtils.isNotNull(timeVo.getStudyStartTime()) && timeVo.getStudyFlag()){
-                    //旧系统正在学习中
-                    throw new CustomException("请把旧云学堂课程学习完成,再学习另一个课程");
-                }
-            } catch (Exception e) {
-                throw new CustomException(e.getMessage());
-            }
-            List<Long> goodsIds = baseMapper.getFinishRequiredCourse(bo);
-            if(Validator.isNotEmpty(goodsIds)&&goodsIds.size()>0){
-                Goods goods = iGoodsService.getById(goodsIds.get(0));
-                throw new CustomException("请按顺序学习,把【"+goods.getGoodsName()+"】学习完成,再学习另一个课程");
-            }
-        }
+//        if (businessName.contains("继续教育二级建造师") || businessName.contains("继续教育二级造价师")){
+//            OrderGoods orderGoods = baseMapper.getOrderGoods(bo.getUserId(),bo.getGoodsId());
+//            if (ObjectUtils.isNotNull(orderGoods)){
+//                ClassGradeUser classGradeUser = getOne(new LambdaQueryWrapper<ClassGradeUser>()
+//                        .eq(ClassGradeUser::getOrderGoodsId, orderGoods.getOrderGoodsId())
+//                        .eq(ClassGradeUser::getUserId, bo.getUserId())
+//                        .eq(ClassGradeUser::getStatus, 1)
+//                        .last("limit 1"));
+//                if (ObjectUtils.isNotNull(classGradeUser) && ObjectUtils.isNotNull(classGradeUser.getPeriodWaitTime())){
+//                    //重修
+//                    return 0L;
+//                }
+//            }
+//            User user = iUserService.getById(bo.getUserId());
+//            Integer type = "继续教育二级建造师".equals(businessName)?1:2;
+//            String param = String.format("idnum=%s&type=%s",EncryptHandler.decrypt(user.getIdCard()),type);
+//            String respone = "";
+//            try {
+//                respone = HttpUtils.sendGet(OLD_STUDY_CHECK, param);
+//                JSONObject jsonObject1 = JSONObject.parseObject(respone);
+//                UserStudyTimeVo timeVo = JSONArray.parseObject(jsonObject1.get("data").toString(), UserStudyTimeVo.class);
+//                if (ObjectUtils.isNotNull(timeVo) && ObjectUtils.isNotNull(timeVo.getStudyStartTime()) && timeVo.getStudyFlag()){
+//                    //旧系统正在学习中
+//                    throw new CustomException("请把旧云学堂课程学习完成,再学习另一个课程");
+//                }
+//            } catch (Exception e) {
+//                throw new CustomException(e.getMessage());
+//            }
+//            List<Long> goodsIds = baseMapper.getFinishRequiredCourse(bo);
+//            if(Validator.isNotEmpty(goodsIds)&&goodsIds.size()>0){
+//                Goods goods = iGoodsService.getById(goodsIds.get(0));
+//                throw new CustomException("请按顺序学习,把【"+goods.getGoodsName()+"】学习完成,再学习另一个课程");
+//            }
+//        }
         return 0L;
     }
 

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

@@ -159,4 +159,6 @@ public interface IOrderGoodsService extends IService<OrderGoods> {
     AssistantResultVo engineerIntermediateCheck(EngineerCheckBo bo, Long userId);
 
     AssistantResultVo engineerAdvancedCheck(EngineerCheckBo bo, Long userId);
+
+    Boolean screenCheck(Long orderGoodsId);
 }

+ 12 - 4
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderGoodsRefundServiceImpl.java

@@ -17,10 +17,7 @@ import com.zhongzheng.common.core.domain.entity.SysUser;
 import com.zhongzheng.common.core.domain.model.LoginUser;
 import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.type.EncryptHandler;
-import com.zhongzheng.common.utils.DateUtils;
-import com.zhongzheng.common.utils.SecurityUtils;
-import com.zhongzheng.common.utils.ServletUtils;
-import com.zhongzheng.common.utils.ToolsUtils;
+import com.zhongzheng.common.utils.*;
 import com.zhongzheng.common.utils.http.HttpUtils;
 import com.zhongzheng.modules.activity.domain.ActivityOrder;
 import com.zhongzheng.modules.activity.service.IActivityOrderService;
@@ -716,6 +713,17 @@ public class OrderGoodsRefundServiceImpl extends ServiceImpl<OrderGoodsRefundMap
             OrderGoodsRefundVo vo = orderGoodsRefundVos.stream().findFirst().orElse(null);
             vo.setGoodsNum(orderGoodsRefundVos.size());
             BeanUtil.copyProperties(vo,item);
+
+            if (StringUtils.isNotBlank(vo.getIdCard())){
+                //身份证号脱敏
+                vo.setIdCardStr(IdCardUtils.maskIdCard(vo.getIdCard()));
+            }
+
+            if (StringUtils.isNotBlank(vo.getTelphone())){
+                //手机号脱敏
+                vo.setTelphoneStr(TelPhoneUtils.hideTelPhone(vo.getTelphone()));
+
+            }
         });
         return orderSns;
     }

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

@@ -1792,6 +1792,18 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
         return resultVo;
     }
 
+    @Override
+    public Boolean screenCheck(Long orderGoodsId) {
+        OrderGoods orderGoods = getById(orderGoodsId);
+        if (ObjectUtils.isNull(orderGoods)){
+            throw new CustomException("订单信息获取有误!");
+        }
+        Goods goods = iGoodsService.getById(orderGoods.getGoodsId());
+        CourseBusiness courseBusiness = iCourseBusinessService.getById(goods.getBusinessId());
+
+        return courseBusiness.getScreenCheckSign() == 1;
+    }
+
     private static boolean isFullYear(String dateString, String pattern,Integer year) {
         try {
             SimpleDateFormat sdf = new SimpleDateFormat(pattern);

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

@@ -285,6 +285,18 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                 vo.setOrderGoodsStatus(1);
             }
 
+            if (StringUtils.isNotBlank(vo.getIdCard())){
+                //身份证号脱敏
+                vo.setIdCardStr(IdCardUtils.maskIdCard(vo.getIdCard()));
+            }
+
+            if (StringUtils.isNotBlank(vo.getTelphone())){
+                //手机号脱敏
+                vo.setTelphoneStr(TelPhoneUtils.hideTelPhone(vo.getTelphone()));
+
+            }
+
+
             if (ObjectUtils.isNotNull(vo.getArtisanDataId())){
                 //技工订单
                 ArtisanData artisanData = iArtisanDataService.getById(vo.getArtisanDataId());
@@ -3791,6 +3803,17 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
             } else if (vo.getGoodsPayStatus() > 1) {
                 vo.setOrderGoodsStatus(1);
             }
+
+            if (StringUtils.isNotBlank(vo.getIdCard())){
+                //身份证号脱敏
+                vo.setIdCardStr(IdCardUtils.maskIdCard(vo.getIdCard()));
+            }
+
+            if (StringUtils.isNotBlank(vo.getTelphone())){
+                //手机号脱敏
+                vo.setTelphoneStr(TelPhoneUtils.hideTelPhone(vo.getTelphone()));
+
+            }
         }
         return orderListVos;
     }

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

@@ -138,4 +138,10 @@ public class OrderGoodsRefundVo {
 	private Long refundTime;
 	@ApiModelProperty("商品数量")
 	private Integer goodsNum;
+
+	@ApiModelProperty("身份证脱敏字段")
+	private String idCardStr;
+
+	@ApiModelProperty("手机号码脱敏字段")
+	private String telphoneStr;
 }

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

@@ -168,6 +168,9 @@ public class OrderListVo {
     @Excel(name = "身份证号")
     @ApiModelProperty("身份证号")
     private String idCard;
+
+    @ApiModelProperty("身份证脱敏字段")
+    private String idCardStr;
     /**
      * 手机号码
      */
@@ -175,6 +178,9 @@ public class OrderListVo {
     @ApiModelProperty("手机号码")
     private String telphone;
 
+    @ApiModelProperty("手机号码脱敏字段")
+    private String telphoneStr;
+
     @ApiModelProperty("公司名称")
     private String companyName;
 

+ 4 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/UserVo.java

@@ -52,6 +52,10 @@ public class UserVo {
 	@Excel(name = "身份证号")
 	@ApiModelProperty("身份证号")
 	private String idCard;
+	@ApiModelProperty("身份证脱敏字段")
+	private String idCardStr;
+	@ApiModelProperty("手机号码脱敏字段")
+	private String telphoneStr;
 	/** 手机号码 */
 	@Excel(name = "手机号码")
 	@ApiModelProperty("手机号码")

+ 19 - 0
zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeUserMapper.xml

@@ -573,6 +573,22 @@
         LEFT JOIN user_profile up on u.user_id =up.user_id and up.goods_id = og.goods_id and cgu.order_goods_id = up.order_goods_id and up.type_status=1 and up.current_status = 1
         LEFT JOIN goods g on og.goods_id = g.goods_id
         LEFT JOIN course_business cb ON g.business_id = cb.id
+        <if test="sectionName != null and sectionName != ''">
+            LEFT JOIN
+            (
+            SELECT
+            cs.section_id,
+            cs.`name`,
+            gc.goods_id
+            FROM
+            goods_course gc
+            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  cm.type = 1 AND cm.`status` = 1
+            ) a ON og.goods_id = a.goods_id
+        </if>
         /*     LEFT JOIN (SELECT
         COUNT( m.id ) AS exam_num,
         c.goods_id
@@ -585,6 +601,9 @@
         where 1=1
         and cgu.`status` =1
         and cb.`period_check_sign` = 1
+        <if test="sectionName != null and sectionName != ''">
+            a.`name` like concat('%', #{sectionName}, '%')
+        </if>
         <if test="periodPlush != null and periodPlush != ''">
             AND cgu.period_plush = #{periodPlush}
         </if>