Prechádzať zdrojové kódy

Merge branch 'refs/heads/test'

codingliang 1 rok pred
rodič
commit
72e8de3f8e

+ 16 - 20
src/main/java/com/sqx/modules/order/service/impl/AppAppOrderServiceImpl.java

@@ -16,12 +16,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.sqx.common.constant.RedisKey;
 import com.sqx.common.exception.SqxException;
 import com.sqx.common.sms.SmsSendResult;
-import com.sqx.common.utils.Constant;
-import com.sqx.common.utils.DateUtils;
-import com.sqx.common.utils.DistanceUtil;
-import com.sqx.common.utils.MyGlobalThreadPool;
-import com.sqx.common.utils.PageUtils;
-import com.sqx.common.utils.Result;
+import com.sqx.common.utils.*;
 import com.sqx.modules.activity.entity.ActivityPartRecord;
 import com.sqx.modules.activity.service.ActivityPartRecordService;
 import com.sqx.modules.activity.service.ActivityService;
@@ -45,8 +40,8 @@ import com.sqx.modules.coupon.entity.TbCouponUser;
 import com.sqx.modules.datacentre.entity.SysUserShop;
 import com.sqx.modules.errand.dao.TbIndentDao;
 import com.sqx.modules.errand.entity.TbIndent;
-import com.sqx.modules.errand.service.TbIndentService;
 import com.sqx.modules.errand.entity.TbIndentSmsSendLog;
+import com.sqx.modules.errand.service.TbIndentService;
 import com.sqx.modules.errand.service.TbIndentSmsSendLogService;
 import com.sqx.modules.errand.service.TbIndentSmsTemplateService;
 import com.sqx.modules.goods.dao.GoodsDao;
@@ -83,7 +78,6 @@ import com.sqx.modules.pay.service.WxErrService;
 import com.sqx.modules.pay.vo.AliPayTransactionsParam;
 import com.sqx.modules.pay.vo.PayTransactionsVO;
 import com.sqx.modules.shop.service.ShopMessageService;
-import com.sqx.modules.sys.dao.SysUserRoleDao;
 import com.sqx.modules.sys.entity.SysUserEntity;
 import com.sqx.modules.sys.service.SysUserService;
 import com.sqx.modules.utils.SenInfoCheckUtil;
@@ -112,11 +106,7 @@ import java.time.LocalDateTime;
 import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
 import java.time.temporal.ChronoUnit;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
+import java.util.*;
 
 @Service
 @Slf4j
@@ -145,8 +135,6 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
     @Autowired
     private GoodsShopRelevancyDao goodsShopRelevancyDao;
     @Autowired
-    private SysUserRoleDao sysUserRoleDao;
-    @Autowired
     private UserMoneyDao userMoneyDao;
     @Autowired
     private WxErrService wxErrService;
@@ -1834,8 +1822,13 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
             if (tbOrder.getStatus().equals(8) || tbOrder.getStatus().equals(5)) {
                 return Result.success();
             }
+
+            if (tbOrder.getStatus() == 4) {
+                throw new SqxException("订单处于完成状态,不允许退单");
+            }
+
             UserEntity userEntity = userDao.selectById(tbOrder.getUserId());
-            //已支付判断支付方式
+            // 已支付判断支付方式
             if (tbOrder.getPayType() == 2) {
                 //余额支付,直接退还钱包
                 userMoneyDao.updateMayMoney(1, tbOrder.getUserId(), tbOrder.getPayMoney().doubleValue());
@@ -1921,13 +1914,12 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
      */
     private boolean wechatPayRefund(PayDetails payDetails) {
         boolean b;
-        boolean newPay = newPayService.enableNewPay();
-        if (newPay) {
+        // tradeNo不为null表示是新支付,否则为原生微信支付
+        if (StrUtil.isNotBlank(payDetails.getTradeNo())) {
             b = newPayService.wechatRefund(payDetails.getOrderId());
         } else {
             b = wxErrService.wxRefund(payDetails);
         }
-
         return b;
     }
 
@@ -2472,7 +2464,7 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
     public Result adminCancelOrders(Long orderId) {
         String format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
         TbOrder tbOrder = appOrderDao.selectById(orderId);
-        if(tbOrder.getStatus()==5){
+        if(tbOrder.getStatus()==5 || tbOrder.getStatus() == 8){
             return Result.success();
         }
         if (tbOrder.getIsPay() == 0) {
@@ -2482,6 +2474,10 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
             tbOrder1.setStatus(5);
             appOrderDao.updateById(tbOrder1);
         } else {
+            if (tbOrder.getStatus() == 4) {
+                throw new SqxException("订单处于完成状态,不允许退单");
+            }
+
             UserEntity userEntity = userDao.selectById(tbOrder.getUserId());
             //已支付判断支付方式
             if (tbOrder.getPayType() == 2) {

+ 31 - 17
src/main/java/com/sqx/modules/pay/service/impl/NewPayServiceImpl.java

@@ -80,26 +80,16 @@ public class NewPayServiceImpl implements NewPayService {
                 throw new SqxException("当前订单已超时关闭,请重新下单!");
             }
 
+            if (BigDecimal.valueOf(payDetails.getMoney()).compareTo(dto.getAmount()) != 0) {
+                throw new SqxException("支付金额检验失败,请清空购车后重试!");
+            }
+
             return JSONUtil.toBean(payDetails.getRemark(), WechatTransactionsParamVO.class);
         }
 
         WechatPayConfig wechatMchConfig = getWechatMchConfig();
-
-        // h5服务域名配置
-        String notifyUrl = wechatMchConfig.getH5Url() + "/sqx_fast/app/new-pay/wechat-pay/notify";
-
         RhtQrcodePayApi qrcodePay = new RhtQrcodePayApi(wechatMchConfig.getMchId(), wechatMchConfig.getMchKey(), RHT_PAY_BASE_URL);
-        QrcodeOpenPayRequestBean openRequest = new QrcodeOpenPayRequestBean();
-        openRequest.setAmount(dto.getAmount().toString());
-        openRequest.setTraceno(dto.getOrderNo());
-        openRequest.setPayType(Constant.PAY_TYPE_WECHAT);
-        openRequest.setGoodsName(dto.getOrderDesc());
-        openRequest.setNotifyUrl(notifyUrl);
-
-        // 小程序支付,固定填1
-        openRequest.setCallType("1");
-        openRequest.setAppid(wechatMchConfig.getAppId());
-        openRequest.setOpenid(dto.getUserThirdId());
+        QrcodeOpenPayRequestBean openRequest = getQrcodeOpenPayRequestBean(dto, wechatMchConfig);
 
         WechatTransactionsParamVO wechatPayParamVO;
         try {
@@ -121,6 +111,31 @@ public class NewPayServiceImpl implements NewPayService {
         return wechatPayParamVO;
     }
 
+    /**
+     * 创建支付请求参数
+     *
+     * @param dto 包含支付参数的数据传输对象
+     * @param wechatMchConfig 微信商户配置信息
+     * @return 返回一个填充了支付信息的QrcodeOpenPayRequestBean对象
+     */
+    private QrcodeOpenPayRequestBean getQrcodeOpenPayRequestBean(GetPayParamDTO dto, WechatPayConfig wechatMchConfig) {
+        String notifyUrl = wechatMchConfig.getH5Url() + "/sqx_fast/app/new-pay/wechat-pay/notify";
+
+        QrcodeOpenPayRequestBean openRequest = new QrcodeOpenPayRequestBean();
+        openRequest.setAmount(dto.getAmount().toString());
+        openRequest.setTraceno(dto.getOrderNo());
+        openRequest.setPayType(Constant.PAY_TYPE_WECHAT);
+        openRequest.setGoodsName(dto.getOrderDesc());
+        // 设置支付通知地址
+        openRequest.setNotifyUrl(notifyUrl);
+        // 小程序支付,固定填1
+        openRequest.setCallType("1");
+        openRequest.setAppid(wechatMchConfig.getAppId());
+        openRequest.setOpenid(dto.getUserThirdId());
+
+        return openRequest;
+    }
+
     @Override
     public boolean wechatRefund(String orderNo) {
         WechatPayConfig wechatMchConfig = getWechatMchConfig();
@@ -142,9 +157,8 @@ public class NewPayServiceImpl implements NewPayService {
             }
         } catch (Exception e) {
             e.printStackTrace();
-            log.error("订单【{}】退款失败,失败原因:{}", orderNo, e.getMessage());
+            throw new SqxException("订单【" + orderNo + "】退款失败,失败原因:" + e.getMessage());
         }
-        return false;
     }
 
     @Override