he2802 3 years ago
parent
commit
dc2322ca7f

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

@@ -215,7 +215,7 @@ public class ScheduleController extends BaseController {
      * 模考直播提醒
      * @return
      */
-    @ApiOperation("模考开始前60分钟提醒")
+    @ApiOperation("模考直播开始前60分钟提醒")
     @GetMapping("/mockLiveSend")
     public AjaxResult mockLiveSend(UserQueryBo bo) {
         iScheduleService.mockLiveSend(bo);

+ 5 - 2
zhongzheng-api/src/main/java/com/zhongzheng/controller/mock/MockApplyController.java

@@ -9,6 +9,7 @@ import com.zhongzheng.common.enums.BusinessType;
 import com.zhongzheng.common.utils.ServletUtils;
 import com.zhongzheng.common.utils.poi.ExcelUtil;
 import com.zhongzheng.framework.web.service.WxTokenService;
+import com.zhongzheng.modules.course.bo.CourseSectionQueryBo;
 import com.zhongzheng.modules.mock.bo.MockApplyAddBo;
 import com.zhongzheng.modules.mock.bo.MockApplyEditBo;
 import com.zhongzheng.modules.mock.bo.MockApplyQueryBo;
@@ -145,6 +146,8 @@ public class MockApplyController extends BaseController {
     @PreAuthorize("@ss.hasPermi('system:apply:list')")
     @GetMapping("/listMockLive")
     public TableDataInfo<MockMajorSubjectVo> listMockLive(MockApplyQueryBo bo) {
+        ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
+        bo.setUserId(loginUser.getUser().getUserId());
         Integer pageNum = 0;
         Integer pageSize = 0;
         if (Validator.isNotEmpty(bo.getPageNum()) && Validator.isNotEmpty(bo.getPageSize())) {
@@ -169,9 +172,9 @@ public class MockApplyController extends BaseController {
     @ApiOperation("查询是否有模考讲解直播正在进行")
     @PreAuthorize("@ss.hasPermi('system:apply:list')")
     @GetMapping("/mockLiving")
-    public AjaxResult<String> mockLiving() {
+    public AjaxResult<CourseSectionQueryBo> mockLiving() {
         ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
-        return AjaxResult.success("", iMockApplyService.mockLiving(loginUser.getUser().getUserId()));
+        return AjaxResult.success(iMockApplyService.mockLiving(loginUser.getUser().getUserId()));
     }
 
     /**

+ 2 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/mapper/MockApplyMapper.java

@@ -1,6 +1,7 @@
 package com.zhongzheng.modules.mock.mapper;
 
 import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.modules.course.bo.CourseSectionQueryBo;
 import com.zhongzheng.modules.mock.bo.MockApplyQueryBo;
 import com.zhongzheng.modules.mock.domain.MockApply;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -30,7 +31,7 @@ public interface MockApplyMapper extends BaseMapper<MockApply> {
 
     List<MockApplyVo> listSubjects();
 
-    String mockLiving(Long userId);
+    CourseSectionQueryBo mockLiving(Long userId);
 
     List<MockMajorSubjectVo> listApplyName(MockApplyQueryBo bo);
 }

+ 2 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/service/IMockApplyService.java

@@ -1,6 +1,7 @@
 package com.zhongzheng.modules.mock.service;
 
 import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.modules.course.bo.CourseSectionQueryBo;
 import com.zhongzheng.modules.mock.domain.MockApply;
 import com.zhongzheng.modules.mock.domain.MockMajorSubject;
 import com.zhongzheng.modules.mock.vo.MockApplyVo;
@@ -68,7 +69,7 @@ public interface IMockApplyService extends IService<MockApply> {
 
     List<MockApplyVo> listSubjects();
 
-    String mockLiving(Long userId);
+	CourseSectionQueryBo mockLiving(Long userId);
 
     List<MockMajorSubjectVo> listApplyName(MockApplyQueryBo bo);
 }

+ 40 - 5
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/service/impl/MockApplyServiceImpl.java

@@ -10,6 +10,7 @@ import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.common.utils.ServletUtils;
 import com.zhongzheng.modules.bank.domain.Exam;
 import com.zhongzheng.modules.bank.service.IExamService;
+import com.zhongzheng.modules.course.bo.CourseSectionQueryBo;
 import com.zhongzheng.modules.course.domain.CourseHandouts;
 import com.zhongzheng.modules.course.domain.CourseSection;
 import com.zhongzheng.modules.course.domain.Major;
@@ -22,6 +23,7 @@ import com.zhongzheng.modules.mock.bo.*;
 import com.zhongzheng.modules.mock.domain.*;
 import com.zhongzheng.modules.mock.service.*;
 import com.zhongzheng.modules.mock.vo.*;
+import com.zhongzheng.modules.order.service.IOrderService;
 import com.zhongzheng.modules.user.domain.UserMockSubscribe;
 import com.zhongzheng.modules.user.service.IUserMockSubscribeService;
 import com.zhongzheng.modules.user.service.IUserSubscribeService;
@@ -37,10 +39,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -61,6 +60,9 @@ public class MockApplyServiceImpl extends ServiceImpl<MockApplyMapper, MockApply
     @Autowired
     private IGoodsService iGoodsService;
 
+    @Autowired
+    private IOrderService iOrderService;
+
     @Autowired
     private IMajorService iMajorService;
 
@@ -129,6 +131,7 @@ public class MockApplyServiceImpl extends ServiceImpl<MockApplyMapper, MockApply
         validEntityBeforeSave(add);
         LambdaQueryWrapper<MockApply> lqw = Wrappers.lambdaQuery();
         lqw.eq(MockApply::getApplyName, bo.getApplyName());
+        lqw.eq(MockApply::getStatus, 1);
         List<MockApply> mockApplyList = list(lqw);
         if (mockApplyList != null && mockApplyList.size() > 0) {
             throw new CustomException("模考标题不能重复");
@@ -488,6 +491,21 @@ public class MockApplyServiceImpl extends ServiceImpl<MockApplyMapper, MockApply
 
     @Override
     public List<MockMajorSubjectVo> listMockLive(MockApplyQueryBo bo) {
+        //判断关联商品
+        LambdaQueryWrapper<MockMajorSubjectGoods> lq = Wrappers.lambdaQuery();
+        List<MockMajorSubjectGoods> mockMajorSubjectGoodsList = iMockMajorSubjectGoodsService.list(lq);
+        List<Long> crossList = new ArrayList<>();
+        if (mockMajorSubjectGoodsList != null && mockMajorSubjectGoodsList.size() > 0) {
+            List<Long> goodsIds = iOrderService.getUserGoods(bo.getUserId());
+            List<Long> userGoods = new ArrayList<>();
+            mockMajorSubjectGoodsList.stream().forEach(mockMajorSubjectGoods -> {
+                userGoods.add(mockMajorSubjectGoods.getGoodsId());
+            });
+            crossList = goodsIds.stream().filter(userGoods::contains).collect(Collectors.toList());
+            if (crossList.size() == 0) {
+                return new ArrayList<>();
+            }
+        }
         List<MockMajorSubjectVo> list = iMockMajorSubjectService.listMockLive(bo);
         ArrayList<MockMajorSubjectVo> ingList = new ArrayList<>();
         ArrayList<MockMajorSubjectVo> offList = new ArrayList<>();
@@ -520,6 +538,23 @@ public class MockApplyServiceImpl extends ServiceImpl<MockApplyMapper, MockApply
         resultList.addAll(offList);
         resultList.addAll(playBackList);
         resultList.addAll(overList);
+
+        List<Long> finalCrossList = crossList;
+        resultList.removeIf(result -> {
+            LambdaQueryWrapper<MockMajorSubjectGoods> lqw = Wrappers.lambdaQuery();
+            lqw.eq(MockMajorSubjectGoods::getMockMajorSubjectId, result.getMockMajorSubjectId());
+            List<MockMajorSubjectGoods> mockMajorSubjectGoods = iMockMajorSubjectGoodsService.list(lqw);
+            if (mockMajorSubjectGoods != null && mockMajorSubjectGoods.size() > 0) {
+                for (MockMajorSubjectGoods mockMajorSubjectGood : mockMajorSubjectGoods) {
+                    if (finalCrossList.contains(mockMajorSubjectGood.getGoodsId())) {
+                        return false;
+                    }else {
+                        return true;
+                    }
+                }
+            }
+            return false;
+        });
         return resultList;
     }
 
@@ -529,7 +564,7 @@ public class MockApplyServiceImpl extends ServiceImpl<MockApplyMapper, MockApply
     }
 
     @Override
-    public String mockLiving(Long userId) {
+    public CourseSectionQueryBo mockLiving(Long userId) {
         return baseMapper.mockLiving(userId);
     }
 

+ 28 - 25
zhongzheng-system/src/main/java/com/zhongzheng/modules/schedule/service/impl/ScheduleServiceImpl.java

@@ -1417,7 +1417,6 @@ public class ScheduleServiceImpl extends ServiceImpl<PolyvVideoMapper, PolyvVide
     public void mockTimeSend(UserQueryBo bo) {
         //提醒考试
         LambdaQueryWrapper<UserMockSubscribe> lqw = Wrappers.lambdaQuery();
-        lqw.eq(UserMockSubscribe::getMockRemind,1);
         lqw.eq(UserMockSubscribe::getHasMockRemind,0);
         List<UserMockSubscribe> userMockSubscribeList = iUserMockSubscribeService.list(lqw);
         userMockSubscribeList.removeIf(userMockSubscribe -> {
@@ -1443,18 +1442,20 @@ public class ScheduleServiceImpl extends ServiceImpl<PolyvVideoMapper, PolyvVide
                 LambdaQueryWrapper<MockApply> lqw5 = Wrappers.lambdaQuery();
                 lqw5.eq(MockApply::getApplyId, subscribeVo.getApplyId());
                 MockApply mockApply = iMockApplyService.getOne(lqw5);
-                if (informRemindVo.getWayStatus().equals(1)) {
-                    InformUserAddBo informUserAddBo = new InformUserAddBo();
-                    informUserAddBo.setUserId(subscribeVo.getUserId());
-                    informUserAddBo.setSendStatus(1);
-                    informUserAddBo.setSendTime(DateUtils.getNowTime());
-                    informUserAddBo.setCreateTime(DateUtils.getNowTime());
-                    informUserAddBo.setUpdateTime(DateUtils.getNowTime());
-                    informUserAddBo.setRemindId(26L);
-                    informUserAddBo.setSystemStatus(1);
-                    informUserAddBo.setRemind("模考提醒");
-                    informUserAddBo.setText("祥粤云学堂提醒:您学习【" + courseSubject.getSubjectName() + "】科目中的【" + mockApply.getApplyName() + "模考】已将于60分钟后开始考试,请及时在【祥粤云小程序】或【web.xyyxt.net】进行考试。");
-                    iInformUserService.insertByAddBo(informUserAddBo);
+                if (subscribeVo.getMockRemind() == 1) {
+                    if (informRemindVo.getWayStatus().equals(1)) {
+                        InformUserAddBo informUserAddBo = new InformUserAddBo();
+                        informUserAddBo.setUserId(subscribeVo.getUserId());
+                        informUserAddBo.setSendStatus(1);
+                        informUserAddBo.setSendTime(DateUtils.getNowTime());
+                        informUserAddBo.setCreateTime(DateUtils.getNowTime());
+                        informUserAddBo.setUpdateTime(DateUtils.getNowTime());
+                        informUserAddBo.setRemindId(26L);
+                        informUserAddBo.setSystemStatus(1);
+                        informUserAddBo.setRemind("模考提醒");
+                        informUserAddBo.setText("祥粤云学堂提醒:您学习【" + courseSubject.getSubjectName() + "】科目中的【" + mockApply.getApplyName() + "模考】已将于60分钟后开始考试,请及时在【祥粤云小程序】或【web.xyyxt.net】进行考试。");
+                        iInformUserService.insertByAddBo(informUserAddBo);
+                    }
                 }
                 if (informRemindVo.getNoteStatus().equals(1)) {
                     InformUserAddBo informUserAddBo = new InformUserAddBo();
@@ -1490,18 +1491,20 @@ public class ScheduleServiceImpl extends ServiceImpl<PolyvVideoMapper, PolyvVide
         userMockSubscribeVoList.removeIf(userMockSubscribeVo -> System.currentTimeMillis()/1000 + 3600 <= userMockSubscribeVo.getLiveStartTime());
         for (UserMockSubscribeVo userMockSubscribeVo : userMockSubscribeVoList) {
             InformRemindVo informRemindVo = informRemindService.queryById(27L);
-            if (informRemindVo.getWayStatus().equals(1)) {
-                InformUserAddBo informUserAddBo = new InformUserAddBo();
-                informUserAddBo.setUserId(userMockSubscribeVo.getUserId());
-                informUserAddBo.setSendStatus(1);
-                informUserAddBo.setSendTime(DateUtils.getNowTime());
-                informUserAddBo.setCreateTime(DateUtils.getNowTime());
-                informUserAddBo.setUpdateTime(DateUtils.getNowTime());
-                informUserAddBo.setRemindId(27L);
-                informUserAddBo.setSystemStatus(1);
-                informUserAddBo.setRemind("直播开课提醒");
-                informUserAddBo.setText("祥粤云学堂提醒:您学习【" + userMockSubscribeVo.getSubjectName() + "】科目中的【" + userMockSubscribeVo.getName() + "直播】已将于60分钟后开始直播,请及时在【祥粤云小程序】或【web.xyyxt.net】进行观看。");
-                iInformUserService.insertByAddBo(informUserAddBo);
+            if (userMockSubscribeVo.getLiveSubscribe() == 1) {
+                if (informRemindVo.getWayStatus().equals(1)) {
+                    InformUserAddBo informUserAddBo = new InformUserAddBo();
+                    informUserAddBo.setUserId(userMockSubscribeVo.getUserId());
+                    informUserAddBo.setSendStatus(1);
+                    informUserAddBo.setSendTime(DateUtils.getNowTime());
+                    informUserAddBo.setCreateTime(DateUtils.getNowTime());
+                    informUserAddBo.setUpdateTime(DateUtils.getNowTime());
+                    informUserAddBo.setRemindId(27L);
+                    informUserAddBo.setSystemStatus(1);
+                    informUserAddBo.setRemind("直播开课提醒");
+                    informUserAddBo.setText("祥粤云学堂提醒:您学习【" + userMockSubscribeVo.getSubjectName() + "】科目中的【" + userMockSubscribeVo.getName() + "直播】已将于60分钟后开始直播,请及时在【祥粤云小程序】或【web.xyyxt.net】进行观看。");
+                    iInformUserService.insertByAddBo(informUserAddBo);
+                }
             }
             if (informRemindVo.getNoteStatus().equals(1)) {
                 InformUserAddBo informUserAddBo = new InformUserAddBo();

+ 44 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserMockSubscribeServiceImpl.java

@@ -234,7 +234,10 @@ public class UserMockSubscribeServiceImpl extends ServiceImpl<UserMockSubscribeM
                 List<UserMockRecord> userMockRecordList = iUserMockRecordService.list(lqw);
                 if (userMockRecordList != null && userMockRecordList.size() > 0) {
                     userMockSubscribeVo.setDoNum(userMockRecordList.size());
-                    userMockSubscribeVo.setFirstScore(userMockRecordList.get(0).getPerformance().add(userMockRecordList.get(0).getScore()));
+                    if (Validator.isNotEmpty(userMockRecordList.get(0).getPerformance()) && Validator.isNotEmpty(userMockRecordList.get(0).getScore()))
+                    {
+                        userMockSubscribeVo.setFirstScore(userMockRecordList.get(0).getPerformance().add(userMockRecordList.get(0).getScore()));
+                    }
                     userMockSubscribeVo.setFirstSubjectiveScore(userMockRecordList.get(0).getScore() == null ? 0 : 1);
                 }
             });
@@ -320,8 +323,48 @@ public class UserMockSubscribeServiceImpl extends ServiceImpl<UserMockSubscribeM
                     userMockSubscribeVos.add(userMockSubscribeVo);
                 });
             }
+        }
 
+        //判断关联商品
+        LambdaQueryWrapper<MockMajorSubjectGoods> lq = Wrappers.lambdaQuery();
+        List<MockMajorSubjectGoods> mockMajorSubjectGoodsList = iMockMajorSubjectGoodsService.list(lq);
+        List<Long> crossList = new ArrayList<>();
+        if (mockMajorSubjectGoodsList != null && mockMajorSubjectGoodsList.size() > 0) {
+            List<Long> goodsIds = iOrderService.getUserGoods(bo.getUserId());
+            List<Long> userGoods = new ArrayList<>();
+            mockMajorSubjectGoodsList.stream().forEach(mockMajorSubjectGoods -> {
+                userGoods.add(mockMajorSubjectGoods.getGoodsId());
+            });
+            crossList = goodsIds.stream().filter(userGoods::contains).collect(Collectors.toList());
         }
+        List<Long> finalCrossList = crossList;
+        userMockSubscribeVos.removeIf(userMockSubscribeVo -> {
+            LambdaQueryWrapper<MockMajorSubjectGoods> lqw = Wrappers.lambdaQuery();
+            lqw.eq(MockMajorSubjectGoods::getMockMajorSubjectId, userMockSubscribeVo.getMockMajorSubjectId());
+            List<MockMajorSubjectGoods> mockMajorSubjectGoods = iMockMajorSubjectGoodsService.list(lqw);
+            if (mockMajorSubjectGoods != null && mockMajorSubjectGoods.size() > 0) {
+                for (MockMajorSubjectGoods mockMajorSubjectGood : mockMajorSubjectGoods) {
+                    if (finalCrossList.contains(mockMajorSubjectGood.getGoodsId())) {
+                        return false;
+                    }else {
+                        return true;
+                    }
+                }
+            }
+            return false;
+        });
+
+
+        Collections.sort(userMockSubscribeVos, new Comparator<UserMockSubscribeVo>() {
+            @Override
+            public int compare(UserMockSubscribeVo o1, UserMockSubscribeVo o2) {
+                //TODO: 升序排列
+                //return o1.getApplySiteExamTime().compareTo(o2.getApplySiteExamTime());
+                //TODO: 降序排列
+                return o2.getApplySiteExamTime().compareTo(o1.getApplySiteExamTime());
+            }
+        });
+
         return userMockSubscribeVos;
     }
 

+ 31 - 2
zhongzheng-system/src/main/resources/mapper/modules/mock/MockApplyMapper.xml

@@ -55,6 +55,35 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="coverUrl" column="cover_url"/>
         <result property="mockRemind" column="mockRemind"/>
     </resultMap>
+
+    <resultMap type="com.zhongzheng.modules.course.vo.CourseSectionVo" id="CourseSectionResultVo">
+        <result property="sectionId" column="section_id"/>
+        <result property="name" column="name"/>
+        <result property="sort" column="sort"/>
+
+        <result property="prefixName" column="prefix_name"/>
+        <result property="status" column="status"/>
+        <result property="sectionType" column="section_type"/>
+        <result property="publishStatus" column="publish_status"/>
+        <result property="liveUrl" column="live_url"/>
+        <result property="liveStartTime" column="live_start_time"/>
+        <result property="liveEndTime" column="live_end_time"/>
+        <result property="recordingUrl" column="recording_url"/>
+        <result property="durationTime" column="duration_time"/>
+        <result property="coverUrl" column="cover_url"/>
+        <result property="code" column="code"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="sessionId" column="session_id"/>
+        <result property="realLiveStartTime" column="real_live_start_time"/>
+        <result property="realLiveEndTime" column="real_live_end_time"/>
+        <result property="realDuration" column="real_duration"/>
+        <result property="teacherId" column="teacher_id"/>
+        <collection property="businessList" column="section_id" select="findBusinessList"/>
+        <collection property="chapterList" column="section_id" select="findChapterList"/>
+        <!--  <collection property="moduleList" javaType="java.util.List" resultMap="CourseModuleChapterListResult"/>
+          <collection property="courseList" javaType="java.util.List" resultMap="CourseSectionListResult"/> -->
+    </resultMap>
     <select id="getMockSubjectInfo" parameterType="java.lang.Long" resultMap="MockApplyVoResult">
         SELECT ma.*,
                mm.mock_major_id,
@@ -230,9 +259,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             unix_timestamp(now()) &lt; ma.apply_end_time
             AND ma.mock_remind = 0
     </select>
-    <select id="mockLiving" parameterType="java.lang.Long" resultType="java.lang.String">
+    <select id="mockLiving" parameterType="java.lang.Long" resultMap="CourseSectionResultVo">
         SELECT
-            cs.live_url
+            cs.*
         FROM
             user_mock_subscribe ums
         LEFT JOIN mock_major_subject mms ON ums.mock_major_subject_id = mms.mock_major_subject_id

+ 2 - 1
zhongzheng-system/src/main/resources/mapper/modules/mock/MockMajorSubjectTimeMapper.xml

@@ -91,7 +91,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             mms.exam_id,
             css.live_url,
             css.live_start_time,
-            css.live_end_time
+            css.live_end_time,
+            mmst.mock_major_subject_id
         FROM
             mock_major_subject_time mmst
         LEFT JOIN mock_major_subject mms ON mmst.mock_major_subject_id = mms.mock_major_subject_id

+ 1 - 2
zhongzheng-system/src/main/resources/mapper/modules/user/UserMockSubscribeMapper.xml

@@ -205,8 +205,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         LEFT JOIN course_section cs ON mms.section_id = cs.section_id
         LEFT JOIN course_subject css ON mms.subject_id = css.id
         WHERE
-            ums.live_subscribe = 1
-          and ums.has_live_subscribe = 0
+          ums.has_live_subscribe = 0
           and cs.live_start_time is not null
     </select>
     <select id="listSubscribeInfo" parameterType="java.lang.Long" resultMap="UserMockSubscribeVoResult">