Browse Source

Merge branch 'feature/1022_vip' into feature/1106_homework

刘俊驰 4 months ago
parent
commit
093b7b3018
31 changed files with 208 additions and 93 deletions
  1. 16 3
      mec-application/src/main/java/com/ym/mec/student/controller/ActivityController.java
  2. 10 0
      mec-application/src/main/java/com/ym/mec/student/controller/LessonCoursewareController.java
  3. 14 6
      mec-application/src/main/java/com/ym/mec/student/controller/MemberRankController.java
  4. 1 1
      mec-application/src/main/java/com/ym/mec/student/controller/MusicSheetController.java
  5. 9 6
      mec-application/src/main/java/com/ym/mec/student/controller/StudentOrderController.java
  6. 1 0
      mec-application/src/main/java/com/ym/mec/teacher/controller/LessonCoursewareController.java
  7. 1 0
      mec-application/src/main/java/com/ym/mec/web/controller/MusicSheetController.java
  8. 1 1
      mec-application/src/main/java/com/ym/mec/web/controller/StudentRegistrationController.java
  9. 0 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CloudTeacherOrderDao.java
  10. 5 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ImUserFriendDao.java
  11. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentMemberUpdateLogDao.java
  12. 6 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/VipGroupActivity.java
  13. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/LessonCoursewareWrapper.java
  14. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/MemberRankSettingWrapper.java
  15. 11 10
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ActivityUserMapperServiceImpl.java
  16. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CloudCoachPaymentProgramServiceImpl.java
  17. 15 11
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CloudTeacherOrderServiceImpl.java
  18. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExportServiceImpl.java
  19. 48 16
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/LessonCoursewareServiceImpl.java
  20. 13 12
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MemberRankSettingServiceImpl.java
  21. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentMemberTimeServiceImpl.java
  22. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderDetailServiceImpl.java
  23. 24 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServiceImpl.java
  24. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java
  25. 4 7
      mec-biz/src/main/resources/config/mybatis/CloudTeacherOrderMapper.xml
  26. 3 1
      mec-biz/src/main/resources/config/mybatis/MemberRankSettingMapper.xml
  27. 2 1
      mec-biz/src/main/resources/config/mybatis/StudentMapper.xml
  28. 3 0
      mec-biz/src/main/resources/config/mybatis/StudentMemberUpdateLogMapper.xml
  29. 1 1
      mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml
  30. 1 1
      mec-common/audit-log/src/main/java/com/yonge/log/interceptor/AuditLogInterceptor.java
  31. 3 3
      mec-util/src/main/java/com/ym/mec/util/date/DateUtil.java

+ 16 - 3
mec-application/src/main/java/com/ym/mec/student/controller/ActivityController.java

@@ -15,12 +15,11 @@ import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.MediaType;
-import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -52,6 +51,8 @@ public class ActivityController extends BaseController {
     private MusicGroupPlanMakingService musicGroupPlanMakingService;
     @Autowired
     private SubjectService subjectService;
+    @Autowired
+    private MemberRankSettingService memberRankSettingService;
 
     @ApiOperation("活动购买")
     @PostMapping(value = "/buy")
@@ -194,11 +195,23 @@ public class ActivityController extends BaseController {
         Map<String, String> categoryMap = vipGroupCategoryDao.findConditionCategorys().stream().collect(Collectors.toMap(e-> e.getId().toString(), ConditionDto::getName));
         vipGroupActivity.setVipGroupCategoryNames(categoryMap.get(vipGroupActivity.getVipGroupCategoryIdList()));
         vipGroupActivity.setGiveCategoryName(categoryMap.get(vipGroupActivity.getGiveCategoryId()));
+        if (vipGroupActivity.getMemberRankId() != null) {
+            MemberRankSetting rankSetting = memberRankSettingService.get(vipGroupActivity.getMemberRankId());
+            if(rankSetting != null){
+                vipGroupActivity.setMemberRankName(rankSetting.getName());
+            }
+        }
+        if (vipGroupActivity.getGiveMemberRankId() != null) {
+            MemberRankSetting rankSetting = memberRankSettingService.get(vipGroupActivity.getGiveMemberRankId());
+            if(rankSetting != null){
+                vipGroupActivity.setGiveMemberRankName(rankSetting.getName());
+            }
+        }
         //如果是固定金额
         if(vipGroupActivity.getFixedCourseNumFlag()){
             vipGroupActivity.setDisplayPrice(vipGroupActivity.getMarketPrice());
         }else {
-            vipGroupActivity.setDisplayPrice(vipGroupActivity.getSinglePrice().multiply(vipGroupActivity.getDiscount()).divide(new BigDecimal(100), 0, ROUND_UP));
+            vipGroupActivity.setDisplayPrice(vipGroupActivity.getSinglePrice().multiply(vipGroupActivity.getDiscount()).divide(new BigDecimal(100), 0, RoundingMode.UP));
         }
         vipGroupActivityService.setActivityType(vipGroupActivity);
         return succeed(vipGroupActivity);

+ 10 - 0
mec-application/src/main/java/com/ym/mec/student/controller/LessonCoursewareController.java

@@ -10,6 +10,8 @@ import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.CloudTeacherOrderDao;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.ClientEnum;
+import com.ym.mec.biz.dal.entity.Subject;
+import com.ym.mec.biz.dal.enums.ClientEnum;
 import com.ym.mec.biz.dal.wrapper.LessonCoursewareWrapper;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.controller.BaseController;
@@ -170,4 +172,12 @@ public class LessonCoursewareController extends BaseController {
 	public HttpResponseResult<List<Subject>> getLessonCoursewareSubjectList(){
 		return succeed(lessonCoursewareService.getDao().getLessonCoursewareSubjectList());
 	}
+
+    @ApiOperation(value = "关联课程类型")
+    @PostMapping("/refLevel")
+    public HttpResponseResult<List<LessonCoursewareWrapper.RefLevelDetailInfo>> refLevel(@RequestBody LessonCoursewareWrapper.RefLevelQuery query) {
+        query.setTeacherId(sysUserService.getUserId());
+        query.setClient(ClientEnum.STUDENT);
+        return succeed(lessonCoursewareService.refLevel(query));
+    }
 }

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

@@ -5,18 +5,16 @@ import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.MemberRankOrganizationFeeMapperDao;
 import com.ym.mec.biz.dal.dao.SysMusicScoreDao;
 import com.ym.mec.biz.dal.dto.MemberPayParamDto;
-import com.ym.mec.biz.dal.entity.MemberRankOrganizationFeeMapper;
-import com.ym.mec.biz.dal.entity.MemberRankSetting;
-import com.ym.mec.biz.dal.entity.SysMusicScore;
+import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.page.CloudTeacherOrderQueryInfo;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.page.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
@@ -41,9 +39,12 @@ public class MemberRankController extends BaseController {
     @Resource
     private MemberRankOrganizationFeeMapperDao memberRankOrganizationFeeMapperDao;
 
-    @Autowired
+    @Resource
     private SysMusicScoreDao sysMusicScoreDao;
 
+    @Resource
+    private LessonCoursewareService lessonCoursewareService;
+
     @ApiOperation(value = "获取所有的收费标准")
     @GetMapping("/queryList")
     public Object getMemberDefaultFee(String  type,Integer  typeId) {
@@ -57,6 +58,12 @@ public class MemberRankController extends BaseController {
             if (sysMusicScore != null) {
                 typeId = sysMusicScore.getCbsMusicCategoriesId();
             }
+        } else if (StringUtils.isNotBlank(type)&& "LESSON".equals(type) && typeId !=null) {
+            // 远程ID 换课件ID
+            LessonCourseware courseware = lessonCoursewareService.getByLessonCoursewareId(typeId.longValue());
+            if (courseware != null) {
+                typeId = courseware.getId();
+            }
         }
         List<Integer> memberIds = feeMappers.stream()
                 .map(MemberRankOrganizationFeeMapper::getMemberRankSettingId).distinct().collect(Collectors.toList());
@@ -137,8 +144,9 @@ public class MemberRankController extends BaseController {
 
     @ApiOperation(value = "查询订单列表")
     @GetMapping("/queryOrderPage")
-    public Object queryOrderPage(CloudTeacherOrderQueryInfo queryInfo) {
+    public HttpResponseResult<PageInfo<CloudTeacherOrder>> queryOrderPage(CloudTeacherOrderQueryInfo queryInfo) {
         queryInfo.setStudentId(sysUserService.getUserId());
+        queryInfo.setStatus("1,2");
         return succeed(cloudTeacherOrderService.queryPage(queryInfo));
     }
 

+ 1 - 1
mec-application/src/main/java/com/ym/mec/student/controller/MusicSheetController.java

@@ -130,7 +130,7 @@ public class MusicSheetController {
                 queryInfo.setSubjectId(instrument.getSubjectId());
             }
         } else if (StringUtils.isNotBlank(student.getSubjectIdList())){
-            queryInfo.setSubjectId(Integer.parseInt(student.getSubjectIdList()));
+//            queryInfo.setSubjectId(Integer.parseInt(student.getSubjectIdList()));
         }
         queryInfo.setPage(query.getPage());
         queryInfo.setRows(query.getRows());

+ 9 - 6
mec-application/src/main/java/com/ym/mec/student/controller/StudentOrderController.java

@@ -433,12 +433,15 @@ public class StudentOrderController extends BaseController {
             }
             orderDetail.put("detail", vipGroupActivities);
         } else if (orderByOrderNo.getGroupType().equals(GroupType.MEMBER)) {
-            CloudTeacherOrderDto orderDto = cloudTeacherOrderService.queryOrderInfoByOrderId(orderByOrderNo.getId()).get(0);
-            orderDetail.put("detail", orderDto);
-            if (orderDto != null) {
-                Map<String, Object> map = new HashMap<>(1);
-                map.put("paymentOrderId", orderDto.getCloudTeacherOrder().getOrderId());
-                orderDetail.put("couponList", sysCouponCodeDao.querySysCouponUseList(map));
+            List<CloudTeacherOrderDto> cloudTeacherOrderDtos = cloudTeacherOrderService.queryOrderInfoByOrderId(orderByOrderNo.getId());
+            if(CollectionUtils.isNotEmpty(cloudTeacherOrderDtos)){
+                CloudTeacherOrderDto orderDto = cloudTeacherOrderDtos.get(0);
+                orderDetail.put("detail", orderDto);
+                if (orderDto != null) {
+                    Map<String, Object> map = new HashMap<>(1);
+                    map.put("paymentOrderId", orderDto.getCloudTeacherOrder().getOrderId());
+                    orderDetail.put("couponList", sysCouponCodeDao.querySysCouponUseList(map));
+                }
             }
         } else if (orderByOrderNo.getGroupType().equals(GroupType.LIVE_BUY)) {
             orderDetail.put("detail", vipGroupActivityService.getDao().queryByIds(orderByOrderNo.getActivityId()));

+ 1 - 0
mec-application/src/main/java/com/ym/mec/teacher/controller/LessonCoursewareController.java

@@ -112,6 +112,7 @@ public class LessonCoursewareController extends BaseController {
 	@PostMapping("/refLevel")
 	public HttpResponseResult<List<LessonCoursewareWrapper.RefLevelDetailInfo>> refLevel(@RequestBody LessonCoursewareWrapper.RefLevelQuery query) {
 		query.setTeacherId(sysUserService.getUserId());
+        query.setClient(ClientEnum.TEACHER);
 		return succeed(lessonCoursewareService.refLevel(query));
 	}
 }

+ 1 - 0
mec-application/src/main/java/com/ym/mec/web/controller/MusicSheetController.java

@@ -148,6 +148,7 @@ public class MusicSheetController {
             musicSheet.setUsedNum(0L);
             musicSheet.setPaymentType(StringUtils.isNotBlank(o.getRankIds()) && o.getRankIds().contains("1") ? "VIP" : "FREE");
             musicSheet.setAudioPlayTypes(o.getAudioPlayTypes());
+            musicSheet.setUseStatus(o.getUseStatus());
 
             return musicSheet;
         });

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

@@ -107,7 +107,7 @@ public class StudentRegistrationController extends BaseController {
     @ApiOperation(value = "乐团【报名中、缴费中】 学生详情列表分页查询")
     @GetMapping("/queryStudentApplyDetail")
     @PreAuthorize("@pcs.hasPermissions('studentRegistration/queryStudentApplyDetail')")
-    public Object queryStudentApplyDetail(StudentRegistrationQueryInfo queryInfo) {
+    public HttpResponseResult<PageInfo<StudentApplyDetailDto>> queryStudentApplyDetail(StudentRegistrationQueryInfo queryInfo) {
         return succeed(studentRegistrationService.queryStudentDetailPage(queryInfo));
     }
 

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

@@ -133,8 +133,6 @@ public interface CloudTeacherOrderDao extends BaseDAO<Long, CloudTeacherOrder> {
 
     int countByMemberRankSettingId(@Param("memberRankSettingId") List<Integer> memberRankSettingId);
 
-    Date getActivationMaxTime(@Param("studentId") Integer studentId, @Param("level") Integer level);
-
     List<Integer> getActivationVipIds(Integer userId);
 
     List<CloudTeacherOrder> queryByUserIds(@Param("userIds") List<Integer> userIds, @Param("status") Integer status);

+ 5 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ImUserFriendDao.java

@@ -43,7 +43,11 @@ public interface ImUserFriendDao extends BaseDAO<Long, ImUserFriend> {
 
     List<NameDto> queryNameByIds(@Param("ids") String ids, @Param("userId") Integer userId);
 
-    List<ImUserFriendDto> queryFriendListByUserIdV2(@Param("userId") Integer userId, @Param("search") String search, @Param("musicGroupId") String musicGroupId, @Param("subjectId") Integer subjectId, @Param("vipFlag") Boolean vipFlag);
+    List<ImUserFriendDto> queryFriendListByUserIdV2(@Param("userId") Integer userId,
+													@Param("search") String search,
+													@Param("musicGroupId") String musicGroupId,
+													@Param("subjectId") Integer subjectId,
+													@Param("vipFlag") Boolean vipFlag);
 
     /**
      *  删除好友关系

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentMemberUpdateLogDao.java

@@ -6,6 +6,7 @@ import com.ym.mec.biz.dal.entity.StudentMemberUpdateLog;
 import com.ym.mec.biz.dal.wrapper.StudentMemberUpdateLogWrapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -19,5 +20,7 @@ public interface StudentMemberUpdateLogDao extends BaseMapper<StudentMemberUpdat
    int insertBatch(@Param("entities") List<StudentMemberUpdateLog> entities);
 
     IPage<StudentMemberUpdateLogWrapper.StudentMemberUpdateLog> selectPage(@Param("page") IPage<StudentMemberUpdateLogWrapper.StudentMemberUpdateLog> page, @Param("param") StudentMemberUpdateLogWrapper.StudentMemberUpdateLogQuery query);
+
+    Date getActivationMaxTime(@Param("studentId") Integer studentId, @Param("level") Integer level);
 }
 

+ 6 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/VipGroupActivity.java

@@ -70,6 +70,12 @@ public class VipGroupActivity{
 	@ApiModelProperty(value = "赠课类型")
 	private String giveCourseType;
 
+	@ApiModelProperty(value = "赠课名称")
+	private String giveMemberRankName;
+
+	@ApiModelProperty(value = "课名称")
+	private String memberRankName;
+
 	@ApiModelProperty(value = "课类型")
 	private String courseType;
 

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/LessonCoursewareWrapper.java

@@ -219,6 +219,8 @@ public class LessonCoursewareWrapper {
         @ApiModelProperty("是否当前使用")
         private Boolean useFlag;
 
+        @ApiModelProperty("使用状态 锁定: LOCK 解锁:UNLOCK")
+        private String useStatus;
     }
 
     @Data
@@ -229,6 +231,8 @@ public class LessonCoursewareWrapper {
 
         @ApiModelProperty(value = "老师ID",hidden = true)
         private Integer teacherId;
+
+        private ClientEnum client;
     }
 
     @Data

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/MemberRankSettingWrapper.java

@@ -52,6 +52,9 @@ public class MemberRankSettingWrapper {
         @ApiModelProperty("学生ID")
         private Integer studentId;
 
+        @ApiModelProperty("是否删除")
+        private Boolean delFlag = false;
+
         public String jsonString() {
             return JSON.toJSONString(this);
         }

+ 11 - 10
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ActivityUserMapperServiceImpl.java

@@ -318,7 +318,7 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
     public void addOrderDetail2Activity(StudentPaymentOrder studentPaymentOrder, List<StudentPaymentOrderDetail> activity) {
 		List<VipGroupActivity> vipGroupActivities = vipGroupActivityDao.queryByIds(activity.stream().
 				map(e -> e.getStudentInstrumentId().toString()).distinct().collect(Collectors.joining(",")));
-		Map<Integer, VipGroupActivity> collect = vipGroupActivities.stream().collect(Collectors.groupingBy(e -> e.getId(),
+		Map<Integer, VipGroupActivity> collect = vipGroupActivities.stream().collect(Collectors.groupingBy(VipGroupActivity::getId,
 				Collectors.collectingAndThen(Collectors.toList(), value -> value.get(0))));
 		List<ActivityUserMapper> activityUserMapperList = new ArrayList<>();
 		Long calenderId = null;
@@ -326,7 +326,7 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
 		MusicGroupPaymentCalender musicGroupPaymentCalender = musicGroupPaymentCalenderDao.get(studentPaymentOrder.getCalenderId());
 		if(musicGroupPaymentCalender.getCloudTeacherPaymentFlag()){
 			List<MusicGroupPaymentCalenderActivity> activities = musicGroupPaymentCalenderActivityDao.findByCalenderId(musicGroupPaymentCalender.getId());
-			BigDecimal reduce = activities.stream().map(e -> e.getActualAmount()).reduce(ZERO, BigDecimal::add);
+			BigDecimal reduce = activities.stream().map(MusicGroupPaymentCalenderBase::getActualAmount).reduce(ZERO, BigDecimal::add);
 			if(reduce.compareTo(ZERO) == 0){
 				calenderId = studentPaymentOrder.getCalenderId();
 			}
@@ -344,6 +344,7 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
 			activityUserMapper.setPaymentOrderId(studentPaymentOrder.getId());
 			activityUserMapper.setCalenderId(calenderId);
 			activityUserMapper.setOrganId(studentPaymentOrder.getOrganId());
+			activityUserMapper.setAddMemo(vipGroupActivity.getName());
 			if(orderDetail.getType() == OrderDetailTypeEnum.VIP){
 				activityUserMapper.setVipFlag(1);
 			}else {
@@ -477,7 +478,7 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
 		if (StringUtils.isBlank(applyBaseInfo.getSubjectIdList())) {
 			throw new BizException("请选择声部");
 		}
-		List<Integer> studentIdList = Arrays.stream(studentIds.split(",")).map(id -> Integer.valueOf(id)).collect(Collectors.toList());
+		List<Integer> studentIdList = Arrays.stream(studentIds.split(",")).map(Integer::valueOf).collect(Collectors.toList());
 		if (!vipGroupCategory.getMusicTheory()) {
 			if (studentIdList.size() != vipGroupCategory.getStudentNum()) {
 				throw new BizException("学员数量异常");
@@ -486,7 +487,7 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
 			throw new BizException("{}课程最多支持{}人", vipGroupCategory.getName(), vipGroupCategory.getStudentNum());
 		}
 
-		List<Integer> canBuyStudentIds = Arrays.stream(applyBaseInfo.getStudentIdList().split(",")).map(e -> Integer.valueOf(e)).collect(Collectors.toList());
+		List<Integer> canBuyStudentIds = Arrays.stream(applyBaseInfo.getStudentIdList().split(",")).map(Integer::valueOf).collect(Collectors.toList());
 
 		int repeatVipGroups = vipGroupDao.countUserRepeatVipGroupInCourseStartEndTime(applyBaseInfo.getUserId(), firstCourseSchedule.getStartClassTime(), latestCourseSchedule.getEndClassTime());
 		if (repeatVipGroups > 0) {
@@ -498,7 +499,7 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
 
 		//生成vip课信息
 		List<String> bySubIds = subjectDao.findBySubIds(applyBaseInfo.getSubjectIdList());
-		StringBuffer className = new StringBuffer();
+		StringBuilder className = new StringBuilder();
 		if (Objects.isNull(vipGroupCategory.getMusicTheory()) || !vipGroupCategory.getMusicTheory()) {
 			className.append(StringUtils.join(bySubIds, ","));
 			className.append(vipGroupCategory.getName());
@@ -618,10 +619,10 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
 		//如果是1V1的课程,需要处理老师课酬
 		Map<Integer, String> settlementMap = new HashMap<>();
 		if (vipGroupCategory.getStudentNum() == 1){
-			List<Integer> activityUserMapperIds = courseScheduleStudentPayments.stream().map(e -> e.getActivityUserMapperId()).distinct().collect(Collectors.toList());
+			List<Integer> activityUserMapperIds = courseScheduleStudentPayments.stream().map(CourseScheduleStudentPayment::getActivityUserMapperId).distinct().collect(Collectors.toList());
 			if(CollectionUtils.isNotEmpty(activityUserMapperIds)){
 				List<ActivityUserMapperSettlementDto> activityUserMapperSettlementDtos = activityUserMapperDao.querySettlementByIds(activityUserMapperIds);
-				settlementMap = activityUserMapperSettlementDtos.stream().collect(Collectors.groupingBy(e -> e.getActivityId(),
+				settlementMap = activityUserMapperSettlementDtos.stream().collect(Collectors.groupingBy(ActivityUserMapperSettlementDto::getActivityId,
 						Collectors.collectingAndThen(Collectors.toList(), v -> v.get(0).getSalarySettlementJson())));
 			}
 		}
@@ -681,7 +682,7 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
 			}
 		}
 		//处理老师课酬
-		if (courseScheduleTeacherSalaries.size() > 0) {
+		if (CollectionUtils.isNotEmpty(courseScheduleTeacherSalaries)) {
 			if(settlementMap.size() > 0){
 				Map<Long,CourseScheduleStudentPayment> courseActivityUserMap = courseScheduleStudentPayments.stream().collect(Collectors.groupingBy(CourseScheduleStudentPayment::getCourseScheduleId,
 						Collectors.collectingAndThen(Collectors.toList(),value->value.get(0))));
@@ -707,7 +708,7 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
 			courseScheduleTeacherSalaryService.batchInsert(courseScheduleTeacherSalaries);
 		}
 
-		if (courseScheduleStudentPayments.size() > 0) {
+		if (CollectionUtils.isNotEmpty(courseScheduleStudentPayments)) {
 			List<CourseScheduleStudentPayment> payments = courseScheduleStudentPayments.stream().filter(e -> e.getCalenderId() != null).collect(Collectors.toList());
 			if(CollectionUtils.isNotEmpty(payments)){
 				//更新课程预收
@@ -715,7 +716,7 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
 				for (Long calenderId : map.keySet()) {
 					List<CourseScheduleStudentPayment> studentPayments = map.get(calenderId);
 					Map<Integer,List<Long>> userMap = studentPayments.stream().collect(Collectors.groupingBy(CourseScheduleStudentPayment::getUserId,
-							Collectors.collectingAndThen(Collectors.toList(),value->value.stream().map(e->e.getCourseScheduleId()).collect(Collectors.toList()))));
+							Collectors.collectingAndThen(Collectors.toList(),value->value.stream().map(CourseScheduleStudentPayment::getCourseScheduleId).collect(Collectors.toList()))));
 					userMap.keySet().stream().forEach(e-> operatingReportCloudService.updateSet(calenderId,userMap.get(e)));
 				}
 			}

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

@@ -157,7 +157,7 @@ public class CloudCoachPaymentProgramServiceImpl extends BaseServiceImpl<Long, C
 			//推送缴费消息
 			//TenantInfo tenantInfo = tenantInfoDao.selectById(cloudCoachPaymentProgram.getTenantId());
 			Map<Integer, String> phoneMaps = MapUtil.convertMybatisMap(teacherDao.queryPhoneByIds(StringUtils.join(userIds,",")));
-			String baseApiUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL);
+			String baseApiUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL_MDAYA);
 			StringBuffer pushUrl = new StringBuffer(baseApiUrl).append("/#/studentMember?id=").append(cloudCoachPaymentProgram.getId());
 			sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.STUDENT_SMS_CLOUD_PAYMENT,phoneMaps,
 					null,0,"",null, HttpUtil.getSortUrl(pushUrl.toString()));

+ 15 - 11
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CloudTeacherOrderServiceImpl.java

@@ -352,14 +352,15 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
     @Transactional(rollbackFor = Exception.class)
     public void activationMember(Date now,CloudTeacherOrder cloudTeacherOrder){
         //获取已激活的云教练最大时间
-        Date maxTime = cloudTeacherOrderDao.getActivationMaxTime(cloudTeacherOrder.getStudentId(),cloudTeacherOrder.getLevel());
+        Date maxTime = studentMemberUpdateLogService.getDao().getActivationMaxTime(cloudTeacherOrder.getStudentId(),cloudTeacherOrder.getLevel());
         if (maxTime != null && maxTime.compareTo(now) > 0) {
             now = maxTime;
         }
         Date startTime = DateUtil.trunc(now);
         Date endTime = this.calcCloudTeacherOrderTime(cloudTeacherOrder, startTime);
         cloudTeacherOrder.setStartTime(startTime);
-        cloudTeacherOrder.setEndTime(DateUtil.addDays(endTime,1));
+//        cloudTeacherOrder.setEndTime(DateUtil.addDays(endTime,1));
+        cloudTeacherOrder.setEndTime(endTime);
         cloudTeacherOrder.setStatus(2);
         if(Objects.isNull(cloudTeacherOrder.getId())){
             cloudTeacherOrderDao.insert(cloudTeacherOrder);
@@ -368,23 +369,26 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
         }
         //保存学员会员时间
         studentMemberTimeService.saveToCloudTeacherOrder(cloudTeacherOrder);
-        studentDao.updateCloudTeacherEndTime(cloudTeacherOrder.getStudentId());
         //保存学员会员调整日志
         studentMemberUpdateLogService.saveToCloudTeacherOrder(cloudTeacherOrder);
+        studentDao.updateCloudTeacherEndTime(cloudTeacherOrder.getStudentId());
     }
 
     public Date calcCloudTeacherOrderTime(CloudTeacherOrder cloudTeacherOrder, Date startTime) {
         Date endTime = startTime;
         if (cloudTeacherOrder.getType() == DAY) { // 日
             endTime = DateUtil.addDays(startTime, cloudTeacherOrder.getTime());
-        } else if (cloudTeacherOrder.getType() == MONTH) { // 月
-            endTime = DateUtil.addMonths(startTime, cloudTeacherOrder.getTime());
-        } else if (cloudTeacherOrder.getType() == QUARTERLY) { // 季
-            endTime = DateUtil.addMonths(startTime, cloudTeacherOrder.getTime() * 3);
-        } else if (cloudTeacherOrder.getType() == YEAR_HALF) { // 半年
-            endTime = DateUtil.addMonths(startTime, cloudTeacherOrder.getTime() * 6);
-        } else if (cloudTeacherOrder.getType() == YEAR) { // 年
-            endTime = DateUtil.addYears(startTime, cloudTeacherOrder.getTime());
+        } else {
+            if (cloudTeacherOrder.getType() == MONTH) { // 月
+                endTime = DateUtil.addMonths(startTime, cloudTeacherOrder.getTime());
+            } else if (cloudTeacherOrder.getType() == QUARTERLY) { // 季
+                endTime = DateUtil.addMonths(startTime, cloudTeacherOrder.getTime() * 3);
+            } else if (cloudTeacherOrder.getType() == YEAR_HALF) { // 半年
+                endTime = DateUtil.addMonths(startTime, cloudTeacherOrder.getTime() * 6);
+            } else if (cloudTeacherOrder.getType() == YEAR) { // 年
+                endTime = DateUtil.addYears(startTime, cloudTeacherOrder.getTime());
+            }
+            endTime = DateUtil.addDays(endTime, +1);
         }
         return endTime;
     }

+ 2 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExportServiceImpl.java

@@ -1806,7 +1806,7 @@ public class ExportServiceImpl implements ExportService {
         if (StringUtils.isNotBlank(queryInfo.getSearch())) {
             List<BasicUserDto> users = studentPaymentOrderService.getDao().getUsers(queryInfo.getSearch());
             List<Integer> userIds = users.stream().map(BasicUserDto::getUserId).collect(Collectors.toList());
-            if (userIds.size() <= 0) {
+            if (CollectionUtils.isEmpty(userIds)) {
                 userIds.add(0);
             }
             queryInfo.setUserIds(userIds);
@@ -2167,7 +2167,7 @@ public class ExportServiceImpl implements ExportService {
                             break;
                         case CLOUD_TEACHER:
                         case CLOUD_TEACHER_PLUS:
-                            row.setCloudTeacherFee(getActualAmount(orderDetail.getPrice(), row));
+                            row.setCloudTeacherFee(row.getCloudTeacherFee().add(getActualAmount(orderDetail.getPrice(), row)));
                             break;
                         case DEGREE_REGISTRATION:
                             row.setDegreeFee(getActualAmount(orderDetail.getPrice(), row));

+ 48 - 16
mec-biz/src/main/java/com/ym/mec/biz/service/impl/LessonCoursewareServiceImpl.java

@@ -7,27 +7,24 @@ import com.dayaedu.cbs.openfeign.client.CoursewareFeignService;
 import com.dayaedu.cbs.openfeign.wrapper.courseware.CbsLessonCoursewareDetailWrapper;
 import com.dayaedu.cbs.openfeign.wrapper.courseware.CbsLessonCoursewareWrapper;
 import com.dayaedu.cbs.openfeign.wrapper.courseware.CbsMaterialRefWrapper;
+import com.google.common.collect.Lists;
 import com.microsvc.toolkit.common.response.template.R;
+import com.ym.mec.biz.dal.dao.CloudTeacherOrderDao;
 import com.ym.mec.biz.dal.dao.SubjectDao;
 import com.ym.mec.biz.dal.dao.TeacherDao;
 import com.ym.mec.biz.dal.dto.SimpleUserDto;
-import com.ym.mec.biz.dal.entity.LessonCourseware;
-import com.ym.mec.biz.dal.entity.LessonCoursewareUserMapper;
-import com.ym.mec.biz.dal.entity.SysMusicScore;
-import com.ym.mec.biz.dal.entity.Teacher;
+import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.ClientEnum;
 import com.ym.mec.biz.dal.mapper.LessonCoursewareMapper;
 import com.ym.mec.biz.dal.wrapper.LessonCoursewareWrapper;
-import com.ym.mec.biz.service.LessonCoursewareService;
-import com.ym.mec.biz.service.LessonCoursewareUserMapperService;
-import com.ym.mec.biz.service.SysMusicScoreService;
-import com.ym.mec.biz.service.SysUserService;
+import com.ym.mec.biz.service.*;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.util.collection.MapUtil;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -58,6 +55,12 @@ public class LessonCoursewareServiceImpl extends ServiceImpl<LessonCoursewareMap
     @Resource
     private SysMusicScoreService sysMusicScoreService;
 
+    @Autowired
+    private CloudTeacherOrderDao cloudTeacherOrderDao;
+
+    @Autowired
+    private MemberRankCourseTypeMapperService memberRankCourseTypeMapperService;
+
     @Override
     public IPage<LessonCoursewareWrapper.LessonCoursewareDto> selectPage(IPage<LessonCoursewareWrapper.LessonCoursewareDto> page, LessonCoursewareWrapper.LessonCoursewareQuery query) {
         if(StringUtils.isNotEmpty(query.getSearch())){
@@ -219,18 +222,29 @@ public class LessonCoursewareServiceImpl extends ServiceImpl<LessonCoursewareMap
         if (lessonCourseware == null) {
             throw new BizException("课件未找到");
         }
-        Teacher teacher = teacherDao.get(query.getTeacherId());
-        if (teacher == null) {
-            throw new BizException("老师信息不存在");
-        }
-        if (lessonCoursewareDetail.getLevel() == null || teacher.getCoursewareFlag()) {
-            result.add(this.initRefLevelDetailInfo(lessonCoursewareDetail,lessonCourseware));
-            return result;
+        if (query.getClient() == ClientEnum.TEACHER) {
+            Teacher teacher = teacherDao.get(query.getTeacherId());
+            if (teacher == null) {
+                throw new BizException("老师信息不存在");
+            }
+            if (lessonCoursewareDetail.getLevel() == null || teacher.getCoursewareFlag()) {
+                result.add(this.initRefLevelDetailInfo(lessonCoursewareDetail, lessonCourseware));
+                return result;
+            }
+        } else {
+            if (lessonCoursewareDetail.getLevel() == null) {
+                result.add(this.initRefLevelDetailInfo(lessonCoursewareDetail, lessonCourseware));
+                return result;
+            }
         }
         LessonCoursewareWrapper.LessonCoursewareQuery query1 = new LessonCoursewareWrapper.LessonCoursewareQuery();
         query1.setPage(1);
         query1.setRows(9999);
-        query1.setTeacherId(query.getTeacherId());
+        if (query.getClient() == ClientEnum.STUDENT) {
+            query1.setStudentId(query.getTeacherId());
+        } else {
+            query1.setTeacherId(query.getTeacherId());
+        }
         query1.setEnable(true);
         List<LessonCoursewareWrapper.LessonCoursewareDto> dtos = baseMapper.list(query1);
         if(CollectionUtils.isEmpty(dtos)){
@@ -264,6 +278,21 @@ public class LessonCoursewareServiceImpl extends ServiceImpl<LessonCoursewareMap
             result.add(this.initRefLevelDetailInfo(lessonCoursewareDetail,lessonCourseware));
             return result;
         }
+        List<Long> lessonIds = new ArrayList<>();
+        if (query.getClient() == ClientEnum.STUDENT) {
+            List<Integer> activationVipIds = cloudTeacherOrderDao.getActivationVipIds(query.getTeacherId());
+
+            // 获取会员的曲目分类
+
+            List<MemberRankCourseTypeMapper> courseTypeMapperList = memberRankCourseTypeMapperService.getByMemberRankId(activationVipIds);
+            if (CollectionUtils.isEmpty(courseTypeMapperList)) {
+                courseTypeMapperList = Lists.newArrayList();
+            }
+            List<Integer> categoryIds = courseTypeMapperList.stream().map(MemberRankCourseTypeMapper::getCourseType)
+                .distinct().map(Integer::parseInt).collect(Collectors.toList());
+            // 本地的课件ID 换远程ID
+            lessonIds = getByLessonCoursewareIds(categoryIds).stream().map(LessonCourseware::getLessonCourseId).distinct().collect(Collectors.toList());
+        }
         for (CbsLessonCoursewareDetailWrapper.LessonCoursewareDetail coursewareDetail : lessonCoursewareDetails) {
             LessonCoursewareWrapper.RefLevelDetailInfo refLevelDetailInfo = new LessonCoursewareWrapper.RefLevelDetailInfo();
             refLevelDetailInfo.setId(coursewareDetail.getId());
@@ -277,6 +306,9 @@ public class LessonCoursewareServiceImpl extends ServiceImpl<LessonCoursewareMap
             refLevelDetailInfo.setLockFlag(false);
             refLevelDetailInfo.setLessonCoursewareName(lessonCourseware1.getName());
             refLevelDetailInfo.setUseFlag(coursewareDetail.getId().equals(query.getLessonCoursewareDetailId()));
+            if (lessonIds.contains(lessonCourseware1.getId()) || query.getClient() == ClientEnum.TEACHER) {
+                refLevelDetailInfo.setUseStatus("UNLOCK");
+            } else refLevelDetailInfo.setUseStatus("LOCK");
             result.add(refLevelDetailInfo);
         }
         return result;

+ 13 - 12
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MemberRankSettingServiceImpl.java

@@ -281,22 +281,22 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
     @Override
     @Transactional(rollbackFor = Exception.class)
     public HttpResponseResult buy(MemberPayParamDto memberPayParamDto) throws Exception {
-        logger.info("云教练购买:memberPayParamDto:{} ", memberPayParamDto);
+        logger.info("学练宝购买:memberPayParamDto:{} ", memberPayParamDto);
         Long paymentId = memberPayParamDto.getPaymentId();
         CloudCoachPaymentProgram cloudCoachPaymentProgram = cloudCoachPaymentProgramService.get(paymentId);
         if (cloudCoachPaymentProgram == null) {
-            throw new BizException("云教练缴费订单不存在,请联系指导老师");
+            throw new BizException("学练宝缴费订单不存在,请联系指导老师");
         }
         if (cloudCoachPaymentProgram.getStatus() != CloudCoachPaymentProgram.StatusEnum.OPEN) {
-            throw new BizException("当前云教练缴费订单状态不允许缴费");
+            throw new BizException("当前学练宝缴费订单状态不允许缴费");
         }
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         StudentCloudCoachPaymentDetails cloudCoachPaymentDetails = studentCloudCoachPaymentDetailsService.findByUserId(paymentId, sysUser.getId());
         if (cloudCoachPaymentDetails == null) {
-            throw new BizException("您不在当前云教练缴费项目中,请联系指导老师");
+            throw new BizException("您不在当前学练宝缴费项目中,请联系指导老师");
         }
         if (cloudCoachPaymentDetails.getPaymentStatus() == 1) {
-            throw new BizException("当前云教练订单已支付,感谢您的支持");
+            throw new BizException("当前学练宝订单已支付,感谢您的支持");
         }
         //判断用户是否已存在订单
         List<StudentPaymentOrder> applyOrderList = studentPaymentOrderService.queryByDealStatus(paymentId.toString(), OrderTypeEnum.MEMBER, DealStatusEnum.ING);
@@ -355,7 +355,7 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
         StudentPaymentOrder studentPaymentOrder = sysCouponCodeService.use(memberPayParamDto.getCouponIdList(), actualAmount, true, checkCoupon);
         studentPaymentOrder.setUserId(sysUser.getId());
         studentPaymentOrder.setOrganId(sysUser.getOrganId());
-        studentPaymentOrder.setMemo("学员云教练购买");
+        studentPaymentOrder.setMemo("学员学练宝购买");
         studentPaymentOrder.setGroupType(GroupType.MEMBER);
         this.getMap(memberPayParamDto.getAmount(), memberPayParamDto.getUseBalancePayment(),studentPaymentOrder);
         //生成团练宝订单
@@ -368,6 +368,7 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
         cloudTeacherOrder.setStudentId(sysUser.getId());
         cloudTeacherOrder.setOrganId(studentPaymentOrder.getOrganId());
         cloudTeacherOrder.setAmount(studentPaymentOrder.getExpectAmount());
+        cloudTeacherOrder.setOperatingAmount(studentPaymentOrder.getExpectAmount());
         cloudTeacherOrderService.insert(cloudTeacherOrder);
         Map<String, Object> result = studentPaymentOrderService.createOrder(studentPaymentOrder, null, "BUY_MEMBER");
         return BaseController.succeed(result);
@@ -456,7 +457,7 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
         StudentPaymentOrder studentPaymentOrder = sysCouponCodeService.use(memberPayParamDto.getCouponIdList(),amount, true, checkCoupon);
         studentPaymentOrder.setUserId(sysUser.getId());
         studentPaymentOrder.setOrganId(sysUser.getOrganId());
-        studentPaymentOrder.setMemo("小小训练营云教练购买");
+        studentPaymentOrder.setMemo("小小训练营学练宝购买");
         studentPaymentOrder.setGroupType(GroupType.LIVE_BUY);
         studentPaymentOrder.setType(OrderTypeEnum.LIVE_BUY);
         studentPaymentOrder.setActivityId(activityId.toString());
@@ -842,7 +843,7 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
         }
         if (studentPaymentOrder.getStatus() == DealStatusEnum.CLOSE || studentPaymentOrder.getStatus() == DealStatusEnum.FAILED) {
             //退还优惠券和余额
-            studentPaymentOrderService.returnBalanceAndCoupon(studentPaymentOrder, "直播购买云教练支付失败");
+            studentPaymentOrderService.returnBalanceAndCoupon(studentPaymentOrder, "直播购买学练宝支付失败");
             if(Objects.nonNull(studentPaymentOrder.getActivityId())){
                 //还原库存
                 liveGoodsService.addGoodsStock(1,null);
@@ -913,7 +914,7 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
             }
         }
         // 插入交易明细
-        sysUserCashAccountDetailService.saveSysUserCashAccountDetail(studentPaymentOrder, "直播购买云教练");
+        sysUserCashAccountDetailService.saveSysUserCashAccountDetail(studentPaymentOrder, "直播购买学练宝");
         try {
             contractService.transferProduceContract(userId, null, studentPaymentOrder.getType());
         } catch (Exception e) {
@@ -1021,13 +1022,13 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
                     }else {
                         CloudTeacherOrder cloudTeacherOrder = cloudTeacherOrderService.queryByOrderId(studentPaymentOrder.getId());
                         if (cloudTeacherOrder == null) {
-                            throw new BizException("该云教练订单不存在");
+                            throw new BizException("该学练宝订单不存在");
                         }
                         if(cloudTeacherOrder.getStatus() == 2){
-                            throw new BizException("该云教练订单已经生效");
+                            throw new BizException("该学练宝订单已经生效");
                         }
                         if(cloudTeacherOrder.getStatus() == 1){
-                            throw new BizException("该云教练订单已经支付");
+                            throw new BizException("该学练宝订单已经支付");
                         }
                         cloudTeacherOrderService.save(cloudTeacherOrder,true);
                     }

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

@@ -40,6 +40,7 @@ public class StudentMemberTimeServiceImpl extends ServiceImpl<StudentMemberTimeD
             this.save(one);
         }else {
             one.setEndTime(cloudTeacherOrder.getEndTime());
+            this.updateById(one);
         }
     }
 
@@ -71,7 +72,6 @@ public class StudentMemberTimeServiceImpl extends ServiceImpl<StudentMemberTimeD
                 throw new RuntimeException("学练宝已过期");
             }
         }else {
-
             if (one == null) {
                 one = new StudentMemberTime();
                 one.setMemberRankId(studentMemberUpdateLog.getLevel());

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

@@ -705,7 +705,7 @@ public class StudentPaymentOrderDetailServiceImpl extends BaseServiceImpl<Long,
 
         imUserFriendService.refreshGroupImUserFriend(studentRegistration.getMusicGroupId(), null);
         //缴费项目详情
-        MusicGroupPaymentCalenderDetail paymentCalenderDetail = musicGroupPaymentCalenderDetailService.addCalenderDetail(studentPaymentOrder);
+//        MusicGroupPaymentCalenderDetail paymentCalenderDetail = musicGroupPaymentCalenderDetailService.addCalenderDetail(studentPaymentOrder);
 
         //销售订单详情
         if (allDetails.size() > 0 && (detailTypeEnums.contains(MUSICAL) || detailTypeEnums.contains(ACCESSORIES) || detailTypeEnums.contains(TEACHING))) {

+ 24 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServiceImpl.java

@@ -1245,7 +1245,10 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
     @Override
     public List<IndexCloudStudySumDto> getCloudStudyStudentOverViewList(List<Integer> organIdsList) {
         List<IndexCloudStudySumDto> list = studentDao.getCloudStudyStudentOverViewList(organIdsList);
-        Set<Integer> organIds = list.stream().map(e -> e.getOrganId()).collect(Collectors.toSet());
+        if (CollectionUtils.isEmpty(list)) {
+            return list;
+        }
+        Set<Integer> organIds = list.stream().map(IndexCloudStudySumDto::getOrganId).collect(Collectors.toSet());
         Map<Integer,String> organMap = MapUtil.convertMybatisMap(organizationDao.findOrganNameMapList(organIds));
         //获取待激活学员数
         Map<Integer,Long> waitMap = MapUtil.convertIntegerMap(cloudTeacherOrderDao.getWaitActivateMap(organIdsList));
@@ -1593,23 +1596,40 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
         studentMemberUpdateLog.setBuyType(param.getType());
         //保存学员会员时间
         studentMemberTimeService.saveToStudentMemberUpdateLog(studentMemberUpdateLog);
-        studentDao.updateCloudTeacherEndTime(userId);
         studentMemberUpdateLog.setName(memberRankSettingService.queryMemberName(param.getMemberRankId()));
         //添加修改日志
         studentMemberUpdateLogDao.insert(studentMemberUpdateLog);
+        studentDao.updateCloudTeacherEndTime(userId);
         if(param.getPushFlag()){
             //推送消息
             //您获得/扣减了XXXX{数量+周期}的XXXX{学练宝版本},原因:XXXXX{添加/扣减原因}
             Map<Integer, String> userMap = new HashMap<>(1);
             userMap.put(userId, userId.toString());
+            String msg = "";
+            switch (param.getPeriodType()) {
+                case YEAR:
+                    msg = param.getNumber() * 12 + "个月";
+                    break;
+                case YEAR_HALF:
+                    msg = param.getNumber() * 6 + "个月";
+                    break;
+                case QUARTERLY:
+                    msg = param.getNumber() * 3 + "个月";
+                    break;
+                case MONTH:
+                    msg = param.getNumber() + "个月";
+                    break;
+                case DAY:
+                    msg = param.getNumber() + "天";
+                    break;
+            }
             sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG,
                     MessageTypeEnum.PUSH_STUDENT_MEMBER_UPDATE_MESSAGE,
                     userMap,
                     null,
                     0,
                     null,
-                    "STUDENT",param.getType()==3?"扣减":"获得",param.getNumber()+
-                    param.getPeriodType().getMsg(),studentMemberUpdateLog.getName(),param.getMemo());
+                    "STUDENT",param.getType()==3?"扣减":"获得",msg,studentMemberUpdateLog.getName(),param.getMemo());
         }
     }
 

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

@@ -2997,7 +2997,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 
                 Map<Integer, String> map = new HashMap<>(1);
                 map.put(userId, userId.toString());
-                String baseApiUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL);
+                String baseApiUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL_MDAYA);
 
                 String pushUrl = baseApiUrl + "/#/myOrder";
                 sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG,

+ 4 - 7
mec-biz/src/main/resources/config/mybatis/CloudTeacherOrderMapper.xml

@@ -171,8 +171,8 @@
         left join student_payment_order spo on cto.order_id_ = spo.id_
         left join member_rank_setting mrs on mrs.id_ = cto.level_
         where spo.type_ = 'MEMBER'
-        <if test="status != null">
-        	and cto.status_ = #{status}
+        <if test="status != null and status != ''">
+        	and FIND_IN_SET(cto.status_,#{status})
         </if>
         <if test="studentId != null">
         	and cto.student_id_ = #{studentId}
@@ -189,8 +189,8 @@
         SELECT COUNT(cto.id_)
         FROM cloud_teacher_order cto LEFT JOIN student_payment_order spo on cto.order_id_ = spo.id_
         where spo.type_ = 'MEMBER'
-        <if test="status != null">
-        	and cto.status_ = #{status}
+        <if test="status != null and status != ''">
+            and FIND_IN_SET(cto.status_,#{status})
         </if>
         <if test="studentId != null">
         	and cto.student_id_ = #{studentId}
@@ -634,9 +634,6 @@
             #{item}
         </foreach>
     </select>
-    <select id="getActivationMaxTime" resultType="java.util.Date">
-        select max(end_time_) from cloud_teacher_order where student_id_ = #{studentId} and level_ = #{level} and status_ = 2
-    </select>
     <select id="queryByUserIds" resultType="com.ym.mec.biz.dal.entity.CloudTeacherOrder">
         select * from cloud_teacher_order where student_id_ in
         <foreach collection="userIds" item="userId" separator="," open="(" close=")">

+ 3 - 1
mec-biz/src/main/resources/config/mybatis/MemberRankSettingMapper.xml

@@ -75,10 +75,12 @@
 
 	<sql id="queryPageSql">
 		<where>
-            mrs.del_flag_ = 0
 			<if test="search != null and search != ''">
 				AND (mrs.name_ LIKE CONCAT('%',#{search},'%') OR mrs.id_ = #{search})
 			</if>
+            <if test="delFlag != null and delFlag == false">
+                AND mrs.del_flag_ = 0
+            </if>
             <if test="updateStartTime !=null">
                 AND mrs.update_time_ &gt;= #{updateStartTime}
             </if>

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

@@ -1086,7 +1086,8 @@
     </update>
     <update id="updateCloudTeacherEndTime">
         update student set member_rank_setting_id_ = 1,membership_end_time_ =
-        (select MAX(end_time_) from cloud_teacher_order where status_ = 2 AND end_time_ >= NOW() AND student_id_ = #{studentId})
+        (select max(new_end_time_) from student_member_update_log where id_ IN (
+            select max(id_) from student_member_update_log where student_id_ = #{studentId} group by level_))
         where user_id_ = #{studentId};
     </update>
 

+ 3 - 0
mec-biz/src/main/resources/config/mybatis/StudentMemberUpdateLogMapper.xml

@@ -34,4 +34,7 @@
 
         order by t.create_time_ desc
     </select>
+    <select id="getActivationMaxTime" resultType="java.util.Date">
+        select new_end_time_ from student_member_update_log where student_id_ = #{studentId} and level_ = #{level} order by id_ desc limit 1
+    </select>
 </mapper>

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

@@ -498,7 +498,7 @@
         sr.remark_,
         sr.actual_subject_id_,
         IFNULL(sv.num, 0) visit_num_,
-        CASE WHEN st.membership_end_time_ >= NOW() THEN 1 ELSE 0 END has_cloud_teacher_,
+        sr.has_cloud_teacher_,
         sr.paying_status_,
         sr.none_need_cloud_teacher_
         FROM student_registration sr

+ 1 - 1
mec-common/audit-log/src/main/java/com/yonge/log/interceptor/AuditLogInterceptor.java

@@ -41,7 +41,7 @@ public class AuditLogInterceptor extends HandlerInterceptorAdapter {
 
     @Override
     public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
-//        syncSaveLog(request, handler);
+        syncSaveLog(request, handler);
     }
 
     public void syncSaveLog(HttpServletRequest request, Object handler) {

+ 3 - 3
mec-util/src/main/java/com/ym/mec/util/date/DateUtil.java

@@ -1325,12 +1325,12 @@ public class DateUtil {
     public static int daysBetweenUp(Date date, Date maxTime) {
         long epochSecond = date.toInstant().getEpochSecond();
         long epochSecond1 = maxTime.toInstant().getEpochSecond();
-        int i = (int) (epochSecond1 - epochSecond)/(24*60*60)  ;
-        int j = (int) (epochSecond1 - epochSecond)%(24*60*60)  ;
+		long i = (epochSecond1 - epochSecond)/(24*60*60)  ;
+		long j = (epochSecond1 - epochSecond)%(24*60*60)  ;
         if (j >0) {
             i++;
         }
-        return i;
+        return (int)i;
     }
 
     /**