Browse Source

feat 0 支付工程

devlop
yang_shj 4 years ago
parent
commit
7fd3cd75a8
  1. 12
      payment-base-app/src/main/java/com/base/springcloud/bo/OrderBO.java
  2. 3
      payment-base-app/src/main/java/com/base/springcloud/constant/ErrorConstant.java
  3. 12
      payment-base-app/src/main/java/com/base/springcloud/controller/PaymentController.java
  4. 7
      payment-base-app/src/main/java/com/base/springcloud/dao/SaleBillMapper.java
  5. 6
      payment-base-app/src/main/java/com/base/springcloud/schedule/OrderTask.java
  6. 8
      payment-base-app/src/main/java/com/base/springcloud/service/BillService.java
  7. 6
      payment-base-app/src/main/java/com/base/springcloud/service/PaymentService.java
  8. 25
      payment-base-app/src/main/java/com/base/springcloud/service/imp/BillServiceImp.java
  9. 2
      payment-base-app/src/main/java/com/base/springcloud/service/imp/OrderServiceImp.java
  10. 22
      payment-base-app/src/main/java/com/base/springcloud/service/imp/PaymentServiceImp.java
  11. 21
      payment-base-app/src/main/java/com/base/springcloud/util/ParameterUtil.java
  12. 9
      payment-base-app/src/main/resources/com/base/payment/mapper/SaleBillMapper.xml

12
payment-base-app/src/main/java/com/base/springcloud/bo/OrderBO.java

@ -6,12 +6,20 @@ import com.base.springcloud.entity.SaleBill;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
@Data @Data
public class OrderBO extends MchConfigEntity implements Serializable { public class OrderBO extends MchConfigEntity implements Serializable {
// 销售单据号 // 是否合并销售单据标志
private String billId; private Boolean mergeFlag;
// 销售单据号:可用逗号分隔
private String billIds;
// 订单金额
private BigDecimal amount;
// 销售单 // 销售单
private SaleBill saleBill; private SaleBill saleBill;

3
payment-base-app/src/main/java/com/base/springcloud/constant/ErrorConstant.java

@ -15,7 +15,8 @@ public enum ErrorConstant {
TOKEN_EXPIRATION_DATE("RBS00010","TOKEN已失效,请重新登录!"), TOKEN_EXPIRATION_DATE("RBS00010","TOKEN已失效,请重新登录!"),
MERCHANT_CONFIGURE_FAIL("RBS00011","商户支付信息配置失败!"), MERCHANT_CONFIGURE_FAIL("RBS00011","商户支付信息配置失败!"),
USER_DEPART_RELATION_NEED("RBS00012","请用户先关联部门信息!"), USER_DEPART_RELATION_NEED("RBS00012","请用户先关联部门信息!"),
SAVE_PAY_DEPART_CONFIG_FAIL("RBS00013","添加部门商户支付配置信息失败!"); SAVE_PAY_DEPART_CONFIG_FAIL("RBS00013","添加部门商户支付配置信息失败!"),
SALE_BILL__INVALID("RBS00014","无有效销售单据!");
private String code; private String code;
private String message; private String message;

12
payment-base-app/src/main/java/com/base/springcloud/controller/PaymentController.java

@ -18,6 +18,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController @RestController
@Slf4j @Slf4j
@Api(tags="支付管理") @Api(tags="支付管理")
@ -42,6 +44,16 @@ public class PaymentController {
return new ReportResult(parameterUtil.nativePlaceOrderAfter(codeUrl)); return new ReportResult(parameterUtil.nativePlaceOrderAfter(codeUrl));
} }
@ApiOperation(value = "销售单合并native下单", notes = "销售单合并native下单")
@LoginRequired(department=true)
@GetMapping("/mergeNative")
public ReportResult mergeNative(@RequestParam String billIds) {
OrderBO orderBO = parameterUtil.mergeNativeBefore(billIds);
String codeUrl = paymentService.placeOrder(orderBO);
return new ReportResult(parameterUtil.mergeNativeAfter(codeUrl));
}
@ApiOperation(value = "退款", notes = "微信退款") @ApiOperation(value = "退款", notes = "微信退款")
@GetMapping("/refund") @GetMapping("/refund")
public CommonResult refund(@RequestParam String billId) { public CommonResult refund(@RequestParam String billId) {

7
payment-base-app/src/main/java/com/base/springcloud/dao/SaleBillMapper.java

@ -1,8 +1,12 @@
package com.base.springcloud.dao; package com.base.springcloud.dao;
import com.base.springcloud.entity.SaleBill; import com.base.springcloud.entity.SaleBill;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.math.BigDecimal;
import java.util.List;
@Repository @Repository
public interface SaleBillMapper { public interface SaleBillMapper {
@ -21,4 +25,7 @@ public interface SaleBillMapper {
SaleBill queryBillInfo(SaleBill saleBill); SaleBill queryBillInfo(SaleBill saleBill);
int writeOffBill(SaleBill bill); int writeOffBill(SaleBill bill);
// 合并销售单据金额
List<BigDecimal> mergeBillAmount(@Param("ids") String[] billIdArray);
} }

6
payment-base-app/src/main/java/com/base/springcloud/schedule/OrderTask.java

@ -21,4 +21,10 @@ public class OrderTask {
public void syncOrderInfo(){ public void syncOrderInfo(){
paymentService.syncOrderInfo(new Date()); paymentService.syncOrderInfo(new Date());
} }
@Scheduled(fixedDelay = 30 * 6000)
public void syncRefundInfo(){
paymentService.syncRefundInfo(new Date());
}
} }

8
payment-base-app/src/main/java/com/base/springcloud/service/BillService.java

@ -4,6 +4,8 @@ import com.base.springcloud.bo.OrderBO;
import com.base.springcloud.bo.SaleBillBO; import com.base.springcloud.bo.SaleBillBO;
import com.base.springcloud.entity.SaleBill; import com.base.springcloud.entity.SaleBill;
import java.math.BigDecimal;
public interface BillService { public interface BillService {
/** /**
@ -18,4 +20,10 @@ public interface BillService {
* @return * @return
*/ */
void writeOffBill(SaleBillBO saleBillBO); void writeOffBill(SaleBillBO saleBillBO);
/**
* 合并销售单据金额
* @param orderBO
*/
void mergeBillAmount(OrderBO orderBO);
} }

6
payment-base-app/src/main/java/com/base/springcloud/service/PaymentService.java

@ -24,4 +24,10 @@ public interface PaymentService {
* @param orderBO * @param orderBO
*/ */
void queryOrder(OrderBO orderBO); void queryOrder(OrderBO orderBO);
/**
* 退款订单查询
* @param
*/
void syncRefundInfo(Date date);
} }

25
payment-base-app/src/main/java/com/base/springcloud/service/imp/BillServiceImp.java

@ -4,16 +4,17 @@ import com.base.springcloud.aspect.annotation.BusinessException;
import com.base.springcloud.bo.OrderBO; import com.base.springcloud.bo.OrderBO;
import com.base.springcloud.bo.SaleBillBO; import com.base.springcloud.bo.SaleBillBO;
import com.base.springcloud.constant.ErrorConstant; import com.base.springcloud.constant.ErrorConstant;
import com.base.springcloud.constant.PaymentConstant;
import com.base.springcloud.dao.SaleBillMapper; import com.base.springcloud.dao.SaleBillMapper;
import com.base.springcloud.entity.SaleBill; import com.base.springcloud.entity.SaleBill;
import com.base.springcloud.service.BillService; import com.base.springcloud.service.BillService;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List;
import java.util.Optional; import java.util.Optional;
@Service @Service
@ -31,11 +32,12 @@ public class BillServiceImp implements BillService {
@Override @Override
public void billCheck(OrderBO orderBO) { public void billCheck(OrderBO orderBO) {
SaleBill saleBill = new SaleBill(); SaleBill saleBill = new SaleBill();
saleBill.setId(orderBO.getBillId()); saleBill.setId(orderBO.getBillIds());
SaleBill queryResult = saleBillMapper.queryBillInfo(saleBill); SaleBill queryResult = saleBillMapper.queryBillInfo(saleBill);
if(!Optional.ofNullable(queryResult).isPresent()){ if(!Optional.ofNullable(queryResult).isPresent()){
throw new BusinessException(ErrorConstant.BILL_INVALID); throw new BusinessException(ErrorConstant.BILL_INVALID);
} }
orderBO.setAmount(queryResult.getTotalAmount());
orderBO.setSaleBill(queryResult); orderBO.setSaleBill(queryResult);
} }
@ -53,4 +55,23 @@ public class BillServiceImp implements BillService {
if(count > 0) return; if(count > 0) return;
throw new BusinessException(ErrorConstant.BILL_WRITE_OFF_FAIL); throw new BusinessException(ErrorConstant.BILL_WRITE_OFF_FAIL);
} }
/**
* 销售单据合并
* @param orderBO
*/
@Override
public void mergeBillAmount(OrderBO orderBO) {
String billIds = orderBO.getBillIds();
if(StringUtils.isBlank(billIds)){
throw new BusinessException(ErrorConstant.NULL_OBJ);
}
String[] billIdArray = billIds.split(",");
List<BigDecimal> billAmountList = saleBillMapper.mergeBillAmount(billIdArray);
if(!Optional.ofNullable(billAmountList).isPresent())
throw new BusinessException(ErrorConstant.SALE_BILL__INVALID);
BigDecimal orderAmount = new BigDecimal(0);
billAmountList.forEach(amount-> orderAmount.add(amount));
orderBO.setAmount(orderAmount);
}
} }

2
payment-base-app/src/main/java/com/base/springcloud/service/imp/OrderServiceImp.java

@ -28,7 +28,7 @@ public class OrderServiceImp implements OrderService {
@Override @Override
public void registerOrder(OrderBO orderBO) { public void registerOrder(OrderBO orderBO) {
SaleBill saleBill = orderBO.getSaleBill(); SaleBill saleBill = orderBO.getSaleBill();
BigDecimal amount = saleBill.getTotalAmount(); BigDecimal amount = orderBO.getAmount();
if(amount.compareTo(BigDecimal.ZERO) <= 0){ if(amount.compareTo(BigDecimal.ZERO) <= 0){
throw new BusinessException(ErrorConstant.BILL_AMOUNT_ERR); throw new BusinessException(ErrorConstant.BILL_AMOUNT_ERR);
} }

22
payment-base-app/src/main/java/com/base/springcloud/service/imp/PaymentServiceImp.java

@ -5,6 +5,7 @@ import com.base.springcloud.bo.SaleBillBO;
import com.base.springcloud.entity.Order; import com.base.springcloud.entity.Order;
import com.base.springcloud.service.*; import com.base.springcloud.service.*;
import com.base.springcloud.util.DecimalUtil; import com.base.springcloud.util.DecimalUtil;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -32,16 +33,16 @@ public class PaymentServiceImp implements PaymentService {
@Autowired @Autowired
private WecPaymentService wecPaymentService; private WecPaymentService wecPaymentService;
//@Autowired
//private AmqpTemplate amqpTemplate;
@Override @Override
public String placeOrder(OrderBO orderBO){ public String placeOrder(OrderBO orderBO){
// 参数检查 // 参数检查
parameterCheck(orderBO); parameterCheck(orderBO);
// 销售单据核查 if(orderBO.getMergeFlag())
billService.billCheck(orderBO); // 销售单据合并
billService.mergeBillAmount(orderBO);
else
// 销售单据核查
billService.billCheck(orderBO);
// 查询商户支付信息配置 // 查询商户支付信息配置
merchantService.claimMerchantConfig(orderBO); merchantService.claimMerchantConfig(orderBO);
// 登记订单 // 登记订单
@ -90,6 +91,15 @@ public class PaymentServiceImp implements PaymentService {
billService.writeOffBill(saleBillBO); billService.writeOffBill(saleBillBO);
} }
/**
* 退款订单信息查询
* @param date
*/
@Override
public void syncRefundInfo(Date date) {
}
// 参数检查 // 参数检查
private void parameterCheck(OrderBO orderBO) { private void parameterCheck(OrderBO orderBO) {
} }

21
payment-base-app/src/main/java/com/base/springcloud/util/ParameterUtil.java

@ -20,7 +20,8 @@ public class ParameterUtil {
*/ */
public OrderBO nativePlaceOrderBefore(String billId){ public OrderBO nativePlaceOrderBefore(String billId){
OrderBO orderBO = new OrderBO(); OrderBO orderBO = new OrderBO();
orderBO.setBillId(billId); orderBO.setBillIds(billId);
orderBO.setMergeFlag(false);
orderBO.setMchId(PaymentConstant.DEFAULT_MCH_ID); orderBO.setMchId(PaymentConstant.DEFAULT_MCH_ID);
return orderBO; return orderBO;
} }
@ -51,4 +52,22 @@ public class ParameterUtil {
refundBO.setBillId(billId); refundBO.setBillId(billId);
return refundBO; return refundBO;
} }
public OrderBO mergeNativeBefore(String billIds) {
OrderBO orderBO = new OrderBO();
orderBO.setMergeFlag(true);
orderBO.setBillIds(billIds);
return orderBO;
}
public List mergeNativeAfter(String codeUrl) {
if(StringUtils.isBlank(codeUrl)){
return null;
}
List<NativePlaceOrderDTO> nativePlaceOrderDTOList = new ArrayList<>();
NativePlaceOrderDTO nativePlaceOrderDTO = new NativePlaceOrderDTO();
nativePlaceOrderDTO.setCodeUrl(codeUrl);
nativePlaceOrderDTOList.add(nativePlaceOrderDTO);
return nativePlaceOrderDTOList;
}
} }

9
payment-base-app/src/main/resources/com/base/payment/mapper/SaleBillMapper.xml

@ -543,4 +543,13 @@
pay_amount = pay_amount + #{payAmount,jdbcType=DECIMAL} pay_amount = pay_amount + #{payAmount,jdbcType=DECIMAL}
where id = #{id,jdbcType=VARCHAR} where id = #{id,jdbcType=VARCHAR}
</update> </update>
<select id="mergeBillAmount" resultType="java.math.BigDecimal">
select total_amount
from stk_io_bill
where id in
<foreach collection="ids" item="item" open="(" separator="," close=")">
#{item,jdbcType=VARCHAR}
</foreach>
</select>
</mapper> </mapper>
Loading…
Cancel
Save