Browse Source

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

zouxuan 5 years ago
parent
commit
db5e5877cf

+ 3 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/VipCourseStudentInfoDto.java

@@ -8,7 +8,7 @@ public class VipCourseStudentInfoDto {
 
 	private Integer studentNum;
 
-	private Long musicGroupId;
+	private String musicGroupId;
 
 	private Integer totalCourseTimes;
 
@@ -28,11 +28,11 @@ public class VipCourseStudentInfoDto {
 		this.studentNum = studentNum;
 	}
 
-	public Long getMusicGroupId() {
+	public String getMusicGroupId() {
 		return musicGroupId;
 	}
 
-	public void setMusicGroupId(Long musicGroupId) {
+	public void setMusicGroupId(String musicGroupId) {
 		this.musicGroupId = musicGroupId;
 	}
 

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

@@ -213,7 +213,7 @@ public interface PracticeGroupService extends BaseService<Long, PracticeGroup> {
 	 * @param practiceGroupId:
 	 * @return com.ym.mec.common.entity.HttpResponseResult
 	 */
-	HttpResponseResult repay(Integer userId,Integer practiceGroupId);
+	HttpResponseResult repay(Integer userId,Integer practiceGroupId, boolean useBalancePayment);
 
 	/**
 	 * @describe 更新历史陪练课程组状态

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

@@ -396,5 +396,5 @@ public interface VipGroupService extends BaseService<Long, VipGroup> {
      * 更新线上课老师的课酬
      * @return
      */
-    boolean updateHistoryTeacherSalaryOfOnline();
+    void updateHistoryTeacherSalaryOfOnline();
 }

+ 52 - 13
mec-biz/src/main/java/com/ym/mec/biz/service/impl/PracticeGroupServiceImpl.java

@@ -2999,6 +2999,9 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
 
         Long ingOrderNum=statusOrderNumMap.get(DealStatusEnum.ING);
         if(Objects.nonNull(ingOrderNum)&&ingOrderNum>1&&order.getStatus().equals(DealStatusEnum.FAILED)){
+            if(Objects.nonNull(order.getBalancePaymentAmount())){
+                sysUserCashAccountService.updateBalance(order.getUserId(), order.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, "网管课购买失败");
+            }
             studentPaymentOrderDao.update(order);
             return;
         }
@@ -3175,7 +3178,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
 
     @Override
     @Transactional(rollbackFor = Exception.class,isolation = Isolation.READ_COMMITTED)
-    public HttpResponseResult repay(Integer userId,Integer practiceGroupId) {
+    public HttpResponseResult repay(Integer userId,Integer practiceGroupId, boolean useBalancePayment) {
         if(Objects.isNull(practiceGroupId)){
             throw new BizException("请指定需要重新支付的课程组");
         }
@@ -3183,9 +3186,9 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         if(Objects.isNull(practiceGroup)){
             return BaseController.failed(HttpStatus.FAILED_DEPENDENCY, "该课程组已失效,请重新购买");
         }
-        if(practiceGroup.getGroupStatus().equals(GroupStatusEnum.NORMAL)){
-            return BaseController.failed(HttpStatus.CREATED, "该订单已经支付成功");
-        }
+//        if(practiceGroup.getGroupStatus().equals(GroupStatusEnum.NORMAL)){
+//            return BaseController.failed(HttpStatus.CREATED, "该订单已经支付成功");
+//        }
         if(practiceGroup.getGroupStatus().equals(GroupStatusEnum.CANCEL)){
             return BaseController.failed(HttpStatus.FAILED_DEPENDENCY, "该课程组已失效,请重新购买");
         }
@@ -3193,7 +3196,9 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         Map<DealStatusEnum, List<StudentPaymentOrder>> statusOrderMap = userGroupOrders.stream().collect(Collectors.groupingBy(StudentPaymentOrder::getStatus));
         List<StudentPaymentOrder> successOrders=statusOrderMap.get(DealStatusEnum.SUCCESS);
         if(!CollectionUtils.isEmpty(successOrders)&&successOrders.size()>0){
-            return BaseController.failed(HttpStatus.CREATED, "该订单已经支付成功");
+            Map<String, Object> result=new HashMap<>();
+            result.put("orderNo", successOrders.get(0).getOrderNo());
+            return BaseController.succeed(result);
         }
 
         StudentPaymentOrder latestOrder=userGroupOrders.stream().max(Comparator.comparing(StudentPaymentOrder::getId)).get();
@@ -3205,13 +3210,46 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         if(CollectionUtils.isEmpty(ingOrders)||ingOrders.size()<=0){
             return BaseController.failed(HttpStatus.FAILED_DEPENDENCY, "该课程组已失效,请重新购买");
         }
-//        else{
-//            for (StudentPaymentOrder ingOrder : ingOrders) {
-//                ingOrder.setStatus(DealStatusEnum.CLOSE);
-//                ingOrder.setMemo("用户重新支付");
-//                studentPaymentOrderDao.update(ingOrder);
-//            }
-//        }
+
+        newOrder.setActualAmount(newOrder.getExpectAmount());
+        newOrder.setBalancePaymentAmount(new BigDecimal(0));
+        newOrder.setStatus(DealStatusEnum.ING);
+        newOrder.setVersion(0);
+        studentPaymentOrderService.insert(newOrder);
+
+        if(useBalancePayment || newOrder.getExpectAmount().doubleValue() == 0){
+            SysUserCashAccount userCashAccount = sysUserCashAccountService.getLocked(userId);
+            if(userCashAccount == null){
+                throw new BizException("用户账户找不到");
+            }
+            newOrder.setPaymentChannel("BALANCE");
+            if(userCashAccount.getBalance().subtract(newOrder.getExpectAmount()).doubleValue() >= 0){
+                // 更新订单信息
+                newOrder.setActualAmount(new BigDecimal(0));
+                newOrder.setBalancePaymentAmount(newOrder.getExpectAmount());
+                newOrder.setStatus(DealStatusEnum.SUCCESS);
+                newOrder.setUpdateTime(new Date());
+                newOrder.setOrganId(practiceGroup.getOrganId());
+
+                sysUserCashAccountService.updateBalance(userId, newOrder.getExpectAmount().negate(),PlatformCashAccountDetailTypeEnum.PAY_FEE,"网管课购买");
+
+                this.orderCallback(newOrder);
+
+                Map<String,Object> result=new HashMap<>();
+                result.put("orderNo",newOrder.getOrderNo());
+
+                return BaseController.succeed(result);
+            }else{
+                if (userCashAccount.getBalance().doubleValue() > 0) {
+                    sysUserCashAccountService.updateBalance(userId, userCashAccount.getBalance().negate(), PlatformCashAccountDetailTypeEnum.PAY_FEE, "网管课购买");
+                    BigDecimal amount = newOrder.getExpectAmount().subtract(userCashAccount.getBalance());
+                    newOrder.setActualAmount(amount);
+                    newOrder.setBalancePaymentAmount(userCashAccount.getBalance());
+                } else {
+                    newOrder.setBalancePaymentAmount(new BigDecimal(0));
+                }
+            }
+        }
 
         String orderNo=idGeneratorService.generatorId("payment") + "";
         String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
@@ -3243,7 +3281,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
             newOrder.setPaymentChannel((String) payMap.get("type"));
             newOrder.setUpdateTime(new Date());
             newOrder.setCreateTime(new Date());
-            studentPaymentOrderService.insert(newOrder);
+            studentPaymentOrderService.update(newOrder);
 
             return BaseController.succeed(payMap);
         } catch (Exception e) {
@@ -3286,6 +3324,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         if(practiceGroup.getGroupStatus().equals(GroupStatusEnum.LOCK)){
             groupService.deleteGroupOtherInfo(groupId.toString(),GroupType.PRACTICE);
             practiceGroup.setGroupStatus(GroupStatusEnum.CANCEL);
+            practiceGroupDao.update(practiceGroup);
         }else if(practiceGroup.getGroupStatus().equals(GroupStatusEnum.NORMAL)){
             return BaseController.failed(HttpStatus.CREATED, "该订单已经支付成功");
         }else if(practiceGroup.getGroupStatus().equals(GroupStatusEnum.CANCEL)){

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

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.service.impl;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -2833,18 +2834,21 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 
 	@Override
 	@Async
-	public boolean updateHistoryTeacherSalaryOfOnline() {
+	public void updateHistoryTeacherSalaryOfOnline() {
 		// 查询所有含有线上课的课程组,线上课节数,实付金额
 		List<VipCourseStudentInfoDto> list = vipGroupDao.queryVipCourseStudentInfo();
-		Map<Long, VipCourseStudentInfoDto> map = list.stream().collect(Collectors.toMap(VipCourseStudentInfoDto::getMusicGroupId, e -> e));
+		Map<String, VipCourseStudentInfoDto> map = list.stream().collect(Collectors.toMap(VipCourseStudentInfoDto::getMusicGroupId, e -> e));
 
 		VipCourseStudentInfoDto dto = null;
 		// 查询需要修改的课酬记录
 		List<CourseScheduleTeacherSalary> teacherSalaryList = courseScheduleTeacherSalaryDao.queryOnlineCourseByGroupType(GroupType.VIP);
 		for (CourseScheduleTeacherSalary ts : teacherSalaryList) {
-			dto = map.get(ts.getCourseScheduleId());
+			dto = map.get(ts.getMusicGroupId());
 			if (dto != null) {
-				ts.setExpectSalary(dto.getTotalAmount().divide(new BigDecimal((dto.getTotalCourseTimes() / dto.getStudentNum()))));
+				ts.setExpectSalary(dto
+						.getTotalAmount()
+						.divide(new BigDecimal(dto.getTotalCourseTimes()).divide(new BigDecimal(dto.getStudentNum()), RoundingMode.HALF_UP),
+								RoundingMode.HALF_UP).multiply(new BigDecimal(0.6)));
 			}
 		}
 		
@@ -2852,6 +2856,5 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			courseScheduleTeacherSalaryDao.batchUpdateTeacherExpectSalarys(teacherSalaryList);
 		}
 
-		return true;
 	}
 }

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

@@ -921,7 +921,7 @@
     </select>
     
     <select id="queryVipCourseStudentInfo" resultMap="vipCourseStudentInfoDto">
-        SELECT cssp.music_group_id_,sum(cssp.expect_price_) total_amount_,count(DISTINCT(cssp.user_id_)) student_num_,count(cssp.id_) total_times_   
+        SELECT cssp.music_group_id_,ifnull(sum(cssp.expect_price_),0) total_amount_,ifnull(count(DISTINCT(cssp.user_id_)),0) student_num_,ifnull(count(cssp.id_),0) total_times_   
 		FROM course_schedule_student_payment cssp LEFT JOIN course_schedule cs on cs.id_ = cssp.course_schedule_id_
 		WHERE cs.group_type_ = 'VIP' and cs.teach_mode_ = 'ONLINE'
 		GROUP BY cssp.music_group_id_

+ 2 - 2
mec-student/src/main/java/com/ym/mec/student/controller/PracticeGroupController.java

@@ -201,12 +201,12 @@ public class PracticeGroupController extends BaseController {
 
     @ApiOperation("重新支付")
     @PostMapping(value = "/repay")
-    public HttpResponseResult repay(Integer groupId){
+    public HttpResponseResult repay(Integer groupId, boolean useBalancePayment){
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null) {
             return failed(HttpStatus.FORBIDDEN, "请登录");
         }
-        return practiceGroupService.repay(sysUser.getId(),groupId);
+        return practiceGroupService.repay(sysUser.getId(),groupId,useBalancePayment);
     }
 
     @ApiOperation("陪练课完成报告推送")