ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/HomeGoodsSkuDTO.java
@@ -6,9 +6,12 @@ @Data public class HomeGoodsSkuDTO extends BasePage { @ApiModelProperty(value = "商品名称") private String skuName; @ApiModelProperty(value = "商品skuId") private Long goodsSkuId; @ApiModelProperty(value = "商品分类id") private Long categoryId; @@ -28,5 +31,8 @@ @ApiModelProperty(value = "排序方式1.全部2.30+ 3.30-15 4.15-5") private Integer year; @ApiModelProperty(value = "会员id") private Long memberId; } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/HomeGoodsSkuInfoVO.java
New file @@ -0,0 +1,79 @@ package com.ruoyi.system.api.domain.vo; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; @Data public class HomeGoodsSkuInfoVO { @ApiModelProperty(value = "商品id") @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; @ApiModelProperty(value = "商品名称") private String skuName; @ApiModelProperty(value = "商品年份") private String years; @ApiModelProperty(value = "商品分类") private String category; @ApiModelProperty(value = "商品系列") private String series; @ApiModelProperty(value = "商品品牌") private String brand; @ApiModelProperty(value = "商品香型") private String flavorType; @ApiModelProperty(value = "商品价格") private BigDecimal price; @ApiModelProperty(value = "库存") private Integer stock; @ApiModelProperty(value = "已售数量") private Integer soldQuantity; @ApiModelProperty(value = "单位") private String unit; @ApiModelProperty(value = "规格") private String spec; @ApiModelProperty(value = "规格单位") private String specUnit; @ApiModelProperty(value = "封面图") private String coverPic; @ApiModelProperty(value = "详情图,不超过五张图片") private String album; @ApiModelProperty(value = "分享标题") private String shareTitle; @ApiModelProperty(value = "分享图片") private String sharePic; @ApiModelProperty(value = "商品描述") private String description; @ApiModelProperty(value = "商品说明") private String detail; @ApiModelProperty(value = "排序") private Integer sortNum; @ApiModelProperty(value = "是收藏 1未收藏,2收藏") private Integer isCollection; @ApiModelProperty(value = "是团购 1没有团购,2有团购") private Integer isGoodsGroupPurchase; } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/HomeGoodsSkuListVO.java
@@ -29,4 +29,9 @@ @ApiModelProperty(value = "封面图") private String coverPic; @ApiModelProperty(value = "是收藏 1未收藏,2收藏") private Integer isCollection; } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/forepart/ForepartGoodsBrowseRecordController.java
New file @@ -0,0 +1,37 @@ package com.ruoyi.goods.controller.forepart; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.page.PageDTO; import com.ruoyi.goods.service.IGoodsBrowseRecordService; import com.ruoyi.system.api.domain.dto.AuctionCollectionDTO; import com.ruoyi.system.api.domain.vo.HomeGoodsSkuListVO; import io.swagger.annotations.ApiOperation; 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; import javax.annotation.Resource; /** * <p> * 会员商品浏览记录表 前端控制器 * </p> * * @author mitao * @since 2024-05-30 */ @RestController @RequestMapping("/forepart/goods-browse-record") public class ForepartGoodsBrowseRecordController { @Resource private IGoodsBrowseRecordService iGoodsBrowseRecordService; @RequestMapping("/geBrowseRecordList") @ResponseBody @ApiOperation(value = "用户端-我的浏览的普通商品") public R<PageDTO<HomeGoodsSkuListVO>> geBrowseRecordList(@RequestBody AuctionCollectionDTO auctionCollectionDTO) { return R.ok(iGoodsBrowseRecordService.geBrowseRecordList(auctionCollectionDTO)); } } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/forepart/ForepartGoodsGroupPurchaseController.java
New file @@ -0,0 +1,38 @@ package com.ruoyi.goods.controller.forepart; import com.fasterxml.jackson.core.JsonProcessingException; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.security.annotation.InnerAuth; import com.ruoyi.goods.controller.forepart.vo.GoodsGroupPurchaseInfoVO; import com.ruoyi.goods.service.IGoodsGroupPurchaseService; import com.ruoyi.system.api.domain.dto.HomeGoodsSkuDTO; import com.ruoyi.system.api.domain.vo.HomeGoodsSkuInfoVO; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; /** * <p> * 商品团购表 前端控制器 * </p> * * @author mitao * @since 2024-05-16 */ @Slf4j @RestController @RequiredArgsConstructor @RequestMapping("/forepart/goods-group-purchase") public class ForepartGoodsGroupPurchaseController { private final IGoodsGroupPurchaseService goodsGroupPurchaseService; @RequestMapping("/getGoodsGroupPurchaseInfo") @ResponseBody @ApiOperation(value = "用户端-团购商品详情") public R<GoodsGroupPurchaseInfoVO> getGoodsGroupPurchaseInfo(@RequestBody HomeGoodsSkuDTO homeGoodsSkuDTO) { return R.ok(goodsGroupPurchaseService.getGoodsGroupPurchaseInfo(homeGoodsSkuDTO)); } } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/forepart/ForepartGoodsSkuController.java
@@ -1,22 +1,17 @@ package com.ruoyi.goods.controller.forepart; 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.common.core.utils.page.PageDTO; import com.ruoyi.goods.service.IGoodsSkuService; import com.ruoyi.system.api.domain.GoodsBrand; import com.ruoyi.system.api.domain.dto.AuctionGoodsListDTO; import com.ruoyi.system.api.domain.dto.HomeGoodsSkuDTO; import com.ruoyi.system.api.domain.vo.AuctionGoodsListVO; import com.ruoyi.system.api.domain.vo.HomeGoodsSkuListVO; import com.ruoyi.system.api.domain.vo.HomeGoodsSkuInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.List; /** * <p> @@ -41,5 +36,12 @@ return R.ok(iGoodsSkuService.getHomeGoodsSkuVOList(homeGoodsSkuDTO)); } @RequestMapping("/getHomeGoodsSkuInfoVO") @ResponseBody @ApiOperation(value = "用户端-普通拍卖商品详情") public R<HomeGoodsSkuInfoVO> getHomeGoodsSkuInfo(@RequestBody HomeGoodsSkuDTO homeGoodsSkuDTO) { return R.ok(iGoodsSkuService.getHomeGoodsSkuInfo(homeGoodsSkuDTO)); } } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/forepart/vo/GoodsGroupPurchaseInfoVO.java
New file @@ -0,0 +1,77 @@ package com.ruoyi.goods.controller.forepart.vo; import com.baomidou.mybatisplus.annotation.TableField; import com.ruoyi.common.core.enums.GroupStatusEnum; import com.ruoyi.common.core.enums.ListingStatusEnum; import com.ruoyi.common.core.enums.StartStatusEnum; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.time.LocalDateTime; @Data public class GoodsGroupPurchaseInfoVO { @ApiModelProperty(value = "商品id") private Long goodsSkuId; @ApiModelProperty(value = "商品名称") private String goodsSkuName; @ApiModelProperty(value = "商品年份") private String years; @ApiModelProperty(value = "封面图") private String coverPic; @ApiModelProperty(value = "商品价格") private BigDecimal price; @ApiModelProperty(value = "分享标题") @TableField("share_title") private String shareTitle; @ApiModelProperty(value = "分享图片") @TableField("share_pic") private String sharePic; @ApiModelProperty(value = "团购价格") @TableField("group_purchase_price") private BigDecimal groupPurchasePrice; @ApiModelProperty(value = "成团人数") @TableField("group_size") private Integer groupSize; @ApiModelProperty(value = "限购数量") @TableField("limit_number") private Integer limitNumber; @ApiModelProperty(value = "当前人数") @TableField("current_number") private Integer currentNumber; @ApiModelProperty(value = "团购开始时间") @TableField("start_time") private LocalDateTime startTime; @ApiModelProperty(value = "团购结束时间") @TableField("end_time") private LocalDateTime endTime; @ApiModelProperty(value = "参团说明") @TableField("description") private String description; @ApiModelProperty(value = "开始状态 0=未开始 1=已开始 2=已结束 ") @TableField("start_status") private StartStatusEnum startStatus; @ApiModelProperty(value = "上架状态 0=已上架 1=已下架") @TableField("listing_status") private ListingStatusEnum listingStatus; @ApiModelProperty(value = "成团状态 0=待成团 1=已成团 2=成团失败") @TableField("group_status") private GroupStatusEnum groupStatus; } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsBrowseRecordService.java
@@ -1,7 +1,11 @@ package com.ruoyi.goods.service; import com.ruoyi.common.core.utils.page.PageDTO; import com.ruoyi.goods.domain.GoodsBrowseRecord; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.system.api.domain.dto.AuctionCollectionDTO; import com.ruoyi.system.api.domain.vo.HomeGoodsSkuListVO; import org.springframework.web.bind.annotation.RequestBody; /** * <p> @@ -12,5 +16,5 @@ * @since 2024-05-30 */ public interface IGoodsBrowseRecordService extends IService<GoodsBrowseRecord> { PageDTO<HomeGoodsSkuListVO> geBrowseRecordList(@RequestBody AuctionCollectionDTO auctionCollectionDTO); } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsGroupPurchaseService.java
@@ -7,7 +7,10 @@ import com.ruoyi.goods.controller.management.dto.GoodsGroupPurchaseQuery; import com.ruoyi.goods.controller.management.vo.GoodsGroupPurchaseVO; import com.ruoyi.goods.domain.GoodsGroupPurchase; import com.ruoyi.system.api.domain.dto.HomeGoodsSkuDTO; import com.ruoyi.system.api.domain.dto.ListStatusDTO; import com.ruoyi.goods.controller.forepart.vo.GoodsGroupPurchaseInfoVO; import org.springframework.web.bind.annotation.RequestBody; /** * <p> @@ -69,4 +72,6 @@ * @param id 团购商品id */ void stopImmediately(Long id); GoodsGroupPurchaseInfoVO getGoodsGroupPurchaseInfo(@RequestBody HomeGoodsSkuDTO homeGoodsSkuDTO); } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsSkuService.java
@@ -11,6 +11,7 @@ import com.ruoyi.system.api.domain.dto.HomeGoodsSkuDTO; import com.ruoyi.system.api.domain.dto.ListStatusDTO; import com.ruoyi.system.api.domain.vo.HomeGoodsSkuListVO; import com.ruoyi.system.api.domain.vo.HomeGoodsSkuInfoVO; import org.springframework.web.bind.annotation.RequestBody; import java.util.List; @@ -65,4 +66,6 @@ void updGoodsStock(List<GoodsStockUpdDTO> goodsStockUpdDTOS); PageDTO<HomeGoodsSkuListVO> getHomeGoodsSkuVOList(@RequestBody HomeGoodsSkuDTO homeGoodsSkuDTO); HomeGoodsSkuInfoVO getHomeGoodsSkuInfo(@RequestBody HomeGoodsSkuDTO homeGoodsSkuDTO); } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IMemberGoodsCollectionService.java
@@ -1,7 +1,12 @@ package com.ruoyi.goods.service; import com.ruoyi.common.core.utils.page.PageDTO; import com.ruoyi.goods.domain.MemberGoodsCollection; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.system.api.domain.dto.AuctionCollectionDTO; import com.ruoyi.system.api.domain.vo.AuctionGoodsListVO; import com.ruoyi.system.api.domain.vo.HomeGoodsSkuListVO; import org.springframework.web.bind.annotation.RequestBody; /** * <p> @@ -13,4 +18,8 @@ */ public interface IMemberGoodsCollectionService extends IService<MemberGoodsCollection> { void saveGoodsCollection(AuctionCollectionDTO auctionCollectionDTO); PageDTO<HomeGoodsSkuListVO> getGoodsCollectionList(@RequestBody AuctionCollectionDTO auctionCollectionDTO); } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsBrowseRecordServiceImpl.java
@@ -1,10 +1,28 @@ package com.ruoyi.goods.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.core.constant.SecurityConstants; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.page.PageDTO; import com.ruoyi.goods.domain.GoodsBrowseRecord; import com.ruoyi.goods.domain.MemberGoodsCollection; import com.ruoyi.goods.mapper.GoodsBrowseRecordMapper; import com.ruoyi.goods.mapper.GoodsSkuMapper; import com.ruoyi.goods.service.IGoodsBrowseRecordService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.system.api.domain.GoodsSku; import com.ruoyi.system.api.domain.dto.AuctionCollectionDTO; import com.ruoyi.system.api.domain.vo.HomeGoodsSkuListVO; import com.ruoyi.system.api.feignClient.GoodsSkuClient; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; import java.util.Set; import java.util.stream.Collectors; /** * <p> @@ -16,5 +34,44 @@ */ @Service public class GoodsBrowseRecordServiceImpl extends ServiceImpl<GoodsBrowseRecordMapper, GoodsBrowseRecord> implements IGoodsBrowseRecordService { @Resource private GoodsSkuMapper goodsSkuMapper; @Resource private GoodsSkuClient goodsSkuClient; @Override public PageDTO<HomeGoodsSkuListVO> geBrowseRecordList(AuctionCollectionDTO auctionCollectionDTO) { Set<Long> goodsSkuIdList1 = null; if (StringUtils.isNotEmpty(auctionCollectionDTO.getGoodsSkuName())) { List<GoodsSku> goodsSku = goodsSkuClient.getGoodsByName(auctionCollectionDTO.getGoodsSkuName(), SecurityConstants.INNER) .getData(); goodsSkuIdList1 = goodsSku.stream().map(GoodsSku::getId) .collect(Collectors.toSet()); } Page<HomeGoodsSkuListVO> page = new Page<>(); page.setSize(auctionCollectionDTO.getPageSize()); page.setCurrent(auctionCollectionDTO.getPageCurr()); LambdaQueryWrapper<GoodsBrowseRecord> wrapper= Wrappers.lambdaQuery(); wrapper.eq(GoodsBrowseRecord::getMemberId,auctionCollectionDTO.getMemberId()); wrapper.in(GoodsBrowseRecord::getGoodsSkuId,goodsSkuIdList1); List<GoodsBrowseRecord> list = this.list(wrapper); List<HomeGoodsSkuListVO> auctionGoodsVOS=new ArrayList<>(); for (GoodsBrowseRecord auctionCollection:list){ HomeGoodsSkuListVO auctionGoodsVO=new HomeGoodsSkuListVO(); GoodsSku goodsSku = goodsSkuMapper.selectById(auctionCollection.getGoodsSkuId()); auctionGoodsVO.setId(goodsSku.getId()); auctionGoodsVO.setPrice(goodsSku.getPrice()); auctionGoodsVO.setCoverPic(goodsSku.getCoverPic()); auctionGoodsVO.setSkuName(goodsSku.getSkuName()); auctionGoodsVO.setSoldQuantity(goodsSku.getSoldQuantity()); } page.setRecords(auctionGoodsVOS); return PageDTO.of(page); } } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsGroupPurchaseServiceImpl.java
@@ -1,5 +1,7 @@ package com.ruoyi.goods.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.fasterxml.jackson.core.JsonProcessingException; @@ -15,10 +17,12 @@ import com.ruoyi.common.core.utils.page.BeanUtils; import com.ruoyi.common.core.utils.page.PageDTO; import com.ruoyi.common.redis.service.RedisService; import com.ruoyi.goods.controller.forepart.vo.GoodsGroupPurchaseInfoVO; import com.ruoyi.goods.controller.management.dto.GoodsGroupPurchaseDTO; import com.ruoyi.goods.controller.management.dto.GoodsGroupPurchaseQuery; import com.ruoyi.goods.controller.management.vo.GoodsGroupPurchaseVO; import com.ruoyi.goods.domain.GoodsGroupPurchase; import com.ruoyi.goods.domain.MemberGoodsCollection; import com.ruoyi.goods.mapper.GoodsGroupPurchaseMapper; import com.ruoyi.goods.service.IGoodsGroupPurchaseService; import com.ruoyi.goods.service.IGoodsSkuService; @@ -27,6 +31,7 @@ import com.ruoyi.system.api.constants.NotificationTypeConstant; import com.ruoyi.system.api.domain.GoodsSku; import com.ruoyi.system.api.domain.Order; import com.ruoyi.system.api.domain.dto.HomeGoodsSkuDTO; import com.ruoyi.system.api.domain.dto.ListStatusDTO; import com.ruoyi.system.api.domain.dto.OrderUpdDTO; import com.ruoyi.system.api.domain.dto.RefundDTO; @@ -274,4 +279,33 @@ .eq(GoodsGroupPurchase::getId, id).update(); } } @Override public GoodsGroupPurchaseInfoVO getGoodsGroupPurchaseInfo(HomeGoodsSkuDTO homeGoodsSkuDTO) { GoodsSku byId = goodsSkuService.getById(homeGoodsSkuDTO.getGoodsSkuId()); LambdaQueryWrapper<GoodsGroupPurchase> wrapper3= Wrappers.lambdaQuery(); wrapper3.eq(GoodsGroupPurchase::getDelFlag,0); wrapper3.eq(GoodsGroupPurchase::getGoodsSkuId,homeGoodsSkuDTO.getGoodsSkuId()); GoodsGroupPurchase one = this.getOne(wrapper3); GoodsGroupPurchaseInfoVO goodsGroupPurchaseInfoVO=new GoodsGroupPurchaseInfoVO(); goodsGroupPurchaseInfoVO.setGoodsSkuId(one.getId()); goodsGroupPurchaseInfoVO.setGoodsSkuName(byId.getSkuName()); goodsGroupPurchaseInfoVO.setYears(String.valueOf(byId.getYears().getYear())); goodsGroupPurchaseInfoVO.setCoverPic(byId.getCoverPic()); goodsGroupPurchaseInfoVO.setPrice(byId.getPrice()); goodsGroupPurchaseInfoVO.setShareTitle(byId.getShareTitle()); goodsGroupPurchaseInfoVO.setSharePic(byId.getSharePic()); goodsGroupPurchaseInfoVO.setGroupPurchasePrice(one.getGroupPurchasePrice()); goodsGroupPurchaseInfoVO.setGroupSize(one.getGroupSize()); goodsGroupPurchaseInfoVO.setLimitNumber(one.getLimitNumber()); goodsGroupPurchaseInfoVO.setStartTime(one.getStartTime()); goodsGroupPurchaseInfoVO.setEndTime(one.getEndTime()); goodsGroupPurchaseInfoVO.setDescription(one.getDescription()); goodsGroupPurchaseInfoVO.setStartStatus(one.getStartStatus()); goodsGroupPurchaseInfoVO.setListingStatus(one.getListingStatus()); goodsGroupPurchaseInfoVO.setGroupStatus(one.getGroupStatus()); return goodsGroupPurchaseInfoVO; } } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSkuServiceImpl.java
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.ruoyi.common.core.constant.SecurityConstants; import com.ruoyi.common.core.enums.ListingStatusEnum; import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.utils.StringUtils; @@ -18,24 +19,29 @@ import com.ruoyi.goods.controller.management.vo.GoodsSkuVO; import com.ruoyi.goods.domain.GoodsGroupPurchase; import com.ruoyi.goods.domain.GoodsInfoTitleValue; import com.ruoyi.goods.domain.MemberGoodsCollection; import com.ruoyi.goods.mapper.GoodsGroupPurchaseMapper; import com.ruoyi.goods.mapper.GoodsSeckillMapper; import com.ruoyi.goods.mapper.GoodsSkuMapper; import com.ruoyi.goods.service.IGoodsInfoTitleValueService; import com.ruoyi.goods.service.IGoodsSkuService; import com.ruoyi.system.api.domain.GoodsSeckill; import com.ruoyi.system.api.domain.GoodsSku; import com.ruoyi.goods.service.IMemberGoodsCollectionService; import com.ruoyi.system.api.domain.*; import com.ruoyi.system.api.domain.dto.GoodsStockUpdDTO; import com.ruoyi.system.api.domain.dto.HomeGoodsSkuDTO; import com.ruoyi.system.api.domain.dto.ListStatusDTO; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; import com.ruoyi.system.api.domain.vo.AuctionGoodsListVO; import com.ruoyi.system.api.domain.vo.HomeGoodsSkuListVO; import com.ruoyi.system.api.domain.vo.HomeGoodsSkuInfoVO; import com.ruoyi.system.api.feignClient.GoodsSkuClient; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.redisson.api.RLock; @@ -43,6 +49,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; /** * <p> @@ -61,6 +69,12 @@ private final GoodsSeckillMapper goodsSeckillMapper; private final GoodsGroupPurchaseMapper goodsGroupPurchaseMapper; private final RedissonClient redissonClient; @Resource private GoodsSkuClient goodsSkuClient; @Resource private IMemberGoodsCollectionService iMemberGoodsCollectionService; private static final ObjectMapper objectMapper = new ObjectMapper(); @@ -276,6 +290,7 @@ LambdaQueryWrapper<GoodsSku> wrapper3= Wrappers.lambdaQuery(); wrapper3.eq(GoodsSku::getDelFlag,0); wrapper3.eq(GoodsSku::getListingStatus,0); wrapper3.like(GoodsSku::getSkuName,homeGoodsSkuDTO.getSkuName()); wrapper3.eq(GoodsSku::getSkuName,homeGoodsSkuDTO.getSkuName()); wrapper3.eq(GoodsSku::getBrandId,homeGoodsSkuDTO.getBrandId()); @@ -294,12 +309,98 @@ if (homeGoodsSkuDTO.getSort()==5){ wrapper3.orderByDesc(GoodsSku::getSoldQuantity); } if(homeGoodsSkuDTO.getYear()==2){ LocalDateTime now = LocalDateTime.now(); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); LocalDateTime newTime7 = now.minusYears(30); String formattedDate7 = newTime7.format(formatter); LocalDateTime parseTime7 = LocalDateTime.parse(formattedDate7, formatter); wrapper3.gt(GoodsSku::getYears,parseTime7); } if(homeGoodsSkuDTO.getYear()==3){ LocalDateTime now = LocalDateTime.now(); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); LocalDateTime newTime7 = now.minusYears(30); String formattedDate7 = newTime7.format(formatter); LocalDateTime parseTime7 = LocalDateTime.parse(formattedDate7, formatter); LocalDateTime newTime15 = now.minusYears(15); String formattedDate15 = newTime15.format(formatter); LocalDateTime parseTime15= LocalDateTime.parse(formattedDate15, formatter); wrapper3.gt(GoodsSku::getYears, parseTime15) .le(GoodsSku::getYears, parseTime7); } if(homeGoodsSkuDTO.getYear()==3){ LocalDateTime now = LocalDateTime.now(); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); LocalDateTime newTime7 = now.minusYears(5); String formattedDate7 = newTime7.format(formatter); LocalDateTime parseTime7 = LocalDateTime.parse(formattedDate7, formatter); LocalDateTime newTime15 = now.minusYears(15); String formattedDate15 = newTime15.format(formatter); LocalDateTime parseTime15= LocalDateTime.parse(formattedDate15, formatter); wrapper3.ge(GoodsSku::getYears, parseTime7) .le(GoodsSku::getYears, parseTime15); } wrapper3.orderByAsc(GoodsSku::getSortNum); Page<GoodsSku> page1 = this.page(page, wrapper3); PageDTO<HomeGoodsSkuListVO> articleCommentsVOPageDTO = PageDTO.of(page1, HomeGoodsSkuListVO.class); return articleCommentsVOPageDTO; } @Override public HomeGoodsSkuInfoVO getHomeGoodsSkuInfo(HomeGoodsSkuDTO homeGoodsSkuDTO) { GoodsSku byId = this.getById(homeGoodsSkuDTO.getGoodsSkuId()); HomeGoodsSkuInfoVO homeGoodsSkuInfoVO=new HomeGoodsSkuInfoVO(); homeGoodsSkuInfoVO.setId(byId.getId()); homeGoodsSkuInfoVO.setSkuName(byId.getSkuName()); homeGoodsSkuInfoVO.setYears(String.valueOf(byId.getYears().getYear())); GoodsBrand data = goodsSkuClient.getBrandOne(byId.getBrandId(), SecurityConstants.INNER).getData(); GoodsCategory data1 = goodsSkuClient.getCategoryOne(byId.getCategoryId(), SecurityConstants.INNER).getData(); GoodsSeries data2 = goodsSkuClient.getSeriesOne(byId.getSeriesId(), SecurityConstants.INNER).getData(); GoodsFlavorType data3 = goodsSkuClient.getFlavorTypeOne(byId.getFlavorTypeId(), SecurityConstants.INNER).getData(); homeGoodsSkuInfoVO.setBrand(data.getBrandName()); homeGoodsSkuInfoVO.setCategory(data1.getCategoryName()); homeGoodsSkuInfoVO.setSeries(data2.getSeriesName()); homeGoodsSkuInfoVO.setFlavorType(data3.getFlavorTypeName()); homeGoodsSkuInfoVO.setPrice(byId.getPrice()); homeGoodsSkuInfoVO.setSoldQuantity(byId.getSoldQuantity()); homeGoodsSkuInfoVO.setUnit(byId.getUnit()); homeGoodsSkuInfoVO.setSpec(byId.getSpec()); homeGoodsSkuInfoVO.setSpecUnit(byId.getSpecUnit()); homeGoodsSkuInfoVO.setCoverPic(byId.getCoverPic()); homeGoodsSkuInfoVO.setAlbum(byId.getAlbum()); homeGoodsSkuInfoVO.setDescription(byId.getDescription()); homeGoodsSkuInfoVO.setDetail(byId.getDetail()); homeGoodsSkuInfoVO.setShareTitle(byId.getShareTitle()); homeGoodsSkuInfoVO.setSharePic(byId.getSharePic()); LambdaQueryWrapper<MemberGoodsCollection> wrapper3= Wrappers.lambdaQuery(); wrapper3.eq(MemberGoodsCollection::getDelFlag,0); wrapper3.eq(MemberGoodsCollection::getMemberId,homeGoodsSkuDTO.getMemberId()); wrapper3.eq(MemberGoodsCollection::getTargetId,homeGoodsSkuDTO.getGoodsSkuId()); List<MemberGoodsCollection> list = iMemberGoodsCollectionService.list(wrapper3); if (list.size()>0){ homeGoodsSkuInfoVO.setIsCollection(2); }else{ homeGoodsSkuInfoVO.setIsCollection(1); } LambdaQueryWrapper<GoodsGroupPurchase> queryWrapper1 =new LambdaQueryWrapper<>(); queryWrapper1.eq(GoodsGroupPurchase::getListingStatus, ListingStatusEnum.ON_SHELVES) .eq(GoodsGroupPurchase::getGoodsSkuId, byId.getId()); GoodsGroupPurchase goodsGroupPurchase = goodsGroupPurchaseMapper.selectOne(queryWrapper1); if (goodsGroupPurchase!=null){ homeGoodsSkuInfoVO.setIsGoodsGroupPurchase(2); }else{ homeGoodsSkuInfoVO.setIsGoodsGroupPurchase(1); } return homeGoodsSkuInfoVO; } private boolean updateGoodsStock(GoodsSku skus, Integer auctionStock) { return this.lambdaUpdate() .set(skus.getStock() + auctionStock > 0, GoodsSku::getStock, ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/MemberGoodsCollectionServiceImpl.java
@@ -1,10 +1,26 @@ package com.ruoyi.goods.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.core.constant.SecurityConstants; import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.utils.page.PageDTO; import com.ruoyi.goods.domain.MemberGoodsCollection; import com.ruoyi.goods.mapper.GoodsSkuMapper; import com.ruoyi.goods.mapper.MemberGoodsCollectionMapper; import com.ruoyi.goods.service.IMemberGoodsCollectionService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.system.api.domain.AuctionGoods; import com.ruoyi.system.api.domain.GoodsSku; import com.ruoyi.system.api.domain.dto.AuctionCollectionDTO; import com.ruoyi.system.api.domain.vo.AuctionGoodsListVO; import com.ruoyi.system.api.domain.vo.HomeGoodsSkuListVO; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; /** * <p> @@ -17,4 +33,62 @@ @Service public class MemberGoodsCollectionServiceImpl extends ServiceImpl<MemberGoodsCollectionMapper, MemberGoodsCollection> implements IMemberGoodsCollectionService { @Resource private GoodsSkuMapper goodsSkuMapper; @Override public void saveGoodsCollection(AuctionCollectionDTO auctionCollectionDTO) { if (auctionCollectionDTO.getMemberId()!=null) { throw new ServiceException("用户ID不能为空"); } if (auctionCollectionDTO.getState()!=null) { throw new ServiceException("类型不能为空"); } LambdaQueryWrapper< MemberGoodsCollection> wrapper= Wrappers.lambdaQuery(); wrapper.eq(MemberGoodsCollection::getMemberId,auctionCollectionDTO.getMemberId()); wrapper.eq(MemberGoodsCollection::getTargetId,auctionCollectionDTO.getGoodsSkuId()); if (auctionCollectionDTO.getState()==1){ List<MemberGoodsCollection> list = this.list(wrapper); if (list.size()==0){ MemberGoodsCollection m =new MemberGoodsCollection(); m.setMemberId(auctionCollectionDTO.getMemberId()); m.setTargetId(auctionCollectionDTO.getGoodsSkuId()); this.save(m); } }else{ List<MemberGoodsCollection> list = this.list(wrapper); if (list.size()>0){ for (MemberGoodsCollection memberArticleCollection:list){ this.removeById(memberArticleCollection); } } } } @Override public PageDTO<HomeGoodsSkuListVO> getGoodsCollectionList(AuctionCollectionDTO auctionCollectionDTO) { Page<HomeGoodsSkuListVO> page = new Page<>(); page.setSize(auctionCollectionDTO.getPageSize()); page.setCurrent(auctionCollectionDTO.getPageCurr()); LambdaQueryWrapper< MemberGoodsCollection> wrapper= Wrappers.lambdaQuery(); wrapper.eq(MemberGoodsCollection::getMemberId,auctionCollectionDTO.getMemberId()); List<MemberGoodsCollection> list = this.list(wrapper); List<HomeGoodsSkuListVO> auctionGoodsVOS=new ArrayList<>(); for (MemberGoodsCollection auctionCollection:list){ HomeGoodsSkuListVO auctionGoodsVO=new HomeGoodsSkuListVO(); GoodsSku goodsSku = goodsSkuMapper.selectById(auctionCollection.getTargetId()); auctionGoodsVO.setId(goodsSku.getId()); auctionGoodsVO.setPrice(goodsSku.getPrice()); auctionGoodsVO.setCoverPic(goodsSku.getCoverPic()); auctionGoodsVO.setSkuName(goodsSku.getSkuName()); auctionGoodsVO.setSoldQuantity(goodsSku.getSoldQuantity()); auctionGoodsVO.setIsCollection(2); } page.setRecords(auctionGoodsVOS); return PageDTO.of(page); } }