puzhibing
2023-11-24 328ac3b6130819a31a7ba2d6af84ceec5c9584bf
修改bug
30个文件已修改
778 ■■■■■ 已修改文件
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteOrderFallbackFactory.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteOrderService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-auth/src/main/resources/bootstrap.yml 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-gateway/src/main/resources/bootstrap.yml 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/resources/bootstrap.yml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/resources/mapper/activity/ActivityGoodsMapper.xml 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberPageVo.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/resources/bootstrap.yml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/concole/OrderController.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtActivityOrderPageVo.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtOrderDetailVo.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/HuiFuTianXiaUtil.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/resources/bootstrap.yml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtShopController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtShopHFTXAuthDto.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/shop/ShopAuthenticationHftx.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopHFTXAuthGetVo.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/HuiFuTianXiaUtil.java 273 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/resources/bootstrap.yml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java
@@ -90,6 +90,8 @@
    String ACTIVITY_END = "活动已经结束";
    String ACTIVITY_DEL = "活动已被删除";
    String ACTIVITY_SE_ERROR = "开始时间不能大于结束时间";
    String ACTIVITY_GOODS_NULL = "商品已被抢完";
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteOrderFallbackFactory.java
@@ -85,6 +85,11 @@
            public R<MerMemberSimpleTotalVo> getMerMemberSimpleTotalVo(MerBaseDto merBaseDto) {
                return R.fail("获取商户会员订单统计失败:" + throwable.getMessage());
            }
            @Override
            public R<List<String>> getActivityOrderGoods(String activityId) {
                return R.fail("获取活动订单商品id失败:" + throwable.getMessage());
            }
        };
    }
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteOrderService.java
@@ -108,4 +108,13 @@
     */
    @PostMapping("/order/getMerMemberSimpleTotalVo")
    public R<MerMemberSimpleTotalVo> getMerMemberSimpleTotalVo(@RequestBody MerBaseDto merBaseDto);
    /**
     * 获取活动订单商品id
     * @param activityId
     * @return
     */
    @PostMapping("/order/getActivityOrderGoods")
    R<List<String>> getActivityOrderGoods(@RequestBody String activityId);
}
ruoyi-auth/src/main/resources/bootstrap.yml
@@ -14,26 +14,31 @@
    nacos:
      discovery:
        # 服务注册地址
#        server-addr: 47.109.78.184:5000
        server-addr: 127.0.0.1:8848
        server-addr: 47.109.78.184:5000
#        server-addr: 127.0.0.1:8848
        #pro
#        namespace: 9591ef9f-a49a-4900-be35-d77258bdd639
        namespace: 9591ef9f-a49a-4900-be35-d77258bdd639
        #test
#        namespace: e1a7e419-e8c7-4d7d-8a0a-c00ab6ccfccd
        #dev
        namespace: 6857cbd9-6088-4fe8-bb58-2b516d99876f
#        namespace: 6857cbd9-6088-4fe8-bb58-2b516d99876f
      config:
        # 配置中心地址
#        server-addr: 47.109.78.184:5000
        server-addr: 127.0.0.1:8848
        server-addr: 47.109.78.184:5000
#        server-addr: 127.0.0.1:8848
        #pro
#        namespace: 9591ef9f-a49a-4900-be35-d77258bdd639
        namespace: 9591ef9f-a49a-4900-be35-d77258bdd639
        #test
#        namespace: e1a7e419-e8c7-4d7d-8a0a-c00ab6ccfccd
        #dev
        namespace: 6857cbd9-6088-4fe8-bb58-2b516d99876f
#        namespace: 6857cbd9-6088-4fe8-bb58-2b516d99876f
        # 配置文件格式
        file-extension: yml
        # 共享配置
        shared-configs:
          - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
#生产环境
qywx-inner:
  corpId: ww11400938eb1b91bc
  agentId: 1000024
@@ -44,3 +49,13 @@
  encodingAESKey: ""
#测试环境
#qywx-inner:
#  corpId: ww11400938eb1b91bc
#  agentId: 1000038
#  agentSecret: vt0bmrBPWi1TrRu8lisv5IT5ZDOuxNNLNaGwcZkHLgc
#  authorizeState: HONGRUITANG
#  suiteSecret: ""
#  token: ""
#  encodingAESKey: ""
ruoyi-gateway/src/main/resources/bootstrap.yml
@@ -14,20 +14,24 @@
    nacos:
      discovery:
        # 服务注册地址
#        server-addr: 47.109.78.184:5000
        server-addr: 127.0.0.1:8848
        server-addr: 47.109.78.184:5000
#        server-addr: 127.0.0.1:8848
        #pro
#        namespace: 9591ef9f-a49a-4900-be35-d77258bdd639
        namespace: 9591ef9f-a49a-4900-be35-d77258bdd639
        #test
#        namespace: e1a7e419-e8c7-4d7d-8a0a-c00ab6ccfccd
        #dev
        namespace: 6857cbd9-6088-4fe8-bb58-2b516d99876f
#        namespace: 6857cbd9-6088-4fe8-bb58-2b516d99876f
      config:
        # 配置中心地址
#        server-addr: 47.109.78.184:5000
        server-addr: 127.0.0.1:8848
        server-addr: 47.109.78.184:5000
#        server-addr: 127.0.0.1:8848
        #pro
#        namespace: 9591ef9f-a49a-4900-be35-d77258bdd639
        namespace: 9591ef9f-a49a-4900-be35-d77258bdd639
        #test
#        namespace: e1a7e419-e8c7-4d7d-8a0a-c00ab6ccfccd
        #dev
        namespace: 6857cbd9-6088-4fe8-bb58-2b516d99876f
#        namespace: 6857cbd9-6088-4fe8-bb58-2b516d99876f
        # 配置文件格式
        file-extension: yml
        # 共享配置
@@ -43,8 +47,8 @@
      datasource:
        ds1:
          nacos:
#            server-addr: 47.109.78.184:5000
            server-addr: 127.0.0.1:8848
            server-addr: 47.109.78.184:5000
#            server-addr: 127.0.0.1:8848
            dataId: sentinel-ruoyi-gateway
            groupId: DEFAULT_GROUP
            data-type: json
ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml
@@ -23,6 +23,8 @@
#        server-addr: 127.0.0.1:8848
        #pro
        namespace: 9591ef9f-a49a-4900-be35-d77258bdd639
        #test
#        namespace: e1a7e419-e8c7-4d7d-8a0a-c00ab6ccfccd
        #dev
#        namespace: 6857cbd9-6088-4fe8-bb58-2b516d99876f
      config:
@@ -31,6 +33,8 @@
#        server-addr: 127.0.0.1:8848
        #pro
        namespace: 9591ef9f-a49a-4900-be35-d77258bdd639
        #test
#        namespace: e1a7e419-e8c7-4d7d-8a0a-c00ab6ccfccd
        #dev
#        namespace: 6857cbd9-6088-4fe8-bb58-2b516d99876f
        # 配置文件格式
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java
@@ -1,8 +1,11 @@
package com.ruoyi.goods.service.impl.activity;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.constant.Constants;
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;
@@ -24,14 +27,12 @@
import com.ruoyi.system.api.domain.dto.*;
import com.ruoyi.system.api.domain.poji.activity.ActivityGoods;
import com.ruoyi.system.api.domain.poji.config.DelayTask;
import com.ruoyi.system.api.domain.poji.goods.Goods;
import com.ruoyi.system.api.domain.vo.ActivityGoodsGetVo;
import com.ruoyi.system.api.domain.vo.MgtSimpleMemberVo;
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 com.ruoyi.system.api.service.*;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
@@ -81,6 +82,11 @@
    @Resource
    private RedisService redisService;
    @Resource
    private RemoteOrderService remoteOrderService;
    @Resource
    private RemoteGoodsService remoteGoodsService;
    @Autowired
    private RedissonClient redissonClient;
@@ -107,12 +113,97 @@
        if (StringUtils.isNotBlank(mgtActivityEditDto.getActivityId())) {
            // 获取活动信息
            activity = this.getById(mgtActivityEditDto.getActivityId());
            // 如果活动状态不为0,则表示活动正在进行中,不能修改
            if (activity.getActivityStatus() != 0) {
                throw new ServiceException(AppErrorConstant.ACTIVITY_ING_EDIT);
            if(activity.getDelFlag() == 1){
                throw new ServiceException(AppErrorConstant.ACTIVITY_DEL);
            }
            // 删除活动商品信息
            activityGoodsService.deleteByActivityId(activity.getActivityId());
            if(activity.getActivityStatus() == 2){
                throw new ServiceException(AppErrorConstant.ACTIVITY_END);
            }
            //校验可以修改的项
            if(activity.getActivityStatus() == 1){
                /**
                 * 1、活动时间:已经开始活动开始时间不可修改,结束时间不能小于当前时间
                 * 2、是否限购
                 *    - 不限购:无法修改。
                 *    - 限购:只能增加
                 * 3、适用地区
                 *    - 全部地区:无法修改。
                 *    - 指定地区:只能新增
                 * 4、适用店铺
                 *    - 全部店铺:无法修改
                 *    - 指定店铺:只能新增
                 * 5、秒杀库存:只能增加
                 * 6、活动名称、宣传海报、是否推荐、活动简介:可直接修改
                 * 7、秒杀价和定金不能修改
                 */
                if(activity.getActivityStartTime().getTime() != mgtActivityEditDto.getActivityStartTime().getTime()){
                    throw new ServiceException("活动开始后无法修改开始时间");
                }
                if(System.currentTimeMillis() >= mgtActivityEditDto.getActivityEndTime().getTime()){
                    throw new ServiceException("活动结束时间必须大于当前时间");
                }
                if(activity.getPurchaseLimitationFlag() == 0 && activity.getPurchaseLimitationFlag().compareTo(mgtActivityEditDto.getPurchaseLimitationFlag()) != 0){
                    throw new ServiceException("不能修改限购配置");
                }
                if(activity.getPurchaseLimitationFlag() == 1 && mgtActivityEditDto.getLimitNumber().compareTo(activity.getLimitNumber()) < 0){
                    throw new ServiceException("限购数量不能小于原始数量");
                }
                if(activity.getAreaFlag() == 1 && activity.getAreaFlag().compareTo(mgtActivityEditDto.getAreaFlag()) != 0){
                    throw new ServiceException("不能修改适用地区配置");
                }
                if(activity.getAreaFlag() == 2){
                    List<String> list = Arrays.asList(activity.getDesignatedArea().split(","));
                    List<String> list1 = Arrays.asList(mgtActivityEditDto.getDesignatedArea().split(","));
                    for (String s : list) {
                        if(!list1.contains(s)){
                            throw new ServiceException("适用地区只能增加");
                        }
                    }
                }
                if(activity.getShopFlag() == 1 && activity.getShopFlag().compareTo(mgtActivityEditDto.getShopFlag()) != 0){
                    throw new ServiceException("不能修改适用店铺配置");
                }
                if(activity.getShopFlag() == 2){
                    List<String> list = Arrays.asList(activity.getApplicableShop().split(","));
                    List<String> list1 = Arrays.asList(mgtActivityEditDto.getApplicableShop().split(","));
                    for (String s : list) {
                        if(!list1.contains(s)){
                            throw new ServiceException("适用店铺只能增加");
                        }
                    }
                }
                List<MgtActivityGoodsEditDto> mgtActivityGoodsEditDtoList = mgtActivityEditDto.getMgtActivityGoodsEditDtoList();
                List<String> collect = mgtActivityGoodsEditDtoList.stream().map(MgtActivityGoodsEditDto::getGoodsId).collect(Collectors.toList());
                List<ActivityGoods> list = activityGoodsService.list(new QueryWrapper<ActivityGoods>()
                        .eq("del_flag", 0)
                        .eq("activity_id", activity.getActivityId())
                );
                for (ActivityGoods activityGoods : list) {
                    String goodsId = activityGoods.getGoodsId();
                    BigDecimal activitySubscription1 = activityGoods.getActivitySubscription();
                    BigDecimal activityPrice1 = activityGoods.getActivityPrice();
                    Integer activityNumber1 = activityGoods.getActivityNumber();
                    if(!collect.contains(goodsId)){
                        throw new ServiceException("只能新增商品数据");
                    }
                    for (MgtActivityGoodsEditDto mgtActivityGoodsEditDto : mgtActivityGoodsEditDtoList) {
                        String goodsId1 = mgtActivityGoodsEditDto.getGoodsId();
                        BigDecimal activityPrice = mgtActivityGoodsEditDto.getActivityPrice();
                        BigDecimal activitySubscription = mgtActivityGoodsEditDto.getActivitySubscription();
                        Integer activityNumber = mgtActivityGoodsEditDto.getActivityNumber();
                        if(goodsId.equals(goodsId1) && activitySubscription1.compareTo(activitySubscription) != 0){
                            throw new ServiceException("不能修改定金");
                        }
                        if(goodsId.equals(goodsId1) && activityPrice1.compareTo(activityPrice) != 0){
                            throw new ServiceException("不能修改秒杀价");
                        }
                        if(goodsId.equals(goodsId1) && activityNumber1.compareTo(activityNumber) > 0){
                            throw new ServiceException("只能增加商品库存");
                        }
                    }
                }
            }
        } else {
            // 如果活动ID为空,则表示新增活动信息
            activity = new Activity();
@@ -135,6 +226,7 @@
            codeGetDto.setFileName("activity-"+activityId);
            String codeUrl = remoteFileService.getAppOrderTotal(codeGetDto).getData();
            activity.setActivityCode(codeUrl);
            activity.setActivityStatus(0);
        }
        // 获取活动开始时间和结束时间
        Date activityStartTime = mgtActivityEditDto.getActivityStartTime();
@@ -174,7 +266,6 @@
                activity.setApplicableShop(result);
            }
        }
        activity.setActivityStatus(0);
        this.saveOrUpdate(activity);
        // 获取活动商品信息
        List<MgtActivityGoodsEditDto> mgtActivityGoodsEditDtoList = mgtActivityEditDto.getMgtActivityGoodsEditDtoList();
@@ -182,7 +273,22 @@
        if (!mgtActivityGoodsEditDtoList.isEmpty()) {
            List<ActivityGoods> activityGoodsList = mgtActivityGoodsEditDtoList.stream().map(
                    dto -> {
                        ActivityGoods activityGoods = new ActivityGoods();
                        ActivityGoods activityGoods = activityGoodsService.getOne(new LambdaQueryWrapper<ActivityGoods>()
                                .eq(ActivityGoods::getActivityId, activity.getActivityId())
                                .eq(ActivityGoods::getGoodsId, dto.getGoodsId())
                                .eq(ActivityGoods::getDelFlag, 0)
                        );
                        if(null != activityGoods){
                            activityGoods.setActivityId(activity.getActivityId());
                            activityGoods.setActivityPrice(dto.getActivityPrice());
                            activityGoods.setActivitySubscription(dto.getActivitySubscription());
                            activityGoods.setActivityNumber(dto.getActivityNumber());
                            activityGoods.setActivityStock(dto.getActivityNumber());
                            activityGoods.setActivityDeadline(activity.getActivityEndTime());
                            activityGoods.setPurchaseLimitationFlag(activity.getPurchaseLimitationFlag());
                            activityGoods.setLimitNumber(activity.getLimitNumber());
                        }else{
                            activityGoods = new ActivityGoods();
                        activityGoods.setDelFlag(0);
                        activityGoods.setGoodsId(dto.getGoodsId());
                        activityGoods.setActivityId(activity.getActivityId());
@@ -195,11 +301,12 @@
                        activityGoods.setSellOutFlag(0);
                        activityGoods.setPurchaseLimitationFlag(activity.getPurchaseLimitationFlag());
                        activityGoods.setLimitNumber(activity.getLimitNumber());
                        }
                        return activityGoods;
                    }
            ).collect(Collectors.toList());
            if (!activityGoodsList.isEmpty()) {
                activityGoodsService.saveBatch(activityGoodsList);
                activityGoodsService.saveOrUpdateBatch(activityGoodsList);
            }
        }
        //如果活动在1小时内生成自动开始任务的延时任务
@@ -208,6 +315,7 @@
            String activityId = activity.getActivityId();
            long currentTimeMillis = System.currentTimeMillis();
            long startTimeDifference = activityStartTime.getTime() - currentTimeMillis;
            startTimeDifference = startTimeDifference < 0 ? 3L : startTimeDifference;
            long endTimeDifference = activityEndTime.getTime() - currentTimeMillis;
            //判断任务是否已经开始,已经开始则3秒后立即开始
            if(nowTime.compareTo(activityStartTime) > 0){
ruoyi-modules/ruoyi-goods/src/main/resources/bootstrap.yml
@@ -18,6 +18,8 @@
#        server-addr: 127.0.0.1:8848
        #pro
        namespace: 9591ef9f-a49a-4900-be35-d77258bdd639
        #test
#        namespace: e1a7e419-e8c7-4d7d-8a0a-c00ab6ccfccd
        #dev
#        namespace: 6857cbd9-6088-4fe8-bb58-2b516d99876f
      config:
@@ -26,6 +28,8 @@
#        server-addr: 127.0.0.1:8848
        #pro
        namespace: 9591ef9f-a49a-4900-be35-d77258bdd639
        #test
#        namespace: e1a7e419-e8c7-4d7d-8a0a-c00ab6ccfccd
        #dev
#        namespace: 6857cbd9-6088-4fe8-bb58-2b516d99876f
        # 配置文件格式
ruoyi-modules/ruoyi-goods/src/main/resources/mapper/activity/ActivityGoodsMapper.xml
@@ -86,12 +86,7 @@
            tag.goods_id goodsId,
            tg.goods_name goodsName,
            tg.goods_no goodsNo,
            CASE tg.goods_type
                WHEN 1 THEN "周期"
                WHEN 2 THEN "服务"
                WHEN 3 THEN "体验"
                WHEN 4 THEN "单品"
                END goodsType,
            tg.goods_type goodsType,
            tg.sales_price salesPrice,
            tag.activity_price activityPrice,
            tag.activity_subscription activitySubscription,
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberPageVo.java
@@ -83,6 +83,8 @@
    @Excel(name = "关联商户名称", width = 30, sort = 14)
    private Long relationShopId;
    private Integer bindingFlag;
    @ApiModelProperty(value = "关联商户名称")
    @Excel(name = "关联商户名称", width = 30, sort = 14)
    private String relationShopName;
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java
@@ -625,8 +625,14 @@
        String phoneNumber = merMemberAddDto.getPhonenumber();
        Member oldMember = this.getByMobile(phoneNumber);
        // Check if the member already exists
        if (oldMember != null) {
        if (oldMember != null && oldMember.getBindingFlag() == 1) {
            throw new ServiceException(AppErrorConstant.MOBILE_USER_DOUBLE);
        }
        if (oldMember != null && oldMember.getBindingFlag() == 0) {
            oldMember.setRelationShopId(merMemberAddDto.getShopId());
            oldMember.setBindingFlag(1);
            this.updateById(oldMember);
            return oldMember.getUserId();
        }
        // Get the sysUser by mobile number
        SysUser sysUser = sysUserService.getSysUserByMobile(phoneNumber).getData();
@@ -943,7 +949,7 @@
                //活跃度赋值
                Date lastPayTime;
                for (MgtMemberPageVo mgtMemberPageVo : memberPageVoList) {
                    if(null != mgtMemberPageVo.getRelationShopId()){
                    if(null != mgtMemberPageVo.getRelationShopId() && 1 == mgtMemberPageVo.getBindingFlag()){
                        R<Shop> shop_r = remoteShopService.getShop(mgtMemberPageVo.getRelationShopId());
                        if(shop_r.getCode() == 200){
                            Shop data = shop_r.getData();
@@ -1154,7 +1160,6 @@
                    mgtMemberGetVo.setRelationShopName(data.getShopName());
                }
            }
        }
        mgtMemberGetVo.setIntegral(memberTotal.getTotalIntegral());
        mgtMemberGetVo.setMemberFrom(member.getCustomerSource());
ruoyi-modules/ruoyi-member/src/main/resources/bootstrap.yml
@@ -18,6 +18,8 @@
#        server-addr: 127.0.0.1:8848
        #pro
        namespace: 9591ef9f-a49a-4900-be35-d77258bdd639
        #test
#        namespace: e1a7e419-e8c7-4d7d-8a0a-c00ab6ccfccd
        #dev
#        namespace: 6857cbd9-6088-4fe8-bb58-2b516d99876f
      config:
@@ -26,6 +28,8 @@
#        server-addr: 127.0.0.1:8848
        #pro
        namespace: 9591ef9f-a49a-4900-be35-d77258bdd639
        #test
#        namespace: e1a7e419-e8c7-4d7d-8a0a-c00ab6ccfccd
        #dev
#        namespace: 6857cbd9-6088-4fe8-bb58-2b516d99876f
        # 配置文件格式
ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml
@@ -245,6 +245,7 @@
        tm.goods_type goodsType,
        tm.relation_shop_id as relationShopId,
        CASE binding_flag WHEN 1 THEN tm.relation_shop_name ELSE "" END relationShopName,
        tm.binding_flag as bindingFlag,
        tmt.total_integral integral,
        tm.referrer referrer,
        tm.customer_source memberFrom,
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/concole/OrderController.java
@@ -175,4 +175,15 @@
        ProfitSharingResult result = orderService.queryBill(orderId);
        return R.ok(result);
    }
    /**
     * 获取活动订单商品id
     * @param activityId
     * @return
     */
    @PostMapping("/getActivityOrderGoods")
    public R<List<String>> getActivityOrderGoods(@RequestBody String activityId){
        List<String> activityOrderGoods = orderService.getActivityOrderGoods(activityId);
        return R.ok(activityOrderGoods);
    }
}
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtActivityOrderPageVo.java
@@ -28,6 +28,10 @@
    @ApiModelProperty(value="订单编号")
    private String orderNo;
    @Excel(name = "支付流水号", width = 30, sort = 1)
    @ApiModelProperty(value="支付流水号")
    private String outTradeNo;
    @Excel(name = "所属秒杀活动", width = 30, sort = 2)
    @ApiModelProperty(value="秒杀活动")
    private String activityName;
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtOrderDetailVo.java
@@ -44,6 +44,9 @@
    @ApiModelProperty(value="订单编号")
    private String orderNo;
    @ApiModelProperty(value="支付流水号")
    private String outTradeNo;
    @ApiModelProperty(value="订单来源1.商城2.秒杀活动3.线下创建")
    private String orderFrom;
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
@@ -955,6 +955,41 @@
            R<com.alibaba.fastjson.JSONObject> r = HuiFuTianXiaUtil.weixinPayment(outTradeNo, description, payMoney.doubleValue(), openid, request.getNotifyUrl());
            if(r.getCode() != 200){
                throw new ServiceException(r.getMsg());
            }else{
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
                        int time = 0;
                        for (int i = 0; i < 13; i++) {
                            try {
                                time += (5000 * i);
                                Thread.sleep(time);
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }
                            R<WeixinPaymentNotifyVo> voR = HuiFuTianXiaUtil.queryPayment(outTradeNo, sdf.format(new Date()));
                            if(voR.getCode() == 200){
                                WeixinPaymentNotifyVo data = voR.getData();
                                //P:处理中;S:成功;F:失败;I: 初始(初始状态很罕见,请联系汇付技术人员处理);
                                String transStat = data.getTransStat();
                                if("S".equals(transStat)){
                                    PartnerTransactionsResult transaction = new PartnerTransactionsResult();
                                    transaction.setOutTradeNo(data.getReqSeqId());
                                    payBack(transaction, data.getFeeFlag() == 1 ? BigDecimal.ZERO : new BigDecimal(data.getFeeAmount()));
                                    return;
                                }
                                if("P".equals(transStat) || "F".equals(transStat)){
                                    continue;
                                }
                                log.error("支付失败,流水号:{}, 状态码:{}", outTradeNo, transStat);
                                return;
                            }else{
                                log.error("支付查询失败!流水号:{},结果:{}", outTradeNo, voR.getMsg());
                            }
                        }
                    }
                }).start();
            }
            com.alibaba.fastjson.JSONObject data = r.getData();
            String mainMchId = WxPayConfiguration.getPlatformTyMacId();
@@ -3191,8 +3226,6 @@
        Order order = this.getById(orderId);
        // 获取会员信息
        Member member = remoteMemberService.getMember(order.getUserId()).getData();
        // 获取商店信息
        Shop shop = remoteShopService.getShop(order.getShopId()).getData();
        // 获取订单商品详细信息
        List<MgtOrderGoodsDetailVo> orderGoodsDetailVoList = orderGoodsService.listMgtVoByOrderId(orderId);
        // 设置MgtOrderDetailVo属性
@@ -3222,6 +3255,7 @@
        }
        // 设置订单编号
        mgtOrderDetailVo.setOrderNo(order.getOrderNo());
        mgtOrderDetailVo.setOutTradeNo(order.getOutTradeNo());
        // 设置订单来源
        switch (order.getOrderFrom()) {
            case 1:
@@ -3252,10 +3286,12 @@
        mgtOrderDetailVo.setCancelTime(order.getCancelTime());
        mgtOrderDetailVo.setOrderRemark(order.getOrderRemark());
        mgtOrderDetailVo.setShopId(order.getShopId());
        if (shop != null) {
        if (3 == order.getOrderStatus()) {
            // 获取商店信息
            Shop shop = remoteShopService.getShop(order.getShopId()).getData();
            mgtOrderDetailVo.setShopName(shop.getShopName());
        } else {
            mgtOrderDetailVo.setShopName("商户已被删除");
            mgtOrderDetailVo.setShopName("");
        }
        mgtOrderDetailVo.setVerifyTime(order.getUseTime());
        //获取支付记录
@@ -6231,4 +6267,22 @@
        ProfitSharingResult profitSharingResult = wxService.getEcommerceService().queryProfitSharing(request);
        return profitSharingResult;
    }
    @Override
    public List<String> getActivityOrderGoods(String activityId) {
        List<Order> orders = this.baseMapper.selectList(new QueryWrapper<Order>()
                .eq("del_flag", 0)
                .in("order_status", Arrays.asList(1, 2, 3))
                .eq("activity_id", activityId)
        );
        if(orders.size() > 0){
            List<String> collect = orders.stream().map(Order::getOrderId).collect(Collectors.toList());
            List<OrderGoods> list = orderGoodsService.list(new QueryWrapper<OrderGoods>()
                    .eq("del_flag", 0)
                    .in("order_id", collect)
            );
            return list.stream().map(OrderGoods::getGoodsId).collect(Collectors.toList());
        }
        return new ArrayList<>();
    }
}
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java
@@ -589,4 +589,12 @@
    ProfitSharingResult queryBill(String orderId) throws WxPayException;
    /**
     * 根据活动id获取订单商品id列表
     * @param activityId
     * @return
     */
    List<String> getActivityOrderGoods(String activityId);
}
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/HuiFuTianXiaUtil.java
@@ -13,8 +13,11 @@
import com.ruoyi.order.domain.vo.PaymentDelaytransHFTXVo;
import com.ruoyi.order.domain.vo.WeixinPaymentNotifyVo;
import com.ruoyi.order.domain.vo.WeixinPaymentRefundVo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.StringUtils;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.security.KeyFactory;
import java.security.PrivateKey;
@@ -31,6 +34,7 @@
 * @Date 2023/10/12 0:02
 */
public class HuiFuTianXiaUtil {
    private static Logger logger = LoggerFactory.getLogger(HuiFuTianXiaUtil.class);
    //私钥(Base64编码)
    private static String privateKeyBase64 = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCs658vv/6VdoSGyxr7gVNxlsFGKC2RE4I3S3C78f7t29t6oSm7tdRUr+B/I1VtV1Ps2SQMqG+gUpLiVbHEj+U8PjrvSht6cBNpqhnUjBASEhO0zeCJXNj3zqEDj7CnzDbUzuZWZDyLEaSLRaVb/DSW34D0GDsGWpIMLui/lnubXCYMNsUJBgRmV/tSv7vApVok3aKDoYkZMDhfnKrbxTtWkDfwNLDCInB300YbGeN7hhECRestktymHw0I78x3g+pdzOKOSofqdHyBCemVgOBt2h+oulVU65jc5ok0vwhx7sk2+i3Dw/S/hx3fpnOAToLhpFSTCqArG5wOhiOTX5RRAgMBAAECggEAT+uu7VDdh5L5eZtR40BIos08kwJq3QyZOJlDh3o3ixP8gtcOBNXrRyDqr5hTGXAtN+C8SqVmwkCn5rgYq3KeTpOshYBI5vP55PJbceMyYke8l+o3hwVEunPj81NsIIHALedaij9VxCjpVf1gif0tCTZP0YGJdkxSCBN+O15/zrOred2xkbAGXCNM2j+uIOZ5LTQ064jUAm9KWO4JvVnlNCQPiJCfe652i4RE9adgTlT7d9XffQ/oZDZcDkD1OVUO4ErsSgvjsjPW9Qk8zAVm/C+ycs27GUbVf6yh3zMoL4JDshzoMYAVDqP3VkpYGiW71PzcOZqktcjbtCom4/gpqQKBgQDgHrsQVzMwr18gRAWl8PsgHyMvhyivzk7uPvm6nK9mvEGg7wnrCMKHkpEOCi4mHWnW6H9ptrkeAQbHN7H8Qd6JZm/H0VN8N8fg4IFarlrLWXET6s7or9btCf4aq8DGrU9C+7fcngSfuqlrSxy9e+9InmzUFGKVLBtYIJbG1r00qwKBgQDFhHhhc4WC1MrWLSGhpaNp+swPstfzUBeX2MtZOIv6yXTYPvJ77AAZoLnW482eUZucltCAUucEtTsop25dKdhbdhbVJ/YRRnaklBL2rai4HX+fjoV29tepJhrOrq3Ey+vqvDEsqrBz2C6YyJ6d9aaPPwCFsnDRO+g7tK9S4ZfC8wKBgGlhKbXqOnCW1RSXx0waPgoBegrb816OlABj7go3qCWXOQiRvMkdilIysS+3y7EyPVTGZzpupyYbd3Nulaq10gwq9T4wB6Atnjb3ePsJZjmdKZUi3/z6yQUVoLwrq+3/CXjGYNJEHop4Ozbuz2ms/3rWuvcRSrU3UvgiAqMlzzsXAoGAJY7xDSbYZm5sO5nNYV2L22UzVHDfm4bJVbiFwmt8Qq34J/6gQWw5AKaNcA1VVhuSiY4sC5q4Dy8fFrXvyItidtHXuaSlp9dMTDNT/9A52vjRAdgqDNsXWzTBuDeDF37nV3V9rE6wyvZ6tdbAQq0phOeoA8RQq5jGqkPLauk24H0CgYEAn92Ru9UuloMmTrJbpeeLmMkwCzKff4SpYSY3WzidjdlfHpyNqBUMYb5Ym3OplrSONT9o2H5mEQipjatiu0teILBT7j+f9ZJYQ3vUurAXbmKtthHuEV4lueylNUgmkv+dm295n2x79w1mk/0emJ/Qr9tz43dpSV/kRCxc+lX+OFk=";
    //公钥(Base64编码)
@@ -94,7 +98,7 @@
        headers.put("Content-type","application/json; charset=utf-8");
        headers.put("Accept", "application/json");
        post.addHeaders(headers);
        System.err.println(JSON.toJSONString(body));
        logger.info(JSON.toJSONString(body));
        post.body(body.toJSONString());
        HttpResponse execute = post.execute();
        String result1 = execute.body();
@@ -147,6 +151,60 @@
    }
    /**
     * 查询支付数据
     * @param org_req_seq_id    请求流水号
     * @param org_req_date      请求日期
     * @return
     */
    public static R<WeixinPaymentNotifyVo> queryPayment(String org_req_seq_id, String org_req_date){
        String url = "https://api.huifu.com/v2/trade/payment/scanpay/query";
        JSONObject data = new JSONObject();
        data.put("huifu_id", huifu_id);
        data.put("org_req_seq_id", org_req_seq_id);
        data.put("org_req_date", org_req_date);
        JSONObject body = new JSONObject();
        body.put("sys_id", huifu_id);
        body.put("product_id", product_id);
        body.put("sign", sign(data.toJSONString()));
        body.put("data", data);
        HttpRequest post = HttpUtil.createPost(url);
        Map<String, String> headers = new HashMap<>();
        headers.put("Content-type","application/json; charset=utf-8");
        headers.put("Accept", "application/json");
        post.addHeaders(headers);
        logger.info(JSON.toJSONString(body));
        post.body(body.toJSONString());
        HttpResponse execute = post.execute();
        String result1 = execute.body();
        execute.close();
        if(StringUtils.hasLength(result1)){
            JSONObject result = JSONObject.parseObject(result1);
            JSONObject resultData = result.getJSONObject("data");
            String resp_code = resultData.getString("resp_code");
            String resp_desc = resultData.getString("resp_desc");
            //交易受理成功;注:交易状态以trans_stat为准;
            String success1 = "00000000";
            if(success1.equals(resp_code)){
                WeixinPaymentNotifyVo vo = new WeixinPaymentNotifyVo();
                vo.setReqSeqId(resultData.getString("org_req_seq_id"));
                vo.setReqDate(resultData.getString("org_req_date"));
                vo.setTransAmt(resultData.getString("trans_amt"));
                vo.setPayAmt(resultData.getString("pay_amt"));
                vo.setEndTime(resultData.getString("end_time"));
                vo.setTransStat(resultData.getString("trans_stat"));
                String fee_type = resultData.getString("fee_type");
                vo.setFeeFlag("INNER".equals(fee_type) ? 2 : 1);
                vo.setFeeAmount(resultData.getString("fee_amt"));
                return R.ok(vo);
            }
            return R.fail(resp_desc);
        }
        return R.fail("请求异常");
    }
    /**
@@ -181,7 +239,7 @@
        headers.put("Accept", "application/json");
        post.addHeaders(headers);
        post.body(body.toJSONString());
        System.err.println(JSON.toJSONString(body));
        logger.info(JSON.toJSONString(body));
        HttpResponse execute = post.execute();
        String result1 = execute.body();
        execute.close();
@@ -349,7 +407,7 @@
        headers.put("Accept", "application/json");
        post.addHeaders(headers);
        post.body(body.toJSONString());
        System.err.println(JSON.toJSONString(body));
        logger.info(JSON.toJSONString(body));
        HttpResponse execute = post.execute();
        String result = execute.body();
        execute.close();
@@ -378,12 +436,19 @@
    public static void main(String[] args) {
        //174.91
        //分账对象
        JSONArray acctInfos = new JSONArray();
        com.alibaba.fastjson2.JSONObject jsonObject = new com.alibaba.fastjson2.JSONObject();
        jsonObject.put("div_amt", String.format("%.2f", 0.07D));
        jsonObject.put("huifu_id", "6666000141251275");
        jsonObject.put("div_amt", String.format("%.2f", 173.35));
        jsonObject.put("huifu_id", "6666000141286934");
        acctInfos.add(jsonObject);
        HuiFuTianXiaUtil.paymentDelaytrans(IdUtils.simpleUUID(), "20231020", "0479854e057547698be8b083f2fa550a", acctInfos);
        //平台商户
        com.alibaba.fastjson2.JSONObject jsonObject1 = new com.alibaba.fastjson2.JSONObject();
        jsonObject1.put("div_amt", String.format("%.2f", 1.56));
        jsonObject1.put("huifu_id", "6666000141216769");
        acctInfos.add(jsonObject1);
        R<PaymentDelaytransHFTXVo> paymentDelaytransHFTXVoR = HuiFuTianXiaUtil.paymentDelaytrans(IdUtils.simpleUUID(), "20231111", "57dbe646b14542ce8bce166490d3e46e", acctInfos);
        System.err.println(JSON.toJSONString(paymentDelaytransHFTXVoR));
    }
}
ruoyi-modules/ruoyi-order/src/main/resources/bootstrap.yml
@@ -18,6 +18,8 @@
#        server-addr: 127.0.0.1:8848
        #pro
        namespace: 9591ef9f-a49a-4900-be35-d77258bdd639
        #test
#        namespace: e1a7e419-e8c7-4d7d-8a0a-c00ab6ccfccd
        #dev
#        namespace: 6857cbd9-6088-4fe8-bb58-2b516d99876f
      config:
@@ -26,6 +28,8 @@
#        server-addr: 127.0.0.1:8848
        #pro
        namespace: 9591ef9f-a49a-4900-be35-d77258bdd639
        #test
#        namespace: e1a7e419-e8c7-4d7d-8a0a-c00ab6ccfccd
        #dev
#        namespace: 6857cbd9-6088-4fe8-bb58-2b516d99876f
        # 配置文件格式
ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
@@ -376,7 +376,7 @@
        CASE toc.order_from WHEN 1 THEN '商城订单' WHEN 2 THEN CONCAT('平台秒杀活动(',toc.activity_name,')') WHEN 3 THEN '线下创建' END orderFromDesc,
        toc.activity_name activityName
        FROM t_order toc
        WHERE toc.del_flag = 0 AND toc.shop_id = #{param.shopId}
        WHERE toc.del_flag = 0 AND toc.shop_id = #{param.shopId}  and if(toc.order_from = 1, 1 = 1, toc.order_status = 3)<!--临时增加过滤-->
        <if test="param.memberUserId != null and param.memberUserId != ''">
            AND toc.user_id = #{param.memberUserId}
        </if>
@@ -515,6 +515,7 @@
        SELECT
            toc.order_id orderId,
            toc.order_no orderNo,
            toc.out_trade_no as outTradeNo,
            toc.user_id userId,
            toc.activity_name activityName,
            tog.goods_name goodsName,
@@ -1724,7 +1725,7 @@
        IFNULL(SUM(toc.change_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,
        IFNULL(SUM(CASE toc.pay_type WHEN 2 THEN toc.online_pay_money ELSE 0 END),0) receivableDeposit
        FROM t_order toc
        WHERE toc.del_flag = 0 AND toc.shop_id = #{param.shopId}
        WHERE toc.del_flag = 0 AND toc.shop_id = #{param.shopId} and if(toc.order_from = 1, 1 = 1, toc.order_status = 3)<!--临时增加过滤-->
        <if test="param.memberUserId != null and param.memberUserId != ''">
            AND toc.user_id = #{param.memberUserId}
        </if>
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtShopController.java
@@ -364,6 +364,8 @@
    }
    @RequestMapping(value = "/getMgtShopHFTXAuthInfo", method = RequestMethod.POST)
    @ApiOperation(value = "获取商户进件信息(汇付天下)")
    public R<MgtShopHFTXAuthGetVo> getMgtShopHFTXAuthInfo(@Validated @RequestBody MgtShopHFTXAuthGetDto mgtShopHFTXAuthGetDto){
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtShopHFTXAuthDto.java
@@ -140,4 +140,11 @@
    private String legalMobileNo;
    @ApiModelProperty(value = "法人身份证地址", dataType = "string", required = true)
    private String legalAddr;
    @ApiModelProperty(value = "协议图片地址", dataType = "string", required = true)
    private String settleAgreePic;
    @ApiModelProperty(value = "协议图片地址20220606", dataType = "string", required = true)
    private String agreeBeginDate;
    @ApiModelProperty(value = "协议图片地址20220606", dataType = "string", required = true)
    private String agreeEndDate;
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/shop/ShopAuthenticationHftx.java
@@ -448,6 +448,26 @@
     */
    @TableField(value = "legal_addr")
    private String legalAddr;
    /**
     * 协议图片地址
     */
    @TableField(value = "settle_agree_pic")
    private String settleAgreePic;
    /**
     * 协议图片编号
     */
    @TableField(value = "settle_agree_pic_no")
    private String settleAgreePicNo;
    /**
     * 协议开始时间
     */
    @TableField(value = "agree_begin_date")
    private String agreeBeginDate;
    /**
     * 协议结束时间
     */
    @TableField(value = "agree_end_date")
    private String agreeEndDate;
    @Override
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopHFTXAuthGetVo.java
@@ -137,4 +137,12 @@
    private String legalMobileNo;
    @ApiModelProperty(value = "法人身份证地址", dataType = "string", required = true)
    private String legalAddr;
    @ApiModelProperty(value = "协议图片地址", dataType = "string", required = true)
    private String settleAgreePic;
    @ApiModelProperty(value = "协议开始时间", dataType = "string", required = true)
    private String agreeBeginDate;
    @ApiModelProperty(value = "协议结束时间", dataType = "string", required = true)
    private String agreeEndDate;
    @ApiModelProperty(value = "审核结果;U:审核中,Y:审核通过,N:审核拒绝,F:失败", dataType = "string", required = true)
    private String auditStatus;
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java
@@ -461,7 +461,7 @@
        }else{
            shop.setCooperativeFlag(0);
        }
        shop.setShopStatus(handelShopStatus(shop.getFrozenFlag(),shop.getCooperativeFlag(),shop.getAuthFlag(),shop.getAccountFlag()));
        shop.setShopStatus(handelShopStatus(shop.getFrozenFlag(),shop.getCooperativeFlag(),shop.getAuthFlag()));
        shop.setUpdateTime(new Date());
        shop.setUpdateUserId(mgtTerminateCooperationDto.getUserId());
        this.saveOrUpdate(shop);
@@ -482,7 +482,7 @@
        }else{
            shop.setFrozenFlag(0);
        }
        shop.setShopStatus(handelShopStatus(shop.getFrozenFlag(),shop.getCooperativeFlag(),shop.getAuthFlag(),shop.getAccountFlag()));
        shop.setShopStatus(handelShopStatus(shop.getFrozenFlag(),shop.getCooperativeFlag(),shop.getAuthFlag()));
        this.saveOrUpdate(shop);
    }
@@ -493,13 +493,13 @@
     * @param
     * @return  Integer
     */
    private Integer handelShopStatus(Integer frozenFlag, Integer cooperativeFlag, Integer authFlag,Integer accountFlag){
    private Integer handelShopStatus(Integer frozenFlag, Integer cooperativeFlag, Integer authFlag){
        Integer shopStatus = 1;
        if(frozenFlag == 1){
            shopStatus = 0;
            return shopStatus;
        }
        if(authFlag == 0 || accountFlag==0){
        if(authFlag == 0){
            shopStatus = 3;
            return shopStatus;
        }
@@ -1123,7 +1123,7 @@
    @Override
    public void mgtShopHFTXAuth(MgtShopHFTXAuthDto mgtShopHFTXAuthDto) {
        ShopAuthenticationHftx shopAuthenticationHftx = shopAuthenticationHftxService.getOne(new QueryWrapper<ShopAuthenticationHftx>().eq("shop_id", mgtShopHFTXAuthDto.getShopId()));
        if(null != shopAuthenticationHftx && "Y".equals(shopAuthenticationHftx.getAuditStatus())){
        if(null != shopAuthenticationHftx && "U".equals(shopAuthenticationHftx.getAuditStatus())){
            throw new ServiceException("不能重复进件");
        }
        if(null == shopAuthenticationHftx){
@@ -1131,6 +1131,7 @@
            shopAuthenticationHftx.setIsDelete(0);
            shopAuthenticationHftx.setInsertTime(new Date());
        }
        String auditStatus = shopAuthenticationHftx.getAuditStatus();
        BeanUtils.copyProperties(mgtShopHFTXAuthDto, shopAuthenticationHftx);
        shopAuthenticationHftx.setReqSeqId(IdUtils.simpleUUID());
        shopAuthenticationHftx.setAuditStatus("");
@@ -1139,13 +1140,18 @@
         * 开始调起进件接口
         */
        R<MerchantBasicdataVo> r = null;
        //用户
        if(mgtShopHFTXAuthDto.getType() == 1){
        //用户(重新提交)
        if((StringUtils.isEmpty(auditStatus) || "N".equals(auditStatus) || "F".equals(auditStatus)) && mgtShopHFTXAuthDto.getType() == 1){
            r = HuiFuTianXiaUtil.merchantBasicdataIndv(mgtShopHFTXAuthDto, shopAuthenticationHftx, callback_path + "/shop/mgt/shop/merchantBasicdataNotify");
        }
        //企业进件
        if(mgtShopHFTXAuthDto.getType() == 2){
        //企业进件(重新提交)
        if((StringUtils.isEmpty(auditStatus) || "N".equals(auditStatus) || "F".equals(auditStatus)) && mgtShopHFTXAuthDto.getType() == 2){
            r = HuiFuTianXiaUtil.merchantBasicdataEnt(mgtShopHFTXAuthDto, shopAuthenticationHftx, callback_path + "/shop/mgt/shop/merchantBasicdataNotify");
        }
        //修改资料
        if("Y".equals(auditStatus)){
            r = HuiFuTianXiaUtil.merchantBasicdataModify(mgtShopHFTXAuthDto, shopAuthenticationHftx, callback_path + "/shop/mgt/shop/merchantBasicdataNotify");
        }
        if(null == r){
            throw new ServiceException("参数异常");
@@ -1186,11 +1192,13 @@
            if("Y".equals(data.getAuditStatus())){
                Shop shop = this.getByShopId(shopAuthenticationHftx.getShopId());
                shop.setShopStatus(1);
                shop.setAuthFlag(1);
                this.updateById(shop);
            }
        }
        return R.ok(data.getReqSeqId());
    }
    /**
     * @description  获取平台商户统计
@@ -1651,13 +1659,17 @@
    private void applySuccessUpdateShopStatus(Long shopId){
        // 更新商户状态为正常
        Shop shop = this.getById(shopId);
        Integer shopStatus = handelShopStatus(shop.getFrozenFlag(), shop.getCooperativeFlag(), 1,shop.getAccountFlag());
        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);
    }
    /**
     * @description
@@ -1779,7 +1791,7 @@
                ProfitSharingReceiverResult result = wechatPayUtils.addProfitSharingReceiver(request);
                if(StringUtils.isNotBlank(result.getAccount())){
                    shop.setAccountFlag(1);
                    shop.setShopStatus(handelShopStatus(shop.getFrozenFlag(),shop.getCooperativeFlag(),shop.getAuthFlag(),1));
                    shop.setShopStatus(handelShopStatus(shop.getFrozenFlag(),shop.getCooperativeFlag(),shop.getAuthFlag()));
                    this.saveOrUpdate(shop);
                }
            }
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopService.java
@@ -239,6 +239,8 @@
    /**
     * @description  获取平台商户统计
     * @author  jqs
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/HuiFuTianXiaUtil.java
@@ -20,6 +20,8 @@
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.StringUtils;
import java.io.File;
@@ -40,6 +42,7 @@
 * @Date 2023/10/12 0:02
 */
public class HuiFuTianXiaUtil {
    private static Logger logger = LoggerFactory.getLogger(HuiFuTianXiaUtil.class);
    //私钥(Base64编码)
    private static String privateKeyBase64 = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCs658vv/6VdoSGyxr7gVNxlsFGKC2RE4I3S3C78f7t29t6oSm7tdRUr+B/I1VtV1Ps2SQMqG+gUpLiVbHEj+U8PjrvSht6cBNpqhnUjBASEhO0zeCJXNj3zqEDj7CnzDbUzuZWZDyLEaSLRaVb/DSW34D0GDsGWpIMLui/lnubXCYMNsUJBgRmV/tSv7vApVok3aKDoYkZMDhfnKrbxTtWkDfwNLDCInB300YbGeN7hhECRestktymHw0I78x3g+pdzOKOSofqdHyBCemVgOBt2h+oulVU65jc5ok0vwhx7sk2+i3Dw/S/hx3fpnOAToLhpFSTCqArG5wOhiOTX5RRAgMBAAECggEAT+uu7VDdh5L5eZtR40BIos08kwJq3QyZOJlDh3o3ixP8gtcOBNXrRyDqr5hTGXAtN+C8SqVmwkCn5rgYq3KeTpOshYBI5vP55PJbceMyYke8l+o3hwVEunPj81NsIIHALedaij9VxCjpVf1gif0tCTZP0YGJdkxSCBN+O15/zrOred2xkbAGXCNM2j+uIOZ5LTQ064jUAm9KWO4JvVnlNCQPiJCfe652i4RE9adgTlT7d9XffQ/oZDZcDkD1OVUO4ErsSgvjsjPW9Qk8zAVm/C+ycs27GUbVf6yh3zMoL4JDshzoMYAVDqP3VkpYGiW71PzcOZqktcjbtCom4/gpqQKBgQDgHrsQVzMwr18gRAWl8PsgHyMvhyivzk7uPvm6nK9mvEGg7wnrCMKHkpEOCi4mHWnW6H9ptrkeAQbHN7H8Qd6JZm/H0VN8N8fg4IFarlrLWXET6s7or9btCf4aq8DGrU9C+7fcngSfuqlrSxy9e+9InmzUFGKVLBtYIJbG1r00qwKBgQDFhHhhc4WC1MrWLSGhpaNp+swPstfzUBeX2MtZOIv6yXTYPvJ77AAZoLnW482eUZucltCAUucEtTsop25dKdhbdhbVJ/YRRnaklBL2rai4HX+fjoV29tepJhrOrq3Ey+vqvDEsqrBz2C6YyJ6d9aaPPwCFsnDRO+g7tK9S4ZfC8wKBgGlhKbXqOnCW1RSXx0waPgoBegrb816OlABj7go3qCWXOQiRvMkdilIysS+3y7EyPVTGZzpupyYbd3Nulaq10gwq9T4wB6Atnjb3ePsJZjmdKZUi3/z6yQUVoLwrq+3/CXjGYNJEHop4Ozbuz2ms/3rWuvcRSrU3UvgiAqMlzzsXAoGAJY7xDSbYZm5sO5nNYV2L22UzVHDfm4bJVbiFwmt8Qq34J/6gQWw5AKaNcA1VVhuSiY4sC5q4Dy8fFrXvyItidtHXuaSlp9dMTDNT/9A52vjRAdgqDNsXWzTBuDeDF37nV3V9rE6wyvZ6tdbAQq0phOeoA8RQq5jGqkPLauk24H0CgYEAn92Ru9UuloMmTrJbpeeLmMkwCzKff4SpYSY3WzidjdlfHpyNqBUMYb5Ym3OplrSONT9o2H5mEQipjatiu0teILBT7j+f9ZJYQ3vUurAXbmKtthHuEV4lueylNUgmkv+dm295n2x79w1mk/0emJ/Qr9tz43dpSV/kRCxc+lX+OFk=";
    //公钥(Base64编码)
@@ -101,7 +104,7 @@
        body.put("product_id", product_id);
        body.put("sign", sign(data.toJSONString()));
        body.put("data", data);
        System.err.println(JSON.toJSONString(body));
        logger.info(JSON.toJSONString(body));
        HttpRequest post = HttpUtil.createPost(url);
        Map<String, String> headers = new HashMap<>();
        headers.put("Content-type","application/json; charset=utf-8");
@@ -526,7 +529,7 @@
        headers.put("Accept", "application/json");
        post.addHeaders(headers);
        post.body(body.toJSONString());
        System.err.println(JSON.toJSONString(body));
        logger.info(JSON.toJSONString(body));
        HttpResponse execute = post.execute();
        String result = execute.body();
        execute.close();
@@ -716,7 +719,7 @@
        body.put("product_id", product_id);
        body.put("sign", sign(data.toJSONString()));
        body.put("data", data);
        System.err.println(JSON.toJSONString(body));
        logger.info(JSON.toJSONString(body));
        HttpRequest post = HttpUtil.createPost(url);
        Map<String, String> headers = new HashMap<>();
        headers.put("Content-type","application/json; charset=utf-8");
@@ -752,6 +755,263 @@
    /**
     * 修改商户信息
     * @param dto
     * @param shopAuthenticationHftx
     * @param async_return_url
     * @return
     */
    public static R<MerchantBasicdataVo> merchantBasicdataModify(MgtShopHFTXAuthDto dto, ShopAuthenticationHftx shopAuthenticationHftx, String async_return_url){
        String url = "https://api.huifu.com/v2/merchant/basicdata/modify";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        JSONObject data = new JSONObject();
        data.put("req_seq_id", shopAuthenticationHftx.getReqSeqId());
        data.put("req_date", sdf.format(new Date()));
        data.put("upper_huifu_id", channel_id);
        data.put("huifu_id", shopAuthenticationHftx.getHuifuId());
        data.put("reg_name", dto.getRegName());
        data.put("short_name", dto.getShortName());
        data.put("ent_type", dto.getEntType());
        data.put("license_code", dto.getLicenseCode());
        data.put("license_validity_type", dto.getLicenseValidityType());
        data.put("license_begin_date", dto.getLicenseBeginDate());
        if("0".equals(dto.getLicenseValidityType())){
            data.put("license_end_date", dto.getLicenseEndDate());
        }
        data.put("reg_prov_id", dto.getRegProvId());
        data.put("reg_area_id", dto.getRegAreaId());
        data.put("reg_district_id", dto.getRegDistrictId());
        data.put("reg_detail", dto.getRegDetail());
        data.put("legal_name", dto.getLegalName());
        data.put("legal_cert_type", dto.getLegalCertType());
        data.put("legal_cert_no", dto.getLegalCertNo());
        data.put("legal_cert_validity_type", dto.getLegalCertValidityType());
        data.put("legal_cert_begin_date", dto.getLegalCertBeginDate());
        if("0".equals(dto.getLegalCertValidityType())){
            data.put("legal_cert_end_date", dto.getLegalCertEndDate());
        }
        data.put("prov_id", dto.getProvId());
        data.put("area_id", dto.getAreaId());
        data.put("district_id", dto.getDistrictId());
        data.put("detail_addr", dto.getDetailAddr());
        data.put("contact_name", dto.getContactName());
        data.put("contact_mobile_no", dto.getContactMobileNo());
        data.put("contact_email", dto.getContactEmail());
        data.put("service_phone", dto.getServicePhone());
        data.put("busi_type", "1");
        data.put("receipt_name", dto.getReceiptName());
        data.put("mcc", "7297");
        //结算卡信息配置
        dto.setCertType("00");
        dto.setCertValidityType("1");
        if(StringUtils.hasLength(dto.getCertEndDate())){
            dto.setCertValidityType("0");
        }
        JSONObject card_info = new JSONObject();
        card_info.put("card_type", dto.getCardType());
        card_info.put("card_name", dto.getCardName());
        card_info.put("card_no", dto.getCardNo());
        if(!"0".equals(dto.getCardType())){
            card_info.put("prov_id", dto.getJsProvId());
            card_info.put("area_id", dto.getJsAreaId());
            card_info.put("cert_type", dto.getCertType());
        }
        if("0".equals(dto.getCardType())){
            card_info.put("branch_code", dto.getBranchCode());
        }
        card_info.put("cert_no", dto.getCertNo());
        card_info.put("cert_validity_type", dto.getCertValidityType());
        if("0".equals(dto.getCertValidityType())){
            card_info.put("cert_end_date", dto.getCertEndDate());
        }
        card_info.put("mp", dto.getMp());
        data.put("card_info", card_info.toJSONString());
        //取现信息配置
        JSONArray jsonArray = new JSONArray();
        JSONObject cash_config = new JSONObject();
        cash_config.put("switch_state", "1");
        cash_config.put("cash_type", "T1");
        cash_config.put("fix_amt", "0.00");
        jsonArray.add(cash_config);
        data.put("cash_config", jsonArray.toJSONString());
        //结算规则配置
        JSONObject settle_config = new JSONObject();
        settle_config.put("settle_status", "1");
        settle_config.put("settle_cycle", "T1");
        settle_config.put("settle_pattern", "P0");
        settle_config.put("settle_batch_no", "0");
        settle_config.put("constant_amt", "0.00");
        data.put("settle_config", settle_config.toJSONString());
        //协议
        JSONObject agreement_info = new JSONObject();
        agreement_info.put("agreement_type", "1");
        agreement_info.put("agree_begin_date", dto.getAgreeBeginDate());
        agreement_info.put("agree_end_date", dto.getAgreeEndDate());
        data.put("agreement_info", agreement_info.toJSONString());
        //扩展资料包
        JSONArray extended_material_list = new JSONArray();
        data.put("async_return_url", async_return_url);
//        data.put("mer_icp", dto.getMerIcp());
        data.put("mer_icp", "");
        data.put("open_licence_no", dto.getOpenLicenceNo());
        data.put("head_huifu_id", huifu_id);
        R<String> r = supplementaryPicture(dto.getRegAcctPic(), IdUtils.simpleUUID(), "F08");
        if(r.getCode() == 200){
            data.put("reg_acct_pic", r.getData());
            shopAuthenticationHftx.setRegAcctPicNo(r.getData());
        }else{
            return R.fail(r.getMsg());
        }
        if(!"0".equals(dto.getCardType())){
            r = supplementaryPicture(dto.getSettleCardFrontPic(), IdUtils.simpleUUID(), "F13");
            if(r.getCode() == 200){
                data.put("settle_card_front_pic", r.getData());
                shopAuthenticationHftx.setSettleCardFrontPicNo(r.getData());
            }else{
                return R.fail(r.getMsg());
            }
        }
        r = supplementaryPicture(dto.getSettleCertBackPic(), IdUtils.simpleUUID(), "F56");
        if(r.getCode() == 200){
            data.put("settle_cert_back_pic", r.getData());
            shopAuthenticationHftx.setSettleCertBackPicNo(r.getData());
        }else{
            return R.fail(r.getMsg());
        }
        r = supplementaryPicture(dto.getSettleCertFrontPic(), IdUtils.simpleUUID(), "F55");
        if(r.getCode() == 200){
            data.put("settle_cert_front_pic", r.getData());
            shopAuthenticationHftx.setSettleCertFrontPicNo(r.getData());
        }else{
            return R.fail(r.getMsg());
        }
        r = supplementaryPicture(dto.getTaxRegPic(), IdUtils.simpleUUID(), "F58");
        if(r.getCode() == 200){
            data.put("tax_reg_pic", r.getData());
            shopAuthenticationHftx.setTaxRegPicNo(r.getData());
        }else{
            return R.fail(r.getMsg());
        }
        r = supplementaryPicture(dto.getLegalCertBackPic(), IdUtils.simpleUUID(), "F03");
        if(r.getCode() == 200){
            data.put("legal_cert_back_pic", r.getData());
            shopAuthenticationHftx.setLegalCertBackPicNo(r.getData());
        }else{
            return R.fail(r.getMsg());
        }
        r = supplementaryPicture(dto.getLegalCertFrontPic(), IdUtils.simpleUUID(), "F02");
        if(r.getCode() == 200){
            data.put("legal_cert_front_pic", r.getData());
            shopAuthenticationHftx.setLegalCertFrontPicNo(r.getData());
        }else{
            return R.fail(r.getMsg());
        }
        r = supplementaryPicture(dto.getLicensePic(), IdUtils.simpleUUID(), "F07");
        if(r.getCode() == 200){
            data.put("license_pic", r.getData());
            shopAuthenticationHftx.setLicensePicNo(r.getData());
        }else{
            return R.fail(r.getMsg());
        }
        r = supplementaryPicture(dto.getSettleAgreePic(), IdUtils.simpleUUID(), "F116");
        if(r.getCode() == 200){
            JSONObject extended_material = new JSONObject();
            extended_material.put("file_id", r.getData());
            extended_material.put("file_type", "F480");
            extended_material_list.add(extended_material);
            shopAuthenticationHftx.setSettleAgreePicNo(r.getData());
        }else{
            return R.fail(r.getMsg());
        }
        if(!"0".equals(dto.getCardType()) && !dto.getLegalName().equals(dto.getCardName())){
            r = supplementaryPicture(dto.getAuthEnturstPic(), IdUtils.simpleUUID(), "F15");
            if(r.getCode() == 200){
                data.put("auth_enturst_pic", r.getData());
                shopAuthenticationHftx.setAuthEnturstPicNo(r.getData());
            }else{
                return R.fail(r.getMsg());
            }
        }
        data.put("extended_material_list", extended_material_list.toJSONString());
        data.put("reg_capital", dto.getRegCapital());
        data.put("business_scope", dto.getBusinessScope());
        data.put("found_date", dto.getFoundDate());
        data.put("scene_type", "OFFLINE");
        r = supplementaryPicture(dto.getStoreHeaderPic(), IdUtils.simpleUUID(), "F22");
        if(r.getCode() == 200){
            data.put("store_header_pic", r.getData());
            shopAuthenticationHftx.setStoreHeaderPicNo(r.getData());
        }else{
            return R.fail(r.getMsg());
        }
        r = supplementaryPicture(dto.getStoreIndoorPic(), IdUtils.simpleUUID(), "F24");
        if(r.getCode() == 200){
            data.put("store_indoor_pic", r.getData());
            shopAuthenticationHftx.setStoreIndoorPicNo(r.getData());
        }else{
            return R.fail(r.getMsg());
        }
        r = supplementaryPicture(dto.getStoreCashierDeskPic(), IdUtils.simpleUUID(), "F105");
        if(r.getCode() == 200){
            data.put("store_cashier_desk_pic", r.getData());
            shopAuthenticationHftx.setStoreCashierDeskPicNo(r.getData());
        }else{
            return R.fail(r.getMsg());
        }
        data.put("legal_mobile_no", dto.getLegalMobileNo());
        data.put("legal_addr", dto.getLegalAddr());
        JSONObject body = new JSONObject();
        body.put("sys_id", huifu_id);
        body.put("product_id", product_id);
        body.put("sign", sign(data.toJSONString()));
        body.put("data", data);
        HttpRequest post = HttpUtil.createPost(url);
        Map<String, String> headers = new HashMap<>();
        headers.put("Content-type","application/json; charset=utf-8");
        headers.put("Accept", "application/json");
        post.addHeaders(headers);
        post.body(body.toJSONString());
        logger.info(JSON.toJSONString(body));
        HttpResponse execute = post.execute();
        String result = execute.body();
        execute.close();
        if(!StringUtils.hasLength(result)){
            return R.fail("请求异常");
        }
        JSONObject jsonObject = JSON.parseObject(result);
        JSONObject resultData = jsonObject.getJSONObject("data");
        String resp_code = resultData.getString("resp_code");
        String resp_desc = resultData.getString("resp_desc");
        //处理成功
        String success1 = "00000000";
        //交易正在处理中
        String success2 = "00000100";
        //审核中
        String success3 = "90000000";
        MerchantBasicdataVo vo = new MerchantBasicdataVo();
        if(success1.equals(resp_code) || success2.equals(resp_code) || success3.equals(resp_code)){
            vo.setStatus(success1.equals(resp_code) ? 1 : success3.equals(resp_code) ? 2 : 3);
            vo.setHuifuId(resultData.getString("huifu_id"));
            vo.setApplyNo(resultData.getString("apply_no"));
            vo.setTokenNo(resultData.getString("token_no"));
            return R.ok(vo);
        }
        return R.fail(resp_desc);
    }
    /**
     * 查询商户信息
     * @param huifuId
     * @return
@@ -775,7 +1035,7 @@
        headers.put("Accept", "application/json");
        post.addHeaders(headers);
        post.body(body.toJSONString());
        System.err.println(JSON.toJSONString(body));
        logger.info(JSON.toJSONString(body));
        HttpResponse execute = post.execute();
        String result = execute.body();
        execute.close();
@@ -842,7 +1102,7 @@
            if (statusCode == org.apache.http.HttpStatus.SC_OK) {
                HttpEntity resEntity = response.getEntity();
                result = EntityUtils.toString(resEntity);
                System.err.println(result);
                logger.info(result);
            }
            if(!StringUtils.hasLength(result)){
                return R.fail("请求异常");
@@ -990,6 +1250,7 @@
    }
    public static void main(String[] args) {
        HuiFuTianXiaUtil.getMerchantBasicdataSettlement(IdUtils.simpleUUID(), "6666000141251275", "20231023", "20231023", "1", "10");
        R<List<MerchantBasicdataSettlementVo>> merchantBasicdataSettlement = HuiFuTianXiaUtil.getMerchantBasicdataSettlement(IdUtils.simpleUUID(), "6666000141606205", "20231110", "20231116", "1", "10");
        System.err.println(JSON.toJSONString(merchantBasicdataSettlement));
    }
}
ruoyi-modules/ruoyi-shop/src/main/resources/bootstrap.yml
@@ -18,6 +18,8 @@
#        server-addr: 127.0.0.1:8848
        #pro
        namespace: 9591ef9f-a49a-4900-be35-d77258bdd639
        #test
#        namespace: e1a7e419-e8c7-4d7d-8a0a-c00ab6ccfccd
        #dev
#        namespace: 6857cbd9-6088-4fe8-bb58-2b516d99876f
      config:
@@ -26,6 +28,8 @@
#        server-addr: 127.0.0.1:8848
        #pro
        namespace: 9591ef9f-a49a-4900-be35-d77258bdd639
        #test
#        namespace: e1a7e419-e8c7-4d7d-8a0a-c00ab6ccfccd
        #dev
#        namespace: 6857cbd9-6088-4fe8-bb58-2b516d99876f
        # 配置文件格式
@@ -48,3 +52,4 @@
    privateCertPath: /home/cert/apiclient_cert.pem
callback_path: https://wxapp.hhhrt.cn
#callback_path: http://8.137.105.173
ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml
@@ -22,6 +22,8 @@
#        server-addr: 127.0.0.1:8848
        #pro
        namespace: 9591ef9f-a49a-4900-be35-d77258bdd639
        #test
#        namespace: e1a7e419-e8c7-4d7d-8a0a-c00ab6ccfccd
        #dev
#        namespace: 6857cbd9-6088-4fe8-bb58-2b516d99876f
      config:
@@ -30,6 +32,8 @@
#        server-addr: 127.0.0.1:8848
        #pro
        namespace: 9591ef9f-a49a-4900-be35-d77258bdd639
        #test
#        namespace: e1a7e419-e8c7-4d7d-8a0a-c00ab6ccfccd
        #dev
#        namespace: 6857cbd9-6088-4fe8-bb58-2b516d99876f
        # 配置文件格式
@@ -42,6 +46,8 @@
      max-file-size: 100MB
      max-request-size: 200MB
      location: /home/temp
#生产环境
wx:
  cp:
    corpId: ww11400938eb1b91bc
@@ -52,5 +58,16 @@
    token: HaiHeng2023
    encodingAESKey: jWmYm7qr5nMoAUwZRjGtBxmz3KA1tkAj3ykkR6q2B2C
#测试环境
#wx:
#  cp:
#    corpId: ww11400938eb1b91bc
#    agentId: 1000038
#    agentSecret: vt0bmrBPWi1TrRu8lisv5IT5ZDOuxNNLNaGwcZkHLgc
#    authorizeState: HONGRUITANG
#    addressSecret: D5rirpvzRnygC0RncaUdooxAwvXTA7In9dqvPHvnV4w
#    token: HaiHeng2023
#    encodingAESKey: jWmYm7qr5nMoAUwZRjGtBxmz3KA1tkAj3ykkR6q2B2C