zouxuan 3 rokov pred
rodič
commit
ea533bbf45

+ 108 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicGroupQuitDto.java

@@ -0,0 +1,108 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.entity.MusicGroupQuit;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+
+public class MusicGroupQuitDto {
+
+    @ApiModelProperty(value = "乐团编号",required = false)
+    private String musicGroupId;
+
+    @ApiModelProperty(value = "用户编号",required = false)
+    private Integer userId;
+
+    @ApiModelProperty(value = "描述",required = false)
+    private String reason;
+
+    @ApiModelProperty(value = "是否退还课程费用",required = false)
+    private boolean isRefundCourseFee;
+
+    @ApiModelProperty(value = "是否退还乐器费用(租金)",required = false)
+    private boolean isRefundInstrumentFee;
+
+    @ApiModelProperty(value = "是否退还教辅费用",required = false)
+    private boolean isRefundTeachingAssistantsFee;
+
+    @ApiModelProperty(value = "退会员费用",required = false)
+    private boolean isRefundMemberFee;
+
+    @ApiModelProperty(value = "退乐保费用",required = false)
+    private BigDecimal maintenanceFee;
+
+    @ApiModelProperty(value = "原因",required = false)
+    private MusicGroupQuit.ReasonEnum reasonEnum;
+
+    public String getMusicGroupId() {
+        return musicGroupId;
+    }
+
+    public void setMusicGroupId(String musicGroupId) {
+        this.musicGroupId = musicGroupId;
+    }
+
+    public Integer getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
+
+    public String getReason() {
+        return reason;
+    }
+
+    public void setReason(String reason) {
+        this.reason = reason;
+    }
+
+    public boolean getIsRefundCourseFee() {
+        return isRefundCourseFee;
+    }
+
+    public void setIsRefundCourseFee(boolean refundCourseFee) {
+        isRefundCourseFee = refundCourseFee;
+    }
+
+    public boolean getIsRefundInstrumentFee() {
+        return isRefundInstrumentFee;
+    }
+
+    public void setIsRefundInstrumentFee(boolean refundInstrumentFee) {
+        isRefundInstrumentFee = refundInstrumentFee;
+    }
+
+    public boolean getIsRefundTeachingAssistantsFee() {
+        return isRefundTeachingAssistantsFee;
+    }
+
+    public void setIsRefundTeachingAssistantsFee(boolean refundTeachingAssistantsFee) {
+        isRefundTeachingAssistantsFee = refundTeachingAssistantsFee;
+    }
+
+    public boolean getIsRefundMemberFee() {
+        return isRefundMemberFee;
+    }
+
+    public void setIsRefundMemberFee(boolean refundMemberFee) {
+        isRefundMemberFee = refundMemberFee;
+    }
+
+    public BigDecimal getMaintenanceFee() {
+        return maintenanceFee;
+    }
+
+    public void setMaintenanceFee(BigDecimal maintenanceFee) {
+        this.maintenanceFee = maintenanceFee;
+    }
+
+    public MusicGroupQuit.ReasonEnum getReasonEnum() {
+        return reasonEnum;
+    }
+
+    public void setReasonEnum(MusicGroupQuit.ReasonEnum reasonEnum) {
+        this.reasonEnum = reasonEnum;
+    }
+}

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentPaymentOrderExportDto.java

@@ -13,6 +13,9 @@ public class StudentPaymentOrderExportDto extends StudentPaymentOrder {
     @ApiModelProperty(value = "分部",required = true)
     private String organName;
 
+    @ApiModelProperty(value = "业务分部",required = true)
+    private String userOrganName;
+
     @ApiModelProperty(value = "零星费用",required = true)
     private BigDecimal sporadicAmount;
 
@@ -225,6 +228,14 @@ public class StudentPaymentOrderExportDto extends StudentPaymentOrder {
     @ApiModelProperty(value = "教学点",required = true)
     private String schoolName;
 
+    public String getUserOrganName() {
+        return userOrganName;
+    }
+
+    public void setUserOrganName(String userOrganName) {
+        this.userOrganName = userOrganName;
+    }
+
     public BigDecimal getCourseSchoolBuyAmount() {
         return courseSchoolBuyAmount;
     }

+ 42 - 6
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupQuit.java

@@ -1,15 +1,14 @@
 package com.ym.mec.biz.dal.entity;
 
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.common.entity.BaseEntity;
+import com.ym.mec.common.enums.BaseEnum;
 import io.swagger.annotations.ApiModelProperty;
+import org.apache.commons.lang3.builder.ToStringBuilder;
 
 import java.math.BigDecimal;
 import java.util.Date;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-
-import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.common.entity.BaseEntity;
-
 /**
  * 对应数据库表(music_group_quit):
  */
@@ -35,7 +34,9 @@ public class MusicGroupQuit extends BaseEntity {
 	
 	private String userComment;
 
-	/** 原因 */
+	private ReasonEnum reasonEnum;
+
+	/** 退团原因 */
 	private String reason;
 
 	private ApprovalStatus status;
@@ -66,6 +67,41 @@ public class MusicGroupQuit extends BaseEntity {
 	@ApiModelProperty(value = "云教练金额",required = false)
 	private BigDecimal cloudTeacherAmount = BigDecimal.ZERO;
 
+	//毕业、不感兴趣、时间冲突、身体不适、其他(必选)
+	public enum ReasonEnum implements BaseEnum<String, MusicGroupQuit.ReasonEnum> {
+		GRADUATE("GRADUATE", "毕业"),
+		NOT_INTERESTED("NOT_INTERESTED", "不感兴趣"),
+		TIME_CONFLICT("TIME_CONFLICT", "时间冲突"),
+		FEELING_UNWELL("FEELING_UNWELL", "身体不适"),
+		OTHER("OTHER", "其他");
+
+		private String code;
+
+		private String msg;
+
+		ReasonEnum(String code, String msg) {
+			this.code = code;
+			this.msg = msg;
+		}
+
+		@Override
+		public String getCode() {
+			return code;
+		}
+
+		public String getMsg() {
+			return msg;
+		}
+	}
+
+	public ReasonEnum getReasonEnum() {
+		return reasonEnum;
+	}
+
+	public void setReasonEnum(ReasonEnum reasonEnum) {
+		this.reasonEnum = reasonEnum;
+	}
+
 	public String getApplyUserName() {
 		return applyUserName;
 	}

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentVisit.java

@@ -45,7 +45,7 @@ public class StudentVisit extends BaseEntity {
 
     public enum FeedbackTypeEnum implements BaseEnum<String,FeedbackTypeEnum> {
         THINKING("THINKING", "考虑中"), PENDING_PAYMENT("PENDING_PAYMENT", "确认缴费待缴费"),
-        LOST("LOST", "流失"), PAUSE("PAUSE", "暂停"),
+        LOST("LOST", "流失"), PAUSE("PAUSE", "暂停"),NORMAL("NORMAL", "在读"),
         OTHER("OTHER", "其他");
 
         private String code;

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

@@ -206,8 +206,7 @@ public interface MusicGroupService extends BaseService<String, MusicGroup> {
      * @param maintenanceFee
      * @return
      */
-    boolean directQuitMusicGroup(String musicGroupId, Integer userId, String reason, boolean isRefundCourseFee, boolean isRefundInstrumentFee,
-                                 boolean isRefundTeachingAssistantsFee, boolean isRefundMemberFee, BigDecimal maintenanceFee);
+    boolean directQuitMusicGroup(MusicGroupQuitDto musicGroupQuitDto);
 
     /**
      * 处理oa审批退团逻辑

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

@@ -2384,6 +2384,8 @@ public class ExportServiceImpl implements ExportService {
         Map<Integer, String> userLastMusicNameMap = new HashMap<>();
         Map<Integer, String> studentNameMap = new HashMap<>();
         Map<Integer, String> userFirstPracticeMap = new HashMap<>();
+        List<Integer> organIds = studentPaymentOrderExportDtos.stream().map(e -> e.getOrganId()).distinct().collect(Collectors.toList());
+        Map<Integer, String> userOrganNameMap = organizationService.getMap("organization","id_","name_",organIds,tenantId,Integer.class,String.class);
         if (studentPaymentOrderExportDtos.stream().anyMatch(e -> e.getUserId() != null)) {
             List<Integer> studentIds = studentPaymentOrderExportDtos.stream().filter(e -> e.getUserId() != null).map(e -> e.getUserId()).distinct().collect(Collectors.toList());
             //获取学员第一个网管课课程组编号
@@ -2411,6 +2413,7 @@ public class ExportServiceImpl implements ExportService {
         }
         for (StudentPaymentOrderExportDto basicOrder : studentPaymentOrderExportDtos) {
             basicOrder.getUser().setUsername(studentNameMap.get(basicOrder.getUserId()));
+            basicOrder.setUserOrganName(userOrganNameMap.get(basicOrder.getOrganId()));
             //填充业务数据
             //计算手续费
             this.calcPlatformFee(basicOrder, serviceChargeMap, orderCountMap, tenantConfig, feeFlagMap);

+ 21 - 105
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -27,6 +27,7 @@ import java.util.Objects;
 import java.util.Set;
 import java.util.stream.Collectors;
 
+import com.ym.mec.biz.dal.dto.*;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -82,20 +83,6 @@ import com.ym.mec.biz.dal.dao.SysUserCashAccountDao;
 import com.ym.mec.biz.dal.dao.SysUserCashAccountLogDao;
 import com.ym.mec.biz.dal.dao.TeacherAttendanceDao;
 import com.ym.mec.biz.dal.dao.TeacherDao;
-import com.ym.mec.biz.dal.dto.BasicUserDto;
-import com.ym.mec.biz.dal.dto.CloseMusicGroupDto;
-import com.ym.mec.biz.dal.dto.CourseScheduleTeachersDto;
-import com.ym.mec.biz.dal.dto.HighClassGroupDto;
-import com.ym.mec.biz.dal.dto.MusicCardDto;
-import com.ym.mec.biz.dal.dto.MusicGroupApplyGoodsDto;
-import com.ym.mec.biz.dal.dto.MusicGroupBasicDto;
-import com.ym.mec.biz.dal.dto.RegisterPayDto;
-import com.ym.mec.biz.dal.dto.SporadicPayDto;
-import com.ym.mec.biz.dal.dto.StudentApplyInstrumentDto;
-import com.ym.mec.biz.dal.dto.StudentImportDto;
-import com.ym.mec.biz.dal.dto.SubFeeSettingDto;
-import com.ym.mec.biz.dal.dto.SubjectRegisterDto;
-import com.ym.mec.biz.dal.dto.UpdateExpectedNumDto;
 import com.ym.mec.biz.dal.entity.ApprovalStatus;
 import com.ym.mec.biz.dal.entity.ChargeType;
 import com.ym.mec.biz.dal.entity.ClassGroup;
@@ -2348,6 +2335,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         musicGroupQuit.setUserComment(reqMusicGroupQuit.getUserComment());
         musicGroupQuit.setApplyUserId(userId);
         musicGroupQuit.setReason(reason);
+		musicGroupQuit.setReasonEnum(reqMusicGroupQuit.getReasonEnum());
 
         MusicGroupReturnFeeDto returnFeeDto = reqMusicGroupQuit.getReturnFeeDto();
         if (returnFeeDto != null) {
@@ -2761,11 +2749,11 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
     }
 
     @Override
-    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
-    public boolean directQuitMusicGroup(String musicGroupId, Integer userId, String reason, boolean isRefundCourseFee, boolean isRefundInstrumentFee,
-                                        boolean isRefundTeachingAssistantsFee, boolean isRefundMemberFee, BigDecimal maintenanceFee) {
-
-        SysUser sysUser = sysUserFeignService.queryUserById(userId);
+    @Transactional(rollbackFor = Exception.class)
+    public boolean directQuitMusicGroup(MusicGroupQuitDto musicGroupQuitDto) {
+		Integer userId = musicGroupQuitDto.getUserId();
+		String musicGroupId = musicGroupQuitDto.getMusicGroupId();
+		SysUser sysUser = sysUserFeignService.queryUserById(userId);
         if (sysUser == null) {
             throw new BizException("获取用户信息失败");
         }
@@ -2815,21 +2803,20 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         MusicGroupQuit musicGroupQuit = musicGroupQuitDao.queryByUserIdAndMusicGroupId(userId, musicGroupId);
         if (musicGroupQuit != null && musicGroupQuit.getStatus() == PROCESSING) {
             musicGroupQuit.setStatus(ApprovalStatus.APPROVED);
-            musicGroupQuit.setReason(reason);
+            musicGroupQuit.setReason(musicGroupQuitDto.getReason());
+			musicGroupQuit.setReasonEnum(musicGroupQuitDto.getReasonEnum());
             musicGroupQuit.setQuitDate(date);
-
             musicGroupQuitDao.update(musicGroupQuit);
         } else {
-
             musicGroupQuit = new MusicGroupQuit();
             musicGroupQuit.setCreateTime(date);
             musicGroupQuit.setJoinDate(studentRegistration.getCreateTime());
             musicGroupQuit.setMusicGroupId(musicGroupId);
             musicGroupQuit.setUserId(sysUser.getId());
             musicGroupQuit.setStatus(ApprovalStatus.APPROVED);
-            musicGroupQuit.setReason(reason);
+			musicGroupQuit.setReason(musicGroupQuitDto.getReason());
+			musicGroupQuit.setReasonEnum(musicGroupQuitDto.getReasonEnum());
             musicGroupQuit.setQuitDate(date);
-
             musicGroupQuitDao.insert(musicGroupQuit);
         }
 
@@ -2854,20 +2841,6 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         studentRegistration.setUpdateTime(date);
         studentRegistrationDao.update(studentRegistration);
 
-        //更新服务指标、运营指标
-        /*int remainCourseNum = courseScheduleStudentPaymentDao.countStudentNotStartCourseNumWithCourseType(userId, null);
-        if (remainCourseNum == 0) {
-            Student student = studentDao.get(userId);
-            if (student == null) {
-                throw new BizException("学生信息查询失败");
-            }
-            student.setServiceTag(0);
-            student.setOperatingTag(0);
-            student.setOperatingTempTag(0);
-            student.setUpdateTime(date);
-            studentDao.update(student);
-        }*/
-
         //删除进行中加学生,且在审批中或拒绝的缴费
         List<Long> paymentCalenderIdList = musicGroupPaymentCalenderDao.findStudentNoPaymentCalender(userId, musicGroupId);
         if (paymentCalenderIdList != null && paymentCalenderIdList.size() > 0) {
@@ -2935,64 +2908,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             //统计变更学员数
             groupEventSource.musicGroupStudentChangeEvent(musicGroupId, StudentMusicGroupStatusEnum.QUIT, new ArrayList<>(Arrays.asList(userId)));
         }
-/*
-        if (isRefundMemberFee){
-            if(musicGroup.getCourseViewType() != CourseViewTypeEnum.MEMBER_FEE){
-                throw new BizException("非会员乐团不允许退云教练");
-            }
-            //删除乐团会员时长
-            studentRegistrationDao.cleanMusicMember(userId,musicGroupId);
-            //退云教练费用
-            if (cloudTeacherAmount != null) {
-                Date nowDate = new Date();
-                List<CloudTeacherOrder> cloudTeacherOrders = cloudTeacherOrderService.getStudentCloudTeacherOrder(userId,musicGroupId);
-                BigDecimal orderAmount = BigDecimal.ZERO;
-                Student student = studentDao.get(userId);
-                if(cloudTeacherOrders.size() > 0){
-                    Integer subMemberDay = 0;
-                    List<CloudTeacherOrder> quitCloudTeacherOrders = new ArrayList<>();
-                    for (CloudTeacherOrder cloudTeacherOrder : cloudTeacherOrders) {
-                        if (cloudTeacherOrder.getEndTime() == null || DateUtil.stringToDate(DateUtil.format(cloudTeacherOrder.getEndTime(),DateUtil.ISO_EXPANDED_DATE_FORMAT),DateUtil.ISO_EXPANDED_DATE_FORMAT).compareTo(
-                                DateUtil.stringToDate(DateUtil.format(nowDate,DateUtil.ISO_EXPANDED_DATE_FORMAT),DateUtil.ISO_EXPANDED_DATE_FORMAT)) >= 0) {
-                            quitCloudTeacherOrders.add(cloudTeacherOrder);
-                            orderAmount = orderAmount.add(cloudTeacherOrder.getAmount());
-                            subMemberDay =  subMemberDay + DateUtil.daysBetween(cloudTeacherOrder.getStartTime(), cloudTeacherOrder.getEndTime());
-                        }
-                    }
-                    cloudTeacherOrderService.quitCloudTeacherOrders(quitCloudTeacherOrders, cloudTeacherAmount);
-                    Date memberEndTime = DateUtil.addDays(studentRegistration.getMembershipEndTime(), subMemberDay);
-                    if(memberEndTime.compareTo(nowDate) < 0){
-                        //清除学员云教练
-                        studentService.cleanMember(userId);
-                        //如果有试用会员,不清除
-                        if(student.getExperienceMemberRankSettingId() != null){
-                            student.setMemberRankSettingId(student.getExperienceMemberRankSettingId());
-                            student.setMembershipStartTime(student.getExperienceMembershipStartTime());
-                            student.setMembershipEndTime(student.getExperienceMembershipEndTime());
-                            studentDao.update(student);
-                        }
-                    }else {
-                        if(student.getExperienceMemberRankSettingId() != null){
-                            if(memberEndTime.compareTo(student.getExperienceMembershipEndTime()) > 0){
-                                student.setMembershipEndTime(memberEndTime);
-                            }else {
-                                student.setMembershipEndTime(student.getExperienceMembershipEndTime());
-                            }
-                            studentDao.update(student);
-                        }
-                    }
-                }
-                if (cloudTeacherAmount.compareTo(orderAmount) > 0) {
-                    throw new BizException("云教练退费金额不能大于原始订单金额");
-                }
-                amount = amount.add(cloudTeacherAmount);
-            }
-        }else {
-            //删除乐团会员时长
-            studentRegistrationDao.cleanMusicMember(userId,musicGroupId);
-        }*/
-
-        if (isRefundCourseFee) {
+        if (musicGroupQuitDto.getIsRefundCourseFee()) {
             // 退课程费用
             amount = amount.add(surplusCourseFee);
         }
@@ -3006,12 +2922,12 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             List<StudentPaymentOrderDetail> orderDetailList = studentPaymentOrderDetailDao.getWithIds(paymentOrderIdList);
 
             SubjectChange studentLastChange = null;
-            if (isRefundInstrumentFee || isRefundTeachingAssistantsFee) {
+            if (musicGroupQuitDto.getIsRefundInstrumentFee() || musicGroupQuitDto.getIsRefundTeachingAssistantsFee()) {
                 studentLastChange = subjectChangeDao.getStudentLastChange(userId, musicGroupId);
             }
 
             if (studentLastChange != null && minPaymentOrderId <= studentLastChange.getOriginalOrderId()) {
-                if (isRefundInstrumentFee) {
+                if (musicGroupQuitDto.getIsRefundInstrumentFee()) {
                     amount = amount.add(studentLastChange.getChangeMusicalPrice());
 
                     StudentInstrument studentMaintenance = studentInstrumentDao.getByOrderId(studentLastChange.getOrderId().longValue());
@@ -3021,14 +2937,14 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                     }
                 }
 
-                if (isRefundTeachingAssistantsFee) {
+                if (musicGroupQuitDto.getIsRefundTeachingAssistantsFee()) {
                     amount = amount.add(studentLastChange.getChangeAccessoriesPrice());
                 }
             } else {
                 for (StudentPaymentOrderDetail detail : orderDetailList) {
 
                     // 退乐器费用
-                    if (isRefundInstrumentFee && detail.getType() == MUSICAL) {
+                    if (musicGroupQuitDto.getIsRefundInstrumentFee() && detail.getType() == MUSICAL) {
                         amount = amount.add(detail.getPrice()).subtract(detail.getRemitFee());
 
                         StudentInstrument studentMaintenance = studentInstrumentDao.getStudentMaintenance(userId, musicGroupId);
@@ -3039,7 +2955,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                     }
 
                     // 退教辅费用
-                    if (isRefundTeachingAssistantsFee
+                    if (musicGroupQuitDto.getIsRefundTeachingAssistantsFee()
                             && (detail.getType() == ACCESSORIES || detail.getType() == TEACHING)) {
                         amount = amount.add(detail.getPrice()).subtract(detail.getRemitFee());
                     }
@@ -3049,15 +2965,15 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         }
 
         //退乐保费用
-        if (maintenanceFee != null) {
+        if (musicGroupQuitDto.getMaintenanceFee() != null) {
             StudentInstrument studentMaintenance = studentInstrumentDao.getStudentMaintenance(userId, musicGroupId);
-            if (maintenanceFee.compareTo(BigDecimal.ZERO) > 0) {
+            if (musicGroupQuitDto.getMaintenanceFee().compareTo(BigDecimal.ZERO) > 0) {
                 if (studentMaintenance == null) {
                     throw new BizException("学生没有有效期内的乐保,不能退乐保费用");
                 }
             }
-            amount = amount.add(maintenanceFee);
-            if (maintenanceFee.compareTo(BigDecimal.ZERO) > 0 && studentMaintenance != null) {
+            amount = amount.add(musicGroupQuitDto.getMaintenanceFee());
+            if (musicGroupQuitDto.getMaintenanceFee().compareTo(BigDecimal.ZERO) > 0 && studentMaintenance != null) {
                 studentMaintenance.setStatus(0);
                 studentMaintenance.setStartTime(null);
                 studentMaintenance.setEndTime(null);

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

@@ -4067,7 +4067,7 @@
         </if>
         <if test="queryInfo.attendanceStatus != null and queryInfo.attendanceStatus != ''">
             <if test="queryInfo.attendanceStatus == 'TRUANT'">
-                AND (sa.status_ IS NULL OR sa.status_ = '' OR sa.status_ = 'TRUANT')
+                AND (sa.status_ IS NULL OR sa.status_ = '' OR sa.status_ = 'TRUANT') AND cs.status_ = 'OVER'
             </if>
             <if test="queryInfo.attendanceStatus != 'TRUANT'">
                 AND sa.status_ = #{queryInfo.attendanceStatus}

+ 8 - 2
mec-biz/src/main/resources/config/mybatis/MusicGroupQuitMapper.xml

@@ -13,6 +13,7 @@
         <result column="quit_date_" property="quitDate"/>
         <result column="create_time_" property="createTime"/>
         <result column="reason_" property="reason"/>
+        <result column="reason_enum_" property="reasonEnum" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="user_comment_" property="userComment"/>
         <result column="is_visit_" property="isVisit"/>
         <result column="visit_time_" property="visitTime"/>
@@ -49,15 +50,20 @@
     <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.MusicGroupQuit"
             useGeneratedKeys="true" keyColumn="id" keyProperty="id">
         INSERT INTO music_group_quit
-        (id_,user_id_,music_group_id_,join_date_,quit_date_,create_time_,reason_,user_comment_,status_,apply_user_id_,is_visit_,visit_time_,fee_json_,current_approve_role_,return_total_fee_,tenant_id_)
+        (id_,user_id_,music_group_id_,join_date_,quit_date_,create_time_,reason_,user_comment_,status_,
+         apply_user_id_,is_visit_,visit_time_,fee_json_,current_approve_role_,return_total_fee_,tenant_id_,reason_enum_)
         VALUES(#{id},#{userId},#{musicGroupId},#{joinDate},#{quitDate},#{createTime},#{reason},#{userComment},
-        #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{applyUserId},#{isVisit},#{visitTime},#{feeJson},#{currentApproveRole},#{returnTotalFee},#{tenantId})
+        #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{applyUserId},#{isVisit},#{visitTime},
+               #{feeJson},#{currentApproveRole},#{returnTotalFee},#{tenantId},#{reasonEnum,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler})
     </insert>
 
     <!-- 根据主键查询一条记录 -->
     <update id="update" parameterType="com.ym.mec.biz.dal.entity.MusicGroupQuit">
         UPDATE music_group_quit
         <set>
+            <if test="reasonEnum != null">
+                reason_enum_ = #{reasonEnum,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+            </if>
             <if test="userId != null">
                 user_id_ = #{userId},
             </if>

+ 16 - 40
mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupController.java

@@ -39,6 +39,8 @@ import java.util.stream.Collectors;
 public class MusicGroupController extends BaseController {
 
     @Resource
+    private SysUserService sysUserService;
+    @Resource
     private SysUserFeignService sysUserFeignService;
     @Autowired
     private MusicGroupService musicGroupService;
@@ -68,51 +70,31 @@ public class MusicGroupController extends BaseController {
     @ApiOperation("预报名信息查询")
     @GetMapping(value = "/queryPreRegister")
     public Object queryPreRegister(String musicGroupId) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        return succeed(studentPreRegistrationDao.queryByMusicGroupIdAndUserId(sysUser.getId(), musicGroupId));
+        return succeed(studentPreRegistrationDao.queryByMusicGroupIdAndUserId(sysUserService.getUserId(), musicGroupId));
     }
 
     @ApiOperation("获取学生所在乐团列表")
     @GetMapping(value = "/queryUserMusicGroups")
     public Object queryUserMusicGroups() {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        return succeed(musicGroupService.queryUserMusicGroups(sysUser.getId()));
+        return succeed(musicGroupService.queryUserMusicGroups(sysUserService.getUserId()));
     }
 
     @ApiOperation("获取学生所在乐团列表")
     @GetMapping(value = "/queryStudentMusicGroupInfo")
     public Object queryStudentMusicGroupInfo(String musicGroupId) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        return succeed(studentRegistrationService.queryStudentMusicGroupInfo(sysUser.getId(),musicGroupId));
+        return succeed(studentRegistrationService.queryStudentMusicGroupInfo(sysUserService.getUserId(),musicGroupId));
     }
 
     @ApiOperation("获取学生个人中心乐团信息")
     @GetMapping(value = "/queryPersonalMusicGroups")
     public Object queryPersonalMusicGroups() {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        return succeed(musicGroupService.queryPersonalMusicGroups(sysUser.getId()));
+        return succeed(musicGroupService.queryPersonalMusicGroups(sysUserService.getUserId()));
     }
 
     @ApiOperation(value = "根据学员编号,获取有关联的老师列表,获取学员通讯录列表")
     @GetMapping("/findTeachersByStuId")
     public Object findTeachersByStuId(String search) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        return succeed(musicGroupService.findTeachersByStuId(sysUser.getId(), search));
+        return succeed(musicGroupService.findTeachersByStuId(sysUserService.getUserId(), search));
     }
 
 
@@ -222,18 +204,17 @@ public class MusicGroupController extends BaseController {
     @ApiOperation(value = "申请退团")
     @PostMapping("/quitMusicGroup")
     @ApiImplicitParams({@ApiImplicitParam(name = "musicGroupId", value = "乐团id", required = true, dataType = "String"),
-            @ApiImplicitParam(name = "reason", value = "原因", required = true, dataType = "String")})
-    public HttpResponseResult quitMusicGroup(String musicGroupId, String reason) throws Exception {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-		if (sysUser == null) {
-			return failed(HttpStatus.FORBIDDEN, "请登录");
-		}
+            @ApiImplicitParam(name = "reason", value = "原因", required = true, dataType = "String"),
+            @ApiImplicitParam(name = "reasonEnum", value = "原因", required = true, dataType = "String")})
+    public HttpResponseResult quitMusicGroup(String musicGroupId, String reason,MusicGroupQuit.ReasonEnum reasonEnum) throws Exception {
+        Integer userId = sysUserService.getUserId();
 		MusicGroupQuit musicGroupQuit = new MusicGroupQuit();
-		musicGroupQuit.setUserId(sysUser.getId());
+		musicGroupQuit.setUserId(userId);
 		musicGroupQuit.setMusicGroupId(musicGroupId);
 		musicGroupQuit.setUserComment(reason);
+        musicGroupQuit.setReasonEnum(reasonEnum);
 		musicGroupQuit.setStatus(ApprovalStatus.PROCESSING);
-        return succeed(musicGroupService.applyQuitMusicGroup(null, musicGroupQuit, sysUser.getId()));
+        return succeed(musicGroupService.applyQuitMusicGroup(null, musicGroupQuit, userId));
     }
 
     @ApiOperation(value = "取消退团申请")
@@ -241,17 +222,13 @@ public class MusicGroupController extends BaseController {
     @ApiImplicitParams({@ApiImplicitParam(name = "musicGroupId", value = "乐团id", required = true, dataType = "String"),
             @ApiImplicitParam(name = "reason", value = "取消原因", required = true, dataType = "String")})
     public HttpResponseResult cancelQuitMusicGroup(String musicGroupId, String reason) throws Exception {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        Integer userId = sysUser.getId();
-
-        return succeed(musicGroupService.cancelQuitMusicGroup(userId, musicGroupId, reason));
+        return succeed(musicGroupService.cancelQuitMusicGroup(sysUserService.getUserId(), musicGroupId, reason));
     }
 
     @ApiOperation(value = "查询是否有待支付的报名订单")
     @GetMapping("/checkWaitPayApplyOrder")
     @ApiImplicitParams({@ApiImplicitParam(name = "registerId", value = "注册id", required = true, dataType = "int")})
     public HttpResponseResult<StudentPaymentOrder> checkWaitPayApplyOrder(Long registerId) throws Exception {
-
         StudentRegistration studentRegistration = studentRegistrationService.get(registerId);
         if (studentRegistration == null) {
             return failed("报名信息有误,请核查");
@@ -270,8 +247,7 @@ public class MusicGroupController extends BaseController {
     @ApiOperation(value = "续费")
     @PostMapping("/renew")
     public HttpResponseResult renew(@RequestBody RegisterPayDto renewParamDto) throws Exception {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        Integer userId = sysUser.getId();
+        Integer userId = sysUserService.getUserId();
         Long calenderId = renewParamDto.getCalenderId();
         if(calenderId == null){
             throw new BizException("参数校验失败");

+ 8 - 30
mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupQuitController.java

@@ -1,10 +1,10 @@
 package com.ym.mec.web.controller;
 
-import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.CloudTeacherOrderDao;
 import com.ym.mec.biz.dal.dao.StudentInstrumentDao;
 import com.ym.mec.biz.dal.dao.TeacherDao;
+import com.ym.mec.biz.dal.dto.MusicGroupQuitDto;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
 import com.ym.mec.biz.dal.enums.SysUserRoleEnum;
@@ -23,7 +23,6 @@ import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
@@ -43,7 +42,7 @@ public class MusicGroupQuitController extends BaseController {
     @Autowired
     private StudentRegistrationService studentRegistrationService;
     @Autowired
-    private SysUserFeignService sysUserFeignService;
+    private SysUserService sysUserService;
     @Autowired
     private StudentInstrumentDao studentInstrumentDao;
     @Autowired
@@ -106,8 +105,7 @@ public class MusicGroupQuitController extends BaseController {
         if (musicGroupQuit == null) {
             return failed("参数不正确");
         }
-
-        SysUser user = sysUserFeignService.queryUserById(musicGroupQuit.getUserId());
+        SysUser user = sysUserService.queryUserById(musicGroupQuit.getUserId());
         musicGroupQuit.getUser().setUsername(user.getUsername());
 
         MusicGroup musicGroup = musicGroupService.get(musicGroupQuit.getMusicGroupId());
@@ -168,10 +166,7 @@ public class MusicGroupQuitController extends BaseController {
     @PostMapping("/apply")
     @PreAuthorize("@pcs.hasPermissions('musicGroupQuit/apply')")
     public HttpResponseResult applyQuitMusicGroup(@RequestBody MusicGroupQuit musicGroupQuit){
-		SysUser sysUser = sysUserFeignService.queryUserInfo();
-		if (sysUser == null) {
-			return failed(HttpStatus.FORBIDDEN, "请登录");
-		}
+		SysUser sysUser = sysUserService.getUser();
         List<SysUserRoleEnum> roleIds = employeePositionService.queryAllRole(sysUser.getId(),sysUser.getIsSuperAdmin());
         return succeed(musicGroupService.applyQuitMusicGroup(roleIds, musicGroupQuit, sysUser.getId()));
     }
@@ -180,10 +175,7 @@ public class MusicGroupQuitController extends BaseController {
     @PostMapping("/quitMusicGroup")
     @PreAuthorize("@pcs.hasPermissions('musicGroupQuit/quitMusicGroup')")
     public HttpResponseResult quitMusicGroup(@RequestBody MusicGroupQuit musicGroupQuit){
-		SysUser sysUser = sysUserFeignService.queryUserInfo();
-		if (sysUser == null || sysUser.getId() == null) {
-			return failed(HttpStatus.FORBIDDEN, "请登录");
-		}
+		SysUser sysUser = sysUserService.getUser();
         List<SysUserRoleEnum> roleIds = employeePositionService.queryAllRole(sysUser.getId(),sysUser.getIsSuperAdmin());
 		if (!(roleIds.contains(SysUserRoleEnum.ORGAN_MANAGER) || roleIds.contains(SysUserRoleEnum.EDUCATION))) {
 			return failed("未经授权,不能操作");
@@ -195,10 +187,7 @@ public class MusicGroupQuitController extends BaseController {
     @PostMapping("/batchQuitMusicGroup")
     @PreAuthorize("@pcs.hasPermissions('musicGroupQuit/batchQuitMusicGroup')")
     public HttpResponseResult batchQuitMusicGroup(@RequestBody List<MusicGroupQuit> musicGroupQuits) throws Exception {
-		SysUser sysUser = sysUserFeignService.queryUserInfo();
-		if (sysUser == null) {
-			return failed(HttpStatus.FORBIDDEN, "请登录");
-		}
+		SysUser sysUser = sysUserService.getUser();
         List<SysUserRoleEnum> roleIds = employeePositionService.queryAllRole(sysUser.getId(),sysUser.getIsSuperAdmin());
 		if (!(roleIds.contains(SysUserRoleEnum.ORGAN_MANAGER) || roleIds.contains(SysUserRoleEnum.EDUCATION))) {
 			throw new BizException("未经授权,不能操作");
@@ -212,18 +201,7 @@ public class MusicGroupQuitController extends BaseController {
     @ApiOperation(value = "一键退团")
     @PostMapping("/directQuitMusicGroup")
     @PreAuthorize("@pcs.hasPermissions('musicGroupQuit/directQuitMusicGroup')")
-    @ApiImplicitParams({@ApiImplicitParam(name = "musicGroupId", value = "乐团编号", required = true, dataType = "String"),
-            @ApiImplicitParam(name = "userId", value = "用户编号", required = true, dataType = "Integer"),
-            @ApiImplicitParam(name = "reason", value = "原因", required = true, dataType = "String"),
-            @ApiImplicitParam(name = "isRefundCourseFee", value = "是否退还课程费用", required = true, dataType = "Boolean"),
-            @ApiImplicitParam(name = "isRefundInstrumentFee", value = "是否退还乐器费用(租金)", required = true, dataType = "Boolean"),
-            @ApiImplicitParam(name = "isRefundTeachingAssistantsFee", value = "是否退还教辅费用", required = true, dataType = "Boolean"),
-            @ApiImplicitParam(name = "maintenanceFee", value = "退乐保费用", required = true, dataType = "num"),
-    })
-    public HttpResponseResult directQuitMusicGroup(String musicGroupId, Integer userId, String reason, boolean isRefundCourseFee,
-                                                   boolean isRefundInstrumentFee, boolean isRefundTeachingAssistantsFee,boolean isRefundMemberFee,
-                                                   BigDecimal maintenanceFee) throws Exception {
-        return succeed(musicGroupService.directQuitMusicGroup(musicGroupId, userId, reason, isRefundCourseFee, isRefundInstrumentFee,
-                isRefundTeachingAssistantsFee,isRefundMemberFee, maintenanceFee));
+    public HttpResponseResult directQuitMusicGroup(@RequestBody MusicGroupQuitDto musicGroupQuitDto) throws Exception {
+        return succeed(musicGroupService.directQuitMusicGroup(musicGroupQuitDto));
     }
 }

+ 4 - 4
mec-web/src/main/resources/exportColumnMapper.ini

@@ -171,12 +171,12 @@ headColumns = ["分部", "单位编号", "单位名称", "是否启用","乐团
 fieldColumns = ["organization.name", "id", "name", "isEnable == true ? '是':'否'", "realName", "isEnable == true ? '开启' : '未开启'"]
 
 [财务管理导出1]
-headColumns = ["序号", "学生编号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "订单金额", "应付金额", "现金支付", "余额支付", "分润账户", "分润金额", "分配余额", "优惠金额", "乐团课", "VIP课", "网管课", "乐理课", "考级", "维修费用", "乐保费用", "云教练", "押金", "乐器", "教辅费用", "上门费", "账户充值", "其它", "汇付手续费", "平台手续费", "到账时间", "关联乐团ID/VIP课ID", "课程形态","类型","收费乐团编号","收费乐团", "零星收款类别", "专业", "分部", "教学点", "合作单位", "乐团主管", "备注"]
-fieldColumns = ["id", "userId", "user.username", "transNo", "orderNo", "paymentChannel", "merNos", "orderAmount", "expectAmount", "actualAmount", "balancePaymentAmount", "routeMerNo", "routeAmount", "routeBalance",  "couponRemitFee",     "musicGroupCourseFee", "vipCourseFee", "practiceCourseFee", "theoryCourseFee", "degreeFee", "repairFee", "maintenanceFee", "cloudTeacherFee", "leaseFee", "musicalFee", "teachingFee", "visitFee", "rechargeFee", "otherFee", "transferFee", "platformFee", "payTime", "musicGroupId", "groupType.desc","typeDesc","feeMusicGroupId","feeMusicGroupName", "sporadicType", "subjectName", "organName", "schoolName", "cooperationOrganName", "eduTeacher", "memo"]
+headColumns = ["序号", "业务分部",  "学生编号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "订单金额", "应付金额", "现金支付", "余额支付", "分润账户", "分润金额", "分配余额", "优惠金额", "乐团课", "VIP课", "网管课", "乐理课", "考级", "维修费用", "乐保费用", "云教练", "押金", "乐器", "教辅费用", "上门费", "账户充值", "其它", "汇付手续费", "平台手续费", "到账时间", "关联乐团ID/VIP课ID", "课程形态","类型","收费乐团编号","收费乐团", "零星收款类别", "专业", "分部", "教学点", "合作单位", "乐团主管", "备注"]
+fieldColumns = ["id", "userOrganName", "userId", "user.username", "transNo", "orderNo", "paymentChannel", "merNos", "orderAmount", "expectAmount", "actualAmount", "balancePaymentAmount", "routeMerNo", "routeAmount", "routeBalance",  "couponRemitFee",     "musicGroupCourseFee", "vipCourseFee", "practiceCourseFee", "theoryCourseFee", "degreeFee", "repairFee", "maintenanceFee", "cloudTeacherFee", "leaseFee", "musicalFee", "teachingFee", "visitFee", "rechargeFee", "otherFee", "transferFee", "platformFee", "payTime", "musicGroupId", "groupType.desc","typeDesc","feeMusicGroupId","feeMusicGroupName", "sporadicType", "subjectName", "organName", "schoolName", "cooperationOrganName", "eduTeacher", "memo"]
 
 [财务管理导出2]
-headColumns = ["序号", "学生编号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "订单金额", "应付金额", "现金支付", "余额支付", "分润账户", "分润金额", "分配余额", "优惠金额", "乐团课", "VIP课", "网管课", "乐理课", "考级", "维修费用", "乐保费用", "云教练", "押金", "乐器", "教辅费用", "上门费", "账户充值", "其它", "平台手续费", "到账时间", "关联乐团ID/VIP课ID", "课程形态","类型","收费乐团编号","收费乐团", "零星收款类别", "专业", "分部", "教学点", "合作单位", "乐团主管", "备注"]
-fieldColumns = ["id", "userId", "user.username", "transNo", "orderNo", "paymentChannel", "merNos", "orderAmount" , "expectAmount", "actualAmount", "balancePaymentAmount", "routeMerNo", "routeAmount", "routeBalance",  "couponRemitFee",     "musicGroupCourseFee", "vipCourseFee", "practiceCourseFee", "theoryCourseFee", "degreeFee", "repairFee", "maintenanceFee", "cloudTeacherFee", "leaseFee", "musicalFee", "teachingFee", "visitFee", "rechargeFee", "otherFee", "platformFee", "payTime", "musicGroupId", "groupType.desc","typeDesc","feeMusicGroupId","feeMusicGroupName", "sporadicType", "subjectName", "organName", "schoolName", "cooperationOrganName", "eduTeacher", "memo"]
+headColumns = ["序号", "业务分部", "学生编号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "订单金额", "应付金额", "现金支付", "余额支付", "分润账户", "分润金额", "分配余额", "优惠金额", "乐团课", "VIP课", "网管课", "乐理课", "考级", "维修费用", "乐保费用", "云教练", "押金", "乐器", "教辅费用", "上门费", "账户充值", "其它", "平台手续费", "到账时间", "关联乐团ID/VIP课ID", "课程形态","类型","收费乐团编号","收费乐团", "零星收款类别", "专业", "分部", "教学点", "合作单位", "乐团主管", "备注"]
+fieldColumns = ["id", "userOrganName", "userId", "user.username", "transNo", "orderNo", "paymentChannel", "merNos", "orderAmount" , "expectAmount", "actualAmount", "balancePaymentAmount", "routeMerNo", "routeAmount", "routeBalance",  "couponRemitFee",     "musicGroupCourseFee", "vipCourseFee", "practiceCourseFee", "theoryCourseFee", "degreeFee", "repairFee", "maintenanceFee", "cloudTeacherFee", "leaseFee", "musicalFee", "teachingFee", "visitFee", "rechargeFee", "otherFee", "platformFee", "payTime", "musicGroupId", "groupType.desc","typeDesc","feeMusicGroupId","feeMusicGroupName", "sporadicType", "subjectName", "organName", "schoolName", "cooperationOrganName", "eduTeacher", "memo"]
 
 [老师默认课酬导出]
 headColumns = ["老师编号", "姓名", "分部", "工作类型", "在职状态", "老师状态", "1v1", "1v2", "1v3", "1v4", "1v5", "1v6", "1v7","网管课", "单技课2.0(主教)", "合奏课2.0(主教)", "综合课2.0(主教)", "集训单技课2.0(主教)", "集训合奏课2.0(主教)","基础技能课2.0(主教)", "课堂课(主教)", "单技课3.0(主教)", "合奏课3.0(主教)", "综合课3.0(主教)", "集训单技课3.0(主教)", "集训合奏课3.0(主教)","基础技能课3.0(主教)", "单技课2.0(助教)", "合奏课2.0(助教)", "综合课2.0(助教)", "集训单技课2.0(助教)", "集训合奏课2.0(助教)","基础技能课2.0(助教)", "课堂课(助教)", "单技课3.0(助教)", "合奏课3.0(助教)", "综合课3.0(助教)", "集训单技课3.0(助教)", "集训合奏课3.0(助教)","基础技能课3.0(助教)", "网络基础训练课1v3", "网络基础训练课1v4", "网络基础训练课1v5", "乐团网管课1v1"]