From 431dde90aa20f7652092fc0bfa9e6a1a28b06b9f Mon Sep 17 00:00:00 2001
From: jiangqs <343695869@qq.com>
Date: 星期日, 06 八月 2023 12:41:23 +0800
Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/HongRuiTang

---
 ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml                                    |  141 +
 ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/ConsumerGoodsMapper.xml                            |    2 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MerAgencyTaskPageVo.java                     |    3 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/shop/ShopProportionVo.java         |   31 
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtActivityController.java     |    6 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerNewOrderDto.java                       |    2 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/AppEditUserDto.java                 |    2 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtAgencyTaskRecordPageVo.java               |    3 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteGoodsFallbackFactory.java        |    6 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/config/WxPayConfiguration.java                         |   10 
 ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/utils/OBSUploadUtils.java                              |   75 +
 ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/utils/SecurityUtils.java          |   11 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerVerifyOrderDto.java                    |    3 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/ShopTaskServiceImpl.java             |    4 
 ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/ActivityCodeService.java                       |   28 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/fliter/ParamsAuthFilter.java                           |   10 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerMemberBasicFileVo.java                |    2 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/ConsumerGoods.java                 |    3 
 ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberSuggestMapper.xml                          |    3 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/BackMessageService.java              |    6 
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MerActivityPageVo.java                     |    3 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/console/ShopController.java                 |   34 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteShopService.java                 |   13 
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/CustomConfigServiceImpl.java   |    4 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/PaymentMessageService.java           |    8 
 ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberCouponMapper.xml                           |    8 
 ruoyi-modules/ruoyi-goods/src/main/resources/mapper/activity/ActivityMapper.xml                              |   15 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/ProfitSharingNotifyNewResult.java          |   23 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MemberTotalChangeDto.java           |    2 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java                 |   58 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MerMemberCouponVo.java               |    7 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/config/WxPayProperties.java                          |   49 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtMemberController.java       |    6 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MgtMemberOrderTotalDto.java               |    4 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MgtShopOrderPageDto.java                  |    3 
 ruoyi-auth/src/main/java/com/ruoyi/auth/fliter/ParamsAuthFilter.java                                         |   10 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/BackMessageServiceImpl.java     |   11 
 ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/UserServiceRecordMapper.xml                        |    2 
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/fliter/ParamsAuthFilter.java                         |   10 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/AgencyTaskServiceImpl.java           |    8 
 ruoyi-modules/ruoyi-system/src/main/resources/mapper/staff/SysStaffMapper.xml                                |    4 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java                 |    4 
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtActivityPageVo.java                     |    6 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtShopController.java           |   12 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/OrderPaymentServiceImpl.java    |   36 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/config/WxPayConfiguration.java                       |   54 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java           |   63 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/ProfitSharingServiceImpl.java   |   34 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MerMemberTaskRecordPageVo.java               |    3 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/PaymentMessageServiceImpl.java  |   13 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtMemberOrderTotalVo.java                 |    3 
 ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/CustomConfigMapper.xml                           |    4 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MerMemberEditDto.java                   |    2 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/enums/WxPayNotifyEventTypeEnum.java                  |   22 
 ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml                                 |   26 
 ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/ShopTaskRecordMapper.xml                             |    5 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberSuggestPageVo.java              |    8 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/OrderRefund.java                 |   16 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteFileService.java                 |   12 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/ProfitSharingService.java            |   11 
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/sys/SysUserServiceImpl.java           |   10 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerMemberNoClearOrderVo.java               |    8 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/enums/WxApplyMentSignStateEnum.java                    |   20 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerCloseOrderDto.java                     |    3 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopProportionService.java                |    7 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MerMemberAddDto.java                    |    2 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/OrderPayment.java                |    6 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteFileFallbackFactory.java         |    6 
 ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/ActivityCodeServiceImpl.java                   |   36 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtMemberOrderPageVo.java                  |    5 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/fliter/ParamsAuthFilter.java                         |   10 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/enums/RefundStatusEnum.java                          |   19 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopStaffMapper.java                       |   10 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/enums/dict/DictBean.java                             |   15 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/CodeGetDto.java                     |   18 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteGoodsService.java                |    7 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/business/MerMemberController.java       |    2 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java             |  219 +-
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtGoodsPageVo.java                        |    5 
 ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/FileController.java                         |   40 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/business/MerOrderController.java          |   14 
 ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/MemberTaskRecordMapper.xml                           |    2 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/member/MemberTotal.java                |    2 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppUserOrderGoodsPageVo.java               |    3 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberService.java                  |    2 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppConsumerPageVo.java                     |   11 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/BackMessage.java                 |    8 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberController.java     |   24 
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtStaffController.java      |    6 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberSuggestServiceImpl.java  |   33 
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/StringUtils.java                    |   15 
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtGoodsController.java        |    6 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffMyShopTaskRecordPageVo.java             |    2 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopProportionServiceImpl.java       |   12 
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtGoodsEditInfoVo.java                    |    5 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/PaymentMessage.java              |    2 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtShopAllOrderTotal.java                  |   28 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MerAgencyTaskRecordPageVo.java               |    3 
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/fliter/ParamsAuthFilter.java                       |   10 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/ProfitSharing.java               |   12 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MerFollowAgencyTaskDto.java                 |    3 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/OrderPaymentService.java             |   23 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/scheduler/ShopScheduler.java                           |   20 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerMemberOrderVo.java                      |   59 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/enums/WxApplyMentStateEnum.java                        |   30 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/StaffFollowShopTaskDto.java                 |    2 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java         |  128 +
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java         |  127 +
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/fliter/ParamsAuthFilter.java                       |   10 
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java     |    6 
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppSimpleActivityGoodsVo.java              |    5 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/MemberTaskServiceImpl.java           |   21 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/OrderGoods.java                    |    3 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/task/MemberTaskRecord.java                 |   15 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopAuthenticationServiceImpl.java   |   81 +
 ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderGoodsMapper.xml                               |    1 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/AppBaseDto.java                     |    7 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/task/AgencyTaskRecord.java                 |   18 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtMemberFollowPageVo.java                   |    3 
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MerGoodsPageVo.java                        |    5 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopAuthenticationService.java            |   22 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtOrderController.java        |   29 
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppShoppingCartVo.java                     |    3 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java                      |   34 
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppSimpleGoodsVo.java                      |    4 
 ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/AgencyTaskMapper.xml                                 |    5 
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtActivityGoodsListVo.java                |    5 
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/config/CustomConfigMapper.java              |    2 
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtGoodsTotalVo.java                       |    3 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java                        |   31 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MerFollowMemberTaskDto.java                 |    4 
 ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopStaffMapper.xml                                  |    3 
 ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml                                       |   25 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffAgencyTaskRecordPageVo.java             |    3 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/birthday/BirthdayCardServiceImpl.java |   33 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/enums/dict/IDict.java                                |  170 ++
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopService.java                          |    5 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerMemberInfoVo.java                     |    5 
 ruoyi-modules/ruoyi-order/src/main/resources/bootstrap.yml                                                   |   12 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppPlaceOrderVo.java                       |    2 
 ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/MemberTaskMapper.xml                                 |    2 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteShopFallbackFactory.java         |   11 
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java       |   16 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/ConsumerGoodsServiceImpl.java     |    2 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java             |  945 ++++++++++----
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopStaffServiceImpl.java            |   17 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/shop/Shop.java                     |    3 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberCouponMapper.java              |    2 
 /dev/null                                                                                                    |   55 
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/pojo/activity/Activity.java                   |    6 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerVerifyOrderVo.java                      |   12 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/task/ShopTaskRecord.java                   |    4 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopTaskRecordPageVo.java                 |    3 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerOrderPageVo.java                        |    3 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/WechatPayUtils.java                               |   11 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtFollowShopTaskDto.java                   |    1 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/enums/dict/IDict.java                                  |  170 ++
 ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/AgencyTaskRecordMapper.xml                           |    3 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/enums/dict/DictBean.java                               |   15 
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppGoodsInfoVo.java                        |    4 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/MemberController.java           |    2 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppMemberController.java        |    1 
 162 files changed, 3,065 insertions(+), 805 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java
index 5a0490a..300921c 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java
@@ -84,6 +84,8 @@
 
     String ACTIVITY_END = "活动已经结束";
 
+    String ACTIVITY_SE_ERROR = "开始时间不能大于结束时间";
+
     String ACTIVITY_GOODS_NULL = "商品已被抢完";
 
     String ACTIVITY_GOODS_BEYOND = "超出商品购买限制";
@@ -103,4 +105,6 @@
     String TRANS_NOT_MYSELF = "不能转移给自己";
 
     String GOODS_SURE_FAILED = "商品没有确认次数";
+
+    String BIRTHDAYCARD_NO_GIFT = "请先配置礼物再开启";
 }
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/AppBaseDto.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/AppBaseDto.java
index 5dd92fc..90d616f 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/AppBaseDto.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/AppBaseDto.java
@@ -13,7 +13,12 @@
 @Data
 public class AppBaseDto {
 
-    @ApiModelProperty(value = "userId",hidden = true)
+    @ApiModelProperty(value = "userId", hidden = true)
     private Long userId;
 
+    @ApiModelProperty(value = "openid", hidden = true)
+    private String openid;
+
+    @ApiModelProperty(value = "终端IP", hidden = true)
+    private String spbillCreateIp;
 }
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/AppEditUserDto.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/AppEditUserDto.java
index cf48ff3..355d63a 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/AppEditUserDto.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/AppEditUserDto.java
@@ -13,7 +13,7 @@
 @Data
 public class AppEditUserDto extends AppBaseDto{
 
-    @ApiModelProperty(value = "修改类型1.昵称2.头像3.性别4.生日")
+    @ApiModelProperty(value = "修改类型1.昵称2.头像3.性别4.生日5.姓名")
     private Integer editType;
 
     @ApiModelProperty(value = "修改值 性别0=男,1=女,2=未知 生日YYYY-MM-DD ")
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/CodeGetDto.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/CodeGetDto.java
new file mode 100644
index 0000000..b8519c8
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/CodeGetDto.java
@@ -0,0 +1,18 @@
+package com.ruoyi.system.api.domain.dto;
+
+import lombok.Data;
+
+/**
+ * @ClassName CodeGetDto
+ * @Description TODO
+ * @Author jqs
+ * @Date 2023/8/3 12:53
+ * @Version 1.0
+ */
+@Data
+public class CodeGetDto {
+
+    private String url;
+
+    private String fileName;
+}
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MemberTotalChangeDto.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MemberTotalChangeDto.java
index e7d96c4..ee58869 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MemberTotalChangeDto.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MemberTotalChangeDto.java
@@ -42,7 +42,7 @@
     private Integer serviceCount;
 
     @ApiModelProperty(value = "下次跟进时间")
-    private Date nextTaskTime;
+    private String nextTaskTime;
 
     @ApiModelProperty(value = "活动时间")
     private Date activityTime;
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/shop/Shop.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/shop/Shop.java
index a8ead45..5186b44 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/shop/Shop.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/shop/Shop.java
@@ -281,6 +281,9 @@
     @TableField("auth_flag")
     private Integer authFlag;
 
+    @TableField("shop_code")
+    private String shopCode;
+
     @Override
     protected Serializable pkVal() {
         return this.shopId;
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/shop/ShopProportionVo.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/shop/ShopProportionVo.java
new file mode 100644
index 0000000..b8a42de
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/shop/ShopProportionVo.java
@@ -0,0 +1,31 @@
+package com.ruoyi.system.api.domain.poji.shop;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+public class ShopProportionVo {
+    /**
+     * 分成id
+     */
+    private Long proportionId;
+
+    /**
+     * 商户id
+     */
+    private Long shopId;
+    /**
+     * 商户类型
+     */
+    private Integer shopType;
+    /**
+     * 分成比例
+     */
+    private BigDecimal proportionPercent;
+
+}
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MerMemberCouponVo.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MerMemberCouponVo.java
index bd7a8e1..edde8cf 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MerMemberCouponVo.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MerMemberCouponVo.java
@@ -42,4 +42,11 @@
 
     @ApiModelProperty(value="使用有效期")
     private Date deadlineTime;
+
+    @ApiModelProperty(value="使用范围1.全场2.指定商品")
+    private Integer useScope;
+
+    @ApiModelProperty(value = "关联商品id")
+    private String relGoodsIds;
+
 }
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteFileFallbackFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteFileFallbackFactory.java
index aa3c813..5a08282 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteFileFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteFileFallbackFactory.java
@@ -1,5 +1,6 @@
 package com.ruoyi.system.api.factory;
 
+import com.ruoyi.system.api.domain.dto.CodeGetDto;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.cloud.openfeign.FallbackFactory;
@@ -30,6 +31,11 @@
             {
                 return R.fail("上传文件失败:" + throwable.getMessage());
             }
+
+            @Override
+            public R<String> getAppOrderTotal(CodeGetDto codeGetDto) {
+                return R.fail("获取二维码失败:" + throwable.getMessage());
+            }
         };
     }
 }
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteGoodsFallbackFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteGoodsFallbackFactory.java
index 329976b..ee644b2 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteGoodsFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteGoodsFallbackFactory.java
@@ -2,6 +2,7 @@
 
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.system.api.domain.dto.AppShopGoodsGetDto;
+import com.ruoyi.system.api.domain.dto.GoodsTotalChangeDto;
 import com.ruoyi.system.api.domain.poji.goods.Goods;
 import com.ruoyi.system.api.domain.poji.goods.GoodsFile;
 import com.ruoyi.system.api.domain.poji.goods.ShopGoods;
@@ -68,6 +69,11 @@
             public R<List<MerGoodsPriceListVo>> listGoodsPriceByGoodsId(String goodsIds) {
                 return R.fail("获取商品列表失败:" + throwable.getMessage());
             }
+
+            @Override
+            public R changeGoodsTotal(List<GoodsTotalChangeDto> goodsTotalChangeDtoList) {
+                return R.fail("改变商品统计失败:" + throwable.getMessage());
+            }
         };
     }
 }
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteShopFallbackFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteShopFallbackFactory.java
index 5e23e44..14b6f8e 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteShopFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteShopFallbackFactory.java
@@ -2,6 +2,7 @@
 
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.system.api.domain.dto.*;
+import com.ruoyi.system.api.domain.poji.shop.ShopProportionVo;
 import com.ruoyi.system.api.domain.vo.*;
 import com.ruoyi.system.api.model.QwH5LoginVo;
 import com.ruoyi.system.api.model.QwUserDetailDto;
@@ -33,6 +34,11 @@
             @Override
             public R<Shop> getShop(Long shopId) {
                 return R.fail("获取商户失败:" + throwable.getMessage());
+            }
+
+            @Override
+            public R<String> getShopSubMchId(Long shopId) {
+                return R.fail("获取微信商户号失败:" + throwable.getMessage());
             }
 
             @Override
@@ -109,6 +115,11 @@
             public R editMgtShopStaff(MgtShopStaffEditDto mgtShopStaffEditDto) {
                 return R.fail("修改员工失败:" + throwable.getMessage());
             }
+
+            @Override
+            public R<ShopProportionVo> getShopProportion(Long shopId) {
+                return R.fail("获取商户分成信息失败:" + throwable.getMessage());
+            }
         };
     }
 }
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteFileService.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteFileService.java
index d6d3193..ad4773d 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteFileService.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteFileService.java
@@ -1,8 +1,10 @@
 package com.ruoyi.system.api.service;
 
+import com.ruoyi.system.api.domain.dto.CodeGetDto;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestPart;
 import org.springframework.web.multipart.MultipartFile;
 import com.ruoyi.common.core.constant.ServiceNameConstants;
@@ -26,4 +28,14 @@
      */
     @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
     public R<SysFile> upload(@RequestPart(value = "file") MultipartFile file);
+
+    /**
+     * @description  生成二维码
+     * @author  jqs
+     * @date    2023/8/3 12:57
+     * @param codeGetDto
+     * @return  R<String>
+     */
+    @PostMapping("/file/getCodeUrl")
+    public R<String> getAppOrderTotal(@RequestBody CodeGetDto codeGetDto);
 }
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteGoodsService.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteGoodsService.java
index b93ac60..97a2254 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteGoodsService.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteGoodsService.java
@@ -3,6 +3,7 @@
 import com.ruoyi.common.core.constant.ServiceNameConstants;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.system.api.domain.dto.AppShopGoodsGetDto;
+import com.ruoyi.system.api.domain.dto.GoodsTotalChangeDto;
 import com.ruoyi.system.api.domain.poji.goods.Goods;
 import com.ruoyi.system.api.domain.poji.goods.GoodsFile;
 import com.ruoyi.system.api.domain.poji.goods.ShopGoods;
@@ -59,6 +60,10 @@
      * @param goodsIds
      * @return  R<List<MerGoodsPriceListVo>>
      */
-    @PostMapping("/listGoodsPriceByGoodsId")
+    @PostMapping("/goods/listGoodsPriceByGoodsId")
     public R<List<MerGoodsPriceListVo>> listGoodsPriceByGoodsId(@RequestBody String goodsIds);
+
+
+    @PostMapping("/goods/changeGoodsTotal")
+    public R changeGoodsTotal(@RequestBody List<GoodsTotalChangeDto> goodsTotalChangeDtoList);
 }
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteShopService.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteShopService.java
index 9891828..f849c0f 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteShopService.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteShopService.java
@@ -4,6 +4,7 @@
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.system.api.domain.dto.*;
 import com.ruoyi.system.api.domain.poji.shop.Shop;
+import com.ruoyi.system.api.domain.poji.shop.ShopProportionVo;
 import com.ruoyi.system.api.domain.vo.*;
 import com.ruoyi.system.api.factory.RemoteShopFallbackFactory;
 import com.ruoyi.system.api.model.QwH5LoginVo;
@@ -19,6 +20,10 @@
 
     @PostMapping("/shop/getShop")
     public R<Shop> getShop(@RequestBody Long shopId);
+
+    @PostMapping("/shop/getShopSubMchId")
+    public R<String> getShopSubMchId(@RequestBody Long shopId);
+
 
     @PostMapping("/shop/getShopByUserId")
     public R<ShopRelUserVo> getShopByUserId(@RequestBody Long userId);
@@ -149,4 +154,12 @@
      */
     @PostMapping("/shop/editMgtShopStaff")
     public R editMgtShopStaff(@RequestBody MgtShopStaffEditDto mgtShopStaffEditDto);
+
+    /**
+     * 获取商户分成
+     * @param shopId
+     * @return
+     */
+    @PostMapping("/shop/getShopProportion")
+    R<ShopProportionVo> getShopProportion(@RequestBody Long shopId);
 }
diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/fliter/ParamsAuthFilter.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/fliter/ParamsAuthFilter.java
index 59faa71..d4b403c 100644
--- a/ruoyi-auth/src/main/java/com/ruoyi/auth/fliter/ParamsAuthFilter.java
+++ b/ruoyi-auth/src/main/java/com/ruoyi/auth/fliter/ParamsAuthFilter.java
@@ -30,7 +30,14 @@
     public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
         HttpServletRequest request = (HttpServletRequest) servletRequest;
         HttpServletResponse response = (HttpServletResponse) servletResponse;
-
+        String requestUrl = request.getRequestURI();
+        String requestUrlUpperCase = requestUrl.toUpperCase();
+        if(requestUrlUpperCase.contains("EXPORT")
+                ||requestUrlUpperCase.contains("IMPORTTEMPLATE")
+        ){
+            filterChain.doFilter(request, response);
+            return;
+        }
         RepeatedlyRequestWrapper wrapper = new RepeatedlyRequestWrapper(request, response);
         getRequestParams(wrapper);
 
@@ -39,7 +46,6 @@
 
         // 返回的结果
         String content = responseWrapper.getTextContent();
-        String requestUrl = request.getRequestURI();
         log.info("-------------------- Response Data ----------------------");
         log.info(requestUrl + " -> " + content);
 
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/StringUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/StringUtils.java
index 0daaf89..6c2fcd6 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/StringUtils.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/StringUtils.java
@@ -1,10 +1,10 @@
 package com.ruoyi.common.core.utils;
 
-import java.util.*;
-
-import org.springframework.util.AntPathMatcher;
 import com.ruoyi.common.core.constant.Constants;
 import com.ruoyi.common.core.text.StrFormatter;
+import org.springframework.util.AntPathMatcher;
+
+import java.util.*;
 
 /**
  * 字符串工具类
@@ -570,4 +570,13 @@
         }
         return result.toArray(new String[0]);
     }
+
+    public static boolean checkString(String originalString, String targetString) {
+        // 使用逗号分隔字符串
+        String[] stringArray = originalString.split(",");
+        // 转换为列表
+        List<String> stringList = Arrays.asList(stringArray);
+        // 检查目标字符串是否在列表中
+        return stringList.contains(targetString);
+    }
 }
diff --git a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/utils/SecurityUtils.java b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/utils/SecurityUtils.java
index 8171709..589eb06 100644
--- a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/utils/SecurityUtils.java
+++ b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/utils/SecurityUtils.java
@@ -1,6 +1,8 @@
 package com.ruoyi.common.security.utils;
 
 import javax.servlet.http.HttpServletRequest;
+
+import com.ruoyi.system.api.domain.poji.sys.SysUser;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import com.ruoyi.common.core.constant.SecurityConstants;
 import com.ruoyi.common.core.constant.TokenConstants;
@@ -11,7 +13,7 @@
 
 /**
  * 权限获取工具类
- * 
+ *
  * @author jqs
  */
 public class SecurityUtils
@@ -48,6 +50,11 @@
         return SecurityContextHolder.get(SecurityConstants.LOGIN_USER, LoginUser.class);
     }
 
+    public static SysUser getSysUser()
+    {
+        return getLoginUser().getSysUser();
+    }
+
     /**
      * 获取请求token
      */
@@ -81,7 +88,7 @@
 
     /**
      * 是否为管理员
-     * 
+     *
      * @param userId 用户ID
      * @return 结果
      */
diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/FileController.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/FileController.java
new file mode 100644
index 0000000..1736fd1
--- /dev/null
+++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/FileController.java
@@ -0,0 +1,40 @@
+package com.ruoyi.file.controller;
+
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.file.service.ActivityCodeService;
+import com.ruoyi.system.api.domain.dto.CodeGetDto;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+/**
+ * @ClassName FileController
+ * @Description TODO
+ * @Author jqs
+ * @Date 2023/8/3 12:50
+ * @Version 1.0
+ */
+@RestController
+@RequestMapping("/file")
+public class FileController {
+
+
+    @Resource
+    private ActivityCodeService activityCodeService;
+
+    @PostMapping("/getCodeUrl")
+    public R<String> getAppOrderTotal(@RequestBody CodeGetDto codeGetDto){
+        String url = null;
+        try {
+            url = activityCodeService.createActivityCode(codeGetDto.getUrl(),codeGetDto.getFileName());
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+        return R.ok(url);
+    }
+
+
+}
diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/ActivityCodeService.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/ActivityCodeService.java
index e79e269..3eb85c7 100644
--- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/ActivityCodeService.java
+++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/ActivityCodeService.java
@@ -1,9 +1,5 @@
 package com.ruoyi.file.service;
 
-import me.chanjar.weixin.common.error.WxErrorException;
-
-import java.io.FileNotFoundException;
-
 /**
  * @ClassName ActivityCodeService
  * @Description TODO
@@ -16,22 +12,32 @@
 
 
     /**
-     * @description  生成活动二维码
+     * @description  生成二维码
      * @author  jqs
-     * @date    2023/7/26 19:09
-     * @param activityId
-     * @return  void
+     * @date    2023/8/3 12:44
+     * @param url
+     * @return  String
      */
-    public String createActivityCode(String activityId);
+    public String createActivityCode(String url, String fileName) throws Exception;
 
 
     /**
-     * @description  生成活动二维码
+     * @description  生成微信活动二维码
      * @author  jqs
      * @date    2023/7/26 19:09
      * @param activityId
      * @return  void
      */
-    public String createActivityCode(String activityId,String backImageUrl) throws WxErrorException, FileNotFoundException;
+    public String createActivityWxCode(String activityId);
+
+
+    /**
+     * @description  生成活动海报
+     * @author  jqs
+     * @date    2023/7/26 19:09
+     * @param activityId
+     * @return  void
+     */
+    public String createActivityPoster(String activityId, String backImageUrl) throws Exception;
 
 }
diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/ActivityCodeServiceImpl.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/ActivityCodeServiceImpl.java
index 009a019..270076f 100644
--- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/ActivityCodeServiceImpl.java
+++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/ActivityCodeServiceImpl.java
@@ -5,7 +5,6 @@
 import cn.hutool.core.img.ImgUtil;
 import cn.hutool.extra.qrcode.QrCodeUtil;
 import com.ruoyi.file.utils.OBSUploadUtils;
-import me.chanjar.weixin.common.error.WxErrorException;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -27,6 +26,22 @@
 
 
     /**
+     * @description  生成二维码
+     * @author  jqs
+     * @date    2023/8/3 12:44
+     * @param url
+     * @return  String
+     */
+    @Override
+    public String createActivityCode(String url, String fileName) throws Exception {
+        File qrCodeFile = new File("/home/image/qrcode.png");// 生成二维码
+        QrCodeUtil.generate(url, 100, 100, qrCodeFile);
+        InputStream codeStream = new FileInputStream(qrCodeFile);
+        String fileUrl =  OBSUploadUtils.uploadInputStream(codeStream,fileName);
+        return fileUrl;
+    }
+
+    /**
      * @description  生成活动二维码
      * @author  jqs
      * @date    2023/7/26 19:09
@@ -34,7 +49,7 @@
      * @return  void
      */
     @Override
-    public String createActivityCode(String activityId){
+    public String createActivityWxCode(String activityId){
 
         WxMaQrcodeService wxMaQrcodeService = wxMaService.getQrcodeService();
         String scene = activityId;
@@ -57,29 +72,28 @@
      * @return  void
      */
     @Override
-    public String createActivityCode(String activityId,String backImageUrl) throws WxErrorException, FileNotFoundException {
-
-
+    public String createActivityPoster(String activityId,String backImageUrl) throws Exception {
         String fileUrl = null;
         File qrCodeFile = new File("/home/image/qrcode.png");
         // 二维码内容
-        String text = ""+activityId;
+        String text = "https://wxapp.hhhrt.cn/mini/activity?"+activityId;
         // 生成二维码
-        QrCodeUtil.generate(text, 100, 100, qrCodeFile);
-        File backFile ;
+        QrCodeUtil.generate(text, 200, 200, qrCodeFile);
         ByteArrayOutputStream out = new ByteArrayOutputStream();
         InputStream codeStream = new FileInputStream(qrCodeFile);
-        InputStream backStream = new FileInputStream(qrCodeFile);
+        backImageUrl = backImageUrl.replace("https://hongruitang.oss-cn-beijing.aliyuncs.com/","");
+        InputStream backStream = OBSUploadUtils.getOSSInputStream(backImageUrl);
         // 将图片合成在一起
         ImgUtil.pressImage(
                 backStream, // 主图片
                 out, // 输出图片
-                ImgUtil.read(codeStream).getScaledInstance(516, 516, Image.SCALE_DEFAULT), //水印图片
+                ImgUtil.read(codeStream).getScaledInstance(200, 200, Image.SCALE_DEFAULT), //水印图片
                 0, //x坐标修正值。 默认在中间,偏移量相对于中间偏移
-                0, //y坐标修正值。 默认在中间,偏移量相对于中间偏移
+                350, //y坐标修正值。 默认在中间,偏移量相对于中间偏移
                 1.0f
         );
         InputStream inputStream = new ByteArrayInputStream(out.toByteArray());
+        fileUrl =  OBSUploadUtils.uploadInputStream(inputStream,activityId);
         return fileUrl;
     }
 }
diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/utils/OBSUploadUtils.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/utils/OBSUploadUtils.java
index fc18bc6..939dc5e 100644
--- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/utils/OBSUploadUtils.java
+++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/utils/OBSUploadUtils.java
@@ -1,16 +1,17 @@
 package com.ruoyi.file.utils;
 
+import cn.hutool.extra.qrcode.QrCodeUtil;
 import com.aliyun.oss.ClientException;
 import com.aliyun.oss.OSS;
 import com.aliyun.oss.OSSClientBuilder;
 import com.aliyun.oss.OSSException;
+import com.aliyun.oss.model.OSSObject;
 import com.aliyun.oss.model.PutObjectRequest;
 import com.aliyun.oss.model.PutObjectResult;
 import com.ruoyi.common.core.utils.uuid.IdUtils;
 import org.springframework.web.multipart.MultipartFile;
 
-import java.io.File;
-import java.io.InputStream;
+import java.io.*;
 import java.util.Calendar;
 
 /**
@@ -22,6 +23,17 @@
  */
 public class OBSUploadUtils {
 
+    public static void main(String[] args) throws Exception {
+        String fileUrl = null;
+        File qrCodeFile = new File("/home/image/qrcode.png");
+        // 二维码内容
+        String text = "https://wxapp.hhhrt.cn/mini/coupon";
+        // 生成二维码
+        QrCodeUtil.generate(text, 100, 100, qrCodeFile);
+        InputStream codeStream = new FileInputStream(qrCodeFile);
+        fileUrl =  OBSUploadUtils.uploadInputStream(codeStream,"couponCode");
+        System.out.println(fileUrl);
+    }
 
     protected static OSS createOss(){
         // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
@@ -58,6 +70,55 @@
             String prefix = fileName.substring(fileName.lastIndexOf("."));
             String objectName = filePath + uuid + prefix;
             InputStream inputStream = file.getInputStream();
+            // 创建PutObjectRequest对象。
+            PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, inputStream);
+            // 设置该属性可以返回response。如果不设置,则返回的response为空。
+            putObjectRequest.setProcess("true");
+            // 创建PutObject请求。
+            result = ossClient.putObject(putObjectRequest);
+            // 如果上传成功,则返回200。
+            System.out.println(fileName + "上传返回" + result.getResponse().getStatusCode());
+            return result.getResponse().getUri();
+        } catch (OSSException oe) {
+            System.out.println("Caught an OSSException, which means your request made it to OSS, "
+                    + "but was rejected with an error response for some reason.");
+            System.out.println("Error Message:" + oe.getErrorMessage());
+            System.out.println("Error Code:" + oe.getErrorCode());
+            System.out.println("Request ID:" + oe.getRequestId());
+            System.out.println("Host ID:" + oe.getHostId());
+        } catch (ClientException ce) {
+            System.out.println("Caught an ClientException, which means the client encountered "
+                    + "a serious internal problem while trying to communicate with OSS, "
+                    + "such as not being able to access the network.");
+            System.out.println("Error Message:" + ce.getMessage());
+        } finally {
+            if (ossClient != null) {
+                ossClient.shutdown();
+            }
+        }
+        return result.getResponse().getErrorResponseAsString();
+    }
+
+    public static String uploadInputStream (InputStream inputStream,String fileName) throws Exception {
+
+        // 填写Object完整路径,完整路径中不能包含Bucket名称,例如exampledir/exampleobject.txt。
+        String bucketName = "hongruitang";
+        Calendar calendar = Calendar.getInstance();
+        // 获取当前年
+        String year = String.valueOf(calendar.get(Calendar.YEAR));
+        // 获取当前月
+        String month = String.valueOf(calendar.get(Calendar.MONTH) + 1);
+        // 获取当前日
+        String day = String.valueOf(calendar.get(Calendar.DATE));
+        String filePath = year+"/"+month+"/"+day+"/";
+        String uuid = IdUtils.fastSimpleUUID();
+        // 创建OSSClient实例。
+        OSS ossClient = createOss();
+        PutObjectResult result = null;
+        try {
+
+            System.out.println(fileName + "开始上传");
+            String objectName = filePath + fileName + ".jpg";
             // 创建PutObjectRequest对象。
             PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, inputStream);
             // 设置该属性可以返回response。如果不设置,则返回的response为空。
@@ -134,9 +195,13 @@
         return result.getResponse().getErrorResponseAsString();
     }
 
-    public static void getOSSFile(String key) throws Exception {
-
-
+    public static InputStream getOSSInputStream(String key) throws Exception {
+        String bucketName = "hongruitang";
+        // 创建OSSClient实例。
+        OSS ossClient = createOss();
+        OSSObject ossObject = ossClient.getObject(bucketName,key);
+        InputStream inputStream = ossObject.getObjectContent();
+        return inputStream;
     }
 
 }
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtActivityController.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtActivityController.java
index 92eb3db..0a79de4 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtActivityController.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtActivityController.java
@@ -95,8 +95,10 @@
     @ApiOperation(value = "导出活动参与记录列表")
     public void exportPageMgtActivityRecord( MgtActivityRecordPageDto mgtActivityRecordPageDto, HttpServletResponse response) {
         Page<MgtActivityRecordPageVo> page = new Page<>();
-        page.setSize(2000);
-        page.setCurrent(1);
+        if(page.getSize()>5000){
+            page.setSize(5000);
+            page.setCurrent(1);
+        }
         List<MgtActivityRecordPageVo> activityRecordPageVoList = activityService.pageMgtActivityRecord(page,mgtActivityRecordPageDto);
         ExcelUtil<MgtActivityRecordPageVo> util = new ExcelUtil<MgtActivityRecordPageVo>(MgtActivityRecordPageVo.class);
         util.exportExcel(response, activityRecordPageVoList, "商品列表");
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtGoodsController.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtGoodsController.java
index d0c167d..731a389 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtGoodsController.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtGoodsController.java
@@ -55,8 +55,10 @@
     @ApiOperation(value = "导出商品列表")
     public void exportPageMgtGoods( MgtGoodsPageDto mgtGoodsPageDto, HttpServletResponse response) {
         Page<MgtGoodsPageVo> page = new Page<>();
-        page.setSize(2000);
-        page.setCurrent(1);
+        if(page.getSize()>5000){
+            page.setSize(5000);
+            page.setCurrent(1);
+        }
         List<MgtGoodsPageVo> mgtGoodsPageVoList = goodsService.pageMgtGoods(page,mgtGoodsPageDto);
         ExcelUtil<MgtGoodsPageVo> util = new ExcelUtil<MgtGoodsPageVo>(MgtGoodsPageVo.class);
         util.exportExcel(response, mgtGoodsPageVoList, "商品列表");
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/pojo/activity/Activity.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/pojo/activity/Activity.java
index 73ba653..b648420 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/pojo/activity/Activity.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/pojo/activity/Activity.java
@@ -127,7 +127,11 @@
      */
     @TableField("activity_introduce")
     private String activityIntroduce;
-
+    /**
+     * 活动二维码
+     */
+    @TableField("activity_code")
+    private String activityCode;
 
     @Override
     protected Serializable pkVal() {
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppGoodsInfoVo.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppGoodsInfoVo.java
index 2bee138..e6e5cc5 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppGoodsInfoVo.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppGoodsInfoVo.java
@@ -1,6 +1,8 @@
 package com.ruoyi.goods.domain.vo;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -50,6 +52,7 @@
     private Integer serviceNum;
 
     @ApiModelProperty(value = "商品售价")
+    @JsonSerialize(using = ToStringSerializer.class)
     private BigDecimal salesPrice;
 
     @ApiModelProperty(value = "商品详情")
@@ -74,6 +77,7 @@
     private Integer availableBuyNum;
 
     @ApiModelProperty(value = "商品活动价")
+    @JsonSerialize(using = ToStringSerializer.class)
     private BigDecimal activityPrice;
 
     @ApiModelProperty(value = "售罄标记0否1是")
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppShoppingCartVo.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppShoppingCartVo.java
index f3b7ac4..b34dec3 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppShoppingCartVo.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppShoppingCartVo.java
@@ -1,5 +1,7 @@
 package com.ruoyi.goods.domain.vo;
 
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -40,6 +42,7 @@
     private String goodsNurses;
 
     @ApiModelProperty(value = "商品售价")
+    @JsonSerialize(using = ToStringSerializer.class)
     private BigDecimal salesPrice;
 
     @ApiModelProperty(value = "购买数量")
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppSimpleActivityGoodsVo.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppSimpleActivityGoodsVo.java
index 8a5b1b6..0008c72 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppSimpleActivityGoodsVo.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppSimpleActivityGoodsVo.java
@@ -1,5 +1,7 @@
 package com.ruoyi.goods.domain.vo;
 
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -38,9 +40,11 @@
     private String goodsNurses;
 
     @ApiModelProperty(value = "商品售价")
+    @JsonSerialize(using = ToStringSerializer.class)
     private BigDecimal salesPrice;
 
     @ApiModelProperty(value = "商品活动价")
+    @JsonSerialize(using = ToStringSerializer.class)
     private BigDecimal activityPrice;
 
     @ApiModelProperty(value = "活动销售数量")
@@ -50,6 +54,7 @@
     private Integer salesNumber;
 
     @ApiModelProperty(value = "已售比例")
+    @JsonSerialize(using = ToStringSerializer.class)
     private BigDecimal salesPercent;
 
     @ApiModelProperty(value = "结束时间戳")
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppSimpleGoodsVo.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppSimpleGoodsVo.java
index 31cf0f6..b6eadb3 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppSimpleGoodsVo.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppSimpleGoodsVo.java
@@ -1,5 +1,7 @@
 package com.ruoyi.goods.domain.vo;
 
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -37,9 +39,11 @@
     private String goodsNurses;
 
     @ApiModelProperty(value = "商品售价")
+    @JsonSerialize(using = ToStringSerializer.class)
     private BigDecimal salesPrice;
 
     @ApiModelProperty(value = "活动售价")
+    @JsonSerialize(using = ToStringSerializer.class)
     private BigDecimal activityPrice;
 
     @ApiModelProperty(value = "活动id")
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MerActivityPageVo.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MerActivityPageVo.java
index 549ca26..95e7438 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MerActivityPageVo.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MerActivityPageVo.java
@@ -38,4 +38,7 @@
 
     @ApiModelProperty(value = "商品数量")
     private Integer goodsNum;
+
+    @ApiModelProperty(value = "活动二维码地址")
+    private String activityCode;
 }
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MerGoodsPageVo.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MerGoodsPageVo.java
index a7471d0..28f07f5 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MerGoodsPageVo.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MerGoodsPageVo.java
@@ -1,6 +1,7 @@
 package com.ruoyi.goods.domain.vo;
 
-import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -38,9 +39,11 @@
     private String goodsNurses;
 
     @ApiModelProperty(value = "商品建议售价")
+    @JsonSerialize(using = ToStringSerializer.class)
     private BigDecimal suggestSalesPrice;;
 
     @ApiModelProperty(value = "商品售价")
+    @JsonSerialize(using = ToStringSerializer.class)
     private BigDecimal salesPrice;;
 
     @ApiModelProperty(value="周期次数标记0否1是")
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtActivityGoodsListVo.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtActivityGoodsListVo.java
index afe7b2a..eed4711 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtActivityGoodsListVo.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtActivityGoodsListVo.java
@@ -1,5 +1,7 @@
 package com.ruoyi.goods.domain.vo;
 
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -28,12 +30,15 @@
     private String goodsType;
 
     @ApiModelProperty(value = "商品售价")
+    @JsonSerialize(using = ToStringSerializer.class)
     private BigDecimal salesPrice;;
 
     @ApiModelProperty(value = "秒杀活动价")
+    @JsonSerialize(using = ToStringSerializer.class)
     private BigDecimal activityPrice;
 
     @ApiModelProperty(value = "秒杀活动订金")
+    @JsonSerialize(using = ToStringSerializer.class)
     private BigDecimal activitySubscription;
 
     @ApiModelProperty(value = "秒杀活动库存")
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtActivityPageVo.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtActivityPageVo.java
index 214a44a..cbe1e57 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtActivityPageVo.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtActivityPageVo.java
@@ -48,4 +48,10 @@
     @ApiModelProperty(value = "创建时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date createTime;
+
+    @ApiModelProperty(value = "活动二维码地址")
+    private String activityCode;
+
+    @ApiModelProperty(value = "背景海报地址")
+    private String propagandaPoster;
 }
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtGoodsEditInfoVo.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtGoodsEditInfoVo.java
index e6cb27e..277b50f 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtGoodsEditInfoVo.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtGoodsEditInfoVo.java
@@ -1,5 +1,7 @@
 package com.ruoyi.goods.domain.vo;
 
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -49,12 +51,15 @@
     private String goodsIntroduction;
 
     @ApiModelProperty(value = "建议售价")
+    @JsonSerialize(using = ToStringSerializer.class)
     private BigDecimal salesPrice;
 
     @ApiModelProperty(value = "最低售价")
+    @JsonSerialize(using = ToStringSerializer.class)
     private BigDecimal mininumPrice;
 
     @ApiModelProperty(value = "订金")
+    @JsonSerialize(using = ToStringSerializer.class)
     private BigDecimal subscription;
 
     @ApiModelProperty(value = "商品详情")
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtGoodsPageVo.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtGoodsPageVo.java
index 5da1e81..6fc16ce 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtGoodsPageVo.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtGoodsPageVo.java
@@ -1,6 +1,8 @@
 package com.ruoyi.goods.domain.vo;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.ruoyi.common.core.annotation.Excel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -48,10 +50,12 @@
 
     @Excel(name = "商品建议售价", width = 30)
     @ApiModelProperty(value = "商品建议售价")
+    @JsonSerialize(using = ToStringSerializer.class)
     private BigDecimal suggestSalesPrice;;
 
     @Excel(name = "最低售价", width = 30)
     @ApiModelProperty(value = "最低售价")
+    @JsonSerialize(using = ToStringSerializer.class)
     private BigDecimal mininumPrice;;
 
     @Excel(name = "销量", width = 30)
@@ -60,6 +64,7 @@
 
     @Excel(name = "销售额", width = 30)
     @ApiModelProperty(value = "销售额")
+    @JsonSerialize(using = ToStringSerializer.class)
     private BigDecimal buyMoneyTotal;
 
     @Excel(name = "是否推荐", width = 30)
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtGoodsTotalVo.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtGoodsTotalVo.java
index b25d6da..f719c24 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtGoodsTotalVo.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtGoodsTotalVo.java
@@ -1,5 +1,7 @@
 package com.ruoyi.goods.domain.vo;
 
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -22,6 +24,7 @@
     private Integer buyNumCount;
 
     @ApiModelProperty(value = "销售额")
+    @JsonSerialize(using = ToStringSerializer.class)
     private BigDecimal buyMoneyTotal;
 
 
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/fliter/ParamsAuthFilter.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/fliter/ParamsAuthFilter.java
index 9196c6e..9774561 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/fliter/ParamsAuthFilter.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/fliter/ParamsAuthFilter.java
@@ -30,7 +30,14 @@
     public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
         HttpServletRequest request = (HttpServletRequest) servletRequest;
         HttpServletResponse response = (HttpServletResponse) servletResponse;
-
+        String requestUrl = request.getRequestURI();
+        String requestUrlUpperCase = requestUrl.toUpperCase();
+        if(requestUrlUpperCase.contains("EXPORT")
+                ||requestUrlUpperCase.contains("IMPORTTEMPLATE")
+        ){
+            filterChain.doFilter(request, response);
+            return;
+        }
         RepeatedlyRequestWrapper wrapper = new RepeatedlyRequestWrapper(request, response);
         getRequestParams(wrapper);
 
@@ -39,7 +46,6 @@
 
         // 返回的结果
         String content = responseWrapper.getTextContent();
-        String requestUrl = request.getRequestURI();
         log.info("-------------------- Response Data ----------------------");
         log.info(requestUrl + " -> " + content);
 
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java
index ec44e37..b096fea 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java
@@ -29,6 +29,7 @@
 import com.ruoyi.system.api.domain.vo.MgtSimpleShopVo;
 import com.ruoyi.system.api.domain.vo.MgtUserIdByKeywordVo;
 import com.ruoyi.system.api.service.RemoteConfigService;
+import com.ruoyi.system.api.service.RemoteFileService;
 import com.ruoyi.system.api.service.RemoteMemberService;
 import com.ruoyi.system.api.service.RemoteShopService;
 import org.redisson.api.RLock;
@@ -85,6 +86,9 @@
     @Autowired
     private RedissonClient redissonClient;
 
+    @Resource
+    private RemoteFileService remoteFileService;
+
     /**
      * @param mgtActivityEditDto
      * @return void
@@ -97,6 +101,9 @@
         Activity activity;
         // 获取当前时间
         Date nowTime = new Date();
+        if(mgtActivityEditDto.getActivityStartTime().compareTo(mgtActivityEditDto.getActivityEndTime())>0){
+            throw new ServiceException(AppErrorConstant.ACTIVITY_SE_ERROR);
+        }
         // 如果活动ID不为空,则表示修改活动信息
         if (StringUtils.isNotBlank(mgtActivityEditDto.getActivityId())) {
             // 获取活动信息
@@ -123,6 +130,12 @@
             activityTotal.setRefundTotal(0);
             activityTotal.setOrderMoneyTotal(BigDecimal.ZERO);
             activityTotalService.save(activityTotal);
+            CodeGetDto codeGetDto = new CodeGetDto();
+            String url = "https://wxapp.hhhrt.cn/mini/activity?activityId="+activityId;
+            codeGetDto.setUrl(url);
+            codeGetDto.setFileName("activity-"+activityId);
+            String codeUrl = remoteFileService.getAppOrderTotal(codeGetDto).getData();
+            activity.setActivityCode(codeUrl);
         }
         // 获取活动开始时间和结束时间
         Date activityStartTime = mgtActivityEditDto.getActivityStartTime();
@@ -577,9 +590,10 @@
         try {
             lock.lock(30, TimeUnit.SECONDS);
             if(agStockChangeDto.getChangeType()==1){
+                //减少销量增加库存
                 activityMapper.addActivityGoodsStock(agStockChangeDto);
             }else{
-                //更新库存
+                //增加销量减少库存
                 activityMapper.subActivityGoodsStock(agStockChangeDto);
             }
         } finally {
diff --git a/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/activity/ActivityMapper.xml b/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/activity/ActivityMapper.xml
index 44e942b..f434890 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/activity/ActivityMapper.xml
+++ b/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/activity/ActivityMapper.xml
@@ -23,7 +23,9 @@
                 WHEN 1 THEN '是'
                 ELSE '否'
                 END recommendFlag,
-            ta.create_time createTime
+            ta.create_time createTime,
+            ta.activity_code activityCode,
+            ta.propaganda_poster propagandaPoster
         FROM t_activity ta
         INNER JOIN t_activity_total tat ON ta.activity_id = tat.activity_id
         WHERE ta.del_flag = 0
@@ -34,10 +36,10 @@
             AND FIND_IN_SET(#{param.shopId}, ta.applicable_shop) &gt; 0
         </if>
         <if test="param.activityStartTime!=null and param.activityStartTime != ''">
-            AND ta.activity_start_time &gt;= #{param.activityStartTime}
+            AND Date(ta.activity_start_time) &gt;= #{param.activityStartTime}
         </if>
         <if test="param.activityEndTime!=null and param.activityEndTime != ''">
-            AND ta.activity_start_time &lt;= #{param.activityEndTime}
+            AND Date(ta.activity_start_time) &lt;= #{param.activityEndTime}
         </if>
         <if test="param.activityStatus!=null">
             AND ta.activity_status = #{param.activityStatus}
@@ -61,10 +63,10 @@
             AND FIND_IN_SET(#{param.userIds}, user_id) &gt; 0
         </if>
         <if test="param.createStartTime!=null and param.createStartTime != ''">
-            AND Date(ta.create_time) &gt;= #{param.createStartTime}
+            AND Date(create_time) &gt;= #{param.createStartTime}
         </if>
         <if test="param.createEndTime!=null and param.createEndTime != ''">
-            AND Date(ta.create_time) &lt;= #{param.createEndTime}
+            AND Date(create_time) &lt;= #{param.createEndTime}
         </if>
         <if test="param.orderFlag!=null and param.orderFlag == 1">
             AND order_id IS NOT NULL
@@ -86,7 +88,8 @@
         WHEN 2 THEN '已结束'
         END activityStatus,
         ta.propaganda_poster propagandaPoster,
-        COUNT(ag.activity_id) goodsNum
+        COUNT(ag.activity_id) goodsNum,
+        ta.activity_code activityCode
         FROM t_activity ta
         LEFT JOIN t_activity_goods ag ON ta.activity_id = ag.activity_id AND ag.del_flag = 0
         WHERE ta.del_flag = 0 AND shop_flag = 1 OR (shop_flag = 2 AND FIND_IN_SET(#{param.shopId}, ta.applicable_shop) &gt; 0)
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/business/MerMemberController.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/business/MerMemberController.java
index 59bcc47..52522ae 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/business/MerMemberController.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/business/MerMemberController.java
@@ -106,7 +106,7 @@
 
     @RequestMapping(value = "/addMerMember", method = RequestMethod.POST)
     @ApiOperation(value = "新增会员")
-    public R addMerMember(@RequestBody MerMemberAddDto merMemberAddDto) {
+    public R<Long> addMerMember(@RequestBody MerMemberAddDto merMemberAddDto) {
         Long userId = SecurityUtils.getUserId();
         merMemberAddDto.setUserId(userId);
         memberService.addMerMember(merMemberAddDto);
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/MemberController.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/MemberController.java
index e23d174..b9eb3df 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/MemberController.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/MemberController.java
@@ -299,7 +299,7 @@
      * @return  R
      */
     @PostMapping("/changeIntegral")
-    public R signShare(@RequestBody IntegralChangeDto integralChangeDto) {
+    public R changeIntegral(@RequestBody IntegralChangeDto integralChangeDto) {
         memberService.changeIntegral(integralChangeDto);
         return R.ok();
     }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberController.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberController.java
index c7bc26b..656f89f 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberController.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberController.java
@@ -65,8 +65,10 @@
     @ApiOperation(value = "导出会员列表")
     public void exportPageMgtMember(MgtMemberPageDto mgtMemberPageDto, HttpServletResponse response) {
         Page<MgtMemberPageVo> page = new Page<>();
-        page.setSize(2000);
-        page.setCurrent(1);
+        if(page.getSize()>5000){
+            page.setSize(5000);
+            page.setCurrent(1);
+        }
         List<MgtMemberPageVo> mgtShopPageVoList = memberService.pageMgtMember(page,mgtMemberPageDto);
         ExcelUtil<MgtMemberPageVo> util = new ExcelUtil<MgtMemberPageVo>(MgtMemberPageVo.class);
         util.exportExcel(response, mgtShopPageVoList, "用户管理");
@@ -124,8 +126,10 @@
         Long userId = SecurityUtils.getUserId();
         mgtMemberIntegralPageDto.setUserId(userId);
         Page<MgtMemberIntegralPageVo> page = new Page<>();
-        page.setSize(2000);
-        page.setCurrent(1);
+        if(page.getSize()>5000){
+            page.setSize(5000);
+            page.setCurrent(1);
+        }
         List<MgtMemberIntegralPageVo> mgtMemberIntegralPageVoList = integralRecordService.pageMgtMemberIntegral(page,mgtMemberIntegralPageDto);
         return R.ok(page.setRecords(mgtMemberIntegralPageVoList));
     }
@@ -161,8 +165,10 @@
         Long userId = SecurityUtils.getUserId();
         mgtMemberBrowsePageDto.setUserId(userId);
         Page<MgtMemberBrowsePageVo> page = new Page<>();
-        page.setSize(2000);
-        page.setCurrent(1);
+        if(page.getSize()>5000){
+            page.setSize(5000);
+            page.setCurrent(1);
+        }
         List<MgtMemberBrowsePageVo> mgtMemberBrowsePageVoList = browseRecordService.pageMgtMemberBrowse(page,mgtMemberBrowsePageDto);
         ExcelUtil<MgtMemberBrowsePageVo> util = new ExcelUtil<MgtMemberBrowsePageVo>(MgtMemberBrowsePageVo.class);
         util.exportExcel(response, mgtMemberBrowsePageVoList, "用户浏览记录");
@@ -207,8 +213,10 @@
         Long userId = SecurityUtils.getUserId();
         memberSuggestPageDto.setUserId(userId);
         Page<MgtMemberSuggestPageVo> page = new Page<>();
-        page.setSize(2000);
-        page.setCurrent(1);
+        if(page.getSize()>5000){
+            page.setSize(5000);
+            page.setCurrent(1);
+        }
         List<MgtMemberSuggestPageVo> mgtMemberSuggestPageVoList = memberSuggestService.pageMgtMemberSuggest(page,memberSuggestPageDto);
         ExcelUtil<MgtMemberSuggestPageVo> util = new ExcelUtil<MgtMemberSuggestPageVo>(MgtMemberSuggestPageVo.class);
         util.exportExcel(response, mgtMemberSuggestPageVoList, "用户建议列表");
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppMemberController.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppMemberController.java
index 2a0ac58..ec98ae3 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppMemberController.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppMemberController.java
@@ -118,6 +118,7 @@
                     int todayMonth = today.getMonthValue();
                     if (birthdayMonth == todayMonth) {
                         appBirthdayCardVo = birthdayCardService.getUserBirthdayCard(userId,member.getRelationShopId());
+                        appBirthdayCardVo.setCheckBirthdayCard(1);
                         appBirthdayCardVo.setHaveBirthdayFlag(1);
                         appBirthdayCardVo.setInBirthdayFlag(1);
                     } else {
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MerMemberAddDto.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MerMemberAddDto.java
index d168944..0b74f69 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MerMemberAddDto.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MerMemberAddDto.java
@@ -19,7 +19,7 @@
 
 
     @ApiModelProperty(value = "用户昵称")
-    private String nickName;
+    private String realName;
 
     @ApiModelProperty(value = "手机号码")
     private String phonenumber;
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MerMemberEditDto.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MerMemberEditDto.java
index 07cfb4a..92d4dca 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MerMemberEditDto.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MerMemberEditDto.java
@@ -22,7 +22,7 @@
     private Long editUserId;
 
     @ApiModelProperty(value = "用户昵称")
-    private String nickName;
+    private String realName;
 
     @ApiModelProperty(value = "手机号码")
     private String phonenumber;
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/member/MemberTotal.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/member/MemberTotal.java
index 7f9787b..411ea8c 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/member/MemberTotal.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/member/MemberTotal.java
@@ -82,7 +82,7 @@
      * 下次跟进时间
      */
     @TableField("next_task_time")
-    private Date nextTaskTime;
+    private String nextTaskTime;
     /**
      * 总服务次数
      */
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerMemberBasicFileVo.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerMemberBasicFileVo.java
index f58eb32..709a714 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerMemberBasicFileVo.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerMemberBasicFileVo.java
@@ -21,7 +21,7 @@
     private Long userId;
 
     @ApiModelProperty(value = "用户名称")
-    private String nickName;
+    private String realName;
 
     @ApiModelProperty(value = "手机号码")
     private String phonenumber;
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerMemberInfoVo.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerMemberInfoVo.java
index a60e10a..6682652 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerMemberInfoVo.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerMemberInfoVo.java
@@ -21,7 +21,7 @@
     private Long userId;
 
     @ApiModelProperty(value = "用户名称")
-    private String nickName;
+    private String realName;
 
     @ApiModelProperty(value = "手机号码")
     private String phonenumber;
@@ -58,8 +58,7 @@
     private Date lastTaskTime;
 
     @ApiModelProperty(value = "下次跟进任务时间")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private Date nextTaskTime;
+    private String nextTaskTime;
 
     @ApiModelProperty(value = "最近消费时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberSuggestPageVo.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberSuggestPageVo.java
index 382db9b..4e8d862 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberSuggestPageVo.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberSuggestPageVo.java
@@ -61,9 +61,11 @@
     @Excel(name = "平台响应时间", width = 30)
     @ApiModelProperty(value = "平台响应时间")
     private String responseTime;
-    @Excel(name = "回复商户名", width = 30)
-    @ApiModelProperty(value = "回复商户名")
-    private String replayShopName;
+    @ApiModelProperty(value = "商户id")
+    private Long shopId;
+    @Excel(name = "商户名", width = 30)
+    @ApiModelProperty(value = "商户名")
+    private String shopName;
     @Excel(name = "商户回复人姓名", width = 30)
     @ApiModelProperty(value = "商户回复人姓名")
     private String shopReplayUserName;
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/fliter/ParamsAuthFilter.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/fliter/ParamsAuthFilter.java
index cab063c..b2b0170 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/fliter/ParamsAuthFilter.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/fliter/ParamsAuthFilter.java
@@ -30,7 +30,14 @@
     public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
         HttpServletRequest request = (HttpServletRequest) servletRequest;
         HttpServletResponse response = (HttpServletResponse) servletResponse;
-
+        String requestUrl = request.getRequestURI();
+        String requestUrlUpperCase = requestUrl.toUpperCase();
+        if(requestUrlUpperCase.contains("EXPORT")
+                ||requestUrlUpperCase.contains("IMPORTTEMPLATE")
+        ){
+            filterChain.doFilter(request, response);
+            return;
+        }
         RepeatedlyRequestWrapper wrapper = new RepeatedlyRequestWrapper(request, response);
         getRequestParams(wrapper);
 
@@ -39,7 +46,6 @@
 
         // 返回的结果
         String content = responseWrapper.getTextContent();
-        String requestUrl = request.getRequestURI();
         log.info("-------------------- Response Data ----------------------");
         log.info(requestUrl + " -> " + content);
 
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberCouponMapper.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberCouponMapper.java
index f572d21..98f6321 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberCouponMapper.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberCouponMapper.java
@@ -76,5 +76,5 @@
      * @param
      * @return  List<MerMemberCouponVo>
      */
-    List<MerMemberCouponVo> listMerShopGoodsMemberCoupon(MerGoodsCouponListDto merGoodsCouponListDto);
+    List<MerMemberCouponVo> listMerShopGoodsMemberCoupon(@Param("param") MerGoodsCouponListDto merGoodsCouponListDto);
 }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/birthday/BirthdayCardServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/birthday/BirthdayCardServiceImpl.java
index b223bc4..f5ccdf4 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/birthday/BirthdayCardServiceImpl.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/birthday/BirthdayCardServiceImpl.java
@@ -3,6 +3,8 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.exception.ServiceException;
+import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.core.utils.bean.BeanUtils;
 import com.ruoyi.common.core.utils.uuid.IdUtils;
 import com.ruoyi.member.domain.dto.MerBirthdayEditDto;
@@ -16,6 +18,7 @@
 import com.ruoyi.member.service.birthday.BirthdayCardService;
 import com.ruoyi.member.service.birthday.BirthdayGiftService;
 import com.ruoyi.member.service.member.MemberGiftRecordService;
+import com.ruoyi.system.api.constant.AppErrorConstant;
 import com.ruoyi.system.api.domain.dto.BirthdayGiftSendDto;
 import com.ruoyi.system.api.domain.dto.MgtBaseBathDto;
 import com.ruoyi.system.api.domain.poji.member.MemberGiftRecord;
@@ -412,6 +415,12 @@
         }
         birthdayCard.setCardStatus(merBirthdayEditDto.getCardStatus());
         this.saveOrUpdate(birthdayCard);
+        List<BirthdayGift> birthdayGiftList = birthdayGiftService.listByCardId(birthdayCard.getCardId());
+        if(merBirthdayEditDto.getCardStatus()==1){
+            if(birthdayGiftList==null||birthdayGiftList.isEmpty()){
+                throw new ServiceException(AppErrorConstant.BIRTHDAYCARD_NO_GIFT);
+            }
+        }
     }
 
     /**
@@ -493,7 +502,7 @@
         if (plBirthdayCard != null && plBirthdayCard.getCardStatus()==1) {
             // 获取生日卡对应的生日礼物列表
             List<BirthdayGift> birthdayGiftList = birthdayGiftService.listByCardId(plBirthdayCard.getCardId());
-            if(!birthdayGiftList.isEmpty()){
+            if(birthdayGiftList!=null&&!birthdayGiftList.isEmpty()){
                 // 遍历生日礼物列表
                 for (BirthdayGift birthdayGift : birthdayGiftList) {
                     winningProbability = birthdayGift.getWinningProbability();
@@ -691,15 +700,29 @@
     @Override
     public Integer checkBirthdayCard(Long shopId){
         // 获取平台生日卡信息
-        BirthdayCard plBirthdayCard = birthdayCardMapper.getPlatformBirthdayCard(shopId);
-        // 如果生日卡存在
+        Boolean platformBirthdayCardOpen = true;
+        BirthdayCard plBirthdayCard = birthdayCardMapper.getMerShopBirthdayCard(0L);
         if (plBirthdayCard == null || plBirthdayCard.getCardStatus()!=1) {
-            return 0;
+            platformBirthdayCardOpen = false;
+        }else{
+            if(plBirthdayCard.getAreaFlag()==2&&!StringUtils.checkString(plBirthdayCard.getApplicableShop(),shopId.toString())){
+                platformBirthdayCardOpen = false;
+            }
+        }
+        BirthdayCard shopBirthdayCard = birthdayCardMapper.getMerShopBirthdayCard(shopId);
+        // 如果生日卡存在
+        Boolean shopBirthdayCardOpen  = true;
+        if (shopBirthdayCard == null || shopBirthdayCard.getCardStatus()!=1) {
+            shopBirthdayCardOpen = false;
         }
         Integer marketingStatus = remoteShopService.getShopMarketingStatus(shopId).getData();
         if(marketingStatus<=1){
+            shopBirthdayCardOpen = false;
+        }
+        if(!platformBirthdayCardOpen||!shopBirthdayCardOpen){
+            return 1;
+        }else{
             return 0;
         }
-        return 1;
     }
 }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java
index e45d371..0cf4ebc 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java
@@ -223,7 +223,7 @@
             if(StringUtils.isNotBlank(relGoodsIds)){
                 //获取指定商品列表
                 List<MerGoodsPriceListVo> goodsList = remoteGoodsService.listGoodsPriceByGoodsId(relGoodsIds).getData();
-                if(!goodsList.isEmpty()){
+                if(goodsList!=null&&!goodsList.isEmpty()){
                     merCouponGetVo.setRelGoodsList(goodsList);
                 }
             }
@@ -384,47 +384,93 @@
             String memberCouponId;
             Integer sendUserTotal;
             for(Long userId : userIdList){
-                memberCouponId = IdUtils.simpleUUID();
-                memberCoupon = new MemberCoupon();
-                memberCoupon.setId(memberCouponId);
-                memberCoupon.setDelFlag(0);
-                memberCoupon.setCouponId(coupon.getCouponId());
-                memberCoupon.setUserId(userId);
-                memberCoupon.setShopId(coupon.getShopId());
-                memberCoupon.setCouponType(coupon.getCouponType());
-                memberCoupon.setCouponStatus(coupon.getCouponStatus());
-                memberCoupon.setCouponName(coupon.getCouponName());
-                memberCoupon.setSendType(coupon.getSendType());
-                memberCoupon.setSendTarget(coupon.getSendTarget());
-                memberCoupon.setSendTimeType(coupon.getSendTimeType());
-                memberCoupon.setSendTime(coupon.getSendTime());
-                memberCoupon.setMoneyThreshold(coupon.getMoneyThreshold());
-                memberCoupon.setDiscountMoney(coupon.getDiscountMoney());
-                memberCoupon.setDiscountPercent(coupon.getDiscountPercent());
-                memberCoupon.setUseScope(coupon.getUseScope());
-                memberCoupon.setValidTimeType(coupon.getValidTimeType());
-                memberCoupon.setValidStartTime(coupon.getValidStartTime());
-                memberCoupon.setValidEndTime(coupon.getValidEndTime());
-                memberCoupon.setValidDay(coupon.getValidDay());
-                memberCoupon.setCouponFrom(coupon.getCouponFrom());
-                memberCoupon.setReceiveTime(nowTime);
-                memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds());
-                //有效期处理1.时间段2.领取之日起
-                if(coupon.getValidTimeType()==1){
-                    memberCoupon.setDeadlineTime(coupon.getValidEndTime());
-                }else if(coupon.getValidTimeType()==2){
-                    memberCoupon.setDeadlineTime(DateUtils.addDays(nowTime,coupon.getValidDay()));
+                if(coupon.getCouponFrom()==2){
+                    for(int i=0;i<coupon.getLimitNumber();i++){
+                        memberCouponId = IdUtils.simpleUUID();
+                        memberCoupon = new MemberCoupon();
+                        memberCoupon.setId(memberCouponId);
+                        memberCoupon.setDelFlag(0);
+                        memberCoupon.setCouponId(coupon.getCouponId());
+                        memberCoupon.setUserId(userId);
+                        memberCoupon.setShopId(coupon.getShopId());
+                        memberCoupon.setCouponType(coupon.getCouponType());
+                        memberCoupon.setCouponStatus(coupon.getCouponStatus());
+                        memberCoupon.setCouponName(coupon.getCouponName());
+                        memberCoupon.setSendType(coupon.getSendType());
+                        memberCoupon.setSendTarget(coupon.getSendTarget());
+                        memberCoupon.setSendTimeType(coupon.getSendTimeType());
+                        memberCoupon.setSendTime(coupon.getSendTime());
+                        memberCoupon.setMoneyThreshold(coupon.getMoneyThreshold());
+                        memberCoupon.setDiscountMoney(coupon.getDiscountMoney());
+                        memberCoupon.setDiscountPercent(coupon.getDiscountPercent());
+                        memberCoupon.setUseScope(coupon.getUseScope());
+                        memberCoupon.setValidTimeType(coupon.getValidTimeType());
+                        memberCoupon.setValidStartTime(coupon.getValidStartTime());
+                        memberCoupon.setValidEndTime(coupon.getValidEndTime());
+                        memberCoupon.setValidDay(coupon.getValidDay());
+                        memberCoupon.setCouponFrom(coupon.getCouponFrom());
+                        memberCoupon.setReceiveTime(nowTime);
+                        memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds());
+                        //有效期处理1.时间段2.领取之日起
+                        if(coupon.getValidTimeType()==1){
+                            memberCoupon.setDeadlineTime(coupon.getValidEndTime());
+                        }else if(coupon.getValidTimeType()==2){
+                            memberCoupon.setDeadlineTime(DateUtils.addDays(nowTime,coupon.getValidDay()));
+                        }
+                        memberCouponList.add(memberCoupon);
+                        sendTotal = sendTotal + 1;
+                        if(coupon.getSendType()==1){
+                            sendUserTotal = memberCouponService.totalMemberCouponByUserAndCoupon(userId,coupon.getCouponId());
+                            if(sendUserTotal!=null&&sendUserTotal>0){
+                            }else{
+                                sendPerson = sendPerson + 1;
+                            }
+                        }
+                        memberCouponRecordService.updateMemberCouponRecord(coupon,userId,1);
+                    }
+                }else{
+                    memberCouponId = IdUtils.simpleUUID();
+                    memberCoupon = new MemberCoupon();
+                    memberCoupon.setId(memberCouponId);
+                    memberCoupon.setDelFlag(0);
+                    memberCoupon.setCouponId(coupon.getCouponId());
+                    memberCoupon.setUserId(userId);
+                    memberCoupon.setShopId(coupon.getShopId());
+                    memberCoupon.setCouponType(coupon.getCouponType());
+                    memberCoupon.setCouponStatus(coupon.getCouponStatus());
+                    memberCoupon.setCouponName(coupon.getCouponName());
+                    memberCoupon.setSendType(coupon.getSendType());
+                    memberCoupon.setSendTarget(coupon.getSendTarget());
+                    memberCoupon.setSendTimeType(coupon.getSendTimeType());
+                    memberCoupon.setSendTime(coupon.getSendTime());
+                    memberCoupon.setMoneyThreshold(coupon.getMoneyThreshold());
+                    memberCoupon.setDiscountMoney(coupon.getDiscountMoney());
+                    memberCoupon.setDiscountPercent(coupon.getDiscountPercent());
+                    memberCoupon.setUseScope(coupon.getUseScope());
+                    memberCoupon.setValidTimeType(coupon.getValidTimeType());
+                    memberCoupon.setValidStartTime(coupon.getValidStartTime());
+                    memberCoupon.setValidEndTime(coupon.getValidEndTime());
+                    memberCoupon.setValidDay(coupon.getValidDay());
+                    memberCoupon.setCouponFrom(coupon.getCouponFrom());
+                    memberCoupon.setReceiveTime(nowTime);
+                    memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds());
+                    //有效期处理1.时间段2.领取之日起
+                    if(coupon.getValidTimeType()==1){
+                        memberCoupon.setDeadlineTime(coupon.getValidEndTime());
+                    }else if(coupon.getValidTimeType()==2){
+                        memberCoupon.setDeadlineTime(DateUtils.addDays(nowTime,coupon.getValidDay()));
+                    }
+                    memberCouponList.add(memberCoupon);
+                    sendTotal = sendTotal + 1;
+                    if(coupon.getSendType()==1){
+                        sendUserTotal = memberCouponService.totalMemberCouponByUserAndCoupon(userId,coupon.getCouponId());
+                        if(sendUserTotal!=null&&sendUserTotal>0){
+                        }else{
+                            sendPerson = sendPerson + 1;
+                        }
+                    }
+                    memberCouponRecordService.updateMemberCouponRecord(coupon,userId,1);
                 }
-                memberCouponList.add(memberCoupon);
-                sendTotal = sendTotal + 1;
-                if(coupon.getSendType()==1){
-                   sendUserTotal = memberCouponService.totalMemberCouponByUserAndCoupon(userId,coupon.getCouponId());
-                   if(sendUserTotal!=null&&sendUserTotal>0){
-                   }else{
-                       sendPerson = sendPerson + 1;
-                   }
-                }
-                memberCouponRecordService.updateMemberCouponRecord(coupon,userId,1);
             }
             memberCouponService.saveBatch(memberCouponList);
             //处理优惠券统计
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java
index ca03532..32a8647 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java
@@ -360,6 +360,9 @@
             case 4:
                 member.setBirthday(editValue);
                 break;
+            case 5:
+                member.setRealName(editValue);
+                break;
             default:
                 break;
         }
@@ -457,7 +460,7 @@
         Member member = this.getByUserId(userId);
         // 设置MerMemberInfoVo对象的属性值
         merMemberInfoVo.setUserId(userId);
-        merMemberInfoVo.setNickName(member.getNickName());
+        merMemberInfoVo.setRealName(member.getRealName());
         merMemberInfoVo.setPhonenumber(member.getMobile());
         merMemberInfoVo.setAvatar(member.getAvatar());
         merMemberInfoVo.setBirthday(member.getBirthday());
@@ -532,7 +535,7 @@
         MerMemberBasicFileVo merMemberBasicFileVo = new MerMemberBasicFileVo();
         Member member = this.getByUserId(userId);
         BeanUtils.copyProperties(member, merMemberBasicFileVo);
-        merMemberBasicFileVo.setNickName(member.getNickName());
+        merMemberBasicFileVo.setRealName(member.getRealName());
         merMemberBasicFileVo.setPhonenumber(member.getMobile());
         merMemberBasicFileVo.setCreateTime(member.getCreateTime());
         /*List<MemberNurse> memberNurseList = memberNurseService.listByUserId(userId);
@@ -607,7 +610,7 @@
      * @param merMemberAddDto
      */
     @Override
-    public void addMerMember(MerMemberAddDto merMemberAddDto) {
+    public Long addMerMember(MerMemberAddDto merMemberAddDto) {
         String phoneNumber = merMemberAddDto.getPhonenumber();
         Member oldMember = this.getByMobile(phoneNumber);
         // Check if the member already exists
@@ -622,7 +625,7 @@
             sysUser = new SysUser();
             sysUser.setUserName(memberId);
             sysUser.setUserType("03");
-            sysUser.setNickName(merMemberAddDto.getNickName());
+            sysUser.setNickName(merMemberAddDto.getRealName());
             sysUser.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png");
             String password = "hongruitang";
             sysUser.setPassword(SecurityUtils.encryptPassword(password));
@@ -636,8 +639,8 @@
             member.setUserId(sysUser.getUserId());
             member.setDelFlag(0);
             member.setFrozenFlag(0);
-            member.setNickName(merMemberAddDto.getNickName());
-            member.setRealName(merMemberAddDto.getNickName());
+            member.setNickName(merMemberAddDto.getRealName());
+            member.setRealName(merMemberAddDto.getRealName());
             member.setGender(merMemberAddDto.getGender());
             member.setMobile(phoneNumber);
             member.setReferrer(merMemberAddDto.getReferrer());
@@ -671,6 +674,7 @@
                 memberArchiveService.saveBatch(memberArchiveList);
             }
         }
+        return sysUser.getUserId();
     }
 
     /**
@@ -680,54 +684,54 @@
      */
     @Override
     public void editMerMember(MerMemberEditDto merMemberEditDto) {
-    // 获取用户信息
-    Member member = this.getByUserId(merMemberEditDto.getEditUserId());
-     // 检查手机号是否已经存在
-    if (!member.getMobile().equals(merMemberEditDto.getPhonenumber())) {
-        Member memberOld = getByMobile(merMemberEditDto.getPhonenumber());
-        if (memberOld != null) {
-            throw new ServiceException(AppErrorConstant.MOBILE_DOUBLE);
+        // 获取用户信息
+        Member member = this.getByUserId(merMemberEditDto.getEditUserId());
+         // 检查手机号是否已经存在
+        if (!member.getMobile().equals(merMemberEditDto.getPhonenumber())) {
+            Member memberOld = getByMobile(merMemberEditDto.getPhonenumber());
+            if (memberOld != null) {
+                throw new ServiceException(AppErrorConstant.MOBILE_DOUBLE);
+            }
+        }
+         // 更新用户信息
+        member.setRealName(merMemberEditDto.getRealName());
+        member.setMobile(merMemberEditDto.getPhonenumber());
+        member.setGender(merMemberEditDto.getGender());
+        member.setReferrer(merMemberEditDto.getReferrer());
+        member.setCustomerSource(merMemberEditDto.getCustomerSource());
+        member.setLevel(merMemberEditDto.getLevel());
+        member.setBirthday(merMemberEditDto.getBirthday());
+        member.setUpdateUserId(merMemberEditDto.getUserId());
+        member.setUpdateTime(new Date());
+        List<String> memberNurse = merMemberEditDto.getMemberNurse();
+        if(memberNurse!=null&&!memberNurse.isEmpty()){
+            String memberNurseString = String.join(",", memberNurse);
+            member.setMemberNurse(memberNurseString);
+        }
+        this.saveOrUpdate(member);
+         // 更新用户手机号
+        SysUser sysUser = new SysUser();
+        sysUser.setUserId(merMemberEditDto.getEditUserId());
+        sysUser.setPhonenumber(merMemberEditDto.getPhonenumber());
+        sysUserService.updateUserMobile(sysUser);
+         // 删除用户的档案信息
+        memberArchiveService.deleteByUserId(sysUser.getUserId());
+         // 添加用户的档案信息
+        List<MemberArchiveVo> achiveList = merMemberEditDto.getAchiveList();
+        if (achiveList != null && !achiveList.isEmpty()) {
+            // 构造用户档案列表
+            List<MemberArchive> memberArchiveList = achiveList.stream().map(memberArchiveVo -> {
+                MemberArchive memberArchive = new MemberArchive();
+                memberArchive.setDelFlag(0);
+                memberArchive.setUserId(sysUser.getUserId());
+                memberArchive.setFieldId(memberArchiveVo.getFieldId());
+                memberArchive.setFieldValue(memberArchiveVo.getFieldValue());
+                return memberArchive;
+            }).collect(Collectors.toList());
+             // 批量保存用户档案信息
+            memberArchiveService.saveBatch(memberArchiveList);
         }
     }
-     // 更新用户信息
-    member.setRealName(merMemberEditDto.getNickName());
-    member.setMobile(merMemberEditDto.getPhonenumber());
-    member.setGender(merMemberEditDto.getGender());
-    member.setReferrer(merMemberEditDto.getReferrer());
-    member.setCustomerSource(merMemberEditDto.getCustomerSource());
-    member.setLevel(merMemberEditDto.getLevel());
-    member.setBirthday(merMemberEditDto.getBirthday());
-    member.setUpdateUserId(merMemberEditDto.getUserId());
-    member.setUpdateTime(new Date());
-    List<String> memberNurse = merMemberEditDto.getMemberNurse();
-    if(memberNurse!=null&&!memberNurse.isEmpty()){
-        String memberNurseString = String.join(",", memberNurse);
-        member.setMemberNurse(memberNurseString);
-    }
-    this.saveOrUpdate(member);
-     // 更新用户手机号
-    SysUser sysUser = new SysUser();
-    sysUser.setUserId(merMemberEditDto.getEditUserId());
-    sysUser.setPhonenumber(merMemberEditDto.getPhonenumber());
-    sysUserService.updateUserMobile(sysUser);
-     // 删除用户的档案信息
-    memberArchiveService.deleteByUserId(sysUser.getUserId());
-     // 添加用户的档案信息
-    List<MemberArchiveVo> achiveList = merMemberEditDto.getAchiveList();
-    if (achiveList != null && !achiveList.isEmpty()) {
-        // 构造用户档案列表
-        List<MemberArchive> memberArchiveList = achiveList.stream().map(memberArchiveVo -> {
-            MemberArchive memberArchive = new MemberArchive();
-            memberArchive.setDelFlag(0);
-            memberArchive.setUserId(sysUser.getUserId());
-            memberArchive.setFieldId(memberArchiveVo.getFieldId());
-            memberArchive.setFieldValue(memberArchiveVo.getFieldValue());
-            return memberArchive;
-        }).collect(Collectors.toList());
-         // 批量保存用户档案信息
-        memberArchiveService.saveBatch(memberArchiveList);
-    }
-}
 
     /**
      * @param mobile
@@ -972,11 +976,14 @@
             String memberUserIds = mgtMemberRelDelDto.getMemberUserIds();
             String[] memberUserIdArr = memberUserIds.split(",");
             for (String str : memberUserIdArr) {
-                Member member = this.getByUserId(Long.valueOf(str));
-                member.setBindingFlag(0);
-                member.setUpdateTime(new Date());
-                member.setUpdateUserId(mgtMemberRelDelDto.getUserId());
-                this.saveOrUpdate(member);
+                LambdaUpdateWrapper<Member> updateWrapper = Wrappers.lambdaUpdate();
+                updateWrapper.eq(Member::getUserId, str)
+                        .set(Member::getBindingFlag, 0)
+                        .set(Member::getRelationShopId,null)
+                        .set(Member::getRelationShopName,null)
+                        .set(Member::getUpdateUserId,mgtMemberRelDelDto.getUserId())
+                        .set(Member::getUpdateTime,new Date());
+                this.update(updateWrapper);
             }
         }
     }
@@ -1105,7 +1112,9 @@
         mgtMemberGetVo.setCreateTime(member.getCreateTime());
         mgtMemberGetVo.setLastPayTime(memberTotal.getLastPayTime());
         mgtMemberGetVo.setGoodsType(member.getGoodsType());
-        mgtMemberGetVo.setRelationShopName(member.getRelationShopName());
+        if(member.getBindingFlag()==1){
+            mgtMemberGetVo.setRelationShopName(member.getRelationShopName());
+        }
         mgtMemberGetVo.setIntegral(memberTotal.getTotalIntegral());
         mgtMemberGetVo.setMemberFrom(member.getCustomerSource());
         mgtMemberGetVo.setTotalActivityCount(memberTotal.getTotalActivityCount());
@@ -1508,7 +1517,7 @@
                 memberTotal.setUseableServiceCount(memberTotal.getUseableServiceCount() - memberTotalChangeDto.getServiceCount());
                 memberTotal.setUsedServiceCount(memberTotal.getUsedServiceCount() + memberTotalChangeDto.getServiceCount());
             } else {
-                memberTotal.setUseableIntegral(memberTotal.getUseableIntegral() + memberTotalChangeDto.getServiceCount());
+                memberTotal.setUseableServiceCount(memberTotal.getUseableServiceCount() + memberTotalChangeDto.getServiceCount());
                 memberTotal.setTotalServiceCount(memberTotal.getTotalServiceCount() + memberTotalChangeDto.getServiceCount());
             }
         }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberSuggestServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberSuggestServiceImpl.java
index dea4669..80d3eb5 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberSuggestServiceImpl.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberSuggestServiceImpl.java
@@ -17,19 +17,21 @@
 import com.ruoyi.member.service.member.MemberSuggestService;
 import com.ruoyi.system.api.domain.dto.AppSuggestPageDto;
 import com.ruoyi.system.api.domain.dto.AppUserSuggestDto;
+import com.ruoyi.system.api.domain.dto.MgtBaseBathDto;
 import com.ruoyi.system.api.domain.dto.MgtShopIdByCodeDto;
 import com.ruoyi.system.api.domain.poji.config.SysTag;
 import com.ruoyi.system.api.domain.poji.sys.SysUser;
 import com.ruoyi.system.api.domain.vo.MgtShopIdByCodeVo;
+import com.ruoyi.system.api.domain.vo.MgtSimpleShopVo;
 import com.ruoyi.system.api.service.RemoteConfigService;
 import com.ruoyi.system.api.service.RemoteShopService;
 import com.ruoyi.system.api.service.RemoteUserService;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
+import java.util.function.Function;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -112,11 +114,7 @@
             mgtShopIdByCodeDto.setShopCityCode(memberSuggestPageDto.getShopCityCode());
             mgtShopIdByCodeDto.setShopAreaCode(memberSuggestPageDto.getShopAreaCode());
             MgtShopIdByCodeVo mgtShopIdByCodeVo = remoteShopService.getShopIdByCode(mgtShopIdByCodeDto).getData();
-            if(StringUtils.isNotBlank(mgtShopIdByCodeVo.getShopIds())){
-                memberSuggestPageDto.setShopIds(mgtShopIdByCodeVo.getShopIds());
-            }else{
-                return mgtMemberSuggestPageVoList;
-            }
+            memberSuggestPageDto.setShopIds(mgtShopIdByCodeVo.getShopIds());
         }
         //处理标签为正则方便sql判断
         if(StringUtils.isNotBlank(memberSuggestPageDto.getTags())){
@@ -127,6 +125,25 @@
         }
         //获取返回结果
         mgtMemberSuggestPageVoList = memberSuggestMapper.pageMgtMemberSuggest(page, memberSuggestPageDto);
+        if(mgtMemberSuggestPageVoList!=null&&!mgtMemberSuggestPageVoList.isEmpty()){
+            HashSet<Long> shopIdSet = new HashSet<>();
+            for(MgtMemberSuggestPageVo mgtMemberSuggestPageVo : mgtMemberSuggestPageVoList){
+                if(mgtMemberSuggestPageVo.getShopId()!=null){
+                    shopIdSet.add(mgtMemberSuggestPageVo.getShopId());
+                }
+            }
+            String shopJoinedString = String.join(",", shopIdSet.stream().map(Object::toString).collect(Collectors.toList()));
+            MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto();
+            mgtBaseBathDto.setIds(shopJoinedString);
+            List<MgtSimpleShopVo> simpleShopVoList = remoteShopService.listShopSimpleVoByIds(mgtBaseBathDto).getData();
+            Map<Long, MgtSimpleShopVo> shopMap = simpleShopVoList.stream()
+                    .collect(Collectors.toMap(MgtSimpleShopVo::getShopId, Function.identity()));
+            for(MgtMemberSuggestPageVo mgtMemberSuggestPageVo : mgtMemberSuggestPageVoList){
+                if(mgtMemberSuggestPageVo.getShopId()!=null){
+                    mgtMemberSuggestPageVo.setShopName(shopMap.get(mgtMemberSuggestPageVo.getShopId()).getShopName());
+                }
+            }
+        }
         return mgtMemberSuggestPageVoList;
     }
 
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberService.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberService.java
index d82f009..500909c 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberService.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberService.java
@@ -111,7 +111,7 @@
      * 添加会员
      * @param merMemberAddDto
      */
-    void addMerMember(MerMemberAddDto merMemberAddDto);
+    Long addMerMember(MerMemberAddDto merMemberAddDto);
 
     /**
      * 编辑会员
diff --git a/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberCouponMapper.xml b/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberCouponMapper.xml
index 3c1a97f..2f58738 100644
--- a/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberCouponMapper.xml
+++ b/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberCouponMapper.xml
@@ -206,6 +206,8 @@
     <select id="listMerShopGoodsMemberCoupon" resultType="com.ruoyi.system.api.domain.vo.MerMemberCouponVo">
         SELECT
             tuc.id memberCouponId,
+            tuc.use_scope,
+            tuc.rel_goods_ids relGoodsIds,
             tuc.coupon_type couponType,
             tuc.coupon_name couponName,
             tuc.money_threshold moneyThreshold,
@@ -214,9 +216,11 @@
             tuc.valid_start_time validStartTime,
             tuc.deadline_time deadlineTime
         FROM t_member_coupon tuc
-        WHERE tuc.del_flag = 0 AND tuc.coupon_status = 1 AND tuc.user_id = #{param.userId} AND tuc.coupon_type IN (1,2,3)
+        WHERE tuc.del_flag = 0 AND tuc.coupon_status = 1 AND tuc.user_id = #{param.memberUserId} AND tuc.coupon_type IN (1,2,3)
             AND (tuc.coupon_from = 1 OR (tuc.coupon_from = 2 AND tuc.shop_id = #{param.shopId}))
-            AND (tuc.use_scope = 1 OR (tuc.use_scope = 2 AND FIND_IN_SET(#{param.goodsId}, rel_goods_ids) &gt; 0))
+          <if test="param.goodsId!=null and param.goodsId!=''">
+              AND (tuc.use_scope = 1 OR (tuc.use_scope = 2 AND FIND_IN_SET(#{param.goodsId}, rel_goods_ids) &gt; 0))
+          </if>
         ORDER BY tuc.receive_time DESC
     </select>
 </mapper>
diff --git a/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml b/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml
index 6c6afec..9457c88 100644
--- a/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml
+++ b/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml
@@ -199,10 +199,10 @@
             AND FIND_IN_SET(#{param.memberNurse},tm.member_nurse) &gt; 0
         </if>
         <if test="param.actStartDate!=null and param.actStartDate!=''">
-            AND Date(tmt.last_pay_time) &gt;= #{param.actStartDate}
+            AND Date(tmt.last_service_time) &gt;= #{param.actStartDate}
         </if>
         <if test="param.actEndDate!=null and param.actEndDate!=''">
-            AND Date(tmt.last_pay_time) &lt;= #{param.actEndDate}
+            AND Date(tmt.last_service_time) &lt;= #{param.actEndDate}
         </if>
         <if test="param.keyword != null and param.keyword != ''">
             AND (tm.real_name LIKE CONCAT('%',#{param.keyword},'%') OR tm.mobile LIKE CONCAT('%',#{param.keyword},'%') OR tm.referrer LIKE CONCAT('%',#{param.keyword},'%'))
@@ -213,7 +213,7 @@
     <select id="pageMerCashMember" resultType="com.ruoyi.member.domain.vo.MerCashMemberPageVo">
         SELECT
         tm.user_id userId,
-        tm.nick_name nickName,
+        tm.real_name nickName,
         tm.mobile mobile
         FROM t_member tm
         WHERE tm.relation_shop_id = #{param.shopId}
@@ -240,7 +240,7 @@
         tm.create_time createTime,
         tmt.last_pay_time lastPayTime,
         tm.goods_type goodsType,
-        tm.relation_shop_name relationShopName,
+        CASE binding_flag WHEN 1 THEN tm.relation_shop_name ELSE "" END relationShopName,
         tmt.total_integral integral,
         tm.referrer referrer,
         tm.customer_source memberFrom,
@@ -252,7 +252,7 @@
         LEFT JOIN t_member_total tmt ON tm.member_id = tmt.member_id
         WHERE tm.del_flag = 0
         <if test="param.keyword != null and param.keyword != ''">
-            AND (tm.member_no LIKE CONCAT('%',#{param.keyword},'%') OR tm.mobile LIKE CONCAT('%',#{param.keyword},'%') OR tm.real_name LIKE CONCAT('%',#{param.keyword},'%') OR tm.nick_name LIKE CONCAT('%',#{param.keyword},'%') OR FIND_IN_SET(#{param.keyword},tm.member_nurse) &gt; 0)
+            AND (tm.user_id LIKE CONCAT('%',#{param.keyword},'%') OR tm.mobile LIKE CONCAT('%',#{param.keyword},'%') OR tm.real_name LIKE CONCAT('%',#{param.keyword},'%') OR tm.nick_name LIKE CONCAT('%',#{param.keyword},'%') OR FIND_IN_SET(#{param.keyword},tm.member_nurse) &gt; 0)
         </if>
         <if test="param.belongDistrict != null and param.belongDistrict != ''">
             AND tm.belong_district = #{param.belongDistrict}
@@ -270,7 +270,7 @@
             AND FIND_IN_SET(#{param.goodsType},tm.goods_type) &gt; 0
         </if>
         <if test="param.relationShopId != null and param.relationShopId != ''">
-            AND tm.relation_shop_id = #{param.relationShopId}
+            AND tm.relation_shop_id = #{param.relationShopId} AND tm.binding_flag = 1
         </if>
         <if test="param.memberFrom != null and param.memberFrom != ''">
             AND tm.customer_source = #{param.memberFrom}
@@ -294,10 +294,10 @@
             AND tmt.total_integral &lt;= #{param.endIntegral}
         </if>
         <if test="param.actStartDate != null and param.actStartDate != ''">
-            AND Date(tmt.last_pay_time) &gt;= #{param.actStartDate}
+            AND Date(tmt.last_service_time) &gt;= #{param.actStartDate}
         </if>
         <if test="param.actEndDate != null and param.actEndDate != ''">
-            AND Date(tmt.last_pay_time) &lt;= #{param.actEndDate}
+            AND Date(tmt.last_service_time) &lt;= #{param.actEndDate}
         </if>
         <if test="param.startPayCount != null and param.startPayCount != ''">
             AND tmt.total_pay_count &gt;= #{param.startPayCount}
@@ -327,7 +327,7 @@
         <if test="sendType != null and sendType == 4">
             AND tm.binding_flag = 0
         </if>
-        <if test="shopId != null and shopId != ''">
+        <if test="shopId != null and shopId != '' and sendType != null and sendType != 4">
             AND tm.relation_shop_id = #{shopId}
         </if>
     </select>
@@ -483,10 +483,10 @@
             AND tm.relation_shop_id = #{shopId}
         </if>
         <if test="actStartDate != null and actStartDate != ''">
-            AND Date(tmt.last_pay_time) &gt;= #{actStartDate}
+            AND Date(tmt.last_service_time) &gt;= #{actStartDate}
         </if>
         <if test="actEndDate != null and actEndDate != ''">
-            AND Date(tmt.last_pay_time) &lt;= #{actEndDate}
+            AND Date(tmt.last_service_time) &lt;= #{actEndDate}
         </if>
     </select>
 
@@ -664,10 +664,10 @@
             </foreach>
         </if>
         <if test="actStartDate != null and actStartDate != ''">
-            AND Date(tmt.last_pay_time) &gt;= #{actStartDate}
+            AND Date(tmt.last_service_time) &gt;= #{actStartDate}
         </if>
         <if test="actEndDate != null and actEndDate != ''">
-            AND Date(tmt.last_pay_time) &lt;= #{actEndDate}
+            AND Date(tmt.last_service_time) &lt;= #{actEndDate}
         </if>
     </select>
 
diff --git a/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberSuggestMapper.xml b/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberSuggestMapper.xml
index 7f53c05..90c4516 100644
--- a/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberSuggestMapper.xml
+++ b/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberSuggestMapper.xml
@@ -39,7 +39,8 @@
             tms.shop_replay_user_name shopReplayUserName,
             tms.shop_replay_time shopReplayTime,
             tms.shop_response_time shopResponseTime,
-            tms.suggest_tags suggestTags
+            tms.suggest_tags suggestTags,
+            tms.shop_id shopId
         FROM
             t_member_suggest tms
         INNER JOIN t_member tm ON tms.create_user_id = tm.user_id
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/config/MyWxPayConfig.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/config/MyWxPayConfig.java
deleted file mode 100644
index 1dc0d70..0000000
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/config/MyWxPayConfig.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package com.ruoyi.order.config;
-
-import com.github.binarywang.wxpay.config.WxPayConfig;
-import com.github.binarywang.wxpay.service.WxPayService;
-import com.github.binarywang.wxpay.service.impl.WxPayServiceImpl;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * @author jqs34
- * @ClassName WxPayConfig
- * @description: TODO
- * @date 2023年03月06日
- * @version: 1.0
- */
-@Configuration
-@ConditionalOnClass(WxPayService.class)
-public class MyWxPayConfig {
-    //微信API
-    private static final String APP_ID = "";
-    //微信商户号
-    private static final String MAC_ID = "";
-    //微信商户密钥
-    private static final String MCH_KEY = "";
-    //微信证书API
-    private static final String KEY_PATH = "";
-
-    private static final String PRIVATE_KEY_PATH = "";
-
-    private static final String PRIVATE_CERT_PATH = "";
-
-    private static final String API_V3_KEY = "";
-
-    @Bean
-    @ConditionalOnMissingBean
-    public WxPayService wxService() {
-        WxPayConfig payConfig = new WxPayConfig();
-        payConfig.setAppId(APP_ID);
-        payConfig.setMchId(MAC_ID);
-        payConfig.setMchKey(MCH_KEY);
-        payConfig.setKeyPath(KEY_PATH);
-        payConfig.setPrivateKeyPath(PRIVATE_KEY_PATH);
-        payConfig.setPrivateCertPath(PRIVATE_CERT_PATH);
-        payConfig.setApiV3Key(API_V3_KEY);
-        // 可以指定是否使用沙箱环境
-        payConfig.setUseSandboxEnv(false);
-        WxPayService wxPayService = new WxPayServiceImpl();
-        wxPayService.setConfig(payConfig);
-        return wxPayService;
-    }
-
-}
-
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/config/WxPayConfiguration.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/config/WxPayConfiguration.java
new file mode 100644
index 0000000..9cd9524
--- /dev/null
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/config/WxPayConfiguration.java
@@ -0,0 +1,54 @@
+package com.ruoyi.order.config;
+
+import com.github.binarywang.wxpay.config.WxPayConfig;
+import com.github.binarywang.wxpay.service.WxPayService;
+import com.github.binarywang.wxpay.service.impl.WxPayServiceImpl;
+import lombok.AllArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @author Binary Wang
+ */
+@Configuration
+@ConditionalOnClass(WxPayService.class)
+@EnableConfigurationProperties(WxPayProperties.class)
+@AllArgsConstructor
+public class WxPayConfiguration {
+
+  private WxPayProperties properties;
+
+  // 分账特约商户
+  private static String PLATFORM_TY_MAC_ID = "";
+
+  public static String getPlatformTyMacId() {
+    return PLATFORM_TY_MAC_ID;
+  }
+
+  @Bean
+  @ConditionalOnMissingBean
+  public WxPayService wxService() {
+    WxPayConfig payConfig = new WxPayConfig();
+    payConfig.setAppId(StringUtils.trimToNull(this.properties.getAppId()));
+    payConfig.setMchId(StringUtils.trimToNull(this.properties.getMchId()));
+    payConfig.setMchKey(StringUtils.trimToNull(this.properties.getMchKey()));
+    payConfig.setSubAppId(StringUtils.trimToNull(this.properties.getSubAppId()));
+    payConfig.setSubMchId(StringUtils.trimToNull(this.properties.getSubMchId()));
+    payConfig.setKeyPath(StringUtils.trimToNull(this.properties.getKeyPath()));
+
+    // 平台特约商户号
+    PLATFORM_TY_MAC_ID = this.properties.getPlatformTyMacId();
+
+    // 可以指定是否使用沙箱环境
+    payConfig.setUseSandboxEnv(false);
+
+    WxPayService wxPayService = new WxPayServiceImpl();
+    wxPayService.setConfig(payConfig);
+    return wxPayService;
+  }
+
+}
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/config/WxPayProperties.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/config/WxPayProperties.java
new file mode 100644
index 0000000..0089c12
--- /dev/null
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/config/WxPayProperties.java
@@ -0,0 +1,49 @@
+package com.ruoyi.order.config;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+
+/**
+ * wxpay pay properties.
+ *
+ * @author Binary Wang
+ */
+@Data
+@ConfigurationProperties(prefix = "wx.pay")
+public class WxPayProperties {
+  /**
+   * 设置微信公众号或者小程序等的appid
+   */
+  private String appId;
+
+  /**
+   * 微信支付商户号
+   */
+  private String mchId;
+
+  /**
+   * 微信支付商户密钥
+   */
+  private String mchKey;
+
+  /**
+   * 平台特约商户号,用户平台收取服务费
+   */
+  private String platformTyMacId;
+
+  /**
+   * 服务商模式下的子商户公众账号ID,普通模式请不要配置,请在配置文件中将对应项删除
+   */
+  private String subAppId;
+
+  /**
+   * 服务商模式下的子商户号,普通模式请不要配置,最好是请在配置文件中将对应项删除
+   */
+  private String subMchId;
+
+  /**
+   * apiclient_cert.p12文件的绝对路径,或者如果放在项目中,请以classpath:开头指定
+   */
+  private String keyPath;
+
+}
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/business/MerOrderController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/business/MerOrderController.java
index 01b334d..13bd363 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/business/MerOrderController.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/business/MerOrderController.java
@@ -18,8 +18,6 @@
 import javax.annotation.Resource;
 import java.util.List;
 
-import static org.reflections.Reflections.log;
-
 /**
  * @author jqs34
  * @ClassName MerOrderController
@@ -154,10 +152,20 @@
         Page<MerMemberNoClearOrderVo> page = new Page<>();
         page.setSize(merMemberNoClearOrderDto.getPageSize());
         page.setCurrent(merMemberNoClearOrderDto.getPageNum());
-        log.info("merMemberNoClearOrderDto----"+merMemberNoClearOrderDto.toString());
         List<MerMemberNoClearOrderVo> merMemberNoClearOrderVoList = orderService.pageMerMemberOrder(page,merMemberNoClearOrderDto);
         return R.ok(page.setRecords(merMemberNoClearOrderVoList));
     }
 
+    @RequestMapping(value = "/pageMerMemberPayOrder", method = RequestMethod.POST)
+    @ApiOperation(value = "获取商户端用户消费记录")
+    public R<Page<MerOrderPageVo>> pageMerMemberPayOrder(@RequestBody MerMemberNoClearOrderDto merOrderPageDto) {
+        Long userId = SecurityUtils.getUserId();
+        merOrderPageDto.setUserId(userId);
+        Page<MerOrderPageVo> page = new Page<>();
+        page.setSize(merOrderPageDto.getPageSize());
+        page.setCurrent(merOrderPageDto.getPageNum());
+        List<MerOrderPageVo> merOrderPageVoList = orderService.pageMerMemberPayOrder(page,merOrderPageDto);
+        return R.ok(page.setRecords(merOrderPageVoList));
+    }
 
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtMemberController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtMemberController.java
index ec99696..68fbe77 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtMemberController.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtMemberController.java
@@ -53,8 +53,10 @@
         Long userId = SecurityUtils.getUserId();
         mgtMemberServiceRecordPageDto.setUserId(userId);
         Page<MgtMemberServiceRecordPageVo> page = new Page<>();
-        page.setSize(2000);
-        page.setCurrent(1);
+        if(page.getSize()>5000){
+            page.setSize(5000);
+            page.setCurrent(1);
+        }
         List<MgtMemberServiceRecordPageVo> list = userServiceRecordService.pageMgtMemberServiceRecord(page,mgtMemberServiceRecordPageDto);
         ExcelUtil<MgtMemberServiceRecordPageVo> util = new ExcelUtil<MgtMemberServiceRecordPageVo>(MgtMemberServiceRecordPageVo.class);
         util.exportExcel(response, list, "用户浏览记录");
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtOrderController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtOrderController.java
index 2954027..4cfb820 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtOrderController.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtOrderController.java
@@ -65,8 +65,10 @@
         Long userId = SecurityUtils.getUserId();
         mgtMemberOrderPageDto.setUserId(userId);
         Page<MgtMemberOrderPageVo> page = new Page<>();
-        page.setSize(2000);
-        page.setCurrent(1);
+        if(page.getSize()>5000){
+            page.setSize(5000);
+            page.setCurrent(1);
+        }
         List<MgtMemberOrderPageVo> mgtMemberOrderPageVoList = orderService.pageMgtMemberOrder(page,mgtMemberOrderPageDto);
         if(!mgtMemberOrderPageVoList.isEmpty()){
             List<MgtOrderGoodsPageVo> mgtOrderGoodsVoList;
@@ -92,6 +94,8 @@
         return R.ok(mgtOrderTotal);
     }
 
+
+
     @RequestMapping(value = "/pageMgtActivityOrder", method = RequestMethod.POST)
     @ApiOperation(value = "平台获取秒杀订单列表")
     public R<Page<MgtActivityOrderPageVo>> pageMgtActivityOrder(@RequestBody MgtShopOrderPageDto mgtShopOrderPageDto) {
@@ -110,8 +114,10 @@
         Long userId = SecurityUtils.getUserId();
         mgtShopOrderPageDto.setUserId(userId);
         Page<MgtActivityOrderPageVo> page = new Page<>();
-        page.setSize(2000);
-        page.setCurrent(1);
+        if(page.getSize()>5000){
+            page.setSize(5000);
+            page.setCurrent(1);
+        }
         List<MgtActivityOrderPageVo> mgtActivityOrderPageVos = orderService.pageMgtActivityOrder(page,mgtShopOrderPageDto);
         ExcelUtil<MgtActivityOrderPageVo> util = new ExcelUtil<MgtActivityOrderPageVo>(MgtActivityOrderPageVo.class);
         util.exportExcel(response, mgtActivityOrderPageVos, "秒杀订单列表");
@@ -135,8 +141,10 @@
         Long userId = SecurityUtils.getUserId();
         mgtShopOrderPageDto.setUserId(userId);
         Page<MgtShopOrderPageVo> page = new Page<>();
-        page.setSize(2000);
-        page.setCurrent(1);
+        if(page.getSize()>5000){
+            page.setSize(5000);
+            page.setCurrent(1);
+        }
         List<MgtShopOrderPageVo> shopOrderPageVoList = orderService.pageMgtShopOrder(page,mgtShopOrderPageDto);
         ExcelUtil<MgtShopOrderPageVo> util = new ExcelUtil<MgtShopOrderPageVo>(MgtShopOrderPageVo.class);
         util.exportExcel(response, shopOrderPageVoList, "门店订单列表");
@@ -151,6 +159,15 @@
         return R.ok(mgtOrderDetail);
     }
 
+    @RequestMapping(value = "/getMgtShopAllOrderTotal", method = RequestMethod.POST)
+    @ApiOperation(value = "获取商户订单统计")
+    public R<MgtShopAllOrderTotal> getMgtShopAllOrderTotal(@RequestBody MgtShopAllOrderPageDto mgtShopAllOrderPageDto) {
+        Long userId = SecurityUtils.getUserId();
+        mgtShopAllOrderPageDto.setUserId(userId);
+        MgtShopAllOrderTotal shopAllOrderTotal = orderService.getMgtShopAllOrderTotal(mgtShopAllOrderPageDto);
+        return R.ok(shopAllOrderTotal);
+    }
+
     @RequestMapping(value = "/pageMgtShopAllOrder", method = RequestMethod.POST)
     @ApiOperation(value = "平台获取商户订单记录")
     public R<Page<MgtShopAllOrderPageVo>> pageMgtShopAllOrder(@RequestBody MgtShopAllOrderPageDto mgtShopAllOrderPageDto) {
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java
index ff9ee11..0af1e43 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java
@@ -15,6 +15,7 @@
 import com.ruoyi.system.api.domain.dto.AppBaseGetDto;
 import com.ruoyi.system.api.domain.dto.AppMemberBindingDto;
 import com.ruoyi.system.api.domain.poji.member.Member;
+import com.ruoyi.system.api.model.LoginUser;
 import com.ruoyi.system.api.service.RemoteConfigService;
 import com.ruoyi.system.api.service.RemoteMemberService;
 import io.swagger.annotations.Api;
@@ -57,10 +58,10 @@
     @ApiOperation(value = "购买商品")
     public R<AppSureOrderVo> buyGoods(@RequestBody AppSureOrderDto appSureOrderDto) {
         Long userId = SecurityUtils.getUserId();
-        if(userId!=null){
+        if (userId != null) {
             Member member = memberService.getMember(userId).getData();
             appSureOrderDto.setUserId(userId);
-            if(member!=null&&member.getRelationShopId()!=null){
+            if (member != null && member.getRelationShopId() != null) {
                 appSureOrderDto.setShopId(member.getRelationShopId());
             }
         }
@@ -73,10 +74,10 @@
     @ApiOperation(value = "抢购商品")
     public R<AppPanicBuyVo> panicBuyGoods(@RequestBody AppPanicBuyDto appPanicBuyDto) {
         Long userId = SecurityUtils.getUserId();
-        if(userId!=null){
+        if (userId != null) {
             Member member = memberService.getMember(userId).getData();
             appPanicBuyDto.setUserId(userId);
-            if(member!=null&&member.getRelationShopId()!=null){
+            if (member != null && member.getRelationShopId() != null) {
                 appPanicBuyDto.setShopId(member.getRelationShopId());
             }
         }
@@ -87,20 +88,26 @@
     @RequestMapping(value = "/placeOrder", method = RequestMethod.POST)
     @ApiOperation(value = "创建订单")
     public R<AppPlaceOrderVo> placeOrder(@RequestBody AppPlaceOrderDto appPlaceOrderDto) {
-        Long userId = SecurityUtils.getUserId();
-        if(userId!=null){
+        LoginUser loginUser = SecurityUtils.getLoginUser();
+        Long userId = loginUser.getUserid();
+        appPlaceOrderDto.setUserId(userId);
+        appPlaceOrderDto.setSpbillCreateIp(loginUser.getIpaddr());
+
+        if (userId != null) {
             Member member = memberService.getMember(userId).getData();
             appPlaceOrderDto.setUserId(userId);
-            if(member!=null&&member.getRelationShopId()!=null){
+
+            if (member != null) {
+                appPlaceOrderDto.setOpenid(member.getMiniOpenid());
                 appPlaceOrderDto.setShopId(member.getRelationShopId());
-            }
-            if(member.getBindingFlag()!=1){
-                //绑定商户
-                AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto();
-                appMemberBindingDto.setShopId(appPlaceOrderDto.getShopId());
-                appMemberBindingDto.setUserId(userId);
-                appMemberBindingDto.setBindingFlag(1);
-                memberService.updateMemberBinding(appMemberBindingDto);
+                if (member.getBindingFlag() != 1) {
+                    //绑定商户
+                    AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto();
+                    appMemberBindingDto.setShopId(appPlaceOrderDto.getShopId());
+                    appMemberBindingDto.setUserId(userId);
+                    appMemberBindingDto.setBindingFlag(1);
+                    memberService.updateMemberBinding(appMemberBindingDto);
+                }
             }
         }
         AppPlaceOrderVo appPlaceOrderVo = orderService.placeOrder(appPlaceOrderDto);
@@ -111,13 +118,13 @@
     @ApiOperation(value = "创建活动订单")
     public R<AppPlaceOrderVo> placeActivityOrder(@Validated @RequestBody AppPlaceActivityDto appPlaceActivityDto) {
         Long userId = SecurityUtils.getUserId();
-        if(userId!=null){
+        if (userId != null) {
             Member member = memberService.getMember(userId).getData();
             appPlaceActivityDto.setUserId(userId);
-            if(member!=null&&member.getRelationShopId()!=null){
+            if (member != null && member.getRelationShopId() != null) {
                 appPlaceActivityDto.setShopId(member.getRelationShopId());
             }
-            if(member.getBindingFlag()!=1){
+            if (member.getBindingFlag() != 1) {
                 //绑定商户
                 AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto();
                 appMemberBindingDto.setShopId(appPlaceActivityDto.getShopId());
@@ -134,18 +141,18 @@
     @ApiOperation(value = "分页获取用户订单")
     public R<Page<AppUserOrderPageVo>> pageUserOrder(@RequestBody AppUserOrderPageDto appUserOrderPageDto) {
         Long userId = SecurityUtils.getUserId();
-        if(userId!=null){
+        if (userId != null) {
             Member member = memberService.getMember(userId).getData();
             appUserOrderPageDto.setUserId(userId);
-            if(member!=null&&member.getRelationShopId()!=null){
+            if (member != null && member.getRelationShopId() != null) {
                 appUserOrderPageDto.setShopId(member.getRelationShopId());
             }
         }
-        logger.info("appUserOrderPageDto:"+appUserOrderPageDto.toString());
+        logger.info("appUserOrderPageDto:" + appUserOrderPageDto.toString());
         Page<AppUserOrderPageVo> page = new Page<>();
         page.setSize(appUserOrderPageDto.getPageSize());
         page.setCurrent(appUserOrderPageDto.getPageNum());
-        List<AppUserOrderPageVo> appUserOrderPageVoList = orderService.pageUserOrder(page,appUserOrderPageDto);
+        List<AppUserOrderPageVo> appUserOrderPageVoList = orderService.pageUserOrder(page, appUserOrderPageDto);
         return R.ok(page.setRecords(appUserOrderPageVoList));
     }
 
@@ -154,17 +161,17 @@
     public R<AppUserOrderGetVo> getAppOrderDetail(@RequestBody AppBaseGetDto appBaseGetDto) {
         Long userId = SecurityUtils.getUserId();
         Long shopId = null;
-        if(userId!=null){
+        if (userId != null) {
             Member member = memberService.getMember(userId).getData();
             appBaseGetDto.setUserId(userId);
-            if(member!=null&&member.getRelationShopId()!=null){
+            if (member != null && member.getRelationShopId() != null) {
                 shopId = member.getRelationShopId();
             }
         }
         AppUserOrderGetVo appUserOrderGetVo = orderService.getAppOrderDetail(appBaseGetDto);
-        if(shopId!=null&&appUserOrderGetVo.getShopId().equals(shopId)){
+        if (shopId != null && appUserOrderGetVo.getShopId().equals(shopId)) {
             appUserOrderGetVo.setSameShop(1);
-        }else{
+        } else {
             appUserOrderGetVo.setSameShop(0);
         }
         return R.ok(appUserOrderGetVo);
@@ -184,12 +191,12 @@
         appPlaceOrderVo.setPayMoney(order.getPayMoney());
         appPlaceOrderVo.setUnpaidMoney(order.getPayMoney());
         Integer delayTime = 30;
-        if(redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)){
+        if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) {
             delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME);
         }
         redisService.deleteObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + order.getOrderId());
         remoteConfigService.deleteDelayTask(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + order.getOrderId());
-        appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(),delayTime));
+        appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime));
         return R.ok(appPlaceOrderVo);
     }
 
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java
index 5dc6de6..775d9da 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java
@@ -1,38 +1,34 @@
 package com.ruoyi.order.controller.miniapp;
 
-import com.ruoyi.common.core.domain.R;
+import com.github.binarywang.wxpay.bean.ecommerce.*;
+import com.github.binarywang.wxpay.bean.notify.WxPayNotifyV3Response;
+import com.github.binarywang.wxpay.bean.profitsharingV3.ProfitSharingNotifyData;
+import com.github.binarywang.wxpay.bean.profitsharingV3.ProfitSharingNotifyResult;
+import com.github.binarywang.wxpay.exception.WxPayException;
+import com.github.binarywang.wxpay.service.ProfitSharingV3Service;
+import com.github.binarywang.wxpay.service.WxPayService;
+import com.github.binarywang.wxpay.v3.auth.Verifier;
+import com.github.binarywang.wxpay.v3.util.AesUtils;
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
 import com.ruoyi.common.core.web.controller.BaseController;
-import com.ruoyi.order.domain.dto.AppSureOrderDto;
-import com.ruoyi.order.domain.dto.WXPayNotifyDto;
-import com.ruoyi.order.domain.vo.AppSureOrderVo;
+import com.ruoyi.order.domain.vo.ProfitSharingNotifyNewResult;
+import com.ruoyi.order.enums.WxPayNotifyEventTypeEnum;
+import com.ruoyi.order.service.account.BackMessageService;
 import com.ruoyi.order.service.order.OrderService;
-import com.wechat.pay.contrib.apache.httpclient.notification.Notification;
-import com.wechat.pay.contrib.apache.httpclient.notification.NotificationHandler;
-import com.wechat.pay.contrib.apache.httpclient.notification.NotificationRequest;
-import com.wechat.pay.java.core.Config;
-import com.wechat.pay.java.core.RSAAutoCertificateConfig;
-import com.wechat.pay.java.core.RSAConfig;
-import com.wechat.pay.java.core.cipher.PrivacyEncryptor;
-import com.wechat.pay.java.core.notification.NotificationConfig;
-import com.wechat.pay.java.core.notification.NotificationParser;
-import com.wechat.pay.java.core.notification.RequestParam;
-import com.wechat.pay.java.service.partnerpayments.jsapi.model.Transaction;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import net.bytebuddy.asm.Advice;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import java.io.BufferedReader;
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
-import java.util.HashMap;
+import java.security.GeneralSecurityException;
 import java.util.Map;
+import java.util.Objects;
 
 /**
  * @program: ruoyi
@@ -44,88 +40,82 @@
 @RestController
 @RequestMapping("/app/notify")
 public class NotifyController extends BaseController {
-    /** 商户号 */
-    public static String merchantId = "";
-    /** 商户API私钥路径 */
-    public static String privateKeyPath = "";
-    /** 商户证书序列号 */
-    public static String merchantSerialNumber = "";
-    /** 微信支付平台证书路径 */
-    public static String wechatPayCertificatePath = "";
-    /** 商户APIV3密钥 */
-    public static String apiV3key = "...";
+
+    public static final String WECHAT_PAY_SERIAL = "Wechatpay-Serial";
+    public static final String WECHAT_PAY_SIGNATURE = "Wechatpay-Signature";
+    public static final String WECHAT_PAY_TIMESTAMP = "Wechatpay-Timestamp";
+    public static final String WECHAT_PAY_NONCE = "Wechatpay-Nonce";
+
+    private static final Gson GSON = new GsonBuilder().create();
 
     @Resource
     private OrderService orderService;
 
-    @RequestMapping(value = "/payNotify", method = RequestMethod.POST)
-    @ApiOperation(value = "微信支付通知")
-    public Map payNotify(HttpServletRequest request, HttpServletResponse response) {
-        Config config =
-                new RSAConfig.Builder()
-                        .merchantId(merchantId)
-                        .privateKeyFromPath(privateKeyPath)
-                        .merchantSerialNumber(merchantSerialNumber)
-                        .wechatPayCertificatesFromPath(wechatPayCertificatePath)
-                        .build();
+    @Autowired
+    private WxPayService wxService;
+    @Resource
+    private BackMessageService backMessageService;
 
-        PrivacyEncryptor encryptor = config.createEncryptor();
-        String wechatPayCertificateSerialNumber = encryptor.getWechatpaySerial();
+    @PostMapping(value = "/payNotify")
+    @ApiOperation(value = "微信支付/退款通知")
+    public String payNotify(@RequestBody String notifyData, HttpServletRequest request, HttpServletResponse response) throws WxPayException {
 
+        // 获取请求头
+        SignatureHeader signatureHeader = getSignatureHeader(response);
 
-        String nonoc=request.getHeader("Wechatpay-Nonce");
-        String signature=request.getHeader("Wechatpay-Signature");
-        String timestamp=request.getHeader("Wechatpay-Timestamp");
-        String serial=request.getHeader("Wechatpay-Serial");
-        String signatureType=request.getHeader("Wechatpay-Signature-Type");
+        NotifyResponse responseData = GSON.fromJson(notifyData, NotifyResponse.class);
+        String eventType = responseData.getEventType();
 
-        String requestBody="";
-
-        try {
-            BufferedReader reader = request.getReader();
-            String line = "";
-            StringBuffer inputString = new StringBuffer();
-            while ( (line = reader.readLine()) != null ) {
-                inputString.append(line);
+        int resultType = 1;
+        String resultMessage = "";
+        if(WxPayNotifyEventTypeEnum.TRANSACTION_SUCCESS.getCode().equals(eventType)){
+            PartnerTransactionsNotifyResult notifyResult = wxService.getEcommerceService().parsePartnerNotifyResult(notifyData, signatureHeader);
+            PartnerTransactionsResult result = notifyResult.getResult();
+            // 支付通知回调
+            if("SUCCESS".equals(result.getTradeState())){
+                orderService.payBack(result);
             }
-            if(inputString!=null && !"".equals(inputString)) {
-                requestBody = inputString.toString();
-            }
-            reader.close();
-        } catch (IOException e) {
-            e.printStackTrace();
+            resultMessage = GSON.toJson(notifyResult);
+        } else if(WxPayNotifyEventTypeEnum.REFUND_SUCCESS.getCode().equals(eventType)
+            || WxPayNotifyEventTypeEnum.REFUND_ABNORMAL.getCode().equals(eventType)
+            || WxPayNotifyEventTypeEnum.REFUND_CLOSED.getCode().equals(eventType)){
+
+            RefundNotifyResult result = wxService.getEcommerceService().parseRefundNotifyResult(notifyData, signatureHeader);
+            orderService.orderRefundBack(result);
+            resultType = 2;
+            resultMessage = GSON.toJson(result);
+        }
+        // 保存支付/退款回调信息
+        backMessageService.saveBackMessage(resultType, resultMessage);
+
+
+        return WxPayNotifyV3Response.success("成功");
+    }
+
+    @PostMapping(value = "/profitSharingNotify")
+    @ApiOperation(value = "微信分账通知")
+    public String profitSharingNotify(@RequestBody String notifyData, HttpServletRequest request, HttpServletResponse response) throws WxPayException {
+        ProfitSharingV3Service sharingV3Service = wxService.getProfitSharingV3Service();
+        // ProfitSharingNotifyResult
+
+        // 获取请求头
+        SignatureHeader signatureHeader = getSignatureHeader(response);
+
+
+        ProfitSharingNotifyNewResult notifyResult = getProfitSharingNotifyData(notifyData, signatureHeader);
+        ProfitSharingNotifyResult result = notifyResult.getResult();
+
+        String eventType = notifyResult.getRawData().getEventType();
+        if(WxPayNotifyEventTypeEnum.PROFIT_SHARING_SUCCESS.getCode().equals(eventType)){
+            // 分账通知回调
+            orderService.profitSharingBack(result);
         }
 
-        RequestParam requestParam = new RequestParam.Builder()
-                .serialNumber(wechatPayCertificateSerialNumber)
-                .nonce(nonoc)
-                .signature(signature)
-                .timestamp(timestamp)
-                .body(requestBody)
-                .build();
+        String resultMessage = GSON.toJson(notifyResult);
+        // 保存记录分账回调信息
+        backMessageService.saveBackMessage(3, resultMessage);
 
-        NotificationConfig notifiConfig = new RSAAutoCertificateConfig.Builder()
-                .merchantId(merchantId)
-                .privateKeyFromPath(privateKeyPath)
-                .merchantSerialNumber(merchantSerialNumber)
-                .apiV3Key(apiV3key)
-                .build();
-
-        NotificationParser parser = new NotificationParser(notifiConfig);
-
-        Transaction transaction = parser.parse(requestParam, Transaction.class);
-
-
-        String tradeStateEnum=transaction.getTradeState().toString();
-        if(tradeStateEnum.equals("success")){
-            orderService.payBack(transaction);
-        }
-
-        Map map=new HashMap();
-        map.put("code","SUCCESS");
-        map.put("message","成功");
-
-        return map;
+        return WxPayNotifyV3Response.success("成功");
     }
 
     @RequestMapping(value = "/shareNotify", method = RequestMethod.POST)
@@ -135,4 +125,49 @@
         return null;
     }
 
+    public ProfitSharingNotifyNewResult getProfitSharingNotifyData(String notifyData, SignatureHeader header) throws WxPayException {
+        if (Objects.nonNull(header) && !this.verifyNotifySign(header, notifyData)) {
+            throw new WxPayException("非法请求,头部信息验证失败");
+        }
+        ProfitSharingNotifyData response = GSON.fromJson(notifyData, ProfitSharingNotifyData.class);
+
+        ProfitSharingNotifyData.Resource resource = response.getResource();
+        String cipherText = resource.getCipherText();
+        String associatedData = resource.getAssociatedData();
+        String nonce = resource.getNonce();
+        String apiV3Key = this.wxService.getConfig().getApiV3Key();
+        try {
+            String result = AesUtils.decryptToString(associatedData, nonce, cipherText, apiV3Key);
+            ProfitSharingNotifyResult profitSharingResult = GSON.fromJson(result, ProfitSharingNotifyResult.class);
+
+            ProfitSharingNotifyNewResult notifyResult = new ProfitSharingNotifyNewResult();
+            notifyResult.setRawData(response);
+            notifyResult.setResult(profitSharingResult);
+            return notifyResult;
+        } catch (GeneralSecurityException | IOException e) {
+            throw new WxPayException("解析报文异常!", e);
+        }
+    }
+
+    private boolean verifyNotifySign(SignatureHeader header, String data) throws WxPayException {
+        String beforeSign = String.format("%s\n%s\n%s\n",
+                header.getTimeStamp(),
+                header.getNonce(),
+                data);
+        Verifier verifier = this.wxService.getConfig().getVerifier();
+        if (verifier == null) {
+            throw new WxPayException("证书检验对象为空");
+        }
+        return verifier.verify(header.getSerialNo(),
+                beforeSign.getBytes(StandardCharsets.UTF_8), header.getSigned());
+    }
+
+    private SignatureHeader getSignatureHeader(HttpServletResponse response){
+        SignatureHeader signatureHeader = new SignatureHeader();
+        signatureHeader.setSerialNo(response.getHeader(WECHAT_PAY_SERIAL));
+        signatureHeader.setSigned(response.getHeader(WECHAT_PAY_SIGNATURE));
+        signatureHeader.setNonce(response.getHeader(WECHAT_PAY_NONCE));
+        signatureHeader.setTimeStamp(response.getHeader(WECHAT_PAY_TIMESTAMP));
+        return signatureHeader;
+    }
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerCloseOrderDto.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerCloseOrderDto.java
index 9ae6559..de162a0 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerCloseOrderDto.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerCloseOrderDto.java
@@ -24,4 +24,7 @@
 
     @ApiModelProperty(value = "支付备注")
     private String payRemark;
+
+    @ApiModelProperty(value = "支付方式1微信2现金3支付宝")
+    private Integer payType;
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerNewOrderDto.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerNewOrderDto.java
index e447fae..90d6147 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerNewOrderDto.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerNewOrderDto.java
@@ -35,7 +35,7 @@
     @ApiModelProperty(value = "改变金额")
     private BigDecimal changeMoney;
 
-    @ApiModelProperty(value = "支付方式")
+    @ApiModelProperty(value = "支付方式1微信2现金3支付宝")
     private Integer payType;
 
     @ApiModelProperty(value = "订单备注")
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerVerifyOrderDto.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerVerifyOrderDto.java
index eb78000..11bc5f1 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerVerifyOrderDto.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerVerifyOrderDto.java
@@ -24,4 +24,7 @@
 
     @ApiModelProperty(value = "实付金额")
     private BigDecimal relPayMoney;
+
+    @ApiModelProperty(value = "支付方式1微信2现金3支付宝")
+    private Integer payType;
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MgtMemberOrderTotalDto.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MgtMemberOrderTotalDto.java
index fd8fd4d..117a045 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MgtMemberOrderTotalDto.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MgtMemberOrderTotalDto.java
@@ -4,8 +4,6 @@
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-import java.util.Date;
-
 /**
  * @author jqs34
  * @ClassName MgtMemberOrderTotalDto
@@ -17,7 +15,7 @@
 public class MgtMemberOrderTotalDto extends MgtBaseDto {
 
     @ApiModelProperty(value = "用户id")
-    private Long userId;
+    private Long memberUserId;
 
     @ApiModelProperty(value = "搜索关键词")
     private String keyword;
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MgtShopOrderPageDto.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MgtShopOrderPageDto.java
index 38b5824..1d7c3a0 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MgtShopOrderPageDto.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MgtShopOrderPageDto.java
@@ -17,6 +17,9 @@
     @ApiModelProperty(value = "关键词")
     private String keyword;
 
+    @ApiModelProperty(value = "订单来源")
+    private Integer orderFrom;
+
     @ApiModelProperty(value = "订单状态0.已取消1.待支付2.待核销3.已完成")
     private Integer orderStatus;
 
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/BackMessage.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/BackMessage.java
index 9094dc2..26c7e38 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/BackMessage.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/BackMessage.java
@@ -6,6 +6,7 @@
 import com.baomidou.mybatisplus.activerecord.Model;
 import com.baomidou.mybatisplus.annotation.TableName;
 import java.io.Serializable;
+import java.util.Date;
 
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -38,7 +39,7 @@
     @TableField("del_flag")
     private String delFlag;
     /**
-     * 回调类型1支付回调2退款回调
+     * 回调类型 1支付回调 2退款回调 3、分账
      */
     @TableField("result_type")
     private Integer resultType;
@@ -47,6 +48,11 @@
      */
     @TableField("result_message")
     private String resultMessage;
+    /**
+     * 回调时间
+     */
+    @TableField("create_time")
+    private Date createTime;
 
 
     @Override
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/OrderPayment.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/OrderPayment.java
index bfc24aa..93d22e0 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/OrderPayment.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/OrderPayment.java
@@ -49,6 +49,12 @@
     @TableField("shop_id")
     private Long shopId;
     /**
+     * 订单二级商户号
+     */
+    @TableField("sub_mch_id")
+    private String subMchId;
+
+    /**
      * 订单id
      */
     @TableField("order_id")
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/OrderRefund.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/OrderRefund.java
index 4cfa669..906c44a 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/OrderRefund.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/OrderRefund.java
@@ -99,7 +99,21 @@
      * 回调时间
      */
     @TableField("back_time")
-    private Date backTime;
+    private String backTime;
+
+    /**
+     * 微信退款订单id
+     */
+    @TableField("wx_refund_id")
+    private String wxRefundId;
+
+    /**
+     * 1、发起退款 2、已退款
+     */
+    @TableField("refund_status")
+    private Integer refundStatus;
+
+
 
 
     @Override
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/PaymentMessage.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/PaymentMessage.java
index 179d46e..ee2d709 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/PaymentMessage.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/PaymentMessage.java
@@ -47,7 +47,7 @@
      * 发起关联id
      */
     @TableField("send_id")
-    private Long sendId;
+    private String sendId;
     /**
      * 发送报文
      */
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/ProfitSharing.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/ProfitSharing.java
index ad038c8..f45be82 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/ProfitSharing.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/ProfitSharing.java
@@ -40,7 +40,7 @@
     private Integer delFlag;
     /**
      * 1:PROCESSING:处理中
-2:FINISHED:分账完成
+        2:FINISHED:分账完成
      */
     @TableField("share_status")
     private Integer shareStatus;
@@ -93,7 +93,15 @@
      * 完成时间
      */
     @TableField("finish_time")
-    private Date finishTime;
+    private String finishTime;
+
+    /**
+     * 微信分账/回退单号
+     */
+    @TableField("wx_order_id")
+    private String wxOrderId;
+
+
     /**
      * 分账失败原因
 1、ACCOUNT_ABNORMAL : 分账接收账户异常
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/ConsumerGoods.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/ConsumerGoods.java
index a9f97c6..7ef0330 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/ConsumerGoods.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/ConsumerGoods.java
@@ -108,6 +108,9 @@
      */
     @TableField("goods_type")
     private Integer goodsType;
+
+    @TableField("goods_tag")
+    private String goodsTag;
     /**
      * 商品名称
      */
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/OrderGoods.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/OrderGoods.java
index f3a958c..2f031c2 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/OrderGoods.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/OrderGoods.java
@@ -94,6 +94,9 @@
     @TableField("goods_name")
     private String goodsName;
 
+    @TableField("goods_tag")
+    private String goodsTag;
+
     @TableField("goods_introduction")
     private String goodsIntroduction;
 
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppConsumerPageVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppConsumerPageVo.java
index 23c2b38..894ae34 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppConsumerPageVo.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppConsumerPageVo.java
@@ -1,7 +1,5 @@
 package com.ruoyi.order.domain.vo;
 
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -27,8 +25,14 @@
     @ApiModelProperty(value="商品类型1周期2服务3体验4单品")
     private Integer goodsType;
 
+    @ApiModelProperty(value="商品标签")
+    private String goodsTag;
+
     @ApiModelProperty(value="商品名称")
     private String goodsName;
+
+    @ApiModelProperty(value="商品名称")
+    private String goodsIntroduction;
 
     @ApiModelProperty(value="商品图片")
     private String goodsPicture;
@@ -45,4 +49,7 @@
     @ApiModelProperty(value="消耗次数")
     private Integer usedNum;
 
+    @ApiModelProperty(value="消耗次数")
+    private Integer sureNum;
+
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppPlaceOrderVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppPlaceOrderVo.java
index 3d53905..caa8138 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppPlaceOrderVo.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppPlaceOrderVo.java
@@ -54,7 +54,7 @@
     private String packageStr;
 
     @ApiModelProperty(value = "签名方式")
-    private String tradeType;
+    private String signType;
 
     @ApiModelProperty(value = "签名")
     private String paySign;
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppUserOrderGoodsPageVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppUserOrderGoodsPageVo.java
index 8dbd687..e5908b4 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppUserOrderGoodsPageVo.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppUserOrderGoodsPageVo.java
@@ -27,6 +27,9 @@
     @ApiModelProperty(value = "商品简介")
     private String goodsIntroduction;
 
+    @ApiModelProperty(value="商品标签")
+    private String goodsTag;
+
     @ApiModelProperty(value="商品图片")
     private String goodsPicture;
 
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerMemberNoClearOrderVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerMemberNoClearOrderVo.java
index 08151c4..2a37df3 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerMemberNoClearOrderVo.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerMemberNoClearOrderVo.java
@@ -6,7 +6,6 @@
 
 import java.math.BigDecimal;
 import java.util.Date;
-import java.util.List;
 
 /**
  * @author jqs34
@@ -39,10 +38,13 @@
     @ApiModelProperty(value="应收订金")
     private BigDecimal receivableDeposit;
 
-    @ApiModelProperty(value="订单实际支付金额")
+    @ApiModelProperty(value="实收金额")
+    private BigDecimal receiveMoney;
+
+    @ApiModelProperty(value="已收金额")
     private BigDecimal payMoney;
 
-    @ApiModelProperty(value="订单未支付金额")
+    @ApiModelProperty(value="未收金额")
     private BigDecimal unPaidMoney;
 
     @ApiModelProperty(value="创建时间")
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerMemberOrderVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerMemberOrderVo.java
new file mode 100644
index 0000000..5918ea1
--- /dev/null
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerMemberOrderVo.java
@@ -0,0 +1,59 @@
+package com.ruoyi.order.domain.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @ClassName MerMemberOrderVo
+ * @Description TODO
+ * @Author jqs
+ * @Date 2023/8/5 16:08
+ * @Version 1.0
+ */
+@Data
+public class MerMemberOrderVo {
+
+    @ApiModelProperty(value = "订单id")
+    private String orderId;
+
+    @ApiModelProperty(value="订单编号")
+    private String orderNo;
+
+    @ApiModelProperty(value="订单状态")
+    private Integer orderStatus;
+
+    @ApiModelProperty(value = "商品总价")
+    private BigDecimal orderGoodsMoney;
+
+    @ApiModelProperty(value = "优惠券抵扣")
+    private BigDecimal couponDiscount;
+
+    @ApiModelProperty(value="应付金额")
+    private BigDecimal receivableMoney;
+
+    @ApiModelProperty(value="应收订金")
+    private BigDecimal receivableDeposit;
+
+    @ApiModelProperty(value="实收金额")
+    private BigDecimal receiveMoney;
+
+    @ApiModelProperty(value="已收金额")
+    private BigDecimal payMoney;
+
+    @ApiModelProperty(value="未收金额")
+    private BigDecimal unPaidMoney;
+
+    @ApiModelProperty(value="收款时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date receiveMoneyTime;
+
+    @ApiModelProperty(value="收款金额")
+    private BigDecimal thisReceiveMoney;
+
+    @ApiModelProperty(value="收款方式")
+    private String thisReceiveType;
+}
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerOrderPageVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerOrderPageVo.java
index 1915b74..8c1a5d2 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerOrderPageVo.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerOrderPageVo.java
@@ -76,6 +76,9 @@
     @ApiModelProperty(value="订单来源")
     private String orderFromDesc;
 
+    @ApiModelProperty(value="活动名字")
+    private String activityName;
+
     @ApiModelProperty(value="订单商品列表")
     private List<MerOrderGoodsPageVo> merOrderGoodsVoList;
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerVerifyOrderVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerVerifyOrderVo.java
index 0cda36b..54181bd 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerVerifyOrderVo.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerVerifyOrderVo.java
@@ -72,6 +72,18 @@
     @ApiModelProperty(value = "用户电话")
     private String userMobile;
 
+    @ApiModelProperty(value="实收金额")
+    private BigDecimal realReceiveMoney;
+
+    @ApiModelProperty(value="已收金额")
+    private BigDecimal receiveMoney;
+
+    @ApiModelProperty(value="未收金额")
+    private BigDecimal unReceiveMoney;
+
+    @ApiModelProperty(value="支付方式1.全款2订金")
+    private Integer payType;
+
     @ApiModelProperty(value="结清标记0否1是")
     private Integer closeFlag;
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtMemberOrderPageVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtMemberOrderPageVo.java
index eadde1e..6a09522 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtMemberOrderPageVo.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtMemberOrderPageVo.java
@@ -50,10 +50,13 @@
     @ApiModelProperty(value="应收金额")
     private BigDecimal receivableMoney;
 
-    @Excel(name = "订单实际支付金额", width = 30)
     @ApiModelProperty(value="订单实际支付金额")
     private BigDecimal payMoney;
 
+    @Excel(name = "订单实收金额", width = 30)
+    @ApiModelProperty(value = "实收金额")
+    private BigDecimal receiveMoney;
+
     @Excel(name = "订单未支付金额", width = 30)
     @ApiModelProperty(value="订单未支付金额")
     private BigDecimal unPaidMoney;
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtMemberOrderTotalVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtMemberOrderTotalVo.java
index 5ef3bdb..d7bf60e 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtMemberOrderTotalVo.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtMemberOrderTotalVo.java
@@ -29,4 +29,7 @@
 
     @ApiModelProperty(value = "支付总金额")
     private BigDecimal totalPayMoney;
+
+    @ApiModelProperty(value = "实收金额")
+    private BigDecimal totalReceiveMoney;
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtShopAllOrderTotal.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtShopAllOrderTotal.java
new file mode 100644
index 0000000..4c0fff5
--- /dev/null
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtShopAllOrderTotal.java
@@ -0,0 +1,28 @@
+package com.ruoyi.order.domain.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @ClassName MgtShopAllOrderTotal
+ * @Description TODO
+ * @Author jqs
+ * @Date 2023/8/4 10:23
+ * @Version 1.0
+ */
+@Data
+public class MgtShopAllOrderTotal {
+
+    @ApiModelProperty(value = "订单总数")
+    private Integer orderTotal;
+
+    @ApiModelProperty(value = "订单总金额")
+    private BigDecimal totalOrderMoney;
+
+    @ApiModelProperty(value = "实收金额")
+    private BigDecimal totalReceiveMoney;
+
+
+}
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/ProfitSharingNotifyNewResult.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/ProfitSharingNotifyNewResult.java
new file mode 100644
index 0000000..2ee8dc4
--- /dev/null
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/ProfitSharingNotifyNewResult.java
@@ -0,0 +1,23 @@
+package com.ruoyi.order.domain.vo;
+
+import com.github.binarywang.wxpay.bean.profitsharingV3.ProfitSharingNotifyData;
+import com.github.binarywang.wxpay.bean.profitsharingV3.ProfitSharingNotifyResult;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+@Data
+@NoArgsConstructor
+public class ProfitSharingNotifyNewResult implements Serializable {
+    private static final long serialVersionUID = -6602962275015706689L;
+    /**
+     * 源数据
+     */
+    private ProfitSharingNotifyData rawData;
+
+    /**
+     * 解密后的数据
+     */
+    private ProfitSharingNotifyResult result;
+}
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/enums/RefundStatusEnum.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/enums/RefundStatusEnum.java
new file mode 100644
index 0000000..9f04cf3
--- /dev/null
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/enums/RefundStatusEnum.java
@@ -0,0 +1,19 @@
+package com.ruoyi.order.enums;
+
+import com.ruoyi.order.enums.dict.IDict;
+
+public enum RefundStatusEnum implements IDict<Integer> {
+    /**
+     * 退款状态,枚举值:
+     * SUCCESS:退款成功
+     * CLOSE:退款关闭
+     * ABNORMAL:退款异常
+     */
+    SUCCESS(2, "SUCCESS"),
+    CLOSE(3, "CLOSE"),
+    ABNORMAL(4, "ABNORMAL");
+
+    RefundStatusEnum(Integer code, String text){
+        init(code, text);
+    }
+}
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/enums/WxPayNotifyEventTypeEnum.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/enums/WxPayNotifyEventTypeEnum.java
new file mode 100644
index 0000000..31f456e
--- /dev/null
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/enums/WxPayNotifyEventTypeEnum.java
@@ -0,0 +1,22 @@
+package com.ruoyi.order.enums;
+
+
+import com.ruoyi.order.enums.dict.IDict;
+
+public enum WxPayNotifyEventTypeEnum implements IDict<String> {
+    /**
+     * 微信回调通知
+        支付成功通知的类型为 TRANSACTION.SUCCESS
+        分账 PROFITSHARING.SUCCESS
+     */
+    TRANSACTION_SUCCESS("TRANSACTION.SUCCESS", "TRANSACTION.SUCCESS"),
+    PROFIT_SHARING_SUCCESS("PROFITSHARING.SUCCESS", "PROFITSHARING.SUCCESS"),
+    REFUND_SUCCESS("REFUND.SUCCESS", "REFUND.SUCCESS"),
+    REFUND_ABNORMAL("REFUND.ABNORMAL", "REFUND.ABNORMAL"),
+    REFUND_CLOSED("REFUND.CLOSED", "REFUND.CLOSED");
+
+    WxPayNotifyEventTypeEnum(String code, String text){
+        init(code, text);
+    }
+
+}
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/enums/dict/DictBean.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/enums/dict/DictBean.java
new file mode 100644
index 0000000..235c8f8
--- /dev/null
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/enums/dict/DictBean.java
@@ -0,0 +1,15 @@
+package com.ruoyi.order.enums.dict;
+
+import lombok.Data;
+
+/**
+ * 字典bean
+ * 只有code和text,可用于展示下拉框
+ *
+ * @author luozhan
+ */
+@Data
+public class DictBean<T> implements IDict<T> {
+    private final T code;
+    private final String text;
+}
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/enums/dict/IDict.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/enums/dict/IDict.java
new file mode 100644
index 0000000..fd87547
--- /dev/null
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/enums/dict/IDict.java
@@ -0,0 +1,170 @@
+package com.ruoyi.order.enums.dict;
+
+import java.lang.reflect.Field;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+
+/**
+ * 字典接口
+ * <p>
+ * 自定义的字典枚举类实现本接口后可省略属性code和text,以及对应的get方法
+ * 在构造方法中只需调用init方法即可初始化
+ *
+ * @author luozhan
+ * @date 2021-12
+ */
+public interface IDict<T> {
+    /**
+     * 通过code获取value
+     *
+     * @param clazz 枚举class
+     * @param code  code
+     * @return text
+     */
+    static <T> String getTextByCode(Class<? extends IDict<T>> clazz, T code) {
+        return Stream.of(clazz.getEnumConstants())
+                .filter((IDict<T> e) -> e.getCode().equals(code))
+                .map(IDict::getText)
+                .findAny().orElse("");
+    }
+
+    /**
+     * 通过text获取code
+     *
+     * @param clazz 枚举class
+     * @param text  text
+     * @return code
+     */
+    static <T> T getCodeByText(Class<? extends IDict<T>> clazz, String text) {
+        return Stream.of(clazz.getEnumConstants())
+                .filter((IDict<T> e) -> e.getText().equals(text))
+                .map(IDict::getCode)
+                .findAny().orElse(null);
+    }
+
+    /**
+     * 通过code获取字典枚举实例
+     *
+     * @param clazz 枚举class
+     * @param code  code
+     * @param <T>   字典code类型
+     * @param <R>   枚举类型
+     * @return 字典枚举实例
+     */
+    @SuppressWarnings("unchecked")
+    static <T, R extends IDict<T>> R getByCode(Class<? extends IDict<T>> clazz, T code) {
+        return Stream.of(clazz.getEnumConstants())
+                .filter((IDict<T> e) -> (e.getCode().equals(code)))
+                .map(v -> (R) v)
+                .findAny()
+                .orElse(null);
+    }
+
+    /**
+     * 获取给定的字典枚举项(常用下拉框数据请求)
+     *
+     * @param enums 可指定需要哪些项
+     * @return List
+     */
+    @SafeVarargs
+    static <T, E extends IDict<T>> List<IDict<T>> getItems(E... enums) {
+        return Stream.of(enums)
+                .map(DictPool::getDict)
+                .collect(Collectors.toList());
+    }
+
+    /**
+     * 获取所有字典枚举项,除开指定的枚举
+     *
+     * @param exclude 指定排除的枚举
+     * @return List
+     */
+    @SafeVarargs
+    @SuppressWarnings("unchecked")
+    static <T, E extends IDict<T>> List<IDict<T>> getItemsExclude(E... exclude) {
+        Class<IDict<T>> clazz = (Class<IDict<T>>) exclude.getClass().getComponentType();
+        IDict<T>[] allEnum = clazz.getEnumConstants();
+        List<IDict<T>> excludeList = Arrays.asList(exclude);
+        return Stream.of(allEnum)
+                .filter(e -> !excludeList.contains(e))
+                .map(DictPool::getDict)
+                .collect(Collectors.toList());
+    }
+
+    /**
+     * 获取所有字典枚举项(常用下拉框数据请求)
+     * 枚举值上标记@Deprecated的不会返回
+     *
+     * @param clazz 字典枚举类
+     * @return List
+     */
+    static <T> List<IDict<T>> getAll(Class<? extends IDict<T>> clazz) {
+        Map<String, Field> fieldCache = Arrays.stream(clazz.getDeclaredFields()).
+                filter(Field::isEnumConstant).
+                collect(Collectors.toMap(Field::getName, Function.identity()));
+        IDict<T>[] allEnum = clazz.getEnumConstants();
+        return Stream.of(allEnum)
+                .filter(e -> !fieldCache.get(((Enum<?>) e).name()).isAnnotationPresent(Deprecated.class))
+                .map(DictPool::getDict)
+                .collect(Collectors.toList());
+    }
+
+    /**
+     * 初始化
+     *
+     * @param code 字典编码
+     * @param text 字典文本
+     */
+    default void init(T code, String text) {
+        DictPool.putDict(this, code, text);
+    }
+
+    /**
+     * 获取编码
+     *
+     * @return 编码
+     */
+    default T getCode() {
+        return DictPool.getDict(this).getCode();
+    }
+
+    /**
+     * 获取文本
+     *
+     * @return 文本
+     */
+    default String getText() {
+        return DictPool.getDict(this).getText();
+    }
+
+
+    @SuppressWarnings("all")
+    class DictPool {
+        private static final Map<IDict, DictBean> DICT_MAP = new ConcurrentHashMap<>();
+
+        private static final Map<String, Class<? extends IDict>> DICT_NAME_CLASS_MAP = new ConcurrentHashMap<>();
+
+        static <T> void putDict(IDict<T> dict, T code, String text) {
+            DICT_NAME_CLASS_MAP.put(dict.getClass().getName(), dict.getClass());
+            DICT_MAP.put(dict, new DictBean<>(code, text));
+        }
+
+        public static List<IDict<Object>> getDict(String dictName) {
+            Class<? extends IDict> aClass = DICT_NAME_CLASS_MAP.get(dictName);
+            return IDict.getAll((Class<? extends IDict<Object>>) aClass);
+        }
+
+        static <K extends IDict<T>, T> DictBean<T> getDict(K dict) {
+            return DICT_MAP.get(dict);
+        }
+
+
+    }
+
+}
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/fliter/ParamsAuthFilter.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/fliter/ParamsAuthFilter.java
index 4c9ab17..ef00c5e 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/fliter/ParamsAuthFilter.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/fliter/ParamsAuthFilter.java
@@ -30,7 +30,14 @@
     public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
         HttpServletRequest request = (HttpServletRequest) servletRequest;
         HttpServletResponse response = (HttpServletResponse) servletResponse;
-
+        String requestUrl = request.getRequestURI();
+        String requestUrlUpperCase = requestUrl.toUpperCase();
+        if(requestUrlUpperCase.contains("EXPORT")
+                ||requestUrlUpperCase.contains("IMPORTTEMPLATE")
+        ){
+            filterChain.doFilter(request, response);
+            return;
+        }
         RepeatedlyRequestWrapper wrapper = new RepeatedlyRequestWrapper(request, response);
         getRequestParams(wrapper);
 
@@ -39,7 +46,6 @@
 
         // 返回的结果
         String content = responseWrapper.getTextContent();
-        String requestUrl = request.getRequestURI();
         log.info("-------------------- Response Data ----------------------");
         log.info(requestUrl + " -> " + content);
 
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java
index 3196d4f..b44c461 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java
@@ -92,7 +92,7 @@
      * @param
      * @return  MgtOrderTotal
      */
-    MgtOrderTotal totalOrderFirst();
+    MgtOrderTotal totalOrderFirst(@Param("param")MgtShopOrderPageDto mgtShopOrderPageDto);
 
     /**
      * @description  统计门店订单总数
@@ -141,6 +141,15 @@
      * @date 2023/6/18 17:20
      */
     MgtBulletinBoardVo boardOrderTotal();
+
+    /**
+     * @description  活动人数统计
+     * @author  jqs
+     * @date    2023/8/3 21:12
+     * @param
+     * @return  Integer
+     */
+    Integer activityUserTotal();
 
     /**
     * @description getTotalOrderTotalOrderFrom
@@ -507,7 +516,7 @@
      * @description  商户端订单管理统计
      * @author  jqs
      * @date    2023/7/4 16:27
-     * @param shopId
+     * @param merOrderPageDto
      * @return  MerTotalOrderVo
      */
     MerTotalOrderVo totalMerOrder(@Param("param")MerOrderPageDto merOrderPageDto);
@@ -600,4 +609,22 @@
      * @return  Integer
      */
     Integer countUserBuyGoodsNum(@Param("userId")Long userId, @Param("goodsId")String goodsId);
+
+
+    /**
+     * @description  获取商户订单统计
+     * @author  jqs
+     * @date    2023/8/4 10:25
+     * @param mgtShopAllOrderPageDto
+     * @return  MgtShopAllOrderTotal
+     */
+    MgtShopAllOrderTotal getMgtShopAllOrderTotal(@Param("param")MgtShopAllOrderPageDto mgtShopAllOrderPageDto);
+
+
+    /**
+     * 分页获取消费记录
+     * @param merOrderPageDto
+     * @return
+     */
+    List<MerOrderPageVo> pageMerMemberPayOrder(Page page,@Param("param") MerMemberNoClearOrderDto merOrderPageDto);
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/BackMessageService.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/BackMessageService.java
index 182e5bb..dd7ce33 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/BackMessageService.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/BackMessageService.java
@@ -13,4 +13,10 @@
  */
 public interface BackMessageService extends IService<BackMessage> {
 
+    /**
+     * 保存回调记录
+     * @param resultType
+     * @param resultMessage
+     */
+    void saveBackMessage(int resultType, String resultMessage);
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/OrderPaymentService.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/OrderPaymentService.java
index b6065d2..fbd9709 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/OrderPaymentService.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/OrderPaymentService.java
@@ -3,6 +3,9 @@
 import com.ruoyi.order.domain.pojo.account.OrderPayment;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.math.BigDecimal;
+import java.util.Date;
+
 /**
  * <p>
  * 订单支付 服务类
@@ -13,4 +16,24 @@
  */
 public interface OrderPaymentService extends IService<OrderPayment> {
 
+    /**
+     * 保存支付记录
+     * @param userId
+     * @param shopId
+     * @param orderId
+     * @param payMoney
+     * @param endTime
+     * @param profitSharing
+     * @param openid
+     * @param goodsNames
+     * @param prepayId
+     */
+    void saveOrderPayment(Long userId, Long shopId, String subMchId, String orderId, BigDecimal payMoney, Date endTime, String profitSharing, String openid, String goodsNames, String prepayId);
+
+    /**
+     *
+     * @param orderId
+     * @return
+     */
+    OrderPayment getByOrderId(String orderId);
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/PaymentMessageService.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/PaymentMessageService.java
index 15c1bc9..f000a53 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/PaymentMessageService.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/PaymentMessageService.java
@@ -13,4 +13,12 @@
  */
 public interface PaymentMessageService extends IService<PaymentMessage> {
 
+    /**
+     * 保存请求信息
+     * @param sendType
+     * @param sendId
+     * @param sendMessage
+     * @param resultMessage
+     */
+    void savePaymentMessage(String sendType, String sendId, String sendMessage, String resultMessage);
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/ProfitSharingService.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/ProfitSharingService.java
index f58ec5e..bc97e93 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/ProfitSharingService.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/ProfitSharingService.java
@@ -1,7 +1,10 @@
 package com.ruoyi.order.service.account;
 
+import com.github.binarywang.wxpay.bean.ecommerce.ProfitSharingResult;
 import com.ruoyi.order.domain.pojo.account.ProfitSharing;
 import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.math.BigDecimal;
 
 /**
  * <p>
@@ -13,4 +16,12 @@
  */
 public interface ProfitSharingService extends IService<ProfitSharing> {
 
+    /**
+     * 创建按分账记录
+     * @param shopId
+     * @param orderId
+     * @param orderMoney
+     * @param result
+     */
+    void saveProfitSharing(Long shopId, String orderId, BigDecimal orderMoney, ProfitSharingResult result);
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/BackMessageServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/BackMessageServiceImpl.java
index ca18dad..5b8dd8d 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/BackMessageServiceImpl.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/BackMessageServiceImpl.java
@@ -6,6 +6,8 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 
+import java.util.Date;
+
 /**
  * <p>
  * 回调报文 服务实现类
@@ -17,4 +19,13 @@
 @Service
 public class BackMessageServiceImpl extends ServiceImpl<BackMessageMapper, BackMessage> implements BackMessageService {
 
+    @Override
+    public void saveBackMessage(int resultType, String resultMessage) {
+        BackMessage backMessage = new BackMessage();
+        backMessage.setDelFlag("0");
+        backMessage.setResultType(resultType);
+        backMessage.setResultMessage(resultMessage);
+        backMessage.setCreateTime(new Date());
+        this.saveOrUpdate(backMessage);
+    }
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/OrderPaymentServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/OrderPaymentServiceImpl.java
index a9b6c40..dcc4174 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/OrderPaymentServiceImpl.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/OrderPaymentServiceImpl.java
@@ -1,10 +1,16 @@
 package com.ruoyi.order.service.impl.account;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.ruoyi.common.core.utils.uuid.IdUtils;
 import com.ruoyi.order.domain.pojo.account.OrderPayment;
 import com.ruoyi.order.mapper.account.OrderPaymentMapper;
 import com.ruoyi.order.service.account.OrderPaymentService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.Date;
 
 /**
  * <p>
@@ -17,4 +23,34 @@
 @Service
 public class OrderPaymentServiceImpl extends ServiceImpl<OrderPaymentMapper, OrderPayment> implements OrderPaymentService {
 
+    @Override
+    public void saveOrderPayment(Long userId, Long shopId, String subMchId, String orderId, BigDecimal payMoney, Date endTime,
+                                 String profitSharing, String openid, String goodsNames, String prepayId) {
+        OrderPayment payment = new OrderPayment();
+        payment.setPaymentId(IdUtils.simpleUUID());
+        payment.setUserId(userId);
+        payment.setShopId(shopId);
+        payment.setOrderId(orderId);
+        payment.setPayMoney(payMoney);
+        payment.setTimeExpire(endTime);
+        payment.setSubMchId(subMchId);
+        // 0 否 1、是
+        payment.setProfitSharing("Y".equals(profitSharing) ? 1 : 0);
+        payment.setUserOpenId(openid);
+        payment.setGoodsNames(goodsNames);
+        payment.setPrepayId(prepayId);
+        payment.setCreateTime(new Date());
+        payment.setDelFlag(0);
+        this.saveOrUpdate(payment);
+    }
+
+    @Override
+    public OrderPayment getByOrderId(String orderId) {
+        LambdaQueryWrapper<OrderPayment> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(OrderPayment::getOrderId, orderId)
+                .eq(OrderPayment::getDelFlag, 0)
+                .eq(OrderPayment::getPayStatus, 2)
+                .last(" limit 1 ");
+        return this.getOne(queryWrapper);
+    }
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/PaymentMessageServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/PaymentMessageServiceImpl.java
index ef686da..2866872 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/PaymentMessageServiceImpl.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/PaymentMessageServiceImpl.java
@@ -6,6 +6,8 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 
+import java.util.Date;
+
 /**
  * <p>
  * 支付报文 服务实现类
@@ -17,4 +19,15 @@
 @Service
 public class PaymentMessageServiceImpl extends ServiceImpl<PaymentMessageMapper, PaymentMessage> implements PaymentMessageService {
 
+    @Override
+    public void savePaymentMessage(String sendType, String sendId, String sendMessage, String resultMessage) {
+        PaymentMessage paymentMessage = new PaymentMessage();
+        paymentMessage.setDelFlag("0");
+        paymentMessage.setSendType(sendType);
+        paymentMessage.setSendId(sendId);
+        paymentMessage.setSendMessage(sendMessage);
+        paymentMessage.setResultMessage(resultMessage);
+        paymentMessage.setCreateTime(new Date());
+        this.saveOrUpdate(paymentMessage);
+    }
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/ProfitSharingServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/ProfitSharingServiceImpl.java
index bd2bd4a..799915d 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/ProfitSharingServiceImpl.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/ProfitSharingServiceImpl.java
@@ -1,10 +1,17 @@
 package com.ruoyi.order.service.impl.account;
 
+import com.github.binarywang.wxpay.bean.ecommerce.ProfitSharingResult;
+import com.ruoyi.common.core.utils.uuid.IdUtils;
 import com.ruoyi.order.domain.pojo.account.ProfitSharing;
 import com.ruoyi.order.mapper.account.ProfitSharingMapper;
 import com.ruoyi.order.service.account.ProfitSharingService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.Date;
+import java.util.List;
 
 /**
  * <p>
@@ -17,4 +24,31 @@
 @Service
 public class ProfitSharingServiceImpl extends ServiceImpl<ProfitSharingMapper, ProfitSharing> implements ProfitSharingService {
 
+    @Override
+    public void saveProfitSharing(Long shopId, String orderId, BigDecimal orderMoney, ProfitSharingResult result) {
+        ProfitSharing profitSharing = new ProfitSharing();
+        profitSharing.setShareId(result.getOutOrderNo());
+        profitSharing.setDelFlag(0);
+        profitSharing.setShareStatus("FINISHED".equals(result.getStatus()) ? 2 : 1);
+        profitSharing.setShopId(shopId);
+        profitSharing.setOrderId(orderId);
+        profitSharing.setOrderMoney(orderMoney);
+
+        List<ProfitSharingResult.Receiver> receivers = result.getReceivers();
+        if(null != receivers && !receivers.isEmpty()){
+            ProfitSharingResult.Receiver receiver = receivers.get(0);
+            profitSharing.setReceiverAccount(receiver.getReceiverMchid());
+            BigDecimal receiverAmount = new BigDecimal(receiver.getAmount());
+            receiverAmount = receiverAmount.divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
+            profitSharing.setReceiverAmount(receiverAmount);
+            profitSharing.setSurpMoney(orderMoney.subtract(receiverAmount));
+            profitSharing.setReceiverDescription(receiver.getDescription());
+            profitSharing.setFinishFlag(0);
+            profitSharing.setFailReason(receiver.getFailReason());
+            profitSharing.setDetailId(receiver.getDetailId());
+        }
+        profitSharing.setCreateTime(new Date());
+
+        this.saveOrUpdate(profitSharing);
+    }
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/ConsumerGoodsServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/ConsumerGoodsServiceImpl.java
index 58c6aa5..c6c6203 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/ConsumerGoodsServiceImpl.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/ConsumerGoodsServiceImpl.java
@@ -142,6 +142,7 @@
                         consumerGoods.setUsedNum(0);
                         consumerGoods.setCreateTime(new Date());
                         consumerGoods.setGoodsType(goods.getGoodsType());
+                        consumerGoods.setGoodsTag(goods.getGoodsTags());
                         consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction());
                         consumerGoods.setGoodsPicture(goodsFile.getFileUrl());
                         consumerGoods.setGoodsNurses(goods.getGoodsNurses());
@@ -420,6 +421,7 @@
                 consumerGoods.setUsedNum(0);
                 consumerGoods.setCreateTime(new Date());
                 consumerGoods.setGoodsType(goods.getGoodsType());
+                consumerGoods.setGoodsTag(goods.getGoodsTags());
                 consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction());
                 consumerGoods.setGoodsPicture(goodsFile.getFileUrl());
                 consumerGoods.setGoodsNurses(goods.getGoodsNurses());
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
index 6e52346..2155f03 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
@@ -1,10 +1,21 @@
 package com.ruoyi.order.service.impl.order;
 
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.binarywang.wxpay.bean.ecommerce.*;
+import com.github.binarywang.wxpay.bean.ecommerce.ProfitSharingRequest.Receiver;
+import com.github.binarywang.wxpay.bean.ecommerce.enums.TradeTypeEnum;
+import com.github.binarywang.wxpay.bean.profitsharingV3.ProfitSharingNotifyResult;
+import com.github.binarywang.wxpay.config.WxPayConfig;
+import com.github.binarywang.wxpay.exception.WxPayException;
+import com.github.binarywang.wxpay.service.WxPayService;
+import com.google.common.base.Joiner;
+import com.google.gson.Gson;
+import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.exception.ServiceException;
 import com.ruoyi.common.core.utils.DateUtils;
 import com.ruoyi.common.core.utils.StringUtils;
@@ -12,15 +23,23 @@
 import com.ruoyi.common.redis.service.RedisService;
 import com.ruoyi.common.security.utils.CodeFactoryUtil;
 import com.ruoyi.common.security.utils.SecurityUtils;
+import com.ruoyi.order.config.WxPayConfiguration;
 import com.ruoyi.order.domain.dto.*;
 import com.ruoyi.order.domain.pojo.account.OrderPayment;
 import com.ruoyi.order.domain.pojo.account.OrderRefund;
+import com.ruoyi.order.domain.pojo.account.ProfitSharing;
 import com.ruoyi.order.domain.pojo.order.ConsumerGoods;
 import com.ruoyi.order.domain.pojo.order.Order;
 import com.ruoyi.order.domain.pojo.order.OrderGoods;
 import com.ruoyi.order.domain.pojo.order.PayRecord;
 import com.ruoyi.order.domain.vo.*;
+import com.ruoyi.order.enums.RefundStatusEnum;
+import com.ruoyi.order.enums.dict.IDict;
 import com.ruoyi.order.mapper.order.OrderMapper;
+import com.ruoyi.order.service.account.OrderPaymentService;
+import com.ruoyi.order.service.account.OrderRefundService;
+import com.ruoyi.order.service.account.PaymentMessageService;
+import com.ruoyi.order.service.account.ProfitSharingService;
 import com.ruoyi.order.service.order.*;
 import com.ruoyi.system.api.constant.AppErrorConstant;
 import com.ruoyi.system.api.constant.DelayTaskEnum;
@@ -35,10 +54,11 @@
 import com.ruoyi.system.api.domain.poji.member.MemberCoupon;
 import com.ruoyi.system.api.domain.poji.member.MemberGiftRecord;
 import com.ruoyi.system.api.domain.poji.shop.Shop;
+import com.ruoyi.system.api.domain.poji.shop.ShopProportionVo;
 import com.ruoyi.system.api.domain.poji.sys.SysUser;
 import com.ruoyi.system.api.domain.vo.*;
 import com.ruoyi.system.api.service.*;
-import com.wechat.pay.java.service.partnerpayments.jsapi.model.Transaction;
+import lombok.extern.slf4j.Slf4j;
 import org.redisson.api.RLock;
 import org.redisson.api.RedissonClient;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -47,6 +67,7 @@
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
@@ -63,6 +84,7 @@
  * @since 2023-04-25
  */
 @Service
+@Slf4j
 public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements OrderService {
 
     @Resource
@@ -110,22 +132,20 @@
     @Autowired
     private RedissonClient redissonClient;
 
-    /** 商户号 */
-    public static String merchantId = "";
-    /** 商户API私钥路径 */
-    public static String privateKeyPath = "";
-    /** 商户证书序列号 */
-    public static String merchantSerialNumber = "";
-    /** 微信支付平台证书路径 */
-    public static String wechatPayCertificatePath = "";
-    /** 微信支付 APIv3 密钥 */
-    public static String apiV3Key = "";
-    /** 微信支付APPID */
-    public static String appId="";
-    /** 微信支付商户ID */
-    public static String mchId="";
-    /** 通知地址 */
-    public static String notifyUrl="";
+    @Autowired
+    private WxPayService wxService;
+
+    @Resource
+    private PaymentMessageService paymentMessageService;
+
+    @Resource
+    private OrderPaymentService orderPaymentService;
+
+    @Resource
+    private ProfitSharingService profitSharingService;
+
+    @Resource
+    private OrderRefundService orderRefundService;
 
     /**
      * @description: buyGoods
@@ -153,8 +173,8 @@
         Map<String, Goods> goodsMap = goodsList.stream()
                 .collect(Collectors.toMap(Goods::getGoodsId, Function.identity()));
         Boolean haveDeposit = false;
-        for(Goods goods : goodsList){
-            if(goods.getSubscription()!=null&&goods.getSubscription().compareTo(BigDecimal.ZERO)>0){
+        for (Goods goods : goodsList) {
+            if (goods.getSubscription() != null && goods.getSubscription().compareTo(BigDecimal.ZERO) > 0) {
                 haveDeposit = true;
             }
         }
@@ -174,7 +194,7 @@
 
         // 将优惠券列表转换为Map,以优惠券ID为键
         Map<String, AppMemberCouponVo> appMemberCouponVoMap = new HashMap<>();
-        if(appMemberCouponVoList!=null&&!appMemberCouponVoList.isEmpty()){
+        if (appMemberCouponVoList != null && !appMemberCouponVoList.isEmpty()) {
             appMemberCouponVoMap = appMemberCouponVoList.stream().collect(Collectors.toMap(AppMemberCouponVo::getMemberCouponId, Function.identity()));
         }
         AppMemberCouponVo appMemberCouponVo;
@@ -201,7 +221,7 @@
             memberCouponId = appBuyGoodsDto.getMemberCouponId();
             // 获取商品信息
             goods = goodsMap.get(goodsId);
-            if(goods.getGoodsStatus()!=1){
+            if (goods.getGoodsStatus() != 1) {
                 throw new ServiceException(AppErrorConstant.GOODS_DOWN);
             }
             // 设置订单商品信息
@@ -234,7 +254,7 @@
                     if (couponType == 1 && appMemberCouponVo.getMoneyThreshold() != null && appMemberCouponVo.getDiscountMoney() != null) {
                         moneyThreshold = appMemberCouponVo.getMoneyThreshold();
                         discountMoney = appMemberCouponVo.getDiscountMoney();
-                        if (goodsTotalPrice.compareTo(moneyThreshold) >= 0 && goodsTotalPrice.compareTo(discountMoney)>0) {
+                        if (goodsTotalPrice.compareTo(moneyThreshold) >= 0 && goodsTotalPrice.compareTo(discountMoney) > 0) {
                             goodsRealPrice = goodsTotalPrice.subtract(discountMoney);
                             useCoupon = 1;
                             userCouponIdSet.add(memberCouponId);
@@ -242,16 +262,16 @@
                         }
                     } else if (couponType == 2 && appMemberCouponVo.getDiscountPercent() != null) {
                         discountPercent = appMemberCouponVo.getDiscountPercent();
-                        goodsRealPrice = goodsTotalPrice.multiply(discountPercent).divide(BigDecimal.TEN,2,BigDecimal.ROUND_HALF_UP);
+                        goodsRealPrice = goodsTotalPrice.multiply(discountPercent).divide(BigDecimal.TEN, 2, BigDecimal.ROUND_HALF_UP);
                         discountMoney = goodsTotalPrice.subtract(goodsRealPrice);
                         useCoupon = 1;
                         userCouponIdSet.add(memberCouponId);
                         appSureOrderGoodsVo.setMemberCouponId(memberCouponId);
                     } else if (couponType == 3 && appMemberCouponVo.getDiscountMoney() != null) {
                         discountMoney = appMemberCouponVo.getDiscountMoney();
-                        if(goodsTotalPrice.compareTo(discountMoney)>0){
+                        if (goodsTotalPrice.compareTo(discountMoney) > 0) {
                             goodsRealPrice = goodsTotalPrice.subtract(discountMoney);
-                            if(goodsRealPrice.compareTo(BigDecimal.ZERO)<0){
+                            if (goodsRealPrice.compareTo(BigDecimal.ZERO) < 0) {
                                 goodsRealPrice = BigDecimal.ZERO;
                             }
                             useCoupon = 1;
@@ -267,12 +287,12 @@
             appSureOrderGoodsVo.setGoodsRealPrice(goodsRealPrice);
             // 获取商品押金
             goodsDeposit = goods.getSubscription();
-            if (goodsDeposit != null && goodsDeposit.compareTo(BigDecimal.ZERO)>0) {
+            if (goodsDeposit != null && goodsDeposit.compareTo(BigDecimal.ZERO) > 0) {
                 goodsDeposit = goodsDeposit.multiply(buyNumBig);
-            }else{
-                if(haveDeposit){
+            } else {
+                if (haveDeposit) {
                     goodsDeposit = goodsRealPrice;
-                }else{
+                } else {
                     goodsDeposit = new BigDecimal("0.00");
                 }
             }
@@ -287,9 +307,9 @@
         //处理优惠券列表
         if (appMemberCouponVoList != null && !appMemberCouponVoList.isEmpty()) {
             for (AppMemberCouponVo entity : appMemberCouponVoList) {
-                if(userCouponIdSet!=null&&userCouponIdSet.contains(entity.getMemberCouponId())){
+                if (userCouponIdSet != null && userCouponIdSet.contains(entity.getMemberCouponId())) {
                     entity.setUseFlag(1);
-                }else{
+                } else {
                     entity.setUseFlag(0);
                 }
 
@@ -297,18 +317,18 @@
             }
             // 过滤商品优惠券列表
             List<AppMemberCouponVo> appGoodsMemberCouponVoList;
-            for(AppSureOrderGoodsVo sureOrderGoodsVo : appSureOrderGoodsVoList) {
+            for (AppSureOrderGoodsVo sureOrderGoodsVo : appSureOrderGoodsVoList) {
                 appGoodsMemberCouponVoList = new ArrayList<>();
-                for(AppMemberCouponVo entity : appMemberCouponVoList){
-                    if(StringUtils.isBlank(entity.getRelGoodsIds())||entity.getRelGoodsIds().contains(sureOrderGoodsVo.getGoodsId())){
-                        if(entity.getCouponType()==1){
-                            if(entity.getMoneyThreshold().compareTo(sureOrderGoodsVo.getGoodsTotalPrice())<0&&entity.getDiscountMoney().compareTo(sureOrderGoodsVo.getGoodsTotalPrice())<0){
+                for (AppMemberCouponVo entity : appMemberCouponVoList) {
+                    if (StringUtils.isBlank(entity.getRelGoodsIds()) || entity.getRelGoodsIds().contains(sureOrderGoodsVo.getGoodsId())) {
+                        if (entity.getCouponType() == 1) {
+                            if (entity.getMoneyThreshold().compareTo(sureOrderGoodsVo.getGoodsTotalPrice()) < 0 && entity.getDiscountMoney().compareTo(sureOrderGoodsVo.getGoodsTotalPrice()) < 0) {
                                 appGoodsMemberCouponVoList.add(entity);
                             }
-                        }else if(entity.getCouponType()==2){
+                        } else if (entity.getCouponType() == 2) {
                             appGoodsMemberCouponVoList.add(entity);
-                        }else if(entity.getCouponType()==3){
-                            if(entity.getDiscountMoney().compareTo(sureOrderGoodsVo.getGoodsTotalPrice())<0){
+                        } else if (entity.getCouponType() == 3) {
+                            if (entity.getDiscountMoney().compareTo(sureOrderGoodsVo.getGoodsTotalPrice()) < 0) {
                                 appGoodsMemberCouponVoList.add(entity);
                             }
                         }
@@ -415,8 +435,8 @@
         if (activityGoodsGetVo.getActivityStatus() == 2) {
             throw new ServiceException(AppErrorConstant.ACTIVITY_END);
         }
-        Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS+"-"+activityId+"-"+goodsId);
-        if(surpNum==null||surpNum<1){
+        Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + activityId + "-" + goodsId);
+        if (surpNum == null || surpNum < 1) {
             throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_NULL);
         }
         if (activityGoodsGetVo.getAvailableBuyNum() < 1) {
@@ -426,7 +446,7 @@
             throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_BEYOND);
         }
         Goods goods = remoteGoodsService.getGoods(goodsId).getData();
-        if(goods.getGoodsStatus()!=1){
+        if (goods.getGoodsStatus() != 1) {
             throw new ServiceException(AppErrorConstant.GOODS_DOWN);
         }
         appPanicBuyVo.setActivityId(activityId);
@@ -456,9 +476,9 @@
         appPanicBuyVo.setGoodsTotalPrice(goodsTotalPrice);
         appPanicBuyVo.setGoodsRealPrice(goodsRealPrice);
         goodsDeposit = activityGoodsGetVo.getActivitySubscription();
-        if (goodsDeposit == null || goodsDeposit.compareTo(BigDecimal.ZERO)==0) {
+        if (goodsDeposit == null || goodsDeposit.compareTo(BigDecimal.ZERO) == 0) {
             goodsDeposit = new BigDecimal("0.00");
-        }else{
+        } else {
             goodsDeposit = goodsDeposit.multiply(buyNumBig);
         }
         appPanicBuyVo.setGoodsDeposit(goodsDeposit);
@@ -498,8 +518,8 @@
         Map<String, Goods> goodsMap = goodsList.stream()
                 .collect(Collectors.toMap(Goods::getGoodsId, Function.identity()));
         Boolean haveDeposit = false;
-        for(Goods goods : goodsList){
-            if(goods.getSubscription()!=null&&goods.getSubscription().compareTo(BigDecimal.ZERO)>0){
+        for (Goods goods : goodsList) {
+            if (goods.getSubscription() != null && goods.getSubscription().compareTo(BigDecimal.ZERO) > 0) {
                 haveDeposit = true;
             }
         }
@@ -510,7 +530,7 @@
         Integer serviceNum;
         Integer goodsNum = 0;
         String memberCouponId;
-        Goods goods;
+        Goods goods = null;
         GoodsFile goodsFile;
         BigDecimal goodsPrice;
         BigDecimal goodsTotalPrice;
@@ -542,6 +562,7 @@
         HashSet<String> goodsTypeSet = new HashSet<>();
         //使用优惠券
         StringJoiner memberCouponSJ = new StringJoiner(",");
+        List<String> goodsNameList = new ArrayList<>();
         // 遍历购买的商品列表
         for (AppBuyGoodsDto appBuyGoodsDto : appBuyGoodsDtoList) {
             appSureOrderGoodsVo = new AppSureOrderGoodsVo();
@@ -551,6 +572,7 @@
             memberCouponId = appBuyGoodsDto.getMemberCouponId();
             // 获取商品信息
             goods = goodsMap.get(goodsId);
+            goodsNameList.add(goods.getGoodsName());
             // 设置商品信息
             appSureOrderGoodsVo.setGoodsId(goodsId);
             appSureOrderGoodsVo.setGoodsName(goods.getGoodsName());
@@ -596,7 +618,7 @@
                         }
                     } else if (couponType == 2 && appMemberCouponVo.getDiscountPercent() != null) {
                         discountPercent = appMemberCouponVo.getDiscountPercent();
-                        goodsRealPrice = goodsTotalPrice.multiply(discountPercent).divide(BigDecimal.TEN,2, BigDecimal.ROUND_HALF_UP);
+                        goodsRealPrice = goodsTotalPrice.multiply(discountPercent).divide(BigDecimal.TEN, 2, BigDecimal.ROUND_HALF_UP);
                         discountMoney = goodsTotalPrice.subtract(goodsRealPrice);
                         useCoupon = 1;
                     } else if (couponType == 3 && appMemberCouponVo.getDiscountMoney() != null) {
@@ -613,12 +635,12 @@
             appSureOrderGoodsVo.setGoodsRealPrice(goodsRealPrice);
             // 获取商品押金
             goodsDeposit = goods.getSubscription();
-            if (goodsDeposit != null && goodsDeposit.compareTo(BigDecimal.ZERO)>0) {
+            if (goodsDeposit != null && goodsDeposit.compareTo(BigDecimal.ZERO) > 0) {
                 goodsDeposit = goodsDeposit.multiply(buyNumBig);
-            }else{
-                if(haveDeposit){
+            } else {
+                if (haveDeposit) {
                     goodsDeposit = goodsRealPrice;
-                }else{
+                } else {
                     goodsDeposit = new BigDecimal("0.00");
                 }
             }
@@ -648,6 +670,7 @@
             orderGoods.setServiceNum(serviceNum);
             orderGoods.setGoodsType(goods.getGoodsType());
             orderGoods.setGoodsName(goods.getGoodsName());
+            orderGoods.setGoodsTag(goods.getGoodsTags());
             orderGoods.setGoodsIntroduction(goods.getGoodsIntroduction());
             orderGoods.setGoodsPicture(goodsFile.getFileUrl());
             // 保存订单商品
@@ -713,53 +736,127 @@
         }
         appPlaceOrderVo.setOrderId(orderId);
         appPlaceOrderVo.setOrderNo(orderNo);
-        // 调用支付
-       /* CombineTransactionsJsRequest request=new CombineTransactionsJsRequest();
-        request.setCombineAppid();
-        request.setCombineMchid();
-        profitsSharingService.combineTransactions(request);*/
 
-       //构建预下单支付对象
-        /*PrepayRequest request = new PrepayRequest();
-        Amount amount = new Amount();
-        amount.setTotal(Integer.parseInt(order.getPayMoney().multiply(new BigDecimal(100)).toString()));
-        request.setAmount(amount);
-        request.setAppid(this.appId);
-        request.setMchid(this.mchId);
-        request.setDescription(order.getGoodsInfo());
-        request.setNotifyUrl(this.notifyUrl);
-        request.setOutTradeNo(order.getOrderId());
-        Payer payer = new Payer();
-        payer.setOpenid("oLTPCuN5a-nBD4rAL_fa********");
-        request.setPayer(payer);*/
-        //返回前端唤醒支付结果信息
-        /*PrepayWithRequestPaymentResponse res = this.getJsApIResponse(request);
-        appPlaceOrderVo.setAppId(this.appId);
-        appPlaceOrderVo.setTimeStamp(res.getTimeStamp());
-        appPlaceOrderVo.setNonceStr(res.getNonceStr());
-        appPlaceOrderVo.setPackageStr(res.getPackageVal());
-        appPlaceOrderVo.setTradeType(res.getSignType());
-        appPlaceOrderVo.setPaySign(res.getPaySign());*/
+        String goodsName = "";
+        if (null != goods) {
+            goodsName = goods.getGoodsName();
+        }
+
+        // 小程序微信下单支付
+        createWxPayInfo(appPlaceOrderVo, userId, order.getShopId(), goodsName, orderNo,
+                orderId, order.getPayMoney(), appPlaceOrderDto.getOpenid(),
+                appPlaceOrderDto.getSpbillCreateIp(), goodsNameList);
 
 
         //减去优惠券
-        if(memberCouponSJ!=null&&StringUtils.isNotBlank(memberCouponSJ.toString())){
+        if (StringUtils.isNotBlank(memberCouponSJ.toString())) {
             remoteCouponService.useMemberCoupon(memberCouponSJ.toString());
         }
         //生成自动取消订单延时任务
         Integer delayTime = 30;
-        if(redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)){
+        if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) {
             delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME);
         }
         redisService.setCacheObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId, orderId, delayTime.longValue(), TimeUnit.MINUTES);
         DelayTask delayTask = new DelayTask();
         delayTask.setDelFlag(0);
         delayTask.setCreateTime(new Date());
-        delayTask.setEndTime(DateUtils.addMinutes(new Date(),delayTime));
+        delayTask.setEndTime(DateUtils.addMinutes(new Date(), delayTime));
         delayTask.setRedisKey(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId);
         remoteConfigService.addDelayTask(delayTask);
-        appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(),delayTime));
+        appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime));
+
         return appPlaceOrderVo;
+    }
+
+    /**
+     * 小程序支付下单API
+     * @param appPlaceOrderVo
+     * @param userId
+     * @param shopId
+     * @param goodsName
+     * @param orderNo
+     * @param orderId
+     * @param payMoney
+     * @param openid
+     * @param payerClientIp
+     * @param goodsNameList
+     */
+    private void createWxPayInfo(AppPlaceOrderVo appPlaceOrderVo, Long userId, Long shopId,
+                                 String goodsName, String orderNo,
+                                 String orderId, BigDecimal payMoney,
+                                 String openid, String payerClientIp, List<String> goodsNameList){
+        try {
+            // 创建支付订单
+            R<String> resultMch = remoteShopService.getShopSubMchId(shopId);
+            String subMchId = resultMch.getData();
+            if (StringUtils.isEmpty(subMchId)) {
+                throw new ServiceException("获取微信商户号失败");
+            }
+            WxPayConfig config = wxService.getConfig();
+            config.setSubMchId(subMchId);
+
+            PartnerTransactionsRequest request = new PartnerTransactionsRequest();
+            request.setSpAppid(config.getAppId());
+            request.setSpMchid(config.getMchId());
+            request.setSubMchid(config.getSubMchId());
+            //  商品描述	body
+            String description = goodsName + "-商品购买";
+
+            request.setDescription(description);
+            request.setOutTradeNo(orderNo);
+            request.setNotifyUrl(config.getNotifyUrl());
+            // 结算信息
+            PartnerTransactionsRequest.SettleInfo settleInfo = new PartnerTransactionsRequest.SettleInfo();
+            settleInfo.setProfitSharing(true);
+            settleInfo.setSubsidyAmount(BigDecimal.ZERO);
+            request.setSettleInfo(settleInfo);
+
+            // 订单总金额
+            Integer totalFee = payMoney.multiply(new BigDecimal(100)).intValue();
+            PartnerTransactionsRequest.Amount amount = new PartnerTransactionsRequest.Amount();
+            amount.setTotal(totalFee);
+            amount.setCurrency("CNY");
+            request.setAmount(amount);
+
+            // 支付者
+            PartnerTransactionsRequest.Payer payer = new PartnerTransactionsRequest.Payer();
+            payer.setSpOpenid(openid);
+            request.setPayer(payer);
+
+            // 场景信息
+            PartnerTransactionsRequest.SceneInfo sceneInfo = new PartnerTransactionsRequest.SceneInfo();
+            sceneInfo.setPayerClientIp(payerClientIp);
+            request.setSceneInfo(sceneInfo);
+
+            TransactionsResult.JsapiResult result = wxService.getEcommerceService().partnerTransactions(TradeTypeEnum.JSAPI, request);
+
+            // 请求参数
+            Gson gson = new Gson();
+            String payRequestJson = gson.toJson(request);
+            // 返回参数
+            String payResponseJson = gson.toJson(result);
+
+            // 支付相关信息返回
+            appPlaceOrderVo.setAppId(result.getAppId());
+            appPlaceOrderVo.setMchId(config.getMchId());
+            appPlaceOrderVo.setTimeStamp(result.getTimeStamp());
+            appPlaceOrderVo.setNonceStr(result.getNonceStr());
+            appPlaceOrderVo.setPackageStr(result.getPackageValue());
+            appPlaceOrderVo.setSignType(result.getSignType());
+            appPlaceOrderVo.setPaySign(result.getPaySign());
+            appPlaceOrderVo.setPrepayId(result.getPackageValue());
+
+            // 保存支付订单统一下单日志
+            paymentMessageService.savePaymentMessage("1", orderId, payRequestJson, payResponseJson);
+
+            // 保存支付订单统一下单支付记录
+            orderPaymentService.saveOrderPayment(userId, shopId, subMchId, orderId, payMoney,
+                    appPlaceOrderVo.getEndTime(), "Y", openid,
+                    Joiner.on(";").join(goodsNameList), result.getPackageValue());
+        } catch (WxPayException e) {
+            throw new ServiceException(e.getMessage());
+        }
     }
 
 
@@ -783,17 +880,17 @@
         String goodsId = appPlaceActivityDto.getGoodsId();
         Integer buyNum = appPlaceActivityDto.getBuyNum();
         //redis库存控制极简版
-        String goodsLock = "goods_lock_"+activityId+"_"+goodsId;
+        String goodsLock = "goods_lock_" + activityId + "_" + goodsId;
         RLock redissonLock = redissonClient.getLock(goodsLock);
-        try{
+        try {
             redissonLock.lock(30, TimeUnit.SECONDS);
-            Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS+"-"+activityId+"-"+goodsId);
-            if(surpNum==null||surpNum<buyNum){
+            Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + activityId + "-" + goodsId);
+            if (surpNum == null || surpNum < buyNum) {
                 throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_NULL);
-            }else{
-                redisService.setCacheObject(SecurityConstant.ACTIVITY_GOODS+"-"+activityId+"-"+goodsId,surpNum-buyNum);
+            } else {
+                redisService.setCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + activityId + "-" + goodsId, surpNum - buyNum);
             }
-        }finally{
+        } finally {
             redissonLock.unlock();
         }
         // 定义购买数量,服务数量,商品数量
@@ -873,9 +970,9 @@
         appSureOrderGoodsVo.setGoodsRealPrice(goodsRealPrice);
         // 获取商品押金
         goodsDeposit = activityGoodsGetVo.getActivitySubscription();
-        if (goodsDeposit == null || goodsDeposit.compareTo(BigDecimal.ZERO)==0) {
+        if (goodsDeposit == null || goodsDeposit.compareTo(BigDecimal.ZERO) == 0) {
             goodsDeposit = new BigDecimal("0.00");
-        }else{
+        } else {
             goodsDeposit = goodsDeposit.multiply(buyNumBig);
         }
         appSureOrderGoodsVo.setGoodsDeposit(goodsDeposit);
@@ -900,6 +997,7 @@
         orderGoods.setCycleNumFlag(goods.getCycleNumFlag());
         orderGoods.setServiceNum(serviceNum);
         orderGoods.setGoodsType(goods.getGoodsType());
+        orderGoods.setGoodsTag(goods.getGoodsTags());
         orderGoods.setGoodsName(goods.getGoodsName());
         orderGoods.setGoodsIntroduction(goods.getGoodsIntroduction());
         orderGoods.setGoodsPicture(goodsFile.getFileUrl());
@@ -921,9 +1019,9 @@
             goodsTypeSet.add("单品");
         }
         String goodsNurse = goods.getGoodsNurses();
-        if(StringUtils.isNotBlank(goodsNurse)){
+        if (StringUtils.isNotBlank(goodsNurse)) {
             String[] goodsNurseArr = goodsNurse.split(",");
-            for(String str : goodsNurseArr){
+            for (String str : goodsNurseArr) {
                 goodsNurseSet.add(str);
             }
         }
@@ -967,7 +1065,7 @@
         // 保存订单
         this.save(order);
         // 更新用户商品类型
-        if (goodsTypeSet != null || goodsNurseSet!= null) {
+        if (goodsTypeSet != null || goodsNurseSet != null) {
             AppMemberGoodsTypeDto appMemberGoodsTypeDto = new AppMemberGoodsTypeDto();
             appMemberGoodsTypeDto.setUserId(userId);
             appMemberGoodsTypeDto.setGoodsTypeSet(goodsTypeSet);
@@ -1035,17 +1133,17 @@
         remoteActivityService.addActivityRecord(activityRecord);
         //生成自动取消订单延时任务
         Integer delayTime = 30;
-        if(redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)){
+        if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) {
             delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME);
         }
         redisService.setCacheObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId, orderId, delayTime.longValue(), TimeUnit.MINUTES);
         DelayTask delayTask = new DelayTask();
         delayTask.setDelFlag(0);
         delayTask.setCreateTime(new Date());
-        delayTask.setEndTime(DateUtils.addMinutes(new Date(),delayTime));
+        delayTask.setEndTime(DateUtils.addMinutes(new Date(), delayTime));
         delayTask.setRedisKey(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId);
         remoteConfigService.addDelayTask(delayTask);
-        appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(),delayTime));
+        appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime));
         return appPlaceOrderVo;
     }
 
@@ -1074,7 +1172,7 @@
                 shopMap.put(shopIdLong, shopTemp);
             });
             Integer delayTime = 30;
-            if(redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)){
+            if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) {
                 delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME);
             }
             for (AppUserOrderPageVo appUserOrderPageVo : appUserOrderPageVoList) {
@@ -1087,7 +1185,7 @@
                     appUserOrderPageVo.setSameShop(0);
                 }
                 appUserOrderPageVo.setVerifyCode("1-" + appUserOrderPageVo.getOrderId());
-                appUserOrderPageVo.setEndTime(DateUtils.addMinutes(appUserOrderPageVo.getCreateTime(),delayTime));
+                appUserOrderPageVo.setEndTime(DateUtils.addMinutes(appUserOrderPageVo.getCreateTime(), delayTime));
             }
         }
         return appUserOrderPageVoList;
@@ -1128,10 +1226,10 @@
         appUserOrderGetVo.setVerifyCode("1-" + orderId);
         //生成自动取消订单延时任务
         Integer delayTime = 30;
-        if(redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)){
+        if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) {
             delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME);
         }
-        appUserOrderGetVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(),delayTime));
+        appUserOrderGetVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime));
         return appUserOrderGetVo;
     }
 
@@ -1143,13 +1241,15 @@
     @Override
     public void cancelOrder(String orderId) {
         Order order = this.getById(orderId);
+        // 订单状态-1.删除 0.已取消 1.待支付 2.待核销 3.已完成
         if (order.getOrderStatus() == 0) {
             throw new ServiceException(AppErrorConstant.CANCEL_CANCEL_ORDER);
-        }else if (order.getOrderStatus() == 1) {
+        } else if (order.getOrderStatus() == 1) {
             this.autoCancelOrder(orderId);
-        }else if(order.getOrderStatus() == 2){
+        } else if (order.getOrderStatus() == 2) {
+            // 2.待核销 -> 订单退款
             this.refundOrder(orderId);
-        }else{
+        } else {
             throw new ServiceException(AppErrorConstant.CANCEL_ERROR_ORDER);
         }
     }
@@ -1224,6 +1324,18 @@
         merVerifyOrderVo.setPayTime(order.getPayTime());
         merVerifyOrderVo.setUseTime(order.getUseTime());
         merVerifyOrderVo.setAppUserOrderGoodsPageVoList(appUserOrderGoodsPageVoList);
+        merVerifyOrderVo.setPayType(order.getPayType());
+        merVerifyOrderVo.setRealReceiveMoney(order.getChangeReceivableMoney());
+        if(order.getPayType()==1){
+            merVerifyOrderVo.setReceiveMoney(order.getPayMoney());
+        }else{
+            if(order.getOfflinePayMoney()!=null){
+                merVerifyOrderVo.setReceiveMoney(order.getOfflinePayMoney());
+            }else{
+                merVerifyOrderVo.setReceiveMoney(BigDecimal.ZERO);
+            }
+        }
+        merVerifyOrderVo.setUnReceiveMoney(merVerifyOrderVo.getRealReceiveMoney().subtract(order.getReceivableMoney()));
         // 根据订单用户ID获取用户信息
         Member member = remoteMemberService.getMember(order.getUserId()).getData();
         merVerifyOrderVo.setUserId(order.getUserId());
@@ -1254,7 +1366,7 @@
         }
 
         ShopRelUserVo shopRelUserVo = remoteShopService.getShopByUserId(merVerifyOrderDto.getUserId()).getData();
-        if(!shopRelUserVo.getShopId().equals(order.getShopId())){
+        if (!shopRelUserVo.getShopId().equals(order.getShopId())) {
             throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
         }
         order.setOrderStatus(3);
@@ -1264,9 +1376,9 @@
         order.setOffPayTime(nowTime);
         order.setPayMoney(order.getPayMoney().add(relPayMoney));
         order.setChangeReceivableMoney(relReceiveMoney);
-        if(order.getPayMoney().compareTo(order.getChangeReceivableMoney())>=0){
+        if (order.getPayMoney().compareTo(order.getChangeReceivableMoney()) >= 0) {
             order.setCloseFlag(1);
-        }else{
+        } else {
             order.setCloseFlag(0);
         }
         this.saveOrUpdate(order);
@@ -1286,7 +1398,7 @@
         List<ConsumerGoods> consumerGoodsList = new ArrayList<>();
         for (AppUserOrderGoodsPageVo appUserOrderGoodsPageVo : appUserOrderGoodsPageVoList) {
             Integer buyNum = appUserOrderGoodsPageVo.getBuyNum();
-            if(appUserOrderGoodsPageVo.getCycleNumFlag()==0){
+            if (appUserOrderGoodsPageVo.getCycleNumFlag() == 0) {
                 consumerGoods = new ConsumerGoods();
                 goods = goodsMap.get(appUserOrderGoodsPageVo.getGoodsId());
                 consumerGoodsId = IdUtils.simpleUUID();
@@ -1303,6 +1415,7 @@
                 consumerGoods.setServiceNum(appUserOrderGoodsPageVo.getServiceNum());
                 consumerGoods.setUsedNum(0);
                 consumerGoods.setGoodsType(appUserOrderGoodsPageVo.getGoodsType());
+                consumerGoods.setGoodsTag(appUserOrderGoodsPageVo.getGoodsTag());
                 consumerGoods.setCreateTime(nowTime);
                 consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction());
                 consumerGoods.setGoodsPicture(appUserOrderGoodsPageVo.getGoodsPicture());
@@ -1310,8 +1423,8 @@
                 consumerGoods.setSourceFrom(1);
                 consumerGoods.setSureNum(buyNum);
                 consumerGoodsList.add(consumerGoods);
-            }else{
-                for(int i=0;i<buyNum;i++){
+            } else {
+                for (int i = 0; i < buyNum; i++) {
                     consumerGoods = new ConsumerGoods();
                     goods = goodsMap.get(appUserOrderGoodsPageVo.getGoodsId());
                     consumerGoodsId = IdUtils.simpleUUID();
@@ -1328,6 +1441,7 @@
                     consumerGoods.setServiceNum(appUserOrderGoodsPageVo.getServiceNum());
                     consumerGoods.setUsedNum(0);
                     consumerGoods.setGoodsType(appUserOrderGoodsPageVo.getGoodsType());
+                    consumerGoods.setGoodsTag(appUserOrderGoodsPageVo.getGoodsTag());
                     consumerGoods.setCreateTime(nowTime);
                     consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction());
                     consumerGoods.setGoodsPicture(appUserOrderGoodsPageVo.getGoodsPicture());
@@ -1354,15 +1468,26 @@
         merVerifyOrderVo.setCreateTime(order.getCreateTime());
         merVerifyOrderVo.setPayTime(order.getPayTime());
         merVerifyOrderVo.setUseTime(order.getUseTime());
+        merVerifyOrderVo.setPayType(order.getPayType());
+        merVerifyOrderVo.setRealReceiveMoney(order.getChangeReceivableMoney());
+        if(order.getPayType()==1){
+            merVerifyOrderVo.setReceiveMoney(order.getPayMoney());
+        }else{
+            if(order.getOfflinePayMoney()!=null){
+                merVerifyOrderVo.setReceiveMoney(order.getOfflinePayMoney());
+            }else{
+                merVerifyOrderVo.setReceiveMoney(BigDecimal.ZERO);
+            }
+        }
+        merVerifyOrderVo.setUnReceiveMoney(merVerifyOrderVo.getRealReceiveMoney().subtract(order.getReceivableMoney()));
         Member member = remoteMemberService.getMember(order.getUserId()).getData();
         merVerifyOrderVo.setUserId(order.getUserId());
         merVerifyOrderVo.setUserName(member.getRealName());
         merVerifyOrderVo.setUserMobile(member.getMobile());
         merVerifyOrderVo.setCloseFlag(order.getCloseFlag());
         //
-        if(order.getOrderFrom()==2){
-
-            //profitsSharingService.applyProfitSharing();
+        if (order.getOrderFrom() == 2) {
+            // profitsSharingService.applyProfitSharing();
         }
 
         //创建支付记录
@@ -1371,10 +1496,89 @@
         payRecord.setOrderId(order.getOrderId());
         payRecord.setPayMoney(merVerifyOrderDto.getRelPayMoney());
         payRecord.setPayTime(new Date());
-        payRecord.setPayType(2);
+        payRecord.setPayType(merVerifyOrderDto.getPayType());
         payRecordService.save(payRecord);
-        return merVerifyOrderVo;
 
+        submitProfitSharing(orderId, order.getOrderNo(), order.getShopId(), order.getOrderMoney());
+
+        return merVerifyOrderVo;
+    }
+
+    private void submitProfitSharing(String orderId, String orderNo, Long shopId, BigDecimal orderMoney) {
+        String sendMessage = "";
+        String resultMessage = "";
+        try {
+            // 核销完成 开始分账(平台收取服务费)
+            OrderPayment payment = orderPaymentService.getByOrderId(orderId);
+            String transactionId = payment.getTransactionId();
+
+            // 平台特约商户号,用户平台收取服务费
+            String platformTyMacId = WxPayConfiguration.getPlatformTyMacId();
+
+            R<String> resultMch = remoteShopService.getShopSubMchId(shopId);
+            String subMchId = resultMch.getData();
+            if (!StringUtils.isEmpty(subMchId)) {
+
+
+                R<ShopProportionVo> resultShopProportion = remoteShopService.getShopProportion(shopId);
+                ShopProportionVo shopProportion = resultShopProportion.getData();
+                if (null != shopProportion) {
+                    ProfitSharingRequest request = new ProfitSharingRequest();
+                    request.setSubMchid(subMchId);
+                    request.setTransactionId(transactionId);
+                    request.setOutOrderNo(orderNo);
+                    List<Receiver> receiverList = new ArrayList<>();
+
+                    String description = "订单:" + orderNo + " 平台抽取佣金";
+                    BigDecimal proportionPercent = shopProportion.getProportionPercent();
+                    if (null == proportionPercent) {
+                        proportionPercent = BigDecimal.ZERO;
+                    }
+
+                    ProfitSharingResult result = new ProfitSharingResult();
+                    result.setOutOrderNo(orderNo);
+                    result.setStatus("FINISHED");
+
+                    // 计算分成金额
+                    int amount = orderMoney.multiply(proportionPercent).setScale(0, RoundingMode.UP).intValue();
+                    log.info("订单分账:{} 分账金额: {}", orderNo, amount);
+                    if (amount > 0) {
+                        // 分账创建
+                        Receiver receiver = new Receiver();
+                        receiver.setType("MERCHANT_ID");
+                        receiver.setReceiverAccount(platformTyMacId);
+                        receiver.setAmount(amount);
+                        receiver.setDescription(description);
+
+                        receiverList.add(receiver);
+                        request.setReceivers(receiverList);
+                        // 分账完成
+                        request.setFinish(true);
+                        result = wxService.getEcommerceService().profitSharing(request);
+                    }
+
+                    // 创建分账记录
+                    profitSharingService.saveProfitSharing(shopId, orderId, orderMoney, result);
+
+                    // 保存请求信息
+                    sendMessage = JSONObject.toJSONString(request);
+                    resultMessage = JSONObject.toJSONString(result);
+                } else {
+                    resultMessage = String.format("订单分账:%s 获取商户分成失败", orderNo);
+                    log.info(resultMessage);
+                }
+            } else {
+                resultMessage = String.format("订单分账:%s 获取微信商户号失败", orderNo);
+                log.info(resultMessage);
+            }
+        } catch (WxPayException e) {
+            resultMessage = String.format("订单分账:%s 分账失败:%s", orderNo, e.getMessage());
+            log.info(resultMessage);
+            e.printStackTrace();
+        }
+
+        // 保存分账信息
+        paymentMessageService.savePaymentMessage("4", orderId, sendMessage, resultMessage);
     }
 
     /**
@@ -1389,7 +1593,7 @@
     public MerVerifyCouponVo sureVerifyCoupon(MerVerifyCouponDto merVerifyCouponDto) {
         MerVerifyCouponGetVo verifyCouponGetVo = remoteCouponService.getVerifyCoupon(merVerifyCouponDto.getMemberCouponId()).getData();
         ShopRelUserVo shopRelUserVo = remoteShopService.getShopByUserId(merVerifyCouponDto.getUserId()).getData();
-        if(!shopRelUserVo.getShopId().equals(verifyCouponGetVo.getMemberCoupon().getShopId())){
+        if (!shopRelUserVo.getShopId().equals(verifyCouponGetVo.getMemberCoupon().getShopId())) {
             throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
         }
         // 创建MerVerifyCouponVo对象
@@ -1452,11 +1656,12 @@
             appShopGoodsGetDto.setShopId(memberCoupon.getShopId());
             //获取商户服务次数
             shopGoods = remoteGoodsService.getShopGoods(appShopGoodsGetDto).getData();
-            if(shopGoods!=null){
+            if (shopGoods != null) {
                 consumerGoods.setServiceNum(shopGoods.getServiceNum());
             }
             consumerGoods.setUsedNum(0);
             consumerGoods.setGoodsType(goods.getGoodsType());
+            consumerGoods.setGoodsTag(goods.getGoodsTags());
             consumerGoods.setCreateTime(new Date());
             consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction());
             goodsFile = remoteGoodsService.getGoodsFile(goods.getGoodsId()).getData();
@@ -1472,36 +1677,36 @@
 
 
     /**
-     * @description  确认核销奖品
-     * @author  jqs
-     * @date    2023/7/9 9:54
      * @param merVerifyPrizeDto
-     * @return  MerVerifyAwardVo
+     * @return MerVerifyAwardVo
+     * @description 确认核销奖品
+     * @author jqs
+     * @date 2023/7/9 9:54
      */
     @Override
     @Transactional
-    public MerVerifyAwardVo sureVerifyPrize(MerVerifyPrizeDto merVerifyPrizeDto){
+    public MerVerifyAwardVo sureVerifyPrize(MerVerifyPrizeDto merVerifyPrizeDto) {
         MerVerifyAwardVo merVerifyAwardVo = new MerVerifyAwardVo();
         MemberGiftRecord memberGiftRecord = remoteMemberService.getVerifyPrize(merVerifyPrizeDto.getPrizeId()).getData();
-        if(memberGiftRecord==null||memberGiftRecord.getVerifyStatus()!=1){
+        if (memberGiftRecord == null || memberGiftRecord.getVerifyStatus() != 1) {
             throw new ServiceException(AppErrorConstant.COUPON_USED);
         }
         ShopRelUserVo shopRelUserVo = remoteShopService.getShopByUserId(merVerifyPrizeDto.getUserId()).getData();
-        if(!shopRelUserVo.getShopId().equals(memberGiftRecord.getShopId())){
+        if (!shopRelUserVo.getShopId().equals(memberGiftRecord.getShopId())) {
             throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
         }
         Member member = remoteMemberService.getMember(memberGiftRecord.getUserId()).getData();
         merVerifyAwardVo.setUserName(member.getRealName());
         merVerifyAwardVo.setUserMobile(member.getMobile());
-        if(memberGiftRecord.getGiftFrom()==1){
+        if (memberGiftRecord.getGiftFrom() == 1) {
             merVerifyAwardVo.setGiftFrom("平台生日卡");
-        }else{
+        } else {
             merVerifyAwardVo.setGiftFrom("商户生日卡");
         }
         merVerifyAwardVo.setGiftType(memberGiftRecord.getGiftType());
         List<BirthdayGiftSendDto> giftSendDtoList = new ArrayList<>();
         BirthdayGiftSendDto birthdayGiftSendDto = new BirthdayGiftSendDto();
-        switch(memberGiftRecord.getGiftType()){
+        switch (memberGiftRecord.getGiftType()) {
             case 1:
                 merVerifyAwardVo.setGiftName(memberGiftRecord.getCouponName());
                 merVerifyAwardVo.setGiftNumber(Double.valueOf(memberGiftRecord.getCouponNumber()));
@@ -1550,7 +1755,7 @@
         merVerifyAwardVo.setCreateTime(memberGiftRecord.getCreateTime());
         memberGiftRecord.setVerifyStatus(2);
         memberGiftRecord.setVerifyTime(new Date());
-        if(member.getBindingFlag()!=1){
+        if (member.getBindingFlag() != 1) {
             AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto();
             appMemberBindingDto.setBindingFlag(1);
             appMemberBindingDto.setShopId(merVerifyPrizeDto.getShopId());
@@ -1575,7 +1780,7 @@
     @Override
     public List<MerMemberNoClearOrderVo> pageMerMemberNoClearOrder(Page page, MerMemberNoClearOrderDto merMemberNoClearOrderDto) {
         List<MerMemberNoClearOrderVo> merMemberNoClearOrderVoList = orderMapper.pageMerMemberNoClearOrder(page, merMemberNoClearOrderDto.getMemberUserId());
-        if (merMemberNoClearOrderVoList != null && !merMemberNoClearOrderVoList.isEmpty()) {
+        /*if (merMemberNoClearOrderVoList != null && !merMemberNoClearOrderVoList.isEmpty()) {
             BigDecimal zeroBig = new BigDecimal("0.00");
             for (MerMemberNoClearOrderVo merMemberNoClearOrderVo : merMemberNoClearOrderVoList) {
                 merMemberNoClearOrderVo.setUnPaidMoney(merMemberNoClearOrderVo.getReceivableMoney().subtract(merMemberNoClearOrderVo.getPayMoney()));
@@ -1583,7 +1788,7 @@
                     merMemberNoClearOrderVo.setUnPaidMoney(zeroBig);
                 }
             }
-        }
+        }*/
         return merMemberNoClearOrderVoList;
     }
 
@@ -1598,9 +1803,9 @@
         order.setOfflinePayMoney(order.getOfflinePayMoney().add(merCloseOrderDto.getPayMoney()));
         order.setOffPayTime(new Date());
         order.setPayMoney(order.getPayMoney().add(merCloseOrderDto.getPayMoney()));
-        if(order.getPayMoney().compareTo(order.getChangeReceivableMoney())>=0){
+        if (order.getPayMoney().compareTo(order.getChangeReceivableMoney()) >= 0) {
             order.setCloseFlag(0);
-        }else{
+        } else {
             order.setCloseFlag(1);
         }
         this.saveOrUpdate(order);
@@ -1610,7 +1815,7 @@
         payRecord.setOrderId(order.getOrderId());
         payRecord.setPayMoney(merCloseOrderDto.getPayMoney());
         payRecord.setPayTime(new Date());
-        payRecord.setPayType(2);
+        payRecord.setPayType(merCloseOrderDto.getPayType());
         payRecordService.save(payRecord);
     }
 
@@ -1731,7 +1936,7 @@
                         }
                     } else if (couponType == 2 && appMemberCouponVo.getDiscountPercent() != null) {
                         discountPercent = appMemberCouponVo.getDiscountPercent();
-                        goodsRealPrice = goodsTotalPrice.multiply(discountPercent).divide(BigDecimal.TEN,2, BigDecimal.ROUND_HALF_UP);
+                        goodsRealPrice = goodsTotalPrice.multiply(discountPercent).divide(BigDecimal.TEN, 2, BigDecimal.ROUND_HALF_UP);
                         discountMoney = goodsRealPrice.subtract(goodsTotalPrice);
                     } else if (couponType == 3 && appMemberCouponVo.getDiscountMoney() != null) {
                         discountMoney = appMemberCouponVo.getDiscountMoney();
@@ -1741,9 +1946,9 @@
             }
 
             goodsDeposit = goods.getSubscription();
-            if (goodsDeposit == null || goodsDeposit.compareTo(BigDecimal.ZERO)==0) {
+            if (goodsDeposit == null || goodsDeposit.compareTo(BigDecimal.ZERO) == 0) {
                 goodsDeposit = new BigDecimal("0.00");
-            }else{
+            } else {
                 goodsDeposit = goodsDeposit.multiply(buyNumBig);
             }
             goodsNum = goodsNum + buyNum;
@@ -1768,6 +1973,7 @@
             orderGoods.setCycleNumFlag(goods.getCycleNumFlag());
             orderGoods.setServiceNum(serviceNum);
             orderGoods.setGoodsType(goods.getGoodsType());
+            orderGoods.setGoodsTag(goods.getGoodsTags());
             orderGoods.setGoodsName(goods.getGoodsName());
             orderGoods.setGoodsIntroduction(goods.getGoodsIntroduction());
             orderGoods.setGoodsPicture(goodsFile.getFileUrl());
@@ -1815,7 +2021,6 @@
         order.setOrderRemark(merNewOrderDto.getOrderRemark());
         order.setGoodsNum(goodsNum);
         order.setCreateTime(nowTime);
-        order.setPayTime(nowTime);
         order.setUseTime(nowTime);
         order.setUseUserId(merNewOrderDto.getUserId());
         order.setPayMoney(merNewOrderDto.getPayMoney());
@@ -1823,9 +2028,9 @@
         order.setOfflinePayMoney(merNewOrderDto.getPayMoney());
         order.setOffPayTime(nowTime);
         order.setPayType(1);
-        if(order.getPayMoney().compareTo(order.getChangeReceivableMoney())>=0){
+        if (order.getPayMoney().compareTo(order.getChangeReceivableMoney()) >= 0) {
             order.setCloseFlag(0);
-        }else{
+        } else {
             order.setCloseFlag(1);
         }
         this.save(order);
@@ -1836,7 +2041,7 @@
         List<ConsumerGoods> consumerGoodsList = new ArrayList<>();
         for (AppUserOrderGoodsPageVo appUserOrderGoodsPageVo : appUserOrderGoodsPageVoList) {
             Integer buyGoodsNum = appUserOrderGoodsPageVo.getBuyNum();
-            if(appUserOrderGoodsPageVo.getCycleNumFlag()==0){
+            if (appUserOrderGoodsPageVo.getCycleNumFlag() == 0) {
                 consumerGoods = new ConsumerGoods();
                 goods = remoteGoodsService.getGoods(appUserOrderGoodsPageVo.getGoodsId()).getData();
                 consumerGoodsId = IdUtils.simpleUUID();
@@ -1853,6 +2058,7 @@
                 consumerGoods.setServiceNum(appUserOrderGoodsPageVo.getServiceNum());
                 consumerGoods.setUsedNum(0);
                 consumerGoods.setGoodsType(appUserOrderGoodsPageVo.getGoodsType());
+                consumerGoods.setGoodsTag(appUserOrderGoodsPageVo.getGoodsTag());
                 consumerGoods.setCreateTime(nowTime);
                 consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction());
                 consumerGoods.setGoodsPicture(appUserOrderGoodsPageVo.getGoodsPicture());
@@ -1860,8 +2066,8 @@
                 consumerGoods.setSourceFrom(1);
                 consumerGoods.setSureNum(buyGoodsNum);
                 consumerGoodsList.add(consumerGoods);
-            }else{
-                for(int i=0;i<buyGoodsNum;i++) {
+            } else {
+                for (int i = 0; i < buyGoodsNum; i++) {
                     consumerGoods = new ConsumerGoods();
                     goods = remoteGoodsService.getGoods(appUserOrderGoodsPageVo.getGoodsId()).getData();
                     consumerGoodsId = IdUtils.simpleUUID();
@@ -1878,6 +2084,7 @@
                     consumerGoods.setServiceNum(appUserOrderGoodsPageVo.getServiceNum());
                     consumerGoods.setUsedNum(0);
                     consumerGoods.setGoodsType(appUserOrderGoodsPageVo.getGoodsType());
+                    consumerGoods.setGoodsTag(appUserOrderGoodsPageVo.getGoodsTag());
                     consumerGoods.setCreateTime(nowTime);
                     consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction());
                     consumerGoods.setGoodsPicture(appUserOrderGoodsPageVo.getGoodsPicture());
@@ -1923,11 +2130,11 @@
      */
     @Override
     public List<MerOrderPageVo> pageMerOrder(Page page, MerOrderPageDto merOrderPageDto) {
-        if(StringUtils.isNotBlank(merOrderPageDto.getKeyword())){
+        if (StringUtils.isNotBlank(merOrderPageDto.getKeyword())) {
             MgtUserIdByKeywordDto userIdByKeywordDto = new MgtUserIdByKeywordDto();
             userIdByKeywordDto.setKeyword(merOrderPageDto.getKeyword());
             MgtUserIdByKeywordVo userIdByKeywordVo = remoteMemberService.getUserIdByKeyword(userIdByKeywordDto).getData();
-            if(StringUtils.isNotBlank(userIdByKeywordVo.getUserIds())){
+            if (StringUtils.isNotBlank(userIdByKeywordVo.getUserIds())) {
                 List<Long> userIdList = Arrays.stream(userIdByKeywordVo.getUserIds().split(","))
                         .map(Long::parseLong)
                         .collect(Collectors.toList());
@@ -1950,6 +2157,9 @@
                 if (orderFrom != null) {
                     if (orderFrom == 1) {
                         orderFromDesc = "商城订单";
+                    } else if(orderFrom == 2){
+
+                        orderFromDesc = "店铺砍价活动("+merOrderPageVo.getActivityName()+")";
                     } else {
                         orderFromDesc = "线下创建";
                     }
@@ -1968,12 +2178,12 @@
             Map<Long, MgtSimpleMemberVo> userMap = simpleMemberVoList.stream()
                     .collect(Collectors.toMap(MgtSimpleMemberVo::getUserId, Function.identity()));
             for (MerOrderPageVo merOrderPageVo : merOrderPageVoList) {
-                if(merOrderPageVo.getUserId()!=null&&userMap.get(merOrderPageVo.getUserId())!=null){
+                if (merOrderPageVo.getUserId() != null && userMap.get(merOrderPageVo.getUserId()) != null) {
                     merOrderPageVo.setUserName(userMap.get(merOrderPageVo.getUserId()).getRealName());
                     merOrderPageVo.setNickName(userMap.get(merOrderPageVo.getUserId()).getNickName());
                     merOrderPageVo.setUserMobile(userMap.get(merOrderPageVo.getUserId()).getUserMobile());
-                }else{
-                    log.debug("订单merOrderPageVo"+merOrderPageVo.getOrderId()+"缺少用户");
+                } else {
+                    log.debug("订单merOrderPageVo" + merOrderPageVo.getOrderId() + "缺少用户");
                 }
             }
         }
@@ -2157,7 +2367,7 @@
             }
         }
         MgtOrderTotal mgtOrderTotal = new MgtOrderTotal();
-        MgtOrderTotal mgtOrderTotalFirst = orderMapper.totalOrderFirst();
+        MgtOrderTotal mgtOrderTotalFirst = orderMapper.totalOrderFirst(mgtShopOrderPageDto);
         MgtOrderTotal mgtOrderTotalSecond = orderMapper.totalOrderSecond(mgtShopOrderPageDto);
         MgtOrderTotal mgtOrderTotalThird = orderMapper.totalOrderThird(mgtShopOrderPageDto);
         mgtOrderTotal.setOrderTotal(mgtOrderTotalFirst.getOrderTotal());
@@ -2340,9 +2550,9 @@
         mgtOrderDetailVo.setCancelTime(order.getCancelTime());
         mgtOrderDetailVo.setOrderRemark(order.getOrderRemark());
         mgtOrderDetailVo.setShopId(order.getShopId());
-        if(shop!=null){
+        if (shop != null) {
             mgtOrderDetailVo.setShopName(shop.getShopName());
-        }else{
+        } else {
             mgtOrderDetailVo.setShopName("商户已被删除");
         }
         mgtOrderDetailVo.setVerifyTime(order.getUseTime());
@@ -2362,6 +2572,8 @@
     @Override
     public MgtBulletinBoardVo boardOrderTotal() {
         MgtBulletinBoardVo mgtBulletinBoardVo = orderMapper.boardOrderTotal();
+        Integer activityUserTotal = orderMapper.activityUserTotal();
+        mgtBulletinBoardVo.setActivityUserTotal(activityUserTotal);
         return mgtBulletinBoardVo;
     }
 
@@ -2932,11 +3144,11 @@
         } else if (couponStatus != 1) {
             throw new ServiceException(AppErrorConstant.COUPON_NO_FIND);
         }
-        if (memberCoupon.getCouponFrom()==2&&!memberCoupon.getShopId().equals(shopId)) {
+        if (memberCoupon.getCouponFrom() == 2 && !memberCoupon.getShopId().equals(shopId)) {
             throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
         }
         //如果是平台优惠券
-        if(memberCoupon.getCouponFrom()==1&&memberCoupon.getShopId()==null){
+        if (memberCoupon.getCouponFrom() == 1 && memberCoupon.getShopId() == null) {
             memberCoupon.setShopId(shopId);
         }
         List<Goods> goodsList = verifyCouponGetVo.getGoodsList();
@@ -2974,34 +3186,34 @@
     }
 
     /**
-     * @description  获取核销奖品
-     * @author  jqs
-     * @date    2023/7/8 17:46
      * @param verifyCode
      * @param shopId
-     * @return  MerVerifyAwardVo
+     * @return MerVerifyAwardVo
+     * @description 获取核销奖品
+     * @author jqs
+     * @date 2023/7/8 17:46
      */
     @Override
-    public MerVerifyAwardVo verifyPrize(String verifyCode,Long shopId){
+    public MerVerifyAwardVo verifyPrize(String verifyCode, Long shopId) {
         MerVerifyAwardVo merVerifyAwardVo = new MerVerifyAwardVo();
         MemberGiftRecord memberGiftRecord = remoteMemberService.getVerifyPrize(verifyCode).getData();
-        if(memberGiftRecord==null||memberGiftRecord.getVerifyStatus()!=1){
+        if (memberGiftRecord == null || memberGiftRecord.getVerifyStatus() != 1) {
             throw new ServiceException(AppErrorConstant.COUPON_USED);
         }
-        if(memberGiftRecord.getGiftFrom()==2&&!memberGiftRecord.getShopId().equals(shopId)){
+        if (memberGiftRecord.getGiftFrom() == 2 && !memberGiftRecord.getShopId().equals(shopId)) {
             throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
         }
         Member member = remoteMemberService.getMember(memberGiftRecord.getUserId()).getData();
         merVerifyAwardVo.setUserName(member.getRealName());
         merVerifyAwardVo.setUserMobile(member.getMobile());
-        if(memberGiftRecord.getGiftFrom()==1){
+        if (memberGiftRecord.getGiftFrom() == 1) {
             merVerifyAwardVo.setGiftFrom("平台生日卡");
-        }else{
+        } else {
             merVerifyAwardVo.setGiftFrom("商户生日卡");
         }
 
         merVerifyAwardVo.setGiftType(memberGiftRecord.getGiftType());
-        switch(memberGiftRecord.getGiftType()){
+        switch (memberGiftRecord.getGiftType()) {
             case 1:
                 merVerifyAwardVo.setGiftName(memberGiftRecord.getCouponName());
                 merVerifyAwardVo.setGiftNumber(Double.valueOf(memberGiftRecord.getCouponNumber()));
@@ -3141,22 +3353,22 @@
                     orderMoneyValue[i] = BigDecimal.ZERO;
                 }
             }*/
-            List<MgtMapTotalPlusVo> mgtMapTotalPlusVoList =  orderMapper.listMerOrderDistributionTotal(merTotalDto);
-            if(mgtMapTotalPlusVoList!=null&&!mgtMapTotalPlusVoList.isEmpty()) {
-                String[] orderTotalKey = new String[mgtMapTotalPlusVoList.size()];
-                Integer[] orderTotalValue = new Integer[mgtMapTotalPlusVoList.size()];
-                BigDecimal[] orderMoneyValue = new BigDecimal[mgtMapTotalPlusVoList.size()];
-                MgtMapTotalPlusVo mgtMapTotalPlusVo;
-                for (int i = 0; i < mgtMapTotalPlusVoList.size(); i++) {
-                    mgtMapTotalPlusVo = mgtMapTotalPlusVoList.get(i);
-                    orderTotalKey[i] = mgtMapTotalPlusVo.getMapKey();
-                    orderTotalValue[i] = mgtMapTotalPlusVo.getMapValueFirst();
-                    orderMoneyValue[i] = mgtMapTotalPlusVo.getMapValueSecond();
-                }
-                orderDistributionTotalVo.setOrderTotalKey(orderTotalKey);
-                orderDistributionTotalVo.setOrderTotalValue(orderTotalValue);
-                orderDistributionTotalVo.setOrderMoneyValue(orderMoneyValue);
+        List<MgtMapTotalPlusVo> mgtMapTotalPlusVoList = orderMapper.listMerOrderDistributionTotal(merTotalDto);
+        if (mgtMapTotalPlusVoList != null && !mgtMapTotalPlusVoList.isEmpty()) {
+            String[] orderTotalKey = new String[mgtMapTotalPlusVoList.size()];
+            Integer[] orderTotalValue = new Integer[mgtMapTotalPlusVoList.size()];
+            BigDecimal[] orderMoneyValue = new BigDecimal[mgtMapTotalPlusVoList.size()];
+            MgtMapTotalPlusVo mgtMapTotalPlusVo;
+            for (int i = 0; i < mgtMapTotalPlusVoList.size(); i++) {
+                mgtMapTotalPlusVo = mgtMapTotalPlusVoList.get(i);
+                orderTotalKey[i] = mgtMapTotalPlusVo.getMapKey();
+                orderTotalValue[i] = mgtMapTotalPlusVo.getMapValueFirst();
+                orderMoneyValue[i] = mgtMapTotalPlusVo.getMapValueSecond();
             }
+            orderDistributionTotalVo.setOrderTotalKey(orderTotalKey);
+            orderDistributionTotalVo.setOrderTotalValue(orderTotalValue);
+            orderDistributionTotalVo.setOrderMoneyValue(orderMoneyValue);
+        }
         // 返回订单分布总数对象
         return orderDistributionTotalVo;
     }
@@ -3261,15 +3473,27 @@
     }
 
     /**
-     * @description  商户端订单管理统计
-     * @author  jqs
-     * @date    2023/7/31 10:53
      * @param merOrderPageDto
-     * @return  MerTotalOrderVo
+     * @return MerTotalOrderVo
+     * @description 商户端订单管理统计
+     * @author jqs
+     * @date 2023/7/31 10:53
      */
     @Override
     public MerTotalOrderVo totalMerOrder(MerOrderPageDto merOrderPageDto) {
         MerTotalOrderVo merTotalOrderVo = new MerTotalOrderVo();
+        if (StringUtils.isNotBlank(merOrderPageDto.getKeyword())) {
+            MgtUserIdByKeywordDto userIdByKeywordDto = new MgtUserIdByKeywordDto();
+            userIdByKeywordDto.setKeyword(merOrderPageDto.getKeyword());
+            MgtUserIdByKeywordVo userIdByKeywordVo = remoteMemberService.getUserIdByKeyword(userIdByKeywordDto).getData();
+            if (StringUtils.isNotBlank(userIdByKeywordVo.getUserIds())) {
+                List<Long> userIdList = Arrays.stream(userIdByKeywordVo.getUserIds().split(","))
+                        .map(Long::parseLong)
+                        .collect(Collectors.toList());
+                merOrderPageDto.setMemberUserIdList(userIdList);
+                merOrderPageDto.setMemberUserId(null);
+            }
+        }
         merTotalOrderVo = orderMapper.totalMerOrder(merOrderPageDto);
         return merTotalOrderVo;
     }
@@ -3333,33 +3557,33 @@
     }
 
     /**
-     * @description 自动取消订单
-     * @author  jqs
-     * @date    2023/7/13 17:15
      * @param orderId
-     * @return  void
+     * @return void
+     * @description 自动取消订单
+     * @author jqs
+     * @date 2023/7/13 17:15
      */
     @Override
     @Transactional
-    public void autoCancelOrder(String orderId){
+    public void autoCancelOrder(String orderId) {
         //更新订单信息
         Order order = this.getById(orderId);
         order.setOrderStatus(0);
         order.setCancelTime(new Date());
         this.saveOrUpdate(order);
         //活动订单回退库存
-        if(order.getOrderFrom()==2){
+        if (order.getOrderFrom() == 2) {
             List<OrderGoods> orderGoodsList = orderGoodsService.listByOrderId(orderId);
-            if(orderGoodsList!=null&&!orderGoodsList.isEmpty()){
-                for(OrderGoods orderGoods : orderGoodsList){
+            if (orderGoodsList != null && !orderGoodsList.isEmpty()) {
+                for (OrderGoods orderGoods : orderGoodsList) {
                     //redis库存控制极简版
-                    String goodsLock = "goods_lock_"+order.getActivityId()+"_"+orderGoods.getGoodsId();
+                    String goodsLock = "goods_lock_" + order.getActivityId() + "_" + orderGoods.getGoodsId();
                     RLock redissonLock = redissonClient.getLock(goodsLock);
-                    try{
+                    try {
                         redissonLock.lock(30, TimeUnit.SECONDS);
-                        Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS+"-"+order.getActivityId()+"-"+orderGoods.getGoodsId());
-                        redisService.setCacheObject(SecurityConstant.ACTIVITY_GOODS+"-"+order.getActivityId()+"-"+orderGoods.getGoodsId(),surpNum+orderGoods.getBuyNum());
-                    }finally{
+                        Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + order.getActivityId() + "-" + orderGoods.getGoodsId());
+                        redisService.setCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + order.getActivityId() + "-" + orderGoods.getGoodsId(), surpNum + orderGoods.getBuyNum());
+                    } finally {
                         redissonLock.unlock();
                     }
                     //改变活动库存
@@ -3380,16 +3604,16 @@
                     remoteActivityService.delActivityRecord(activityRecord);
                 }
             }
-        }else{
-            if(order.getCouponMoney().compareTo(BigDecimal.ZERO)>0){
+        } else {
+            if (order.getCouponMoney().compareTo(BigDecimal.ZERO) > 0) {
                 //回退优惠券
                 List<OrderGoods> orderGoodsList = orderGoodsService.listByOrderId(orderId);
-                if(orderGoodsList!=null&&!orderGoodsList.isEmpty()) {
+                if (orderGoodsList != null && !orderGoodsList.isEmpty()) {
                     StringJoiner memberCouponSJ = new StringJoiner(",");
                     for (OrderGoods orderGoods : orderGoodsList) {
                         memberCouponSJ.add(orderGoods.getCouponId());
                     }
-                    if(memberCouponSJ!=null){
+                    if (memberCouponSJ != null) {
                         remoteCouponService.backMemberCoupon(memberCouponSJ.toString());
 
                     }
@@ -3399,17 +3623,17 @@
     }
 
     /**
-     * @description  订单支付回调
-     * @author  jqs
-     * @date    2023/7/13 17:57
      * @param transaction
-     * @return  void
+     * @return void
+     * @description 订单支付回调
+     * @author jqs
+     * @date 2023/7/13 17:57
      */
     @Override
     @Transactional
-    public void payBack(Transaction transaction) {
+    public void payBack(PartnerTransactionsResult transaction) {
         // 更新订单状态
-        String orderId=transaction.getOutTradeNo();
+        String orderId = transaction.getOutTradeNo();
         Order order = this.getById(orderId);
         order.setOrderStatus(2);
         order.setPayTime(new Date());
@@ -3455,8 +3679,8 @@
             goodsTotalChangeDto.setChangeType(1);
             goodsTotalChangeDto.setChangeNum(orderGoods.getBuyNum());
             goodsTotalChangeDto.setMoney(orderGoods.getGoodsReceivableMoney());
-            Integer bugGoodsNum = orderMapper.countUserBuyGoodsNum(order.getUserId(),orderGoods.getGoodsId());
-            if(bugGoodsNum==null||bugGoodsNum<1){
+            Integer bugGoodsNum = orderMapper.countUserBuyGoodsNum(order.getUserId(), orderGoods.getGoodsId());
+            if (bugGoodsNum == null || bugGoodsNum < 1) {
                 goodsTotalChangeDto.setPersonNum(1);
             }
             goodsTotalChangeDtoList.add(goodsTotalChangeDto);
@@ -3499,6 +3723,9 @@
         if (haveGoods) {
             memberTotalChangeDto.setGoodsOrderChange(1);
         }
+        if(order.getOrderFrom()==2){
+            memberTotalChangeDto.setActivityTime(order.getCreateTime());
+        }
         // 更新会员统计信息
         remoteMemberService.changeMemberTotal(memberTotalChangeDto);
         // 如果订单来源于活动,则更新活动统计信息
@@ -3537,16 +3764,16 @@
     }
 
     /**
-     * @description  订单退款
-     * @author  jqs
-     * @date    2023/7/13 18:36
      * @param orderId
-     * @return  void
+     * @return void
+     * @description 订单退款
+     * @author jqs
+     * @date 2023/7/13 18:36
      */
     @Override
     @Transactional
-    public void refundOrder(String orderId){
-        //更新订单信息
+    public void refundOrder(String orderId) {
+        // 更新订单信息
         Order order = this.getById(orderId);
         order.setOrderStatus(0);
         order.setCancelTime(new Date());
@@ -3559,7 +3786,7 @@
         orderRefund.setOrderId(order.getOrderId());
         orderRefund.setUserId(order.getUserId());
         orderRefund.setShopId(order.getShopId());
-        orderRefund.setRefundMoney(order.getPayMoney());
+        orderRefund.setRefundMoney(order.getOnlinePayMoney());
         orderRefund.setOrderMoney(order.getPayMoney());
         orderRefund.setCreateTime(new Date());
         // 初始化各类商品的收款金额
@@ -3573,19 +3800,19 @@
         Boolean haveExperience = false;
         Boolean haveGoods = false;
         List<OrderGoods> orderGoodsList = orderGoodsService.listByOrderId(orderId);
-        if(orderGoodsList!=null&&!orderGoodsList.isEmpty()){
+        if (orderGoodsList != null && !orderGoodsList.isEmpty()) {
             StringJoiner memberCouponSJ = new StringJoiner(",");
-            for(OrderGoods orderGoods : orderGoodsList){
-                if(order.getOrderFrom()==2){
+            for (OrderGoods orderGoods : orderGoodsList) {
+                if (order.getOrderFrom() == 2) {
                     //redis库存控制极简版
                     //活动订单回退库存
-                    String goodsLock = "goods_lock_"+order.getActivityId()+"_"+orderGoods.getGoodsId();
+                    String goodsLock = "goods_lock_" + order.getActivityId() + "_" + orderGoods.getGoodsId();
                     RLock redissonLock = redissonClient.getLock(goodsLock);
-                    try{
+                    try {
                         redissonLock.lock(30, TimeUnit.SECONDS);
-                        Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS+"-"+order.getActivityId()+"-"+orderGoods.getGoodsId());
-                        redisService.setCacheObject(SecurityConstant.ACTIVITY_GOODS+"-"+order.getActivityId()+"-"+orderGoods.getGoodsId(),surpNum+orderGoods.getBuyNum());
-                    }finally{
+                        Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + order.getActivityId() + "-" + orderGoods.getGoodsId());
+                        redisService.setCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + order.getActivityId() + "-" + orderGoods.getGoodsId(), surpNum + orderGoods.getBuyNum());
+                    } finally {
                         redissonLock.unlock();
                     }
                     //改变活动库存
@@ -3604,7 +3831,7 @@
                     activityRecord.setUserId(order.getUserId());
                     activityRecord.setOrderTime(order.getCreateTime());
                     remoteActivityService.delActivityRecord(activityRecord);
-                }else{
+                } else {
                     memberCouponSJ.add(orderGoods.getCouponId());
                 }
                 switch (orderGoods.getGoodsType()) {
@@ -3629,7 +3856,7 @@
                 }
             }
             //回退优惠券
-            if(memberCouponSJ!=null){
+            if (memberCouponSJ != null) {
                 remoteCouponService.backMemberCoupon(memberCouponSJ.toString());
             }
         }
@@ -3688,43 +3915,97 @@
             activityTotalChangeDto.setUserId(order.getUserId());
             remoteActivityService.changeActivityTotal(activityTotalChangeDto);
         }
+
+        // 用户取消订单退款
+        BigDecimal onlinePayMoney = order.getOnlinePayMoney();
+        if(BigDecimal.ZERO.compareTo(onlinePayMoney) < 0){
+            // 订单支付金额大于0,可发起退款
+            orderWxApplyRefund(orderId, refundId, onlinePayMoney, orderRefund);
+        }
+
+        orderRefund.setRefundStatus(1);
+        orderRefundService.saveOrUpdate(orderRefund);
     }
 
     /**
-     * @description  员工端活动订单统计
-     * @author  jqs
-     * @date    2023/7/17 15:25
+     * 申请退款API
+     */
+    private void orderWxApplyRefund(String orderId, String outRefundNo, BigDecimal payMoney, OrderRefund orderRefund){
+        try {
+            // 创建支付订单
+            OrderPayment orderPayment = orderPaymentService.getByOrderId(orderId);
+            if (null == orderPayment) {
+                return;
+            }
+            String subMchId = orderPayment.getSubMchId();
+            WxPayConfig config = wxService.getConfig();
+
+            RefundsRequest request = new RefundsRequest();
+            request.setSpAppid(config.getAppId());
+            request.setSubMchid(subMchId);
+            request.setTransactionId(orderPayment.getTransactionId());
+            request.setOutRefundNo(outRefundNo);
+            request.setReason("用户取消订单");
+            // 订单金额
+            int total = payMoney.multiply(new BigDecimal(100)).intValue();
+            RefundsRequest.Amount amount = RefundsRequest.Amount.builder().refund(total).total(total).currency("CNY").build();
+            request.setAmount(amount);
+            request.setNotifyUrl(config.getNotifyUrl());
+
+            RefundsResult result = wxService.getEcommerceService().refunds(request);
+
+            // 微信退款id
+            orderRefund.setWxRefundId(result.getRefundId());
+
+            // 请求参数
+            Gson gson = new Gson();
+            String refundRequestJson = gson.toJson(request);
+            // 返回参数
+            String refundResponseJson = gson.toJson(result);
+
+            // 保存支付订单统一下单日志
+            paymentMessageService.savePaymentMessage("3", orderId, refundRequestJson, refundResponseJson);
+
+        } catch (WxPayException e) {
+            throw new ServiceException(e.getMessage());
+        }
+    }
+
+    /**
      * @param staffTotalDto
-     * @return  StaffActivityOrderTotalVo
+     * @return StaffActivityOrderTotalVo
+     * @description 员工端活动订单统计
+     * @author jqs
+     * @date 2023/7/17 15:25
      */
     @Override
-    public StaffActivityOrderTotalVo getStaffActivityOrderTotal(StaffTotalDto staffTotalDto){
+    public StaffActivityOrderTotalVo getStaffActivityOrderTotal(StaffTotalDto staffTotalDto) {
         StaffActivityOrderTotalVo staffActivityOrderTotalVo = orderMapper.getStaffActivityOrderTotal(staffTotalDto);
         return staffActivityOrderTotalVo;
     }
 
     /**
-     * @description  员工端活动统计
-     * @author  jqs
-     * @date    2023/7/17 15:51
      * @param staffTotalDto
-     * @return  StaffActivityTotalVo
+     * @return StaffActivityTotalVo
+     * @description 员工端活动统计
+     * @author jqs
+     * @date 2023/7/17 15:51
      */
     @Override
-    public StaffActivityTotalVo getStaffActivityTotal(StaffTotalDto staffTotalDto){
+    public StaffActivityTotalVo getStaffActivityTotal(StaffTotalDto staffTotalDto) {
         StaffActivityTotalVo staffActivityTotalVo = orderMapper.getStaffActivityTotal(staffTotalDto);
         return staffActivityTotalVo;
     }
 
     /**
-     * @description  员工端活动统计订单分布
-     * @author  jqs
-     * @date    2023/7/17 16:16
      * @param staffTotalDto
-     * @return  MerOrderDistributionTotalVo
+     * @return MerOrderDistributionTotalVo
+     * @description 员工端活动统计订单分布
+     * @author jqs
+     * @date 2023/7/17 16:16
      */
     @Override
-    public MerOrderDistributionTotalVo getStaffOrderDistributionTotal(StaffTotalDto staffTotalDto){
+    public MerOrderDistributionTotalVo getStaffOrderDistributionTotal(StaffTotalDto staffTotalDto) {
         MerOrderDistributionTotalVo orderDistributionTotalVo = new MerOrderDistributionTotalVo();
         // 获取订单年龄用户列表
         MerTotalDto merTotalDto = new MerTotalDto();
@@ -3765,7 +4046,7 @@
                 }
                 // 如果用户ID列表不为空
                 if (userIdList != null && !userIdList.isEmpty()) {
-                    mgtMapTotalPlusVo = orderMapper.listStaffActivityOrderDistributionTotal(userIdList,staffTotalDto.getShopId(),staffTotalDto.getActivityId());
+                    mgtMapTotalPlusVo = orderMapper.listStaffActivityOrderDistributionTotal(userIdList, staffTotalDto.getShopId(), staffTotalDto.getActivityId());
                     orderTotalValue[i] = mgtMapTotalPlusVo.getMapValueFirst();
                     orderMoneyValue[i] = mgtMapTotalPlusVo.getMapValueSecond();
                 } else {
@@ -3784,14 +4065,14 @@
 
 
     /**
-     * @description  员工端活动统计销售占比
-     * @author  jqs
-     * @date    2023/7/17 17:03
      * @param staffTotalDto
-     * @return  MerOrderTypeTotalVo
+     * @return MerOrderTypeTotalVo
+     * @description 员工端活动统计销售占比
+     * @author jqs
+     * @date 2023/7/17 17:03
      */
     @Override
-    public MerOrderTypeTotalVo getStaffOrderTypeTotal(StaffTotalDto staffTotalDto){
+    public MerOrderTypeTotalVo getStaffOrderTypeTotal(StaffTotalDto staffTotalDto) {
         MerOrderTypeTotalVo orderTypeTotalVo = new MerOrderTypeTotalVo();
         //获取商品分类销售数据
         List<MgtMapTotalPlusVo> MgtMapIntTotalVoGoodsType = orderMapper.listStaffOrderTotalGoodsType(staffTotalDto);
@@ -3829,11 +4110,11 @@
     }
 
     /**
-     * @description  员工端获客人数
-     * @author  jqs
-     * @date    2023/7/17 18:42
      * @param staffTotalDto
-     * @return  StaffActivityDateMemberTotalVo
+     * @return StaffActivityDateMemberTotalVo
+     * @description 员工端获客人数
+     * @author jqs
+     * @date 2023/7/17 18:42
      */
     @Override
     public StaffActivityDateMemberTotalVo getStaffActivityGetMemberTotal(StaffTotalDto staffTotalDto) {
@@ -3870,11 +4151,11 @@
     }
 
     /**
-     * @description  员工端获客人数
-     * @author  jqs
-     * @date    2023/7/17 18:42
      * @param staffTotalDto
-     * @return  StaffActivityDateMemberTotalVo
+     * @return StaffActivityDateMemberTotalVo
+     * @description 员工端获客人数
+     * @author jqs
+     * @date 2023/7/17 18:42
      */
     @Override
     public StaffActivityDateMemberTotalVo getStaffActivityMemberTotal(StaffTotalDto staffTotalDto) {
@@ -3911,12 +4192,12 @@
     }
 
     /**
-     * @description  获取时间段日期
-     * @author  jqs
-     * @date    2023/7/17 19:11
      * @param startDate
      * @param endDate
-     * @return  List<String>
+     * @return List<String>
+     * @description 获取时间段日期
+     * @author jqs
+     * @date 2023/7/17 19:11
      */
     public static List<String> getDateRange(String startDate, String endDate) {
         List<String> dateList = new ArrayList<>();
@@ -3930,50 +4211,87 @@
     }
 
     /**
-     * @description  检查订单状态定时任务
-     * @author  jqs
-     * @date    2023/7/25 14:40
      * @param
-     * @return  void
+     * @return void
+     * @description 检查订单状态定时任务
+     * @author jqs
+     * @date 2023/7/25 14:40
      */
     @Override
-    public void checkOrderStatus(){
+    public void checkOrderStatus() {
         Integer delayTime = 30;
-        if(redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)){
+        if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) {
             delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME);
         }
         delayTime = delayTime + 5;
-        Date checkTime = DateUtils.addMinutes(new Date(),-delayTime);
+        Date checkTime = DateUtils.addMinutes(new Date(), -delayTime);
         LambdaQueryWrapper<Order> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(Order::getDelFlag,0);
-        queryWrapper.lt(Order::getCreateTime,checkTime);
-        queryWrapper.eq(Order::getOrderStatus,1);
+        queryWrapper.eq(Order::getDelFlag, 0);
+        queryWrapper.lt(Order::getCreateTime, checkTime);
+        queryWrapper.eq(Order::getOrderStatus, 1);
         List<Order> orderList = this.list(queryWrapper);
-        if(orderList!=null&&!orderList.isEmpty()){
-            for(Order order: orderList){
+        if (orderList != null && !orderList.isEmpty()) {
+            for (Order order : orderList) {
                 autoTimeCancelOrder(order);
             }
         }
     }
 
-    private void autoTimeCancelOrder(Order order){
+    @Override
+    public void profitSharingBack(ProfitSharingNotifyResult result) {
+
+        try {
+            String outOrderNo = result.getOutOrderNo();
+            ProfitSharing profitSharing = profitSharingService.getById(outOrderNo);
+            if(null != profitSharing){
+                profitSharing.setWxOrderId(result.getOrderId());
+                profitSharing.setFinishTime(result.getSuccessTime());
+                profitSharing.setFinishFlag(1);
+
+                profitSharingService.saveOrUpdate(profitSharing);
+            }
+        } catch (Exception e){
+
+            log.error("==分账回成功回调操作====【{}】========={}", result.getOutOrderNo(), e.getMessage());
+        }
+    }
+
+    @Override
+    public void orderRefundBack(RefundNotifyResult result) {
+        try {
+            String outRefundNo = result.getOutRefundNo();
+            String refundStatus = result.getRefundStatus();
+            OrderRefund orderRefund = orderRefundService.getById(outRefundNo);
+            if(null != orderRefund){
+                orderRefund.setWxRefundId(result.getRefundId());
+                orderRefund.setBackTime(result.getSuccessTime());
+                orderRefund.setRefundStatus(IDict.getCodeByText(RefundStatusEnum.class, refundStatus));
+                orderRefundService.saveOrUpdate(orderRefund);
+            }
+        } catch (Exception e){
+
+            log.error("==退款回成功回调操作====【{}】========={}", result.getOutRefundNo(), e.getMessage());
+        }
+    }
+
+    private void autoTimeCancelOrder(Order order) {
         String orderId = order.getOrderId();
         order.setOrderStatus(0);
         order.setCancelTime(new Date());
         this.saveOrUpdate(order);
         //活动订单回退库存
-        if(order.getOrderFrom()==2){
+        if (order.getOrderFrom() == 2) {
             List<OrderGoods> orderGoodsList = orderGoodsService.listByOrderId(orderId);
-            if(orderGoodsList!=null&&!orderGoodsList.isEmpty()){
-                for(OrderGoods orderGoods : orderGoodsList){
+            if (orderGoodsList != null && !orderGoodsList.isEmpty()) {
+                for (OrderGoods orderGoods : orderGoodsList) {
                     //redis库存控制极简版
-                    String goodsLock = "goods_lock_"+order.getActivityId()+"_"+orderGoods.getGoodsId();
+                    String goodsLock = "goods_lock_" + order.getActivityId() + "_" + orderGoods.getGoodsId();
                     RLock redissonLock = redissonClient.getLock(goodsLock);
-                    try{
+                    try {
                         redissonLock.lock(30, TimeUnit.SECONDS);
-                        Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS+"-"+order.getActivityId()+"-"+orderGoods.getGoodsId());
-                        redisService.setCacheObject(SecurityConstant.ACTIVITY_GOODS+"-"+order.getActivityId()+"-"+orderGoods.getGoodsId(),surpNum+orderGoods.getBuyNum());
-                    }finally{
+                        Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + order.getActivityId() + "-" + orderGoods.getGoodsId());
+                        redisService.setCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + order.getActivityId() + "-" + orderGoods.getGoodsId(), surpNum + orderGoods.getBuyNum());
+                    } finally {
                         redissonLock.unlock();
                     }
                     //改变活动库存
@@ -3994,16 +4312,16 @@
                     remoteActivityService.delActivityRecord(activityRecord);
                 }
             }
-        }else{
-            if(order.getCouponMoney().compareTo(BigDecimal.ZERO)>0){
+        } else {
+            if (order.getCouponMoney().compareTo(BigDecimal.ZERO) > 0) {
                 //回退优惠券
                 List<OrderGoods> orderGoodsList = orderGoodsService.listByOrderId(orderId);
-                if(orderGoodsList!=null&&!orderGoodsList.isEmpty()) {
+                if (orderGoodsList != null && !orderGoodsList.isEmpty()) {
                     StringJoiner memberCouponSJ = new StringJoiner(",");
                     for (OrderGoods orderGoods : orderGoodsList) {
                         memberCouponSJ.add(orderGoods.getCouponId());
                     }
-                    if(memberCouponSJ!=null){
+                    if (memberCouponSJ != null) {
                         remoteCouponService.backMemberCoupon(memberCouponSJ.toString());
 
                     }
@@ -4011,4 +4329,69 @@
             }
         }
     }
+
+    /**
+     * @description  获取商户订单统计
+     * @author  jqs
+     * @date    2023/8/4 10:25
+     * @param mgtShopAllOrderPageDto
+     * @return  MgtShopAllOrderTotal
+     */
+    @Override
+    public MgtShopAllOrderTotal getMgtShopAllOrderTotal(MgtShopAllOrderPageDto mgtShopAllOrderPageDto){
+        MgtShopAllOrderTotal shopAllOrderTotal = orderMapper.getMgtShopAllOrderTotal(mgtShopAllOrderPageDto);
+        return shopAllOrderTotal;
+    }
+
+    /**
+     * 分页获取会员消费记录
+     * @param merOrderPageDto
+     * @return
+     */
+    @Override
+    public List<MerOrderPageVo> pageMerMemberPayOrder(Page page,MerMemberNoClearOrderDto merOrderPageDto){
+        List<MerOrderPageVo> merOrderPageVoList = orderMapper.pageMerMemberPayOrder(page, merOrderPageDto);
+        if (merOrderPageVoList != null && !merOrderPageVoList.isEmpty()) {
+            Long userId;
+            Member member;
+            Integer orderFrom;
+            String orderFromDesc;
+            BigDecimal zeroBig = new BigDecimal("0.00");
+            StringJoiner userIdSj = new StringJoiner(",");
+            for (MerOrderPageVo merOrderPageVo : merOrderPageVoList) {
+                userId = merOrderPageVo.getUserId();
+                userIdSj.add(userId.toString());
+                orderFrom = merOrderPageVo.getOrderFrom();
+                if (orderFrom != null) {
+                    if (orderFrom == 1) {
+                        orderFromDesc = "商城订单";
+                    } else {
+                        orderFromDesc = "线下创建";
+                    }
+                } else {
+                    orderFromDesc = "商城订单";
+                }
+                merOrderPageVo.setOrderFromDesc(orderFromDesc);
+                merOrderPageVo.setUnPaidMoney(merOrderPageVo.getPayMoney().subtract(merOrderPageVo.getReceiveMoney()));
+                if (merOrderPageVo.getUnPaidMoney() == null) {
+                    merOrderPageVo.setUnPaidMoney(zeroBig);
+                }
+            }
+            MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto();
+            mgtBaseBathDto.setIds(userIdSj.toString());
+            List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(mgtBaseBathDto).getData();
+            Map<Long, MgtSimpleMemberVo> userMap = simpleMemberVoList.stream()
+                    .collect(Collectors.toMap(MgtSimpleMemberVo::getUserId, Function.identity()));
+            for (MerOrderPageVo merOrderPageVo : merOrderPageVoList) {
+                if(merOrderPageVo.getUserId()!=null&&userMap.get(merOrderPageVo.getUserId())!=null){
+                    merOrderPageVo.setUserName(userMap.get(merOrderPageVo.getUserId()).getRealName());
+                    merOrderPageVo.setNickName(userMap.get(merOrderPageVo.getUserId()).getNickName());
+                    merOrderPageVo.setUserMobile(userMap.get(merOrderPageVo.getUserId()).getUserMobile());
+                }else{
+                    log.debug("订单merOrderPageVo"+merOrderPageVo.getOrderId()+"缺少用户");
+                }
+            }
+        }
+        return merOrderPageVoList;
+    }
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java
index 43878d1..36c35cc 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java
@@ -2,6 +2,9 @@
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.binarywang.wxpay.bean.ecommerce.PartnerTransactionsResult;
+import com.github.binarywang.wxpay.bean.ecommerce.RefundNotifyResult;
+import com.github.binarywang.wxpay.bean.profitsharingV3.ProfitSharingNotifyResult;
 import com.ruoyi.order.domain.dto.*;
 import com.ruoyi.order.domain.pojo.order.Order;
 import com.ruoyi.order.domain.vo.*;
@@ -416,7 +419,7 @@
      * @param Transaction transaction
      * @return  void
      */
-    void payBack(Transaction transaction);
+    void payBack(PartnerTransactionsResult transaction);
 
     /**
      * 取消订单
@@ -489,4 +492,33 @@
      * @return  void
      */
     void checkOrderStatus();
+
+    /**
+     * 分账通知回调
+     * @param result
+     */
+    void profitSharingBack(ProfitSharingNotifyResult result);
+
+    /**
+     * 订单退款回调
+     * @param result
+     */
+    void orderRefundBack(RefundNotifyResult result);
+
+    /**
+     * @description  获取商户订单统计
+     * @author  jqs
+     * @date    2023/8/4 10:25
+     * @param mgtShopAllOrderPageDto
+     * @return  MgtShopAllOrderTotal
+     */
+    MgtShopAllOrderTotal getMgtShopAllOrderTotal(MgtShopAllOrderPageDto mgtShopAllOrderPageDto);
+
+
+    /**
+     * 分页获取会员消费记录
+     * @param merOrderPageDto
+     * @return
+     */
+    List<MerOrderPageVo> pageMerMemberPayOrder(Page page,MerMemberNoClearOrderDto merOrderPageDto);
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-order/src/main/resources/bootstrap.yml
index 79ddc73..c217d22 100644
--- a/ruoyi-modules/ruoyi-order/src/main/resources/bootstrap.yml
+++ b/ruoyi-modules/ruoyi-order/src/main/resources/bootstrap.yml
@@ -3,7 +3,7 @@
   port: 10064
 
 # Spring
-spring: 
+spring:
   application:
     # 应用名称
     name: ruoyi-order
@@ -25,3 +25,13 @@
         # 共享配置
         shared-configs:
           - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
+
+wx:
+  pay:
+    appId: #微信公众号或者小程序等的appid(平台)
+    mchId: #微信支付商户号(平台)
+    mchKey: #微信支付商户密钥(平台)
+    platformTyMacId: # 平台特约商户号,用户平台收取服务费
+    subAppId: #服务商模式下的子商户公众账号ID (这个可以不用配置)
+    subMchId: #服务商模式下的子商户号 (二级商户号  也不用配置)
+    keyPath: # (商户平台 下载的V3证书)p12证书的位置,可以指定绝对路径,也可以指定类路径(以classpath:开头)
diff --git a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/ConsumerGoodsMapper.xml b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/ConsumerGoodsMapper.xml
index dacb5b1..58f8eff 100644
--- a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/ConsumerGoodsMapper.xml
+++ b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/ConsumerGoodsMapper.xml
@@ -124,6 +124,8 @@
         tcg.shop_id shopId,
         tcg.goods_type goodsType,
         tcg.goods_name goodsName,
+        tcg.goods_introduction goodsIntroduction,
+        tcg.goods_tag goodsTag,
         tcg.goods_picture goodsPicture,
         tcg.goods_nurses goodsNurses,
         tcg.cycle_num_flag cycleNumFlag,
diff --git a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderGoodsMapper.xml b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderGoodsMapper.xml
index d8c6f68..275d6e8 100644
--- a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderGoodsMapper.xml
+++ b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderGoodsMapper.xml
@@ -109,6 +109,7 @@
         tog.goods_id goodsId,
         tog.goods_name goodsName,
         tog.goods_type goodsType,
+        tog.goods_tag goodsTag,
         tog.buy_num buyNum,
         tog.goods_price goodsPrice,
         tog.goods_picture goodsPicture,
diff --git a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
index e77189a..ac82736 100644
--- a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
+++ b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
@@ -82,7 +82,9 @@
         <result column="discountMoney" property="discountMoney"/>
         <result column="receivableMoney" property="receivableMoney"/>
         <result column="payMoney" property="payMoney"/>
+        <result column="receiveMoney" property="receiveMoney"/>
         <result column="orderFrom" property="orderFrom" />
+        <result column="orderFromDesc" property="orderFromDesc" />
         <result column="createTime" property="createTime" />
         <collection property="mgtOrderGoodsVoList" ofType="com.ruoyi.order.domain.vo.MgtOrderGoodsPageVo">
             <result column="goodsName" property="goodsName"/>
@@ -294,10 +296,12 @@
         toc.coupon_money couponDiscount,
         toc.receivable_money receivableMoney,
         toc.receivable_deposit receivableDeposit,
-        toc.pay_money payMoney,
+        toc.change_receivable_money receiveMoney,
+        IFNULL(toc.offline_pay_money,0) payMoney,
+        toc.change_receivable_money-IFNULL(toc.offline_pay_money,0) unPaidMoney,
         toc.create_time createTime
         FROM t_order toc
-        WHERE toc.del_flag = 0 AND toc.user_id = #{userId} AND toc.order_status = 2 AND toc.close_flag = 0
+        WHERE toc.del_flag = 0 AND toc.user_id = #{userId} AND toc.order_status &gt;= 2 AND toc.close_flag = 0
         ORDER BY toc.create_time DESC
     </select>
 
@@ -319,7 +323,8 @@
         tog.goods_type goodsType,
         tog.buy_num buyNum,
         toc.create_time createTime,
-        toc.order_from orderFrom
+        toc.order_from orderFrom,
+        toc.activity_name activityName
         FROM t_order toc
         INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id
         WHERE toc.del_flag = 0 AND toc.shop_id = #{param.shopId}
@@ -363,10 +368,16 @@
         toc.order_status orderStatus,
         toc.order_money orderGoodsMoney,
         toc.coupon_money couponDiscount,
-        toc.receivable_money receivableMoney,
+        toc.receivable_money-toc.online_pay_money receivableMoney,
         toc.receivable_deposit receivableDeposit,
-        toc.pay_money payMoney
-        FROM t_order toc
+        toc.change_receivable_money payMoney,
+        IFNULL(toc.offline_pay_money,0) receiveMoney,
+        IFNULL(toc.receivable_money-IFNULL(CASE toc.pay_type WHEN 1 THEN toc.online_pay_money WHEN 2 THEN IFNULL(toc.offline_pay_money,0) END,0),0) unpaidMoney,
+        tpr.pay_time receiveMoneyTime,
+        tpr.pay_money thisReceiveMoney,
+        CASE tpr.pay_type WHEN 1 THEN "微信" WHEN 2 THEN "现金" WHEN 3 THEN "支付宝" END thisReceiveType
+        FROM t_pay_record tpr
+        INNER JOIN t_order toc ON tpr.order_id = toc.order_id
         WHERE toc.del_flag = 0 AND toc.user_id = #{userId} AND (toc.order_status = 2 OR toc.order_status = 3)
         ORDER BY toc.create_time DESC
     </select>
@@ -377,9 +388,10 @@
         IFNULL(SUM(IFNULL(toc.order_money,0)),0) totalOrderMoney,
         IFNULL(SUM(IFNULL(toc.receivable_money,0)),0) totalReceivableMoney,
         IFNULL(SUM(IFNULL(toc.discount_money,0)),0) totalDiscountMoney,
-        IFNULL(SUM(IFNULL(toc.pay_money,0)),0) totalPayMoney
+        IFNULL(SUM(IFNULL(toc.pay_money,0)),0) totalPayMoney,
+        IFNULL(SUM(IFNULL(toc.change_receivable_money,0)),0) totalReceiveMoney
         FROM t_order toc
-        WHERE toc.del_flag = 0 AND toc.user_id = #{param.userId}
+        WHERE toc.del_flag = 0 AND toc.user_id = #{param.memberUserId}
         <if test="param.orderStatus != null">
             AND toc.order_status = #{param.orderStatus}
         </if>
@@ -410,6 +422,7 @@
         toc.discount_money discountMoney,
         toc.receivable_money receivableMoney,
         toc.pay_money payMoney,
+        toc.change_receivable_money receiveMoney,
         tog.goods_name goodsName,
         tog.buy_num buyNum,
         toc.create_time createTime,
@@ -438,7 +451,7 @@
             AND Date(toc.create_time) &lt;= #{param.endOrderDate}
         </if>
         <if test="param.keyword != null and param.keyword != ''">
-            AND toc.order_no LIKE CONCAT('%',#{param.keyword},'%')
+            AND (toc.order_no LIKE CONCAT('%',#{param.keyword},'%') OR tog.goods_name LIKE CONCAT('%',#{param.keyword},'%'))
         </if>
         ORDER BY toc.create_time DESC
     </select>
@@ -487,9 +500,35 @@
 
     <select id="totalOrderFirst" resultType="com.ruoyi.order.domain.vo.MgtOrderTotal">
         SELECT
-            COUNT(order_id) orderTotal,
-            IFNULL(SUM(order_money),0) orderMoneyTotal
-        FROM t_order ORDER BY create_time DESC
+        COUNT(temp.order_id) orderTotal,
+        IFNULL(SUM(temp.order_money),0) orderMoneyTotal
+        FROM
+        (SELECT toc.order_id,toc.order_money,toc.pay_money
+        FROM t_order toc
+        INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id
+        WHERE toc.del_flag = 0 AND (toc.order_from = 1 OR toc.order_from = 3)
+        <if test="param.orderStatus != null">
+            AND toc.order_status = #{param.orderStatus}
+        </if>
+        <if test="param.goodsType != null and param.goodsType !=''">
+            AND tog.goods_type = #{param.goodsType}
+        </if>
+        <if test="param.shopId != null and param.shopId != ''">
+            AND toc.shop_id = #{param.shopId}
+        </if>
+        <if test="param.shopIds != null and param.shopIds != ''">
+            AND FIND_IN_SET(toc.shop_id, #{param.shopIds}) &gt; 0
+        </if>
+        <if test="param.keyword != null and param.keyword != ''">
+            AND (toc.order_no LIKE CONCAT('%',#{param.keyword},'%') OR toc.activity_name LIKE CONCAT('%',#{param.keyword},'%') OR FIND_IN_SET(toc.user_id, #{param.userIds}) &gt; 0)
+        </if>
+        <if test="param.verifyStartTime != null and param.verifyStartTime != ''">
+            AND Date(toc.use_time) &gt;= #{param.verifyStartTime}
+        </if>
+        <if test="param.verifyEndTime != null and param.verifyEndTime != ''">
+            AND Date(toc.use_time) &lt;= #{param.verifyEndTime}
+        </if>
+        GROUP BY toc.order_id) AS temp
     </select>
 
     <select id="totalOrderSecond" resultType="com.ruoyi.order.domain.vo.MgtOrderTotal">
@@ -647,6 +686,13 @@
             IFNULL(SUM(CASE WHEN order_from = 2 THEN 1 ELSE 0 END),0) activityOrderTotal
         FROM t_order
         WHERE del_flag = 0
+    </select>
+
+    <select id="activityUserTotal" resultType="java.lang.Integer">
+        SELECT
+            COUNT(DISTINCT user_id)
+        FROM t_order
+        WHERE del_flag = 0 AND order_from = 2
     </select>
 
     <select id="getTotalOrderTotalOrderFrom" resultType="com.ruoyi.order.domain.vo.MgtTotalOrderTotalVo">
@@ -1344,7 +1390,7 @@
         SELECT
             DATE(toc.create_time) AS mapKey,
             COUNT(DISTINCT tog.order_id) AS mapValueFirst,
-            SUM(tog.order_money) AS mapValueSecond
+            SUM(tog.goods_receivable_money) AS mapValueSecond
         FROM t_order toc
         INNER JOIN t_order_goods tog ON toc.order_id = tog.order_id
         WHERE toc.del_flag = 0 AND tog.del_flag = 0 AND tog.goods_type = #{param.goodsType}
@@ -1454,28 +1500,28 @@
         FROM t_order
         WHERE del_flag = 0 AND shop_id = #{param.shopId}
         <if test="param.memberUserId != null and param.memberUserId != ''">
-            AND toc.user_id = #{param.memberUserId}
+            AND user_id = #{param.memberUserId}
         </if>
         <if test="param.type != null and param.type ==1 ">
-            AND (toc.order_status = 2 OR toc.order_status = 3)
+            AND (order_status = 2 OR order_status = 3)
         </if>
         <if test="param.type != null and param.type ==2 ">
-            AND toc.order_status = 2
+            AND order_status = 2
         </if>
         <if test="param.type != null and param.type ==3 ">
-            AND toc.order_status = 3
+            AND order_status = 3
         </if>
         <if test="param.orderFrom != null and param.orderFrom != '' ">
-            AND toc.order_from = #{param.orderFrom}
+            AND order_from = #{param.orderFrom}
         </if>
         <if test="param.startOrderDate != null and param.startOrderDate != '' ">
-            AND Date(toc.create_time) &gt;= #{param.startOrderDate}
+            AND Date(create_time) &gt;= #{param.startOrderDate}
         </if>
         <if test="param.endOrderDate != null and param.endOrderDate != '' ">
-            AND Date(toc.create_time) &lt;= #{param.endOrderDate}
+            AND Date(create_time) &lt;= #{param.endOrderDate}
         </if>
         <if test="param.keyword != null and param.keyword != ''">
-            AND (toc.order_no LIKE CONCAT('%',#{param.keyword},'%') OR tog.goods_name LIKE CONCAT('%',#{param.keyword},'%'))
+            AND order_no LIKE CONCAT('%',#{param.keyword},'%')
         </if>
     </select>
 
@@ -1632,4 +1678,57 @@
         INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id
         WHERE toc.del_flag = 0 AND toc.order_status &gt; 1 AND toc.user_id = #{userId} AND tog.goods_id = #{goodsId}
     </select>
+
+    <select id="getMgtShopAllOrderTotal" resultType="com.ruoyi.order.domain.vo.MgtShopAllOrderTotal">
+        SELECT
+        COUNT(DISTINCT toc.order_id) orderTotal,
+        IFNULL(SUM(toc.order_money),0) totalOrderMoney,
+        IFNULL(SUM(toc.change_receivable_money),0) totalReceiveMoney
+        FROM t_order toc
+        WHERE toc.del_flag = 0 AND (toc.order_from = 1 OR toc.order_from = 3)
+        <if test="param.orderFrom != null">
+            AND toc.order_from = #{param.orderFrom}
+        </if>
+        <if test="param.orderStatus != null">
+            AND toc.order_status = #{param.orderStatus}
+        </if>
+        <if test="param.orderNo != null and param.orderNo !=''">
+            AND toc.order_no LIKE CONCAT('%',#{param.orderNo},'%')
+        </if>
+        <if test="param.shopId != null and param.shopId != ''">
+            AND toc.shop_id = #{param.shopId}
+        </if>
+        <if test="param.startOrderDate != null and param.startOrderDate != '' ">
+            AND Date(toc.create_time) &gt;= #{param.startOrderDate}
+        </if>
+        <if test="param.endOrderDate != null and param.endOrderDate != '' ">
+            AND Date(toc.create_time) &lt;= #{param.endOrderDate}
+        </if>
+        ORDER BY toc.create_time DESC
+    </select>
+
+    <select id="pageMerMemberPayOrder" resultMap="merOrderResultMap">
+        SELECT
+        toc.user_id userId,
+        toc.order_id orderId,
+        toc.order_no orderNo,
+        toc.pay_type payType,
+        toc.order_status orderStatus,
+        toc.order_money orderGoodsMoney,
+        toc.coupon_money couponDiscount,
+        toc.receivable_money-toc.online_pay_money receivableMoney,
+        toc.receivable_deposit receivableDeposit,
+        toc.change_receivable_money payMoney,
+        IFNULL(toc.offline_pay_money,0) receiveMoney,
+        toc.order_remark orderRemark,
+        tog.goods_name goodsName,
+        tog.goods_type goodsType,
+        tog.buy_num buyNum,
+        toc.create_time createTime,
+        toc.order_from orderFrom
+        FROM t_order toc
+        INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id
+        WHERE toc.del_flag = 0 AND (toc.order_status = 2 OR toc.order_status = 3) AND toc.shop_id = #{param.shopId} AND toc.user_id = #{param.memberUserId}
+        ORDER BY toc.create_time DESC
+    </select>
 </mapper>
diff --git a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/UserServiceRecordMapper.xml b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/UserServiceRecordMapper.xml
index 94f3a8f..aff9ab1 100644
--- a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/UserServiceRecordMapper.xml
+++ b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/UserServiceRecordMapper.xml
@@ -123,7 +123,7 @@
 
     <select id="getMgtMemberServiceTotal" resultType="com.ruoyi.order.domain.vo.MgtMemberServiceTotalVo">
         SELECT
-        COUNT(temp.consumerGoodsId),
+        COUNT(temp.consumerGoodsId) cycleTotal,
         IFNULL(SUM(temp.cycleCount),0) cycleCount,
         IFNULL(SUM(temp.surpCycleCount),0) surpCycleCount
         FROM (SELECT
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/config/WxPayConfiguration.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/config/WxPayConfiguration.java
index 451ba86..63df88a 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/config/WxPayConfiguration.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/config/WxPayConfiguration.java
@@ -1,15 +1,9 @@
 package com.ruoyi.shop.config;
 
-import com.github.binarywang.wxpay.config.WxPayConfig;
 import com.github.binarywang.wxpay.service.WxPayService;
-import com.github.binarywang.wxpay.service.impl.WxPayServiceImpl;
 import lombok.AllArgsConstructor;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
 import org.springframework.boot.context.properties.EnableConfigurationProperties;
-import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
 /**
@@ -22,7 +16,7 @@
 public class WxPayConfiguration {
   private WxPayProperties properties;
 
-  @Bean
+  /*@Bean
   @ConditionalOnMissingBean
   public WxPayService wxService() {
     WxPayConfig payConfig = new WxPayConfig();
@@ -39,6 +33,6 @@
     WxPayService wxPayService = new WxPayServiceImpl();
     wxPayService.setConfig(payConfig);
     return wxPayService;
-  }
+  }*/
 
 }
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/console/ShopController.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/console/ShopController.java
index cd42728..4b5e9e0 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/console/ShopController.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/console/ShopController.java
@@ -2,6 +2,9 @@
 
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.exception.ServiceException;
+import com.ruoyi.common.core.utils.bean.BeanUtils;
+import com.ruoyi.shop.domain.pojo.shop.ShopAuthentication;
+import com.ruoyi.shop.domain.pojo.shop.ShopProportion;
 import com.ruoyi.shop.domain.pojo.shop.ShopRelUser;
 import com.ruoyi.shop.domain.pojo.shop.ShopStaff;
 import com.ruoyi.shop.service.shop.*;
@@ -10,6 +13,7 @@
 import com.ruoyi.system.api.constant.AppErrorConstant;
 import com.ruoyi.system.api.domain.dto.*;
 import com.ruoyi.system.api.domain.poji.shop.Shop;
+import com.ruoyi.system.api.domain.poji.shop.ShopProportionVo;
 import com.ruoyi.system.api.domain.poji.sys.SysUser;
 import com.ruoyi.system.api.domain.vo.*;
 import com.ruoyi.system.api.model.QwH5LoginVo;
@@ -59,6 +63,12 @@
     @Resource
     private MemberTaskService memberTaskService;
 
+    @Resource
+    private ShopAuthenticationService shopAuthenticationService;
+
+    @Resource
+    private ShopProportionService shopProportionService;
+
     /**
      * 企业微信H5登录
      * @param qwUserDetail
@@ -90,6 +100,30 @@
         return R.ok(shop);
     }
 
+    @PostMapping("/getShopSubMchId")
+    public R<String> getShopSubMchId(@RequestBody Long shopId){
+        String subMchid = "";
+        ShopAuthentication authentication = shopAuthenticationService.getByShopId(shopId);
+        if(null != authentication){
+            subMchid = authentication.getSubMchid();
+        }
+        return R.ok(subMchid, "");
+    }
+
+
+    /**
+     * 获取商户分成
+     * @param shopId
+     * @return
+     */
+    @PostMapping("/getShopProportion")
+    public R<ShopProportionVo> getShopProportion(@RequestBody Long shopId){
+        ShopProportion shopProportion = shopProportionService.getByShopId(shopId);
+
+        ShopProportionVo shopProportionVo = new ShopProportionVo();
+        BeanUtils.copyBeanProp(shopProportionVo, shopProportion);
+        return R.ok(shopProportionVo);
+    }
 
     @PostMapping("/getShopByUserId")
     public R<ShopRelUserVo> getShopByUserId(@RequestBody Long userId)
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtShopController.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtShopController.java
index 660a4e7..48b2420 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtShopController.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtShopController.java
@@ -71,8 +71,10 @@
     @ApiOperation(value = "导出商户列表")
     public void exportPageMgtShop(MgtShopPageDto mgtShopPageDto, HttpServletResponse response) {
         Page<MgtShopPageVo> page = new Page<>();
-        page.setSize(2000);
-        page.setCurrent(1);
+        if(page.getSize()>5000){
+            page.setSize(5000);
+            page.setCurrent(1);
+        }
         List<MgtShopPageVo> mgtShopPageVoList = shopService.pageMgtShop(page,mgtShopPageDto);
         ExcelUtil<MgtShopPageVo> util = new ExcelUtil<MgtShopPageVo>(MgtShopPageVo.class);
         util.exportExcel(response, mgtShopPageVoList, "用户订单列表");
@@ -185,8 +187,10 @@
         Long userId = SecurityUtils.getUserId();
         mgtShopSuggestPageDto.setUserId(userId);
         Page<MgtShopSuggestPageVo> page = new Page<>();
-        page.setSize(2000);
-        page.setCurrent(1);
+        if(page.getSize()>5000){
+            page.setSize(5000);
+            page.setCurrent(1);
+        }
         List<MgtShopSuggestPageVo> mgtShopSuggestPageVoList = shopSuggestService.pageMgtShopSuggest(page,mgtShopSuggestPageDto);
         ExcelUtil<MgtShopSuggestPageVo> util = new ExcelUtil<MgtShopSuggestPageVo>(MgtShopSuggestPageVo.class);
         util.exportExcel(response, mgtShopSuggestPageVoList, "商户建议列表");
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MerFollowAgencyTaskDto.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MerFollowAgencyTaskDto.java
index 60519d3..0538082 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MerFollowAgencyTaskDto.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MerFollowAgencyTaskDto.java
@@ -22,6 +22,9 @@
     @ApiModelProperty(value="跟踪类型1电话2手动")
     private Integer followType;
 
+    @ApiModelProperty(value="自定义跟进类型")
+    private String customeFollowType;
+
     @ApiModelProperty(value="拨打电话")
     private String callPhone;
 
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MerFollowMemberTaskDto.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MerFollowMemberTaskDto.java
index d2a21ea..0234bf7 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MerFollowMemberTaskDto.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MerFollowMemberTaskDto.java
@@ -22,6 +22,10 @@
     @ApiModelProperty(value="跟踪类型1电话2手动")
     private Integer followType;
 
+    @ApiModelProperty(value="自定义跟进类型")
+    private String customeFollowType;
+
+
     @ApiModelProperty(value="拨打电话")
     private String callPhone;
 
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtFollowShopTaskDto.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtFollowShopTaskDto.java
index 379bf44..196c27b 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtFollowShopTaskDto.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtFollowShopTaskDto.java
@@ -23,6 +23,7 @@
     @ApiModelProperty(value="跟进类型")
     private String followType;
 
+
     @ApiModelProperty(value="跟进内容")
     private String followContent;
 
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/StaffFollowShopTaskDto.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/StaffFollowShopTaskDto.java
index 3c6bc9d..1d69714 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/StaffFollowShopTaskDto.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/StaffFollowShopTaskDto.java
@@ -47,7 +47,7 @@
     private String nextTaskContent;
 
     @ApiModelProperty(value="跟踪类型")
-    private String customFollowType;
+    private String customeFollowType;
 
     @ApiModelProperty(value="紧急程度")
     private String emergencyState;
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/task/AgencyTaskRecord.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/task/AgencyTaskRecord.java
index f55cd1b..6d3366d 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/task/AgencyTaskRecord.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/task/AgencyTaskRecord.java
@@ -1,20 +1,17 @@
 package com.ruoyi.shop.domain.pojo.task;
 
 
-import java.util.Date;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
-import java.io.Serializable;
-
-import com.baomidou.mybatisplus.annotation.Version;
-
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
 
 /**
  * <p>
@@ -76,6 +73,9 @@
     @TableField("create_time")
     private Date createTime;
 
+    @TableField("custome_follow_type")
+    private String customeFollowType;
+
 
     @Override
     protected Serializable pkVal() {
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/task/MemberTaskRecord.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/task/MemberTaskRecord.java
index 2354b46..dec7800 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/task/MemberTaskRecord.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/task/MemberTaskRecord.java
@@ -1,16 +1,16 @@
 package com.ruoyi.shop.domain.pojo.task;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import java.util.Date;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
-import java.io.Serializable;
-
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
 
 /**
  * <p>
@@ -73,6 +73,9 @@
     @TableField("create_time")
     private Date createTime;
 
+    @TableField("custome_follow_type")
+    private String customeFollowType;
+
     @Override
     protected Serializable pkVal() {
         return this.id;
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/task/ShopTaskRecord.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/task/ShopTaskRecord.java
index 0be86fd..502e727 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/task/ShopTaskRecord.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/task/ShopTaskRecord.java
@@ -72,8 +72,8 @@
     @TableField("create_time")
     private Date createTime;
 
-    @TableField("custom_follow_type")
-    private String customFollowType;
+    @TableField("custome_follow_type")
+    private String customeFollowType;
 
     @Override
     protected Serializable pkVal() {
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MerAgencyTaskPageVo.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MerAgencyTaskPageVo.java
index 566edc4..f5a81d1 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MerAgencyTaskPageVo.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MerAgencyTaskPageVo.java
@@ -28,5 +28,6 @@
     @ApiModelProperty(value="紧急情况")
     private String emergencyState;;
 
-
+    @ApiModelProperty(value = "跟进时间")
+    private String followTime;
 }
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MerAgencyTaskRecordPageVo.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MerAgencyTaskRecordPageVo.java
index cf4a6ed..f7a7aad 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MerAgencyTaskRecordPageVo.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MerAgencyTaskRecordPageVo.java
@@ -29,6 +29,9 @@
     @ApiModelProperty(value="跟踪类型1电话2手动")
     private Integer followType;
 
+    @ApiModelProperty(value="自定义跟进类型")
+    private String customeFollowType;
+
     @ApiModelProperty(value="电话时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date callTime;
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MerMemberTaskRecordPageVo.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MerMemberTaskRecordPageVo.java
index 3821fc7..66a1cb8 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MerMemberTaskRecordPageVo.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MerMemberTaskRecordPageVo.java
@@ -29,6 +29,9 @@
     @ApiModelProperty(value="跟踪类型1电话2手动")
     private Integer followType;
 
+    @ApiModelProperty(value="自定义跟进类型")
+    private String customeFollowType;
+
     @ApiModelProperty(value="电话时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date callTime;
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtAgencyTaskRecordPageVo.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtAgencyTaskRecordPageVo.java
index 3892da4..d9ebaa8 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtAgencyTaskRecordPageVo.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtAgencyTaskRecordPageVo.java
@@ -39,6 +39,9 @@
     @ApiModelProperty(value="跟踪类型1电话2手动")
     private Integer followType;
 
+    @ApiModelProperty(value="跟进类型")
+    private String customeFollowType;
+
     @ApiModelProperty(value="电话时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date callTime;
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtMemberFollowPageVo.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtMemberFollowPageVo.java
index a6862af..40c26aa 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtMemberFollowPageVo.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtMemberFollowPageVo.java
@@ -38,6 +38,9 @@
     @ApiModelProperty(value="跟踪类型1电话2手动")
     private Integer followType;
 
+    @ApiModelProperty(value="自定义跟进类型")
+    private String customeFollowType;
+
     @ApiModelProperty(value="电话时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date callTime;
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopTaskRecordPageVo.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopTaskRecordPageVo.java
index 814e7e6..490b1e3 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopTaskRecordPageVo.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopTaskRecordPageVo.java
@@ -39,6 +39,9 @@
     @ApiModelProperty(value="跟踪类型1电话2手动")
     private String followType;
 
+    @ApiModelProperty(value="自定义跟踪类型")
+    private String customeFollowType;
+
     @ApiModelProperty(value="电话时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date callTime;
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffAgencyTaskRecordPageVo.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffAgencyTaskRecordPageVo.java
index f259404..60a89be 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffAgencyTaskRecordPageVo.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffAgencyTaskRecordPageVo.java
@@ -39,6 +39,9 @@
     @ApiModelProperty(value="跟踪类型1电话2手动")
     private Integer followType;
 
+    @ApiModelProperty(value="自定义跟进类型")
+    private String customeFollowType;
+
     @ApiModelProperty(value="电话时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date callTime;
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffMyShopTaskRecordPageVo.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffMyShopTaskRecordPageVo.java
index 7245b26..3dda519 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffMyShopTaskRecordPageVo.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffMyShopTaskRecordPageVo.java
@@ -40,7 +40,7 @@
     private String followType;
 
     @ApiModelProperty(value="跟进类型")
-    private String customFollowType;
+    private String customeFollowType;
 
     @ApiModelProperty(value="电话时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/enums/WxApplyMentSignStateEnum.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/enums/WxApplyMentSignStateEnum.java
new file mode 100644
index 0000000..3bc5552
--- /dev/null
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/enums/WxApplyMentSignStateEnum.java
@@ -0,0 +1,20 @@
+package com.ruoyi.shop.enums;
+
+import com.ruoyi.shop.enums.dict.IDict;
+
+public enum WxApplyMentSignStateEnum implements IDict<Integer> {
+    /**
+     * 签约状态
+         1、UNSIGNED:未签约。该状态下,电商平台可查询获取签约链接,引导二级商户的超级管理员完成签约;
+         2、SIGNED :已签约。指二级商户的超级管理员已完成签约。注意:若申请单被驳回,商户修改了商户主体名称、法人名称、超级管理员信息、主体类型等信息,则需重新签约。
+         3、NOT_SIGNABLE:不可签约。该状态下,暂不支持超级管理员签约。一般为申请单处于已驳回、已冻结、机器校验中状态,无法签约。
+     */
+    UNSIGNED(1, "UNSIGNED"),
+    SIGNED(2, "SIGNED"),
+    NOT_SIGNABLE(3, "NOT_SIGNABLE");
+
+    WxApplyMentSignStateEnum(Integer code, String text){
+        init(code, text);
+    }
+
+}
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/enums/WxApplyMentStateEnum.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/enums/WxApplyMentStateEnum.java
new file mode 100644
index 0000000..709e72d
--- /dev/null
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/enums/WxApplyMentStateEnum.java
@@ -0,0 +1,30 @@
+package com.ruoyi.shop.enums;
+
+import com.ruoyi.shop.enums.dict.IDict;
+
+public enum WxApplyMentStateEnum implements IDict<Integer> {
+    /**
+     * 审核状态
+        1:CHECKING:资料校验中
+        2:ACCOUNT_NEED_VERIFY:待账户验证
+        3:AUDITING:审核中
+        4:REJECTED:已驳回
+        5:NEED_SIGN:待签约
+        6:FINISH:完成
+        7:FROZEN:已冻结
+        8:CANCELED:已作废
+     */
+    CHECKING(1, "CHECKING"),
+    ACCOUNT_NEED_VERIFY(2, "ACCOUNT_NEED_VERIFY"),
+    AUDITING(3, "AUDITING"),
+    REJECTED(4, "REJECTED"),
+    NEED_SIGN(5, "NEED_SIGN"),
+    FINISH(6, "FINISH"),
+    FROZEN(7, "FROZEN"),
+    CANCELED(8, "CANCELED");
+
+    WxApplyMentStateEnum(Integer code, String text){
+        init(code, text);
+    }
+
+}
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/enums/dict/DictBean.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/enums/dict/DictBean.java
new file mode 100644
index 0000000..c8c2424
--- /dev/null
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/enums/dict/DictBean.java
@@ -0,0 +1,15 @@
+package com.ruoyi.shop.enums.dict;
+
+import lombok.Data;
+
+/**
+ * 字典bean
+ * 只有code和text,可用于展示下拉框
+ *
+ * @author luozhan
+ */
+@Data
+public class DictBean<T> implements IDict<T> {
+    private final T code;
+    private final String text;
+}
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/enums/dict/IDict.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/enums/dict/IDict.java
new file mode 100644
index 0000000..04e77ec
--- /dev/null
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/enums/dict/IDict.java
@@ -0,0 +1,170 @@
+package com.ruoyi.shop.enums.dict;
+
+import java.lang.reflect.Field;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+
+/**
+ * 字典接口
+ * <p>
+ * 自定义的字典枚举类实现本接口后可省略属性code和text,以及对应的get方法
+ * 在构造方法中只需调用init方法即可初始化
+ *
+ * @author luozhan
+ * @date 2021-12
+ */
+public interface IDict<T> {
+    /**
+     * 通过code获取value
+     *
+     * @param clazz 枚举class
+     * @param code  code
+     * @return text
+     */
+    static <T> String getTextByCode(Class<? extends IDict<T>> clazz, T code) {
+        return Stream.of(clazz.getEnumConstants())
+                .filter((IDict<T> e) -> e.getCode().equals(code))
+                .map(IDict::getText)
+                .findAny().orElse("");
+    }
+
+    /**
+     * 通过text获取code
+     *
+     * @param clazz 枚举class
+     * @param text  text
+     * @return code
+     */
+    static <T> T getCodeByText(Class<? extends IDict<T>> clazz, String text) {
+        return Stream.of(clazz.getEnumConstants())
+                .filter((IDict<T> e) -> e.getText().equals(text))
+                .map(IDict::getCode)
+                .findAny().orElse(null);
+    }
+
+    /**
+     * 通过code获取字典枚举实例
+     *
+     * @param clazz 枚举class
+     * @param code  code
+     * @param <T>   字典code类型
+     * @param <R>   枚举类型
+     * @return 字典枚举实例
+     */
+    @SuppressWarnings("unchecked")
+    static <T, R extends IDict<T>> R getByCode(Class<? extends IDict<T>> clazz, T code) {
+        return Stream.of(clazz.getEnumConstants())
+                .filter((IDict<T> e) -> (e.getCode().equals(code)))
+                .map(v -> (R) v)
+                .findAny()
+                .orElse(null);
+    }
+
+    /**
+     * 获取给定的字典枚举项(常用下拉框数据请求)
+     *
+     * @param enums 可指定需要哪些项
+     * @return List
+     */
+    @SafeVarargs
+    static <T, E extends IDict<T>> List<IDict<T>> getItems(E... enums) {
+        return Stream.of(enums)
+                .map(DictPool::getDict)
+                .collect(Collectors.toList());
+    }
+
+    /**
+     * 获取所有字典枚举项,除开指定的枚举
+     *
+     * @param exclude 指定排除的枚举
+     * @return List
+     */
+    @SafeVarargs
+    @SuppressWarnings("unchecked")
+    static <T, E extends IDict<T>> List<IDict<T>> getItemsExclude(E... exclude) {
+        Class<IDict<T>> clazz = (Class<IDict<T>>) exclude.getClass().getComponentType();
+        IDict<T>[] allEnum = clazz.getEnumConstants();
+        List<IDict<T>> excludeList = Arrays.asList(exclude);
+        return Stream.of(allEnum)
+                .filter(e -> !excludeList.contains(e))
+                .map(DictPool::getDict)
+                .collect(Collectors.toList());
+    }
+
+    /**
+     * 获取所有字典枚举项(常用下拉框数据请求)
+     * 枚举值上标记@Deprecated的不会返回
+     *
+     * @param clazz 字典枚举类
+     * @return List
+     */
+    static <T> List<IDict<T>> getAll(Class<? extends IDict<T>> clazz) {
+        Map<String, Field> fieldCache = Arrays.stream(clazz.getDeclaredFields()).
+                filter(Field::isEnumConstant).
+                collect(Collectors.toMap(Field::getName, Function.identity()));
+        IDict<T>[] allEnum = clazz.getEnumConstants();
+        return Stream.of(allEnum)
+                .filter(e -> !fieldCache.get(((Enum<?>) e).name()).isAnnotationPresent(Deprecated.class))
+                .map(DictPool::getDict)
+                .collect(Collectors.toList());
+    }
+
+    /**
+     * 初始化
+     *
+     * @param code 字典编码
+     * @param text 字典文本
+     */
+    default void init(T code, String text) {
+        DictPool.putDict(this, code, text);
+    }
+
+    /**
+     * 获取编码
+     *
+     * @return 编码
+     */
+    default T getCode() {
+        return DictPool.getDict(this).getCode();
+    }
+
+    /**
+     * 获取文本
+     *
+     * @return 文本
+     */
+    default String getText() {
+        return DictPool.getDict(this).getText();
+    }
+
+
+    @SuppressWarnings("all")
+    class DictPool {
+        private static final Map<IDict, DictBean> DICT_MAP = new ConcurrentHashMap<>();
+
+        private static final Map<String, Class<? extends IDict>> DICT_NAME_CLASS_MAP = new ConcurrentHashMap<>();
+
+        static <T> void putDict(IDict<T> dict, T code, String text) {
+            DICT_NAME_CLASS_MAP.put(dict.getClass().getName(), dict.getClass());
+            DICT_MAP.put(dict, new DictBean<>(code, text));
+        }
+
+        public static List<IDict<Object>> getDict(String dictName) {
+            Class<? extends IDict> aClass = DICT_NAME_CLASS_MAP.get(dictName);
+            return IDict.getAll((Class<? extends IDict<Object>>) aClass);
+        }
+
+        static <K extends IDict<T>, T> DictBean<T> getDict(K dict) {
+            return DICT_MAP.get(dict);
+        }
+
+
+    }
+
+}
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/fliter/ParamsAuthFilter.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/fliter/ParamsAuthFilter.java
index e40d3c9..75055ba 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/fliter/ParamsAuthFilter.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/fliter/ParamsAuthFilter.java
@@ -30,7 +30,14 @@
     public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
         HttpServletRequest request = (HttpServletRequest) servletRequest;
         HttpServletResponse response = (HttpServletResponse) servletResponse;
-
+        String requestUrl = request.getRequestURI();
+        String requestUrlUpperCase = requestUrl.toUpperCase();
+        if(requestUrlUpperCase.contains("EXPORT")
+                ||requestUrlUpperCase.contains("IMPORTTEMPLATE")
+        ){
+            filterChain.doFilter(request, response);
+            return;
+        }
         RepeatedlyRequestWrapper wrapper = new RepeatedlyRequestWrapper(request, response);
         getRequestParams(wrapper);
 
@@ -39,7 +46,6 @@
 
         // 返回的结果
         String content = responseWrapper.getTextContent();
-        String requestUrl = request.getRequestURI();
         log.info("-------------------- Response Data ----------------------");
         log.info(requestUrl + " -> " + content);
 
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopStaffMapper.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopStaffMapper.java
index 8c6edb0..bec6d98 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopStaffMapper.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopStaffMapper.java
@@ -19,4 +19,14 @@
      * @param shopId
      */
     void clearShopStaffRelation(@Param("shopId") Long shopId);
+    
+    /**
+     * @description  
+     * @author  jqs
+     * @date    2023/8/3 13:33
+     * @param shopId
+ * @param codeUrl
+     * @return  void
+     */
+    void updateShopCodeUrl(@Param("shopId") Long shopId,@Param("codeUrl") String codeUrl);
 }
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/scheduler/ShopScheduler.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/scheduler/ShopScheduler.java
index b239586..be7a4fa 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/scheduler/ShopScheduler.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/scheduler/ShopScheduler.java
@@ -1,7 +1,12 @@
 package com.ruoyi.shop.scheduler;
 
 
+import com.ruoyi.common.core.utils.bean.BeanUtils;
+import com.ruoyi.common.core.utils.uuid.IdUtils;
+import com.ruoyi.shop.domain.pojo.shop.ShopAuthentication;
+import com.ruoyi.shop.service.shop.ShopService;
 import com.ruoyi.shop.service.task.ShopTaskService;
+import com.ruoyi.system.api.domain.poji.shop.Shop;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Scheduled;
@@ -21,6 +26,9 @@
     @Resource
     private ShopTaskService shopTaskService;
 
+    @Resource
+    private ShopService shopService;
+
 
     /**
      * 定时检查跟进任务状态
@@ -33,4 +41,16 @@
         }
     }
 
+    /**
+     * 0 0/1 * * * ?
+     * 定时检查 每分钟检查一次 微信二级商户进件状态
+     */
+    @Scheduled(cron="0 0/1 * * * ?")
+    private void queryEcommerceApplyMentsStatus(){
+        if(schedulerUtils.getSchedulerRun()) {
+            log.info("--------------------定时检查微信二级商户进件状态任务开始执行--------------------");
+            shopService.queryEcommerceApplyMentsStatus();
+            log.info("--------------------定时检查微信二级商户进件状态任务结束执行--------------------");
+        }
+    }
 }
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopAuthenticationServiceImpl.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopAuthenticationServiceImpl.java
index f94da46..0061371 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopAuthenticationServiceImpl.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopAuthenticationServiceImpl.java
@@ -1,10 +1,23 @@
 package com.ruoyi.shop.service.impl.shop;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.github.binarywang.wxpay.bean.ecommerce.ApplymentsStatusResult;
+import com.google.common.base.Joiner;
 import com.ruoyi.shop.domain.pojo.shop.ShopAuthentication;
+import com.ruoyi.shop.enums.WxApplyMentSignStateEnum;
+import com.ruoyi.shop.enums.WxApplyMentStateEnum;
+import com.ruoyi.shop.enums.dict.IDict;
 import com.ruoyi.shop.mapper.shop.ShopAuthenticationMapper;
 import com.ruoyi.shop.service.shop.ShopAuthenticationService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -17,4 +30,72 @@
 @Service
 public class ShopAuthenticationServiceImpl extends ServiceImpl<ShopAuthenticationMapper, ShopAuthentication> implements ShopAuthenticationService {
 
+    @Override
+    public List<ShopAuthentication> getShopAuthNeedUpdateStatus() {
+        List<Integer> auditStatusList = Arrays.asList(1, 2, 3, 5);
+
+        LambdaQueryWrapper<ShopAuthentication> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.in(ShopAuthentication::getAuditStatus, auditStatusList);
+        queryWrapper.isNotNull(ShopAuthentication::getApplymentId);
+        return this.list(queryWrapper);
+    }
+
+    @Override
+    public void updateAuditStatusByApplymentId(String applymentId, ApplymentsStatusResult result) {
+        // WxApplyMentStateEnum
+        String applymentState = result.getApplymentState();
+        Integer auditStatus = IDict.getCodeByText(WxApplyMentStateEnum.class, applymentState);
+
+        Integer signState = IDict.getCodeByText(WxApplyMentSignStateEnum.class, result.getSignState());
+
+        LambdaUpdateWrapper<ShopAuthentication> updateWrapper = Wrappers.lambdaUpdate();
+        updateWrapper.eq(ShopAuthentication::getApplymentId, applymentId)
+                .set(ShopAuthentication::getAuditStatus, auditStatus)
+                .set(ShopAuthentication::getSignState, signState);
+
+        if(WxApplyMentStateEnum.ACCOUNT_NEED_VERIFY.getCode().equals(auditStatus)){
+            // ACCOUNT_NEED_VERIFY 待账户验证
+            updateWrapper.set(ShopAuthentication::getLegalValidationUrl, result.getLegalValidationUrl());
+            ApplymentsStatusResult.AccountValidation accountValidation = result.getAccountValidation();
+            if(null != accountValidation) {
+                updateWrapper.set(ShopAuthentication::getAvAccountName, accountValidation.getAccountName())
+                    .set(ShopAuthentication::getAvAccountNo, accountValidation.getAccountNo())
+                    .set(ShopAuthentication::getAvPayAmount, accountValidation.getPayAmount())
+                    .set(ShopAuthentication::getDaNumber, accountValidation.getDestinationAccountNumber())
+                    .set(ShopAuthentication::getDaName, accountValidation.getDestinationAccountName())
+                    .set(ShopAuthentication::getDaBank, accountValidation.getDestinationAccountBank())
+                    .set(ShopAuthentication::getDaCity, accountValidation.getCity())
+                    .set(ShopAuthentication::getDaRemark, accountValidation.getRemark())
+                    .set(ShopAuthentication::getDaDeadline, accountValidation.getDeadline());
+            }
+        } else if(WxApplyMentStateEnum.NEED_SIGN.getCode().equals(auditStatus)){
+            // NEED_SIGN 待签约
+            updateWrapper.set(ShopAuthentication::getSignUrl, result.getSignUrl());
+            updateWrapper.set(ShopAuthentication::getSubMchid, result.getSubMchid());
+
+        } else if(WxApplyMentStateEnum.FINISH.getCode().equals(auditStatus)){
+            // FINISH 完成
+            updateWrapper.set(ShopAuthentication::getSubMchid, result.getSubMchid());
+
+        } else if(WxApplyMentStateEnum.REJECTED.getCode().equals(auditStatus)
+                || WxApplyMentStateEnum.FROZEN.getCode().equals(auditStatus)){
+            List<ApplymentsStatusResult.AuditDetail> auditDetail = result.getAuditDetail();
+            if(null != auditDetail && !auditDetail.isEmpty()){
+                List<String> paramNameList = auditDetail.stream().map(ApplymentsStatusResult.AuditDetail::getParamName).collect(Collectors.toList());
+                List<String> rejectReason = auditDetail.stream().map(ApplymentsStatusResult.AuditDetail::getRejectReason).collect(Collectors.toList());
+                updateWrapper.set(ShopAuthentication::getAdParamName, Joiner.on(";").join(paramNameList))
+                        .set(ShopAuthentication::getAdRejectReason, Joiner.on(";").join(rejectReason));
+            }
+
+        }
+        this.update(updateWrapper);
+    }
+
+    @Override
+    public ShopAuthentication getByShopId(Long shopId) {
+        LambdaQueryWrapper<ShopAuthentication> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(ShopAuthentication::getShopId, shopId)
+                .last(" limit 1 ");
+        return this.getOne(queryWrapper);
+    }
 }
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopProportionServiceImpl.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopProportionServiceImpl.java
index f6d96b3..2596193 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopProportionServiceImpl.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopProportionServiceImpl.java
@@ -1,7 +1,10 @@
 package com.ruoyi.shop.service.impl.shop;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.shop.domain.dto.MgtShopProportionEditDto;
+import com.ruoyi.shop.domain.pojo.shop.ShopAuthentication;
 import com.ruoyi.shop.domain.pojo.shop.ShopProportion;
 import com.ruoyi.shop.mapper.shop.ShopProportionMapper;
 import com.ruoyi.shop.service.shop.ShopProportionService;
@@ -48,4 +51,13 @@
         shopProportionNew.setUpdateUserId(mgtShopProportionEditDto.getUserId());
         this.saveOrUpdate(shopProportionNew);
     }
+
+    @Override
+    public ShopProportion getByShopId(Long shopId) {
+        LambdaQueryWrapper<ShopProportion> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(ShopProportion::getShopId, shopId)
+                .eq(ShopProportion::getDelFlag, 0)
+                .last(" limit 1 ");
+        return this.getOne(queryWrapper);
+    }
 }
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java
index d64e238..c5da45e 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java
@@ -2,9 +2,12 @@
 
 import com.alibaba.fastjson2.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.binarywang.wxpay.bean.ecommerce.ApplymentsResult;
+import com.github.binarywang.wxpay.bean.ecommerce.ApplymentsStatusResult;
 import com.github.binarywang.wxpay.exception.WxPayException;
 import com.ruoyi.common.core.constant.CacheConstants;
 import com.ruoyi.common.core.exception.ServiceException;
@@ -18,6 +21,7 @@
 import com.ruoyi.shop.domain.pojo.shop.*;
 import com.ruoyi.shop.domain.pojo.task.ShopFile;
 import com.ruoyi.shop.domain.vo.*;
+import com.ruoyi.shop.enums.WxApplyMentStateEnum;
 import com.ruoyi.shop.mapper.shop.ShopMapper;
 import com.ruoyi.shop.service.shop.*;
 import com.ruoyi.shop.service.task.MemberTaskService;
@@ -35,7 +39,6 @@
 import com.ruoyi.system.api.domain.vo.*;
 import com.ruoyi.system.api.service.*;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
@@ -111,6 +114,9 @@
     private RemoteSysStaffService remoteSysStaffService;
 
     @Resource
+    private RemoteFileService remoteFileService;
+
+    @Resource
     private ShopTaskService shopTaskService;
 
     @Resource
@@ -121,6 +127,7 @@
 
     /**
      * 获取商户详情
+     *
      * @param shopId
      * @return
      */
@@ -307,6 +314,13 @@
         if(newShop){
             //生成商户关联记录
             initNewShop(shop,mgtEditShopDto.getUserId());
+            CodeGetDto codeGetDto = new CodeGetDto();
+            String url = "https://wxapp.hhhrt.cn/mini/activity?activityId="+shop.getShopId();
+            codeGetDto.setUrl(url);
+            codeGetDto.setFileName("shop-"+shop.getShopId());
+            String codeUrl = remoteFileService.getAppOrderTotal(codeGetDto).getData();
+            shop.setShopCode(codeUrl);
+            this.saveOrUpdate(shop);
         }
     }
 
@@ -797,6 +811,8 @@
         merHomeShopTotalVo.setShopTurnover(orderVo.getShopTurnover());
         merHomeShopTotalVo.setCycleSurp(shopTotal.getUseableCyclePerson());
         merHomeShopTotalVo.setExplorationSurp(shopTotal.getUseableExperiencePerson());
+        merHomeShopTotalVo.setPlatformBirthdayFlag(shop.getPlatformBirthdayFlag());
+        merHomeShopTotalVo.setPlatformCouponFlag(shop.getPlatformCouponFlag());
         return merHomeShopTotalVo;
     }
 
@@ -1328,4 +1344,44 @@
         shop.setUpdateTime(new Date());
         shopMapper.updateShop(shop);
     }
+
+    @Override
+    public void queryEcommerceApplyMentsStatus() {
+        List<ShopAuthentication> list = shopAuthenticationService.getShopAuthNeedUpdateStatus();
+        list.forEach(item -> queryApplyStatusByApplymentId(item.getApplymentId(), item.getShopId()));
+    }
+
+    /**
+     * 调用微信接口查询申请审核状态
+     * @param applymentId
+     */
+    private void queryApplyStatusByApplymentId(String applymentId, Long shopId) {
+        try {
+            if (StringUtils.isNotBlank(applymentId)) {
+                ApplymentsStatusResult result = wechatPayUtils.queryApplyStatusByApplymentId(applymentId);
+                shopAuthenticationService.updateAuditStatusByApplymentId(applymentId, result);
+                String applymentState = result.getApplymentState();
+                if(WxApplyMentStateEnum.FINISH.getText().equals(applymentState)){
+                    applySuccessUpdateShopStatus(shopId);
+                }
+            }
+        } catch (WxPayException e) {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * 商户进件审核完成,更新商户状态
+     * @param shopId
+     */
+    private void applySuccessUpdateShopStatus(Long shopId){
+        // 更新商户状态为正常
+        Shop shop = this.getById(shopId);
+        Integer shopStatus = handelShopStatus(shop.getFrozenFlag(), shop.getCooperativeFlag(), 1);
+        LambdaUpdateWrapper<Shop> updateWrapper = Wrappers.lambdaUpdate();
+        updateWrapper.eq(Shop::getShopId, shopId)
+                .set(Shop::getShopStatus, shopStatus)
+                .set(Shop::getAuthFlag, 1);
+        this.update(updateWrapper);
+    }
 }
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopStaffServiceImpl.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopStaffServiceImpl.java
index e5afe26..0e9f127 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopStaffServiceImpl.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopStaffServiceImpl.java
@@ -10,10 +10,12 @@
 import com.ruoyi.shop.mapper.shop.ShopStaffMapper;
 import com.ruoyi.shop.service.shop.ShopStaffService;
 import com.ruoyi.system.api.domain.dto.AppEditUserDto;
+import com.ruoyi.system.api.domain.dto.CodeGetDto;
 import com.ruoyi.system.api.domain.dto.MerEditUserDto;
 import com.ruoyi.system.api.domain.dto.MgtShopStaffEditDto;
 import com.ruoyi.system.api.domain.poji.shop.Shop;
 import com.ruoyi.system.api.domain.vo.MerStaffInfoVo;
+import com.ruoyi.system.api.service.RemoteFileService;
 import com.ruoyi.system.api.service.RemoteSysStaffService;
 import com.ruoyi.system.api.service.RemoteUserService;
 import org.springframework.stereotype.Service;
@@ -41,6 +43,8 @@
     @Resource
     private RemoteSysStaffService remoteSysStaffService;
 
+    @Resource
+    private RemoteFileService remoteFileService;
     /**
      *
      * @param userId
@@ -82,8 +86,17 @@
         merStaffInfoVo.setBusinessTime(shop.getBusinessStartTime()+"-"+shop.getBusinessEndTime());
         merStaffInfoVo.setShopType(shop.getShopType());
         merStaffInfoVo.setShopNumber(shop.getShopNumber());
-        String shopCodeUrl = "https://wxapp.hhhrt.cn/mini/shop?shopId="+shop.getShopId();
-        merStaffInfoVo.setShopCodeUrl(shopCodeUrl);
+        if(StringUtils.isNotBlank(shop.getShopCode())){
+            merStaffInfoVo.setShopCodeUrl(shop.getShopCode());
+        }else{
+            CodeGetDto codeGetDto = new CodeGetDto();
+            String url = "https://wxapp.hhhrt.cn/mini/activity?activityId="+shop.getShopId();
+            codeGetDto.setUrl(url);
+            codeGetDto.setFileName("shop-"+shop.getShopId());
+            String codeUrl = remoteFileService.getAppOrderTotal(codeGetDto).getData();
+            merStaffInfoVo.setShopCodeUrl(codeUrl);
+            shopStaffMapper.updateShopCodeUrl(shop.getShopId(),codeUrl);
+        }
         return merStaffInfoVo;
     }
 
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/AgencyTaskServiceImpl.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/AgencyTaskServiceImpl.java
index e4c3f49..a70df4b 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/AgencyTaskServiceImpl.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/AgencyTaskServiceImpl.java
@@ -121,6 +121,7 @@
                     agencyTaskRecord.setDelFlag(0);
                     agencyTaskRecord.setUserId(merFollowAgencyTaskDto.getUserId());
                     agencyTaskRecord.setFollowType(merFollowAgencyTaskDto.getFollowType());
+                    agencyTaskRecord.setCustomeFollowType(merFollowAgencyTaskDto.getCustomeFollowType());
                     agencyTaskRecord.setCallPhone(merFollowAgencyTaskDto.getCallPhone());
                     agencyTaskRecord.setCallTime(followPhoneDto.getCallTime());
                     agencyTaskRecord.setFollowContent(followPhoneDto.getFollowContent());
@@ -130,6 +131,13 @@
             }
         }else{
             agencyTaskRecord = new AgencyTaskRecord();
+            agencyTaskRecord.setTaskId(merFollowAgencyTaskDto.getTaskId());
+            agencyTaskRecord.setDelFlag(0);
+            agencyTaskRecord.setUserId(merFollowAgencyTaskDto.getUserId());
+            agencyTaskRecord.setFollowType(merFollowAgencyTaskDto.getFollowType());
+            agencyTaskRecord.setCustomeFollowType(merFollowAgencyTaskDto.getCustomeFollowType());
+            agencyTaskRecord.setFollowContent(merFollowAgencyTaskDto.getFollowContent());
+            agencyTaskRecord.setCreateTime(new Date());
             //创建任务详情文件
             String picture = merFollowAgencyTaskDto.getPicture();
             String video = merFollowAgencyTaskDto.getVideo();
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/MemberTaskServiceImpl.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/MemberTaskServiceImpl.java
index 731f9a4..7bbb6ba 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/MemberTaskServiceImpl.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/MemberTaskServiceImpl.java
@@ -17,6 +17,7 @@
 import com.ruoyi.shop.service.task.MemberTaskService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.shop.service.task.TaskFileService;
+import com.ruoyi.system.api.domain.dto.MemberTotalChangeDto;
 import com.ruoyi.system.api.domain.vo.MemberTaskSimpleVo;
 import com.ruoyi.system.api.service.RemoteMemberService;
 import org.springframework.stereotype.Service;
@@ -57,19 +58,7 @@
      */
     @Override
     public List<MerMemberTaskPageVo> pageMerMemberTask(Page page, MerMemberTaskPageDto merMemberTaskPageDto){
-        String today = DateUtils.parseDateToStr("YYYY-MM-DD",new Date());
         List<MerMemberTaskPageVo> merMemberTaskPageVoList = memberTaskMapper.pageMerMemberTask(page, merMemberTaskPageDto);
-        if(merMemberTaskPageVoList!=null&&!merMemberTaskPageVoList.isEmpty()){
-            String taskDate;
-            for(MerMemberTaskPageVo merMemberTaskPageVo : merMemberTaskPageVoList){
-                taskDate = merMemberTaskPageVo.getTaskDate();
-                if(today.equals(taskDate)){
-                    merMemberTaskPageVo.setTodayFlag(1);
-                }else{
-                    merMemberTaskPageVo.setTodayFlag(0);
-                }
-            }
-        }
         return merMemberTaskPageVoList;
     }
 
@@ -100,6 +89,9 @@
         memberTask.setTaskContent(merCreateMemberTaskDto.getTaskContent());
         memberTask.setCreateTime(new Date());
         this.saveOrUpdate(memberTask);
+        MemberTotalChangeDto memberTotalChangeDto = new MemberTotalChangeDto();
+        memberTotalChangeDto.setNextTaskTime(merCreateMemberTaskDto.getTaskDate());
+        remoteMemberService.changeMemberTotal(memberTotalChangeDto);
     }
 
     /**
@@ -131,6 +123,7 @@
                     memberTaskRecord.setDelFlag(0);
                     memberTaskRecord.setUserId(merFollowMemberTaskDto.getUserId());
                     memberTaskRecord.setFollowType(merFollowMemberTaskDto.getFollowType());
+                    memberTaskRecord.setCustomeFollowType(merFollowMemberTaskDto.getCustomeFollowType());
                     memberTaskRecord.setCallPhone(merFollowMemberTaskDto.getCallPhone());
                     memberTaskRecord.setFollowContent(followPhoneDto.getFollowContent());
                     memberTaskRecord.setCallTime(followPhoneDto.getCallTime());
@@ -145,6 +138,7 @@
             memberTaskRecord.setDelFlag(0);
             memberTaskRecord.setUserId(merFollowMemberTaskDto.getUserId());
             memberTaskRecord.setFollowType(merFollowMemberTaskDto.getFollowType());
+            memberTaskRecord.setCustomeFollowType(merFollowMemberTaskDto.getCustomeFollowType());
             memberTaskRecord.setFollowContent(merFollowMemberTaskDto.getFollowContent());
             memberTaskRecord.setCreateTime(new Date());
             // 保存或更新会员任务记录
@@ -217,6 +211,9 @@
             }
             memberTask.setCreateTime(new Date());
             this.saveOrUpdate(memberTask);
+            MemberTotalChangeDto memberTotalChangeDto = new MemberTotalChangeDto();
+            memberTotalChangeDto.setNextTaskTime(merFollowMemberTaskDto.getNextTaskDate());
+            remoteMemberService.changeMemberTotal(memberTotalChangeDto);
         }
     }
 
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/ShopTaskServiceImpl.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/ShopTaskServiceImpl.java
index f949202..bde2aa4 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/ShopTaskServiceImpl.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/ShopTaskServiceImpl.java
@@ -71,7 +71,7 @@
         shopTaskRecord.setTaskId(taskId);
         shopTaskRecord.setUserId(mgtFollowShopTaskDto.getUserId());
         shopTaskRecord.setFollowType(2);
-        shopTaskRecord.setCustomFollowType(mgtFollowShopTaskDto.getFollowType());
+        shopTaskRecord.setCustomeFollowType(mgtFollowShopTaskDto.getFollowType());
         shopTaskRecord.setFollowContent(mgtFollowShopTaskDto.getFollowContent());
         shopTaskRecord.setCreateTime(nowTime);
         shopTaskRecordService.saveOrUpdate(shopTaskRecord);
@@ -244,7 +244,7 @@
             shopTaskRecord.setUserId(staffFollowShopTaskDto.getUserId());
             shopTaskRecord.setFollowType(staffFollowShopTaskDto.getFollowType());
             shopTaskRecord.setFollowContent(staffFollowShopTaskDto.getFollowContent());
-            shopTaskRecord.setCustomFollowType(staffFollowShopTaskDto.getCustomFollowType());
+            shopTaskRecord.setCustomeFollowType(staffFollowShopTaskDto.getCustomeFollowType());
             shopTaskRecord.setCreateTime(new Date());
             // 保存或更新会员任务记录
             shopTaskRecordService.saveOrUpdate(shopTaskRecord);
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopAuthenticationService.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopAuthenticationService.java
index 1aab902..1f10652 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopAuthenticationService.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopAuthenticationService.java
@@ -1,7 +1,10 @@
 package com.ruoyi.shop.service.shop;
 
+import com.github.binarywang.wxpay.bean.ecommerce.ApplymentsStatusResult;
 import com.ruoyi.shop.domain.pojo.shop.ShopAuthentication;
 import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +16,23 @@
  */
 public interface ShopAuthenticationService extends IService<ShopAuthentication> {
 
+    /**
+     * 获取需要更新状态的 微信二级商户认证审核
+     * @return
+     */
+    List<ShopAuthentication> getShopAuthNeedUpdateStatus();
+
+    /**
+     * 修改微信审核状态
+     * @param applymentId
+     * @param result
+     */
+    void updateAuditStatusByApplymentId(String applymentId, ApplymentsStatusResult result);
+
+    /**
+     * 获取商户认证信息
+     * @param shopId
+     * @return
+     */
+    ShopAuthentication getByShopId(Long shopId);
 }
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopProportionService.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopProportionService.java
index af99606..1f4b6c4 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopProportionService.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopProportionService.java
@@ -22,4 +22,11 @@
      * @return  void
      */
     void editMgtShopProportion(MgtShopProportionEditDto mgtShopProportionEditDto);
+
+    /**
+     * 获取商户分成比例
+     * @param shopId
+     * @return
+     */
+    ShopProportion getByShopId(Long shopId);
 }
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopService.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopService.java
index 5a664f1..b84fce1 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopService.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopService.java
@@ -327,4 +327,9 @@
      * @return  void
      */
     void editShopCustomStatus(StaffShopCCEditDto staffShopCCEditDto);
+
+    /**
+     * 微信二级商户进件状态 定时任务检测
+     */
+    void queryEcommerceApplyMentsStatus();
 }
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/WechatPayUtils.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/WechatPayUtils.java
index 39a768f..14eae48 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/WechatPayUtils.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/WechatPayUtils.java
@@ -20,12 +20,13 @@
 @Component
 @AllArgsConstructor
 public class WechatPayUtils {
+
     private final WxPayService wxService;
 
     /**
      * 电商二级商户进件(提交申请单)
      */
-    public void ecommerceApply(ShopAuthentication shopAuthentication, String applyNumber, Shop shop) throws WxPayException {
+    public ApplymentsResult ecommerceApply(ShopAuthentication shopAuthentication, String applyNumber, Shop shop) throws WxPayException {
         EcommerceService ecommerceService = wxService.getEcommerceService();
         ApplymentsRequest request = new ApplymentsRequest();
         //生成提交类
@@ -105,18 +106,18 @@
         request.setBusinessAdditionPics(shopAuthentication.getBaPics());
         request.setBusinessAdditionDesc(shopAuthentication.getBaDesc());
 
-        ApplymentsResult result = ecommerceService.createApply(request);
+        return ecommerceService.createApply(request);
     }
 
 
     /**
      * 通过查询申请状态API查询二级商户入驻申请结果
-     * @param applyNumber 业务申请编号
+     * @param applymentId 微信支付申请单号
      * @return 申请状态
      * @throws WxPayException
      */
-    public ApplymentsStatusResult queryApplyStatusByOutRequestNo(String applyNumber) throws WxPayException {
-        return wxService.getEcommerceService().queryApplyStatusByOutRequestNo(applyNumber);
+    public ApplymentsStatusResult queryApplyStatusByApplymentId(String applymentId) throws WxPayException {
+        return wxService.getEcommerceService().queryApplyStatusByApplymentId(applymentId);
     }
 
 }
diff --git a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml
index e490eaa..5ece597 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml
+++ b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml
@@ -406,8 +406,14 @@
         ts.cooperation_end_time cooperationEndTime
         FROM t_shop ts
         WHERE ts.del_flag = 0 AND ts.belong_shop_id = #{param.shopId}
-        <if test="param.shopStatus!=null and param.shopStatus!=''">
-            AND ts.shop_status = #{param.shopStatus}
+        <if test="param.shopStatus!=null and param.shopStatus==1">
+            AND ts.shop_status = 1
+        </if>
+        <if test="param.shopStatus!=null and param.shopStatus==2">
+            AND ts.frozen_flag = 1
+        </if>
+        <if test="param.shopStatus!=null and param.shopStatus==3">
+            AND ts.cooperative_flag = 0
         </if>
         <if test="param.keyword!=null and param.keyword!=''">
             AND (ts.shop_name LIKE CONCAT('%',#{param.keyword},'%') OR ts.shopowner_name LIKE CONCAT('%',#{param.keyword},'%')
@@ -423,14 +429,13 @@
     </select>
 
     <select id="getNearbyShop"  resultType="com.ruoyi.shop.domain.vo.AppNearShopVo">
-        SELECT ts.shop_id shopId, ACOS(
-		COS(RADIANS(#{param.longitude})) *
-		COS(RADIANS(ts.shop_latitude)) *
-		COS(RADIANS(ts.shop_longitude) - RADIANS(#{param.latitude})) +
-		SIN(RADIANS(#{param.longitude})) *
-		SIN(RADIANS(ts.shop_latitude))
-	    ) * 6378 as distance
-        FROM t_shop ts WHERE ts.del_flag = 0 AND ts.shop_status = 1
+        SELECT ts.shop_id shopId,
+               6378.138 * 2 * ASIN(SQRT(POW(SIN((
+               #{param.latitude} * PI() / 180 - ts.shop_latitude * PI() / 180) / 2), 2)
+                + COS(#{param.latitude} * PI() / 180) * COS(ts.shop_latitude * PI() / 180) * POW(
+               SIN((#{param.longitude} * PI() / 180 - ts.shop_longitude * PI() / 180) / 2), 2
+               ))) AS distance
+        FROM t_shop ts
         ORDER BY distance ASC LIMIT 1
     </select>
 
diff --git a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopStaffMapper.xml b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopStaffMapper.xml
index 5dbeee5..bdbcc97 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopStaffMapper.xml
+++ b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopStaffMapper.xml
@@ -8,4 +8,7 @@
         UPDATE t_shop_staff SET del_flag = 1 WHERE del_flag = 0 AND shop_id = #{shopId}
     </update>
 
+    <update id="updateShopCodeUrl">
+        UPDATE t_shop SET shop_code =  #{codeUrl} WHERE shop_id = #{shopId}
+    </update>
 </mapper>
diff --git a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/AgencyTaskMapper.xml b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/AgencyTaskMapper.xml
index dcd12c2..c955f25 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/AgencyTaskMapper.xml
+++ b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/AgencyTaskMapper.xml
@@ -19,7 +19,8 @@
         tat.task_date taskDate,
         tat.task_content taskContent,
         tmtr.follow_content dealContent,
-        tat.emergency_state emergencyState
+        tat.emergency_state emergencyState,
+        tmtr.create_time followTime
         FROM t_agency_task tat
         LEFT JOIN t_agency_task_record tmtr ON tat.task_id = tmtr.task_id
         WHERE tat.del_flag = 0 AND tat.shop_id = #{param.shopId} AND tat.agency_id = #{param.agencyId}
@@ -29,7 +30,7 @@
         ORDER BY tat.task_date DESC
     </select>
 
-    <select id="pageMerAgencyTask" resultType="com.ruoyi.shop.domain.vo.MerAgencySimpleTaskRecordPageVo">
+    <select id="pageMerAgencySimpleTaskRecord" resultType="com.ruoyi.shop.domain.vo.MerAgencySimpleTaskRecordPageVo">
         SELECT
         tmtr.create_time createTime,
         CASE tmtr.follow_type WHEN 1 THEN "电话跟进" WHEN 2 THEN "手动跟进" END followType,
diff --git a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/AgencyTaskRecordMapper.xml b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/AgencyTaskRecordMapper.xml
index 2c27681..248231c 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/AgencyTaskRecordMapper.xml
+++ b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/AgencyTaskRecordMapper.xml
@@ -20,6 +20,7 @@
         tmtr.task_id taskId,
         tmt.task_date taskDate,
         tmtr.follow_type followType,
+        tmtr.custome_follow_type customeFollowType,
         tmtr.call_time callTime,
         tmtr.follow_content followContent,
         tmtr.call_phone callPhone
@@ -36,6 +37,7 @@
         tmtr.task_id taskId,
         tmt.create_time createTime,
         tmtr.follow_type followType,
+        tmtr.custome_follow_type customeFollowType,
         tmtr.call_time callTime,
         tmtr.follow_content followContent,
         tmtr.call_phone callPhone
@@ -54,6 +56,7 @@
             tmtr.task_id taskId,
             tmt.create_time createTime,
             tmtr.follow_type followType,
+            tmtr.custome_follow_type customeFollowType,
             tmtr.call_time callTime,
             tmtr.follow_content followContent,
             tmtr.call_phone callPhone
diff --git a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/MemberTaskMapper.xml b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/MemberTaskMapper.xml
index 72fba4e..1547590 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/MemberTaskMapper.xml
+++ b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/MemberTaskMapper.xml
@@ -86,7 +86,7 @@
         tmt.task_content taskContent,
         tmtr.follow_content dealContent,
         tmt.emergency_state emergencyState,
-        CASE WHEN task_date = #{param.today} THEN 1 ELSE 0 END todayFlag
+        CASE tmt.task_status WHEN 1 THEN 1 WHEN 3 THEN 1 ELSE 0 END todayFlag
         FROM t_member_task tmt
         LEFT JOIN t_member_task_record tmtr ON tmt.task_id = tmtr.task_id
         WHERE tmt.del_flag = 0 AND tmt.shop_id = #{param.shopId} AND tmt.user_id = #{param.memberUserId}
diff --git a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/MemberTaskRecordMapper.xml b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/MemberTaskRecordMapper.xml
index f2dba1b..e8b6bd4 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/MemberTaskRecordMapper.xml
+++ b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/MemberTaskRecordMapper.xml
@@ -85,6 +85,7 @@
         tmtr.follow_type followType,
         tmtr.call_time callTime,
         tmtr.follow_content followContent,
+        tmtr.custome_follow_type customeFollowType,
         tmtr.call_phone callPhone
         FROM t_member_task tmt
         INNER JOIN t_member_task_record tmtr ON tmtr.task_id = tmt.task_id
@@ -101,6 +102,7 @@
         tmtr.task_id taskId,
         tmt.task_date taskDate,
         tmtr.follow_type followType,
+        tmtr.custome_follow_type customeFollowType,
         tmtr.call_time callTime,
         tmtr.follow_content followContent,
         tmtr.call_phone callPhone
diff --git a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/ShopTaskRecordMapper.xml b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/ShopTaskRecordMapper.xml
index e7138ca..9ccde99 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/ShopTaskRecordMapper.xml
+++ b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/ShopTaskRecordMapper.xml
@@ -9,7 +9,7 @@
         tmtr.task_id taskId,
         tmtr.create_time createTime,
         CASE tmtr.follow_type WHEN 1 THEN "电话跟进" WHEN 2 THEN "手动跟进" END followType,
-        tmtr.custom_follow_type customFollowType,
+        tmtr.custome_follow_type customeFollowType,
         tmtr.follow_content followContent,
         tmtr.call_time callTime,
         tmtr.call_phone callPhone
@@ -26,7 +26,7 @@
             tmtr.task_id taskId,
             tmtr.create_time createTime,
             CASE tmtr.follow_type WHEN 1 THEN "电话跟进" WHEN 2 THEN "手动跟进" END followType,
-            tmtr.custom_follow_type customFollowType,
+            tmtr.custome_follow_type customeFollowType,
             tmtr.follow_content followContent,
             tmtr.call_time callTime,
             tmtr.call_phone callPhone
@@ -43,6 +43,7 @@
             tmtr.task_id taskId,
             tmtr.create_time createTime,
             CASE tmtr.follow_type WHEN 1 THEN "电话跟进" WHEN 2 THEN "手动跟进" END followType,
+            tmtr.custome_follow_type customeFollowType,
             tmtr.follow_content followContent,
             tmtr.call_time callTime,
             tmtr.call_phone callPhone
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java
index 38d650c..36ff0c6 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java
@@ -387,8 +387,10 @@
         Long userId = SecurityUtils.getUserId();
         mgtOperLogPageDto.setUserId(userId);
         Page<MgtOperLogPageVo> page = new Page<>();
-        page.setSize(2000);
-        page.setCurrent(1);
+        if(page.getSize()>5000){
+            page.setSize(5000);
+            page.setCurrent(1);
+        }
         List<MgtOperLogPageVo> mgtOperLogPageVoList = customConfigService.pageOperLog(page, mgtOperLogPageDto);
         ExcelUtil<MgtOperLogPageVo> util = new ExcelUtil<MgtOperLogPageVo>(MgtOperLogPageVo.class);
         util.exportExcel(response, mgtOperLogPageVoList, "操作日志");
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtStaffController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtStaffController.java
index 603a3bd..ad4926a 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtStaffController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtStaffController.java
@@ -80,8 +80,10 @@
         Long userId = SecurityUtils.getUserId();
         mgtStaffSuggestPageDto.setUserId(userId);
         Page<MgtStaffSuggestPageVo> page = new Page<>();
-        page.setSize(2000);
-        page.setCurrent(1);
+        if(page.getSize()>5000){
+            page.setSize(5000);
+            page.setCurrent(1);
+        }
         List<MgtStaffSuggestPageVo> staffSuggestPageVoList = staffSuggestService.pageMgtStaffSuggest(page,mgtStaffSuggestPageDto);
         ExcelUtil<MgtStaffSuggestPageVo> util = new ExcelUtil<MgtStaffSuggestPageVo>(MgtStaffSuggestPageVo.class);
         util.exportExcel(response, staffSuggestPageVoList, "员工建议列表");
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/fliter/ParamsAuthFilter.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/fliter/ParamsAuthFilter.java
index 690bcfe..d88dcd8 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/fliter/ParamsAuthFilter.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/fliter/ParamsAuthFilter.java
@@ -30,7 +30,14 @@
     public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
         HttpServletRequest request = (HttpServletRequest) servletRequest;
         HttpServletResponse response = (HttpServletResponse) servletResponse;
-
+        String requestUrl = request.getRequestURI();
+        String requestUrlUpperCase = requestUrl.toUpperCase();
+        if(requestUrlUpperCase.contains("EXPORT")
+                ||requestUrlUpperCase.contains("IMPORTTEMPLATE")
+                ||requestUrlUpperCase.contains("GETAPPAGREEMENT")){
+            filterChain.doFilter(request, response);
+            return;
+        }
         RepeatedlyRequestWrapper wrapper = new RepeatedlyRequestWrapper(request, response);
         getRequestParams(wrapper);
 
@@ -39,7 +46,6 @@
 
         // 返回的结果
         String content = responseWrapper.getTextContent();
-        String requestUrl = request.getRequestURI();
         log.info("-------------------- Response Data ----------------------");
         log.info(requestUrl + " -> " + content);
 
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/config/CustomConfigMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/config/CustomConfigMapper.java
index 12da256..f29af14 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/config/CustomConfigMapper.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/config/CustomConfigMapper.java
@@ -5,7 +5,7 @@
 import com.ruoyi.system.domain.pojo.config.CustomConfig;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ruoyi.system.domain.vo.MgtOperLogPageVo;
-import io.lettuce.core.dynamic.annotation.Param;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/CustomConfigServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/CustomConfigServiceImpl.java
index 303589a..c37ea0f 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/CustomConfigServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/CustomConfigServiceImpl.java
@@ -646,9 +646,9 @@
         mgtBulletinBoardVo.setSalesTotal(mgtBulletinBoardVoOrder.getSalesTotal());
         mgtBulletinBoardVo.setUnUseOrderTotal(mgtBulletinBoardVoOrder.getUnUseOrderTotal());
         mgtBulletinBoardVo.setActivityOrderTotal(mgtBulletinBoardVoOrder.getActivityOrderTotal());
+        mgtBulletinBoardVo.setActivityUserTotal(mgtBulletinBoardVoOrder.getActivityUserTotal());
         // 获取活动信息
-        MgtBulletinBoardVo mgtBulletinBoardVoActivity = remoteActivityService.boardActivityTotal().getData();
-        mgtBulletinBoardVo.setActivityUserTotal(mgtBulletinBoardVoActivity.getActivityUserTotal());
+        //MgtBulletinBoardVo mgtBulletinBoardVoActivity = remoteActivityService.boardActivityTotal().getData();
         //待回复建议数量
         Integer countA = remoteMemberService.getUnReplaySuggestVo().getData();
         Integer countB = remoteShopService.getUnReplaySuggestVo().getData();
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/sys/SysUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/sys/SysUserServiceImpl.java
index 7e63ad0..652e19e 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/sys/SysUserServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/sys/SysUserServiceImpl.java
@@ -608,10 +608,6 @@
         String editValue = appEditUserDto.getEditValue();
         switch (editType){
             case 1:
-                sysUser.setNickName(editValue);
-                sysUser.setUpdateTime(DateUtils.getNowDate());
-                sysUser.setUpdateBy(String.valueOf(appEditUserDto.getUserId()));
-                userMapper.updateUser(sysUser);
                 break;
             case 2:
                 sysUser.setAvatar(editValue);
@@ -627,6 +623,12 @@
                 break;
             case 4:
                 break;
+            case 5:
+                sysUser.setNickName(editValue);
+                sysUser.setUpdateTime(DateUtils.getNowDate());
+                sysUser.setUpdateBy(String.valueOf(appEditUserDto.getUserId()));
+                userMapper.updateUser(sysUser);
+                break;
             default:
                 break;
         }
diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/CustomConfigMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/CustomConfigMapper.xml
index 266b943..24016b5 100644
--- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/CustomConfigMapper.xml
+++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/CustomConfigMapper.xml
@@ -20,10 +20,10 @@
         FROM sys_oper_log
         WHERE operator_type = 1 AND del_flag = 0
         <if test="param.operContent != null and param.operContent !=''">
-            oper_content LIKE concat('%', #{param.operContent}, '%')
+            AND oper_content LIKE concat('%', #{param.operContent}, '%')
         </if>
         <if test="param.operTitle != null and param.operTitle !=''">
-            title = #{param.operTitle}
+            AND title = #{param.operTitle}
         </if>
         <if test="param.operStartTime!=null and param.operStartTime!=''">
             AND Date(oper_time) &gt;= #{param.operStartTime}
diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/staff/SysStaffMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/staff/SysStaffMapper.xml
index 7c48a20..1c3826f 100644
--- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/staff/SysStaffMapper.xml
+++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/staff/SysStaffMapper.xml
@@ -19,7 +19,7 @@
         su.nick_name nickName
         FROM sys_dept sd
         LEFT JOIN sys_user su ON sd.dept_id = su.dept_id
-        WHERE sd.del_flag = 0 AND su.del_flag = 0
+        WHERE sd.del_flag = "0" AND su.del_flag = "0" AND su.status = "0"
     </select>
 
     <select id="listMgtDeptStaffByDept" resultMap="deptStaffResultMap">
@@ -30,7 +30,7 @@
             su.nick_name nickName
         FROM sys_dept sd
                  LEFT JOIN sys_user su ON sd.dept_id = su.dept_id
-        WHERE sd.del_flag = 0 AND su.del_flag = 0 AND sd.dept_id = #{deptId}
+        WHERE sd.del_flag = "0" AND su.del_flag = "0" AND sd.dept_id = #{deptId}
         <if test="userId != null and userId != ''">
             AND su.user_id = #{userId}
         </if>

--
Gitblit v1.7.1