Browse Source

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

yonge 5 years ago
parent
commit
1ddf0108e8

+ 10 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupPaymentCalenderDao.java

@@ -113,4 +113,13 @@ public interface MusicGroupPaymentCalenderDao extends BaseDAO<Long, MusicGroupPa
     List<CalenderPushDto> getCalenderPushDto(@Param("calenderIds") Collection<Long> calenderIds);
     List<CalenderPushDto> getCalenderPushDto(@Param("calenderIds") Collection<Long> calenderIds);
 
 
     List<CalenderPushDto> getMusicCalenderPushDto(@Param("configValue") String configValue, @Param("format") String format);
     List<CalenderPushDto> getMusicCalenderPushDto(@Param("configValue") String configValue, @Param("format") String format);
-}
+
+    /**
+     * @describe 获取乐团下未使用的最早的缴费记录
+     * @author Joburgess
+     * @date 2020.10.27
+     * @param musicGroupId:
+     * @return com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender
+     */
+    MusicGroupPaymentCalender getMusicGroupUnusedFirstPaymentCalender(@Param("musicGroupId") String musicGroupId);
+}

+ 10 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupPaymentCalenderDetailDao.java

@@ -128,4 +128,13 @@ public interface MusicGroupPaymentCalenderDetailDao extends BaseDAO<Long, MusicG
 	 * @return
 	 * @return
 	 */
 	 */
     Integer countOpenPayment(@Param("musicGroupId") String musicGroupId, @Param("userId") Integer userId);
     Integer countOpenPayment(@Param("musicGroupId") String musicGroupId, @Param("userId") Integer userId);
-}
+
+    /**
+     * @describe 获取指定缴费日历的详情
+     * @author Joburgess
+     * @date 2020.10.27
+     * @param calenderId:
+     * @return java.util.List<com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderDetail>
+     */
+    List<MusicGroupPaymentCalenderDetail> getCalenderDetailWithCalender(@Param("calenderId") Long calenderId);
+}

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

@@ -34,6 +34,10 @@ public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Lon
 	private ClassGroupStudentMapperDao classGroupStudentMapperDao;
 	private ClassGroupStudentMapperDao classGroupStudentMapperDao;
 	@Autowired
 	@Autowired
 	private SysUserCashAccountService sysUserCashAccountService;
 	private SysUserCashAccountService sysUserCashAccountService;
+	@Autowired
+	private MusicGroupPaymentCalenderDao musicGroupPaymentCalenderDao;
+	@Autowired
+	private MusicGroupPaymentCalenderDetailDao musicGroupPaymentCalenderDetailDao;
 
 
 	@Override
 	@Override
 	public BaseDAO<Long, CourseScheduleStudentPayment> getDAO() {
 	public BaseDAO<Long, CourseScheduleStudentPayment> getDAO() {
@@ -267,6 +271,26 @@ public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Lon
 
 
 	@Override
 	@Override
 	public void createForMusicGroup(String musicGroupId, List<CourseSchedule> courseSchedules, List<Integer> studentIds) {
 	public void createForMusicGroup(String musicGroupId, List<CourseSchedule> courseSchedules, List<Integer> studentIds) {
+		MusicGroupPaymentCalender musicGroupUnusedFirstPaymentCalender = musicGroupPaymentCalenderDao.getMusicGroupUnusedFirstPaymentCalender(musicGroupId);
+		if(Objects.isNull(musicGroupUnusedFirstPaymentCalender)){
+			throw new BizException("当前乐团无未使用缴费记录");
+		}
+
+		List<MusicGroupPaymentCalenderDetail> unusedPaymentCalender = musicGroupPaymentCalenderDetailDao.getCalenderDetailWithCalender(musicGroupUnusedFirstPaymentCalender.getId());
+		if(CollectionUtils.isEmpty(unusedPaymentCalender)){
+			throw new BizException("当前乐团无学员缴费信息");
+		}
+		Map<Integer, List<MusicGroupPaymentCalenderDetail>> studentPaymentCalenderMap = unusedPaymentCalender.stream().collect(Collectors.groupingBy(MusicGroupPaymentCalenderDetail::getUserId));
+		for (Integer studentId : studentIds) {
+			List<MusicGroupPaymentCalenderDetail> musicGroupPaymentCalenderDetails = studentPaymentCalenderMap.get(studentId);
+			if(CollectionUtils.isEmpty(musicGroupPaymentCalenderDetails)){
+				throw new BizException("部分学员无缴费信息");
+			}
+			MusicGroupPaymentCalenderDetail musicGroupPaymentCalenderDetail = musicGroupPaymentCalenderDetails.stream().min(Comparator.comparing(MusicGroupPaymentCalenderDetail::getCreateTime)).get();
+			if(!musicGroupPaymentCalenderDetail.getMusicGroupPaymentCalenderId().equals(musicGroupUnusedFirstPaymentCalender.getId())){
+				throw new BizException("缴费信息异常");
+			}
 
 
+		}
 	}
 	}
 }
 }

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

@@ -383,7 +383,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         if (chargeInfo == null) {
         if (chargeInfo == null) {
             throw new BizException("支付项不存在");
             throw new BizException("支付项不存在");
         }
         }
-        if(chargeInfo.getOpenFlag().equals(1)){
+        if (chargeInfo.getOpenFlag().equals(1)) {
             throw new BizException("项目已关闭");
             throw new BizException("项目已关闭");
         }
         }
         BigDecimal amount = chargeInfo.getAmount();
         BigDecimal amount = chargeInfo.getAmount();
@@ -398,7 +398,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             boolean flag = false;
             boolean flag = false;
             for (int i = 1; i <= 10; i++) {
             for (int i = 1; i <= 10; i++) {
                 chargeInfo = sporadicChargeInfoDao.get(sporadicPayDto.getSporadicId());
                 chargeInfo = sporadicChargeInfoDao.get(sporadicPayDto.getSporadicId());
-                if (chargeInfo.getMaxNum() >= chargeInfo.getPaidNum()) {
+                if (chargeInfo.getMaxNum() != null && chargeInfo.getMaxNum() <= chargeInfo.getPaidNum()) {
                     throw new BizException("活动人数暂时已满,请稍后再试");
                     throw new BizException("活动人数暂时已满,请稍后再试");
                 }
                 }
                 chargeInfo.setPaidNum(chargeInfo.getPaidNum() + 1);
                 chargeInfo.setPaidNum(chargeInfo.getPaidNum() + 1);
@@ -415,7 +415,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         }
         }
 
 
         OrderTypeEnum type = OrderTypeEnum.SPORADIC;
         OrderTypeEnum type = OrderTypeEnum.SPORADIC;
-        if(chargeInfo.getChargeType().equals(SporadicChargeTypeEnum.DOUBLE_ELEVEN2020)){
+        if (chargeInfo.getChargeType().equals(SporadicChargeTypeEnum.DOUBLE_ELEVEN2020)) {
             type = OrderTypeEnum.DOUBLE_ELEVEN2020;
             type = OrderTypeEnum.DOUBLE_ELEVEN2020;
         }
         }
 
 
@@ -643,7 +643,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 
 
         String channelType = "";
         String channelType = "";
 
 
-        StudentPaymentOrder studentPaymentOrder = studentRegistrationService.addOrder(studentRegistration, amount, orderNo, channelType, courseFee, goodsGroups, goodsList, otherGoodsList, courseForms,remitFee,courseRemitFee);
+        StudentPaymentOrder studentPaymentOrder = studentRegistrationService.addOrder(studentRegistration, amount, orderNo, channelType, courseFee, goodsGroups, goodsList, otherGoodsList, courseForms, remitFee, courseRemitFee);
         studentPaymentOrder.setVersion(0);
         studentPaymentOrder.setVersion(0);
 
 
         Date date = new Date();
         Date date = new Date();
@@ -850,7 +850,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 
 
         String channelType = "";
         String channelType = "";
 
 
-        StudentPaymentOrder studentPaymentOrder = studentRegistrationService.reAddOrder(userId, amount, orderNo, channelType, courseFee, goodsGroups, goodsList, otherGoodsList, studentRegistration.getMusicGroupId(), ApplyOrder, courseForms,remitFee,courseRemitFee);
+        StudentPaymentOrder studentPaymentOrder = studentRegistrationService.reAddOrder(userId, amount, orderNo, channelType, courseFee, goodsGroups, goodsList, otherGoodsList, studentRegistration.getMusicGroupId(), ApplyOrder, courseForms, remitFee, courseRemitFee);
         studentPaymentOrder.setVersion(0);
         studentPaymentOrder.setVersion(0);
         Date date = new Date();
         Date date = new Date();
 
 
@@ -1451,7 +1451,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
     }
     }
 
 
     @Override
     @Override
-	public boolean extensionApplyExpireDate(String musicGroupId, Date expireDate) {
+    public boolean extensionApplyExpireDate(String musicGroupId, Date expireDate) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null) {
         if (sysUser == null) {
             throw new BizException("用户信息获取失败");
             throw new BizException("用户信息获取失败");
@@ -1478,7 +1478,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         return true;
         return true;
     }
     }
 
 
-	@Override
+    @Override
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
     public boolean applyQuitMusicGroup(String musicGroupId) {
     public boolean applyQuitMusicGroup(String musicGroupId) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         SysUser sysUser = sysUserFeignService.queryUserInfo();
@@ -1540,7 +1540,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                 if (classGroup.getType().equals(ClassGroupTypeEnum.MUSIC_NETWORK)) {
                 if (classGroup.getType().equals(ClassGroupTypeEnum.MUSIC_NETWORK)) {
                     classGroupService.delSingle(classGroupId);
                     classGroupService.delSingle(classGroupId);
                 } else {
                 } else {
-                    classGroupStudentMapperService.delClassGroupStudent(userId, classGroupId,true);
+                    classGroupStudentMapperService.delClassGroupStudent(userId, classGroupId, true);
                 }
                 }
             }
             }
 
 
@@ -1642,7 +1642,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             if (classGroup.getType().equals(ClassGroupTypeEnum.MUSIC_NETWORK)) {
             if (classGroup.getType().equals(ClassGroupTypeEnum.MUSIC_NETWORK)) {
                 classGroupService.delSingle(classGroupId);
                 classGroupService.delSingle(classGroupId);
             } else {
             } else {
-                classGroupStudentMapperService.delClassGroupStudent(userId, classGroupId,true);
+                classGroupStudentMapperService.delClassGroupStudent(userId, classGroupId, true);
             }
             }
         }
         }
 
 

+ 5 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupSubjectPlanServiceImpl.java

@@ -93,6 +93,10 @@ public class MusicGroupSubjectPlanServiceImpl extends BaseServiceImpl<Integer, M
         //课程形态
         //课程形态
         Map<String, Object> courseForm = JSON.parseObject(musicGroup.getCourseForm(), Map.class);
         Map<String, Object> courseForm = JSON.parseObject(musicGroup.getCourseForm(), Map.class);
 
 
+        //新的课程形态10.27
+
+
+
         //乐团计划及收费信息
         //乐团计划及收费信息
         MusicGroupSubjectPlan musicOneSubjectClassPlan = this.getMusicOneSubjectClassPlan(musicGroupId, subjectId);
         MusicGroupSubjectPlan musicOneSubjectClassPlan = this.getMusicOneSubjectClassPlan(musicGroupId, subjectId);
 
 
@@ -228,8 +232,7 @@ public class MusicGroupSubjectPlanServiceImpl extends BaseServiceImpl<Integer, M
         }
         }
         for (MusicGroupGoodsAndDiscountDto musicGroupGoodsAndDiscountDto : goodsList) {
         for (MusicGroupGoodsAndDiscountDto musicGroupGoodsAndDiscountDto : goodsList) {
             musicGroupGoodsAndDiscountDto.setDiscountRate(subjectDiscount.getGoodsDiscountRate());
             musicGroupGoodsAndDiscountDto.setDiscountRate(subjectDiscount.getGoodsDiscountRate());
-            musicGroupGoodsAndDiscountDto.setDiscountPrice(musicGroupGoodsAndDiscountDto.getGroupPurchasePrice()
-                    .subtract(musicGroupGoodsAndDiscountDto.getGroupPurchasePrice().multiply(subjectDiscount.getGoodsDiscountRate())).setScale(2, BigDecimal.ROUND_HALF_UP));
+            musicGroupGoodsAndDiscountDto.setGroupPurchasePrice(musicGroupGoodsAndDiscountDto.getGroupPurchasePrice().multiply(subjectDiscount.getGoodsDiscountRate()).setScale(2, BigDecimal.ROUND_HALF_UP));
         }
         }
         return goodsList;
         return goodsList;
     }
     }

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

@@ -139,7 +139,7 @@ public class SporadicChargeInfoImpl extends BaseServiceImpl<Integer, SporadicCha
             return true;
             return true;
         }
         }
         if (studentPaymentOrder.getStatus() == DealStatusEnum.CLOSE || studentPaymentOrder.getStatus() == DealStatusEnum.FAILED) {
         if (studentPaymentOrder.getStatus() == DealStatusEnum.CLOSE || studentPaymentOrder.getStatus() == DealStatusEnum.FAILED) {
-            if (info.getMaxNum() != null) {
+            if (info.getMaxNum() != null && info.getPaidNum() > 0) {
                 //重试避免人数过多频繁冲突
                 //重试避免人数过多频繁冲突
                 boolean flag = false;
                 boolean flag = false;
                 for (int i = 1; i <= 10; i++) {
                 for (int i = 1; i <= 10; i++) {

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

@@ -295,4 +295,12 @@
 		WHERE mgpcd.user_id_ = #{userId} AND mgpc.music_group_id_ = #{musicGroupId} AND (mgpc.payment_status_ = 1 OR mgpcd.open_ = 1)
 		WHERE mgpcd.user_id_ = #{userId} AND mgpc.music_group_id_ = #{musicGroupId} AND (mgpc.payment_status_ = 1 OR mgpcd.open_ = 1)
 		AND mgpcd.payment_status_ != 'PAID_COMPLETED'
 		AND mgpcd.payment_status_ != 'PAID_COMPLETED'
 	</select>
 	</select>
+	<select id="getCalenderDetailWithCalender" resultMap="MusicGroupPaymentCalenderDetail">
+		SELECT
+			mgpcd.*
+		FROM
+			music_group_payment_calender_detail mgpcd
+		WHERE
+			mgpc.music_group_payment_calender_id_ = #{calenderId}
+	</select>
 </mapper>
 </mapper>

+ 6 - 0
mec-biz/src/main/resources/config/mybatis/MusicGroupPaymentCalenderMapper.xml

@@ -302,4 +302,10 @@
         WHERE mg.payment_valid_end_date_ IS NOT NULL AND
         WHERE mg.payment_valid_end_date_ IS NOT NULL AND
         DATEDIFF(mg.payment_valid_end_date_,#{format}) = #{configValue}
         DATEDIFF(mg.payment_valid_end_date_,#{format}) = #{configValue}
     </select>
     </select>
+    <select id="getMusicGroupUnusedFirstPaymentCalender" resultMap="MusicGroupPaymentCalender">
+        SELECT * FROM music_group_payment_calender mgpc
+        WHERE music_group_id_=#{musicGroupId}
+        AND NOT EXISTS ( SELECT id_ FROM course_schedule WHERE batch_no_ = mgpc.id_ AND music_group_id_ = #{musicGroupId} )
+        ORDER BY create_time_ LIMIT 1;
+    </select>
 </mapper>
 </mapper>

+ 9 - 1
mec-web/src/main/java/com/ym/mec/web/controller/SporadicChargeInfoController.java

@@ -20,6 +20,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.bind.annotation.RestController;
 
 
 import java.util.Arrays;
 import java.util.Arrays;
+import java.util.Date;
 import java.util.List;
 import java.util.List;
 
 
 @RequestMapping("sporadicChargeInfo")
 @RequestMapping("sporadicChargeInfo")
@@ -111,8 +112,15 @@ public class SporadicChargeInfoController extends BaseController {
 		if (sysUser == null) {
 		if (sysUser == null) {
 			return failed("用户信息获取失败");
 			return failed("用户信息获取失败");
 		}
 		}
+		SporadicChargeInfo info = sporadicChargeInfoService.get(sporadicChargeInfo.getId());
+		sporadicChargeInfo.setVersion(info.getVersion());
 		sporadicChargeInfo.setOperatorId(sysUser.getId());
 		sporadicChargeInfo.setOperatorId(sysUser.getId());
-		return succeed(sporadicChargeInfoService.update(sporadicChargeInfo));
+		sporadicChargeInfo.setUpdateTime(new Date());
+		int update = sporadicChargeInfoService.update(sporadicChargeInfo);
+		if (update <= 0) {
+			return failed("修改失败,请重试");
+		}
+		return succeed(update);
 	}
 	}
 
 
 	@ApiOperation(value = "开启/关闭缴费")
 	@ApiOperation(value = "开启/关闭缴费")