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