he2802 3 éve
szülő
commit
2e9970a49a
18 módosított fájl, 567 hozzáadás és 7 törlés
  1. 77 0
      zhongzheng-api/src/main/java/com/zhongzheng/controller/user/UserConfirmInfoController.java
  2. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/base/service/IUserProfileService.java
  3. 64 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/base/service/impl/UserProfileServiceImpl.java
  4. 2 2
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/CourseModuleAddBo.java
  5. 2 2
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/CourseModuleEditBo.java
  6. 2 2
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/CourseModuleQueryBo.java
  7. 8 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseModuleServiceImpl.java
  8. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/vo/CourseModuleVo.java
  9. 36 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserConfirmInfoAddBo.java
  10. 41 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserConfirmInfoEditBo.java
  11. 48 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserConfirmInfoQueryBo.java
  12. 41 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/domain/UserConfirmInfo.java
  13. 14 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/mapper/UserConfirmInfoMapper.java
  14. 54 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/IUserConfirmInfoService.java
  15. 111 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserConfirmInfoServiceImpl.java
  16. 39 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/UserConfirmInfoVo.java
  17. 7 1
      zhongzheng-system/src/main/resources/mapper/modules/course/CourseModuleMapper.xml
  18. 17 0
      zhongzheng-system/src/main/resources/mapper/modules/user/UserConfirmInfoMapper.xml

+ 77 - 0
zhongzheng-api/src/main/java/com/zhongzheng/controller/user/UserConfirmInfoController.java

@@ -0,0 +1,77 @@
+package com.zhongzheng.controller.user;
+
+import java.util.List;
+import java.util.Arrays;
+
+import com.zhongzheng.common.utils.ServletUtils;
+import com.zhongzheng.framework.web.service.WxTokenService;
+import com.zhongzheng.modules.user.bo.UserConfirmInfoAddBo;
+import com.zhongzheng.modules.user.bo.UserConfirmInfoEditBo;
+import com.zhongzheng.modules.user.bo.UserConfirmInfoQueryBo;
+import com.zhongzheng.modules.user.domain.UserConfirmInfo;
+import com.zhongzheng.modules.user.entity.ClientLoginUser;
+import com.zhongzheng.modules.user.service.IUserConfirmInfoService;
+import com.zhongzheng.modules.user.vo.UserConfirmInfoVo;
+import lombok.RequiredArgsConstructor;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.zhongzheng.common.annotation.Log;
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.enums.BusinessType;
+import com.zhongzheng.common.utils.poi.ExcelUtil;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+/**
+ * 用户确定课程学习信息Controller
+ *
+ * @author hjl
+ * @date 2022-05-23
+ */
+@Api(value = "用户确定课程学习信息控制器", tags = {"用户确定课程学习信息管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/user/confirm/info")
+public class UserConfirmInfoController extends BaseController {
+
+    private final IUserConfirmInfoService iUserConfirmInfoService;
+
+    private final WxTokenService wxTokenService;
+    /**
+     * 获取用户确定课程学习信息详细信息
+     */
+    @ApiOperation("获取用户确定课程学习信息详细信息")
+    @PreAuthorize("@ss.hasPermi('system:info:query')")
+    @GetMapping("/detail")
+    public AjaxResult<UserConfirmInfo> getInfo(UserConfirmInfoQueryBo bo) {
+        ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
+        bo.setUserId(loginUser.getUser().getUserId());
+        return AjaxResult.success(iUserConfirmInfoService.queryByBo(bo));
+    }
+
+    /**
+     * 新增用户确定课程学习信息
+     */
+    @ApiOperation("新增用户确定课程学习信息")
+    @PreAuthorize("@ss.hasPermi('system:info:add')")
+    @Log(title = "用户确定课程学习信息", businessType = BusinessType.INSERT)
+    @PostMapping()
+    public AjaxResult<Void> add(@RequestBody UserConfirmInfoAddBo bo) {
+        ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
+        bo.setUserId(loginUser.getUser().getUserId());
+        return toAjax(iUserConfirmInfoService.insertByAddBo(bo) ? 1 : 0);
+    }
+
+
+
+}

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

@@ -59,6 +59,8 @@ public interface IUserProfileService extends IService<UserProfile> {
 
 	String addWord(UserProfileAddBo bo) throws IOException;
 
+	String addWordV2(UserProfileAddBo bo) throws IOException;
+
 	String testWord(UserProfileAddBo bo) throws IOException;
 
 	UserProfileVo getInfo(UserProfileQueryBo bo);

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

@@ -223,6 +223,70 @@ public class UserProfileServiceImpl extends ServiceImpl<UserProfileMapper, UserP
         return this.removeByIds(ids);
     }
 
+    @Override
+    public String addWordV2(UserProfileAddBo bo) throws IOException {
+        if(Validator.isEmpty(bo.getKeyValue())){
+            throw new CustomException("参数错误");
+        }
+        int imgIndex=(int)(Math.random() * 10 );
+        //第一种方式
+        Map<String, String> maps = JSONObject.parseObject(bo.getKeyValue(), Map.class);
+
+ /*       TemplateEngine engine = TemplateUtil.createEngine(new TemplateConfig("templates", TemplateConfig.ResourceMode.CLASSPATH));
+        Template template = engine.getTemplate("word.ftl");*/
+        //给模板绑定数据
+        Calendar rightNow = Calendar.getInstance();
+        Map<String, Object> bindingMap = new HashMap<>();
+        bindingMap.put("username", JSONObject.parseObject(String.valueOf(maps.get("name")), UserProfileFit.class).getValue());
+        bindingMap.put("s", JSONObject.parseObject(String.valueOf(maps.get("sex")), UserProfileFit.class).getValue());
+        bindingMap.put("post", JSONObject.parseObject(String.valueOf(maps.get("apply_post")), UserProfileFit.class).getValue());
+        bindingMap.put("idcard", JSONObject.parseObject(String.valueOf(maps.get("idcard")), UserProfileFit.class).getValue());
+        bindingMap.put("phone", JSONObject.parseObject(String.valueOf(maps.get("telphone")), UserProfileFit.class).getValue());
+        bindingMap.put("school", JSONObject.parseObject(String.valueOf(maps.get("school")), UserProfileFit.class).getValue());
+        bindingMap.put("edu", JSONObject.parseObject(String.valueOf(maps.get("education")), UserProfileFit.class).getValue());
+        bindingMap.put("major", JSONObject.parseObject(String.valueOf(maps.get("major")), UserProfileFit.class).getValue());
+        bindingMap.put("cname", JSONObject.parseObject(String.valueOf(maps.get("unit_contact")), UserProfileFit.class).getValue());
+        bindingMap.put("cphone", JSONObject.parseObject(String.valueOf(maps.get("unit_tel")), UserProfileFit.class).getValue());
+        bindingMap.put("image", ALIYUN_OSS_ENDPOINT + "/" + JSONObject.parseObject(String.valueOf(maps.get("commitment_electr_signature")), UserProfileFit.class).getValue());
+        bindingMap.put("y", Convert.toStr(rightNow.get(Calendar.YEAR)));
+        bindingMap.put("m", rightNow.get(Calendar.MONTH) + 1);
+        bindingMap.put("d", rightNow.get(Calendar.DAY_OF_MONTH));
+        bindingMap.put("time", JSONObject.parseObject(String.valueOf(maps.get("graduation_time")), UserProfileFit.class).getValue());
+        bindingMap.put("year", JSONObject.parseObject(String.valueOf(maps.get("working_years")), UserProfileFit.class).getValue());
+        File touch = FileUtil.touch(ZHONGZHENG_PROFILE + imgIndex+"word.html");
+        //默认freemake配置
+        Configuration configuration = new Configuration();
+        configuration.setDefaultEncoding("UTF-8");
+        configuration.setClassForTemplateLoading(this.getClass(), "/templates");
+        Template template = configuration.getTemplate("wordPhone.ftl");
+        Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(touch), "UTF-8"));
+        try {
+            //写入数据
+            template.process(bindingMap, out);
+            out.flush();
+            out.close();
+
+        } catch (TemplateException | freemarker.template.TemplateException e) {
+            e.printStackTrace();
+        }
+        //将模板输出为图片
+        final Java2DRenderer renderer = new Java2DRenderer(touch, 1000, 1000);
+        final BufferedImage img = renderer.getImage();
+        final FSImageWriter imageWriter = new FSImageWriter();
+        imageWriter.setWriteCompressionQuality(1.0f);
+        imageWriter.write(img, ZHONGZHENG_PROFILE + imgIndex+ "wordJpg.jpg");//输出路径
+
+        OssRequest ossRequest = new OssRequest();
+        FileInputStream fileInputStream = new FileInputStream(ZHONGZHENG_PROFILE + imgIndex+ "wordJpg.jpg");
+        MultipartFile multipartFile = new MockMultipartFile(ZHONGZHENG_PROFILE + imgIndex+ "wordJpg.jpg", ZHONGZHENG_PROFILE+ imgIndex + "wordJpg.jpg",
+                ContentType.APPLICATION_OCTET_STREAM.toString(), fileInputStream);
+        ossRequest.setFile(multipartFile);
+        ossRequest.setImageStatus(6);
+        //上传阿里云
+        String upload = ossService.upload(ossRequest);
+        return upload;
+    }
+
     @Override
     public String addWord(UserProfileAddBo bo) throws IOException {
         UserProfileQueryBo userProfileQueryBo = new UserProfileQueryBo();

+ 2 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/CourseModuleAddBo.java

@@ -47,8 +47,8 @@ public class CourseModuleAddBo {
     private List<CourseModuleBusinessAddBo> businessList;
     @ApiModelProperty("章id列表")
     private List<CourseModuleChapterListAddBo> chapterIdList;
-    /** 题卷类型 1试卷 2章卷 3模块卷 */
-    @ApiModelProperty("题卷类型 1试卷 2章卷 3模块卷")
+    /** 题卷类型 1模块卷 2章卷 3试卷 */
+    @ApiModelProperty("题卷类型 1模块卷 2章卷 3试卷")
     private Integer examType;
     /** 赠送卷ID */
     @ApiModelProperty("赠送卷ID")

+ 2 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/CourseModuleEditBo.java

@@ -56,8 +56,8 @@ public class CourseModuleEditBo {
     @ApiModelProperty("章id列表")
     private List<CourseModuleChapterListAddBo> chapterIdList;
 
-    /** 题卷类型 1试卷 2章卷 3模块卷 */
-    @ApiModelProperty("题卷类型 1试卷 2章卷 3模块卷")
+    /** 题卷类型 1模块卷 2章卷 3试卷 */
+    @ApiModelProperty("题卷类型 1模块卷 2章卷 3试卷")
     private Integer examType;
     /** 赠送卷ID */
     @ApiModelProperty("赠送卷ID")

+ 2 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/CourseModuleQueryBo.java

@@ -66,8 +66,8 @@ public class CourseModuleQueryBo extends BaseEntity {
 	/** 科目id */
 	@ApiModelProperty("科目id")
 	private Long subjectId;
-	/** 题卷类型 1试卷 2章卷 3模块卷 */
-	@ApiModelProperty("题卷类型 1试卷 2章卷 3模块卷")
+	/** 题卷类型 1模块卷 2章卷 3试卷 */
+	@ApiModelProperty("题卷类型 1模块卷 2章卷 3试卷")
 	private Integer examType;
 	/** 赠送卷ID */
 	@ApiModelProperty("赠送卷ID")

+ 8 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseModuleServiceImpl.java

@@ -3,6 +3,7 @@ package com.zhongzheng.modules.course.service.impl;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.lang.Validator;
 import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.common.utils.ServletUtils;
@@ -127,6 +128,13 @@ public class CourseModuleServiceImpl extends ServiceImpl<CourseModuleMapper, Cou
         CourseModule update = BeanUtil.toBean(bo, CourseModule.class);
         validEntityBeforeSave(update);
         update.setUpdateTime(DateUtils.getNowTime());
+        if(Validator.isEmpty(bo.getFreeExamId())){
+            LambdaUpdateWrapper<CourseModule> objectLambdaUpdateWrapper = Wrappers.lambdaUpdate();
+            objectLambdaUpdateWrapper.eq(CourseModule::getModuleId, bo.getModuleId());
+            objectLambdaUpdateWrapper.set(CourseModule::getFreeExamId, null);
+            objectLambdaUpdateWrapper.set(CourseModule::getUpdateTime,DateUtils.getNowTime());
+            this.update(null, objectLambdaUpdateWrapper);
+        }
         if(bo.getBusinessList()!= null){
             iCourseModuleBusinessService.remove(new LambdaQueryWrapper<CourseModuleBusiness>().eq(CourseModuleBusiness::getModuleId, bo.getModuleId()));
             for(int i=0;i<bo.getBusinessList().size();i++){

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

@@ -80,4 +80,6 @@ public class CourseModuleVo {
 	@Excel(name = "赠送卷ID")
 	@ApiModelProperty("赠送卷ID")
 	private Long freeExamId;
+	@ApiModelProperty("赠送卷名称")
+	private String freeExamName;
 }

+ 36 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserConfirmInfoAddBo.java

@@ -0,0 +1,36 @@
+package com.zhongzheng.modules.user.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 用户确定课程学习信息添加对象 user_confirm_info
+ *
+ * @author hjl
+ * @date 2022-05-23
+ */
+@Data
+@ApiModel("用户确定课程学习信息添加对象")
+public class UserConfirmInfoAddBo {
+
+    /** 用户ID */
+    @ApiModelProperty("用户ID")
+    private Long userId;
+    /** 订单商品ID */
+    @ApiModelProperty("订单商品ID")
+    private Long orderGoodsId;
+    /** 添加时间 */
+    @ApiModelProperty("添加时间")
+    private Long createTime;
+    /** 修改时间 */
+    @ApiModelProperty("修改时间")
+    private Long updateTime;
+    /** 确认JSON信息 */
+    @ApiModelProperty("确认JSON信息")
+    private String infoJson;
+}

+ 41 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserConfirmInfoEditBo.java

@@ -0,0 +1,41 @@
+package com.zhongzheng.modules.user.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import java.util.Date;
+
+
+/**
+ * 用户确定课程学习信息编辑对象 user_confirm_info
+ *
+ * @author hjl
+ * @date 2022-05-23
+ */
+@Data
+@ApiModel("用户确定课程学习信息编辑对象")
+public class UserConfirmInfoEditBo {
+
+    /** $column.columnComment */
+    @ApiModelProperty("$column.columnComment")
+    private Long id;
+
+    /** 用户ID */
+    @ApiModelProperty("用户ID")
+    private Long userId;
+
+    /** 订单商品ID */
+    @ApiModelProperty("订单商品ID")
+    private Long orderGoodsId;
+
+    /** 修改时间 */
+    @ApiModelProperty("修改时间")
+    private Long updateTime;
+
+
+    /** 确认JSON信息 */
+    @ApiModelProperty("确认JSON信息")
+    private String infoJson;
+
+}

+ 48 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserConfirmInfoQueryBo.java

@@ -0,0 +1,48 @@
+package com.zhongzheng.modules.user.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+import java.util.Map;
+import java.util.HashMap;
+
+import com.zhongzheng.common.core.domain.BaseEntity;
+
+/**
+ * 用户确定课程学习信息分页查询对象 user_confirm_info
+ *
+ * @author hjl
+ * @date 2022-05-23
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("用户确定课程学习信息分页查询对象")
+public class UserConfirmInfoQueryBo extends BaseEntity {
+
+	/** 分页大小 */
+	@ApiModelProperty("分页大小")
+	private Integer pageSize;
+	/** 当前页数 */
+	@ApiModelProperty("当前页数")
+	private Integer pageNum;
+	/** 排序列 */
+	@ApiModelProperty("排序列")
+	private String orderByColumn;
+	/** 排序的方向desc或者asc */
+	@ApiModelProperty(value = "排序的方向", example = "asc,desc")
+	private String isAsc;
+
+
+	/** 用户ID */
+	@ApiModelProperty("用户ID")
+	private Long userId;
+	/** 订单商品ID */
+	@ApiModelProperty("订单商品ID")
+	private Long orderGoodsId;
+	/** 确认JSON信息 */
+	@ApiModelProperty("确认JSON信息")
+	private String infoJson;
+}

+ 41 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/domain/UserConfirmInfo.java

@@ -0,0 +1,41 @@
+package com.zhongzheng.modules.user.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.zhongzheng.common.annotation.Excel;
+
+/**
+ * 用户确定课程学习信息对象 user_confirm_info
+ *
+ * @author hjl
+ * @date 2022-05-23
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("user_confirm_info")
+public class UserConfirmInfo implements Serializable {
+
+private static final long serialVersionUID=1L;
+
+    /** $column.columnComment */
+    @TableId(value = "id")
+    private Long id;
+    /** 用户ID */
+    private Long userId;
+    /** 订单商品ID */
+    private Long orderGoodsId;
+    /** 添加时间 */
+    @TableField(fill = FieldFill.INSERT)
+    private Long createTime;
+    /** 修改时间 */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Long updateTime;
+    /** 确认JSON信息 */
+    private String infoJson;
+}

+ 14 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/mapper/UserConfirmInfoMapper.java

@@ -0,0 +1,14 @@
+package com.zhongzheng.modules.user.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zhongzheng.modules.user.domain.UserConfirmInfo;
+
+/**
+ * 用户确定课程学习信息Mapper接口
+ *
+ * @author hjl
+ * @date 2022-05-23
+ */
+public interface UserConfirmInfoMapper extends BaseMapper<UserConfirmInfo> {
+
+}

+ 54 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/IUserConfirmInfoService.java

@@ -0,0 +1,54 @@
+package com.zhongzheng.modules.user.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhongzheng.modules.user.bo.UserConfirmInfoAddBo;
+import com.zhongzheng.modules.user.bo.UserConfirmInfoEditBo;
+import com.zhongzheng.modules.user.bo.UserConfirmInfoQueryBo;
+import com.zhongzheng.modules.user.domain.UserConfirmInfo;
+import com.zhongzheng.modules.user.vo.UserConfirmInfoVo;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 用户确定课程学习信息Service接口
+ *
+ * @author hjl
+ * @date 2022-05-23
+ */
+public interface IUserConfirmInfoService extends IService<UserConfirmInfo> {
+	/**
+	 * 查询单个
+	 * @return
+	 */
+	UserConfirmInfoVo queryById(Long id);
+
+	UserConfirmInfo queryByBo(UserConfirmInfoQueryBo bo);
+
+	/**
+	 * 查询列表
+	 */
+	List<UserConfirmInfoVo> queryList(UserConfirmInfoQueryBo bo);
+
+	/**
+	 * 根据新增业务对象插入用户确定课程学习信息
+	 * @param bo 用户确定课程学习信息新增业务对象
+	 * @return
+	 */
+	Boolean insertByAddBo(UserConfirmInfoAddBo bo);
+
+	/**
+	 * 根据编辑业务对象修改用户确定课程学习信息
+	 * @param bo 用户确定课程学习信息编辑业务对象
+	 * @return
+	 */
+	Boolean updateByEditBo(UserConfirmInfoEditBo bo);
+
+	/**
+	 * 校验并删除数据
+	 * @param ids 主键集合
+	 * @param isValid 是否校验,true-删除前校验,false-不校验
+	 * @return
+	 */
+	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 111 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserConfirmInfoServiceImpl.java

@@ -0,0 +1,111 @@
+package com.zhongzheng.modules.user.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.StrUtil;
+import com.zhongzheng.common.utils.DateUtils;
+import com.zhongzheng.modules.user.bo.UserConfirmInfoAddBo;
+import com.zhongzheng.modules.user.bo.UserConfirmInfoEditBo;
+import com.zhongzheng.modules.user.bo.UserConfirmInfoQueryBo;
+import com.zhongzheng.modules.user.domain.User;
+import com.zhongzheng.modules.user.domain.UserConfirmInfo;
+import com.zhongzheng.modules.user.mapper.UserConfirmInfoMapper;
+import com.zhongzheng.modules.user.service.IUserConfirmInfoService;
+import com.zhongzheng.modules.user.vo.UserConfirmInfoVo;
+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 java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 用户确定课程学习信息Service业务层处理
+ *
+ * @author hjl
+ * @date 2022-05-23
+ */
+@Service
+public class UserConfirmInfoServiceImpl extends ServiceImpl<UserConfirmInfoMapper, UserConfirmInfo> implements IUserConfirmInfoService {
+
+    @Override
+    public UserConfirmInfoVo queryById(Long id){
+        UserConfirmInfo db = this.baseMapper.selectById(id);
+        return BeanUtil.toBean(db, UserConfirmInfoVo.class);
+    }
+
+    @Override
+    public UserConfirmInfo queryByBo(UserConfirmInfoQueryBo bo) {
+        UserConfirmInfo info = getOne(new LambdaQueryWrapper<UserConfirmInfo>()
+                .eq(UserConfirmInfo::getUserId, bo.getUserId())
+                .eq(UserConfirmInfo::getOrderGoodsId, bo.getOrderGoodsId())
+                .last("limit 1"));
+        return info;
+    }
+
+    @Override
+    public List<UserConfirmInfoVo> queryList(UserConfirmInfoQueryBo bo) {
+        LambdaQueryWrapper<UserConfirmInfo> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getUserId() != null, UserConfirmInfo::getUserId, bo.getUserId());
+        lqw.eq(bo.getOrderGoodsId() != null, UserConfirmInfo::getOrderGoodsId, bo.getOrderGoodsId());
+        lqw.eq(StrUtil.isNotBlank(bo.getInfoJson()), UserConfirmInfo::getInfoJson, bo.getInfoJson());
+        return entity2Vo(this.list(lqw));
+    }
+
+    /**
+    * 实体类转化成视图对象
+    *
+    * @param collection 实体类集合
+    * @return
+    */
+    private List<UserConfirmInfoVo> entity2Vo(Collection<UserConfirmInfo> collection) {
+        List<UserConfirmInfoVo> voList = collection.stream()
+                .map(any -> BeanUtil.toBean(any, UserConfirmInfoVo.class))
+                .collect(Collectors.toList());
+        if (collection instanceof Page) {
+            Page<UserConfirmInfo> page = (Page<UserConfirmInfo>)collection;
+            Page<UserConfirmInfoVo> pageVo = new Page<>();
+            BeanUtil.copyProperties(page,pageVo);
+            pageVo.addAll(voList);
+            voList = pageVo;
+        }
+        return voList;
+    }
+
+    @Override
+    public Boolean insertByAddBo(UserConfirmInfoAddBo bo) {
+        UserConfirmInfo add = BeanUtil.toBean(bo, UserConfirmInfo.class);
+        validEntityBeforeSave(add);
+        add.setCreateTime(DateUtils.getNowTime());
+        add.setUpdateTime(DateUtils.getNowTime());
+        return this.save(add);
+    }
+
+    @Override
+    public Boolean updateByEditBo(UserConfirmInfoEditBo bo) {
+        UserConfirmInfo update = BeanUtil.toBean(bo, UserConfirmInfo.class);
+        validEntityBeforeSave(update);
+        update.setUpdateTime(DateUtils.getNowTime());
+        return this.updateById(update);
+    }
+
+    /**
+     * 保存前的数据校验
+     *
+     * @param entity 实体类数据
+     */
+    private void validEntityBeforeSave(UserConfirmInfo entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return this.removeByIds(ids);
+    }
+}

+ 39 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/UserConfirmInfoVo.java

@@ -0,0 +1,39 @@
+package com.zhongzheng.modules.user.vo;
+
+import com.zhongzheng.common.annotation.Excel;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 用户确定课程学习信息视图对象 mall_package
+ *
+ * @author hjl
+ * @date 2022-05-23
+ */
+@Data
+@ApiModel("用户确定课程学习信息视图对象")
+public class UserConfirmInfoVo {
+	private static final long serialVersionUID = 1L;
+
+	/** $pkColumn.columnComment */
+	@ApiModelProperty("$pkColumn.columnComment")
+	private Long id;
+
+	/** 用户ID */
+	@Excel(name = "用户ID")
+	@ApiModelProperty("用户ID")
+	private Long userId;
+	/** 订单商品ID */
+	@Excel(name = "订单商品ID")
+	@ApiModelProperty("订单商品ID")
+	private Long orderGoodsId;
+	/** 确认JSON信息 */
+	@Excel(name = "确认JSON信息")
+	@ApiModelProperty("确认JSON信息")
+	private String infoJson;
+}

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

@@ -33,6 +33,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="updateTime" column="update_time"/>
         <result property="examType" column="exam_type"/>
         <result property="freeExamId" column="free_exam_id"/>
+        <result property="freeExamName" column="free_exam_name"/>
         <collection property="businessList" column="module_id" select="findBusinessList" />
         <collection property="courseList" column="module_id" select="findCourseList"/>
     </resultMap>
@@ -96,7 +97,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         cm.*,
         count( ccs.section_id ) AS section_num,
         count( DISTINCT cc.chapter_id ) AS chapter_num,
-        COALESCE ( SUM( cs.duration_time ), 0 ) AS duration_time
+        COALESCE ( SUM( cs.duration_time ), 0 ) AS duration_time,
+        CASE cm.exam_type
+        WHEN 1 THEN (SELECT module_name FROM question_module WHERE module_exam_id = cm.free_exam_id)
+        WHEN 2 THEN (SELECT `name` FROM question_chapter WHERE chapter_exam_id = cm.free_exam_id)
+        WHEN 3 THEN (SELECT exam_name FROM exam WHERE exam_id = cm.free_exam_id)
+        ELSE (NULL) END as free_exam_name
         FROM
         course_module cm
         LEFT JOIN course_module_chapter cmc ON cm.module_id = cmc.module_id

+ 17 - 0
zhongzheng-system/src/main/resources/mapper/modules/user/UserConfirmInfoMapper.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zhongzheng.modules.user.mapper.UserConfirmInfoMapper">
+
+    <resultMap type="com.zhongzheng.modules.user.domain.UserConfirmInfo" id="UserConfirmInfoResult">
+        <result property="id" column="id"/>
+        <result property="userId" column="user_id"/>
+        <result property="orderGoodsId" column="order_goods_id"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="infoJson" column="info_json"/>
+    </resultMap>
+
+
+</mapper>