yangdamao 2 年之前
父節點
當前提交
2f62067d80
共有 24 個文件被更改,包括 966 次插入268 次删除
  1. 24 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/common/CommonController.java
  2. 7 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/schedule/ScheduleController.java
  3. 93 6
      zhongzheng-common/src/main/java/com/zhongzheng/common/utils/DateUtils.java
  4. 1 0
      zhongzheng-framework/src/main/java/com/zhongzheng/framework/config/SecurityConfig.java
  5. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/mapper/CourseModuleChapterMapper.java
  6. 3 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseModuleChapterServiceImpl.java
  7. 21 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/bo/ExamApplyDetailBo.java
  8. 45 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/bo/ExamApplyResultBo.java
  9. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/domain/ExamSite.java
  10. 8 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/mapper/ExamApplyMapper.java
  11. 4 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/service/IExamApplyService.java
  12. 47 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/service/impl/ExamApplyServiceImpl.java
  13. 21 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/vo/ExamApplyDetailVo.java
  14. 24 3
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/impl/GoodsServiceImpl.java
  15. 11 10
      zhongzheng-system/src/main/java/com/zhongzheng/modules/inform/service/impl/InformServiceImpl.java
  16. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/schedule/service/IScheduleService.java
  17. 454 237
      zhongzheng-system/src/main/java/com/zhongzheng/modules/schedule/service/impl/ScheduleServiceImpl.java
  18. 19 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/service/impl/TopOldOrderServiceImpl.java
  19. 4 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/vo/TopOldOrderGoodsListVo.java
  20. 4 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserStudyRecordServiceImpl.java
  21. 70 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserSubscribeServiceImpl.java
  22. 1 1
      zhongzheng-system/src/main/resources/mapper/modules/course/CourseModuleChapterMapper.xml
  23. 34 0
      zhongzheng-system/src/main/resources/mapper/modules/exam/ExamApplyMapper.xml
  24. 65 9
      zhongzheng-system/src/main/resources/mapper/modules/user/UserStudyRecordMapper.xml

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

@@ -31,6 +31,10 @@ import com.zhongzheng.modules.distribution.service.IDistributionActivityGoodsSer
 import com.zhongzheng.modules.distribution.service.IDistributionCashWithdrawalService;
 import com.zhongzheng.modules.distribution.service.IDistributionSellerService;
 import com.zhongzheng.modules.distribution.vo.DistributionSellerVo;
+import com.zhongzheng.modules.exam.bo.ExamApplyDetailBo;
+import com.zhongzheng.modules.exam.bo.ExamApplyResultBo;
+import com.zhongzheng.modules.exam.service.IExamApplyService;
+import com.zhongzheng.modules.exam.vo.ExamApplyDetailVo;
 import com.zhongzheng.modules.goods.bo.AlikeGoodsBo;
 import com.zhongzheng.modules.goods.bo.GoodsQueryBo;
 import com.zhongzheng.modules.goods.bo.GoodsStudyUrlBo;
@@ -133,6 +137,8 @@ public class CommonController extends BaseController {
     @Autowired
     private IOrderGoodsRefundService iOrderGoodsRefundService;
     @Autowired
+    private IExamApplyService iExamApplyService;
+    @Autowired
     private IClassGradeUserService iClassGradeUserService;
 
     /**
@@ -253,6 +259,24 @@ public class CommonController extends BaseController {
         return AjaxResult.success(voList);
     }
 
+    @ApiOperation("七大员新考结果")
+    @PostMapping("common/apply/result")
+    public AjaxResult examApplyResult(@RequestBody ExamApplyResultBo bo) {
+        if (!ToolsUtils.checkSignFromOldSys(bo.getStamp().toString(), bo.getSign())) {
+            return AjaxResult.error("签名错误");
+        }
+        iExamApplyService.examApplyResult(bo);
+        return AjaxResult.success();
+    }
+
+
+    @ApiOperation("获取某场考试信息")
+    @PostMapping("common/apply/detail")
+    public AjaxResult examApplyDetail(@RequestBody ExamApplyDetailBo bo) {
+        List<ExamApplyDetailVo> voList = iExamApplyService.examApplyDetail(bo);                                                                                                                                                                                                                                                                                                examApplyDetail(bo);
+        return AjaxResult.success(voList);
+    }
+
     @ApiOperation("旧系统获取商品学习中心路径")
     @PostMapping("common/get/goods/studyUrl")
     public AjaxResult getGoodsStudyUrl(@RequestBody GoodsStudyUrlBo bo) {

+ 7 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/schedule/ScheduleController.java

@@ -430,4 +430,11 @@ public class ScheduleController extends BaseController {
         iScheduleService.distributionRebate();
         return AjaxResult.success();
     }
+
+    @ApiOperation("七大员考场创建")
+    @GetMapping("/examApply")
+    public AjaxResult createExamApply(){
+        iScheduleService.createExamApply();
+        return AjaxResult.success();
+    }
 }

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

@@ -7,12 +7,9 @@ import org.apache.commons.lang3.time.DateFormatUtils;
 import java.lang.management.ManagementFactory;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.time.LocalDateTime;
+import java.time.*;
 import java.time.format.DateTimeFormatter;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.*;
 
 /**
  * 时间工具类
@@ -123,6 +120,12 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
         return DateFormatUtils.format(date, "yyyy/MM/dd");
     }
 
+    public static Date timeToDate(Long times){
+        long t = times.longValue();
+        t = t * 1000;
+        return new Date(t);
+    }
+
     public static String timestampToDateFormatMonth(Long times){
         if(Validator.isEmpty(times)){
             return "";
@@ -153,6 +156,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
         return DateFormatUtils.format(date, patternStr);
     }
 
+
     /**
      * 将秒转为时分秒格式【01:01:01】
      * @param second 需要转化的秒数
@@ -405,8 +409,9 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
                 timeStr = "00:"+unitFormat(minute) + ":" + unitFormat(second);
             } else {
                 hour = minute / 60;
-                if (hour > 99)
+                if (hour > 99){
                     return "99:59:59";
+                }
                 minute = minute % 60;
                 second = time - hour * 3600 - minute * 60;
                 timeStr = unitFormat(hour) + ":" + unitFormat(minute) + ":" + unitFormat(second);
@@ -472,4 +477,86 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
                 return 7;
         }
     }
+
+
+    public static LocalDate[] getDateArray() {
+        // 创建一个长度为30的数组
+        LocalDate[] dates = new LocalDate[30];
+        // 获取今天的日期
+        LocalDate today = LocalDate.now();
+        // 用循环给数组赋值
+        for (int i = 0; i < dates.length; i++) {
+            // 用today.plusDays(i)得到第i天的日期
+            dates[i] = today.plusDays(i);
+        }
+        // 返回数组
+        return dates;
+    }
+
+    static List<String> holiday =new ArrayList<>();
+    static List<String> extraWorkDay =new ArrayList<>();
+    public static Boolean isWorkingDay(long time) {
+        LocalDateTime dateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(time), ZoneOffset.of("+8"));
+        String formatTime = dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+        initHoliday();
+        initExtraWorkDay();
+        //是否加班日
+        if(extraWorkDay.contains(formatTime)){
+            return true;
+        }
+        //是否节假日
+        if(holiday.contains(formatTime)){
+            return false;
+        }
+        //如果是1-5表示周一到周五  是工作日
+        DayOfWeek week = dateTime.getDayOfWeek();
+        if(week==DayOfWeek.SATURDAY||week==DayOfWeek.SUNDAY){
+            return false;
+        }
+        return true;
+
+    }
+
+    /**
+     *  初始化节假日
+     */
+    public static void initHoliday(){
+        holiday.add("2023-06-22");
+        holiday.add("2023-06-23");
+        holiday.add("2023-09-29");
+        holiday.add("2023-09-30");
+        holiday.add("2023-10-01");
+        holiday.add("2023-10-02");
+        holiday.add("2023-10-03");
+        holiday.add("2023-10-04");
+        holiday.add("2023-10-05");
+        holiday.add("2023-10-06");
+    }
+    /**
+     *  初始化额外加班日
+     */
+    public static void initExtraWorkDay(){
+        extraWorkDay.add("2023-06-25");
+        extraWorkDay.add("2023-10-07");
+        extraWorkDay.add("2023-10-08");
+    }
+
+
+    /**
+     * 指定时间往前或往后推n天
+     *
+     * @param dateTime 指定时间
+     * @param x 指定天数
+     * @return
+     */
+    public static Long getDayBefore(Long dateTime, int x) {
+        Calendar c = Calendar.getInstance();
+        Date date = new Date(dateTime*1000);
+        c.setTime(date);
+        int day = c.get(Calendar.DATE);
+        c.set(Calendar.DATE, day - x);    //往前推几天
+        //c.set(Calendar.DATE, day + x);  往后推几天
+        return c.getTime().getTime()/1000;
+    }
+
 }

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

@@ -139,6 +139,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
                 .antMatchers("/common/merge/file").anonymous()
                 .antMatchers("/common/get/goods").anonymous()
                 .antMatchers("/common/get/goods/studyUrl").anonymous()
+                .antMatchers("/common/apply/detail").anonymous()
                 .antMatchers("/common/platform/pay").anonymous()
                 .antMatchers("/common/platform/pay/handle").anonymous()
                 .antMatchers("/common/alike/goods").anonymous()

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/mapper/CourseModuleChapterMapper.java

@@ -19,7 +19,7 @@ import java.util.List;
  * @date 2021-10-11
  */
 public interface CourseModuleChapterMapper extends BaseMapper<CourseModuleChapter> {
-    List<CourseModuleChapterVo> getListById(Long id);
+    List<CourseModuleChapterVo> getListById(@Param("id") Long id,@Param("tenantId") Long tenantId);
 
     List<CourseUserModuleChapterVo> chapterList(CourseMenuQueryBo bo);
 

+ 3 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseModuleChapterServiceImpl.java

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.pagehelper.Page;
+import com.zhongzheng.common.utils.ServletUtils;
 import com.zhongzheng.modules.course.bo.CourseMenuQueryBo;
 import com.zhongzheng.modules.course.bo.CourseModuleChapterAddBo;
 import com.zhongzheng.modules.course.bo.CourseModuleChapterEditBo;
@@ -45,7 +46,8 @@ public class CourseModuleChapterServiceImpl extends ServiceImpl<CourseModuleChap
 
     @Override
     public List<CourseModuleChapterVo> getListById(Long id) {
-        return courseModuleChapterMapper.getListById(id);
+        String tenantId = ServletUtils.getRequest().getHeader("TenantId");
+        return courseModuleChapterMapper.getListById(id, Long.valueOf(tenantId));
     }
 
 

+ 21 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/bo/ExamApplyDetailBo.java

@@ -0,0 +1,21 @@
+package com.zhongzheng.modules.exam.bo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author yangdamao
+ * @date 2023年06月26日 15:13
+ */
+@Data
+public class ExamApplyDetailBo implements Serializable {
+
+    @ApiModelProperty("考试日期")
+    private Long examTime;
+    @ApiModelProperty("开始时间")
+    private String startTime;
+    @ApiModelProperty("结束时间")
+    private String endTime;
+}

+ 45 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/bo/ExamApplyResultBo.java

@@ -0,0 +1,45 @@
+package com.zhongzheng.modules.exam.bo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+
+/**
+ * @author yangdamao
+ * @date 2023年06月20日 11:22
+ */
+@Data
+public class ExamApplyResultBo implements Serializable {
+
+    @ApiModelProperty("考生姓名")
+    private String userName;
+
+    @ApiModelProperty("考生身份证号")
+    private String idCard;
+
+    @ApiModelProperty("联系方式")
+    private String telphone;
+
+    @ApiModelProperty("岗位名称")
+    private String majorName;
+
+    @ApiModelProperty("考试状态:0 待登记 1正常 2缺考 3作弊 4替考")
+    private Integer applyStatus;
+
+    @ApiModelProperty("成绩")
+    private Long score;
+
+    @ApiModelProperty("证书编码")
+    private String certificateCode;
+
+    @ApiModelProperty("当前时间戳")
+    @NotBlank(message = "当前时间戳不能为空")
+    private Long stamp;
+
+    @ApiModelProperty("签名")
+    @NotBlank(message = "签名不能为空")
+    private String sign;
+
+}

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/domain/ExamSite.java

@@ -44,4 +44,6 @@ private static final long serialVersionUID=1L;
     private Integer fromPlat;
     /** 智慧考场ID */
     private Long centerId;
+    /** 是否默认标签:1是 0否 */
+    private Integer sign;
 }

+ 8 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/mapper/ExamApplyMapper.java

@@ -1,11 +1,14 @@
 package com.zhongzheng.modules.exam.mapper;
 
+import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zhongzheng.modules.exam.bo.ExamApplyDetailBo;
 import com.zhongzheng.modules.exam.bo.ExamApplyQueryBo;
 import com.zhongzheng.modules.exam.bo.ExamApplyRoomQueryBo;
 import com.zhongzheng.modules.exam.bo.ExamNumberGoodsQueryBo;
 import com.zhongzheng.modules.exam.domain.ExamApply;
 import com.zhongzheng.modules.exam.vo.*;
+import com.zhongzheng.modules.user.domain.UserSubscribe;
 import com.zhongzheng.modules.user.vo.UserStudyRecordExport;
 import org.apache.ibatis.annotations.Param;
 
@@ -76,4 +79,9 @@ public interface ExamApplyMapper extends BaseMapper<ExamApply> {
     List<ExamApplyPlaceVo> getPlaceList(ExamApplyRoomQueryBo bo);
 
     List<UserStudyRecordExport> getUserStudyRecord(@Param("orderGoodsId") Long orderGoodsId,@Param("userId") Long userId);
+
+    UserSubscribe getExamApplyByUser(@Param("userId") Long userId,@Param("majorName") String majorName);
+
+    @InterceptorIgnore(tenantLine = "true")
+    List<ExamApplyDetailVo> getExamUserInfo(ExamApplyDetailBo bo);
 }

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

@@ -84,4 +84,8 @@ public interface IExamApplyService extends IService<ExamApply> {
     String getSendmailUrl(List<Long> ids);
 
     Boolean sendmail(ExamApplySendmailBo bo);
+
+	void examApplyResult(ExamApplyResultBo bo);
+
+    List<ExamApplyDetailVo> examApplyDetail(ExamApplyDetailBo bo);
 }

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

@@ -830,6 +830,53 @@ public class ExamApplyServiceImpl extends ServiceImpl<ExamApplyMapper, ExamApply
         return true;
     }
 
+    @Override
+    public void examApplyResult(ExamApplyResultBo bo) {
+        //获取用户
+        User user = iUserService.getOne(new LambdaQueryWrapper<User>().eq(User::getIdCard, EncryptHandler.encrypt(bo.getIdCard())).last("limit 1"));
+        if (ObjectUtils.isNull(user)){
+            throw new CustomException("用户信息获取有误!");
+        }
+        //获取考试
+        UserSubscribe subscribe = baseMapper.getExamApplyByUser(user.getUserId(),bo.getMajorName());
+        if (ObjectUtils.isNull(subscribe)){
+            throw new CustomException("用户考试信息获取有误!");
+        }
+
+        //考试状态
+        if (ObjectUtils.isNotNull(bo.getApplyStatus())){
+            subscribe.setSubscribeStatus(bo.getApplyStatus());
+        }
+
+        //成绩
+        if (ObjectUtils.isNotNull(bo.getScore())){
+            subscribe.setPerformance(bo.getScore());
+        }
+
+        //证书
+        if (StringUtils.isNotBlank(bo.getCertificateCode())){
+            subscribe.setCertificateCode(bo.getCertificateCode());
+        }
+        subscribe.setUpdateTime(DateUtils.getNowTime());
+        iUserSubscribeService.updateById(subscribe);
+    }
+
+    @Override
+    public List<ExamApplyDetailVo> examApplyDetail(ExamApplyDetailBo bo) {
+        List<ExamApplyDetailVo> vo = baseMapper.getExamUserInfo(bo);
+        if (CollectionUtils.isEmpty(vo)){
+            return new ArrayList<>();
+        }
+        //身份证处理
+        vo.forEach(item -> {
+            //身份证隐藏
+            String decrypt = EncryptHandler.decrypt(item.getIdCard());
+            String content = decrypt.replaceAll("(\\d{4})\\d{10}(\\w{4})", "$1****$2");
+            item.setIdCard(content);
+        });
+        return vo;
+    }
+
     private void userStudyRecord(String userPath, List<UserSubscribe> list) {
         Map<Long, List<UserSubscribe>> map = list.stream().collect(Collectors.groupingBy(UserSubscribe::getUserId));
         map.forEach((k, v) -> {

+ 21 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/vo/ExamApplyDetailVo.java

@@ -0,0 +1,21 @@
+package com.zhongzheng.modules.exam.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author yangdamao
+ * @date 2023年06月26日 15:13
+ */
+@Data
+public class ExamApplyDetailVo implements Serializable {
+
+    @ApiModelProperty("学员姓名")
+    private String userName;
+    @ApiModelProperty("座位号")
+    private Integer seatNum;
+    @ApiModelProperty("身份证")
+    private String idCard;
+}

+ 24 - 3
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/impl/GoodsServiceImpl.java

@@ -8,7 +8,6 @@ import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 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.CollectionUtils;
@@ -65,7 +64,6 @@ import com.zhongzheng.modules.polyv.service.IPolyvVideoService;
 import com.zhongzheng.modules.system.bo.GoodsCopyEnum;
 import com.zhongzheng.modules.system.domain.SysConfig;
 import com.zhongzheng.modules.system.domain.SysGoodsCopyRecord;
-import com.zhongzheng.modules.system.domain.SysTenant;
 import com.zhongzheng.modules.system.service.ISysConfigService;
 import com.zhongzheng.modules.system.service.ISysGoodsCopyRecordService;
 import com.zhongzheng.modules.system.service.ISysTenantService;
@@ -83,7 +81,6 @@ import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.io.IOException;
@@ -574,6 +571,30 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
             menuListAddBo.setMenuList(bo.getMenuList());
             iCourseMenuService.insertByGoodsAddBo(menuListAddBo);
         }
+
+        //七大员商品,默认绑定七大员学员资料模板
+        CourseEducationType educationType = iCourseEducationTypeService.getById(add.getEducationTypeId());
+        CourseBusiness business = iCourseBusinessService.getById(add.getBusinessId());
+        if (educationType.getEducationName().contains("考前培训") && business.getBusinessName().contains("七大员")){
+            //获取七大员学员资料模版
+            List<ProfileTpBusiness> tpBusinessList = iProfileTpBusinessService.list(new LambdaQueryWrapper<ProfileTpBusiness>()
+                    .eq(ProfileTpBusiness::getEducationTypeId, add.getEducationTypeId())
+                    .eq(ProfileTpBusiness::getProjectId, add.getProjectId())
+                    .eq(ProfileTpBusiness::getBusinessId, add.getBusinessId()));
+            if (CollectionUtils.isNotEmpty(tpBusinessList)){
+                List<ProfileTp> profileTpList = iProfileTpService.list(new LambdaQueryWrapper<ProfileTp>()
+                .in(ProfileTp::getProfileTpId,tpBusinessList.stream().map(ProfileTpBusiness::getProfileTpId).collect(Collectors.toList()))
+                .eq(ProfileTp::getStatus,1));
+                profileTpList.forEach(item -> {
+                    if (StringUtils.isNotBlank(item.getGoodsIds())){
+                        List<String> goodsIds = Arrays.asList(item.getGoodsIds().split(","));
+                        goodsIds.add(add.getGoodsId().toString());
+                        item.setGoodsIds(goodsIds.stream().collect(Collectors.joining(",")));
+                    }
+                });
+                iProfileTpService.updateBatchById(profileTpList);
+            }
+        }
         return result;
     }
 

+ 11 - 10
zhongzheng-system/src/main/java/com/zhongzheng/modules/inform/service/impl/InformServiceImpl.java

@@ -2,9 +2,14 @@ package com.zhongzheng.modules.inform.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.pagehelper.Page;
 import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.common.utils.SecurityUtils;
+import com.zhongzheng.common.utils.ServletUtils;
 import com.zhongzheng.modules.bank.bo.QuestionChapterExamQueryBo;
 import com.zhongzheng.modules.bank.bo.QuestionModuleChapterQueryBo;
 import com.zhongzheng.modules.bank.mapper.QuestionChapterExamMapper;
@@ -22,30 +27,25 @@ import com.zhongzheng.modules.goods.bo.GoodsQueryBo;
 import com.zhongzheng.modules.goods.mapper.GoodsAttachedMapper;
 import com.zhongzheng.modules.goods.vo.GoodsAttachedVo;
 import com.zhongzheng.modules.inform.bo.*;
+import com.zhongzheng.modules.inform.domain.Inform;
 import com.zhongzheng.modules.inform.domain.InformCourse;
 import com.zhongzheng.modules.inform.domain.InformExam;
 import com.zhongzheng.modules.inform.domain.InformUser;
+import com.zhongzheng.modules.inform.mapper.InformMapper;
 import com.zhongzheng.modules.inform.service.IInformCourseService;
 import com.zhongzheng.modules.inform.service.IInformExamService;
+import com.zhongzheng.modules.inform.service.IInformService;
 import com.zhongzheng.modules.inform.service.IInformUserService;
 import com.zhongzheng.modules.inform.vo.CourseInformVo;
 import com.zhongzheng.modules.inform.vo.GoodsInformAttachedVo;
 import com.zhongzheng.modules.inform.vo.InformUserVo;
+import com.zhongzheng.modules.inform.vo.InformVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.github.pagehelper.Page;
-import com.zhongzheng.modules.inform.domain.Inform;
-import com.zhongzheng.modules.inform.mapper.InformMapper;
-import com.zhongzheng.modules.inform.vo.InformVo;
-import com.zhongzheng.modules.inform.service.IInformService;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -303,6 +303,7 @@ public class InformServiceImpl extends ServiceImpl<InformMapper, Inform> impleme
 
     @Override
     public List<CourseInformVo> listGoodsCourse(GoodsQueryBo bo) {
+        String tenantId = ServletUtils.getRequest().getHeader("TenantId");
         List<CourseInformVo> courseInformVos = baseMapper.listGoodsCourse(bo);
         for (CourseInformVo courseInformVo : courseInformVos) {
             CourseMenuQueryBo courseMenuQueryBo = new CourseMenuQueryBo();
@@ -310,7 +311,7 @@ public class InformServiceImpl extends ServiceImpl<InformMapper, Inform> impleme
             List<CourseMenuVo> list = iCourseMenuService.selectList(courseMenuQueryBo);
             for (CourseMenuVo courseMenuVo : list) {
                 if (courseMenuVo.getType().equals(1)){
-                    List<CourseModuleChapterVo> listById = courseModuleChapterMapper.getListById(courseMenuVo.getMenuId());
+                    List<CourseModuleChapterVo> listById = courseModuleChapterMapper.getListById(courseMenuVo.getMenuId(),Long.valueOf(tenantId));
                     for (CourseModuleChapterVo courseModuleChapterVo : listById) {
                         courseModuleChapterVo.setCourseChapterSectionList(courseChapterSectionMapper.getInformById(courseModuleChapterVo.getChapterId()));
                     }

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

@@ -109,4 +109,7 @@ public interface IScheduleService extends IService<PolyvVideo> {
     void makeDivideSellerMonthBill();
 
     void makeDivideBrokerageMonthBill();
+
+    void createExamApply();
+
 }

文件差異過大導致無法顯示
+ 454 - 237
zhongzheng-system/src/main/java/com/zhongzheng/modules/schedule/service/impl/ScheduleServiceImpl.java


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

@@ -585,6 +585,7 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
         edit.setCreateTime(DateUtils.getNowTime());
         edit.setUpdateTime(DateUtils.getNowTime());
         edit.setCheckStatus(0);
+        edit.setRefundStatus(order.getRefundStatus());
         //未收账款
         if (ObjectUtils.isNull(bo.getOrderReceived()) || bo.getOrderReceived().compareTo(new BigDecimal("0.00")) == 0) {
             edit.setOrderUncollected(bo.getPayPrice());
@@ -1028,6 +1029,24 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
         for (TopOldOrderGoodsListVo item : list) {
             item.setUserCount(userCount);
             item.setCheckStatusStr(item.getCheckStr(item.getCheckStatus()));
+            //退款发起原因和审核意见
+            TopOldOrderRefund orderRefund = topOldOrderRefundService
+                    .getOne(new LambdaQueryWrapper<TopOldOrderRefund>()
+                    .eq(TopOldOrderRefund::getOrderGoodsId, item.getOrderGoodsId())
+                    .eq(TopOldOrderRefund::getStatus,1)
+                    .orderByDesc(TopOldOrderRefund::getCreateTime).last("limit 1"));
+            if (ObjectUtils.isNotNull(orderRefund)){
+                item.setRefundReason(orderRefund.getApplyReason());
+
+                List<TopOldOrderCheckLog> logList = topOldOrderCheckLogService
+                        .list(new LambdaQueryWrapper<TopOldOrderCheckLog>()
+                        .eq(TopOldOrderCheckLog::getRefundSn, orderRefund.getRefundSn())
+                        .eq(TopOldOrderCheckLog::getStatus, 1));
+                if (CollectionUtils.isNotEmpty(logList)){
+                    String collect = logList.stream().map(TopOldOrderCheckLog::getCheckReason).collect(Collectors.joining(","));
+                    item.setCheckReason(collect);
+                }
+            }
         }
         return list;
     }

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

@@ -75,6 +75,10 @@ public class TopOldOrderGoodsListVo {
 	private Integer userCount;
 	@ApiModelProperty("学员状态:0待审核,1已通过,2未通过,3已撤销,-1已取消")
 	private Integer checkStatus;
+	@ApiModelProperty("退款申请原因")
+	private String refundReason;
+	@ApiModelProperty("审核意见")
+	private String checkReason;
 
 	private Long signId;
 

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

@@ -1486,6 +1486,10 @@ public class UserStudyRecordServiceImpl extends ServiceImpl<UserStudyRecordMappe
 
     @Override
     public List<SubjectStudyRecordVo> listSubject(SubjectStudyRecordQueryBo bo) {
+        String tenantId = ServletUtils.getRequest().getHeader("TenantId");
+        if (StringUtils.isNotBlank(tenantId)){
+            bo.setTenantId(Long.valueOf(tenantId));
+        }
         List<SubjectStudyRecordVo> subjectStudyRecordVos = baseMapper.listSubject(bo);
         return subjectStudyRecordVos;
     }

+ 70 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserSubscribeServiceImpl.java

@@ -32,8 +32,13 @@ import com.zhongzheng.modules.course.mapper.CourseMapper;
 import com.zhongzheng.modules.course.service.IMajorService;
 import com.zhongzheng.modules.exam.bo.ExamApplyQueryBo;
 import com.zhongzheng.modules.exam.bo.ExamApplySiteTimeJson;
+import com.zhongzheng.modules.exam.bo.ExamApplySiteTimeTwoAddBo;
+import com.zhongzheng.modules.exam.domain.ExamApplySite;
+import com.zhongzheng.modules.exam.domain.ExamApplySiteTime;
 import com.zhongzheng.modules.exam.mapper.ExamApplyMapper;
+import com.zhongzheng.modules.exam.service.IExamApplyService;
 import com.zhongzheng.modules.exam.service.IExamApplySiteService;
+import com.zhongzheng.modules.exam.service.IExamApplySiteTimeService;
 import com.zhongzheng.modules.exam.vo.ExamApplySiteTimeTwoVo;
 import com.zhongzheng.modules.exam.vo.ExamApplySiteVo;
 import com.zhongzheng.modules.exam.vo.ExamApplyVo;
@@ -112,6 +117,12 @@ public class UserSubscribeServiceImpl extends ServiceImpl<UserSubscribeMapper, U
     @Autowired
     private IExamApplySiteService iExamApplySiteService;
 
+    @Autowired
+    private IExamApplyService iExamApplyService;
+
+    @Autowired
+    private IExamApplySiteTimeService iExamApplySiteTimeService;
+
     @Autowired
     private IMajorService majorService;
 
@@ -2000,6 +2011,36 @@ public class UserSubscribeServiceImpl extends ServiceImpl<UserSubscribeMapper, U
         if (System.currentTimeMillis()/1000 > time){
             throw new CustomException("当前选择的考试时间已过期,请重新预约,选择未过期考试时间");
         }
+        //生成座位号
+        ExamApplySite applySite = iExamApplySiteService.getOne(new LambdaQueryWrapper<ExamApplySite>()
+                .eq(ExamApplySite::getApplyId, bo.getApplyId())
+                .eq(ExamApplySite::getSiteId, bo.getSiteId())
+                .last("limit 1"));
+        if (ObjectUtils.isNull(applySite)){
+            throw new CustomException("考试地点查询有误,请检查");
+        }
+        List<ExamApplySiteTime> siteTimeList = iExamApplySiteTimeService.list(new LambdaQueryWrapper<ExamApplySiteTime>()
+                .eq(ExamApplySiteTime::getApplyId, bo.getApplyId())
+                .eq(ExamApplySiteTime::getApplySiteId, applySite.getId())
+                .eq(ExamApplySiteTime::getExamTime, bo.getApplySiteExamTime()));
+        if (CollectionUtils.isEmpty(siteTimeList)){
+            throw new CustomException("考试时间查询有误,请检查");
+        }
+        ExamApplySiteTime examApplySiteTime = siteTimeList.stream().filter(item -> {
+            List<ExamApplySiteTimeTwoAddBo> siteTimeTwoAddBos = JSONArray.parseArray(item.getSiteTime(), ExamApplySiteTimeTwoAddBo.class);
+            ExamApplySiteTimeTwoAddBo twoAddBo = siteTimeTwoAddBos.get(0);
+            return twoAddBo.getStartTime().equals(bo.getApplySiteStartTime()) && twoAddBo.getEndTime().equals(bo.getApplySiteEndTime());
+        }).findFirst().orElse(null);
+        if (ObjectUtils.isNull(examApplySiteTime)){
+            throw new CustomException("预约考试时间不存在,请重新选择");
+        }
+        //考场人数
+        List<ExamApplySiteTimeTwoAddBo> siteTimeTwoAddBos = JSONArray.parseArray(examApplySiteTime.getSiteTime(), ExamApplySiteTimeTwoAddBo.class);
+        Long userNum = siteTimeTwoAddBos.get(0).getNum();
+
+        //生成座位号
+        Integer tNum = getSeatNumber(bo,userNum);
+        add.setSeatNumber(tNum.toString());
         //要求非必填考点
         if(Validator.isNotEmpty(bo.getApplySiteAddress())){
             ExamApplyQueryBo queryTimeBo = new ExamApplyQueryBo();
@@ -2052,6 +2093,35 @@ public class UserSubscribeServiceImpl extends ServiceImpl<UserSubscribeMapper, U
         return add.getSubscribeId();
     }
 
+    private Integer getSeatNumber(UserSubscribeAddBo bo,Long userNum) {
+        List<UserSubscribe> list = list(new LambdaQueryWrapper<UserSubscribe>().eq(UserSubscribe::getApplyId, bo.getApplyId())
+                .eq(UserSubscribe::getApplySiteStartTime, bo.getApplySiteStartTime())
+                .eq(UserSubscribe::getApplySiteEndTime, bo.getApplySiteEndTime())
+                .eq(UserSubscribe::getSubscribeStatus, 1)
+                .eq(UserSubscribe::getSiteId, bo.getSiteId()));
+        if (CollectionUtils.isEmpty(list)){
+            return 1;
+        }
+        if (list.size() >= userNum){
+            throw new CustomException("本场考试已预约满,请选择其他场次!");
+        }
+        if (list.stream().allMatch(x -> ObjectUtils.isNull(x.getSeatNumber()))){
+            return 1;
+        }
+        Integer num = 0;
+        randomNum(list,num);
+        return num;
+    }
+
+    private void randomNum(List<UserSubscribe> list, Integer num) {
+        Random random = new Random();
+        Integer tNum = 1 + random.nextInt(50);
+        if (list.stream().anyMatch(x -> Integer.parseInt(x.getSeatNumber()) == tNum)){
+            randomNum(list,num);
+        }
+        num = tNum;
+    }
+
     private String drawReport(String imageStr, UserSubscribeSignReportBo bo){
         Font font = new Font("宋体", Font.BOLD, 48);// 添加字体的属性设置 微软雅黑
         String imgName = null;

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

@@ -54,7 +54,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             cmc.id,
             cmc.module_id,
                (SELECT
-                    count(ccs.section_id) from course_chapter_section ccs where ccs.chapter_id = cc.chapter_id) as section_num
+                    count(ccs.section_id) from course_chapter_section ccs where ccs.chapter_id = cc.chapter_id AND ccs.tenant_id = #{tenantId}) as section_num
         FROM
             course_module_chapter cmc
                 LEFT JOIN course_chapter cc ON cmc.chapter_id = cc.chapter_id

+ 34 - 0
zhongzheng-system/src/main/resources/mapper/modules/exam/ExamApplyMapper.xml

@@ -523,4 +523,38 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             chapter_id,
             section_id
     </select>
+
+
+    <select id="getExamApplyByUser" parameterType="map" resultType="com.zhongzheng.modules.user.domain.UserSubscribe">
+        SELECT
+            *
+        FROM
+            user_subscribe us
+                LEFT JOIN goods g ON us.goods_id = g.goods_id
+                LEFT JOIN major m ON g.major_id = m.id
+        WHERE
+            us.user_id = #{userId}
+          AND INSTR( m.category_name, #{majorName} ) > 0
+          AND us.subscribe_status = 1
+        ORDER BY
+            us.create_time DESC
+            LIMIT 1
+    </select>
+
+    <select id="getExamUserInfo" parameterType="com.zhongzheng.modules.exam.bo.ExamApplyDetailBo" resultType="com.zhongzheng.modules.exam.vo.ExamApplyDetailVo">
+        SELECT
+            us.seat_number as seatNum,
+            u.realname as userName,
+            u.id_card as idCard
+        FROM
+            user_subscribe us
+                LEFT JOIN `user` u ON us.user_id = u.user_id
+                AND u.tenant_id = 867735392558919680
+        WHERE
+            us.subscribe_status = 1
+          AND us.apply_site_exam_time = #{examTime}
+          AND us.apply_site_start_time = #{startTime}
+          AND us.apply_site_end_time = #{endTime}
+          AND us.tenant_id = 867735392558919680
+    </select>
 </mapper>

+ 65 - 9
zhongzheng-system/src/main/resources/mapper/modules/user/UserStudyRecordMapper.xml

@@ -265,18 +265,61 @@
         r.subject_id,
         r.course_id,
         r.course_name,
-        (SELECT subject_name FROM course_subject s where s.id = r.subject_id) as subject_name,
-        (CASE WHEN (SELECT COUNT(id) FROM course_menu m where m.course_id = r.course_id and m.type in (1,2,3))> 0 THEN
+        (SELECT subject_name FROM course_subject s where s.id = r.subject_id
+        <if test="tenantId != null and tenantId !=''">
+            and s.tenant_id=#{tenantId}
+        </if>
+            ) as subject_name,
+        (CASE WHEN (SELECT COUNT(id) FROM course_menu m where m.course_id = r.course_id and m.type in (1,2,3)
+        <if test="tenantId != null and tenantId !=''">
+            and m.tenant_id=#{tenantId}
+        </if>)> 0 THEN
         '1' ELSE '0' END) as begin_status,
-        (SELECT COUNT(id) FROM course_menu m where m.course_id = r.course_id and m.type in (1)) as module_num,
+        (SELECT COUNT(id) FROM course_menu m where m.course_id = r.course_id and m.type in (1)
+        <if test="tenantId != null and tenantId !=''">
+            and m.tenant_id=#{tenantId}
+        </if>) as module_num,
         (SELECT COUNT(id)+(SELECT COUNT(p.id) FROM course_module_chapter p LEFT JOIN course_menu m on m.menu_id =
-        p.module_id where m.course_id = r.course_id and m.type in (1)) FROM course_menu m where m.course_id = r.course_id
+        p.module_id
+        <if test="tenantId != null and tenantId !=''">
+            and m.tenant_id=#{tenantId}
+        </if>
+        where m.course_id = r.course_id and m.type in (1)
+        <if test="tenantId != null and tenantId !=''">
+            and p.tenant_id=#{tenantId}
+        </if>) FROM course_menu m where m.course_id = r.course_id
+        <if test="tenantId != null and tenantId !=''">
+            and m.tenant_id=#{tenantId}
+        </if>
         and m.type in (2)) as chapter_num,
         (SELECT COUNT(id)+(SELECT COUNT(n.id) FROM course_chapter_section n LEFT JOIN course_module_chapter p on
-        n.chapter_id = p.chapter_id LEFT JOIN course_menu m on m.menu_id = p.module_id where m.course_id = r.course_id
-        and m.type in (1))+(SELECT COUNT(n.id) FROM course_chapter_section n LEFT JOIN course_menu m on m.menu_id =
-        n.chapter_id where m.course_id = r.course_id and m.type in (2)) FROM course_menu m where m.course_id =
-        r.course_id and m.type in (3)) as section_num,
+        n.chapter_id = p.chapter_id
+        <if test="tenantId != null and tenantId !=''">
+            and p.tenant_id=#{tenantId}
+        </if>
+            LEFT JOIN course_menu m on m.menu_id = p.module_id
+        <if test="tenantId != null and tenantId !=''">
+            and m.tenant_id=#{tenantId}
+        </if>
+        where m.course_id = r.course_id
+        and m.type in (1)
+        <if test="tenantId != null and tenantId !=''">
+            and n.tenant_id=#{tenantId}
+        </if>
+            )+(SELECT COUNT(n.id) FROM course_chapter_section n LEFT JOIN course_menu m on m.menu_id =
+        n.chapter_id
+        <if test="tenantId != null and tenantId !=''">
+            and m.tenant_id=#{tenantId}
+        </if>
+            where m.course_id = r.course_id and m.type in (2)
+        <if test="tenantId != null and tenantId !=''">
+            and n.tenant_id=#{tenantId}
+        </if>) FROM course_menu m where m.course_id =
+        r.course_id and m.type in (3)
+        <if test="tenantId != null and tenantId !=''">
+            and m.tenant_id=#{tenantId}
+        </if>
+            ) as section_num,
         (select COUNT(DISTINCT course_id,module_id,chapter_id,section_id) FROM user_study_record c where 1=1
         AND c.course_id = r.course_id
         and c.current_status=1
@@ -286,6 +329,9 @@
         <if test="orderGoodsId != null and orderGoodsId !=''">
             and c.order_goods_id=#{orderGoodsId}
         </if>
+        <if test="tenantId != null and tenantId !=''">
+            and c.tenant_id=#{tenantId}
+        </if>
         and c.user_id=#{userId} and c.status = 1 and c.goods_id = #{goodsId}) as record_num,
         (SELECT IFNULL(SUM(cs.duration_time),0) from (select DISTINCT c.section_id,c.course_id FROM user_study_record c where 1=1
         and c.current_status=1
@@ -295,10 +341,20 @@
         <if test="orderGoodsId != null and orderGoodsId !=''">
             and c.order_goods_id=#{orderGoodsId}
         </if>
-        and c.user_id=#{userId} and c.status = 1 and c.goods_id = #{goodsId})cc LEFT JOIN  course_section cs on cc.section_id = cs.section_id WHERE  cc.course_id = r.course_id) as record_time
+        <if test="tenantId != null and tenantId !=''">
+            and c.tenant_id=#{tenantId}
+        </if>
+        and c.user_id=#{userId} and c.status = 1 and c.goods_id = #{goodsId})cc LEFT JOIN  course_section cs on cc.section_id = cs.section_id
+        <if test="tenantId != null and tenantId !=''">
+            and cs.tenant_id=#{tenantId}
+        </if>
+        WHERE  cc.course_id = r.course_id) as record_time
         FROM
         course r
         LEFT JOIN goods_course c ON c.course_id = r.course_id
+        <if test="tenantId != null and tenantId !=''">
+            and c.tenant_id=#{tenantId}
+        </if>
         where 1=1
         <if test="goodsId != null and goodsId !=''">
             and c.goods_id =#{goodsId}

部分文件因文件數量過多而無法顯示