jiangqs
2023-07-06 1f9b64476716a6a1de3bcb886bf4e64b123f7523
管理台bug和用户端活动商品购买
48个文件已修改
6个文件已添加
1231 ■■■■■ 已修改文件
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/SecurityConstant.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/ActivityGoodsGetDto.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/AppActivityGoodsPageDto.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/activity/ActivityGoods.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/ActivityGoodsGetVo.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteActivityFallbackFactory.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteActivityService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/concole/ActivityController.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/miniapp/AppActivityController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/AppGoodsInfoGetDto.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/AppSearchGoodsPageDto.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/pojo/activity/ActivityRecord.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppGoodsInfoVo.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/activity/ActivityRecordMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/goods/GoodsMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/activity/ActivityGoodsService.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/activity/ActivityRecordService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/activity/ActivityService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/goods/GoodsService.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityGoodsServiceImpl.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityRecordServiceImpl.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/goods/GoodsServiceImpl.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/resources/mapper/activity/ActivityRecordMapper.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/resources/mapper/goods/GoodsMapper.xml 37 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/member/MemberShopTotal.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/member/MemberSuggest.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java 47 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/AppPanicBuyDto.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/AppPlaceActivityDto.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/AppPlaceActivityOrderDto.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/AppSureOrderDto.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/OrderGoods.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppPanicBuyVo.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppSureOrderGoodsVo.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppSureOrderVo.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java 266 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtShopController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtShopAuthDto.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/shop/ShopAuthentication.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopAuthGetVo.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopAuthPageVo.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/pojo/config/Pop.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/pojo/config/QuickEntry.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/config/RegionService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/CustomConfigServiceImpl.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/PopServiceImpl.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/RegionServiceImpl.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/QuickEntryMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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 = "商品已售罄";
}
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";
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/ActivityGoodsGetDto.java
New file
@@ -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;
}
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;
}
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;
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/ActivityGoodsGetVo.java
New file
@@ -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;
}
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());
            }
        };
    }
}
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);
}
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);
    }
}
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));
    }*/
    }
}
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;
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;
}
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
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;
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);
}
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);
}
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);
}
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);
}
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);
}
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);
}
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);
    }
}
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);
    }
}
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;
    }
}
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;
    }
}
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>
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>
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;
    /**
     * 总积分
     */
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.门店
     */
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) {
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/AppPanicBuyDto.java
New file
@@ -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;
}
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/AppPlaceActivityDto.java
New file
@@ -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;
}
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/AppPlaceActivityOrderDto.java
New file
@@ -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;
}
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;
}
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() {
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppPanicBuyVo.java
New file
@@ -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;
}
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;
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppSureOrderVo.java
@@ -32,8 +32,4 @@
    @ApiModelProperty(value = "订单商品列表")
    List<AppSureOrderGoodsVo> appSureOrderGoodsVoList;
}
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);
                    }
                }
            }
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
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>
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);
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;
}
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;
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;
}
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;
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,
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);
    }
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() {
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() {
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();
}
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;
            }
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);
    }
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;
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,