ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/OrderFallbackFactory.java
@@ -1,5 +1,6 @@ package com.ruoyi.system.api.factory; import com.ruoyi.common.core.domain.R; import com.ruoyi.system.api.feignClient.OrderClient; import org.springframework.cloud.openfeign.FallbackFactory; @@ -11,6 +12,11 @@ @Override public OrderClient create(Throwable cause) { return null; return new OrderClient() { @Override public R<Integer> getSeckillMembers(Long id) { return R.fail("获取秒杀商品已购会员数失败:" + cause.getMessage()); } }; } } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/OrderClient.java
@@ -1,10 +1,21 @@ package com.ruoyi.system.api.feignClient; import com.ruoyi.common.core.constant.ServiceNameConstants; import com.ruoyi.common.core.domain.R; import com.ruoyi.system.api.factory.OrderFallbackFactory; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; @FeignClient(contextId = "orderClient", value = ServiceNameConstants.RUOYI_ORDER, fallbackFactory = OrderFallbackFactory.class) public interface OrderClient { /** * 获取某个商品的已购会员数 * * @param id 秒杀商品id * @return 已购会员数 */ @GetMapping("/order/seckill-members/{id}") R<Integer> getSeckillMembers(@PathVariable("id") Long id); } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/GoodsSkuController.java
@@ -1,15 +1,15 @@ package com.ruoyi.goods.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.common.core.domain.R; import com.ruoyi.goods.domain.pojo.GoodsSku; import com.ruoyi.goods.domain.GoodsSku; import com.ruoyi.goods.service.IGoodsSkuService; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.List; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; /** * <p> ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsSeckillController.java
File was deleted ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/DTO/GoodsBrandDTO.java
File was renamed from ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/DTO/GoodsBrandDTO.java @@ -1,4 +1,4 @@ package com.ruoyi.goods.controller.mamagement.DTO; package com.ruoyi.goods.controller.management.DTO; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/DTO/GoodsBrandQuery.java
File was renamed from ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/DTO/GoodsBrandQuery.java @@ -1,4 +1,4 @@ package com.ruoyi.goods.controller.mamagement.DTO; package com.ruoyi.goods.controller.management.DTO; import com.ruoyi.common.core.web.page.BasePage; import io.swagger.annotations.ApiModel; ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/DTO/GoodsCategoryDTO.java
File was renamed from ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/DTO/GoodsCategoryDTO.java @@ -1,4 +1,4 @@ package com.ruoyi.goods.controller.mamagement.DTO; package com.ruoyi.goods.controller.management.DTO; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -15,7 +15,7 @@ public class GoodsCategoryDTO implements Serializable { private static final long serialVersionUID = -340456108914762488L; @ApiModelProperty(value = "商品分类id", notes = "更新必传,新增不传") private Long id; ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/DTO/GoodsCategoryQuery.java
File was renamed from ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/DTO/GoodsCategoryQuery.java @@ -1,4 +1,4 @@ package com.ruoyi.goods.controller.mamagement.DTO; package com.ruoyi.goods.controller.management.DTO; import com.ruoyi.common.core.web.page.BasePage; import io.swagger.annotations.ApiModel; ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/DTO/GoodsFlavorTypeDTO.java
File was renamed from ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/DTO/GoodsFlavorTypeDTO.java @@ -1,4 +1,4 @@ package com.ruoyi.goods.controller.mamagement.DTO; package com.ruoyi.goods.controller.management.DTO; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/DTO/GoodsFlavorTypeQuery.java
File was renamed from ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/DTO/GoodsFlavorTypeQuery.java @@ -1,4 +1,4 @@ package com.ruoyi.goods.controller.mamagement.DTO; package com.ruoyi.goods.controller.management.DTO; import com.ruoyi.common.core.web.page.BasePage; import io.swagger.annotations.ApiModel; @@ -17,7 +17,7 @@ private static final long serialVersionUID = -196269784492900797L; @ApiModelProperty(value = "香型名称") private String flavorTypeName; } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/DTO/GoodsInfoTitleDTO.java
File was renamed from ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/DTO/GoodsInfoTitleDTO.java @@ -1,4 +1,4 @@ package com.ruoyi.goods.controller.mamagement.DTO; package com.ruoyi.goods.controller.management.DTO; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/DTO/GoodsInfoTitleQuery.java
File was renamed from ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/DTO/GoodsInfoTitleQuery.java @@ -1,4 +1,4 @@ package com.ruoyi.goods.controller.mamagement.DTO; package com.ruoyi.goods.controller.management.DTO; import com.ruoyi.common.core.web.page.BasePage; import io.swagger.annotations.ApiModel; ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/DTO/GoodsInfoTitleValueDTO.java
File was renamed from ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/DTO/GoodsInfoTitleValueDTO.java @@ -1,4 +1,4 @@ package com.ruoyi.goods.controller.mamagement.DTO; package com.ruoyi.goods.controller.management.DTO; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/DTO/GoodsSeckillDTO.java
New file @@ -0,0 +1,41 @@ package com.ruoyi.goods.controller.management.DTO; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.io.Serializable; import java.time.LocalDateTime; import java.util.List; import javax.validation.Valid; import javax.validation.constraints.NotEmpty; import lombok.Data; /** * @author mitao * @date 2024/5/21 */ @Data @ApiModel(value = "商品秒杀数据传输对象", description = "商品秒杀数据传输对象") public class GoodsSeckillDTO implements Serializable { private static final long serialVersionUID = -3736491035819949518L; @ApiModelProperty(value = "商品信息") @NotEmpty(message = "商品信息不能为空") @Valid private List<GoodsSkuInfoDTO> goodsSkuList; @ApiModelProperty(value = "分享标题") private String shareTitle; @ApiModelProperty(value = "分享图片") private String sharePic; @ApiModelProperty(value = "秒杀开始时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime startTime; @ApiModelProperty(value = "秒杀结束时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime endTime; } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/DTO/GoodsSeckillQuery.java
New file @@ -0,0 +1,23 @@ package com.ruoyi.goods.controller.management.DTO; import com.ruoyi.common.core.web.page.BasePage; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; /** * @author mitao * @date 2024/5/20 */ @Data @EqualsAndHashCode(callSuper = true) @ApiModel(value = "秒杀商品查询对象", description = "秒杀商品查询对象") public class GoodsSeckillQuery extends BasePage { private static final long serialVersionUID = 1440540784488131168L; @ApiModelProperty(value = "秒杀商品名称") private String goodsSkuName; } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/DTO/GoodsSeckillUpd.java
New file @@ -0,0 +1,61 @@ package com.ruoyi.goods.controller.management.DTO; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.io.Serializable; import java.time.LocalDateTime; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; /** * <p> * 商品秒杀表 * </p> * * @author mitao * @since 2024-05-16 */ @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @ApiModel(value = "商品秒杀数据传输对象", description = "商品秒杀数据传输对象") public class GoodsSeckillUpd implements Serializable { private static final long serialVersionUID = 5347721819131215157L; @ApiModelProperty(value = "商品秒杀id") @NotNull(message = "商品秒杀id不能为空") private Long id; @ApiModelProperty(value = "秒杀库存") @NotNull(message = "秒杀库存不能为空") private Integer seckillStock; @ApiModelProperty(value = "限购数量") private Integer limitNumber; @ApiModelProperty(value = "分享标题") @NotBlank(message = "分享标题不能为空") private String shareTitle; @ApiModelProperty(value = "分享图片") @NotBlank(message = "分享图片不能为空") private String sharePic; @ApiModelProperty(value = "秒杀开始时间", notes = "传 2024-05-21 18:18:49 不可传:2024-05-21T18:18:49 ") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime startTime; @ApiModelProperty(value = "秒杀结束时间", notes = "传 2024-05-21 18:18:49 不可传:2024-05-21T18:18:49 ") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime endTime; @ApiModelProperty(value = "排序") private Integer sortNum; } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/DTO/GoodsSeriesDTO.java
File was renamed from ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/DTO/GoodsSeriesDTO.java @@ -1,4 +1,4 @@ package com.ruoyi.goods.controller.mamagement.DTO; package com.ruoyi.goods.controller.management.DTO; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/DTO/GoodsSeriesQuery.java
File was renamed from ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/DTO/GoodsSeriesQuery.java @@ -1,4 +1,4 @@ package com.ruoyi.goods.controller.mamagement.DTO; package com.ruoyi.goods.controller.management.DTO; import com.ruoyi.common.core.web.page.BasePage; import io.swagger.annotations.ApiModel; ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/DTO/GoodsSkuDTO.java
File was renamed from ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/DTO/GoodsSkuDTO.java @@ -1,4 +1,4 @@ package com.ruoyi.goods.controller.mamagement.DTO; package com.ruoyi.goods.controller.management.DTO; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/DTO/GoodsSkuInfoDTO.java
New file @@ -0,0 +1,38 @@ package com.ruoyi.goods.controller.management.DTO; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.io.Serializable; import java.math.BigDecimal; import javax.validation.constraints.NotNull; import lombok.Data; /** * @author mitao * @date 2024/5/21 */ @Data @ApiModel(value = "秒杀商品数据传输对象", description = "秒杀商品数据传输对象") public class GoodsSkuInfoDTO implements Serializable { private static final long serialVersionUID = -6565529043925729311L; @ApiModelProperty(value = "商品id") @NotNull(message = "商品id不能为空") private Long goods_sku_id; @ApiModelProperty(value = "秒杀价格") @NotNull(message = "秒杀价格不能为空") private BigDecimal skillPrice; @ApiModelProperty(value = "秒杀库存") @NotNull(message = "秒杀库存不能为空") private Integer skillStock; @ApiModelProperty(value = "限购数量") private Integer limitNumber; @ApiModelProperty(value = "排序") private Integer sortNum; } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/DTO/GoodsSkuQuery.java
File was renamed from ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/DTO/GoodsSkuQuery.java @@ -1,4 +1,4 @@ package com.ruoyi.goods.controller.mamagement.DTO; package com.ruoyi.goods.controller.management.DTO; import com.ruoyi.common.core.enums.ListingStatusEnum; import com.ruoyi.common.core.web.page.BasePage; ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtGoodsBrandController.java
File was renamed from ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsBrandController.java @@ -1,11 +1,11 @@ package com.ruoyi.goods.controller.mamagement; package com.ruoyi.goods.controller.management; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.page.PageDTO; import com.ruoyi.goods.controller.mamagement.DTO.GoodsBrandDTO; import com.ruoyi.goods.controller.mamagement.DTO.GoodsBrandQuery; import com.ruoyi.goods.controller.mamagement.VO.GoodsBrandVO; import com.ruoyi.goods.controller.management.DTO.GoodsBrandDTO; import com.ruoyi.goods.controller.management.DTO.GoodsBrandQuery; import com.ruoyi.goods.controller.management.VO.GoodsBrandVO; import com.ruoyi.goods.service.IGoodsBrandService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtGoodsCategoryController.java
File was renamed from ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsCategoryController.java @@ -1,11 +1,11 @@ package com.ruoyi.goods.controller.mamagement; package com.ruoyi.goods.controller.management; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.page.PageDTO; import com.ruoyi.goods.controller.mamagement.DTO.GoodsCategoryDTO; import com.ruoyi.goods.controller.mamagement.DTO.GoodsCategoryQuery; import com.ruoyi.goods.controller.mamagement.VO.GoodsCategoryVO; import com.ruoyi.goods.controller.management.DTO.GoodsCategoryDTO; import com.ruoyi.goods.controller.management.DTO.GoodsCategoryQuery; import com.ruoyi.goods.controller.management.VO.GoodsCategoryVO; import com.ruoyi.goods.service.IGoodsCategoryService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtGoodsFlavorTypeController.java
File was renamed from ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsFlavorTypeController.java @@ -1,11 +1,11 @@ package com.ruoyi.goods.controller.mamagement; package com.ruoyi.goods.controller.management; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.page.PageDTO; import com.ruoyi.goods.controller.mamagement.DTO.GoodsFlavorTypeDTO; import com.ruoyi.goods.controller.mamagement.DTO.GoodsFlavorTypeQuery; import com.ruoyi.goods.controller.mamagement.VO.GoodsFlavorTypeVO; import com.ruoyi.goods.controller.management.DTO.GoodsFlavorTypeDTO; import com.ruoyi.goods.controller.management.DTO.GoodsFlavorTypeQuery; import com.ruoyi.goods.controller.management.VO.GoodsFlavorTypeVO; import com.ruoyi.goods.service.IGoodsFlavorTypeService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtGoodsGroupPurchaseController.java
File was renamed from ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsGroupPurchaseController.java @@ -1,4 +1,4 @@ package com.ruoyi.goods.controller.mamagement; package com.ruoyi.goods.controller.management; import io.swagger.annotations.Api; ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtGoodsInfoTitleController.java
File was renamed from ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsInfoTitleController.java @@ -1,11 +1,11 @@ package com.ruoyi.goods.controller.mamagement; package com.ruoyi.goods.controller.management; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.page.PageDTO; import com.ruoyi.goods.controller.mamagement.DTO.GoodsInfoTitleDTO; import com.ruoyi.goods.controller.mamagement.DTO.GoodsInfoTitleQuery; import com.ruoyi.goods.controller.mamagement.VO.GoodsInfoTitleVO; import com.ruoyi.goods.controller.management.DTO.GoodsInfoTitleDTO; import com.ruoyi.goods.controller.management.DTO.GoodsInfoTitleQuery; import com.ruoyi.goods.controller.management.VO.GoodsInfoTitleVO; import com.ruoyi.goods.service.IGoodsInfoTitleService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtGoodsSeckillController.java
New file @@ -0,0 +1,96 @@ package com.ruoyi.goods.controller.management; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.page.PageDTO; import com.ruoyi.goods.controller.management.DTO.GoodsSeckillDTO; import com.ruoyi.goods.controller.management.DTO.GoodsSeckillQuery; import com.ruoyi.goods.controller.management.DTO.GoodsSeckillUpd; import com.ruoyi.goods.controller.management.VO.GoodsSeckillVO; import com.ruoyi.goods.service.IGoodsSeckillService; import com.ruoyi.system.api.domain.dto.ListStatusDTO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * <p> * 商品秒杀表 前端控制器 * </p> * * @author mitao * @since 2024-05-16 */ @Slf4j @RestController @RequiredArgsConstructor @RequestMapping("/mgt/goods-seckill") @Api(value = "管理后台商品秒杀相关接口", tags = {"管理后台接口"}) public class MgtGoodsSeckillController { private final IGoodsSeckillService goodsSeckillService; /** * 获取秒杀商品列表的分页数据 * * @param query 秒杀商品查询对象 * @return R<PageDTO < GoodsSeckillVO>> */ @ApiOperation(value = "获取秒杀商品列表的分页数据", notes = "获取秒杀商品列表的分页数据") @PostMapping("/page") public R<PageDTO<GoodsSeckillVO>> getGoodsSeckillPage( @Validated @RequestBody GoodsSeckillQuery query) { return R.ok(goodsSeckillService.getGoodsSeckillPage(query)); } /** * 添加秒杀商品 * * @param dto 商品秒杀数据传输对象 */ @ApiOperation(value = "添加秒杀商品", notes = "添加秒杀商品") @PostMapping("/add") public R<Void> addGoodsSeckill(@Validated @RequestBody GoodsSeckillDTO dto) { goodsSeckillService.addGoodsSeckill(dto); return R.ok(); } /** * 修改秒杀商品 * * @param upd 商品秒杀数据传输对象 */ @ApiOperation(value = "修改秒杀商品", notes = "修改秒杀商品") @PutMapping public R<Void> updGoodsSeckill(@Validated @RequestBody GoodsSeckillUpd upd) { goodsSeckillService.updGoodsSeckill(upd); return R.ok(); } /** * 上架/下架 秒杀商品 * * @param dto 商品上下架状态对象 */ @ApiOperation(value = "上架/下架 秒杀商品", notes = "上架/下架 秒杀商品") @PutMapping("/upd-status") public R<Void> updStatus(@Validated @RequestBody ListStatusDTO dto) { goodsSeckillService.updStatus(dto); return R.ok(); } @ApiOperation("查看详情") @GetMapping("/detail/{id}") public R<GoodsSeckillVO> getDetail(@PathVariable("id") Long id) { return R.ok(goodsSeckillService.getDetail(id)); } } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtGoodsSeriesController.java
File was renamed from ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsSeriesController.java @@ -1,11 +1,11 @@ package com.ruoyi.goods.controller.mamagement; package com.ruoyi.goods.controller.management; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.page.PageDTO; import com.ruoyi.goods.controller.mamagement.DTO.GoodsSeriesDTO; import com.ruoyi.goods.controller.mamagement.DTO.GoodsSeriesQuery; import com.ruoyi.goods.controller.mamagement.VO.GoodsSeriesVO; import com.ruoyi.goods.controller.management.DTO.GoodsSeriesDTO; import com.ruoyi.goods.controller.management.DTO.GoodsSeriesQuery; import com.ruoyi.goods.controller.management.VO.GoodsSeriesVO; import com.ruoyi.goods.service.IGoodsSeriesService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtGoodsSkuController.java
File was renamed from ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsSkuController.java @@ -1,18 +1,18 @@ package com.ruoyi.goods.controller.mamagement; package com.ruoyi.goods.controller.management; import com.fasterxml.jackson.core.JsonProcessingException; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.page.PageDTO; import com.ruoyi.goods.controller.mamagement.DTO.GoodsInfoTitleQuery; import com.ruoyi.goods.controller.mamagement.DTO.GoodsSkuDTO; import com.ruoyi.goods.controller.mamagement.DTO.GoodsSkuQuery; import com.ruoyi.goods.controller.mamagement.VO.GoodsBrandVO; import com.ruoyi.goods.controller.mamagement.VO.GoodsCategoryVO; import com.ruoyi.goods.controller.mamagement.VO.GoodsFlavorTypeVO; import com.ruoyi.goods.controller.mamagement.VO.GoodsInfoTitleVO; import com.ruoyi.goods.controller.mamagement.VO.GoodsSeriesVO; import com.ruoyi.goods.controller.mamagement.VO.GoodsSkuVO; import com.ruoyi.goods.controller.management.DTO.GoodsInfoTitleQuery; import com.ruoyi.goods.controller.management.DTO.GoodsSkuDTO; import com.ruoyi.goods.controller.management.DTO.GoodsSkuQuery; import com.ruoyi.goods.controller.management.VO.GoodsBrandVO; import com.ruoyi.goods.controller.management.VO.GoodsCategoryVO; import com.ruoyi.goods.controller.management.VO.GoodsFlavorTypeVO; import com.ruoyi.goods.controller.management.VO.GoodsInfoTitleVO; import com.ruoyi.goods.controller.management.VO.GoodsSeriesVO; import com.ruoyi.goods.controller.management.VO.GoodsSkuVO; import com.ruoyi.goods.service.IGoodsBrandService; import com.ruoyi.goods.service.IGoodsCategoryService; import com.ruoyi.goods.service.IGoodsFlavorTypeService; ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/VO/GoodsBrandVO.java
File was renamed from ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/VO/GoodsBrandVO.java @@ -1,4 +1,4 @@ package com.ruoyi.goods.controller.mamagement.VO; package com.ruoyi.goods.controller.management.VO; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/VO/GoodsCategoryVO.java
File was renamed from ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/VO/GoodsCategoryVO.java @@ -1,4 +1,4 @@ package com.ruoyi.goods.controller.mamagement.VO; package com.ruoyi.goods.controller.management.VO; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/VO/GoodsFlavorTypeVO.java
File was renamed from ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/VO/GoodsFlavorTypeVO.java @@ -1,4 +1,4 @@ package com.ruoyi.goods.controller.mamagement.VO; package com.ruoyi.goods.controller.management.VO; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/VO/GoodsInfoTitleVO.java
File was renamed from ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/VO/GoodsInfoTitleVO.java @@ -1,4 +1,4 @@ package com.ruoyi.goods.controller.mamagement.VO; package com.ruoyi.goods.controller.management.VO; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/VO/GoodsSeckillVO.java
New file @@ -0,0 +1,68 @@ package com.ruoyi.goods.controller.management.VO; import com.ruoyi.common.core.enums.StartStatusEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDateTime; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; /** * <p> * 商品秒杀表 * </p> * * @author mitao * @since 2024-05-16 */ @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @ApiModel(value = "商品秒杀视图对象", description = "商品秒杀视图对象") public class GoodsSeckillVO implements Serializable { private static final long serialVersionUID = 620695205462624870L; @ApiModelProperty(value = "商品秒杀id") private Long id; @ApiModelProperty(value = "商品名称") private String goodsSkuName; @ApiModelProperty(value = "秒杀价格") private BigDecimal seckillPrice; @ApiModelProperty(value = "已售数量") private Integer soldQuantity; @ApiModelProperty(value = "秒杀库存") private Integer seckillStock; @ApiModelProperty(value = "限购数量") private Integer limitNumber; @ApiModelProperty(value = "排序") private Integer sortNum; @ApiModelProperty(value = "分享标题") private String shareTitle; @ApiModelProperty(value = "分享图片") private String sharePic; @ApiModelProperty(value = "秒杀开始时间") private LocalDateTime startTime; @ApiModelProperty(value = "秒杀结束时间") private LocalDateTime endTime; @ApiModelProperty(value = "开始状态 0=未开始 1= 已开始 2=已结束") private StartStatusEnum startStatus; @ApiModelProperty(value = "已购会员数") private Integer numberOfPurchasedMembers; } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/VO/GoodsSeriesVO.java
File was renamed from ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/VO/GoodsSeriesVO.java @@ -1,4 +1,4 @@ package com.ruoyi.goods.controller.mamagement.VO; package com.ruoyi.goods.controller.management.VO; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/VO/GoodsSkuVO.java
File was renamed from ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/VO/GoodsSkuVO.java @@ -1,7 +1,7 @@ package com.ruoyi.goods.controller.mamagement.VO; package com.ruoyi.goods.controller.management.VO; import com.ruoyi.common.core.enums.ListingStatusEnum; import com.ruoyi.goods.controller.mamagement.DTO.GoodsInfoTitleValueDTO; import com.ruoyi.goods.controller.management.DTO.GoodsInfoTitleValueDTO; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.io.Serializable; ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/GoodsBrand.java
File was renamed from ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/pojo/GoodsBrand.java @@ -1,4 +1,4 @@ package com.ruoyi.goods.domain.pojo; package com.ruoyi.goods.domain; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.IdType; ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/GoodsCategory.java
File was renamed from ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/pojo/GoodsCategory.java @@ -1,4 +1,4 @@ package com.ruoyi.goods.domain.pojo; package com.ruoyi.goods.domain; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.IdType; ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/GoodsFlavorType.java
File was renamed from ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/pojo/GoodsFlavorType.java @@ -1,4 +1,4 @@ package com.ruoyi.goods.domain.pojo; package com.ruoyi.goods.domain; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.IdType; ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/GoodsGroupPurchase.java
File was renamed from ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/pojo/GoodsGroupPurchase.java @@ -1,4 +1,4 @@ package com.ruoyi.goods.domain.pojo; package com.ruoyi.goods.domain; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.IdType; ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/GoodsInfoTitle.java
File was renamed from ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/pojo/GoodsInfoTitle.java @@ -1,4 +1,4 @@ package com.ruoyi.goods.domain.pojo; package com.ruoyi.goods.domain; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.IdType; ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/GoodsInfoTitleValue.java
File was renamed from ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/pojo/GoodsInfoTitleValue.java @@ -1,4 +1,4 @@ package com.ruoyi.goods.domain.pojo; package com.ruoyi.goods.domain; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.IdType; ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/GoodsSeckill.java
File was renamed from ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/pojo/GoodsSeckill.java @@ -1,4 +1,4 @@ package com.ruoyi.goods.domain.pojo; package com.ruoyi.goods.domain; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.IdType; @@ -41,18 +41,15 @@ @ApiModelProperty(value = "商品id") private Long goodsSkuId; @ApiModelProperty(value = "商品名称") private String goodsSkuName; @ApiModelProperty(value = "当前库存") private Integer currentStock; @ApiModelProperty(value = "秒杀价格") private BigDecimal seckillPrice; @ApiModelProperty(value = "秒杀库存") private Integer seckillStock; @ApiModelProperty(value = "已售数量") private Integer soldQuantity; @ApiModelProperty(value = "限购数量") private Integer limitNumber; ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/GoodsSeries.java
File was renamed from ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/pojo/GoodsSeries.java @@ -1,4 +1,4 @@ package com.ruoyi.goods.domain.pojo; package com.ruoyi.goods.domain; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.IdType; ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/GoodsSku.java
File was renamed from ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/pojo/GoodsSku.java @@ -1,4 +1,4 @@ package com.ruoyi.goods.domain.pojo; package com.ruoyi.goods.domain; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.IdType; ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/GoodsBrandMapper.java
@@ -1,7 +1,7 @@ package com.ruoyi.goods.mapper; import com.ruoyi.goods.domain.pojo.GoodsBrand; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.goods.domain.GoodsBrand; /** * <p> ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/GoodsCategoryMapper.java
@@ -1,7 +1,7 @@ package com.ruoyi.goods.mapper; import com.ruoyi.goods.domain.pojo.GoodsCategory; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.goods.domain.GoodsCategory; /** * <p> ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/GoodsFlavorTypeMapper.java
@@ -1,7 +1,7 @@ package com.ruoyi.goods.mapper; import com.ruoyi.goods.domain.pojo.GoodsFlavorType; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.goods.domain.GoodsFlavorType; /** * <p> ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/GoodsGroupPurchaseMapper.java
@@ -1,7 +1,7 @@ package com.ruoyi.goods.mapper; import com.ruoyi.goods.domain.pojo.GoodsGroupPurchase; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.goods.domain.GoodsGroupPurchase; /** * <p> ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/GoodsInfoTitleMapper.java
@@ -1,7 +1,7 @@ package com.ruoyi.goods.mapper; import com.ruoyi.goods.domain.pojo.GoodsInfoTitle; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.goods.domain.GoodsInfoTitle; /** * <p> ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/GoodsInfoTitleValueMapper.java
@@ -1,7 +1,7 @@ package com.ruoyi.goods.mapper; import com.ruoyi.goods.domain.pojo.GoodsInfoTitleValue; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.goods.domain.GoodsInfoTitleValue; /** * <p> ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/GoodsSeckillMapper.java
@@ -1,7 +1,10 @@ package com.ruoyi.goods.mapper; import com.ruoyi.goods.domain.pojo.GoodsSeckill; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.goods.controller.management.VO.GoodsSeckillVO; import com.ruoyi.goods.domain.GoodsSeckill; import org.apache.ibatis.annotations.Param; /** * <p> @@ -13,4 +16,6 @@ */ public interface GoodsSeckillMapper extends BaseMapper<GoodsSeckill> { Page<GoodsSeckillVO> getGoodsSeckillPage(@Param("goodsSkuName") String goodsSkuName, @Param("page") Page<GoodsSeckillVO> page); } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/GoodsSeriesMapper.java
@@ -1,7 +1,7 @@ package com.ruoyi.goods.mapper; import com.ruoyi.goods.domain.pojo.GoodsSeries; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.goods.domain.GoodsSeries; /** * <p> ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/GoodsSkuMapper.java
@@ -1,7 +1,7 @@ package com.ruoyi.goods.mapper; import com.ruoyi.goods.domain.pojo.GoodsSku; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.goods.domain.GoodsSku; /** * <p> @@ -13,4 +13,5 @@ */ public interface GoodsSkuMapper extends BaseMapper<GoodsSku> { } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsBrandService.java
@@ -2,10 +2,10 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.common.core.utils.page.PageDTO; import com.ruoyi.goods.controller.mamagement.DTO.GoodsBrandDTO; import com.ruoyi.goods.controller.mamagement.DTO.GoodsBrandQuery; import com.ruoyi.goods.controller.mamagement.VO.GoodsBrandVO; import com.ruoyi.goods.domain.pojo.GoodsBrand; import com.ruoyi.goods.controller.management.DTO.GoodsBrandDTO; import com.ruoyi.goods.controller.management.DTO.GoodsBrandQuery; import com.ruoyi.goods.controller.management.VO.GoodsBrandVO; import com.ruoyi.goods.domain.GoodsBrand; import java.util.List; /** ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsCategoryService.java
@@ -2,10 +2,10 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.common.core.utils.page.PageDTO; import com.ruoyi.goods.controller.mamagement.DTO.GoodsCategoryDTO; import com.ruoyi.goods.controller.mamagement.DTO.GoodsCategoryQuery; import com.ruoyi.goods.controller.mamagement.VO.GoodsCategoryVO; import com.ruoyi.goods.domain.pojo.GoodsCategory; import com.ruoyi.goods.controller.management.DTO.GoodsCategoryDTO; import com.ruoyi.goods.controller.management.DTO.GoodsCategoryQuery; import com.ruoyi.goods.controller.management.VO.GoodsCategoryVO; import com.ruoyi.goods.domain.GoodsCategory; import java.util.List; /** ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsFlavorTypeService.java
@@ -2,10 +2,10 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.common.core.utils.page.PageDTO; import com.ruoyi.goods.controller.mamagement.DTO.GoodsFlavorTypeDTO; import com.ruoyi.goods.controller.mamagement.DTO.GoodsFlavorTypeQuery; import com.ruoyi.goods.controller.mamagement.VO.GoodsFlavorTypeVO; import com.ruoyi.goods.domain.pojo.GoodsFlavorType; import com.ruoyi.goods.controller.management.DTO.GoodsFlavorTypeDTO; import com.ruoyi.goods.controller.management.DTO.GoodsFlavorTypeQuery; import com.ruoyi.goods.controller.management.VO.GoodsFlavorTypeVO; import com.ruoyi.goods.domain.GoodsFlavorType; import java.util.List; /** ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsGroupPurchaseService.java
@@ -1,7 +1,7 @@ package com.ruoyi.goods.service; import com.ruoyi.goods.domain.pojo.GoodsGroupPurchase; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.goods.domain.GoodsGroupPurchase; /** * <p> ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsInfoTitleService.java
@@ -2,10 +2,10 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.common.core.utils.page.PageDTO; import com.ruoyi.goods.controller.mamagement.DTO.GoodsInfoTitleDTO; import com.ruoyi.goods.controller.mamagement.DTO.GoodsInfoTitleQuery; import com.ruoyi.goods.controller.mamagement.VO.GoodsInfoTitleVO; import com.ruoyi.goods.domain.pojo.GoodsInfoTitle; import com.ruoyi.goods.controller.management.DTO.GoodsInfoTitleDTO; import com.ruoyi.goods.controller.management.DTO.GoodsInfoTitleQuery; import com.ruoyi.goods.controller.management.VO.GoodsInfoTitleVO; import com.ruoyi.goods.domain.GoodsInfoTitle; /** * <p> ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsInfoTitleValueService.java
@@ -1,7 +1,7 @@ package com.ruoyi.goods.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.goods.domain.pojo.GoodsInfoTitleValue; import com.ruoyi.goods.domain.GoodsInfoTitleValue; /** * <p> ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsSeckillService.java
@@ -1,7 +1,13 @@ package com.ruoyi.goods.service; import com.ruoyi.goods.domain.pojo.GoodsSeckill; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.common.core.utils.page.PageDTO; import com.ruoyi.goods.controller.management.DTO.GoodsSeckillDTO; import com.ruoyi.goods.controller.management.DTO.GoodsSeckillQuery; import com.ruoyi.goods.controller.management.DTO.GoodsSeckillUpd; import com.ruoyi.goods.controller.management.VO.GoodsSeckillVO; import com.ruoyi.goods.domain.GoodsSeckill; import com.ruoyi.system.api.domain.dto.ListStatusDTO; /** * <p> @@ -13,4 +19,29 @@ */ public interface IGoodsSeckillService extends IService<GoodsSeckill> { /** * 添加秒杀商品 * * @param dto 商品秒杀数据传输对象 */ void addGoodsSeckill(GoodsSeckillDTO dto); /** * 获取秒杀商品列表的分页数据 * * @param query 秒杀商品查询对象 * @return PageDTO<GoodsSeckillVO> */ PageDTO<GoodsSeckillVO> getGoodsSeckillPage(GoodsSeckillQuery query); /** * 修改秒杀商品 * * @param upd 商品秒杀数据传输对象 */ void updGoodsSeckill(GoodsSeckillUpd upd); void updStatus(ListStatusDTO dto); GoodsSeckillVO getDetail(Long id); } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsSeriesService.java
@@ -2,10 +2,10 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.common.core.utils.page.PageDTO; import com.ruoyi.goods.controller.mamagement.DTO.GoodsSeriesDTO; import com.ruoyi.goods.controller.mamagement.DTO.GoodsSeriesQuery; import com.ruoyi.goods.controller.mamagement.VO.GoodsSeriesVO; import com.ruoyi.goods.domain.pojo.GoodsSeries; import com.ruoyi.goods.controller.management.DTO.GoodsSeriesDTO; import com.ruoyi.goods.controller.management.DTO.GoodsSeriesQuery; import com.ruoyi.goods.controller.management.VO.GoodsSeriesVO; import com.ruoyi.goods.domain.GoodsSeries; import java.util.List; /** ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsSkuService.java
@@ -3,10 +3,10 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.fasterxml.jackson.core.JsonProcessingException; import com.ruoyi.common.core.utils.page.PageDTO; import com.ruoyi.goods.controller.mamagement.DTO.GoodsSkuDTO; import com.ruoyi.goods.controller.mamagement.DTO.GoodsSkuQuery; import com.ruoyi.goods.controller.mamagement.VO.GoodsSkuVO; import com.ruoyi.goods.domain.pojo.GoodsSku; import com.ruoyi.goods.controller.management.DTO.GoodsSkuDTO; import com.ruoyi.goods.controller.management.DTO.GoodsSkuQuery; import com.ruoyi.goods.controller.management.VO.GoodsSkuVO; import com.ruoyi.goods.domain.GoodsSku; import com.ruoyi.system.api.domain.dto.ListStatusDTO; /** @@ -42,4 +42,5 @@ * @return 无返回值。 */ void updStatus(ListStatusDTO dto); } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsBrandServiceImpl.java
@@ -5,10 +5,10 @@ import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.page.BeanUtils; import com.ruoyi.common.core.utils.page.PageDTO; import com.ruoyi.goods.controller.mamagement.DTO.GoodsBrandDTO; import com.ruoyi.goods.controller.mamagement.DTO.GoodsBrandQuery; import com.ruoyi.goods.controller.mamagement.VO.GoodsBrandVO; import com.ruoyi.goods.domain.pojo.GoodsBrand; import com.ruoyi.goods.controller.management.DTO.GoodsBrandDTO; import com.ruoyi.goods.controller.management.DTO.GoodsBrandQuery; import com.ruoyi.goods.controller.management.VO.GoodsBrandVO; import com.ruoyi.goods.domain.GoodsBrand; import com.ruoyi.goods.mapper.GoodsBrandMapper; import com.ruoyi.goods.service.IGoodsBrandService; import java.util.List; ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsCategoryServiceImpl.java
@@ -5,10 +5,10 @@ import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.page.BeanUtils; import com.ruoyi.common.core.utils.page.PageDTO; import com.ruoyi.goods.controller.mamagement.DTO.GoodsCategoryDTO; import com.ruoyi.goods.controller.mamagement.DTO.GoodsCategoryQuery; import com.ruoyi.goods.controller.mamagement.VO.GoodsCategoryVO; import com.ruoyi.goods.domain.pojo.GoodsCategory; import com.ruoyi.goods.controller.management.DTO.GoodsCategoryDTO; import com.ruoyi.goods.controller.management.DTO.GoodsCategoryQuery; import com.ruoyi.goods.controller.management.VO.GoodsCategoryVO; import com.ruoyi.goods.domain.GoodsCategory; import com.ruoyi.goods.mapper.GoodsCategoryMapper; import com.ruoyi.goods.service.IGoodsCategoryService; import java.util.List; ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsFlavorTypeServiceImpl.java
@@ -5,10 +5,10 @@ import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.page.BeanUtils; import com.ruoyi.common.core.utils.page.PageDTO; import com.ruoyi.goods.controller.mamagement.DTO.GoodsFlavorTypeDTO; import com.ruoyi.goods.controller.mamagement.DTO.GoodsFlavorTypeQuery; import com.ruoyi.goods.controller.mamagement.VO.GoodsFlavorTypeVO; import com.ruoyi.goods.domain.pojo.GoodsFlavorType; import com.ruoyi.goods.controller.management.DTO.GoodsFlavorTypeDTO; import com.ruoyi.goods.controller.management.DTO.GoodsFlavorTypeQuery; import com.ruoyi.goods.controller.management.VO.GoodsFlavorTypeVO; import com.ruoyi.goods.domain.GoodsFlavorType; import com.ruoyi.goods.mapper.GoodsFlavorTypeMapper; import com.ruoyi.goods.service.IGoodsFlavorTypeService; import java.util.List; ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsGroupPurchaseServiceImpl.java
@@ -1,9 +1,9 @@ package com.ruoyi.goods.service.impl; import com.ruoyi.goods.domain.pojo.GoodsGroupPurchase; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.goods.domain.GoodsGroupPurchase; import com.ruoyi.goods.mapper.GoodsGroupPurchaseMapper; import com.ruoyi.goods.service.IGoodsGroupPurchaseService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsInfoTitleServiceImpl.java
@@ -5,10 +5,10 @@ import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.page.BeanUtils; import com.ruoyi.common.core.utils.page.PageDTO; import com.ruoyi.goods.controller.mamagement.DTO.GoodsInfoTitleDTO; import com.ruoyi.goods.controller.mamagement.DTO.GoodsInfoTitleQuery; import com.ruoyi.goods.controller.mamagement.VO.GoodsInfoTitleVO; import com.ruoyi.goods.domain.pojo.GoodsInfoTitle; import com.ruoyi.goods.controller.management.DTO.GoodsInfoTitleDTO; import com.ruoyi.goods.controller.management.DTO.GoodsInfoTitleQuery; import com.ruoyi.goods.controller.management.VO.GoodsInfoTitleVO; import com.ruoyi.goods.domain.GoodsInfoTitle; import com.ruoyi.goods.mapper.GoodsInfoTitleMapper; import com.ruoyi.goods.service.IGoodsInfoTitleService; import org.springframework.stereotype.Service; ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsInfoTitleValueServiceImpl.java
@@ -1,7 +1,7 @@ package com.ruoyi.goods.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.goods.domain.pojo.GoodsInfoTitleValue; import com.ruoyi.goods.domain.GoodsInfoTitleValue; import com.ruoyi.goods.mapper.GoodsInfoTitleValueMapper; import com.ruoyi.goods.service.IGoodsInfoTitleValueService; import org.springframework.stereotype.Service; ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeckillServiceImpl.java
@@ -1,10 +1,29 @@ package com.ruoyi.goods.service.impl; import com.ruoyi.goods.domain.pojo.GoodsSeckill; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.core.enums.StartStatusEnum; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.page.BeanUtils; import com.ruoyi.common.core.utils.page.PageDTO; import com.ruoyi.goods.controller.management.DTO.GoodsSeckillDTO; import com.ruoyi.goods.controller.management.DTO.GoodsSeckillQuery; import com.ruoyi.goods.controller.management.DTO.GoodsSeckillUpd; import com.ruoyi.goods.controller.management.DTO.GoodsSkuInfoDTO; import com.ruoyi.goods.controller.management.VO.GoodsSeckillVO; import com.ruoyi.goods.domain.GoodsSeckill; import com.ruoyi.goods.domain.GoodsSku; import com.ruoyi.goods.mapper.GoodsSeckillMapper; import com.ruoyi.goods.service.IGoodsSeckillService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.goods.service.IGoodsSkuService; import com.ruoyi.system.api.domain.dto.ListStatusDTO; import com.ruoyi.system.api.feignClient.OrderClient; import java.util.List; import java.util.Optional; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; /** * <p> @@ -14,7 +33,86 @@ * @author mitao * @since 2024-05-16 */ @Slf4j @Service @RequiredArgsConstructor public class GoodsSeckillServiceImpl extends ServiceImpl<GoodsSeckillMapper, GoodsSeckill> implements IGoodsSeckillService { private final IGoodsSkuService goodsSkuService; private final OrderClient orderClient; @Override @Transactional(rollbackFor = Exception.class) public void addGoodsSeckill(GoodsSeckillDTO dto) { List<GoodsSkuInfoDTO> goodsSkuList = dto.getGoodsSkuList(); List<GoodsSeckill> goodsSeckills = BeanUtils.copyList(dto.getGoodsSkuList(), GoodsSeckill.class); for (GoodsSeckill goodsSeckill : goodsSeckills) { goodsSeckill.setShareTitle(dto.getShareTitle()); goodsSeckill.setSharePic(dto.getSharePic()); goodsSeckill.setStartTime(dto.getStartTime()); goodsSeckill.setEndTime(dto.getEndTime()); goodsSeckill.setStartStatus(StartStatusEnum.NOT_STARTED); } this.saveBatch(goodsSeckills); } /** * 获取秒杀商品列表的分页数据 * * @param query 秒杀商品查询对象 * @return */ @Override public PageDTO<GoodsSeckillVO> getGoodsSeckillPage(GoodsSeckillQuery query) { Page<GoodsSeckillVO> page = baseMapper.getGoodsSeckillPage(query.getGoodsSkuName(), new Page<GoodsSeckillVO>(query.getPageCurr(), query.getPageSize()) ); return PageDTO.of(page); } /** * 修改秒杀商品 * * @param upd 商品秒杀数据传输对象 */ @Override public void updGoodsSeckill(GoodsSeckillUpd upd) { //查询秒杀商品 GoodsSeckill goodsSeckill = this.getById(upd.getId()); if (StringUtils.isNull(goodsSeckill)) { throw new RuntimeException("秒杀商品不存在"); } GoodsSeckill goodsSeckillUpd = BeanUtils.copyBean(upd, GoodsSeckill.class); this.updateById(goodsSeckillUpd); } /** * 上架/下架 秒杀商品 * * @param dto 商品上下架状态对象 */ @Override public void updStatus(ListStatusDTO dto) { this.lambdaUpdate() .eq(GoodsSeckill::getId, dto.getId()) .set(GoodsSeckill::getListingStatus, dto.getListingStatus()) .update(); } @Override public GoodsSeckillVO getDetail(Long id) { GoodsSeckill goodsSeckill = this.getById(id); if (StringUtils.isNull(goodsSeckill)) { throw new RuntimeException("秒杀商品不存在"); } GoodsSeckillVO vo = BeanUtils.copyBean(goodsSeckill, GoodsSeckillVO.class); GoodsSku goods = goodsSkuService.getById(goodsSeckill.getGoodsSkuId()); Optional.of(goods).ifPresent(goodsSku -> { vo.setGoodsSkuName(goodsSku.getSkuName()); }); Integer num = orderClient.getSeckillMembers(goodsSeckill.getId()).getData(); vo.setNumberOfPurchasedMembers(num); return vo; } } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeriesServiceImpl.java
@@ -5,10 +5,10 @@ import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.page.BeanUtils; import com.ruoyi.common.core.utils.page.PageDTO; import com.ruoyi.goods.controller.mamagement.DTO.GoodsSeriesDTO; import com.ruoyi.goods.controller.mamagement.DTO.GoodsSeriesQuery; import com.ruoyi.goods.controller.mamagement.VO.GoodsSeriesVO; import com.ruoyi.goods.domain.pojo.GoodsSeries; import com.ruoyi.goods.controller.management.DTO.GoodsSeriesDTO; import com.ruoyi.goods.controller.management.DTO.GoodsSeriesQuery; import com.ruoyi.goods.controller.management.VO.GoodsSeriesVO; import com.ruoyi.goods.domain.GoodsSeries; import com.ruoyi.goods.mapper.GoodsSeriesMapper; import com.ruoyi.goods.service.IGoodsSeriesService; import java.util.List; ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSkuServiceImpl.java
@@ -10,12 +10,12 @@ import com.ruoyi.common.core.utils.page.Checker; import com.ruoyi.common.core.utils.page.CollUtils; import com.ruoyi.common.core.utils.page.PageDTO; import com.ruoyi.goods.controller.mamagement.DTO.GoodsInfoTitleValueDTO; import com.ruoyi.goods.controller.mamagement.DTO.GoodsSkuDTO; import com.ruoyi.goods.controller.mamagement.DTO.GoodsSkuQuery; import com.ruoyi.goods.controller.mamagement.VO.GoodsSkuVO; import com.ruoyi.goods.domain.pojo.GoodsInfoTitleValue; import com.ruoyi.goods.domain.pojo.GoodsSku; import com.ruoyi.goods.controller.management.DTO.GoodsInfoTitleValueDTO; import com.ruoyi.goods.controller.management.DTO.GoodsSkuDTO; import com.ruoyi.goods.controller.management.DTO.GoodsSkuQuery; import com.ruoyi.goods.controller.management.VO.GoodsSkuVO; import com.ruoyi.goods.domain.GoodsInfoTitleValue; import com.ruoyi.goods.domain.GoodsSku; import com.ruoyi.goods.mapper.GoodsSkuMapper; import com.ruoyi.goods.service.IGoodsInfoTitleValueService; import com.ruoyi.goods.service.IGoodsSkuService; ruoyi-modules/ruoyi-goods/src/main/resources/mapper/goods/GoodsSeckillMapper.xml
@@ -1,5 +1,28 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.ruoyi.goods.mapper.GoodsSeckillMapper"> <select id="getGoodsSeckillPage" resultType="com.ruoyi.goods.controller.management.VO.GoodsSeckillVO"> select gs.id, gsku.goods_sku_name, gs.seckill_price, gs.sold_quantity, gs.seckill_stock, gs.limit_number, gs.sort_num, gs.share_title, gs.share_pic, gs.start_time, gs.end_time, gs.start_status from t_goods_seckill gs left join t_goods_sku gsku on gs.goods_sku_id = gsku.id <where> <if test="goodsSkuName != null and goodsSkuName != ''"> and gsku.goods_sku_name like concat('%',#{goodsSkuName},'%') </if> </where> order by gs.create_time desc </select> </mapper> ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java
@@ -1,8 +1,14 @@ package com.ruoyi.order.controller; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.security.annotation.InnerAuth; import com.ruoyi.order.service.IOrderService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** @@ -13,8 +19,23 @@ * @author mitao * @since 2024-05-16 */ @Slf4j @RestController @RequestMapping("/order") @AllArgsConstructor public class OrderController { private final IOrderService orderService; /** * 获取某个商品的已购会员数 * * @param id 秒杀商品id * @return 已购会员数 */ @InnerAuth @GetMapping("/seckill-members/{id}") R<Integer> getSeckillMembers(@PathVariable("id") Long id) { return R.ok(orderService.getSeckillMembers(id)); } } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/OrderMapper.java
@@ -1,7 +1,8 @@ package com.ruoyi.order.mapper; import com.ruoyi.order.domain.pojo.Order; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.order.domain.pojo.Order; import org.apache.ibatis.annotations.Param; /** * <p> @@ -13,4 +14,5 @@ */ public interface OrderMapper extends BaseMapper<Order> { Integer getSeckillMembers(@Param("id") Long id); } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/IOrderService.java
@@ -1,7 +1,7 @@ package com.ruoyi.order.service; import com.ruoyi.order.domain.pojo.Order; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.order.domain.pojo.Order; /** * <p> @@ -13,4 +13,5 @@ */ public interface IOrderService extends IService<Order> { Integer getSeckillMembers(Long id); } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
@@ -1,9 +1,9 @@ package com.ruoyi.order.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.order.domain.pojo.Order; import com.ruoyi.order.mapper.OrderMapper; import com.ruoyi.order.service.IOrderService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** @@ -17,4 +17,8 @@ @Service public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements IOrderService { @Override public Integer getSeckillMembers(Long id) { return baseMapper.getSeckillMembers(id); } } ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
@@ -2,4 +2,12 @@ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.ruoyi.order.mapper.OrderMapper"> <select id="getSeckillMembers" resultType="java.lang.Integer"> select ifnull(count(1), 0) form t_order_mall left om join t_order o on om.order_id = o.id where om.goods_sku_id = #{id} group by o.member_id </select> </select> </mapper>