Kaynağa Gözat

Merge branch 'sit' into uat-20260202

# Conflicts:
#	alien-dining/src/main/java/shop/alien/dining/controller/PaymentController.java
#	alien-dining/src/main/java/shop/alien/dining/strategy/payment/PaymentStrategy.java
#	alien-dining/src/main/java/shop/alien/dining/strategy/payment/impl/WeChatPaymentMininProgramStrategyImpl.java
刘云鑫 4 hafta önce
ebeveyn
işleme
41e3dfd0b2

+ 6 - 3
alien-dining/src/main/java/shop/alien/dining/controller/PaymentController.java

@@ -46,13 +46,16 @@ public class PaymentController {
             @ApiImplicitParam(name = "orderNo", value = "订单号", required = true, paramType = "query", dataType = "String"),
             @ApiImplicitParam(name = "storeId", value = "店铺ID,用于从 MySQL 获取该店铺支付配置(StorePaymentConfig)", required = true, paramType = "query", dataType = "Integer"),
             @ApiImplicitParam(name ="couponId", value = "优惠券Id"),
-            @ApiImplicitParam(name = "payerId", value = "payerId")
+            @ApiImplicitParam(name = "payerId", value = "payerId"),
+            @ApiImplicitParam(name = "tablewareFee", value = "餐具费"),
+            @ApiImplicitParam(name = "discountAmount", value = "优惠金额"),
+            @ApiImplicitParam(name = "payAmount", value = "支付金额")
     })
     @RequestMapping("/prePay")
-    public R prePay(String price, String subject, String payType, String payer, String orderNo, Integer storeId,Integer couponId, Integer payerId) {
+    public R prePay(String price, String subject, String payType, String payer, String orderNo, Integer storeId,Integer couponId, Integer payerId,String tablewareFee,String discountAmount,String payAmount) {
         log.info("PaymentController:prePay, price: {}, subject: {}, payType: {}, payer: {}, orderNo: {}, storeId: {},couponId:{},payerId:{}", price, subject, payType, payer, orderNo, storeId,couponId,payerId);
         try {
-            return paymentStrategyFactory.getStrategy(payType).createPrePayOrder(price, subject, payer, orderNo, storeId, couponId,payerId);
+            return paymentStrategyFactory.getStrategy(payType).createPrePayOrder(price, subject, payer, orderNo, storeId, couponId,payerId,tablewareFee,discountAmount,payAmount);
         } catch (Exception e) {
             return R.fail(e.getMessage());
         }

+ 1 - 1
alien-dining/src/main/java/shop/alien/dining/strategy/payment/PaymentStrategy.java

@@ -23,7 +23,7 @@ public interface PaymentStrategy {
      * @return 预支付订单信息
      * @throws Exception 生成异常
      */
-    R createPrePayOrder(String price, String subject, String payer, String orderNo, Integer storeId, Integer couponId, Integer payerId) throws Exception;
+    R createPrePayOrder(String price, String subject, String payer, String orderNo, Integer storeId, Integer couponId, Integer payerId,String tablewareFee,String discountAmount,String payAmount) throws Exception;
 
 
     /**

+ 21 - 23
alien-dining/src/main/java/shop/alien/dining/strategy/payment/impl/WeChatPaymentMininProgramStrategyImpl.java

@@ -34,15 +34,12 @@ import shop.alien.util.common.constant.PaymentEnum;
 import javax.servlet.http.HttpServletRequest;
 import java.io.IOException;
 import java.io.UncheckedIOException;
+import java.math.BigDecimal;
 import java.nio.charset.StandardCharsets;
 import java.security.PrivateKey;
 import java.security.PublicKey;
 import java.security.Signature;
-import java.util.Base64;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.concurrent.CompletableFuture;
 
 
@@ -158,7 +155,7 @@ public class WeChatPaymentMininProgramStrategyImpl implements PaymentStrategy {
     }
 
     @Override
-    public R createPrePayOrder(String price, String subject, String payer, String orderNo, Integer storeId, Integer couponId, Integer payerId) throws Exception {
+    public R createPrePayOrder(String price, String subject, String payer, String orderNo, Integer storeId, Integer couponId, Integer payerId,String tablewareFee,String discountAmount,String payAmount) throws Exception {
         // 本系统调用:通过 storeId 从 MySQL 获取店铺支付配置
         if (storeId == null) {
             log.warn("createPrePayOrder 缺少 storeId,无法获取支付配置");
@@ -202,23 +199,19 @@ public class WeChatPaymentMininProgramStrategyImpl implements PaymentStrategy {
             if (publicKey == null) {
                 return R.fail("店铺微信支付公钥未配置或加载失败");
             }
-            log.info("storeOrder:"+storeOrder.toString());
-            if(storeOrder.getPayTradeNo() != null && org.apache.commons.lang3.StringUtils.isNotBlank(storeOrder.getPayTradeNo())) {
-                log.info("执行查询");
-                QueryByWxTradeNoRequest q = new QueryByWxTradeNoRequest();
-                q.transactionId = storeOrder.getPayTradeNo();
-                q.mchid = mchId;
-                try {
-                    DirectAPIv3QueryResponse wxOrder = searchOrderRun(q, config, privateKey, publicKey);
-                    if (wxOrder != null && "SUCCESS".equals(wxOrder.tradeState)) {
-                        return R.fail("该支付单已在微信侧支付成功,请勿重复发起支付");
-                    }
-                } catch (WXPayUtility.ApiException e) {
-                    if (e.getStatusCode() != 404 && !"ORDER_NOT_EXIST".equals(e.getErrorCode())) {
-                        log.error("预支付前查询微信订单失败 out_trade_no={}, status={}, code={}, msg={}",
-                                storeOrder.getPayTradeNo(), e.getStatusCode(), e.getErrorCode(), e.getErrorMessage());
-                        return R.fail("查询微信支付订单失败:" + (e.getErrorMessage() != null ? e.getErrorMessage() : e.getMessage()));
-                    }
+            QueryByWxTradeNoRequest q = new QueryByWxTradeNoRequest();
+            q.transactionId = storeOrder.getPayTradeNo();
+            q.mchid = mchId;
+            try {
+                DirectAPIv3QueryResponse wxOrder = searchOrderRun(q, config, privateKey, publicKey);
+                if (wxOrder != null && "SUCCESS".equals(wxOrder.tradeState)) {
+                    return R.fail("该支付单已在微信侧支付成功,请勿重复发起支付");
+                }
+            } catch (WXPayUtility.ApiException e) {
+                if (e.getStatusCode() != 404 && !"ORDER_NOT_EXIST".equals(e.getErrorCode())) {
+                    log.error("预支付前查询微信订单失败 out_trade_no={}, status={}, code={}, msg={}",
+                            storeOrder.getPayTradeNo(), e.getStatusCode(), e.getErrorCode(), e.getErrorMessage());
+                    return R.fail("查询微信支付订单失败:" + (e.getErrorMessage() != null ? e.getErrorMessage() : e.getMessage()));
                 }
             }
             String newPayTradeNo = "WX" + storeOrder.getId() + "_" + System.currentTimeMillis();
@@ -227,6 +220,9 @@ public class WeChatPaymentMininProgramStrategyImpl implements PaymentStrategy {
             log.info("未支付场景已换新微信商户单号 orderNo={}, payTradeNo={}", orderNo, newPayTradeNo);
             storeOrder.setCouponId(couponId);
             storeOrder.setPayUserId(payerId);
+            storeOrder.setTablewareFee(new BigDecimal(tablewareFee));
+            storeOrder.setDiscountAmount(new BigDecimal(discountAmount));
+            storeOrder.setPayAmount(new BigDecimal(payAmount));
             if (!storeOrderService.updateById(storeOrder)) {
                 log.error("更新订单失败 orderNo={}", orderNo);
                 return R.fail("更新订单失败");
@@ -350,6 +346,8 @@ public class WeChatPaymentMininProgramStrategyImpl implements PaymentStrategy {
                 if (storeOrder != null && storeOrder.getPayStatus() != 1) {
                     storeOrder.setPayStatus(1);
                     storeOrder.setOrderStatus(1);
+                    storeOrder.setPayType(1);
+                    storeOrder.setPayTime(new Date());
                     if (storeOrderService.updateById(storeOrder)) {
                         log.info("小程序更新订单成功,订单号outTradeNo:{}", outTradeNo);
                         if (storeOrder.getCouponId() != null && storeOrder.getPayUserId() != null) {

+ 2 - 1
alien-entity/src/main/java/shop/alien/entity/store/vo/CommonCommentVo.java

@@ -22,5 +22,6 @@ public class CommonCommentVo extends CommonComment {
     private Long sourceId;
     @ApiModelProperty(value = "数量")
     private Integer commentCount;
-
+    @ApiModelProperty(value = "评论用户手机号")
+    private String headPhone;
 }

+ 1 - 0
alien-entity/src/main/java/shop/alien/mapper/CommonCommentMapper.java

@@ -35,6 +35,7 @@ public interface CommonCommentMapper extends BaseMapper<CommonComment> {
     @Select("SELECT cc.*, " +
             "IF(cc.comment_type = 1, lu.user_image, su.head_img) AS headImg, " +
             "IF(cc.comment_type = 1, lu.user_name, su.nick_name) AS headName, " +
+            "IF(cc.comment_type = 1, lu.user_phone, su.phone) AS headPhone, " +
             "IF(llr.dianzan_id IS NULL, '0', '1') AS isLike " +
             "FROM common_comment cc " +
             "LEFT JOIN life_user lu ON cc.user_id = lu.id AND lu.delete_flag = 0 " +

+ 5 - 2
alien-store/src/main/java/shop/alien/store/service/LifeUserDynamicsService.java

@@ -653,15 +653,18 @@ public class LifeUserDynamicsService extends ServiceImpl<LifeUserDynamicsMapper,
             dynamicsVo.setCommentCount(commonCommentCount);
             String phoneId1 = dynamicsVo.getPhoneId();
             String storeUserId = "";
+            String storeUserId1 = "";
             if (phoneId1.startsWith("user_")) {
                 LifeUser lifeUser1 = lifeUserMapper.selectOne(new QueryWrapper<LifeUser>().eq("user_phone", phoneId1.substring(5)));
                 storeUserId = String.valueOf(lifeUser1.getId());
+                storeUserId1 = storeUserId;
             } else {
                 StoreUser storeUser1 = storeUserService.getOne(new QueryWrapper<StoreUser>().eq("phone", phoneId1.substring(6)));
-                storeUserId = String.valueOf(storeUser1.getId());
+                storeUserId = String.valueOf(storeUser1.getStoreId());
+                storeUserId1 = String.valueOf(storeUser1.getId());
             }
             dynamicsVo.setStoreUserId(storeUserId);
-            dynamicsVo.setStoreOrUserId(storeUserId);
+            dynamicsVo.setStoreOrUserId(storeUserId1);
         }
 
         // 好友获赞数量