From ff811ae8df41273d7ab0011b6b7f1f278f03bbd2 Mon Sep 17 00:00:00 2001 From: luodangjia <luodangjia> Date: 星期四, 12 十二月 2024 18:06:05 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopClient.java | 5 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/enums/TechnicianStatus.java | 3 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/OrderDetailVO.java | 3 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/TaskUtil.java | 16 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsBargainPrice.java | 29 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/ApplyRefundPass.java | 0 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/BaseSettingController.java | 16 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/RefundPassService.java | 1 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java | 13 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Goods.java | 17 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/VipGoodClient.java | 4 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsShop.java | 2 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/mapper/AppUserMapper.java | 3 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AgentApplicationServiceImpl.java | 51 + ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/weChat/EnvVersion.java | 35 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopServiceImpl.java | 29 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/ShopMapper.java | 4 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/PointSetting.java | 23 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/factory/RemoteOrderGoodsFallbackFactory.java | 12 ruoyi-api/ruoyi-api-account/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports | 3 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/CommissionServiceImpl.java | 4 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserSignRecordController.java | 3 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/ShoppingCartService.java | 3 ruoyi-service/ruoyi-account/src/main/resources/mapper/account/UserPointMapper.xml | 10 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/SystemConfigController.java | 36 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/UserSignRecord.java | 4 ruoyi-service/ruoyi-other/src/main/resources/mapper/other/SeckillActivityInfoMapper.xml | 4 ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/task/AfterSalesTask.java | 12 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TechnicianSubscribeServiceImpl.java | 31 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/GoodsService.java | 10 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/MyShoppingCartVo.java | 0 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java | 7 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/GoodsVipClient.java | 2 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/weChat/WeChatUtil.java | 88 + ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/CouponInfoController.java | 2 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java | 244 +++++ ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/TechnicianSubscribeService.java | 2 ruoyi-service/ruoyi-other/src/main/resources/mapper/other/GoodsMapper.xml | 36 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TechnicianSubscribeController.java | 18 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsEvaluateController.java | 69 + ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/AgentApplicationService.java | 2 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/TechnicianClient.java | 3 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/CommissionController.java | 21 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsController.java | 53 + ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserPointServiceImpl.java | 18 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/OrderActivityInfoController.java | 70 + ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/UserChangeLogFallbackFactory.java | 23 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsAppUser.java | 2 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShareController.java | 28 ruoyi-modules/ruoyi-job/pom.xml | 12 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/ShopService.java | 9 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/ShoppingCartPayment.java | 0 ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/task/TechnicianSubscribe.java | 29 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserChangeLogController.java | 25 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java | 112 ++ ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/TechnicianSubscribeMapper.java | 5 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/VipSettingClient.java | 26 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserClientFallbackFactory.java | 10 ruoyi-service/ruoyi-other/src/main/resources/mapper/other/ShopMapper.xml | 28 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/ConfirmOrder.java | 0 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsCategoryController.java | 14 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Shop.java | 16 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TechnicianController.java | 2 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/SetGoodsNumber.java | 0 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/BannerController.java | 22 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/ChargingOrderListInfoVO.java | 1 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AgentApplicationController.java | 21 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/ShopClientFallbackFactory.java | 6 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/OrderActivityInfo.java | 8 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java | 300 +++--- ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsEvaluate.java | 10 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/dto/LogisticsSetDto.java | 39 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/EndOfChargePageInfo.java | 0 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/RefundPassController.java | 2 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java | 49 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/TechnicianClientFallbackFactory.java | 5 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/VipSettingController.java | 16 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/ConfirmOrderVo.java | 1 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java | 15 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/ReplyEvaluationVO.java | 0 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AppUser.java | 9 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/AppUserService.java | 15 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/SeckillActivityInfoController.java | 6 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AgentApplication.java | 4 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/feignClient/RemoteOrderGoodsClient.java | 11 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/OrderVO.java | 2 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsArea.java | 2 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/Price.java | 73 + ruoyi-api/ruoyi-api-other/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports | 3 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/PhoneController.java | 2 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/UserChangeLogClient.java | 26 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsBargainPriceController.java | 217 ++++ ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsBargainPriceDetail.java | 2 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/VerifiableShopVo.java | 0 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/GoodsMapper.java | 3 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserShopController.java | 7 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/AgreementController.java | 4 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/VipSettingClientFallbackFactory.java | 23 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ShoppingCartController.java | 12 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/VipCenterController.java | 60 ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TechnicianSubscribeMapper.xml | 10 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsVip.java | 2 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/TechnicianSubscribe.java | 9 ruoyi-service/ruoyi-account/src/main/resources/mapper/account/AppUserMapper.xml | 24 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/mapper/UserPointMapper.java | 3 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/dto/SignBackRDto.java | 2 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java | 109 ++ 107 files changed, 2,016 insertions(+), 481 deletions(-) diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserClientFallbackFactory.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserClientFallbackFactory.java index 38531a4..69f2a2e 100644 --- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserClientFallbackFactory.java +++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserClientFallbackFactory.java @@ -6,6 +6,7 @@ import com.ruoyi.common.core.domain.R; import lombok.extern.slf4j.Slf4j; import org.springframework.cloud.openfeign.FallbackFactory; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import java.util.List; @@ -41,6 +42,7 @@ throw new RuntimeException("获取优惠券数量失败"); } + @GetMapping("/appUserShop/shop/{userId}") @Override public R<List<AppUserShop>> getAppUserShop(Long userId) { log.error("获取用户门店信息失败:{}", cause.getMessage()); @@ -70,7 +72,15 @@ throw new RuntimeException("获取直推会员数失败"); } + @Override + public R<Void> addAppUserShop(AppUserShop appUserShop) { + return R.fail("添加失败"); + } + @Override + public R<AppUser> getAppUserByPhone(String phone) { + return R.fail("通过手机号查询用户失败"); + } }; } } diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/UserChangeLogFallbackFactory.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/UserChangeLogFallbackFactory.java new file mode 100644 index 0000000..947c9f9 --- /dev/null +++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/UserChangeLogFallbackFactory.java @@ -0,0 +1,23 @@ +package com.ruoyi.account.api.factory; + +import com.ruoyi.account.api.feignClient.UserChangeLogClient; +import com.ruoyi.account.api.model.UserChangeLog; +import com.ruoyi.common.core.domain.R; +import org.springframework.cloud.openfeign.FallbackFactory; + +/** + * @author zhibing.pu + * @Date 2024/12/10 15:01 + */ +public class UserChangeLogFallbackFactory implements FallbackFactory<UserChangeLogClient> { + @Override + public UserChangeLogClient create(Throwable cause) { + return new UserChangeLogClient(){ + + @Override + public R saveUserChangeLog(UserChangeLog userChangeLog) { + return R.fail("保存会员等级变更记录失败:" + cause.getMessage()); + } + }; + } +} diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java index 43819bb..1f101d7 100644 --- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java +++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java @@ -40,6 +40,9 @@ @GetMapping("/appUserShop/shop/{userId}") R<List<AppUserShop>> getAppUserShop(@PathVariable("userId") Long userId); + @PostMapping("/appUserShop/addAppUserShop") + R<Void> addAppUserShop(@RequestBody AppUserShop appUserShop); + /** * 根据用户id获取用户的祖籍列表 */ @@ -54,4 +57,8 @@ @PostMapping("/app-user/getVipCount") R<Long> getVipCount(@RequestParam("userId")Long userId, @RequestParam("vipId") Integer vipId ); + + @GetMapping("/getAppUserByPhone") + public R<AppUser> getAppUserByPhone(@RequestParam("phone") String phone); + } diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/UserChangeLogClient.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/UserChangeLogClient.java new file mode 100644 index 0000000..ebce10f --- /dev/null +++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/UserChangeLogClient.java @@ -0,0 +1,26 @@ +package com.ruoyi.account.api.feignClient; + +import com.ruoyi.account.api.factory.UserChangeLogFallbackFactory; +import com.ruoyi.account.api.model.UserChangeLog; +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.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +/** + * @author zhibing.pu + * @Date 2024/12/10 15:01 + */ +@FeignClient(contextId = "UserChangeLogClient", value = ServiceNameConstants.ACCOUNT_SERVICE, fallbackFactory = UserChangeLogFallbackFactory.class) +public interface UserChangeLogClient { + + + /** + * 保存会员等级变更记录 + * @param userChangeLog + * @return + */ + @PostMapping("/user-change-log/saveUserChangeLog") + R saveUserChangeLog(@RequestBody UserChangeLog userChangeLog); +} diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AgentApplication.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AgentApplication.java index 12a1d82..2e4d076 100644 --- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AgentApplication.java +++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AgentApplication.java @@ -50,11 +50,11 @@ @ApiModelProperty(value = "用户当前消费积分") @TableField("shop_point") - private BigDecimal shopPoint; + private Integer shopPoint; @ApiModelProperty(value = "用户当前分佣积分") @TableField("share_point") - private BigDecimal sharePoint; + private Integer sharePoint; @ApiModelProperty(value = "直推用户已达钻石会员数") @TableField("direct_vip_num") diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AppUser.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AppUser.java index 9d92ba2..5ef7a2b 100644 --- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AppUser.java +++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AppUser.java @@ -13,6 +13,7 @@ import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; +import java.util.Set; /** * <p> @@ -167,6 +168,10 @@ @TableField("lave_point") private Integer lavePoint; + @ApiModelProperty(value = "总积分") + @TableField("total_point") + private Integer totalPoint; + @ApiModelProperty(value = "是否可更换推广人(0=否,1=是)") @TableField("change_promoter") private Integer changePromoter; @@ -238,6 +243,10 @@ @TableField(exist = false) private Integer isSign; + @ApiModelProperty("绑定门店id列表") + @TableField(exist = false) + private Set<Integer> shopIds; + diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/UserSignRecord.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/UserSignRecord.java index a1d6e36..6003545 100644 --- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/UserSignRecord.java +++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/UserSignRecord.java @@ -45,9 +45,9 @@ @TableField("red_amount") private BigDecimal redAmount; - @ApiModelProperty(value = "红包金额") + @ApiModelProperty(value = "积分") @TableField("point") - private BigDecimal point; + private Integer point; @ApiModelProperty(value = "删除(0=否,1=是)") @TableField("del_flag") diff --git a/ruoyi-api/ruoyi-api-account/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/ruoyi-api/ruoyi-api-account/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 3261002..781adb8 100644 --- a/ruoyi-api/ruoyi-api-account/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/ruoyi-api/ruoyi-api-account/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -2,4 +2,5 @@ com.ruoyi.account.api.factory.UserAddressClientFallbackFactory com.ruoyi.account.api.factory.UserCouponClientFallbackFactory com.ruoyi.account.api.factory.UserPointFallbackFactory -com.ruoyi.account.api.factory.BalanceChangeRecordClientFallbackFactory \ No newline at end of file +com.ruoyi.account.api.factory.BalanceChangeRecordClientFallbackFactory +com.ruoyi.account.api.factory.UserChangeLogFallbackFactory \ No newline at end of file diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/factory/RemoteOrderGoodsFallbackFactory.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/factory/RemoteOrderGoodsFallbackFactory.java index 00e5cd1..213a063 100644 --- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/factory/RemoteOrderGoodsFallbackFactory.java +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/factory/RemoteOrderGoodsFallbackFactory.java @@ -2,12 +2,14 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.order.feignClient.RemoteOrderGoodsClient; +import com.ruoyi.order.vo.Price; import lombok.extern.slf4j.Slf4j; import com.ruoyi.order.model.Order; import com.ruoyi.order.model.OrderGood; import org.springframework.cloud.openfeign.FallbackFactory; import java.util.List; +import java.util.Set; @Slf4j public class RemoteOrderGoodsFallbackFactory implements FallbackFactory<RemoteOrderGoodsClient> { @@ -40,6 +42,16 @@ public R<Void> subscribe(Long id, Integer technicianId) { return R.fail("预约失败"); } + + @Override + public R<Void> calculationCommission(Set<String> orderIds) { + return R.fail("计算佣金失败"); + } + + @Override + public R<Price> getGoodsPrice(Long appUserId, Integer goodsId, Integer shopId) { + return R.fail("获取商品价格失败"); + } }; } diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/feignClient/RemoteOrderGoodsClient.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/feignClient/RemoteOrderGoodsClient.java index 5aadf65..8d1c522 100644 --- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/feignClient/RemoteOrderGoodsClient.java +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/feignClient/RemoteOrderGoodsClient.java @@ -6,6 +6,7 @@ import com.ruoyi.order.factory.RemoteOrderGoodsFallbackFactory; import com.ruoyi.order.model.Order; import com.ruoyi.order.model.OrderGood; +import com.ruoyi.order.vo.Price; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -13,6 +14,7 @@ import org.springframework.web.bind.annotation.RequestParam; import java.util.List; +import java.util.Set; @FeignClient(contextId = "RemoteOrderGoodsClient", value = ServiceNameConstants.ORDER_SERVICE, fallbackFactory = RemoteOrderGoodsFallbackFactory.class) public interface RemoteOrderGoodsClient { @@ -46,4 +48,13 @@ */ @PostMapping("/order/subscribe") public R<Void> subscribe(@RequestParam(value = "id" , required = false) Long id ,@RequestParam(value = "technicianId", required = false) Integer technicianId); + + /** + * 预约技师 + */ + @PostMapping("/commission/calculationCommission") + public R<Void> calculationCommission(@RequestBody Set<String> orderIds); + + @GetMapping("/shopping-cart/getGoodsPrice") + public R<Price> getGoodsPrice(@RequestParam("appUserId") Long appUserId, @RequestParam("goodsId") Integer goodsId, @RequestParam("shopId") Integer shopId); } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/ApplyRefundPass.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/ApplyRefundPass.java similarity index 100% rename from ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/ApplyRefundPass.java rename to ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/ApplyRefundPass.java diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/ChargingOrderListInfoVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/ChargingOrderListInfoVO.java similarity index 99% rename from ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/ChargingOrderListInfoVO.java rename to ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/ChargingOrderListInfoVO.java index fc27940..8a771e4 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/ChargingOrderListInfoVO.java +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/ChargingOrderListInfoVO.java @@ -7,7 +7,6 @@ import java.math.BigDecimal; import java.time.LocalDateTime; -import java.util.List; @Data @ApiModel(value = "ChargingOrderListInfoVO对象",description = "充电时段统计列表查看详情VO") diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/ConfirmOrder.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/ConfirmOrder.java similarity index 100% rename from ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/ConfirmOrder.java rename to ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/ConfirmOrder.java diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/ConfirmOrderVo.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/ConfirmOrderVo.java similarity index 96% rename from ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/ConfirmOrderVo.java rename to ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/ConfirmOrderVo.java index dabda03..08e8b06 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/ConfirmOrderVo.java +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/ConfirmOrderVo.java @@ -1,7 +1,6 @@ package com.ruoyi.order.vo; import com.ruoyi.account.api.model.UserAddress; -import com.ruoyi.account.api.vo.CouponInfoVo; import com.ruoyi.account.api.vo.PaymentUserCouponVo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/EndOfChargePageInfo.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/EndOfChargePageInfo.java similarity index 100% rename from ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/EndOfChargePageInfo.java rename to ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/EndOfChargePageInfo.java diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/MyShoppingCartVo.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/MyShoppingCartVo.java similarity index 100% rename from ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/MyShoppingCartVo.java rename to ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/MyShoppingCartVo.java diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/OrderDetailVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/OrderDetailVO.java index f3a4662..c6c1386 100644 --- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/OrderDetailVO.java +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/OrderDetailVO.java @@ -83,4 +83,7 @@ @ApiModelProperty(value = "技师名称") private String technicianName; + @ApiModelProperty(value = "预约单id") + private String technicianSubscribeId; + } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/OrderVO.java similarity index 92% rename from ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderVO.java rename to ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/OrderVO.java index b837117..ed34770 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderVO.java +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/OrderVO.java @@ -1,11 +1,9 @@ package com.ruoyi.order.vo; -import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; -import java.util.List; @Data public class OrderVO { diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/Price.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/Price.java new file mode 100644 index 0000000..729ea24 --- /dev/null +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/Price.java @@ -0,0 +1,73 @@ +package com.ruoyi.order.vo; + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class Price { + /** + * 现金 + */ + private BigDecimal cash; + /** + * 积分 + */ + private Integer point; + /** + * 获取结束时间 + */ + private Long endTime; + /** + * 现金支付 + */ + private Boolean cashPayment; + /** + * 积分支付 + */ + private Boolean pointPayment; + /** + * 可获得消费积分 + */ + private Integer earnSpendingPoints; + /** + * 上级获得分佣金额 + */ + private BigDecimal superiorSubcommission; + /** + * 上级获得返佣积分 + */ + private Integer superiorRebatePoints; + /** + * 获取返佣积分上级类型(1=直推上级,2=直帮上级) + */ + private Integer superiorType; + /** + * 核销门店可获得服务费 + */ + private BigDecimal servuceShopCharges; + /** + * 核销门店可获得服务积分 + */ + private Integer servuceShopPoints; + /** + * 技师可获得服务积分 + */ + private Integer technicianPoints; + /** + * 绑定门店可获得分佣金额 + */ + private BigDecimal boundShopCharges; + /** + * 绑定门店可获得返佣积分 + */ + private Integer boundShopPoints; + /** + * 绑定门店上级门店可获得分佣金额 + */ + private BigDecimal boundShopSuperiorsCharges; + /** + * 绑定门店上级门店可获得返佣积分 + */ + private Integer boundShopSuperiorsPoints; +} diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/ReplyEvaluationVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/ReplyEvaluationVO.java similarity index 100% rename from ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/ReplyEvaluationVO.java rename to ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/ReplyEvaluationVO.java diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/SetGoodsNumber.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/SetGoodsNumber.java similarity index 100% rename from ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/SetGoodsNumber.java rename to ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/SetGoodsNumber.java diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/ShoppingCartPayment.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/ShoppingCartPayment.java similarity index 100% rename from ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/ShoppingCartPayment.java rename to ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/ShoppingCartPayment.java diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/VerifiableShopVo.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/VerifiableShopVo.java similarity index 100% rename from ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/VerifiableShopVo.java rename to ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/VerifiableShopVo.java diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Goods.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Goods.java index 4e6f8d7..d9b5f37 100644 --- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Goods.java +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Goods.java @@ -9,6 +9,7 @@ import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDateTime; +import java.util.List; /** * <p> @@ -122,5 +123,21 @@ @TableField(exist = false) private Integer vipId; + @TableField(exist = false) + @ApiModelProperty(value = "指定门店") + private List<GoodsShop> goodsShopList; + + @TableField(exist = false) + @ApiModelProperty(value = "指定用户") + private List<GoodsAppUser> goodsAppUserList; + + @TableField(exist = false) + @ApiModelProperty(value = "会员价格") + private List<GoodsVip> goodsVipList; + + @TableField(exist = false) + @ApiModelProperty(value = "地区价格") + private List<GoodsArea> goodsAreaList; + } diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsAppUser.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsAppUser.java index 97afabe..817c741 100644 --- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsAppUser.java +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsAppUser.java @@ -21,7 +21,7 @@ @Data @EqualsAndHashCode(callSuper = false) @TableName("t_goods_app_user") -@ApiModel(value="GoodsAppUser对象", description="") +@ApiModel(value="指定用户对象", description="") public class GoodsAppUser implements Serializable { private static final long serialVersionUID = 1L; diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsArea.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsArea.java index 440a334..880312c 100644 --- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsArea.java +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsArea.java @@ -23,7 +23,7 @@ @Data @EqualsAndHashCode(callSuper = false) @TableName("t_goods_area") -@ApiModel(value="GoodsArea对象", description="") +@ApiModel(value="商品地区价格对象", description="") public class GoodsArea implements Serializable { private static final long serialVersionUID = 1L; diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsBargainPrice.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsBargainPrice.java index 28c7444..148bcac 100644 --- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsBargainPrice.java +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsBargainPrice.java @@ -8,6 +8,7 @@ import java.io.Serializable; import java.time.LocalDateTime; +import java.util.List; /** * <p> @@ -20,7 +21,7 @@ @Data @EqualsAndHashCode(callSuper = false) @TableName("t_goods_bargain_price") -@ApiModel(value="GoodsBargainPrice对象", description="") +@ApiModel(value="门店特殊价格对象", description="") public class GoodsBargainPrice implements Serializable { private static final long serialVersionUID = 1L; @@ -35,7 +36,7 @@ @ApiModelProperty(value = "门店id") @TableField("shop_id") - private Integer shopId; + private Integer shopId; @ApiModelProperty(value = "审核状态(0=待审核,1=审核通过,2=审核失败)") @TableField("audit_status") @@ -64,7 +65,29 @@ @ApiModelProperty(value = "添加用户id") @TableField("create_user_id") - private Integer createUserId; + private Long createUserId; + @TableField(exist = false) + private List<GoodsBargainPriceDetail> goodsBargainPriceDetailList; + + @ApiModelProperty(value = "商品名称") + @TableField(exist = false) + private String goodsName; + + @ApiModelProperty(value = "所属分类") + @TableField(exist = false) + private String categoryName; + + @ApiModelProperty(value = "门店名称") + @TableField(exist = false) + private String shopName; + + @ApiModelProperty(value = "店长名称") + @TableField(exist = false) + private String ownerName; + + @ApiModelProperty(value = "店长手机号") + @TableField(exist = false) + private String ownerPhone; } diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsBargainPriceDetail.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsBargainPriceDetail.java index 2e1f9bb..854dbad 100644 --- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsBargainPriceDetail.java +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsBargainPriceDetail.java @@ -23,7 +23,7 @@ @Data @EqualsAndHashCode(callSuper = false) @TableName("t_goods_bargain_price_detail") -@ApiModel(value="GoodsBargainPriceDetail对象", description="") +@ApiModel(value="门店特殊价格明细对象", description="") public class GoodsBargainPriceDetail implements Serializable { private static final long serialVersionUID = 1L; diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsEvaluate.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsEvaluate.java index a2e609d..5ae1646 100644 --- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsEvaluate.java +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsEvaluate.java @@ -75,9 +75,13 @@ private String avatar; - @ApiModelProperty(value = "名字") + @ApiModelProperty(value = "评价用户") @TableField(exist = false) private String userName; + + @ApiModelProperty(value = "联系电话") + @TableField(exist = false) + private String phone; @ApiModelProperty(value = "商品名字") @TableField(exist = false) @@ -92,6 +96,8 @@ public void setId(Long id) { this.id = id; - this.idStr = String.valueOf(id); + if (id != null){ + this.idStr = String.valueOf(id); + } } } diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsShop.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsShop.java index 3f30f9a..c4dfa02 100644 --- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsShop.java +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsShop.java @@ -21,7 +21,7 @@ @Data @EqualsAndHashCode(callSuper = false) @TableName("t_goods_shop") -@ApiModel(value="GoodsShop对象", description="") +@ApiModel(value="指定门店对象", description="") public class GoodsShop implements Serializable { private static final long serialVersionUID = 1L; diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsVip.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsVip.java index d6b5789..07d0eb0 100644 --- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsVip.java +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsVip.java @@ -23,7 +23,7 @@ @Data @EqualsAndHashCode(callSuper = false) @TableName("t_goods_vip") -@ApiModel(value="GoodsVip对象", description="") +@ApiModel(value="会员价格对象", description="") public class GoodsVip implements Serializable { private static final long serialVersionUID = 1L; diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/OrderActivityInfo.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/OrderActivityInfo.java index 043bfc2..2be85e4 100644 --- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/OrderActivityInfo.java +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/OrderActivityInfo.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.Api; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -66,5 +67,12 @@ @TableField("discount") private BigDecimal discount; + @ApiModelProperty(value = "是否上架:0否 1是") + @TableField("is_shelf") + private Integer isShelf; + + @ApiModelProperty(value = "活动状态:0未开始,1已开始") + @TableField(exist = false) + private Integer status; } diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/PointSetting.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/PointSetting.java index 15a7069..df0ccbe 100644 --- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/PointSetting.java +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/PointSetting.java @@ -7,7 +7,6 @@ import lombok.EqualsAndHashCode; import java.io.Serializable; -import java.math.BigDecimal; import java.time.LocalDateTime; /** @@ -41,23 +40,23 @@ @ApiModelProperty(value = "拉新人积分") @TableField("new_point") - private BigDecimal newPoint; + private Integer newPoint; @ApiModelProperty(value = "每日分享积分") @TableField("every_share_point") - private BigDecimal everySharePoint; + private Integer everySharePoint; @ApiModelProperty(value = "每日签到积分") @TableField("sign_point") - private BigDecimal signPoint; + private Integer signPoint; @ApiModelProperty(value = "使用一小时积分") @TableField("hour_point") - private BigDecimal hourPoint; + private Integer hourPoint; @ApiModelProperty(value = "注册积分") @TableField("regis_point") - private BigDecimal regisPoint; + private Integer regisPoint; @ApiModelProperty(value = "注册积分 1开0关") @TableField("regis_point_open") @@ -69,7 +68,7 @@ @ApiModelProperty(value = "消费积分") @TableField("buy_point") - private BigDecimal buyPoint; + private Integer buyPoint; @ApiModelProperty(value = "消费积分积分 1开0关") @TableField("buy_point_open") @@ -81,7 +80,7 @@ @ApiModelProperty(value = "返佣积分") @TableField("share_point") - private BigDecimal sharePoint; + private Integer sharePoint; @ApiModelProperty(value = "返佣积分 1开0关") @TableField("share_point_open") @@ -93,7 +92,7 @@ @ApiModelProperty(value = "门店返佣积分") @TableField("shop_share_point") - private BigDecimal shopSharePoint; + private Integer shopSharePoint; @ApiModelProperty(value = "门店返佣积分 1开0关") @TableField("shop_share_point_open") @@ -117,7 +116,7 @@ @ApiModelProperty(value = "技师业绩积分") @TableField("person_point") - private BigDecimal personPoint; + private Integer personPoint; @ApiModelProperty(value = "技师业绩积分 1开0关") @TableField("person_point_open") @@ -141,7 +140,7 @@ @ApiModelProperty(value = "注册积分") @TableField("get_regis_point") - private BigDecimal getRegisPoint; + private Integer getRegisPoint; @ApiModelProperty(value = "注册积分 1开0关") @TableField("get_regis_point_open") @@ -153,7 +152,7 @@ @ApiModelProperty(value = "做工积分") @TableField("work_point") - private BigDecimal workPoint; + private Integer workPoint; @ApiModelProperty(value = "做工积分 1开0关") @TableField("work_point_open") diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Shop.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Shop.java index 788932a..365ee43 100644 --- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Shop.java +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Shop.java @@ -96,27 +96,27 @@ @ApiModelProperty(value = "门店积分总数") @TableField("shop_all_point") - private BigDecimal shopAllPoint; + private Integer shopAllPoint; @ApiModelProperty(value = "门店业绩积分") @TableField("shop_point") - private BigDecimal shopPoint; + private Integer shopPoint; @ApiModelProperty(value = "门店返佣积分") @TableField("share_point") - private BigDecimal sharePoint; + private Integer sharePoint; @ApiModelProperty(value = "门店服务积分") @TableField("server_point") - private BigDecimal serverPoint; + private Integer serverPoint; @ApiModelProperty(value = "下级门店返佣积分") @TableField("lower_level_rebate_points") - private BigDecimal lowerLevelRebatePoints; + private Integer lowerLevelRebatePoints; @ApiModelProperty(value = "门店已用积分") @TableField("use_point") - private BigDecimal usePoint; + private Integer usePoint; @ApiModelProperty(value = "门店分佣总金额") @TableField("giveaway_all_money") @@ -163,5 +163,9 @@ @TableField("create_time") private LocalDateTime createTime; + @ApiModelProperty(value = "店长姓名") + @TableField(exist = false) + private String managerName; + } diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/TechnicianSubscribe.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/TechnicianSubscribe.java index 50e6938..a750a50 100644 --- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/TechnicianSubscribe.java +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/TechnicianSubscribe.java @@ -55,7 +55,7 @@ @TableField("user_address") private String userAddress; - @ApiModelProperty(value = "状态(0=待服务,1=已服务,2=已取消)") + @ApiModelProperty(value = "状态(0=待服务,1=已服务,2=已取消, 3=已到期)") @TableField("status") private Integer status; @@ -68,13 +68,10 @@ @TableField("create_time") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime createTime; - - - @ApiModelProperty(value = "订单id") - private Long orderId; - @TableField(exist = false) private String idStr; + @TableField(exist = false) + private Long orderId; public void setId(Long id) { diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/dto/LogisticsSetDto.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/dto/LogisticsSetDto.java new file mode 100644 index 0000000..89f07a1 --- /dev/null +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/dto/LogisticsSetDto.java @@ -0,0 +1,39 @@ +package com.ruoyi.other.api.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(description = "物流设置") +public class LogisticsSetDto { + /** + * 物流查询时间间隔 + */ + @ApiModelProperty(value = "物流查询时间间隔") + private Integer waitTime; + + /** + * 订单运费 + */ + @ApiModelProperty(value = "订单运费") + private Integer freight; + + /** + * 包邮订单金额 + */ + @ApiModelProperty(value = "包邮订单金额") + private Integer freeFreight; + + /** + * 包邮订单积分 + */ + @ApiModelProperty(value = "包邮订单积分") + private Integer freeIntegral; + + /** + * 包邮会员等级要求:1普通会员,2黄金会员,3钻石会员,4准代理,5代理,6总代,7合伙人 + */ + @ApiModelProperty(value = "包邮会员等级要求:1普通会员,2黄金会员,3钻石会员,4准代理,5代理,6总代,7合伙人") + private Integer freeVip; +} diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/ShopClientFallbackFactory.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/ShopClientFallbackFactory.java index 3a33ec3..926794a 100644 --- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/ShopClientFallbackFactory.java +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/ShopClientFallbackFactory.java @@ -7,6 +7,7 @@ import org.springframework.cloud.openfeign.FallbackFactory; import java.util.List; +import java.util.Set; @Slf4j public class ShopClientFallbackFactory implements FallbackFactory<ShopClient> { @@ -27,6 +28,11 @@ public R<List<Shop>> getShopByUserIds(List<Long> userIds) { return R.fail("根据用户id集合获取门店数据失败"); } + + @Override + public R<Set<Integer>> getShopIdByName(String shopName) { + return R.fail("根据门店名称获取门店id失败:" + cause.getMessage()); + } }; } } diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/TechnicianClientFallbackFactory.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/TechnicianClientFallbackFactory.java index 1cdb2b2..b8a9b5e 100644 --- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/TechnicianClientFallbackFactory.java +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/TechnicianClientFallbackFactory.java @@ -19,11 +19,6 @@ public R<Void> updateStatus(Integer status, Long subscribeId) { return R.fail("跟新技师预约状态失败:" + cause.getMessage()); } - - @Override - public R<TechnicianSubscribe> getSubscribeByOrderId(Long orderId) { - return R.fail("根据订单id获取预约信息失败:" + cause.getMessage()); - } }; } } diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/VipSettingClientFallbackFactory.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/VipSettingClientFallbackFactory.java new file mode 100644 index 0000000..7c6872b --- /dev/null +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/VipSettingClientFallbackFactory.java @@ -0,0 +1,23 @@ +package com.ruoyi.other.api.factory; + +import com.ruoyi.common.core.domain.R; +import com.ruoyi.other.api.domain.VipSetting; +import com.ruoyi.other.api.feignClient.VipSettingClient; +import org.springframework.cloud.openfeign.FallbackFactory; + +/** + * @author zhibing.pu + * @Date 2024/12/10 13:53 + */ +public class VipSettingClientFallbackFactory implements FallbackFactory<VipSettingClient> { + @Override + public VipSettingClient create(Throwable cause) { + return new VipSettingClient(){ + + @Override + public R<VipSetting> getVipSetting(Integer id) { + return R.fail("查询会员配置失败:" + cause.getMessage()); + } + }; + } +} diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/GoodsVipClient.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/GoodsVipClient.java index e3b9ff8..4e68276 100644 --- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/GoodsVipClient.java +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/GoodsVipClient.java @@ -17,7 +17,7 @@ /** - * 获取会员价格配置 + * 取获会员价格配置 * @param vip * @return */ diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopClient.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopClient.java index bbc7986..2f9f937 100644 --- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopClient.java +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopClient.java @@ -6,11 +6,13 @@ import com.ruoyi.other.api.domain.Shop; import com.ruoyi.other.api.factory.ShopClientFallbackFactory; import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import java.util.List; +import java.util.Set; /** * @author zhibing.pu @@ -39,4 +41,7 @@ @PostMapping("/getShopByUserIds") public R<List<Shop>> getShopByUserIds(@RequestBody List<Long> userIds); + + @GetMapping("/getShopIdByName") + R<Set<Integer>> getShopIdByName(String shopName); } diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/TechnicianClient.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/TechnicianClient.java index 5a9ad6a..4e4977e 100644 --- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/TechnicianClient.java +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/TechnicianClient.java @@ -18,7 +18,4 @@ @PutMapping("/technician-subscribe/updateStatus") R<Void> updateStatus(@RequestParam("status") Integer status, @RequestParam("subscribeId") Long subscribeId); - - @GetMapping("/technician-subscribe/getSubscribeByOrderId") - R<TechnicianSubscribe> getSubscribeByOrderId(@RequestParam("orderId") Long orderId); } diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/VipGoodClient.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/VipGoodClient.java index 3d36170..7514f29 100644 --- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/VipGoodClient.java +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/VipGoodClient.java @@ -15,8 +15,8 @@ public interface VipGoodClient { @GetMapping("/vip-good/getVipGoodsByVipId") - public R<List<VipGood>> getVipGoodsByVipId(@RequestParam("subscribeId") Integer vipId); + R<List<VipGood>> getVipGoodsByVipId(@RequestParam("vipId") Integer vipId); @GetMapping("/vip-setting/getVipSettingById") - public R<VipSetting> getVipSettingById(@RequestParam("id") Integer id); + R<VipSetting> getVipSettingById(@RequestParam("id") Integer id); } diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/VipSettingClient.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/VipSettingClient.java new file mode 100644 index 0000000..aafc0ff --- /dev/null +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/VipSettingClient.java @@ -0,0 +1,26 @@ +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.VipSetting; +import com.ruoyi.other.api.factory.VipSettingClientFallbackFactory; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; + +/** + * @author zhibing.pu + * @Date 2024/12/10 13:52 + */ +@FeignClient(contextId = "VipSettingClient", value = ServiceNameConstants.OTHER_SERVICE, fallbackFactory = VipSettingClientFallbackFactory.class) +public interface VipSettingClient { + + + /** + * 查询会员配置 + * @param id + * @return + */ + @PostMapping("/vip-setting/getVipSetting") + R<VipSetting> getVipSetting(@RequestParam("id") Integer id); +} diff --git a/ruoyi-api/ruoyi-api-other/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/ruoyi-api/ruoyi-api-other/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 0105e63..5f05c42 100644 --- a/ruoyi-api/ruoyi-api-other/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/ruoyi-api/ruoyi-api-other/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -14,4 +14,5 @@ com.ruoyi.other.api.factory.CouponClientFallbackFactory com.ruoyi.other.api.factory.TechnicianClientFallbackFactory com.ruoyi.other.api.factory.PointSettingClientFallbackFactory -com.ruoyi.other.api.factory.VipGoodClientFallbackFactory \ No newline at end of file +com.ruoyi.other.api.factory.VipGoodClientFallbackFactory +com.ruoyi.other.api.factory.VipSettingClientFallbackFactory \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-job/pom.xml b/ruoyi-modules/ruoyi-job/pom.xml index 107092d..7322497 100644 --- a/ruoyi-modules/ruoyi-job/pom.xml +++ b/ruoyi-modules/ruoyi-job/pom.xml @@ -19,10 +19,16 @@ <dependency> <groupId>com.ruoyi</groupId> - <artifactId>ruoyi-modules-order</artifactId> - <version>3.6.2</version> + <artifactId>ruoyi-api-account</artifactId> </dependency> - + <dependency> + <groupId>com.ruoyi</groupId> + <artifactId>ruoyi-api-other</artifactId> + </dependency> + <dependency> + <groupId>com.ruoyi</groupId> + <artifactId>ruoyi-api-order</artifactId> + </dependency> <!-- SpringCloud Alibaba Nacos --> <dependency> <groupId>com.alibaba.cloud</groupId> diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/task/AfterSalesTask.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/task/AfterSalesTask.java index 87ee464..d85db04 100644 --- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/task/AfterSalesTask.java +++ b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/task/AfterSalesTask.java @@ -1,6 +1,7 @@ package com.ruoyi.job.task; -import com.ruoyi.order.service.CommissionService; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.order.feignClient.RemoteOrderGoodsClient; import lombok.extern.log4j.Log4j2; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; @@ -8,13 +9,13 @@ import javax.annotation.Resource; import java.util.Set; -@Component("ryTask") +@Component("afterSalesTask") @Log4j2 public class AfterSalesTask { @Resource private RedisTemplate<String, String> redisTemplate; @Resource - private CommissionService commissionService; + private RemoteOrderGoodsClient remoteOrderGoodsClient; /** * 计算佣金(设置每分钟执行一次) @@ -25,7 +26,10 @@ // 从延迟队列中获取需要处理的订单 Set<String> orderIds = redisTemplate.opsForZSet().rangeByScore("delay_queue:commission", 0, now); if (orderIds != null && !orderIds.isEmpty()) { - commissionService.calculationCommission(orderIds); + R<Void> r = remoteOrderGoodsClient.calculationCommission(orderIds); + if (R.isError(r)) { + log.error("计算佣金失败,订单号:{},错误信息:{}", orderIds, r.getMsg()); + } // 处理完后移除已处理的订单 redisTemplate.opsForZSet().removeRangeByScore("delay_queue:commission", 0, now); } diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/task/TechnicianSubscribe.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/task/TechnicianSubscribe.java new file mode 100644 index 0000000..9f3daa2 --- /dev/null +++ b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/task/TechnicianSubscribe.java @@ -0,0 +1,29 @@ +package com.ruoyi.job.task; + +import com.ruoyi.other.api.feignClient.TechnicianClient; +import lombok.extern.log4j.Log4j2; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.util.Set; + +@Component("technicianSubscribe") +@Log4j2 +public class TechnicianSubscribe { + @Resource + private TechnicianClient technicianClient; + @Resource + private RedisTemplate<String, String> redisTemplate; + + public void updateStatus() { + long now = System.currentTimeMillis() / 1000; // 获取当前时间戳(秒) + Set<String> subscribeIds = redisTemplate.opsForZSet().rangeByScore("delay_queue:subscribe", 0, now); + if (!CollectionUtils.isEmpty(subscribeIds)) { + subscribeIds.forEach(subscribeId -> { + technicianClient.updateStatus(3, Long.valueOf(subscribeId)); + }); + } + } +} diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AgentApplicationController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AgentApplicationController.java index 4c8c7d4..cb7d138 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AgentApplicationController.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AgentApplicationController.java @@ -1,8 +1,18 @@ package com.ruoyi.account.controller; +import com.ruoyi.account.api.model.AgentApplication; +import com.ruoyi.account.service.AgentApplicationService; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.web.controller.BaseController; +import com.ruoyi.other.api.domain.VipSetting; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; /** * <p> @@ -14,7 +24,16 @@ */ @RestController @RequestMapping("/agent-application") -public class AgentApplicationController { +public class AgentApplicationController extends BaseController { + @Resource + private AgentApplicationService agentApplicationService; + + @PostMapping("/apply") + @ApiOperation(value = "会员申请", tags = {"会员中心-小程序"}) + public R<Void> apply(@RequestBody AgentApplication agentApplication) { + agentApplicationService.apply(agentApplication); + return R.ok(); + } } diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java index 8039b75..c6565e7 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java @@ -1,6 +1,7 @@ package com.ruoyi.account.controller; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.ruoyi.account.api.model.AppUser; import com.ruoyi.account.api.model.UserCancellationLog; import com.ruoyi.account.api.model.UserCoupon; @@ -64,10 +65,6 @@ public R<LoginVo> mobileLogin(@RequestBody MobileLogin mobileLogin){ return appUserService.mobileLogin(mobileLogin); } - - - - @ResponseBody @@ -170,12 +167,7 @@ Long userId = tokenService.getLoginUserApplet().getUserid(); AppUser user = appUserService.getById(userId); - List<UserSignRecord> list = userSignRecordService.lambdaQuery().eq(UserSignRecord::getSignDay, LocalDate.now()).list(); - if (!list.isEmpty()){ - user.setIsSign(1); - }else { - user.setIsSign(0); - } + return R.ok(user); } @@ -296,6 +288,13 @@ user.setCount5(count5); user.setCount6(count6); user.setCount7(count7); + + List<UserSignRecord> list = userSignRecordService.lambdaQuery().eq(UserSignRecord::getSignDay, LocalDate.now()).list(); + if (!list.isEmpty()){ + user.setIsSign(1); + }else { + user.setIsSign(0); + } return R.ok(user); @@ -331,6 +330,36 @@ AppUser superiorLeader = appUserService.getSuperiorLeader(id); return R.ok(superiorLeader); } + + + + @ResponseBody + @PostMapping("/onlineRecord") + @ApiOperation(value = "10分钟定时任务调用,记录用户在线时长", tags = {"小程序-个人中心首页"}) + public R onlineRecord(){ + appUserService.onlineRecord(); + return R.ok(); + } + + /** + * 获取用户列表 + */ + @GetMapping("/getAppuserPage") + @ApiOperation(value = "用户列表", tags = {"管理后台"}) + public R<IPage<AppUser>> getAppuserPage(@ApiParam("页码") @RequestParam Integer pageNum, + @ApiParam("每一页数据大小") Integer pageSize, + AppUser appUser) + { + IPage<AppUser> appuserPage = appUserService.getAppuserPage(pageNum, pageSize, appUser); + return R.ok(appuserPage); + } + + + @GetMapping("/getAppUserByPhone") + public R<AppUser> getAppUserByPhone(String phone){ + AppUser appUser = appUserService.lambdaQuery().eq(AppUser::getPhone, phone).one(); + return R.ok(appUser); + } diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserShopController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserShopController.java index 320d19b..e492e09 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserShopController.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserShopController.java @@ -20,6 +20,13 @@ @Resource private AppUserShopService appUserShopService; + @PostMapping("/addAppUserShop") + public R<Void> add(@RequestBody AppUserShop appUserShop) { + appUserShopService.save(appUserShop); + return R.ok(); + } + + @GetMapping("/shop/{userId}") public R<List<AppUserShop>> getAppUserShop(@PathVariable("userId") Long userId) { return R.ok(appUserShopService.list(new LambdaQueryWrapper<AppUserShop>() diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserChangeLogController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserChangeLogController.java index 068f6a3..3cd25ba 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserChangeLogController.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserChangeLogController.java @@ -1,8 +1,15 @@ package com.ruoyi.account.controller; +import com.ruoyi.account.api.model.UserChangeLog; +import com.ruoyi.account.service.UserChangeLogService; +import com.ruoyi.common.core.domain.R; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; /** * <p> @@ -15,6 +22,24 @@ @RestController @RequestMapping("/user-change-log") public class UserChangeLogController { + + @Resource + private UserChangeLogService userChangeLogService; + + + /** + * 保存会员等级变更记录 + * @param userChangeLog + * @return + */ + @PostMapping("/saveUserChangeLog") + public R saveUserChangeLog(@RequestBody UserChangeLog userChangeLog){ + userChangeLogService.save(userChangeLog); + return R.ok(); + } + + + } diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserSignRecordController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserSignRecordController.java index 69454cb..e0f26c8 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserSignRecordController.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserSignRecordController.java @@ -60,7 +60,7 @@ if (pointSetting.getData() != null) { userSignRecord.setPoint(pointSetting.getData().getSignPoint()); }else { - userSignRecord.setPoint(BigDecimal.ZERO); + userSignRecord.setPoint(0); } R<BigDecimal> bigDecimalR = systemConfigClient.redPackegeSet(); userSignRecord.setRedAmount(bigDecimalR.getData()); @@ -69,6 +69,7 @@ SignBackRDto signBackRDto = new SignBackRDto(); signBackRDto.setPoint(userSignRecord.getPoint()); signBackRDto.setRedAmount(userSignRecord.getRedAmount()); + userSignRecordService.save(userSignRecord); return R.ok(signBackRDto); } diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/VipCenterController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/VipCenterController.java index aeb40c0..ec1bce2 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/VipCenterController.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/VipCenterController.java @@ -6,20 +6,19 @@ import com.ruoyi.account.vo.vip.Level; import com.ruoyi.account.vo.vip.VipLevel; import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.utils.bean.BeanUtils; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.other.api.domain.*; import com.ruoyi.other.api.feignClient.BaseSettingClient; import com.ruoyi.other.api.feignClient.GoodsVipClient; import com.ruoyi.other.api.feignClient.RemoteVipSettingClient; +import com.ruoyi.other.api.feignClient.VipGoodClient; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.extern.log4j.Log4j2; -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 org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.ArrayList; @@ -45,6 +44,8 @@ private TokenService tokenService; @Resource private VipCenterService vipCenterService; + @Resource + private VipGoodClient vipGoodClient; @GetMapping("getVipLevelList") @@ -52,7 +53,7 @@ public R<VipLevel> vipLevelList() { try { R<List<VipSetting>> r = remoteVipSettingClient.list(); - if (checkSuccess(r)) { + if (R.isError(r)) { return R.fail("会员等级获取失败"); } List<VipSetting> vipSettingList = r.getData(); @@ -61,7 +62,7 @@ } R<BaseSetting> baseSettingR = baseSettingClient.getBaseSetting(3); - if (checkSuccess(baseSettingR)) { + if (R.isError(baseSettingR)) { log.error("【会员设置说明】获取失败:{}", baseSettingR.getMsg()); return R.fail("会员等级获取失败"); } @@ -79,7 +80,6 @@ // 批量获取 goodsVip 和 vipGoods List<Integer> vipIds = vipSettingList.stream().map(VipSetting::getId).collect(Collectors.toList()); - Map<Integer, R<GoodsVip>> goodsVipMap = getGoodsVips(vipIds); Map<Integer, R<List<VipGood>>> vipGoodsMap = getVipGoods(vipIds); vipSettingList.forEach(vipSetting -> { @@ -87,25 +87,23 @@ BeanUtils.copyBeanProp(level, vipSetting); level.setVipDesc(baseSetting.getContent()); - R<GoodsVip> goodsVipR = goodsVipMap.get(vipSetting.getId()); - if (R.isSuccess(goodsVipR)) { - R<List<VipGood>> vipGoodR = vipGoodsMap.get(vipSetting.getId()); - if (R.isSuccess(vipGoodR)) { - List<VipGood> vipGoodList = vipGoodR.getData(); - if (vipGoodList != null && !vipGoodList.isEmpty()) { - List<String> goodsNames = new ArrayList<>(); - vipGoodList.forEach(vipGood -> { - String goodJson = vipGood.getGoodJson(); - if (isValidJson(goodJson)) { - Goods goods = JSONObject.parseObject(goodJson, Goods.class); - goodsNames.add(goods.getName()); - } else { - log.warn("JSON无效: " + goodJson); - } - }); - level.setGoodsNames(goodsNames); + R<List<VipGood>> vipGoodR = vipGoodsMap.get(vipSetting.getId()); + if (R.isError(vipGoodR)) { + throw new ServiceException("会员商品获取失败"); + } + List<VipGood> vipGoodList = vipGoodR.getData(); + if (vipGoodList != null && !vipGoodList.isEmpty()) { + List<String> goodsNames = new ArrayList<>(); + vipGoodList.forEach(vipGood -> { + String goodJson = vipGood.getGoodJson(); + if (isValidJson(goodJson)) { + Goods goods = JSONObject.parseObject(goodJson, Goods.class); + goodsNames.add(goods.getName()); + } else { + log.warn("JSON无效: " + goodJson); } - } + }); + level.setGoodsNames(goodsNames); } levelList.add(level); }); @@ -127,12 +125,8 @@ } - private boolean checkSuccess(R<?> r) { - if (!R.isSuccess(r)) { - log.error("请求失败: " + r.getMsg()); - } - return R.isSuccess(r); - } + + private Map<Integer, R<GoodsVip>> getGoodsVips(List<Integer> vipIds) { Map<Integer, R<GoodsVip>> result = new HashMap<>(); @@ -146,8 +140,8 @@ private Map<Integer, R<List<VipGood>>> getVipGoods(List<Integer> vipIds) { Map<Integer, R<List<VipGood>>> result = new HashMap<>(); for (Integer vipId : vipIds) { -// R<List<VipGood>> vipGoodR = vipGoodClient.getVipGoodsByVipId(vipId); -// result.put(vipId, vipGoodR); + R<List<VipGood>> vipGoodR = vipGoodClient.getVipGoodsByVipId(vipId); + result.put(vipId, vipGoodR); } return result; } diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/dto/SignBackRDto.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/dto/SignBackRDto.java index 0f3fb03..4e2adac 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/dto/SignBackRDto.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/dto/SignBackRDto.java @@ -7,6 +7,6 @@ @Data public class SignBackRDto { - private BigDecimal point; + private Integer point; private BigDecimal redAmount; } diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/mapper/AppUserMapper.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/mapper/AppUserMapper.java index 030983c..f313602 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/mapper/AppUserMapper.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/mapper/AppUserMapper.java @@ -1,6 +1,7 @@ package com.ruoyi.account.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.ruoyi.account.api.model.AppUser; import com.ruoyi.account.vo.NearbyReferrer; import com.ruoyi.account.vo.NearbyReferrerVo; @@ -25,6 +26,8 @@ * @return */ List<NearbyReferrerVo> getNearbyReferrer(@Param("cityCode") String cityCode, @Param("nearbyReferrer") NearbyReferrer nearbyReferrer); + + IPage<AppUser> getAppuserPage(@Param("page") IPage<AppUser> page, @Param("appUser") AppUser appUser); diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/mapper/UserPointMapper.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/mapper/UserPointMapper.java index 65af734..addb4f1 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/mapper/UserPointMapper.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/mapper/UserPointMapper.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.account.api.model.UserPoint; +import java.util.List; + /** * <p> * Mapper 接口 @@ -13,4 +15,5 @@ */ public interface UserPointMapper extends BaseMapper<UserPoint> { + List<UserPoint> findLatestUserPointByTypeForUser(Long userId); } diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/AgentApplicationService.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/AgentApplicationService.java index 5b5427a..61b9a36 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/AgentApplicationService.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/AgentApplicationService.java @@ -13,4 +13,6 @@ */ public interface AgentApplicationService extends IService<AgentApplication> { + void apply(AgentApplication agentApplication); + } diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/AppUserService.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/AppUserService.java index a51d268..d17c594 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/AppUserService.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/AppUserService.java @@ -1,5 +1,6 @@ package com.ruoyi.account.service; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.account.api.model.AppUser; import com.ruoyi.account.vo.*; @@ -67,4 +68,18 @@ * 获取指定用户的直帮上级用户(消费用户绑定的上级,最近一个用户会员类型为【创业者】的用户) */ AppUser getSuperiorLeader(Long id); + + + /** + * 解绑推广人 + */ + void unbindThePromoter(); + + + /** + * 在线记录操作,用于赠送积分 + */ + void onlineRecord(); + + IPage<AppUser> getAppuserPage(Integer pageNum, Integer pageSize, AppUser appUser); } diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AgentApplicationServiceImpl.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AgentApplicationServiceImpl.java index bc7f87e..aefe7ea 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AgentApplicationServiceImpl.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AgentApplicationServiceImpl.java @@ -1,10 +1,24 @@ package com.ruoyi.account.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.api.model.AgentApplication; +import com.ruoyi.account.api.model.AppUser; import com.ruoyi.account.mapper.AgentApplicationMapper; import com.ruoyi.account.service.AgentApplicationService; +import com.ruoyi.account.service.AppUserService; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.security.service.TokenService; +import com.ruoyi.other.api.domain.Shop; +import com.ruoyi.other.api.feignClient.ShopClient; +import com.ruoyi.system.api.model.LoginUser; import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.util.Collection; +import java.util.Collections; +import java.util.List; /** * <p> @@ -16,5 +30,42 @@ */ @Service public class AgentApplicationServiceImpl extends ServiceImpl<AgentApplicationMapper, AgentApplication> implements AgentApplicationService { + @Resource + private AgentApplicationMapper agentApplicationMapper; + @Resource + private TokenService tokenService; + @Resource + private AppUserService appUserService; + @Resource + private ShopClient shopClient; + @Override + public void apply(AgentApplication agentApplication) { + LoginUser loginUserApplet = tokenService.getLoginUserApplet(); + AppUser appUser = appUserService.getById(loginUserApplet.getUserid()); + + agentApplication.setAppUserId(loginUserApplet.getUserid()); + agentApplication.setStatus(1); + agentApplication.setApplicationTime(LocalDateTime.now()); + agentApplication.setShopPoint(appUser.getShopPoint()); + agentApplication.setSharePoint(appUser.getSharePoint()); + + // 直推用户已达钻石会员数量 + List<AppUser> directVipUserList = appUserService.list(new LambdaQueryWrapper<AppUser>() + .eq(AppUser::getInviteUserId, appUser.getId()) + .eq(AppUser::getVipId, 3)); + agentApplication.setDirectVipNum(directVipUserList.size()); + + // 直推用户已成为代理数量 + List<AppUser> directAgentUserList = appUserService.list(new LambdaQueryWrapper<AppUser>() + .eq(AppUser::getInviteUserId, appUser.getId()) + .eq(AppUser::getUserType, 4)); + agentApplication.setDirectAgentNum(directAgentUserList.size()); + + // 已绑定门店数量 + R<List<Shop>> R = shopClient.getShopByUserIds(Collections.singletonList(loginUserApplet.getUserid())); + List<Shop> shopList = R.getData(); + agentApplication.setBindShopNum(shopList.size()); + agentApplicationMapper.insert(agentApplication); + } } diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java index 28554a7..64a32a1 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java @@ -3,12 +3,19 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; 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.account.api.model.AppUserShop; +import com.ruoyi.account.api.model.UserChangeLog; +import com.ruoyi.account.api.model.UserPoint; import com.ruoyi.account.mapper.AppUserMapper; import com.ruoyi.account.api.model.AppUser; import com.ruoyi.account.service.AppUserService; import com.ruoyi.account.service.AppUserShopService; +import com.ruoyi.account.service.UserChangeLogService; +import com.ruoyi.account.service.UserPointService; +import com.ruoyi.account.util.weChat.EnvVersion; import com.ruoyi.account.util.weChat.WXCore; import com.ruoyi.account.util.weChat.WeChatUtil; import com.ruoyi.account.vo.*; @@ -16,17 +23,29 @@ import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.redis.service.RedisService; import com.ruoyi.common.security.service.TokenService; +import com.ruoyi.other.api.domain.PointSetting; import com.ruoyi.other.api.domain.Shop; +import com.ruoyi.other.api.domain.VipSetting; +import com.ruoyi.other.api.feignClient.PointSettingClient; import com.ruoyi.other.api.feignClient.ShopClient; +import com.ruoyi.other.api.feignClient.VipSettingClient; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysUserClient; import com.ruoyi.system.api.model.LoginUser; +import org.apache.logging.log4j.core.util.UuidUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.*; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +import static com.sun.xml.internal.ws.api.model.wsdl.WSDLBoundOperation.ANONYMOUS.optional; /** * <p> @@ -57,12 +76,27 @@ @Resource private SysUserClient sysUserClient; + @Resource + private VipSettingClient vipSettingClient; + + @Resource + private PointSettingClient pointSettingClient; + @Resource + private UserChangeLogService userChangeLogService; + + @Value("${file.upload.location}") + private String filePath; - - - - + @Value("${file.upload.accessPath}") + private String accessPath; + + @Resource + private UserPointService userPointService; + @Autowired + private AppUserMapper appUserMapper; + + /** * 小程序一键登录 * @param appletLogin @@ -107,6 +141,9 @@ Map<String, Object> tokenApplet = tokenService.createTokenApplet(loginUser); loginVo.setToken(tokenApplet.get("access_token").toString()); loginVo.setFailureTime(Long.valueOf(tokenApplet.get("expires_in").toString())); + + appUser.setLastLoginTime(LocalDateTime.now()); + this.updateById(appUser); return R.ok(loginVo); } @@ -147,6 +184,9 @@ Map<String, Object> tokenApplet = tokenService.createTokenApplet(loginUser); loginVo.setToken(tokenApplet.get("access_token").toString()); loginVo.setFailureTime(Long.valueOf(tokenApplet.get("expires_in").toString())); + + appUser.setLastLoginTime(LocalDateTime.now()); + this.updateById(appUser); return R.ok(loginVo); } @@ -258,7 +298,16 @@ appUser.setTotalRedPacketAmount(BigDecimal.ZERO); appUser.setTotalDistributionAmount(BigDecimal.ZERO); appUser.setBalance(BigDecimal.ZERO); - appUser.setLavePoint(0); + R<PointSetting> pointSettingR = pointSettingClient.getPointSetting(1); + if (R.isError(pointSettingR)){ + throw new RuntimeException("获取积分设置失败"); + } + PointSetting pointSetting = pointSettingR.getData(); + if (pointSetting == null){ + throw new RuntimeException("积分设置不存在"); + } + appUser.setLavePoint(pointSetting.getGetRegisPoint()); + appUser.setTotalPoint(0); //根据平台的配置未达标,则标注为可修改推广人 appUser.setChangePromoter(0); appUser.setLongitude(registerAccount.getLongitude()); @@ -271,6 +320,15 @@ // appUser.setDistrict(); // appUser.setDistrictCode(); this.save(appUser); + //获取微信推广二维码 + String fileName = UUID.randomUUID() + ".jpg"; + weChatUtil.getwxacodeunlimit("pages/login/login", "id=" + appUser.getId(), EnvVersion.DEVELOP, filePath + fileName); + appUser.setQrCode(accessPath + fileName); + this.updateById(appUser); + //直推用户检查是否满足升级条件 + if(null != appUser.getInviteUserId()){ + vipUpgrade(appUser.getInviteUserId()); + } //查询当前注册的手机号是都和门店管理员手机号相同 Shop shop = shopClient.getShopByPhone(registerAccount.getPhone()).getData(); @@ -300,7 +358,7 @@ } LoginVo loginVo = new LoginVo(); loginVo.setSkipPage(1); - loginVo.setFirstTime(null == appUser1 ? true : false); + loginVo.setFirstTime(null == appUser1); loginVo.setPhone(appUser.getPhone()); //构建token LoginUser loginUser = new LoginUser(); @@ -311,6 +369,67 @@ loginVo.setFailureTime(Long.valueOf(tokenApplet.get("expires_in").toString())); return R.ok(loginVo); } + + + /** + * 会员等级变化 + */ + public void vipUpgrade(Long id){ + AppUser appUser = this.getById(id); + Integer vipId = appUser.getVipId(); + //钻石会员 + VipSetting vipSetting3 = vipSettingClient.getVipSetting(3).getData(); + Integer vipLevelUpNumRole = vipSetting3.getVipLevelUpNumRole(); + Integer vipDirectNum = vipSetting3.getVipDirectNum(); + Integer vipTeamNum = vipSetting3.getVipTeamNum(); + if(1 == vipLevelUpNumRole && appUser.getVipId() < 3){ + //查询直推用户达到X人或者团队人数达到X人后,可升级 + //直推用户数 + long count = this.count(new LambdaQueryWrapper<AppUser>().eq(AppUser::getDelFlag, 0).eq(AppUser::getStatus, 1).eq(AppUser::getInviteUserId, id)); + //团队用户数 + List<AppUser> subordinate = getSubordinate(id); + if(vipDirectNum <= count || vipTeamNum <= subordinate.size()){ + appUser.setVipId(3); + this.updateById(appUser); + //添加等级变化记录 + UserChangeLog userChangeLog = new UserChangeLog(); + userChangeLog.setDelFlag(0); + userChangeLog.setCreateTime(LocalDateTime.now()); + userChangeLog.setAppUserId(appUser.getId()); + userChangeLog.setBeforeVipId(vipId); + userChangeLog.setAfterVipId(appUser.getVipId()); + userChangeLog.setChangeType(1); + userChangeLogService.save(userChangeLog); + return; + } + } + //黄金会员 + VipSetting vipSetting2 = vipSettingClient.getVipSetting(2).getData(); + vipLevelUpNumRole = vipSetting2.getVipLevelUpNumRole(); + vipDirectNum = vipSetting2.getVipDirectNum(); + vipTeamNum = vipSetting2.getVipTeamNum(); + if(1 == vipLevelUpNumRole && appUser.getVipId() < 2){ + //查询直推用户达到X人或者团队人数达到X人后,可升级 + //直推用户数 + long count = this.count(new LambdaQueryWrapper<AppUser>().eq(AppUser::getDelFlag, 0).eq(AppUser::getStatus, 1).eq(AppUser::getInviteUserId, id)); + //团队用户数 + List<AppUser> subordinate = getSubordinate(id); + if(vipDirectNum <= count || vipTeamNum <= subordinate.size()){ + appUser.setVipId(2); + this.updateById(appUser); + //添加等级变化记录 + UserChangeLog userChangeLog = new UserChangeLog(); + userChangeLog.setDelFlag(0); + userChangeLog.setCreateTime(LocalDateTime.now()); + userChangeLog.setAppUserId(appUser.getId()); + userChangeLog.setBeforeVipId(vipId); + userChangeLog.setAfterVipId(appUser.getVipId()); + userChangeLog.setChangeType(1); + userChangeLogService.save(userChangeLog); + } + } + } + /** @@ -331,6 +450,36 @@ return getTopAppUser(list, appUser.getInviteUserId()); } + /** + * 获取所有下级数据 + * @param id + * @return + */ + public List<AppUser> getSubordinate(Long id){ + List<AppUser> list = this.list(new LambdaQueryWrapper<AppUser>().eq(AppUser::getDelFlag, 0)); + List<AppUser> result = new ArrayList<>(); + List<Long> ids = new ArrayList<>(); + ids.add(id); + return getSubordinate(list, ids, result); + } + + public List<AppUser> getSubordinate(List<AppUser> list, List<Long> ids, List<AppUser> result){ + List<Long> idss = new ArrayList<>(); + for (Long id : ids) { + List<AppUser> collect = list.stream().filter(s -> s.getInviteUserId().equals(id)).collect(Collectors.toList()); + if(collect.size() == 0){ + return result; + }else{ + result.addAll(collect); + List<Long> collect1 = collect.stream().map(AppUser::getId).collect(Collectors.toList()); + idss.addAll(collect1); + } + } + return getSubordinate(list, idss, result); + } + + + /** * 获取附近推广人 @@ -342,7 +491,7 @@ //使用地图获取省市区数据 String longitude = nearbyReferrer.getLongitude(); String latitude = nearbyReferrer.getLatitude(); - String cityCode = ""; // TODO 待完善 + String cityCode = "510100"; // TODO 待完善 List<NearbyReferrerVo> list = this.baseMapper.getNearbyReferrer(cityCode, nearbyReferrer); return list; } @@ -395,4 +544,85 @@ } return null; } + + + /** + * 定时解绑推广人 + */ + @Override + public void unbindThePromoter() { + //注册X天后没有升级成黄金会员则自动解绑推广人 + VipSetting vipSetting = vipSettingClient.getVipSetting(1).getData(); + Integer vipCancelDay = vipSetting.getVipCancelDay(); + Integer vipChangeDay = vipSetting.getVipChangeDay(); + List<AppUser> list = this.list(new LambdaQueryWrapper<AppUser>().eq(AppUser::getVipId, 1).eq(AppUser::getDelFlag, 0).isNotNull(AppUser::getInviteUserId) + .eq(AppUser::getStatus, 1).last(" and (UNIX_TIMESTAMP(create_time) + " + vipCancelDay + ") <= UNIX_TIMESTAMP()")); + for (AppUser appUser : list) { + appUser.setInviteUserId(null); + appUser.setShopId(null); + this.updateById(appUser); + } + + //可更换推广人 + list = this.list(new LambdaQueryWrapper<AppUser>().eq(AppUser::getVipId, 1).eq(AppUser::getDelFlag, 0).eq(AppUser::getChangePromoter, 0) + .isNull(AppUser::getLastShopTime).eq(AppUser::getStatus, 1).last(" and (UNIX_TIMESTAMP(create_time) + " + vipCancelDay + ") <= UNIX_TIMESTAMP()")); + for (AppUser appUser : list) { + appUser.setChangePromoter(1); + this.updateById(appUser); + } + } + + + /** + * 在线记录操作,用于赠送积分 + */ + @Override + public void onlineRecord() { + Long userid = tokenService.getLoginUserApplet().getUserid(); + Object cacheObject = redisService.getCacheObject("ONLINE_" + userid); + if(null == cacheObject){ + redisService.setCacheObject("ONLINE_" + userid, 0, 15L, TimeUnit.MINUTES); + }else{ + Long duration = (Long) cacheObject; + duration += 10; + //满足一个小时,开始发放积分,计时归0 + if(60 >= duration){ + redisService.setCacheObject("ONLINE_" + userid, 0, 15L, TimeUnit.MINUTES); + AppUser appUser = this.getById(userid); + PointSetting pointSetting = pointSettingClient.getPointSetting(appUser.getVipId()).getData(); + if(null != pointSetting){ + int hourPoint = pointSetting.getHourPoint().intValue(); + Integer lavePoint = appUser.getLavePoint(); + appUser.setTotalPoint(appUser.getTotalPoint() + hourPoint); + appUser.setLavePoint(appUser.getLavePoint() + hourPoint); + this.updateById(appUser); + //添加积分变动记录 + UserPoint userPoint = new UserPoint(); + userPoint.setType(9); + userPoint.setHistoricalPoint(lavePoint); + userPoint.setVariablePoint(hourPoint); + userPoint.setBalance(appUser.getLavePoint()); + userPoint.setCreateTime(LocalDateTime.now()); + userPoint.setAppUserId(appUser.getId()); + userPointService.save(userPoint); + } + }else{ + redisService.setCacheObject("ONLINE_" + userid, duration, 15L, TimeUnit.MINUTES); + } + } + } + + @Override + public IPage<AppUser> getAppuserPage(Integer pageNum, Integer pageSize, AppUser appUser) { + if (StringUtils.isNotEmpty(appUser.getShopName())){ + R<Set<Integer>> shopR = shopClient.getShopIdByName(appUser.getShopName()); + if (R.isSuccess(shopR)){ + Set<Integer> shopIds = shopR.getData(); + if (!CollectionUtils.isEmpty(shopIds)){ + appUser.setShopIds(shopIds); + } + } + } + return appUserMapper.getAppuserPage(new Page<>(pageNum, pageSize), appUser); + } } diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserPointServiceImpl.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserPointServiceImpl.java index 3775d83..bc08986 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserPointServiceImpl.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserPointServiceImpl.java @@ -55,23 +55,20 @@ @Override public UserPointVO getUserPoint(Long userId) { AppUser appUser = appUserService.getById(userId); - List<UserPoint> userPointList = list(new LambdaQueryWrapper<UserPoint>() - .eq(UserPoint::getAppUserId, userId)); - + List<UserPoint> userPointList = this.baseMapper.findLatestUserPointByTypeForUser(userId); Map<Integer, Integer> userBalanceMap = userPointList.stream() .collect(Collectors.toMap(UserPoint::getType, UserPoint::getBalance)); VipSetting vipSetting = vipSettingService.getVipSettingByUserId(userId); - 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.setTotalPoint(appUser.getTotalPoint()); + userPointVO.setConsumePoint(appUser.getLavePoint()); + userPointVO.setShopPoint(appUser.getShopPoint()); + userPointVO.setSharePoint(appUser.getSharePoint()); 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(vipSetting.getVipGiftRole()); + userPointVO.setGiftPoint(vipSetting.getVipGiftRole() == 1 && vipSetting.getId() == 1 ? 1 : 0); return userPointVO; } @@ -108,7 +105,7 @@ if (vipSetting == null) { throw new ServiceException("VIP 设置未找到"); } - if (vipSetting.getVipGiftRole() == 0) { + if (vipSetting.getId() == 0 && vipSetting.getVipGiftRole() == 0) { throw new ServiceException("转赠积分权限未开启"); } @@ -149,6 +146,7 @@ } appUserForPhoe.setLavePoint(appUserForPhoe.getLavePoint() + point.intValue()); + appUserForPhoe.setTotalPoint(appUserForPhoe.getTotalPoint() + point.intValue()); appUserService.updateById(appUserForPhoe); log.info("积分转赠完成,用户ID: {}, 新积分: {}", appUserForPhoe.getId(), appUserForPhoe.getLavePoint()); diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/TaskUtil.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/TaskUtil.java index 7f028bc..b57e53f 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/TaskUtil.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/TaskUtil.java @@ -1,9 +1,11 @@ package com.ruoyi.account.util; +import com.ruoyi.account.service.AppUserService; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; +import javax.annotation.Resource; /** @@ -11,6 +13,11 @@ */ @Component public class TaskUtil { + + @Resource + private AppUserService appUserService; + + /** @@ -18,13 +25,8 @@ */ @Scheduled(fixedRate = 1000 * 60) public void sendVipCoupon(){ - - } - - @Scheduled(fixedRate = 1000 * 60) - public void changeVipId(){ - - + //解绑推广人 + appUserService.unbindThePromoter(); } diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/weChat/EnvVersion.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/weChat/EnvVersion.java new file mode 100644 index 0000000..e47f81b --- /dev/null +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/weChat/EnvVersion.java @@ -0,0 +1,35 @@ +package com.ruoyi.account.util.weChat; + +/** + * @author zhibing.pu + * @Date 2024/12/10 15:56 + */ +public enum EnvVersion { + /** + * 开发版 + */ + DEVELOP("develop"), + /** + * 体验版 + */ + TRIAL("trial"), + /** + * 线上版本 + */ + RELEASE("release"); + + + EnvVersion(String version) { + this.version = version; + } + + private String version; + + public String getVersion() { + return version; + } + + public void setVersion(String version) { + this.version = version; + } +} diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/weChat/WeChatUtil.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/weChat/WeChatUtil.java index 34adfb8..caa7cce 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/weChat/WeChatUtil.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/weChat/WeChatUtil.java @@ -1,5 +1,7 @@ package com.ruoyi.account.util.weChat; +import cn.hutool.core.io.FileUtil; +import cn.hutool.http.Header; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import cn.hutool.http.HttpUtil; @@ -7,10 +9,20 @@ import com.alibaba.fastjson.JSONObject; import com.ruoyi.common.redis.service.RedisService; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.codec.binary.Base64; +import org.apache.http.HttpHeaders; import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpMethod; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; +import org.springframework.util.StringUtils; import javax.annotation.Resource; +import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.InputStream; import java.util.HashMap; import java.util.Map; import java.util.concurrent.TimeUnit; @@ -186,35 +198,49 @@ -// /** -// * 获取小程序二维码 -// * @param page 跳转页 例如 pages/index/index -// * @param scene 参数 a=1&b=2 -// */ -// public InputStream getwxacodeunlimit(String page, String scene){ -// try { -// String token = getWxAppletsAccessToken(); -// if(StringUtils.isEmpty(token)){ -// System.err.println("获取接口调用凭证失败"); -// } -// String url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + token; -// Map<String, Object> param = new HashMap<>(); -// param.put("scene", scene); -// param.put("page", page); -// HttpHeaders httpHeaders = new HttpHeaders(); -// MediaType type=MediaType.parseMediaType("application/json;charset=UTF-8"); -// httpHeaders.setContentType(type); -// HttpEntity<Map<String, Object>> requestEntity = new HttpEntity<>(param, httpHeaders); -// ResponseEntity<String> exchange = restTemplate.exchange(url, HttpMethod.POST, requestEntity, String.class, new Object[0]); -// String body1 = exchange.getBody(); -//// System.err.println(body1); -// ResponseEntity<byte[]> entity = restTemplate.exchange(url, HttpMethod.POST, requestEntity, byte[].class, new Object[0]); -// byte[] body = entity.getBody(); -//// System.err.println(Base64.encodeBase64String(body)); -// return new ByteArrayInputStream(body); -// }catch (Exception e){ -// e.printStackTrace(); -// } -// return null; -// } + /** + * 获取小程序二维码 + * @param page 跳转页 例如 pages/index/index + * @param scene 参数 a=1&b=2 + */ + public InputStream getwxacodeunlimit(String page, String scene, EnvVersion env_version){ + try { + String token = getWxAppletsAccessToken(); + if(StringUtils.isEmpty(token)){ + System.err.println("获取接口调用凭证失败"); + } + String url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + token; + Map<String, Object> param = new HashMap<>(); + param.put("scene", scene); + param.put("page", page); + param.put("env_version", env_version.getVersion()); + + HttpRequest post = HttpUtil.createPost(url); + post.header(Header.CONTENT_TYPE, "application/json;charset=UTF-8"); + post.body(JSON.toJSONString(param)); + HttpResponse execute = post.execute(); + byte[] bytes = execute.bodyBytes(); + String body1 = execute.body(); + System.err.println(body1); + System.err.println(Base64.encodeBase64String(bytes)); + return new ByteArrayInputStream(bytes); + }catch (Exception e){ + e.printStackTrace(); + } + return null; + } + + + /** + * 获取微信小程序二维码 + * @param page + * @param scene + * @param filePath + * @return + */ + public String getwxacodeunlimit(String page, String scene, EnvVersion env_version, String filePath){ + InputStream getwxacodeunlimit = getwxacodeunlimit(page, scene, env_version); + File file = FileUtil.writeFromStream(getwxacodeunlimit, new File(filePath)); + return file.getPath(); + } } diff --git a/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/AppUserMapper.xml b/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/AppUserMapper.xml index 2e1a6e4..6919c53 100644 --- a/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/AppUserMapper.xml +++ b/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/AppUserMapper.xml @@ -51,4 +51,28 @@ </if> ) as aa order by aa.distance </select> + + <select id="getAppuserPage" resultType="com.ruoyi.account.api.model.AppUser"> + SELECT ta.id, ta.`name`, ta.vip_id, ta.shop_id + FROM t_app_user ta + <where> + ta.del_flag = 0 + <if test="null != appUser.name and '' != appUser.name"> + and ta.`name` like CONCAT('%',#{appUser.name},'%') + </if> + <if test="null != appUser.phone and '' != appUser.phone"> + and ta.phone like CONCAT('%',#{appUser.phone},'%') + </if> + <if test="null != appUser.vipId"> + and ta.vip_id = #{appUser.vipId} + </if> + <if test="null != appUser.shopIds and appUser.shopIds.size() > 0"> + and ta.shop_id in + <foreach collection="appUser.shopIds" item="shopId" open="(" separator="," close=")"> + #{shopId} + </foreach> + </if> + </where> + + </select> </mapper> diff --git a/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/UserPointMapper.xml b/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/UserPointMapper.xml index 35c2f57..9f38579 100644 --- a/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/UserPointMapper.xml +++ b/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/UserPointMapper.xml @@ -17,5 +17,15 @@ <sql id="Base_Column_List"> id, type, historical_point, variable_point, create_time, app_user_id, object_id </sql> + <select id="findLatestUserPointByTypeForUser" resultType="com.ruoyi.account.api.model.UserPoint"> + SELECT + t1.* + FROM + t_user_point t1 + INNER JOIN ( SELECT type, MAX( create_time ) AS max_create_time FROM t_user_point WHERE app_user_id = 1864118151377129473 GROUP BY type ) t2 ON t1.type = t2.type + AND t1.create_time = t2.max_create_time + WHERE + t1.app_user_id = #{userId} + </select> </mapper> diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/CommissionController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/CommissionController.java new file mode 100644 index 0000000..58a8425 --- /dev/null +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/CommissionController.java @@ -0,0 +1,21 @@ +package com.ruoyi.order.controller; + +import com.ruoyi.common.core.domain.R; +import com.ruoyi.order.service.CommissionService; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.Set; + +@RestController +@RequestMapping("commission") +public class CommissionController { + @Resource + private CommissionService commissionService; + + @PostMapping("/calculationCommission") + public R<Void> calculationCommission(@RequestBody Set<String> orderIds){ + commissionService.calculationCommission(orderIds); + return R.ok(); + } +} diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java index c3582d7..ae6f9d3 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java @@ -23,7 +23,6 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import java.math.BigInteger; import java.time.LocalDateTime; import java.util.List; @@ -76,7 +75,7 @@ /** * 订单详情 */ - @ApiOperation(value = "订单详情", tags = {"小程序-订单详情"}) + @ApiOperation(value = "订单详情", tags = {"小程序-个人中心-我的订单-订单详情"}) @ApiImplicitParams({ @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), }) @@ -88,7 +87,7 @@ /** * 扫码校验 */ - @ApiOperation(value = "扫码校验", tags = {"小程序-个人中心-门店管理-扫码核销校验"}) + @ApiOperation(value = "扫码校验", tags = {"小程序-个人中心-门店管理"}) @ApiImplicitParams({ @ApiImplicitParam(value = "分享id", name = "shareId", required = true, dataType = "int", paramType="query"), }) @@ -103,7 +102,7 @@ /** * 订单核销 */ - @ApiOperation(value = "订单核销", tags = {"小程序-个人中心-门店管理-扫码核销"}) + @ApiOperation(value = "订单核销", tags = {"小程序-个人中心-门店管理"}) @ApiImplicitParams({ @ApiImplicitParam(value = "订单号", name = "code", required = true, dataType = "String"), }) @@ -116,7 +115,7 @@ /** * 取消订单 */ - @ApiOperation(value = "取消订单", tags = {"小程序-个人中心-我的订单-取消订单"}) + @ApiOperation(value = "取消订单", tags = {"小程序-个人中心-我的订单"}) @ApiImplicitParams({ @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), }) @@ -131,7 +130,7 @@ /** * 确认收货 */ - @ApiOperation(value = "确认收货", tags = {"小程序-个人中心-我的订单-确认收货"}) + @ApiOperation(value = "确认收货", tags = {"小程序-个人中心-我的订单"}) @ApiImplicitParams({ @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), }) @@ -162,7 +161,7 @@ /** * 更换收货地址 */ - @ApiOperation(value = "更换收货地址", tags = {"小程序-个人中心-我的订单-更换收货地址"}) + @ApiOperation(value = "更换收货地址", tags = {"小程序-个人中心-我的订单"}) @ApiImplicitParams({ @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), }) @@ -183,7 +182,7 @@ /** * 更新订单状态 */ - @ApiOperation(value = "更新订单状态", tags = {"后台-订单管理-更新订单状态"}) + @ApiOperation(value = "更新订单状态", tags = {"后台-订单管理"}) @ApiImplicitParams({ @ApiImplicitParam(value = "订单对象", name = "order", required = true, dataType = "Order"), }) diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/RefundPassController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/RefundPassController.java index 3938eb7..893ae60 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/RefundPassController.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/RefundPassController.java @@ -85,7 +85,7 @@ if(Arrays.asList(2, 3).contains(refundPass.getStatus())){ return R.fail("售后取消失败"); } - refundPass.setDelFlag(1); +// refundPass.setDelFlag(1); refundPassService.removeById(id); order.setOrderStatus(4); orderService.updateById(order); diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ShoppingCartController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ShoppingCartController.java index 32c95e5..b9be064 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ShoppingCartController.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ShoppingCartController.java @@ -2,6 +2,8 @@ import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +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.core.web.controller.BaseController; import com.ruoyi.common.core.web.page.TableDataInfo; @@ -41,6 +43,8 @@ private GoodsShopClient goodsShopClient; @Resource private ShopClient shopClient; + @Resource + private AppUserClient appUserClient; @@ -136,6 +140,14 @@ } return R.ok(verifiableShopVoList); } + + + @GetMapping("/getGoodsPrice") + public R<Price> getGoodsPrice(Long appUserId, Integer goodsId, Integer shopId){ + AppUser appUser = appUserClient.getAppUserById(appUserId); + Price price = shoppingCartService.getPrice(appUser, goodsId, shopId); + return R.ok(price); + } } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/RefundPassService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/RefundPassService.java index d771ad7..f14246e 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/RefundPassService.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/RefundPassService.java @@ -4,7 +4,6 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.order.model.RefundPass; import com.ruoyi.order.vo.ApplyRefundPass; -import org.springframework.web.bind.annotation.RequestBody; /** * <p> diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/ShoppingCartService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/ShoppingCartService.java index f827055..7e47d31 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/ShoppingCartService.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/ShoppingCartService.java @@ -1,6 +1,7 @@ package com.ruoyi.order.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.account.api.model.AppUser; import com.ruoyi.common.core.domain.R; import com.ruoyi.order.model.ShoppingCart; import com.ruoyi.order.vo.*; @@ -47,4 +48,6 @@ * @return */ R shoppingCartPayment(ShoppingCartPayment shoppingCartPayment); + + Price getPrice(AppUser appUser, Integer goodsId, Integer shopId); } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/CommissionServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/CommissionServiceImpl.java index a2d00ce..b31cce9 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/CommissionServiceImpl.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/CommissionServiceImpl.java @@ -13,6 +13,7 @@ import com.ruoyi.order.model.OrderGood; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.math.BigDecimal; @@ -50,6 +51,7 @@ } @Override + @Transactional(rollbackFor = Exception.class) public void calculationCommission(Set<String> orderIds) { List<OrderGood> orderGoods = orderGoodService.list(new LambdaQueryWrapper<OrderGood>() .in(OrderGood::getOrderId, orderIds)); @@ -63,6 +65,8 @@ if (order.getIsCommission() == 1) { continue; } + order.setIsCommission(1); + orderService.updateById(order); R<Shop> r = shopClient.getShopById(order.getShopId()); if (!R.isSuccess(r)) { throw new RuntimeException("获取门店信息失败"); diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java index e6123e4..433629f 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java @@ -12,7 +12,6 @@ import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.order.enums.OrderStatus; -import com.ruoyi.order.enums.OrderType; import com.ruoyi.order.mapper.OrderGoodMapper; import com.ruoyi.order.mapper.OrderMapper; import com.ruoyi.order.model.Order; @@ -209,18 +208,6 @@ order.setOrderStatus(OrderStatus.COMPLETED.getCode()); orderMapper.updateById(order); Integer orderType = order.getOrderType(); - if (orderType.equals(OrderType.SERVICE.getCode())){ - R<TechnicianSubscribe> subscribeR = technicianClient.getSubscribeByOrderId(order.getId()); - if (R.isError(subscribeR)){ - throw new ServiceException("获取预约信息失败"); - } - TechnicianSubscribe subscribe = subscribeR.getData(); - subscribe.setStatus(2); - R<Void> r = technicianClient.updateStatus(subscribe.getStatus(), subscribe.getId()); - if (R.isError(r)){ - throw new ServiceException("更新预约状态失败"); - } - } // 售后设置 R<BaseSetting> baseSettingR = baseSettingClient.getBaseSetting(5); diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java index d0dad92..9e1a950 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java @@ -6,10 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.api.feignClient.*; -import com.ruoyi.account.api.model.AppUser; -import com.ruoyi.account.api.model.BalanceChangeRecord; -import com.ruoyi.account.api.model.UserAddress; -import com.ruoyi.account.api.model.UserPoint; +import com.ruoyi.account.api.model.*; import com.ruoyi.account.api.vo.CouponInfoVo; import com.ruoyi.account.api.vo.PaymentUserCoupon; import com.ruoyi.account.api.vo.PaymentUserCouponVo; @@ -30,7 +27,6 @@ import com.ruoyi.other.api.vo.GetGoodsBargainPrice; import com.ruoyi.other.api.vo.GetGoodsShopByGoodsIds; import com.ruoyi.other.api.vo.GetSeckillActivityInfo; -import lombok.Data; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -38,75 +34,80 @@ 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; @Service public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, ShoppingCart> implements ShoppingCartService { - + @Resource private TokenService tokenService; - + @Resource private GoodsClient goodsClient; - + @Resource private GoodsShopClient goodsShopClient; - + @Resource private AppUserClient appUserClient; - + @Resource private GoodsAreaClient goodsAreaClient; - + @Resource private GoodsVipClient goodsVipClient; - + @Resource private SeckillActivityInfoClient seckillActivityInfoClient; - + @Resource private GoodsBargainPriceClient goodsBargainPriceClient; - + @Resource private OrderService orderService; - + @Resource private OrderGoodService orderGoodService; - + @Resource private ShopClient shopClient; - + @Resource private OrderActivityInfoClient orderActivityInfoClient; - + @Resource private BaseSettingClient baseSettingClient; - + @Resource private UserAddressClient userAddressClient; - + @Resource private UserCouponClient userCouponClient; - + @Resource private SystemConfigClient systemConfigClient; - + @Resource private UserPointClient userPointClient; - + @Resource private BalanceChangeRecordClient balanceChangeRecordClient; - + @Resource private CommissionService commissionService; - - - - - - + + @Resource + private VipSettingClient vipSettingClient; + + @Resource + private UserChangeLogClient userChangeLogClient; + + + + + + /** * 获取购物车列表 * @param type @@ -129,8 +130,8 @@ List<MyShoppingCartVo> page = buildDetail(appUser, shopId, list, null); return page; } - - + + /** * 获取支付价格 * @param appUser @@ -152,8 +153,11 @@ GetGoodsBargainPrice goodsBargainPrice = new GetGoodsBargainPrice(); goodsBargainPrice.setGoodsId(goodsId); goodsBargainPrice.setVip(appUser.getVipId()); - goodsBargainPrice.setShopId(shopId); - GoodsBargainPriceDetail bargainPriceDetail = goodsBargainPriceClient.getGoodsBargainPrice(goodsBargainPrice).getData(); + GoodsBargainPriceDetail bargainPriceDetail = null; + if (shopId != null){ + goodsBargainPrice.setShopId(shopId); + bargainPriceDetail = goodsBargainPriceClient.getGoodsBargainPrice(goodsBargainPrice).getData(); + } if(null == bargainPriceDetail){ //没有门店特价,判断地区价格配置 GoodsArea area = new GoodsArea(); @@ -171,8 +175,8 @@ }else{ price.setCash(goodsVip.getSellingPrice()); price.setPoint(goodsVip.getIntegral()); - price.setCashPayment(goodsVip.getCashPayment() == 1 ? true : false); - price.setPointPayment(goodsVip.getPointPayment() == 1 ? true : false); + price.setCashPayment(goodsVip.getCashPayment() == 1); + price.setPointPayment(goodsVip.getPointPayment() == 1); price.setEarnSpendingPoints(goodsVip.getEarnSpendingPoints()); price.setSuperiorSubcommission(goodsVip.getSuperiorSubcommission()); price.setSuperiorRebatePoints(goodsVip.getSuperiorRebatePoints()); @@ -188,8 +192,8 @@ }else{ price.setCash(goodsArea.getSellingPrice()); price.setPoint(goodsArea.getIntegral()); - price.setCashPayment(goodsArea.getCashPayment() == 1 ? true : false); - price.setPointPayment(goodsArea.getPointPayment() == 1 ? true : false); + price.setCashPayment(goodsArea.getCashPayment() == 1); + price.setPointPayment(goodsArea.getPointPayment() == 1); price.setEarnSpendingPoints(goodsArea.getEarnSpendingPoints()); price.setSuperiorSubcommission(goodsArea.getSuperiorSubcommission()); price.setSuperiorRebatePoints(goodsArea.getSuperiorRebatePoints()); @@ -205,8 +209,8 @@ }else{ price.setCash(bargainPriceDetail.getSellingPrice()); price.setPoint(bargainPriceDetail.getIntegral()); - price.setCashPayment(bargainPriceDetail.getSellingPrice() != null ? true : false); - price.setPointPayment(bargainPriceDetail.getIntegral() != null ? true : false); + price.setCashPayment(bargainPriceDetail.getSellingPrice() != null); + price.setPointPayment(bargainPriceDetail.getIntegral() != null); //门店特价,消费积分使用会员等级的消费积分 GoodsArea area = new GoodsArea(); area.setDistrictsCode(appUser.getDistrictCode()); @@ -238,8 +242,8 @@ if(goodsSeckill.getCashPayment() == 0 && goodsSeckill.getPointPayment() == 1){ price.setPoint(goodsSeckill.getIntegral()); } - price.setCashPayment(goodsSeckill.getCashPayment() == 1 ? true : false); - price.setPointPayment(goodsSeckill.getPointPayment() == 1 ? true : false); + price.setCashPayment(goodsSeckill.getCashPayment() == 1); + price.setPointPayment(goodsSeckill.getPointPayment() == 1); price.setEndTime(goodsSeckill.getEndTime()); price.setEarnSpendingPoints(goodsSeckill.getEarnSpendingPoints()); price.setSuperiorSubcommission(goodsSeckill.getSuperiorSubcommission()); @@ -255,76 +259,9 @@ } return price; } - - - @Data - class Price { - /** - * 现金 - */ - private BigDecimal cash; - /** - * 积分 - */ - private Integer point; - /** - * 获取结束时间 - */ - private Long endTime; - /** - * 现金支付 - */ - private Boolean cashPayment; - /** - * 积分支付 - */ - private Boolean pointPayment; - /** - * 可获得消费积分 - */ - private Integer earnSpendingPoints; - /** - * 上级获得分佣金额 - */ - private BigDecimal superiorSubcommission; - /** - * 上级获得返佣积分 - */ - private Integer superiorRebatePoints; - /** - * 获取返佣积分上级类型(1=直推上级,2=直帮上级) - */ - private Integer superiorType; - /** - * 核销门店可获得服务费 - */ - private BigDecimal servuceShopCharges; - /** - * 核销门店可获得服务积分 - */ - private Integer servuceShopPoints; - /** - * 技师可获得服务积分 - */ - private Integer technicianPoints; - /** - * 绑定门店可获得分佣金额 - */ - private BigDecimal boundShopCharges; - /** - * 绑定门店可获得返佣积分 - */ - private Integer boundShopPoints; - /** - * 绑定门店上级门店可获得分佣金额 - */ - private BigDecimal boundShopSuperiorsCharges; - /** - * 绑定门店上级门店可获得返佣积分 - */ - private Integer boundShopSuperiorsPoints; - } - + + + @Override public Long addGoods(ShoppingCart shoppingCart) { @@ -333,8 +270,8 @@ this.save(shoppingCart); return shoppingCart.getId(); } - - + + /** * 修改购物车数量 * @param setGoodsNumber @@ -359,8 +296,8 @@ } return R.ok(); } - - + + /** * 确认购物车订单 * @param confirmOrder @@ -497,8 +434,8 @@ } return confirmOrderVo; } - - + + /** * 构建购物车商品列表 * @param appUser @@ -533,8 +470,8 @@ //使用商品的基础价格 price.setCash(1 == goods.getCashPayment() ? goods.getSellingPrice() : null); price.setPoint(1 == goods.getPointPayment() ? goods.getIntegral() : null); - price.setCashPayment(goods.getCashPayment() == 1 ? true : false); - price.setPointPayment(goods.getPointPayment() == 1 ? true : false); + price.setCashPayment(goods.getCashPayment() == 1); + price.setPointPayment(goods.getPointPayment() == 1); } vo.setCash(price.getCash()); vo.setPoint(price.getPoint()); @@ -547,7 +484,7 @@ goodsShop.setGoodsId(shoppingCart.getGoodsId()); goodsShop.setShopId(shopId); GoodsShop goodsShop1 = goodsShopClient.getGoodsShop(goodsShop).getData(); - vo.setVerifiable(goods.getAppointStore() == 1 && null == goodsShop1 ? false : true); + vo.setVerifiable(goods.getAppointStore() != 1 || null != goodsShop1); //判断当前数量是否已经超出限购数量(需要计算已经购买的数量) if(null == goods.getPurchaseLimit() || -1 == goods.getPurchaseLimit()){ vo.setPurchaseLimit(false); @@ -560,7 +497,7 @@ .eq(OrderGood::getGoodsId, shoppingCart.getGoodsId()).eq(OrderGood::getDelFlag, 0)); sum = orderGoodList.stream().mapToInt(OrderGood::getNum).sum(); } - vo.setPurchaseLimit((num + sum) > goods.getPurchaseLimit() ? true : false); + vo.setPurchaseLimit((num + sum) > goods.getPurchaseLimit()); } vo.setDistributionMode(goods.getDistributionMode()); vo.setEarnSpendingPoints(price.getEarnSpendingPoints()); @@ -578,8 +515,8 @@ } return page; } - - + + /** * 购物车支付操作 * @param shoppingCartPayment @@ -616,7 +553,7 @@ } ids.add(id); } - + List<ShoppingCart> list = this.listByIds(ids); //构建商品明细列表 List<MyShoppingCartVo> goodsList = buildDetail(appUser, shopId, list, objects); @@ -664,9 +601,14 @@ //积分支付的订单积分 Integer orderPoint = 0; if(3 != shoppingCartPayment.getPaymentType()){ - orderMoney = goodsList.stream().map(MyShoppingCartVo::getCash).reduce(BigDecimal::add).get(); + for (MyShoppingCartVo myShoppingCartVo : goodsList) { + orderMoney = orderMoney.add(myShoppingCartVo.getCash().multiply(new BigDecimal(myShoppingCartVo.getNumber()))); + } }else{ orderPoint = goodsList.stream().mapToInt(MyShoppingCartVo::getPoint).sum(); + for (MyShoppingCartVo myShoppingCartVo : goodsList) { + orderPoint += (myShoppingCartVo.getPoint() * myShoppingCartVo.getNumber()); + } if(appUser.getLavePoint().intValue() < orderPoint){ return R.fail("账户剩余积分不足"); } @@ -681,7 +623,7 @@ BigDecimal discountAmount = BigDecimal.ZERO; //活动优惠金额 BigDecimal activityAmount = BigDecimal.ZERO; - + //减去优惠券优惠金额 CouponInfoVo couponInfoVo = null; if(null != shoppingCartPayment.getUserCouponId() && 3 != shoppingCartPayment.getPaymentType()){ @@ -724,7 +666,7 @@ paymentMoney = paymentMoney.add(cash); } } - + //满减 if(1 == couponInfoVo.getCouponType() && couponInfoVo.getConditionAmount().compareTo(goodsMoney) <= 0){ goodsMoney = goodsMoney.subtract(couponInfoVo.getDiscountAmount()); @@ -749,16 +691,16 @@ paymentMoney = paymentMoney.add(goodsMoney); } } - + //查询当前是否有订单活动 OrderActivityInfo orderActivityInfo = orderActivityInfoClient.getNowOrderActivityInfo(appUser.getVipId()).getData(); BaseSetting baseSetting = baseSettingClient.getBaseSetting(4).getData(); //系统活动设置(优惠券和活动能否同时使用) - boolean useSimultaneously = baseSetting.getContent().equals("1") ? true : false; + boolean useSimultaneously = baseSetting.getContent().equals("1"); //满XX才打折,只有现金才能优惠 //如果使用优惠券,则需要判断是否可以和同时使用,且活动满足使用条件。 //没有使用优惠券,只需要判断是都满足使用条件 - if(((useSimultaneously && null != shoppingCartPayment.getUserCouponId()) || null == shoppingCartPayment.getUserCouponId()) && + if((useSimultaneously || null == shoppingCartPayment.getUserCouponId()) && null != orderActivityInfo && shoppingCartPayment.getPaymentType() != 3 && orderActivityInfo.getConditionAmount().compareTo(paymentMoney) <= 0){ BigDecimal paymentMoney1 = orderActivityInfo.getDiscount().divide(new BigDecimal(10)).multiply(paymentMoney); BigDecimal bigDecimal = paymentMoney.subtract(paymentMoney1).setScale(2, RoundingMode.HALF_EVEN); @@ -766,13 +708,16 @@ paymentMoney = paymentMoney1; activityAmount = activityAmount.add(bigDecimal); } - + //可获得的消费积分 - int earnPoint = goodsList.stream().mapToInt(MyShoppingCartVo::getEarnSpendingPoints).sum(); + int earnPoint = 0; + for (MyShoppingCartVo myShoppingCartVo : goodsList) { + earnPoint += (myShoppingCartVo.getEarnSpendingPoints() * myShoppingCartVo.getNumber()); + } if(null != shoppingCartPayment.getUserAddressId()){ userAddressClient.getUserAddressById(shoppingCartPayment.getUserAddressId()).getData(); } - + //获取快递策略,计算快递费 BigDecimal expressFee = BigDecimal.ZERO; if(null != shoppingCartPayment.getUserAddressId()){ @@ -844,7 +789,7 @@ order.setDelFlag(0); order.setCreateTime(LocalDateTime.now()); order.setExpressPayMethod(shoppingCartPayment.getFreightPaymentType()); - + if(2 == shoppingCartPayment.getPaymentType()){ BigDecimal balance = appUser.getBalance(); if(balance.compareTo(paymentMoney) < 0){ @@ -858,7 +803,7 @@ return R.fail("账户余额不足"); } } - + orderService.save(order); //构建订单明细数据 for (MyShoppingCartVo myShoppingCartVo : goodsList) { @@ -898,15 +843,15 @@ orderGood.setBoundShopSuperiorsPoints(myShoppingCartVo.getBoundShopSuperiorsPoints()); orderGoodService.save(orderGood); } - + //开始构建支付数据 //现金支付 paymentMoney = paymentMoney.add(expressFee).setScale(2, RoundingMode.HALF_EVEN); if(1 == shoppingCartPayment.getPaymentType()){ //调起微信支付 TODO 待完善 - - - + + + } //账户余额 if(2 == shoppingCartPayment.getPaymentType()){ @@ -940,7 +885,8 @@ if(earnPoint > 0){ appUser.setShopPoint(appUser.getShopPoint() + earnPoint); appUser.setLavePoint(appUser.getLavePoint() + earnPoint); - + appUser.setTotalPoint(appUser.getTotalPoint() + earnPoint); + UserPoint userPoint = new UserPoint(); userPoint.setType(1); userPoint.setHistoricalPoint(appUser.getLavePoint() - earnPoint); @@ -951,6 +897,8 @@ userPoint.setObjectId(order.getId()); userPointClient.saveUserPoint(userPoint); } + appUser.setShopAmount(appUser.getShopAmount().add(paymentMoney).setScale(2, RoundingMode.HALF_EVEN)); + appUser.setLastShopTime(LocalDateTime.now()); appUserClient.editAppUserById(appUser); //构建余额明细变动记录 BalanceChangeRecord balanceChangeRecord = new BalanceChangeRecord(); @@ -965,9 +913,14 @@ balanceChangeRecordClient.saveBalanceChangeRecord(balanceChangeRecord); //修改订支付状态 order.setPayStatus(2); + if(goods.getType() == 2 && null == shoppingCartPayment.getUserAddressId()){ + order.setOrderStatus(2); + } orderService.updateById(order); //删除购物车数据 this.removeBatchByIds(ids); + //检查消费积分满足后升级会员 + vipUpgrade(appUser); } //积分支付 if(3 == shoppingCartPayment.getPaymentType()){ @@ -975,7 +928,13 @@ appUser.setLavePoint(lavePoint - orderPoint); appUser.setShopPoint(appUser.getShopPoint() + earnPoint); appUser.setLavePoint(appUser.getLavePoint() + earnPoint); + appUser.setTotalPoint(appUser.getTotalPoint() + earnPoint); + appUser.setShopAmount(appUser.getShopAmount().add(paymentMoney).setScale(2, RoundingMode.HALF_EVEN)); + appUser.setLastShopTime(LocalDateTime.now()); appUserClient.editAppUserById(appUser); + //检查消费积分满足后升级会员 + vipUpgrade(appUser); + //构建积分流水记录 UserPoint userPoint = new UserPoint(); userPoint.setType(4); @@ -1029,7 +988,7 @@ appUser.setBalance(balance); } } - + appUserClient.editAppUserById(appUser); //构建余额明细变动记录 BalanceChangeRecord balanceChangeRecord = new BalanceChangeRecord(); @@ -1044,6 +1003,9 @@ balanceChangeRecordClient.saveBalanceChangeRecord(balanceChangeRecord); //修改订支付状态 order.setPayStatus(2); + if(goods.getType() == 2 && null == shoppingCartPayment.getUserAddressId()){ + order.setOrderStatus(2); + } orderService.updateById(order); //删除购物车数据 this.removeBatchByIds(ids); @@ -1051,6 +1013,9 @@ }else{ //修改订支付状态 order.setPayStatus(2); + if(goods.getType() == 2 && null == shoppingCartPayment.getUserAddressId()){ + order.setOrderStatus(2); + } orderService.updateById(order); //删除购物车数据 this.removeBatchByIds(ids); @@ -1058,8 +1023,8 @@ } return R.ok(order.getId().toString()); } - - + + public String getNumber(Integer size){ String str = ""; for (Integer i = 0; i < size; i++) { @@ -1067,4 +1032,49 @@ } return str; } + + + /** + * 会员等级变化 + * @param appUser + */ + public void vipUpgrade(AppUser appUser){ + Integer shopPoint = appUser.getShopPoint(); + Integer vipId = appUser.getVipId(); + //钻石会员 + VipSetting vipSetting3 = vipSettingClient.getVipSetting(3).getData(); + Integer vipLevelUpShopRole = vipSetting3.getVipLevelUpShopRole(); + Integer vipLevelUpShop = vipSetting3.getVipLevelUpShop(); + if(null != vipLevelUpShopRole && 1 == vipLevelUpShopRole && appUser.getVipId() < 3 && shopPoint >= vipLevelUpShop){ + appUser.setVipId(3); + appUserClient.editAppUserById(appUser); + //添加等级变化记录 + UserChangeLog userChangeLog = new UserChangeLog(); + userChangeLog.setDelFlag(0); + userChangeLog.setCreateTime(LocalDateTime.now()); + userChangeLog.setAppUserId(appUser.getId()); + userChangeLog.setBeforeVipId(vipId); + userChangeLog.setAfterVipId(appUser.getVipId()); + userChangeLog.setChangeType(1); + userChangeLogClient.saveUserChangeLog(userChangeLog); + return; + } + //黄金会员 + VipSetting vipSetting2 = vipSettingClient.getVipSetting(2).getData(); + vipLevelUpShopRole = vipSetting2.getVipLevelUpShopRole(); + vipLevelUpShop = vipSetting2.getVipLevelUpShop(); + if(null != vipLevelUpShopRole && 1 == vipLevelUpShopRole && appUser.getVipId() < 2 && shopPoint >= vipLevelUpShop){ + appUser.setVipId(2); + appUserClient.editAppUserById(appUser); + //添加等级变化记录 + UserChangeLog userChangeLog = new UserChangeLog(); + userChangeLog.setDelFlag(0); + userChangeLog.setCreateTime(LocalDateTime.now()); + userChangeLog.setAppUserId(appUser.getId()); + userChangeLog.setBeforeVipId(vipId); + userChangeLog.setAfterVipId(appUser.getVipId()); + userChangeLog.setChangeType(1); + userChangeLogClient.saveUserChangeLog(userChangeLog); + } + } } diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/AgreementController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/AgreementController.java index 3864d1d..d2a2855 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/AgreementController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/AgreementController.java @@ -43,7 +43,7 @@ @ResponseBody @GetMapping("/getAgreementByType/{type}") - @ApiOperation(value = "获取协议详情", tags = {"管理后台-协议管理"}) + @ApiOperation(value = "协议管理-详情", tags = {"管理后台"}) @ApiImplicitParams({ @ApiImplicitParam(value = "类型(1=用户协议,2=隐私协议,3=技师上门免责声明,4=注销协议,5门店提现免责声明)", name = "type", required = true, dataType = "int"), }) @@ -55,7 +55,7 @@ @ResponseBody @PostMapping("/saveAgreement") - @ApiOperation(value = "保存协议", tags = {"管理后台-协议管理"}) + @ApiOperation(value = "协议管理-保存协议", tags = {"管理后台"}) public R saveAgreement(@RequestBody Agreement agreement){ if(null != agreement.getId()){ agreementService.updateById(agreement); diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/BannerController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/BannerController.java index 21573c3..3493fae 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/BannerController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/BannerController.java @@ -23,7 +23,7 @@ */ @RestController @RequestMapping("/banner") -@Api(tags = "轮播图") +@Api("轮播图") public class BannerController { @Resource private BannerService bannerService; @@ -37,35 +37,35 @@ return R.ok(list); } @PostMapping("/add") - @ApiOperation(value = "添加", tags = {"后台-广告管理-banner管理"}) + @ApiOperation(value = "广告管理-banner管理-添加", tags = {"管理后台"}) public R add(@RequestBody Banner banner){ bannerService.save(banner); return R.ok(); } - @PostMapping("/delete") - @ApiOperation(value = "删除", tags = {"后台-广告管理-banner管理"}) + @GetMapping("/delete") + @ApiOperation(value = "广告管理-banner管理-删除", tags = {"管理后台"}) public R delete(@RequestParam Integer id){ bannerService.removeById(id); return R.ok(); } @PostMapping("/edit") - @ApiOperation(value = "修改", tags = {"后台-广告管理-banner管理"}) + @ApiOperation(value = "广告管理-banner管理-修改", tags = {"管理后台"}) public R edit(@RequestBody Banner banner){ bannerService.updateById(banner); return R.ok(); } - @PostMapping("/detail") - @ApiOperation(value = "详情", tags = {"后台-广告管理-banner管理"}) + @GetMapping("/detail") + @ApiOperation(value = "广告管理-banner管理-详情", tags = {"管理后台"}) public R detail(@RequestParam Integer id){ Banner byId = bannerService.getById(id); return R.ok(byId); } - @PostMapping("/page/list") - @ApiOperation(value = "列表", tags = {"后台-广告管理--banner"}) + @GetMapping("/page/list") + @ApiOperation(value = "广告管理-banner-列表", tags = {"管理后台"}) public R<Page<Banner>> pagelist(String name, Integer jumpType, Integer position,Integer pageNum,Integer pageSize){ Page<Banner> page = bannerService.lambdaQuery().like(StringUtils.isNotEmpty(name), Banner::getName, name) - .eq(Banner::getJumpType, jumpType) - .eq(Banner::getPosition, position) + .eq(jumpType!=null,Banner::getJumpType, jumpType) + .eq(position!=null,Banner::getPosition, position) .page(Page.of(pageNum, pageSize)); return R.ok(page); } diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/BaseSettingController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/BaseSettingController.java index 7f360cb..15f82cf 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/BaseSettingController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/BaseSettingController.java @@ -1,9 +1,11 @@ package com.ruoyi.other.controller; +import com.alibaba.fastjson2.JSONObject; import com.ruoyi.common.core.domain.R; import com.ruoyi.other.api.domain.BaseSetting; import com.ruoyi.other.service.BaseSettingService; +import io.swagger.annotations.Api; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -18,6 +20,7 @@ */ @RestController @RequestMapping("/base-setting") +@Api("基础配置") public class BaseSettingController { @Resource @@ -35,6 +38,19 @@ BaseSetting baseSetting = baseSettingService.getById(id); return R.ok(baseSetting); } + + /** + * 保存设置 + */ + @PostMapping("/save") + public R saveActivityConfig(@RequestBody String json){ + JSONObject jsonObject = JSONObject.parseObject(json); + Integer id = jsonObject.getInteger("id"); + BaseSetting baseSetting = baseSettingService.getById(id); + baseSetting.setContent(jsonObject.getString("content")); + baseSettingService.saveOrUpdate(baseSetting); + return R.ok(); + } diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/CouponInfoController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/CouponInfoController.java index b1d1e35..1dc9de0 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/CouponInfoController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/CouponInfoController.java @@ -39,7 +39,7 @@ private AppUserClient appUserClient; //查看详情 @PostMapping("/detail") - @ApiOperation(value = "详情", tags = {"后台-优惠劵"}) + @ApiOperation(value = "活动管理-优惠劵管理-详情", tags = {"管理后台"}) public R<CouponInfo> detail(@RequestParam("id") Integer id){ CouponInfo byId = couponInfoService.getById(id); return R.ok(byId); diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsBargainPriceController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsBargainPriceController.java index d558f16..bce64c6 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsBargainPriceController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsBargainPriceController.java @@ -2,22 +2,33 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.account.api.feignClient.AppUserClient; +import com.ruoyi.account.api.model.AppUser; import com.ruoyi.common.core.domain.R; -import com.ruoyi.other.api.domain.GoodsBargainPrice; -import com.ruoyi.other.api.domain.GoodsBargainPriceDetail; +import com.ruoyi.common.core.utils.StringUtils; +import com.ruoyi.common.security.service.TokenService; +import com.ruoyi.other.api.domain.*; import com.ruoyi.other.api.vo.GetGoodsBargainPrice; -import com.ruoyi.other.service.GoodsBargainPriceDetailService; -import com.ruoyi.other.service.GoodsBargainPriceService; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import com.ruoyi.other.service.*; +import com.ruoyi.system.api.model.LoginUser; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import io.swagger.models.auth.In; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; +import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.util.List; +import java.util.stream.Collectors; + +import static com.alibaba.nacos.shaded.org.checkerframework.checker.units.UnitsTools.g; /** * <p> - * 前端控制器 + * 前端控制器 * </p> * * @author luodangjia @@ -25,34 +36,168 @@ */ @RestController @RequestMapping("/goods-bargain-price") +@Api("门店特殊售价") public class GoodsBargainPriceController { - - @Resource - private GoodsBargainPriceService goodsBargainPriceService; - - @Resource - private GoodsBargainPriceDetailService goodsBargainPriceDetailService; - - - /** - * 根据商品id和会员等级获取门店特价 - * @param goodsBargainPrice - * @return - */ - @PostMapping("/getGoodsBargainPrice") - public R<GoodsBargainPriceDetail> getGoodsBargainPrice(@RequestBody GetGoodsBargainPrice goodsBargainPrice){ - GoodsBargainPrice one = goodsBargainPriceService.getOne(new LambdaQueryWrapper<GoodsBargainPrice>().eq(GoodsBargainPrice::getGoodsId, goodsBargainPrice.getGoodsId()) - .eq(GoodsBargainPrice::getShopId, goodsBargainPrice.getShopId()).eq(GoodsBargainPrice::getAuditStatus, 1).eq(GoodsBargainPrice::getDelFlag, 0) - .orderByDesc(GoodsBargainPrice::getCreateTime).last(" limit 0,1")); - if(null == one){ - return R.ok(); - } - GoodsBargainPriceDetail detailServiceOne = goodsBargainPriceDetailService.getOne(new LambdaQueryWrapper<GoodsBargainPriceDetail>() - .eq(GoodsBargainPriceDetail::getGoodsBargainPriceId, one.getId()).eq(GoodsBargainPriceDetail::getVip, goodsBargainPrice.getVip())); - return R.ok(detailServiceOne); - } - - + + @Resource + private GoodsBargainPriceService goodsBargainPriceService; + + @Resource + private GoodsBargainPriceDetailService goodsBargainPriceDetailService; + + @Resource + private TokenService tokenService; + + @Resource + private GoodsService goodsService; + + @Resource + private GoodsCategoryService goodsCategoryService; + + @Resource + private AppUserClient appUserClient; + + @Resource + private ShopService shopService; + + + /** + * 根据商品id和会员等级获取门店特价 + * + * @param goodsBargainPrice + * @return + */ + @PostMapping("/getGoodsBargainPrice") + public R<GoodsBargainPriceDetail> getGoodsBargainPrice(@RequestBody GetGoodsBargainPrice goodsBargainPrice) { + GoodsBargainPrice one = goodsBargainPriceService.getOne(new LambdaQueryWrapper<GoodsBargainPrice>() + .eq(GoodsBargainPrice::getGoodsId, goodsBargainPrice.getGoodsId()) + .eq(GoodsBargainPrice::getShopId, goodsBargainPrice.getShopId()) + .eq(GoodsBargainPrice::getAuditStatus, 1) + .eq(GoodsBargainPrice::getDelFlag, 0) + .orderByDesc(GoodsBargainPrice::getCreateTime) + .last(" limit 0,1")); + if (null == one) { + return R.ok(); + } + GoodsBargainPriceDetail detailServiceOne = goodsBargainPriceDetailService.getOne(new LambdaQueryWrapper<GoodsBargainPriceDetail>() + .eq(GoodsBargainPriceDetail::getGoodsBargainPriceId, one.getId()).eq(GoodsBargainPriceDetail::getVip, goodsBargainPrice.getVip())); + return R.ok(detailServiceOne); + } + + /** + * 新增 + */ + @PostMapping("/add") + @ApiOperation(value = "新增", tags = {"管理后台-商品管理-门店特殊售价"}) + @Transactional(rollbackFor = Exception.class) + public R<Void> add(@RequestBody GoodsBargainPrice goodsBargainPrice) { + LoginUser loginUserApplet = tokenService.getLoginUserApplet(); + goodsBargainPrice.setAuditStatus(0); + goodsBargainPrice.setCreateUserId(loginUserApplet.getUserid()); + goodsBargainPriceService.save(goodsBargainPrice); + saveGoodsBargainPriceDetail(goodsBargainPrice); + return R.ok(); + } + + private void saveGoodsBargainPriceDetail(@RequestBody GoodsBargainPrice goodsBargainPrice) { + List<GoodsBargainPriceDetail> goodsBargainPriceDetailList = goodsBargainPrice.getGoodsBargainPriceDetailList(); + if (goodsBargainPriceDetailList == null || goodsBargainPriceDetailList.isEmpty()) { + throw new RuntimeException("请输入明细"); + } + for (GoodsBargainPriceDetail goodsBargainPriceDetail : goodsBargainPriceDetailList) { + goodsBargainPriceDetail.setGoodsBargainPriceId(goodsBargainPrice.getId()); + } + goodsBargainPriceDetailService.saveBatch(goodsBargainPriceDetailList); + } + + /** + * 删除 + */ + @DeleteMapping("/delete") + @ApiOperation(value = "删除", tags = {"管理后台-商品管理-门店特殊售价-"}) + public R<Void> delete(@ApiParam("id") @RequestParam("id") Integer id) { + goodsBargainPriceService.removeById(id); + goodsBargainPriceDetailService.remove(new LambdaQueryWrapper<GoodsBargainPriceDetail>() + .eq(GoodsBargainPriceDetail::getGoodsBargainPriceId, id)); + return R.ok(); + } + + /** + * 修改 + */ + @PutMapping("/edit") + @ApiOperation(value = "修改", tags = {"管理后台-商品管理-门店特殊售价"}) + @Transactional(rollbackFor = Exception.class) + public R<Void> edit(@RequestBody GoodsBargainPrice goodsBargainPrice) { + goodsBargainPriceService.updateById(goodsBargainPrice); + goodsBargainPriceDetailService.remove(new LambdaQueryWrapper<GoodsBargainPriceDetail>() + .eq(GoodsBargainPriceDetail::getGoodsBargainPriceId, goodsBargainPrice.getId())); + saveGoodsBargainPriceDetail(goodsBargainPrice); + return R.ok(); + } + + /** + * 详情 + */ + @GetMapping("/detail") + @ApiOperation(value = "详情", tags = {"管理后台-商品管理-门店特殊售价"}) + public R<GoodsBargainPrice> detail(@ApiParam("id") @RequestParam("id") Integer id) { + GoodsBargainPrice goodsBargainPrice = goodsBargainPriceService.getById(id); + List<GoodsBargainPriceDetail> goodsBargainPriceDetailList = goodsBargainPriceDetailService.list(new LambdaQueryWrapper<GoodsBargainPriceDetail>() + .eq(GoodsBargainPriceDetail::getGoodsBargainPriceId, id)); + goodsBargainPrice.setGoodsBargainPriceDetailList(goodsBargainPriceDetailList); + return R.ok(goodsBargainPrice); + } + + /** + * 列表 + */ + @GetMapping("/list") + @ApiOperation(value = "列表", tags = {"管理后台-商品管理-门店特殊售价"}) + public R<Page<GoodsBargainPrice>> list(@ApiParam("页码") @RequestParam(value = "pageNum", required = false) Integer pageNum, + @ApiParam("每页数量") @RequestParam(value = "pageSize", required = false) Integer pageSize, + @ApiParam("商品id") @RequestParam(value = "goodsId", required = false) Integer goodsId, + @ApiParam("商品名称") @RequestParam(value = "goodsName", required = false) String goodsName, + @ApiParam("商品类型") @RequestParam(value = "goodsType", required = false) Integer goodsType, + @ApiParam("所属分类") @RequestParam(value = "categoryId", required = false) Integer categoryId, + @ApiParam("审核状态") @RequestParam(value = "auditStatus", required = false) Integer auditStatus) { + + + List<Goods> goodsList = goodsService.list(new LambdaQueryWrapper<Goods>() + .eq(StringUtils.isNotEmpty(goodsName), Goods::getName, goodsName) + .eq(goodsType != null, Goods::getType, goodsType) + .eq(categoryId != null, Goods::getGoodsCategoryId, categoryId)); + List<Integer> goodsIds = goodsList.stream().map(Goods::getId).collect(Collectors.toList()); + if (goodsId != null){ + goodsIds.add(goodsId); + } + + Page<GoodsBargainPrice> page = goodsBargainPriceService.page(Page.of(pageNum, pageSize), new LambdaQueryWrapper<GoodsBargainPrice>() + .eq(!CollectionUtils.isEmpty(goodsIds), GoodsBargainPrice::getGoodsId, goodsId) + .eq(auditStatus != null, GoodsBargainPrice::getAuditStatus, auditStatus)); + + page.getRecords().forEach(goodsBargainPrice -> { + goodsList.stream() + .filter(goods -> goods.getId().equals(goodsBargainPrice.getGoodsId())) + .findFirst().ifPresent(g -> { + GoodsCategory goodsCategory = goodsCategoryService.getById(g.getGoodsCategoryId()); + Integer shopId = goodsBargainPrice.getShopId(); + Shop shop = shopService.getById(shopId); + R<AppUser> r = appUserClient.getAppUserByPhone(shop.getPhone()); + if (R.isError(r)){ + throw new RuntimeException("获取店长信息失败"); + } + goodsBargainPrice.setOwnerName(r.getData().getName()); + goodsBargainPrice.setOwnerPhone(shop.getPhone()); + goodsBargainPrice.setShopName(shop.getName()); + goodsBargainPrice.setGoodsName(g.getName()); + goodsBargainPrice.setCategoryName(goodsCategory.getName()); + }); + }); + + return R.ok(page); + } + } diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsCategoryController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsCategoryController.java index 8b38be4..b170351 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsCategoryController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsCategoryController.java @@ -33,37 +33,37 @@ @PostMapping("/addGoodsCategory") - @ApiOperation(value = "添加商品分类", tags = {"管理后台-商品分类"}) + @ApiOperation(value = "商品管理-商品分类-添加", tags = {"管理后台"}) public R<Void> addGoodsCategory(@RequestBody GoodsCategory goodsCategory){ goodsCategoryService.save(goodsCategory); return R.ok(); } @PutMapping("/updateGoodsCategory") - @ApiOperation(value = "修改商品分类", tags = {"管理后台-商品分类"}) + @ApiOperation(value = "商品管理-商品分类-修改", tags = {"管理后台"}) public R<Void> updateGoodsCategory(@RequestBody GoodsCategory goodsCategory){ goodsCategoryService.updateById(goodsCategory); return R.ok(); } @GetMapping("/getGoodsCategoryById") - @ApiOperation(value = "商品分类详情", tags = {"管理后台-商品分类"}) + @ApiOperation(value = "商品管理-商品分类-详情", tags = {"管理后台"}) public R<GoodsCategory> getGoodsCategoryById(@RequestParam("id") Integer id){ return R.ok(goodsCategoryService.getById(id)); } @GetMapping("/getList") - @ApiOperation(value = "商品分类列表", tags = {"管理后台-商品分类"}) - public R<Page<GoodsCategory>> list(@ApiParam("页码") @RequestParam Integer PageNum,@ApiParam("每一页数据大小") Integer pageSize, GoodsCategory goodsCategory){ + @ApiOperation(value = "商品管理-商品分类-列表", tags = {"管理后台"}) + public R<Page<GoodsCategory>> list(@ApiParam("页码") @RequestParam Integer pageNum,@ApiParam("每一页数据大小") Integer pageSize, GoodsCategory goodsCategory){ Page<GoodsCategory> page = goodsCategoryService.lambdaQuery() .like(StringUtils.isNotEmpty(goodsCategory.getName()),GoodsCategory::getName, goodsCategory.getName()) - .page(Page.of(PageNum, pageSize)); + .page(Page.of(pageNum, pageSize)); return R.ok(page); } @DeleteMapping("/delete") - @ApiOperation(value = "删除商品分类", tags = {"管理后台-商品分类"}) + @ApiOperation(value = "商品管理-商品分类-删除", tags = {"管理后台"}) public R<Void> delete(@RequestParam("id") Integer id){ goodsCategoryService.removeById(id); return R.ok(); diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsController.java index 5df2096..2d1bb45 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsController.java @@ -2,6 +2,8 @@ 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.ruoyi.common.core.domain.R; import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.common.core.web.page.TableDataInfo; @@ -26,7 +28,7 @@ */ @RestController @RequestMapping("/goods") -@Api(tags = "商品") +@Api("商品") public class GoodsController extends BaseController { @Resource private GoodsService goodsService; @@ -35,8 +37,49 @@ * 添加商品 */ @PostMapping("/addGoods") - @ApiOperation(value = "添加商品", tags = {"管理后台-发布商品"}) + @ApiOperation(value = "发布商品", tags = {"管理后台-商品管理"}) public R<Void> addGoods(@RequestBody Goods goods) { + goodsService.addGoods(goods); + return R.ok(); + } + + /** + * 管理后台商品列表 + */ + @GetMapping("/manageGoodsList") + @ApiOperation(value = "商品列表", tags = {"管理后台-商品管理"}) + public R<IPage<Goods>> manageGoodsList(@ApiParam("页码") @RequestParam Integer pageNum, + @ApiParam("每一页数据大小") Integer pageSize, + Goods goods){ + return R.ok(goodsService.getManageGoodsList(new Page<>(pageNum, pageSize), goods)); + } + + /** + * 后台商品详情 + */ + @GetMapping("/manageGoodsDetail/{goodsId}") + @ApiOperation(value = "商品详情", tags = {"管理后台-商品管理"}) + public R<Goods> manageGoodsDetail(@PathVariable("goodsId") Long goodsId){ + return R.ok(goodsService.getManageGoodsDetail(goodsId)); + } + + /** + * 后台商品修改 + */ + @PutMapping("/manageGoodsUpdate") + @ApiOperation(value = "商品修改", tags = {"管理后台-商品管理"}) + public R<Void> manageGoodsUpdate(@RequestBody Goods goods){ + goodsService.updateManageGoods(goods); + return R.ok(); + } + + /** + * 后台商品删除 + */ + @DeleteMapping("/manageGoodsDelete/{goodsId}") + @ApiOperation(value = "商品删除", tags = {"管理后台-商品管理"}) + public R<Void> manageGoodsDelete(@PathVariable("goodsId") Long goodsId){ + goodsService.removeById(goodsId); return R.ok(); } @@ -46,7 +89,7 @@ * 商品列表 */ @GetMapping("/goodsList") - @ApiOperation(value = "商品列表", tags = {"小程序-商城-首页-热门商品列表", "首页热门商品-小程序"}) + @ApiOperation(value = "热门商品列表", tags = {"小程序-商城-首页", "小程序-首页"}) public R<TableDataInfo> goodsList(Goods goods){ startPage(); return R.ok(getDataTable(goodsService.goodsList(goods))); @@ -57,7 +100,7 @@ * 指定门店商品 */ @GetMapping("/getGoodsListByShopId") - @ApiOperation(value = "商品列表", tags = {"小程序-首页-门店详情-商品购买列表"}) + @ApiOperation(value = "商品购买列表", tags = {"小程序-首页-门店详情"}) public R<TableDataInfo> getGoodsListByShopId(@ApiParam("门店id") @RequestParam Integer shopId) { startPage(); return R.ok(getDataTable(goodsService.getGoodsListByShopId(shopId))); @@ -68,7 +111,7 @@ * 商品详情 */ @GetMapping("/goodsDetail/{goodsId}") - @ApiOperation(value = "商品详情", tags = {"小程序-商城-首页-商品详情"}) + @ApiOperation(value = "商品详情", tags = {"小程序-商城-首页"}) public R<GoodsVO> goodsDetail(@PathVariable("goodsId") Long goodsId){ return R.ok(goodsService.goodsDetail(goodsId)); } diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsEvaluateController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsEvaluateController.java index 64c2bd0..1d9c8ad 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsEvaluateController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsEvaluateController.java @@ -2,9 +2,11 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; 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.core.utils.StringUtils; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.other.api.domain.Goods; import com.ruoyi.other.api.domain.GoodsEvaluate; @@ -19,7 +21,6 @@ import javax.annotation.Resource; import java.util.List; -import java.util.stream.Collectors; /** * <p> @@ -59,7 +60,7 @@ * 发布商品评价 */ @PostMapping("/addGoodsEvaluate") - @ApiOperation(value = "发布商品评价", tags = {"小程序-发布商品评价"}) + @ApiOperation(value = "发布商品评价", tags = {"小程序-个人中心-我的订单"}) public R<Void> addGoodsEvaluate(@RequestBody GoodsEvaluateVO goodsEvaluateVO){ goodsEvaluateService.addGoodsEvaluate(goodsEvaluateVO); return R.ok(); @@ -84,5 +85,69 @@ return R.ok(list); } + + /** + * 删除评论 + */ + @DeleteMapping("/delete/{id}") + @ApiOperation(value = "删除评论", tags = {"管理后台-商品管理-评价管理"}) + public R<Void> delete(@PathVariable("id") Long id){ + goodsEvaluateService.removeById(id); + return R.ok(); + } + + /** + * 评论列表 + */ + @GetMapping("/list") + @ApiOperation(value = "评论列表", tags = {"管理后台-商品管理-评价管理"}) + public R<List<GoodsEvaluate>> list(GoodsEvaluate goodsEvaluate){ + List<GoodsEvaluate> list = goodsEvaluateService.lambdaQuery() + .like(StringUtils.isNotEmpty(goodsEvaluate.getGoodsName()),GoodsEvaluate::getGoodsName, goodsEvaluate.getComment()) + .like(StringUtils.isNotEmpty(goodsEvaluate.getUserName()),GoodsEvaluate::getUserName, goodsEvaluate.getUserName()) + .like(StringUtils.isNotEmpty(goodsEvaluate.getPhone()),GoodsEvaluate::getPhone, goodsEvaluate.getPhone()) + .eq(goodsEvaluate.getStatus()!=null,GoodsEvaluate::getStatus, goodsEvaluate.getStatus()) + .orderByDesc(GoodsEvaluate::getCreateTime) + .list(); + + list.forEach(this::buildDetail); + + return R.ok(list); + } + + private void buildDetail(GoodsEvaluate item) { + AppUser appUser = appUserClient.getAppUserById(item.getAppUserId()); + if (appUser == null){ + throw new RuntimeException("获取用户信息失败"); + } + Goods goods = goodsService.getById(item.getGoodsId()); + item.setGoodsName(goods.getName()); + item.setPhone(appUser.getPhone()); + item.setUserName(appUser.getName()); + } + + /** + * 评论详情 + */ + @GetMapping("/{id}") + @ApiOperation(value = "评论详情", tags = {"管理后台-商品管理-评价管理"}) + public R<GoodsEvaluate> getDetail(@PathVariable("id") Long id){ + GoodsEvaluate goodsEvaluate = goodsEvaluateService.getById(id); + buildDetail(goodsEvaluate); + return R.ok(goodsEvaluate); + } + + /** + * 评论上/下架 + */ + @PutMapping("/changeStatus") + @ApiOperation(value = "上/下架", tags = {"管理后台-商品管理-评价管理"}) + public R<Void> changeStatus(@RequestBody GoodsEvaluate goodsEvaluate){ + goodsEvaluateService.update(new LambdaUpdateWrapper<GoodsEvaluate>() + .eq(GoodsEvaluate::getId, goodsEvaluate.getId()) + .set(GoodsEvaluate::getStatus, goodsEvaluate.getStatus())); + return R.ok(); + } + } diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/OrderActivityInfoController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/OrderActivityInfoController.java index d94fa02..37ec498 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/OrderActivityInfoController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/OrderActivityInfoController.java @@ -2,12 +2,21 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.other.api.domain.OrderActivityInfo; import com.ruoyi.other.service.OrderActivityInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; /** * <p> @@ -19,6 +28,7 @@ */ @RestController @RequestMapping("/order-activity-info") +@Api("订单优惠活动") public class OrderActivityInfoController { @Resource @@ -37,7 +47,63 @@ .last(" and now() between start_time and end_time and FIND_IN_SET(" + vip + ", vip_ids) limit 0, 1")); return R.ok(one); } - - + + /** + * 添加活动 + */ + @PostMapping("/save") + @ApiOperation(value = "添加活动", tags = {"管理后台-活动管理-订单优惠活动"}) + public R<Void> saveActivityConfig(@RequestBody OrderActivityInfo orderActivityInfo){ + orderActivityInfoService.save(orderActivityInfo); + return R.ok(); + } + + /** + * 删除活动 + */ + @PostMapping("/delete") + @ApiOperation(value = "删除活动", tags = {"管理后台-活动管理-订单优惠活动-"}) + public R<Void> deleteActivityConfig(@RequestParam("id") Long id){ + orderActivityInfoService.removeById(id); + return R.ok(); + } + + /** + * 修改活动 + */ + @PostMapping("/update") + @ApiOperation(value = "修改活动", tags = {"管理后台-活动管理-订单优惠活动-"}) + public R<Void> updateActivityConfig(@RequestBody OrderActivityInfo orderActivityInfo){ + orderActivityInfoService.updateById(orderActivityInfo); + return R.ok(); + } + + /** + * 获取活动列表 + */ + @GetMapping("/list") + @ApiOperation(value = "获取活动列表", tags = {"管理后台-活动管理-订单优惠活动"}) + public R<Page<OrderActivityInfo>> list(@ApiParam("页码") @RequestParam Integer pageNum, + @ApiParam("每一页数据大小") Integer pageSize, + OrderActivityInfo orderActivityInfo){ + + return R.ok(orderActivityInfoService.page(Page.of(pageNum, pageSize), new LambdaQueryWrapper<OrderActivityInfo>() + .eq(orderActivityInfo.getId() != null, OrderActivityInfo::getId, orderActivityInfo.getId()) + .eq(StringUtils.isNotEmpty(orderActivityInfo.getActivityName()), OrderActivityInfo::getActivityName, orderActivityInfo.getActivityName()) + .lt(orderActivityInfo.getStatus() == 0, OrderActivityInfo::getStartTime, orderActivityInfo.getStartTime()) + .ge(orderActivityInfo.getStatus() == 1, OrderActivityInfo::getEndTime, orderActivityInfo.getStartTime()) + .eq(orderActivityInfo.getIsShelf() != null, OrderActivityInfo::getIsShelf, orderActivityInfo.getIsShelf()))); + } + + /** + * 获取活动详情 + */ + @GetMapping("/getDetailById") + @ApiOperation(value = "获取活动详情", tags = {"管理后台-活动管理-订单优惠活动"}) + public R<OrderActivityInfo> getDetailById(@RequestParam("id") Long id){ + return R.ok(orderActivityInfoService.getById(id)); + } + + } diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/PhoneController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/PhoneController.java index 5a5b73e..d918033 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/PhoneController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/PhoneController.java @@ -46,7 +46,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()) diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/SeckillActivityInfoController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/SeckillActivityInfoController.java index d368c7c..4d6fd43 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/SeckillActivityInfoController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/SeckillActivityInfoController.java @@ -29,7 +29,7 @@ * @author luodangjia * @since 2024-11-20 */ -@Api(tags = "秒杀活动信息") +@Api("秒杀活动信息") @RestController @RequestMapping("/seckill-activity-info") public class SeckillActivityInfoController extends BaseController { @@ -47,7 +47,7 @@ * 秒杀活动列表 */ @GetMapping("/list") - @ApiOperation(value = "秒杀活动列表",tags = {"小程序-商城-首页-秒杀活动列表"}) + @ApiOperation(value = "秒杀活动列表",tags = {"小程序-商城-首页"}) public R<TableDataInfo> list(Goods goods) { startPage(); @@ -58,7 +58,7 @@ * 秒杀活动详情 */ @GetMapping("/detail/{id}") - @ApiOperation(value = "秒杀活动详情", tags = {"小程序-商城-首页-秒杀活动列表-秒杀活动详情"}) + @ApiOperation(value = "秒杀活动详情", tags = {"小程序-商城-首页"}) public R<SeckillActivityDetailVO> detail(@PathVariable("id") Integer id) { return R.ok(seckillActivityInfoService.detail(id)); diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShareController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShareController.java index 887c1c1..befed00 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShareController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShareController.java @@ -33,7 +33,7 @@ * @author luodangjia * @since 2024-11-20 */ -@Api(tags = "分享") +@Api("分享") @RestController @RequestMapping("/share") public class ShareController extends BaseController { @@ -49,7 +49,7 @@ /** * 分享列表 */ - @ApiOperation(value = "分享列表", tags = {"小程序-个人中心-门店管理-分享列表"}) + @ApiOperation(value = "分享列表", tags = {"小程序-个人中心-门店管理"}) @ApiImplicitParams({ @ApiImplicitParam(value = "对象id(addType=1:平台添加,addType=2:推广人添加,addType=3:门店添加)", name = "objectId", required = true, dataType = "int"), }) @@ -73,7 +73,7 @@ /** * 分享添加 */ - @ApiOperation(value = "分享添加", tags = {"小程序-个人中心-门店管理-分享添加"}) + @ApiOperation(value = "分享添加", tags = {"小程序-个人中心-门店管理"}) @PostMapping public R<Void> add(@RequestBody Share share){ Long userid = tokenService.getLoginUserApplet().getUserid(); @@ -92,7 +92,7 @@ /** * 分享删除 */ - @ApiOperation(value = "分享删除", tags = {"小程序-个人中心-门店管理-分享删除-小程序"}) + @ApiOperation(value = "分享删除", tags = {"小程序-个人中心-门店管理"}) @DeleteMapping public R<Void> delete(@RequestBody Share share){ shareService.removeById(share); @@ -102,7 +102,7 @@ /** * 分享编辑 */ - @ApiOperation(value = "分享编辑", tags = {"小程序-个人中心-门店管理-分享编辑-小程序"}) + @ApiOperation(value = "分享编辑", tags = {"小程序-个人中心-门店管理"}) @PutMapping public R<Void> edit(@RequestBody Share share){ share.setAuditStatus(ShareAuditStatus.WAIT.getCode()); @@ -113,14 +113,14 @@ /** * 分享详情 */ - @ApiOperation(value = "分享详情", tags = {"小程序-个人中心-门店管理-分享详情-小程序"}) + @ApiOperation(value = "分享详情", tags = {"小程序-个人中心-门店管理"}) @GetMapping("/detail/{id}") public R<Share> detail(@PathVariable("id") Integer id){ return R.ok(shareService.getById(id)); } - @ApiOperation(value = "添加", tags = {"后台-分享管理"}) + @ApiOperation(value = "广告管理-分享管理-添加", tags = {"管理后台"}) @PostMapping("/manage/add") public R<Void> manage(@RequestBody Share share){ LoginUser loginUser = SecurityUtils.getLoginUser(); @@ -133,7 +133,7 @@ return R.ok(); } - @ApiOperation(value = "编辑", tags = {"后台-分享管理"}) + @ApiOperation(value = "广告管理-分享管理-编辑", tags = {"管理后台"}) @PostMapping("/manage/edit") public R<Void> manageedit(@RequestBody Share share){ @@ -141,7 +141,7 @@ return R.ok(); } - @ApiOperation(value = "删除", tags = {"后台-分享管理"}) + @ApiOperation(value = "广告管理-分享管理-删除", tags = {"管理后台"}) @GetMapping("/manage/delete") public R<Void> managedelete(@RequestParam Integer id){ @@ -149,14 +149,14 @@ return R.ok(); } - @ApiOperation(value = "列表", tags = {"后台-分享管理"}) + @ApiOperation(value = "广告管理-分享管理-列表", tags = {"管理后台"}) @GetMapping("/manage/list") public R<Page<Share>> managelist(String name,Integer addType,@RequestParam Integer PageNum,Integer pageSize){ Page<Share> page = shareService.lambdaQuery().eq(Share::getAuditStatus,1).like(name != null, Share::getName, name).eq(addType != null, Share::getAddType, addType).page(Page.of(pageSize, pageSize)); return R.ok(page); } - @ApiOperation(value = "设为小程序分享", tags = {"后台-分享管理"}) + @ApiOperation(value = "广告管理-分享管理-设为小程序分享", tags = {"管理后台"}) @GetMapping("/manage/set") public R<Void> set(@RequestParam Integer id){ //将所有分享设为不是小程序分享 @@ -175,7 +175,7 @@ } - @ApiOperation(value = "列表", tags = {"后台-分享管理-审核"}) + @ApiOperation(value = "广告管理-分享管理-审核列表", tags = {"管理后台"}) @GetMapping("/manage/auth/list") public R<Page<Share>> authmanagelist(String name,Integer addType,@RequestParam Integer pageNum,Integer pageSize){ Page<Share> page = shareService.lambdaQuery().ne(Share::getAuditStatus,1).like(name != null, Share::getName, name).eq(addType != null, Share::getAddType, addType).page(Page.of(pageNum, pageSize)); @@ -194,10 +194,6 @@ } return R.ok(page); } - - - - diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java index a5f04a0..d7a5156 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java @@ -2,30 +2,34 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.ruoyi.account.api.feignClient.AppUserClient; import com.ruoyi.account.api.model.AppUser; +import com.ruoyi.account.api.model.AppUserShop; 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.domain.Shop; import com.ruoyi.other.api.domain.ShopScore; -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.system.api.model.LoginUser; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.math.BigDecimal; import java.time.LocalDateTime; +import java.util.ArrayList; import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; /** * <p> @@ -37,10 +41,8 @@ */ @RestController @RequestMapping("/shop") -@Api(tags = "门店") +@Api("门店") public class ShopController extends BaseController { - @Resource - private TechnicianService technicianService; @Resource private ShopService shopService; @Resource @@ -52,10 +54,79 @@ - @PostMapping("/getDetailById") + + @PostMapping + @ApiOperation(value = "新增门店", tags = {"管理后台-门店管理"}) + @Transactional(rollbackFor = Exception.class) + public R<Void> add(@RequestBody Shop shop){ + String phone = shop.getPhone(); + if (!shopService.cheUserByPhone(phone)) { + return R.fail("该手机号未注册"); + } + shop.setShopAllPoint(0); + shop.setShopPoint(0); + shop.setSharePoint(0); + shop.setServerPoint(0); + shop.setLowerLevelRebatePoints(0); + shop.setUsePoint(0); + shop.setGiveawayAllMoney(BigDecimal.ZERO); + shop.setGiveawayMoney(BigDecimal.ZERO); + shop.setLowerLevelGiveawayMoney(BigDecimal.ZERO); + shop.setServerGiveawayMoney(BigDecimal.ZERO); + shop.setCanWithdrawMoney(BigDecimal.ZERO); + shop.setWithdrawMoney(BigDecimal.ZERO); + shop.setOrderNumber(0); + shop.setServerOrderNumber(0); + shop.setCustomOrderNumber(0); + shopService.save(shop); + + LoginUser loginUserApplet = tokenService.getLoginUserApplet(); + AppUserShop appUserShop = new AppUserShop(); + appUserShop.setAppUserId(loginUserApplet.getUserid()); + appUserShop.setShopId(shop.getId()); + R<Void> r = appUserClient.addAppUserShop(appUserShop); + if (R.isError(r)){ + throw new RuntimeException("添加失败"); + } + return R.ok(); + } + + + @GetMapping("/getDetailById") + @ApiOperation(value = "门店详情", tags = {"管理后台-门店管理"}) public R<Shop> getDetailById(@RequestParam("id") Long id){ Shop byId = shopService.getById(id); return R.ok(byId); + } + + @DeleteMapping("/deleteShop") + @ApiOperation(value = "删除门店", tags = {"管理后台-门店管理"}) + public R<Void> deleteShop(@ApiParam("门店id") @RequestParam("id") Integer id){ + shopService.removeById(id); + return R.ok(); + } + + @PutMapping("/editShop") + @ApiOperation(value = "门店管理-编辑门店", tags = {"管理后台"}) + public R<Void> editShop(@RequestBody Shop shop){ + shopService.updateById(shop); + return R.ok(); + } + + @GetMapping("/list") + @ApiOperation(value = "门店列表", tags = {"管理后台-门店管理"}) + public R<IPage<Shop>> list(@ApiParam("页码") @RequestParam Integer pageNum,@ApiParam("每一页数据大小") Integer pageSize,Shop shop){ + IPage<Shop> shopIPage = shopService.getShopList(pageNum, pageSize, shop); + return R.ok(shopIPage); + } + + /** + * 通过手机号校验店长 + */ + @PostMapping("/cheUserByPhone") + @ApiOperation(value = "通过手机号校验店长", tags = {"管理后台-门店管理"}) + public R<Boolean> cheUserByPhone(@RequestParam("phone") String phone) { + return R.ok(shopService.cheUserByPhone(phone)); } @@ -63,7 +134,7 @@ * 附近门店列表 */ @GetMapping("/nearbyShopList") - @ApiOperation(value = "附近门店列表", tags = {"小程序-首页-附近门店列表"}) + @ApiOperation(value = "附近门店列表", tags = {"小程序-首页"}) public R<List<NearbyShopVO>> nearbyShopList(@ApiParam("经度") @RequestParam BigDecimal longitude, @ApiParam("纬度") @RequestParam BigDecimal latitude) { return R.ok(shopService.nearbyShopList(longitude, latitude)); @@ -71,7 +142,7 @@ @GetMapping("/shopDetail") - @ApiOperation(value = "门店详情", tags = {"小程序-首页-门店详情"}) + @ApiOperation(value = "门店详情", tags = {"小程序-首页"}) public R<ShopDetailVO> shopDetail(@ApiParam("门店id") @RequestParam Integer shopId, @ApiParam("经度") @RequestParam BigDecimal longitude, @ApiParam("纬度") @RequestParam BigDecimal latitude) { @@ -82,19 +153,23 @@ * 查询当前店长所属门店 */ @GetMapping("/shopByUser") - @ApiOperation(value = "查询当前店长所属门店", tags = {"小程序-个人中心-首页"}, notes = "可绑定的门店列表") + @ApiOperation(value = "查询当前店长所属门店", tags = {"小程序-个人中心"}, notes = "可绑定的门店列表") public R<List<Shop>> shopByUser() { - List<Shop> list = shopService.list(new LambdaQueryWrapper<Shop>() - .eq(Shop::getAppUserId, SecurityUtils.getUserId()) - .eq(Shop::getStatus, ShopStatus.SHOP_STATUS_NORMAL.getCode())); - return R.ok(list); + R<List<AppUserShop>> r = appUserClient.getAppUserShop(SecurityUtils.getUserId()); + if (R.isSuccess(r)){ + List<AppUserShop> appUserShopList = r.getData(); + List<Integer> shopIds = appUserShopList.stream().map(AppUserShop::getShopId).collect(Collectors.toList()); + List<Shop> shopList = shopService.listByIds(shopIds); + return R.ok(shopList); + } + return R.ok(new ArrayList<>()); } /** * 绑定门店 */ @GetMapping("/bindShop") - @ApiOperation(value = "绑定门店", tags = {"小程序-个人中心-绑定门店"}) + @ApiOperation(value = "绑定门店", tags = {"小程序-个人中心"}) public R<Void> bindShop(@ApiParam("门店id") @RequestParam Long shopId) { AppUser appUser = appUserClient.getAppUserById(SecurityUtils.getUserId()); appUser.setShopId(shopId); @@ -106,7 +181,7 @@ * @return */ @PostMapping("/shopScore") - @ApiOperation(value = "门店打分", tags = {"小程序-个人中心-门店打分"}) + @ApiOperation(value = "门店打分", tags = {"小程序-个人中心"}) public R<Void> shopScore(@RequestBody ShopScore shopScore) { LoginUser loginUserApplet = tokenService.getLoginUserApplet(); shopScore.setAppUserId(loginUserApplet.getUserid()); @@ -148,5 +223,12 @@ return R.ok(list); } + @GetMapping("/getShopIdByName") + R<Set<Integer>> getShopIdByName(@RequestParam String shopName){ + List<Shop> list = shopService.list(new LambdaQueryWrapper<Shop>() + .like(Shop::getName, shopName)); + return R.ok(list.stream().map(Shop::getId).collect(Collectors.toSet())); + } + } diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/SystemConfigController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/SystemConfigController.java index 21a404e..b050e55 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/SystemConfigController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/SystemConfigController.java @@ -6,6 +6,7 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.other.api.domain.SystemConfig; import com.ruoyi.other.api.dto.IndexConfigSetDto; +import com.ruoyi.other.api.dto.LogisticsSetDto; import com.ruoyi.other.api.dto.StartPageSetDto; import com.ruoyi.other.service.SystemConfigService; import org.springframework.web.bind.annotation.*; @@ -28,7 +29,7 @@ @Resource private SystemConfigService systemConfigService; @PostMapping("/index/add") - @ApiOperation(value = "添加", tags = {"后台-广告管理-首页配置"}) + @ApiOperation(value = "广告管理-首页配置-添加", tags = {"管理后台"}) public R add(@RequestBody IndexConfigSetDto indexConfigSetDto){ //先删除type=2的数据 List<SystemConfig> list = systemConfigService.lambdaQuery().eq(SystemConfig::getType, 2).list(); @@ -40,7 +41,7 @@ return R.ok(); } @GetMapping("/index/detail") - @ApiOperation(value = "宣传图片-公司简介", tags = {"后台-广告管理-首页配置","小程序-首页"}) + @ApiOperation(value = "广告管理-首页配置-宣传图片-公司简介", tags = {"管理后台","小程序-首页"}) public R<IndexConfigSetDto> detail(){ SystemConfig one = systemConfigService.lambdaQuery().eq(SystemConfig::getType, 2).one(); if (one==null){ @@ -77,7 +78,7 @@ } @PostMapping("/startPage/add") - @ApiOperation(value = "添加", tags = {"后台-广告管理-启动页管理"}) + @ApiOperation(value = "广告管理-启动页管理-添加", tags = {"管理后台"}) public R startPageadd(@RequestBody StartPageSetDto startPageSetDto){ //先删除type=1的数据 List<SystemConfig> list = systemConfigService.lambdaQuery().eq(SystemConfig::getType, 1).list(); @@ -89,6 +90,35 @@ return R.ok(); } + /** + * 订单包邮设置 + */ + @PostMapping("/logistics/add") + @ApiOperation(value = "添加", tags = {"管理后台-商品管理-订单包邮设置"}) + public R add(@RequestBody LogisticsSetDto logisticsSetDto){ + List<SystemConfig> list = systemConfigService.lambdaQuery().eq(SystemConfig::getType, 3).list(); + systemConfigService.removeBatchByIds(list); + SystemConfig systemConfig = new SystemConfig(); + systemConfig.setType(3); + systemConfig.setContent(JSON.toJSONString(logisticsSetDto)); + systemConfigService.save(systemConfig); + return R.ok(); + } + + /** + * 获取订单包邮设置 + */ + @GetMapping("/logistics/detail") + @ApiOperation(value = "订单包邮设置", tags = {"管理后台-商品管理-订单包邮设置"}) + public R<LogisticsSetDto> logisticsDetail(){ + SystemConfig one = systemConfigService.lambdaQuery().eq(SystemConfig::getType, 3).one(); + if (one==null){ + return R.ok(); + } + LogisticsSetDto logisticsSetDto = JSONObject.parseObject(one.getContent(), LogisticsSetDto.class); + return R.ok(logisticsSetDto); + } + } diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TechnicianController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TechnicianController.java index 17f892f..26bca8a 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TechnicianController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TechnicianController.java @@ -29,7 +29,7 @@ */ @RestController @RequestMapping("/technician") -@Api(tags = "技师") +@Api("技师") public class TechnicianController extends BaseController { @Resource private TechnicianService technicianService; diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TechnicianSubscribeController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TechnicianSubscribeController.java index 5c09cf5..f683fff 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TechnicianSubscribeController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TechnicianSubscribeController.java @@ -26,7 +26,7 @@ * @author luodangjia * @since 2024-11-20 */ -@Api(tags = "技师预约管理") +@Api("技师预约管理") @RestController @RequestMapping("/technician-subscribe") public class TechnicianSubscribeController extends BaseController { @@ -38,11 +38,11 @@ */ @GetMapping("/list") @ApiOperation(value = "预约列表", notes = "预约列表", tags = {"小程序-个人中心-门店管理-预约列表"}) - public TableDataInfo<TechnicianSubscribeVO> list(@ApiParam(value = "状态") @RequestParam Integer status, + public TableDataInfo<TechnicianSubscribeVO> list(@ApiParam(value = "状态") Integer status, @ApiParam(value = "门店id") @RequestParam Long shopId) { startPage(); List<TechnicianSubscribeVO> list = technicianSubscribeService - .getTechnicianSubscribeByUserAndShop(SecurityUtils.getUserId(), shopId); + .getTechnicianSubscribeByUserAndShop(shopId,status); return getDataTable(list); } @@ -50,7 +50,7 @@ * 预约技师 */ @PostMapping("/subscribe") - @ApiOperation(value = "预约技师", notes = "预约技师", tags = {"小程序-个人中心-门店管理-预约列表-预约技师"}) + @ApiOperation(value = "预约技师", notes = "预约技师", tags = {"小程序-个人中心-门店管理-预约列表"}) public R<Void> subscribe(@RequestBody TechnicianSubscribe technicianSubscribe) { technicianSubscribeService.subscribe(technicianSubscribe); return R.ok(); @@ -60,7 +60,7 @@ * 取消服务 */ @GetMapping("/cancel") - @ApiOperation(value = "取消服务", notes = "取消服务", tags = {"小程序-个人中心-门店管理-预约列表-取消服务"}) + @ApiOperation(value = "取消服务", notes = "取消服务", tags = {"小程序-个人中心-门店管理,小程序-个人中心-我的预约"}) public R<Void> cancel(@ApiParam(value = "预约id") @RequestParam Long id) { TechnicianSubscribe subscribe = technicianSubscribeService.getOne(new LambdaQueryWrapper<TechnicianSubscribe>() @@ -103,14 +103,6 @@ @ApiParam(hidden = true) Page<TechnicianSubscribe> page) { return R.ok(technicianSubscribeService.getTechnicianSubscribeByUser(page, SecurityUtils.getUserId(), status)); } - - @GetMapping("/getSubscribeByOrderId") - @ApiOperation(value = "根据订单id获取预约信息", notes = "根据订单id获取预约信息", tags = {"后台-技师预约管理-根据订单id获取预约信息"}) - public R<TechnicianSubscribe> getSubscribeByOrderId(@ApiParam(value = "订单id") @RequestParam Long orderId) { - return R.ok(technicianSubscribeService.getOne(new LambdaQueryWrapper<TechnicianSubscribe>() - .eq(TechnicianSubscribe::getOrderId, orderId))); - } - } diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/VipSettingController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/VipSettingController.java index b7762db..0fd2778 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/VipSettingController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/VipSettingController.java @@ -111,6 +111,22 @@ return R.ok(vipSettingService.getById(id)); } + + /** + * 查询会员配置 + * @param id + * @return + */ + @PostMapping("/getVipSetting") + public R<VipSetting> getVipSetting(@RequestParam("id") Integer id) { + return R.ok(vipSettingService.getById(id)); + } + + @GetMapping("/list") + public R<List<VipSetting>> getList(){ + return R.ok(vipSettingService.list()); + } + @GetMapping("/manage/info") @ApiOperation(value = "查询", tags = {"后台-会员设置"}) public R<VipSetDto> managesetinfo() { diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/enums/TechnicianStatus.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/enums/TechnicianStatus.java index 3edfa0c..7e7a80e 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/enums/TechnicianStatus.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/enums/TechnicianStatus.java @@ -6,7 +6,8 @@ public enum TechnicianStatus { UNSUBSCRIBE(0, "待服务"), SERVE(1, "已服务"), - CANCEL(2, "已取消"); + CANCEL(2, "已取消"), + EXPIRED(3, "已到期"); private final Integer code; private final String message; diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/GoodsMapper.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/GoodsMapper.java index a5bf0a5..ba2e315 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/GoodsMapper.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/GoodsMapper.java @@ -1,6 +1,7 @@ package com.ruoyi.other.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.ruoyi.other.api.domain.Goods; import org.apache.ibatis.annotations.Param; @@ -16,4 +17,6 @@ */ public interface GoodsMapper extends BaseMapper<Goods> { List<Goods> selectListByShopId(@Param("shopId") Integer shopId,@Param("vip") Integer vip); + + IPage<Goods> selectManageGoodsList(@Param("page") IPage<Goods> page, @Param("goods") Goods goods); } diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/ShopMapper.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/ShopMapper.java index 898b0c1..5747e23 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/ShopMapper.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/ShopMapper.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.Shop; import com.ruoyi.other.vo.NearbyShopVO; import com.ruoyi.other.vo.ShopDetailVO; @@ -19,6 +21,8 @@ */ public interface ShopMapper extends BaseMapper<Shop> { + IPage<Shop> selectShopList(@Param("page") Page<Shop> page,@Param("shop") Shop shop); + List<NearbyShopVO> selectNearbyShopList(@Param("longitude") BigDecimal longitude,@Param("latitude") BigDecimal latitude); ShopDetailVO selectShopDetail(Integer shopId); diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/TechnicianSubscribeMapper.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/TechnicianSubscribeMapper.java index 4da34ad..9ccd914 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/TechnicianSubscribeMapper.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/TechnicianSubscribeMapper.java @@ -24,8 +24,9 @@ * @param shopId * @return */ - public List<TechnicianSubscribeVO> getTechnicianSubscribeByUserAndShop(@Param("userId") Long userId, - @Param("shopId") Long shopId); + List<TechnicianSubscribeVO> getTechnicianSubscribeByUserAndShop( + @Param("shopId") Long shopId, + @Param("status") Integer status); IPage<TechnicianSubscribeVO> getTechnicianSubscribeByUser(@Param("page") Page<TechnicianSubscribe> page, @Param("userId") Long userId, @Param("status") Integer status); } diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/GoodsService.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/GoodsService.java index d33e0d5..db2c9b8 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/GoodsService.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/GoodsService.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.Goods; import com.ruoyi.other.vo.GoodsVO; @@ -21,4 +23,12 @@ GoodsVO goodsDetail(Long goodsId); List<Goods> getGoodsListByShopId(Integer shopId); + + void addGoods(Goods goods); + + void updateManageGoods(Goods goods); + + IPage<Goods> getManageGoodsList(Page<Goods> page, Goods goods); + + Goods getManageGoodsDetail(Long goodsId); } diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/ShopService.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/ShopService.java index 4500e50..8729cd7 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/ShopService.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/ShopService.java @@ -1,16 +1,19 @@ package com.ruoyi.other.service; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.other.api.domain.Shop; import com.ruoyi.other.vo.NearbyShopVO; import com.ruoyi.other.vo.ShopDetailVO; +import io.swagger.annotations.ApiParam; +import org.springframework.web.bind.annotation.RequestParam; import java.math.BigDecimal; import java.util.List; /** * <p> - * 服务类 + * 服务类 * </p> * * @author luodangjia @@ -18,8 +21,12 @@ */ public interface ShopService extends IService<Shop> { + IPage<Shop> getShopList(Integer PageNum, Integer pageSize, Shop shop); + List<NearbyShopVO> nearbyShopList(BigDecimal longitude, BigDecimal latitude); ShopDetailVO getShopDetail(Integer shopId, BigDecimal longitude, BigDecimal latitude); + Boolean cheUserByPhone(String phone); + } diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/TechnicianSubscribeService.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/TechnicianSubscribeService.java index af7e292..8b81dc8 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/TechnicianSubscribeService.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/TechnicianSubscribeService.java @@ -21,7 +21,7 @@ /** * 查询用于指定门店的相关预约记录 */ - List<TechnicianSubscribeVO> getTechnicianSubscribeByUserAndShop(Long userId, Long shopId); + List<TechnicianSubscribeVO> getTechnicianSubscribeByUserAndShop(Long shopId, Integer status); IPage<TechnicianSubscribeVO> getTechnicianSubscribeByUser(Page<TechnicianSubscribe> page, Long userId, Integer status); diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java index 7176262..6e1ea7f 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java @@ -1,29 +1,34 @@ 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.account.api.feignClient.AppUserClient; import com.ruoyi.account.api.model.AppUser; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.bean.BeanUtils; import com.ruoyi.common.security.service.TokenService; +import com.ruoyi.order.feignClient.RemoteOrderGoodsClient; +import com.ruoyi.order.vo.Price; import com.ruoyi.other.api.domain.*; import com.ruoyi.other.enums.GoodsStatus; import com.ruoyi.other.mapper.GoodsAreaMapper; import com.ruoyi.other.mapper.GoodsMapper; import com.ruoyi.other.mapper.GoodsShopMapper; import com.ruoyi.other.mapper.ShopMapper; -import com.ruoyi.other.service.GoodsService; -import com.ruoyi.other.service.GoodsVipService; -import com.ruoyi.other.service.VipSettingService; +import com.ruoyi.other.service.*; import com.ruoyi.other.vo.GoodsVO; import com.ruoyi.system.api.model.LoginUser; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; @@ -53,7 +58,15 @@ @Resource private GoodsShopMapper goodsShopMapper; @Resource + private GoodsShopService goodsShopService; + @Resource + private GoodsAppUserService goodsAppUserService; + @Resource private ShopMapper shopMapper; + @Resource + private GoodsAreaService goodsAreaService; + @Resource + private RemoteOrderGoodsClient remoteOrderGoodsClient; @Override public List<GoodsVO> goodsList(Goods search) { @@ -63,11 +76,18 @@ .like(StringUtils.isNotEmpty(search.getName()), Goods::getName, search.getName())); List<GoodsVO> result = new ArrayList<>(); + LoginUser loginUserApplet = tokenService.getLoginUserApplet(); for (Goods goods : goodsList) { GoodsVO goodsVO = new GoodsVO(); BeanUtils.copyBeanProp(goodsVO, goods); goodsVO.setGoodsId(goods.getId()); goodsVO.setGoodsName(goods.getName()); + R<Price> r = remoteOrderGoodsClient.getGoodsPrice(loginUserApplet.getUserid(), goods.getId(), null); + if (R.isSuccess(r)){ + Price price = r.getData(); + goodsVO.setSellingPrice(price.getCash()); + goodsVO.setIntegral(price.getPoint()); + } result.add(goodsVO); } return result; @@ -131,4 +151,87 @@ return goodsMapper.selectListByShopId(shopId, vipSetting.getId()); } + @Override + public IPage<Goods> getManageGoodsList(Page<Goods> page, Goods goods) { + return goodsMapper.selectManageGoodsList(page, goods); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void addGoods(Goods goods) { + goods.setSaleNum(0); + goods.setStatus(GoodsStatus.DOWN.getCode()); + goodsMapper.insert(goods); + + // 指定门店 + Integer appointStore = goods.getAppointStore(); + if (appointStore == 1){ + List<GoodsShop> goodsShopList = goods.getGoodsShopList(); + if (CollectionUtils.isEmpty(goodsShopList)){ + throw new NullPointerException("请选择指定门店"); + } + goodsShopService.saveBatch(goodsShopList); + } + + // 指定用户 + List<GoodsAppUser> goodsAppUserList = goods.getGoodsAppUserList(); + if (!CollectionUtils.isEmpty(goodsAppUserList)){ + goodsAppUserService.saveBatch(goodsAppUserList); + } + + // 会员价格配置 + List<GoodsVip> goodsVipList = goods.getGoodsVipList(); + goodsVipService.saveBatch(goodsVipList); + + // 特殊地区售价设置 + List<GoodsArea> goodsAreaList = goods.getGoodsAreaList(); + if (!CollectionUtils.isEmpty(goodsAreaList)){ + goodsAreaService.saveBatch(goodsAreaList); + } + } + + @Override + public void updateManageGoods(Goods goods) { + goodsMapper.updateById(goods); + // 指定门店 + List<GoodsShop> goodsShopList = goods.getGoodsShopList(); + goodsShopService.updateBatchById(goodsShopList); + + // 指定用户 + List<GoodsAppUser> goodsAppUserList = goods.getGoodsAppUserList(); + goodsAppUserService.updateBatchById(goodsAppUserList); + + // 会员价格配置 + List<GoodsVip> goodsVipList = goods.getGoodsVipList(); + goodsVipService.updateBatchById(goodsVipList); + + // 特殊地区售价设置 + List<GoodsArea> goodsAreaList = goods.getGoodsAreaList(); + goodsAreaService.updateBatchById(goodsAreaList); + } + + @Override + public Goods getManageGoodsDetail(Long goodsId) { + Goods goods = getById(goodsId); + // 指定门店 + List<GoodsShop> goodsShops = goodsShopService.list(new LambdaQueryWrapper<GoodsShop>() + .eq(GoodsShop::getGoodsId, goodsId)); + goods.setGoodsShopList(goodsShops); + + // 指定用户 + List<GoodsAppUser> goodsAppUserList = goodsAppUserService.list(new LambdaQueryWrapper<GoodsAppUser>() + .eq(GoodsAppUser::getGoodsId, goodsId)); + goods.setGoodsAppUserList(goodsAppUserList); + + // 会员价格 + List<GoodsVip> goodsVipList = goodsVipService.list(new LambdaQueryWrapper<GoodsVip>() + .eq(GoodsVip::getGoodsId, goodsId)); + goods.setGoodsVipList(goodsVipList); + + // 特殊地区售价设置 + List<GoodsArea> goodsAreaList = goodsAreaService.list(new LambdaQueryWrapper<GoodsArea>() + .eq(GoodsArea::getGoodsId, goodsId)); + goods.setGoodsAreaList(goodsAreaList); + return goods; + } } diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopServiceImpl.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopServiceImpl.java index de346ca..79ad2ef 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopServiceImpl.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopServiceImpl.java @@ -1,12 +1,17 @@ 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.account.api.feignClient.AppUserClient; +import com.ruoyi.account.api.model.AppUser; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.utils.GeodesyUtil; +import com.ruoyi.other.api.domain.Shop; 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; @@ -35,6 +40,18 @@ private ShopMapper shopMapper; @Resource private ShopScoreService shopScoreService; + @Resource + private AppUserClient appUserClient; + + + @Override + public IPage<Shop> getShopList(Integer PageNum, Integer pageSize, Shop shop) { + Page<Shop> page = new Page<>(); + page.setCurrent(PageNum); + page.setSize(pageSize); + IPage<Shop> shopIPage = shopMapper.selectShopList(page, shop); + return shopIPage; + } @Override public List<NearbyShopVO> nearbyShopList(BigDecimal longitude, BigDecimal latitude) { @@ -83,6 +100,12 @@ return shopDetailVO; } - - + @Override + public Boolean cheUserByPhone(String phone) { + R<AppUser> r = appUserClient.getAppUserByPhone(phone); + if (R.isError(r)){ + return false; + } + return r.getData() != null; + } } diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TechnicianSubscribeServiceImpl.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TechnicianSubscribeServiceImpl.java index de048a9..50f8621 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TechnicianSubscribeServiceImpl.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TechnicianSubscribeServiceImpl.java @@ -11,10 +11,12 @@ import com.ruoyi.other.mapper.TechnicianSubscribeMapper; import com.ruoyi.other.service.TechnicianSubscribeService; import com.ruoyi.other.vo.TechnicianSubscribeVO; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.time.LocalDateTime; +import java.time.ZoneId; import java.util.List; /** @@ -31,10 +33,12 @@ private TechnicianSubscribeMapper technicianSubscribeMapper; @Resource private RemoteOrderGoodsClient orderGoodsClient; + @Resource + private RedisTemplate<String, String> redisTemplate; @Override - public List<TechnicianSubscribeVO> getTechnicianSubscribeByUserAndShop(Long userId, Long shopId) { - return technicianSubscribeMapper.getTechnicianSubscribeByUserAndShop(userId, shopId); + public List<TechnicianSubscribeVO> getTechnicianSubscribeByUserAndShop(Long shopId, Integer status) { + return technicianSubscribeMapper.getTechnicianSubscribeByUserAndShop(shopId,status); } @Override public IPage<TechnicianSubscribeVO> getTechnicianSubscribeByUser(Page<TechnicianSubscribe> page, Long userId, Integer status) { @@ -43,20 +47,17 @@ @Override public void subscribe(TechnicianSubscribe subscribe) { - if (StringUtils.isNotEmpty(subscribe.getIdStr())){ - subscribe.setId(Long.parseLong(subscribe.getIdStr())); - technicianSubscribeMapper.updateById(subscribe); - }else { - Long userId = SecurityUtils.getUserId(); - subscribe.setAppUserId(userId); - subscribe.setStatus(TechnicianStatus.UNSUBSCRIBE.getCode()); - subscribe.setDelFlag(0); - subscribe.setCreateTime(LocalDateTime.now()); - technicianSubscribeMapper.insert(subscribe); - } - if (subscribe.getTechnicianId() != null){ + Long userId = SecurityUtils.getUserId(); + subscribe.setAppUserId(userId); + subscribe.setStatus(TechnicianStatus.UNSUBSCRIBE.getCode()); + subscribe.setDelFlag(0); + subscribe.setCreateTime(LocalDateTime.now()); + technicianSubscribeMapper.insert(subscribe); + if (subscribe.getOrderId() != null){ orderGoodsClient.subscribe(subscribe.getOrderId(), subscribe.getTechnicianId()); } - + LocalDateTime subscribeTime = subscribe.getSubscribeTime(); + long deadlineTimestamp = subscribeTime.atZone(ZoneId.systemDefault()).toEpochSecond(); + redisTemplate.opsForZSet().add("delay_queue:subscribe", subscribe.getId().toString(), deadlineTimestamp); } } diff --git a/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/GoodsMapper.xml b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/GoodsMapper.xml index 3a5b1a3..2991551 100644 --- a/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/GoodsMapper.xml +++ b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/GoodsMapper.xml @@ -16,10 +16,44 @@ t_shop ts LEFT JOIN t_goods_shop tgs ON ts.id = tgs.shop_id LEFT JOIN t_goods tg ON tg.id = tgs.goods_id - where ts.id = #{shopId} + where ts.id = #{shopId} and ts.del_flag = 0 <if test="vip != null"> and FIND_IN_SET(#{vip}, commodity_authority) > 0 </if> ORDER BY tg.sale_num DESC </select> + <select id="selectManageGoodsList" resultType="com.ruoyi.other.api.domain.Goods"> + SELECT + tg.id, + tg.`name`, + tg.type, + tg.goods_category_id, + tgc.`name`, + tg.operating_cost, + tg.shop_cost, + tg.`status` + FROM + t_goods tg + LEFT JOIN t_goods_category tgc ON tg.goods_category_id = tgc.id + <where> + tg.del_flag = 0 + <if test="goods.id != null"> + <if test="goods.id != null"> + and tg.id = #{goods.id} + </if> + <if test="goods.name != null and goods.name != ''"> + and tg.`name` like concat('%',#{goods.name},'%') + </if> + <if test="goods.type != null"> + and tg.type = #{goods.type} + </if> + <if test="goods.goodsCategoryId != null"> + and tg.goodsCategoryId = #{goods.goodsCategoryId} + </if> + <if test="goods.status != null"> + and tg.`status` = #{goods.status} + </if> + </if> + </where> + </select> </mapper> \ No newline at end of file diff --git a/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/SeckillActivityInfoMapper.xml b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/SeckillActivityInfoMapper.xml index 0703c40..9420ce5 100644 --- a/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/SeckillActivityInfoMapper.xml +++ b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/SeckillActivityInfoMapper.xml @@ -16,7 +16,7 @@ t_seckill_activity_info tsai LEFT JOIN t_goods tg ON tsai.good_id = tg.id LEFT JOIN t_goods_seckill tgs ON tgs.seckill_activity_info_id = tsai.id - WHERE tsai.end_time >= NOW() + WHERE tsai.end_time >= NOW() AND tsai.del_flag = 0 <if test="name != null and name != ''"> AND tg.`name` LIKE concat('%',#{goodsName},'%') </if> @@ -44,6 +44,6 @@ t_seckill_activity_info tsai LEFT JOIN t_goods tg ON tsai.good_id = tg.id LEFT JOIN t_goods_seckill tgs ON tgs.seckill_activity_info_id = tsai.id - WHERE tsai.id = #{seckillActivityId} + WHERE tsai.id = #{seckillActivityId} AND tsai.del_flag = 0 </select> </mapper> \ No newline at end of file diff --git a/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/ShopMapper.xml b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/ShopMapper.xml index d73727f..3b93eeb 100644 --- a/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/ShopMapper.xml +++ b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/ShopMapper.xml @@ -53,4 +53,32 @@ ts.longitude, ts.latitude </select> + <select id="selectShopList" resultType="com.ruoyi.other.api.domain.Shop"> + SELECT + ts.id, + ts.`name`, + ts.business_date, + tau.`name` managerName, + ts.phone, + ts.address, + ts.`status` + FROM + `qijisheng_other`.t_shop ts + LEFT JOIN `qijisheng_account`.t_app_user tau ON ts.app_user_id = tau.id + <where> + ts.del_flag = 0 + <if test="shop.name != null and shop.name != ''"> + and ts.name like concat('%',#{shop.name},'%') + </if> + <if test="shop.managerName != null and shop.managerName != ''"> + and tau.name like concat('%',#{shop.managerName},'%') + </if> + <if test="shop.phone != null and shop.phone != ''"> + and ts.phone like concat('%',#{shop.phone},'%') + </if> + <if test="shop.status != null and shop.status != ''"> + and ts.status = #{shop.status} + </if> + </where> + </select> </mapper> \ No newline at end of file diff --git a/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TechnicianSubscribeMapper.xml b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TechnicianSubscribeMapper.xml index ea2c253..48a511d 100644 --- a/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TechnicianSubscribeMapper.xml +++ b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TechnicianSubscribeMapper.xml @@ -4,10 +4,13 @@ <select id="getTechnicianSubscribeByUserAndShop" resultType="com.ruoyi.other.vo.TechnicianSubscribeVO"> SELECT + CAST(tts.id AS CHAR) id, tts.user_address, ts.`name` shopName, ts.address shopAddress, tt.name technicianName, + ts.longitude, + ts.latitude, tts.subscribe_time, tts.service_mode, tts.status @@ -16,10 +19,11 @@ LEFT JOIN t_technician tt ON tts.technician_id = tt.id AND tt.del_flag = 0 LEFT JOIN t_shop ts ON tt.shop_id = ts.id AND ts.del_flag = 0 WHERE - ( (ts.app_user_id = #{userId} AND ts.id = #{shopId}) - OR - (tt.app_user_id = #{userId} AND ts.id = #{shopId})) + ts.id = #{shopId} AND tts.del_flag = 0 + <if test="status != null"> + AND tts.status = #{status} + </if> ORDER BY tts.create_time DESC </select> -- Gitblit v1.7.1