Explorar o código

Merge branch 'feature/1022_vip' of http://git.dayaedu.com/yonge/mec into feature/1022_vip

刘俊驰 hai 7 meses
pai
achega
7ba53f9914

+ 4 - 2
mec-application/src/main/java/com/ym/mec/web/controller/StudentManageController.java

@@ -6,6 +6,7 @@ import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.StudentMusicGroupStatusEnum;
 import com.ym.mec.biz.dal.page.*;
+import com.ym.mec.biz.dal.wrapper.CloudTeacherOrderWrapper;
 import com.ym.mec.biz.dal.wrapper.StudentWrapper;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.controller.BaseController;
@@ -521,8 +522,9 @@ public class StudentManageController extends BaseController {
     @ApiOperation(value = "修改学员会员时长")
     @PostMapping("/updateStudentMember")
     @PreAuthorize("@pcs.hasPermissions('studentManage/updateStudentMember')")
-    public HttpResponseResult updateStudentMember(Integer userId,Date endTime,String memo) throws Exception {
-        studentService.updateStudentMember(userId,endTime,memo,sysUserService.getUserId());
+    public HttpResponseResult updateStudentMember(@RequestBody CloudTeacherOrderWrapper.UpdateStudentMemberDto param) throws Exception {
+        param.setOperatorId(sysUserService.getUserId());
+        studentService.updateStudentMember(param);
         return succeed();
     }
 

+ 31 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/CloudTeacherOrderWrapper.java

@@ -1,5 +1,7 @@
 package com.ym.mec.biz.dal.wrapper;
 
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.ym.mec.biz.dal.enums.PeriodEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -29,6 +31,35 @@ public class CloudTeacherOrderWrapper {
         private Integer studentId;
     }
 
+    @Data
+    @ApiModel("学员会员调整")
+    public static class UpdateStudentMemberDto {
+
+        @ApiModelProperty("会员编号")
+        private Integer memberRankId;
+
+        @ApiModelProperty(value = "时长类型 1-天 2-月 3-年")
+        private PeriodEnum periodType;
+
+        @ApiModelProperty("时长")
+        private Integer number;
+
+        @ApiModelProperty("学员编号")
+        private Integer studentId;
+
+        @ApiModelProperty("操作人")
+        private Integer operatorId;
+
+        @ApiModelProperty("备注")
+        private String memo;
+
+        @ApiModelProperty("2添加、3扣减")
+        private Integer type;
+
+        @ApiModelProperty("是否推送")
+        private Boolean pushFlag;
+    }
+
 
     @Data
     @ApiModel("学员会员订单回调详情")

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentMemberTimeService.java

@@ -3,10 +3,13 @@ package com.ym.mec.biz.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ym.mec.biz.dal.entity.CloudTeacherOrder;
 import com.ym.mec.biz.dal.entity.StudentMemberTime;
+import com.ym.mec.biz.dal.entity.StudentMemberUpdateLog;
 
 public interface StudentMemberTimeService extends IService<StudentMemberTime> {
 
     void saveToCloudTeacherOrder(CloudTeacherOrder cloudTeacherOrder);
+
+    void saveToStudentMemberUpdateLog(StudentMemberUpdateLog studentMemberUpdateLog);
 }
 
 

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentMemberUpdateLogService.java

@@ -2,6 +2,7 @@ package com.ym.mec.biz.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ym.mec.biz.dal.dao.StudentMemberUpdateLogDao;
+import com.ym.mec.biz.dal.entity.CloudTeacherOrder;
 import com.ym.mec.biz.dal.entity.StudentMemberUpdateLog;
 
 /**
@@ -13,5 +14,7 @@ import com.ym.mec.biz.dal.entity.StudentMemberUpdateLog;
 public interface StudentMemberUpdateLogService extends IService<StudentMemberUpdateLog> {
 
     StudentMemberUpdateLogDao getDao();
+
+    void saveToCloudTeacherOrder(CloudTeacherOrder cloudTeacherOrder);
 }
 

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/StudentService.java

@@ -14,6 +14,7 @@ import com.ym.mec.biz.dal.enums.GradeTypeEnum;
 import com.ym.mec.biz.dal.enums.PeriodEnum;
 import com.ym.mec.biz.dal.enums.StudentMusicGroupStatusEnum;
 import com.ym.mec.biz.dal.page.*;
+import com.ym.mec.biz.dal.wrapper.CloudTeacherOrderWrapper;
 import com.ym.mec.biz.dal.wrapper.StudentWrapper;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.QueryInfo;
@@ -251,7 +252,7 @@ public interface StudentService extends BaseService<Integer, Student> {
     * @author zx
     * @date 2023/5/17 11:25
     */
-    void updateStudentMember(Integer userId, Date endTime,String memo,Integer operatorId);
+    void updateStudentMember(CloudTeacherOrderWrapper.UpdateStudentMemberDto param);
 
     PageInfo<Student> queryBaseInfoByPage(QueryInfo queryInfo);
 

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

@@ -76,6 +76,8 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
     private StudentDao studentDao;
     @Resource
     private StudentMemberTimeService studentMemberTimeService;
+    @Resource
+    private StudentMemberUpdateLogService studentMemberUpdateLogService;
     @Override
     public BaseDAO<Long, CloudTeacherOrder> getDAO() {
         return cloudTeacherOrderDao;
@@ -401,10 +403,6 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void activationMember(Date now,CloudTeacherOrder cloudTeacherOrder){
-//        Student student = studentService.get(cloudTeacherOrder.getStudentId());
-//        if(student.getMembershipEndTime() != null && student.getMembershipEndTime().compareTo(now) > 0){
-//            now = student.getMembershipEndTime();
-//        }
         //获取已激活的云教练最大时间
         Date maxTime = cloudTeacherOrderDao.getActivationMaxTime(cloudTeacherOrder.getStudentId(),cloudTeacherOrder.getLevel());
         if (maxTime != null && maxTime.compareTo(now) > 0) {
@@ -423,6 +421,8 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
         //保存学员会员时间
         studentMemberTimeService.saveToCloudTeacherOrder(cloudTeacherOrder);
         studentDao.updateCloudTeacherEndTime(cloudTeacherOrder.getStudentId());
+        //保存学员会员调整日志
+        studentMemberUpdateLogService.saveToCloudTeacherOrder(cloudTeacherOrder);
     }
 
     public Date calcCloudTeacherOrderTime(CloudTeacherOrder cloudTeacherOrder, Date startTime) {

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

@@ -416,8 +416,6 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
         if (CollectionUtils.isNotEmpty(calenderMemberList)) {
             for (MusicGroupPaymentCalenderMember calenderMember : calenderMemberList) {
                 calenderMember = musicGroupPaymentCalenderMemberService.initBean(calenderMember);
-                calenderMember.setActualAmount(memberActualAmount);
-                calenderMember.setOriginalAmount(memberOriginalAmount);
                 calenderMember.setCalenderId(calenderId);
             }
             musicGroupPaymentCalenderMemberService.batchInsert(calenderMemberList);

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

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ym.mec.biz.dal.dao.StudentMemberTimeDao;
 import com.ym.mec.biz.dal.entity.CloudTeacherOrder;
 import com.ym.mec.biz.dal.entity.StudentMemberTime;
+import com.ym.mec.biz.dal.entity.StudentMemberUpdateLog;
+import com.ym.mec.biz.dal.enums.PeriodEnum;
 import com.ym.mec.biz.service.StudentMemberTimeService;
 import com.ym.mec.util.date.DateUtil;
 import org.slf4j.Logger;
@@ -28,9 +30,66 @@ public class StudentMemberTimeServiceImpl extends ServiceImpl<StudentMemberTimeD
             one.setMemberRankId(cloudTeacherOrder.getLevel());
             one.setStudentId(cloudTeacherOrder.getStudentId());
             one.setEndTime(cloudTeacherOrder.getEndTime());
+            this.save(one);
         }else {
             one.setEndTime(cloudTeacherOrder.getEndTime());
         }
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void saveToStudentMemberUpdateLog(StudentMemberUpdateLog studentMemberUpdateLog) {
+        StudentMemberTime one = this.lambdaQuery().eq(StudentMemberTime::getMemberRankId, studentMemberUpdateLog.getLevel()).last("limit 1").one();
+        //扣减
+        Date now = new Date();
+        if(studentMemberUpdateLog.getBuyType() == 3){
+            if (one == null) {
+                throw new RuntimeException("会员信息不存在");
+            }
+            studentMemberUpdateLog.setOldEndTime(one.getEndTime());
+            if (one.getEndTime().after(now)) {
+                studentMemberUpdateLog.setOldEndTime(one.getEndTime());
+                one.setEndTime(addDays(one.getEndTime(), -studentMemberUpdateLog.getTime(), studentMemberUpdateLog.getType()));
+                this.updateById(one);
+            }else {
+                throw new RuntimeException("会员已过期");
+            }
+        }else {
+            if (one == null) {
+                one = new StudentMemberTime();
+                one.setMemberRankId(studentMemberUpdateLog.getLevel());
+                one.setStudentId(studentMemberUpdateLog.getStudentId());
+                one.setEndTime(addDays(now, studentMemberUpdateLog.getTime(), studentMemberUpdateLog.getType()));
+                this.save(one);
+            }else {
+                if (one.getEndTime().after(now)) {
+                    studentMemberUpdateLog.setOldEndTime(one.getEndTime());
+                    one.setEndTime(addDays(one.getEndTime(), studentMemberUpdateLog.getTime(), studentMemberUpdateLog.getType()));
+                }else {
+                    studentMemberUpdateLog.setOldEndTime(now);
+                    one.setEndTime(addDays(now, studentMemberUpdateLog.getTime(), studentMemberUpdateLog.getType()));
+                }
+                this.updateById(one);
+            }
+        }
+        studentMemberUpdateLog.setNewEndTime(one.getEndTime());
+    }
+
+    private Date addDays(Date endTime, int time, PeriodEnum type) {
+        switch (type) {
+            case DAY:
+                return DateUtil.addDays(endTime, time);
+            case MONTH:
+                return DateUtil.addMonths(endTime, time);
+            case QUARTERLY:
+                return DateUtil.addMonths(endTime, time * 3);
+            case YEAR_HALF:
+                return DateUtil.addMonths(endTime, time * 6);
+            case YEAR:
+                return DateUtil.addYears(endTime, time);
+            default:
+                return endTime;
+        }
+    }
 }
 

+ 17 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentMemberUpdateLogServiceImpl.java

@@ -2,11 +2,13 @@ package com.ym.mec.biz.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ym.mec.biz.dal.dao.StudentMemberUpdateLogDao;
+import com.ym.mec.biz.dal.entity.CloudTeacherOrder;
 import com.ym.mec.biz.dal.entity.StudentMemberUpdateLog;
 import com.ym.mec.biz.service.StudentMemberUpdateLogService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 /**
  * 学员云教练时长修改记录(StudentMemberUpdateLog)表服务实现类
@@ -24,5 +26,20 @@ public class StudentMemberUpdateLogServiceImpl extends ServiceImpl<StudentMember
             return this.baseMapper;
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void saveToCloudTeacherOrder(CloudTeacherOrder cloudTeacherOrder) {
+        StudentMemberUpdateLog studentMemberUpdateLog = new StudentMemberUpdateLog();
+        studentMemberUpdateLog.setStudentId(cloudTeacherOrder.getStudentId());
+        studentMemberUpdateLog.setMemo(cloudTeacherOrder.getRemark());
+        studentMemberUpdateLog.setType(cloudTeacherOrder.getType());
+        studentMemberUpdateLog.setLevel(cloudTeacherOrder.getLevel());
+        studentMemberUpdateLog.setTime(cloudTeacherOrder.getTime());
+        studentMemberUpdateLog.setBuyType(1);
+        studentMemberUpdateLog.setOldEndTime(cloudTeacherOrder.getStartTime());
+        studentMemberUpdateLog.setNewEndTime(cloudTeacherOrder.getEndTime());
+        this.save(studentMemberUpdateLog);
+    }
+
 }
 

+ 20 - 23
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServiceImpl.java

@@ -14,6 +14,7 @@ import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.mapper.SchoolActivityMapper;
 import com.ym.mec.biz.dal.mapper.StudentPlusMapper;
 import com.ym.mec.biz.dal.page.*;
+import com.ym.mec.biz.dal.wrapper.CloudTeacherOrderWrapper;
 import com.ym.mec.biz.dal.wrapper.SchoolActivityWrapper;
 import com.ym.mec.biz.dal.wrapper.StudentWrapper;
 import com.ym.mec.biz.service.*;
@@ -64,7 +65,7 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
     @Autowired
     private PracticeGroupDao practiceGroupDao;
     @Autowired
-    private MemberRankSettingDao memberRankSettingDao;
+    private MemberRankSettingService memberRankSettingService;
     @Autowired
     private SysConfigDao sysConfigDao;
     @Autowired
@@ -124,6 +125,8 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
     private StudentService studentService;
     @Autowired
     private SysUserService sysUserService;
+    @Autowired
+    private StudentMemberTimeService studentMemberTimeService;
 
     @Override
     public BaseDAO<Integer, Student> getDAO() {
@@ -492,14 +495,14 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void updateMemberExperience(String studentIds, Integer rankId, Date endTime) {
+        if(StringUtils.isEmpty(studentIds)){
+            throw new BizException("请选择学员");
+        }
         //会员是否存在
-        MemberRankSetting memberRankSetting = memberRankSettingDao.get(rankId);
+        MemberRankSetting memberRankSetting = memberRankSettingService.get(rankId);
         if(memberRankSetting == null){
             throw new BizException("会员信息不存在");
         }
-        if(StringUtils.isEmpty(studentIds)){
-            throw new BizException("请选择学员");
-        }
         //学员是否有会员
         List<Integer> studentIdList = Arrays.stream(studentIds.split(",")).map(Integer::parseInt).collect(Collectors.toList());
         List<Student> studentList = studentDao.findByStudentIds(studentIdList);
@@ -1640,30 +1643,24 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void updateStudentMember(Integer userId, Date endTime,String memo,Integer operatorId) {
+    public void updateStudentMember(CloudTeacherOrderWrapper.UpdateStudentMemberDto param) {
+        Integer userId = param.getStudentId();
         Student student = studentDao.get(userId);
         if(Objects.isNull(student)){
             throw new BizException("学员信息不存在");
         }
         StudentMemberUpdateLog studentMemberUpdateLog = new StudentMemberUpdateLog();
         studentMemberUpdateLog.setStudentId(userId);
-        studentMemberUpdateLog.setOldStartTime(student.getMembershipStartTime());
-        studentMemberUpdateLog.setOldEndTime(student.getMembershipEndTime());
-        studentMemberUpdateLog.setMemo(memo);
-        studentMemberUpdateLog.setOperatorId(operatorId);
-        Date now = new Date();
-        if (endTime == null || endTime.compareTo(now) < 0){
-            studentDao.cleanMember(userId);
-        }else {
-            if(student.getMembershipStartTime() == null){
-                student.setMembershipStartTime(now);
-            }
-            student.setMemberRankSettingId(1);
-            student.setMembershipEndTime(endTime);
-            studentDao.updateStudentMember(student);
-            studentMemberUpdateLog.setNewStartTime(student.getMembershipStartTime());
-            studentMemberUpdateLog.setNewEndTime(student.getMembershipEndTime());
-        }
+        studentMemberUpdateLog.setMemo(param.getMemo());
+        studentMemberUpdateLog.setOperatorId(param.getOperatorId());
+        studentMemberUpdateLog.setType(param.getPeriodType());
+        studentMemberUpdateLog.setLevel(param.getMemberRankId());
+        studentMemberUpdateLog.setTime(param.getNumber());
+        studentMemberUpdateLog.setBuyType(param.getType());
+        //保存学员会员时间
+        studentMemberTimeService.saveToStudentMemberUpdateLog(studentMemberUpdateLog);
+        studentDao.updateCloudTeacherEndTime(userId);
+        studentMemberUpdateLog.setName(memberRankSettingService.queryMemberName(param.getMemberRankId()));
         //添加修改日志
         studentMemberUpdateLogDao.insert(studentMemberUpdateLog);
     }