Browse Source

Merge remote-tracking branch 'origin/master'

QAQ 陈 2 months ago
parent
commit
a503b4b52e

+ 2 - 3
zhsw-wechat-common/src/main/java/com/rongwei/wechat/system/service/impl/SwBillingRecordServiceImpl.java

@@ -29,6 +29,7 @@ import org.springframework.transaction.annotation.Transactional;
 import java.math.BigDecimal;
 import java.security.SecureRandom;
 import java.time.LocalDateTime;
+import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -384,9 +385,7 @@ public class SwBillingRecordServiceImpl extends ServiceImpl<SwBillingRecordDao,
         int randomNumber = random.nextInt(1000);
         String randomStr = String.format("%03d", randomNumber);
         LocalDateTime now = LocalDateTime.now();
-        add.setBillingnumber(now.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) + randomStr);
+        add.setBillingnumber(now.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS")) + randomStr);
 
     }
-
-
 }

+ 30 - 27
zhsw-wechat-common/src/main/java/com/rongwei/wechat/system/wechat/impl/PayMentServiceImpl.java

@@ -13,6 +13,7 @@ import com.rongwei.rwcommon.base.BaseDo;
 import com.rongwei.rwcommon.base.R;
 import com.rongwei.rwcommon.base.exception.CustomException;
 import com.rongwei.rwcommonentity.commonservers.domain.TenantDo;
+import com.rongwei.wechat.system.config.ContextHolder;
 import com.rongwei.wechat.system.config.WeChatAboutApiPara;
 import com.rongwei.wechat.system.dao.CommonBusinessDao;
 import com.rongwei.wechat.system.service.impl.SwBillManagementUnpaidServiceImpl;
@@ -158,7 +159,7 @@ public class PayMentServiceImpl implements PayMentService {
      */
     @Override
     public ResponseEntity<String> prepayNotice(PrepayNoticeVo prepayNoticeVo, String dskey, BigDecimal amount, String userNum) {
-        log.info("获取到的支付成功的回调:{},dskey:{}", prepayNoticeVo, dskey);
+        log.info("获取到的支付成功的回调:{},dskey:{},amount:{},userNum:{}", prepayNoticeVo, dskey, amount, userNum);
         // 传来的数据为整数 所以需要除以100
         amount = amount.divide(new BigDecimal(100), 2, RoundingMode.HALF_UP);
         List<String> dsKeys;
@@ -210,33 +211,35 @@ public class PayMentServiceImpl implements PayMentService {
             log.error("JSON转换异常");
             return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(error.toString());
         }
-
-        // 微信订单号
-        String transactionId = transaction.getTransactionId();
-        // 商户号
-        String outTradeNo = transaction.getOutTradeNo();
-        Date successTime = transaction.getSuccessTime();
-        log.debug("支付回调:{}", transaction);
-        /******************创建缴费记录***************************/
-        CreatePaymentRecordVo createPaymentRecordVo = new CreatePaymentRecordVo();
-        createPaymentRecordVo.setOrderNo(outTradeNo);
-        createPaymentRecordVo.setPaymentAmount(amount);
-        List<SwBillManagementUnpaidDo> list = swBillManagementUnpaidService.list(new LambdaQueryWrapper<SwBillManagementUnpaidDo>()
-                .eq(BaseDo::getDeleted, "0").eq(SwBillManagementUnpaidDo::getMerchantpaymentnumber, outTradeNo));
-        String zdIds = list.stream().map(SwBillManagementUnpaidDo::getId).collect(Collectors.joining(","));
-        createPaymentRecordVo.setZdId(zdIds);
-        createPaymentRecordVo.setUserNumber(userNum);
-        paymentRecordService.createRecord(createPaymentRecordVo);
-
-        log.error("开始更新缴费记录信息");
-        // 更新缴费记录相关信息
-        int i = swBillingRecordService.getBaseMapper().updateWeChatPayInfo(deKey, outTradeNo, transactionId, analysisStr, successTime);
-
-        log.debug("受影响的行数:{}", i);
-        if (i > 0) {
-            return ResponseEntity.status(HttpStatus.OK).body("");
-        } else {
+        try {
+            // 微信订单号
+            String transactionId = transaction.getTransactionId();
+            // 商户号
+            String outTradeNo = transaction.getOutTradeNo();
+            Date successTime = transaction.getSuccessTime();
+            log.debug("支付回调:{}", transaction);
+            /******************创建缴费记录***************************/
+
+            ContextHolder.setValue("dskey", dskey);
+            CreatePaymentRecordVo createPaymentRecordVo = new CreatePaymentRecordVo();
+            createPaymentRecordVo.setOrderNo(outTradeNo);
+            createPaymentRecordVo.setPaymentAmount(amount);
+            List<SwBillManagementUnpaidDo> list = swBillManagementUnpaidService.list(new LambdaQueryWrapper<SwBillManagementUnpaidDo>()
+                    .eq(BaseDo::getDeleted, "0").eq(SwBillManagementUnpaidDo::getMerchantpaymentnumber, outTradeNo));
+            String zdIds = list.stream().map(SwBillManagementUnpaidDo::getId).collect(Collectors.joining(","));
+            createPaymentRecordVo.setZdId(zdIds);
+            createPaymentRecordVo.setUserNumber(userNum);
+            createPaymentRecordVo.setOpenId(transaction.getPayer().getOpenid());
+            createPaymentRecordVo.setDesc(transaction.toString());
+            createPaymentRecordVo.setWechatNo(transactionId);
+            createPaymentRecordVo.setSuccessTime(successTime);
+            log.error("开始创建缴费记录:{}", createPaymentRecordVo);
+            paymentRecordService.createRecord(createPaymentRecordVo);
+        }catch (Exception e) {
             return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(error.toString());
+        }finally {
+            ContextHolder.clear();
         }
+        return ResponseEntity.status(HttpStatus.OK).body("");
     }
 }

+ 24 - 20
zhsw-wechat-common/src/main/java/com/rongwei/wechat/system/wechat/impl/PaymentRecordServiceImpl.java

@@ -15,7 +15,6 @@ import com.rongwei.wechat.system.service.impl.SwBillManagementPaidServiceImpl;
 import com.rongwei.wechat.system.service.impl.SwBillManagementUnpaidServiceImpl;
 import com.rongwei.wechat.system.service.impl.SwBillingRecordServiceImpl;
 import com.rongwei.wechat.system.service.impl.SwUserManagementServiceImpl;
-import com.rongwei.wechat.system.utils.WeChatUtils;
 import com.rongwei.wechat.system.wechat.PaymentRecordService;
 import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
@@ -131,33 +130,33 @@ public class PaymentRecordServiceImpl implements PaymentRecordService {
     @Transactional
     public R createRecord(CreatePaymentRecordVo createPaymentRecordVo) {
         try {
-        // 微信的openId
-        String currentWeChatOpenId = WeChatUtils.getCurrentWeChatOpenId();
-        String userNUMBER = createPaymentRecordVo.getUserNumber();
-        if (StringUtils.isBlank(userNUMBER)) {
-            log.error("参数错误,户号为空");
-            throw new CustomException("户号为空");
-        }
-        SwUserManagementDo swUserManagementDo = swUserManagementService.getOne(new LambdaQueryWrapper<SwUserManagementDo>()
-                .eq(SwUserManagementDo::getUsernumber, userNUMBER)
-                .eq(BaseDo::getDeleted, "0"));
-        List<SwBillManagementUnpaidDo> unpaidDoList = new ArrayList<>();
-        String zdId = createPaymentRecordVo.getZdId();
-        if (StringUtils.isNotBlank(zdId)) {
-            unpaidDoList = swBillManagementUnpaidService.getBaseMapper().selectBatchIds(Arrays.asList(zdId.split(",")));
-        }
-
+            // 微信的openId
+            String currentWeChatOpenId = createPaymentRecordVo.getOpenId();
+            String userNUMBER = createPaymentRecordVo.getUserNumber();
+            if (StringUtils.isBlank(userNUMBER)) {
+                log.error("参数错误,户号为空");
+                throw new CustomException("户号为空");
+            }
+            SwUserManagementDo swUserManagementDo = swUserManagementService.getOne(new LambdaQueryWrapper<SwUserManagementDo>()
+                    .eq(SwUserManagementDo::getUsernumber, userNUMBER)
+                    .eq(BaseDo::getDeleted, "0"));
+            List<SwBillManagementUnpaidDo> unpaidDoList = new ArrayList<>();
+            String zdId = createPaymentRecordVo.getZdId();
+            if (StringUtils.isNotBlank(zdId)) {
+                unpaidDoList = swBillManagementUnpaidService.getBaseMapper().selectBatchIds(Arrays.asList(zdId.split(",")));
+            }
 
 
             // 生成缴费记录
             SwBillingRecordDo swBillingRecordDo = generateRecord(swUserManagementDo, unpaidDoList, createPaymentRecordVo.getPaymentAmount(),
-                    createPaymentRecordVo.getOrderNo(), currentWeChatOpenId);
+                    createPaymentRecordVo.getOrderNo(), currentWeChatOpenId, createPaymentRecordVo.getDesc(),
+                    createPaymentRecordVo.getWechatNo(), createPaymentRecordVo.getSuccessTime());
             // 待缴账单转为已缴账单
             List<SwBillManagementPaidDo> bills = swBillingRecordService.createBills(unpaidDoList, swBillingRecordDo);
             dataUpdate(swBillingRecordDo, swUserManagementDo, bills, unpaidDoList);
         } catch (Exception e) {
             e.printStackTrace();
-            log.error("缴费记录生成失败原因为:{}",e.getMessage());
+            log.error("缴费记录生成失败原因为:{}", e.getMessage());
         }
 
         return R.ok();
@@ -183,7 +182,8 @@ public class PaymentRecordServiceImpl implements PaymentRecordService {
 
 
     public SwBillingRecordDo generateRecord(SwUserManagementDo swUserManagementDo, List<SwBillManagementUnpaidDo> unpaidDoList,
-                                            BigDecimal paymentAmount, String orderNo, String openId) {
+                                            BigDecimal paymentAmount, String orderNo, String openId, String desc, String wechatNo,
+                                            Date successTime) {
         Date now = new Date();
         Calendar instance = Calendar.getInstance();
         instance.setTime(now);
@@ -222,6 +222,10 @@ public class PaymentRecordServiceImpl implements PaymentRecordService {
         swBillingRecordDo.setModifydate(now);
         swBillingRecordDo.setModifyuserid(openId);
         swBillingRecordDo.setModifyusername(openId);
+        swBillingRecordDo.setNoticedetails(desc);
+        swBillingRecordDo.setWechatpayordernumber(wechatNo);
+        swBillingRecordDo.setPayfeesstatus("1");
+        swBillingRecordDo.setPaymentcompletiontime(successTime);
         // 暂不新增 通过微信支付回调函数进行新增
         // swBillingRecordDo.setWechatpayordernumber();
         // swBillingRecordDo.setPaymentstatus();

+ 2 - 0
zhsw-wechat-entity/src/main/java/com/rongwe/wechat/system/domain/SwBillingRecordDo.java

@@ -196,5 +196,7 @@ public class SwBillingRecordDo extends BaseDo implements Serializable {
      * 支付方式
      */
     private String paymentmethod;
+
+    private String noticedetails;
 }
 

+ 10 - 0
zhsw-wechat-entity/src/main/java/com/rongwe/wechat/system/vo/CreatePaymentRecordVo.java

@@ -3,6 +3,7 @@ package com.rongwe.wechat.system.vo;
 import lombok.Data;
 
 import java.math.BigDecimal;
+import java.util.Date;
 
 /**
  * CreatrePaymentRecordVo class
@@ -20,4 +21,13 @@ public class CreatePaymentRecordVo {
     private String zdId;
     // 户号
     private String userNumber;
+    // 微信标识
+    private String openId;
+    // 回调函数内容
+    private String desc;
+    // 微信订单号
+    private String wechatNo;
+    //支付成功时间
+    private Date successTime;
+
 }

+ 7 - 6
zhsw-wechat-entity/src/main/java/com/rongwe/wechat/system/vo/WeChatPayTransactionVo.java

@@ -43,7 +43,7 @@ public class WeChatPayTransactionVo {
 
     @Data
     @JsonIgnoreProperties(ignoreUnknown = true)
-    static  class Amount {
+    public static  class Amount {
         @JsonProperty("payer_total")
         private int payerTotal;
         private int total;
@@ -55,7 +55,7 @@ public class WeChatPayTransactionVo {
     }
     @Data
     @JsonIgnoreProperties(ignoreUnknown = true)
-    static  class PromotionDetail {
+    public static  class PromotionDetail {
         private int amount;
         @JsonProperty("wechatpay_contribute")
         private int wechatpayContribute;
@@ -79,7 +79,7 @@ public class WeChatPayTransactionVo {
     }
     @Data
     @JsonIgnoreProperties(ignoreUnknown = true)
-    static  class GoodsDetail {
+    public static  class GoodsDetail {
         @JsonProperty("goods_remark")
         private String goodsRemark;
         private int quantity;
@@ -92,15 +92,16 @@ public class WeChatPayTransactionVo {
 
         // Getters and Setters
     }
-    @Data
+
     @JsonIgnoreProperties(ignoreUnknown = true)
-    static  class Payer {
+    @Data
+    public static  class Payer {
         private String openid;
     }
 
     @Data
     @JsonIgnoreProperties(ignoreUnknown = true)
-    static  class SceneInfo {
+    public static  class SceneInfo {
         @JsonProperty("device_id")
         private String deviceId;
     }