zouxuan 3 gadi atpakaļ
vecāks
revīzija
bee5cda07a

+ 59 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/SubjectChangeParamDto.java

@@ -0,0 +1,59 @@
+package com.ym.mec.biz.dal.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+public class SubjectChangeParamDto{
+    private Integer id;
+
+    private BigDecimal amount;
+
+    private Boolean isUseBalancePayment = false;
+
+    private Boolean isRepay = false;
+
+    @ApiModelProperty(value = "优惠券列表", required = false)
+    private List<Integer> couponIdList;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public BigDecimal getAmount() {
+        return amount;
+    }
+
+    public void setAmount(BigDecimal amount) {
+        this.amount = amount;
+    }
+
+    public Boolean getUseBalancePayment() {
+        return isUseBalancePayment;
+    }
+
+    public void setUseBalancePayment(Boolean useBalancePayment) {
+        isUseBalancePayment = useBalancePayment;
+    }
+
+    public Boolean getRepay() {
+        return isRepay;
+    }
+
+    public void setRepay(Boolean repay) {
+        isRepay = repay;
+    }
+
+    public List<Integer> getCouponIdList() {
+        return couponIdList;
+    }
+
+    public void setCouponIdList(List<Integer> couponIdList) {
+        this.couponIdList = couponIdList;
+    }
+}

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

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.service;
 
+import com.ym.mec.biz.dal.dto.SubjectChangeParamDto;
 import com.ym.mec.biz.dal.entity.SellOrder;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
 import com.ym.mec.biz.dal.entity.SubjectChange;
@@ -24,7 +25,7 @@ public interface SubjectChangeService extends BaseService<Integer, SubjectChange
      * @param isUseBalancePayment
      * @return
      */
-    Map payChange(Integer id, BigDecimal amount, Boolean isUseBalancePayment,Boolean isRepay) throws Exception;
+    Map payChange(SubjectChangeParamDto subjectChangeParamDto) throws Exception;
 
     /**
      * 添加声部更换

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

@@ -3,6 +3,7 @@ package com.ym.mec.biz.service.impl;
 import static com.ym.mec.biz.dal.enums.DealStatusEnum.SUCCESS;
 
 import com.ym.mec.biz.dal.dao.*;
+import com.ym.mec.biz.dal.dto.SubjectChangeParamDto;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.page.SubjectChangeQueryInfo;
@@ -114,10 +115,10 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public Map payChange(Integer id, BigDecimal viewAmount, Boolean isUseBalancePayment, Boolean isRepay) throws Exception {
+    public Map payChange(SubjectChangeParamDto subjectChangeParamDto) throws Exception {
         Date date = new Date();
-        SubjectChange subjectChange = subjectChangeDao.get(id);
-        if (isRepay) {
+        SubjectChange subjectChange = subjectChangeDao.get(subjectChangeParamDto.getId());
+        if (subjectChangeParamDto.getRepay()) {
             StudentPaymentOrder studentPaymentOrder = studentPaymentOrderService.get(subjectChange.getOrderId().longValue());
             
             if(studentPaymentOrder != null && studentPaymentOrder.getStatus() == DealStatusEnum.ING){
@@ -160,13 +161,12 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
 
         String channelType = "";
 
-        StudentPaymentOrder studentPaymentOrder = new StudentPaymentOrder();
+        StudentPaymentOrder studentPaymentOrder = sysCouponCodeService.use(subjectChangeParamDto.getCouponIdList(),amount,true);
+        amount = studentPaymentOrder.getActualAmount();
         studentPaymentOrder.setUserId(subjectChange.getStudentId());
         studentPaymentOrder.setGroupType(GroupType.SUBJECT_CHANGE);
         studentPaymentOrder.setOrderNo(orderNo);
         studentPaymentOrder.setType(OrderTypeEnum.SUBJECT_CHANGE);
-        studentPaymentOrder.setExpectAmount(amount);
-        studentPaymentOrder.setActualAmount(amount);
         studentPaymentOrder.setStatus(DealStatusEnum.ING);
         studentPaymentOrder.setMusicGroupId(subjectChange.getId().toString());
         studentPaymentOrder.setPaymentChannel("BALANCE");
@@ -186,12 +186,12 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
         }
 
         studentPaymentOrder.setVersion(0);
-        if (amount.compareTo(viewAmount) != 0) {
+        if (amount.compareTo(subjectChangeParamDto.getAmount()) != 0) {
             throw new BizException("价格异常");
         }
 
         BigDecimal balance = BigDecimal.ZERO;
-        if (isUseBalancePayment != null && isUseBalancePayment && amount.compareTo(BigDecimal.ZERO) > 0) {
+        if (subjectChangeParamDto.getUseBalancePayment() && amount.compareTo(BigDecimal.ZERO) > 0) {
             SysUserCashAccount userCashAccount = sysUserCashAccountService.getLocked(subjectChange.getStudentId());
             if (userCashAccount == null) {
                 throw new BizException("用户账户找不到");
@@ -204,7 +204,7 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
                 sysUserCashAccountService.updateBalance(subjectChange.getStudentId(), balance.negate(), PlatformCashAccountDetailTypeEnum.PAY_FEE, "乐器维修");
             }
         }
-        if (amount.compareTo(viewAmount) != 0) {
+        if (amount.compareTo(subjectChangeParamDto.getAmount()) != 0) {
             throw new BizException("价格异常");
         }
         studentPaymentOrderService.update(studentPaymentOrder);

+ 6 - 12
mec-student/src/main/java/com/ym/mec/student/controller/SubjectChangeController.java

@@ -1,6 +1,7 @@
 package com.ym.mec.student.controller;
 
 import com.ym.mec.biz.dal.dao.SubjectChangeDao;
+import com.ym.mec.biz.dal.dto.SubjectChangeParamDto;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
 import com.ym.mec.biz.dal.entity.SubjectChange;
 import com.ym.mec.biz.dal.enums.PayStatus;
@@ -19,10 +20,7 @@ import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.math.BigDecimal;
 import java.util.Map;
@@ -52,13 +50,9 @@ public class SubjectChangeController extends BaseController {
 
     @ApiOperation(value = "支付更换声部费用")
     @PostMapping("/payChange")
-    @ApiImplicitParams({@ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Integer"),
-            @ApiImplicitParam(name = "金额", value = "amount", required = true, dataType = "BigDecimal"),
-            @ApiImplicitParam(name = "是否使余额", value = "isUseBalancePayment", required = true, dataType = "Boolean")
-    })
-    public HttpResponseResult<Map> payChange(Integer id, BigDecimal amount, Boolean isUseBalancePayment, Boolean isRepay) throws Exception {
-        SubjectChange subjectChange = subjectChangeDao.get(id);
-        if (!isRepay && subjectChange.getStatus().equals(SubjectChangeStatusEnum.ING)) {
+    public HttpResponseResult<Map> payChange(@RequestBody SubjectChangeParamDto subjectChangeParamDto) throws Exception {
+        SubjectChange subjectChange = subjectChangeDao.get(subjectChangeParamDto.getId());
+        if (!subjectChangeParamDto.getRepay() && subjectChange.getStatus().equals(SubjectChangeStatusEnum.ING)) {
         	
             StudentPaymentOrder applyOrder = studentPaymentOrderService.get(subjectChange.getOrderId().longValue());
         	// 查询订单状态
@@ -70,7 +64,7 @@ public class SubjectChangeController extends BaseController {
         	}
             return failed(HttpStatus.CONTINUE, "您有待支付的订单");
         }
-        Map payMap = subjectChangeService.payChange(id, amount, isUseBalancePayment, isRepay);
+        Map payMap = subjectChangeService.payChange(subjectChangeParamDto);
         if (payMap.containsKey("tradeState")) {
             return failed(HttpStatus.CREATED, payMap, "恭喜您,支付成功!");
         }