luodangjia
2024-12-05 56f732ed7af0e82f32f809ff0797fd0b83b62306
Merge remote-tracking branch 'origin/master'

# Conflicts:
# ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TechnicianSubscribeController.java
18 文件已重命名
74个文件已修改
11个文件已添加
1009 ■■■■■ 已修改文件
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserClientFallbackFactory.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AppUserBank.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/factory/RemoteOrderFallbackFactory.java 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/factory/RemoteOrderGoodsFallbackFactory.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/feignClient/RemoteOrderClient.java 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/feignClient/RemoteOrderGoodsClient.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/Order.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/OrderGood.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/RefundPass.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/ShoppingCart.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/OrderDetailVO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/OrderGoodsVO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-order/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Shop.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/ShopScore.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/VipSetting.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/BaseSettingClientFallbackFactory.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/CouponClientFallbackFactory.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/GoodsVipClientFallbackFactory.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/OrderFallbackFactory.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/PointSettingClientFallbackFactory.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/StoreFallbackFactory.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/CouponClient.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/OrderClient.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/PointSettingClient.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/StoreClient.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/GeodesyUtil.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/controller/BaseController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/SignFilter.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserBankController.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java 42 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserCouponController.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserPointController.java 51 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WalletController.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/mapper/AppUserBankMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/AppUserBankService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/UserPointService.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/VipSettingService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserBankServiceImpl.java 11 ●●●●● 补丁 | 查看 | 原始文档 | 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/UserCouponServiceImpl.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserPointServiceImpl.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/VipSettingServiceImpl.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/WithdrawalRequestsServiceImpl.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/weChat/TaskUtil.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/weChat/weChat/AES.java 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/weChat/weChat/WXCore.java 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/weChat/weChat/WeChatUtil.java 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/weChat/weChat/WxPKCS7Encoder.java 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/UserPointDetailVO.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/UserPointVO.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/WalletVO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/test/java/com/ruoyi/order/account/RuoYiAccountApplicationTests.java 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderGoodController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ShoppingCartController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/OrderGoodMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/OrderMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/RefundPassMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/ShoppingCartMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/OrderGoodService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/OrderService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/RefundPassService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/ShoppingCartService.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/CommissionServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderGoodServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/RefundPassServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/MyShoppingCartVo.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/ShoppingCartPayment.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/order/RuoYiOrderApplicationTests.java 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/BannerController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/CouponInfoController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsCategoryController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsController.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/PhoneController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/PointSettingController.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/SeckillActivityInfoController.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java 41 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/SystemConfigController.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TechnicianController.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TechnicianSubscribeController.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/VipSettingController.java 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/ShopMapper.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/ShopScoreMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/TechnicianSubscribeMapper.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/ShopScoreService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/ShopService.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/TechnicianSubscribeService.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopScoreServiceImpl.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopServiceImpl.java 54 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TechnicianServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TechnicianSubscribeServiceImpl.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/NearbyShopVO.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/SeckillActivityDetailVO.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/SeckillActivityVO.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/ShopDetailVO.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/resources/mapper/other/ShopMapper.xml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TechnicianSubscribeMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/test/java/com/ruoyi/order/other/RuoYiOtherApplicationTests.java 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserClientFallbackFactory.java
@@ -33,7 +33,7 @@
            @Override
            public R<Void> editAppUserById(AppUser appUser) {
                log.error("编辑用户信息失败:{}", cause.getMessage());
                throw new RuntimeException("编辑用户信息失败");
                return R.fail("编辑用户信息失败");
            }
            @Override
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java
@@ -6,10 +6,7 @@
import com.ruoyi.common.core.constant.ServiceNameConstants;
import com.ruoyi.common.core.domain.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@@ -25,14 +22,14 @@
     * @param id
     * @return
     */
    @PostMapping("/appUser/getAppUserById")
    @PostMapping("/app-user/getAppUserById")
    AppUser getAppUserById(@RequestParam("id") Long id);
    /**
     * 根据id编辑用户
     */
    @PostMapping("/app-user/editAppUserById")
    R<Void> editAppUserById(@RequestParam("appUser") AppUser appUser);
    R<Void> editAppUserById(@RequestBody AppUser appUser);
    @PostMapping("/app-user/getCouponCount")
    R<Long> getCouponCount(@RequestParam("userId")Long userId, @RequestParam("couponId") Integer couponId );
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AppUserBank.java
@@ -19,7 +19,7 @@
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.NONE)
    @TableId("id")
    @ApiModelProperty(value = "数据id")
    private Long id;
    /**
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/factory/RemoteOrderFallbackFactory.java
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/factory/RemoteOrderGoodsFallbackFactory.java
File was renamed from ruoyi-api/ruoyi-api-order/src/main/java/factory/RemoteOrderGoodsFallbackFactory.java
@@ -1,9 +1,10 @@
package factory;
package com.ruoyi.order.factory;
import com.ruoyi.common.core.domain.R;
import feignClient.RemoteOrderGoodsClient;
import com.ruoyi.order.feignClient.RemoteOrderGoodsClient;
import lombok.extern.slf4j.Slf4j;
import model.Order;
import com.ruoyi.order.model.Order;
import com.ruoyi.order.model.OrderGood;
import org.springframework.cloud.openfeign.FallbackFactory;
import java.util.List;
@@ -14,7 +15,7 @@
    public RemoteOrderGoodsClient create(Throwable cause) {
        return new RemoteOrderGoodsClient(){
            @Override
            public R<List<Order>> goodsOrder(List<Long> goodsIds) {
            public R<List<OrderGood>> goodsOrder(List<Long> goodsIds) {
                log.error("获取订单商品失败:{}", cause.getMessage());
                throw new RuntimeException("获取订单商品失败");
            }
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/feignClient/RemoteOrderClient.java
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/feignClient/RemoteOrderGoodsClient.java
File was renamed from ruoyi-api/ruoyi-api-order/src/main/java/feignClient/RemoteOrderGoodsClient.java
@@ -1,11 +1,11 @@
package feignClient;
package com.ruoyi.order.feignClient;
import com.ruoyi.common.core.constant.ServiceNameConstants;
import com.ruoyi.common.core.domain.R;
import factory.RemoteOrderGoodsFallbackFactory;
import model.Order;
import model.OrderGood;
import com.ruoyi.order.factory.RemoteOrderGoodsFallbackFactory;
import com.ruoyi.order.model.Order;
import com.ruoyi.order.model.OrderGood;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@@ -19,7 +19,7 @@
     * 查询指定商品订单
     */
    @PostMapping("/order-good/selectGoodsOrder")
    public R<List<Order>> goodsOrder(@RequestBody List<Long> goodsIds);
    public R<List<OrderGood>> goodsOrder(@RequestBody List<Long> goodsIds);
    /**
     * 根据ids查找订单列表
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/Order.java
File was renamed from ruoyi-api/ruoyi-api-order/src/main/java/model/Order.java
@@ -1,4 +1,4 @@
package model;
package com.ruoyi.order.model;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
@@ -165,6 +165,10 @@
    @ApiModelProperty(value = "添加时间")
    @TableField("create_time")
    private LocalDateTime createTime;
    @ApiModelProperty(value = "预计提货时间")
    @TableField("expected_delivery_time")
    private String expectedDeliveryTime;
}
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/OrderGood.java
File was renamed from ruoyi-api/ruoyi-api-order/src/main/java/model/OrderGood.java
@@ -1,4 +1,4 @@
package model;
package com.ruoyi.order.model;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/RefundPass.java
File was renamed from ruoyi-api/ruoyi-api-order/src/main/java/model/RefundPass.java
@@ -1,4 +1,4 @@
package model;
package com.ruoyi.order.model;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/ShoppingCart.java
File was renamed from ruoyi-api/ruoyi-api-order/src/main/java/model/ShoppingCart.java
@@ -1,4 +1,4 @@
package model;
package com.ruoyi.order.model;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/OrderDetailVO.java
File was renamed from ruoyi-api/ruoyi-api-order/src/main/java/vo/OrderDetailVO.java
@@ -1,4 +1,4 @@
package vo;
package com.ruoyi.order.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/OrderGoodsVO.java
File was renamed from ruoyi-api/ruoyi-api-order/src/main/java/vo/OrderGoodsVO.java
@@ -1,4 +1,4 @@
package vo;
package com.ruoyi.order.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
ruoyi-api/ruoyi-api-order/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -0,0 +1 @@
com.ruoyi.order.factory.RemoteOrderGoodsFallbackFactory
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Shop.java
@@ -38,9 +38,9 @@
    @TableField("pid")
    private Integer pid;
    @ApiModelProperty(value = "营业星期(1,2,3,4,5,6,7)")
    @ApiModelProperty(value = "营业星期:1-周一到周日 2-周一周五 3-仅周末")
    @TableField("business_date")
    private String businessDate;
    private Integer businessDate;
    @ApiModelProperty(value = "开始时间(HH:mm)")
    @TableField("start_time")
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/ShopScore.java
New file
@@ -0,0 +1,43 @@
package com.ruoyi.other.api.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@TableName("t_shop_score")
@EqualsAndHashCode(callSuper = false)
@Data
@ApiModel(value="ShopScore对象", description="")
public class ShopScore implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value = "主键")
    @TableId("id")
    private Integer id;
    @ApiModelProperty(value = "用户id")
    @TableField("app_user_id")
    private Long appUserId;
    @ApiModelProperty(value = "门店id")
    @TableField("shop_id")
    private Long shopId;
    @ApiModelProperty(value = "评分")
    @TableField("score")
    private BigDecimal score;
    @ApiModelProperty(value = "添加时间")
    @TableField("create_time")
    private LocalDateTime createTime;
}
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/VipSetting.java
@@ -55,6 +55,10 @@
    @TableField("vip_withdrawal_min_amount")
    private BigDecimal vipWithdrawalMinAmount;
    @ApiModelProperty(value = "提现手续费")
    @TableField("vip_withdrawal_fee")
    private BigDecimal vipWithdrawalFee;
    @ApiModelProperty(value = "积分转赠权限 1开0关")
    @TableField("vip_gift_role")
    private Integer vipGiftRole;
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/BaseSettingClientFallbackFactory.java
@@ -2,9 +2,7 @@
import com.ruoyi.common.core.domain.R;
import com.ruoyi.other.api.domain.BaseSetting;
import com.ruoyi.other.api.domain.Shop;
import com.ruoyi.other.api.feignClient.BaseSettingClient;
import com.ruoyi.other.api.feignClient.ShopClient;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/CouponClientFallbackFactory.java
@@ -2,9 +2,7 @@
import com.ruoyi.common.core.domain.R;
import com.ruoyi.other.api.domain.CouponInfo;
import com.ruoyi.other.api.domain.GoodsVip;
import com.ruoyi.other.api.feignClient.CouponClient;
import com.ruoyi.other.api.feignClient.GoodsVipClient;
import org.springframework.cloud.openfeign.FallbackFactory;
/**
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/GoodsVipClientFallbackFactory.java
@@ -1,7 +1,6 @@
package com.ruoyi.other.api.factory;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.other.api.domain.GoodsArea;
import com.ruoyi.other.api.domain.GoodsVip;
import com.ruoyi.other.api.feignClient.GoodsVipClient;
import org.springframework.cloud.openfeign.FallbackFactory;
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/OrderFallbackFactory.java
@@ -1,16 +1,12 @@
package com.ruoyi.other.api.factory;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.dto.ExchangeBackDto;
import com.ruoyi.common.core.dto.ExchangeDto;
import com.ruoyi.other.api.feignClient.OrderClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
import java.util.List;
/**
 * 充电订单服务降级处理
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/PointSettingClientFallbackFactory.java
New file
@@ -0,0 +1,18 @@
package com.ruoyi.other.api.factory;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.other.api.domain.PointSetting;
import com.ruoyi.other.api.feignClient.PointSettingClient;
import org.springframework.cloud.openfeign.FallbackFactory;
public class PointSettingClientFallbackFactory implements FallbackFactory<PointSettingClient> {
    @Override
    public PointSettingClient create(Throwable cause) {
        return new PointSettingClient() {
            @Override
            public R<PointSetting> getPointSetting(Integer id) {
                return R.fail("获取积分配置失败:" + cause.getMessage());
            }
        };
    }
}
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/StoreFallbackFactory.java
@@ -2,7 +2,6 @@
import com.ruoyi.common.core.domain.R;
import com.ruoyi.other.api.domain.Shop;
import com.ruoyi.other.api.feignClient.OrderClient;
import com.ruoyi.other.api.feignClient.StoreClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/CouponClient.java
@@ -3,13 +3,9 @@
import com.ruoyi.common.core.constant.ServiceNameConstants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.other.api.domain.CouponInfo;
import com.ruoyi.other.api.domain.GoodsArea;
import com.ruoyi.other.api.domain.GoodsVip;
import com.ruoyi.other.api.factory.CouponClientFallbackFactory;
import com.ruoyi.other.api.factory.GoodsVipClientFallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
/**
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/OrderClient.java
@@ -2,8 +2,6 @@
import com.ruoyi.common.core.constant.ServiceNameConstants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.dto.ExchangeBackDto;
import com.ruoyi.common.core.dto.ExchangeDto;
import com.ruoyi.other.api.factory.OrderFallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/PointSettingClient.java
New file
@@ -0,0 +1,16 @@
package com.ruoyi.other.api.feignClient;
import com.ruoyi.common.core.constant.ServiceNameConstants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.other.api.domain.PointSetting;
import com.ruoyi.other.api.factory.PointSettingClientFallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
@FeignClient(contextId = "PointSettingClient", value = ServiceNameConstants.OTHER_SERVICE, fallbackFactory = PointSettingClientFallbackFactory.class)
public interface PointSettingClient {
    @GetMapping("/point-setting/getPointSetting")
    R<PointSetting> getPointSetting(@RequestParam("id") Integer id);
}
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/StoreClient.java
@@ -8,8 +8,6 @@
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
/**
 * 后台订单服务
 * @author ruoyi
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/GeodesyUtil.java
@@ -67,7 +67,7 @@
    public static void main(String[] ages){
        GeodesyUtil geodesyUtil = new GeodesyUtil();
        Map<String, Double> distance = geodesyUtil.getDistance("104.063855,30.575442", "104.679931,31.471814");
        Map<String, Double> distance = geodesyUtil.getDistance("106.6664549,29.4158471", "104.0908333,30.4414610");
        System.err.println(distance);
    }
}
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/controller/BaseController.java
@@ -60,9 +60,9 @@
     * 响应请求分页数据
     */
    @SuppressWarnings({ "rawtypes", "unchecked" })
    protected TableDataInfo getDataTable(List<?> list)
    protected <T>TableDataInfo<T> getDataTable(List<T> list)
    {
        TableDataInfo rspData = new TableDataInfo();
        TableDataInfo<T> rspData = new TableDataInfo();
        rspData.setCode(HttpStatus.SUCCESS);
        rspData.setRows(list);
        rspData.setMsg("查询成功");
ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/SignFilter.java
@@ -134,6 +134,7 @@
    }
    /**
     * 组装签名路径
     * @param params
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserBankController.java
@@ -1,10 +1,17 @@
package com.ruoyi.account.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.account.api.model.AppUserBank;
import com.ruoyi.account.service.AppUserBankService;
import com.ruoyi.common.core.utils.bean.BeanUtils;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.system.api.model.LoginUser;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
 * @author zhibing.pu
@@ -14,7 +21,11 @@
@RestController
@RequestMapping("/appUserBank")
public class AppUserBankController {
    @Resource
    private AppUserBankService appUserBankService;
    @Resource
    private TokenService tokenService;
    
    
    
@@ -23,15 +34,30 @@
    @PostMapping("/saveAppUserBank")
    @ApiOperation(value = "保存银行卡")
    public AjaxResult saveAppUserBank(@RequestBody AppUserBank appUserBank){
        LoginUser loginUserApplet = tokenService.getLoginUserApplet();
        AppUserBank bank = appUserBankService.getOne(new LambdaQueryWrapper<AppUserBank>()
                .eq(AppUserBank::getAppUserId, loginUserApplet.getUserid()));
        if (bank == null){
            appUserBank.setAppUserId(loginUserApplet.getUserid());
            appUserBankService.saveOrUpdate(appUserBank);
        }else {
            appUserBank.setId(bank.getId());
            appUserBank.setAppUserId(bank.getAppUserId());
            appUserBankService.updateById(appUserBank);
        }
        return AjaxResult.success();
    }
    
    @ResponseBody
    @GetMapping("/getAppUserBank")
    @ApiOperation(value = "获取银行卡信息")
    public AjaxResult<AppUserBank> getAppUserBank(){
        return AjaxResult.success();
        LoginUser loginUserApplet = tokenService.getLoginUserApplet();
        AppUserBank appUserBank = appUserBankService.getOne(new LambdaQueryWrapper<AppUserBank>()
                .eq(AppUserBank::getAppUserId, loginUserApplet.getUserid()));
        return AjaxResult.success(appUserBank);
    }
    
}
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java
@@ -1,5 +1,4 @@
package com.ruoyi.account.controller;
import java.time.LocalDateTime;
import com.ruoyi.account.api.model.AppUser;
@@ -12,7 +11,6 @@
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.other.api.domain.Shop;
import com.ruoyi.other.api.feignClient.StoreClient;
import org.junit.Test;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -22,20 +20,13 @@
import javax.annotation.Resource;
import java.util.List;
import com.ruoyi.account.api.model.AppUser;
import com.ruoyi.account.service.AppUserService;
import com.ruoyi.account.vo.*;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.page.TableDataInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/**
 * <p>
@@ -65,14 +56,11 @@
    @ResponseBody
    @PostMapping("/mobileLogin")
    @ApiOperation(value = "手机号登录")
    public AjaxResult<LoginVo> mobileLogin(@RequestBody MobileLogin mobileLogin){
    public R<LoginVo> mobileLogin(@RequestBody MobileLogin mobileLogin){
        return appUserService.mobileLogin(mobileLogin);
    }
    @PostMapping("getAppUserById")
    AppUser getAppUserById(@RequestParam("id") Long id){
        return appUserService.getById(id);
    }
@@ -93,13 +81,10 @@
    @ResponseBody
    @PostMapping("/editAppUserById")
    public R<Void> editAppUserById(@RequestParam("appUser") AppUser appUser){
    public R<Void> editAppUserById(@RequestBody AppUser appUser) {
        appUserService.updateById(appUser);
        return R.ok();
    @PostMapping("/mobileLogin")
    @ApiOperation(value = "手机号登录")
    public R<LoginVo> mobileLogin(@RequestBody MobileLogin mobileLogin){
        return appUserService.mobileLogin(mobileLogin);
    }
    @ResponseBody
@@ -112,7 +97,7 @@
    @ResponseBody
    @PostMapping("/getVipCount")
    public R<Long> getVipCount(@RequestParam("userId")Long userId, @RequestParam("vipId") Integer vipId ){
        appUserService.lambdaQuery().eq(AppUser::getInviteUserId, userId).eq(AppUser::getVipId, vipId).count()
         Long count = appUserService.lambdaQuery().eq(AppUser::getInviteUserId, userId).eq(AppUser::getVipId, vipId).count();
        return R.ok(count);
    }
@@ -173,7 +158,7 @@
   private UserCancellationLogService userCancellationLogService;
    @ResponseBody
    @PostMapping("/unregis")
    @GetMapping("/unregis")
    @ApiOperation(value = "注销", tags = {"小程序-个人中心首页-我的资料"})
    public R unregis(){
        Long userId = tokenService.getLoginUserApplet().getUserid();
@@ -192,7 +177,7 @@
    @PostMapping("/index")
    @GetMapping("/index")
    @ApiOperation(value = "个人中心首页", tags = {"小程序-个人中心首页"})
    public R<AppUser> index(){
        System.err.println("=-====");
@@ -230,6 +215,17 @@
    }
    @GetMapping("/index/change")
    @ApiOperation(value = "修改个人资料", tags = {"小程序-个人中心首页"})
    public R<AppUser> indexchange(String avatar,String name){
        Long userId = tokenService.getLoginUserApplet().getUserid();
        //当前用户信息
        AppUser user = appUserService.getById(userId);
        user.setName(name);
        user.setAvatar(avatar);
        appUserService.updateById(user);
        return R.ok();
    }
    /**
     * 获取用户的祖籍列表
     */
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserCouponController.java
@@ -1,5 +1,4 @@
package com.ruoyi.account.controller;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -13,24 +12,17 @@
import com.ruoyi.account.service.UserPointService;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.bean.BeanUtils;
import com.ruoyi.account.api.vo.CouponInfoVo;
import com.ruoyi.account.api.vo.PaymentUserCoupon;
import com.ruoyi.account.service.UserCouponService;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.domain.AjaxResult;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.other.api.domain.Banner;
import com.ruoyi.other.api.domain.CouponInfo;
import com.ruoyi.other.api.feignClient.CouponClient;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.time.LocalDateTime;
/**
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserPointController.java
@@ -1,7 +1,10 @@
package com.ruoyi.account.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.account.api.model.AppUser;
import com.ruoyi.account.api.model.UserPoint;
import com.ruoyi.account.service.AppUserService;
import com.ruoyi.account.service.UserPointService;
import com.ruoyi.account.vo.UserPointDetailVO;
import com.ruoyi.account.vo.UserPointVO;
@@ -12,16 +15,20 @@
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.YearMonth;
import java.util.List;
/**
 * <p>
 *  前端控制器
 * 前端控制器
 * </p>
 *
 * @author luodangjia
@@ -33,6 +40,8 @@
public class UserPointController extends BaseController {
    @Resource
    private UserPointService userPointService;
    @Resource
    private AppUserService appUserService;
    /**
@@ -40,7 +49,7 @@
     */
    @GetMapping("/getUserPoint")
    @ApiOperation("获取个人积分")
    public R<UserPointVO> getUserPoint(){
    public R<UserPointVO> getUserPoint() {
        return R.ok(userPointService.getUserPoint(SecurityUtils.getUserId()));
    }
@@ -49,12 +58,26 @@
     */
    @GetMapping("/getUserPointDetail")
    @ApiOperation("获取变更明细")
    public TableDataInfo getUserPointDetail(@ApiParam("指定日期") LocalDateTime date,
                                            @ApiParam("变动类型(1=消费积分,2=返佣积分,3=拉新人积分,4=兑换商品 " +
                                                           "5 = 门店业绩积分 6 =门店返佣积分7=技师业绩积分8 =转赠积分 9 =做工积分 " +
                                                           "10 =注册积分)") Integer type){
    public TableDataInfo<UserPointDetailVO> getUserPointDetail(@ApiParam("指定日期") @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate date,
                                                               @ApiParam("变动类型(1=消费积分,2=返佣积分,3=拉新人积分,4=兑换商品 " +
                                                                       "5 = 门店业绩积分 6 =门店返佣积分7=技师业绩积分8 =转赠积分 9 =做工积分 " +
                                                                       "10 =注册积分)") Integer type) {
        LocalDateTime startTime = null;
        LocalDateTime endTime = null;
        if (date != null) {
            // 将 createTime 设置为当天的开始时间 (00:00)
            startTime = date.atStartOfDay();
            // 使用 YearMonth 来获取该月的最后一天
            YearMonth yearMonth = YearMonth.from(date);
            LocalDate lastDayOfMonth = yearMonth.atEndOfMonth();
            // 将最后一天转换为 LocalDateTime,并设置为当天的最后一秒 (23:59:59.999)
            endTime = lastDayOfMonth.atTime(LocalTime.MAX);
        }
        startPage();
        List<UserPointDetailVO> list = userPointService.getUserPointDetail(SecurityUtils.getUserId(), date, type);
        List<UserPointDetailVO> list = userPointService.getUserPointDetail(SecurityUtils.getUserId(), startTime, endTime, type);
        return getDataTable(list);
    }
@@ -63,18 +86,24 @@
     */
    @PostMapping("/transferPoint")
    @ApiOperation("转赠积分")
    public R<Void> transferPoint(@ApiParam("积分") BigDecimal point, @ApiParam("手机号") Long phone){
    public R<Void> transferPoint(@ApiParam("积分") BigDecimal point, @ApiParam("手机号") Long phone) {
        AppUser appUser = appUserService.getOne(new LambdaQueryWrapper<AppUser>()
                .eq(AppUser::getPhone, phone));
        if (null == appUser) {
            return R.fail("用户不存在");
        }
        return R.ok();
    }
    /**
     * 保存积分流水记录
     *
     * @param userPoint
     * @return
     */
    @PostMapping("/saveUserPoint")
    public R saveUserPoint(@RequestBody UserPoint userPoint){
    public R saveUserPoint(@RequestBody UserPoint userPoint) {
        userPointService.save(userPoint);
        return R.ok();
    }
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WalletController.java
@@ -6,21 +6,20 @@
import com.ruoyi.account.api.model.BalanceChangeRecord;
import com.ruoyi.account.service.AppUserService;
import com.ruoyi.account.service.BalanceChangeRecordService;
import com.ruoyi.account.service.VipSettingService;
import com.ruoyi.account.service.WalletService;
import com.ruoyi.account.vo.WalletVO;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.other.api.feignClient.OrderClient;
import com.ruoyi.order.feignClient.RemoteOrderGoodsClient;
import com.ruoyi.order.model.Order;
import com.ruoyi.other.api.domain.VipSetting;
import com.ruoyi.system.api.model.LoginUser;
import feignClient.RemoteOrderClient;
import feignClient.RemoteOrderGoodsClient;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import model.Order;
import model.OrderGood;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -31,8 +30,8 @@
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.YearMonth;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Api(tags = "小程序-个人中心-我的钱包")
@@ -49,6 +48,8 @@
    private RemoteOrderGoodsClient remoteOrderGoodsClient;
    @Resource
    private AppUserService appUserService;
    @Resource
    private VipSettingService vipSettingService;
    /**
     * 钱包详情
@@ -57,7 +58,9 @@
    @ApiOperation(value = "钱包详情", notes = "钱包详情")
    public R<WalletVO> detail() {
        LoginUser loginUserApplet = tokenService.getLoginUserApplet();
        VipSetting vipSetting = vipSettingService.getVipSettingByUserId(loginUserApplet.getUserid());
        WalletVO walletVO = walletService.getWalletByUserId(loginUserApplet.getUserid());
        walletVO.setVipWithdrawalFee(vipSetting.getVipWithdrawalFee());
        return R.ok(walletVO);
    }
@@ -70,35 +73,45 @@
                                               @RequestParam(required = false) Integer changeType,
                                               @ApiParam(value = "创建时间")
                                               @RequestParam(required = false)
                                               @DateTimeFormat(pattern = "yyyy-MM")
                                               @DateTimeFormat(pattern = "yyyy-MM-dd")
                                               LocalDate createTime) {
        Long userId = SecurityUtils.getUserId();
        LocalDateTime localDateTime = null;
        LocalDateTime startTime = null;
        LocalDateTime endTime = null;
        if (createTime != null) {
            LocalTime specificTime = LocalTime.of(0, 0);
            localDateTime = createTime.atTime(specificTime);
            // 将 createTime 设置为当天的开始时间 (00:00)
            startTime = createTime.atStartOfDay();
            // 使用 YearMonth 来获取该月的最后一天
            YearMonth yearMonth = YearMonth.from(createTime);
            LocalDate lastDayOfMonth = yearMonth.atEndOfMonth();
            // 将最后一天转换为 LocalDateTime,并设置为当天的最后一秒 (23:59:59.999)
            endTime = lastDayOfMonth.atTime(LocalTime.MAX);
        }
        List<BalanceChangeRecord> list = balanceChangeRecordService.list(new LambdaQueryWrapper<BalanceChangeRecord>()
                .eq(changeType != null, BalanceChangeRecord::getChangeType, changeType)
                .eq(createTime != null, BalanceChangeRecord::getCreateTime, localDateTime)
                .between(startTime != null, BalanceChangeRecord::getCreateTime, startTime, endTime)
                .eq(BalanceChangeRecord::getAppUserId, userId));
        List<Long> orderIds = list.stream().map(BalanceChangeRecord::getOrderId).collect(Collectors.toList());
        R<List<Order>> r = remoteOrderGoodsClient.getOrderListByIds(orderIds);
        if (!R.isSuccess(r)){
            return R.fail(r.getMsg());
        }
        List<Order> orderList = r.getData();
        list.forEach(bc -> {
            orderList.stream().filter(o -> o.getId().equals(bc.getOrderId())).findFirst().ifPresent(o -> {
                Long appUserId = o.getAppUserId();
                AppUser appUser = appUserService.getById(appUserId);
                bc.setUserName(appUser.getName());
                bc.setAmount(o.getPaymentAmount());
        if (CollectionUtil.isNotEmpty(orderIds)){
            R<List<Order>> r = remoteOrderGoodsClient.getOrderListByIds(orderIds);
            if (!R.isSuccess(r)){
                return R.fail(r.getMsg());
            }
            List<Order> orderList = r.getData();
            list.forEach(bc -> {
                orderList.stream().filter(o -> o.getId().equals(bc.getOrderId())).findFirst().ifPresent(o -> {
                    Long appUserId = o.getAppUserId();
                    AppUser appUser = appUserService.getById(appUserId);
                    bc.setUserName(appUser.getName());
                    bc.setAmount(o.getPaymentAmount());
                });
            });
        });
        }
        return R.ok(list);
    }
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/mapper/AppUserBankMapper.java
New file
@@ -0,0 +1,7 @@
package com.ruoyi.account.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.account.api.model.AppUserBank;
public interface AppUserBankMapper extends BaseMapper<AppUserBank> {
}
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/AppUserBankService.java
New file
@@ -0,0 +1,7 @@
package com.ruoyi.account.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.account.api.model.AppUserBank;
public interface AppUserBankService extends IService<AppUserBank> {
}
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/UserPointService.java
@@ -5,12 +5,13 @@
import com.ruoyi.account.vo.UserPointDetailVO;
import com.ruoyi.account.vo.UserPointVO;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
/**
 * <p>
 *  服务类
 * 服务类
 * </p>
 *
 * @author luodangjia
@@ -21,5 +22,7 @@
    UserPointVO getUserPoint(Long userId);
    List<UserPointDetailVO> getUserPointDetail(Long userId, LocalDateTime date, Integer type);
    List<UserPointDetailVO> getUserPointDetail(Long userId, LocalDateTime startTime, LocalDateTime endTime, Integer type);
    void transferPoint(BigDecimal point, Long phone);
}
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/VipSettingService.java
New file
@@ -0,0 +1,10 @@
package com.ruoyi.account.service;
import com.ruoyi.other.api.domain.VipSetting;
public interface VipSettingService {
    VipSetting getVipSettingById(Integer id);
    VipSetting getVipSettingByUserId(Long appUserId);
}
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserBankServiceImpl.java
New file
@@ -0,0 +1,11 @@
package com.ruoyi.account.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.account.api.model.AppUserBank;
import com.ruoyi.account.mapper.AppUserBankMapper;
import com.ruoyi.account.service.AppUserBankService;
import org.springframework.stereotype.Service;
@Service
public class AppUserBankServiceImpl extends ServiceImpl<AppUserBankMapper, AppUserBank> implements AppUserBankService {
}
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java
@@ -10,7 +10,6 @@
import com.ruoyi.account.util.weChat.WeChatUtil;
import com.ruoyi.account.vo.*;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.redis.service.RedisService;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.other.api.domain.Shop;
@@ -18,7 +17,6 @@
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.feignClient.SysUserClient;
import com.ruoyi.system.api.model.LoginUser;
import org.checkerframework.checker.units.qual.A;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserCouponServiceImpl.java
@@ -3,7 +3,6 @@
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.account.api.vo.CouponInfoVo;
import com.ruoyi.account.api.vo.PaymentUserCouponVo;
import com.ruoyi.account.mapper.UserCouponMapper;
import com.ruoyi.account.api.model.UserCoupon;
@@ -13,8 +12,6 @@
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.time.Instant;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserPointServiceImpl.java
@@ -5,12 +5,16 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.account.api.feignClient.AppUserClient;
import com.ruoyi.account.api.model.AppUser;
import com.ruoyi.account.api.model.BalanceChangeRecord;
import com.ruoyi.account.api.model.UserPoint;
import com.ruoyi.account.enums.PointChangeType;
import com.ruoyi.account.mapper.UserPointMapper;
import com.ruoyi.account.service.UserPointService;
import com.ruoyi.account.vo.UserPointDetailVO;
import com.ruoyi.account.vo.UserPointVO;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.other.api.domain.VipSetting;
import com.ruoyi.other.api.feignClient.RemoteVipSettingClient;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@@ -33,6 +37,8 @@
public class UserPointServiceImpl extends ServiceImpl<UserPointMapper, UserPoint> implements UserPointService {
    @Resource
    private AppUserClient appUserClient;
    @Resource
    private RemoteVipSettingClient remoteVipSettingClient;
    @Override
    public UserPointVO getUserPoint(Long userId) {
@@ -43,20 +49,29 @@
        Map<Integer, Integer> userBalanceMap = userPointList.stream()
                .collect(Collectors.toMap(UserPoint::getType, UserPoint::getBalance));
        R<VipSetting> r = remoteVipSettingClient.getVipSettingById(appUser.getVipId());
        if (!R.isSuccess(r)){
            throw new RuntimeException("会员等级获取失败");
        }
        Integer lavePoint = appUser.getLavePoint();
        UserPointVO userPointVO = new UserPointVO();
        userPointVO.setTotalPoint(lavePoint);
//        userPointVO.setConsumePoint(lavePoint);
        userPointVO.setShopPoint(userBalanceMap.get(PointChangeType.CONSUME.getCode()));
        userPointVO.setSharePoint(userBalanceMap.get(PointChangeType.COMMISSION_RETURN.getCode()));
        userPointVO.setPullNewPoint(userBalanceMap.get(PointChangeType.NEW_USER_REFERRAL.getCode()));
        userPointVO.setShopAchievementPoint(userBalanceMap.get(PointChangeType.STORE_PERFORMANCE.getCode()));
        userPointVO.setShopSharePoint(userBalanceMap.get(PointChangeType.STORE_COMMISSION_RETURN.getCode()));
        userPointVO.setGiftPoint(r.getData().getVipGiftRole());
        return userPointVO;
    }
    @Override
    public List<UserPointDetailVO> getUserPointDetail(Long userId, LocalDateTime date, Integer type) {
    public List<UserPointDetailVO> getUserPointDetail(Long userId, LocalDateTime startTime, LocalDateTime endTime, Integer type) {
        List<UserPoint> userPointList = list(new LambdaQueryWrapper<UserPoint>()
                .between(startTime != null, UserPoint::getCreateTime, startTime, endTime)
                .eq(type != null, UserPoint::getType, type)
                .eq(UserPoint::getAppUserId, userId));
        if (CollectionUtil.isNotEmpty(userPointList)) {
            return userPointList.stream().map(p -> {
@@ -69,4 +84,11 @@
        }
        return Collections.emptyList();
    }
    @Override
    public void transferPoint(BigDecimal point, Long phone) {
        AppUser appUser = appUserService.getOne(new LambdaQueryWrapper<AppUser>()
                .eq(AppUser::getPhone, phone));
    }
}
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/VipSettingServiceImpl.java
New file
@@ -0,0 +1,40 @@
package com.ruoyi.account.service.impl;
import com.ruoyi.account.api.feignClient.AppUserClient;
import com.ruoyi.account.api.model.AppUser;
import com.ruoyi.account.service.VipSettingService;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.other.api.domain.VipSetting;
import com.ruoyi.other.api.feignClient.RemoteVipSettingClient;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@Service
public class VipSettingServiceImpl implements VipSettingService {
    @Resource
    private RemoteVipSettingClient remoteVipSettingClient;
    @Resource
    private AppUserClient appUserClient;
    @Override
    public VipSetting getVipSettingById(Integer id) {
        R<VipSetting> vipSettingById = remoteVipSettingClient.getVipSettingById(id);
        if (!R.isSuccess(vipSettingById)){
            throw new ServiceException("会员等级获取失败");
        }
        return vipSettingById.getData();
    }
    @Override
    public VipSetting getVipSettingByUserId(Long appUserId) {
        AppUser appUser = appUserClient.getAppUserById(appUserId);
        if(null == appUser){
            throw new ServiceException("用户不存在");
        }
        return getVipSettingById(appUser.getVipId());
    }
}
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/WithdrawalRequestsServiceImpl.java
@@ -1,13 +1,24 @@
package com.ruoyi.account.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.account.api.feignClient.AppUserClient;
import com.ruoyi.account.api.model.AppUser;
import com.ruoyi.account.api.model.WithdrawalRequests;
import com.ruoyi.account.dto.WithdrawalRequestsDTO;
import com.ruoyi.account.mapper.WithdrawalRequestsMapper;
import com.ruoyi.account.api.model.WithdrawalRequests;
import com.ruoyi.account.service.VipSettingService;
import com.ruoyi.account.service.WithdrawalRequestsService;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.bean.BeanUtils;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.other.api.domain.VipSetting;
import com.ruoyi.system.api.model.LoginUser;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
/**
 * <p>
@@ -19,9 +30,45 @@
 */
@Service
public class WithdrawalRequestsServiceImpl extends ServiceImpl<WithdrawalRequestsMapper, WithdrawalRequests> implements WithdrawalRequestsService {
    @Resource
    private TokenService tokenService;
    @Resource
    private AppUserClient appUserClient;
    @Resource
    private VipSettingService vipSettingService;
    public static final BigDecimal MAX_WITHDRAWAL_AMOUNT = new BigDecimal("200");
    public static final BigDecimal VIP_WITHDRAWAL_FEE_DENOMINATOR = new BigDecimal("100");
    @Override
    public void withdrawalApply(WithdrawalRequestsDTO params) {
        if (params.getWithdrawalAmount().compareTo(MAX_WITHDRAWAL_AMOUNT) > 0) {
            throw new ServiceException("提现失败,单次提现金额不能超过200元!");
        }
        LoginUser loginUserApplet = tokenService.getLoginUserApplet();
        AppUser appUser = appUserClient.getAppUserById(loginUserApplet.getUserid());
        if (appUser.getWithdrawableAmount().compareTo(params.getWithdrawalAmount()) < 0) {
            throw new ServiceException("提现失败,可提现金额不足!");
        }
        Integer vipId = appUser.getVipId();
        VipSetting vipSetting = vipSettingService.getVipSettingById(vipId);
        if (vipSetting.getVipWithdrawalRole() == 0) {
            throw new ServiceException("提现失败,当前会员等级不允许提现!");
        }
        BigDecimal vipWithdrawalMinAmount = vipSetting.getVipWithdrawalMinAmount();
        if (params.getWithdrawalAmount().compareTo(vipWithdrawalMinAmount) < 0) {
            throw new ServiceException("提现失败,提现金额不能小于" + vipWithdrawalMinAmount + "元!");
        }
        // 提现手续费
        BigDecimal vipWithdrawalFee = vipSetting.getVipWithdrawalFee()
                .divide(VIP_WITHDRAWAL_FEE_DENOMINATOR, 2, RoundingMode.HALF_UP);
        // 减去手续费
        params.setWithdrawalAmount(params.getWithdrawalAmount()
                .subtract(params.getWithdrawalAmount().multiply(vipWithdrawalFee)));
        WithdrawalRequests withdrawalRequests = new WithdrawalRequests();
        BeanUtils.copyBeanProp(withdrawalRequests, params);
        withdrawalRequests.setDelFlag(0);
@@ -29,4 +76,5 @@
        withdrawalRequests.setAuditStatus(1);
        save(withdrawalRequests);
    }
}
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/weChat/TaskUtil.java
File was renamed from ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/TaskUtil.java
@@ -1,4 +1,4 @@
package com.ruoyi.account.util;
package com.ruoyi.account.util.weChat;
import org.springframework.scheduling.annotation.Scheduled;
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/weChat/weChat/AES.java
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/weChat/weChat/WXCore.java
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/weChat/weChat/WeChatUtil.java
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/weChat/weChat/WxPKCS7Encoder.java
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/UserPointDetailVO.java
@@ -9,7 +9,7 @@
import java.time.LocalDateTime;
@Data
@ApiModel(value="UserPointDetail对象", description="")
@ApiModel("UserPointDetail对象")
public class UserPointDetailVO {
    @ApiModelProperty(value = "变动类型(1=消费积分,2=返佣积分,3=拉新人积分,4=兑换商品 5 = 门店业绩积分 6 =门店返佣积分7=技师业绩积分8 =转赠积分 9 =做工积分 10 =注册积分)")
@@ -20,4 +20,5 @@
    @ApiModelProperty(value = "变动时间")
    private LocalDateTime createTime;
}
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/UserPointVO.java
@@ -11,6 +11,9 @@
    @ApiModelProperty(value = "总积分")
    private Integer totalPoint;
    @ApiModelProperty(value = "可消费积分")
    private Integer consumePoint;
    @ApiModelProperty(value = "消费积分数")
    private Integer shopPoint;
@@ -25,4 +28,7 @@
    @ApiModelProperty(value = "门店返佣积分")
    private Integer shopSharePoint;
    @ApiModelProperty(value = "是否可转赠积分")
    private Integer giftPoint;
}
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/WalletVO.java
@@ -33,4 +33,7 @@
    @ApiModelProperty(value = "分销总金额")
    private BigDecimal totalDistributionAmount;
    @ApiModelProperty(value = "提现手续费")
    private BigDecimal vipWithdrawalFee;
}
ruoyi-service/ruoyi-account/src/test/java/com/ruoyi/order/account/RuoYiAccountApplicationTests.java
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java
@@ -3,17 +3,18 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.page.TableDataInfo;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.order.service.OrderService;
import org.springframework.web.bind.annotation.*;
import vo.OrderDetailVO;
import com.ruoyi.order.vo.OrderVO;
import com.ruoyi.order.vo.OrderDetailVO;
import com.ruoyi.system.api.model.LoginUser;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import model.Order;
import com.ruoyi.order.model.Order;
import javax.annotation.Resource;
import java.util.List;
@@ -29,7 +30,7 @@
@Api(tags = "订单")
@RestController
@RequestMapping("/order")
public class OrderController {
public class OrderController extends BaseController {
    @Resource
    private OrderService orderService;
    @Resource
@@ -44,9 +45,10 @@
            @ApiImplicitParam(value = "订单状态", name = "status", required = true, dataType = "int"),
    })
    @GetMapping("/getMyOrderList/{status}")
    public R<List<OrderVO>> getMyOrderList(@PathVariable("status") Integer status){
    public TableDataInfo getMyOrderList(@PathVariable("status") Integer status){
        startPage();
        LoginUser loginUserApplet = tokenService.getLoginUserApplet();
        return R.ok(orderService.selectOrderListByUserId(status, loginUserApplet.getUserid()));
        return getDataTable(orderService.selectOrderListByUserId(status, loginUserApplet.getUserid()));
    }
    /**
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderGoodController.java
@@ -4,8 +4,8 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.order.model.OrderGood;
import com.ruoyi.order.service.OrderGoodService;
import model.OrderGood;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ShoppingCartController.java
@@ -2,7 +2,6 @@
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.TableDataInfo;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.order.service.ShoppingCartService;
@@ -11,7 +10,7 @@
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import model.ShoppingCart;
import com.ruoyi.order.model.ShoppingCart;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/OrderGoodMapper.java
@@ -1,7 +1,7 @@
package com.ruoyi.order.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import model.OrderGood;
import com.ruoyi.order.model.OrderGood;
/**
 * <p>
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/OrderMapper.java
@@ -2,7 +2,7 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.order.vo.OrderVO;
import model.Order;
import com.ruoyi.order.model.Order;
import java.util.List;
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/RefundPassMapper.java
@@ -1,7 +1,7 @@
package com.ruoyi.order.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import model.RefundPass;
import com.ruoyi.order.model.RefundPass;
/**
 * <p>
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/ShoppingCartMapper.java
@@ -1,7 +1,7 @@
package com.ruoyi.order.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import model.ShoppingCart;
import com.ruoyi.order.model.ShoppingCart;
public interface ShoppingCartMapper extends BaseMapper<ShoppingCart> {
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/OrderGoodService.java
@@ -1,7 +1,7 @@
package com.ruoyi.order.service;
import com.baomidou.mybatisplus.extension.service.IService;
import model.OrderGood;
import com.ruoyi.order.model.OrderGood;
/**
 * <p>
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/OrderService.java
@@ -1,9 +1,9 @@
package com.ruoyi.order.service;
import com.baomidou.mybatisplus.extension.service.IService;
import vo.OrderDetailVO;
import com.ruoyi.order.model.Order;
import com.ruoyi.order.vo.OrderDetailVO;
import com.ruoyi.order.vo.OrderVO;
import model.Order;
import java.util.List;
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/RefundPassService.java
@@ -1,7 +1,7 @@
package com.ruoyi.order.service;
import com.baomidou.mybatisplus.extension.service.IService;
import model.RefundPass;
import com.ruoyi.order.model.RefundPass;
/**
 * <p>
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/ShoppingCartService.java
@@ -2,10 +2,8 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.order.model.ShoppingCart;
import com.ruoyi.order.vo.*;
import model.ShoppingCart;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/CommissionServiceImpl.java
@@ -9,8 +9,8 @@
import com.ruoyi.order.service.OrderService;
import com.ruoyi.other.api.domain.Shop;
import com.ruoyi.other.api.feignClient.ShopClient;
import model.Order;
import model.OrderGood;
import com.ruoyi.order.model.Order;
import com.ruoyi.order.model.OrderGood;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderGoodServiceImpl.java
@@ -2,8 +2,8 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.order.mapper.OrderGoodMapper;
import com.ruoyi.order.model.OrderGood;
import com.ruoyi.order.service.OrderGoodService;
import model.OrderGood;
import org.springframework.stereotype.Service;
/**
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
@@ -14,9 +14,11 @@
import com.ruoyi.order.enums.OrderType;
import com.ruoyi.order.mapper.OrderGoodMapper;
import com.ruoyi.order.mapper.OrderMapper;
import com.ruoyi.order.model.Order;
import com.ruoyi.order.model.OrderGood;
import com.ruoyi.order.service.OrderService;
import vo.OrderDetailVO;
import vo.OrderGoodsVO;
import com.ruoyi.order.vo.OrderDetailVO;
import com.ruoyi.order.vo.OrderGoodsVO;
import com.ruoyi.order.vo.OrderVO;
import com.ruoyi.other.api.domain.CouponInfo;
import com.ruoyi.other.api.domain.Goods;
@@ -24,8 +26,6 @@
import com.ruoyi.other.api.domain.Technician;
import com.ruoyi.other.api.feignClient.TechnicianClient;
import com.ruoyi.system.api.model.LoginUser;
import model.Order;
import model.OrderGood;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/RefundPassServiceImpl.java
@@ -2,8 +2,8 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.order.mapper.RefundPassMapper;
import com.ruoyi.order.model.RefundPass;
import com.ruoyi.order.service.RefundPassService;
import model.RefundPass;
import org.springframework.stereotype.Service;
/**
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java
@@ -3,7 +3,6 @@
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.account.api.feignClient.*;
@@ -15,9 +14,12 @@
import com.ruoyi.account.api.vo.PaymentUserCoupon;
import com.ruoyi.account.api.vo.PaymentUserCouponVo;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.order.mapper.ShoppingCartMapper;
import com.ruoyi.order.model.Order;
import com.ruoyi.order.model.OrderGood;
import com.ruoyi.order.model.ShoppingCart;
import com.ruoyi.order.service.OrderGoodService;
import com.ruoyi.order.service.OrderService;
import com.ruoyi.order.service.ShoppingCartService;
@@ -27,11 +29,7 @@
import com.ruoyi.other.api.vo.GetGoodsBargainPrice;
import com.ruoyi.other.api.vo.GetGoodsShopByGoodsIds;
import com.ruoyi.other.api.vo.GetSeckillActivityInfo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import model.Order;
import model.OrderGood;
import model.ShoppingCart;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@@ -39,6 +37,7 @@
import java.math.RoundingMode;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
@@ -342,11 +341,14 @@
            return R.fail("修改数量不能小于等于0");
        }
        ShoppingCart shoppingCart = this.getById(setGoodsNumber.getId());
        Goods goods = goodsClient.getGoodsById(shoppingCart.getGoodsId()).getData();
        if(null != goods.getPurchaseLimit() && -1 != goods.getPurchaseLimit() && goods.getPurchaseLimit() < setGoodsNumber.getNumber()){
            return R.fail("修改数量不能大于限购数量");
        }
        if(null != shoppingCart){
            Goods goods = goodsClient.getGoodsById(shoppingCart.getGoodsId()).getData();
            if(null != goods.getPurchaseLimit() && -1 != goods.getPurchaseLimit() && goods.getPurchaseLimit() < setGoodsNumber.getNumber()){
                return R.fail("修改数量不能大于限购数量");
            }
            shoppingCart.setNumber(setGoodsNumber.getNumber());
            this.updateById(shoppingCart);
        }
@@ -398,7 +400,7 @@
            confirmOrderVo.setDiscountAmount(orderMoney.subtract(paymentMoney).setScale(2, RoundingMode.HALF_EVEN));
        }
        BaseSetting baseSetting = baseSettingClient.getBaseSetting(4).getData();
        confirmOrderVo.setUseSimultaneously(baseSetting.getContent().equals("1") ? true : false);
        confirmOrderVo.setUseSimultaneously(baseSetting.getContent().equals("1"));
        int earnPoint = goodsList.stream().mapToInt(MyShoppingCartVo::getEarnSpendingPoints).sum();
        confirmOrderVo.setEarnPoint(earnPoint);
        //支付金额,订单金额-订单优惠
@@ -795,6 +797,9 @@
        order.setPaymentAmount(paymentMoney);
        order.setPoint(orderPoint);
        order.setPayMethod(shoppingCartPayment.getPaymentType());
        if(StringUtils.isNotEmpty(shoppingCartPayment.getExpectedDeliveryTime())){
            order.setExpectedDeliveryTime(shoppingCartPayment.getExpectedDeliveryTime());
        }
        if(3 != shoppingCartPayment.getPaymentType() && (fullReductionAmount.compareTo(BigDecimal.ZERO) > 0 ||moneyAmount.compareTo(BigDecimal.ZERO) > 0 || discountAmount.compareTo(BigDecimal.ZERO) > 0)){
            order.setCouponJson(JSON.toJSONString(couponInfoVo));
        }
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/MyShoppingCartVo.java
@@ -11,7 +11,7 @@
 * @Date 2024/11/25 11:51
 */
@Data
@ApiModel
@ApiModel("购物车")
public class MyShoppingCartVo {
    @ApiModelProperty("数据id")
    private Long id;
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/ShoppingCartPayment.java
@@ -23,4 +23,6 @@
    private Integer distributionMode;
    @ApiModelProperty(value = "配送地址id", required = false)
    private Integer userAddressId;
    @ApiModelProperty(value = "预计提货时间", required = false)
    private String expectedDeliveryTime;
}
ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/order/RuoYiOrderApplicationTests.java
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/BannerController.java
@@ -8,7 +8,6 @@
import com.ruoyi.other.service.BannerService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/CouponInfoController.java
@@ -5,7 +5,6 @@
import com.ruoyi.account.api.model.AppUser;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.other.api.domain.Banner;
import com.ruoyi.other.api.domain.CouponInfo;
import com.ruoyi.other.service.CouponInfoService;
import io.swagger.annotations.ApiOperation;
@@ -13,18 +12,13 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.other.api.domain.CouponInfo;
import com.ruoyi.other.service.CouponInfoService;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
/**
 * <p>
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsCategoryController.java
@@ -5,16 +5,10 @@
import com.ruoyi.other.api.domain.GoodsCategory;
import com.ruoyi.other.service.GoodsCategoryService;
import io.swagger.annotations.ApiOperation;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.other.api.domain.GoodsCategory;
import com.ruoyi.other.service.GoodsCategoryService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsController.java
@@ -4,6 +4,7 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.page.TableDataInfo;
import com.ruoyi.other.api.domain.Goods;
import com.ruoyi.other.service.GoodsService;
import com.ruoyi.other.vo.GoodsVO;
@@ -35,9 +36,9 @@
     */
    @GetMapping("/goodsList")
    @ApiOperation(value = "商品列表", tags = {"小程序-商城-首页-热门商品列表", "首页热门商品-小程序"})
    public R<List<GoodsVO>> goodsList(Goods goods){
    public R<TableDataInfo> goodsList(Goods goods){
        startPage();
        return R.ok(goodsService.goodsList(goods));
        return R.ok(getDataTable(goodsService.goodsList(goods)));
    }
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/PhoneController.java
@@ -37,7 +37,7 @@
     * 查询指定门店手机号
     */
    @GetMapping("/selectPhoneByShopId")
    @ApiOperation(value = "查询指定门店手机号", tags = {"小程序-门店详情"})
    @ApiOperation(value = "查询指定门店手机号", tags = {"小程序-门店详情-查询客服电话"})
    public R<List<Phone>> getPhoneByShopId(@ApiParam("门店id") @RequestParam Integer shopId) {
        return R.ok(phoneService.list(new LambdaQueryWrapper<Phone>()
                .eq(Phone::getType, PhoneType.SHOP.getCode())
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/PointSettingController.java
@@ -1,8 +1,16 @@
package com.ruoyi.other.controller;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.other.api.domain.PointSetting;
import com.ruoyi.other.service.PointSettingService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
 * <p>
@@ -14,7 +22,16 @@
 */
@RestController
@RequestMapping("/point-setting")
public class PointSettingController {
public class PointSettingController extends BaseController {
    @Resource
    private PointSettingService pointSettingService;
    @GetMapping("/getBaseSetting")
    public R<PointSetting> getBaseSetting(@RequestParam Integer id) {
        PointSetting pointSetting = pointSettingService.getById(id);
        return R.ok(pointSetting);
    }
}
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/SeckillActivityInfoController.java
@@ -4,7 +4,7 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.TableDataInfo;
import com.ruoyi.other.api.domain.Goods;
import com.ruoyi.other.api.domain.GoodsSeckill;
import com.ruoyi.other.api.domain.SeckillActivityInfo;
@@ -18,10 +18,7 @@
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.time.temporal.ChronoUnit;
import java.time.temporal.TemporalUnit;
import java.util.List;
/**
@@ -51,10 +48,10 @@
     */
    @GetMapping("/list")
    @ApiOperation(value = "秒杀活动列表",tags = {"小程序-商城-首页-秒杀活动列表"})
    public R<List<SeckillActivityVO>> list(Goods goods)
    public R<TableDataInfo> list(Goods goods)
    {
        startPage();
        return R.ok(seckillActivityInfoService.listSeckillActivity(goods));
        return R.ok(getDataTable(seckillActivityInfoService.listSeckillActivity(goods)));
    }
    /**
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java
@@ -7,23 +7,27 @@
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.other.api.domain.Shop;
import com.ruoyi.other.api.domain.ShopScore;
import com.ruoyi.other.api.domain.Technician;
import com.ruoyi.other.enums.ShopStatus;
import com.ruoyi.other.service.ShopScoreService;
import com.ruoyi.other.service.ShopService;
import com.ruoyi.other.service.TechnicianService;
import com.ruoyi.other.vo.NearbyShopVO;
import com.ruoyi.other.vo.ShopDetailVO;
import com.ruoyi.other.vo.VerifiableShopVo;
import com.ruoyi.system.api.model.LoginUser;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.*;
import com.ruoyi.other.vo.NearbyShopVO;
import com.ruoyi.other.vo.ShopDetailVO;
import com.ruoyi.other.vo.VerifiableShopVo;
import io.swagger.annotations.*;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
/**
@@ -44,6 +48,10 @@
    private ShopService shopService;
    @Resource
    private AppUserClient appUserClient;
    @Resource
    private ShopScoreService shopScoreService;
    @Resource
    private TokenService tokenService;
    @PostMapping("/getDetailById")
@@ -58,8 +66,8 @@
     */
    @GetMapping("/nearbyShopList")
    @ApiOperation(value = "附近门店列表", tags = {"小程序-首页-附近门店列表"})
    public R<List<NearbyShopVO>> nearbyShopList(@ApiParam("经度") @RequestParam String longitude,
                                                @ApiParam("纬度") @RequestParam String latitude) {
    public R<List<NearbyShopVO>> nearbyShopList(@ApiParam("经度") @RequestParam BigDecimal longitude,
                                                @ApiParam("纬度") @RequestParam BigDecimal latitude) {
        return R.ok(shopService.nearbyShopList(longitude, latitude));
    }
@@ -78,8 +86,8 @@
    @GetMapping("/shopDetail")
    @ApiOperation(value = "门店详情", tags = {"小程序-首页-门店详情"})
    public R<ShopDetailVO> shopDetail(@ApiParam("门店id") @RequestParam Integer shopId,
                                      @ApiParam("经度") @RequestParam String longitude,
                                      @ApiParam("纬度") @RequestParam String latitude) {
                                      @ApiParam("经度") @RequestParam BigDecimal longitude,
                                      @ApiParam("纬度") @RequestParam BigDecimal latitude) {
        return R.ok(shopService.getShopDetail(shopId, longitude, latitude));
    }
@@ -103,7 +111,20 @@
    public R<Void> bindShop(@ApiParam("门店id") @RequestParam Long shopId) {
        AppUser appUser = appUserClient.getAppUserById(SecurityUtils.getUserId());
        appUser.setShopId(shopId);
        appUserClient.editAppUserById(appUser);
        return appUserClient.editAppUserById(appUser);
    }
    /**
     * 门店打分
     * @return
     */
    @PostMapping("/shopScore")
    @ApiOperation(value = "门店打分", tags = {"小程序-个人中心-门店打分"})
    public R<Void> shopScore(@RequestBody ShopScore shopScore) {
        LoginUser loginUserApplet = tokenService.getLoginUserApplet();
        shopScore.setAppUserId(loginUserApplet.getUserid());
        shopScore.setCreateTime(LocalDateTime.now());
        shopScoreService.save(shopScore);
        return R.ok();
    }
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/SystemConfigController.java
@@ -9,8 +9,6 @@
import com.ruoyi.other.api.dto.StartPageSetDto;
import com.ruoyi.other.service.SystemConfigService;
import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.ApiOperation;
import javax.annotation.Resource;
@@ -66,7 +64,7 @@
        return R.ok(one);
    }
    @PostMapping("/index/start")
    @GetMapping("/index/start")
    @ApiOperation(value = "宣传图片-公司简介", tags = {"小程序-启动页"})
    public R<StartPageSetDto> indexstart(){
        SystemConfig one = systemConfigService.lambdaQuery().eq(SystemConfig::getType, 1).one();
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TechnicianController.java
@@ -1,37 +1,24 @@
package com.ruoyi.other.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.other.api.domain.GoodsEvaluate;
import com.ruoyi.other.api.domain.Technician;
import com.ruoyi.other.api.domain.TechnicianSubscribe;
import com.ruoyi.other.api.feignClient.OrderClient;
import com.ruoyi.other.service.GoodsEvaluateService;
import com.ruoyi.other.service.TechnicianService;
import com.ruoyi.other.service.TechnicianSubscribeService;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.other.service.TechnicianService;
import com.ruoyi.other.vo.TechnicianDetailVO;
import com.ruoyi.other.vo.TechnicianVO;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
 * <p>
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TechnicianSubscribeController.java
@@ -3,6 +3,8 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.page.TableDataInfo;
@@ -10,9 +12,7 @@
import com.ruoyi.other.api.domain.TechnicianSubscribe;
import com.ruoyi.other.service.TechnicianSubscribeService;
import com.ruoyi.other.vo.TechnicianSubscribeVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.annotations.*;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@@ -38,7 +38,7 @@
     */
    @GetMapping("/list")
    @ApiOperation(value = "预约列表", notes = "预约列表", tags = {"小程序-个人中心-门店管理-预约列表"})
    public TableDataInfo list(@ApiParam(value = "状态") @RequestParam Integer status,
    public TableDataInfo<TechnicianSubscribeVO> list(@ApiParam(value = "状态") @RequestParam Integer status,
                              @ApiParam(value = "门店id") @RequestParam Long shopId) {
        startPage();
        List<TechnicianSubscribeVO> list = technicianSubscribeService
@@ -93,12 +93,15 @@
    @GetMapping("/home/list")
    @ApiOperation(value = "列表", notes = "列表", tags = {"小程序-个人中心-我的预约"})
    public TableDataInfo homelist(@ApiParam(value = "状态 0=待服务,1=已服务,2=已取消 4 已到期") Integer status) {
        startPage();
        List<TechnicianSubscribeVO> list = technicianSubscribeService
                .getTechnicianSubscribeByUser(SecurityUtils.getUserId(), status);
        return getDataTable(list);
    @ApiOperation(value = "列表", notes = "获取用户预约列表", tags = {"小程序-个人中心-我的预约"})
    @ApiImplicitParams({
            @ApiImplicitParam(name = "status", value = "状态 0=待服务,1=已服务,2=已取消, 4=已到期", required = true, dataType = "Integer", paramType = "query"),
            @ApiImplicitParam(name = "current", value = "当前页码,从1开始", required = true, dataType = "Integer", paramType = "query"),
            @ApiImplicitParam(name = "size", value = "每页显示数量,默认10", dataType = "Integer", paramType = "query")
    })
    public R<IPage<TechnicianSubscribeVO>> homelist(@RequestParam(value = "status", required = false) @ApiParam(value = "状态 0=待服务,1=已服务,2=已取消 4 已到期") Integer status,
                                                 @ApiParam(hidden = true) Page<TechnicianSubscribe> page) {
        return R.ok(technicianSubscribeService.getTechnicianSubscribeByUser(page, SecurityUtils.getUserId(), status));
    }
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/VipSettingController.java
@@ -2,26 +2,18 @@
import com.ruoyi.account.api.feignClient.AppUserClient;
import com.ruoyi.account.api.model.AppUser;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.other.api.domain.VipGood;
import com.ruoyi.other.api.domain.VipSetting;
import com.ruoyi.other.service.VipGoodService;
import com.ruoyi.other.service.VipSettingService;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.other.api.domain.VipSetting;
import com.ruoyi.other.service.VipSettingService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import javax.annotation.Resource;
import java.util.List;
import javax.annotation.Resource;
/**
 * <p>
@@ -44,74 +36,67 @@
    @Resource
    private VipGoodService vipGoodService;
    @PostMapping("/info")
    @ApiOperation(value = "获取各级会员信息", tags = {"小程序-个人中心首页","小程序-会员中心"})
    public R<List<VipSetting>> info(){
    @GetMapping("/info")
    @ApiOperation(value = "获取各级会员信息", tags = {"小程序-个人中心首页", "小程序-会员中心"})
    public R<List<VipSetting>> info() {
        List<VipSetting> list = vipSettingService.list();
        return R.ok(list);
    }
    @PostMapping("/button/agent/check")
    @ApiOperation(value = "准代理,代理按钮是否展示", tags = {"小程序-个人中心首页","小程序-会员中心"})
    public R<Boolean> buttoncheck(@ApiParam("4准代理,5代理")Integer id){
        Long userid = tokenService.getLoginUserApplet().getUserid();
        AppUser appUserById = appUserClient.getAppUserById(userid);
        Boolean back = true;
        VipSetting byId = vipSettingService.getById(id);
        //第一种判断
        if (byId == null) {
            back = false;
        }else {
            if (byId.getVipAgentLevelUpRole() == null || byId.getVipAgentLevelUpRole() == 0) {
                back = false;
            }
            if (byId.getVipLevelUpShop() == null || byId.getVipLevelUpShare() == null) {
                back = false;
            } else {
                if (back && appUserById.getShopPoint().compareTo(byId.getVipLevelUpShop()) > 0 && appUserById.getSharePoint().compareTo(byId.getVipLevelUpShare()) > 0) {
                    back = true;
                }
            }
            if (back) {
                return R.ok(true);
            }
            //第二种判断
            if (byId.getVipDirectVipRole()== null || byId.getVipDirectVipRole() == 0||byId.getVipDirectVipNum() == null) {
                back = false;
            }else {
                //拿到当前用户直推钻石会员人数
                Long data = appUserClient.getVipCount(userid, 3).getData();
                if (data>=byId.getVipDirectVipNum()){
                    return R.ok(true);
                }
            }
            //第三种判断
            List<VipGood> list = vipGoodService.lambdaQuery().eq(VipGood::getVipId, id).list();
            for (VipGood vipGood : list) {
                //挨个判断是否购买商品
            }
        }
        return R.ok(list);
    }
//    @PostMapping("/button/agent/check")
//    @ApiOperation(value = "准代理,代理按钮是否展示", tags = {"小程序-个人中心首页","小程序-会员中心"})
//    public R<Boolean> buttoncheck(@ApiParam("4准代理,5代理")Integer id) {
//        Long userid = tokenService.getLoginUserApplet().getUserid();
//        AppUser appUserById = appUserClient.getAppUserById(userid);
//        Boolean back = true;
//        VipSetting byId = vipSettingService.getById(id);
//        //第一种判断
//        if (byId == null) {
//            back = false;
//        } else {
//            if (byId.getVipAgentLevelUpRole() == null || byId.getVipAgentLevelUpRole() == 0) {
//                back = false;
//            }
//            if (byId.getVipLevelUpShop() == null || byId.getVipLevelUpShare() == null) {
//                back = false;
//            } else {
//                if (back && appUserById.getShopPoint().compareTo(byId.getVipLevelUpShop()) > 0 && appUserById.getSharePoint().compareTo(byId.getVipLevelUpShare()) > 0) {
//                    back = true;
//                }
//            }
//            if (back) {
//                return R.ok(true);
//            }
//            //第二种判断
//            if (byId.getVipDirectVipRole() == null || byId.getVipDirectVipRole() == 0 || byId.getVipDirectVipNum() == null) {
//                back = false;
//            } else {
//                //拿到当前用户直推钻石会员人数
//                Long data = appUserClient.getVipCount(userid, 3).getData();
//                if (data >= byId.getVipDirectVipNum()) {
//                    return R.ok(true);
//                }
//            }
//            //第三种判断
//            List<VipGood> list = vipGoodService.lambdaQuery().eq(VipGood::getVipId, id).list();
//            for (VipGood vipGood : list) {
//                //挨个判断是否购买商品
//
//
//            }
//        }
//
//            return R.ok();
//        }
    @GetMapping("getVipSettingById")
    @ApiOperation(value = "获取会员设置")
    public R<VipSetting> getVipSettingById(@ApiParam(value = "会员id") @RequestParam Integer id){
    public R<VipSetting> getVipSettingById(@ApiParam(value = "会员id") @RequestParam Integer id) {
        return R.ok(vipSettingService.getById(id));
    }
}
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/ShopMapper.java
@@ -6,6 +6,7 @@
import com.ruoyi.other.vo.ShopDetailVO;
import org.apache.ibatis.annotations.Param;
import java.math.BigDecimal;
import java.util.List;
/**
@@ -18,7 +19,7 @@
 */
public interface ShopMapper extends BaseMapper<Shop> {
    List<NearbyShopVO> selectNearbyShopList(@Param("longitude") String longitude,@Param("latitude") String latitude);
    List<NearbyShopVO> selectNearbyShopList(@Param("longitude") BigDecimal longitude,@Param("latitude") BigDecimal latitude);
    ShopDetailVO selectShopDetail(Integer shopId);
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/ShopScoreMapper.java
New file
@@ -0,0 +1,7 @@
package com.ruoyi.other.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.other.api.domain.ShopScore;
public interface ShopScoreMapper extends BaseMapper<ShopScore> {
}
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/TechnicianSubscribeMapper.java
@@ -1,6 +1,8 @@
package com.ruoyi.other.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.other.api.domain.TechnicianSubscribe;
import com.ruoyi.other.vo.TechnicianSubscribeVO;
import org.apache.ibatis.annotations.Param;
@@ -24,6 +26,6 @@
     */
    public List<TechnicianSubscribeVO> getTechnicianSubscribeByUserAndShop(@Param("userId") Long userId,
                                                                           @Param("shopId") Long shopId);
    public List<TechnicianSubscribeVO> getTechnicianSubscribeByUser(@Param("userId") Long userId,
                                                                           @Param("status") Integer status);
    IPage<TechnicianSubscribeVO> getTechnicianSubscribeByUser(@Param("page") Page<TechnicianSubscribe> page, @Param("userId") Long userId,
                                       @Param("status") Integer status);
}
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/ShopScoreService.java
New file
@@ -0,0 +1,7 @@
package com.ruoyi.other.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.other.api.domain.ShopScore;
public interface ShopScoreService extends IService<ShopScore> {
}
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/ShopService.java
@@ -1,11 +1,11 @@
package com.ruoyi.other.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.other.api.domain.Goods;
import com.ruoyi.other.api.domain.Shop;
import com.ruoyi.other.vo.NearbyShopVO;
import com.ruoyi.other.vo.ShopDetailVO;
import java.math.BigDecimal;
import java.util.List;
/**
@@ -18,7 +18,7 @@
 */
public interface ShopService extends IService<Shop> {
    List<NearbyShopVO> nearbyShopList(String longitude, String latitude);
    List<NearbyShopVO> nearbyShopList(BigDecimal longitude, BigDecimal latitude);
    ShopDetailVO getShopDetail(Integer shopId,String longitude, String latitude);
    ShopDetailVO getShopDetail(Integer shopId, BigDecimal longitude, BigDecimal latitude);
}
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/TechnicianSubscribeService.java
@@ -1,5 +1,7 @@
package com.ruoyi.other.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.other.api.domain.TechnicianSubscribe;
import com.ruoyi.other.vo.TechnicianSubscribeVO;
@@ -21,7 +23,7 @@
     */
    List<TechnicianSubscribeVO> getTechnicianSubscribeByUserAndShop(Long userId, Long shopId);
    List<TechnicianSubscribeVO> getTechnicianSubscribeByUser(Long userId, Integer status);
    IPage<TechnicianSubscribeVO> getTechnicianSubscribeByUser(Page<TechnicianSubscribe> page, Long userId, Integer status);
    void subscribe(TechnicianSubscribe technicianSubscribe, Long technicianId);
}
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java
@@ -1,6 +1,5 @@
package com.ruoyi.other.service.impl;
import cn.hutool.json.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.account.api.feignClient.AppUserClient;
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopScoreServiceImpl.java
New file
@@ -0,0 +1,11 @@
package com.ruoyi.other.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.other.api.domain.ShopScore;
import com.ruoyi.other.mapper.ShopScoreMapper;
import com.ruoyi.other.service.ShopScoreService;
import org.springframework.stereotype.Service;
@Service
public class ShopScoreServiceImpl extends ServiceImpl<ShopScoreMapper, ShopScore> implements ShopScoreService {
}
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopServiceImpl.java
@@ -1,22 +1,25 @@
package com.ruoyi.other.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.GeodesyUtil;
import com.ruoyi.other.api.domain.Goods;
import com.ruoyi.other.mapper.GoodsMapper;
import com.ruoyi.other.api.domain.ShopScore;
import com.ruoyi.other.mapper.ShopMapper;
import com.ruoyi.other.api.domain.Shop;
import com.ruoyi.other.service.ShopScoreService;
import com.ruoyi.other.service.ShopService;
import com.ruoyi.other.vo.NearbyShopVO;
import com.ruoyi.other.vo.ShopDetailVO;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.stream.Collectors;
/**
 * <p>
@@ -30,14 +33,39 @@
public class ShopServiceImpl extends ServiceImpl<ShopMapper, Shop> implements ShopService {
    @Resource
    private ShopMapper shopMapper;
    @Resource
    private ShopScoreService shopScoreService;
    @Override
    public List<NearbyShopVO> nearbyShopList(String longitude, String latitude) {
        return shopMapper.selectNearbyShopList(longitude,latitude);
    public List<NearbyShopVO> nearbyShopList(BigDecimal longitude, BigDecimal latitude) {
        List<NearbyShopVO> nearbyShopVOS = shopMapper.selectNearbyShopList(longitude, longitude);
        if (nearbyShopVOS == null || nearbyShopVOS.isEmpty()) {
            return Collections.emptyList();
        }
        List<Long> shopIds = nearbyShopVOS.stream().map(NearbyShopVO::getId).collect(Collectors.toList());
        List<ShopScore> shopScores = shopScoreService.list(new LambdaQueryWrapper<ShopScore>().in(ShopScore::getShopId, shopIds));
        if (shopScores == null || shopScores.isEmpty()) {
            return nearbyShopVOS;
        }
        Map<Long, List<ShopScore>> shopScoreMap = shopScores.stream().collect(Collectors.groupingBy(ShopScore::getShopId));
        nearbyShopVOS.forEach(nearbyShopVO -> {
            List<ShopScore> scores = shopScoreMap.get(nearbyShopVO.getId());
            if (scores != null && !scores.isEmpty()){
                BigDecimal score = scores.stream()
                        .map(ShopScore::getScore)
                        .reduce(BigDecimal.ZERO, BigDecimal::add)
                        .divide(new BigDecimal(scores.size()), 1, RoundingMode.HALF_UP);
                nearbyShopVO.setScore(score.toString());
            }
        });
        return nearbyShopVOS;
    }
    @Override
    public ShopDetailVO getShopDetail(Integer shopId, String longitude, String latitude) {
    public ShopDetailVO getShopDetail(Integer shopId, BigDecimal longitude, BigDecimal latitude) {
        // 查询店铺详情
        ShopDetailVO shopDetailVO = shopMapper.selectShopDetail(shopId);
        if (shopDetailVO == null) {
@@ -45,12 +73,16 @@
        }
        // 计算距离
        String shopLocation = String.format("%s,%s", shopDetailVO.getLongitude(), shopDetailVO.getLatitude());
        String userLocation = String.format("%s,%s", longitude, latitude);
        Map<String, Double> distanceMap = GeodesyUtil.getDistance(userLocation, shopLocation);
        Double wGs84 = distanceMap.get("WGs84");
        shopDetailVO.setDistance(wGs84);
        if (shopDetailVO.getLongitude() != null && shopDetailVO.getLatitude() != null){
            String shopLocation = String.format("%s,%s", shopDetailVO.getLongitude(), shopDetailVO.getLatitude());
            String userLocation = String.format("%s,%s", longitude.toString(), latitude.toString());
            Map<String, Double> distanceMap = GeodesyUtil.getDistance(userLocation, shopLocation);
            Double wGs84 = distanceMap.get("WGS84");
            shopDetailVO.setDistance(wGs84);
        }
        return shopDetailVO;
    }
}
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TechnicianServiceImpl.java
@@ -9,7 +9,6 @@
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.List;
/**
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TechnicianSubscribeServiceImpl.java
@@ -1,12 +1,10 @@
package com.ruoyi.other.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.redis.annotation.DistributedLock;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.other.api.domain.TechnicianSubscribe;
import com.ruoyi.other.enums.TechnicianErrorCode;
import com.ruoyi.other.enums.TechnicianStatus;
import com.ruoyi.other.mapper.TechnicianMapper;
import com.ruoyi.other.mapper.TechnicianSubscribeMapper;
@@ -38,8 +36,8 @@
        return technicianSubscribeMapper.getTechnicianSubscribeByUserAndShop(userId, shopId);
    }
    @Override
    public List<TechnicianSubscribeVO> getTechnicianSubscribeByUser(Long userId, Integer status) {
        return technicianSubscribeMapper.getTechnicianSubscribeByUser(userId, status);
    public IPage<TechnicianSubscribeVO> getTechnicianSubscribeByUser(Page<TechnicianSubscribe> page, Long userId, Integer status) {
        return technicianSubscribeMapper.getTechnicianSubscribeByUser(page, userId, status);
    }
    @Override
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/NearbyShopVO.java
@@ -8,7 +8,7 @@
public class NearbyShopVO {
    @ApiModelProperty(value = "门店id")
    private Integer id;
    private Long id;
    @ApiModelProperty(value = "封面图片")
    private String homePicture;
@@ -18,4 +18,10 @@
    @ApiModelProperty(value = "详细地址")
    private String address;
    @ApiModelProperty(value = "距离")
    private String distance;
    @ApiModelProperty(value = "评分")
    private String score;
}
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/SeckillActivityDetailVO.java
@@ -1,6 +1,5 @@
package com.ruoyi.other.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/SeckillActivityVO.java
@@ -6,6 +6,7 @@
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Data
public class SeckillActivityVO {
@@ -33,6 +34,10 @@
    @ApiModelProperty(value = "开始时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Integer startTime;
    private LocalDateTime startTime;
    @ApiModelProperty(value = "结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime endTime;
}
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/ShopDetailVO.java
@@ -1,5 +1,6 @@
package com.ruoyi.other.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -29,8 +30,8 @@
    @ApiModelProperty(value = "资质证书图片")
    private String certification;
    @ApiModelProperty(value = "营业星期(1,2,3,4,5,6,7)")
    private String businessDate;
    @ApiModelProperty(value = "营业星期:1-周一到周日 2-周一周五 3-仅周末")
    private Long businessDate;
    @ApiModelProperty(value = "开始时间(HH:mm)")
    private String startTime;
@@ -63,8 +64,8 @@
    private Double distance;
    @ApiModelProperty(value = "经度")
    private String longitude;
    private BigDecimal longitude;
    @ApiModelProperty(value = "纬度")
    private String latitude;
    private BigDecimal latitude;
}
ruoyi-service/ruoyi-other/src/main/resources/mapper/other/ShopMapper.xml
@@ -31,6 +31,8 @@
            ts.business_date,
            ts.start_time,
            ts.end_time,
            ts.longitude,
            ts.latitude,
            AVG( tss.score ) score
        FROM
            t_shop ts
@@ -38,7 +40,7 @@
        WHERE
            ts.del_flag = 0
          AND ts.`status` = 1
          AND id = #{id}
          AND ts.id = #{id}
        GROUP BY
            ts.id,
            ts.details_picture,
@@ -47,6 +49,8 @@
            ts.address,
            ts.business_date,
            ts.start_time,
            ts.end_time
            ts.end_time,
            ts.longitude,
            ts.latitude
    </select>
</mapper>
ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TechnicianSubscribeMapper.xml
@@ -33,7 +33,7 @@
            tts.subscribe_time,
            tts.service_mode,
        CASE
        WHEN tts.subscribe_time lt; NOW()  THEN 4
        WHEN tts.subscribe_time <![CDATA[<]]> NOW()  THEN 4
        ELSE tts.status
        END AS status
        FROM
ruoyi-service/ruoyi-other/src/test/java/com/ruoyi/order/other/RuoYiOtherApplicationTests.java