From 1f9b64476716a6a1de3bcb886bf4e64b123f7523 Mon Sep 17 00:00:00 2001
From: jiangqs <jiangqs>
Date: 星期四, 06 七月 2023 18:28:31 +0800
Subject: [PATCH] 管理台bug和用户端活动商品购买

---
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/RegionServiceImpl.java         |   75 +++
 ruoyi-modules/ruoyi-goods/src/main/resources/mapper/goods/GoodsMapper.xml                                    |   37 +
 ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml                                    |   22 
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/goods/GoodsService.java                      |   12 
 ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/QuickEntryMapper.xml                             |    4 
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityGoodsServiceImpl.java  |   14 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/AppPanicBuyDto.java                       |   28 +
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/config/RegionService.java                  |    9 
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/CustomConfigServiceImpl.java   |    7 
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/activity/ActivityRecordMapper.java            |   12 
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/pojo/config/Pop.java                        |   17 
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/PopServiceImpl.java            |    8 
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/concole/ActivityController.java           |   32 +
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/member/MemberShopTotal.java            |   14 
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/goods/GoodsMapper.java                        |   12 
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityRecordServiceImpl.java |   14 
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/activity/ActivityService.java                |   11 
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java     |    2 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/OrderGoods.java                    |   18 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/member/MemberSuggest.java              |    2 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopAuthGetVo.java                        |   39 +
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/ActivityGoodsGetDto.java            |   24 +
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/pojo/activity/ActivityRecord.java             |   16 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/shop/ShopAuthentication.java               |   37 +
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java                 |    5 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/ActivityGoodsGetVo.java              |   33 +
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/AppSureOrderDto.java                      |    2 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppPanicBuyVo.java                         |   64 +++
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtShopController.java           |    2 
 ruoyi-modules/ruoyi-goods/src/main/resources/mapper/activity/ActivityRecordMapper.xml                        |    8 
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/miniapp/AppActivityController.java        |    6 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java           |   47 +
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java                      |   19 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/AppActivityGoodsPageDto.java        |    1 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppSureOrderGoodsVo.java                   |    3 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/SecurityConstant.java                 |    5 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppSureOrderVo.java                        |    4 
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/activity/ActivityGoodsService.java           |    6 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/AppPlaceActivityOrderDto.java             |   34 +
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopAuthPageVo.java                       |    3 
 ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml                                       |    1 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteActivityService.java             |   14 
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/goods/GoodsServiceImpl.java             |   57 ++
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteActivityFallbackFactory.java     |    9 
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/AppGoodsInfoGetDto.java                   |    3 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/AppPlaceActivityDto.java                  |   36 +
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/activity/ActivityRecordService.java          |   11 
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java       |   41 +
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/pojo/config/QuickEntry.java                 |   17 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java             |  266 ++++++++++++
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/activity/ActivityGoods.java        |   11 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtShopAuthDto.java                         |   38 +
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/AppSearchGoodsPageDto.java                |    2 
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppGoodsInfoVo.java                        |   17 
 54 files changed, 1,150 insertions(+), 81 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java
index e11de46..db79db6 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java
@@ -74,4 +74,9 @@
 
     String VERIFY_SHOP_ERROR = "该核销码不适用于本店铺";
 
+    String ACTIVITY_NO_START = "活动还未开始";
+
+    String ACTIVITY_END = "活动已经结束";
+
+    String ACTIVITY_GOODS_NULL = "商品已售罄";
 }
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/SecurityConstant.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/SecurityConstant.java
index fc848fd..b84818d 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/SecurityConstant.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/SecurityConstant.java
@@ -35,4 +35,9 @@
      * 省市区列表key
      */
     String REGION_LIST = "REGION_LIST";
+
+    /**
+     * 省市区列表key
+     */
+    String CITY_LIST = "CITY_LIST";
 }
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/ActivityGoodsGetDto.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/ActivityGoodsGetDto.java
new file mode 100644
index 0000000..0f81b1c
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/ActivityGoodsGetDto.java
@@ -0,0 +1,24 @@
+package com.ruoyi.system.api.domain.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @ClassName ActivityGoodsGetDto
+ * @Description TODO
+ * @Author jqs
+ * @Date 2023/7/6 14:36
+ * @Version 1.0
+ */
+@Data
+public class ActivityGoodsGetDto {
+
+    @ApiModelProperty(value = "活动id")
+    private String activityId;
+
+    @ApiModelProperty(value = "商品id")
+    private String goodsId;
+
+    @ApiModelProperty(value = "用户id")
+    private Long userId;
+}
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/AppActivityGoodsPageDto.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/AppActivityGoodsPageDto.java
index e0bde43..9a114e7 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/AppActivityGoodsPageDto.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/AppActivityGoodsPageDto.java
@@ -18,4 +18,5 @@
 
     @ApiModelProperty(value = "商户id",hidden = true)
     private Long shopId;
+
 }
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/activity/ActivityGoods.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/activity/ActivityGoods.java
index b803f94..41c46a3 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/activity/ActivityGoods.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/activity/ActivityGoods.java
@@ -85,6 +85,17 @@
     @TableField("sell_out_time")
     private Date sellOutTime;
 
+    /**
+     * 限购标记0否1是
+     */
+    @TableField("purchase_limitation_flag")
+    private Integer purchaseLimitationFlag;
+    /**
+     * 限购数量
+     */
+    @TableField("limit_number")
+    private Integer limitNumber;
+
     @Override
     protected Serializable pkVal() {
         return this.agId;
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/ActivityGoodsGetVo.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/ActivityGoodsGetVo.java
new file mode 100644
index 0000000..f5a7e28
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/ActivityGoodsGetVo.java
@@ -0,0 +1,33 @@
+package com.ruoyi.system.api.domain.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @ClassName ActivityGoodsGetVo
+ * @Description TODO
+ * @Author jqs
+ * @Date 2023/7/6 16:07
+ * @Version 1.0
+ */
+@Data
+public class ActivityGoodsGetVo {
+
+    @ApiModelProperty(value = "秒杀活动价")
+    private BigDecimal activityPrice;
+
+    @ApiModelProperty(value = "秒杀活动订金")
+    private BigDecimal activitySubscription;
+
+    @ApiModelProperty(value = "活动状态0未开始1进行中2已结束")
+    private Integer activityStatus;
+
+    @ApiModelProperty(value = "限购标记0否1是")
+    private Integer purchaseLimitationFlag;
+
+    @ApiModelProperty(value = "还可以购买数量")
+    private Integer availableBuyNum;
+
+}
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteActivityFallbackFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteActivityFallbackFactory.java
index 1a6855b..2b33d1d 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteActivityFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteActivityFallbackFactory.java
@@ -1,6 +1,8 @@
 package com.ruoyi.system.api.factory;
 
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.system.api.domain.dto.ActivityGoodsGetDto;
+import com.ruoyi.system.api.domain.vo.ActivityGoodsGetVo;
 import com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo;
 import com.ruoyi.system.api.service.RemoteActivityService;
 import com.ruoyi.system.api.domain.poji.activity.ActivityGoods;
@@ -29,7 +31,7 @@
         {
 
             @Override
-            public R<ActivityGoods> getActivityGoods(String goodsId) {
+            public R<ActivityGoods> getActivityGoods(ActivityGoodsGetDto activityGoodsGetDto) {
                 return R.fail("获取活动商品失败:" + throwable.getMessage());
             }
 
@@ -42,6 +44,11 @@
             public R<MgtBulletinBoardVo> boardActivityTotal() {
                 return null;
             }
+
+            @Override
+            public R<ActivityGoodsGetVo> getUserActivityGoods(ActivityGoodsGetDto activityGoodsGetDto) {
+                return R.fail("获取用户活动商品信息失败:" + throwable.getMessage());
+            }
         };
     }
 }
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteActivityService.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteActivityService.java
index e2c1160..3383949 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteActivityService.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteActivityService.java
@@ -2,7 +2,9 @@
 
 import com.ruoyi.common.core.constant.ServiceNameConstants;
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.system.api.domain.dto.ActivityGoodsGetDto;
 import com.ruoyi.system.api.domain.poji.activity.ActivityGoods;
+import com.ruoyi.system.api.domain.vo.ActivityGoodsGetVo;
 import com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo;
 import com.ruoyi.system.api.factory.RemoteActivityFallbackFactory;
 import org.springframework.cloud.openfeign.FeignClient;
@@ -22,7 +24,7 @@
 public interface RemoteActivityService {
 
     @PostMapping("/activity/getActivityGoods")
-    public R<ActivityGoods> getActivityGoods(@RequestBody String goodsId);
+    public R<ActivityGoods> getActivityGoods(@RequestBody ActivityGoodsGetDto activityGoodsGetDto);
 
     /**
      * @description  通过活动id获取参与活动用户id
@@ -43,4 +45,14 @@
      */
     @PostMapping("/activity/boardActivityTotal")
     public R<MgtBulletinBoardVo> boardActivityTotal();
+
+    /**
+     * @description  获取用户活动商品信息
+     * @author  jqs
+     * @date    2023/7/6 16:16
+     * @param activityGoodsGetDto
+     * @return  R<ActivityGoodsGetVo>
+     */
+    @PostMapping("/activity/getUserActivityGoods")
+    public R<ActivityGoodsGetVo> getUserActivityGoods(@RequestBody ActivityGoodsGetDto activityGoodsGetDto);
 }
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/concole/ActivityController.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/concole/ActivityController.java
index 8446f31..4e82059 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/concole/ActivityController.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/concole/ActivityController.java
@@ -3,7 +3,10 @@
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.goods.service.activity.ActivityGoodsService;
 import com.ruoyi.goods.service.activity.ActivityRecordService;
+import com.ruoyi.goods.service.activity.ActivityService;
+import com.ruoyi.system.api.domain.dto.ActivityGoodsGetDto;
 import com.ruoyi.system.api.domain.poji.activity.ActivityGoods;
+import com.ruoyi.system.api.domain.vo.ActivityGoodsGetVo;
 import com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -24,7 +27,8 @@
 @RequestMapping("/activity")
 public class ActivityController {
 
-
+    @Resource
+    private ActivityService activityService;
 
     @Resource
     private ActivityGoodsService activityGoodsService;
@@ -32,10 +36,17 @@
     @Resource
     private ActivityRecordService activityRecordService;
 
+    /**
+     * @description  通过活动id和商品id获取活动商品信息
+     * @author  jqs
+     * @date    2023/7/6 16:16
+     * @param activityGoodsGetDto
+     * @return  R<ActivityGoods>
+     */
     @PostMapping("/getActivityGoods")
-    public R<ActivityGoods> getActivityGoods(@RequestBody String goodsId)
+    public R<ActivityGoods> getActivityGoods(@RequestBody ActivityGoodsGetDto activityGoodsGetDto)
     {
-        ActivityGoods activityGoods = activityGoodsService.getByGoodsId(goodsId);
+        ActivityGoods activityGoods = activityGoodsService.getByGoodsId(activityGoodsGetDto.getActivityId(),activityGoodsGetDto.getGoodsId());
         return R.ok(activityGoods);
     }
 
@@ -65,4 +76,19 @@
         MgtBulletinBoardVo mgtBulletinBoardVo = activityRecordService.boardActivityTotal();
         return R.ok(mgtBulletinBoardVo);
     }
+
+
+    /**
+     * @description  获取用户活动商品信息
+     * @author  jqs
+     * @date    2023/7/6 16:16
+     * @param activityGoodsGetDto
+     * @return  R<ActivityGoodsGetVo>
+     */
+    @PostMapping("/getUserActivityGoods")
+    public R<ActivityGoodsGetVo> getUserActivityGoods(@RequestBody ActivityGoodsGetDto activityGoodsGetDto){
+        ActivityGoodsGetVo activityGoodsGetVo = activityService.getUserActivityGoods(activityGoodsGetDto);
+        return R.ok(activityGoodsGetVo);
+    }
+
 }
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/miniapp/AppActivityController.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/miniapp/AppActivityController.java
index 24600b8..38f6285 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/miniapp/AppActivityController.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/miniapp/AppActivityController.java
@@ -5,9 +5,11 @@
 import com.ruoyi.common.core.exception.ServiceException;
 import com.ruoyi.common.security.utils.SecurityUtils;
 import com.ruoyi.goods.domain.vo.AppActivityPageVo;
+import com.ruoyi.goods.domain.vo.AppSimpleActivityGoodsVo;
 import com.ruoyi.goods.service.activity.ActivityService;
 import com.ruoyi.goods.service.goods.GoodsService;
 import com.ruoyi.system.api.constant.AppErrorConstant;
+import com.ruoyi.system.api.domain.dto.AppActivityGoodsPageDto;
 import com.ruoyi.system.api.domain.dto.AppPageDto;
 import com.ruoyi.system.api.domain.poji.member.Member;
 import com.ruoyi.system.api.service.RemoteMemberService;
@@ -64,7 +66,7 @@
     }
 
 
-    /*@RequestMapping(value = "/pageAppActivityGoods", method = RequestMethod.POST)
+    @RequestMapping(value = "/pageAppActivityGoods", method = RequestMethod.POST)
     @ApiOperation(value = "分页获取活动商品")
     public R<Page<AppSimpleActivityGoodsVo>> pageAppActivityGoods(@RequestBody AppActivityGoodsPageDto appActivityGoodsPageDto) {
         Long userId = SecurityUtils.getUserId();
@@ -82,5 +84,5 @@
         page.setCurrent(appActivityGoodsPageDto.getPageNum());
         List<AppSimpleActivityGoodsVo> appSimpleGoodsVoList = goodsService.pageAppActivityGoods(page,appActivityGoodsPageDto);
         return R.ok(page.setRecords(appSimpleGoodsVoList));
-    }*/
+    }
 }
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/AppGoodsInfoGetDto.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/AppGoodsInfoGetDto.java
index 117392e..0732de9 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/AppGoodsInfoGetDto.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/AppGoodsInfoGetDto.java
@@ -17,6 +17,9 @@
     @ApiModelProperty(value = "是否活动跳转0否1是")
     private Integer activityFlag;
 
+    @ApiModelProperty(value = "活动id")
+    private String activityId;
+
     @ApiModelProperty(value = "商户id",hidden = true)
     private Long shopId;
 
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/AppSearchGoodsPageDto.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/AppSearchGoodsPageDto.java
index 099ff79..ac3c4fd 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/AppSearchGoodsPageDto.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/AppSearchGoodsPageDto.java
@@ -25,6 +25,6 @@
     @ApiModelProperty(value = "定位获取商户id")
     private Long positionShopId;
 
-    @ApiModelProperty(value = "定位获取商户id",hidden = true)
+    @ApiModelProperty(value = "活动id",hidden = true)
     private List<String> activityIdList;
 }
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/pojo/activity/ActivityRecord.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/pojo/activity/ActivityRecord.java
index 2581499..3bf8847 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/pojo/activity/ActivityRecord.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/pojo/activity/ActivityRecord.java
@@ -11,6 +11,7 @@
 
 import java.io.Serializable;
 import java.math.BigDecimal;
+import java.util.Date;
 
 /**
  * <p>
@@ -47,12 +48,12 @@
      * 用户id
      */
     @TableField("user_id")
-    private Integer userId;
+    private Long userId;
     /**
      * 下单时间
      */
     @TableField("order_time")
-    private String orderTime;
+    private Date orderTime;
     /**
      * 下单金额
      */
@@ -65,7 +66,16 @@
     private String orderId;
 
     @TableField("create_time")
-    private String createTime;
+    private Date createTime;
+
+    @TableField("buy_num")
+    private Integer buyNum;
+
+    @TableField("goods_id")
+    private String goodsId;
+
+    @TableField("activity_money")
+    private BigDecimal activityMoney;
 
 
     @Override
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppGoodsInfoVo.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppGoodsInfoVo.java
index 6b7a8fb..d5c8172 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppGoodsInfoVo.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppGoodsInfoVo.java
@@ -17,6 +17,8 @@
 @Data
 public class AppGoodsInfoVo {
 
+
+
     @ApiModelProperty(value = "商品id")
     private String goodsId;
 
@@ -56,12 +58,27 @@
     @ApiModelProperty(value = "是否活动跳转0否1是")
     private Integer activityFlag;
 
+    @ApiModelProperty(value = "活动id")
+    private String activityId;
+
+    @ApiModelProperty(value = "限购标记0否1是")
+    private Integer purchaseLimitationFlag;
+
+    @ApiModelProperty(value = "限购数量")
+    private Integer limitNumber;
+
+    @ApiModelProperty(value = "还可以购买数量")
+    private Integer availableBuyNum;
+
     @ApiModelProperty(value = "商品活动价")
     private BigDecimal activityPrice;
 
     @ApiModelProperty(value = "售罄标记0否1是")
     private Integer sellOutFlag;
 
+    @ApiModelProperty(value = "结束时间戳")
+    private long timestamp;
+
     @ApiModelProperty(value = "活动截止时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date activityDeadline;
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/activity/ActivityRecordMapper.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/activity/ActivityRecordMapper.java
index 25ece18..ce5ab27 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/activity/ActivityRecordMapper.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/activity/ActivityRecordMapper.java
@@ -33,4 +33,16 @@
     * @date 2023/6/18 17:33
     */
     Integer activityUserTotal();
+
+
+    /**
+     * @description  获取用户活动商品购买数量
+     * @author  jqs
+     * @date    2023/7/6 15:55
+     * @param goodsId
+     * @param activityId
+     * @param userId
+     * @return  Integer
+     */
+    Integer getUserActivityGoodsNum(@Param("goodsId")String goodsId,@Param("activityId")String activityId,@Param("userId")Long userId);
 }
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/goods/GoodsMapper.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/goods/GoodsMapper.java
index 01dd35f..c7f548e 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/goods/GoodsMapper.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/goods/GoodsMapper.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.goods.domain.dto.*;
 import com.ruoyi.goods.domain.vo.*;
+import com.ruoyi.system.api.domain.dto.AppActivityGoodsPageDto;
 import com.ruoyi.system.api.domain.poji.goods.Goods;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ruoyi.system.api.domain.vo.MerGoodsPriceListVo;
@@ -128,4 +129,15 @@
      * @return  List<MerGoodsPriceListVo>
      */
     List<MerGoodsPriceListVo> listGoodsPriceByGoodsId(@Param("goodsIds")String goodsIds);
+
+
+    /**
+     * @description  
+     * @author  jqs
+     * @date    2023/7/6 9:51
+     * @param page
+ * @param appActivityGoodsPageDto
+     * @return  List<AppSimpleActivityGoodsVo>
+     */
+    List<AppSimpleActivityGoodsVo> pageAppActivityGoods(Page page, @Param("param") AppActivityGoodsPageDto appActivityGoodsPageDto);
 }
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/activity/ActivityGoodsService.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/activity/ActivityGoodsService.java
index ad26f68..5df3e9f 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/activity/ActivityGoodsService.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/activity/ActivityGoodsService.java
@@ -2,7 +2,9 @@
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.goods.domain.vo.MgtActivityGoodsListVo;
+import com.ruoyi.system.api.domain.dto.ActivityGoodsGetDto;
 import com.ruoyi.system.api.domain.poji.activity.ActivityGoods;
+import com.ruoyi.system.api.domain.vo.ActivityGoodsGetVo;
 
 import java.util.List;
 
@@ -22,7 +24,7 @@
      * @param goodsId
      * @return
      */
-    ActivityGoods getByGoodsId(String goodsId);
+    ActivityGoods getByGoodsId(String activityId,String goodsId);
 
     /**
      * @description  通过活动id删除商品
@@ -40,4 +42,6 @@
      * @return  List<MgtActivityGoodsListVo>
      */
     List<MgtActivityGoodsListVo> listVoByActivityId(String activityId);
+
+
 }
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/activity/ActivityRecordService.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/activity/ActivityRecordService.java
index bba053f..30c1bab 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/activity/ActivityRecordService.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/activity/ActivityRecordService.java
@@ -33,4 +33,15 @@
     * @date 2023/6/18 17:32
     */
     MgtBulletinBoardVo boardActivityTotal();
+
+    /**
+     * @description  获取用户活动商品购买数量
+     * @author  jqs
+     * @date    2023/7/6 15:55
+     * @param goodsId
+     * @param activityId
+     * @param userId
+     * @return  Integer
+     */
+    Integer getUserActivityGoodsNum(String goodsId,String activityId,Long userId);
 }
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/activity/ActivityService.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/activity/ActivityService.java
index e1e26fa..309fe38 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/activity/ActivityService.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/activity/ActivityService.java
@@ -7,7 +7,9 @@
 import com.ruoyi.goods.domain.dto.MgtActivityRecordPageDto;
 import com.ruoyi.goods.domain.pojo.activity.Activity;
 import com.ruoyi.goods.domain.vo.*;
+import com.ruoyi.system.api.domain.dto.ActivityGoodsGetDto;
 import com.ruoyi.system.api.domain.dto.MerPageDto;
+import com.ruoyi.system.api.domain.vo.ActivityGoodsGetVo;
 
 import java.util.List;
 
@@ -112,4 +114,13 @@
      * @return  List<AppActivityPageVo>
      */
     List<AppActivityPageVo> pageAppActivity(Page page, Long shopId);
+
+    /**
+     * @description  获取用户活动商品信息
+     * @author  jqs
+     * @date    2023/7/6 16:18
+     * @param activityGoodsGetDto
+     * @return  ActivityGoodsGetVo
+     */
+    ActivityGoodsGetVo getUserActivityGoods(ActivityGoodsGetDto activityGoodsGetDto);
 }
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/goods/GoodsService.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/goods/GoodsService.java
index 6141796..39c1482 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/goods/GoodsService.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/goods/GoodsService.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.goods.domain.dto.*;
 import com.ruoyi.goods.domain.vo.*;
+import com.ruoyi.system.api.domain.dto.AppActivityGoodsPageDto;
 import com.ruoyi.system.api.domain.poji.goods.Goods;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.system.api.domain.vo.MerGoodsPriceListVo;
@@ -171,4 +172,15 @@
      * @return  List<MerGoodsPriceListVo>
      */
     List<MerGoodsPriceListVo> listGoodsPriceByGoodsId(String goodsIds);
+
+    /**
+     * @description  分页获取活动商品
+     * @author  jqs
+     * @date    2023/7/6 9:40
+     * @param page
+     * @param appActivityGoodsPageDto
+     * @return  List<AppSimpleActivityGoodsVo>
+     */
+    List<AppSimpleActivityGoodsVo> pageAppActivityGoods(Page page, AppActivityGoodsPageDto appActivityGoodsPageDto);
+
 }
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityGoodsServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityGoodsServiceImpl.java
index 33cf898..eb758bb 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityGoodsServiceImpl.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityGoodsServiceImpl.java
@@ -7,9 +7,10 @@
 import com.ruoyi.goods.domain.vo.MgtActivityGoodsListVo;
 import com.ruoyi.goods.mapper.activity.ActivityGoodsMapper;
 import com.ruoyi.goods.service.activity.ActivityGoodsService;
+import com.ruoyi.goods.service.activity.ActivityRecordService;
+import com.ruoyi.system.api.domain.dto.ActivityGoodsGetDto;
 import com.ruoyi.system.api.domain.poji.activity.ActivityGoods;
-
-
+import com.ruoyi.system.api.domain.vo.ActivityGoodsGetVo;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -29,15 +30,18 @@
     @Resource
     private ActivityGoodsMapper activityGoodsMapper;
 
+    @Resource
+    private ActivityRecordService activityRecordService;
+
     /**
      * 通过id获取活动商品
      * @param goodsId
      * @return
      */
     @Override
-    public ActivityGoods getByGoodsId(String goodsId){
+    public ActivityGoods getByGoodsId(String activityId,String goodsId){
         LambdaQueryWrapper<ActivityGoods> queryWrapper = Wrappers.lambdaQuery();
-        queryWrapper.eq(ActivityGoods::getDelFlag, 0).eq(ActivityGoods::getGoodsId, goodsId);
+        queryWrapper.eq(ActivityGoods::getDelFlag, 0).eq(ActivityGoods::getActivityId, activityId).eq(ActivityGoods::getGoodsId, goodsId);
         ActivityGoods activityGoods = this.getOne(queryWrapper,false);
         return activityGoods;
     }
@@ -69,4 +73,6 @@
     public List<MgtActivityGoodsListVo> listVoByActivityId(String activityId){
         return activityGoodsMapper.listVoByActivityId(activityId);
     }
+
+
 }
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityRecordServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityRecordServiceImpl.java
index e1e8505..a58c3d6 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityRecordServiceImpl.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityRecordServiceImpl.java
@@ -50,4 +50,18 @@
         mgtBulletinBoardVo.setActivityUserTotal(activityUserTotal);
         return mgtBulletinBoardVo;
     }
+
+    /**
+     * @description  获取用户活动商品购买数量
+     * @author  jqs
+     * @date    2023/7/6 15:55
+     * @param goodsId
+     * @param activityId
+     * @param userId
+     * @return  Integer
+     */
+    @Override
+    public Integer getUserActivityGoodsNum(String goodsId,String activityId,Long userId){
+        return activityRecordMapper.getUserActivityGoodsNum(goodsId, activityId, userId);
+    }
 }
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java
index b1e9c25..ac9260d 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java
@@ -1,6 +1,7 @@
 package com.ruoyi.goods.service.impl.activity;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.core.exception.ServiceException;
 import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.core.utils.bean.BeanUtils;
@@ -14,14 +15,16 @@
 import com.ruoyi.goods.domain.vo.*;
 import com.ruoyi.goods.mapper.activity.ActivityMapper;
 import com.ruoyi.goods.service.activity.ActivityGoodsService;
+import com.ruoyi.goods.service.activity.ActivityRecordService;
 import com.ruoyi.goods.service.activity.ActivityService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.goods.service.activity.ActivityTotalService;
 import com.ruoyi.system.api.constant.AppErrorConstant;
+import com.ruoyi.system.api.domain.dto.ActivityGoodsGetDto;
 import com.ruoyi.system.api.domain.dto.MerPageDto;
 import com.ruoyi.system.api.domain.dto.MgtBaseBathDto;
 import com.ruoyi.system.api.domain.dto.MgtUserIdByKeywordDto;
 import com.ruoyi.system.api.domain.poji.activity.ActivityGoods;
+import com.ruoyi.system.api.domain.vo.ActivityGoodsGetVo;
 import com.ruoyi.system.api.domain.vo.MgtSimpleMemberVo;
 import com.ruoyi.system.api.domain.vo.MgtSimpleShopVo;
 import com.ruoyi.system.api.domain.vo.MgtUserIdByKeywordVo;
@@ -57,6 +60,9 @@
 
     @Resource
     private ActivityTotalService activityTotalService;
+
+    @Resource
+    private ActivityRecordService activityRecordService;
 
     @Resource
     private RemoteShopService remoteShopService;
@@ -145,6 +151,8 @@
                         activityGoods.setActivityNumber(dto.getActivityNumber());
                         activityGoods.setActivityDeadline(activity.getActivityEndTime());
                         activityGoods.setSellOutFlag(0);
+                        activityGoods.setPurchaseLimitationFlag(activity.getPurchaseLimitationFlag());
+                        activityGoods.setLimitNumber(activity.getLimitNumber());
                         return activityGoods;
                     }
             ).collect(Collectors.toList());
@@ -315,4 +323,35 @@
     public List<AppActivityPageVo> pageAppActivity(Page page, Long shopId){
         return activityMapper.pageAppActivity(page, shopId);
     }
+
+    /**
+     * @description  获取用户活动商品信息
+     * @author  jqs
+     * @date    2023/7/6 16:18
+     * @param activityGoodsGetDto
+     * @return  ActivityGoodsGetVo
+     */
+    @Override
+    public ActivityGoodsGetVo getUserActivityGoods(ActivityGoodsGetDto activityGoodsGetDto){
+        ActivityGoodsGetVo activityGoodsGetVo = new ActivityGoodsGetVo();
+        String activityId = activityGoodsGetDto.getActivityId();
+        String goodsId = activityGoodsGetDto.getGoodsId();
+        Activity activity = this.getById(activityId);
+        ActivityGoods activityGoods = activityGoodsService.getByGoodsId(activityId,goodsId);
+        activityGoodsGetVo.setActivityPrice(activityGoods.getActivityPrice());
+        activityGoodsGetVo.setActivitySubscription(activityGoods.getActivitySubscription());
+        activityGoodsGetVo.setActivityStatus(activity.getActivityStatus());
+        Integer availableBuyNum = activityGoods.getActivityNumber() - activityGoods.getSalesNumber();
+        //限购判断
+        if(activityGoods.getPurchaseLimitationFlag()==1){
+            Integer buyNum = activityRecordService.getUserActivityGoodsNum(goodsId,activityId,activityGoodsGetDto.getUserId());
+            Integer limitBuyNum = activityGoods.getLimitNumber() - buyNum;
+            if(limitBuyNum<availableBuyNum){
+                availableBuyNum = limitBuyNum;
+            }
+        }
+        activityGoodsGetVo.setPurchaseLimitationFlag(activity.getPurchaseLimitationFlag());
+        activityGoodsGetVo.setAvailableBuyNum(availableBuyNum);
+        return activityGoodsGetVo;
+    }
 }
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/goods/GoodsServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/goods/GoodsServiceImpl.java
index d00f006..ff358d3 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/goods/GoodsServiceImpl.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/goods/GoodsServiceImpl.java
@@ -14,12 +14,14 @@
 import com.ruoyi.goods.domain.vo.*;
 import com.ruoyi.goods.mapper.goods.GoodsMapper;
 import com.ruoyi.goods.service.activity.ActivityGoodsService;
+import com.ruoyi.goods.service.activity.ActivityRecordService;
 import com.ruoyi.goods.service.activity.ActivityService;
 import com.ruoyi.goods.service.goods.GoodsFileService;
 import com.ruoyi.goods.service.goods.GoodsService;
 import com.ruoyi.goods.service.goods.GoodsTotalService;
 import com.ruoyi.goods.service.goods.ShopGoodsService;
 import com.ruoyi.system.api.constant.AppErrorConstant;
+import com.ruoyi.system.api.domain.dto.AppActivityGoodsPageDto;
 import com.ruoyi.system.api.domain.poji.activity.ActivityGoods;
 import com.ruoyi.system.api.domain.poji.config.SysClassification;
 import com.ruoyi.system.api.domain.poji.goods.Goods;
@@ -66,6 +68,9 @@
 
     @Resource
     private ActivityService activityService;
+
+    @Resource
+    private ActivityRecordService activityRecordService;
 
     /**
     * @description 获取推荐商品列表
@@ -175,7 +180,7 @@
         }
         //活动商品判断
         if(appGoodsInfoGetDto.getActivityFlag()==1){
-            ActivityGoods activityGoods = activityGoodsService.getByGoodsId(goods.getGoodsId());
+            ActivityGoods activityGoods = activityGoodsService.getByGoodsId(appGoodsInfoGetDto.getActivityId(),goods.getGoodsId());
             //原价取较大值
             if(shopGoods!=null&&goods.getSalesPrice().compareTo(shopGoods.getSalesPrice())>0){
                 appGoodsInfoVo.setSalesPrice(goods.getSalesPrice());
@@ -184,12 +189,26 @@
             appGoodsInfoVo.setActivityPrice(activityGoods.getActivityPrice());
             appGoodsInfoVo.setSalesNum(activityGoods.getSalesNumber());
             appGoodsInfoVo.setActivityDeadline(activityGoods.getActivityDeadline());
+            appGoodsInfoVo.setTimestamp(activityGoods.getActivityDeadline().getTime());
+            Integer availableBuyNum = 0;
             //售罄判断
             if(activityGoods.getActivityNumber().equals(activityGoods.getSalesNumber())){
                 appGoodsInfoVo.setSellOutFlag(1);
             }else{
+                availableBuyNum = activityGoods.getActivityNumber() - activityGoods.getSalesNumber();
                 appGoodsInfoVo.setSellOutFlag(0);
             }
+            appGoodsInfoVo.setActivityId(appGoodsInfoGetDto.getActivityId());
+            //限购判断
+            appGoodsInfoVo.setPurchaseLimitationFlag(activityGoods.getPurchaseLimitationFlag());
+            if(activityGoods.getPurchaseLimitationFlag()==1){
+                Integer buyNum = activityRecordService.getUserActivityGoodsNum(goods.getGoodsId(),activityGoods.getActivityId(),appGoodsInfoGetDto.getUserId());
+                Integer limitBuyNum = activityGoods.getLimitNumber() - buyNum;
+                if(limitBuyNum<availableBuyNum){
+                    availableBuyNum = limitBuyNum;
+                }
+            }
+            appGoodsInfoVo.setAvailableBuyNum(availableBuyNum);
         }else{
             appGoodsInfoVo.setActivityFlag(0);
         }
@@ -293,7 +312,11 @@
      */
     @Override
     public MgtGoodsTotalVo getMgtGoodsTotal(){
-        return goodsMapper.getMgtGoodsTotal();
+        MgtGoodsTotalVo goodsTotalVo = goodsMapper.getMgtGoodsTotal();
+        LambdaQueryWrapper<Goods> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(Goods::getDelFlag,0);
+        goodsTotalVo.setGoodsTotal(this.count(queryWrapper));
+        return goodsTotalVo;
     }
 
     /**
@@ -508,4 +531,34 @@
     public List<MerGoodsPriceListVo> listGoodsPriceByGoodsId(String goodsIds){
         return goodsMapper.listGoodsPriceByGoodsId(goodsIds);
     }
+
+
+    /**
+     * @description  分页获取活动商品
+     * @author  jqs
+     * @date    2023/7/6 9:40
+     * @param page
+     * @param appActivityGoodsPageDto
+     * @return  List<AppSimpleActivityGoodsVo>
+     */
+    @Override
+    public List<AppSimpleActivityGoodsVo> pageAppActivityGoods(Page page, AppActivityGoodsPageDto appActivityGoodsPageDto){
+        // 获取搜索结果的商品列表
+        List<AppSimpleActivityGoodsVo> appSimpleGoodsVoList = goodsMapper.pageAppActivityGoods(page, appActivityGoodsPageDto);
+        // 计算销售百分比和设置时间戳
+        for (AppSimpleActivityGoodsVo appSimpleActivityGoodsVo : appSimpleGoodsVoList) {
+            int activityNumber = appSimpleActivityGoodsVo.getActivityNumber();
+            int salesNumber = appSimpleActivityGoodsVo.getSalesNumber();
+            BigDecimal salesPercent = BigDecimal.ZERO;
+            // 计算销售百分比
+            if (activityNumber != 0) {
+                salesPercent = BigDecimal.valueOf(salesNumber).multiply(BigDecimal.valueOf(100)).divide(BigDecimal.valueOf(activityNumber), 2, BigDecimal.ROUND_HALF_UP);
+            }
+            // 设置销售百分比和时间戳
+            appSimpleActivityGoodsVo.setSalesPercent(salesPercent);
+            appSimpleActivityGoodsVo.setTimestamp(appSimpleActivityGoodsVo.getEndTime().getTime());
+        }
+        // 返回结果
+        return appSimpleGoodsVoList;
+    }
 }
diff --git a/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/activity/ActivityRecordMapper.xml b/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/activity/ActivityRecordMapper.xml
index 0c0ad62..f9884da 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/activity/ActivityRecordMapper.xml
+++ b/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/activity/ActivityRecordMapper.xml
@@ -15,4 +15,12 @@
         FROM t_activity_record
         WHERE del_flag = 0
     </select>
+
+    <select id="getUserActivityGoodsNum" resultType="java.lang.Integer">
+        SELECT
+            IFNULL(SUM(buy_num),0)
+        FROM t_activity_record
+        WHERE del_flag = 0 AND activity_id = #{activityId} AND goods_id = #{goodsId} AND user_id = #{userId}
+
+    </select>
 </mapper>
diff --git a/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/goods/GoodsMapper.xml b/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/goods/GoodsMapper.xml
index b29f661..9d734ed 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/goods/GoodsMapper.xml
+++ b/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/goods/GoodsMapper.xml
@@ -392,10 +392,10 @@
 
     <select id="getMgtGoodsTotal" resultType="com.ruoyi.goods.domain.vo.MgtGoodsTotalVo">
         SELECT
-        COUNT(tgt.goods_id) goodsTotal,
-        IFNULL(tgt.buy_num_count,0) buyNumCount,
-        IFNULL(tgt.buy_money_total,0) buyMoneyTotal
-        FROM t_goods_total tgt
+            SUM(IFNULL(tgt.buy_num_count,0)) buyNumCount,
+            SUM(IFNULL(tgt.buy_money_total,0)) buyMoneyTotal
+        FROM t_goods_total tgt,t_goods tg
+        WHERE tg.goods_id = tgt.goods_id AND tg.del_flag = 0
     </select>
 
     <update id="deleteGoodsClass">
@@ -452,4 +452,33 @@
         LEFT JOIN t_shop_goods tsg ON tsg.goods_id = tg.goods_id AND tsg.del_flag = 0 AND tsg.shop_id = #{shopId}
         WHERE tg.del_flag = 0 AND FIND_IN_SET(tg.goods_id,#{goodsIds}) &gt; 0
     </select>
+
+    <select id="pageAppActivityGoods" resultType="com.ruoyi.goods.domain.vo.AppSimpleActivityGoodsVo">
+        SELECT
+        tg.goods_id goodsId,
+        tg.goods_name goodsName,
+        tg.goods_introduction goodsIntroduction,
+        tg.goods_type goodsType,
+        CASE tg.goods_type
+        WHEN 1 THEN '周期'
+        WHEN 2 THEN '服务'
+        WHEN 3 THEN '体验'
+        WHEN 4 THEN '单品'
+        END goodsTag,
+        GREATEST(tg.sales_price, IFNULL(tsg.sales_price, 0.00)) salesPrice,
+        tag.activity_price activityPrice,
+        tgf.file_url goodsPicture,
+        tg.goods_tags goodsNurses,
+        tag.activity_number activityNumber,
+        tag.sales_number salesNumber,
+        tag.activity_deadline endTime
+        FROM t_activity_goods tag
+        INNER JOIN t_goods tg ON tg.goods_id = tag.goods_id
+        LEFT JOIN t_goods_file tgf ON tg.goods_id = tgf.goods_id AND tgf.del_flag = 0 AND tgf.file_type = 1
+        LEFT JOIN t_shop_goods tsg ON tg.goods_id = tsg.goods_id AND tsg.shop_id = #{param.shopId}
+        WHERE tg.del_flag = 0 AND tg.goods_status = 1 AND tag.activity_id = #{param.activityId}
+        ORDER BY tg.create_time DESC
+    </select>
+
+
 </mapper>
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/member/MemberShopTotal.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/member/MemberShopTotal.java
index b836692..17e9be2 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/member/MemberShopTotal.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/member/MemberShopTotal.java
@@ -1,16 +1,16 @@
 package com.ruoyi.member.domain.pojo.member;
 
-import java.math.BigDecimal;
-import java.util.Date;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
-import java.io.Serializable;
-
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
 
 /**
  * <p>
@@ -42,7 +42,7 @@
      * 商户id
      */
     @TableField("shop_id")
-    private Integer shopId;
+    private Long shopId;
     /**
      * 总积分
      */
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/member/MemberSuggest.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/member/MemberSuggest.java
index f4d20cb..f638059 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/member/MemberSuggest.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/member/MemberSuggest.java
@@ -80,7 +80,7 @@
      * 商户id
      */
     @TableField("shop_id")
-    private Integer shopId;
+    private Long shopId;
     /**
      * 建议类型1.平台2.门店
      */
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java
index a4746a7..27aa8ac 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java
@@ -4,14 +4,9 @@
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.web.controller.BaseController;
 import com.ruoyi.common.security.utils.SecurityUtils;
-import com.ruoyi.order.domain.dto.AppPlaceOrderDto;
-import com.ruoyi.order.domain.dto.AppSureOrderDto;
-import com.ruoyi.order.domain.dto.AppUserOrderPageDto;
+import com.ruoyi.order.domain.dto.*;
 import com.ruoyi.order.domain.pojo.order.Order;
-import com.ruoyi.order.domain.vo.AppPlaceOrderVo;
-import com.ruoyi.order.domain.vo.AppSureOrderVo;
-import com.ruoyi.order.domain.vo.AppUserOrderGetVo;
-import com.ruoyi.order.domain.vo.AppUserOrderPageVo;
+import com.ruoyi.order.domain.vo.*;
 import com.ruoyi.order.service.order.OrderService;
 import com.ruoyi.system.api.domain.dto.AppBaseGetDto;
 import com.ruoyi.system.api.domain.dto.AppMemberBindingDto;
@@ -61,6 +56,21 @@
         return R.ok(appSureOrderVo);
     }
 
+    @RequestMapping(value = "/panicBuyGoods", method = RequestMethod.POST)
+    @ApiOperation(value = "抢购商品")
+    public R<AppPanicBuyVo> panicBuyGoods(@RequestBody AppPanicBuyDto appPanicBuyDto) {
+        Long userId = SecurityUtils.getUserId();
+        if(userId!=null){
+            Member member = memberService.getMember(userId).getData();
+            appPanicBuyDto.setUserId(userId);
+            if(member!=null&&member.getRelationShopId()!=null){
+                appPanicBuyDto.setShopId(member.getRelationShopId());
+            }
+        }
+        AppPanicBuyVo panicBuyGoods = orderService.panicBuyGoods(appPanicBuyDto);
+        return R.ok(panicBuyGoods);
+    }
+
     @RequestMapping(value = "/placeOrder", method = RequestMethod.POST)
     @ApiOperation(value = "创建订单")
     public R<AppPlaceOrderVo> placeOrder(@RequestBody AppPlaceOrderDto appPlaceOrderDto) {
@@ -84,6 +94,29 @@
         return R.ok(appPlaceOrderVo);
     }
 
+    @RequestMapping(value = "/placeActivityOrder", method = RequestMethod.POST)
+    @ApiOperation(value = "创建活动订单")
+    public R<AppPlaceOrderVo> placeActivityOrder(@RequestBody AppPlaceActivityDto appPlaceActivityDto) {
+        Long userId = SecurityUtils.getUserId();
+        if(userId!=null){
+            Member member = memberService.getMember(userId).getData();
+            appPlaceActivityDto.setUserId(userId);
+            if(member!=null&&member.getRelationShopId()!=null){
+                appPlaceActivityDto.setShopId(member.getRelationShopId());
+            }
+            if(member.getBindingFlag()!=1){
+                //绑定商户
+                AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto();
+                appMemberBindingDto.setShopId(appPlaceActivityDto.getShopId());
+                appMemberBindingDto.setUserId(userId);
+                appMemberBindingDto.setBindingFlag(1);
+                memberService.updateMemberBinding(appMemberBindingDto);
+            }
+        }
+        AppPlaceOrderVo appPlaceOrderVo = orderService.placeActivityOrder(appPlaceActivityDto);
+        return R.ok(appPlaceOrderVo);
+    }
+
     @RequestMapping(value = "/pageUserOrder", method = RequestMethod.POST)
     @ApiOperation(value = "分页获取用户订单")
     public R<Page<AppUserOrderPageVo>> pageUserOrder(@RequestBody AppUserOrderPageDto appUserOrderPageDto) {
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/AppPanicBuyDto.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/AppPanicBuyDto.java
new file mode 100644
index 0000000..f654147
--- /dev/null
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/AppPanicBuyDto.java
@@ -0,0 +1,28 @@
+package com.ruoyi.order.domain.dto;
+
+import com.ruoyi.system.api.domain.dto.AppBaseDto;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @ClassName AppPanicBuyDto
+ * @Description TODO
+ * @Author jqs
+ * @Date 2023/7/6 11:30
+ * @Version 1.0
+ */
+@Data
+public class AppPanicBuyDto extends AppBaseDto {
+
+    @ApiModelProperty(value = "shopId",hidden = true)
+    private Long shopId;
+
+    @ApiModelProperty(value = "活动Id")
+    private String activityId;
+
+    @ApiModelProperty(value = "商品id")
+    private String goodsId;
+
+    @ApiModelProperty(value = "购买数量")
+    private Integer buyNum;
+}
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/AppPlaceActivityDto.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/AppPlaceActivityDto.java
new file mode 100644
index 0000000..b8b3a3f
--- /dev/null
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/AppPlaceActivityDto.java
@@ -0,0 +1,36 @@
+package com.ruoyi.order.domain.dto;
+
+import com.ruoyi.system.api.domain.dto.AppBaseDto;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @ClassName AppPlaceActivityDto
+ * @Description TODO
+ * @Author jqs
+ * @Date 2023/7/6 17:50
+ * @Version 1.0
+ */
+@Data
+public class AppPlaceActivityDto extends AppBaseDto {
+
+    @ApiModelProperty(value = "shopId",hidden = true)
+    private Long shopId;
+
+
+    @ApiModelProperty(value = "活动Id")
+    private String activityId;
+
+    @ApiModelProperty(value = "商品id")
+    private String goodsId;
+
+    @ApiModelProperty(value = "购买数量")
+    private Integer buyNum;
+
+    @ApiModelProperty(value = "支付方式1.全款2.订金")
+    private Integer payType;
+
+    @ApiModelProperty(value = "订单备注")
+    private String orderRemark;
+
+}
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/AppPlaceActivityOrderDto.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/AppPlaceActivityOrderDto.java
new file mode 100644
index 0000000..8d9d0c8
--- /dev/null
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/AppPlaceActivityOrderDto.java
@@ -0,0 +1,34 @@
+package com.ruoyi.order.domain.dto;
+
+import com.ruoyi.system.api.domain.dto.AppBaseGetDto;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @ClassName AppPlaceActivityOrderDto
+ * @Description TODO
+ * @Author jqs
+ * @Date 2023/7/6 15:26
+ * @Version 1.0
+ */
+@Data
+public class AppPlaceActivityOrderDto extends AppBaseGetDto {
+
+    @ApiModelProperty(value = "shopId",hidden = true)
+    private Long shopId;
+
+    @ApiModelProperty(value = "支付方式1.全款2.订金")
+    private Integer payType;
+
+    @ApiModelProperty(value = "订单备注")
+    private String orderRemark;
+
+    @ApiModelProperty(value = "商品id")
+    private String goodsId;
+
+    @ApiModelProperty(value = "购买数量")
+    private Integer buyNum;
+
+
+
+}
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/AppSureOrderDto.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/AppSureOrderDto.java
index 45d21f8..78343e8 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/AppSureOrderDto.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/AppSureOrderDto.java
@@ -19,7 +19,7 @@
     @ApiModelProperty(value = "shopId",hidden = true)
     private Long shopId;
 
-    @ApiModelProperty(value = "购物车列表")
+    @ApiModelProperty(value = "购物商品列表")
     List<AppBuyGoodsDto> appBuyGoodsDtoList;
 
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/OrderGoods.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/OrderGoods.java
index 2b1c95c..663c98d 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/OrderGoods.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/OrderGoods.java
@@ -1,15 +1,15 @@
 package com.ruoyi.order.domain.pojo.order;
 
-import java.math.BigDecimal;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
-import java.io.Serializable;
-
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
 
 /**
  * <p>
@@ -88,6 +88,14 @@
     @TableField("goods_type")
     private Integer goodsType;
 
+    @TableField("goods_name")
+    private String goodsName;
+
+    @TableField("goods_picture")
+    private String goodsPicture;
+
+
+
 
     @Override
     protected Serializable pkVal() {
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppPanicBuyVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppPanicBuyVo.java
new file mode 100644
index 0000000..42fa93d
--- /dev/null
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppPanicBuyVo.java
@@ -0,0 +1,64 @@
+package com.ruoyi.order.domain.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @ClassName AppPanicBuyVo
+ * @Description TODO
+ * @Author jqs
+ * @Date 2023/7/6 14:39
+ * @Version 1.0
+ */
+@Data
+public class AppPanicBuyVo {
+
+    @ApiModelProperty(value = "商品总价")
+    private BigDecimal orderGoodsMoney;
+
+    @ApiModelProperty(value = "订单支付订金")
+    private BigDecimal orderPayDeposit;
+
+    @ApiModelProperty(value = "订单支付金额")
+    private BigDecimal orderPayMoney;
+
+    @ApiModelProperty(value = "活动Id")
+    private String activityId;
+
+    @ApiModelProperty(value = "商品id")
+    private String goodsId;
+
+    @ApiModelProperty(value = "商品名称")
+    private String goodsName;
+
+    @ApiModelProperty(value = "商品简介")
+    private String goodsIntroduction;
+
+    @ApiModelProperty(value = "商品类型1周期2服务3体验4单品")
+    private Integer goodsType;
+
+    @ApiModelProperty(value = "商品图片")
+    private String goodsPicture;
+
+    @ApiModelProperty(value = "购买数量")
+    private Integer buyNum;
+
+    @ApiModelProperty(value = "商品售价")
+    private BigDecimal goodsPrice;
+
+    @ApiModelProperty(value = "活动售价")
+    private BigDecimal activityPrice;
+
+    @ApiModelProperty(value = "商品总价")
+    private BigDecimal goodsTotalPrice;
+
+    @ApiModelProperty(value = "商品订金")
+    private BigDecimal goodsDeposit;
+
+    @ApiModelProperty(value = "商品实际价格")
+    private BigDecimal goodsRealPrice;
+
+
+}
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppSureOrderGoodsVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppSureOrderGoodsVo.java
index ec26c47..be5a4a1 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppSureOrderGoodsVo.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppSureOrderGoodsVo.java
@@ -41,6 +41,9 @@
     @ApiModelProperty(value = "商品售价")
     private BigDecimal goodsPrice;
 
+    @ApiModelProperty(value = "活动售价")
+    private BigDecimal activityPrice;
+
     @ApiModelProperty(value = "商品总价")
     private BigDecimal goodsTotalPrice;
 
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppSureOrderVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppSureOrderVo.java
index a13e254..adc9093 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppSureOrderVo.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppSureOrderVo.java
@@ -32,8 +32,4 @@
     @ApiModelProperty(value = "订单商品列表")
     List<AppSureOrderGoodsVo> appSureOrderGoodsVoList;
 
-
-
-
-
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
index c2de81f..bde96b6 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
@@ -83,6 +83,8 @@
     @Resource
     private RemoteCouponService remoteCouponService;
 
+    @Resource
+    private RemoteActivityService remoteActivityService;
 
     /**
      * @description: buyGoods
@@ -135,7 +137,6 @@
             //商品图片
             goodsFile = remoteGoodsService.getGoodsFile(goodsId).getData();
             appSureOrderGoodsVo.setGoodsPicture(goodsFile.getFileUrl());
-            buyNum = appBuyGoodsDto.getBuyNum();
             appSureOrderGoodsVo.setBuyNum(buyNum);
             goodsPrice = goods.getSalesPrice();
             //商户定制价格
@@ -209,6 +210,84 @@
     }
 
     /**
+     * @description  抢购商品
+     * @author  jqs
+     * @date    2023/7/6 11:45
+     * @param appPanicBuyDto
+     * @return  AppSureOrderVo
+     */
+    @Override
+    public AppPanicBuyVo panicBuyGoods(AppPanicBuyDto appPanicBuyDto){
+        Long userId = appPanicBuyDto.getUserId();
+        AppPanicBuyVo appPanicBuyVo = new AppPanicBuyVo();
+        String activityId = appPanicBuyDto.getActivityId();
+        String goodsId = appPanicBuyDto.getGoodsId();
+        Integer buyNum = appPanicBuyDto.getBuyNum();
+        BigDecimal buyNumBig;
+        BigDecimal goodsPrice;
+        BigDecimal goodsTotalPrice;
+        BigDecimal goodsRealPrice;
+        BigDecimal goodsDeposit;
+        BigDecimal goodsActivityPrice;
+        GoodsFile goodsFile;
+        BigDecimal orderGoodsMoney = new BigDecimal("0.00");
+        BigDecimal orderPayDeposit = new BigDecimal("0.00");
+        BigDecimal orderPayMoney = new BigDecimal("0.00");
+        ActivityGoodsGetDto activityGoodsGetDto = new ActivityGoodsGetDto();
+        activityGoodsGetDto.setActivityId(activityId);
+        activityGoodsGetDto.setGoodsId(goodsId);
+        activityGoodsGetDto.setUserId(userId);
+        ActivityGoodsGetVo activityGoodsGetVo = remoteActivityService.getUserActivityGoods(activityGoodsGetDto).getData();
+        if(activityGoodsGetVo.getActivityStatus()==0){
+            throw new ServiceException(AppErrorConstant.ACTIVITY_NO_START);
+        }
+        if(activityGoodsGetVo.getActivityStatus()==2){
+            throw new ServiceException(AppErrorConstant.ACTIVITY_END);
+        }
+        if(activityGoodsGetVo.getAvailableBuyNum()<1){
+            throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_NULL);
+        }
+        Goods goods = remoteGoodsService.getGoods(goodsId).getData();
+        appPanicBuyVo.setGoodsId(goodsId);
+        appPanicBuyVo.setGoodsName(goods.getGoodsName());
+        appPanicBuyVo.setGoodsIntroduction(goods.getGoodsIntroduction());
+        appPanicBuyVo.setGoodsType(goods.getGoodsType());
+        //商品图片
+        goodsFile = remoteGoodsService.getGoodsFile(goodsId).getData();
+        appPanicBuyVo.setGoodsPicture(goodsFile.getFileUrl());
+        appPanicBuyVo.setBuyNum(buyNum);
+        goodsPrice = goods.getSalesPrice();
+        //商户定制价格
+        AppShopGoodsGetDto appShopGoodsGetDto = new AppShopGoodsGetDto();
+        appShopGoodsGetDto.setGoodsId(goods.getGoodsId());
+        appShopGoodsGetDto.setShopId(appPanicBuyDto.getShopId());
+        ShopGoods shopGoods = remoteGoodsService.getShopGoods(appShopGoodsGetDto).getData();
+        if (shopGoods != null) {
+            goodsPrice = shopGoods.getSalesPrice();
+        }
+        appPanicBuyVo.setGoodsPrice(goodsPrice);
+        buyNumBig = BigDecimal.valueOf(buyNum);
+        goodsActivityPrice = activityGoodsGetVo.getActivityPrice();
+        goodsTotalPrice = goodsActivityPrice.multiply(buyNumBig);
+        goodsRealPrice = goodsTotalPrice;
+        appPanicBuyVo.setActivityPrice(goodsActivityPrice);
+        appPanicBuyVo.setGoodsTotalPrice(goodsTotalPrice);
+        appPanicBuyVo.setGoodsRealPrice(goodsRealPrice);
+        goodsDeposit = activityGoodsGetVo.getActivitySubscription();
+        if (goodsDeposit == null) {
+            goodsDeposit = new BigDecimal("0.00");
+        }
+        appPanicBuyVo.setGoodsDeposit(goodsDeposit);
+        orderGoodsMoney = orderGoodsMoney.add(goodsTotalPrice);
+        orderPayDeposit = orderPayDeposit.add(goodsDeposit);
+        orderPayMoney = orderPayMoney.add(goodsRealPrice);
+        appPanicBuyVo.setOrderGoodsMoney(orderGoodsMoney);
+        appPanicBuyVo.setOrderPayDeposit(orderPayDeposit);
+        appPanicBuyVo.setOrderPayMoney(orderPayMoney);
+        return appPanicBuyVo;
+    }
+
+    /**
      * 创建订单
      *
      * @param appPlaceOrderDto
@@ -228,6 +307,7 @@
         Integer goodsNum = 0;
         String memberCouponId;
         Goods goods;
+        GoodsFile goodsFile;
         BigDecimal goodsPrice;
         BigDecimal goodsTotalPrice;
         BigDecimal goodsRealPrice;
@@ -239,7 +319,6 @@
         BigDecimal discountMoney = new BigDecimal("0.00");
         BigDecimal discountPercent;
         BigDecimal goodsDeposit;
-        GoodsFile goodsFile;
         Integer useCoupon;
         BigDecimal orderGoodsMoney = new BigDecimal("0.00");
         BigDecimal couponDiscount = new BigDecimal("0.00");
@@ -334,6 +413,8 @@
             orderGoods.setCycleNumFlag(goods.getCycleNumFlag());
             orderGoods.setServiceNum(serviceNum);
             orderGoods.setGoodsType(goods.getGoodsType());
+            orderGoods.setGoodsName(goods.getGoodsName());
+            orderGoods.setGoodsPicture(goodsFile.getFileUrl());
             orderGoodsService.save(orderGoods);
             //清空购物车
             AppShoppingCartDelDto appShoppingCartDelDto = new AppShoppingCartDelDto();
@@ -398,6 +479,174 @@
 
         return appPlaceOrderVo;
     }
+
+    /**
+     * @description  创建活动订单
+     * @author  jqs
+     * @date    2023/7/6 17:59
+     * @param appPlaceActivityDto
+     * @return  AppPlaceOrderVo
+     */
+    @Override
+    public AppPlaceOrderVo placeActivityOrder( AppPlaceActivityDto appPlaceActivityDto){
+        Long userId = appPlaceActivityDto.getUserId();
+        AppPlaceOrderVo appPlaceOrderVo = new AppPlaceOrderVo();
+        AppSureOrderGoodsVo appSureOrderGoodsVo;
+        String activityId = appPlaceActivityDto.getActivityId();
+        String goodsId = appPlaceActivityDto.getGoodsId();
+        Integer buyNum = appPlaceActivityDto.getBuyNum();
+        BigDecimal buyNumBig;
+        Integer serviceNum;
+        Integer goodsNum = 0;
+        Goods goods;
+        GoodsFile goodsFile;
+        BigDecimal goodsPrice;
+        BigDecimal goodsTotalPrice;
+        BigDecimal goodsRealPrice;
+        BigDecimal discountMoney = new BigDecimal("0.00");
+        BigDecimal discountPercent;
+        BigDecimal goodsDeposit;
+        Integer useCoupon;
+        BigDecimal orderGoodsMoney = new BigDecimal("0.00");
+        BigDecimal couponDiscount = new BigDecimal("0.00");
+        BigDecimal orderPayDeposit = new BigDecimal("0.00");
+        BigDecimal orderPayMoney = new BigDecimal("0.00");
+        ActivityGoodsGetDto activityGoodsGetDto = new ActivityGoodsGetDto();
+        activityGoodsGetDto.setActivityId(activityId);
+        activityGoodsGetDto.setGoodsId(goodsId);
+        activityGoodsGetDto.setUserId(userId);
+        ActivityGoodsGetVo activityGoodsGetVo = remoteActivityService.getUserActivityGoods(activityGoodsGetDto).getData();
+        if(activityGoodsGetVo.getActivityStatus()==0){
+            throw new ServiceException(AppErrorConstant.ACTIVITY_NO_START);
+        }
+        if(activityGoodsGetVo.getActivityStatus()==2){
+            throw new ServiceException(AppErrorConstant.ACTIVITY_END);
+        }
+        if(activityGoodsGetVo.getAvailableBuyNum()<1){
+            throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_NULL);
+        }
+        String orderId = IdUtils.simpleUUID();
+        String orderNo = CodeFactoryUtil.getShopOrderNo();
+        OrderGoods orderGoods;
+        String orderGoodsId;
+        HashSet<String> goodsTypeSet = new HashSet<>();
+        appSureOrderGoodsVo = new AppSureOrderGoodsVo();
+        useCoupon = 0;
+        goodsId = appPlaceActivityDto.getGoodsId();
+        goods = remoteGoodsService.getGoods(goodsId).getData();
+        appSureOrderGoodsVo.setGoodsId(goodsId);
+        appSureOrderGoodsVo.setGoodsName(goods.getGoodsName());
+        appSureOrderGoodsVo.setGoodsIntroduction(goods.getGoodsIntroduction());
+        appSureOrderGoodsVo.setGoodsType(goods.getGoodsType());
+        //商品图片
+        goodsFile = remoteGoodsService.getGoodsFile(goodsId).getData();
+        appSureOrderGoodsVo.setGoodsPicture(goodsFile.getFileUrl());
+        buyNum = appPlaceActivityDto.getBuyNum();
+        appSureOrderGoodsVo.setBuyNum(buyNum);
+        goodsPrice = goods.getSalesPrice();
+        serviceNum = goods.getServiceNum();
+        //活动价格
+        goodsPrice = activityGoodsGetVo.getActivityPrice();
+        appSureOrderGoodsVo.setGoodsPrice(goodsPrice);
+        buyNumBig = BigDecimal.valueOf(buyNum);
+        goodsTotalPrice = goodsPrice.multiply(buyNumBig);
+        goodsRealPrice = goodsTotalPrice;
+        appSureOrderGoodsVo.setUseCoupon(useCoupon);
+        appSureOrderGoodsVo.setGoodsTotalPrice(goodsTotalPrice);
+        appSureOrderGoodsVo.setCouponDiscount(discountMoney);
+        appSureOrderGoodsVo.setGoodsRealPrice(goodsRealPrice);
+        goodsDeposit = goods.getSubscription();
+        if (goodsDeposit == null) {
+            goodsDeposit = new BigDecimal("0.00");
+        }
+        appSureOrderGoodsVo.setGoodsDeposit(goodsDeposit);
+        goodsNum = goodsNum + buyNum;
+        orderGoodsMoney = orderGoodsMoney.add(goodsTotalPrice);
+        couponDiscount = couponDiscount.add(discountMoney);
+        orderPayDeposit = orderPayDeposit.add(goodsDeposit);
+        orderPayMoney = orderPayMoney.add(goodsRealPrice);
+        //创建OrderGoods
+        orderGoods = new OrderGoods();
+        orderGoodsId = IdUtils.simpleUUID();
+        orderGoods.setOrderGoodsId(orderGoodsId);
+        orderGoods.setDelFlag(0);
+        orderGoods.setOrderId(orderId);
+        orderGoods.setGoodsId(goodsId);
+        orderGoods.setBuyNum(buyNum);
+        orderGoods.setGoodsPrice(goodsPrice);
+        orderGoods.setGoodsTotalMoney(orderGoodsMoney);
+        orderGoods.setGoodsReceivableMoney(goodsRealPrice);
+        orderGoods.setCycleNumFlag(goods.getCycleNumFlag());
+        orderGoods.setServiceNum(serviceNum);
+        orderGoods.setGoodsType(goods.getGoodsType());
+        orderGoods.setGoodsName(goods.getGoodsName());
+        orderGoods.setGoodsPicture(goodsFile.getFileUrl());
+        orderGoodsService.save(orderGoods);
+        //清空购物车
+        AppShoppingCartDelDto appShoppingCartDelDto = new AppShoppingCartDelDto();
+        appShoppingCartDelDto.setGoodsId(goodsId);
+        appShoppingCartDelDto.setUserId(userId);
+        remoteShoppingCartService.deleteShoppingCart(appShoppingCartDelDto);
+        if (goods.getGoodsType() == 1) {
+            goodsTypeSet.add("周期");
+        } else if (goods.getGoodsType() == 2) {
+            goodsTypeSet.add("服务");
+        } else if (goods.getGoodsType() == 3) {
+            goodsTypeSet.add("体验");
+        } else if (goods.getGoodsType() == 4) {
+            goodsTypeSet.add("单品");
+        }
+
+        Order order = new Order();
+        order.setOrderId(orderId);
+        order.setDelFlag(0);
+        //为对接支付 直接付款成功
+        order.setOrderStatus(1);
+        order.setOrderNo(orderNo);
+        order.setOrderFrom(1);
+        order.setShopId(appPlaceActivityDto.getShopId());
+        order.setUserId(userId);
+        order.setOrderMoney(orderGoodsMoney);
+        order.setCouponMoney(couponDiscount);
+        order.setDiscountMoney(couponDiscount);
+        order.setReceivableMoney(orderPayMoney);
+        order.setReceivableDeposit(orderPayDeposit);
+        order.setChangeReceivableMoney(orderPayMoney);
+        order.setPayType(appPlaceActivityDto.getPayType());
+        if (order.getPayType() == 1) {
+            order.setPayMoney(orderPayMoney);
+            order.setOnlinePayMoney(orderPayMoney);
+            appPlaceOrderVo.setPayMoney(orderPayMoney);
+            appPlaceOrderVo.setUnpaidMoney(order.getReceivableMoney().subtract(order.getPayMoney()));
+            order.setCloseFlag(1);
+        } else if (order.getPayType() == 2) {
+            order.setPayMoney(orderPayDeposit);
+            order.setOnlinePayMoney(orderPayDeposit);
+            appPlaceOrderVo.setPayMoney(orderPayDeposit);
+            appPlaceOrderVo.setUnpaidMoney(order.getReceivableMoney().subtract(order.getPayMoney()));
+            order.setCloseFlag(0);
+        }
+        order.setOrderRemark(appPlaceActivityDto.getOrderRemark());
+        order.setGoodsNum(goodsNum);
+        order.setCreateTime(new Date());
+        this.save(order);
+        //更新用户商品类型
+        if (goodsTypeSet != null && goodsTypeSet.size() > 0) {
+            AppMemberGoodsTypeDto appMemberGoodsTypeDto = new AppMemberGoodsTypeDto();
+            appMemberGoodsTypeDto.setUserId(userId);
+            appMemberGoodsTypeDto.setGoodsTypeSet(goodsTypeSet);
+            remoteMemberService.updateMemberGoodsType(appMemberGoodsTypeDto);
+        }
+        appPlaceOrderVo.setOrderId(orderId);
+        appPlaceOrderVo.setOrderNo(orderNo);
+
+        //调用支付
+
+
+        return appPlaceOrderVo;
+    }
+
+
 
     /**
      * 分页获取用户订单
@@ -878,6 +1127,7 @@
         String orderNo = CodeFactoryUtil.getShopOrderNo();
         OrderGoods orderGoods;
         String orderGoodsId;
+        GoodsFile goodsFile;
         BigDecimal cycleMoney = new BigDecimal("0.00");
         BigDecimal experienceMoney = new BigDecimal("0.00");
         BigDecimal serviceMoney = new BigDecimal("0.00");
@@ -886,6 +1136,7 @@
             goodsId = appBuyGoodsDto.getGoodsId();
             memberCouponId = appBuyGoodsDto.getMemberCouponId();
             goods = remoteGoodsService.getGoods(goodsId).getData();
+            goodsFile = remoteGoodsService.getGoodsFile(goodsId).getData();
             buyNum = appBuyGoodsDto.getBuyNum();
             goodsPrice = goods.getSalesPrice();
             serviceNum = goods.getServiceNum();
@@ -949,6 +1200,8 @@
             orderGoods.setCycleNumFlag(goods.getCycleNumFlag());
             orderGoods.setServiceNum(serviceNum);
             orderGoods.setGoodsType(goods.getGoodsType());
+            orderGoods.setGoodsName(goods.getGoodsName());
+            orderGoods.setGoodsPicture(goodsFile.getFileUrl());
             orderGoodsService.save(orderGoods);
             switch(orderGoods.getGoodsType()){
                 case 1:
@@ -2306,10 +2559,17 @@
                         .collect(Collectors.toMap(MgtSimpleMemberVo::getUserId, Function.identity()));
             }
             // 遍历列表,设置店铺名称、用户名称和未支付金额
+            String userInfo;
+            String mobile;
             for (MgtShopAllOrderPageVo mgtShopOrderPageVo : shopAllOrderPageVoList) {
                 if (userMap != null && !userMap.isEmpty()) {
                     if (userMap.get(mgtShopOrderPageVo.getUserId()) != null) {
-                        mgtShopOrderPageVo.setUserInfo(userMap.get(mgtShopOrderPageVo.getUserId()).getNickName()+"("+userMap.get(mgtShopOrderPageVo.getUserId()).getUserMobile()+")");
+                        userInfo = userMap.get(mgtShopOrderPageVo.getUserId()).getNickName();
+                        mobile = userMap.get(mgtShopOrderPageVo.getUserId()).getUserMobile();
+                        if(StringUtils.isNotBlank(mobile)){
+                            userInfo = userInfo + "(" + mobile + ")";
+                        }
+                        mgtShopOrderPageVo.setUserInfo(userInfo);
                     }
                 }
             }
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java
index 18d8088..fbdf2ad 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java
@@ -34,6 +34,16 @@
     AppSureOrderVo buyGoods(AppSureOrderDto appSureOrderDto);
 
     /**
+     * @description  抢购商品
+     * @author  jqs
+     * @date    2023/7/6 11:45
+     * @param appPanicBuyDto
+     * @return  AppSureOrderVo
+     */
+    AppPanicBuyVo panicBuyGoods(AppPanicBuyDto appPanicBuyDto);
+
+
+    /**
      * 创建订单
      * @param appPlaceOrderDto
      * @return
@@ -41,6 +51,15 @@
     AppPlaceOrderVo placeOrder(AppPlaceOrderDto appPlaceOrderDto);
 
     /**
+     * @description  创建活动订单
+     * @author  jqs
+     * @date    2023/7/6 17:59
+     * @param appPlaceActivityDto
+     * @return  AppPlaceOrderVo
+     */
+    AppPlaceOrderVo placeActivityOrder( AppPlaceActivityDto appPlaceActivityDto);
+
+    /**
      * 分页获取用户订单
      * @param page
      * @param appUserOrderPageDto
diff --git a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
index f2712b0..cf9518b 100644
--- a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
+++ b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
@@ -472,7 +472,7 @@
         SELECT
             COUNT(order_id) orderTotal,
             IFNULL(SUM(order_money),0) orderMoneyTotal
-        FROM t_order toc.create_time DESC
+        FROM t_order ORDER BY create_time DESC
     </select>
 
     <select id="totalOrderSecond" resultType="com.ruoyi.order.domain.vo.MgtOrderTotal">
@@ -510,9 +510,9 @@
 
     <select id="totalOrderThird" resultType="com.ruoyi.order.domain.vo.MgtOrderTotal">
         SELECT
-        COUNT(temp.order_id) shopOrderTotal,
-        IFNULL(SUM(temp.order_money),0) shopOrderMoneyTotal,
-        IFNULL(SUM(temp.pay_money),0) shopPayMoneyTotal FROM
+        COUNT(temp.order_id) activityOrderTotal,
+        IFNULL(SUM(temp.order_money),0) activityOrderMoneyTotal,
+        IFNULL(SUM(temp.pay_money),0) activityPayMoneyTotal FROM
         (SELECT toc.order_id,toc.order_money,toc.pay_money
         FROM t_order toc
         INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id
@@ -1093,7 +1093,7 @@
         COUNT(DISTINCT user_id) orderPerson
         FROM t_order WHERE del_flag = 0 AND order_from = 2
         <if test="param.shopIdList != null and param.shopIdList.size() > 0">
-            AND toc.shop_id IN
+            AND shop_id IN
             <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")">
                 #{item}
             </foreach>
@@ -1111,10 +1111,10 @@
         tog.goods_type mapKey,
         COUNT(DISTINCT toc.order_id) AS mapValueFirst,
         IFNULL(SUM(tog.goods_total_money),0) AS mapValueSecond,
-        COUNT(DISTINCT toc.user_id) AS mapValueThird,
+        COUNT(DISTINCT toc.user_id) AS mapValueThird
         FROM t_order toc
         INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id
-        WHERE toc.del_flag = 0 AND order_from = 2
+        WHERE toc.del_flag = 0 AND toc.order_from = 2
         <if test="param.shopIdList != null and param.shopIdList.size() > 0">
             AND toc.shop_id IN
             <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")">
@@ -1128,12 +1128,12 @@
         SELECT
         DATE_FORMAT(create_time, '%Y-%m-%d') AS mapKey,
         COUNT(DISTINCT order_id) AS mapValueFirst,
-        IFNULL(SUM(toc.order_money),0) AS mapValueSecond,
+        IFNULL(SUM(toc.order_money),0) AS mapValueSecond
         FROM t_order
         WHERE del_flag = 0 AND order_from = 2
         AND create_time >= DATE_SUB(CURDATE(), INTERVAL 6 DAY)
         <if test="param.shopIdList != null and param.shopIdList.size() > 0">
-            AND toc.shop_id IN
+            AND shop_id IN
             <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")">
                 #{item}
             </foreach>
@@ -1151,7 +1151,7 @@
         WHERE del_flag = 0 AND order_from = 2
         AND create_time >= DATE_SUB(CURDATE(), INTERVAL 6 DAY)
         <if test="param.shopIdList != null and param.shopIdList.size() > 0">
-            AND toc.shop_id IN
+            AND shop_id IN
             <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")">
                 #{item}
             </foreach>
@@ -1166,7 +1166,7 @@
         WHERE del_flag = 0 AND order_from = 2
         AND create_time >= DATE_SUB(CURDATE(), INTERVAL 6 DAY)
         <if test="param.shopIdList != null and param.shopIdList.size() > 0">
-            AND toc.shop_id IN
+            AND shop_id IN
             <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")">
                 #{item}
             </foreach>
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtShopController.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtShopController.java
index 1c70932..d2a9d9c 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtShopController.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtShopController.java
@@ -254,7 +254,7 @@
     @RequestMapping(value = "/mgtShopAuth", method = RequestMethod.POST)
     @Log(title = "商户进件管理", businessType = BusinessType.UPDATE,operContent = "商户进件")
     @ApiOperation(value = "平台商户进件")
-    public R mgtShopAuth(@RequestBody MgtShopAuthDto mgtShopAuthDto) {
+    public R mgtShopAuth(@Validated @RequestBody MgtShopAuthDto mgtShopAuthDto) {
         Long userId = SecurityUtils.getUserId();
         mgtShopAuthDto.setUserId(userId);
         shopService.mgtShopAuth(mgtShopAuthDto);
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtShopAuthDto.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtShopAuthDto.java
index 2577bd0..af3a079 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtShopAuthDto.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtShopAuthDto.java
@@ -4,6 +4,8 @@
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import javax.validation.constraints.NotNull;
+
 /**
  * @ClassName Mgt
  * @Description TODO
@@ -15,6 +17,7 @@
 public class MgtShopAuthDto extends MgtBaseDto {
 
     @ApiModelProperty(value = "审核id")
+    @NotNull(message = "审核id不能为空")
     private String authId;
     /**
      * 商户id
@@ -138,6 +141,41 @@
     @ApiModelProperty(value = "补充说明")
     private String baDesc;
 
+    /**
+     * 受益人姓名
+     */
+    @ApiModelProperty(value = "受益人姓名")
+    private String uboName;
+    /**
+     * 受益人身份证号
+     */
+    @ApiModelProperty(value = "受益人身份证号")
+    private String uboIdCard;
+    /**
+     * 受益人身份证开始日期
+     */
+    @ApiModelProperty(value = "受益人身份证开始日期")
+    private String uboIcStartDate;
+    /**
+     * 受益人身份证有效日期
+     */
+    @ApiModelProperty(value = "受益人身份证有效日期")
+    private String uboIcEndDate;
+    /**
+     * 受益人身份证正面
+     */
+    @ApiModelProperty(value = "受益人身份证正面")
+    private String uboIcFront;
+    /**
+     * 受益人身份证背面
+     */
+    @ApiModelProperty(value = "受益人身份证背面")
+    private String uboIcBack;
 
+    /**
+     * 受益人身份证背面
+     */
+    @ApiModelProperty(value = "受益人居住地址")
+    private String uboIcAddress;
 
 }
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/shop/ShopAuthentication.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/shop/ShopAuthentication.java
index f6ef0d7..4144d92 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/shop/ShopAuthentication.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/shop/ShopAuthentication.java
@@ -263,6 +263,43 @@
     @TableField("ba_desc")
     private String baDesc;
 
+    /**
+     * 受益人姓名
+     */
+    @TableField("ubo_name")
+    private String uboName;
+    /**
+     * 受益人身份证号
+     */
+    @TableField("ubo_id_card")
+    private String uboIdCard;
+    /**
+     * 受益人身份证开始日期
+     */
+    @TableField("ubo_ic_start_date")
+    private String uboIcStartDate;
+    /**
+     * 受益人身份证有效日期
+     */
+    @TableField("ubo_ic_end_date")
+    private String uboIcEndDate;
+    /**
+     * 受益人身份证正面
+     */
+    @TableField("ubo_ic_front")
+    private String uboIcFront;
+    /**
+     * 受益人身份证背面
+     */
+    @TableField("ubo_ic_back")
+    private String uboIcBack;
+
+    /**
+     * 受益人居住地址
+     */
+    @TableField("ubo_ic_address")
+    private String uboIcAddress;
+
     @Override
     protected Serializable pkVal() {
         return this.authId;
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopAuthGetVo.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopAuthGetVo.java
index dc81867..f03ec0f 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopAuthGetVo.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopAuthGetVo.java
@@ -150,4 +150,43 @@
 
     @ApiModelProperty(value = "拒绝理由")
     private String adRejectReason;
+
+    /**
+     * 受益人姓名
+     */
+    @ApiModelProperty(value = "受益人姓名")
+    private String uboName;
+    /**
+     * 受益人身份证号
+     */
+    @ApiModelProperty(value = "受益人身份证号")
+    private String uboIdCard;
+    /**
+     * 受益人身份证开始日期
+     */
+    @ApiModelProperty(value = "受益人身份证开始日期")
+    private String uboIcStartDate;
+    /**
+     * 受益人身份证有效日期
+     */
+    @ApiModelProperty(value = "受益人身份证有效日期")
+    private String uboIcEndDate;
+    /**
+     * 受益人身份证正面
+     */
+    @ApiModelProperty(value = "受益人身份证正面")
+    private String uboIcFront;
+    /**
+     * 受益人身份证背面
+     */
+    @ApiModelProperty(value = "受益人身份证背面")
+    private String uboIcBack;
+
+    /**
+     * 受益人身份证背面
+     */
+    @ApiModelProperty(value = "受益人居住地址")
+    private String uboIcAddress;
+
+
 }
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopAuthPageVo.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopAuthPageVo.java
index 9c23ba2..f81f1dd 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopAuthPageVo.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopAuthPageVo.java
@@ -14,6 +14,9 @@
 @Data
 public class MgtShopAuthPageVo extends MgtPageDto {
 
+    @ApiModelProperty(value = "审核id")
+    private String authId;
+
     @ApiModelProperty(value = "商户id")
     private Long shopId;
 
diff --git a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml
index d737425..7ac9ef6 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml
+++ b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml
@@ -497,6 +497,7 @@
 
     <select id="pageMgtShopAuth" resultType="com.ruoyi.shop.domain.vo.MgtShopAuthPageVo">
         SELECT
+        tsa.auth_id authId,
         ts.shop_id shopId,
         ts.shop_name shopName,
         ts.shopowner_name shopownerName,
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java
index 93f2050..0435d5d 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java
@@ -450,7 +450,7 @@
     @RequestMapping(value = "/listCity", method = RequestMethod.POST)
     @ApiOperation(value = "获取省市列表")
     public R<List<RegionVo>> listCity(){
-        List<RegionVo> regionVoList = regionService.listRegionVo();
+        List<RegionVo> regionVoList = regionService.listCityVo();
         return R.ok(regionVoList);
     }
 
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/pojo/config/Pop.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/pojo/config/Pop.java
index 5c82150..5ecd417 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/pojo/config/Pop.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/pojo/config/Pop.java
@@ -1,16 +1,16 @@
 package com.ruoyi.system.domain.pojo.config;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import java.util.Date;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
-import java.io.Serializable;
-
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
 
 /**
  * <p>
@@ -75,6 +75,11 @@
     @TableField("create_user_id")
     private Long createUserId;
 
+    /**
+     * 跳转类型1.门店详情2.秒杀活动3领券中心4.商城列表5.关于洪瑞堂
+     */
+    @TableField("jump_type")
+    private Integer jumpType;
 
     @Override
     protected Serializable pkVal() {
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/pojo/config/QuickEntry.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/pojo/config/QuickEntry.java
index 1f52896..63b04ff 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/pojo/config/QuickEntry.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/pojo/config/QuickEntry.java
@@ -1,16 +1,16 @@
 package com.ruoyi.system.domain.pojo.config;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import java.util.Date;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
-import java.io.Serializable;
-
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
 
 /**
  * <p>
@@ -70,6 +70,11 @@
     @TableField("create_user_id")
     private Long createUserId;
 
+    /**
+     * 跳转类型1.门店详情2.秒杀活动3领券中心4.商城列表5.关于洪瑞堂
+     */
+    @TableField("jump_type")
+    private Integer jumpType;
 
     @Override
     protected Serializable pkVal() {
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/config/RegionService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/config/RegionService.java
index 8e7c69d..5cc9fa6 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/config/RegionService.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/config/RegionService.java
@@ -24,4 +24,13 @@
      * @return  List<RegionVo>
      */
     List<RegionVo> listRegionVo();
+
+    /**
+     * @description
+     * @author  jqs
+     * @date    2023/6/12 15:20
+     * @param
+     * @return  List<RegionVo>
+     */
+    List<RegionVo> listCityVo();
 }
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/CustomConfigServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/CustomConfigServiceImpl.java
index 8752237..ad962fe 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/CustomConfigServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/CustomConfigServiceImpl.java
@@ -259,24 +259,31 @@
                 case SHARE_INTEGRAL:
                     customConfig.setConfigValue(mgtOtherConfigEditDto.getShareIntegral().toString());
                     this.saveOrUpdate(customConfig);
+                    break;
                 case SUGGEST_PLATFORM_INTEGRAL:
                     customConfig.setConfigValue(mgtOtherConfigEditDto.getSuggestPlatformIntegral().toString());
                     this.saveOrUpdate(customConfig);
+                    break;
                 case SIGN_IN_INTEGRAL:
                     customConfig.setConfigValue(mgtOtherConfigEditDto.getSignInIntegral().toString());
                     this.saveOrUpdate(customConfig);
+                    break;
                 case SUGGEST_SHOP_INTEGRAL:
                     customConfig.setConfigValue(mgtOtherConfigEditDto.getSuggestShopIntegral().toString());
                     this.saveOrUpdate(customConfig);
+                    break;
                 case ORDER_AUTO_CANCEL_TIME:
                     customConfig.setConfigValue(mgtOtherConfigEditDto.getOrderAutoCancelTime().toString());
                     this.saveOrUpdate(customConfig);
+                    break;
                 case PAY_MONEY_INTEGRAL:
                     customConfig.setConfigValue(mgtOtherConfigEditDto.getPayMoneyIntegral().toString());
                     this.saveOrUpdate(customConfig);
+                    break;
                 case HOME_STYLE:
                     customConfig.setConfigValue(mgtOtherConfigEditDto.getHomeStyle().toString());
                     this.saveOrUpdate(customConfig);
+                    break;
                 default:
                     break;
             }
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/PopServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/PopServiceImpl.java
index 4f497dc..d110c71 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/PopServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/PopServiceImpl.java
@@ -1,6 +1,7 @@
 package com.ruoyi.system.service.impl.config;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.utils.DateUtils;
 import com.ruoyi.common.core.utils.bean.BeanUtils;
 import com.ruoyi.system.api.domain.dto.MgtBaseGetDto;
 import com.ruoyi.system.domain.dto.MgtPopEditDto;
@@ -13,6 +14,7 @@
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.text.ParseException;
 import java.util.Date;
 import java.util.List;
 
@@ -65,6 +67,12 @@
         // 设置创建时间和创建者ID
         pop.setCreateTime(new Date());
         pop.setCreateUserId(mgtPopEditDto.getPopId());
+        try {
+            pop.setShowStartTime(DateUtils.parseDate(mgtPopEditDto.getShowStartTime(),"yyyy-MM-dd"));
+            pop.setShowEndTime(DateUtils.parseDate(mgtPopEditDto.getShowEndTime(),"yyyy-MM-dd"));
+        } catch (ParseException e) {
+            throw new RuntimeException(e);
+        }
         // 保存或更新管理弹窗
         this.saveOrUpdate(pop);
     }
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/RegionServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/RegionServiceImpl.java
index e5e9bb5..4e85a30 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/RegionServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/RegionServiceImpl.java
@@ -39,10 +39,10 @@
      * @date 2023/6/12 15:18
      */
     @Override
-    public List<RegionVo> listRegionVo() {
-        if (redisService.hasKey(SecurityConstant.REGION_LIST)) {
+    public List<RegionVo> listCityVo() {
+        if (redisService.hasKey(SecurityConstant.CITY_LIST)) {
             // 如果存在,则直接从缓存中获取并返回
-            List<RegionVo> result = redisService.getCacheList(SecurityConstant.REGION_LIST);
+            List<RegionVo> result = redisService.getCacheList(SecurityConstant.CITY_LIST);
             return result;
         } else {
             // 如果不存在,则从数据库中查询并进行处理
@@ -75,6 +75,75 @@
                 }
             }
             // 将处理后的地区列表存入缓存中
+            redisService.setCacheList(SecurityConstant.CITY_LIST, regionVoList1);
+            // 返回处理后的地区列表
+            return regionVoList1;
+        }
+    }
+
+    /**
+     * @param
+     * @return List<RegionVo>
+     * @description
+     * @author jqs
+     * @date 2023/6/12 15:18
+     */
+    @Override
+    public List<RegionVo> listRegionVo() {
+        if (redisService.hasKey(SecurityConstant.REGION_LIST)) {
+            // 如果存在,则直接从缓存中获取并返回
+            List<RegionVo> result = redisService.getCacheList(SecurityConstant.REGION_LIST);
+            return result;
+        } else {
+            // 如果不存在,则从数据库中查询并进行处理
+            List<RegionVo> regionVoList = regionMapper.listRegionVo();
+            List<RegionVo> regionVoList1 = new ArrayList<>();
+            List<RegionVo> regionVoList2 = new ArrayList<>();
+            List<RegionVo> regionVoList3 = new ArrayList<>();
+            // 将地区按照级别分别存放到不同的列表中
+            for (RegionVo regionVo : regionVoList) {
+                if (regionVo.getLevel() == 1) {
+                    regionVoList1.add(regionVo);
+                }
+                if (regionVo.getLevel() == 2) {
+                    regionVoList2.add(regionVo);
+                }
+                if (regionVo.getLevel() == 3) {
+                    regionVoList3.add(regionVo);
+                }
+            }
+            Iterator<RegionVo> regionVoIterator3;
+            RegionVo children;
+            // 将第三级地区挂到第二级地区下面
+            for (RegionVo regionVo : regionVoList2) {
+                if (null == regionVo.getChildren()) {
+                    regionVo.setChildren(new ArrayList<>());
+                }
+                regionVoIterator3 = regionVoList3.iterator();
+                while (regionVoIterator3.hasNext()) {
+                    children = regionVoIterator3.next();
+                    if (regionVo.getId().equals(children.getParentId())) {
+                        regionVo.getChildren().add(children);
+                        regionVoIterator3.remove();
+                    }
+                }
+            }
+            Iterator<RegionVo> regionVoIterator2;
+            // 将第二级地区挂到第一级地区下面
+            for (RegionVo regionVo : regionVoList1) {
+                if (null == regionVo.getChildren()) {
+                    regionVo.setChildren(new ArrayList<>());
+                }
+                regionVoIterator2 = regionVoList2.iterator();
+                while (regionVoIterator2.hasNext()) {
+                    children = regionVoIterator2.next();
+                    if (regionVo.getId().equals(children.getParentId())) {
+                        regionVo.getChildren().add(children);
+                        regionVoIterator2.remove();
+                    }
+                }
+            }
+            // 将处理后的地区列表存入缓存中
             redisService.setCacheList(SecurityConstant.REGION_LIST, regionVoList1);
             // 返回处理后的地区列表
             return regionVoList1;
diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/QuickEntryMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/QuickEntryMapper.xml
index d5113a6..b55693b 100644
--- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/QuickEntryMapper.xml
+++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/QuickEntryMapper.xml
@@ -108,8 +108,8 @@
             entry_url entryUrl,
             entry_name entryName,
             CASE target_type
-                WHEN 1 THEN '外部'
-                WHEN 2 THEN '内部'
+                WHEN 1 THEN '外链'
+                WHEN 2 THEN '内链'
                 ELSE '无'
                 END targetType,
             link_url linkUrl,

--
Gitblit v1.7.1