Pārlūkot izejas kodu

Merge branch 'master' of http://git.dayaedu.com/yonge/mec

yonge 5 gadi atpakaļ
vecāks
revīzija
181ab6249d

+ 37 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleRewardsRulesDao.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.dal.dao;
 
 import java.util.List;
+import java.util.Map;
 
 import org.apache.ibatis.annotations.Param;
 
@@ -23,4 +24,40 @@ public interface CourseScheduleRewardsRulesDao extends BaseDAO<Integer, CourseSc
 	 * @return
 	 */
 	List<String> queryOrganIdList();
+
+	/**
+	 * 根据教师列表和课程类型获取活动列表
+	 * @param teacherId
+	 * @param vipGroupCategoryIdList
+	 * @return
+	 */
+    List<CourseScheduleRewardsRules> findByTeacherAndCategory(@Param("teacherId") String teacherId, @Param("vipGroupCategoryIdList") String vipGroupCategoryIdList);
+
+	/**
+	 * COUNT活动列表
+	 * @param params
+	 * @return
+	 */
+	int findDetailPage(Map<String, Object> params);
+
+	/**
+	 * 分页获取活动列表
+	 * @param params
+	 * @return
+	 */
+	List<CourseScheduleRewardsRules> queryDetailPage(Map<String, Object> params);
+
+	/**
+	 * 获取教师名称列表
+	 * @param rewardsIds
+	 * @return
+	 */
+	List<Map<Integer, String>> findTeacherNames(List<Integer> rewardsIds);
+
+	/**
+	 * 获取vip课程类型名称列表
+	 * @param rewardsIds
+	 * @return
+	 */
+	List<Map<Integer, String>> findVipCategoryNames(List<Integer> rewardsIds);
 }

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherDao.java

@@ -188,4 +188,11 @@ public interface TeacherDao extends BaseDAO<Integer, Teacher> {
      * @return java.util.List<com.ym.mec.biz.dal.entity.Teacher>
      */
     List<Teacher> findByTeacherIds(@Param("teacherIds") List<Integer> teacherIds);
+
+    /**
+     * 获取分部下的老师列表
+     * @param organId
+     * @return
+     */
+    List<Teacher> findTeacherByOrganId(String organId);
 }

+ 44 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseScheduleRewardsRules.java

@@ -19,7 +19,6 @@ public class CourseScheduleRewardsRules {
 		public String getCode() {
 			return name();
 		}
-
 	}
 
 	/**  */
@@ -40,14 +39,57 @@ public class CourseScheduleRewardsRules {
 	@ApiModelProperty(value = "梯度奖励规则", required = true)
 	private String rewardsRulesJson;
 
+	@ApiModelProperty(value = "vip课程类型", required = true)
+	private String vipGroupCategoryIdList;
+
+	@ApiModelProperty(value = "vip课程类型名称列表", required = true)
+	private String vipGroupCategoryNameList;
+
+	@ApiModelProperty(value = "关联教师编号列表", required = true)
+	private String teacherId;
+
+	@ApiModelProperty(value = "关联教师编号名称列表", required = true)
+	private String teacherNames;
+
+	public String getVipGroupCategoryNameList() {
+		return vipGroupCategoryNameList;
+	}
+
+	public void setVipGroupCategoryNameList(String vipGroupCategoryNameList) {
+		this.vipGroupCategoryNameList = vipGroupCategoryNameList;
+	}
+
+	public String getTeacherNames() {
+		return teacherNames;
+	}
+
+	public void setTeacherNames(String teacherNames) {
+		this.teacherNames = teacherNames;
+	}
+
 	/**  */
 	private java.util.Date createTime;
-
 	/**  */
 	private java.util.Date updateTime;
 	
 	private String organNameList;
 
+	public String getVipGroupCategoryIdList() {
+		return vipGroupCategoryIdList;
+	}
+
+	public void setVipGroupCategoryIdList(String vipGroupCategoryIdList) {
+		this.vipGroupCategoryIdList = vipGroupCategoryIdList;
+	}
+
+	public String getTeacherId() {
+		return teacherId;
+	}
+
+	public void setTeacherId(String teacherId) {
+		this.teacherId = teacherId;
+	}
+
 	public void setId(Integer id) {
 		this.id = id;
 	}

+ 38 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/RewardsRulesQueryInfo.java

@@ -0,0 +1,38 @@
+package com.ym.mec.biz.dal.page;
+
+import com.ym.mec.common.page.QueryInfo;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+
+public class RewardsRulesQueryInfo extends QueryInfo {
+    private Integer teacherId;
+
+    private Integer vipGroupCategoryId;
+
+    private String rewardMode;
+
+    public Integer getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(Integer teacherId) {
+        this.teacherId = teacherId;
+    }
+
+    public Integer getVipGroupCategoryId() {
+        return vipGroupCategoryId;
+    }
+
+    public void setVipGroupCategoryId(Integer vipGroupCategoryId) {
+        this.vipGroupCategoryId = vipGroupCategoryId;
+    }
+
+    public String getRewardMode() {
+        return rewardMode;
+    }
+
+    public void setRewardMode(String rewardMode) {
+        this.rewardMode = rewardMode;
+    }
+}

+ 24 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleRewardsRulesService.java

@@ -5,6 +5,9 @@ import java.util.List;
 
 import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
 import com.ym.mec.biz.dal.entity.CourseScheduleRewardsRules;
+import com.ym.mec.biz.dal.page.RewardsRulesQueryInfo;
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.BaseService;
 
 public interface CourseScheduleRewardsRulesService extends BaseService<Integer, CourseScheduleRewardsRules> {
@@ -23,4 +26,25 @@ public interface CourseScheduleRewardsRulesService extends BaseService<Integer,
 	 * @return
 	 */
 	List<Integer> queryOrganIdList();
+
+	/**
+	 * 添加教师奖励活动
+	 * @param courseScheduleRewardsRules
+	 * @return
+	 */
+	int add(CourseScheduleRewardsRules courseScheduleRewardsRules);
+
+	/**
+	 * 分页获取活动列表
+	 * @param queryInfo
+	 * @return
+	 */
+	PageInfo<CourseScheduleRewardsRules> queryDetailPage(RewardsRulesQueryInfo queryInfo);
+
+	/**
+	 * 修改
+	 * @param courseScheduleRewardsRules
+	 * @return
+	 */
+	int updateDetail(CourseScheduleRewardsRules courseScheduleRewardsRules);
 }

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/TeacherService.java

@@ -129,4 +129,11 @@ public interface TeacherService extends BaseService<Integer, Teacher> {
      * @return
      */
     PageInfo<musicGroupStudentApplyDto> queryMusicGroupStudentApply(queryMusicGroupStudentQueryInfo queryInfo);
+
+    /**
+     * 获取分部下教师
+     * @param organId
+     * @return
+     */
+    List<Teacher> findTeacherByOrganId(String organId);
 }

+ 84 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleRewardsRulesServiceImpl.java

@@ -1,13 +1,12 @@
 package com.ym.mec.biz.service.impl;
 
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
+import com.ym.mec.biz.dal.page.RewardsRulesQueryInfo;
+import com.ym.mec.common.exception.BizException;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -23,6 +22,7 @@ import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.json.JsonUtil;
+import org.springframework.transaction.annotation.Transactional;
 
 @Service
 public class CourseScheduleRewardsRulesServiceImpl extends BaseServiceImpl<Integer, CourseScheduleRewardsRules> implements CourseScheduleRewardsRulesService {
@@ -124,6 +124,85 @@ public class CourseScheduleRewardsRulesServiceImpl extends BaseServiceImpl<Integ
 		return result;
 	}
 
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public int add(CourseScheduleRewardsRules courseScheduleRewardsRules) {
+		String teacherId = courseScheduleRewardsRules.getTeacherId();
+		String vipGroupCategoryIdList = courseScheduleRewardsRules.getVipGroupCategoryIdList();
+		if(StringUtils.isEmpty(teacherId) || StringUtils.isEmpty(vipGroupCategoryIdList)){
+			throw new BizException("参数校验异常");
+		}
+		if(StringUtils.isEmpty(courseScheduleRewardsRules.getRewardsRulesJson())){
+			throw new BizException("请设置梯度");
+		}
+		//同一种课程形式,只能有一个老师
+		List<CourseScheduleRewardsRules> scheduleRewardsRules = courseScheduleRewardsDao.findByTeacherAndCategory(teacherId,vipGroupCategoryIdList);
+		if(scheduleRewardsRules != null && scheduleRewardsRules.size() > 0){
+			throw new BizException("同一种课程类型,只能对应一个老师");
+		}
+		courseScheduleRewardsDao.insert(courseScheduleRewardsRules);
+		return courseScheduleRewardsRules.getId();
+	}
+
+	@Override
+	public PageInfo<CourseScheduleRewardsRules> queryDetailPage(RewardsRulesQueryInfo queryInfo) {
+		PageInfo<CourseScheduleRewardsRules> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+		Map<String, Object> params = new HashMap<>();
+		MapUtil.populateMap(params, queryInfo);
+		List<CourseScheduleRewardsRules> dataList = null;
+		int count = courseScheduleRewardsDao.findDetailPage(params);
+		if (count > 0) {
+			pageInfo.setTotal(count);
+			params.put("offset", pageInfo.getOffset());
+			dataList = courseScheduleRewardsDao.queryDetailPage(params);
+			List<Integer> rewardsIds = dataList.stream().map(e -> e.getId()).collect(Collectors.toList());
+			//获取教师列表
+			if(rewardsIds != null && rewardsIds.size() > 0){
+				Map<Integer,String> teacherNameMap = MapUtil.convertIntegerMap(courseScheduleRewardsDao.findTeacherNames(rewardsIds));
+				Map<Integer,String> vipCategoryNameMap = MapUtil.convertIntegerMap(courseScheduleRewardsDao.findVipCategoryNames(rewardsIds));
+				dataList.forEach(e->{
+					e.setTeacherNames(teacherNameMap.get(e.getId()));
+					e.setVipGroupCategoryNameList(vipCategoryNameMap.get(e.getId()));
+				});
+			}
+		}
+		if (count == 0) {
+			dataList = new ArrayList<>();
+		}
+		pageInfo.setRows(dataList);
+		return pageInfo;
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public int updateDetail(CourseScheduleRewardsRules courseScheduleRewardsRules) {
+		String teacherId = courseScheduleRewardsRules.getTeacherId();
+		String vipGroupCategoryIdList = courseScheduleRewardsRules.getVipGroupCategoryIdList();
+		if(StringUtils.isEmpty(teacherId) || StringUtils.isEmpty(vipGroupCategoryIdList)){
+			throw new BizException("参数校验异常");
+		}
+		if(StringUtils.isEmpty(courseScheduleRewardsRules.getRewardsRulesJson())){
+			throw new BizException("请设置梯度");
+		}
+		if(courseScheduleRewardsRules.getId() == null){
+			throw new BizException("参数校验异常");
+		}
+		//同一种课程形式,只能有一个老师
+		List<CourseScheduleRewardsRules> scheduleRewardsRules = courseScheduleRewardsDao.findByTeacherAndCategory(teacherId,vipGroupCategoryIdList);
+		if(scheduleRewardsRules.size() > 1){
+			throw new BizException("同一种课程类型,只能对应一个老师");
+		}
+		if(scheduleRewardsRules.size() == 1){
+			CourseScheduleRewardsRules rewardsRules = scheduleRewardsRules.get(0);
+			if(!rewardsRules.getId().equals(courseScheduleRewardsRules.getId())){
+				throw new BizException("同一种课程类型,只能对应一个老师");
+			}
+		}
+		courseScheduleRewardsRules.setUpdateTime(new Date());
+		courseScheduleRewardsDao.update(courseScheduleRewardsRules);
+		return courseScheduleRewardsRules.getId();
+	}
+
 	class RewardsRules implements Comparable<RewardsRules> {
 
 		private int min;

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherServiceImpl.java

@@ -334,6 +334,11 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 	}
 
 	@Override
+	public List<Teacher> findTeacherByOrganId(String organId) {
+		return teacherDao.findTeacherByOrganId(organId);
+	}
+
+	@Override
 	public List<BasicUserDto> queryMusicGroupTeacher(String musicGroupId) {
 		if(Objects.isNull(musicGroupId)){
 			throw new BizException("请指定乐团");

+ 47 - 0
mec-biz/src/main/resources/config/mybatis/CourseScheduleRewardsMapper.xml

@@ -96,4 +96,51 @@
 	<select id="queryOrganIdList" resultType="java.lang.String">
 		SELECT organ_id_ FROM course_schedule_rewards_rules
 	</select>
+	<select id="findByTeacherAndCategory" resultMap="CourseScheduleRewardsRules">
+		SELECT * FROM course_schedule_rewards_rules csrr
+		WHERE INTE_ARRAY(csrr.vip_group_category_id_list_,#{vipGroupCategoryIdList})
+		AND INTE_ARRAY(csrr.teacher_id_,#{teacherId})
+	</select>
+
+	<select id="queryDetailPage" resultMap="CourseScheduleRewardsRules">
+		SELECT * FROM course_schedule_rewards_rules csrr
+		<include refid="findDetailPageSql"/>
+		ORDER BY id_ DESC
+		<include refid="global.limit" />
+	</select>
+	<select id="findDetailPage" resultType="java.lang.Integer">
+		SELECT COUNT(csrr.id_) FROM course_schedule_rewards_rules csrr
+		<include refid="findDetailPageSql"/>
+	</select>
+	<select id="findTeacherNames" resultType="java.util.Map">
+		SELECT csrr.id_ 'key',GROUP_CONCAT(su.real_name_) 'value' FROM course_schedule_rewards_rules csrr
+		LEFT JOIN sys_user su ON FIND_IN_SET(su.id_,csrr.teacher_id_)
+		WHERE csrr.id_ IN
+		<foreach collection="rewardsIds" separator="," item="item" open="(" close=")">
+			#{item}
+		</foreach>
+		GROUP BY csrr.id_
+	</select>
+	<select id="findVipCategoryNames" resultType="java.util.Map">
+		SELECT csrr.id_ 'key',GROUP_CONCAT(vgc.name_) 'value' FROM course_schedule_rewards_rules csrr
+		LEFT JOIN vip_group_category vgc ON FIND_IN_SET(vgc.id_,csrr.vip_group_category_id_list_)
+		WHERE vgc.del_flag_ != '1' AND csrr.id_ IN
+		<foreach collection="rewardsIds" separator="," item="item" open="(" close=")">
+			#{item}
+		</foreach>
+		GROUP BY csrr.id_
+	</select>
+	<sql id="findDetailPageSql">
+		<where>
+			<if test="teacherId">
+				AND FIND_IN_SET(#{teacherId},csrr.teacher_id_)
+			</if>
+			<if test="rewardMode">
+				AND csrr.reward_mode_ = #{rewardMode}
+			</if>
+			<if test="vipGroupCategoryId">
+				AND FIND_IN_SET(#{vipGroupCategoryId},csrr.vip_group_category_id_list_)
+			</if>
+		</where>
+	</sql>
 </mapper>

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

@@ -132,11 +132,8 @@
             <if test="organId != null">
                 AND FIND_IN_SET(su.organ_id_,#{organId})
             </if>
-            <if test="studentName != null and studentName != ''">
-                AND su.username_ LIKE CONCAT('%',#{studentName},'%')
-            </if>
             <if test="search != null and search != ''">
-                AND (su.phone_ LIKE CONCAT('%',#{search},'%') OR su.real_name_ LIKE CONCAT('%',#{search},'%'))
+                AND (su.phone_ LIKE CONCAT('%',#{search},'%') OR su.username_ LIKE CONCAT('%',#{search},'%') OR su.id_ LIKE CONCAT('%',#{search},'%'))
             </if>
         </where>
     </sql>

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

@@ -286,24 +286,21 @@
     </select>
 
     <resultMap id="queryFeeDetailMap" type="com.ym.mec.biz.dal.dto.StudentFeeDetailDto">
-        <result column="expect_amount_" property="courseFee"/>
         <result column="actual_amount_" property="totalAmount"/>
         <collection property="goods" ofType="com.ym.mec.biz.dal.dto.StudentFeeDto">
             <result property="goodsName" column="goods_name_"/>
-            <result property="goodsType" column="goods_type_"/>
+            <result property="goodsType" column="type_"/>
             <result property="musicalFee" column="price_"/>
         </collection>
     </resultMap>
     <select id="queryFeeDetail" resultMap="queryFeeDetailMap">
-        SELECT spo.actual_amount_,spo.expect_amount_,spod.price_,GROUP_CONCAT(g.name_) goods_name_,MAX(g.type_)
-        goods_type_
-        FROM student_registration sr
-        LEFT JOIN student_payment_order spo ON sr.music_group_id_ = spo.music_group_id_ AND spo.user_id_ = sr.user_id_
+        SELECT spo.actual_amount_,SUM(spod.price_) price_,GROUP_CONCAT(g.name_) goods_name_,IF(MAX(g.type_) IS NULL,'COURSE',MAX(g.type_)) type_
+		FROM student_payment_order spo
         LEFT JOIN student_payment_order_detail spod ON spod.payment_order_id_ = spo.id_
         LEFT JOIN goods g ON FIND_IN_SET(g.id_,spod.goods_id_list_)
-        WHERE spo.type_ = 'APPLY' AND sr.user_id_ = #{studentId} AND sr.music_group_id_ = #{musicGroupId}
-        AND sr.music_group_status_ != 'QUIT'
-        GROUP BY spo.id_,spod.id_
+        WHERE spo.type_ = 'APPLY' AND spo.group_type_ = 'MUSIC' AND spo.user_id_ = #{studentId} AND spo.music_group_id_ = #{musicGroupId}
+        GROUP BY spo.id_,spod.type_
+        ORDER BY spo.id_ DESC
     </select>
 
     <!-- 根据乐团和声部获取未分班的学生 -->

+ 8 - 0
mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml

@@ -558,4 +558,12 @@
             #{teacherId}
         </foreach>
     </select>
+    <select id="findTeacherByOrganId" resultMap="TeacherBasicDto">
+        SELECT su.id_,su.username_,su.real_name_ FROM teacher t
+        LEFT JOIN sys_user su ON t.id_ = su.id_
+        WHERE su.del_flag_ != 1
+        <if test="organId != null">
+            AND FIND_IN_SET(t.organ_id_,#{organId})
+        </if>
+    </select>
 </mapper>

+ 5 - 11
mec-web/src/main/java/com/ym/mec/web/controller/CourseScheduleRewardsRulesController.java

@@ -1,5 +1,6 @@
 package com.ym.mec.web.controller;
 
+import com.ym.mec.biz.dal.page.RewardsRulesQueryInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 
@@ -28,8 +29,8 @@ public class CourseScheduleRewardsRulesController extends BaseController {
 	@ApiOperation(value = "查询规则列表")
 	@GetMapping("/queryPage")
 	@PreAuthorize("@pcs.hasPermissions('courseScheduleRewards/queryPage')")
-	public Object queryPage(QueryInfo queryInfo) {
-		return succeed(courseScheduleRewardsRulesService.queryPage(queryInfo));
+	public Object queryPage(RewardsRulesQueryInfo queryInfo) {
+		return succeed(courseScheduleRewardsRulesService.queryDetailPage(queryInfo));
 	}
 
 	@ApiOperation(value = "单查询")
@@ -50,21 +51,14 @@ public class CourseScheduleRewardsRulesController extends BaseController {
 	@PostMapping("/add")
 	@PreAuthorize("@pcs.hasPermissions('courseScheduleRewards/add')")
 	public Object add(CourseScheduleRewardsRules courseScheduleRewardsRules) {
-		List<Integer> organIdList = courseScheduleRewardsRulesService.queryOrganIdList();
-		String[] organIdArrays = courseScheduleRewardsRules.getOrganId().split(",");
-		for (String organId : organIdArrays) {
-			if (organIdList.contains(Integer.parseInt(organId))) {
-				return failed("所设分部存在异常");
-			}
-		}
-		return succeed(courseScheduleRewardsRulesService.insert(courseScheduleRewardsRules));
+		return succeed(courseScheduleRewardsRulesService.add(courseScheduleRewardsRules));
 	}
 
 	@ApiOperation(value = "修改")
 	@PostMapping("/update")
 	@PreAuthorize("@pcs.hasPermissions('courseScheduleRewards/update')")
 	public Object update(CourseScheduleRewardsRules courseScheduleRewardsRules) {
-		return succeed(courseScheduleRewardsRulesService.update(courseScheduleRewardsRules));
+		return succeed(courseScheduleRewardsRulesService.updateDetail(courseScheduleRewardsRules));
 	}
 
 	@ApiOperation(value = "删除")

+ 24 - 0
mec-web/src/main/java/com/ym/mec/web/controller/TeacherController.java

@@ -116,6 +116,30 @@ public class TeacherController extends BaseController {
         return succeed(teacherService.findOrganTeacherBySubject(subjecId));
     }
 
+    @ApiOperation(value = "获取分部教师")
+    @GetMapping("/findTeacherByOrganId")
+    @PreAuthorize("@pcs.hasPermissions('teacher/findTeacherByOrganId')")
+    public HttpResponseResult findTeacherByOrganId(String organId) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+        if(!sysUser.getIsSuperAdmin()){
+            Employee employee = employeeDao.get(sysUser.getId());
+            if (StringUtils.isEmpty(organId)) {
+                organId = employee.getOrganIdList();
+            }else if(StringUtils.isEmpty(employee.getOrganIdList())){
+                return failed("用户所在分部异常");
+            }else {
+                List<String> list = Arrays.asList(employee.getOrganIdList().split(","));
+                if(!list.containsAll(Arrays.asList(organId.split(",")))){
+                    return failed("非法请求");
+                }
+            }
+        }
+        return succeed(teacherService.findTeacherByOrganId(organId));
+    }
+
     @ApiOperation(value = "获取乐团所有老师")
     @GetMapping("/findMusicGroupTeachers")
     @PreAuthorize("@pcs.hasPermissions('teacher/findMusicGroupTeachers')")