Procházet zdrojové kódy

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

zouxuan před 5 roky
rodič
revize
63b3105759

+ 5 - 8
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupStudentMapperDao.java

@@ -1,12 +1,11 @@
 package com.ym.mec.biz.dal.dao;
 
-import com.ym.mec.biz.dal.entity.ClassGroupStudentMapper;
-import com.ym.mec.biz.dal.enums.ClassGroupStudentStatusEnum;
-import com.ym.mec.common.dal.BaseDAO;
+import java.util.List;
 
 import org.apache.ibatis.annotations.Param;
 
-import java.util.List;
+import com.ym.mec.biz.dal.entity.ClassGroupStudentMapper;
+import com.ym.mec.common.dal.BaseDAO;
 
 public interface ClassGroupStudentMapperDao extends BaseDAO<Long, ClassGroupStudentMapper> {
 
@@ -26,14 +25,12 @@ public interface ClassGroupStudentMapperDao extends BaseDAO<Long, ClassGroupStud
 	ClassGroupStudentMapper query(@Param("classGroupId") int classGroupId, @Param("userId") Integer userId);
 
 	/**
-	 * 根据乐团编号修改学生状态
+	 * 根据乐团编号删除指定学生
 	 * @param musicGroupId 乐团编号
 	 * @param userId 学生编号
-	 * @param status 状态
 	 * @return
 	 */
-	int updateUserStatusByMusicGroupId(@Param("musicGroupId") String musicGroupId, @Param("userId") Integer userId,
-			@Param("status") ClassGroupStudentStatusEnum status);
+	int deleteStudentByMusicGroupId(@Param("musicGroupId") String musicGroupId, @Param("userId") Integer userId);
 
 	/**
 	 * 根据班级编号删除关联

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

@@ -0,0 +1,20 @@
+package com.ym.mec.biz.dal.dao;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+
+import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
+import com.ym.mec.biz.dal.entity.CourseScheduleRewardsRules;
+import com.ym.mec.common.dal.BaseDAO;
+
+public interface CourseScheduleRewardsRulesDao extends BaseDAO<Integer, CourseScheduleRewardsRules> {
+
+	/**
+	 * 查询课程奖励对象
+	 * @param organId 分部编号
+	 * @param courseScheduleType 课程类型
+	 * @return
+	 */
+	List<CourseScheduleRewardsRules> query(@Param("organId") Integer organId, @Param("courseScheduleType") CourseScheduleType courseScheduleType);
+}

+ 116 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseScheduleRewardsRules.java

@@ -0,0 +1,116 @@
+package com.ym.mec.biz.dal.entity;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
+import com.ym.mec.common.enums.BaseEnum;
+
+/**
+ * 对应数据库表(course_schedule_rewards_rules):
+ */
+public class CourseScheduleRewardsRules {
+
+	public enum RewardMode implements BaseEnum<String, RewardMode> {
+		PER, TOTAL;
+
+		@Override
+		public String getCode() {
+			return name();
+		}
+
+	}
+
+	/**  */
+	private Integer id;
+
+	/** 名称 */
+	private String name;
+
+	/** 课程类型 */
+	private CourseScheduleType courseScheduleType;
+
+	/** 奖励方式(每节课奖励、一次性奖励) */
+	private RewardMode rewardMode;
+
+	/** 分部列表(用逗号分开) */
+	private String organIdList;
+
+	/** 梯度奖励规则 */
+	private String rewardsRulesJson;
+
+	/**  */
+	private java.util.Date createTime;
+
+	/**  */
+	private java.util.Date updateTime;
+
+	public void setId(Integer id) {
+		this.id = id;
+	}
+
+	public Integer getId() {
+		return this.id;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getName() {
+		return this.name;
+	}
+
+	public void setCourseScheduleType(CourseScheduleType courseScheduleType) {
+		this.courseScheduleType = courseScheduleType;
+	}
+
+	public CourseScheduleType getCourseScheduleType() {
+		return this.courseScheduleType;
+	}
+
+	public void setRewardMode(RewardMode rewardMode) {
+		this.rewardMode = rewardMode;
+	}
+
+	public RewardMode getRewardMode() {
+		return this.rewardMode;
+	}
+
+	public void setOrganIdList(String organIdList) {
+		this.organIdList = organIdList;
+	}
+
+	public String getOrganIdList() {
+		return this.organIdList;
+	}
+
+	public void setRewardsRulesJson(String rewardsRulesJson) {
+		this.rewardsRulesJson = rewardsRulesJson;
+	}
+
+	public String getRewardsRulesJson() {
+		return this.rewardsRulesJson;
+	}
+
+	public void setCreateTime(java.util.Date createTime) {
+		this.createTime = createTime;
+	}
+
+	public java.util.Date getCreateTime() {
+		return this.createTime;
+	}
+
+	public void setUpdateTime(java.util.Date updateTime) {
+		this.updateTime = updateTime;
+	}
+
+	public java.util.Date getUpdateTime() {
+		return this.updateTime;
+	}
+
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
+
+}

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

@@ -0,0 +1,19 @@
+package com.ym.mec.biz.service;
+
+import java.math.BigDecimal;
+
+import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
+import com.ym.mec.biz.dal.entity.CourseScheduleRewardsRules;
+import com.ym.mec.common.service.BaseService;
+
+public interface CourseScheduleRewardsRulesService extends BaseService<Integer, CourseScheduleRewardsRules> {
+
+	/**
+	 * 查询课程奖励额度
+	 * @param organId 分部编号
+	 * @param courseScheduleType 课程类型
+	 * @param coursesNum 课程数
+	 * @return
+	 */
+	BigDecimal queryRewardsAmount(Integer organId, CourseScheduleType courseScheduleType, int coursesNum);
+}

+ 6 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/VipGroupService.java

@@ -175,4 +175,10 @@ public interface VipGroupService extends BaseService<Long, VipGroup> {
      */
     void stopGroup(Long vipGroupId);
 
+    /**
+     * 发放月度奖励
+     * @return
+     */
+    boolean awardedMonthlyRewards();
+    
 }

+ 1 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -303,6 +303,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         return classGroupAndTeachers;
     }
 
+    @Override
     public PageInfo<CourseListDto> queryCoursePage(QueryInfo queryInfo, Integer userId) {
         queryInfo.setSearch(userId.toString());
         PageInfo<CourseListDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());

+ 103 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleRewardsRulesServiceImpl.java

@@ -0,0 +1,103 @@
+package com.ym.mec.biz.service.impl;
+
+import java.math.BigDecimal;
+import java.util.Collections;
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.ym.mec.biz.dal.dao.CourseScheduleRewardsRulesDao;
+import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
+import com.ym.mec.biz.dal.entity.CourseScheduleRewardsRules.RewardMode;
+import com.ym.mec.biz.dal.entity.CourseScheduleRewardsRules;
+import com.ym.mec.biz.service.CourseScheduleRewardsRulesService;
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.util.json.JsonUtil;
+
+@Service
+public class CourseScheduleRewardsRulesServiceImpl extends BaseServiceImpl<Integer, CourseScheduleRewardsRules> implements CourseScheduleRewardsRulesService {
+
+	@Autowired
+	private CourseScheduleRewardsRulesDao courseScheduleRewardsDao;
+
+	@Override
+	public BaseDAO<Integer, CourseScheduleRewardsRules> getDAO() {
+		return courseScheduleRewardsDao;
+	}
+
+	@Override
+	public BigDecimal queryRewardsAmount(Integer organId, CourseScheduleType courseScheduleType, int coursesNum) {
+
+		List<CourseScheduleRewardsRules> CourseScheduleRewardsRulesList = courseScheduleRewardsDao.query(organId, courseScheduleType);
+
+		if (CourseScheduleRewardsRulesList == null || CourseScheduleRewardsRulesList.size() == 0) {
+			return null;
+		}
+
+		CourseScheduleRewardsRules courseScheduleRewardsRules = CourseScheduleRewardsRulesList.get(0);
+
+		String json = courseScheduleRewardsRules.getRewardsRulesJson();
+
+		List<RewardsRules> rewardsRulesList = JsonUtil.parseArray(json, RewardsRules.class);
+		
+		Collections.sort(rewardsRulesList);
+		
+		RewardsRules rewardsRules = new RewardsRules();
+		
+		for(RewardsRules rule : rewardsRulesList){
+			if(rule.min >= coursesNum && rule.max < coursesNum){
+				rewardsRules = rule;
+				break;
+			}
+		}
+		
+		if(courseScheduleRewardsRules.getRewardMode() == RewardMode.TOTAL){
+			return rewardsRules.getAmount();
+		}
+
+		return rewardsRules.getAmount().multiply(new BigDecimal(coursesNum));
+	}
+
+	class RewardsRules implements Comparable<RewardsRules> {
+
+		private int min;
+
+		private int max;
+
+		private BigDecimal amount = new BigDecimal(0);
+
+		public int getMin() {
+			return min;
+		}
+
+		public void setMin(int min) {
+			this.min = min;
+		}
+
+		public int getMax() {
+			return max;
+		}
+
+		public void setMax(int max) {
+			this.max = max;
+		}
+
+		public BigDecimal getAmount() {
+			return amount;
+		}
+
+		public void setAmount(BigDecimal amount) {
+			this.amount = amount;
+		}
+
+		@Override
+		public int compareTo(RewardsRules rules) {
+			if (this.min > rules.min) {
+				return 1;
+			}
+			return -1;
+		}
+	}
+}

+ 8 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -348,22 +348,28 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 		MusicGroupQuit musicGroupQuit = musicGroupQuitDao.get(id);
 		if (musicGroupQuit != null) {
 
+			Date date = new Date();
+
 			String musicGroupId = musicGroupQuit.getMusicGroupId();
 			Integer userId = musicGroupQuit.getUserId();
 
 			musicGroupQuit.setStatus(status);
 			musicGroupQuit.setReason(reason);
-			musicGroupQuit.setQuitDate(new Date());
+			musicGroupQuit.setQuitDate(date);
 			musicGroupQuitDao.update(musicGroupQuit);
 
 			if (status == ApprovalStatus.APPROVED) {
-				classGroupStudentMapperDao.updateUserStatusByMusicGroupId(musicGroupId, userId, ClassGroupStudentStatusEnum.QUIT);
+				classGroupStudentMapperDao.deleteStudentByMusicGroupId(musicGroupId, userId);
 
 				// 判断乐器是否是租赁
 				StudentRegistration studentRegistration = studentRegistrationService.queryByUserIdAndMusicGroupId(userId, musicGroupId);
 				if (studentRegistration == null) {
 					throw new BizException("用户注册信息不存在");
 				}
+				// 退团
+				studentRegistration.setMusicGroupStatus(ClassGroupStudentStatusEnum.QUIT);
+				studentRegistration.setUpdateTime(date);
+
 				Integer subjectId = studentRegistration.getActualSubjectId();
 				MusicGroupSubjectPlan musicGroupSubjectPlan = musicGroupSubjectPlanDao.getMusicOneSubjectClassPlan(musicGroupId, subjectId);
 				if (musicGroupSubjectPlan == null) {

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

@@ -732,4 +732,9 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		vipGroup.setStatus(VipGroupStatusEnum.CANCEL);
 		vipGroupDao.update(vipGroup);
 	}
+
+	@Override
+	public boolean awardedMonthlyRewards() {
+		return false;
+	}
 }

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

@@ -80,7 +80,7 @@
 		SELECT * FROM class_group_student_mapper where class_group_id_ = #{classGroupId} and user_id_ = #{userId}
 	</select>
 	
-	<update id="updateUserStatusByMusicGroupId" parameterType="map">
-		UPDATE class_group_student_mapper set status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler} where class_group_id_ in (select id_ from class_group where music_group_id_ = #{musicGroupId}) and user_id_ = #{userId}
-	</update>
+    <delete id="deleteStudentByMusicGroupId" parameterType="map">
+        DELETE FROM class_group_student_mapper WHERE class_group_id_ in (select id_ from class_group where music_group_id_ = #{musicGroupId}) and user_id_ = #{userId}
+    </delete>
 </mapper>

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

@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!-- 这个文件是自动生成的。 不要修改此文件。所有改动将在下次重新自动生成时丢失。 -->
+<mapper namespace="com.ym.mec.biz.dal.dao.CourseScheduleRewardsRulesDao">
+
+	<resultMap type="com.ym.mec.biz.dal.entity.CourseScheduleRewardsRules"
+		id="CourseScheduleRewardsRules">
+		<result column="id_" property="id" />
+		<result column="name_" property="name" />
+		<result column="course_schedule_type_" property="courseScheduleType"
+			typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler" />
+		<result column="reward_mode_" property="rewardMode"
+			typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler" />
+		<result column="organ_id_list_" property="organIdList" />
+		<result column="rewards_rules_json_" property="rewardsRulesJson" />
+		<result column="create_time_" property="createTime" />
+		<result column="update_time_" property="updateTime" />
+	</resultMap>
+
+	<!-- 根据主键查询一条记录 -->
+	<select id="get" resultMap="CourseScheduleRewardsRules">
+		SELECT * FROM course_schedule_rewards_rules WHERE id_ = #{id}
+	</select>
+
+	<!-- 全查询 -->
+	<select id="findAll" resultMap="CourseScheduleRewardsRules">
+		SELECT * FROM course_schedule_rewards_rules ORDER BY id_
+	</select>
+
+	<!-- 向数据库增加一条记录 -->
+	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.CourseScheduleRewardsRules"
+		useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+		<!-- <selectKey resultClass="int" keyProperty="id" > SELECT SEQ_WSDEFINITION_ID.nextval 
+			AS ID FROM DUAL </selectKey> -->
+		INSERT INTO course_schedule_rewards_rules
+		(id_,name_,course_schedule_type_,reward_mode_,organ_id_list_,rewards_rules_json_,create_time_,update_time_)
+		VALUES(#{id},#{name},#{courseScheduleType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{rewardMode,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{organIdList},#{rewardsRulesJson},#{createTime},#{updateTime})
+	</insert>
+
+	<!-- 根据主键查询一条记录 -->
+	<update id="update" parameterType="com.ym.mec.biz.dal.entity.CourseScheduleRewardsRules">
+		UPDATE course_schedule_rewards_rules
+		<set>
+			<if test="rewardMode != null">
+				reward_mode_ =
+				#{rewardMode,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+			</if>
+			<if test="courseScheduleType != null">
+				course_schedule_type_ =
+				#{courseScheduleType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+			</if>
+			<if test="id != null">
+				id_ = #{id},
+			</if>
+			<if test="updateTime != null">
+				update_time_ = #{updateTime},
+			</if>
+			<if test="organIdList != null">
+				organ_id_list_ = #{organIdList},
+			</if>
+			<if test="name != null">
+				name_ = #{name},
+			</if>
+			<if test="rewardsRulesJson != null">
+				rewards_rules_json_ = #{rewardsRulesJson},
+			</if>
+			<if test="createTime != null">
+				create_time_ = #{createTime},
+			</if>
+		</set>
+		WHERE id_ = #{id}
+	</update>
+
+	<!-- 根据主键删除一条记录 -->
+	<delete id="delete">
+		DELETE FROM course_schedule_rewards_rules WHERE id_ = #{id}
+	</delete>
+
+	<!-- 分页查询 -->
+	<select id="queryPage" resultMap="CourseScheduleRewardsRules"
+		parameterType="map">
+		SELECT * FROM course_schedule_rewards_rules ORDER BY id_
+		<include refid="global.limit" />
+	</select>
+
+	<!-- 查询当前表的总记录数 -->
+	<select id="queryCount" resultType="int">
+		SELECT COUNT(*) FROM course_schedule_rewards_rules
+	</select>
+	
+	<select id="query" resultType="map">
+		SELECT * FROM course_schedule_rewards_rules where find_in_set(#{organId},organ_id_list_) and course_schedule_type_ = #{courseScheduleType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler} order by update_time_ desc
+	</select>
+</mapper>

+ 7 - 0
mec-common/common-core/src/main/java/com/ym/mec/common/config/LocalFastJsonHttpMessageConverter.java

@@ -6,7 +6,9 @@ import java.math.BigDecimal;
 import java.util.Date;
 
 import org.apache.commons.lang.StringUtils;
+import org.springframework.http.HttpInputMessage;
 import org.springframework.http.HttpOutputMessage;
+import org.springframework.http.converter.HttpMessageNotReadableException;
 import org.springframework.http.converter.HttpMessageNotWritableException;
 
 import com.alibaba.fastjson.serializer.SimpleDateFormatSerializer;
@@ -20,6 +22,11 @@ public class LocalFastJsonHttpMessageConverter extends FastJsonHttpMessageConver
 	private static final String FORMAT = "yyyy-MM-dd HH:mm:ss";
 
 	@Override
+	protected Object readInternal(Class<? extends Object> clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException {
+		return super.readInternal(clazz, inputMessage);
+	}
+
+	@Override
 	protected void writeInternal(Object obj, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException {
 
 		OutputStream out = outputMessage.getBody();

+ 2 - 7
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/eseal/provider/TsignPlugin.java

@@ -1,7 +1,5 @@
 package com.ym.mec.thirdparty.eseal.provider;
 
-import java.text.MessageFormat;
-
 import org.springframework.beans.factory.DisposableBean;
 import org.springframework.beans.factory.InitializingBean;
 import org.springframework.beans.factory.annotation.Value;
@@ -56,15 +54,12 @@ public class TsignPlugin implements ESealPlugin, InitializingBean, DisposableBea
 		projectconfig.setItsmApiUrl(apisUrl);
 		Result result = ServiceClientManager.registClient(projectconfig, null, null);
 		if (result.getErrCode() != 0) {
-			//throw new ThirdpartyException("e签宝客户端注册失败");
+			throw new ThirdpartyException("e签宝客户端注册失败");
 		}
 
 		serviceClient = ServiceClientManager.get(projectId);
 		if (serviceClient == null) {
-			//throw new ThirdpartyException(MessageFormat.format("ServiceClient为null,获取客户端接口调用失败 ", projectId));
-		}
-		if (serviceClient == null) {
-			//throw new ThirdpartyException("获取e签宝客户端失败");
+			throw new ThirdpartyException("获取e签宝客户端失败");
 		}
 	}