Explorar el Código

Merge branch 'zouxuan_saas_2022_0606' of http://git.dayaedu.com/yonge/mec into master_saas

zouxuan hace 3 años
padre
commit
37b030331e

+ 1 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TempBuyFreeLiveTheoryCourseDao.java

@@ -14,4 +14,5 @@ public interface TempBuyFreeLiveTheoryCourseDao extends BaseDAO<Integer, TempBuy
     List<TempBuyFreeLiveTheoryCourse> list(@Param("param") TempBuyFreeLiveTheoryCourse tempBuyFreeLiveTheoryCourse);
 
 
+    TempBuyFreeLiveTheoryCourse findByGoodsIdAndUserId(@Param("liveGoodsId") Integer liveGoodsId, @Param("userId") Integer userId);
 }

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TempLiveTeacherCardDao.java

@@ -17,4 +17,9 @@ public interface TempLiveTeacherCardDao extends BaseDAO<Integer, TempLiveTeacher
 
     List<Subject> querySubjectOption();
 
+    //0 没有购买商品 1 购买商品后没有加入群聊 2 已经加入群聊
+    Integer getJoinStstus(@Param("userId") Integer userId, @Param("goodsId") Integer goodsId);
+
+    //查询学生加入的群聊所在的声部
+    String getJoinSubject(@Param("userId") Integer userId, @Param("goodsId") Integer goodsId);
 }

+ 40 - 20
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MemberRankSettingServiceImpl.java

@@ -248,6 +248,7 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
         if(CollectionUtils.isEmpty(activityDtos)){
             throw new BizException("当前分部暂未开通活动");
         }
+        logger.error("activeBuy params goodsId: {},liveId: {}",memberPayParamDto.getLiveGoodsId(),memberPayParamDto.getLiveId());
         BigDecimal amount = BigDecimal.ZERO;
         Integer activityId = null;
         //判断当前商品是否可以购买(库存、上架状态、是否购买过)
@@ -281,23 +282,32 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
             //扣减库存
             liveGoodsService.reduceGoodsStock(memberPayParamDto.getLiveGoodsId(),memberPayParamDto.getLiveId());
         } else if (memberPayParamDto.getLiveGoodsId() == 2 || memberPayParamDto.getLiveGoodsId() == 3 || memberPayParamDto.getLiveGoodsId() == 4){
-            StringBuffer sb = new StringBuffer(RedisKeyConstant.LIVE_GOODS_ZERO_CACHE_KEY).append(memberPayParamDto.getLiveGoodsId());
-            RBucket<List<Integer>> bucket = redissonClient.getBucket(sb.toString());
-            List<Integer> list = bucket.get();
-            if(CollectionUtils.isEmpty(list)){
-                list = new ArrayList<>();
-            }
-            //当前用户是否购买过免费直播课
-            if(list.contains(sysUser.getId())){
+            TempBuyFreeLiveTheoryCourse temp = tempBuyFreeLiveTheoryCourseDao.findByGoodsIdAndUserId(memberPayParamDto.getLiveGoodsId(),student.getUserId());
+            if(Objects.nonNull(temp)){
                 throw new BizException("您已领取过本轮免费直播课");
             }
+//            StringBuffer sb = new StringBuffer(RedisKeyConstant.LIVE_GOODS_ZERO_CACHE_KEY).append(memberPayParamDto.getLiveGoodsId());
+//            RBucket<List<Integer>> bucket = redissonClient.getBucket(sb.toString());
+//            List<Integer> list = bucket.get();
+//            if(CollectionUtils.isEmpty(list)){
+//                list = new ArrayList<>();
+//            }
+//            //当前用户是否购买过免费直播课
+//            if(list.contains(sysUser.getId())){
+//                throw new BizException("您已领取过本轮免费直播课");
+//            }
+            //购买次数是否超过2次
+//            int count = tempBuyFreeLiveTheoryCourseDao.countByUserId(sysUser.getId());
+//            if(count >= 2){
+//                throw new BizException("免费直播课已达到领取次数上限");
+//            }
             //保存购买记录
             tempBuyFreeLiveTheoryCourseDao.insert(
                     new TempBuyFreeLiveTheoryCourse(sysUser.getId(),memberPayParamDto.getLiveId(),memberPayParamDto.getLiveGoodsId()));
             //扣减库存
             liveGoodsService.reduceGoodsStock(memberPayParamDto.getLiveGoodsId(),memberPayParamDto.getLiveId());
-            list.add(sysUser.getId());
-            bucket.set(list);
+//            list.add(sysUser.getId());
+//            bucket.set(list);
             return BaseController.succeed();
         }else {
             throw new BizException("当前商品不可购买");
@@ -350,17 +360,27 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
                 }
             }
         } else if (memberPayParamDto.getLiveGoodsId() == 2 || memberPayParamDto.getLiveGoodsId() == 3 || memberPayParamDto.getLiveGoodsId() == 4){
-            StringBuffer sb = new StringBuffer(RedisKeyConstant.LIVE_GOODS_ZERO_CACHE_KEY).append(memberPayParamDto.getLiveGoodsId());
-            RBucket<List<Integer>> bucket = redissonClient.getBucket(sb.toString());
-            List<Integer> list = bucket.get();
-            if(CollectionUtils.isEmpty(list)){
-                list = new ArrayList<>();
-            }
-            //当前用户是否购买过免费直播课
-            if(list.contains(sysUser.getId())){
-                succeed.setMsg("您已领取过本轮免费直播课");
-                return succeed;
+            TempBuyFreeLiveTheoryCourse temp = tempBuyFreeLiveTheoryCourseDao.findByGoodsIdAndUserId(memberPayParamDto.getLiveGoodsId(),sysUser.getId());
+            if(Objects.nonNull(temp)){
+                throw new BizException("您已领取过本轮免费直播课");
             }
+//            StringBuffer sb = new StringBuffer(RedisKeyConstant.LIVE_GOODS_ZERO_CACHE_KEY).append(memberPayParamDto.getLiveGoodsId());
+//            RBucket<List<Integer>> bucket = redissonClient.getBucket(sb.toString());
+//            List<Integer> list = bucket.get();
+//            if(CollectionUtils.isEmpty(list)){
+//                list = new ArrayList<>();
+//            }
+//            //当前用户是否购买过免费直播课
+//            if(list.contains(sysUser.getId())){
+//                succeed.setMsg("您已领取过本轮免费直播课");
+//                return succeed;
+//            }
+            //购买次数是否超过2次
+//            int count = tempBuyFreeLiveTheoryCourseDao.countByUserId(sysUser.getId());
+//            if(count >= 2){
+//                succeed.setMsg("免费直播课已达到领取次数上限");
+//                return succeed;
+//            }
         }else {
             succeed.setMsg("当前商品不可购买");
             return succeed;

+ 3 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TempBuyFreeLiveTheoryCourseServiceImpl.java

@@ -106,7 +106,9 @@ public class TempBuyFreeLiveTheoryCourseServiceImpl extends BaseServiceImpl<Inte
             }
             TempBuyFreeLiveTheoryCourse course = tempBuyFreeLiveTheoryCourseDao.get(temp.getId());
             LevelEnum byName = LevelEnum.getByName(temp.getRecommendLevel());
-            course.setRecommendLevel(byName.getCode());
+            if(null != byName){
+                course.setRecommendLevel(byName.getCode());
+            }
             tempBuyFreeLiveTheoryCourseDao.update(course);
         }
         return null;

+ 4 - 0
mec-biz/src/main/resources/config/mybatis/TempBuyFreeLiveTheoryCourseMapper.xml

@@ -100,4 +100,8 @@
             </if>
         </where>
     </select>
+    <select id="findByGoodsIdAndUserId" resultMap="TempBuyFreeLiveTheoryCourse">
+        SELECT * FROM temp_buy_free_live_theory_course
+        WHERE user_id_ = #{userId} AND live_goods_id_ = #{liveGoodsId} LIMIT 1 FOR UPDATE
+    </select>
 </mapper>

+ 20 - 0
mec-biz/src/main/resources/config/mybatis/TempLiveTeacherCardMapper.xml

@@ -149,4 +149,24 @@
         )
         order by t.id_
     </select>
+
+    <select id="getJoinStstus" resultType="java.lang.Integer">
+        select case when
+            (
+                select count(1) from temp_buy_free_live_theory_course
+                where user_id_ = #{userId} and live_goods_id_ = #{goodsId}
+            ) = 0 then 0
+            when (
+                select count(1) from temp_live_teacher_card a
+                left join im_group_member b on a.im_group_id_ = b.im_group_id_
+                where a.live_goods_id_ = #{goodsId} and b.user_id_ = #{userId}
+            ) = 0 then 1 else 2 end
+        from dual
+    </select>
+    <select id="getJoinSubject" resultType="java.lang.String">
+        select subject_id_ from temp_live_teacher_card a
+        left join im_group_member b on a.im_group_id_ = b.im_group_id_
+        where a.live_goods_id_ = #{goodsId} and b.user_id_ = #{userId}
+        limit 1;
+    </select>
 </mapper>

+ 14 - 6
mec-student/src/main/java/com/ym/mec/student/controller/TempLiveActivityController.java

@@ -44,18 +44,26 @@ public class TempLiveActivityController extends BaseController {
     private TempLiveTeacherCardDao tempLiveTeacherCardDao;
 
     @ApiOperation("查询声部")
-    @PostMapping(value = "/querySubjectOption",produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
-    public HttpResponseResult<Map<String,Object>> querySubjectOption() {
+    @PostMapping(value = "/querySubjectOption", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
+    public HttpResponseResult<Map<String, Object>> querySubjectOption() {
         SysUser user = sysUserFeignService.queryUserInfo();
         if (user == null || user.getId() == null) {
             return failed(HttpStatus.FORBIDDEN, "请登录");
         }
-        Map<String,Object> res = new HashMap<>();
+        Map<String, Object> res = new HashMap<>();
         List<Subject> options = tempLiveTeacherCardDao.querySubjectOption();
-        res.put("options",options);
+        res.put("options", options);
 
         Student student = studentService.get(user.getId());
-        res.put("subjectId",student.getSubjectIdList());
+        res.put("subjectId", student.getSubjectIdList());
+
+        Integer goodsId = 4;
+        Integer ststus = tempLiveTeacherCardDao.getJoinStstus(user.getId(), goodsId);
+        res.put("ststus", ststus);
+
+        String joinSubjectId = tempLiveTeacherCardDao.getJoinSubject(user.getId(),goodsId);
+        res.put("joinSubjectId", joinSubjectId);
+
         return succeed(res);
     }
 
@@ -67,7 +75,7 @@ public class TempLiveActivityController extends BaseController {
             )
     })
     @ApiOperation("查询声部上课老师名片信息列表")
-    @PostMapping(value = "/listTeacherCard",produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
+    @PostMapping(value = "/listTeacherCard", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
     public HttpResponseResult<List<TempLiveTeacherCard>> listTeacherCard(@ApiIgnore @RequestBody TempLiveTeacherCard param) {
         SysUser user = sysUserFeignService.queryUserInfo();
         if (user == null || user.getId() == null) {

+ 1 - 1
mec-web/src/main/resources/columnMapper.ini

@@ -67,7 +67,7 @@
 ID = id
 用户ID = userId
 购买学生姓名 = studentName
-老师推荐级别(初级/中级/高级) = recommendLevel
+老师推荐级别(一级/二级/三级) = recommendLevel
 
 [直播临时活动上课老师名片导入模板]
 声部id = subjectId