he2802 3 år sedan
förälder
incheckning
b8970684f8

+ 91 - 0
zhongzheng-api/src/main/java/com/zhongzheng/controller/base/LockController.java

@@ -0,0 +1,91 @@
+package com.zhongzheng.controller.base;
+
+import com.zhongzheng.common.annotation.Log;
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import com.zhongzheng.common.core.redis.RedisCache;
+import com.zhongzheng.common.enums.BusinessType;
+import com.zhongzheng.common.utils.SecurityUtils;
+import com.zhongzheng.common.utils.ServletUtils;
+import com.zhongzheng.framework.web.service.WxTokenService;
+import com.zhongzheng.modules.base.bo.ActionLockQueryBo;
+import com.zhongzheng.modules.base.bo.ApplyAreasQueryBo;
+import com.zhongzheng.modules.base.domain.ApplyAreas;
+import com.zhongzheng.modules.base.service.IApplyAreasService;
+import com.zhongzheng.modules.base.vo.ApplyAreasVo;
+import com.zhongzheng.modules.grade.bo.UserPeriodEditBo;
+import com.zhongzheng.modules.user.entity.ClientLoginUser;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * 锁定防多端Controller
+ *
+ * @author hjl
+ * @date 2021-10-08
+ */
+@Api(value = "锁定防多端", tags = {"锁定防多端"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/lock")
+public class LockController extends BaseController {
+
+    private final WxTokenService wxTokenService;
+
+    private final RedisCache redisCache;
+
+    /**
+     * 锁定学时审核页面
+     */
+    @ApiOperation("锁定行为")
+    @PreAuthorize("@ss.hasPermi('grade:grade:edit')")
+    @Log(title = "锁定行为", businessType = BusinessType.UPDATE)
+    @PostMapping("/lockAction")
+    public AjaxResult<Void> lockAction(@RequestBody ActionLockQueryBo bo) {
+        ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
+        String key = "LockAppAction_"+bo.getAction()+"-"+loginUser.getUser().getUserId();
+        redisCache.setCacheObject(key, SecurityUtils.getUsername(),13, TimeUnit.SECONDS);//13秒锁定
+        return AjaxResult.success();
+    }
+
+    /**
+     * 查看学时审核锁定状态
+     */
+    @ApiOperation("查看行为锁定状态")
+    @PreAuthorize("@ss.hasPermi('grade:grade:edit')")
+    @Log(title = "查看行为锁定状态", businessType = BusinessType.UPDATE)
+    @PostMapping("/lockStatus")
+    public AjaxResult<Void> lockStatus(@RequestBody ActionLockQueryBo bo) {
+        ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
+        String key = "LockAppAction_"+bo.getAction()+"-"+loginUser.getUser().getUserId();
+        String username = redisCache.getCacheObject(key);
+        if(SecurityUtils.getUsername().equals(username)){
+            username = null;//同个用户不返回
+        }
+        return AjaxResult.success(username);
+    }
+
+    /**
+     * 查看学时审核锁定状态
+     */
+    @ApiOperation("删除锁定状态")
+    @PreAuthorize("@ss.hasPermi('grade:grade:edit')")
+    @Log(title = "删除锁定状态", businessType = BusinessType.UPDATE)
+    @PostMapping("/delLock")
+    public AjaxResult delLock(@RequestBody ActionLockQueryBo bo) {
+        ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
+        String key = "LockAppAction_"+bo.getAction()+"-"+loginUser.getUser().getUserId();
+        return AjaxResult.success(redisCache.deleteObject(key));
+    }
+
+}

+ 1 - 1
zhongzheng-api/src/main/java/com/zhongzheng/core/config/WebSocketConfig.java

@@ -4,7 +4,7 @@ import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.web.socket.server.standard.ServerEndpointExporter;
 
-@Configuration
+//@Configuration
 public class WebSocketConfig {
     /**
      * ServerEndpointExporter 作用

+ 12 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/impl/ExamServiceImpl.java

@@ -17,7 +17,9 @@ import com.zhongzheng.modules.bank.vo.ExamVo;
 import com.zhongzheng.modules.bank.vo.QuestionChapterExamVo;
 import com.zhongzheng.modules.course.bo.CourseChapterSectionListAddBo;
 import com.zhongzheng.modules.course.domain.CourseChapterSection;
+import com.zhongzheng.modules.course.domain.CourseMenuExam;
 import com.zhongzheng.modules.course.service.ICourseChapterBusinessService;
+import com.zhongzheng.modules.course.service.ICourseMenuExamService;
 import com.zhongzheng.modules.goods.bo.GoodsAttachedQueryBo;
 import com.zhongzheng.modules.goods.domain.GoodsAttached;
 import com.zhongzheng.modules.goods.service.IGoodsAttachedService;
@@ -58,6 +60,9 @@ public class ExamServiceImpl extends ServiceImpl<ExamMapper, Exam> implements IE
     @Autowired
     private IQuestionChapterExamService iQuestionChapterExamService;
 
+    @Autowired
+    private ICourseMenuExamService iCourseMenuExamService;
+
     @Autowired
     private ExamMapper examMapper;
 
@@ -190,6 +195,13 @@ public class ExamServiceImpl extends ServiceImpl<ExamMapper, Exam> implements IE
      */
     private void validEntityBeforeSave(Exam entity){
         //TODO 做一些数据校验,如唯一约束
+        if(Validator.isNotEmpty(entity.getExamId())&&entity.getStatus()==-1){
+            //判断是否有被课程章关联,有不允许删除
+            CourseMenuExam menuExam = iCourseMenuExamService.getOne(new LambdaQueryWrapper<CourseMenuExam>().eq(CourseMenuExam::getExamId, entity.getExamId()).last("limit 1"));
+            if(Validator.isNotEmpty(menuExam)){
+                throw new CustomException("该卷已被课程章关联,无法删除");
+            }
+        }
         if(entity.getExamId()!=null&&entity.getPublishStatus()!=null&&entity.getPublishStatus()==0){
             GoodsAttached one = iGoodsAttachedService.getOne(new LambdaQueryWrapper<GoodsAttached>().eq(GoodsAttached::getMajorId, entity.getExamId()).eq(GoodsAttached::getType,3).last("limit 1"));
             if(one!=null){

+ 26 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/base/bo/ActionLockQueryBo.java

@@ -0,0 +1,26 @@
+package com.zhongzheng.modules.base.bo;
+
+import com.zhongzheng.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.List;
+
+/**
+ * 广告发布储存分页查询对象 activity_advertising
+ *
+ * @author hjl
+ * @date 2022-01-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("锁定板块对象")
+public class ActionLockQueryBo extends BaseEntity {
+
+
+	@ApiModelProperty("行为 bank 题库 ,jxjy 继续教育课程")
+	private String action;
+
+}

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

@@ -71,4 +71,6 @@ public class UserPeriodQueryBo extends BaseEntity {
 	private Long todayStartTime;
 	@ApiModelProperty("今天结束时间")
 	private Long todayEndTime;
+	@ApiModelProperty("章卷ID")
+	private Long chapterExamId;
 }

+ 3 - 7
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/vo/OrderBusinessConfigGoodsVo.java

@@ -2,11 +2,12 @@ package com.zhongzheng.modules.order.vo;
 
 import com.zhongzheng.common.annotation.Excel;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.zhongzheng.modules.goods.vo.GoodsVo;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import java.util.Date;
-
+import java.util.List;
 
 
 /**
@@ -40,10 +41,5 @@ public class OrderBusinessConfigGoodsVo {
 	@Excel(name = "0 未启用 1启用")
 	@ApiModelProperty("0 未启用 1启用")
 	private Integer status;
-	@ApiModelProperty("商品名称")
-	private String goodsName;
-	@ApiModelProperty("商品id")
-	private String goodsId;
-	@ApiModelProperty("商品类型 1视频2题库 3补考 4前培 ")
-	private Long goodsType;
+	private List<GoodsVo> goodsList;
 }

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

@@ -114,7 +114,7 @@ public class OrderGoodsVo {
 	@ApiModelProperty("录单人")
 	private String createBy;
 	@ApiModelProperty("商品类型 1视频2题库 3面授 4服务 5组合")
-	private String goodsType;
+	private Long goodsType;
 	/** 班级id */
 	@Excel(name = "班级id")
 	@ApiModelProperty("班级id")

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

@@ -191,6 +191,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <if test="majorId != null and majorId != ''">
             AND g.major_id = #{majorId}
         </if>
+        <if test="standPrice != null and standPrice != ''">
+            AND g.stand_price = #{standPrice}
+        </if>
         <if test="searchKey != null and searchKey != ''">
             and (g.goods_name like concat('%', #{searchKey}, '%') or g.code like concat('%', #{searchKey}, '%'))
         </if>

+ 2 - 2
zhongzheng-system/src/main/resources/mapper/modules/grade/UserPeriodMapper.xml

@@ -84,8 +84,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <if test="courseId != null ">
             and up.course_id = #{courseId}
         </if>
-        <if test="examId != null ">
-            and up.exam_id = #{examId}
+        <if test="chapterExamId != null ">
+            and up.exam_id = #{chapterExamId}
         </if>
     </select>
 

+ 22 - 6
zhongzheng-system/src/main/resources/mapper/modules/order/OrderBusinessConfigGoodsMapper.xml

@@ -20,24 +20,40 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="subjectId" column="subject_id"/>
         <result property="goodsIds" column="goods_ids"/>
         <result property="status" column="status"/>
+        <collection property="goodsList" column="goods_ids" select="findGoodsList"/>
+    </resultMap>
+
+    <resultMap type="com.zhongzheng.modules.goods.vo.GoodsVo" id="GoodsResultVo">
         <result property="goodsName" column="goods_name"/>
         <result property="goodsId" column="goods_id"/>
         <result property="goodsType" column="goods_type"/>
-    </resultMap>
+        <result property="categoryName" column="category_name"/>
 
+    </resultMap>
 
-    <select id="selectList" parameterType="com.zhongzheng.modules.order.bo.OrderBusinessConfigGoodsQueryBo" resultMap="OrderBusinessConfigGoodsVoResult">
+    <select id="findGoodsList" resultMap="GoodsResultVo">
         SELECT
-            bcg.*,
             g.goods_name,
             g.goods_id,
-            g.goods_type
+            g.goods_type,
+            m.category_name
+        FROM
+             goods g
+                 LEFT JOIN major m ON g.major_id = m.id and m.`status` = 1
+        WHERE
+            FIND_IN_SET( g.goods_id,#{goods_ids} )
+    </select>
+
+
+    <select id="selectList" parameterType="com.zhongzheng.modules.order.bo.OrderBusinessConfigGoodsQueryBo" resultMap="OrderBusinessConfigGoodsVoResult">
+        SELECT
+            bcg.*
         FROM
             order_business_config_goods bcg
-                LEFT JOIN goods g ON FIND_IN_SET( g.goods_id, bcg.goods_ids )
+
         WHERE
             bcg.config_id = #{configId}
-          AND bcg.subject_id = #{subjectId}
+
     </select>
 
 </mapper>