From 2ccdf86ac2599562ca994bc4047ded2d925e8bae Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期五, 29 十一月 2024 16:33:12 +0800
Subject: [PATCH] 开发确认购物车订单逻辑
---
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopClient.java | 26 +
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/OrderActivityInfoController.java | 27 +
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/CouponInfoVo.java | 2
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/UserCouponClient.java | 28 +
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/ConfirmOrder.java | 4
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/ShoppingCartPayment.java | 6
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/LoginVo.java | 2
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/ShoppingCartService.java | 22
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/BaseSettingClientFallbackFactory.java | 22 +
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java | 13
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/BaseSettingController.java | 27 +
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/SystemConfigController.java | 17
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/SystemConfigClient.java | 27 +
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/AjaxResult.java | 45 +
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/UserCouponClientFallbackFactory.java | 26 +
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserAddressController.java | 33 +
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/AppUserService.java | 9
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/OrderActivityInfoClientFallbackFactory.java | 20 +
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/UserCouponService.java | 13
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/SystemConfigClientFallbackFactory.java | 22 +
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/CouponInfoClientFallbackFactory.java | 24 +
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/BaseSettingClient.java | 26 +
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/PaymentUserCoupon.java | 25 +
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/GoodsClientFallbackFactory.java | 5
ruoyi-api/ruoyi-api-other/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports | 7
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/CouponInfoController.java | 25 +
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java | 39 +
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/SeckillActivityInfoClientFallbackFactory.java | 3
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/NearbyReferrerVo.java | 4
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/ConfirmOrderVo.java | 7
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/OrderActivityInfoClient.java | 26 +
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/ShopClientFallbackFactory.java | 20 +
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/UserAddressClientFallbackFactory.java | 23 +
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java | 307 +++++++++++++--
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserCouponServiceImpl.java | 65 +++
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/GoodsClient.java | 8
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/UserAddressClient.java | 25 +
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/MyShoppingCartVo.java | 20
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ShoppingCartController.java | 37 +
ruoyi-api/ruoyi-api-account/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports | 4
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java | 14
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserCouponController.java | 28 +
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsController.java | 13
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/CouponInfoClient.java | 28 +
44 files changed, 1,045 insertions(+), 129 deletions(-)
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/UserAddressClientFallbackFactory.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/UserAddressClientFallbackFactory.java
new file mode 100644
index 0000000..64c54a1
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/UserAddressClientFallbackFactory.java
@@ -0,0 +1,23 @@
+package com.ruoyi.account.api.factory;
+
+import com.ruoyi.account.api.feignClient.UserAddressClient;
+import com.ruoyi.account.api.model.UserAddress;
+import com.ruoyi.common.core.domain.R;
+import org.springframework.cloud.openfeign.FallbackFactory;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/11/29 11:55
+ */
+public class UserAddressClientFallbackFactory implements FallbackFactory<UserAddressClient> {
+ @Override
+ public UserAddressClient create(Throwable cause) {
+ return new UserAddressClient(){
+
+ @Override
+ public R<UserAddress> getDefaultUserAddress(Long userId) {
+ return R.fail("获取用户默认地址失败:" + cause.getMessage());
+ }
+ };
+ }
+}
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/UserCouponClientFallbackFactory.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/UserCouponClientFallbackFactory.java
new file mode 100644
index 0000000..2e8b2dc
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/UserCouponClientFallbackFactory.java
@@ -0,0 +1,26 @@
+package com.ruoyi.account.api.factory;
+
+import com.ruoyi.account.api.feignClient.UserCouponClient;
+import com.ruoyi.account.api.vo.CouponInfoVo;
+import com.ruoyi.account.api.vo.PaymentUserCoupon;
+import com.ruoyi.common.core.domain.R;
+import org.springframework.cloud.openfeign.FallbackFactory;
+
+import java.util.List;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/11/29 14:23
+ */
+public class UserCouponClientFallbackFactory implements FallbackFactory<UserCouponClient> {
+ @Override
+ public UserCouponClient create(Throwable cause) {
+ return new UserCouponClient() {
+
+ @Override
+ public R<List<CouponInfoVo>> getPaymentUserCoupon(PaymentUserCoupon paymentUserCoupon) {
+ return R.fail("根据id获取优惠券数据失败:" + cause.getMessage());
+ }
+ };
+ }
+}
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/UserAddressClient.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/UserAddressClient.java
new file mode 100644
index 0000000..261c662
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/UserAddressClient.java
@@ -0,0 +1,25 @@
+package com.ruoyi.account.api.feignClient;
+
+import com.ruoyi.account.api.factory.UserAddressClientFallbackFactory;
+import com.ruoyi.account.api.model.UserAddress;
+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.RequestParam;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/11/29 11:54
+ */
+@FeignClient(contextId = "UserAddressClient", value = ServiceNameConstants.ACCOUNT_SERVICE, fallbackFactory = UserAddressClientFallbackFactory.class)
+public interface UserAddressClient {
+
+ /**
+ * 获取用户默认地址
+ * @param userId
+ * @return
+ */
+ @PostMapping("/user-address/getDefaultUserAddress")
+ R<UserAddress> getDefaultUserAddress(@RequestParam("userId") Long userId);
+}
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/UserCouponClient.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/UserCouponClient.java
new file mode 100644
index 0000000..8264f94
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/UserCouponClient.java
@@ -0,0 +1,28 @@
+package com.ruoyi.account.api.feignClient;
+
+import com.ruoyi.account.api.factory.UserCouponClientFallbackFactory;
+import com.ruoyi.account.api.vo.CouponInfoVo;
+import com.ruoyi.account.api.vo.PaymentUserCoupon;
+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;
+
+import java.util.List;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/11/29 14:22
+ */
+@FeignClient(contextId = "UserCouponClient", value = ServiceNameConstants.ACCOUNT_SERVICE, fallbackFactory = UserCouponClientFallbackFactory.class)
+public interface UserCouponClient {
+
+ /**
+ * 根据id获取优惠券数据
+ * @param paymentUserCoupon
+ * @return
+ */
+ @PostMapping("/user-coupon/getPaymentUserCoupon")
+ R<List<CouponInfoVo>> getPaymentUserCoupon(@RequestBody PaymentUserCoupon paymentUserCoupon);
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/CouponInfoVo.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/CouponInfoVo.java
similarity index 96%
rename from ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/CouponInfoVo.java
rename to ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/CouponInfoVo.java
index 28a838d..106134c 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/CouponInfoVo.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/CouponInfoVo.java
@@ -1,4 +1,4 @@
-package com.ruoyi.order.vo;
+package com.ruoyi.account.api.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/PaymentUserCoupon.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/PaymentUserCoupon.java
new file mode 100644
index 0000000..a8ad0fe
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/PaymentUserCoupon.java
@@ -0,0 +1,25 @@
+package com.ruoyi.account.api.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/11/29 14:32
+ */
+@Data
+public class PaymentUserCoupon {
+ /**
+ * 用户id
+ */
+ private Long userId;
+ /**
+ * 订单金额
+ */
+ private BigDecimal orderMoney;
+ /**
+ * 商品类型(1=服务,2=实体商品)
+ */
+ private Integer type;
+}
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 332cd6d..975746c 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
@@ -1 +1,3 @@
-com.ruoyi.account.api.factory.AppUserClientFallbackFactory
\ No newline at end of file
+com.ruoyi.account.api.factory.AppUserClientFallbackFactory
+com.ruoyi.account.api.factory.UserAddressClientFallbackFactory
+com.ruoyi.account.api.factory.UserCouponClientFallbackFactory
\ No newline at end of file
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/BaseSettingClientFallbackFactory.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/BaseSettingClientFallbackFactory.java
new file mode 100644
index 0000000..9c26e4f
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/BaseSettingClientFallbackFactory.java
@@ -0,0 +1,22 @@
+package com.ruoyi.other.api.factory;
+
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.other.api.domain.BaseSetting;
+import com.ruoyi.other.api.domain.Shop;
+import com.ruoyi.other.api.feignClient.BaseSettingClient;
+import com.ruoyi.other.api.feignClient.ShopClient;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.cloud.openfeign.FallbackFactory;
+
+@Slf4j
+public class BaseSettingClientFallbackFactory implements FallbackFactory<BaseSettingClient> {
+ @Override
+ public BaseSettingClient create(Throwable cause) {
+ return new BaseSettingClient(){
+ @Override
+ public R<BaseSetting> getBaseSetting(Integer id) {
+ return R.fail("获取基础配置失败:" + cause.getMessage());
+ }
+ };
+ }
+}
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/CouponInfoClientFallbackFactory.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/CouponInfoClientFallbackFactory.java
new file mode 100644
index 0000000..b587851
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/CouponInfoClientFallbackFactory.java
@@ -0,0 +1,24 @@
+package com.ruoyi.other.api.factory;
+
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.other.api.domain.CouponInfo;
+import com.ruoyi.other.api.feignClient.CouponInfoClient;
+import org.springframework.cloud.openfeign.FallbackFactory;
+
+import java.util.List;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/11/29 14:37
+ */
+public class CouponInfoClientFallbackFactory implements FallbackFactory<CouponInfoClient> {
+ @Override
+ public CouponInfoClient create(Throwable cause) {
+ return new CouponInfoClient() {
+ @Override
+ public R<List<CouponInfo>> getCouponInfoList(List<Integer> ids) {
+ return R.fail("根据id集合获取优惠券数据失败:" + cause.getMessage());
+ }
+ };
+ }
+}
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/GoodsClientFallbackFactory.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/GoodsClientFallbackFactory.java
index 110c0a0..1447469 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/GoodsClientFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/GoodsClientFallbackFactory.java
@@ -24,6 +24,11 @@
public R<List<Goods>> getGoodsByType(Integer type) {
return R.fail("根据类型(1=服务商品,2=单品商品)获取商品数据失败:" + cause.getMessage());
}
+
+ @Override
+ public R<Goods> getGoodsById(Integer id) {
+ return R.fail("根据id获取商品详情失败:" + cause.getMessage());
+ }
};
}
}
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/OrderActivityInfoClientFallbackFactory.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/OrderActivityInfoClientFallbackFactory.java
new file mode 100644
index 0000000..99214e9
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/OrderActivityInfoClientFallbackFactory.java
@@ -0,0 +1,20 @@
+package com.ruoyi.other.api.factory;
+
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.other.api.domain.OrderActivityInfo;
+import com.ruoyi.other.api.feignClient.OrderActivityInfoClient;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.cloud.openfeign.FallbackFactory;
+
+@Slf4j
+public class OrderActivityInfoClientFallbackFactory implements FallbackFactory<OrderActivityInfoClient> {
+ @Override
+ public OrderActivityInfoClient create(Throwable cause) {
+ return new OrderActivityInfoClient(){
+ @Override
+ public R<OrderActivityInfo> getNowOrderActivityInfo(Integer vip) {
+ return R.fail("获取当前生效的活动失败:" + cause.getMessage());
+ }
+ };
+ }
+}
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/SeckillActivityInfoClientFallbackFactory.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/SeckillActivityInfoClientFallbackFactory.java
index d15db4b..e54d7a6 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/SeckillActivityInfoClientFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/SeckillActivityInfoClientFallbackFactory.java
@@ -5,9 +5,10 @@
import com.ruoyi.other.api.feignClient.SeckillActivityInfoClient;
import com.ruoyi.other.api.vo.GetSeckillActivityInfo;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.cloud.openfeign.FallbackFactory;
@Slf4j
-public class SeckillActivityInfoClientFallbackFactory implements org.springframework.cloud.openfeign.FallbackFactory<SeckillActivityInfoClient> {
+public class SeckillActivityInfoClientFallbackFactory implements FallbackFactory<SeckillActivityInfoClient> {
@Override
public SeckillActivityInfoClient create(Throwable cause) {
return new SeckillActivityInfoClient(){
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
new file mode 100644
index 0000000..15e3a89
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/ShopClientFallbackFactory.java
@@ -0,0 +1,20 @@
+package com.ruoyi.other.api.factory;
+
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.other.api.domain.Shop;
+import com.ruoyi.other.api.feignClient.ShopClient;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.cloud.openfeign.FallbackFactory;
+
+@Slf4j
+public class ShopClientFallbackFactory implements FallbackFactory<ShopClient> {
+ @Override
+ public ShopClient create(Throwable cause) {
+ return new ShopClient(){
+ @Override
+ public R<Shop> getShopById(Integer id) {
+ return R.fail("根据id获取门店信息失败:" + cause.getMessage());
+ }
+ };
+ }
+}
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/SystemConfigClientFallbackFactory.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/SystemConfigClientFallbackFactory.java
new file mode 100644
index 0000000..7578e37
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/SystemConfigClientFallbackFactory.java
@@ -0,0 +1,22 @@
+package com.ruoyi.other.api.factory;
+
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.other.api.domain.SystemConfig;
+import com.ruoyi.other.api.feignClient.SystemConfigClient;
+import org.springframework.cloud.openfeign.FallbackFactory;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/11/29 15:58
+ */
+public class SystemConfigClientFallbackFactory implements FallbackFactory<SystemConfigClient> {
+ @Override
+ public SystemConfigClient create(Throwable cause) {
+ return new SystemConfigClient() {
+ @Override
+ public R<SystemConfig> getSystemConfig(Integer type) {
+ return R.fail("根据类型获取系统配置失败:" + cause.getMessage());
+ }
+ };
+ }
+}
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/BaseSettingClient.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/BaseSettingClient.java
new file mode 100644
index 0000000..79935d0
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/BaseSettingClient.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.BaseSetting;
+import com.ruoyi.other.api.factory.BaseSettingClientFallbackFactory;
+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/11/29 11:34
+ */
+@FeignClient(contextId = "BaseSettingClient", value = ServiceNameConstants.OTHER_SERVICE, fallbackFactory = BaseSettingClientFallbackFactory.class)
+public interface BaseSettingClient {
+
+
+ /**
+ * 获取基础配置
+ * @param id
+ * @return
+ */
+ @PostMapping("/base-setting/getBaseSetting")
+ R<BaseSetting> getBaseSetting(@RequestParam("id") Integer id);
+}
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/CouponInfoClient.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/CouponInfoClient.java
new file mode 100644
index 0000000..1b447e5
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/CouponInfoClient.java
@@ -0,0 +1,28 @@
+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.CouponInfo;
+import com.ruoyi.other.api.factory.CouponInfoClientFallbackFactory;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/11/29 14:36
+ */
+@FeignClient(contextId = "CouponInfoClient", value = ServiceNameConstants.OTHER_SERVICE, fallbackFactory = CouponInfoClientFallbackFactory.class)
+public interface CouponInfoClient {
+
+
+ /**
+ * 根据id集合获取优惠券数据
+ * @param ids
+ * @return
+ */
+ @PostMapping("/coupon-info/getCouponInfoList")
+ R<List<CouponInfo>> getCouponInfoList(@RequestParam("ids") List<Integer> ids);
+}
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/GoodsClient.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/GoodsClient.java
index f24bb8d..4384c32 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/GoodsClient.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/GoodsClient.java
@@ -26,4 +26,12 @@
@PostMapping("/goods/getGoodsByType")
R<List<Goods>> getGoodsByType(@RequestParam("type") Integer type);
+
+ /**
+ * 根据id获取商品详情
+ * @param id
+ * @return
+ */
+ @PostMapping("/goods/getGoodsById")
+ R<Goods> getGoodsById(@RequestParam("id") Integer id);
}
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/OrderActivityInfoClient.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/OrderActivityInfoClient.java
new file mode 100644
index 0000000..6404f0d
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/OrderActivityInfoClient.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.OrderActivityInfo;
+import com.ruoyi.other.api.factory.OrderActivityInfoClientFallbackFactory;
+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/11/29 10:55
+ */
+@FeignClient(contextId = "OrderActivityInfoClient", value = ServiceNameConstants.ORDER_SERVICE, fallbackFactory = OrderActivityInfoClientFallbackFactory.class)
+public interface OrderActivityInfoClient {
+
+
+ /**
+ * 获取当前生效的活动
+ * @param vip
+ * @return
+ */
+ @PostMapping("/order-activity-info/getNowOrderActivityInfo")
+ R<OrderActivityInfo> getNowOrderActivityInfo(@RequestParam("vip") Integer vip);
+}
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
new file mode 100644
index 0000000..3d35b9a
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopClient.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.Shop;
+import com.ruoyi.other.api.factory.ShopClientFallbackFactory;
+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/11/29 10:28
+ */
+@FeignClient(contextId = "ShopClient", value = ServiceNameConstants.ORDER_SERVICE, fallbackFactory = ShopClientFallbackFactory.class)
+public interface ShopClient {
+
+
+ /**
+ * 根据id获取门店信息
+ * @param id
+ * @return
+ */
+ @PostMapping("/shop/getShopById")
+ R<Shop> getShopById(@RequestParam("id") Integer id);
+}
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/SystemConfigClient.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/SystemConfigClient.java
new file mode 100644
index 0000000..9eff59d
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/SystemConfigClient.java
@@ -0,0 +1,27 @@
+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.SystemConfig;
+import com.ruoyi.other.api.factory.SystemConfigClientFallbackFactory;
+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/11/29 15:58
+ */
+@FeignClient(contextId = "SystemConfigClient", value = ServiceNameConstants.ORDER_SERVICE, fallbackFactory = SystemConfigClientFallbackFactory.class)
+public interface SystemConfigClient {
+
+
+ /**
+ * 根据类型获取系统配置
+ * @param type
+ * @return
+ */
+ @PostMapping("/system-config/getSystemConfig")
+ R<SystemConfig> getSystemConfig(@RequestParam("type") Integer type);
+
+}
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 55fb60b..0c669d2 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
@@ -4,4 +4,9 @@
com.ruoyi.other.api.factory.GoodsVipClientFallbackFactory
com.ruoyi.other.api.factory.SeckillActivityInfoClientFallbackFactory
com.ruoyi.other.api.factory.GoodsBargainPriceClientFallbackFactory
-com.ruoyi.other.api.factory.RemoteVipSettingFallbackFactory
\ No newline at end of file
+com.ruoyi.other.api.factory.RemoteVipSettingFallbackFactory
+com.ruoyi.other.api.factory.ShopClientFallbackFactory
+com.ruoyi.other.api.factory.OrderActivityInfoClientFallbackFactory
+com.ruoyi.other.api.factory.BaseSettingClientFallbackFactory
+com.ruoyi.other.api.factory.CouponInfoClientFallbackFactory
+com.ruoyi.other.api.factory.SystemConfigClientFallbackFactory
\ No newline at end of file
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/AjaxResult.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/AjaxResult.java
index f4e88db..951d83d 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/AjaxResult.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/AjaxResult.java
@@ -4,28 +4,24 @@
import java.util.Objects;
import com.ruoyi.common.core.constant.HttpStatus;
import com.ruoyi.common.core.utils.StringUtils;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
/**
* 操作消息提醒
*
* @author ruoyi
*/
-@ApiModel
-public class AjaxResult<T> extends HashMap {
+public class AjaxResult<T> extends HashMap<String, Object>
+{
+ private static final long serialVersionUID = 1L;
/** 状态码 */
- @ApiModelProperty("状态码")
- private int code;
+ public static final String CODE_TAG = "code";
/** 返回内容 */
- @ApiModelProperty("描述内容")
- private String msg = "";
+ public static final String MSG_TAG = "msg";
/** 数据对象 */
- @ApiModelProperty("结果集")
- private T data;
+ public static final String DATA_TAG = "data";
/**
* 初始化一个新创建的 AjaxResult 对象,使其表示一个空消息。
@@ -42,8 +38,8 @@
*/
public AjaxResult(int code, String msg)
{
- this.code = code;
- this.msg = msg;
+ super.put(CODE_TAG, code);
+ super.put(MSG_TAG, msg);
}
/**
@@ -53,12 +49,12 @@
* @param msg 返回内容
* @param data 数据对象
*/
- public AjaxResult(int code, String msg, T data)
+ public AjaxResult(int code, String msg, Object data)
{
- this.code = code;
- this.msg = msg;
+ super.put(CODE_TAG, code);
+ super.put(MSG_TAG, msg);
if (StringUtils.isNotNull(data)) {
- this.data = data;
+ super.put(DATA_TAG, data);
}
}
@@ -185,7 +181,7 @@
*/
public boolean isSuccess()
{
- return Objects.equals(HttpStatus.SUCCESS, this.code);
+ return Objects.equals(HttpStatus.SUCCESS, this.get(CODE_TAG));
}
/**
@@ -199,4 +195,19 @@
}
+
+
+ /**
+ * 方便链式调用
+ *
+ * @param key
+ * @param value
+ * @return
+ */
+ @Override
+ public AjaxResult put(String key, Object value)
+ {
+ super.put(key, value);
+ return this;
+ }
}
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 c25a157..32e001d 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
@@ -4,8 +4,8 @@
import com.ruoyi.account.api.model.AppUser;
import com.ruoyi.account.service.AppUserService;
import com.ruoyi.account.vo.*;
+import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.controller.BaseController;
-import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.TableDataInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
@@ -39,7 +39,7 @@
@ResponseBody
@PostMapping("/appletLogin")
@ApiOperation(value = "小程序一键登录")
- public AjaxResult<LoginVo> appletLogin(@RequestBody AppletLogin appletLogin){
+ public R<LoginVo> appletLogin(@RequestBody AppletLogin appletLogin){
return appUserService.appletLogin(appletLogin);
}
@@ -47,7 +47,7 @@
@ResponseBody
@PostMapping("/mobileLogin")
@ApiOperation(value = "手机号登录")
- public AjaxResult<LoginVo> mobileLogin(@RequestBody MobileLogin mobileLogin){
+ public R<LoginVo> mobileLogin(@RequestBody MobileLogin mobileLogin){
return appUserService.mobileLogin(mobileLogin);
}
@@ -56,7 +56,7 @@
@ResponseBody
@PostMapping("/getSMSCode")
@ApiOperation(value = "获取短信验证码")
- public AjaxResult getSMSCode(@RequestBody SMSCode smsCode){
+ public R getSMSCode(@RequestBody SMSCode smsCode){
return appUserService.getSMSCode(smsCode);
}
@@ -65,7 +65,7 @@
@ResponseBody
@PostMapping("/registerAccount")
@ApiOperation(value = "注册新账号")
- public AjaxResult<LoginVo> registerAccount(@RequestBody RegisterAccount registerAccount){
+ public R<LoginVo> registerAccount(@RequestBody RegisterAccount registerAccount){
return appUserService.registerAccount(registerAccount);
}
@@ -76,11 +76,11 @@
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "推荐人id", required = true, dataType = "long")
})
- public AjaxResult<String> getReferrer(@PathVariable("id") Long id){
+ public R<String> getReferrer(@PathVariable("id") Long id){
AppUser appUser = appUserService.getById(id);
String phone = appUser.getPhone();
phone = phone.substring(0, 3) + "****" + phone.substring(7);
- return AjaxResult.success(appUser.getName() + "-" + phone);
+ return R.ok(appUser.getName() + "-" + phone);
}
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserAddressController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserAddressController.java
index 0139d23..c0c0621 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserAddressController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserAddressController.java
@@ -1,8 +1,14 @@
package com.ruoyi.account.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ruoyi.account.api.model.UserAddress;
+import com.ruoyi.account.service.UserAddressService;
+import com.ruoyi.common.core.domain.R;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
/**
* <p>
@@ -15,6 +21,29 @@
@RestController
@RequestMapping("/user-address")
public class UserAddressController {
+
+ @Resource
+ private UserAddressService userAddressService;
+
+
+ /**
+ * 获取用户默认地址
+ * @param userId
+ * @return
+ */
+ @ResponseBody
+ @PostMapping("/getDefaultUserAddress")
+ public R<UserAddress> getDefaultUserAddress(@RequestParam("userId") Long userId){
+ List<UserAddress> list = userAddressService.list(new LambdaQueryWrapper<UserAddress>().eq(UserAddress::getAppUserId, userId).eq(UserAddress::getDelFlag, 0));
+ if(list.size() == 0){
+ return R.ok();
+ }
+ UserAddress userAddress = list.stream().filter(s -> s.getIsDefault() == 1).findFirst().get();
+ if(null == userAddress){
+ userAddress = list.get(0);
+ }
+ return R.ok(userAddress);
+ }
}
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserCouponController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserCouponController.java
index 530f38b..5f62eed 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserCouponController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserCouponController.java
@@ -1,9 +1,15 @@
package com.ruoyi.account.controller;
+import com.ruoyi.account.api.vo.CouponInfoVo;
+import com.ruoyi.account.api.vo.PaymentUserCoupon;
+import com.ruoyi.account.service.UserCouponService;
+import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.domain.AjaxResult;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
/**
* <p>
@@ -17,9 +23,21 @@
@RequestMapping("/user-coupon")
public class UserCouponController {
-
-
-
+ @Resource
+ private UserCouponService userCouponService;
+
+
+ /**
+ * 获取支付页面用户优惠券列表数据
+ * @param paymentUserCoupon
+ * @return
+ */
+ @ResponseBody
+ @PostMapping("/getPaymentUserCoupon")
+ public R<List<CouponInfoVo>> getPaymentUserCoupon(@RequestBody PaymentUserCoupon paymentUserCoupon){
+ List<CouponInfoVo> userCoupon = userCouponService.getUserCoupon(paymentUserCoupon.getUserId(), paymentUserCoupon.getOrderMoney(), paymentUserCoupon.getType());
+ return R.ok(userCoupon);
+ }
}
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 b8c6555..96f9fec 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
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.account.api.model.AppUser;
import com.ruoyi.account.vo.*;
+import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.domain.AjaxResult;
import java.util.List;
@@ -23,7 +24,7 @@
* @param appletLogin
* @return
*/
- AjaxResult appletLogin(AppletLogin appletLogin);
+ R appletLogin(AppletLogin appletLogin);
/**
@@ -31,7 +32,7 @@
* @param mobileLogin
* @return
*/
- AjaxResult<LoginVo> mobileLogin(MobileLogin mobileLogin);
+ R<LoginVo> mobileLogin(MobileLogin mobileLogin);
/**
@@ -39,7 +40,7 @@
* @param smsCode
* @return
*/
- AjaxResult getSMSCode(SMSCode smsCode);
+ R getSMSCode(SMSCode smsCode);
/**
@@ -47,7 +48,7 @@
* @param registerAccount
* @return
*/
- AjaxResult<LoginVo> registerAccount(RegisterAccount registerAccount);
+ R<LoginVo> registerAccount(RegisterAccount registerAccount);
/**
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/UserCouponService.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/UserCouponService.java
index 988f9ed..5787042 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/UserCouponService.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/UserCouponService.java
@@ -2,6 +2,11 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.account.api.model.UserCoupon;
+import com.ruoyi.account.api.vo.CouponInfoVo;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.math.BigDecimal;
+import java.util.List;
/**
* <p>
@@ -12,5 +17,11 @@
* @since 2024-11-21
*/
public interface UserCouponService extends IService<UserCoupon> {
-
+
+ /**
+ * 获取用户支付页面的优惠券列表
+ * @param userId
+ * @return
+ */
+ List<CouponInfoVo> getUserCoupon(Long userId, BigDecimal orderMoney, Integer type);
}
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 e85907f..953d74d 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
@@ -7,6 +7,7 @@
import com.ruoyi.account.service.AppUserService;
import com.ruoyi.account.util.weChat.WeChatUtil;
import com.ruoyi.account.vo.*;
+import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.redis.service.RedisService;
import com.ruoyi.common.security.service.TokenService;
@@ -47,12 +48,12 @@
* @return
*/
@Override
- public AjaxResult appletLogin(AppletLogin appletLogin) {
+ public R appletLogin(AppletLogin appletLogin) {
//使用jscode获取微信openid
Map<String, Object> map = weChatUtil.code2Session(appletLogin.getJscode());
Integer errcode = Integer.valueOf(map.get("errcode").toString());
if(0 != errcode){
- return AjaxResult.error(map.get("msg").toString());
+ return R.fail(map.get("msg").toString());
}
String openid = map.get("openid").toString();
//查询用户是否注册,没有注册则跳转到注册页面
@@ -60,11 +61,11 @@
if(null == appUser){
LoginVo loginVo = new LoginVo();
loginVo.setSkipPage(2);
- return AjaxResult.success(loginVo);
+ return R.ok(loginVo);
}
//账户被冻结,给出提示
if(2 == appUser.getStatus()){
- return AjaxResult.error("账户已被冻结,请联系管理员!");
+ return R.fail("账户已被冻结,请联系管理员!");
}
LoginVo loginVo = new LoginVo();
loginVo.setSkipPage(1);
@@ -77,7 +78,7 @@
Map<String, Object> tokenApplet = tokenService.createTokenApplet(loginUser);
loginVo.setToken(tokenApplet.get("access_token").toString());
loginVo.setFailureTime(Long.valueOf(tokenApplet.get("expires_in").toString()));
- return AjaxResult.success(loginVo);
+ return R.ok(loginVo);
}
@@ -87,11 +88,11 @@
* @return
*/
@Override
- public AjaxResult<LoginVo> mobileLogin(MobileLogin mobileLogin) {
+ public R<LoginVo> mobileLogin(MobileLogin mobileLogin) {
//校验验证码
String code = redisService.getCacheObject(mobileLogin.getPhone());
if(null == code || !code.equals(mobileLogin.getCode())){
- return AjaxResult.error("验证码错误");
+ return R.fail("验证码错误");
}
//查询用户是否注册,没有注册则跳转到注册页面
@@ -99,11 +100,11 @@
if(null == appUser){
LoginVo loginVo = new LoginVo();
loginVo.setSkipPage(2);
- return AjaxResult.success(loginVo);
+ return R.ok(loginVo);
}
//账户被冻结,给出提示
if(2 == appUser.getStatus()){
- return AjaxResult.error("账户已被冻结,请联系管理员!");
+ return R.fail("账户已被冻结,请联系管理员!");
}
LoginVo loginVo = new LoginVo();
loginVo.setSkipPage(1);
@@ -116,7 +117,7 @@
Map<String, Object> tokenApplet = tokenService.createTokenApplet(loginUser);
loginVo.setToken(tokenApplet.get("access_token").toString());
loginVo.setFailureTime(Long.valueOf(tokenApplet.get("expires_in").toString()));
- return AjaxResult.success(loginVo);
+ return R.ok(loginVo);
}
@@ -126,7 +127,7 @@
* @return
*/
@Override
- public AjaxResult getSMSCode(SMSCode smsCode) {
+ public R getSMSCode(SMSCode smsCode) {
//校验验证码获取评率(1分钟5次)
String key = smsCode.getType() + "&" + smsCode.getPhone();
Map<String, Object> cacheMap = redisService.getCacheMap(key);
@@ -134,7 +135,7 @@
Integer number = Integer.valueOf(cacheMap.get("number").toString()) + 1;
Long startTime = Long.valueOf(cacheMap.get("startTime").toString());
if(number > 5 && (System.currentTimeMillis() - startTime) < 60000){
- return AjaxResult.error("获取验证码太频繁,请稍后重试!");
+ return R.fail("获取验证码太频繁,请稍后重试!");
}
if(number <= 5){
cacheMap.put("number", number);
@@ -156,7 +157,7 @@
code += Double.valueOf(Math.random() * 10).intValue();
}
//发送短信 todo 待对接短信
- return AjaxResult.success();
+ return R.ok();
}
@@ -166,27 +167,27 @@
* @return
*/
@Override
- public AjaxResult<LoginVo> registerAccount(RegisterAccount registerAccount) {
+ public R<LoginVo> registerAccount(RegisterAccount registerAccount) {
//校验验证码
String code = redisService.getCacheObject(registerAccount.getPhone());
if(null == code || !code.equals(registerAccount.getCode())){
- return AjaxResult.error("验证码错误");
+ return R.fail("验证码错误");
}
//使用jscode获取微信openid
Map<String, Object> map = weChatUtil.code2Session(registerAccount.getJscode());
Integer errcode = Integer.valueOf(map.get("errcode").toString());
if(0 != errcode){
- return AjaxResult.error(map.get("msg").toString());
+ return R.fail(map.get("msg").toString());
}
String openid = map.get("openid").toString();
//查询用户是否注册
AppUser appUser = this.getOne(new LambdaQueryWrapper<AppUser>().eq(AppUser::getWxOpenid, openid).ne(AppUser::getStatus, 3).eq(AppUser::getDelFlag, 0));
if(null != appUser){
- return AjaxResult.error("此微信号已注册,请直接登录!");
+ return R.fail("此微信号已注册,请直接登录!");
}
AppUser appUser1 = this.getOne(new LambdaQueryWrapper<AppUser>().eq(AppUser::getPhone, registerAccount.getPhone()).ne(AppUser::getStatus, 3).eq(AppUser::getDelFlag, 0));
if(null != appUser1){
- return AjaxResult.error("手机号已注册,请直接登录!");
+ return R.fail("手机号已注册,请直接登录!");
}
if(null == appUser){
appUser = new AppUser();
@@ -242,7 +243,7 @@
Map<String, Object> tokenApplet = tokenService.createTokenApplet(loginUser);
loginVo.setToken(tokenApplet.get("access_token").toString());
loginVo.setFailureTime(Long.valueOf(tokenApplet.get("expires_in").toString()));
- return AjaxResult.success(loginVo);
+ return R.ok(loginVo);
}
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserCouponServiceImpl.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserCouponServiceImpl.java
index 607932c..97fa4c6 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserCouponServiceImpl.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserCouponServiceImpl.java
@@ -1,10 +1,21 @@
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.vo.CouponInfoVo;
import com.ruoyi.account.mapper.UserCouponMapper;
import com.ruoyi.account.api.model.UserCoupon;
import com.ruoyi.account.service.UserCouponService;
+import com.ruoyi.other.api.domain.CouponInfo;
+import com.ruoyi.other.api.feignClient.CouponInfoClient;
import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
/**
* <p>
@@ -16,5 +27,57 @@
*/
@Service
public class UserCouponServiceImpl extends ServiceImpl<UserCouponMapper, UserCoupon> implements UserCouponService {
-
+
+ @Resource
+ private CouponInfoClient couponInfoClient;
+
+
+
+ /**
+ * 获取支付页面的优惠券列表数据
+ * @param userId
+ * @param orderMoney
+ * @return
+ */
+ @Override
+ public List<CouponInfoVo> getUserCoupon(Long userId, BigDecimal orderMoney, Integer type) {
+ List<UserCoupon> list = this.list(new LambdaQueryWrapper<UserCoupon>().eq(UserCoupon::getAppUserId, userId).eq(UserCoupon::getDelFlag, 0)
+ .last(" and now() between start_time and end_time"));
+ List<Integer> couponIds = list.stream().map(UserCoupon::getCouponId).collect(Collectors.toList());
+ if(couponIds.size() == 0){
+ return null;
+ }
+ List<CouponInfo> couponInfoList = couponInfoClient.getCouponInfoList(couponIds).getData();
+ //构建返回数据
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+ List<CouponInfoVo> infoVoList = new ArrayList<>();
+ for (UserCoupon userCoupon : list) {
+ CouponInfo couponInfo = couponInfoList.stream().filter(s -> s.getId().equals(userCoupon.getCouponId())).findFirst().get();
+ CouponInfoVo couponInfoVo = new CouponInfoVo();
+ couponInfoVo.setId(userCoupon.getId());
+ couponInfoVo.setName(couponInfo.getCouponName());
+ couponInfoVo.setCouponType(couponInfo.getCouponType());
+ couponInfoVo.setConditionAmount(couponInfo.getConditionAmount());
+ couponInfoVo.setDiscountAmount(couponInfo.getDiscountAmount());
+ couponInfoVo.setMoneyAmount(couponInfo.getMoneyAmount());
+ couponInfoVo.setDiscount(couponInfo.getDiscount());
+ couponInfoVo.setPeriodEndTime(couponInfo.getPeriodStartTime().format(formatter));
+ couponInfoVo.setPeriodEndTime(couponInfo.getPeriodEndTime().format(formatter));
+ couponInfoVo.setAvailable(false);
+ //满减券
+ if(1 == couponInfo.getCouponType() && orderMoney.compareTo(couponInfo.getConditionAmount()) >= 0){
+ couponInfoVo.setAvailable(true);
+ }
+ //代金券和折扣券
+ if(2 == couponInfo.getCouponType() || 3 == couponInfo.getCouponType()){
+ couponInfoVo.setAvailable(true);
+ }
+ //商品券
+ if(4 == couponInfo.getCouponType() && 2 == type){
+ couponInfoVo.setAvailable(true);
+ }
+ infoVoList.add(couponInfoVo);
+ }
+ return infoVoList;
+ }
}
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/LoginVo.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/LoginVo.java
index b69d2be..1e239de 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/LoginVo.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/LoginVo.java
@@ -9,7 +9,7 @@
* @Date 2024/11/25 9:39
*/
@Data
-@ApiModel
+@ApiModel("登录结果")
public class LoginVo {
@ApiModelProperty("token")
private String token;
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/NearbyReferrerVo.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/NearbyReferrerVo.java
index 7377ddb..e598dfa 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/NearbyReferrerVo.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/NearbyReferrerVo.java
@@ -11,7 +11,7 @@
* @Date 2024/11/25 10:42
*/
@Data
-@ApiModel
+@ApiModel("附近推荐人")
public class NearbyReferrerVo {
@ApiModelProperty("id")
private String id;
@@ -21,6 +21,6 @@
private String name;
@ApiModelProperty("会员类型名称")
private String vip;
- @ApiModelProperty("距离(km)")
+ @ApiModelProperty("距离(m)")
private BigDecimal distance;
}
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 aeaa5dc..8b28d1f 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
@@ -4,6 +4,7 @@
import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.TableDataInfo;
+import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.order.service.ShoppingCartService;
import com.ruoyi.order.vo.*;
import io.swagger.annotations.Api;
@@ -22,6 +23,12 @@
@Resource
private ShoppingCartService shoppingCartService;
+
+ @Resource
+ private TokenService tokenService;
+
+
+
@ResponseBody
@@ -47,27 +54,43 @@
@ResponseBody
@PostMapping("/setGoodsNumber")
@ApiOperation(value = "修改购物车数量", tags = {"商城-购物车-小程序"})
- public AjaxResult setGoodsNumber(@RequestBody SetGoodsNumber setGoodsNumber){
+ public R setGoodsNumber(@RequestBody SetGoodsNumber setGoodsNumber){
return shoppingCartService.setGoodsNumber(setGoodsNumber);
}
@ResponseBody
+ @DeleteMapping("/delShoppingCart")
+ @ApiOperation(value = "删除购物车", tags = {"商城-购物车-小程序"})
+ public R delShoppingCart(Long id){
+ Long userid = tokenService.getLoginUserApplet().getUserid();
+ ShoppingCart shoppingCart = shoppingCartService.getById(id);
+ if(!userid.equals(shoppingCart.getAppUserId())){
+ return R.fail("权限不足,不允许此操作");
+ }
+ shoppingCartService.removeById(id);
+ return R.ok();
+ }
+
+
+
+
+
+ @ResponseBody
@PostMapping("/confirmOrder")
@ApiOperation(value = "确定购物车订单", tags = {"商城-购物车-小程序"})
- public AjaxResult<ConfirmOrderVo> confirmOrder(@RequestBody ConfirmOrder confirmOrder){
- // todo 待完善 pu
- return AjaxResult.success();
+ public R<ConfirmOrderVo> confirmOrder(@RequestBody ConfirmOrder confirmOrder){
+ ConfirmOrderVo confirmOrderVo = shoppingCartService.confirmOrder(confirmOrder);
+ return R.ok(confirmOrderVo);
}
@ResponseBody
@PostMapping("/shoppingCartPayment")
@ApiOperation(value = "购物车订单支付", tags = {"商城-购物车-小程序"})
- public AjaxResult<Void> shoppingCartPayment(@RequestBody ShoppingCartPayment shoppingCartPayment){
- // todo 待完善 pu
- return AjaxResult.success();
+ public R<Void> shoppingCartPayment(@RequestBody ShoppingCartPayment shoppingCartPayment){
+ return shoppingCartService.shoppingCartPayment(shoppingCartPayment);
}
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 2e414aa..9d62792 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,9 +1,9 @@
package com.ruoyi.order.service;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.domain.AjaxResult;
-import com.ruoyi.order.vo.MyShoppingCartVo;
-import com.ruoyi.order.vo.SetGoodsNumber;
+import com.ruoyi.order.vo.*;
import model.ShoppingCart;
import org.springframework.web.bind.annotation.RequestBody;
@@ -32,5 +32,21 @@
* @param setGoodsNumber
* @return
*/
- AjaxResult setGoodsNumber(SetGoodsNumber setGoodsNumber);
+ R setGoodsNumber(SetGoodsNumber setGoodsNumber);
+
+
+ /**
+ * 确认购物车订单
+ * @param confirmOrder
+ * @return
+ */
+ ConfirmOrderVo confirmOrder(ConfirmOrder confirmOrder);
+
+
+ /**
+ * 购物车支付操作
+ * @param shoppingCartPayment
+ * @return
+ */
+ R shoppingCartPayment(ShoppingCartPayment shoppingCartPayment);
}
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 1f254ea..a3e1a00 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
@@ -1,26 +1,41 @@
package com.ruoyi.order.service.impl;
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONArray;
+import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.account.api.feignClient.AppUserClient;
+import com.ruoyi.account.api.feignClient.UserAddressClient;
+import com.ruoyi.account.api.feignClient.UserCouponClient;
import com.ruoyi.account.api.model.AppUser;
+import com.ruoyi.account.api.model.UserAddress;
+import com.ruoyi.account.api.vo.CouponInfoVo;
+import com.ruoyi.account.api.vo.PaymentUserCoupon;
+import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.order.mapper.ShoppingCartMapper;
+import com.ruoyi.order.service.OrderGoodService;
+import com.ruoyi.order.service.OrderService;
import com.ruoyi.order.service.ShoppingCartService;
-import com.ruoyi.order.vo.MyShoppingCartVo;
-import com.ruoyi.order.vo.SetGoodsNumber;
+import com.ruoyi.order.vo.*;
import com.ruoyi.other.api.domain.*;
import com.ruoyi.other.api.feignClient.*;
import com.ruoyi.other.api.vo.GetGoodsBargainPrice;
import com.ruoyi.other.api.vo.GetSeckillActivityInfo;
+import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
+import model.Order;
+import model.OrderGood;
import model.ShoppingCart;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
+import java.math.RoundingMode;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@@ -52,6 +67,30 @@
@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;
+
@@ -75,44 +114,8 @@
List<Long> goodsIds = data.stream().map(Goods::getId).collect(Collectors.toList());
//查询符合商品类型的商品数据
List<ShoppingCart> list = this.list(new LambdaQueryWrapper<ShoppingCart>().eq(ShoppingCart::getAppUserId, userid).in(ShoppingCart::getGoodsId, goodsIds));
- List<MyShoppingCartVo> page = new ArrayList<>();
//构建返回数据
- for (ShoppingCart shoppingCart : list) {
- Goods goods = data.stream().filter(s -> s.getId().equals(shoppingCart.getGoodsId())).findFirst().get();
- MyShoppingCartVo vo = new MyShoppingCartVo();
- vo.setId(shoppingCart.getId());
- vo.setHomePicture(goods.getHomePagePicture());
- vo.setName(goods.getName());
-
- //获取支付价格
- Price price = getPrice(appUser, shoppingCart.getGoodsId(), shopId);
- if(null == price){
- //使用商品的基础价格
- price.setCash(1 == goods.getCashPayment() ? goods.getSellingPrice() : null);
- price.setPoint(1 == goods.getPointPayment() ? goods.getIntegral() : null);
- }
- //构建价格展示内容
- String sellingPrice = "";
- if(null != price.getCash() && null != price.getPoint()){
- sellingPrice = price.getCash() + "或" + price.getPoint() + "积分";
- }
- if(null != price.getCash() && null == price.getPoint()){
- sellingPrice = price.getCash() + "";
- }
- if(null == price.getCash() && null != price.getPoint()){
- sellingPrice = price.getPoint() + "积分";
- }
- vo.setSellingPrice(sellingPrice);
- vo.setEndTime(price.getEndTime());
- vo.setOriginalPrice(goods.getOriginalPrice().toString());
- vo.setNumber(shoppingCart.getNumber());
- GoodsShop goodsShop = new GoodsShop();
- goodsShop.setGoodsId(shoppingCart.getGoodsId());
- goodsShop.setShopId(shopId);
- GoodsShop goodsShop1 = goodsShopClient.getGoodsShop(goodsShop).getData();
- vo.setVerifiable(null == goodsShop1 ? false : true);
- page.add(vo);
- }
+ List<MyShoppingCartVo> page = buildDetail(appUser, shopId, list, null);
return page;
}
@@ -157,14 +160,30 @@
}else{
price.setCash(goodsVip.getSellingPrice());
price.setPoint(goodsVip.getIntegral());
+ price.setCashPayment(goodsVip.getCashPayment() == 1 ? true : false);
+ price.setPointPayment(goodsVip.getPointPayment() == 1 ? true : false);
+ price.setEarnSpendingPoints(goodsVip.getEarnSpendingPoints());
}
}else{
price.setCash(goodsArea.getSellingPrice());
price.setPoint(goodsArea.getIntegral());
+ price.setCashPayment(goodsArea.getCashPayment() == 1 ? true : false);
+ price.setPointPayment(goodsArea.getPointPayment() == 1 ? true : false);
+ price.setEarnSpendingPoints(goodsArea.getEarnSpendingPoints());
}
}else{
price.setCash(bargainPriceDetail.getSellingPrice());
price.setPoint(bargainPriceDetail.getIntegral());
+ price.setCashPayment(bargainPriceDetail.getSellingPrice() != null ? true : false);
+ price.setPointPayment(bargainPriceDetail.getIntegral() != null ? true : false);
+ //门店特价,消费积分使用会员等级的消费积分
+ GoodsArea area = new GoodsArea();
+ area.setDistrictsCode(appUser.getDistrictCode());
+ area.setCityCode(appUser.getCityCode());
+ area.setProvinceCode(appUser.getProvinceCode());
+ area.setVip(appUser.getVipId());
+ GoodsArea goodsArea = goodsAreaClient.getGoodsArea(area).getData();
+ price.setEarnSpendingPoints(goodsArea.getEarnSpendingPoints());
}
}else{
//构建价格数据
@@ -178,7 +197,10 @@
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.setEndTime(goodsSeckill.getEndTime());
+ price.setEarnSpendingPoints(goodsSeckill.getEarnSpendingPoints());
}
return price;
}
@@ -198,6 +220,18 @@
* 获取结束时间
*/
private Long endTime;
+ /**
+ * 现金支付
+ */
+ private Boolean cashPayment;
+ /**
+ * 积分支付
+ */
+ private Boolean pointPayment;
+ /**
+ * 可获得消费积分
+ */
+ private Integer earnSpendingPoints;
}
@@ -215,15 +249,204 @@
* @return
*/
@Override
- public AjaxResult setGoodsNumber(SetGoodsNumber setGoodsNumber) {
+ public R setGoodsNumber(SetGoodsNumber setGoodsNumber) {
if(0 >= setGoodsNumber.getNumber()){
- return AjaxResult.error("修改数量不能小于等于0");
+ return R.fail("修改数量不能小于等于0");
}
ShoppingCart shoppingCart = this.getById(setGoodsNumber.getId());
+ Goods goods = goodsClient.getGoodsById(shoppingCart.getGoodsId()).getData();
+ if(null != goods.getPurchaseLimit() && -1 != goods.getPurchaseLimit() && goods.getPurchaseLimit() < setGoodsNumber.getNumber()){
+ return R.fail("修改数量不能大于限购数量");
+ }
if(null != shoppingCart){
shoppingCart.setNumber(setGoodsNumber.getNumber());
this.updateById(shoppingCart);
}
- return AjaxResult.success();
+ return R.ok();
+ }
+
+
+ /**
+ * 确认购物车订单
+ * @param confirmOrder
+ * @return
+ */
+ @Override
+ public ConfirmOrderVo confirmOrder(ConfirmOrder confirmOrder) {
+ Long userid = tokenService.getLoginUserApplet().getUserid();
+ AppUser appUser = appUserClient.getAppUserById(userid);
+ Integer shopId = confirmOrder.getShopId();
+ Shop shop = shopClient.getShopById(shopId).getData();
+ String goodsJson = confirmOrder.getGoodsJson();
+ List<Long> ids = new ArrayList<>();
+ JSONArray objects = JSON.parseArray(goodsJson);
+ for (int i = 0; i < objects.size(); i++) {
+ Long id = objects.getJSONObject(i).getLong("id");
+ ids.add(id);
+ }
+ List<ShoppingCart> list = this.listByIds(ids);
+ ConfirmOrderVo confirmOrderVo = new ConfirmOrderVo();
+ //构建商品明细列表
+ List<MyShoppingCartVo> goodsList = buildDetail(appUser, shopId, list, objects);
+ confirmOrderVo.setGoodsList(goodsList);
+ confirmOrderVo.setShopId(confirmOrder.getShopId());
+ confirmOrderVo.setShopName(shop.getName());
+ //现金支付
+ if(confirmOrder.getPaymentType() == 1){
+ BigDecimal bigDecimal = goodsList.stream().map(MyShoppingCartVo::getCash).reduce(BigDecimal::add).get();
+ confirmOrderVo.setOrderMoney(bigDecimal);
+ }else{
+ int sum = goodsList.stream().mapToInt(MyShoppingCartVo::getPoint).sum();
+ confirmOrderVo.setOrderPoint(sum);
+ }
+ //查询当前是否有订单活动
+ OrderActivityInfo orderActivityInfo = orderActivityInfoClient.getNowOrderActivityInfo(appUser.getVipId()).getData();
+ BigDecimal orderMoney = confirmOrderVo.getOrderMoney();
+ BigDecimal paymentMoney = orderMoney;
+ //满XX才打折,只有现金才能优惠
+ if(null != orderActivityInfo && confirmOrder.getPaymentType() == 1 && orderActivityInfo.getConditionAmount().compareTo(orderMoney) <= 0){
+ confirmOrderVo.setActivityName(orderActivityInfo.getActivityName());
+ paymentMoney = orderActivityInfo.getDiscount().divide(new BigDecimal(10)).multiply(orderMoney);
+ confirmOrderVo.setDiscountAmount(orderMoney.subtract(paymentMoney).setScale(2, RoundingMode.HALF_EVEN));
+ }
+ BaseSetting baseSetting = baseSettingClient.getBaseSetting(4).getData();
+ confirmOrderVo.setUseSimultaneously(baseSetting.getContent().equals("1") ? true : false);
+ int earnPoint = goodsList.stream().mapToInt(MyShoppingCartVo::getEarnSpendingPoints).sum();
+ confirmOrderVo.setEarnPoint(earnPoint);
+ //支付金额,订单金额-订单优惠
+ confirmOrderVo.setPayMoney(paymentMoney);
+ confirmOrderVo.setResidualPoint(appUser.getLavePoint().intValue());
+ //获取默认收货地址
+ UserAddress userAddress = userAddressClient.getDefaultUserAddress(userid).getData();
+ confirmOrderVo.setUserAddress(userAddress);
+ confirmOrderVo.setPaymentType(confirmOrder.getPaymentType());
+ //获取用户优惠券,用户全部优惠券,不能使用的需要标识出来置灰展示
+ PaymentUserCoupon paymentUserCoupon = new PaymentUserCoupon();
+ paymentUserCoupon.setUserId(userid);
+ paymentUserCoupon.setOrderMoney(orderMoney);
+ paymentUserCoupon.setType(confirmOrder.getType());
+ List<CouponInfoVo> data = userCouponClient.getPaymentUserCoupon(paymentUserCoupon).getData();
+ confirmOrderVo.setCoupon(data);
+ //获取快递策略
+ SystemConfig systemConfig = systemConfigClient.getSystemConfig(3).getData();
+ JSONObject jsonObject = JSON.parseObject(systemConfig.getContent());
+ confirmOrderVo.setExpressFee(jsonObject.getBigDecimal("expressFee"));
+ List<Integer> vip = jsonObject.getJSONArray("vip").toList(Integer.class);
+ //包邮条件(所有会员或者满足条件的会员)
+ if(vip.get(0) == -1 || vip.contains(appUser.getVipId())){
+ if(confirmOrder.getPaymentType() == 1){
+ //现金支付,支付金额满足包邮条件
+ BigDecimal cash = jsonObject.getBigDecimal("cash");
+ if(confirmOrderVo.getPayMoney().compareTo(cash) >= 0){
+ confirmOrderVo.setExpressFee(BigDecimal.ZERO);
+ }
+ }else{
+ //积分支付,支付积分是否满足包邮条件
+ Integer point = jsonObject.getInteger("point");
+ if(confirmOrderVo.getOrderPoint().compareTo(point) >= 0){
+ confirmOrderVo.setExpressFee(BigDecimal.ZERO);
+ }
+ }
+ }
+ return confirmOrderVo;
+ }
+
+
+ /**
+ * 构建购物车商品列表
+ * @param appUser
+ * @param shopId
+ * @param list
+ * @param objects
+ * @return
+ */
+ private List<MyShoppingCartVo> buildDetail(AppUser appUser, Integer shopId, List<ShoppingCart> list, JSONArray objects){
+ List<MyShoppingCartVo> page = new ArrayList<>();
+ for (ShoppingCart shoppingCart : list) {
+ Goods goods = goodsClient.getGoodsById(shoppingCart.getGoodsId()).getData();
+ MyShoppingCartVo vo = new MyShoppingCartVo();
+ vo.setId(shoppingCart.getId());
+ vo.setHomePicture(goods.getHomePagePicture());
+ vo.setName(goods.getName());
+ int num = shoppingCart.getNumber();
+ if(null != objects){
+ for (int i = 0; i < objects.size(); i++) {
+ Long id = objects.getJSONObject(i).getLong("id");
+ if(id.equals(shoppingCart.getId())){
+ num = objects.getJSONObject(i).getInteger("num");
+ break;
+ }
+ }
+ }
+ //获取支付价格
+ Price price = getPrice(appUser, shoppingCart.getGoodsId(), shopId);
+ if(null == price){
+ //使用商品的基础价格
+ 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);
+ }
+ vo.setCash(price.getCash());
+ vo.setPoint(price.getPoint());
+ vo.setCashPayment(price.getCashPayment());
+ vo.setPointPayment(price.getPointPayment());
+ vo.setEndTime(price.getEndTime());
+ vo.setOriginalPrice(goods.getOriginalPrice().toString());
+ vo.setNumber(num);
+ GoodsShop goodsShop = new GoodsShop();
+ goodsShop.setGoodsId(shoppingCart.getGoodsId());
+ goodsShop.setShopId(shopId);
+ GoodsShop goodsShop1 = goodsShopClient.getGoodsShop(goodsShop).getData();
+ vo.setVerifiable(null == goodsShop1 ? false : true);
+ //判断当前数量是否已经超出限购数量(需要计算已经购买的数量)
+ if(null == goods.getPurchaseLimit() || -1 == goods.getPurchaseLimit()){
+ vo.setPurchaseLimit(false);
+ }else{
+ List<Order> orders = orderService.list(new LambdaQueryWrapper<Order>().eq(Order::getAppUserId, appUser.getId()).eq(Order::getDelFlag, 0).in(Order::getOrderStatus, Arrays.asList(4, 8)));
+ List<Long> orderIds = orders.stream().map(Order::getId).collect(Collectors.toList());
+ int sum = 0;
+ if(orderIds.size() > 0){
+ List<OrderGood> orderGoodList = orderGoodService.list(new LambdaQueryWrapper<OrderGood>().in(OrderGood::getOrderId, orderIds)
+ .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.setEarnSpendingPoints(price.getEarnSpendingPoints());
+ vo.setDistributionMode(goods.getDistributionMode());
+ page.add(vo);
+ }
+ return page;
+ }
+
+
+ /**
+ * 购物车支付操作
+ * @param shoppingCartPayment
+ * @return
+ */
+ @Override
+ public R shoppingCartPayment(ShoppingCartPayment shoppingCartPayment) {
+ Long userid = tokenService.getLoginUserApplet().getUserid();
+ AppUser appUser = appUserClient.getAppUserById(userid);
+ Integer shopId = shoppingCartPayment.getShopId();
+ Shop shop = shopClient.getShopById(shopId).getData();
+ String goodsJson = shoppingCartPayment.getGoodsJson();
+ List<Long> ids = new ArrayList<>();
+ JSONArray objects = JSON.parseArray(goodsJson);
+ for (int i = 0; i < objects.size(); i++) {
+ Long id = objects.getJSONObject(i).getLong("id");
+ ids.add(id);
+ }
+ List<ShoppingCart> list = this.listByIds(ids);
+ ConfirmOrderVo confirmOrderVo = new ConfirmOrderVo();
+ //构建商品明细列表
+ List<MyShoppingCartVo> goodsList = buildDetail(appUser, shopId, list, objects);
+
+
+
+
+ return null;
}
}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/ConfirmOrder.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/ConfirmOrder.java
index 7382984..b68c2f0 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/ConfirmOrder.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/ConfirmOrder.java
@@ -11,10 +11,12 @@
@Data
@ApiModel
public class ConfirmOrder {
- @ApiModelProperty(value = "购物商品id JSON", required = true)
+ @ApiModelProperty(value = "购物车数据id,数量 JSON[{id:1212,num:2}]", required = true)
private String goodsJson;
@ApiModelProperty(value = "支付方式(1=现金,2=积分)", required = true)
private Integer paymentType;
@ApiModelProperty(value = "核销门店id", required = true)
private Integer shopId;
+ @ApiModelProperty(value = "商品类型(1=服务商品,2=单品商品)", required = true)
+ private Integer type;
}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/ConfirmOrderVo.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/ConfirmOrderVo.java
index f48ea43..c3c17a6 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/ConfirmOrderVo.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/ConfirmOrderVo.java
@@ -1,6 +1,7 @@
package com.ruoyi.order.vo;
import com.ruoyi.account.api.model.UserAddress;
+import com.ruoyi.account.api.vo.CouponInfoVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -31,14 +32,18 @@
private Integer earnPoint;
@ApiModelProperty("支付金额")
private BigDecimal payMoney;
- @ApiModelProperty("订单总金额")
+ @ApiModelProperty("订单总积分")
private Integer orderPoint;
@ApiModelProperty("剩余积分")
private Integer residualPoint;
@ApiModelProperty("收货地址")
private UserAddress userAddress;
+ @ApiModelProperty("快递费")
+ private BigDecimal expressFee;
@ApiModelProperty("支付方式(1=现金,2=积分)")
private Integer paymentType;
+ @ApiModelProperty("活动是否可以和优惠券同时使用")
+ private Boolean useSimultaneously;
@ApiModelProperty("优惠券列表")
private List<CouponInfoVo> coupon;
}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/MyShoppingCartVo.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/MyShoppingCartVo.java
index bc3d266..defd541 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/MyShoppingCartVo.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/MyShoppingCartVo.java
@@ -4,6 +4,8 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
+import java.math.BigDecimal;
+
/**
* @author zhibing.pu
* @Date 2024/11/25 11:51
@@ -17,8 +19,10 @@
private String homePicture;
@ApiModelProperty("商品名称")
private String name;
- @ApiModelProperty("售价")
- private String sellingPrice;
+ @ApiModelProperty("售价现金")
+ private BigDecimal cash;
+ @ApiModelProperty("售价积分")
+ private Integer point;
@ApiModelProperty("原价")
private String originalPrice;
@ApiModelProperty("购买数量")
@@ -27,4 +31,16 @@
private Long endTime;
@ApiModelProperty("是否可核销(0=否,1=是)")
private Boolean verifiable;
+ @ApiModelProperty("是否超出限购数量")
+ private Boolean purchaseLimit;
+ @ApiModelProperty("现金支付")
+ private Boolean cashPayment;
+ @ApiModelProperty("积分支付")
+ private Boolean pointPayment;
+ @ApiModelProperty("配送方式(1=自提,2=快递)")
+ private Integer distributionMode;
+ /**
+ * 可获得消费积分
+ */
+ private Integer earnSpendingPoints;
}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/ShoppingCartPayment.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/ShoppingCartPayment.java
index 02db9f0..268ac4c 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/ShoppingCartPayment.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/ShoppingCartPayment.java
@@ -11,7 +11,7 @@
@Data
@ApiModel
public class ShoppingCartPayment {
- @ApiModelProperty(value = "购物商品id JSON", required = true)
+ @ApiModelProperty(value = "购物车数据id,数量 JSON[{id:1212,num:2}]", required = true)
private String goodsJson;
@ApiModelProperty(value = "支付方式(1=现金,2=积分)", required = true)
private Integer paymentType;
@@ -19,4 +19,8 @@
private Integer shopId;
@ApiModelProperty(value = "优惠券id", required = false)
private String userCouponId;
+ @ApiModelProperty(value = "配送方式(1=自提,2=快递)", required = false)
+ private Integer distributionMode;
+ @ApiModelProperty(value = "配送地址id", required = false)
+ private Integer userAddressId;
}
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 32ea9cf..7f360cb 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,8 +1,12 @@
package com.ruoyi.other.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.other.api.domain.BaseSetting;
+import com.ruoyi.other.service.BaseSettingService;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
/**
* <p>
@@ -16,5 +20,24 @@
@RequestMapping("/base-setting")
public class BaseSettingController {
+ @Resource
+ private BaseSettingService baseSettingService;
+
+
+ /**
+ * 获取基础配置
+ * @param id
+ * @return
+ */
+ @ResponseBody
+ @PostMapping("/getBaseSetting")
+ public R<BaseSetting> getBaseSetting(@RequestParam("id") Integer id){
+ BaseSetting baseSetting = baseSettingService.getById(id);
+ return R.ok(baseSetting);
+ }
+
+
+
+
}
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 e63b87b..75f6893 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
@@ -1,8 +1,13 @@
package com.ruoyi.other.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.other.api.domain.CouponInfo;
+import com.ruoyi.other.service.CouponInfoService;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
/**
* <p>
@@ -16,5 +21,21 @@
@RequestMapping("/coupon-info")
public class CouponInfoController {
+ @Resource
+ private CouponInfoService couponInfoService;
+
+
+ /**
+ * 根据id获取优惠券数据
+ * @param ids
+ * @return
+ */
+ @ResponseBody
+ @PostMapping("/getCouponInfoList")
+ public R<List<CouponInfo>> getCouponInfoList(@RequestParam("ids") List<Integer> ids){
+ List<CouponInfo> couponInfos = couponInfoService.listByIds(ids);
+ return R.ok(couponInfos);
+ }
+
}
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 aabd51b..91ea840 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
@@ -74,5 +74,18 @@
return R.ok(list);
}
+
+ /**
+ * 根据id获取商品信息
+ * @param id
+ * @return
+ */
+ @ResponseBody
+ @PostMapping("/getGoodsById")
+ public R<Goods> getGoodsById(@RequestParam("id") Integer id){
+ Goods goods = goodsService.getById(id);
+ return R.ok(goods);
+ }
+
}
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 5ca965f..d94fa02 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
@@ -1,8 +1,13 @@
package com.ruoyi.other.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.other.api.domain.OrderActivityInfo;
+import com.ruoyi.other.service.OrderActivityInfoService;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
/**
* <p>
@@ -16,5 +21,23 @@
@RequestMapping("/order-activity-info")
public class OrderActivityInfoController {
+ @Resource
+ private OrderActivityInfoService orderActivityInfoService;
+
+
+ /**
+ * 获取当前生效的活动
+ * @param vip
+ * @return
+ */
+ @ResponseBody
+ @PostMapping("/getNowOrderActivityInfo")
+ public R<OrderActivityInfo> getNowOrderActivityInfo(@RequestParam("vip") Integer vip){
+ OrderActivityInfo one = orderActivityInfoService.getOne(new LambdaQueryWrapper<OrderActivityInfo>().eq(OrderActivityInfo::getDelFlag, 0)
+ .last(" and now() between start_time and end_time and FIND_IN_SET(" + vip + ", vip_ids) limit 0, 1"));
+ return R.ok(one);
+ }
+
+
}
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 b4cb27a..9ff7b15 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
@@ -93,5 +93,18 @@
// todo 待完善 pu
return R.ok();
}
+
+
+ /**
+ * 根据id获取门店信息
+ * @param id
+ * @return
+ */
+ @ResponseBody
+ @PostMapping("/getShopById")
+ public R<Shop> getShopById(@RequestParam("id") Integer id){
+ Shop shop = shopService.getById(id);
+ return R.ok(shop);
+ }
}
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 5971bd0..5ae1bc6 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
@@ -4,9 +4,7 @@
import com.ruoyi.common.core.domain.R;
import com.ruoyi.other.api.domain.SystemConfig;
import com.ruoyi.other.service.SystemConfigService;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -31,5 +29,18 @@
SystemConfig one = systemConfigService.lambdaQuery().eq(SystemConfig::getType, type).last("limit 1").one();
return R.ok(one);
}
+
+
+ /**
+ * 根据类型获取系统配置
+ * @param type
+ * @return
+ */
+ @ResponseBody
+ @PostMapping("/getSystemConfig")
+ public R<SystemConfig> getSystemConfig(@RequestParam("type") Integer type){
+ SystemConfig one = systemConfigService.lambdaQuery().eq(SystemConfig::getType, type).last("limit 1").one();
+ return R.ok(one);
+ }
}
--
Gitblit v1.7.1