luofl
2025-03-14 0449a6264819bce3869f47b9e5bd3729f158db54
迭代版本:2.28
22个文件已修改
356 ■■■■ 已修改文件
a.json 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/factory/OrderClientFallbackFactory.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/feignClient/OrderClient.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/SysUserFallbackFactory.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-gateway/src/main/resources/bootstrap.yml 41 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java 87 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserCouponController.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/BalanceChangeRecordServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserCouponServiceImpl.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/resources/bootstrap.yml 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/resources/mapper/account/UserPointMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/payment/PaymentUtil.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/resources/bootstrap.yml 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/CouponInfoController.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShareController.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopServiceImpl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/resources/bootstrap.yml 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
a.json
@@ -1,13 +1,17 @@
{
  "total": "总数",
  "pageSize": "每页大小",
  "pageNum": "页码",
  "records": [
  "access_token": "90_4PJ8b5aLJa2M7aCtoskALEzfoap1me291Jc3ogi18NGH0Ts-Tol7K3COLLvkQ1JLcouvew11ORqcHf6mH5LA2KSC08NxiDhsjRPKuRh14mpvQRHmeFvwr-wKWjkANLdACAUHF",
  "order_key": {
    "order_number_type": 1
  },
  "logistics_type": 1,
  "delivery_mode": 1,
  "shipping_list": [
    {
      "item": "项目名称",
      "time": "时间",
      "amount": "变动金额",
      "type": "加或减标记: 1 加 2 减"
      "item_desc": "这是一个测试"
    }
  ]
  ],
  "upload_time": "2022-12-15T13:29:35.120+08:00",
  "payer": {
    "openid": "ooOrs63KYDHcyhnUmTFpprHc6sb4"
  }
}
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/factory/OrderClientFallbackFactory.java
@@ -40,6 +40,11 @@
            }
            @Override
            public R<List<Order>> getRedeemedOrdersByShop(Integer shopId) {
                return R.fail("获取已核销的订单失败:" + cause.getMessage());
            }
            @Override
            public R<Order> getOrderById(Long id) {
                return R.fail("根据id获取订单详情失败:" + cause.getMessage());
            }
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/feignClient/OrderClient.java
@@ -54,6 +54,14 @@
    @PostMapping("/order/getAppUserByShoppingShop")
    R<Set<Long>> getAppUserByShoppingShop(@RequestParam("shopId") Integer shopId);
    /**
     * 获取指定门店的核销订单
     */
    @GetMapping("/order/getRedeemedOrdersByShop")
    R<List<Order>> getRedeemedOrdersByShop(@RequestParam("shopId") Integer shopId);
    /**
     * 根据id获取订单详情
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/SysUserFallbackFactory.java
@@ -16,6 +16,7 @@
            @Override
            public R<SysUser> getSysUser(Long userId) {
                System.out.println(cause.getMessage());
                return R.fail("获取用户失败:" + cause.getMessage());
            }
ruoyi-gateway/src/main/resources/bootstrap.yml
@@ -23,16 +23,16 @@
    nacos:
      discovery:
        # 服务注册地址
        server-addr: 192.168.110.111/:8848
        server-addr: 127.0.0.1:8848
        service: ruoyi-gateway
        group: DEFAULT_GROUP
        namespace: 20c168da-8cf1-4fff-bc38-bc62df656b6a
        namespace: cdf47c5f-2bf9-4dec-a616-a8dc653aceb9
        username:
        password:
      config:
        # 配置中心地址
        server-addr: 192.168.110.111/:8848
        namespace: 20c168da-8cf1-4fff-bc38-bc62df656b6a
        server-addr: 127.0.0.1:8848
        namespace: cdf47c5f-2bf9-4dec-a616-a8dc653aceb9
        username:
        password:
        group: DEFAULT_GROUP
@@ -52,24 +52,41 @@
      discovery:
        # 服务注册地址
        server-addr: 127.0.0.1:8848
        service: ruoyi-gateway
        service: ${spring.application.name}
        group: DEFAULT_GROUP
        namespace: cdf47c5f-2bf9-4dec-a616-a8dc653aceb9
        username:
        password:
        namespace: 20c168da-8cf1-4fff-bc38-bc62df656b6a
        username: nacos
        password: nacos
      config:
        # 配置中心地址
        server-addr: 127.0.0.1:8848
        namespace: cdf47c5f-2bf9-4dec-a616-a8dc653aceb9
        username:
        password:
        namespace: 20c168da-8cf1-4fff-bc38-bc62df656b6a
        username: nacos
        password: nacos
        group: DEFAULT_GROUP
        name: ruoyi-gateway
        name: ${spring.application.name}
        # 配置文件格式
        file-extension: yml
        # 共享配置
        shared-configs:
          - application.${spring.cloud.nacos.config.file-extension}
    sentinel:
      # 取消控制台懒加载
      eager: true
      transport:
        # 控制台地址
        dashboard: 192.168.0.137:8718
      # nacos配置持久化
      datasource:
        ds1:
          nacos:
            server-addr: 127.0.0.1:8848
            dataId: sentinel-ruoyi-gateway
            groupId: DEFAULT_GROUP
            username: nacos
            password: nacos
            data-type: json
            rule-type: gw-flow
---
spring:
  config:
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java
@@ -4,6 +4,7 @@
import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
@@ -171,7 +172,7 @@
    @PostMapping("/getCouponCount")
    public R<Long> getCouponCount(@RequestParam("userId") Long userId, @RequestParam("couponId") Integer couponId) {
        LambdaQueryChainWrapper<UserCoupon> chainWrapper = userCouponService.lambdaQuery().eq(UserCoupon::getCouponId, couponId);
        if(null != userId && -1 == userId){
        if(null != userId && -1 != userId){
            chainWrapper.eq(UserCoupon::getAppUserId, userId);
        }
        Long count = chainWrapper.count();
@@ -688,14 +689,42 @@
        return R.ok(list);
    }
    @GetMapping("/getUserPointsPage")
    @ApiOperation(value = "用户列表", tags = {"管理后台"})
    public R<IPage<AppUser>> getUserPointsPage(@ApiParam("页码") @RequestParam Integer pageNum,
                                            @ApiParam("每一页数据大小") Integer pageSize,
                                            AppUser appUser) {
        Long userId = tokenService.getLoginUser().getUserid();
        SysUser data = sysUserClient.getSysUser(userId).getData();
        QueryWrapper<AppUser> queryWrapper = new QueryWrapper<>();
        if (data.getRoleType() == 2) {
            Integer shopId = data.getObjectId();
            List<Order> orders = orderClient.getRedeemedOrdersByShop(shopId).getData();
            List<Long> userIds = orders.stream().map(Order::getAppUserId).collect(Collectors.toList());
            queryWrapper.in(!CollectionUtils.isEmpty(userIds), "id", userIds)
                    .like(StringUtils.isNotEmpty( appUser.getName()),"name", appUser.getName());
        }
        queryWrapper.eq("del_flag", 0);
        queryWrapper.ne("status", 3);
        List<AppUser> appUserList = appUserService.list(queryWrapper);
        Page<AppUser> objectPage = Page.of(pageNum, pageSize);
        objectPage.setRecords(appUserList);
        return R.ok(objectPage);
    }
    /**
     * 获取用户列表
     */
    @GetMapping("/getAppuserPage")
    @ApiOperation(value = "用户列表", tags = {"管理后台"})
    public R<IPage<AppUser>> getAppuserPage(@ApiParam("页码") @RequestParam Integer pageNum,
                                            @ApiParam("每一页数据大小") Integer pageSize,
                                            AppUser appUser) {
        Long userid = tokenService.getLoginUser().getUserid();
        SysUser sysUser = sysUserClient.getSysUser(userid).getData();
        Integer shopId = null;
@@ -721,6 +750,8 @@
        }
        return R.ok(appuserPage);
    }
    @GetMapping("/shop/getAppuserPage")
    @ApiOperation(value = "用户列表", tags = {"门店后台"})
@@ -1072,22 +1103,46 @@
    @GetMapping("/statistics")
    @ApiOperation(value = "用户统计", tags = {"管理后台-首页统计-用户统计"})
    public R<UserStatistics> statistics() {
        Long userid = tokenService.getLoginUser().getUserid();
        SysUser data = sysUserClient.getSysUser(userid).getData();
        Integer shopId = null;
        Set<Long> userId = null;
        Long userId = tokenService.getLoginUser().getUserid();
        SysUser data = sysUserClient.getSysUser(userId).getData();
        QueryWrapper<AppUser> queryWrapper = new QueryWrapper<>();
        if(data.getRoleType() == 2){
            shopId = data.getObjectId();
            userId = orderClient.getAppUserByShoppingShop(shopId).getData();
            Integer shopId = data.getObjectId();
            List<Order> orders = orderClient.getRedeemedOrdersByShop(shopId).getData();
            List<Long> userIds = orders.stream().map(Order::getAppUserId).collect(Collectors.toList());
            queryWrapper.in(!CollectionUtils.isEmpty(userIds), "id", userIds); // userIds 不为空时,查询 id 在 userIds 中
        }
        UserStatistics userStatistics = appUserMapper.getUserStatistics(shopId, userId);
        List<Shop> shopList = shopClient.getAllShop().getData();
        if (CollectionUtil.isNotEmpty(shopList)){
            long count = shopList.stream().map(Shop::getAppUserId).distinct().count();
            userStatistics.setShopUser((int) count);
        }else {
            userStatistics.setShopUser(0);
        }
        queryWrapper.eq("del_flag", 0);
        queryWrapper.ne("status", 3);
        List<AppUser> appUserList = appUserService.list(queryWrapper);
        Map<Integer, Long> vipIdCountMap = appUserList.stream()
                .collect(Collectors.groupingBy(AppUser::getVipId, Collectors.counting()));
        UserStatistics userStatistics = new UserStatistics();
        userStatistics.setTotalUser(appUserList.size());
        userStatistics.setConsumerUser(vipIdCountMap.getOrDefault(0, 0L).intValue() +
                vipIdCountMap.getOrDefault(1, 0L).intValue() +
                vipIdCountMap.getOrDefault(2, 0L).intValue() +
                vipIdCountMap.getOrDefault(3, 0L).intValue());
        userStatistics.setCommonUser(vipIdCountMap.getOrDefault(1, 0L).intValue());
        userStatistics.setGoldUser(vipIdCountMap.getOrDefault(2, 0L).intValue());
        userStatistics.setDiamondUser(vipIdCountMap.getOrDefault(3, 0L).intValue());
        userStatistics.setEntrepreneurUser(vipIdCountMap.getOrDefault(4, 0L).intValue() +
                vipIdCountMap.getOrDefault(5, 0L).intValue() +
                vipIdCountMap.getOrDefault(6, 0L).intValue() +
                vipIdCountMap.getOrDefault(7, 0L).intValue());
        userStatistics.setProxyUser(vipIdCountMap.getOrDefault(4, 0L).intValue());
        userStatistics.setAgentUser(vipIdCountMap.getOrDefault(5, 0L).intValue());
        userStatistics.setTotalAgentUser(vipIdCountMap.getOrDefault(6, 0L).intValue());
        userStatistics.setPartnerUser(vipIdCountMap.getOrDefault(7, 0L).intValue());
        long shopUserCount = appUserList.stream()
                .filter(appUser -> appUser.getUserType() == 2)
                .count();
        userStatistics.setShopUser((int) shopUserCount);
        return R.ok(userStatistics);
    }
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserCouponController.java
@@ -300,9 +300,8 @@
    @PostMapping("/getCouponInfo")
    public R<CouponInfoVo> getCouponInfo(@RequestParam("userCouponId") Long userCouponId){
        UserCoupon userCoupon = userCouponService.getById(userCouponId);
        CouponInfo data = couponClient.detail(userCoupon.getCouponId()).getData();
        CouponInfoVo couponInfoVo = new CouponInfoVo();
        BeanUtils.copyProperties(data, couponInfoVo);
        String jsonStr = userCoupon.getCouponInfo();
        CouponInfoVo couponInfoVo = JSON.parseObject(jsonStr, CouponInfoVo.class);
        return R.ok(couponInfoVo);
    }
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java
@@ -1043,7 +1043,7 @@
            Integer online = jsonObject.getInteger("online");
            online += 10;
            //满足一个小时,开始发放积分,计时归0
            if(time >= 3600000L && 60 <= online){
            if(time >= 60000 && 1 <= online){
                jsonObject.put("time", System.currentTimeMillis());
                jsonObject.put("online", 0);
                redisService.setCacheObject("ONLINE_" + userid, jsonObject, 1L, TimeUnit.HOURS);
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/BalanceChangeRecordServiceImpl.java
@@ -98,7 +98,7 @@
            BigDecimal beforeAmount = changeRecord.getBeforeAmount();
            BigDecimal afterAmount = changeRecord.getAfterAmount();
            if (beforeAmount.compareTo(afterAmount) < 0 && changeRecord.getChangeType().equals(2)){
            if (beforeAmount.compareTo(afterAmount) > 0){
                BigDecimal changeAmount = changeRecord.getChangeAmount();
                totalWithdraw = totalWithdraw.add(changeAmount);
                walletStatisticsDetail.setFlag(2);
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserCouponServiceImpl.java
@@ -1,6 +1,7 @@
package com.ruoyi.account.service.impl;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.account.api.vo.PaymentUserCouponVo;
@@ -46,11 +47,13 @@
    public List<PaymentUserCouponVo> getUserCoupon(Long userId, Integer type) {
        List<UserCoupon> list = this.list(new LambdaQueryWrapper<UserCoupon>().eq(UserCoupon::getAppUserId, userId).eq(UserCoupon::getDelFlag, 0)
                .isNull(UserCoupon::getUseTime).gt(UserCoupon::getEndTime, LocalDateTime.now()).last(" and now() between start_time and end_time"));
        List<Integer> couponIds = list.stream().map(UserCoupon::getCouponId).collect(Collectors.toList());
        if(couponIds.size() == 0){
            return null;
        List<CouponInfo> couponInfoList = new ArrayList<>();
        for (String jsonStr : list.stream().map(UserCoupon::getCouponInfo).collect(Collectors.toList())) {
            CouponInfo couponInfo = JSONObject.parseObject(jsonStr, CouponInfo.class);
            couponInfoList.add(couponInfo);
        }
        List<CouponInfo> couponInfoList = couponInfoClient.getCouponInfoList(couponIds).getData();
        //构建返回数据
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy.MM.dd HH:mm");
        List<PaymentUserCouponVo> infoVoList = new ArrayList<>();
ruoyi-service/ruoyi-account/src/main/resources/bootstrap.yml
@@ -23,7 +23,7 @@
    nacos:
      discovery:
        # 服务注册地址
        server-addr: 127.0.0.1:8848
        server-addr: 192.168.110.106:8848
        service: ${spring.application.name}
        group: DEFAULT_GROUP
        namespace: cdf47c5f-2bf9-4dec-a616-a8dc653aceb9
@@ -31,12 +31,12 @@
        password: nacos
      config:
        # 配置中心地址
        server-addr: 127.0.0.1:8848
        server-addr: 192.168.110.106:8848
        namespace: cdf47c5f-2bf9-4dec-a616-a8dc653aceb9
        group: DEFAULT_GROUP
        name: ${spring.application.name}
        username: nacos
        password: nacos
        group: DEFAULT_GROUP
        name: ${spring.application.name}
        # 配置文件格式
        file-extension: yml
        # 共享配置
@@ -54,13 +54,13 @@
        server-addr: 127.0.0.1:8848
        service: ${spring.application.name}
        group: DEFAULT_GROUP
        namespace: cdf47c5f-2bf9-4dec-a616-a8dc653aceb9
        namespace: 20c168da-8cf1-4fff-bc38-bc62df656b6a
        username: nacos
        password: nacos
      config:
        # 配置中心地址
        server-addr: 127.0.0.1:8848
        namespace: cdf47c5f-2bf9-4dec-a616-a8dc653aceb9
        namespace: 20c168da-8cf1-4fff-bc38-bc62df656b6a
        username: nacos
        password: nacos
        group: DEFAULT_GROUP
ruoyi-service/ruoyi-account/src/main/resources/mapper/account/UserPointMapper.xml
@@ -31,7 +31,7 @@
        t_user_point tup
        LEFT JOIN t_app_user tau ON tup.app_user_id = tau.id
        <where>
            tup.type not in (8, 9, 14)
            tup.type not in (8, 9, 14) and tau.status != 3 and tau.del_flag = 0
            <if test="userPoint.userName != null and userPoint.userName != ''">
                AND tau.`name` LIKE concat('%',#{userPoint.userName},'%')
            </if>
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java
@@ -483,6 +483,16 @@
        return R.ok(collect);
    }
    /**
     * 获取指定门店的核销订单
     */
    @GetMapping("/getRedeemedOrdersByShop")
    public R<List<Order>> getRedeemedOrdersByShop(@RequestParam("shopId") Integer shopId) {
        return R.ok(orderService.list(new LambdaQueryWrapper<Order>()
                .isNotNull(Order::getEndTime)
                .eq(Order::getShopId, shopId)));
    }
    /**
     * 获取订单快递明细
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
@@ -9,6 +9,7 @@
import com.ruoyi.common.core.constant.ExpressCompanyMap;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.HttpUtils;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.utils.uuid.QRCodeGenerator;
import com.ruoyi.common.core.web.page.PageInfo;
@@ -183,9 +184,9 @@
        }
        // 优惠券
        String couponJson = order.getCouponJson();
        CouponInfo couponInfo = new CouponInfo();
        JSONObject jsonObject = new JSONObject();
        if (StringUtils.isNotEmpty(couponJson)) {
            couponInfo = JSONObject.parseObject(couponJson, CouponInfo.class);
            jsonObject = JSONObject.parseObject(couponJson);
        }
        // 参与活动
@@ -208,7 +209,7 @@
        orderDetailVO.setOrderNumber(order.getOrderNumber());
        orderDetailVO.setCreateTime(order.getCreateTime());
        orderDetailVO.setTotalAmount(order.getTotalAmount());
        orderDetailVO.setCouponName(couponInfo.getCouponName());
        orderDetailVO.setCouponName(jsonObject.getString("couponName"));
        orderDetailVO.setActivityName(orderActivityInfo.getActivityName());
        orderDetailVO.setCouponAmount(order.getDiscountTotalAmount());
        orderDetailVO.setExpressAmount(order.getExpressAmount());
@@ -246,6 +247,7 @@
        }
        return orderDetailVO;
    }
    @Override
    public boolean check(Order order, Integer shopId, Long userId) {
@@ -1113,9 +1115,38 @@
                userAddress.getProvince() + userAddress.getCity());
        order.setExpressResult(JSON.toJSONString(mapTrackKD100Vo));
        this.updateById(order);
        String s = HttpUtils.sendGet("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wxdeed472c98e42a54&secret=c89c697c981452480e0781fb82d4284c");
        JSONObject jsonObject2 = JSONObject.parseObject(s);
        System.out.println(jsonObject.getString("access_token"));
        return R.ok();
    }
    public static void main(String[] args) {
        String a = "{\n" +
                "  \"access_token\": \"90_4PJ8b5aLJa2M7aCtoskALEzfoap1me291Jc3ogi18NGH0Ts-Tol7K3COLLvkQ1JLcouvew11ORqcHf6mH5LA2KSC08NxiDhsjRPKuRh14mpvQRHmeFvwr-wKWjkANLdACAUHF\",\n" +
                "  \"order_key\": {\n" +
                "    \"order_number_type\": 1\n" +
                "  },\n" +
                "  \"logistics_type\": 1,\n" +
                "  \"delivery_mode\": 1,\n" +
                "  \"shipping_list\": [\n" +
                "    {\n" +
                "      \"item_desc\": \"这是一个测试\"\n" +
                "    }\n" +
                "  ],\n" +
                "  \"upload_time\": \"2022-12-15T13:29:35.120+08:00\",\n" +
                "  \"payer\": {\n" +
                "    \"openid\": \"ooOrs63KYDHcyhnUmTFpprHc6sb4\"\n" +
                "  }\n" +
                "}";
        JSONObject jsonObject = JSONObject.parseObject(a);
        System.out.println(jsonObject);
    }
    public static void importExpress2(String filePath) throws MalformedURLException {
        // 从网络地址读取
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java
@@ -1519,6 +1519,9 @@
        if(order.getOrderType() == 1 && StringUtils.isEmpty(order.getAddressJson())){
            order.setOrderStatus(2);
        }
        String r7TrxNo = uniPayCallbackResult.getR7_TrxNo();
        order.setSerialNumber(r7TrxNo);
        orderService.updateById(order);
        //处理优惠券
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/payment/PaymentUtil.java
@@ -34,7 +34,7 @@
    /**
     * 支付回调地址
     */
    private static final String callbackUrl = "https://www.qijisheng.top";
    private static final String callbackUrl = "http://luodaxia.free.idcfengye.com";
    
    
    /**
ruoyi-service/ruoyi-order/src/main/resources/bootstrap.yml
@@ -23,7 +23,7 @@
    nacos:
      discovery:
        # 服务注册地址
        server-addr: 127.0.0.1:8848
        server-addr: 192.168.110.106:8848
        service: ${spring.application.name}
        group: DEFAULT_GROUP
        namespace: cdf47c5f-2bf9-4dec-a616-a8dc653aceb9
@@ -31,12 +31,12 @@
        password: nacos
      config:
        # 配置中心地址
        server-addr: 127.0.0.1:8848
        server-addr: 192.168.110.106:8848
        namespace: cdf47c5f-2bf9-4dec-a616-a8dc653aceb9
        group: DEFAULT_GROUP
        name: ${spring.application.name}
        username: nacos
        password: nacos
        group: DEFAULT_GROUP
        name: ${spring.application.name}
        # 配置文件格式
        file-extension: yml
        # 共享配置
@@ -60,7 +60,7 @@
      config:
        # 配置中心地址
        server-addr: 127.0.0.1:8848
        namespace: cdf47c5f-2bf9-4dec-a616-a8dc653aceb9
        namespace: 20c168da-8cf1-4fff-bc38-bc62df656b6a
        username: nacos
        password: nacos
        group: DEFAULT_GROUP
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/CouponInfoController.java
@@ -161,6 +161,8 @@
        Long userid = tokenService.getLoginUserApplet().getUserid();
        AppUser appUserById = appUserClient.getAppUserById(userid);
        LocalDateTime now = LocalDateTime.now();
        //查出全部可领取的优惠劵
        List<CouponInfo> list = couponInfoService.lambdaQuery()
                .le(CouponInfo::getSendStartTime, now)
@@ -175,32 +177,46 @@
                .apply("FIND_IN_SET('" + appUserById.getId() + "', person_ids)")
                .list();
        //查出指定会员可领取优惠劵
        List<CouponInfo> list2 = couponInfoService.lambdaQuery().le(CouponInfo::getSendStartTime, now).ge(CouponInfo::getSendEndTime, now).eq(CouponInfo::getPersonType, 3).apply("FIND_IN_SET('" + appUserById.getVipId() + "', vip_ids)").list();
        List<CouponInfo> list2 = couponInfoService.lambdaQuery()
                .le(CouponInfo::getSendStartTime, now)
                .ge(CouponInfo::getSendEndTime, now)
                .eq(CouponInfo::getPersonType, 3)
                .apply("FIND_IN_SET('" + appUserById.getVipId() + "', vip_ids)").list();
        List<CouponInfo> returnList = new ArrayList<>();
        count(userid, list, returnList);
        count(userid, list1, returnList);
        count(userid, list2, returnList);
        return R.ok(returnList);
        returnList.addAll(list);
        returnList.addAll(list1);
        returnList.addAll(list2);
        List<CouponInfo> collect = returnList.stream().filter(couponInfo -> {
            Integer couponInfoId = couponInfo.getId();
            Integer sendNum = couponInfo.getSendNum();
            Integer maxNum = couponInfo.getMaxNum();
            Long count = appUserClient.getCouponCount(-1L, couponInfoId).getData();
            Long count2 = appUserClient.getCouponCount(userid, couponInfoId).getData();
            return count < sendNum && count2 < maxNum;
        }).collect(Collectors.toList());
        return R.ok(collect);
    }
    private void count(Long userid, List<CouponInfo> list1, List<CouponInfo> returnList) {
        for (CouponInfo couponInfo : list1) {
            Long count = appUserClient.getCouponCount(-1L, couponInfo.getId()).getData();
            if(count >= couponInfo.getSendNum()){
            Integer couponInfoId = couponInfo.getId();
            Integer sendNum = couponInfo.getSendNum();
            Integer maxNum = couponInfo.getMaxNum();
            Long count = appUserClient.getCouponCount(-1L, couponInfoId).getData();
            if(count >= sendNum){
                continue;
            }
            count = appUserClient.getCouponCount(userid, couponInfo.getId()).getData();
            couponInfo.setMaxNum(couponInfo.getMaxNum() - count.intValue());
            if((couponInfo.getSendNum() - count) >= couponInfo.getMaxNum()){
                for (int i = 0; i < couponInfo.getMaxNum(); i++) {
                    returnList.add(couponInfo);
                }
            }else{
                for (int i = 0; i < (couponInfo.getSendNum() - count); i++) {
                    returnList.add(couponInfo);
                }
            }
            
            count = appUserClient.getCouponCount(userid, couponInfoId).getData();
            couponInfo.setMaxNum(maxNum - count.intValue());
            if(count < maxNum){
                continue;
            }
            for (int i = 0; i < maxNum; i++) {
                returnList.add(couponInfo);
            }
        }
    }
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShareController.java
@@ -324,7 +324,8 @@
            Boolean data = userPointClient.judgmentDailyShare(userid).getData();
            if(!data){
                AppUser appUser = appUserClient.getAppUserById(userid);
                PointSetting pointSetting = pointSettingService.getOne(new LambdaQueryWrapper<PointSetting>().eq(PointSetting::getId, appUser.getVipId()).eq(PointSetting::getDelFlag, 0));
                PointSetting pointSetting = pointSettingService.getOne(new LambdaQueryWrapper<PointSetting>()
                        .eq(PointSetting::getId, appUser.getVipId()).eq(PointSetting::getDelFlag, 0));
                if(null != pointSetting){
                    Integer everySharePoint = pointSetting.getEverySharePoint();
                    Integer lavePoint = appUser.getLavePoint();
@@ -336,7 +337,6 @@
                    appUser.setTotalPoint(appUser.getTotalPoint() + everySharePoint);
                    appUserClient.editAppUserById(appUser);
                    //添加积分流水
                    if(everySharePoint > 0){
                        UserPoint userPoint = new UserPoint();
                        userPoint.setAppUserId(userid);
                        userPoint.setType(4);
@@ -347,12 +347,18 @@
                        userPoint.setAppUserId(appUser.getId());
                        userPointClient.saveUserPoint(userPoint);
                    }
                }
            }
        }
        return R.ok(one);
    }
    
    //appUserShare/
    @GetMapping("/saveAppUserShare")
    public R<Share> saveAppUserShare() {
        return getAppletShare();
    }
}
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java
@@ -408,6 +408,10 @@
        return R.ok();
    }
    public static void main(String[] args) {
        System.out.println("17780483325".substring(5));
    }
    @PutMapping("/freezingOrThawing")
    @ApiOperation(value = "门店管理-冻结/解冻门店", tags = {"管理后台-门店管理"})
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopServiceImpl.java
@@ -134,7 +134,13 @@
                }
            }
        });
        return nearbyShopVOS;
        return sortByDistance(nearbyShopVOS);
    }
    public static List<NearbyShopVO> sortByDistance(List<NearbyShopVO> nearbyShopVOS) {
        return nearbyShopVOS.stream()
                .sorted(Comparator.comparingDouble(NearbyShopVO::getDistance))
                .collect(Collectors.toList());
    }
    @Override
ruoyi-service/ruoyi-other/src/main/resources/bootstrap.yml
@@ -23,16 +23,16 @@
    nacos:
      discovery:
        # 服务注册地址
        server-addr: 192.168.110.111/:8848
        server-addr: 192.168.110.106:8848
        service: ${spring.application.name}
        group: DEFAULT_GROUP
        namespace: 20c168da-8cf1-4fff-bc38-bc62df656b6a
        namespace: cdf47c5f-2bf9-4dec-a616-a8dc653aceb9
        username:
        password:
      config:
        # 配置中心地址
        server-addr: 192.168.110.111/:8848
        namespace: 20c168da-8cf1-4fff-bc38-bc62df656b6a
        server-addr: 192.168.110.106:8848
        namespace: cdf47c5f-2bf9-4dec-a616-a8dc653aceb9
        username:
        password:
        group: DEFAULT_GROUP
@@ -54,15 +54,15 @@
        server-addr: 127.0.0.1:8848
        service: ${spring.application.name}
        group: DEFAULT_GROUP
        namespace: cdf47c5f-2bf9-4dec-a616-a8dc653aceb9
        username:
        password:
        namespace: 20c168da-8cf1-4fff-bc38-bc62df656b6a
        username: nacos
        password: nacos
      config:
        # 配置中心地址
        server-addr: 127.0.0.1:8848
        namespace: cdf47c5f-2bf9-4dec-a616-a8dc653aceb9
        username:
        password:
        namespace: 20c168da-8cf1-4fff-bc38-bc62df656b6a
        username: nacos
        password: nacos
        group: DEFAULT_GROUP
        name: ${spring.application.name}
        # 配置文件格式