ソースを参照

Merge remote-tracking branch 'origin/feature/0529-live' into feature/0529-live

shangke 2 年 前
コミット
c746fd04db

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupStudentMapperDao.java

@@ -478,4 +478,6 @@ public interface ClassGroupStudentMapperDao extends BaseDAO<Long, ClassGroupStud
     Integer countByUserIdsAndClassIds(@Param("studentIds") String studentIds, @Param("oldClassId") Integer oldClassId);
     
     List<VipGroupClassGroupMapper> queryWaitCancelVipGroup();
+
+    List<ClassGroupStudentMapper> findByVipGroups(@Param("groupIds") List<Long> groupIds);
 }

+ 11 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/VipGroupDao.java

@@ -276,7 +276,7 @@ public interface VipGroupDao extends BaseDAO<Long, VipGroup> {
      * @author Joburgess
      * @date 2019/11/13
      */
-    List<VipGroup> findNoCreateSuccessVipGroup(Integer tenantId);
+    List<VipGroup> findNoCreateSuccessVipGroup(@Param("tenantId") Integer tenantId, @Param("groupType") String groupType);
 
 
     /**
@@ -385,4 +385,14 @@ public interface VipGroupDao extends BaseDAO<Long, VipGroup> {
      * @return int
      */
     int getCourseStudentNumsByGroupId(@Param("groupId") Long groupId);
+
+    /**
+    * @description: 更新直播课学员人数
+     * @param groupId
+     * @param userId
+    * @return void
+    * @author zx
+    * @date 2023/6/2 18:30
+    */
+    void updateStudentIdList(@Param("groupId") Long groupId, @Param("userId") Integer userId);
 }

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/VipGroupService.java

@@ -440,4 +440,13 @@ public interface VipGroupService extends BaseService<Long, VipGroup> {
      * @param id 直播课程组id
      */
     VipGroupApplyDto liveGroupDetail(Long id);
+
+    /**
+    * @description: 给缴费到期的直播课程排课
+     * @param
+    * @return void
+    * @author zx
+    * @date 2023/6/2 18:03
+    */
+    void createLiveCourse();
 }

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

@@ -551,7 +551,7 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
         }else {
             if (order.getType().equals(OrderTypeEnum.APPLY)) { //报名订单
                 studentRegistrationService.updateApplyOrder(order);
-            } else if (order.getType().equals(OrderTypeEnum.SMALL_CLASS_TO_BUY)) {
+            } else if (order.getType().equals(OrderTypeEnum.SMALL_CLASS_TO_BUY) || order.getType().equals(OrderTypeEnum.LIVE_GROUP_BUY)) {
                 vipGroupService.orderCallback(order);
             } else if (order.getType().equals(OrderTypeEnum.RENEW) || order.getType().equals(OrderTypeEnum.ADD_STUDENT)) {
                 musicGroupService.renewForCallback(order);

+ 55 - 11
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -2647,6 +2647,15 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
                         imGroupMemberService.join(classGroup.getId().toString(), userRoleMap);
                         imUserFriendService.refreshGroupImUserFriend(classGroup.getMusicGroupId(), classGroup.getGroupType());
                     }
+                    //更新所属分部列表
+                    List<Integer> organIds = classGroupDao.findStudentOrganIdsByClassGroup(classGroup.getId().longValue());
+                    organIds.add(vipGroup.getOrganId());
+                    HashSet<Integer> hashSet = new HashSet<>(organIds);
+                    String organIdsString = StringUtils.join(hashSet, ",");
+                    vipGroup.setOrganIdList(organIdsString);
+                    vipGroupDao.update(vipGroup);
+                }else {
+                    vipGroupDao.updateStudentIdList(vipGroup.getId(),userId);
                 }
                 SysUserCashAccount sysUserCashAccount = sysUserCashAccountService.get(userId);
                 //插入缴费明细
@@ -2685,14 +2694,6 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
                 map.put(userId, userId.toString());
                 sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, messageTypeEnum, map, null, 0, "2", "STUDENT",
                         vipGroup.getName());
-
-                //更新所属分部列表
-                List<Integer> organIds = classGroupDao.findStudentOrganIdsByClassGroup(classGroup.getId().longValue());
-                organIds.add(vipGroup.getOrganId());
-                HashSet<Integer> hashSet = new HashSet<>(organIds);
-                String organIdsString = StringUtils.join(hashSet, ",");
-                vipGroup.setOrganIdList(organIdsString);
-                vipGroupDao.update(vipGroup);
                 try {
                     contractService.transferVipGroupCoursesContract(userId, vipGroup.getId(), order.getType());
                 } catch (Exception e) {
@@ -4227,27 +4228,53 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void stopVipGroupWithNoCreate(Integer tenantId) {
-        List<VipGroup> noCreateSuccessVipGroups = vipGroupDao.findNoCreateSuccessVipGroup(tenantId);
+        List<VipGroup> noCreateSuccessVipGroups = vipGroupDao.findNoCreateSuccessVipGroup(tenantId,null);
         if (CollectionUtils.isEmpty(noCreateSuccessVipGroups)) {
             return;
         }
+//        List<VipGroup> vipGroup = noCreateSuccessVipGroups.stream().filter(e -> StringUtils.equals("VIP",e.getGroupType())).collect(Collectors.toList());
+//        List<VipGroup> liveGroup = noCreateSuccessVipGroups.stream().filter(e -> StringUtils.equals("LIVE",e.getGroupType())).collect(Collectors.toList());
+//        List<VipGroup> noStudentGroup = vipGroups.stream().filter(e -> StringUtils.isEmpty(e.getStudentIdList())).collect(Collectors.toList());
+//        List<VipGroup> hasStudentGroup = vipGroups.stream().filter(e -> StringUtils.isNotEmpty(e.getStudentIdList())).collect(Collectors.toList());
+//        if(!CollectionUtils.isEmpty(noStudentGroup)){
+//            关闭课程组
+//        }
+//        if(!CollectionUtils.isEmpty(hasStudentGroup)){
+//            排课
+//        }
         //用户账户资金变动信息列表
         List<SysUserCashAccountDetail> userCashAccountDetails = new ArrayList<>();
+        List<Long> groupIds = noCreateSuccessVipGroups.stream().map(e -> e.getId()).collect(Collectors.toList());
+        List<ClassGroupStudentMapper> classGroupStudentMappers = classGroupStudentMapperDao.findByVipGroups(groupIds);
+        Map<Long, Integer> quitUserMap = new HashMap<>();
+        if(!CollectionUtils.isEmpty(classGroupStudentMappers)){
+            quitUserMap = classGroupStudentMappers.stream().collect(Collectors.groupingBy(e -> Long.parseLong(e.getMusicGroupId()), Collectors.collectingAndThen(Collectors.toList(), v -> v.get(0).getUserId())));
+        }
         for (VipGroup noCreateSuccessVipGroup : noCreateSuccessVipGroups) {
-            int i = courseScheduleStudentPaymentDao.countStudentCourseNumWithGroup(GroupType.VIP, noCreateSuccessVipGroup.getId().toString());
+            GroupType groupType = GroupType.VIP;
+            OrderTypeEnum orderTypeEnum = OrderTypeEnum.SMALL_CLASS_TO_BUY;
+            if("LIVE".equals(noCreateSuccessVipGroup.getGroupType())){
+                groupType = GroupType.LIVE;
+                orderTypeEnum = OrderTypeEnum.LIVE_GROUP_BUY;
+            }
+            int i = courseScheduleStudentPaymentDao.countStudentCourseNumWithGroup(groupType, noCreateSuccessVipGroup.getId().toString());
             if (i > 0) {
                 continue;
             }
             noCreateSuccessVipGroup.setStatus(VipGroupStatusEnum.CANCEL);
             List<StudentPaymentOrder> studentPaymentOrders = studentPaymentOrderDao.queryByDealStatus(noCreateSuccessVipGroup.getId().toString(),
-                    OrderTypeEnum.SMALL_CLASS_TO_BUY, DealStatusEnum.SUCCESS);
+                    orderTypeEnum, DealStatusEnum.SUCCESS);
 
             for (StudentPaymentOrder studentPaymentOrder : studentPaymentOrders) {
+                if(studentPaymentOrder.getUserId().equals(quitUserMap.get(noCreateSuccessVipGroup.getId()))){
+
+                }
                 //生成账户资金明细
                 if (studentPaymentOrder.getExpectAmount().compareTo(BigDecimal.ZERO) > 0) {
                     if(Objects.equals("关闭订单,实际支付成功,退到用户余额",studentPaymentOrder.getMemo())){
                         continue;
                     }
+                    //是否退课
                     sysUserCashAccountService.updateBalance(studentPaymentOrder.getUserId(), studentPaymentOrder.getExpectAmount());
                     SysUserCashAccount sysUserCashAccount = sysUserCashAccountService.get(studentPaymentOrder.getUserId());
                     SysUserCashAccountDetail sysUserIncomeCashAccountDetail = new SysUserCashAccountDetail();
@@ -4485,4 +4512,21 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
         return vipGroupApplyDto;
 
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void createLiveCourse() {
+        List<VipGroup> vipGroups = vipGroupDao.findNoCreateSuccessVipGroup(null,"LIVE");
+        if(!CollectionUtils.isEmpty(vipGroups)){
+            List<VipGroup> noStudentGroup = vipGroups.stream().filter(e -> StringUtils.isEmpty(e.getStudentIdList())).collect(Collectors.toList());
+            List<VipGroup> hasStudentGroup = vipGroups.stream().filter(e -> StringUtils.isNotEmpty(e.getStudentIdList())).collect(Collectors.toList());
+            if(!CollectionUtils.isEmpty(noStudentGroup)){
+                //关闭课程组
+
+            }
+            if(!CollectionUtils.isEmpty(hasStudentGroup)){
+                //排课
+            }
+        }
+    }
 }

+ 8 - 0
mec-biz/src/main/resources/config/mybatis/ClassGroupStudentMapperMapper.xml

@@ -718,4 +718,12 @@
 		WHERE cgsm.group_type_ = 'VIP' and vg.group_status_ in (2,6) and cg.del_flag_ != 1 GROUP BY cgsm.class_group_id_
 		) a WHERE a.total_student_num_ = a.quit_student_num_
     </select>
+    <select id="findByVipGroups" resultMap="ClassGroupStudentMapper">
+        select * from class_group_student_mapper
+        where music_group_id_ IN
+        <foreach collection="groupIds" separator="," open="(" close=")" item="groupId">
+            #{groupId}
+        </foreach>
+        and group_type_ IN ('VIP','LIVE') and status_ = 'QUIT'
+    </select>
 </mapper>

+ 1 - 2
mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml

@@ -571,8 +571,7 @@
         SELECT *
         FROM student_payment_order
         WHERE music_group_id_ = #{musicGroupId}
-          AND type_ =
-              #{type}
+          AND type_ = #{type}
           AND status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
     </select>
 

+ 9 - 1
mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml

@@ -912,7 +912,10 @@
             OR courses_start_date &lt; NOW())
           AND group_status_ = 1 
           <if test="tenantId != null">
-          and tenant_id_ = #{tenantId}
+            and tenant_id_ = #{tenantId}
+          </if>
+          <if test="groupType != null and groupType != ''">
+            and group_type_ = #{groupType}
           </if>
     </select>
 
@@ -1035,6 +1038,11 @@
             WHERE id_ = #{item.id} and tenant_id_ = #{item.tenantId}
         </foreach>
     </update>
+    <update id="updateStudentIdList">
+        update vip_group set student_id_list_ = CASE WHEN student_id_list_ IS NULL OR student_id_list_ = ''
+            THEN #{userId} ELSE CONCAT(student_id_list_,',',#{userId}) END,update_time_ = NOW()
+        where id_ = #{groupId}
+    </update>
 
     <select id="queryRequiredOverList" resultMap="VipGroup">
         SELECT

+ 1 - 1
mec-web/src/main/java/com/ym/mec/web/controller/TaskController.java

@@ -631,7 +631,7 @@ public class TaskController extends BaseController {
 		//修改训练营状态
         tempLittleArtistTrainingCampService.checkCampState();
 		//直播课排课
-
+		vipGroupService.createLiveCourse();
     }
 
     @ApiOperation("统计老师课程云教练使用时长")