zouxuan 5 years ago
parent
commit
b3ad0bf14e

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

@@ -24,9 +24,9 @@ public interface SysUserCashAccountDetailDao extends BaseDAO<Long, SysUserCashAc
     Map<String, Object> queryStatistics(@Param("organId") String organId);
 
     /**
-     * 查看当前月是否执行过教师奖励
+     * 查看当前月当前老师是否执行过教师奖励
      * @param currentMonth
      * @return
      */
-    Integer countByTypeAndTime(String currentMonth);
+    Integer countByTypeAndTime(@Param("currentMonth") String currentMonth,@Param("teacherId")Integer teacherId);
 }

+ 27 - 28
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -1583,37 +1583,36 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			List<Integer> activeIds = rewardsRulesDtos.stream().map(e -> e.getActiveId()).collect(Collectors.toList());
 			List<CourseScheduleRewardsRules> rewardsRules = courseScheduleRewardsRulesService.findByIds(activeIds);
 			Map<Integer, List<CourseScheduleRewardsRules>> integerListMap = rewardsRules.stream().collect(Collectors.groupingBy(CourseScheduleRewardsRules::getId));
+			String currentMonth = DateUtil.format(new Date(),DateUtil.ISO_YEAR_MONTH_FORMAT);
 			rewardsRulesDtos.forEach(e->{
-				CourseScheduleRewardsRules rewardsRule = integerListMap.get(e.getActiveId()).get(0);
-				String rewardsRulesJson = rewardsRule.getRewardsRulesJson();
-				List<RewardsRulesJsonDto> rulesJsonDtos = JSONObject.parseArray(rewardsRulesJson, RewardsRulesJsonDto.class);
-				BigDecimal money = BigDecimal.ZERO;
-				//STAIR 阶梯, PER 累计, TOTAL
-				switch (rewardsRule.getRewardMode()){
-					case STAIR:
-						rulesJsonDtos.forEach(rule->{
-							if(e.getTimes() >= rule.getMin()){
-								money.add(rule.getMoney());
+				//当前用户是否已经发放过上月奖励
+				Integer num = sysUserCashAccountDetailDao.countByTypeAndTime(currentMonth,e.getTeacherId());
+				if(num == null || num == 0) {
+					CourseScheduleRewardsRules rewardsRule = integerListMap.get(e.getActiveId()).get(0);
+					List<RewardsRulesJsonDto> rulesJsonDtos = JSONObject.parseArray(rewardsRule.getRewardsRulesJson(), RewardsRulesJsonDto.class);
+					BigDecimal money = BigDecimal.ZERO;
+					//STAIR 阶梯, PER 累计, TOTAL
+					switch (rewardsRule.getRewardMode()) {
+						case STAIR:
+							for (RewardsRulesJsonDto rule : rulesJsonDtos) {
+								if (e.getTimes() >= rule.getMin()) {
+									money = money.add(rule.getMoney());
+								}
 							}
-						});
-						break;
-					case PER:
-						int count = 0;
-						for (RewardsRulesJsonDto rule:rulesJsonDtos) {
-							if(e.getTimes() >= rule.getMin()){
-								count++;
-								rule.getMoney().multiply(new BigDecimal(count));
+							break;
+						case PER:
+							int count = 0;
+							for (RewardsRulesJsonDto rule : rulesJsonDtos) {
+								if (e.getTimes() >= rule.getMin()) {
+									count++;
+									money = rule.getMoney().multiply(new BigDecimal(count));
+								}
 							}
-						}
-						break;
-					case TOTAL:
-						break;
-				}
-				if (money.doubleValue() > 0) {
-					//当前用户是否已经发放过上月奖励
-					String currentMonth = DateUtil.format(new Date(),DateUtil.ISO_YEAR_MONTH_FORMAT);
-					Integer num = sysUserCashAccountDetailDao.countByTypeAndTime(currentMonth);
-					if(num == null || num == 0){
+							break;
+						case TOTAL:
+							break;
+					}
+					if (money.doubleValue() > 0) {
 						sysUserCashAccountDetailService.addCashAccountDetail(e.getTeacherId(), money, "", SysUserCashAccountDetailService.ORGAN,
 								PlatformCashAccountDetailTypeEnum.REWARDS, null, DealStatusEnum.SUCCESS, "分部奖励");
 					}

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

@@ -148,7 +148,8 @@
 		LEFT JOIN vip_group vg ON FIND_IN_SET(vg.vip_group_category_id_,csrr.vip_group_category_id_list_)
 		LEFT JOIN course_schedule cs ON vg.id_ = cs.music_group_id_ AND FIND_IN_SET(cs.actual_teacher_id_,csrr.teacher_id_)
 		LEFT JOIN course_schedule_teacher_salary csts ON csts.course_schedule_id_ = cs.id_ AND csts.user_id_ = cs.actual_teacher_id_
-		WHERE cs.group_type_ = 'VIP' AND csts.settlement_time_ IS NULL AND cs.class_date_ &gt;= #{firstDayOfMonth} AND cs.class_date_ &lt;= #{lastDayOfMonth}
+		WHERE cs.group_type_ = 'VIP' AND csts.settlement_time_ IS NULL
+		AND cs.class_date_ &gt;= #{firstDayOfMonth} AND cs.class_date_ &lt;= #{lastDayOfMonth}
 		GROUP BY cs.actual_teacher_id_,csrr.id_
 	</select>
 	<select id="findByIds" resultMap="CourseScheduleRewardsRules">

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

@@ -192,5 +192,6 @@
     <select id="countByTypeAndTime" resultType="java.lang.Integer">
       SELECT COUNT(s.id_) FROM sys_user_cash_account_detail s
       WHERE s.type_ = 'REWARDS' AND DATE_FORMAT(s.create_time_,'%Y-%m') = #{currentMonth}
+      AND s.user_id_ = #{teacherId}
     </select>
 </mapper>