Bläddra i källkod

云教练活动

zouxuan 3 år sedan
förälder
incheckning
e06dd361e9

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

@@ -447,6 +447,6 @@ public interface StudentPaymentOrderDao extends BaseDAO<Long, StudentPaymentOrde
      */
     StudentPaymentOrder findByUserAndActive(@Param("userId") Integer userId,
                                             @Param("activeRemark") Integer activeRemark,
-                                            @Param("remark") String remark);
+                                            @Param("remark") String remark, @Param("status") String status);
 
 }

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/MemberRankSettingService.java

@@ -47,4 +47,6 @@ public interface MemberRankSettingService extends BaseService<Integer, MemberRan
 	 * @return
 	 */
 	boolean orderCallback(StudentPaymentOrder studentPaymentOrder);
+
+	Object ActiveBuy(Integer id, Integer memberRankId, PeriodEnum month, BigDecimal amount, boolean isUseBalance, Integer buyNum, int giveNum, int activeRemark, String remark) throws Exception;
 }

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

@@ -23,7 +23,7 @@ import com.ym.mec.common.service.BaseService;
 
 public interface StudentPaymentOrderService extends BaseService<Long, StudentPaymentOrder> {
 
-    StudentPaymentOrder findByUserAndActive(Integer userId, Integer activeRemark, String remark);
+    StudentPaymentOrder findByUserAndActive(Integer userId, Integer activeRemark, String remark,String status);
 
     Map createOrder(StudentPaymentOrder studentPaymentOrder, List<StudentPaymentOrderDetail> details, String payReceiver) throws Exception;
 

+ 34 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MemberRankSettingServiceImpl.java

@@ -6,6 +6,7 @@ import java.util.List;
 import java.util.Map;
 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;
@@ -28,11 +29,6 @@ import com.ym.mec.biz.dal.entity.Student;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
 import com.ym.mec.biz.dal.entity.SysUserCashAccount;
 import com.ym.mec.biz.dal.entity.SysUserCashAccountDetail;
-import com.ym.mec.biz.dal.enums.DealStatusEnum;
-import com.ym.mec.biz.dal.enums.GroupType;
-import com.ym.mec.biz.dal.enums.OrderTypeEnum;
-import com.ym.mec.biz.dal.enums.PeriodEnum;
-import com.ym.mec.biz.dal.enums.PlatformCashAccountDetailTypeEnum;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.service.IdGeneratorService;
@@ -128,7 +124,7 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
 			return;
 		}
 		if(activeRemark.equals(202109)){
-			StudentPaymentOrder studentPaymentOrder = studentPaymentOrderService.findByUserAndActive(userId,activeRemark,remark);
+			StudentPaymentOrder studentPaymentOrder = studentPaymentOrderService.findByUserAndActive(userId,activeRemark,remark,null);
 			if(studentPaymentOrder != null){
 				DealStatusEnum status = studentPaymentOrder.getStatus();
 				if(status == DealStatusEnum.SUCCESS){
@@ -414,6 +410,38 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
 		return true;
 	}
 
+	@Override
+	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class,isolation = Isolation.READ_COMMITTED)
+	public Object ActiveBuy(Integer userId, Integer memberRankId, PeriodEnum month, BigDecimal amount, boolean isUseBalance, Integer buyNum, int giveNum, int activeRemark, String remark) throws Exception {
+		//判断用户是否已存在订单
+		StudentPaymentOrder applyOrder = studentPaymentOrderService.findByUserAndActive(userId,202109,remark,"ING");
+		if (applyOrder != null) {
+			// 查询订单状态
+			PayStatus payStatus = studentPaymentOrderService.queryPayStatus(applyOrder.getPaymentChannel(), applyOrder.getOrderNo(), applyOrder.getTransNo());
+			if(payStatus == PayStatus.SUCCESSED){
+				throw new BizException("订单已支付成功,请勿重复支付");
+			}else if(payStatus == PayStatus.PAYING){
+				throw new BizException("订单还在交易中,请稍后重试");
+			}
+			//处理关闭订单
+			applyOrder.setStatus(DealStatusEnum.CLOSE);
+			applyOrder.setMemo("关闭云教练活动订单");
+			if (applyOrder.getBalancePaymentAmount() != null && applyOrder.getBalancePaymentAmount().compareTo(BigDecimal.ZERO) > 0) {
+				sysUserCashAccountService.updateBalance(applyOrder.getUserId(), applyOrder.getBalancePaymentAmount(),
+						PlatformCashAccountDetailTypeEnum.REFUNDS, "购买云教练活动支付失败");
+			}
+			studentPaymentOrderService.update(applyOrder);
+		}
+		return this.buy(userId,
+				memberRankId,
+				month,
+				amount,
+				isUseBalance,
+				buyNum,
+				giveNum,
+				activeRemark,remark);
+	}
+
 	//云教练活动赠送优惠券
 	public void cloudTeacherActiveGiveCoupon(CloudTeacherOrder cloudTeacherOrder){
 		Integer activeRemark = cloudTeacherOrder.getActiveRemark();

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

@@ -113,8 +113,8 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
     }
 
     @Override
-    public StudentPaymentOrder findByUserAndActive(Integer userId, Integer activeRemark, String remark) {
-        return studentPaymentOrderDao.findByUserAndActive(userId,activeRemark,remark);
+    public StudentPaymentOrder findByUserAndActive(Integer userId, Integer activeRemark, String remark,String status) {
+        return studentPaymentOrderDao.findByUserAndActive(userId,activeRemark,remark,status);
     }
 
     @Override

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

@@ -1000,6 +1000,10 @@
         SELECT spo.* FROM cloud_teacher_order cto
         LEFT JOIN student_payment_order spo ON spo.id_ = cto.order_id_
         WHERE spo.status_ != 'FAILED' AND cto.active_remark_ = #{activeRemark}
-        AND cto.remark_ = #{remark} AND cto.student_id_ = #{userId} LIMIT 1
+        AND cto.remark_ = #{remark} AND cto.student_id_ = #{userId}
+        <if test="status != null and status != ''">
+            AND spo.status_ = #{status}
+        </if>
+        LIMIT 1
     </select>
 </mapper>

+ 13 - 5
mec-student/src/main/java/com/ym/mec/student/controller/MemberRankController.java

@@ -2,6 +2,11 @@ package com.ym.mec.student.controller;
 
 import com.ym.mec.biz.dal.dao.StudentPaymentOrderDao;
 import com.ym.mec.biz.dal.dao.SysConfigDao;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
+import com.ym.mec.biz.dal.enums.DealStatusEnum;
+import com.ym.mec.biz.dal.enums.PayStatus;
+import com.ym.mec.biz.dal.enums.PlatformCashAccountDetailTypeEnum;
+import com.ym.mec.biz.service.*;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.util.date.DateUtil;
 import io.swagger.annotations.Api;
@@ -23,10 +28,6 @@ import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.entity.MemberRankSetting;
 import com.ym.mec.biz.dal.enums.PeriodEnum;
 import com.ym.mec.biz.dal.page.CloudTeacherOrderQueryInfo;
-import com.ym.mec.biz.service.CloudTeacherOrderService;
-import com.ym.mec.biz.service.MemberFeeSettingService;
-import com.ym.mec.biz.service.MemberRankPrivilegesService;
-import com.ym.mec.biz.service.MemberRankSettingService;
 import com.ym.mec.common.controller.BaseController;
 
 @RequestMapping("memberRank")
@@ -50,6 +51,12 @@ public class MemberRankController extends BaseController {
 	private SysUserFeignService sysUserFeignService;
 
 	@Autowired
+	private StudentPaymentOrderService studentPaymentOrderService;
+
+	@Autowired
+	private SysUserCashAccountService sysUserCashAccountService;
+
+	@Autowired
 	private SysConfigDao sysConfigDao;
 
 	@ApiOperation(value = "获取所有的收费标准")
@@ -97,10 +104,11 @@ public class MemberRankController extends BaseController {
 		if (sysUser == null) {
 			return failed(HttpStatus.FORBIDDEN, "请登录");
 		}
+
 		//买2赠1、买3赠2
 		int giveNum = buyNum == 2?1:buyNum == 3?2:0;
 		String remark = buyNum == 2?"2赠1":buyNum == 3?"3赠2":buyNum == 1?"单月":"其他";
-		return succeed(memberRankSettingService.buy(sysUser.getId(),
+		return succeed(memberRankSettingService.ActiveBuy(sysUser.getId(),
 				memberRankId,
 				PeriodEnum.MONTH,
 				amount,

+ 1 - 1
mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupController.java

@@ -378,7 +378,7 @@ public class MusicGroupController extends BaseController {
         if (err != null) {
             return failed(err + "不可缴费,请联系教务老师");
         }
-        Integer userId = studentRegistration.getUserId();
+//        Integer userId = studentRegistration.getUserId();
         /*StudentPaymentOrder ApplyOrder = studentPaymentOrderService.findMusicGroupApplyOrderByStatus(userId, studentRegistration.getMusicGroupId(), DealStatusEnum.SUCCESS);
         if (ApplyOrder != null) {
             return failed("您已支付成功,请勿重复支付");