master:系统商品定价调整,涉及到的客户销售管理,客户定价等一系列优化;
parent
5d7cebeb0b
commit
27c00b9cc4
|
|
@ -8,7 +8,7 @@ import com.ruoyi.web.controller.xkt.vo.storeProdColorPrice.StoreProdColorPricePa
|
|||
import com.ruoyi.web.controller.xkt.vo.storeProdColorPrice.StoreProdColorPriceVO;
|
||||
import com.ruoyi.xkt.dto.storeProdColorPrice.StoreProdColorPricePageDTO;
|
||||
import com.ruoyi.xkt.dto.storeProdColorPrice.StoreProdColorPriceResDTO;
|
||||
import com.ruoyi.xkt.service.IStoreProductColorPriceService;
|
||||
import com.ruoyi.xkt.service.IStoreProductColorService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
|
@ -30,19 +30,19 @@ import java.util.List;
|
|||
@RequestMapping("/rest/v1/prod-color-prices")
|
||||
public class StoreProductColorPriceController extends XktBaseController {
|
||||
|
||||
final IStoreProductColorPriceService prodColorPriceService;
|
||||
final IStoreProductColorService prodColorService;
|
||||
|
||||
@ApiOperation(value = "根据storeProdId获取所有颜色分类及定价", httpMethod = "GET", response = R.class)
|
||||
@GetMapping(value = "/{storeId}/{storeProdId}")
|
||||
public R<List<StoreProdColorPriceVO>> getColorPriceByStoreProdId(@PathVariable(value = "storeProdId") Long storeProdId, @PathVariable("storeId") Long storeId) {
|
||||
return R.ok(BeanUtil.copyToList(prodColorPriceService.getColorPriceByStoreProdId(storeId, storeProdId), StoreProdColorPriceVO.class));
|
||||
return R.ok(BeanUtil.copyToList(prodColorService.getColorPriceByStoreProdId(storeId, storeProdId), StoreProdColorPriceVO.class));
|
||||
}
|
||||
|
||||
@PreAuthorize("@ss.hasAnyRoles('admin,general_admin,store')||@ss.hasSupplierSubRole()")
|
||||
@ApiOperation(value = "获取商品颜色价格列表", httpMethod = "POST", response = R.class)
|
||||
@PostMapping("/page")
|
||||
public R<Page<StoreProdColorPriceResDTO>> page(@Validated @RequestBody StoreProdColorPricePageVO pageVO) {
|
||||
return R.ok(prodColorPriceService.page(BeanUtil.toBean(pageVO, StoreProdColorPricePageDTO.class)));
|
||||
return R.ok(prodColorService.page(BeanUtil.toBean(pageVO, StoreProdColorPricePageDTO.class)));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -120,13 +120,6 @@ public class StoreProductController extends XktBaseController {
|
|||
return R.ok(storeProdService.updateStoreProductStatus(BeanUtil.toBean(prodStatusVO, StoreProdStatusDTO.class)));
|
||||
}
|
||||
|
||||
@PreAuthorize("@ss.hasAnyRoles('admin,general_admin,store')||@ss.hasSupplierSubRole()")
|
||||
@ApiOperation(value = "获取档口图片空间", httpMethod = "POST", response = R.class)
|
||||
@PostMapping(value = "/pic-space")
|
||||
public R<StoreProdPicSpaceResVO> getStoreProductPicSpace(@Validated @RequestBody StoreProdPicSpaceVO picSpaceVO) {
|
||||
return R.ok(BeanUtil.toBean(storeProdService.getStoreProductPicSpace(BeanUtil.toBean(picSpaceVO, StoreProdPicSpaceDTO.class)), StoreProdPicSpaceResVO.class));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "获取商品各个状态数量", httpMethod = "GET", response = R.class)
|
||||
@GetMapping(value = "/status/num/{storeId}")
|
||||
public R<StoreProdStatusCountResVO> getStatusNum(@PathVariable Long storeId) {
|
||||
|
|
|
|||
|
|
@ -188,12 +188,22 @@ public class StoreProdCreateVO {
|
|||
@Valid
|
||||
@ApiModel
|
||||
public static class SPCSizeVO {
|
||||
|
||||
@ApiModelProperty(value = "档口商品颜色ID")
|
||||
private Long storeColorId;
|
||||
@NotBlank(message = "颜色名称不能为空!")
|
||||
@ApiModelProperty(value = "颜色名称", required = true)
|
||||
private String colorName;
|
||||
@ApiModelProperty(value = "商品尺码", required = true)
|
||||
@NotNull(message = "档口商品定价不能为空!")
|
||||
private Integer size;
|
||||
@NotNull(message = "档口商品定价不能为空!")
|
||||
@ApiModelProperty(value = "档口商品定价", required = true)
|
||||
private BigDecimal price;
|
||||
@NotNull(message = "是否是标准尺码不能为空!")
|
||||
@ApiModelProperty(value = "是否是标准尺码", required = true)
|
||||
private Integer standard;
|
||||
|
||||
}
|
||||
|
||||
@Data
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@ import lombok.Data;
|
|||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
|
@ -58,8 +57,6 @@ public class StoreProdResVO {
|
|||
private List<StoreColorVO> allColorList;
|
||||
@ApiModelProperty(value = "商品颜色列表")
|
||||
private List<StoreColorVO> colorList;
|
||||
@ApiModelProperty(value = "档口颜色价格列表")
|
||||
private List<StoreProdColorPriceVO> priceList;
|
||||
@ApiModelProperty(value = "档口商品尺码列表")
|
||||
private List<StoreProdSizeVO> sizeList;
|
||||
@ApiModelProperty(value = "档口服务承诺")
|
||||
|
|
@ -74,12 +71,16 @@ public class StoreProdResVO {
|
|||
@NoArgsConstructor
|
||||
@Valid
|
||||
public static class StoreProdSizeVO {
|
||||
@ApiModelProperty(value = "商品尺码", required = true)
|
||||
@NotNull(message = "档口商品定价不能为空!")
|
||||
@ApiModelProperty(value = "档口商品颜色ID")
|
||||
private Long storeColorId;
|
||||
@ApiModelProperty(value = "颜色名称")
|
||||
private String colorName;
|
||||
@ApiModelProperty(value = "商品尺码")
|
||||
private Integer size;
|
||||
@NotNull(message = "是否是标准尺码不能为空!")
|
||||
@ApiModelProperty(value = "是否是标准尺码", required = true)
|
||||
@ApiModelProperty(value = "是否是标准尺码")
|
||||
private Integer standard;
|
||||
@ApiModelProperty(value = "尺码价格")
|
||||
private BigDecimal price;
|
||||
}
|
||||
|
||||
@Data
|
||||
|
|
@ -98,11 +99,11 @@ public class StoreProdResVO {
|
|||
|
||||
@Data
|
||||
public static class StoreProdCateAttrVO {
|
||||
@ApiModelProperty(value = "帮面材质", required = true)
|
||||
@ApiModelProperty(value = "帮面材质")
|
||||
private String upperMaterial;
|
||||
@ApiModelProperty(value = "内里材质", required = true)
|
||||
@ApiModelProperty(value = "内里材质")
|
||||
private String liningMaterial;
|
||||
@ApiModelProperty(value = "鞋垫材质", required = true)
|
||||
@ApiModelProperty(value = "鞋垫材质")
|
||||
private String insoleMaterial;
|
||||
@ApiModelProperty(value = "上市季节年份")
|
||||
private String releaseYearSeason;
|
||||
|
|
@ -142,14 +143,6 @@ public class StoreProdResVO {
|
|||
private String suitablePerson;
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class StoreProdColorPriceVO {
|
||||
@ApiModelProperty(value = "档口商品颜色ID")
|
||||
private Long storeColorId;
|
||||
@ApiModelProperty(value = "档口商品定价")
|
||||
private BigDecimal price;
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class StoreProdSvcVO {
|
||||
@ApiModelProperty(value = "大小码及定制款可退")
|
||||
|
|
|
|||
|
|
@ -81,10 +81,6 @@ public class StoreProdVO {
|
|||
@Valid
|
||||
@ApiModelProperty(value = "档口尺码列表", required = true)
|
||||
private List<StoreProdCreateVO.SPCSizeVO> sizeList;
|
||||
@Valid
|
||||
@NotNull(message = "商品颜色价格列表不能为空!")
|
||||
@ApiModelProperty(value = "档口颜色价格列表", required = true)
|
||||
private List<StoreProdCreateVO.SPCColorPriceVO> colorPriceList;
|
||||
@ApiModelProperty(value = "档口服务承诺")
|
||||
private StoreProdCreateVO.StoreProdSvcVO svc;
|
||||
@NotBlank(message = "详情内容不能为空!")
|
||||
|
|
@ -94,24 +90,6 @@ public class StoreProdVO {
|
|||
private StoreProdCreateVO.StoreProdProcessVO process;
|
||||
|
||||
|
||||
@Data
|
||||
@Valid
|
||||
@ApiModel
|
||||
public static class SPCColorPriceVO {
|
||||
@ApiModelProperty(value = "档口商品颜色ID")
|
||||
private Long storeColorId;
|
||||
@NotBlank(message = "颜色名称不能为空!")
|
||||
@ApiModelProperty(value = "颜色名称", required = true)
|
||||
private String colorName;
|
||||
@NotNull(message = "档口商品定价不能为空!")
|
||||
@ApiModelProperty(value = "档口商品定价", required = true)
|
||||
private BigDecimal price;
|
||||
@NotNull(message = "排序不能为空!")
|
||||
@ApiModelProperty(value = "排序", required = true)
|
||||
private Integer orderNum;
|
||||
}
|
||||
|
||||
|
||||
@Data
|
||||
@Valid
|
||||
@ApiModel
|
||||
|
|
|
|||
|
|
@ -28,8 +28,6 @@ public class StoreProdStockAndDiscountResVO {
|
|||
private BigDecimal price;
|
||||
@ApiModelProperty(value = "优惠金额")
|
||||
private Integer discount;
|
||||
@ApiModelProperty(value = "大小码加价")
|
||||
private Integer overPrice;
|
||||
@ApiModelProperty(value = "商品货号")
|
||||
private String prodArtNum;
|
||||
@ApiModelProperty(value = "档口商品ID")
|
||||
|
|
|
|||
|
|
@ -55,8 +55,6 @@ public class ShopCartEditDetailResVO {
|
|||
private String colorName;
|
||||
@ApiModelProperty(value = "排序")
|
||||
private Integer orderNum;
|
||||
@ApiModelProperty(value = "档口商品定价")
|
||||
private BigDecimal price;
|
||||
@ApiModelProperty(value = "商品尺码及库存")
|
||||
List<StoreProdSizeStockVO> sizeStockList;
|
||||
}
|
||||
|
|
@ -65,6 +63,8 @@ public class ShopCartEditDetailResVO {
|
|||
@ApiModel
|
||||
@Accessors(chain = true)
|
||||
public static class StoreProdSizeStockVO {
|
||||
@ApiModelProperty(value = "档口商品定价")
|
||||
private BigDecimal price;
|
||||
@ApiModelProperty(value = "商品尺码")
|
||||
private Integer size;
|
||||
@ApiModelProperty(value = "尺码库存")
|
||||
|
|
|
|||
|
|
@ -114,7 +114,6 @@ public class XktTask {
|
|||
final StoreProductFileMapper storeProdFileMapper;
|
||||
final UserSearchHistoryMapper userSearchHisMapper;
|
||||
final UserBrowsingHistoryMapper userBrowHisMapper;
|
||||
final StoreProductColorPriceMapper prodColorPriceMapper;
|
||||
final IPictureService pictureService;
|
||||
final NoticeMapper noticeMapper;
|
||||
final UserNoticeMapper userNoticeMapper;
|
||||
|
|
@ -123,6 +122,7 @@ public class XktTask {
|
|||
final IExpressService expressService;
|
||||
final ZtoExpressManagerImpl ztoExpressManager;
|
||||
final SysDictDataMapper dictDataMapper;
|
||||
final StoreProductColorSizeMapper prodColorSizeMapper;
|
||||
|
||||
public void test() throws IOException {
|
||||
System.err.println("aaa");
|
||||
|
|
@ -845,12 +845,8 @@ public class XktTask {
|
|||
List<SysProductCategory> prodCateList = this.prodCateMapper.selectList(new LambdaQueryWrapper<SysProductCategory>()
|
||||
.eq(SysProductCategory::getDelFlag, Constants.UNDELETED));
|
||||
Map<Long, SysProductCategory> prodCateMap = prodCateList.stream().collect(Collectors.toMap(SysProductCategory::getId, x -> x));
|
||||
// 父级分类
|
||||
Map<Long, Long> parProdCateMap = prodCateList.stream().collect(Collectors.toMap(SysProductCategory::getParentId, SysProductCategory::getParentId, (s1, s2) -> s2));
|
||||
// 子分类
|
||||
Map<Long, Long> childProdCateMap = prodCateList.stream().collect(Collectors.toMap(SysProductCategory::getId, SysProductCategory::getId));
|
||||
// 获取当前商品最低价格
|
||||
Map<Long, BigDecimal> prodMinPriceMap = this.prodColorPriceMapper.selectStoreProdMinPriceList(storeProdIdList).stream().collect(Collectors
|
||||
Map<Long, BigDecimal> prodMinPriceMap = this.prodColorSizeMapper.selectStoreProdMinPriceList(storeProdIdList).stream().collect(Collectors
|
||||
.toMap(StoreProdMinPriceDTO::getStoreProdId, StoreProdMinPriceDTO::getPrice));
|
||||
// 档口商品的属性map
|
||||
Map<Long, StoreProductCategoryAttribute> cateAttrMap = this.cateAttrMapper.selectList(new LambdaQueryWrapper<StoreProductCategoryAttribute>()
|
||||
|
|
|
|||
|
|
@ -17,33 +17,42 @@ import java.math.BigDecimal;
|
|||
* @author ruoyi
|
||||
* @date 2025-03-26
|
||||
*/
|
||||
/*
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class StoreProductColorPrice extends XktBaseEntity {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
*/
|
||||
/**
|
||||
* 档口商品颜色价格ID
|
||||
*/
|
||||
*//*
|
||||
|
||||
@TableId
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
*/
|
||||
/**
|
||||
* 档口颜色ID
|
||||
*/
|
||||
*//*
|
||||
|
||||
@Excel(name = "档口颜色ID")
|
||||
private Long storeColorId;
|
||||
|
||||
/**
|
||||
*/
|
||||
/**
|
||||
* 档口商品ID
|
||||
*/
|
||||
*//*
|
||||
|
||||
@Excel(name = "档口商品ID")
|
||||
private Long storeProdId;
|
||||
|
||||
/**
|
||||
*/
|
||||
/**
|
||||
* 档口商品定价
|
||||
*/
|
||||
*//*
|
||||
|
||||
@Excel(name = "档口商品定价")
|
||||
private BigDecimal price;
|
||||
|
||||
|
|
@ -63,3 +72,4 @@ public class StoreProductColorPrice extends XktBaseEntity {
|
|||
.toString();
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ public class StoreProdColorPriceResDTO {
|
|||
private String prodArtNum;
|
||||
@ApiModelProperty(value = "颜色名称")
|
||||
private String colorName;
|
||||
@ApiModelProperty(value = "档口商品颜色定价")
|
||||
@ApiModelProperty(value = "档口商品颜色最低售价")
|
||||
private BigDecimal price;
|
||||
@ApiModelProperty(value = "大小码加价")
|
||||
private Integer overPrice;
|
||||
|
|
|
|||
|
|
@ -3,6 +3,8 @@ package com.ruoyi.xkt.dto.storeProdColorSize;
|
|||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* @author liujiang
|
||||
* @version v1.0
|
||||
|
|
@ -11,9 +13,15 @@ import lombok.Data;
|
|||
@Data
|
||||
public class StoreProdSizeDTO {
|
||||
|
||||
@ApiModelProperty(value = "档口商品颜色ID")
|
||||
private Long storeColorId;
|
||||
@ApiModelProperty(value = "颜色名称")
|
||||
private String colorName;
|
||||
@ApiModelProperty(value = "商品尺码")
|
||||
private Integer size;
|
||||
@ApiModelProperty(value = "是否是标准尺码")
|
||||
private Integer standard;
|
||||
@ApiModelProperty(value = "尺码价格")
|
||||
private BigDecimal price;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
package com.ruoyi.xkt.dto.storeProduct;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.ruoyi.xkt.dto.storeColor.StoreColorDTO;
|
||||
import com.ruoyi.xkt.dto.storeProdCateAttr.StoreProdCateAttrDTO;
|
||||
import com.ruoyi.xkt.dto.storeProdProcess.StoreProdProcessDTO;
|
||||
|
|
@ -14,9 +13,6 @@ import lombok.NoArgsConstructor;
|
|||
import lombok.experimental.Accessors;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import javax.validation.constraints.Size;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
|
@ -33,25 +29,17 @@ public class StoreProdDTO {
|
|||
|
||||
@ApiModelProperty(value = "档口商品名称")
|
||||
private String prodName;
|
||||
@ApiModelProperty(value = "档口ID", required = true)
|
||||
@NotNull(message = "档口ID不能为空!")
|
||||
@ApiModelProperty(value = "档口ID")
|
||||
private Long storeId;
|
||||
@ApiModelProperty(value = "商品分类ID", required = true)
|
||||
@NotNull(message = "商品分类ID不能为空!")
|
||||
@ApiModelProperty(value = "商品分类ID")
|
||||
private Long prodCateId;
|
||||
@ApiModelProperty(value = "商品分类名称", required = true)
|
||||
@NotBlank(message = "商品分类名称不能为空!")
|
||||
@ApiModelProperty(value = "商品分类名称")
|
||||
private String prodCateName;
|
||||
@ApiModelProperty(value = "工厂货号")
|
||||
@Size(min = 0, max = 15, message = "工厂货号不能超过60个字!")
|
||||
private String factoryArtNum;
|
||||
@ApiModelProperty(value = "商品货号", required = true)
|
||||
@Size(min = 0, max = 15, message = "商品货号不能超过60个字!")
|
||||
@NotBlank(message = "商品货号不能为空!")
|
||||
@ApiModelProperty(value = "商品货号")
|
||||
private String prodArtNum;
|
||||
@ApiModelProperty(value = "商品标题", required = true)
|
||||
@Size(min = 0, max = 60, message = "商品标题不能超过60个字!")
|
||||
@NotBlank(message = "商品标题不能为空!")
|
||||
@ApiModelProperty(value = "商品标题")
|
||||
private String prodTitle;
|
||||
@ApiModelProperty(value = "商品重量")
|
||||
private BigDecimal prodWeight;
|
||||
|
|
@ -61,72 +49,41 @@ public class StoreProdDTO {
|
|||
private Integer overPrice;
|
||||
@ApiModelProperty(value = "发货时效")
|
||||
private Integer deliveryTime;
|
||||
@ApiModelProperty(value = "上架方式:1 立即上架 2 定时上架", required = true)
|
||||
@NotNull(message = "上架方式不能为空!")
|
||||
@ApiModelProperty(value = "上架方式:1 立即上架 2 定时上架")
|
||||
private Integer listingWay;
|
||||
@ApiModelProperty(value = "商品状态:1.未发布 2. 在售 3. 尾货 4.已下架 5. 已删除", required = true)
|
||||
@NotNull(message = "商品状态不能为空!")
|
||||
@ApiModelProperty(value = "商品状态:1.未发布 2. 在售 3. 尾货 4.已下架 5. 已删除")
|
||||
private Integer prodStatus;
|
||||
@ApiModelProperty(value = "定时发货时间(精确到小时)")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH")
|
||||
private Date listingWaySchedule;
|
||||
@ApiModelProperty(value = "档口文件列表", required = true)
|
||||
@NotNull(message = "档口文件不能为空!")
|
||||
@Valid
|
||||
@ApiModelProperty(value = "档口文件列表")
|
||||
private List<StoreProdFileDTO> fileList;
|
||||
@NotNull(message = "档口类目属性不能为空!")
|
||||
@Valid
|
||||
@ApiModelProperty(value = "档口类目属性", required = true)
|
||||
@ApiModelProperty(value = "档口类目属性")
|
||||
private StoreProdCateAttrDTO cateAttr;
|
||||
@NotNull(message = "档口所有颜色列表不能为空!")
|
||||
@ApiModelProperty(value = "档口所有颜色列表", required = true)
|
||||
@Valid
|
||||
@ApiModelProperty(value = "档口所有颜色列表")
|
||||
private List<StoreColorDTO> allColorList;
|
||||
@NotNull(message = "档口尺码列表不能为空!")
|
||||
@Valid
|
||||
@ApiModelProperty(value = "档口尺码列表", required = true)
|
||||
@ApiModelProperty(value = "档口尺码列表")
|
||||
private List<SPCSizeDTO> sizeList;
|
||||
@Valid
|
||||
@NotNull(message = "商品颜色价格列表不能为空!")
|
||||
@ApiModelProperty(value = "档口颜色价格列表", required = true)
|
||||
private List<SPCColorPriceDTO> colorPriceList;
|
||||
@ApiModelProperty(value = "档口服务承诺")
|
||||
private StoreProdSvcDTO svc;
|
||||
@NotBlank(message = "详情内容不能为空!")
|
||||
@ApiModelProperty(value = "详情内容", required = true)
|
||||
// @Xss
|
||||
@ApiModelProperty(value = "详情内容")
|
||||
private String detail;
|
||||
@ApiModelProperty(value = "档口生产工艺")
|
||||
private StoreProdProcessDTO process;
|
||||
|
||||
|
||||
@Data
|
||||
@Valid
|
||||
public static class SPCColorPriceDTO {
|
||||
@ApiModelProperty(value = "档口商品颜色ID")
|
||||
private Long storeColorId;
|
||||
@NotBlank(message = "颜色名称不能为空!")
|
||||
@ApiModelProperty(value = "颜色名称", required = true)
|
||||
private String colorName;
|
||||
@NotNull(message = "档口商品定价不能为空!")
|
||||
@ApiModelProperty(value = "档口商品定价", required = true)
|
||||
private BigDecimal price;
|
||||
@NotNull(message = "排序不能为空!")
|
||||
@ApiModelProperty(value = "排序", required = true)
|
||||
private Integer orderNum;
|
||||
}
|
||||
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Valid
|
||||
public static class SPCSizeDTO {
|
||||
@ApiModelProperty(value = "商品尺码", required = true)
|
||||
@NotNull(message = "档口商品定价不能为空!")
|
||||
@ApiModelProperty(value = "档口商品颜色ID")
|
||||
private Long storeColorId;
|
||||
@ApiModelProperty(value = "颜色名称")
|
||||
private String colorName;
|
||||
@ApiModelProperty(value = "商品尺码")
|
||||
private Integer size;
|
||||
@NotNull(message = "是否是标准尺码不能为空!")
|
||||
@ApiModelProperty(value = "是否是标准尺码", required = true)
|
||||
@ApiModelProperty(value = "档口商品定价")
|
||||
private BigDecimal price;
|
||||
@ApiModelProperty(value = "是否是标准尺码")
|
||||
private Integer standard;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -65,8 +65,6 @@ public class StoreProdResDTO {
|
|||
private List<StoreProdColorDTO> colorList;
|
||||
@ApiModelProperty(value = "档口商品尺码列表")
|
||||
private List<StoreProdSizeDTO> sizeList;
|
||||
@ApiModelProperty(value = "档口颜色价格列表")
|
||||
private List<StoreProdColorPriceSimpleDTO> priceList;
|
||||
@ApiModelProperty(value = "档口服务承诺")
|
||||
private StoreProdSvcDTO svc;
|
||||
@ApiModelProperty(value = "详情内容")
|
||||
|
|
|
|||
|
|
@ -24,12 +24,8 @@ public class StoreProdStockAndDiscountResDTO {
|
|||
private Long storeCusId;
|
||||
@ApiModelProperty(value = "档口客户名称")
|
||||
private String storeCusName;
|
||||
@ApiModelProperty(value = "销售金额")
|
||||
private BigDecimal price;
|
||||
@ApiModelProperty(value = "优惠金额")
|
||||
private Integer discount;
|
||||
@ApiModelProperty(value = "大小码加价")
|
||||
private Integer overPrice;
|
||||
@ApiModelProperty(value = "商品货号")
|
||||
private String prodArtNum;
|
||||
@ApiModelProperty(value = "档口商品ID")
|
||||
|
|
@ -45,6 +41,8 @@ public class StoreProdStockAndDiscountResDTO {
|
|||
|
||||
@Data
|
||||
public static class SPSADSizeDTO {
|
||||
@ApiModelProperty(value = "销售金额")
|
||||
private BigDecimal price;
|
||||
@ApiModelProperty(value = "尺码")
|
||||
private Integer size;
|
||||
@ApiModelProperty(value = "是否是标准尺码")
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ public class ShopCartDetailResDTO {
|
|||
}
|
||||
|
||||
@Data
|
||||
@ApiModel(value = "档口商品基本信息")
|
||||
@ApiModel
|
||||
@Accessors(chain = true)
|
||||
public static class SCDStoreProdColorDTO {
|
||||
@ApiModelProperty(value = "档口商品颜色ID")
|
||||
|
|
@ -54,16 +54,16 @@ public class ShopCartDetailResDTO {
|
|||
private String colorName;
|
||||
@ApiModelProperty(value = "排序")
|
||||
private Integer orderNum;
|
||||
@ApiModelProperty(value = "档口商品定价")
|
||||
private BigDecimal price;
|
||||
@ApiModelProperty(value = "商品尺码及库存")
|
||||
List<SCDStoreProdSizeStockDTO> sizeStockList;
|
||||
}
|
||||
|
||||
@Data
|
||||
@ApiModel(value = "档口商品尺码及库存")
|
||||
@ApiModel
|
||||
@Accessors(chain = true)
|
||||
public static class SCDStoreProdSizeStockDTO {
|
||||
@ApiModelProperty(value = "档口商品定价")
|
||||
private BigDecimal price;
|
||||
@ApiModelProperty(value = "商品尺码")
|
||||
private Integer size;
|
||||
@ApiModelProperty(value = "尺码库存")
|
||||
|
|
|
|||
|
|
@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
|||
import com.ruoyi.xkt.domain.StoreProductColor;
|
||||
import com.ruoyi.xkt.dto.storeProdColor.StoreProdColorDTO;
|
||||
import com.ruoyi.xkt.dto.storeProdColor.StoreProdColorResDTO;
|
||||
import com.ruoyi.xkt.dto.storeProdColorPrice.StoreProdColorPricePageDTO;
|
||||
import com.ruoyi.xkt.dto.storeProdColorPrice.StoreProdColorPriceResDTO;
|
||||
import com.ruoyi.xkt.dto.storeProduct.StoreProdPageDTO;
|
||||
import com.ruoyi.xkt.dto.storeProduct.StoreProdPageResDTO;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
|
@ -22,6 +24,7 @@ public interface StoreProductColorMapper extends BaseMapper<StoreProductColor> {
|
|||
|
||||
/**
|
||||
* 将商品颜色置为无效
|
||||
*
|
||||
* @param storeProdId 档口商品ID
|
||||
*/
|
||||
void updateDelFlagByStoreProdId(Long storeProdId);
|
||||
|
|
@ -51,4 +54,20 @@ public interface StoreProductColorMapper extends BaseMapper<StoreProductColor> {
|
|||
*/
|
||||
List<StoreProdColorResDTO> fuzzyQueryColorList(@Param("storeId") Long storeId, @Param("prodArtNum") String prodArtNum);
|
||||
|
||||
/**
|
||||
* 获取商品颜色价格列表
|
||||
*
|
||||
* @param storeProdId 档口商品ID
|
||||
* @param storeId 档口ID
|
||||
* @return List<StoreProdColorPriceResDTO>
|
||||
*/
|
||||
List<StoreProdColorPriceResDTO> selectListByStoreProdIdAndStoreId(@Param("storeProdId") Long storeProdId, @Param("storeId") Long storeId);
|
||||
|
||||
/**
|
||||
* 新增客户优惠获取所有的颜色及价格
|
||||
*
|
||||
* @param pageDTO 入参
|
||||
* @return List<StoreProdColorPriceResDTO>
|
||||
*/
|
||||
List<StoreProdColorPriceResDTO> selectColorPricePage(StoreProdColorPricePageDTO pageDTO);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,63 +1,15 @@
|
|||
package com.ruoyi.xkt.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.ruoyi.xkt.domain.StoreProductColorPrice;
|
||||
import com.ruoyi.xkt.dto.storeProdColorPrice.StoreProdColorPricePageDTO;
|
||||
import com.ruoyi.xkt.dto.storeProdColorPrice.StoreProdColorPriceResDTO;
|
||||
import com.ruoyi.xkt.dto.storeProdColorPrice.StoreProdColorPriceSimpleDTO;
|
||||
import com.ruoyi.xkt.dto.storeProdColorPrice.StoreProdMinPriceDTO;
|
||||
import com.ruoyi.xkt.dto.storeProductStock.StoreProdStockAndDiscountDTO;
|
||||
import com.ruoyi.xkt.dto.storeProductStock.StoreProdStockAndDiscountResDTO;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 档口商品颜色定价Mapper接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-03-26
|
||||
*/
|
||||
@Repository
|
||||
public interface StoreProductColorPriceMapper extends BaseMapper<StoreProductColorPrice> {
|
||||
|
||||
|
||||
/**
|
||||
* 商品列表编辑商品时 获取颜色列表
|
||||
* @param storeProdId 档口商品ID
|
||||
* @return List<StoreProdColorPriceSimpleDTO>
|
||||
*/
|
||||
List<StoreProdColorPriceSimpleDTO> selectListByStoreProdId(Long storeProdId);
|
||||
|
||||
/**
|
||||
* 根据档口商品ID及档口ID获取所有颜色列表及定价
|
||||
*
|
||||
* @param storeProdId 档口商品ID
|
||||
* @param storeId 档口ID
|
||||
* @return List<StoreProdColorPriceResDTO>
|
||||
*/
|
||||
List<StoreProdColorPriceResDTO> selectListByStoreProdIdAndStoreId(@Param("storeProdId") Long storeProdId, @Param("storeId") Long storeId);
|
||||
|
||||
/**
|
||||
* 获取档口商品的最低定价
|
||||
*
|
||||
* @param storeProdIdList 档口商品ID列表
|
||||
* @return List<StoreProdMinPriceDTO>
|
||||
*/
|
||||
List<StoreProdMinPriceDTO> selectStoreProdMinPriceList(@Param("storeProdIdList") List<String> storeProdIdList);
|
||||
|
||||
/**
|
||||
* 获取档口颜色价格分页
|
||||
* @param pageDTO 入参
|
||||
* @return List<StoreProdColorPriceResDTO>
|
||||
*/
|
||||
List<StoreProdColorPriceResDTO> selectPricePage(StoreProdColorPricePageDTO pageDTO);
|
||||
|
||||
/**
|
||||
* 销售出库,输入货号,查询颜色价格等信息
|
||||
* @param dto 入参
|
||||
* @return StoreProdStockAndDiscountResDTO
|
||||
*/
|
||||
StoreProdStockAndDiscountResDTO selectStockAndCusDiscount(StoreProdStockAndDiscountDTO dto);
|
||||
}
|
||||
//@Repository
|
||||
//public interface StoreProductColorPriceMapper extends BaseMapper<StoreProductColorPrice> {
|
||||
//
|
||||
//
|
||||
//}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,10 @@ package com.ruoyi.xkt.mapper;
|
|||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.ruoyi.xkt.domain.StoreProductColorSize;
|
||||
import com.ruoyi.xkt.dto.storeProdColorPrice.StoreProdMinPriceDTO;
|
||||
import com.ruoyi.xkt.dto.storeProdColorSize.*;
|
||||
import com.ruoyi.xkt.dto.storeProductStock.StoreProdStockAndDiscountDTO;
|
||||
import com.ruoyi.xkt.dto.storeProductStock.StoreProdStockAndDiscountResDTO;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
|
|
@ -97,5 +100,21 @@ public interface StoreProductColorSizeMapper extends BaseMapper<StoreProductColo
|
|||
*/
|
||||
List<StoreUnsetSnTempDTO> selectUnsetProdList(@Param("storeId") Long storeId);
|
||||
|
||||
/**
|
||||
* 获取档口商品最小价格
|
||||
*
|
||||
* @param storeProdIdList 档口商品ID列表
|
||||
* @return List<StoreProdMinPriceDTO>
|
||||
*/
|
||||
List<StoreProdMinPriceDTO> selectStoreProdMinPriceList(@Param("storeProdIdList") List<String> storeProdIdList);
|
||||
|
||||
/**
|
||||
* 销售出库,输入货号,查询颜色价格等信息
|
||||
*
|
||||
* @param dto 入参
|
||||
* @return StoreProdStockAndDiscountResDTO
|
||||
*/
|
||||
StoreProdStockAndDiscountResDTO selectStockAndCusDiscount(StoreProdStockAndDiscountDTO dto);
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -43,16 +43,6 @@ public interface StoreProductFileMapper extends BaseMapper<StoreProductFile> {
|
|||
@Param("fileType") Integer fileType,
|
||||
@Param("orderNum") Integer orderNum);
|
||||
|
||||
/**
|
||||
* 获取档口图片空间的下载包
|
||||
*
|
||||
* @param storeId 档口ID
|
||||
* @param fileType 文件类型
|
||||
* @return List<StoreProdFilePicSpaceResDTO>
|
||||
*/
|
||||
List<StoreProdFilePicSpaceResDTO> selectPicSpaceList(@Param("storeId") Long storeId, @Param("fileType") Integer fileType,
|
||||
@Param("storeProdIdList") List<Long> storeProdIdList);
|
||||
|
||||
/**
|
||||
* 根据storeProdIdList 查询所有主图
|
||||
*
|
||||
|
|
|
|||
|
|
@ -1,27 +0,0 @@
|
|||
package com.ruoyi.xkt.service;
|
||||
|
||||
import com.ruoyi.common.core.page.Page;
|
||||
import com.ruoyi.xkt.dto.storeProdColorPrice.StoreProdColorPricePageDTO;
|
||||
import com.ruoyi.xkt.dto.storeProdColorPrice.StoreProdColorPriceResDTO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 档口商品颜色定价Service接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-03-26
|
||||
*/
|
||||
public interface IStoreProductColorPriceService {
|
||||
|
||||
List<StoreProdColorPriceResDTO> getColorPriceByStoreProdId(Long storeId, Long storeProdId);
|
||||
|
||||
/**
|
||||
* 查询档口商品颜色价格分页
|
||||
*
|
||||
* @param pageDTO 入参
|
||||
* @return Page<StoreProdColorPriceResDTO>
|
||||
*/
|
||||
Page<StoreProdColorPriceResDTO> page(StoreProdColorPricePageDTO pageDTO);
|
||||
|
||||
}
|
||||
|
|
@ -1,6 +1,9 @@
|
|||
package com.ruoyi.xkt.service;
|
||||
|
||||
import com.ruoyi.common.core.page.Page;
|
||||
import com.ruoyi.xkt.dto.storeProdColor.StoreProdColorResDTO;
|
||||
import com.ruoyi.xkt.dto.storeProdColorPrice.StoreProdColorPricePageDTO;
|
||||
import com.ruoyi.xkt.dto.storeProdColorPrice.StoreProdColorPriceResDTO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
|
@ -19,4 +22,22 @@ public interface IStoreProductColorService {
|
|||
* @return 返回一个列表,包含匹配的产品颜色信息
|
||||
*/
|
||||
List<StoreProdColorResDTO> fuzzyQueryColorList(Long storeId, String prodArtNum);
|
||||
|
||||
/**
|
||||
* 获取档口某个商品所有颜色对应的价格等
|
||||
*
|
||||
* @param storeId 档口ID
|
||||
* @param storeProdId 档口商品ID
|
||||
* @return
|
||||
*/
|
||||
List<StoreProdColorPriceResDTO> getColorPriceByStoreProdId(Long storeId, Long storeProdId);
|
||||
|
||||
/**
|
||||
* 查询档口商品颜色价格分页
|
||||
*
|
||||
* @param pageDTO 入参
|
||||
* @return Page<StoreProdColorPriceResDTO>
|
||||
*/
|
||||
Page<StoreProdColorPriceResDTO> page(StoreProdColorPricePageDTO pageDTO);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,14 +23,6 @@ public interface IStoreProductService {
|
|||
*/
|
||||
StoreProdResDTO selectStoreProductByStoreProdId(Long storeProdId);
|
||||
|
||||
/**
|
||||
* 获取档口图片空间
|
||||
*
|
||||
* @param spaceDTO 图片空间入参
|
||||
* @return StoreProdPicSpaceResDTO
|
||||
*/
|
||||
StoreProdPicSpaceResDTO getStoreProductPicSpace(StoreProdPicSpaceDTO spaceDTO);
|
||||
|
||||
/**
|
||||
* 查询档口商品列表
|
||||
*
|
||||
|
|
|
|||
|
|
@ -47,7 +47,6 @@ public class ShoppingCartServiceImpl implements IShoppingCartService {
|
|||
final StoreProductColorSizeMapper prodColorSizeMapper;
|
||||
final StoreProductColorMapper prodColorMapper;
|
||||
final StoreProductStockMapper prodStockMapper;
|
||||
final StoreProductColorPriceMapper prodColorPriceMapper;
|
||||
final StoreProductFileMapper prodFileMapper;
|
||||
final StoreProductCategoryAttributeMapper prodCateAttrMapper;
|
||||
final StoreMapper storeMapper;
|
||||
|
|
@ -175,34 +174,27 @@ public class ShoppingCartServiceImpl implements IShoppingCartService {
|
|||
.eq(StoreProductColorSize::getStandard, ProductSizeStatus.STANDARD.getValue()));
|
||||
// 标准尺码
|
||||
List<Integer> standardList = standardSizeList.stream().map(StoreProductColorSize::getSize).distinct().sorted(Comparator.comparing(x -> x)).collect(Collectors.toList());
|
||||
Map<String, List<StoreProductColorSize>> colorSizeMap = standardSizeList.stream().collect(Collectors
|
||||
.groupingBy(x -> x.getStoreProdId().toString() + x.getStoreColorId().toString()));
|
||||
// key storeColorId:size value price
|
||||
Map<String, BigDecimal> standardSizePriceMap = standardSizeList.stream().collect(Collectors.toMap(x -> x.getStoreColorId() + ":" + x.getSize(), StoreProductColorSize::getPrice));
|
||||
// 获取商品颜色列表
|
||||
List<StoreProductColor> colorList = this.prodColorMapper.selectList(new LambdaQueryWrapper<StoreProductColor>()
|
||||
.eq(StoreProductColor::getStoreProdId, shoppingCart.getStoreProdId()).eq(StoreProductColor::getDelFlag, Constants.UNDELETED)
|
||||
.in(StoreProductColor::getProdStatus, Arrays.asList(EProductStatus.ON_SALE.getValue(), EProductStatus.TAIL_GOODS.getValue())));
|
||||
// 档口商品颜色价格列表
|
||||
List<StoreProductColorPrice> colorPriceList = this.prodColorPriceMapper.selectList(new LambdaQueryWrapper<StoreProductColorPrice>()
|
||||
.eq(StoreProductColorPrice::getStoreProdId, shoppingCart.getStoreProdId()).eq(StoreProductColorPrice::getDelFlag, Constants.UNDELETED));
|
||||
Map<String, StoreProductColorPrice> colorPriceMap = colorPriceList.stream().collect(Collectors
|
||||
.toMap(x -> x.getStoreProdId().toString() + x.getStoreColorId().toString(), Function.identity()));
|
||||
// 根据标准尺码去找对应尺码的库存数量
|
||||
List<StoreProductStock> prodStockList = this.prodStockMapper.selectList(new LambdaQueryWrapper<StoreProductStock>()
|
||||
.eq(StoreProductStock::getStoreProdId, shoppingCart.getStoreProdId())
|
||||
.in(StoreProductStock::getStoreProdColorId, colorList.stream().map(StoreProductColor::getId).distinct().collect(Collectors.toList()))
|
||||
.eq(StoreProductStock::getDelFlag, Constants.UNDELETED));
|
||||
// 获取档口颜色尺码的库存数量
|
||||
Map<String, List<ShopCartDetailResDTO.SCDStoreProdSizeStockDTO>> colorSizeStockMap = this.convertSizeStock(prodStockList, standardList);
|
||||
Map<String, List<ShopCartDetailResDTO.SCDStoreProdSizeStockDTO>> colorSizeStockMap = this.convertSizeStock(prodStockList, standardList, standardSizePriceMap);
|
||||
// 库存数量为0默认值
|
||||
List<ShopCartDetailResDTO.SCDStoreProdSizeStockDTO> defaultZeroStockList = standardList.stream().map(size ->
|
||||
new ShopCartDetailResDTO.SCDStoreProdSizeStockDTO().setSize(size).setStock(0)).collect(Collectors.toList());
|
||||
List<ShopCartDetailResDTO.SCDStoreProdColorDTO> colorSizeStockList = colorList.stream()
|
||||
.map(color -> BeanUtil.toBean(color, ShopCartDetailResDTO.SCDStoreProdColorDTO.class).setStoreProdColorId(color.getId())
|
||||
// 获取颜色设定的价格
|
||||
.setPrice(colorPriceMap.containsKey(color.getStoreProdId().toString() + color.getStoreColorId().toString())
|
||||
? colorPriceMap.get(color.getStoreProdId().toString() + color.getStoreColorId().toString()).getPrice() : null)
|
||||
// 设定库存
|
||||
.setSizeStockList(colorSizeStockMap.getOrDefault(color.getStoreProdId().toString() + color.getStoreColorId().toString(), defaultZeroStockList)))
|
||||
// 设定尺码对应的库存及价格
|
||||
.setSizeStockList(colorSizeStockMap
|
||||
.getOrDefault(color.getStoreProdId().toString() + ":" + color.getStoreColorId().toString(), defaultZeroStockList)))
|
||||
.collect(Collectors.toList());
|
||||
return new ShopCartDetailResDTO() {{
|
||||
setProdArtNum(shoppingCart.getProdArtNum()).setStoreProdId(shoppingCart.getStoreProdId())
|
||||
|
|
@ -288,14 +280,6 @@ public class ShoppingCartServiceImpl implements IShoppingCartService {
|
|||
List<StoreProdMainPicDTO> mainPicList = this.prodFileMapper.selectMainPicByStoreProdIdList(listDTO.getStoreProdIdList(), FileType.MAIN_PIC.getValue(), ORDER_NUM_1);
|
||||
Map<Long, String> mainPicMap = CollectionUtils.isEmpty(mainPicList) ? new HashMap<>() : mainPicList.stream()
|
||||
.collect(Collectors.toMap(StoreProdMainPicDTO::getStoreProdId, StoreProdMainPicDTO::getFileUrl));
|
||||
// 获取明细商品的价格
|
||||
List<StoreProductColorPrice> priceList = this.prodColorPriceMapper.selectList(new LambdaQueryWrapper<StoreProductColorPrice>()
|
||||
.in(StoreProductColorPrice::getStoreProdId, shoppingCartList.stream().map(ShoppingCart::getStoreProdId).collect(Collectors.toList()))
|
||||
.in(StoreProductColorPrice::getStoreColorId, detailList.stream().map(ShoppingCartDetail::getStoreColorId).collect(Collectors.toList()))
|
||||
.eq(StoreProductColorPrice::getDelFlag, Constants.UNDELETED));
|
||||
// 商品价格map
|
||||
Map<String, BigDecimal> priceMap = priceList.stream().collect(Collectors
|
||||
.toMap(x -> x.getStoreProdId().toString() + x.getStoreColorId().toString(), x -> ObjectUtils.defaultIfNull(x.getPrice(), BigDecimal.ZERO)));
|
||||
// 获取商品价格尺码
|
||||
List<StoreProductColorSize> priceSizeList = this.prodColorSizeMapper.selectList(new LambdaQueryWrapper<StoreProductColorSize>()
|
||||
.in(StoreProductColorSize::getStoreProdId, shoppingCartList.stream().map(ShoppingCart::getStoreProdId).collect(Collectors.toList()))
|
||||
|
|
@ -306,18 +290,18 @@ public class ShoppingCartServiceImpl implements IShoppingCartService {
|
|||
.eq(StoreProduct::getDelFlag, Constants.UNDELETED));
|
||||
Map<Long, StoreProduct> storeProdMap = storeProdList.stream().collect(Collectors.toMap(StoreProduct::getId, Function.identity()));
|
||||
// 商品价格尺码map
|
||||
Map<String, Long> priceSizeMap = priceSizeList.stream().collect(Collectors
|
||||
.toMap(x -> x.getStoreProdId().toString() + x.getStoreColorId().toString() + x.getSize(), StoreProductColorSize::getId));
|
||||
Map<String, StoreProductColorSize> priceSizeMap = priceSizeList.stream().collect(Collectors
|
||||
.toMap(x -> x.getStoreProdId().toString() + x.getStoreColorId().toString() + x.getSize(), x -> x));
|
||||
return shoppingCartList.stream().map(x -> {
|
||||
ShoppingCartDTO shopCartDTO = BeanUtil.toBean(x, ShoppingCartDTO.class).setMainPicUrl(mainPicMap.get(x.getStoreProdId()))
|
||||
.setProdTitle(ObjectUtils.isNotEmpty(storeProdMap.get(x.getStoreProdId())) ? storeProdMap.get(x.getStoreProdId()).getProdTitle() : "")
|
||||
.setStoreName(ObjectUtils.isNotEmpty(storeMap.get(x.getStoreId())) ? storeMap.get(x.getStoreId()).getStoreName() : "");
|
||||
List<ShoppingCartDTO.SCDetailDTO> shopCartDetailList = detailMap.get(x.getId()).stream().map(detail -> {
|
||||
final BigDecimal price = ObjectUtils.defaultIfNull(priceMap.get(x.getStoreProdId().toString() + detail.getStoreColorId().toString()), BigDecimal.ZERO);
|
||||
return BeanUtil.toBean(detail, ShoppingCartDTO.SCDetailDTO.class).setPrice(price)
|
||||
.setStoreProdColorSizeId(priceSizeMap.get(x.getStoreProdId().toString() + detail.getStoreColorId().toString() + detail.getSize()))
|
||||
.setAmount(price.multiply(BigDecimal.valueOf(detail.getQuantity())));
|
||||
}).collect(Collectors.toList());
|
||||
final StoreProductColorSize prodColorSize = priceSizeMap.get(x.getStoreProdId().toString() + detail.getStoreColorId().toString() + detail.getSize());
|
||||
return ObjectUtils.isEmpty(prodColorSize) ? null : BeanUtil.toBean(detail, ShoppingCartDTO.SCDetailDTO.class)
|
||||
.setPrice(prodColorSize.getPrice()).setStoreProdColorSizeId(prodColorSize.getId())
|
||||
.setAmount(prodColorSize.getPrice().multiply(BigDecimal.valueOf(detail.getQuantity())));
|
||||
}).filter(ObjectUtils::isNotEmpty).collect(Collectors.toList());
|
||||
return shopCartDTO.setDetailList(shopCartDetailList);
|
||||
}).collect(Collectors.toList());
|
||||
}
|
||||
|
|
@ -340,116 +324,91 @@ public class ShoppingCartServiceImpl implements IShoppingCartService {
|
|||
*
|
||||
* @param stockList 库存数量
|
||||
* @param standardSizeList 当前商品的标准尺码
|
||||
* @param standardSizePriceMap 颜色尺码对应的价格
|
||||
* @return Map<Long, Map < Integer, Integer>>
|
||||
*/
|
||||
private Map<String, List<ShopCartDetailResDTO.SCDStoreProdSizeStockDTO>> convertSizeStock(List<StoreProductStock> stockList, List<Integer> standardSizeList) {
|
||||
private Map<String, List<ShopCartDetailResDTO.SCDStoreProdSizeStockDTO>> convertSizeStock(List<StoreProductStock> stockList, List<Integer> standardSizeList,
|
||||
Map<String, BigDecimal> standardSizePriceMap) {
|
||||
Map<String, List<ShopCartDetailResDTO.SCDStoreProdSizeStockDTO>> colorSizeStockMap = new HashMap<>();
|
||||
if (CollectionUtils.isEmpty(stockList)) {
|
||||
return colorSizeStockMap;
|
||||
}
|
||||
// 标准尺码map
|
||||
Map<Integer, Integer> standardSizeMap = standardSizeList.stream().collect(Collectors.toMap(x -> x, x -> x));
|
||||
Map<String, List<StoreProductStock>> map = stockList.stream().collect(Collectors.groupingBy(x -> x.getStoreProdId().toString() + x.getStoreColorId().toString()));
|
||||
map.forEach((unionId, tempStockList) -> {
|
||||
Map<String, StoreProductStock> colorStockMap = stockList.stream().collect(Collectors.toMap(x -> x.getStoreProdId().toString() + ":" + x.getStoreColorId().toString(), x -> x));
|
||||
colorStockMap.forEach((unionId, colorStock) -> {
|
||||
List<ShopCartDetailResDTO.SCDStoreProdSizeStockDTO> sizeStockList = new ArrayList<>();
|
||||
Integer size30Stock = tempStockList.stream().map(x -> ObjectUtils.defaultIfNull(x.getSize30(), 0)).reduce(0, Integer::sum);
|
||||
if (standardSizeMap.containsKey(SIZE_30)) {
|
||||
sizeStockList.add(new ShopCartDetailResDTO.SCDStoreProdSizeStockDTO() {{
|
||||
setSize(SIZE_30);
|
||||
setStock(size30Stock);
|
||||
}});
|
||||
sizeStockList.add(new ShopCartDetailResDTO.SCDStoreProdSizeStockDTO().setSize(SIZE_30)
|
||||
.setStock(ObjectUtils.defaultIfNull(colorStock.getSize30(), 0))
|
||||
.setPrice(standardSizePriceMap.get(colorStock.getStoreColorId().toString() + ":" + SIZE_30)));
|
||||
}
|
||||
Integer size31Stock = tempStockList.stream().map(x -> ObjectUtils.defaultIfNull(x.getSize31(), 0)).reduce(0, Integer::sum);
|
||||
if (standardSizeMap.containsKey(SIZE_31)) {
|
||||
sizeStockList.add(new ShopCartDetailResDTO.SCDStoreProdSizeStockDTO() {{
|
||||
setSize(SIZE_31);
|
||||
setStock(size31Stock);
|
||||
}});
|
||||
sizeStockList.add(new ShopCartDetailResDTO.SCDStoreProdSizeStockDTO().setSize(SIZE_31)
|
||||
.setStock(ObjectUtils.defaultIfNull(colorStock.getSize31(), 0))
|
||||
.setPrice(standardSizePriceMap.get(colorStock.getStoreColorId().toString() + ":" + SIZE_31)));
|
||||
}
|
||||
Integer size32Stock = tempStockList.stream().map(x -> ObjectUtils.defaultIfNull(x.getSize32(), 0)).reduce(0, Integer::sum);
|
||||
if (standardSizeMap.containsKey(SIZE_32)) {
|
||||
sizeStockList.add(new ShopCartDetailResDTO.SCDStoreProdSizeStockDTO() {{
|
||||
setSize(SIZE_32);
|
||||
setStock(size32Stock);
|
||||
}});
|
||||
sizeStockList.add(new ShopCartDetailResDTO.SCDStoreProdSizeStockDTO().setSize(SIZE_32)
|
||||
.setStock(ObjectUtils.defaultIfNull(colorStock.getSize32(), 0))
|
||||
.setPrice(standardSizePriceMap.get(colorStock.getStoreColorId().toString() + ":" + SIZE_32)));
|
||||
}
|
||||
Integer size33Stock = tempStockList.stream().map(x -> ObjectUtils.defaultIfNull(x.getSize33(), 0)).reduce(0, Integer::sum);
|
||||
if (standardSizeMap.containsKey(SIZE_33)) {
|
||||
sizeStockList.add(new ShopCartDetailResDTO.SCDStoreProdSizeStockDTO() {{
|
||||
setSize(SIZE_33);
|
||||
setStock(size33Stock);
|
||||
}});
|
||||
sizeStockList.add(new ShopCartDetailResDTO.SCDStoreProdSizeStockDTO().setSize(SIZE_33)
|
||||
.setStock(ObjectUtils.defaultIfNull(colorStock.getSize33(), 0))
|
||||
.setPrice(standardSizePriceMap.get(colorStock.getStoreColorId().toString() + ":" + SIZE_33)));
|
||||
}
|
||||
Integer size34Stock = tempStockList.stream().map(x -> ObjectUtils.defaultIfNull(x.getSize34(), 0)).reduce(0, Integer::sum);
|
||||
if (standardSizeMap.containsKey(SIZE_34)) {
|
||||
sizeStockList.add(new ShopCartDetailResDTO.SCDStoreProdSizeStockDTO() {{
|
||||
setSize(SIZE_34);
|
||||
setStock(size34Stock);
|
||||
}});
|
||||
sizeStockList.add(new ShopCartDetailResDTO.SCDStoreProdSizeStockDTO().setSize(SIZE_34)
|
||||
.setStock(ObjectUtils.defaultIfNull(colorStock.getSize34(), 0))
|
||||
.setPrice(standardSizePriceMap.get(colorStock.getStoreColorId().toString() + ":" + SIZE_34)));
|
||||
}
|
||||
Integer size35Stock = tempStockList.stream().map(x -> ObjectUtils.defaultIfNull(x.getSize35(), 0)).reduce(0, Integer::sum);
|
||||
if (standardSizeMap.containsKey(SIZE_35)) {
|
||||
sizeStockList.add(new ShopCartDetailResDTO.SCDStoreProdSizeStockDTO() {{
|
||||
setSize(SIZE_35);
|
||||
setStock(size35Stock);
|
||||
}});
|
||||
sizeStockList.add(new ShopCartDetailResDTO.SCDStoreProdSizeStockDTO().setSize(SIZE_35)
|
||||
.setStock(ObjectUtils.defaultIfNull(colorStock.getSize35(), 0))
|
||||
.setPrice(standardSizePriceMap.get(colorStock.getStoreColorId().toString() + ":" + SIZE_35)));
|
||||
}
|
||||
Integer size36Stock = tempStockList.stream().map(x -> ObjectUtils.defaultIfNull(x.getSize36(), 0)).reduce(0, Integer::sum);
|
||||
if (standardSizeMap.containsKey(SIZE_36)) {
|
||||
sizeStockList.add(new ShopCartDetailResDTO.SCDStoreProdSizeStockDTO() {{
|
||||
setSize(SIZE_36);
|
||||
setStock(size36Stock);
|
||||
}});
|
||||
sizeStockList.add(new ShopCartDetailResDTO.SCDStoreProdSizeStockDTO().setSize(SIZE_36)
|
||||
.setStock(ObjectUtils.defaultIfNull(colorStock.getSize36(), 0))
|
||||
.setPrice(standardSizePriceMap.get(colorStock.getStoreColorId().toString() + ":" + SIZE_36)));
|
||||
}
|
||||
Integer size37Stock = tempStockList.stream().map(x -> ObjectUtils.defaultIfNull(x.getSize37(), 0)).reduce(0, Integer::sum);
|
||||
if (standardSizeMap.containsKey(SIZE_37)) {
|
||||
sizeStockList.add(new ShopCartDetailResDTO.SCDStoreProdSizeStockDTO() {{
|
||||
setSize(SIZE_37);
|
||||
setStock(size37Stock);
|
||||
}});
|
||||
sizeStockList.add(new ShopCartDetailResDTO.SCDStoreProdSizeStockDTO().setSize(SIZE_37)
|
||||
.setStock(ObjectUtils.defaultIfNull(colorStock.getSize37(), 0))
|
||||
.setPrice(standardSizePriceMap.get(colorStock.getStoreColorId().toString() + ":" + SIZE_37)));
|
||||
}
|
||||
Integer size38Stock = tempStockList.stream().map(x -> ObjectUtils.defaultIfNull(x.getSize38(), 0)).reduce(0, Integer::sum);
|
||||
if (standardSizeMap.containsKey(SIZE_38)) {
|
||||
sizeStockList.add(new ShopCartDetailResDTO.SCDStoreProdSizeStockDTO() {{
|
||||
setSize(SIZE_38);
|
||||
setStock(size38Stock);
|
||||
}});
|
||||
sizeStockList.add(new ShopCartDetailResDTO.SCDStoreProdSizeStockDTO().setSize(SIZE_38)
|
||||
.setStock(ObjectUtils.defaultIfNull(colorStock.getSize38(), 0))
|
||||
.setPrice(standardSizePriceMap.get(colorStock.getStoreColorId().toString() + ":" + SIZE_38)));
|
||||
}
|
||||
Integer size39Stock = tempStockList.stream().map(x -> ObjectUtils.defaultIfNull(x.getSize39(), 0)).reduce(0, Integer::sum);
|
||||
if (standardSizeMap.containsKey(SIZE_39)) {
|
||||
sizeStockList.add(new ShopCartDetailResDTO.SCDStoreProdSizeStockDTO() {{
|
||||
setSize(SIZE_39);
|
||||
setStock(size39Stock);
|
||||
}});
|
||||
sizeStockList.add(new ShopCartDetailResDTO.SCDStoreProdSizeStockDTO().setSize(SIZE_39)
|
||||
.setStock(ObjectUtils.defaultIfNull(colorStock.getSize39(), 0))
|
||||
.setPrice(standardSizePriceMap.get(colorStock.getStoreColorId().toString() + ":" + SIZE_39)));
|
||||
}
|
||||
Integer size40Stock = tempStockList.stream().map(x -> ObjectUtils.defaultIfNull(x.getSize40(), 0)).reduce(0, Integer::sum);
|
||||
if (standardSizeMap.containsKey(SIZE_40)) {
|
||||
sizeStockList.add(new ShopCartDetailResDTO.SCDStoreProdSizeStockDTO() {{
|
||||
setSize(SIZE_40);
|
||||
setStock(size40Stock);
|
||||
}});
|
||||
sizeStockList.add(new ShopCartDetailResDTO.SCDStoreProdSizeStockDTO().setSize(SIZE_40)
|
||||
.setStock(ObjectUtils.defaultIfNull(colorStock.getSize40(), 0))
|
||||
.setPrice(standardSizePriceMap.get(colorStock.getStoreColorId().toString() + ":" + SIZE_40)));
|
||||
}
|
||||
Integer size41Stock = tempStockList.stream().map(x -> ObjectUtils.defaultIfNull(x.getSize41(), 0)).reduce(0, Integer::sum);
|
||||
if (standardSizeMap.containsKey(SIZE_41)) {
|
||||
sizeStockList.add(new ShopCartDetailResDTO.SCDStoreProdSizeStockDTO() {{
|
||||
setSize(SIZE_41);
|
||||
setStock(size41Stock);
|
||||
}});
|
||||
sizeStockList.add(new ShopCartDetailResDTO.SCDStoreProdSizeStockDTO().setSize(SIZE_41)
|
||||
.setStock(ObjectUtils.defaultIfNull(colorStock.getSize41(), 0))
|
||||
.setPrice(standardSizePriceMap.get(colorStock.getStoreColorId().toString() + ":" + SIZE_41)));
|
||||
}
|
||||
Integer size42Stock = tempStockList.stream().map(x -> ObjectUtils.defaultIfNull(x.getSize42(), 0)).reduce(0, Integer::sum);
|
||||
if (standardSizeMap.containsKey(SIZE_42)) {
|
||||
sizeStockList.add(new ShopCartDetailResDTO.SCDStoreProdSizeStockDTO() {{
|
||||
setSize(SIZE_42);
|
||||
setStock(size42Stock);
|
||||
}});
|
||||
sizeStockList.add(new ShopCartDetailResDTO.SCDStoreProdSizeStockDTO().setSize(SIZE_42)
|
||||
.setStock(ObjectUtils.defaultIfNull(colorStock.getSize42(), 0))
|
||||
.setPrice(standardSizePriceMap.get(colorStock.getStoreColorId().toString() + ":" + SIZE_42)));
|
||||
}
|
||||
Integer size43Stock = tempStockList.stream().map(x -> ObjectUtils.defaultIfNull(x.getSize43(), 0)).reduce(0, Integer::sum);
|
||||
if (standardSizeMap.containsKey(SIZE_43)) {
|
||||
sizeStockList.add(new ShopCartDetailResDTO.SCDStoreProdSizeStockDTO() {{
|
||||
setSize(SIZE_43);
|
||||
setStock(size43Stock);
|
||||
}});
|
||||
sizeStockList.add(new ShopCartDetailResDTO.SCDStoreProdSizeStockDTO().setSize(SIZE_43)
|
||||
.setStock(ObjectUtils.defaultIfNull(colorStock.getSize43(), 0))
|
||||
.setPrice(standardSizePriceMap.get(colorStock.getStoreColorId().toString() + ":" + SIZE_43)));
|
||||
}
|
||||
|
||||
colorSizeStockMap.put(unionId, sizeStockList);
|
||||
});
|
||||
return colorSizeStockMap;
|
||||
|
|
|
|||
|
|
@ -46,7 +46,6 @@ public class StoreHomepageServiceImpl implements IStoreHomepageService {
|
|||
final StoreProductDetailMapper prodDetailMapper;
|
||||
final StoreProductColorSizeMapper prodColorSizeMapper;
|
||||
final StoreProductStockMapper prodStockMapper;
|
||||
final StoreProductColorPriceMapper prodColorPriceMapper;
|
||||
final StoreProductFileMapper prodFileMapper;
|
||||
final StoreProductCategoryAttributeMapper prodCateAttrMapper;
|
||||
final StoreCertificateMapper storeCertMapper;
|
||||
|
|
|
|||
|
|
@ -1,57 +0,0 @@
|
|||
package com.ruoyi.xkt.service.impl;
|
||||
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import com.ruoyi.common.core.page.Page;
|
||||
import com.ruoyi.xkt.dto.storeProdColorPrice.StoreProdColorPricePageDTO;
|
||||
import com.ruoyi.xkt.dto.storeProdColorPrice.StoreProdColorPriceResDTO;
|
||||
import com.ruoyi.xkt.mapper.StoreProductColorPriceMapper;
|
||||
import com.ruoyi.xkt.service.IStoreProductColorPriceService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 档口商品颜色定价Service业务层处理
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-03-26
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class StoreProductColorPriceServiceImpl implements IStoreProductColorPriceService {
|
||||
|
||||
final StoreProductColorPriceMapper prodColorPriceMapper;
|
||||
|
||||
/**
|
||||
* 根据档口ID 和 商品ID 获取所有颜色及价格
|
||||
*
|
||||
* @param storeId 档口ID
|
||||
* @param storeProdId 档口商品ID
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public List<StoreProdColorPriceResDTO> getColorPriceByStoreProdId(Long storeId, Long storeProdId) {
|
||||
return this.prodColorPriceMapper.selectListByStoreProdIdAndStoreId(storeProdId, storeId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询档口商品颜色价格分页
|
||||
*
|
||||
* @param pageDTO 入参
|
||||
* @return Page<StoreProdColorPriceResDTO>
|
||||
*/
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public Page<StoreProdColorPriceResDTO> page(StoreProdColorPricePageDTO pageDTO) {
|
||||
PageHelper.startPage(pageDTO.getPageNum(), pageDTO.getPageSize());
|
||||
List<StoreProdColorPriceResDTO> list = this.prodColorPriceMapper.selectPricePage(pageDTO);
|
||||
return CollectionUtils.isEmpty(list) ? Page.empty(pageDTO.getPageSize(), pageDTO.getPageNum())
|
||||
: Page.convert(new PageInfo<>(list));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,9 +1,15 @@
|
|||
package com.ruoyi.xkt.service.impl;
|
||||
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import com.ruoyi.common.core.page.Page;
|
||||
import com.ruoyi.xkt.dto.storeProdColor.StoreProdColorResDTO;
|
||||
import com.ruoyi.xkt.dto.storeProdColorPrice.StoreProdColorPricePageDTO;
|
||||
import com.ruoyi.xkt.dto.storeProdColorPrice.StoreProdColorPriceResDTO;
|
||||
import com.ruoyi.xkt.mapper.StoreProductColorMapper;
|
||||
import com.ruoyi.xkt.service.IStoreProductColorService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
|
|
@ -33,4 +39,27 @@ public class StoreProductColorServiceImpl implements IStoreProductColorService {
|
|||
public List<StoreProdColorResDTO> fuzzyQueryColorList(Long storeId, String prodArtNum) {
|
||||
return storeProdColorMapper.fuzzyQueryColorList(storeId, prodArtNum);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取档口商品所有颜色及价格等
|
||||
*
|
||||
* @param storeId 档口ID
|
||||
* @param storeProdId 档口商品ID
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public List<StoreProdColorPriceResDTO> getColorPriceByStoreProdId(Long storeId, Long storeProdId) {
|
||||
return this.storeProdColorMapper.selectListByStoreProdIdAndStoreId(storeProdId, storeId);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public Page<StoreProdColorPriceResDTO> page(StoreProdColorPricePageDTO pageDTO) {
|
||||
PageHelper.startPage(pageDTO.getPageNum(), pageDTO.getPageSize());
|
||||
List<StoreProdColorPriceResDTO> list = this.storeProdColorMapper.selectColorPricePage(pageDTO);
|
||||
return CollectionUtils.isEmpty(list) ? Page.empty(pageDTO.getPageSize(), pageDTO.getPageNum()) : Page.convert(new PageInfo<>(list));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -39,7 +39,6 @@ import com.ruoyi.xkt.dto.picture.ProductPicSyncResultDTO;
|
|||
import com.ruoyi.xkt.dto.storeColor.StoreColorDTO;
|
||||
import com.ruoyi.xkt.dto.storeProdCateAttr.StoreProdCateAttrDTO;
|
||||
import com.ruoyi.xkt.dto.storeProdColor.StoreProdColorDTO;
|
||||
import com.ruoyi.xkt.dto.storeProdColorPrice.StoreProdColorPriceSimpleDTO;
|
||||
import com.ruoyi.xkt.dto.storeProdColorSize.StoreProdSizeDTO;
|
||||
import com.ruoyi.xkt.dto.storeProdProcess.StoreProdProcessDTO;
|
||||
import com.ruoyi.xkt.dto.storeProdSvc.StoreProdSvcDTO;
|
||||
|
|
@ -91,7 +90,6 @@ public class StoreProductServiceImpl implements IStoreProductService {
|
|||
final StoreProductColorMapper storeProdColorMapper;
|
||||
final StoreProductServiceMapper storeProdSvcMapper;
|
||||
final StoreProductDetailMapper storeProdDetailMapper;
|
||||
final StoreProductColorPriceMapper storeProdColorPriceMapper;
|
||||
final StoreColorMapper storeColorMapper;
|
||||
final SysFileMapper fileMapper;
|
||||
final StoreProductColorSizeMapper storeProdColorSizeMapper;
|
||||
|
|
@ -135,10 +133,8 @@ public class StoreProductServiceImpl implements IStoreProductService {
|
|||
List<StoreColorDTO> allColorList = this.storeColorMapper.selectListByStoreProdId(storeProd.getStoreId());
|
||||
// 档口当前商品颜色列表
|
||||
List<StoreProdColorDTO> colorList = this.storeProdColorMapper.selectListByStoreProdId(storeProdId);
|
||||
// 档口商品颜色尺码列表
|
||||
// 档口商品颜色尺码价格列表
|
||||
List<StoreProdSizeDTO> sizeList = this.storeProdColorSizeMapper.selectListByStoreProdId(storeProdId);
|
||||
// 档口颜色价格列表
|
||||
List<StoreProdColorPriceSimpleDTO> priceList = this.storeProdColorPriceMapper.selectListByStoreProdId(storeProdId);
|
||||
// 档口商品详情
|
||||
StoreProductDetail prodDetail = this.storeProdDetailMapper.selectByStoreProdId(storeProdId);
|
||||
// 档口服务承诺
|
||||
|
|
@ -146,31 +142,8 @@ public class StoreProductServiceImpl implements IStoreProductService {
|
|||
// 档口生产工艺信息
|
||||
StoreProductProcess prodProcess = this.storeProdProcMapper.selectByStoreProdId(storeProdId);
|
||||
return storeProdResDTO.setFileList(fileResList).setAllColorList(allColorList).setDetail(prodDetail.getDetail())
|
||||
.setColorList(colorList).setPriceList(priceList).setSizeList(sizeList)
|
||||
.setCateAttr(BeanUtil.toBean(cateAttr, StoreProdCateAttrDTO.class))
|
||||
.setSvc(BeanUtil.toBean(storeProductSvc, StoreProdSvcDTO.class))
|
||||
.setProcess(BeanUtil.toBean(prodProcess, StoreProdProcessDTO.class));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public StoreProdPicSpaceResDTO getStoreProductPicSpace(StoreProdPicSpaceDTO spaceDTO) {
|
||||
// 用户是否为档口管理者或子账户
|
||||
if (!SecurityUtils.isAdmin() && !SecurityUtils.isStoreManagerOrSub(spaceDTO.getStoreId())) {
|
||||
throw new ServiceException("当前用户非档口管理者或子账号,无权限操作!", HttpStatus.ERROR);
|
||||
}
|
||||
LambdaQueryWrapper<StoreProduct> queryWrapper = new LambdaQueryWrapper<StoreProduct>().eq(StoreProduct::getId, spaceDTO.getStoreId())
|
||||
.eq(StoreProduct::getDelFlag, Constants.UNDELETED);
|
||||
if (StringUtils.isNotBlank(spaceDTO.getProdArtNum())) {
|
||||
queryWrapper.like(StoreProduct::getProdArtNum, spaceDTO.getProdArtNum());
|
||||
}
|
||||
List<StoreProduct> storeProdList = this.storeProdMapper.selectList(queryWrapper);
|
||||
List<Long> storeProdIdList = storeProdList.stream().map(StoreProduct::getId).collect(Collectors.toList());
|
||||
Store store = Optional.ofNullable(this.storeMapper.selectOne(new LambdaQueryWrapper<Store>()
|
||||
.eq(Store::getId, spaceDTO.getStoreId()).eq(Store::getDelFlag, Constants.UNDELETED)))
|
||||
.orElseThrow(() -> new ServiceException("档口不存在!", HttpStatus.ERROR));
|
||||
return StoreProdPicSpaceResDTO.builder().storeId(store.getId()).storeName(store.getStoreName())
|
||||
.fileList(this.storeProdFileMapper.selectPicSpaceList(store.getId(), FileType.DOWNLOAD.getValue(), storeProdIdList)).build();
|
||||
.setColorList(colorList).setSizeList(sizeList).setCateAttr(BeanUtil.toBean(cateAttr, StoreProdCateAttrDTO.class))
|
||||
.setSvc(BeanUtil.toBean(storeProductSvc, StoreProdSvcDTO.class)).setProcess(BeanUtil.toBean(prodProcess, StoreProdProcessDTO.class));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -359,66 +332,68 @@ public class StoreProductServiceImpl implements IStoreProductService {
|
|||
storeColorMap.putAll(newColorList.stream().collect(Collectors.toMap(StoreColor::getColorName, StoreColor::getId)));
|
||||
}
|
||||
// 所有颜色列表
|
||||
List<StoreProductColor> prodColorList = this.storeProdColorMapper.selectList(new LambdaQueryWrapper<StoreProductColor>()
|
||||
List<StoreProductColor> dbProdColorList = this.storeProdColorMapper.selectList(new LambdaQueryWrapper<StoreProductColor>()
|
||||
.eq(StoreProductColor::getStoreProdId, storeProdId).eq(StoreProductColor::getDelFlag, Constants.UNDELETED));
|
||||
List<Long> existColorIdList = prodColorList.stream().map(StoreProductColor::getStoreColorId).collect(Collectors.toList());
|
||||
prodColorList.forEach(color -> {
|
||||
// 判断有哪些是删除的颜色
|
||||
if (!storeColorMap.containsValue(color.getStoreColorId())) {
|
||||
color.setDelFlag(Constants.DELETED);
|
||||
// 当前商品已存在的storeColorId列表
|
||||
List<Long> exitProdColorIdList = dbProdColorList.stream().map(StoreProductColor::getStoreColorId).collect(Collectors.toList());
|
||||
// 当前商品待更新的storeColorId列表
|
||||
List<Long> updateProdColorIdList = updateDTO.getSizeList().stream().map(StoreProdDTO.SPCSizeDTO::getColorName).map(storeColorMap::get).collect(Collectors.toList());
|
||||
dbProdColorList.stream()
|
||||
// 判断有哪些是删除的颜色
|
||||
.filter(color -> !updateProdColorIdList.contains(color.getStoreColorId()))
|
||||
.forEach(color -> color.setDelFlag(Constants.DELETED));
|
||||
// 新增的颜色。分为两种情况:1. 完全新增的颜色 2. 已存在,新加到商品中
|
||||
final List<String> updateProdColorNameList = updateDTO.getSizeList().stream().map(StoreProdDTO.SPCSizeDTO::getColorName).distinct().collect(Collectors.toList());
|
||||
for (int i = 1; i <= updateProdColorNameList.size(); i++) {
|
||||
final Long updateProdColorId = storeColorMap.get(updateProdColorNameList.get(i));
|
||||
// 已存在的颜色则不新增
|
||||
if (exitProdColorIdList.contains(updateProdColorId)) {
|
||||
continue;
|
||||
}
|
||||
});
|
||||
this.storeProdColorMapper.updateById(prodColorList);
|
||||
// 非新增颜色价格map
|
||||
Map<Long, BigDecimal> existColorPriceMap = updateDTO.getColorPriceList().stream().filter(x -> ObjectUtils.isNotEmpty(x.getStoreColorId()))
|
||||
.collect(Collectors.toMap(StoreProdDTO.SPCColorPriceDTO::getStoreColorId, StoreProdDTO.SPCColorPriceDTO::getPrice));
|
||||
// 所有已存在的颜色价格列表
|
||||
List<StoreProductColorPrice> storeColorPriceList = this.storeProdColorPriceMapper.selectList(new LambdaQueryWrapper<StoreProductColorPrice>()
|
||||
.eq(StoreProductColorPrice::getStoreProdId, storeProdId).eq(StoreProductColorPrice::getDelFlag, Constants.UNDELETED));
|
||||
storeColorPriceList.forEach(x -> {
|
||||
// 判断有哪些是删除的颜色
|
||||
if (!storeColorMap.containsValue(x.getStoreColorId())) {
|
||||
x.setDelFlag(Constants.DELETED);
|
||||
} else {
|
||||
// 更新颜色价格
|
||||
x.setPrice(existColorPriceMap.get(x.getStoreColorId()));
|
||||
}
|
||||
});
|
||||
// 标准尺码map
|
||||
Map<Integer, Integer> standardSizeMap = updateDTO.getSizeList().stream().collect(Collectors
|
||||
.toMap(StoreProdDTO.SPCSizeDTO::getSize, StoreProdDTO.SPCSizeDTO::getStandard));
|
||||
// 所有已存在的颜色价格尺码列表
|
||||
List<StoreProductColorSize> storeColorSizeList = this.storeProdColorSizeMapper.selectList(new LambdaQueryWrapper<StoreProductColorSize>()
|
||||
.eq(StoreProductColorSize::getStoreProdId, storeProdId).eq(StoreProductColorSize::getDelFlag, Constants.UNDELETED));
|
||||
storeColorSizeList.forEach(x -> {
|
||||
// 哪些是删除颜色
|
||||
if (!storeColorMap.containsValue(x.getStoreColorId())) {
|
||||
x.setDelFlag(Constants.DELETED);
|
||||
} else {
|
||||
// 更新标准尺码
|
||||
x.setStandard(standardSizeMap.get(x.getSize()));
|
||||
}
|
||||
});
|
||||
// 新增的颜色价格等
|
||||
List<StoreProdDTO.SPCColorPriceDTO> newColorPriceList = updateDTO.getColorPriceList().stream()
|
||||
.filter(x -> !existColorIdList.contains(x.getStoreColorId())).collect(Collectors.toList());
|
||||
if (CollectionUtils.isNotEmpty(newColorPriceList)) {
|
||||
// 新增的档口商品颜色
|
||||
List<StoreProductColor> tempColorList = new ArrayList<>();
|
||||
newColorPriceList.forEach(newColorPrice -> {
|
||||
Long storeColorId = storeColorMap.get(newColorPrice.getColorName());
|
||||
tempColorList.add(new StoreProductColor().setStoreProdId(storeProdId).setStoreColorId(storeColorMap.get(newColorPrice.getColorName()))
|
||||
.setColorName(newColorPrice.getColorName()).setOrderNum(newColorPrice.getOrderNum()).setStoreId(storeId).setProdStatus(EProductStatus.ON_SALE.getValue()));
|
||||
storeColorPriceList.add(new StoreProductColorPrice().setStoreColorId(storeColorId).setPrice(newColorPrice.getPrice()).setStoreProdId(storeProdId));
|
||||
updateDTO.getSizeList().forEach(size -> storeColorSizeList.add(new StoreProductColorSize().setStoreColorId(storeColorId).setSize(size.getSize())
|
||||
.setStoreProdId(storeProdId).setStandard(size.getStandard()).setNextSn(0)));
|
||||
});
|
||||
this.storeProdColorMapper.insert(tempColorList);
|
||||
// 设置了档口商品全部优惠的客户,新增商品优惠
|
||||
this.createStoreCusDiscount(tempColorList, storeProdId);
|
||||
// 新增的商品颜色
|
||||
dbProdColorList.add(new StoreProductColor().setStoreColorId(updateProdColorId).setStoreProdId(storeProdId).setStoreId(storeId)
|
||||
.setColorName(updateProdColorNameList.get(i)).setOrderNum(i).setProdStatus(EProductStatus.ON_SALE.getValue()));
|
||||
}
|
||||
// 更新商品颜色或新增商品颜色
|
||||
this.storeProdColorMapper.insertOrUpdate(dbProdColorList);
|
||||
|
||||
// 待更新的商品颜色尺码map 按照颜色尺码 升序排列
|
||||
Map<String, StoreProdDTO.SPCSizeDTO> updateColorSizeMap = updateDTO.getSizeList().stream()
|
||||
.sorted(Comparator.comparing(StoreProdDTO.SPCSizeDTO::getStoreColorId, Comparator.nullsLast(Comparator.naturalOrder()))
|
||||
.thenComparing(StoreProdDTO.SPCSizeDTO::getSize))
|
||||
.collect(Collectors.toMap(x -> ObjectUtils.defaultIfNull(x.getStoreColorId(), "") + ":" + x.getSize(),
|
||||
Function.identity(), (existing, replacement) -> existing, LinkedHashMap::new));
|
||||
// 处理商品颜色和尺码对应的价格
|
||||
List<StoreProductColorSize> dbProdColorSizeList = this.storeProdColorSizeMapper.selectList(new LambdaQueryWrapper<StoreProductColorSize>()
|
||||
.eq(StoreProductColorSize::getStoreProdId, storeProdId).eq(StoreProductColorSize::getDelFlag, Constants.UNDELETED));
|
||||
Map<String, StoreProductColorSize> dbProdColorSizeMap = dbProdColorSizeList.stream().collect(Collectors.toMap(x -> x.getStoreColorId() + ":" + x.getSize(), x -> x));
|
||||
dbProdColorSizeList.forEach(dbColorSize -> {
|
||||
final String dbKey = dbColorSize.getStoreColorId() + ":" + dbColorSize.getSize();
|
||||
// 判断哪些颜色是删除的颜色
|
||||
if (!updateColorSizeMap.containsKey(dbKey)) {
|
||||
dbColorSize.setDelFlag(Constants.DELETED);
|
||||
}
|
||||
});
|
||||
// 判断哪些颜色是新增 或 更新的颜色
|
||||
updateColorSizeMap.forEach((updateKey, updateColorSize) -> {
|
||||
StoreProductColorSize dbColorSize = dbProdColorSizeMap.get(updateKey);
|
||||
// 已存在则更新
|
||||
if (ObjectUtils.isNotEmpty(dbColorSize)) {
|
||||
dbProdColorSizeList.add(dbColorSize.setPrice(updateColorSize.getPrice()).setStandard(updateColorSize.getStandard()));
|
||||
} else {
|
||||
// 不存在则新增
|
||||
dbProdColorSizeList.add(new StoreProductColorSize().setSize(updateColorSize.getSize()).setStoreProdId(storeProdId)
|
||||
.setStandard(updateColorSize.getStandard()).setStoreColorId(storeColorMap.get(updateColorSize.getColorName()))
|
||||
.setPrice(updateColorSize.getPrice()).setNextSn(0));
|
||||
}
|
||||
});
|
||||
this.storeProdColorSizeMapper.insertOrUpdate(dbProdColorSizeList);
|
||||
// 设置档口商品价格尺码的barcode_prefix
|
||||
List<StoreProductColorSize> nullSnPrefixList = dbProdColorSizeList.stream().filter(x -> StringUtils.isEmpty(x.getSnPrefix()))
|
||||
.peek(x -> x.setSnPrefix(storeId + String.format("%08d", x.getId()))).collect(Collectors.toList());
|
||||
if (CollectionUtils.isNotEmpty(nullSnPrefixList)) {
|
||||
this.storeProdColorSizeMapper.updateById(nullSnPrefixList);
|
||||
}
|
||||
this.storeProdColorPriceMapper.insertOrUpdate(storeColorPriceList);
|
||||
this.storeProdColorSizeMapper.insertOrUpdate(storeColorSizeList);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -469,28 +444,26 @@ public class StoreProductServiceImpl implements IStoreProductService {
|
|||
// 处理档口所有颜色
|
||||
Map<String, Long> storeColorMap = createDTO.getAllColorList().stream().filter(x -> ObjectUtils.isNotEmpty(x.getStoreColorId()))
|
||||
.collect(Collectors.toMap(StoreColorDTO::getColorName, StoreColorDTO::getStoreColorId));
|
||||
// 新增的颜色
|
||||
List<StoreColor> newColorList = createDTO.getAllColorList().stream().filter(x -> ObjectUtils.isEmpty(x.getStoreColorId()))
|
||||
.map(x -> BeanUtil.toBean(x, StoreColor.class).setStoreId(createDTO.getStoreId())).collect(Collectors.toList());
|
||||
if (CollectionUtils.isNotEmpty(newColorList)) {
|
||||
this.storeColorMapper.insert(newColorList);
|
||||
storeColorMap.putAll(newColorList.stream().collect(Collectors.toMap(StoreColor::getColorName, StoreColor::getId)));
|
||||
}
|
||||
// 新增 档口颜色与尺码
|
||||
List<StoreProductColorPrice> prodColorPriceList = new ArrayList<>();
|
||||
List<StoreProductColorSize> prodColorSizeList = new ArrayList<>();
|
||||
// 新增档口颜色尺码与价格
|
||||
List<StoreProductColor> prodColorList = new ArrayList<>();
|
||||
createDTO.getColorPriceList().forEach(colorPrice -> {
|
||||
prodColorList.add(new StoreProductColor().setStoreProdId(storeProdId).setStoreColorId(storeColorMap.get(colorPrice.getColorName()))
|
||||
.setColorName(colorPrice.getColorName()).setOrderNum(colorPrice.getOrderNum()).setStoreId(storeId).setProdStatus(EProductStatus.ON_SALE.getValue()));
|
||||
prodColorPriceList.add(new StoreProductColorPrice().setStoreProdId(storeProdId).setPrice(colorPrice.getPrice())
|
||||
.setStoreColorId(storeColorMap.get(colorPrice.getColorName())));
|
||||
prodColorSizeList.addAll(createDTO.getSizeList().stream().map(x -> new StoreProductColorSize().setSize(x.getSize()).setStoreProdId(storeProdId)
|
||||
.setStandard(x.getStandard()).setStoreColorId(storeColorMap.get(colorPrice.getColorName())).setNextSn(0))
|
||||
.collect(Collectors.toList()));
|
||||
});
|
||||
this.storeProdColorPriceMapper.insert(prodColorPriceList);
|
||||
this.storeProdColorSizeMapper.insert(prodColorSizeList);
|
||||
final List<String> prodColorNameList = createDTO.getSizeList().stream().map(StoreProdDTO.SPCSizeDTO::getColorName).distinct().collect(Collectors.toList());
|
||||
for (int i = 1; i <= prodColorNameList.size(); i++) {
|
||||
prodColorList.add(new StoreProductColor().setStoreColorId(storeColorMap.get(prodColorNameList.get(i))).setStoreProdId(storeProdId)
|
||||
.setStoreId(storeId).setColorName(prodColorNameList.get(i)).setOrderNum(i).setProdStatus(EProductStatus.ON_SALE.getValue()));
|
||||
}
|
||||
this.storeProdColorMapper.insert(prodColorList);
|
||||
// 新增档口颜色尺码对应价格
|
||||
List<StoreProductColorSize> prodColorSizeList = createDTO.getSizeList().stream().map(x -> new StoreProductColorSize().setSize(x.getSize()).setStoreProdId(storeProdId)
|
||||
.setStandard(x.getStandard()).setStoreColorId(storeColorMap.get(x.getColorName())).setPrice(x.getPrice()).setNextSn(0))
|
||||
.collect(Collectors.toList());
|
||||
this.storeProdColorSizeMapper.insert(prodColorSizeList);
|
||||
// 设置档口商品价格尺码的barcode_prefix
|
||||
prodColorSizeList.forEach(x -> x.setSnPrefix(storeId + String.format("%08d", x.getId())));
|
||||
this.storeProdColorSizeMapper.updateById(prodColorSizeList);
|
||||
|
|
@ -1098,8 +1071,8 @@ public class StoreProductServiceImpl implements IStoreProductService {
|
|||
// 获取上一级分类的分类ID 及 分类名称
|
||||
ProdCateDTO parCate = this.prodCateMapper.getParentCate(updateDTO.getProdCateId());
|
||||
// 获取当前商品的最低价格
|
||||
BigDecimal minPrice = updateDTO.getColorPriceList().stream().min(Comparator.comparing(StoreProdDTO.SPCColorPriceDTO::getPrice))
|
||||
.map(StoreProdDTO.SPCColorPriceDTO::getPrice).orElseThrow(() -> new ServiceException("商品价格不存在!", HttpStatus.ERROR));
|
||||
BigDecimal minPrice = updateDTO.getSizeList().stream().min(Comparator.comparing(StoreProdDTO.SPCSizeDTO::getPrice))
|
||||
.map(StoreProdDTO.SPCSizeDTO::getPrice).orElseThrow(() -> new ServiceException("商品价格不存在!", HttpStatus.ERROR));
|
||||
// 获取使用季节
|
||||
String season = updateDTO.getCateAttr().getSuitableSeason();
|
||||
// 获取风格
|
||||
|
|
|
|||
|
|
@ -43,7 +43,6 @@ public class StoreProductStockServiceImpl implements IStoreProductStockService {
|
|||
final StoreProductStockMapper storeProdStockMapper;
|
||||
final StoreProductFileMapper storeProdFileMapper;
|
||||
final SysFileMapper fileMapper;
|
||||
final StoreProductColorPriceMapper prodColorPriceMapper;
|
||||
final StoreCustomerProductDiscountMapper storeCusProdDiscMapper;
|
||||
final StoreProductMapper storeProdMapper;
|
||||
final StoreProductColorSizeMapper prodColorSizeMapper;
|
||||
|
|
@ -127,8 +126,8 @@ public class StoreProductStockServiceImpl implements IStoreProductStockService {
|
|||
if (!SecurityUtils.isAdmin() && !SecurityUtils.isStoreManagerOrSub(dto.getStoreId())) {
|
||||
throw new ServiceException("当前用户非档口管理者或子账号,无权限操作!", HttpStatus.ERROR);
|
||||
}
|
||||
// 商品颜色等基本信息
|
||||
StoreProdStockAndDiscountResDTO basicInfoDTO = ObjectUtils.defaultIfNull(this.prodColorPriceMapper.selectStockAndCusDiscount(dto),
|
||||
// 获取商品的基本属性
|
||||
StoreProdStockAndDiscountResDTO basicInfoDTO = ObjectUtils.defaultIfNull(this.prodColorSizeMapper.selectStockAndCusDiscount(dto),
|
||||
new StoreProdStockAndDiscountResDTO());
|
||||
// 档口商品颜色 的 库存
|
||||
StoreProductStock stock = this.storeProdStockMapper.selectOne(new LambdaQueryWrapper<StoreProductStock>()
|
||||
|
|
@ -139,7 +138,8 @@ public class StoreProductStockServiceImpl implements IStoreProductStockService {
|
|||
.eq(StoreProductColorSize::getStoreProdId, basicInfoDTO.getStoreProdId()).eq(StoreProductColorSize::getStoreColorId, basicInfoDTO.getStoreColorId())
|
||||
.eq(StoreProductColorSize::getDelFlag, Constants.UNDELETED));
|
||||
List<StoreProdStockAndDiscountResDTO.SPSADSizeDTO> sizeStockList = prodColorSizeList.stream().map(size -> new StoreProdStockAndDiscountResDTO.SPSADSizeDTO()
|
||||
.setSize(size.getSize()).setStandard(size.getStandard()).setStock(this.getSizeStock(size.getSize(), stock))).collect(Collectors.toList());
|
||||
.setSize(size.getSize()).setStandard(size.getStandard()).setPrice(size.getPrice()).setStock(this.getSizeStock(size.getSize(), stock)))
|
||||
.collect(Collectors.toList());
|
||||
return basicInfoDTO.setStoreCusId(dto.getStoreCusId()).setStoreId(dto.getStoreId()).setSizeStockList(sizeStockList);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ import com.ruoyi.common.core.page.Page;
|
|||
import com.ruoyi.common.exception.ServiceException;
|
||||
import com.ruoyi.common.utils.SecurityUtils;
|
||||
import com.ruoyi.xkt.domain.*;
|
||||
import com.ruoyi.xkt.dto.storeProdColorPrice.StoreProdMinPriceDTO;
|
||||
import com.ruoyi.xkt.dto.storeProductFile.StoreProdMainPicDTO;
|
||||
import com.ruoyi.xkt.dto.userFavorite.*;
|
||||
import com.ruoyi.xkt.enums.*;
|
||||
|
|
@ -46,7 +47,6 @@ public class UserFavoritesServiceImpl implements IUserFavoritesService {
|
|||
final StoreProductFileMapper prodFileMapper;
|
||||
final StoreProductColorSizeMapper prodColorSizeMapper;
|
||||
final ShoppingCartMapper shopCartMapper;
|
||||
final StoreProductColorPriceMapper prodColorPriceMapper;
|
||||
final StoreProductColorMapper prodColorMapper;
|
||||
final ShoppingCartDetailMapper shopCartDetailMapper;
|
||||
final StoreMapper storeMapper;
|
||||
|
|
@ -117,14 +117,11 @@ public class UserFavoritesServiceImpl implements IUserFavoritesService {
|
|||
if (CollectionUtils.isEmpty(favoriteList)) {
|
||||
return Page.empty(pageDTO.getPageNum(), pageDTO.getPageSize());
|
||||
}
|
||||
// 找到商品的定价
|
||||
List<StoreProductColorPrice> priceList = this.prodColorPriceMapper.selectList(new LambdaQueryWrapper<StoreProductColorPrice>()
|
||||
.in(StoreProductColorPrice::getStoreProdId, favoriteList.stream().map(UserFavoritePageResDTO::getStoreProdId).collect(Collectors.toList()))
|
||||
.eq(StoreProductColorPrice::getDelFlag, Constants.UNDELETED));
|
||||
// 按照storeProdId分组,并取价格最低的价格
|
||||
Map<Long, BigDecimal> minPriceMap = priceList.stream().collect(Collectors.groupingBy(StoreProductColorPrice::getStoreProdId,
|
||||
Collectors.collectingAndThen(Collectors.toList(), list -> list.stream().map(StoreProductColorPrice::getPrice)
|
||||
.min(Comparator.comparing(Function.identity())).orElseThrow(() -> new ServiceException("商品价格不存在", HttpStatus.ERROR)))));
|
||||
// 档口商品最低价格
|
||||
List<StoreProdMinPriceDTO> prodMinPriceList = this.prodColorSizeMapper.selectStoreProdMinPriceList(favoriteList.stream()
|
||||
.map(UserFavoritePageResDTO::getStoreProdId).map(String::valueOf).collect(Collectors.toList()));
|
||||
Map<Long, BigDecimal> prodMinPriceMap = CollectionUtils.isEmpty(prodMinPriceList) ? new HashMap<>()
|
||||
: prodMinPriceList.stream().collect(Collectors.toMap(StoreProdMinPriceDTO::getStoreProdId, StoreProdMinPriceDTO::getPrice));
|
||||
// 找到第一张商品主图
|
||||
List<StoreProdMainPicDTO> mainPicList = this.prodFileMapper.selectMainPicByStoreProdIdList(favoriteList.stream()
|
||||
.map(UserFavoritePageResDTO::getStoreProdId).collect(Collectors.toList()), FileType.MAIN_PIC.getValue(), ORDER_NUM_1);
|
||||
|
|
@ -150,7 +147,7 @@ public class UserFavoritesServiceImpl implements IUserFavoritesService {
|
|||
})));
|
||||
favoriteList.forEach(x -> x.setStandardSize(minAndMaxSizeMap.getOrDefault(x.getStoreProdId(), ""))
|
||||
.setMainPicUrl(mainPicMap.getOrDefault(x.getStoreProdId(), null))
|
||||
.setPrice(minPriceMap.getOrDefault(x.getStoreProdId(), null)));
|
||||
.setPrice(prodMinPriceMap.getOrDefault(x.getStoreProdId(), null)));
|
||||
return Page.convert(new PageInfo<>(favoriteList));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -80,4 +80,56 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
</select>
|
||||
|
||||
|
||||
<select id="selectListByStoreProdIdAndStoreId" resultType="com.ruoyi.xkt.dto.storeProdColorPrice.StoreProdColorPriceResDTO">
|
||||
SELECT
|
||||
spc.id AS storeProdColorId,
|
||||
spc.store_id,
|
||||
spc.store_color_id,
|
||||
sp.prod_art_num,
|
||||
spc.color_name,
|
||||
(SELECT MIN(spcs.price) FROM store_product_color_size spcs
|
||||
WHERE spcs.store_prod_id = spc.store_prod_id AND spcs.store_color_id = spc.store_color_id AND spcs.del_flag = 0) AS price,
|
||||
sp.over_price,
|
||||
spc.order_num
|
||||
FROM
|
||||
store_product_color spc
|
||||
JOIN store_product sp ON spc.store_prod_id = sp.id
|
||||
WHERE
|
||||
spc.del_flag = 0
|
||||
AND spc.prod_status IN ( 2, 3 )
|
||||
AND spc.store_prod_id = #{storeProdId}
|
||||
AND spc.store_id = #{storeId}
|
||||
ORDER BY
|
||||
spc.order_num
|
||||
</select>
|
||||
|
||||
<select id="selectColorPricePage" resultType="com.ruoyi.xkt.dto.storeProdColorPrice.StoreProdColorPriceResDTO">
|
||||
SELECT
|
||||
spc.id AS storeProdColorId,
|
||||
sp.store_id,
|
||||
spc.store_prod_id,
|
||||
spc.store_color_id,
|
||||
sp.prod_art_num,
|
||||
spc.color_name,
|
||||
MIN( spcs.price ) AS price
|
||||
FROM
|
||||
store_product_color spc
|
||||
JOIN store_product sp ON spc.store_prod_id = sp.id
|
||||
JOIN store_product_color_size spcs ON spc.store_prod_id = spcs.store_prod_id AND spcs.del_flag = 0
|
||||
WHERE
|
||||
spc.del_flag = 0 AND sp.store_id = #{storeId}
|
||||
<if test="prodArtNum != null and prodArtNum != ''">
|
||||
AND sp.prod_art_num like concat('%', #{prodArtNum}, '%')
|
||||
</if>
|
||||
<if test="prodStatusList != null and prodStatusList.size() > 0">
|
||||
AND spc.prod_status IN
|
||||
<foreach item="item" collection="prodStatusList" separator="," open="(" close=")" index="">
|
||||
#{item}
|
||||
</foreach>
|
||||
</if>
|
||||
GROUP BY
|
||||
spc.id
|
||||
</select>
|
||||
|
||||
|
||||
</mapper>
|
||||
|
|
@ -3,106 +3,7 @@
|
|||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.ruoyi.xkt.mapper.StoreProductColorPriceMapper">
|
||||
|
||||
<select id="selectListByStoreProdId" parameterType="Long" resultType="com.ruoyi.xkt.dto.storeProdColorPrice.StoreProdColorPriceSimpleDTO">
|
||||
SELECT
|
||||
store_color_id AS storeColorId,
|
||||
price
|
||||
FROM
|
||||
store_product_color_price
|
||||
WHERE
|
||||
del_flag = 0 AND store_prod_id = #{storeProdId}
|
||||
</select>
|
||||
|
||||
<select id="selectListByStoreProdIdAndStoreId" resultType="com.ruoyi.xkt.dto.storeProdColorPrice.StoreProdColorPriceResDTO">
|
||||
SELECT
|
||||
spc.id AS storeProdColorId,
|
||||
spc.store_id,
|
||||
spc.store_color_id,
|
||||
sp.prod_art_num,
|
||||
spc.color_name,
|
||||
spcp.price,
|
||||
sp.over_price,
|
||||
spc.order_num
|
||||
FROM
|
||||
store_product_color spc
|
||||
JOIN store_product sp ON spc.store_prod_id = sp.id
|
||||
JOIN store_product_color_price spcp ON spc.store_prod_id = spcp.store_prod_id AND spc.store_color_id = spcp.store_color_id
|
||||
WHERE
|
||||
spc.prod_status IN ( 2, 3 )
|
||||
AND spc.store_prod_id = #{storeProdId}
|
||||
AND spc.store_id = #{storeId}
|
||||
</select>
|
||||
|
||||
<select id="selectStoreProdMinPriceList" resultType="com.ruoyi.xkt.dto.storeProdColorPrice.StoreProdMinPriceDTO">
|
||||
SELECT
|
||||
spcp.store_prod_id,
|
||||
MIN( spcp.price )
|
||||
FROM
|
||||
store_product_color_price spcp
|
||||
JOIN store_product_color spc ON spcp.store_prod_id = spc.store_prod_id
|
||||
AND spcp.store_color_id = spc.store_color_id AND spc.prod_status IN ( 2, 3 )
|
||||
WHERE
|
||||
spcp.del_flag = 0
|
||||
<if test="storeProdIdList != null and storeProdIdList.size() > 0">
|
||||
AND spcp.store_prod_id IN
|
||||
<foreach item="item" collection="storeProdIdList" separator="," open="(" close=")" index="">
|
||||
#{item}
|
||||
</foreach>
|
||||
</if>
|
||||
GROUP BY
|
||||
spcp.store_prod_id
|
||||
</select>
|
||||
|
||||
<select id="selectPricePage" resultType="com.ruoyi.xkt.dto.storeProdColorPrice.StoreProdColorPriceResDTO">
|
||||
SELECT DISTINCT
|
||||
spc.id AS storeProdColorId,
|
||||
sp.store_id,
|
||||
spcp.store_prod_id,
|
||||
spcp.store_color_id,
|
||||
sp.prod_art_num,
|
||||
spc.color_name,
|
||||
spcp.price,
|
||||
sp.over_price
|
||||
FROM
|
||||
store_product_color_price spcp
|
||||
JOIN store_product sp ON spcp.store_prod_id = sp.id
|
||||
JOIN store_product_color spc ON spcp.store_prod_id = spc.store_prod_id AND spcp.store_color_id = spc.store_color_id
|
||||
WHERE
|
||||
spcp.del_flag = 0 AND sp.store_id = #{storeId}
|
||||
<if test="prodArtNum != null and prodArtNum != ''">
|
||||
AND sp.prod_art_num like concat('%', #{prodArtNum}, '%')
|
||||
</if>
|
||||
<if test="prodStatusList != null and prodStatusList.size() > 0">
|
||||
AND spc.prod_status IN
|
||||
<foreach item="item" collection="prodStatusList" separator="," open="(" close=")" index="">
|
||||
#{item}
|
||||
</foreach>
|
||||
</if>
|
||||
ORDER BY
|
||||
spcp.store_prod_id,
|
||||
spcp.store_color_id
|
||||
</select>
|
||||
|
||||
<select id="selectStockAndCusDiscount" resultType="com.ruoyi.xkt.dto.storeProductStock.StoreProdStockAndDiscountResDTO">
|
||||
SELECT DISTINCT
|
||||
spcp.store_color_id,
|
||||
spcp.price,
|
||||
spc.color_name,
|
||||
spc.id AS storeProdColorId,
|
||||
spcp.store_prod_id,
|
||||
sp.prod_art_num,
|
||||
sp.over_price,
|
||||
scpd.discount,
|
||||
( SELECT sc.cus_name FROM store_customer sc WHERE sc.id = #{storeCusId} ) AS storeCusName
|
||||
FROM
|
||||
store_product_color_price spcp
|
||||
JOIN store_product sp ON spcp.store_prod_id = sp.id
|
||||
JOIN store_product_color spc ON spcp.store_prod_id = spc.store_prod_id AND spc.store_color_id = spcp.store_color_id AND spc.del_flag = 0
|
||||
LEFT JOIN store_customer_product_discount scpd ON scpd.store_prod_color_id = spc.id AND scpd.del_flag = 0
|
||||
WHERE
|
||||
spcp.del_flag = 0
|
||||
AND spc.id = #{storeProdColorId}
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
|
@ -9,15 +9,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
</update>
|
||||
|
||||
<select id="selectListByStoreProdId" parameterType="Long" resultType="com.ruoyi.xkt.dto.storeProdColorSize.StoreProdSizeDTO">
|
||||
SELECT DISTINCT
|
||||
SELECT
|
||||
spcs.store_color_id,
|
||||
sc.color_name,
|
||||
spcs.size,
|
||||
spcs.standard
|
||||
spcs.standard,
|
||||
spcs.price
|
||||
FROM
|
||||
store_product_color_size spcs
|
||||
JOIN store_color sc ON spcs.store_color_id = sc.id
|
||||
WHERE
|
||||
spcs.del_flag = 0
|
||||
AND spcs.store_prod_id = #{storeProdId}
|
||||
AND spcs.store_prod_id = #{storeProdId}
|
||||
ORDER BY
|
||||
spcs.store_color_id,
|
||||
spcs.size
|
||||
</select>
|
||||
|
||||
|
|
@ -170,4 +175,40 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
AND spcs.other_sn_prefix IS NULL;
|
||||
</select>
|
||||
|
||||
<select id="selectStoreProdMinPriceList" resultType="com.ruoyi.xkt.dto.storeProdColorPrice.StoreProdMinPriceDTO">
|
||||
SELECT
|
||||
spcs.store_prod_id,
|
||||
MIN( spcs.price ) AS price
|
||||
FROM
|
||||
store_product_color_size spcs
|
||||
WHERE
|
||||
spcs.del_flag = 0
|
||||
<if test="storeProdIdList != null and storeProdIdList.size() > 0">
|
||||
AND spcs.store_prod_id IN
|
||||
<foreach item="item" collection="storeProdIdList" separator="," open="(" close=")" index="">
|
||||
#{item}
|
||||
</foreach>
|
||||
</if>
|
||||
GROUP BY
|
||||
spcs.store_prod_id
|
||||
</select>
|
||||
|
||||
<select id="selectStockAndCusDiscount" resultType="com.ruoyi.xkt.dto.storeProductStock.StoreProdStockAndDiscountResDTO">
|
||||
SELECT
|
||||
spc.id AS storeProdColorId,
|
||||
spc.store_color_id,
|
||||
spc.color_name,
|
||||
spc.store_prod_id,
|
||||
sp.prod_art_num,
|
||||
scpd.discount,
|
||||
( SELECT sc.cus_name FROM store_customer sc WHERE sc.id = #{storeCusId} ) AS storeCusName
|
||||
FROM
|
||||
store_product_color spc
|
||||
JOIN store_product sp ON spc.store_prod_id = sp.id
|
||||
LEFT JOIN store_customer_product_discount scpd ON scpd.store_prod_color_id = spc.id AND scpd.del_flag = 0
|
||||
WHERE
|
||||
spc.del_flag = 0
|
||||
AND spc.id = #{storeProdColorId}
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
|
@ -47,31 +47,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
</if>
|
||||
</select>
|
||||
|
||||
<select id="selectPicSpaceList" >
|
||||
SELECT
|
||||
sp.prod_art_num AS prodArtNum,
|
||||
sp.id AS storeProdId,
|
||||
sf.file_url AS fileUrl
|
||||
FROM
|
||||
store_product_file spf
|
||||
JOIN sys_file sf ON spf.file_id = sf.id
|
||||
JOIN store_product sp ON spf.store_prod_id = sp.id
|
||||
WHERE
|
||||
spf.del_flag = 0
|
||||
AND spf.file_type = #{fileType}
|
||||
AND spf.store_id = #{storeId}
|
||||
<if test="storeProdIdList != null and storeProdIdList.size() > 0">
|
||||
AND spf.store_prod_id in
|
||||
<foreach item="storeProdId" collection="storeProdIdList" open="(" separator="," close=")">
|
||||
#{storeProdId}
|
||||
</foreach>
|
||||
</if>
|
||||
ORDER BY
|
||||
spf.store_prod_id DESC,
|
||||
spf.order_num
|
||||
</select>
|
||||
|
||||
|
||||
<select id="selectTotalMainPicList" resultType="com.ruoyi.xkt.dto.storeProductFile.StoreProdFileResDTO">
|
||||
SELECT
|
||||
spf.store_prod_id AS storeProdId,
|
||||
|
|
|
|||
Loading…
Reference in New Issue