Browse Source

Merge branch 'zx_saas_2022-05-13' of http://git.dayaedu.com/yonge/mec into master_saas

zouxuan 3 years ago
parent
commit
33713cb30c

+ 10 - 10
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/PracticeGroupBuyParamsDto.java

@@ -22,16 +22,16 @@ public class PracticeGroupBuyParamsDto extends PayParamBasicDto{
 
 
     private Integer organId;
     private Integer organId;
 
 
-    @ApiModelProperty(value = "购买的会员数量")
-    private Integer buyMemberNum = 1;
-
-    public Integer getBuyMemberNum() {
-        return buyMemberNum;
-    }
-
-    public void setBuyMemberNum(Integer buyMemberNum) {
-        this.buyMemberNum = buyMemberNum;
-    }
+//    @ApiModelProperty(value = "购买的会员数量")
+//    private Integer buyMemberNum = 1;
+
+//    public Integer getBuyMemberNum() {
+//        return buyMemberNum;
+//    }
+//
+//    public void setBuyMemberNum(Integer buyMemberNum) {
+//        this.buyMemberNum = buyMemberNum;
+//    }
 
 
     public Integer getOrganId() {
     public Integer getOrganId() {
         return organId;
         return organId;

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

@@ -207,6 +207,15 @@ public interface PracticeGroupService extends BaseService<Long, PracticeGroup> {
 	void orderCallback(StudentPaymentOrder order);
 	void orderCallback(StudentPaymentOrder order);
 
 
 	/**
 	/**
+	 * @description: 活动购买支付订单回调
+	 * @param order
+	 * @return void
+	 * @author zx
+	 * @date 2021/10/13 19:52
+	 */
+	void activityOrderCallback(StudentPaymentOrder order);
+
+	/**
 	 * @describe 获取用户历史购买的陪练课
 	 * @describe 获取用户历史购买的陪练课
 	 * @author Joburgess
 	 * @author Joburgess
 	 * @date 2020/2/18
 	 * @date 2020/2/18

+ 90 - 25
mec-biz/src/main/java/com/ym/mec/biz/service/impl/PracticeGroupServiceImpl.java

@@ -29,6 +29,7 @@ import java.util.Objects;
 import java.util.Set;
 import java.util.Set;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
+import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.biz.service.*;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.Logger;
@@ -125,25 +126,6 @@ import com.ym.mec.biz.dal.entity.TeacherFreeTime;
 import com.ym.mec.biz.dal.entity.VipGroup;
 import com.ym.mec.biz.dal.entity.VipGroup;
 import com.ym.mec.biz.dal.entity.VipGroupActivity;
 import com.ym.mec.biz.dal.entity.VipGroupActivity;
 import com.ym.mec.biz.dal.entity.VipGroupCategory;
 import com.ym.mec.biz.dal.entity.VipGroupCategory;
-import com.ym.mec.biz.dal.enums.AuditStatusEnum;
-import com.ym.mec.biz.dal.enums.ClassGroupStudentStatusEnum;
-import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
-import com.ym.mec.biz.dal.enums.CouponDetailTypeEnum;
-import com.ym.mec.biz.dal.enums.CourseStatusEnum;
-import com.ym.mec.biz.dal.enums.DealStatusEnum;
-import com.ym.mec.biz.dal.enums.GroupStatusEnum;
-import com.ym.mec.biz.dal.enums.GroupType;
-import com.ym.mec.biz.dal.enums.MessageTypeEnum;
-import com.ym.mec.biz.dal.enums.OrderTypeEnum;
-import com.ym.mec.biz.dal.enums.PayStatus;
-import com.ym.mec.biz.dal.enums.PeriodEnum;
-import com.ym.mec.biz.dal.enums.PlatformCashAccountDetailTypeEnum;
-import com.ym.mec.biz.dal.enums.PracticeGroupType;
-import com.ym.mec.biz.dal.enums.SalarySettlementTypeEnum;
-import com.ym.mec.biz.dal.enums.SignOutStatusEnum;
-import com.ym.mec.biz.dal.enums.TeachModeEnum;
-import com.ym.mec.biz.dal.enums.TeachTypeEnum;
-import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.page.PracticeGroupQueryInfo;
 import com.ym.mec.biz.dal.page.PracticeGroupQueryInfo;
 import com.ym.mec.biz.dal.page.StudentBuyPracticeQueryInfo;
 import com.ym.mec.biz.dal.page.StudentBuyPracticeQueryInfo;
 import com.ym.mec.biz.dal.page.StudentQueryInfo;
 import com.ym.mec.biz.dal.page.StudentQueryInfo;
@@ -4690,6 +4672,87 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
     }
     }
 
 
     @Override
     @Override
+    @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
+    public void activityOrderCallback(StudentPaymentOrder studentPaymentOrder) {
+        Integer userId = studentPaymentOrder.getUserId();
+        StudentPaymentOrder order = studentPaymentOrderDao.lockOrder(studentPaymentOrder.getId());
+        if (!order.getStatus().equals(DealStatusEnum.ING)) {
+            return;
+        }
+        //更新订单状态
+        int updateCount = studentPaymentOrderService.update(studentPaymentOrder);
+        if (updateCount <= 0) {
+            throw new BizException("订单更新失败");
+        }
+        if (studentPaymentOrder.getStatus().equals(DealStatusEnum.SUCCESS)) {
+            Student student = studentDao.get(order.getUserId());
+            Integer activityId = Integer.parseInt(order.getActivityId());
+            VipGroupActivity activity = vipGroupActivityDao.get(activityId);
+            ActivityUserMapper activityUserMapper = new ActivityUserMapper();
+            activityUserMapper.setActivityId(activityId);
+            activityUserMapper.setUserId(order.getUserId());
+            activityUserMapper.setPaymentOrderId(order.getId());
+            activityUserMapper.setTeacherId(student.getTeacherId());
+            activityUserMapper.setVipFlag(1);
+            if (activity.isPayToBalance()) {
+                boolean appendCourseBalance = sysUserCashAccountService.appendCourseBalance(userId, studentPaymentOrder.getExpectAmount(), PlatformCashAccountDetailTypeEnum.RECHARGE, "通用营销活动购买");
+                if (!appendCourseBalance) {
+                    throw new BizException("增加用户课程余额失败");
+                }
+            }
+            if (activity.getFullMinusCourseTimes() != -1 && order.getActivityBuyNum() >= activity.getFullMinusCourseTimes()) {
+                activityUserMapper.setGiveVipFlag(1);
+            }
+            activityUserMapperService.insert(activityUserMapper);
+            SysUserCashAccount sysUserCashAccount = sysUserCashAccountService.get(userId);
+            //插入缴费明细
+            //收入
+            SysUserCashAccountDetail sysUserIncomeCashAccountDetail = new SysUserCashAccountDetail();
+            sysUserIncomeCashAccountDetail.setUserId(order.getUserId());
+            sysUserIncomeCashAccountDetail.setType(PlatformCashAccountDetailTypeEnum.RECHARGE);
+            sysUserIncomeCashAccountDetail.setStatus(DealStatusEnum.SUCCESS);
+            sysUserIncomeCashAccountDetail.setAmount(order.getActualAmount());
+            sysUserIncomeCashAccountDetail.setBalance(sysUserCashAccount.getBalance().add(order.getActualAmount()));
+            sysUserIncomeCashAccountDetail.setAttribute(order.getTransNo());
+            sysUserIncomeCashAccountDetail.setChannel(studentPaymentOrder.getPaymentChannel());
+            sysUserIncomeCashAccountDetail.setComAmount(studentPaymentOrder.getComAmount());
+            sysUserIncomeCashAccountDetail.setPerAmount(studentPaymentOrder.getPerAmount());
+            //支出
+            SysUserCashAccountDetail sysUserExpendCashAccountDetail = new SysUserCashAccountDetail();
+            sysUserExpendCashAccountDetail.setUserId(order.getUserId());
+            sysUserExpendCashAccountDetail.setType(PlatformCashAccountDetailTypeEnum.PAY_FEE);
+            sysUserExpendCashAccountDetail.setStatus(DealStatusEnum.SUCCESS);
+            sysUserExpendCashAccountDetail.setAmount(order.getActualAmount().negate());
+            sysUserExpendCashAccountDetail.setBalance(sysUserCashAccount.getBalance());
+            sysUserExpendCashAccountDetail.setAttribute(order.getTransNo());
+            sysUserExpendCashAccountDetail.setChannel(studentPaymentOrder.getPaymentChannel());
+
+            if (studentPaymentOrder.getComAmount() != null) {
+                sysUserIncomeCashAccountDetail.setComAmount(studentPaymentOrder.getComAmount().negate());
+            }
+            if (studentPaymentOrder.getPerAmount() != null) {
+                sysUserExpendCashAccountDetail.setPerAmount(studentPaymentOrder.getPerAmount().negate());
+            }
+
+            sysUserCashAccountDetailService.insert(sysUserIncomeCashAccountDetail);
+            sysUserCashAccountDetailService.insert(sysUserExpendCashAccountDetail);
+
+            try {
+                contractService.transferProduceContract(userId, null, CourseViewTypeEnum.COURSE_FEE);
+            } catch (Exception e) {
+                LOGGER.error("产品协议生成失败", e);
+            }
+            studentDao.updateStudentServiceTag(userId, null, YesOrNoEnum.YES.getCode());
+        }
+        if (studentPaymentOrder.getStatus().equals(DealStatusEnum.FAILED)) {
+            if (studentPaymentOrder.getBalancePaymentAmount() != null && studentPaymentOrder.getBalancePaymentAmount().compareTo(BigDecimal.ZERO) > 0) {
+                sysUserCashAccountService.updateBalance(studentPaymentOrder.getUserId(), studentPaymentOrder.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, "报名缴费失败");
+            }
+            sysCouponCodeService.quit(studentPaymentOrder.getCouponCodeId());
+        }
+    }
+
+    @Override
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
     public Object buyActivityPracticeGroup(PracticeGroupBuyParamsDto practiceGroupBuyParams) throws Exception {
     public Object buyActivityPracticeGroup(PracticeGroupBuyParamsDto practiceGroupBuyParams) throws Exception {
         Integer activityId = practiceGroupBuyParams.getActivityId();
         Integer activityId = practiceGroupBuyParams.getActivityId();
@@ -4723,9 +4786,11 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
             }
             }
         }
         }
         //现价
         //现价
-        Integer buyNum = practiceGroupBuyParams.getBuyMemberNum();
-        BigDecimal activityFee = activity.getMarketPrice().multiply(new BigDecimal(buyNum)).
-                multiply(activity.getDiscount()).divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, ROUND_DOWN);
+//        Integer buyNum = practiceGroupBuyParams.getBuyMemberNum();
+//        BigDecimal activityFee = activity.getMarketPrice().multiply(new BigDecimal(buyNum)).
+//                multiply(activity.getDiscount()).divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, ROUND_DOWN);
+        BigDecimal activityFee = activity.getMarketPrice().multiply(activity.getDiscount()).
+                divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, ROUND_DOWN);
         //计算订单金额
         //计算订单金额
         StudentPaymentOrder studentPaymentOrder = sysCouponCodeService.use(practiceGroupBuyParams.getCouponIdList(), activityFee, true);
         StudentPaymentOrder studentPaymentOrder = sysCouponCodeService.use(practiceGroupBuyParams.getCouponIdList(), activityFee, true);
         activityFee = studentPaymentOrder.getActualAmount();
         activityFee = studentPaymentOrder.getActualAmount();
@@ -4755,9 +4820,9 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
 
 
         studentPaymentOrder.setPaymentChannel("BALANCE");
         studentPaymentOrder.setPaymentChannel("BALANCE");
         studentPaymentOrder.setUserId(student.getUserId());
         studentPaymentOrder.setUserId(student.getUserId());
-        studentPaymentOrder.setGroupType(GroupType.MEMBER);
+        studentPaymentOrder.setGroupType(GroupType.VIP);
         studentPaymentOrder.setOrderNo(orderNo);
         studentPaymentOrder.setOrderNo(orderNo);
-        studentPaymentOrder.setType(OrderTypeEnum.MEMBER);
+        studentPaymentOrder.setType(OrderTypeEnum.ACTIVITY);
         studentPaymentOrder.setStatus(DealStatusEnum.ING);
         studentPaymentOrder.setStatus(DealStatusEnum.ING);
         studentPaymentOrder.setRemitFee(BigDecimal.ZERO);
         studentPaymentOrder.setRemitFee(BigDecimal.ZERO);
         studentPaymentOrder.setCourseRemitFee(BigDecimal.ZERO);
         studentPaymentOrder.setCourseRemitFee(BigDecimal.ZERO);
@@ -4766,7 +4831,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         studentPaymentOrder.setCreateTime(nowDate);
         studentPaymentOrder.setCreateTime(nowDate);
         studentPaymentOrder.setUpdateTime(nowDate);
         studentPaymentOrder.setUpdateTime(nowDate);
         studentPaymentOrder.setActivityId(activityId.toString());
         studentPaymentOrder.setActivityId(activityId.toString());
-        studentPaymentOrder.setActivityBuyNum(buyNum);
+        studentPaymentOrder.setActivityBuyNum(1);
         studentPaymentOrderService.insert(studentPaymentOrder);
         studentPaymentOrderService.insert(studentPaymentOrder);
 
 
         studentPaymentOrder.setVersion(0);
         studentPaymentOrder.setVersion(0);

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderServiceImpl.java

@@ -495,6 +495,9 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
         } else if (order.getType().equals(OrderTypeEnum.MEMBER)) {
         } else if (order.getType().equals(OrderTypeEnum.MEMBER)) {
             //购买团练宝
             //购买团练宝
             memberRankSettingService.orderCallback(order);
             memberRankSettingService.orderCallback(order);
+        } else if (order.getType().equals(OrderTypeEnum.ACTIVITY)) {
+            //购买活动
+            memberRankSettingService.orderCallback(order);
         }
         }
     }
     }