TRX 1 yıl önce
ebeveyn
işleme
a00b54a9cf

+ 2 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/payment/ExpenseFlow.java

@@ -57,6 +57,7 @@ public class ExpenseFlow extends SuperMain {
     @Indexed
     private String paymentWay;
 
+    @Indexed
     @Schema(description = "支付方式")
     private PaymentType paymentType;
 
@@ -128,6 +129,7 @@ public class ExpenseFlow extends SuperMain {
     @Schema(description = "消费订单号")
     private String orderNo;
 
+    @Indexed
     @Schema(description = "支付订单号")
     private String paymentNo;
 

+ 1 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/payment/OrderNoInfo.java

@@ -26,6 +26,7 @@ import java.util.Date;
 @NonLeaked
 public class OrderNoInfo extends SuperMain {
 
+    @Indexed
     @Schema(description = "支付订单号")
     private String paymentNo;
 

+ 3 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/payment/PaymentProcess.java

@@ -7,6 +7,7 @@ import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 import org.checkerframework.common.aliasing.qual.NonLeaked;
+import org.springframework.data.mongodb.core.index.Indexed;
 import org.springframework.data.mongodb.core.mapping.DBRef;
 import org.springframework.data.mongodb.core.mapping.Document;
 
@@ -25,9 +26,11 @@ public class PaymentProcess extends SuperMain {
     @DBRef(lazy = true)
     private ExpenseFlow expenseFlow;
 
+    @Indexed
     @Schema(description = "订单号")
     private String paymentNo;
 
+    @Indexed
     @Schema(description = "支付渠道")
     private PaymentType paymentType;
 

+ 57 - 54
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/pay/ChinaumsSenselessPayService.java

@@ -69,28 +69,28 @@ public class ChinaumsSenselessPayService extends SuperService {
     ShareOrderDao shareOrderDao;
 
 
-
     /**
      * 银联申请签约
+     *
      * @return
      */
-    public Object signApply(UnionApplySignParam param){
+    public Object signApply(UnionApplySignParam param) {
 
         String projectOid = param.getProjectOid();
         String userId = param.getUserId();
 
-        if (StringUtils.isBlank(userId)){
+        if (StringUtils.isBlank(userId)) {
             userId = getCurrentUserId();
         }
 
-        if (StringUtils.isBlank(projectOid)){
+        if (StringUtils.isBlank(projectOid)) {
             projectOid = getCurrentProjectOid();
         }
 
         //获取银联支付产品账户及需要签约的商户号
         String accountName = orgPayAccountService.queryOgPayAccount(projectOid, PaymentType.UnionFrictionlessPay);
         com.github.microservice.pay.client.ret.ResultContent<AccountModel> accountModelResultContent = payProductAccountService.get(accountName);
-        if (!accountModelResultContent.getState().equals(ResultState.Success)){
+        if (!accountModelResultContent.getState().equals(ResultState.Success)) {
             return accountModelResultContent;
         }
         ChinaumsSenselessConf conf = (ChinaumsSenselessConf) accountModelResultContent.getContent().getConf();
@@ -99,21 +99,21 @@ public class ChinaumsSenselessPayService extends SuperService {
         ChinaumsSenselessUserSignInfo userSignInfo = chinaumsSenselessUserSignInfoDao.findTopByUserIdAndMidAndExpire(userId, mid, false);
         param.setContractNo(CommonUtil.UUID());
 
-        if (userSignInfo!=null && userSignInfo.getContractState()!=null){
-            switch (userSignInfo.getContractState()){
+        if (userSignInfo != null && userSignInfo.getContractState() != null) {
+            switch (userSignInfo.getContractState()) {
                 case SIGNED -> {//已签约
                     return ResultContent.buildFail("签约已完成,请勿重复请求");
                 }
                 case UNSIGNED -> {//未签约,已解约
                     return signApply(param, accountName, userId, mid);
                 }
-                case RESCISSION ->{
+                case RESCISSION -> {
                     userSignInfo.setExpire(true);
                     chinaumsSenselessUserSignInfoDao.save(userSignInfo);
                     return signApply(param, accountName, userId, mid);
                 }
                 case APPLY -> {
-                    if (System.currentTimeMillis() >= userSignInfo.getExpireTime()){
+                    if (System.currentTimeMillis() >= userSignInfo.getExpireTime()) {
                         userSignInfo.setExpire(true);
                         chinaumsSenselessUserSignInfoDao.save(userSignInfo);
                         ChinaumsSenselessUserSignInfo newUserSignInfo = new ChinaumsSenselessUserSignInfo();
@@ -122,14 +122,14 @@ public class ChinaumsSenselessPayService extends SuperService {
                     }
                     return ResultContent.buildContent(toUserSignModel(userSignInfo));
                 }
-                case UNKNOWN ->{
+                case UNKNOWN -> {
                     return ResultContent.buildFail("未知状态,请联系管理人员");
                 }
-                case DELETING_CONTRACT ->{
+                case DELETING_CONTRACT -> {
                     return ResultContent.buildFail("解约中,请等待银行返回结果");
                 }
             }
-        }else {
+        } else {
             return signApply(param, accountName, userId, mid);
         }
 
@@ -142,12 +142,12 @@ public class ChinaumsSenselessPayService extends SuperService {
         payProductParameter.setAccountName(accountName);
         payProductParameter.setMeta(BeanUtil.bean2Map(param));
         com.github.microservice.pay.client.ret.ResultContent<Object> signApplyResultContent = senselessPayService.signApply(payProductParameter);
-        if (signApplyResultContent.getState().equals(ResultState.Success)){
+        if (signApplyResultContent.getState().equals(ResultState.Success)) {
             Object content = signApplyResultContent.getContent();
             String json = JsonUtil.toJson(content);
             Map resultMap = JsonUtil.toObject(json, Map.class);
             String errMsg = (String) resultMap.get("errMsg");
-            if ("success".equals(errMsg)){
+            if ("success".equals(errMsg)) {
                 ChinaumsSenselessUserSignInfo userSignInfo = new ChinaumsSenselessUserSignInfo();
                 userSignInfo.setUserId(userId);
                 userSignInfo.setContractNo(param.getContractNo());
@@ -156,11 +156,11 @@ public class ChinaumsSenselessPayService extends SuperService {
                 userSignInfo.setRelateSsn((String) resultMap.get("relateSsn"));
                 userSignInfo.setCqpMpAppId((String) resultMap.get("cqpMpAppId"));
                 userSignInfo.setCqpMpPath((String) resultMap.get("cqpMpPath"));
-                userSignInfo.setExpireTime(System.currentTimeMillis() + 30*60*1000);
+                userSignInfo.setExpireTime(System.currentTimeMillis() + 30 * 60 * 1000);
                 userSignInfo.setExpire(false);
                 chinaumsSenselessUserSignInfoDao.save(userSignInfo);
                 return signApplyResultContent;
-            }else {
+            } else {
                 return ResultContent.buildFail((String) resultMap.get("errMsg"));
             }
         }
@@ -172,51 +172,51 @@ public class ChinaumsSenselessPayService extends SuperService {
      */
     @SneakyThrows
     public Object signCancel(String userId, String projectOid) {
-        if (StringUtils.isBlank(userId)){
+        if (StringUtils.isBlank(userId)) {
             userId = getCurrentUserId();
         }
 
-        if (StringUtils.isBlank(projectOid)){
+        if (StringUtils.isBlank(projectOid)) {
             projectOid = getCurrentProjectOid();
         }
 
         //获取银联支付产品账户及需要签约的商户号
         String accountName = orgPayAccountService.queryOgPayAccount(projectOid, PaymentType.UnionFrictionlessPay);
         com.github.microservice.pay.client.ret.ResultContent<AccountModel> accountModelResultContent = payProductAccountService.get(accountName);
-        if (!accountModelResultContent.getState().equals(ResultState.Success)){
+        if (!accountModelResultContent.getState().equals(ResultState.Success)) {
             return accountModelResultContent;
         }
         ChinaumsSenselessConf conf = (ChinaumsSenselessConf) accountModelResultContent.getContent().getConf();
         String mid = conf.getMchId();
 
         ChinaumsSenselessUserSignInfo userSignInfo = chinaumsSenselessUserSignInfoDao.findTopByUserIdAndMidAndExpire(userId, mid, false);
-        if (userSignInfo==null){
+        if (userSignInfo == null) {
             return ResultContent.buildFail("用户与该商户未签约");
         }
 
-        if (userSignInfo.getContractState()==null){
+        if (userSignInfo.getContractState() == null) {
             return ResultContent.buildFail("签约状态数据异常");
         }
 
-        if (userSignInfo.getContractState().equals(ContractState.RESCISSION)){
+        if (userSignInfo.getContractState().equals(ContractState.RESCISSION)) {
             return ResultContent.buildFail("当前已经处于解约状态");
         }
 
-        if (userSignInfo.getContractState().equals(ContractState.SIGNED)){
+        if (userSignInfo.getContractState().equals(ContractState.SIGNED)) {
             PayProductParameter<Object> payProductParameter = new PayProductParameter<>();
             payProductParameter.setAccountName(accountName);
             payProductParameter.setMeta(Map.of("contractId", userSignInfo.getContractId()));
             com.github.microservice.pay.client.ret.ResultContent<Object> objectResultContent = senselessPayService.signCancel(payProductParameter);
-            if (objectResultContent.getState().equals(ResultState.Success)){
+            if (objectResultContent.getState().equals(ResultState.Success)) {
                 String json = JsonUtil.toJson(objectResultContent.getContent());
                 Map resultMap = JsonUtil.toObject(json, Map.class);
                 String errMsg = (String) resultMap.get("errMsg");
-                if ("success".equals(errMsg)){
+                if ("success".equals(errMsg)) {
                     userSignInfo.setContractState(ContractState.RESCISSION);
                     chinaumsSenselessUserSignInfoDao.save(userSignInfo);
                     return ResultContent.buildSuccess();
                 }
-               return ResultContent.buildFail((String) resultMap.get("errMsg"));
+                return ResultContent.buildFail((String) resultMap.get("errMsg"));
             }
             return ResultContent.buildFail("解约失败");
         }
@@ -226,26 +226,26 @@ public class ChinaumsSenselessPayService extends SuperService {
 
 
     //TODO 添加 判断是否在平台外已经签约逻辑
-    public Object queryUserSignInfo(String userId, String projectOid){
-        if (StringUtils.isBlank(userId)){
+    public Object queryUserSignInfo(String userId, String projectOid) {
+        if (StringUtils.isBlank(userId)) {
             userId = getCurrentUserId();
         }
 
-        if (StringUtils.isBlank(projectOid)){
+        if (StringUtils.isBlank(projectOid)) {
             projectOid = getCurrentProjectOid();
         }
 
         //获取银联支付产品账户及需要签约的商户号
         String accountName = orgPayAccountService.queryOgPayAccount(projectOid, PaymentType.UnionFrictionlessPay);
         com.github.microservice.pay.client.ret.ResultContent<AccountModel> accountModelResultContent = payProductAccountService.get(accountName);
-        if (!accountModelResultContent.getState().equals(ResultState.Success)){
+        if (!accountModelResultContent.getState().equals(ResultState.Success)) {
             return accountModelResultContent;
         }
         ChinaumsSenselessConf conf = (ChinaumsSenselessConf) accountModelResultContent.getContent().getConf();
         String mid = conf.getMchId();
 
         ChinaumsSenselessUserSignInfo userSignInfo = chinaumsSenselessUserSignInfoDao.findTopByUserIdAndMidAndExpire(userId, mid, false);
-        if (userSignInfo==null){
+        if (userSignInfo == null) {
             ChinaumsSenselessUserSignInfoModel model = new ChinaumsSenselessUserSignInfoModel();
             model.setUserId(userId);
             model.setContractState(ContractState.UNSIGNED);
@@ -266,13 +266,13 @@ public class ChinaumsSenselessPayService extends SuperService {
         String orgAccountName = orgPayAccountService.queryOgPayAccount(oid, PaymentType.UnionFrictionlessPay);
 
         com.github.microservice.pay.client.ret.ResultContent<AccountModel> orgAccountModelResultContent = payProductAccountService.get(orgAccountName);
-        if (!orgAccountModelResultContent.getState().equals(ResultState.Success)){
+        if (!orgAccountModelResultContent.getState().equals(ResultState.Success)) {
             return ResultContent.buildFail(orgAccountModelResultContent.getMsg());
         }
         ChinaumsSenselessConf orgConf = (ChinaumsSenselessConf) orgAccountModelResultContent.getContent().getConf();
 
         com.github.microservice.pay.client.ret.ResultContent<AccountModel> projectAccountModelResultContent = payProductAccountService.get(projectAccountName);
-        if (!projectAccountModelResultContent.getState().equals(ResultState.Success)){
+        if (!projectAccountModelResultContent.getState().equals(ResultState.Success)) {
             return ResultContent.buildFail(projectAccountModelResultContent.getMsg());
         }
         ChinaumsSenselessConf projectConf = (ChinaumsSenselessConf) projectAccountModelResultContent.getContent().getConf();
@@ -282,7 +282,7 @@ public class ChinaumsSenselessPayService extends SuperService {
         stopWatch.start("获取签约参数");
         //获取用户签约协议号
         ChinaumsSenselessUserSignInfo userSignInfo = chinaumsSenselessUserSignInfoDao.findTopByUserIdAndMidAndExpire(userId, mid, false);
-        if (userSignInfo==null || !userSignInfo.getContractState().equals(ContractState.SIGNED)){
+        if (userSignInfo == null || !userSignInfo.getContractState().equals(ContractState.SIGNED)) {
             return ResultContent.buildFail("用户未签约或状态未知");
         }
         stopWatch.stop();
@@ -323,17 +323,20 @@ public class ChinaumsSenselessPayService extends SuperService {
         stopWatch.stop();
         stopWatch.start("请求银联");
         com.github.microservice.pay.client.ret.ResultContent<Object> collectionResultContent = senselessPayService.collection(payProductParameter);
-        if (!collectionResultContent.getState().equals(ResultState.Success)){
+        if (!collectionResultContent.getState().equals(ResultState.Success)) {
             return ResultContent.buildFail("请求失败");
         }
         stopWatch.stop();
         stopWatch.start("转换支付结果");
+
+
         Map bodyMap = JsonUtil.toObject(JsonUtil.toJson(collectionResultContent.getContent()), Map.class);
-        if (bodyMap.get("respCode").equals("0000")){
+        stopWatch.stop();
+        log.info("time==; {}", stopWatch.prettyPrint());
+        if (bodyMap.get("respCode").equals("0000")) {
             return ResultContent.buildContent(collectionResultContent.getContent());
         }
-        stopWatch.stop();
-        log.info("time; {}", stopWatch.prettyPrint());
+
         return ResultContent.buildFail(bodyMap.get("respDesc").toString());
     }
 
@@ -349,13 +352,13 @@ public class ChinaumsSenselessPayService extends SuperService {
         String orgAccountName = orgPayAccountService.queryOgPayAccount(oid, PaymentType.UnionFrictionlessPay);
 
         com.github.microservice.pay.client.ret.ResultContent<AccountModel> orgAccountModelResultContent = payProductAccountService.get(orgAccountName);
-        if (!orgAccountModelResultContent.getState().equals(ResultState.Success)){
+        if (!orgAccountModelResultContent.getState().equals(ResultState.Success)) {
             return ResultContent.buildFail(orgAccountModelResultContent.getMsg());
         }
         ChinaumsSenselessConf orgConf = (ChinaumsSenselessConf) orgAccountModelResultContent.getContent().getConf();
 
         com.github.microservice.pay.client.ret.ResultContent<AccountModel> projectAccountModelResultContent = payProductAccountService.get(projectAccountName);
-        if (!projectAccountModelResultContent.getState().equals(ResultState.Success)){
+        if (!projectAccountModelResultContent.getState().equals(ResultState.Success)) {
             return ResultContent.buildFail(projectAccountModelResultContent.getMsg());
         }
 
@@ -397,12 +400,12 @@ public class ChinaumsSenselessPayService extends SuperService {
         request.setSrcReserve(JsonUtil.toJson(Map.of("userId", userId, "oid", oid, "projectOid", projectOid, "orderNo", orderNo)));
         payProductParameter.setMeta(BeanUtil.bean2Map(request));
         com.github.microservice.pay.client.ret.ResultContent<Object> refundResultContent = senselessPayService.refund(payProductParameter);
-        if (!refundResultContent.getState().equals(ResultState.Success)){
+        if (!refundResultContent.getState().equals(ResultState.Success)) {
             return ResultContent.buildFail("请求失败");
         }
         Map bodyMap = JsonUtil.toObject(JsonUtil.toJson(refundResultContent.getContent()), Map.class);
 
-        if (bodyMap.get("respCode").equals("TARGET_PROCESSING")){
+        if (bodyMap.get("respCode").equals("TARGET_PROCESSING")) {
             return ResultContent.buildContent(refundResultContent.getContent());
         }
         return ResultContent.buildFail(bodyMap.get("respDesc").toString());
@@ -429,7 +432,7 @@ public class ChinaumsSenselessPayService extends SuperService {
         sourceTransaction.setTransactionStatus(TransactionStatus.Success);
         sourceTransaction.setAmount(total.negate().longValue());
         sourceTransaction.setRemark(remark);
-        sourceTransaction.setMeta(Map.of("paymentType",PaymentType.UnionFrictionlessPay, "description", "银联无感支付"));
+        sourceTransaction.setMeta(Map.of("paymentType", PaymentType.UnionFrictionlessPay, "description", "银联无感支付"));
         transferModel.setSource(new TransferTransactionsModel.GeneralLedgerTransaction[]{sourceTransaction});
 
         //构建入账账户
@@ -441,7 +444,7 @@ public class ChinaumsSenselessPayService extends SuperService {
         destinationTransaction.setTransactionStatus(TransactionStatus.Success);
         destinationTransaction.setAmount(total.longValue());
         destinationTransaction.setRemark(remark);
-        destinationTransaction.setMeta(Map.of("paymentType",PaymentType.UnionFrictionlessPay, "description", "用户余额支付"));
+        destinationTransaction.setMeta(Map.of("paymentType", PaymentType.UnionFrictionlessPay, "description", "用户余额支付"));
         transferModel.setDestinations(new TransferTransactionsModel.GeneralLedgerTransaction[]{destinationTransaction});
 //        transactionLogService.transfer(transferModel);
 
@@ -456,7 +459,7 @@ public class ChinaumsSenselessPayService extends SuperService {
         userSourceTransaction.setTransactionStatus(TransactionStatus.Success);
         userSourceTransaction.setAmount(total.negate().longValue());
         userSourceTransaction.setRemark(remark);
-        userSourceTransaction.setMeta(Map.of("paymentType",PaymentType.UnionFrictionlessPay, "description", "银联无感支付"));
+        userSourceTransaction.setMeta(Map.of("paymentType", PaymentType.UnionFrictionlessPay, "description", "银联无感支付"));
         payTransferModel.setSource(new TransferTransactionsModel.GeneralLedgerTransaction[]{userSourceTransaction});
 
         //构建入账账户
@@ -467,7 +470,7 @@ public class ChinaumsSenselessPayService extends SuperService {
         orgDestinationTransaction.setTransactionStatus(TransactionStatus.Success);
         orgDestinationTransaction.setAmount(total.longValue());
         orgDestinationTransaction.setRemark(remark);
-        orgDestinationTransaction.setMeta(Map.of("paymentType",PaymentType.UnionFrictionlessPay, "description", "银联无感支付"));
+        orgDestinationTransaction.setMeta(Map.of("paymentType", PaymentType.UnionFrictionlessPay, "description", "银联无感支付"));
         payTransferModel.setDestinations(new TransferTransactionsModel.GeneralLedgerTransaction[]{orgDestinationTransaction});
         TransferTransactionsModels transactionsModels = new TransferTransactionsModels();
         transactionsModels.setItems(new TransferTransactionsModel[]{transferModel, payTransferModel});
@@ -495,7 +498,7 @@ public class ChinaumsSenselessPayService extends SuperService {
         sourceTransaction.setTransactionStatus(TransactionStatus.Success);
         sourceTransaction.setAmount(total.negate().longValue());
         sourceTransaction.setRemark(remark);
-        sourceTransaction.setMeta(Map.of("paymentType",PaymentType.UnionFrictionlessPay, "description", "银联无感支付"));
+        sourceTransaction.setMeta(Map.of("paymentType", PaymentType.UnionFrictionlessPay, "description", "银联无感支付"));
         transferModel.setSource(new TransferTransactionsModel.GeneralLedgerTransaction[]{sourceTransaction});
 
         //构建入账账户
@@ -507,7 +510,7 @@ public class ChinaumsSenselessPayService extends SuperService {
         destinationTransaction.setTransactionStatus(TransactionStatus.Success);
         destinationTransaction.setAmount(total.longValue());
         destinationTransaction.setRemark(remark);
-        destinationTransaction.setMeta(Map.of("paymentType",PaymentType.UnionFrictionlessPay, "description", "用户余额支付"));
+        destinationTransaction.setMeta(Map.of("paymentType", PaymentType.UnionFrictionlessPay, "description", "用户余额支付"));
         transferModel.setDestinations(new TransferTransactionsModel.GeneralLedgerTransaction[]{destinationTransaction});
 //        transactionLogService.transfer(transferModel);
 
@@ -522,7 +525,7 @@ public class ChinaumsSenselessPayService extends SuperService {
         orgDestinationTransaction.setTransactionStatus(TransactionStatus.Success);
         orgDestinationTransaction.setAmount(total.negate().longValue());
         orgDestinationTransaction.setRemark(remark);
-        orgDestinationTransaction.setMeta(Map.of("paymentType",PaymentType.UnionFrictionlessPay, "description", "银联无感支付"));
+        orgDestinationTransaction.setMeta(Map.of("paymentType", PaymentType.UnionFrictionlessPay, "description", "银联无感支付"));
         payTransferModel.setSource(new TransferTransactionsModel.GeneralLedgerTransaction[]{orgDestinationTransaction});
 
         //构建入账账户
@@ -533,7 +536,7 @@ public class ChinaumsSenselessPayService extends SuperService {
         userSourceTransaction.setTransactionStatus(TransactionStatus.Success);
         userSourceTransaction.setAmount(total.longValue());
         userSourceTransaction.setRemark(remark);
-        userSourceTransaction.setMeta(Map.of("paymentType",PaymentType.UnionFrictionlessPay, "description", "银联无感支付"));
+        userSourceTransaction.setMeta(Map.of("paymentType", PaymentType.UnionFrictionlessPay, "description", "银联无感支付"));
         payTransferModel.setDestinations(new TransferTransactionsModel.GeneralLedgerTransaction[]{userSourceTransaction});
         TransferTransactionsModels transactionsModels = new TransferTransactionsModels();
         transactionsModels.setItems(new TransferTransactionsModel[]{transferModel, payTransferModel});
@@ -541,17 +544,17 @@ public class ChinaumsSenselessPayService extends SuperService {
     }
 
 
-    private ChinaumsSenselessUserSignInfoModel toUserSignModel(ChinaumsSenselessUserSignInfo userSignInfo){
+    private ChinaumsSenselessUserSignInfoModel toUserSignModel(ChinaumsSenselessUserSignInfo userSignInfo) {
         ChinaumsSenselessUserSignInfoModel model = new ChinaumsSenselessUserSignInfoModel();
-        if (userSignInfo!=null){
+        if (userSignInfo != null) {
             BeanUtils.copyProperties(userSignInfo, model);
         }
         return model;
     }
 
-    public void handleSignRetMessage(ChinaSenselessSignRet chinaSenselessSignRet){
+    public void handleSignRetMessage(ChinaSenselessSignRet chinaSenselessSignRet) {
         ChinaumsSenselessUserSignInfo userSignInfo = chinaumsSenselessUserSignInfoDao.findTopByContractNo(chinaSenselessSignRet.getContractNo());
-        if (userSignInfo == null){
+        if (userSignInfo == null) {
             log.info("签约通知回调:找不到签约用户信息 contractNo:{}", chinaSenselessSignRet.getContractNo());
             return;
         }

+ 14 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/payment/ExpenseFlowServiceImpl.java

@@ -24,6 +24,7 @@ import com.zhongshu.card.client.model.payment.statistic.StatisticSearch;
 import com.zhongshu.card.client.model.school.AreaSimpleModel;
 import com.zhongshu.card.client.service.payment.ExpenseFlowService;
 import com.zhongshu.card.client.type.DataState;
+import com.zhongshu.card.client.type.RefundState;
 import com.zhongshu.card.client.type.StatisticType;
 import com.zhongshu.card.client.type.UserState;
 import com.zhongshu.card.client.type.payment.SettlementState;
@@ -749,6 +750,13 @@ public class ExpenseFlowServiceImpl extends SuperService implements ExpenseFlowS
         if (expenseFlow.getSettlementState() == SettlementState.AlreadySettled) {
             return ResultContent.buildFail("订单已结算,不能退款");
         }
+        if (expenseFlow.getOrderType() == OrderState.REFUNDED) {
+            return ResultContent.buildFail("订单已退款");
+        }
+        if (expenseFlow.getRefundState() == RefundState.Refunding) {
+            return ResultContent.buildFail("退款中,不能重复发起");
+        }
+
         // 开始调用退款方法
         ResultContent resultContent = payCallService.refund(expenseFlow, param);
         if (resultContent.isFailed()) {
@@ -757,6 +765,12 @@ public class ExpenseFlowServiceImpl extends SuperService implements ExpenseFlowS
         return ResultContent.buildSuccess();
     }
 
+    /**
+     * 模型转换
+     *
+     * @param entity
+     * @return
+     */
     public ExpenseFlowModel toModel(ExpenseFlow entity) {
         ExpenseFlowModel model = new ExpenseFlowModel();
         if (ObjectUtils.isNotEmpty(entity)) {

+ 8 - 2
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/payment/PayCallService.java

@@ -107,6 +107,7 @@ public class PayCallService extends SuperService {
             expenseFlowDao.save(entity);
             return ResultContent.buildFail(msg);
         }
+        log.info("开始时间:{}", DateUtils.paresTime(System.currentTimeMillis(), DateUtils.patternyyyySSS));
         log.info("开始支付: {} {}", entity.getPaymentNo(), paymentTypes);
         int maxTime = 2 * 1000;
         boolean b = false;
@@ -129,11 +130,11 @@ public class PayCallService extends SuperService {
                         break;
                     }
                     try {
-                        TimeUnit.MILLISECONDS.sleep(300);
+                        TimeUnit.MILLISECONDS.sleep(110);
                     } catch (Exception e) {
                         e.printStackTrace();
                     }
-                    atomicInteger.addAndGet(300);
+                    atomicInteger.addAndGet(110);
                 }
             }
 
@@ -271,6 +272,8 @@ public class PayCallService extends SuperService {
         entity.setPayStartTime(System.currentTimeMillis());
         BigDecimal payAmount = entity.getPayAmount();
         payAmount = payAmount.stripTrailingZeros();
+
+        log.info("开始支付时间:{}", DateUtils.paresTime(System.currentTimeMillis(), DateUtils.patternyyyySSS));
         com.github.microservice.net.ResultContent resultContent = chinaumsSenselessPayService.senselessPay(entity.getProjectOid(), entity.getShopOid(), entity.getUserId(), payAmount, entity.getPaymentNo(), entity.getRemark());
         if (resultContent.getState() == com.github.microservice.net.ResultState.Success) {
             // 关联参数
@@ -334,6 +337,7 @@ public class PayCallService extends SuperService {
      * @return
      */
     public ResultContent unionFrictionlessPayFinish(UnionFrictionlessPayFinishModel param) {
+        log.info("支付回调时间:{}", DateUtils.paresTime(System.currentTimeMillis(), DateUtils.patternyyyySSS));
         String paymentNo = param.getMerOrderId();
         com.github.microservice.pay.client.ret.ResultContent<List<TransactionLogModel>> resultContent = param.getTransactionLogModelList();
         String state = param.getStatus();
@@ -426,6 +430,7 @@ public class PayCallService extends SuperService {
         if (ObjectUtils.isEmpty(entity)) {
             return ResultContent.buildFail("数据为空");
         }
+
         if (entity.getPaymentType() == PaymentType.UserWallet) {
             // 钱包退款
             return walletRefund(entity, param);
@@ -527,6 +532,7 @@ public class PayCallService extends SuperService {
      * @return
      */
     public ResultContent unionFrictionlessPayRefundFinish(UnionFrictionlessPayFinishModel param) {
+        log.info("回调时间:{}", DateUtils.paresTime(System.currentTimeMillis(), DateUtils.FORMAT_LONG));
         log.info("回调云闪付退款回调");
         String paymentNo = param.getMerOrderId();
         com.github.microservice.pay.client.ret.ResultContent<List<TransactionLogModel>> resultContent = param.getTransactionLogModelList();