zouxuan 3 years ago
parent
commit
b2113c0253

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

@@ -418,4 +418,6 @@ public interface StudentDao extends com.ym.mec.common.dal.BaseDAO<Integer, Stude
     int countStudent(Map<String, Object> params);
 
     List<Student> queryStudent(Map<String, Object> params);
+
+    List<Map<Integer, String>> getStudentTeacherMap(List<Integer> studentIds);
 }

+ 36 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ActivityUserMapperAddDto.java

@@ -0,0 +1,36 @@
+package com.ym.mec.biz.dal.dto;
+
+import java.util.List;
+
+public class ActivityUserMapperAddDto {
+
+    private Integer activityId;
+
+    private String memo;
+
+    private List<ActivityStudentAdjustDto> activityStudentAdjustDtos;
+
+    public List<ActivityStudentAdjustDto> getActivityStudentAdjustDtos() {
+        return activityStudentAdjustDtos;
+    }
+
+    public void setActivityStudentAdjustDtos(List<ActivityStudentAdjustDto> activityStudentAdjustDtos) {
+        this.activityStudentAdjustDtos = activityStudentAdjustDtos;
+    }
+
+    public Integer getActivityId() {
+        return activityId;
+    }
+
+    public void setActivityId(Integer activityId) {
+        this.activityId = activityId;
+    }
+
+    public String getMemo() {
+        return memo;
+    }
+
+    public void setMemo(String memo) {
+        this.memo = memo;
+    }
+}

+ 20 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ActivityUserMapper.java

@@ -56,6 +56,10 @@ public class ActivityUserMapper {
 	private Boolean returnFee = false;
 
 	private BigDecimal actualPrice = BigDecimal.ZERO;
+
+	private String addMemo;
+
+	private String cutMemo;
 	
 	/**  */
 	private java.util.Date createTime;
@@ -63,6 +67,22 @@ public class ActivityUserMapper {
 	/**  */
 	private java.util.Date updateTime;
 
+	public String getAddMemo() {
+		return addMemo;
+	}
+
+	public void setAddMemo(String addMemo) {
+		this.addMemo = addMemo;
+	}
+
+	public String getCutMemo() {
+		return cutMemo;
+	}
+
+	public void setCutMemo(String cutMemo) {
+		this.cutMemo = cutMemo;
+	}
+
 	public BigDecimal getActualPrice() {
 		return actualPrice;
 	}

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/ReturnFeeEnum.java

@@ -10,7 +10,8 @@ public enum ReturnFeeEnum implements BaseEnum<String, ReturnFeeEnum> {
 	PRACTICE("PRACTICE", "网管课关闭"),
 	MUSIC("MUSIC", "乐团退团"),
 	GOODS("GOODS", "商品退费"),
-	SUBJECT_CHANGE("SUBJECT_CHANGE", "声部更换");
+	SUBJECT_CHANGE("SUBJECT_CHANGE", "声部更换"),
+	CANCEL_ACTIVITY_COURSE("CANCEL_ACTIVITY_COURSE", "取消活动排课");
 
 	private String code;
 

+ 5 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/ActivityUserMapperService.java

@@ -3,12 +3,14 @@ package com.ym.mec.biz.service;
 import com.ym.mec.biz.dal.dto.ActivityQueryDto;
 import com.ym.mec.biz.dal.dto.ActivityStudentAdjustDto;
 import com.ym.mec.biz.dal.dto.ActivityStudentDto;
+import com.ym.mec.biz.dal.dto.ActivityUserMapperAddDto;
 import com.ym.mec.biz.dal.entity.ActivityUserMapper;
 import com.ym.mec.biz.dal.page.ActivityStudentQueryInfo;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 import org.apache.ibatis.annotations.Param;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 public interface ActivityUserMapperService extends BaseService<Integer, ActivityUserMapper> {
@@ -85,12 +87,12 @@ public interface ActivityUserMapperService extends BaseService<Integer, Activity
 
     /**
     * @description: 添加排课资格
-     * @param activityStudentAdjustDtos
+     * @param activityUserMapperAddDto
     * @return void
     * @author zx
     * @date 2021/11/18 11:19
     */
-    void add(List<ActivityStudentAdjustDto> activityStudentAdjustDtos);
+    void add(ActivityUserMapperAddDto activityUserMapperAddDto);
 
     /**
     * @description: 取消排课资格
@@ -100,5 +102,5 @@ public interface ActivityUserMapperService extends BaseService<Integer, Activity
     * @author zx
     * @date 2021/11/18 11:19
     */
-    void cut(Integer activityUserMapperId, String memo);
+    void cut(Integer activityUserMapperId, String memo, BigDecimal amount);
 }

+ 66 - 14
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ActivityUserMapperServiceImpl.java

@@ -1,12 +1,16 @@
 package com.ym.mec.biz.service.impl;
 
-import com.ym.mec.biz.dal.dao.ActivityUserMapperDao;
-import com.ym.mec.biz.dal.dao.VipGroupActivityDao;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.ActivityQueryDto;
 import com.ym.mec.biz.dal.dto.ActivityStudentAdjustDto;
 import com.ym.mec.biz.dal.dto.ActivityStudentDto;
+import com.ym.mec.biz.dal.dto.ActivityUserMapperAddDto;
 import com.ym.mec.biz.dal.entity.ActivityUserMapper;
+import com.ym.mec.biz.dal.entity.Student;
+import com.ym.mec.biz.dal.entity.SysUserCashAccountLog;
 import com.ym.mec.biz.dal.entity.VipGroupActivity;
+import com.ym.mec.biz.dal.enums.ReturnFeeEnum;
 import com.ym.mec.biz.dal.page.ActivityStudentQueryInfo;
 import com.ym.mec.biz.service.ActivityUserMapperService;
 import com.ym.mec.common.dal.BaseDAO;
@@ -25,6 +29,9 @@ import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
 
+import static com.ym.mec.biz.dal.enums.GroupType.ACTIVITY;
+import static com.ym.mec.biz.dal.enums.GroupType.SUBJECT_CHANGE;
+
 @Service
 public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, ActivityUserMapper>  implements ActivityUserMapperService {
 	
@@ -32,6 +39,12 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
 	private ActivityUserMapperDao activityUserMapperDao;
 	@Autowired
 	private VipGroupActivityDao vipGroupActivityDao;
+	@Autowired
+	private StudentDao studentDao;
+	@Autowired
+	private TeacherDao teacherDao;
+	@Autowired
+	private SysUserCashAccountLogDao sysUserCashAccountLogDao;
 
 	@Override
 	public BaseDAO<Integer, ActivityUserMapper> getDAO() {
@@ -90,11 +103,13 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
 
     @Override
 	@Transactional(rollbackFor = Exception.class)
-    public void add(List<ActivityStudentAdjustDto> activityStudentAdjustDtos) {
-        if(activityStudentAdjustDtos == null || activityStudentAdjustDtos.size() == 0){
+    public void add(ActivityUserMapperAddDto activityUserMapperAddDto) {
+		List<ActivityStudentAdjustDto> activityStudentAdjustDtos = activityUserMapperAddDto.getActivityStudentAdjustDtos();
+		if(activityStudentAdjustDtos == null || activityStudentAdjustDtos.size() == 0){
         	throw new BizException("请选择学员");
 		}
-		Integer activityId = activityStudentAdjustDtos.get(0).getActivityId();
+		Integer activityId = activityUserMapperAddDto.getActivityId();
+		String memo = activityUserMapperAddDto.getMemo();
 		VipGroupActivity activity = vipGroupActivityDao.get(activityId);
 		if(activity == null){
 			throw new BizException("活动信息不存在");
@@ -103,7 +118,8 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
 			throw new BizException("操作失败:只有课程活动支持此操作");
 		}
 		List<Integer> studentIds = activityStudentAdjustDtos.stream().map(e -> e.getUserId()).collect(Collectors.toList());
-
+		List<Student> studentTeacher = studentDao.findByStudentIds(studentIds);
+		Map<Integer, List<Student>> collect = studentTeacher.stream().collect(Collectors.groupingBy(Student::getUserId));
 		String courseType = activity.getCourseType();
 		Integer giveCourseNum = activity.getGiveCourseNum();
 		String giveCourseType = activity.getGiveCourseType();
@@ -118,32 +134,68 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
 			if(activityUserMapperNum <= 0){
 				throw new BizException("操作失败:加课次数不可为空");
 			}
+			List<Student> students = collect.get(adjustDto.getUserId());
+			Integer teacherId = null;
+			if(students != null && students.size() > 0){
+				teacherId = students.get(0).getTeacherId();
+			}
 			for (int i = 0; i < activityUserMapperNum; i++) {
 				ActivityUserMapper activityUserMapper = new ActivityUserMapper();
 				activityUserMapper.setActivityId(activityId);
 				activityUserMapper.setUserId(adjustDto.getUserId());
 				activityUserMapper.setActualPrice(BigDecimal.ZERO);
 				activityUserMapper.setReturnFee(false);
-//				activityUserMapper.setTeacherId();
-				if("VIP".equals(courseType)){
-					activityUserMapper.setVipFlag(1);
-				}else {
-					activityUserMapper.setPracticeFlag(1);
+				activityUserMapper.setTeacherId(teacherId);
+				activityUserMapper.setAddMemo(memo);
+				if(adjustDto.getCourseNum() > i){
+					if("VIP".equals(courseType)){
+						activityUserMapper.setVipFlag(1);
+					}else {
+						activityUserMapper.setPracticeFlag(1);
+					}
 				}
-				if(giveCourseNum != null && giveCourseNum > 0){
+
+				if(adjustDto.getGiveCourseNum() > i && giveCourseNum != null && giveCourseNum > 0){
 					if("VIP".equals(giveCourseType)){
 						activityUserMapper.setGiveVipFlag(1);
 					}else {
 						activityUserMapper.setGivePracticeFlag(1);
 					}
 				}
+				activityUserMappers.add(activityUserMapper);
 			}
 		}
+		activityUserMapperDao.batchInsert(activityUserMappers);
 	}
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public void cut(Integer activityUserMapperId, String memo) {
-
+	public void cut(Integer activityUserMapperId, String memo, BigDecimal amount) {
+		ActivityUserMapper activityUserMapper = activityUserMapperDao.get(activityUserMapperId);
+		if(activityUserMapper.getVipFlag() == 2 ||
+				activityUserMapper.getGiveVipFlag() == 2 ||
+				activityUserMapper.getPracticeGroupId() == 2 ||
+				activityUserMapper.getGivePracticeFlag() == 2 || activityUserMapper.getReturnFee()){
+			throw new BizException("操作失败:活动已消耗");
+		}
+		activityUserMapper.setCutMemo(memo);
+		activityUserMapper.setReturnFee(true);
+		activityUserMapperDao.update(activityUserMapper);
+		if(amount == null || amount.compareTo(BigDecimal.ZERO) <= 0){
+			return;
+		}
+		if(amount.compareTo(activityUserMapper.getActualPrice()) > 0){
+			throw new BizException("操作失败:退费金额不得超过购买金额{}",activityUserMapper.getActualPrice());
+		}
+		SysUser user = teacherDao.getUser(activityUserMapper.getUserId());
+		SysUserCashAccountLog sysUserCashAccountLog = new SysUserCashAccountLog();
+		sysUserCashAccountLog.setUserId(activityUserMapper.getUserId());
+		sysUserCashAccountLog.setGroupType(ACTIVITY);
+		sysUserCashAccountLog.setOrganId(user.getOrganId());
+		sysUserCashAccountLog.setGroupId(activityUserMapperId.toString());
+		sysUserCashAccountLog.setAmount(amount);
+		sysUserCashAccountLog.setReturnFeeType(ReturnFeeEnum.CANCEL_ACTIVITY_COURSE);
+		sysUserCashAccountLog.setComment("取消活动排课");
+		sysUserCashAccountLogDao.insert(sysUserCashAccountLog);
 	}
 }

+ 12 - 4
mec-biz/src/main/resources/config/mybatis/ActivityUserMapperMapper.xml

@@ -26,6 +26,8 @@
 		<result column="give_practice_group_id_" property="givePracticeGroupId" />
 		<result column="return_fee_" property="returnFee" />
 		<result column="actual_price_" property="actualPrice" />
+		<result column="add_memo_" property="addMemo" />
+		<result column="cut_memo_" property="cutMemo" />
 		<result column="create_time_" property="createTime" />
 		<result column="update_time_" property="updateTime" />
 	</resultMap>
@@ -45,23 +47,23 @@
 		INSERT INTO activity_user_mapper (activity_id_,user_id_,vip_flag_,give_vip_flag_,
 		                                  practice_flag_,give_practice_flag_,member_flag_,give_member_flag_,create_time_,update_time_,payment_order_id_,
 										  vip_group_id_,give_vip_group_id_,practice_group_id_,give_practice_group_id_,return_fee_,
-		                                  member_order_id_,give_member_order_id_,teacher_id_,actual_price_)
+		                                  member_order_id_,give_member_order_id_,teacher_id_,actual_price_,add_memo_,cut_memo_)
 		                                  VALUES(#{activityId},#{userId},#{vipFlag},#{giveVipFlag},#{practiceFlag},
 		                                         #{givePracticeFlag},#{memberFlag},#{giveMemberFlag},NOW(),NOW(),#{paymentOrderId},#{vipGroupId},
 		                                         #{giveVipGroupId},#{practiceGroupId},#{givePracticeGroupId},#{returnFee},
-		                                         #{memberOrderId},#{giveMemberOrderId},#{teacherId},#{actualPrice})
+		                                         #{memberOrderId},#{giveMemberOrderId},#{teacherId},#{actualPrice},#{addMemo},#{cutMemo})
 	</insert>
     <insert id="batchInsert">
 		INSERT INTO activity_user_mapper (activity_id_,user_id_,vip_flag_,give_vip_flag_,
 		practice_flag_,give_practice_flag_,member_flag_,give_member_flag_,create_time_,update_time_,payment_order_id_,
 		vip_group_id_,give_vip_group_id_,practice_group_id_,give_practice_group_id_,return_fee_,member_order_id_,
-		                                  give_member_order_id_,teacher_id_,actual_price_)
+		                                  give_member_order_id_,teacher_id_,actual_price_,add_memo_,cut_memo_)
 		VALUES
 		<foreach collection="activityUserMappers" item="item" separator=",">
 			(#{item.activityId},#{item.userId},#{item.vipFlag},#{item.giveVipFlag},#{item.practiceFlag},
 			#{item.givePracticeFlag},#{item.memberFlag},#{item.giveMemberFlag},NOW(),NOW(),#{item.paymentOrderId},#{item.vipGroupId},
 			#{item.giveVipGroupId},#{item.practiceGroupId},#{item.givePracticeGroupId},#{item.returnFee},
-			 #{item.memberOrderId},#{item.giveMemberOrderId},#{item.teacherId},#{item.actualPrice})
+			 #{item.memberOrderId},#{item.giveMemberOrderId},#{item.teacherId},#{item.actualPrice},#{item.addMemo},#{item.cutMemo})
 		</foreach>
 	</insert>
 
@@ -69,6 +71,12 @@
 	<update id="update" parameterType="com.ym.mec.biz.dal.entity.ActivityUserMapper">
 		UPDATE activity_user_mapper
 		<set>
+			<if test="cutMemo != null">
+				cut_memo_ = #{cutMemo},
+			</if>
+			<if test="addMemo != null">
+				add_memo_ = #{addMemo},
+			</if>
 			<if test="actualPrice != null">
 				actual_price_ = #{actualPrice},
 			</if>

+ 6 - 4
mec-web/src/main/java/com/ym/mec/web/controller/ActivityUserMapperController.java

@@ -1,6 +1,7 @@
 package com.ym.mec.web.controller;
 
 import com.ym.mec.biz.dal.dto.ActivityStudentAdjustDto;
+import com.ym.mec.biz.dal.dto.ActivityUserMapperAddDto;
 import com.ym.mec.biz.dal.page.ActivityStudentQueryInfo;
 import com.ym.mec.biz.service.ActivityUserMapperService;
 import com.ym.mec.common.controller.BaseController;
@@ -13,6 +14,7 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 @Api(tags = "学员活动排课记录服务")
@@ -26,16 +28,16 @@ public class ActivityUserMapperController extends BaseController {
     @ApiOperation(value = "添加活动排课资格")
     @PostMapping("/add")
     @PreAuthorize("@pcs.hasPermissions('activityUserMapper/add')")
-    public Object add(@RequestBody List<ActivityStudentAdjustDto> ActivityStudentAdjustDtos){
-        activityUserMapperService.add(ActivityStudentAdjustDtos);
+    public Object add(@RequestBody ActivityUserMapperAddDto activityUserMapperAddDto){
+        activityUserMapperService.add(activityUserMapperAddDto);
         return succeed();
     }
 
     @ApiOperation(value = "取消活动排课资格")
     @RequestMapping("/cut")
     @PreAuthorize("@pcs.hasPermissions('activityUserMapper/cut')")
-    public Object cut(Integer activityUserMapperId,String memo){
-        activityUserMapperService.cut(activityUserMapperId,memo);
+    public Object cut(Integer activityUserMapperId, String memo, BigDecimal amount){
+        activityUserMapperService.cut(activityUserMapperId,memo,amount);
         return succeed();
     }