|
@@ -1,8 +1,7 @@
|
|
|
package com.qs.mp.pay.service.impl;
|
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
-import com.qs.mp.common.enums.PayOrderTypeEnum;
|
|
|
+import com.qs.mp.common.enums.BizTypeEnum;
|
|
|
import com.qs.mp.common.utils.DateUtils;
|
|
|
import com.qs.mp.common.utils.LogUtil;
|
|
|
import com.qs.mp.common.utils.StringUtils;
|
|
@@ -11,13 +10,13 @@ import com.qs.mp.pay.domain.PayOrder;
|
|
|
import com.qs.mp.pay.service.IPayOrderService;
|
|
|
import com.qs.mp.pay.service.IWalletService;
|
|
|
import com.qs.mp.system.service.id.BizIdGenerator;
|
|
|
-import java.util.List;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.scheduling.annotation.Async;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
/**
|
|
|
* @auther duota
|
|
@@ -54,15 +53,10 @@ public class WalletServiceImpl implements IWalletService {
|
|
|
private static final String PAY_RESOURCE_TYPE = "1017"; //2:微信小程序
|
|
|
|
|
|
@Override
|
|
|
- public JSONObject merchRechargeOrderCreate(String custId,String merchId,String refType,String refId,String openId, int money) {
|
|
|
+ public JSONObject channelPay(BizTypeEnum bizType, String bizId, String openId, int money) {
|
|
|
String reqUrl = baseUrl+"/pay/payMoneyCTB";
|
|
|
JSONObject params = new JSONObject();
|
|
|
- //merchid不为空,则为商户充值,如果merchid为空,则为客户充值
|
|
|
- //查询客户三方支付信息
|
|
|
- // 客户充值的商户号和签名为平台
|
|
|
- params = buildPayOrderReqData(payShopNo, paySign, money, openId);
|
|
|
-
|
|
|
-
|
|
|
+ params = buildPayOrderReqData(payShopNo, paySign, money, openId);
|
|
|
String result = OkHttpUtil.postJsonParams(reqUrl,params.toJSONString());
|
|
|
logger.info("request params:"+ params.toJSONString()+" result:"+result);
|
|
|
if(StringUtils.isBlank(result)){
|
|
@@ -79,20 +73,15 @@ public class WalletServiceImpl implements IWalletService {
|
|
|
PayOrder payOrder = buildPayOrder(params);
|
|
|
payOrder.setOrderId(resultJson.getString("shop_order_no"));
|
|
|
payOrder.setOrderNo(orderNo);
|
|
|
- payOrder.setCustId(custId);
|
|
|
payOrder.setCode(code);
|
|
|
- //logger.info("++++++++++++++++++++++++++++++++order type:"+OrderTypeEnum.ORDER_MERCH_RECHARGE.getValue().intValue());
|
|
|
- //payOrder.setOrderType(OrderTypeEnum.ORDER_MERCH_RECHARGE.getValue());
|
|
|
- if(!StringUtils.isBlank(refType) && refType.equalsIgnoreCase(String.valueOf(PayOrderTypeEnum.ORDER_MERCH_RECHARGE.getValue()))){
|
|
|
- payOrder.setOrderType(PayOrderTypeEnum.ORDER_MERCH_RECHARGE.getValue()); //商户账单支付
|
|
|
- payOrder.setOrderTypeRefId(refId);
|
|
|
- }
|
|
|
- payOrder.setOrderstatus(orderstatus);
|
|
|
+ payOrder.setBizType(bizType);
|
|
|
+ payOrder.setBizId(bizId);
|
|
|
+ payOrder.setStatus(orderstatus);
|
|
|
boolean ret = payOrderService.save(payOrder);
|
|
|
if(ret){
|
|
|
return data;
|
|
|
}else{
|
|
|
- LogUtil.error(logger,"充值订单数据库保存失败.");
|
|
|
+ LogUtil.error(logger,"渠道支付订单数据库保存失败.");
|
|
|
}
|
|
|
}
|
|
|
return null;
|
|
@@ -103,7 +92,7 @@ public class WalletServiceImpl implements IWalletService {
|
|
|
public void payOrderStatusHandle(String orderNo) {
|
|
|
//查询统一支付订单表,查询订单类型,然后根据不同类型做对应的逻辑处理
|
|
|
//查询支付状态为1:支付成功,2:订单创建成功,等待支付。
|
|
|
- LambdaQueryWrapper<PayOrder> wrapper = new LambdaQueryWrapper();
|
|
|
+ /*LambdaQueryWrapper<PayOrder> wrapper = new LambdaQueryWrapper();
|
|
|
wrapper.eq(PayOrder::getOrderId,orderNo);
|
|
|
wrapper.eq(PayOrder::getOrderstatus,"1");
|
|
|
List<PayOrder> payOrderList = payOrderService.list(wrapper);
|
|
@@ -121,7 +110,7 @@ public class WalletServiceImpl implements IWalletService {
|
|
|
else{
|
|
|
//数据结构异常,告警
|
|
|
LogUtil.error(logger,"该业务单据类型未支持,orderNo:"+orderNo);
|
|
|
- }
|
|
|
+ }*/
|
|
|
}
|
|
|
|
|
|
|
|
@@ -170,4 +159,75 @@ public class WalletServiceImpl implements IWalletService {
|
|
|
sendData.put("app_id", appId);
|
|
|
return sendData;
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional
|
|
|
+ public boolean merchRecharge(PayOrder payOrder) {
|
|
|
+ /*String merchId = payOrder.getOrderTypeRefId();
|
|
|
+ String orderNo = payOrder.getOrderNo();
|
|
|
+ //根据订单类型,查询商户ID
|
|
|
+ if(PayOrderTypeEnum.ORDER_MRARCH_BILL.getValue() == payOrder.getOrderType().intValue()){
|
|
|
+ //商户支付订单,查询商户信息
|
|
|
+ MerchantBill merchantBill = merchantBillService.getById(payOrder.getOrderTypeRefId());
|
|
|
+ if(merchantBill == null){
|
|
|
+ LogUtil.error(logger,"账单不存在.billId:"+payOrder.getOrderTypeRefId());
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ merchId = merchantBill.getMerchId();
|
|
|
+ }
|
|
|
+ //查询资金流水表,是否存在重复订单号
|
|
|
+ LambdaQueryWrapper<MerchantMoneyLog> logWrapper = new LambdaQueryWrapper<>();
|
|
|
+ logWrapper.eq(MerchantMoneyLog::getRefId, orderNo);
|
|
|
+ logWrapper.eq(MerchantMoneyLog::getMerchId, merchId);
|
|
|
+ logWrapper.eq(MerchantMoneyLog::getRefType, payOrder.getOrderType());
|
|
|
+ List<MerchantMoneyLog> logList = merchantMoneyLogService.list(logWrapper);
|
|
|
+ if (logList.size() == 0) {
|
|
|
+ Merchant merchant = merchantService.getById(merchId);
|
|
|
+ if(null == merchant){
|
|
|
+ LogUtil.error(logger,"商户不存在.merchId:"+merchId);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ MerchantMoneyLog merchantMoneyLog = new MerchantMoneyLog();
|
|
|
+ merchantMoneyLog.setBizTime(
|
|
|
+ DateUtils.parseStrToDate(payOrder.getCompleteDate(), DateUtils.YYYY_MM_DD_HH_MM_SS));
|
|
|
+ merchantMoneyLog.setMerchId(merchId); //商户ID
|
|
|
+ merchantMoneyLog.setType(MerchantMoneyEnum.TYPE_RECHARGE);
|
|
|
+ merchantMoneyLog.setCustId(payOrder.getCustId()); //客户ID
|
|
|
+ merchantMoneyLog.setStoreId(merchant.getStoreId());
|
|
|
+ merchantMoneyLog.setLogMoney(payOrder.getTransactionAmount()); //交易金额
|
|
|
+ merchantMoneyLog.setRefId(payOrder.getOrderId()); //订单ID,全局唯一
|
|
|
+ merchantMoneyLog.setRefType(payOrder.getOrderType()); //单据类型
|
|
|
+ boolean result = merchantMoneyLogService.changeMerchantMoney(merchantMoneyLog);
|
|
|
+ Customer customer = customerService.getById(merchantMoneyLog.getCustId());
|
|
|
+ // 客户中配置了提现卡号,则认为是充值到了平台账户
|
|
|
+ if (null != customer && StringUtils.isNotBlank(customer.getBankCardNo())) {
|
|
|
+ CustomerMoneyLog customerMoneyLog = new CustomerMoneyLog();
|
|
|
+ customerMoneyLog.setBizTime(merchantMoneyLog.getBizTime());
|
|
|
+ customerMoneyLog.setType(CustomerMoneyTypeEnum.MERCH_RECHARGE);
|
|
|
+ customerMoneyLog.setCustId(merchantMoneyLog.getCustId());
|
|
|
+ customerMoneyLog.setLogMoney(merchantMoneyLog.getLogMoney());
|
|
|
+ customerMoneyLog.setIncomeExpense(MerchantMoneyEnum.INCOME);
|
|
|
+ customerMoneyLog.setRefId(payOrder.getOrderId());
|
|
|
+ customerMoneyLog.setRefType(CustomerMoneyTypeEnum.MERCH_RECHARGE.getValue());
|
|
|
+ Store store = storeService.getById(merchant.getStoreId());
|
|
|
+ customerMoneyLog.setLogText(merchant.getBrand() + "-" + store.getName());
|
|
|
+ customerMoneyLogService.changeCustomerMoney(customerMoneyLog);
|
|
|
+ }
|
|
|
+ if (result) {
|
|
|
+ //充值成功,给订阅者发送消息
|
|
|
+ try {
|
|
|
+ pulsarClientService.producer(MqTopicType.merch_recharge, JSONObject.toJSONString(merchantMoneyLog));
|
|
|
+ } catch (PulsarClientException e) {
|
|
|
+ LogUtil.error(logger,"发送异步消息失败.",e);
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ //Todo 数据结构异常,告警
|
|
|
+ LogUtil.error(logger,"数据结构异常,违反唯一约束,orderNo:"+orderNo);
|
|
|
+ return false;
|
|
|
+ }*/
|
|
|
+ return false;
|
|
|
+ }
|
|
|
}
|