Browse Source

Merge branch 'feature/1219_opt' into develop-new

刘俊驰 10 months ago
parent
commit
72140622a7

+ 21 - 18
cooleshow-app/src/main/java/com/yonge/cooleshow/student/controller/MusicAlbumController.java

@@ -130,25 +130,28 @@ public class MusicAlbumController extends BaseController {
         AlbumDetailVo albumDetailVo = musicAlbumService.detail(PageUtil.getPage(query), query,sysUser,ClientEnum.STUDENT);
         albumDetailVo.setFavorite(yesOrNoEnum);
 
-        // 相关专辑
-        MusicAlbumSearch musicAlbumSearch = new MusicAlbumSearch();
-        musicAlbumSearch.setAuditVersion(YesOrNoEnum.NO);
-        musicAlbumSearch.setAlbumStatus(YesOrNoEnum.YES);
-        musicAlbumSearch.setAuditVersion(albumDetailVo.getAuditVersion());
-        musicAlbumSearch.setSortBy(1);
-        musicAlbumSearch.setPage(1);
-        musicAlbumSearch.setRows(query.getRelatedNum() +1);
-        musicAlbumSearch.setAlbumTagIds(albumDetailVo.getAlbumTag());
-        IPage<MusicAlbumVo> relatedMusicAlbum = musicAlbumService.selectStudentPage(PageUtil.getPage(musicAlbumSearch),musicAlbumSearch, ClientEnum.STUDENT);
-        List<MusicAlbumVo> musicAlbumVos1 = relatedMusicAlbum.getRecords()
-                                                      .stream()
-                                                      .filter(musicAlbumVo -> !musicAlbumVo.getId()
-                                                                                           .equals(albumDetailVo.getId()))
-                                                      .collect(Collectors.toList());
-        if (musicAlbumVos1.size() > query.getRelatedNum()) {
-            musicAlbumVos1 = musicAlbumVos1.subList(0,query.getRelatedNum());
+
+        if (query.getQueryRelatedAlbum()) {
+            // 相关专辑
+            MusicAlbumSearch musicAlbumSearch = new MusicAlbumSearch();
+            musicAlbumSearch.setAuditVersion(YesOrNoEnum.NO);
+            musicAlbumSearch.setAlbumStatus(YesOrNoEnum.YES);
+            musicAlbumSearch.setAuditVersion(albumDetailVo.getAuditVersion());
+            musicAlbumSearch.setSortBy(1);
+            musicAlbumSearch.setPage(1);
+            musicAlbumSearch.setRows(query.getRelatedNum() + 1);
+            musicAlbumSearch.setAlbumTagIds(albumDetailVo.getAlbumTag());
+            IPage<MusicAlbumVo> relatedMusicAlbum = musicAlbumService.selectStudentPage(PageUtil.getPage(musicAlbumSearch), musicAlbumSearch, ClientEnum.STUDENT);
+            List<MusicAlbumVo> musicAlbumVos1 = relatedMusicAlbum.getRecords()
+                    .stream()
+                    .filter(musicAlbumVo -> !musicAlbumVo.getId()
+                            .equals(albumDetailVo.getId()))
+                    .collect(Collectors.toList());
+            if (musicAlbumVos1.size() > query.getRelatedNum()) {
+                musicAlbumVos1 = musicAlbumVos1.subList(0, query.getRelatedNum());
+            }
+            albumDetailVo.setRelatedMusicAlbum(musicAlbumVos1);
         }
-        albumDetailVo.setRelatedMusicAlbum(musicAlbumVos1);
         return succeed(albumDetailVo);
     }
 

+ 20 - 18
cooleshow-app/src/main/java/com/yonge/cooleshow/teacher/controller/MusicAlbumController.java

@@ -119,25 +119,27 @@ public class MusicAlbumController extends BaseController {
         AlbumDetailVo albumDetailVo = musicAlbumService.detail(PageUtil.getPage(query), query, sysUser,  ClientEnum.TEACHER);
         albumDetailVo.setFavorite(yesOrNoEnum);
 
-        // 相关专辑
-        MusicAlbumSearch musicAlbumSearch = new MusicAlbumSearch();
-        musicAlbumSearch.setAuditVersion(YesOrNoEnum.NO);
-        musicAlbumSearch.setAlbumStatus(YesOrNoEnum.YES);
-        musicAlbumSearch.setAuditVersion(albumDetailVo.getAuditVersion());
-        musicAlbumSearch.setSortBy(1);
-        musicAlbumSearch.setPage(1);
-        musicAlbumSearch.setRows(query.getRelatedNum() +1);
-        musicAlbumSearch.setAlbumTagIds(albumDetailVo.getAlbumTag());
-        IPage<MusicAlbumVo> relatedMusicAlbum = musicAlbumService.selectStudentPage(PageUtil.getPage(musicAlbumSearch),musicAlbumSearch, ClientEnum.TEACHER);
-        List<MusicAlbumVo> musicAlbumVos1 = relatedMusicAlbum.getRecords()
-                                                      .stream()
-                                                      .filter(musicAlbumVo -> !musicAlbumVo.getId()
-                                                                                           .equals(albumDetailVo.getId()))
-                                                      .collect(Collectors.toList());
-        if (musicAlbumVos1.size() > query.getRelatedNum()) {
-            musicAlbumVos1 = musicAlbumVos1.subList(0,query.getRelatedNum());
+        if (query.getQueryRelatedAlbum()) {
+            // 相关专辑
+            MusicAlbumSearch musicAlbumSearch = new MusicAlbumSearch();
+            musicAlbumSearch.setAuditVersion(YesOrNoEnum.NO);
+            musicAlbumSearch.setAlbumStatus(YesOrNoEnum.YES);
+            musicAlbumSearch.setAuditVersion(albumDetailVo.getAuditVersion());
+            musicAlbumSearch.setSortBy(1);
+            musicAlbumSearch.setPage(1);
+            musicAlbumSearch.setRows(query.getRelatedNum() + 1);
+            musicAlbumSearch.setAlbumTagIds(albumDetailVo.getAlbumTag());
+            IPage<MusicAlbumVo> relatedMusicAlbum = musicAlbumService.selectStudentPage(PageUtil.getPage(musicAlbumSearch), musicAlbumSearch, ClientEnum.TEACHER);
+            List<MusicAlbumVo> musicAlbumVos1 = relatedMusicAlbum.getRecords()
+                    .stream()
+                    .filter(musicAlbumVo -> !musicAlbumVo.getId()
+                            .equals(albumDetailVo.getId()))
+                    .collect(Collectors.toList());
+            if (musicAlbumVos1.size() > query.getRelatedNum()) {
+                musicAlbumVos1 = musicAlbumVos1.subList(0, query.getRelatedNum());
+            }
+            albumDetailVo.setRelatedMusicAlbum(musicAlbumVos1);
         }
-        albumDetailVo.setRelatedMusicAlbum(musicAlbumVos1);
         return succeed(albumDetailVo);
     }
 

+ 4 - 3
cooleshow-app/src/main/java/com/yonge/cooleshow/teacher/controller/MusicSheetController.java

@@ -1,6 +1,7 @@
 package com.yonge.cooleshow.teacher.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.AppMusicSheetVo;
 import com.yonge.cooleshow.biz.dal.dto.MusicSheetRenderDto;
@@ -24,7 +25,6 @@ import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.enums.EStatus;
 import com.yonge.cooleshow.common.enums.YesOrNoEnum;
 import com.yonge.toolset.base.page.PageInfo;
-import com.yonge.toolset.base.page.QueryInfo;
 import com.yonge.toolset.base.util.StringUtil;
 import com.yonge.toolset.mybatis.support.PageUtil;
 import io.swagger.annotations.Api;
@@ -235,18 +235,19 @@ public class MusicSheetController extends BaseController {
      */
     @GetMapping("/favorite")
     @ApiOperation(value = "收藏单曲")
-    public HttpResponseResult<PageInfo<MusicSheetVo>> favoriteMusic(QueryInfo query) {
+    public HttpResponseResult<PageInfo<MusicSheetVo>> favoriteMusic(MusicSheetWrapper.MusicSheetFavoriteQuery query) {
         SysUser sysUser = sysUserService.getUser();
         StudentMusicSheetSearch search = new StudentMusicSheetSearch();
         Teacher teacher = teacherService.getById(sysUser.getId());
         if (teacher.getTenantId() !=null && teacher.getTenantId() >0) {
             search.setTenantId(teacher.getTenantId());
         }
+        search.setFavoriteProviderType(query.getProviderType());
         search.setStudentId(sysUser.getId());
         search.setState(YesOrNoEnum.YES);
         search.setAuditStatus(null);
         search.setProviderType(null);
-        IPage<MusicSheetVo> sheetVoIPage = musicSheetService.favoriteMusic(PageUtil.getPage(query),search, ClientEnum.TEACHER);
+        IPage<MusicSheetVo> sheetVoIPage = musicSheetService.favoriteMusic(QueryInfo.getPage(query),search, ClientEnum.TEACHER);
         return succeed(PageUtil.pageInfo(sheetVoIPage));
     }
 

+ 2 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/VipCardRecordDao.java

@@ -62,4 +62,6 @@ public interface VipCardRecordDao extends BaseMapper<VipCardRecord> {
     IPage<VipRecordVo> selectVipRecord(@Param("page") IPage<VipRecordVo> page, @Param("param") VipRecordSearch param);
 
     List<VipCardRecordWrapper.UserVipInfo> queryUserVipInfo(@Param("userIdList") List<Long> userIdList ,@Param("clientType") String clientType);
+
+    void updateMsgStatus(@Param("ids") List<Long> ids, @Param("msgStatus") int msgStatus);
 }

+ 3 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/MusicAlbumDetailSearch.java

@@ -61,6 +61,9 @@ public class MusicAlbumDetailSearch extends MusicSheetSearch {
     @ApiModelProperty("是否查询曲目信息")
     private Boolean queryMusicSheet = true;
 
+    @ApiModelProperty("是否查询相关专辑信息")
+    private Boolean queryRelatedAlbum = true;
+
     public Long getStudentId() {
         return studentId;
     }

+ 2 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/MusicSheetSearch.java

@@ -61,6 +61,8 @@ public class MusicSheetSearch  extends QueryInfo{
     @ApiModelProperty(value = "提供方 TENANT 机构 PLATFORM 平台")
     private SourceTypeEnum providerType = SourceTypeEnum.PLATFORM;
 
+    @ApiModelProperty("收藏来源  TENANT 机构 PLATFORM 平台")
+    private SourceTypeEnum favoriteProviderType;
 
     @ApiModelProperty("曲目状态(0:停用,1:启用))")
     private YesOrNoEnum state;

+ 4 - 4
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/MessageTypeEnum.java

@@ -82,10 +82,10 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
     SMS_NEW_VIP_BUY_SUCCESS("会员购买成功(短信)"),
     SMS_TEACHER_NEW_VIP_BUY_SUCCESS("会员购买成功(短信)"),
 
-    VIP_EXPIRE_THIRTY_DAY("VIP会员到期前30天"),
-    SVIP_EXPIRE_THIRTY_DAY("SVIP会员到期前30天"),
-    SMS_VIP_EXPIRE_THIRTY_DAY("VIP会员到期前30天(短信)"),
-    SMS_SVIP_EXPIRE_THIRTY_DAY("SVIP会员到期前30天(短信)"),
+    VIP_EXPIRE_THIRTY_DAY("VIP会员到期前3天"),
+    SVIP_EXPIRE_THIRTY_DAY("SVIP会员到期前3天"),
+    SMS_VIP_EXPIRE_THIRTY_DAY("VIP会员到期前3天(短信)"),
+    SMS_SVIP_EXPIRE_THIRTY_DAY("SVIP会员到期前3天(短信)"),
 
     VIP_EXPIRE("VIP会员到期"),
     SVIP_EXPIRE("SVIP会员到期"),

+ 4 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseScheduleServiceImpl.java

@@ -579,6 +579,10 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
 
     // 检查时间段是否满足课程时间,不满足则删除,满足 并且可多段的情况下,将时间段拆分
     private List<CourseTimeEntity> splitTime(List<CourseTimeEntity> courseTime, Integer courseMinutes,Integer freeMinutes) {
+
+        //过滤掉当前时间之前的时间段
+        courseTime = courseTime.stream().filter(time -> time.getStartTime().compareTo(new Date()) >= 0).collect(Collectors.toList());
+
         Integer mergeMinutes = courseMinutes + freeMinutes;
         List<CourseTimeEntity> result = new ArrayList<>();
         for (CourseTimeEntity courseTimeEntity : courseTime) {

+ 1 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImGroupServiceImpl.java

@@ -1375,6 +1375,7 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
     public Boolean updateImGroup(ImGroup imGroup) {
 
         this.updateById(imGroup);
+        imGroup= this.getById(imGroup.getId());
         try {
             imGroupCoreService.modifyGroupInfo(imGroup.getId(),imGroup.getName(),imGroup.getImg());
         } catch (Exception e) {

+ 37 - 82
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/VipCardRecordServiceImpl.java

@@ -206,49 +206,41 @@ public class VipCardRecordServiceImpl extends ServiceImpl<VipCardRecordDao, VipC
     public void pollExpireMsg() {
         //提前三天提示
         List<VipCardRecordVo> temporaryRecords = baseMapper.selectTemporaryRecord();
-        //标识
-        Set<String> sendFlag = new HashSet<>();
-        for (VipCardRecordVo record : temporaryRecords) {
-            String key = record.getUserId() + "_" + record.getVipType().getCode() + "_" + record.getClientType().getCode();
-            if (sendFlag.contains(key)) {
-                continue;
+        if(CollectionUtils.isNotEmpty(temporaryRecords)){
+            Map<ClientEnum,List<VipCardRecordVo>> map = temporaryRecords.stream().collect(Collectors.groupingBy(VipCardRecordVo::getClientType));
+            //区分老师学生
+            for (Map.Entry<ClientEnum, List<VipCardRecordVo>> entry : map.entrySet()) {
+                List<VipCardRecordVo> list = entry.getValue();
+                //区分会员类型
+                Map<EVipType,List<VipCardRecordVo>> map1 = list.stream().collect(Collectors.groupingBy(VipCardRecordVo::getVipType));
+                map1.forEach((k,v)->{
+                    Map<Long, String> receivers = v.stream().collect(Collectors.toMap(VipCardRecordVo::getUserId, VipCardRecordVo::getPhone));
+                    temporary3DaysSend(receivers, entry.getKey(), k);
+                });
             }
-            sendFlag.add(key);
-            //发送消息
-            CompletableFuture.runAsync(() -> {
-                temporary3DaysSend(record.getUserId(), record.getPhone(), record.getClientType(), record.getVipType());
-            });
-            record.setMsgStatus(1);
-            record.setUpdateTime(new Date());
-
-            VipCardRecord vipCardRecord = new VipCardRecord();
-            BeanUtils.copyProperties(record, vipCardRecord);
-            baseMapper.updateById(vipCardRecord);
+            //更新状态
+            List<Long> ids = temporaryRecords.stream().map(VipCardRecordVo::getId).collect(Collectors.toList());
+            baseMapper.updateMsgStatus(ids,1);
         }
 
         //到期提示
         List<VipCardRecordVo> expireRecords = baseMapper.selectExpireRecord();
-        //标识
-        Set<String> expireSendFlag = new HashSet<>();
-        for (VipCardRecordVo record : expireRecords) {
-            String key = record.getUserId() + "_" + record.getVipType().getCode() + "_" + record.getClientType().getCode();
-            if (expireSendFlag.contains(key)) {
-                continue;
+        if (CollectionUtils.isNotEmpty(expireRecords)){
+            Map<ClientEnum,List<VipCardRecordVo>> map = expireRecords.stream().collect(Collectors.groupingBy(VipCardRecordVo::getClientType));
+            //区分老师学生
+            for (Map.Entry<ClientEnum, List<VipCardRecordVo>> entry : map.entrySet()) {
+                List<VipCardRecordVo> list = entry.getValue();
+                //区分会员类型
+                Map<EVipType,List<VipCardRecordVo>> map1 = list.stream().collect(Collectors.groupingBy(VipCardRecordVo::getVipType));
+                map1.forEach((k,v)->{
+                    Map<Long, String> receivers = v.stream().collect(Collectors.toMap(VipCardRecordVo::getUserId, VipCardRecordVo::getPhone));
+                    expireSend(receivers, entry.getKey(), k);
+                });
             }
-            expireSendFlag.add(key);
-            //发送消息
-            //发送消息
-            CompletableFuture.runAsync(() -> {
-                expireSend(record.getUserId(),record.getPhone(), record.getClientType(), record.getVipType());
-            });
-            record.setMsgStatus(2);
-            record.setUpdateTime(new Date());
-
-            VipCardRecord vipCardRecord = new VipCardRecord();
-            BeanUtils.copyProperties(record, vipCardRecord);
-            baseMapper.updateById(vipCardRecord);
+            //更新状态
+            List<Long> ids = expireRecords.stream().map(VipCardRecordVo::getId).collect(Collectors.toList());
+            baseMapper.updateMsgStatus(ids,2);
         }
-
     }
 
     @Override
@@ -854,61 +846,24 @@ public class VipCardRecordServiceImpl extends ServiceImpl<VipCardRecordDao, VipC
     }
 
     // 发送会员到期3天消息推送
-    private void temporary3DaysSend(Long userId, String phone, ClientEnum clientType, EVipType vipType) {
-        Map<Long, String> receivers = new HashMap<>();
-        receivers.put(userId, phone);
-        // 判断是否是机构学生 机构学生推送走另一个
-        if (clientType.equals(ClientEnum.STUDENT)) {
-            Student student = studentService.getById(userId);
-            if (student == null || (student.getTenantId() != null && student.getTenantId() > 0 )) {
-                return;
-            }
-        }
+    private void temporary3DaysSend(Map<Long, String> receivers, ClientEnum clientType, EVipType vipType) {
         try {
             sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG,
                     EVipType.VIP.equals(vipType) ? MessageTypeEnum.VIP_EXPIRE_THIRTY_DAY : MessageTypeEnum.SVIP_EXPIRE_THIRTY_DAY
                     , receivers, null, 0, null, clientType.getCode());
         } catch (Exception e) {
-            log.error("会员到期3天极光消息推送异常,userId={}", userId);
-        }
-
-        try {
-            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS,
-                    EVipType.VIP.equals(vipType) ? MessageTypeEnum.SMS_VIP_EXPIRE_THIRTY_DAY : MessageTypeEnum.SMS_SVIP_EXPIRE_THIRTY_DAY
-                    , receivers, null, 0, null, clientType.getCode());
-        } catch (Exception e) {
-            log.error("会员到期3天短信消息推送异常,userId={}", userId);
+            log.error("会员到期3天极光消息推送异常");
         }
     }
 
     // 发送会员到期消息推送
-    private void expireSend(Long userId,String phone,ClientEnum userType, EVipType vipType) {
-        Map<Long, String> receivers = new HashMap<>();
-        receivers.put(userId, phone);
-        Student student = studentService.getById(userId);
-        if (userType.equals(ClientEnum.STUDENT) && student != null  && student.getTenantId() != null && student.getTenantId() >0) {
-//            try {
-//                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.TENANT_VIP_EXPIRE,
-//                        receivers, null, 0, null, ClientEnum.TENANT_STUDENT.getCode());
-//            } catch (Exception e) {
-//                log.error("会员到期极光消息推送异常,userId={}", userId);
-//            }
-        } else {
-            try {
-                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG,
-                        EVipType.VIP.equals(vipType) ? MessageTypeEnum.VIP_EXPIRE : MessageTypeEnum.SVIP_EXPIRE
-                        ,receivers, null, 0, null, userType.getCode());
-            } catch (Exception e) {
-                log.error("会员到期3天极光消息推送异常,userId={}", userId);
-            }
-
-            try {
-                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS,
-                        EVipType.VIP.equals(vipType) ? MessageTypeEnum.SMS_VIP_EXPIRE : MessageTypeEnum.SMS_SVIP_EXPIRE,
-                        receivers, null, 0, null, userType.getCode());
-            } catch (Exception e) {
-                log.error("会员到期3天短信消息推送异常,userId={}", userId);
-            }
+    private void expireSend(Map<Long, String> receivers,ClientEnum userType, EVipType vipType) {
+        try {
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG,
+                    EVipType.VIP.equals(vipType) ? MessageTypeEnum.VIP_EXPIRE : MessageTypeEnum.SVIP_EXPIRE
+                    ,receivers, null, 0, null, userType.getCode());
+        } catch (Exception e) {
+            log.error("会员到期极光消息推送异常");
         }
     }
 

+ 15 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/MusicSheetWrapper.java

@@ -1174,4 +1174,19 @@ public class MusicSheetWrapper {
 
 
     }
+
+
+    @Data
+    public static class MusicSheetFavoriteQuery implements QueryInfo {
+
+        @ApiModelProperty(value = "提供方 TENANT 机构 PLATFORM 平台")
+        private SourceTypeEnum providerType = SourceTypeEnum.PLATFORM;
+
+        @ApiModelProperty("当前页")
+        private Integer page;
+
+        @ApiModelProperty("分页行数")
+        private Integer rows;
+
+    }
 }

+ 3 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicSheetMapper.xml

@@ -633,6 +633,9 @@
                     </if>
                 )
             </if>
+            <if test="param.favoriteProviderType != null">
+                and mf.provider_type_ = #{param.favoriteProviderType}
+            </if>
 
             <if test="param.studentId != null">
                 and mf.user_id_ = #{param.studentId}

+ 8 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/VipCardRecordMapper.xml

@@ -48,6 +48,14 @@
         ,t.ref_id_ as refId
         ,t.efficient_flag_ as efficientFlag
         </sql>
+    <update id="updateMsgStatus">
+        update vip_card_record
+        set msg_status_ = #{msgStatus},update_time_ = now()
+        where id_ IN
+        <foreach collection="ids" item="item" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+    </update>
 
     <select id="detail" resultType="com.yonge.cooleshow.biz.dal.vo.VipCardRecordVo">
         SELECT