From 693839a486143371350fa8ca340d9dff74f6627b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=B0=8F=E5=B0=8F=E5=BC=A0?= <1085577365@qq.com>
Date: Thu, 11 May 2023 18:06:00 +0800
Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=AE=A1=E7=90=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../framework/common/util/date/DateUtils.java | 70 +
.../ShippingTemplatesFreeServiceImpl.java | 3 +-
...hippingTemplatesNoDeliveryServiceImpl.java | 3 +-
.../ShippingTemplatesRegionServiceImpl.java | 3 +-
.../ShippingTemplatesServiceImpl.java | 6 +-
.../order/StoreOrderCountItemResponse.java | 22 +-
.../order/StoreOrderTopItemResponse.java | 2 +-
.../yudao-module-shop-biz/pom.xml | 12 +
.../module/shop/constants/PayConstants.java | 56 +
.../shop/constants/WeChatConstants.java | 387 ++++++
.../admin/order/vo/WxRefundResponseVo.java | 109 ++
.../controller/admin/order/vo/WxRefundVo.java | 64 +
.../shop/service/order/StoreOrderService.java | 16 +-
.../order/StoreOrderStatusService.java | 2 +-
.../order/impl/StoreOrderInfoServiceImpl.java | 92 +-
.../impl/StoreOrderRefundServiceImpl.java | 71 +-
.../order/impl/StoreOrderServiceImpl.java | 1226 ++++++++++++++++-
.../impl/StoreOrderStatusServiceImpl.java | 67 +-
.../order/impl/StoreOrderTaskServiceImpl.java | 256 +++-
.../shop/service/wechat/WechatNewService.java | 28 +
.../wechat/impl/WechatNewServiceImpl.java | 102 ++
.../yudao/module/shop/utils/CrmebUtil.java | 14 +
.../module/shop/utils/RestTemplateUtil.java | 111 ++
.../yudao/module/shop/utils/WxPayUtil.java | 88 ++
.../yudao/module/shop/utils/XmlUtil.java | 95 ++
25 files changed, 2799 insertions(+), 106 deletions(-)
rename yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/express/{ => impl}/ShippingTemplatesFreeServiceImpl.java (97%)
rename yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/express/{ => impl}/ShippingTemplatesNoDeliveryServiceImpl.java (96%)
rename yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/express/{ => impl}/ShippingTemplatesRegionServiceImpl.java (98%)
rename yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/express/{ => impl}/ShippingTemplatesServiceImpl.java (95%)
create mode 100644 yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/constants/PayConstants.java
create mode 100644 yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/constants/WeChatConstants.java
create mode 100644 yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/admin/order/vo/WxRefundResponseVo.java
create mode 100644 yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/admin/order/vo/WxRefundVo.java
create mode 100644 yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/service/wechat/WechatNewService.java
create mode 100644 yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/service/wechat/impl/WechatNewServiceImpl.java
create mode 100644 yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/utils/RestTemplateUtil.java
create mode 100644 yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/utils/WxPayUtil.java
create mode 100644 yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/utils/XmlUtil.java
diff --git a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/date/DateUtils.java b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/date/DateUtils.java
index 1162d7e27..e7878f8b2 100644
--- a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/date/DateUtils.java
+++ b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/date/DateUtils.java
@@ -188,6 +188,36 @@ public class DateUtils {
SimpleDateFormat dft = new SimpleDateFormat(DATE_FORMAT);
return dft.format(new Date());
}
+
+ /**
+ * 获取当前日期,指定格式
+ * 描述:<描述函数实现的功能>.
+ *
+ * @return
+ */
+ public static Date nowDateTime() {
+ return strToDate(nowDateTimeStr(), Constants.DATE_FORMAT);
+ }
+ /**
+ * 获取当前日期,指定格式
+ * 描述:<描述函数实现的功能>.
+ *
+ * @return
+ */
+ public static String nowDateTimeStr() {
+ return nowDate(Constants.DATE_FORMAT);
+ }
+ /**
+ * 获取当前日期,指定格式
+ * 描述:<描述函数实现的功能>.
+ *
+ * @return
+ */
+ public static String nowDate(String DATE_FORMAT) {
+ SimpleDateFormat dft = new SimpleDateFormat(DATE_FORMAT);
+ return dft.format(new Date());
+ }
+
/**
* 指定日期加上天数后的日期
*
@@ -208,6 +238,21 @@ public class DateUtils {
}
}
+ /**
+ * 指定日期加上天数后的日期
+ *
+ * @param num 为增加的天数
+ * @param newDate 创建时间
+ * @return
+ */
+ public static final String addDay(Date newDate, int num, String pattern) {
+ SimpleDateFormat format = new SimpleDateFormat(pattern);
+ Calendar ca = Calendar.getInstance();
+ ca.setTime(newDate);
+ ca.add(Calendar.DATE, num);
+ return format.format(ca.getTime());
+ }
+
/** 获得本周第一天:yyyy-MM-dd HH:mm:ss */
public static String getWeekStartDay() {
Calendar c = Calendar.getInstance();
@@ -303,6 +348,31 @@ public class DateUtils {
return null;
}
}
+
+ /**
+ * 两个日期之前的相差天数
+ * @param starDate 开始日期
+ * @param endDate 结束日期
+ * @return 相差天数
+ */
+ public static int daysBetween(Date starDate,Date endDate){
+
+ Calendar cal = Calendar.getInstance();
+
+ cal.setTime(starDate);
+
+ long time1 = cal.getTimeInMillis();
+
+ cal.setTime(endDate);
+
+ long time2 = cal.getTimeInMillis();
+
+ long between_days=(time2-time1)/(1000*3600*24);
+
+ return Integer.parseInt(String.valueOf(between_days));
+
+ }
+
/**
* 获取指定日期指定格式字符串
*
diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/express/ShippingTemplatesFreeServiceImpl.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/express/impl/ShippingTemplatesFreeServiceImpl.java
similarity index 97%
rename from yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/express/ShippingTemplatesFreeServiceImpl.java
rename to yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/express/impl/ShippingTemplatesFreeServiceImpl.java
index a7e6a8274..8ab6a086c 100644
--- a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/express/ShippingTemplatesFreeServiceImpl.java
+++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/express/impl/ShippingTemplatesFreeServiceImpl.java
@@ -1,9 +1,10 @@
-package cn.iocoder.yudao.module.product.service.express;
+package cn.iocoder.yudao.module.product.service.express.impl;
import cn.iocoder.yudao.framework.common.util.string.StrUtils;
import cn.iocoder.yudao.module.product.controller.admin.express.vo.ShippingTemplatesFreeRespVO;
import cn.iocoder.yudao.module.product.dal.dataobject.express.ShippingTemplatesFreeDO;
import cn.iocoder.yudao.module.product.dal.mysql.express.ShippingTemplatesFreeMapper;
+import cn.iocoder.yudao.module.product.service.express.ShippingTemplatesFreeService;
import cn.iocoder.yudao.module.system.controller.admin.ip.vo.AreaNodeRespVO;
import cn.iocoder.yudao.module.system.service.ip.AreaService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/express/ShippingTemplatesNoDeliveryServiceImpl.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/express/impl/ShippingTemplatesNoDeliveryServiceImpl.java
similarity index 96%
rename from yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/express/ShippingTemplatesNoDeliveryServiceImpl.java
rename to yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/express/impl/ShippingTemplatesNoDeliveryServiceImpl.java
index c9d887826..32f976942 100644
--- a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/express/ShippingTemplatesNoDeliveryServiceImpl.java
+++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/express/impl/ShippingTemplatesNoDeliveryServiceImpl.java
@@ -1,9 +1,10 @@
-package cn.iocoder.yudao.module.product.service.express;
+package cn.iocoder.yudao.module.product.service.express.impl;
import cn.iocoder.yudao.framework.common.util.string.StrUtils;
import cn.iocoder.yudao.module.product.controller.admin.express.vo.ShippingTemplatesNoDeliveryRespVO;
import cn.iocoder.yudao.module.product.dal.dataobject.express.ShippingTemplatesNoDeliveryDO;
import cn.iocoder.yudao.module.product.dal.mysql.express.ShippingTemplatesNoDeliveryMapper;
+import cn.iocoder.yudao.module.product.service.express.ShippingTemplatesNoDeliveryService;
import cn.iocoder.yudao.module.system.controller.admin.ip.vo.AreaNodeRespVO;
import cn.iocoder.yudao.module.system.service.ip.AreaService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/express/ShippingTemplatesRegionServiceImpl.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/express/impl/ShippingTemplatesRegionServiceImpl.java
similarity index 98%
rename from yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/express/ShippingTemplatesRegionServiceImpl.java
rename to yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/express/impl/ShippingTemplatesRegionServiceImpl.java
index dadcca922..87e457c2a 100644
--- a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/express/ShippingTemplatesRegionServiceImpl.java
+++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/express/impl/ShippingTemplatesRegionServiceImpl.java
@@ -1,9 +1,10 @@
-package cn.iocoder.yudao.module.product.service.express;
+package cn.iocoder.yudao.module.product.service.express.impl;
import cn.iocoder.yudao.framework.common.util.string.StrUtils;
import cn.iocoder.yudao.module.product.controller.admin.express.vo.ShippingTemplatesRegionRespVO;
import cn.iocoder.yudao.module.product.dal.dataobject.express.ShippingTemplatesRegionDO;
import cn.iocoder.yudao.module.product.dal.mysql.express.ShippingTemplatesRegionMapper;
+import cn.iocoder.yudao.module.product.service.express.ShippingTemplatesRegionService;
import cn.iocoder.yudao.module.system.controller.admin.ip.vo.AreaNodeRespVO;
import cn.iocoder.yudao.module.system.service.ip.AreaService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/express/ShippingTemplatesServiceImpl.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/express/impl/ShippingTemplatesServiceImpl.java
similarity index 95%
rename from yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/express/ShippingTemplatesServiceImpl.java
rename to yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/express/impl/ShippingTemplatesServiceImpl.java
index dfe4d7eb2..6cdcd3311 100644
--- a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/express/ShippingTemplatesServiceImpl.java
+++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/express/impl/ShippingTemplatesServiceImpl.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.module.product.service.express;
+package cn.iocoder.yudao.module.product.service.express.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
@@ -7,6 +7,10 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.product.controller.admin.express.vo.*;
import cn.iocoder.yudao.module.product.dal.dataobject.express.ShippingTemplatesDO;
import cn.iocoder.yudao.module.product.dal.mysql.express.ShippingTemplatesMapper;
+import cn.iocoder.yudao.module.product.service.express.ShippingTemplatesFreeService;
+import cn.iocoder.yudao.module.product.service.express.ShippingTemplatesNoDeliveryService;
+import cn.iocoder.yudao.module.product.service.express.ShippingTemplatesRegionService;
+import cn.iocoder.yudao.module.product.service.express.ShippingTemplatesService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
diff --git a/yudao-module-mall/yudao-module-shop-api/src/main/java/cn/iocoder/yudao/module/shop/response/order/StoreOrderCountItemResponse.java b/yudao-module-mall/yudao-module-shop-api/src/main/java/cn/iocoder/yudao/module/shop/response/order/StoreOrderCountItemResponse.java
index 38b9091b8..5b42b10e1 100644
--- a/yudao-module-mall/yudao-module-shop-api/src/main/java/cn/iocoder/yudao/module/shop/response/order/StoreOrderCountItemResponse.java
+++ b/yudao-module-mall/yudao-module-shop-api/src/main/java/cn/iocoder/yudao/module/shop/response/order/StoreOrderCountItemResponse.java
@@ -29,35 +29,35 @@ public class StoreOrderCountItemResponse implements Serializable {
private static final long serialVersionUID = -8605913636959651047L;
@Schema(description = "总数")
- private Integer all;
+ private Long all;
@Schema(description = "未支付")
- private Integer unPaid;
+ private Long unPaid;
@Schema(description = "未发货")
- private Integer notShipped;
+ private Long notShipped;
@Schema(description = "待收货")
- private Integer spike;
+ private Long spike;
@Schema(description = "待评价")
- private Integer bargain;
+ private Long bargain;
@Schema(description = "交易完成")
- private Integer complete;
+ private Long complete;
@Schema(description = "待核销")
- private Integer toBeWrittenOff;
+ private Long toBeWrittenOff;
@Schema(description = "退款中")
- private Integer refunding;
+ private Long refunding;
@Schema(description = "已退款")
- private Integer refunded;
+ private Long refunded;
@Schema(description = "0 未退款 1 申请中 2 已退款")
- private Integer refundStatus;
+ private Long refundStatus;
@Schema(description = "已删除")
- private Integer deleted;
+ private Long deleted;
}
diff --git a/yudao-module-mall/yudao-module-shop-api/src/main/java/cn/iocoder/yudao/module/shop/response/order/StoreOrderTopItemResponse.java b/yudao-module-mall/yudao-module-shop-api/src/main/java/cn/iocoder/yudao/module/shop/response/order/StoreOrderTopItemResponse.java
index df0548f46..c5d74f920 100644
--- a/yudao-module-mall/yudao-module-shop-api/src/main/java/cn/iocoder/yudao/module/shop/response/order/StoreOrderTopItemResponse.java
+++ b/yudao-module-mall/yudao-module-shop-api/src/main/java/cn/iocoder/yudao/module/shop/response/order/StoreOrderTopItemResponse.java
@@ -29,7 +29,7 @@ public class StoreOrderTopItemResponse implements Serializable {
private static final long serialVersionUID = -7583407020447771557L;
@Schema(description = "订单数量")
- private Integer count;
+ private Long count;
@Schema(description = "订单金额")
private BigDecimal amount;
diff --git a/yudao-module-mall/yudao-module-shop-biz/pom.xml b/yudao-module-mall/yudao-module-shop-biz/pom.xml
index 93831ac83..9ed68ff68 100644
--- a/yudao-module-mall/yudao-module-shop-biz/pom.xml
+++ b/yudao-module-mall/yudao-module-shop-biz/pom.xml
@@ -75,5 +75,17 @@
com.github.pagehelper
pagehelper-spring-boot-starter
+
+ cn.iocoder.boot
+ yudao-module-member-biz
+ 1.7.2-snapshot
+ compile
+
+
+ cn.iocoder.boot
+ yudao-module-system-biz
+ 1.7.2-snapshot
+ compile
+
\ No newline at end of file
diff --git a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/constants/PayConstants.java b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/constants/PayConstants.java
new file mode 100644
index 000000000..9b83d231e
--- /dev/null
+++ b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/constants/PayConstants.java
@@ -0,0 +1,56 @@
+package cn.iocoder.yudao.module.shop.constants;
+
+/**
+ * 支付相关常量类
+ * +----------------------------------------------------------------------
+ * | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
+ * +----------------------------------------------------------------------
+ * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
+ * +----------------------------------------------------------------------
+ * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
+ * +----------------------------------------------------------------------
+ * | Author: CRMEB Team
+ * +----------------------------------------------------------------------
+ */
+public class PayConstants {
+
+ //支付方式
+ public static final String PAY_TYPE_WE_CHAT = "weixin"; //微信支付
+ public static final String PAY_TYPE_YUE = "yue"; //余额支付
+ public static final String PAY_TYPE_OFFLINE = "offline"; //线下支付
+ public static final String PAY_TYPE_ALI_PAY = "alipay"; //支付宝
+ public static final String PAY_TYPE_ZERO_PAY = "zeroPay"; // 零元付
+
+ //支付渠道
+ public static final String PAY_CHANNEL_WE_CHAT_H5 = "weixinh5"; //H5唤起微信支付
+ public static final String PAY_CHANNEL_WE_CHAT_PUBLIC = "public"; //公众号
+ public static final String PAY_CHANNEL_WE_CHAT_PROGRAM = "routine"; //小程序
+ public static final String PAY_CHANNEL_WE_CHAT_APP_IOS = "weixinAppIos"; //微信App支付ios
+ public static final String PAY_CHANNEL_WE_CHAT_APP_ANDROID = "weixinAppAndroid"; //微信App支付android
+
+ public static final String PAY_CHANNEL_ALI_PAY = "alipay"; //支付宝支付
+ public static final String PAY_CHANNEL_ALI_APP_PAY = "appAliPay"; //支付宝App支付
+
+ public static final String WX_PAY_TRADE_TYPE_JS = "JSAPI";
+ public static final String WX_PAY_TRADE_TYPE_H5 = "MWEB";
+
+ //微信支付接口请求地址
+ public static final String WX_PAY_API_URL = "https://api.mch.weixin.qq.com/";
+ // 微信统一预下单
+ public static final String WX_PAY_API_URI = "pay/unifiedorder";
+ // 微信查询订单
+ public static final String WX_PAY_ORDER_QUERY_API_URI = "pay/orderquery";
+ // 微信支付回调地址
+ public static final String WX_PAY_NOTIFY_API_URI = "/api/admin/payment/callback/wechat";
+ // 微信退款回调地址
+ public static final String WX_PAY_REFUND_NOTIFY_API_URI = "/api/admin/payment/callback/wechat/refund";
+
+ public static final String WX_PAY_SIGN_TYPE_MD5 = "MD5";
+ public static final String WX_PAY_SIGN_TYPE_SHA256 = "HMAC-SHA256";
+
+ public static final String PAY_BODY = "Crmeb支付中心-订单支付";
+ public static final String FIELD_SIGN = "sign";
+
+ // 公共号退款
+ public static final String WX_PAY_REFUND_API_URI= "secapi/pay/refund";
+}
diff --git a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/constants/WeChatConstants.java b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/constants/WeChatConstants.java
new file mode 100644
index 000000000..9ed8ee677
--- /dev/null
+++ b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/constants/WeChatConstants.java
@@ -0,0 +1,387 @@
+package cn.iocoder.yudao.module.shop.constants;
+
+/** 微信配置
+ * +----------------------------------------------------------------------
+ * | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
+ * +----------------------------------------------------------------------
+ * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
+ * +----------------------------------------------------------------------
+ * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
+ * +----------------------------------------------------------------------
+ * | Author: CRMEB Team
+ * +----------------------------------------------------------------------
+ */
+public class WeChatConstants {
+
+ //-------------------------------------------微信系统配置------------------------------------------------------------
+ /** 公众号appId key */
+ public static final String WECHAT_PUBLIC_APPID = "wechat_appid";
+ /** 公众号appSecret key */
+ public static final String WECHAT_PUBLIC_APPSECRET = "wechat_appsecret";
+ /** 小程序appId key */
+ public static final String WECHAT_MINI_APPID = "routine_appid";
+ // 小程序 名称
+ public static final String WECHAT_MINI_NAME = "routine_name";
+ /** 小程序appSecret key */
+ public static final String WECHAT_MINI_APPSECRET = "routine_appsecret";
+
+
+
+
+
+ //------------------------------------------------微信公众号------------------------------------------------
+ //微信接口请求地址
+ public static final String API_URL = "https://api.weixin.qq.com/";
+ //获取token
+ public static final String API_TOKEN_URI = "cgi-bin/token?grant_type=client_credential";
+ // 微信token 过期时间,娶了一个中间值 4000 官方的7200不靠谱
+ public static final Long API_TOKEN_EXPIRES = 3000L;
+ //微信公众号菜单创建
+ public static final String PUBLIC_API_MENU_CREATE_URI = "cgi-bin/menu/create";
+ //微信公众号菜单获取
+ public static final String PUBLIC_API_MENU_GET_URI = "cgi-bin/menu/get";
+ //微信公众号菜单删除
+ public static final String PUBLIC_API_MENU_DELETE_URI = "cgi-bin/menu/delete";
+ //微信公众号,获取自定义菜单配置接口
+ public static final String PUBLIC_API_MENU_SELF_SET_URI = "cgi-bin/get_current_selfmenu_info";
+ //微信公众号,创建个性化菜单
+ public static final String PUBLIC_API_MENU_ADD_CONDITIONAL_URI = "cgi-bin/menu/addconditional";
+ //微信公众号,删除个性化菜单
+ public static final String PUBLIC_API_MENU_DEL_CONDITIONAL_URI = "cgi-bin/menu/delconditional";
+ //微信公众号,测试个性化菜单匹配结果
+ public static final String PUBLIC_API_USER_INFO_URI = "cgi-bin/menu/trymatch";
+ //获取公众号已创建的标签
+ public static final String PUBLIC_API_TAG_LIST_URI = "cgi-bin/tags/get";
+ //创建标签
+ public static final String PUBLIC_API_TAG_CREATE_URI = "cgi-bin/tags/create";
+ //编辑标签
+ public static final String PUBLIC_API_TAG_UPDATE_URI = "cgi-bin/tags/update";
+ //删除标签
+ public static final String PUBLIC_API_TAG_DELETE_URI = "cgi-bin/tags/delete";
+ //获取标签下粉丝列表
+ public static final String PUBLIC_API_TAG_USER_GET_URI = "cgi-bin/user/tag/get";
+ //批量为用户打标签
+ public static final String PUBLIC_API_TAG_MEMBER_BATCH_URI = "cgi-bin/tags/members/batchtagging";
+ //批量为用户取消标签
+ public static final String PUBLIC_API_TAG_MEMBER_BATCH_UN_URI = "cgi-bin/tags/members/batchuntagging";
+ //获取用户身上的标签列表
+ public static final String PUBLIC_API_TAG_GET_ID_LIST_URI = "cgi-bin/tags/getidlist";
+ //获取 JsApiTicket
+ public static final String PUBLIC_API_JS_API_TICKET = "cgi-bin/ticket/getticket";
+ //发送公众号模板消息
+ public static final String PUBLIC_API_PUBLIC_TEMPLATE_MESSAGE_SEND = "cgi-bin/message/template/send";
+ //获取设置的行业信息
+ public static final String PUBLIC_API_TEMPLATE_MESSAGE_INDUSTRY = "cgi-bin/template/get_industry";
+ //新增其他类型永久素材
+ public static final String PUBLIC_API_MEDIA_UPLOAD = "cgi-bin/material/add_material";
+ //获取永久素材
+ public static final String PUBLIC_API_MEDIA_GET = "cgi-bin/material/get_material";
+ //获取微信素材总数
+ public static final String PUBLIC_API_MEDIA_COUNT = "cgi-bin/material/get_materialcount";
+ //发送客服消息
+ public static final String PUBLIC_API_KF_MESSAGE_SEND = "cgi-bin/message/custom/send";
+
+
+ //------------------------------------------------微信小程序------------------------------------------------
+ //小程序行业消息
+ public static final String PUBLIC_API_PROGRAM_CATEGORY = "wxaapi/newtmpl/getcategory";
+ //小程序公共模板库
+ public static final String PUBLIC_API_PROGRAM_PUBLIC_TEMP = "wxaapi/newtmpl/getpubtemplatetitles";
+ //小程序模板关键词列表
+ public static final String PUBLIC_API_PROGRAM_PUBLIC_TEMP_KEYWORDS = "wxaapi/newtmpl/getpubtemplatekeywords";
+ //添加小程序订阅消息
+ public static final String PUBLIC_API_ADD_PROGRAM_TEMPLATE = "wxaapi/newtmpl/addtemplate";
+ //删除小程序订阅消息
+ public static final String PUBLIC_API_DELETE_PROGRAM_TEMPLATE = "wxaapi/newtmpl/deltemplate";
+ //发送小程序模板消息
+ public static final String PUBLIC_API_PROGRAM_TEMPLATE_MESSAGE_SEND = "cgi-bin/message/subscribe/send";
+
+ //授权登录
+
+ //获取临时code跳转地址
+ public static final String WE_CHAT_AUTHORIZE_REDIRECT_URI_URL = "/api/front/wechat/authorize/login";
+
+ //获取openId
+ public static final String WE_CHAT_AUTHORIZE_GET_OPEN_ID = "sns/oauth2/access_token";
+
+ //获取小程序openId
+ public static final String WE_CHAT_AUTHORIZE_PROGRAM_GET_OPEN_ID = "sns/jscode2session";
+
+ //获取用户信息
+ public static final String WE_CHAT_AUTHORIZE_GET_USER_INFO = "sns/userinfo";
+
+ //生成二维码
+ public static final String WE_CHAT_CREATE_QRCODE = "wxa/getwxacodeunlimit";
+
+ //微信消息存储队列
+ public static final String WE_CHAT_MESSAGE_SEND_KEY = "we_chat_message_send_list";
+
+ //大家注意这里消息类型的定义,以 RESP 开头的表示返回的消息类型,以 REQ 表示微信服务器发来的消息类型
+ /**
+ * 返回消息类型:文本
+ */
+ public static final String WE_CHAT_MESSAGE_RESP_MESSAGE_TYPE_TEXT = "text";
+ /**
+ * 返回消息类型:音乐
+ */
+ public static final String WE_CHAT_MESSAGE_RESP_MESSAGE_TYPE_MUSIC = "music";
+ /**
+ * 返回消息类型:图文
+ */
+ public static final String WE_CHAT_MESSAGE_RESP_MESSAGE_TYPE_NEWS = "news";
+ /**
+ * 返回消息类型:图片
+ */
+ public static final String WE_CHAT_MESSAGE_RESP_MESSAGE_TYPE_IMAGE = "image";
+ /**
+ * 返回消息类型:语音
+ */
+ public static final String WE_CHAT_MESSAGE_RESP_MESSAGE_TYPE_VOICE = "voice";
+ /**
+ * 返回消息类型:视频
+ */
+ public static final String WE_CHAT_MESSAGE_RESP_MESSAGE_TYPE_VIDEO = "video";
+ /**
+ * 请求消息类型:文本
+ */
+ public static final String WE_CHAT_MESSAGE_REQ_MESSAGE_TYPE_TEXT = "text";
+ /**
+ * 请求消息类型:图片
+ */
+ public static final String WE_CHAT_MESSAGE_REQ_MESSAGE_TYPE_IMAGE = "image";
+ /**
+ * 请求消息类型:链接
+ */
+ public static final String WE_CHAT_MESSAGE_REQ_MESSAGE_TYPE_LINK = "link";
+ /**
+ * 请求消息类型:地理位置
+ */
+ public static final String WE_CHAT_MESSAGE_REQ_MESSAGE_TYPE_LOCATION = "location";
+ /**
+ * 请求消息类型:音频
+ */
+ public static final String WE_CHAT_MESSAGE_REQ_MESSAGE_TYPE_VOICE = "voice";
+ /**
+ * 请求消息类型:视频
+ */
+ public static final String WE_CHAT_MESSAGE_REQ_MESSAGE_TYPE_VIDEO = "video";
+ /**
+ * 请求消息类型:推送
+ */
+ public static final String WE_CHAT_MESSAGE_REQ_MESSAGE_TYPE_EVENT = "event";
+ /**
+ * 事件类型:subscribe(订阅)
+ */
+ public static final String WE_CHAT_MESSAGE_EVENT_TYPE_SUBSCRIBE = "subscribe";
+ /**
+ * 事件类型:unsubscribe(取消订阅)
+ */
+ public static final String WE_CHAT_MESSAGE_EVENT_TYPE_UNSUBSCRIBE = "unsubscribe";
+ /**
+ * 事件类型:CLICK(自定义菜单点击事件)
+ */
+ public static final String WE_CHAT_MESSAGE_EVENT_TYPE_CLICK = "click";
+ /**
+ * 事件类型:VIEW(自定义菜单 URl 视图)
+ */
+ public static final String WE_CHAT_MESSAGE_EVENT_TYPE_VIEW = "view";
+ /**
+ * 事件类型:LOCATION(上报地理位置事件)
+ */
+ public static final String WE_CHAT_MESSAGE_EVENT_TYPE_LOCATION = "LOCATION";
+ /**
+ * 事件类型:LOCATION(上报地理位置事件)
+ */
+ public static final String WE_CHAT_MESSAGE_EVENT_TYPE_SCAN = "SCAN";
+
+ //无效关键字key
+ public static final String WE_CHAT_MESSAGE_DEFAULT_CONTENT_KEY = "default";
+ //Js sdk api 列表
+ public static final String PUBLIC_API_JS_API_SDK_LIST = "openAddress,updateTimelineShareData,updateAppMessageShareData,onMenuShareTimeline,onMenuShareAppMessage,onMenuShareQQ,onMenuShareWeibo,onMenuShareQZone,startRecord,stopRecord,onVoiceRecordEnd,playVoice,pauseVoice,stopVoice,onVoicePlayEnd,uploadVoice,downloadVoice,chooseImage,previewImage,uploadImage,downloadImage,translateVoice,getNetworkType,openLocation,getLocation,hideOptionMenu,showOptionMenu,hideMenuItems,showMenuItems,hideAllNonBaseMenuItem,showAllNonBaseMenuItem,closeWindow,scanQRCode,chooseWXPay,openProductSpecificView,addCard,chooseCard,openCard";
+
+
+ //token
+ public static final String REDIS_TOKEN_KEY = "wechat_token";
+ public static final String REDIS_PROGRAM_TOKEN_KEY = "wechat_program_token";
+ //tag
+ public static final String REDIS_TAGS_LIST_KEY = "wechat_tags_list";
+ //user tag
+ public static final String REDIS_TAGS_LIST_USER_KEY = "wechat_tags_user_list";
+ //微信菜单
+ public static final String REDIS_PUBLIC_MENU_KEY = "wechat_public_menu_key";
+ //微信自定义菜单
+ public static final String REDIS_PUBLIC_MENU_SELF_KEY = "wechat_public_menu_self_key";
+
+
+
+ //授权请求地址
+ public static final String WE_CHAT_AUTHORIZE_URL = "https://open.weixin.qq.com/connect/oauth2/authorize?appid={$appId}&redirect_uri={$redirectUri}&response_type=code&scope=snsapi_base&state=#wechat_redirect";
+
+
+ //-------------------------------------------微信支付------------------------------------------------------------
+ //微信支付接口请求地址
+ public static final String PAY_API_URL = "https://api.mch.weixin.qq.com/";
+ public static final String PAY_API_URI = "pay/unifiedorder";
+ public static final String PAY_NOTIFY_API_URI_WECHAT = "/api/admin/payment/callback/wechat";
+ // 公共号退款
+ public static final String PAY_REFUND_API_URI_WECHAT = "secapi/pay/refund";
+
+ public static final String PAY_TYPE_JS = "JSAPI";
+ public static final String PAY_TYPE_H5 = "MWEB";
+
+ // --------------------------------------------------------------------------------------------------------
+ // 微信部分
+ // --------------------------------------------------------------------------------------------------------
+
+ /** 获取accessToken的url */
+ public static final String WECHAT_ACCESS_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={}&secret={}";
+ /** 开放平台获取accessToken的url */
+ public static final String WECHAT_OAUTH2_ACCESS_TOKEN_URL = "https://api.weixin.qq.com/sns/oauth2/access_token?appid={}&secret={}&code={}&grant_type=authorization_code";
+ /** 开放平台获取用户的url */
+ public static final String WECHAT_SNS_USERINFO_URL = "https://api.weixin.qq.com/sns/userinfo?access_token={}&openid={}&lang={}";
+
+ /** 公众号js-sdk获取ticket的url */
+ public static final String WECHAT_PUBLIC_JS_TICKET_URL = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={}&type=jsapi";
+ /** 公众号发送模板消息的url */
+ public static final String WECHAT_PUBLIC_SEND_TEMPLATE_URL = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token={}";
+ /** 公众号获取自定义菜单配置的url */
+ public static final String WECHAT_PUBLIC_MENU_GET_URL = "https://api.weixin.qq.com/cgi-bin/menu/get?access_token={}";
+ /** 公众号创建自定义菜单的url */
+ public static final String WECHAT_PUBLIC_MENU_CREATE_URL = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token={}";
+ /** 公众号删除自定义菜单的url */
+ public static final String WECHAT_PUBLIC_MENU_DELETE_URL = "https://api.weixin.qq.com/cgi-bin/menu/delete?access_token={}";
+ /** 企业号上传其他类型永久素材的url */
+ public static final String WECHAT_PUBLIC_QYAPI_ADD_MATERIAL_URL = "https://qyapi.weixin.qq.com/cgi-bin/material/add_material?type={}&access_token={}";
+ /** 公众号获取模板列表(自己的) */
+ public static final String WECHAT_PUBLIC_GET_ALL_PRIVATE_TEMPLATE_URL = "https://api.weixin.qq.com/cgi-bin/template/get_all_private_template?access_token={}";
+ /** 公众号删除模板(自己的) */
+ public static final String WECHAT_PUBLIC_DEL_PRIVATE_TEMPLATE_URL = "https://api.weixin.qq.com/cgi-bin/template/del_private_template?access_token={}";
+ /** 公众号添加模板(自己的) */
+ public static final String WECHAT_PUBLIC_API_ADD_TEMPLATE_URL = "https://api.weixin.qq.com/cgi-bin/template/api_add_template?access_token={}";
+
+
+ /** 小程序登录凭证校验的url */
+ public static final String WECHAT_MINI_SNS_AUTH_CODE2SESSION_URL = "https://api.weixin.qq.com/sns/jscode2session?appid={}&secret={}&js_code={}&grant_type=authorization_code";
+ /** 小程序生成小程序码的url */
+ public static final String WECHAT_MINI_QRCODE_UNLIMITED_URL = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token={}";
+ /** 小程序发送订阅消息的url */
+ public static final String WECHAT_MINI_SEND_SUBSCRIBE_URL = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token={}";
+ /** 小程序获取订阅列表(自己的) */
+ public static final String WECHAT_MINI_GET_ALL_PRIVATE_TEMPLATE_URL = "https://api.weixin.qq.com/wxaapi/newtmpl/gettemplate?access_token={}";
+ /** 小程序删除模板(自己的) */
+ public static final String WECHAT_MINI_DEL_PRIVATE_TEMPLATE_URL = "https://api.weixin.qq.com/wxaapi/newtmpl/deltemplate?access_token={}";
+ /** 小程序获取订阅模板(小程序的) */
+ public static final String WECHAT_MINI_GET_TEMPLATE_URL = "https://api.weixin.qq.com/wxaapi/newtmpl/getpubtemplatekeywords?access_token={}&tid={}";
+ /** 公众号添加模板(自己的) */
+ public static final String WECHAT_MINI_API_ADD_TEMPLATE_URL = "https://api.weixin.qq.com/wxaapi/newtmpl/addtemplate?access_token={}";
+
+ /** 小程序accessToken redis key */
+ public static final String REDIS_WECAHT_MINI_ACCESS_TOKEN_KEY = "wechat_mini_accessToken";
+ /** 公众号accessToken redis key */
+ public static final String REDIS_WECAHT_PUBLIC_ACCESS_TOKEN_KEY = "wechat_public_accessToken";
+ /** 公众号JsApiTicket redis key */
+ public static final String REDIS_PUBLIC_JS_API_TICKET = "wechat_js_api_ticket";
+ public static final Long REDIS_PUBLIC_JS_API_TICKET_EXPRESS = 7100L;
+
+ /**
+ * --------------------------------------------------------------------------------------------------------
+ * 以下为视频号相关部分
+ * --------------------------------------------------------------------------------------------------------
+ */
+
+ /*------------------------------------------ 申请接入接口 START ---------------------------------------*/
+
+ /* 申请接入申请 */
+ public static final String WECHAT_SHOP_REGISTER_APPLY = "https://api.weixin.qq.com/shop/register/apply?access_token={}";
+ /* 获取接入状态 */
+ public static final String WECHAT_SHOP_REGISTER_CHECK = "https://api.weixin.qq.com/shop/register/check?access_token={}";
+
+ /*------------------------------------------ 申请接入接口 END ---------------------------------------*/
+
+
+ /*------------------------------------------ 接入商品前必须接口 START ---------------------------------------*/
+ /** 获取商品类目(自定义交易组件) */
+ public static final String WECHAT_SHOP_CAT_GET_URL = "https://api.weixin.qq.com/shop/cat/get?access_token={}";
+ /** 上传图片 **/
+ public static final String WECHAT_SHOP_IMG_UPLOAD = "https://api.weixin.qq.com/shop/img/upload?&access_token={}";
+ /** 上传品牌信息 */
+ public static final String WECHAT_SHOP_AUDIT_AUDIT_BRAND = "https://api.weixin.qq.com/shop/audit/audit_brand?&access_token={}";
+ /** 上传类目资质 */
+ public static final String WECHAT_SHOP_AUDIT_AUDIT_CATEGORY = "https://api.weixin.qq.com/shop/audit/audit_category?&access_token={}";
+ /** 查询类目审核结果 */
+ public static final String WECHAT_SHOP_AUDIT_RESULT= "https://api.weixin.qq.com/shop/audit/result?access_token={}";
+ /** 获取小程序提交过的入驻资质信息 */
+ public static final String WECHAT_SHOP_AUDIT_GET_MINIAPP_CERTIFICATE= "https://api.weixin.qq.com/shop/audit/get_miniapp_certificate?access_token={}";
+ /*------------------------------------------ 接入商品前必须接口 END ---------------------------------------*/
+
+
+ /*------------------------------------------ 商家入驻接口 START ---------------------------------------*/
+ /** 获取类目列表 */
+ public static final String WECHAT_SHOP_ACCOUNT_GET_CATEGORY_LIST = "https://api.weixin.qq.com/shop/account/get_category_list?access_token={}";
+ /** 获取品牌列表 */
+ public static final String WECHAT_SHOP_ACCOUNT_GET_BRAND_LIST = "https://api.weixin.qq.com/shop/account/get_brand_list?access_token={}";
+ /** 更新商家信息 */
+ public static final String WECHAT_SHOP_ACCOUNT_UPDATE_INFO = "https://api.weixin.qq.com/shop/account/update_info?access_token={}";
+ /** 获取商家信息 */
+ public static final String WECHAT_SHOP_ACCOUNT_GET_INFO = "https://api.weixin.qq.com/shop/account/get_info?access_token={}";
+ /*------------------------------------------ 商家入驻接口 END ---------------------------------------*/
+
+ /*------------------------------------------ SPU 接口 START ---------------------------------------*/
+// /** 获取品牌列表(自定义交易组件) */
+// public static final String WECHAT_SHOP_BRAND_GET_URL = "https://api.weixin.qq.com/shop/account/get_brand_list?access_token={}";
+ /** 添加商品(自定义交易组件) */
+ public static final String WECHAT_SHOP_SPU_ADD_URL = "https://api.weixin.qq.com/shop/spu/add?access_token={}";
+ /** 删除商品(自定义交易组件) */
+ public static final String WECHAT_SHOP_SPU_DEL_URL = "https://api.weixin.qq.com/shop/spu/del?access_token={}";
+ /** 撤回商品审核(自定义交易组件) */
+ public static final String WECHAT_SHOP_SPU_DEL_AUDIT_URL = "https://api.weixin.qq.com/shop/spu/del_audit?access_token={}";
+ /** 获取商品(自定义交易组件) */
+ public static final String WECHAT_SHOP_SPU_GET_URL = "https://api.weixin.qq.com/shop/spu/get?access_token={}";
+ /** 获取商品列表(自定义交易组件) */
+ public static final String WECHAT_SHOP_SPU_GET_LIST_URL = "https://api.weixin.qq.com/shop/spu/get_list?access_token={}";
+ /** 更新商品(自定义交易组件) */
+ public static final String WECHAT_SHOP_SPU_UPDATE_URL = "https://api.weixin.qq.com/shop/spu/update?access_token={}";
+ /** 上架商品(自定义交易组件) */
+ public static final String WECHAT_SHOP_SPU_LISTING_URL = "https://api.weixin.qq.com/shop/spu/listing?access_token={}";
+ /** 下架商品(自定义交易组件) */
+ public static final String WECHAT_SHOP_SPU_DELISTING_URL = "https://api.weixin.qq.com/shop/spu/delisting?access_token={}";
+ /** 检查场景值是否在支付校验范围内(自定义交易组件) */
+ public static final String WECHAT_SHOP_SCENE_CHECK_URL = "https://api.weixin.qq.com/shop/scene/check?access_token={}";
+ /*------------------------------------------ SPU 接口 END ---------------------------------------*/
+
+ /*------------------------------------------ 订单 接口 START ---------------------------------------*/
+ /** 生成订单并获取ticket(自定义交易组件) */
+ public static final String WECHAT_SHOP_ORDER_ADD_URL = "https://api.weixin.qq.com/shop/order/add?access_token={}";
+ /** 同步订单支付结果(自定义交易组件) */
+ public static final String WECHAT_SHOP_ORDER_PAY_URL = "https://api.weixin.qq.com/shop/order/pay?access_token={}";
+ /** 获取订单(自定义交易组件) */
+ public static final String WECHAT_SHOP_ORDER_GET_URL = "https://api.weixin.qq.com/shop/order/get?access_token={}";
+ /*------------------------------------------ 订单 接口 END ---------------------------------------*/
+
+ /*------------------------------------------ 物流 接口 START ---------------------------------------*/
+ /** 获取快递公司列表(自定义交易组件) */
+ public static final String WECHAT_SHOP_DELIVERY_GET_COMPANY_LIST_URL = "https://api.weixin.qq.com/shop/delivery/get_company_list?access_token={}";
+ /** 订单发货(自定义交易组件) */
+ public static final String WECHAT_SHOP_DELIVERY_SEND_URL = "https://api.weixin.qq.com/shop/delivery/send?access_token={}";
+ /** 订单确认收货(自定义交易组件) */
+ public static final String WECHAT_SHOP_DELIVERY_RECIEVE_URL = "https://api.weixin.qq.com/shop/delivery/recieve?access_token={}";
+ /*------------------------------------------ 物流 接口 END ---------------------------------------*/
+
+ /*------------------------------------------ 售后 接口 START ---------------------------------------*/
+ /** 创建售后(自定义交易组件) */
+ public static final String WECHAT_SHOP_AFTERSALE_ADD_URL = "https://api.weixin.qq.com/shop/aftersale/add?access_token={}";
+ /** 获取售后(自定义交易组件) */
+ public static final String WECHAT_SHOP_AFTERSALE_GET_URL = "https://api.weixin.qq.com/shop/aftersale/get?access_token={}";
+ /** 更新售后(自定义交易组件) */
+ public static final String WECHAT_SHOP_AFTERSALE_UPDATE_URL = "https://api.weixin.qq.com/shop/aftersale/update?access_token={}";
+ /*------------------------------------------ 售后 接口 END ---------------------------------------*/
+
+
+ /** 自定义组件,商品类型 redis key */
+ public static final String REDIS_WECHAT_SHOP_CAT_KEY = "wechat_shop_cat";
+
+ /** 微信小程序回调,商品审核回调事件 */
+ public static final String WECAHT_CALLBACK_EVENT_SPU_AUDIT = "open_product_spu_audit";
+ /** 微信小程序回调,品牌审核回调事件 */
+ public static final String WECAHT_CALLBACK_EVENT_BRAND_AUDIT = "open_product_brand_audit";
+}
diff --git a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/admin/order/vo/WxRefundResponseVo.java b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/admin/order/vo/WxRefundResponseVo.java
new file mode 100644
index 000000000..4a9855def
--- /dev/null
+++ b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/admin/order/vo/WxRefundResponseVo.java
@@ -0,0 +1,109 @@
+package cn.iocoder.yudao.module.shop.controller.admin.order.vo;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * 微信退款返回对象
+ * +----------------------------------------------------------------------
+ * | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
+ * +----------------------------------------------------------------------
+ * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
+ * +----------------------------------------------------------------------
+ * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
+ * +----------------------------------------------------------------------
+ * | Author: CRMEB Team
+ * +----------------------------------------------------------------------
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@Schema(description="微信退款返回对象")
+public class WxRefundResponseVo {
+ @Schema(description = "SUCCESS/FAIL此字段是通信标识,非交易标识,交易是否成功需要查看trade_state来判断")
+ @JsonProperty(value = "return_code")
+ private String returnCode;
+
+ @Schema(description = "当return_code为FAIL时返回信息为错误原因 ,例如 签名失败 参数格式校验错误")
+ @JsonProperty(value = "return_msg")
+ private String returnMsg;
+
+ @Schema(description = "SUCCESS/FAIL 业务结果")
+ @JsonProperty(value = "result_code")
+ private String resultCode;
+
+ @Schema(description = "详细参见错误列表")
+ @JsonProperty(value = "err_code")
+ private String errCode;
+
+ @Schema(description = "错误返回的信息描述")
+ @JsonProperty(value = "err_code_des")
+ private String errCodeDes;
+
+ @Schema(description = "调用接口提交的公众账号ID")
+ @JsonProperty(value = "appid")
+ private String appId;
+
+ @Schema(description = "调用接口提交的商户号")
+ @JsonProperty(value = "mch_id")
+ private String mchId;
+
+ @Schema(description = "微信返回的随机字符串")
+ @JsonProperty(value = "nonce_str")
+ private String nonceStr;
+
+ @Schema(description = "微信返回的签名")
+ private String sign;
+
+ @Schema(description = "微信支付订单号")
+ @JsonProperty(value = "transaction_id")
+ private String transactionId;
+
+ @Schema(description = "商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号", required = true)
+ @JsonProperty(value = "out_trade_no")
+ private String outTradeNo;
+
+ @Schema(description = "商户退款单号,同一退款单号多次请求只退一笔。")
+ @JsonProperty(value = "out_refund_no")
+ private String outRefundNo;
+
+ @Schema(description = "微信退款单号")
+ @JsonProperty(value = "refund_id")
+ private String refundId;
+
+ @Schema(description = "退款总金额,单位为分,可以做部分退款")
+ @JsonProperty(value = "refund_fee")
+ private Integer refundFee;
+
+ @Schema(description = "应结退款金额")
+ @JsonProperty(value = "settlement_refund_fee")
+ private Integer settlementRefundFee;
+
+ @Schema(description = "标价金额")
+ @JsonProperty(value = "total_fee")
+ private Integer totalFee;
+
+ @Schema(description = "应结订单金额")
+ @JsonProperty(value = "settlement_total_fee")
+ private Integer settlementTotalFee;
+
+ @Schema(description = "标价币种,订单金额货币类型,符合ISO 4217标准的三位字母代码,默认人民币:CNY,其他值列表详见货币类型")
+ @JsonProperty(value = "fee_type")
+ private String feeType;
+
+ @Schema(description = "现金支付金额")
+ @JsonProperty(value = "cash_fee")
+ private Integer cashFee;
+
+ @Schema(description = "现金支付币种,订单金额货币类型,符合ISO 4217标准的三位字母代码,默认人民币:CNY,其他值列表详见货币类型")
+ @JsonProperty(value = "cash_fee_type")
+ private String cashFeeType;
+
+ @Schema(description = "现金退款金额")
+ @JsonProperty(value = "cash_refund_fee")
+ private Integer cashRefundFee;
+
+}
diff --git a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/admin/order/vo/WxRefundVo.java b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/admin/order/vo/WxRefundVo.java
new file mode 100644
index 000000000..0eb2d2d8a
--- /dev/null
+++ b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/admin/order/vo/WxRefundVo.java
@@ -0,0 +1,64 @@
+
+package cn.iocoder.yudao.module.shop.controller.admin.order.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * 调用微信退款所需要的参数
+ * +----------------------------------------------------------------------
+ * | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
+ * +----------------------------------------------------------------------
+ * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
+ * +----------------------------------------------------------------------
+ * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
+ * +----------------------------------------------------------------------
+ * | Author: CRMEB Team
+ * +----------------------------------------------------------------------
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@Schema(description="调用微信退款所需要的参数")
+public class WxRefundVo {
+
+ @Schema(description = "appId,公众号名称,由商户传入", required = true)
+ private String appid;
+
+ @Schema(description = "直连商户的商户号,由微信支付生成并下发", required = true)
+ private String mch_id;
+
+ @Schema(description = "随机字符串,不长于32位", required = true)
+ private String nonce_str;
+
+ @Schema(description = "签名", required = true)
+ private String sign;
+
+ @Schema(description = "签名类型,目前支持HMAC-SHA256和MD5,默认为MD5")
+ private String sign_type = "MD5";
+
+ @Schema(description = "微信支付订单号:微信生成的订单号,在支付通知中有返回")
+ private String transaction_id;
+
+ @Schema(description = "商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号", required = true)
+ private String out_trade_no;
+
+ @Schema(description = "商户退款单号,同一退款单号多次请求只退一笔。")
+ private String out_refund_no;
+
+ @Schema(description = "订单总金额,单位为分", required = true)
+ private int total_fee;
+
+ @Schema(description = "退款金额,单位为分", required = true)
+ private int refund_fee;
+
+ @Schema(description = "退款货币种类:符合ISO 4217标准的三位字母代码,默认人民币:CNY,其他值列表详见货币类型")
+ private String refund_fee_type = "CNY";
+
+ @Schema(description = "退款结果通知url")
+ private String notify_url;
+
+}
+
diff --git a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/service/order/StoreOrderService.java b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/service/order/StoreOrderService.java
index afe7665a4..ce078009b 100644
--- a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/service/order/StoreOrderService.java
+++ b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/service/order/StoreOrderService.java
@@ -75,7 +75,7 @@ public interface StoreOrderService extends IService {
* @param status 状态参数
* @return 查询到的订单结果
*/
- Integer getTopDataUtil(Integer status, Integer userId);
+ Long getTopDataUtil(Integer status, Integer userId);
List getOrderGroupByDate(String dateLimit, int lefTime);
@@ -195,7 +195,7 @@ public interface StoreOrderService extends IService {
* @param uid 用户uid
* @return Integer
*/
- Integer getOrderCountByUid(Integer uid);
+ Long getOrderCountByUid(Integer uid);
/**
* 获取用户总消费金额
@@ -209,7 +209,7 @@ public interface StoreOrderService extends IService {
* @param uid 用户uid
* @return Integer
*/
- Integer getOrderCountByUidAndDate(Integer uid, String date);
+ Long getOrderCountByUidAndDate(Integer uid, String date);
/**
* 获取用户消费金额(时间)
@@ -267,14 +267,14 @@ public interface StoreOrderService extends IService {
* @param date 日期,yyyy-MM-dd格式
* @return Integer
*/
- Integer getOrderNumByDate(String date);
+ Long getOrderNumByDate(String date);
/**
* 通过日期获取支付订单数量
* @param date 日期,yyyy-MM-dd格式
* @return Integer
*/
- Integer getPayOrderNumByDate(String date);
+ Long getPayOrderNumByDate(String date);
/**
* 通过日期获取支付订单金额
@@ -352,17 +352,17 @@ public interface StoreOrderService extends IService {
* 获取待发货订单数量
* @return Integer
*/
- Integer getNotShippingNum();
+ Long getNotShippingNum();
/**
* 获取退款中订单数量
*/
- Integer getRefundingNum();
+ Long getRefundingNum();
/**
* 获取待核销订单数量
*/
- Integer getNotWriteOffNum();
+ Long getNotWriteOffNum();
/**
* 获取佣金相关数据
diff --git a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/service/order/StoreOrderStatusService.java b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/service/order/StoreOrderStatusService.java
index 1d7fbbddd..17ea221bc 100644
--- a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/service/order/StoreOrderStatusService.java
+++ b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/service/order/StoreOrderStatusService.java
@@ -68,7 +68,7 @@ public interface StoreOrderStatusService extends IService {
* @param date 日期,yyyy-MM-dd格式
* @return Integer
*/
- Integer getRefundOrderNumByDate(String date);
+ Long getRefundOrderNumByDate(String date);
/**
* 通过日期获取订单退款金额
diff --git a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/service/order/impl/StoreOrderInfoServiceImpl.java b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/service/order/impl/StoreOrderInfoServiceImpl.java
index 06432d655..eca336b87 100644
--- a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/service/order/impl/StoreOrderInfoServiceImpl.java
+++ b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/service/order/impl/StoreOrderInfoServiceImpl.java
@@ -3,12 +3,21 @@ package cn.iocoder.yudao.module.shop.service.order.impl;
import cn.iocoder.yudao.module.shop.dal.dataobject.order.StoreOrderInfo;
import cn.iocoder.yudao.module.shop.dal.mysql.order.StoreOrderInfoMapper;
import cn.iocoder.yudao.module.shop.service.order.StoreOrderInfoService;
+import cn.iocoder.yudao.module.shop.service.product.StoreProductReplyService;
+import cn.iocoder.yudao.module.shop.vo.order.OrderInfoDetailVo;
import cn.iocoder.yudao.module.shop.vo.order.StoreOrderInfoOldVo;
import cn.iocoder.yudao.module.shop.vo.order.StoreOrderInfoVo;
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
import java.math.BigDecimal;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -27,15 +36,61 @@ import java.util.List;
@Service
public class StoreOrderInfoServiceImpl extends ServiceImpl
implements StoreOrderInfoService {
+ @Resource
+ private StoreOrderInfoMapper mapper;
+
+ @Autowired
+ private StoreProductReplyService storeProductReplyService;
@Override
public HashMap> getMapInId(List orderIdList) {
- return null;
+ HashMap> map = new HashMap<>();
+ if(orderIdList.size() < 1){
+ return map;
+ }
+ LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery();
+ lambdaQueryWrapper.in(StoreOrderInfo::getOrderId, orderIdList);
+ List systemStoreStaffList = mapper.selectList(lambdaQueryWrapper);
+ if(systemStoreStaffList.size() < 1){
+ return map;
+ }
+ for (StoreOrderInfo storeOrderInfo : systemStoreStaffList) {
+ //解析商品详情JSON
+ StoreOrderInfoOldVo StoreOrderInfoVo = new StoreOrderInfoOldVo();
+ BeanUtils.copyProperties(storeOrderInfo, StoreOrderInfoVo, "info");
+ StoreOrderInfoVo.setInfo(JSON.parseObject(storeOrderInfo.getInfo(), OrderInfoDetailVo.class));
+ if(map.containsKey(storeOrderInfo.getOrderId())){
+ map.get(storeOrderInfo.getOrderId()).add(StoreOrderInfoVo);
+ }else{
+ List storeOrderInfoVoList = new ArrayList<>();
+ storeOrderInfoVoList.add(StoreOrderInfoVo);
+ map.put(storeOrderInfo.getOrderId(), storeOrderInfoVoList);
+ }
+ }
+ return map;
}
@Override
public List getOrderListByOrderId(Integer orderId) {
- return null;
+ LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>();
+ lambdaQueryWrapper.eq(StoreOrderInfo::getOrderId, orderId);
+ List systemStoreStaffList = mapper.selectList(lambdaQueryWrapper);
+ if(systemStoreStaffList.size() < 1){
+ return null;
+ }
+
+ List storeOrderInfoVoList = new ArrayList<>();
+ for (StoreOrderInfo storeOrderInfo : systemStoreStaffList) {
+ //解析商品详情JSON
+ StoreOrderInfoOldVo storeOrderInfoVo = new StoreOrderInfoOldVo();
+ BeanUtils.copyProperties(storeOrderInfo, storeOrderInfoVo, "info");
+ storeOrderInfoVo.setInfo(JSON.parseObject(storeOrderInfo.getInfo(), OrderInfoDetailVo.class));
+ storeOrderInfoVo.getInfo().setIsReply(
+ storeProductReplyService.isReply(storeOrderInfoVo.getUnique(), storeOrderInfoVo.getOrderId()) ? 1 : 0
+ );
+ storeOrderInfoVoList.add(storeOrderInfoVo);
+ }
+ return storeOrderInfoVoList;
}
/**
@@ -46,7 +101,7 @@ public class StoreOrderInfoServiceImpl extends ServiceImpl storeOrderInfos) {
- return false;
+ return saveBatch(storeOrderInfos);
}
/**
@@ -58,7 +113,11 @@ public class StoreOrderInfoServiceImpl extends ServiceImpl lambdaQueryWrapper = new LambdaQueryWrapper<>();
+ lambdaQueryWrapper.eq(StoreOrderInfo::getOrderId, orderId);
+ lambdaQueryWrapper.eq(StoreOrderInfo::getUnique, uni);
+ return mapper.selectOne(lambdaQueryWrapper);
}
/**
@@ -69,7 +128,22 @@ public class StoreOrderInfoServiceImpl extends ServiceImpl getVoListByOrderId(Integer orderId) {
- return null;
+ LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>();
+ lambdaQueryWrapper.eq(StoreOrderInfo::getOrderId, orderId);
+ List systemStoreStaffList = mapper.selectList(lambdaQueryWrapper);
+ if(systemStoreStaffList.size() < 1){
+ return null;
+ }
+
+ List storeOrderInfoVoList = new ArrayList<>();
+ for (StoreOrderInfo storeOrderInfo : systemStoreStaffList) {
+ //解析商品详情JSON
+ StoreOrderInfoVo storeOrderInfoVo = new StoreOrderInfoVo();
+ BeanUtils.copyProperties(storeOrderInfo, storeOrderInfoVo, "info");
+ storeOrderInfoVo.setInfo(JSON.parseObject(storeOrderInfo.getInfo(), OrderInfoDetailVo.class));
+ storeOrderInfoVoList.add(storeOrderInfoVo);
+ }
+ return storeOrderInfoVoList;
}
/**
@@ -80,7 +154,9 @@ public class StoreOrderInfoServiceImpl extends ServiceImpl getListByOrderNo(String orderNo) {
- return null;
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.eq(StoreOrderInfo::getOrderNo, orderNo);
+ return mapper.selectList(lqw);
}
/**
@@ -92,7 +168,7 @@ public class StoreOrderInfoServiceImpl extends ServiceImpl implements StoreOrderRefundService {
+ @Autowired
+ private ApiConfigApi apiConfigApi;
+
+ @Autowired
+ private WechatNewService wechatNewService;
@Override
public void refund(StoreOrderRefundRequest request, StoreOrder storeOrder) {
-
+ refundWx(request, storeOrder);
}
+
+ /**
+ * 公共号退款
+ * @param request
+ * @param storeOrder
+ */
+ private void refundWx(StoreOrderRefundRequest request, StoreOrder storeOrder) {
+ // 获取appid、mch_id
+ // 微信签名key
+ String appId = "";
+ String mchId = "";
+ String signKey = "";
+ String path = "";
+ if (storeOrder.getIsChannel() == 0) {// 公众号
+ appId = apiConfigApi.getConfigKey(Constants.CONFIG_KEY_PAY_WE_CHAT_APP_ID).toString();
+ mchId = apiConfigApi.getConfigKey(Constants.CONFIG_KEY_PAY_WE_CHAT_MCH_ID).toString();
+ signKey = apiConfigApi.getConfigKey(Constants.CONFIG_KEY_PAY_WE_CHAT_APP_KEY).toString();
+// path = systemConfigService.getValueByKeyException("pay_routine_client_p12");
+ path = apiConfigApi.getConfigKey("pay_weixin_certificate_path").toString();
+ }
+ if (storeOrder.getIsChannel() == 1) {// 小程序
+ appId = apiConfigApi.getConfigKey(Constants.CONFIG_KEY_PAY_ROUTINE_APP_ID).toString();
+ mchId = apiConfigApi.getConfigKey(Constants.CONFIG_KEY_PAY_ROUTINE_MCH_ID).toString();
+ signKey = apiConfigApi.getConfigKey(Constants.CONFIG_KEY_PAY_ROUTINE_APP_KEY).toString();
+// path = systemConfigService.getValueByKeyException("pay_mini_client_p12");
+ path = apiConfigApi.getConfigKey("pay_routine_certificate_path").toString();
+ }
+ if (storeOrder.getIsChannel() == 2) {// H5, 使用公众号的
+ appId = apiConfigApi.getConfigKey(Constants.CONFIG_KEY_PAY_WE_CHAT_APP_ID).toString();
+ mchId = apiConfigApi.getConfigKey(Constants.CONFIG_KEY_PAY_WE_CHAT_MCH_ID).toString();
+ signKey = apiConfigApi.getConfigKey(Constants.CONFIG_KEY_PAY_WE_CHAT_APP_KEY).toString();
+// path = systemConfigService.getValueByKeyException("pay_mini_client_p12");
+ path = apiConfigApi.getConfigKey("pay_weixin_certificate_path").toString();
+ }
+
+ String apiDomain = apiConfigApi.getConfigKey(Constants.CONFIG_KEY_API_URL).toString();
+
+ //统一下单数据
+ WxRefundVo wxRefundVo = new WxRefundVo();
+ wxRefundVo.setAppid(appId);
+ wxRefundVo.setMch_id(mchId);
+ wxRefundVo.setNonce_str(WxPayUtil.getNonceStr());
+ wxRefundVo.setOut_trade_no(storeOrder.getOutTradeNo());
+ wxRefundVo.setOut_refund_no(storeOrder.getOrderId());
+ wxRefundVo.setTotal_fee(storeOrder.getPayPrice().multiply(BigDecimal.TEN).multiply(BigDecimal.TEN).intValue());
+ wxRefundVo.setRefund_fee(request.getAmount().multiply(BigDecimal.TEN).multiply(BigDecimal.TEN).intValue());
+ wxRefundVo.setNotify_url(apiDomain + PayConstants.WX_PAY_REFUND_NOTIFY_API_URI);
+ String sign = WxPayUtil.getSign(wxRefundVo, signKey);
+ wxRefundVo.setSign(sign);
+
+ wechatNewService.payRefund(wxRefundVo, path);
+ }
+
+
+
}
diff --git a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/service/order/impl/StoreOrderServiceImpl.java b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/service/order/impl/StoreOrderServiceImpl.java
index 9a5c18b5e..3954999a3 100644
--- a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/service/order/impl/StoreOrderServiceImpl.java
+++ b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/service/order/impl/StoreOrderServiceImpl.java
@@ -1,21 +1,55 @@
package cn.iocoder.yudao.module.shop.service.order.impl;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.PhoneUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.iocoder.yudao.framework.common.enums.Constants;
+import cn.iocoder.yudao.framework.common.exception.ServiceException;
+import cn.iocoder.yudao.framework.common.pojo.DateLimitUtilVo;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.util.date.DateUtils;
+import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
+import cn.iocoder.yudao.module.member.service.user.MemberUserService;
import cn.iocoder.yudao.module.shop.dal.dataobject.order.StoreOrder;
import cn.iocoder.yudao.module.shop.dal.mysql.order.StoreOrderMapper;
import cn.iocoder.yudao.module.shop.request.order.StoreOrderRefundRequest;
import cn.iocoder.yudao.module.shop.request.order.StoreOrderSearchRequest;
import cn.iocoder.yudao.module.shop.request.order.StoreOrderSendRequest;
import cn.iocoder.yudao.module.shop.request.order.StoreOrderUpdatePriceRequest;
-import cn.iocoder.yudao.module.shop.service.order.StoreOrderService;
import cn.iocoder.yudao.module.shop.response.order.*;
+import cn.iocoder.yudao.module.shop.service.order.StoreOrderInfoService;
+import cn.iocoder.yudao.module.shop.service.order.StoreOrderRefundService;
+import cn.iocoder.yudao.module.shop.service.order.StoreOrderService;
+import cn.iocoder.yudao.module.shop.service.order.StoreOrderStatusService;
+import cn.iocoder.yudao.module.shop.utils.CommonPage;
+import cn.iocoder.yudao.module.shop.utils.OrderUtils;
+import cn.iocoder.yudao.module.shop.utils.RedisUtil;
import cn.iocoder.yudao.module.shop.vo.order.LogisticsResultVo;
+import cn.iocoder.yudao.module.shop.vo.order.StoreDateRangeSqlPram;
+import cn.iocoder.yudao.module.shop.vo.order.StoreOrderInfoOldVo;
+import cn.iocoder.yudao.module.system.service.sms.SmsTemplateService;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.pagehelper.Page;
+import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.support.TransactionTemplate;
+import javax.annotation.Resource;
import java.math.BigDecimal;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
* StoreOrderServiceImpl 接口实现
@@ -32,6 +66,35 @@ import java.util.*;
@Service
public class StoreOrderServiceImpl extends ServiceImpl implements StoreOrderService {
+ @Resource
+ private StoreOrderMapper mapper;
+
+ @Autowired
+ private StoreOrderInfoService StoreOrderInfoService;
+
+ @Autowired
+ private MemberUserService userService;
+
+ @Autowired
+ private StoreOrderStatusService storeOrderStatusService;
+
+ @Autowired
+ private StoreOrderRefundService storeOrderRefundService;
+
+ @Autowired
+ private OrderUtils orderUtils;
+
+ @Autowired
+ private RedisUtil redisUtil;
+
+ @Autowired
+ private TransactionTemplate transactionTemplate;
+
+ @Autowired
+ private StoreOrderInfoService storeOrderInfoService;
+
+ @Autowired
+ private SmsTemplateService smsTemplateService;
/**
* 列表(PC)
@@ -42,7 +105,26 @@ public class StoreOrderServiceImpl extends ServiceImpl getAdminList(StoreOrderSearchRequest request, PageParam pageParamRequest) {
- return null;
+ Page