瀏覽代碼

乐理课活动

zouxuan 3 年之前
父節點
當前提交
acecc76d80

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

@@ -7,7 +7,7 @@ import java.math.BigDecimal;
 public class PracticeGroupBuyParamsDto extends PayParamBasicDto{
 
     @ApiModelProperty(value = "课程组ID")
-    private Long groupId;
+    private Long practiceGroupId;
 
     @ApiModelProperty(value = "付款渠道")
     private String paymentChannel;
@@ -57,12 +57,12 @@ public class PracticeGroupBuyParamsDto extends PayParamBasicDto{
         this.activityId = activityId;
     }
 
-    public Long getGroupId() {
-        return groupId;
+    public Long getPracticeGroupId() {
+        return practiceGroupId;
     }
 
-    public void setGroupId(Long groupId) {
-        this.groupId = groupId;
+    public void setPracticeGroupId(Long practiceGroupId) {
+        this.practiceGroupId = practiceGroupId;
     }
 
     private Integer userId;

+ 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);
 
 	/**
+	 * @description: 活动购买支付订单回调
+	 * @param order
+	 * @return void
+	 * @author zx
+	 * @date 2021/10/13 19:52
+	 */
+	void activityOrderCallback(StudentPaymentOrder order);
+
+	/**
 	 * @describe 获取用户历史购买的陪练课
 	 * @author Joburgess
 	 * @date 2020/2/18

+ 82 - 19
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.stream.Collectors;
 
+import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.service.*;
 import org.apache.commons.lang3.StringUtils;
 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.VipGroupActivity;
 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.StudentBuyPracticeQueryInfo;
 import com.ym.mec.biz.dal.page.StudentQueryInfo;
@@ -4690,6 +4672,87 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
     }
 
     @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)
     public Object buyActivityPracticeGroup(PracticeGroupBuyParamsDto practiceGroupBuyParams) throws Exception {
         Integer activityId = practiceGroupBuyParams.getActivityId();