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. 18
      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 java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
@Data
public class OrderBO extends MchConfigEntity implements Serializable {
// 销售单据号
private String billId;
// 是否合并销售单据标志
private Boolean mergeFlag;
// 销售单据号:可用逗号分隔
private String billIds;
// 订单金额
private BigDecimal amount;
// 销售单
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已失效,请重新登录!"),
MERCHANT_CONFIGURE_FAIL("RBS00011","商户支付信息配置失败!"),
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 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.RestController;
import java.util.List;
@RestController
@Slf4j
@Api(tags="支付管理")
@ -42,6 +44,16 @@ public class PaymentController {
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 = "微信退款")
@GetMapping("/refund")
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;
import com.base.springcloud.entity.SaleBill;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.math.BigDecimal;
import java.util.List;
@Repository
public interface SaleBillMapper {
@ -21,4 +25,7 @@ public interface SaleBillMapper {
SaleBill queryBillInfo(SaleBill saleBill);
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(){
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.entity.SaleBill;
import java.math.BigDecimal;
public interface BillService {
/**
@ -18,4 +20,10 @@ public interface BillService {
* @return
*/
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
*/
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.SaleBillBO;
import com.base.springcloud.constant.ErrorConstant;
import com.base.springcloud.constant.PaymentConstant;
import com.base.springcloud.dao.SaleBillMapper;
import com.base.springcloud.entity.SaleBill;
import com.base.springcloud.service.BillService;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.List;
import java.util.Optional;
@Service
@ -31,11 +32,12 @@ public class BillServiceImp implements BillService {
@Override
public void billCheck(OrderBO orderBO) {
SaleBill saleBill = new SaleBill();
saleBill.setId(orderBO.getBillId());
saleBill.setId(orderBO.getBillIds());
SaleBill queryResult = saleBillMapper.queryBillInfo(saleBill);
if(!Optional.ofNullable(queryResult).isPresent()){
throw new BusinessException(ErrorConstant.BILL_INVALID);
}
orderBO.setAmount(queryResult.getTotalAmount());
orderBO.setSaleBill(queryResult);
}
@ -53,4 +55,23 @@ public class BillServiceImp implements BillService {
if(count > 0) return;
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
public void registerOrder(OrderBO orderBO) {
SaleBill saleBill = orderBO.getSaleBill();
BigDecimal amount = saleBill.getTotalAmount();
BigDecimal amount = orderBO.getAmount();
if(amount.compareTo(BigDecimal.ZERO) <= 0){
throw new BusinessException(ErrorConstant.BILL_AMOUNT_ERR);
}

18
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.service.*;
import com.base.springcloud.util.DecimalUtil;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -32,14 +33,14 @@ public class PaymentServiceImp implements PaymentService {
@Autowired
private WecPaymentService wecPaymentService;
//@Autowired
//private AmqpTemplate amqpTemplate;
@Override
public String placeOrder(OrderBO orderBO){
// 参数检查
parameterCheck(orderBO);
if(orderBO.getMergeFlag())
// 销售单据合并
billService.mergeBillAmount(orderBO);
else
// 销售单据核查
billService.billCheck(orderBO);
// 查询商户支付信息配置
@ -90,6 +91,15 @@ public class PaymentServiceImp implements PaymentService {
billService.writeOffBill(saleBillBO);
}
/**
* 退款订单信息查询
* @param date
*/
@Override
public void syncRefundInfo(Date date) {
}
// 参数检查
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){
OrderBO orderBO = new OrderBO();
orderBO.setBillId(billId);
orderBO.setBillIds(billId);
orderBO.setMergeFlag(false);
orderBO.setMchId(PaymentConstant.DEFAULT_MCH_ID);
return orderBO;
}
@ -51,4 +52,22 @@ public class ParameterUtil {
refundBO.setBillId(billId);
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}
where id = #{id,jdbcType=VARCHAR}
</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>
Loading…
Cancel
Save