Browse Source

Merge branch 'mec_update_2021-11-02' of http://git.dayaedu.com/yonge/mec

zouxuan 4 years ago
parent
commit
0be315ebc9

+ 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);
     int countStudent(Map<String, Object> params);
 
 
     List<Student> queryStudent(Map<String, Object> params);
     List<Student> queryStudent(Map<String, Object> params);
+
+    List<Map<Integer, String>> getStudentTeacherMap(List<Integer> studentIds);
 }
 }

+ 54 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ActivityStudentAdjustDto.java

@@ -0,0 +1,54 @@
+package com.ym.mec.biz.dal.dto;
+
+public class ActivityStudentAdjustDto {
+
+    private Integer userId;
+
+    private Integer courseNum = 0;
+
+    private Integer giveCourseNum = 0;
+
+    private Integer activityId;
+
+    private String memo;
+
+    public String getMemo() {
+        return memo;
+    }
+
+    public void setMemo(String memo) {
+        this.memo = memo;
+    }
+
+    public Integer getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
+
+    public Integer getCourseNum() {
+        return courseNum;
+    }
+
+    public void setCourseNum(Integer courseNum) {
+        this.courseNum = courseNum;
+    }
+
+    public Integer getGiveCourseNum() {
+        return giveCourseNum;
+    }
+
+    public void setGiveCourseNum(Integer giveCourseNum) {
+        this.giveCourseNum = giveCourseNum;
+    }
+
+    public Integer getActivityId() {
+        return activityId;
+    }
+
+    public void setActivityId(Integer activityId) {
+        this.activityId = activityId;
+    }
+}

+ 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 Boolean returnFee = false;
 
 
 	private BigDecimal actualPrice = BigDecimal.ZERO;
 	private BigDecimal actualPrice = BigDecimal.ZERO;
+
+	private String addMemo;
+
+	private String cutMemo;
 	
 	
 	/**  */
 	/**  */
 	private java.util.Date createTime;
 	private java.util.Date createTime;
@@ -63,6 +67,22 @@ public class ActivityUserMapper {
 	/**  */
 	/**  */
 	private java.util.Date updateTime;
 	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() {
 	public BigDecimal getActualPrice() {
 		return actualPrice;
 		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", "网管课关闭"),
 	PRACTICE("PRACTICE", "网管课关闭"),
 	MUSIC("MUSIC", "乐团退团"),
 	MUSIC("MUSIC", "乐团退团"),
 	GOODS("GOODS", "商品退费"),
 	GOODS("GOODS", "商品退费"),
-	SUBJECT_CHANGE("SUBJECT_CHANGE", "声部更换");
+	SUBJECT_CHANGE("SUBJECT_CHANGE", "声部更换"),
+	CANCEL_ACTIVITY_COURSE("CANCEL_ACTIVITY_COURSE", "取消活动排课");
 
 
 	private String code;
 	private String code;
 
 

+ 22 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ActivityUserMapperService.java

@@ -1,13 +1,16 @@
 package com.ym.mec.biz.service;
 package com.ym.mec.biz.service;
 
 
 import com.ym.mec.biz.dal.dto.ActivityQueryDto;
 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.ActivityStudentDto;
+import com.ym.mec.biz.dal.dto.ActivityUserMapperAddDto;
 import com.ym.mec.biz.dal.entity.ActivityUserMapper;
 import com.ym.mec.biz.dal.entity.ActivityUserMapper;
 import com.ym.mec.biz.dal.page.ActivityStudentQueryInfo;
 import com.ym.mec.biz.dal.page.ActivityStudentQueryInfo;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 import com.ym.mec.common.service.BaseService;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
 
 
+import java.math.BigDecimal;
 import java.util.List;
 import java.util.List;
 
 
 public interface ActivityUserMapperService extends BaseService<Integer, ActivityUserMapper> {
 public interface ActivityUserMapperService extends BaseService<Integer, ActivityUserMapper> {
@@ -81,4 +84,23 @@ public interface ActivityUserMapperService extends BaseService<Integer, Activity
     * @date 2021/11/15 16:34
     * @date 2021/11/15 16:34
     */
     */
     PageInfo<ActivityStudentDto> queryActivityUserMapper(ActivityStudentQueryInfo queryInfo);
     PageInfo<ActivityStudentDto> queryActivityUserMapper(ActivityStudentQueryInfo queryInfo);
+
+    /**
+    * @description: 添加排课资格
+     * @param activityUserMapperAddDto
+    * @return void
+    * @author zx
+    * @date 2021/11/18 11:19
+    */
+    void add(ActivityUserMapperAddDto activityUserMapperAddDto);
+
+    /**
+    * @description: 取消排课资格
+     * @param activityUserMapperId
+     * @param memo
+    * @return void
+    * @author zx
+    * @date 2021/11/18 11:19
+    */
+    void cut(Integer activityUserMapperId, String memo, BigDecimal amount);
 }
 }

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

@@ -1,28 +1,50 @@
 package com.ym.mec.biz.service.impl;
 package com.ym.mec.biz.service.impl;
 
 
-import com.ym.mec.biz.dal.dao.ActivityUserMapperDao;
+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.ActivityQueryDto;
+import com.ym.mec.biz.dal.dto.ActivityStudentAdjustDto;
 import com.ym.mec.biz.dal.dto.ActivityStudentDto;
 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.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.dal.page.ActivityStudentQueryInfo;
 import com.ym.mec.biz.service.ActivityUserMapperService;
 import com.ym.mec.biz.service.ActivityUserMapperService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.collection.MapUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashMap;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 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
 @Service
 public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, ActivityUserMapper>  implements ActivityUserMapperService {
 public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, ActivityUserMapper>  implements ActivityUserMapperService {
 	
 	
 	@Autowired
 	@Autowired
 	private ActivityUserMapperDao activityUserMapperDao;
 	private ActivityUserMapperDao activityUserMapperDao;
+	@Autowired
+	private VipGroupActivityDao vipGroupActivityDao;
+	@Autowired
+	private StudentDao studentDao;
+	@Autowired
+	private TeacherDao teacherDao;
+	@Autowired
+	private SysUserCashAccountLogDao sysUserCashAccountLogDao;
 
 
 	@Override
 	@Override
 	public BaseDAO<Integer, ActivityUserMapper> getDAO() {
 	public BaseDAO<Integer, ActivityUserMapper> getDAO() {
@@ -78,4 +100,102 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
 		pageInfo.setRows(dataList);
 		pageInfo.setRows(dataList);
 		return pageInfo;
 		return pageInfo;
     }
     }
+
+    @Override
+	@Transactional(rollbackFor = Exception.class)
+    public void add(ActivityUserMapperAddDto activityUserMapperAddDto) {
+		List<ActivityStudentAdjustDto> activityStudentAdjustDtos = activityUserMapperAddDto.getActivityStudentAdjustDtos();
+		if(activityStudentAdjustDtos == null || activityStudentAdjustDtos.size() == 0){
+        	throw new BizException("请选择学员");
+		}
+		Integer activityId = activityUserMapperAddDto.getActivityId();
+		String memo = activityUserMapperAddDto.getMemo();
+		VipGroupActivity activity = vipGroupActivityDao.get(activityId);
+		if(activity == null){
+			throw new BizException("活动信息不存在");
+		}
+		if(activity.getActivityType() != 1){
+			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();
+		List<ActivityUserMapper> activityUserMappers = new ArrayList<>();
+		for (ActivityStudentAdjustDto adjustDto : activityStudentAdjustDtos) {
+			int activityUserMapperNum = adjustDto.getCourseNum();
+			if(giveCourseNum != null && giveCourseNum > 0){
+				if(adjustDto.getGiveCourseNum() > activityUserMapperNum){
+					activityUserMapperNum = adjustDto.getGiveCourseNum();
+				}
+			}
+			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(teacherId);
+				activityUserMapper.setAddMemo(memo);
+				if(adjustDto.getCourseNum() > i){
+					if("VIP".equals(courseType)){
+						activityUserMapper.setVipFlag(1);
+					}else {
+						activityUserMapper.setPracticeFlag(1);
+					}
+				}
+
+				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, 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="give_practice_group_id_" property="givePracticeGroupId" />
 		<result column="return_fee_" property="returnFee" />
 		<result column="return_fee_" property="returnFee" />
 		<result column="actual_price_" property="actualPrice" />
 		<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="create_time_" property="createTime" />
 		<result column="update_time_" property="updateTime" />
 		<result column="update_time_" property="updateTime" />
 	</resultMap>
 	</resultMap>
@@ -45,23 +47,23 @@
 		INSERT INTO activity_user_mapper (activity_id_,user_id_,vip_flag_,give_vip_flag_,
 		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_,
 		                                  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_,
 										  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},
 		                                  VALUES(#{activityId},#{userId},#{vipFlag},#{giveVipFlag},#{practiceFlag},
 		                                         #{givePracticeFlag},#{memberFlag},#{giveMemberFlag},NOW(),NOW(),#{paymentOrderId},#{vipGroupId},
 		                                         #{givePracticeFlag},#{memberFlag},#{giveMemberFlag},NOW(),NOW(),#{paymentOrderId},#{vipGroupId},
 		                                         #{giveVipGroupId},#{practiceGroupId},#{givePracticeGroupId},#{returnFee},
 		                                         #{giveVipGroupId},#{practiceGroupId},#{givePracticeGroupId},#{returnFee},
-		                                         #{memberOrderId},#{giveMemberOrderId},#{teacherId},#{actualPrice})
+		                                         #{memberOrderId},#{giveMemberOrderId},#{teacherId},#{actualPrice},#{addMemo},#{cutMemo})
 	</insert>
 	</insert>
     <insert id="batchInsert">
     <insert id="batchInsert">
 		INSERT INTO activity_user_mapper (activity_id_,user_id_,vip_flag_,give_vip_flag_,
 		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_,
 		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_,
 		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
 		VALUES
 		<foreach collection="activityUserMappers" item="item" separator=",">
 		<foreach collection="activityUserMappers" item="item" separator=",">
 			(#{item.activityId},#{item.userId},#{item.vipFlag},#{item.giveVipFlag},#{item.practiceFlag},
 			(#{item.activityId},#{item.userId},#{item.vipFlag},#{item.giveVipFlag},#{item.practiceFlag},
 			#{item.givePracticeFlag},#{item.memberFlag},#{item.giveMemberFlag},NOW(),NOW(),#{item.paymentOrderId},#{item.vipGroupId},
 			#{item.givePracticeFlag},#{item.memberFlag},#{item.giveMemberFlag},NOW(),NOW(),#{item.paymentOrderId},#{item.vipGroupId},
 			#{item.giveVipGroupId},#{item.practiceGroupId},#{item.givePracticeGroupId},#{item.returnFee},
 			#{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>
 		</foreach>
 	</insert>
 	</insert>
 
 
@@ -69,6 +71,12 @@
 	<update id="update" parameterType="com.ym.mec.biz.dal.entity.ActivityUserMapper">
 	<update id="update" parameterType="com.ym.mec.biz.dal.entity.ActivityUserMapper">
 		UPDATE activity_user_mapper
 		UPDATE activity_user_mapper
 		<set>
 		<set>
+			<if test="cutMemo != null">
+				cut_memo_ = #{cutMemo},
+			</if>
+			<if test="addMemo != null">
+				add_memo_ = #{addMemo},
+			</if>
 			<if test="actualPrice != null">
 			<if test="actualPrice != null">
 				actual_price_ = #{actualPrice},
 				actual_price_ = #{actualPrice},
 			</if>
 			</if>

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

@@ -4079,8 +4079,9 @@
     <select id="queryHasCourseStudentIds" resultType="java.lang.Integer">
     <select id="queryHasCourseStudentIds" resultType="java.lang.Integer">
         SELECT DISTINCT s.user_id_ FROM student s
         SELECT DISTINCT s.user_id_ FROM student s
         LEFT JOIN course_schedule_student_payment cssp ON s.user_id_ = cssp.user_id_
         LEFT JOIN course_schedule_student_payment cssp ON s.user_id_ = cssp.user_id_
-        LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_
-        WHERE cs.group_type_ = #{groupType} AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0
+        LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_ AND cs.group_type_ = #{groupType} AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0
+        LEFT JOIN sys_user su ON su.id_ = s.user_id_
+        WHERE 1=1
         <if test="hasMember != null">
         <if test="hasMember != null">
             <if test="hasMember == 1">
             <if test="hasMember == 1">
                 AND s.member_rank_setting_id_ IS NOT NULL
                 AND s.member_rank_setting_id_ IS NOT NULL
@@ -4089,6 +4090,15 @@
                 AND s.member_rank_setting_id_ IS NULL
                 AND s.member_rank_setting_id_ IS NULL
             </if>
             </if>
         </if>
         </if>
+        <if test="subjectId != null">
+            AND s.subject_id_list_ = #{subjectId}
+        </if>
+        <if test="search != null and search != ''">
+            AND (s.user_id_ = #{search} OR su.username_ LIKE CONCAT('%',#{search},'%') OR su.phone_ LIKE CONCAT('%',#{search},'%'))
+        </if>
+        <if test="organId != null and organId != ''">
+            AND FIND_IN_SET(su.organ_id_,#{organId})
+        </if>
         <if test="studentIds != null and studentIds.size > 0">
         <if test="studentIds != null and studentIds.size > 0">
             AND s.user_id_ IN
             AND s.user_id_ IN
             <foreach collection="studentIds" separator="," item="studentId" open="(" close=")">
             <foreach collection="studentIds" separator="," item="studentId" open="(" close=")">
@@ -4099,7 +4109,7 @@
             GROUP BY s.user_id_ HAVING COUNT(CASE WHEN cs.status_ = 'NOT_START' THEN 1 ELSE NULL END) > 0
             GROUP BY s.user_id_ HAVING COUNT(CASE WHEN cs.status_ = 'NOT_START' THEN 1 ELSE NULL END) > 0
         </if>
         </if>
         <if test="hasCourse == 0">
         <if test="hasCourse == 0">
-            GROUP BY s.user_id_ HAVING COUNT(CASE WHEN cs.status_ = 'NOT_START' THEN 1 ELSE NULL END) &lt;= 0
+            GROUP BY s.user_id_ HAVING COUNT(CASE WHEN cs.status_ = 'NOT_START' THEN 1 ELSE NULL END) &lt;= 0 OR MAX(cs.id_) IS NULL
         </if>
         </if>
     </select>
     </select>
 </mapper>
 </mapper>

+ 23 - 0
mec-web/src/main/java/com/ym/mec/web/controller/ActivityUserMapperController.java

@@ -1,5 +1,7 @@
 package com.ym.mec.web.controller;
 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.dal.page.ActivityStudentQueryInfo;
 import com.ym.mec.biz.service.ActivityUserMapperService;
 import com.ym.mec.biz.service.ActivityUserMapperService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.controller.BaseController;
@@ -7,9 +9,14 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.bind.annotation.RestController;
 
 
+import java.math.BigDecimal;
+import java.util.List;
+
 @Api(tags = "学员活动排课记录服务")
 @Api(tags = "学员活动排课记录服务")
 @RequestMapping("activityUserMapper")
 @RequestMapping("activityUserMapper")
 @RestController
 @RestController
@@ -18,6 +25,22 @@ public class ActivityUserMapperController extends BaseController {
     @Autowired
     @Autowired
     private ActivityUserMapperService activityUserMapperService;
     private ActivityUserMapperService activityUserMapperService;
 
 
+    @ApiOperation(value = "添加活动排课资格")
+    @PostMapping("/add")
+    @PreAuthorize("@pcs.hasPermissions('activityUserMapper/add')")
+    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, BigDecimal amount){
+        activityUserMapperService.cut(activityUserMapperId,memo,amount);
+        return succeed();
+    }
+
     @ApiOperation(value = "获取学员活动排课资格列表")
     @ApiOperation(value = "获取学员活动排课资格列表")
     @RequestMapping("/queryActivityUserMapper")
     @RequestMapping("/queryActivityUserMapper")
     @PreAuthorize("@pcs.hasPermissions('activityUserMapper/queryActivityUserMapper')")
     @PreAuthorize("@pcs.hasPermissions('activityUserMapper/queryActivityUserMapper')")