master:档口首页商品详情;
parent
955979c249
commit
25f8114230
|
|
@ -6,6 +6,8 @@ import com.ruoyi.common.core.controller.XktBaseController;
|
|||
import com.ruoyi.common.core.domain.R;
|
||||
import com.ruoyi.common.enums.BusinessType;
|
||||
import com.ruoyi.web.controller.xkt.vo.storeHomepage.StoreHomeDecorationVO;
|
||||
import com.ruoyi.web.controller.xkt.vo.storeHomepage.StoreHomeProdResVO;
|
||||
import com.ruoyi.web.controller.xkt.vo.storeHomepage.StoreHomeResVO;
|
||||
import com.ruoyi.xkt.dto.storeHomepage.StoreHomeDecorationDTO;
|
||||
import com.ruoyi.xkt.service.IStoreHomepageService;
|
||||
import io.swagger.annotations.Api;
|
||||
|
|
@ -30,11 +32,11 @@ public class StoreHomepageController extends XktBaseController {
|
|||
final IStoreHomepageService storeHomeService;
|
||||
|
||||
/**
|
||||
* 新增档口首页装修数据
|
||||
* 新增档口装修数据
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:homepage:add')")
|
||||
@ApiOperation(value = "新增档口首页装修数据", httpMethod = "POST", response = R.class)
|
||||
@Log(title = "新增档口首页装修数据", businessType = BusinessType.INSERT)
|
||||
@ApiOperation(value = "新增档口装修数据", httpMethod = "POST", response = R.class)
|
||||
@Log(title = "新增档口装修数据", businessType = BusinessType.INSERT)
|
||||
@PostMapping("/decoration/{storeId}/{templateNum}")
|
||||
public R<Integer> addDecoration(@PathVariable("storeId") Long storeId, @PathVariable("templateNum") Integer templateNum,
|
||||
@Validated @RequestBody StoreHomeDecorationVO decorationVO) {
|
||||
|
|
@ -42,26 +44,46 @@ public class StoreHomepageController extends XktBaseController {
|
|||
}
|
||||
|
||||
/**
|
||||
* 查询档口首页装修数据
|
||||
* 查询档口装修数据
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:sale:query')")
|
||||
@ApiOperation(value = "查询档口首页装修数据", httpMethod = "GET", response = R.class)
|
||||
@ApiOperation(value = "查询档口装修数据", httpMethod = "GET", response = R.class)
|
||||
@GetMapping(value = "/decoration/{storeId}")
|
||||
public R<StoreHomeDecorationVO> getDecorationInfo(@PathVariable("storeId") Long storeId) {
|
||||
return R.ok(BeanUtil.toBean(storeHomeService.selectByStoreId(storeId), StoreHomeDecorationVO.class));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改档口首页装修数据
|
||||
* 修改档口装修数据
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:homepage:edit')")
|
||||
@ApiOperation(value = "修改档口首页装修数据", httpMethod = "PUT", response = R.class)
|
||||
@Log(title = "修改档口首页装修数据", businessType = BusinessType.UPDATE)
|
||||
@ApiOperation(value = "修改档口装修数据", httpMethod = "PUT", response = R.class)
|
||||
@Log(title = "修改档口装修数据", businessType = BusinessType.UPDATE)
|
||||
@PutMapping("/decoration/{storeId}/{templateNum}")
|
||||
public R<Integer> editDecoration(@PathVariable("storeId") Long storeId, @PathVariable("templateNum") Integer templateNum,
|
||||
@Validated @RequestBody StoreHomeDecorationVO homepageVO) {
|
||||
return R.ok(storeHomeService.updateStoreHomepage(storeId, templateNum, BeanUtil.toBean(homepageVO, StoreHomeDecorationDTO.class)));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询档口首页
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:sale:query')")
|
||||
@ApiOperation(value = "查询档口首页", httpMethod = "GET", response = R.class)
|
||||
@GetMapping(value = "/{storeId}")
|
||||
public R<StoreHomeResVO> getHomepageInfo(@PathVariable("storeId") Long storeId) {
|
||||
return R.ok(BeanUtil.toBean(storeHomeService.getHomepageInfo(storeId), StoreHomeResVO.class));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询档口商品详情
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:sale:query')")
|
||||
@ApiOperation(value = "查询档口商品详情", httpMethod = "GET", response = R.class)
|
||||
@GetMapping(value = "/store-prod/{storeId}/{storeProdId}")
|
||||
public R<StoreHomeProdResVO> getStoreProdInfo(@PathVariable("storeId") Long storeId, @PathVariable("storeProdId") Long storeProdId) {
|
||||
return R.ok(BeanUtil.toBean(storeHomeService.getStoreProdInfo(storeId, storeProdId), StoreHomeProdResVO.class));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -49,6 +49,18 @@ public class StoreProductController extends XktBaseController {
|
|||
return R.ok(BeanUtil.copyToList(storeProdService.fuzzyQueryList(storeId, prodArtNum), StoreProdFuzzyResVO.class));
|
||||
}
|
||||
|
||||
/**
|
||||
* 模糊查询档口商品
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:product:query')")
|
||||
@ApiOperation(value = "模糊查询档口商品", httpMethod = "GET", response = R.class)
|
||||
@GetMapping(value = "/fuzzy/pic")
|
||||
public R<List<StoreProdFuzzyResPicVO>> fuzzyQueryResPicList(@RequestParam(value = "prodArtNum", required = false) String prodArtNum,
|
||||
@RequestParam("storeId") Long storeId) {
|
||||
return R.ok(BeanUtil.copyToList(storeProdService.fuzzyQueryResPicList(storeId, prodArtNum), StoreProdFuzzyResPicVO.class));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 查询档口商品列表
|
||||
*/
|
||||
|
|
@ -64,7 +76,7 @@ public class StoreProductController extends XktBaseController {
|
|||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:product:query')")
|
||||
@ApiOperation(value = "获取档口商品详细信息", httpMethod = "GET", response = R.class)
|
||||
@GetMapping(value = "/{storeProdId}")
|
||||
@GetMapping(value = "/detail/{storeProdId}")
|
||||
public R<StoreProdResVO> getInfo(@PathVariable("storeProdId") Long storeProdId) {
|
||||
return R.ok(BeanUtil.toBean(storeProdService.selectStoreProductByStoreProdId(storeProdId), StoreProdResVO.class));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,6 +29,8 @@ public class StoreHomeDecorationVO {
|
|||
|
||||
@ApiModelProperty(value = "业务类型ID,如果选择:不跳转 不传,选择:跳转店铺,传storeId,选择:跳转商品,传storeProdId")
|
||||
private Long bizId;
|
||||
@ApiModelProperty(value = "业务名称")
|
||||
private String bizName;
|
||||
@ApiModelProperty(value = "跳转类型 1. 不跳转 2. 跳转店铺 3. 跳转商品")
|
||||
private Integer jumpType;
|
||||
@ApiModelProperty(value = "文件名称")
|
||||
|
|
@ -50,6 +52,8 @@ public class StoreHomeDecorationVO {
|
|||
|
||||
@ApiModelProperty(value = "文件大小")
|
||||
private Long bizId;
|
||||
@ApiModelProperty(value = "业务名称")
|
||||
private String bizName;
|
||||
@ApiModelProperty(value = "文件大小")
|
||||
private Integer jumpType;
|
||||
@ApiModelProperty(value = "文件类型 2轮播小图 3店家推荐 4人气爆款 5当季新品 6销量排行")
|
||||
|
|
|
|||
|
|
@ -0,0 +1,162 @@
|
|||
package com.ruoyi.web.controller.xkt.vo.storeHomepage;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author liujiang
|
||||
* @version v1.0
|
||||
* @date 2025/3/27 15:12
|
||||
*/
|
||||
@ApiModel("档口首页返回数据")
|
||||
@Data
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class StoreHomeProdResVO {
|
||||
|
||||
@ApiModelProperty(value = "档口基本信息")
|
||||
private StoreBasicVO store;
|
||||
@ApiModelProperty(value = "档口商品不同状态数量")
|
||||
private StoreProdStatusCountVO storeProdStatusCount;
|
||||
@ApiModelProperty(value = "档口商品基本信息")
|
||||
private StoreProdInfoVO storeProd;
|
||||
@ApiModelProperty(value = "是否已关注档口")
|
||||
private Integer followStore;
|
||||
@ApiModelProperty(value = "是否已收藏商品")
|
||||
private Integer collectProd;
|
||||
|
||||
@Data
|
||||
@ApiModel(value = "档口商品基本信息")
|
||||
public static class StoreProdStatusCountVO {
|
||||
@ApiModelProperty(value = "在售数量")
|
||||
private Integer onSaleNum;
|
||||
@ApiModelProperty(value = "尾货数量")
|
||||
private Integer tailGoodsNum;
|
||||
@ApiModelProperty(value = "已下架数量")
|
||||
private Integer offSaleNum;
|
||||
}
|
||||
|
||||
@Data
|
||||
@ApiModel(value = "档口基本信息")
|
||||
public static class StoreBasicVO {
|
||||
@ApiModelProperty(value = "档口模板ID")
|
||||
private Integer templateNum;
|
||||
@ApiModelProperty(value = "档口ID")
|
||||
private Long storeId;
|
||||
@ApiModelProperty(value = "档口名称")
|
||||
private String storeName;
|
||||
@ApiModelProperty(value = "经营年限")
|
||||
private Integer operateYears;
|
||||
@ApiModelProperty(value = "联系电话")
|
||||
private String contactPhone;
|
||||
@ApiModelProperty(value = "备选联系电话")
|
||||
private String contactBackPhone;
|
||||
@ApiModelProperty(value = "微信账号")
|
||||
private String wechatAccount;
|
||||
@ApiModelProperty(value = "QQ账号")
|
||||
private String qqAccount;
|
||||
@ApiModelProperty(value = "档口地址")
|
||||
private String storeAddress;
|
||||
@ApiModelProperty(name = "营业执照名称")
|
||||
private String licenseName;
|
||||
}
|
||||
|
||||
@Data
|
||||
@ApiModel(value = "档口商品基本信息")
|
||||
@Accessors(chain = true)
|
||||
public static class StoreProdInfoVO {
|
||||
@ApiModelProperty("档口商品ID")
|
||||
private Long storeProdId;
|
||||
@ApiModelProperty("档口商品名称")
|
||||
private String prodName;
|
||||
@ApiModelProperty(value = "商品货号")
|
||||
private String prodArtNum;
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date createTime;
|
||||
@ApiModelProperty(value = "商品标题")
|
||||
private String prodTitle;
|
||||
@ApiModelProperty(value = "大小码加价")
|
||||
private Integer overPrice;
|
||||
@ApiModelProperty(value = "详情内容")
|
||||
private StoreProdDetailVO detail;
|
||||
@ApiModelProperty(value = "档口商品尺码库存列表")
|
||||
private List<StoreProdColorVO> colorList;
|
||||
@ApiModelProperty(value = "档口文件列表")
|
||||
private List<StoreProdFileVO> mainPicList;
|
||||
@ApiModelProperty(value = "档口类目属性列表")
|
||||
private List<StoreProdCateAttrVO> cateAttrList;
|
||||
}
|
||||
|
||||
@Data
|
||||
@ApiModel(value = "档口商品类目属性")
|
||||
public static class StoreProdCateAttrVO {
|
||||
@ApiModelProperty(value = "系统设置类目")
|
||||
private String dictType;
|
||||
@ApiModelProperty(value = "系统设置类目值")
|
||||
private String dictValue;
|
||||
}
|
||||
|
||||
|
||||
@Data
|
||||
@ApiModel(value = "档口商品文件")
|
||||
public static class StoreProdFileVO {
|
||||
@ApiModelProperty("档口商品名称")
|
||||
private Long storeProdId;
|
||||
@ApiModelProperty(value = "系统文件ID")
|
||||
private Long fileId;
|
||||
@ApiModelProperty(value = "文件路径")
|
||||
private String fileUrl;
|
||||
@ApiModelProperty(value = "文件类型")
|
||||
private Integer fileType;
|
||||
@ApiModelProperty(value = "文件名称")
|
||||
private String fileName;
|
||||
@ApiModelProperty(value = "文件大小")
|
||||
private BigDecimal fileSize;
|
||||
@ApiModelProperty(value = "排序")
|
||||
private Integer orderNum;
|
||||
}
|
||||
|
||||
@Data
|
||||
@ApiModel(value = "档口商品详情")
|
||||
public static class StoreProdDetailVO {
|
||||
@ApiModelProperty(value = "详情内容")
|
||||
private String detail;
|
||||
}
|
||||
|
||||
@Data
|
||||
@ApiModel(value = "档口商品基本信息")
|
||||
@Accessors(chain = true)
|
||||
public static class StoreProdColorVO {
|
||||
@ApiModelProperty(value = "档口商品颜色ID")
|
||||
private Long storeProdColorId;
|
||||
@ApiModelProperty(value = "档口颜色ID")
|
||||
private Long storeColorId;
|
||||
@ApiModelProperty(value = "颜色名称")
|
||||
private String colorName;
|
||||
@ApiModelProperty(value = "排序")
|
||||
private Integer orderNum;
|
||||
@ApiModelProperty(value = "档口商品定价")
|
||||
private BigDecimal price;
|
||||
@ApiModelProperty(value = "商品尺码及库存")
|
||||
List<StoreHomeProdResVO.StoreProdSizeStockVO> sizeStockList;
|
||||
}
|
||||
|
||||
@Data
|
||||
@ApiModel(value = "档口商品尺码及库存")
|
||||
@Accessors(chain = true)
|
||||
public static class StoreProdSizeStockVO {
|
||||
@ApiModelProperty(value = "商品尺码")
|
||||
private Integer size;
|
||||
@ApiModelProperty(value = "尺码库存")
|
||||
private Integer stock;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,57 @@
|
|||
package com.ruoyi.web.controller.xkt.vo.storeHomepage;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author liujiang
|
||||
* @version v1.0
|
||||
* @date 2025/3/27 15:12
|
||||
*/
|
||||
@ApiModel("档口首页返回数据")
|
||||
@Data
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class StoreHomeResVO {
|
||||
|
||||
@ApiModelProperty(value = "档口基本信息")
|
||||
private StoreBasicVO storeBasic;
|
||||
@ApiModelProperty(value = "档口首页商品基本信息")
|
||||
private StoreProdBasicVO storeProdBasic;
|
||||
|
||||
@Data
|
||||
@ApiModel(value = "档口基本信息")
|
||||
public static class StoreBasicVO {
|
||||
@ApiModelProperty(value = "档口模板ID")
|
||||
private Integer templateNum;
|
||||
@ApiModelProperty(value = "档口ID")
|
||||
private Long storeId;
|
||||
@ApiModelProperty(value = "档口名称")
|
||||
private String storeName;
|
||||
@ApiModelProperty(value = "经营年限")
|
||||
private Integer operateYears;
|
||||
@ApiModelProperty(value = "联系电话")
|
||||
private String contactPhone;
|
||||
@ApiModelProperty(value = "备选联系电话")
|
||||
private String contactBackPhone;
|
||||
@ApiModelProperty(value = "微信账号")
|
||||
private String wechatAccount;
|
||||
@ApiModelProperty(value = "QQ账号")
|
||||
private String qqAccount;
|
||||
@ApiModelProperty(value = "档口地址")
|
||||
private String storeAddress;
|
||||
}
|
||||
|
||||
@Data
|
||||
@ApiModel(value = "档口商品基本信息")
|
||||
public static class StoreProdBasicVO {
|
||||
@ApiModelProperty(value = "在售数量")
|
||||
private Integer onSaleNum;
|
||||
@ApiModelProperty(value = "尾货数量")
|
||||
private Integer tailGoodsNum;
|
||||
@ApiModelProperty(value = "已下架数量")
|
||||
private Integer offSaleNum;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
package com.ruoyi.web.controller.xkt.vo.storeProd;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* @author liujiang
|
||||
* @version v1.0
|
||||
* @date 2025/3/27 15:12
|
||||
*/
|
||||
@ApiModel("店铺首页编辑查询商品")
|
||||
@Data
|
||||
@Builder
|
||||
@Accessors(chain = true)
|
||||
public class StoreProdFuzzyResPicVO {
|
||||
|
||||
@ApiModelProperty(value = "档口商品ID")
|
||||
private Long storeProdId;
|
||||
@ApiModelProperty(value = "档口ID")
|
||||
private Long storeId;
|
||||
@ApiModelProperty(value = "商品货号")
|
||||
private String prodArtNum;
|
||||
@ApiModelProperty(value = "商品主图")
|
||||
private String mainPicUrl;
|
||||
}
|
||||
|
|
@ -193,6 +193,11 @@ public class Constants
|
|||
*/
|
||||
public static final Long PLATFORM_INTERNAL_ACCOUNT_ID = 1L;
|
||||
|
||||
/**
|
||||
* 排序值1
|
||||
*/
|
||||
public static final Integer ORDER_NUM_1 = 1;
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -46,6 +46,10 @@ public class StoreProductStock extends XktBaseEntity {
|
|||
*/
|
||||
@Excel(name = "档口商品颜色ID")
|
||||
private Long storeProdColorId;
|
||||
/**
|
||||
* 档口颜色ID
|
||||
*/
|
||||
private Long storeColorId;
|
||||
/**
|
||||
* 颜色名称
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -45,6 +45,11 @@ public class StoreProductStorageDetail extends XktBaseEntity {
|
|||
*/
|
||||
@Excel(name = "档口商品颜色ID")
|
||||
private Long storeProdColorId;
|
||||
/**
|
||||
* 档口商品颜色ID
|
||||
*/
|
||||
@Excel(name = "档口颜色ID")
|
||||
private Long storeColorId;
|
||||
/**
|
||||
* 颜色名称
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -0,0 +1,120 @@
|
|||
package com.ruoyi.xkt.dto.storeHomepage;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import com.ruoyi.xkt.dto.storeProdCateAttr.StoreProdCateAttrDTO;
|
||||
import com.ruoyi.xkt.dto.storeProdDetail.StoreProdDetailDTO;
|
||||
import com.ruoyi.xkt.dto.storeProduct.StoreProdStatusCountDTO;
|
||||
import com.ruoyi.xkt.dto.storeProductFile.StoreProdFileResDTO;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author liujiang
|
||||
* @version v1.0
|
||||
* @date 2025/3/27 15:12
|
||||
*/
|
||||
@ApiModel("档口首页返回数据")
|
||||
@Data
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class StoreHomeProdResDTO {
|
||||
|
||||
@ApiModelProperty(value = "档口基本信息")
|
||||
private StoreBasicDTO store;
|
||||
@ApiModelProperty(value = "档口商品不同状态数量")
|
||||
private StoreProdStatusCountDTO storeProdStatusCount;
|
||||
@ApiModelProperty(value = "档口商品基本信息")
|
||||
private StoreProdInfoDTO storeProd;
|
||||
@ApiModelProperty(value = "是否已关注档口")
|
||||
private Integer followStore;
|
||||
@ApiModelProperty(value = "是否已收藏商品")
|
||||
private Integer collectProd;
|
||||
|
||||
@Data
|
||||
@ApiModel(value = "档口基本信息")
|
||||
@Accessors(chain = true)
|
||||
public static class StoreBasicDTO {
|
||||
@ApiModelProperty(value = "档口模板ID")
|
||||
private Integer templateNum;
|
||||
@ApiModelProperty(value = "档口ID")
|
||||
private Long storeId;
|
||||
@ApiModelProperty(value = "档口名称")
|
||||
private String storeName;
|
||||
@ApiModelProperty(value = "经营年限")
|
||||
private Integer operateYears;
|
||||
@ApiModelProperty(value = "联系电话")
|
||||
private String contactPhone;
|
||||
@ApiModelProperty(value = "备选联系电话")
|
||||
private String contactBackPhone;
|
||||
@ApiModelProperty(value = "微信账号")
|
||||
private String wechatAccount;
|
||||
@ApiModelProperty(value = "QQ账号")
|
||||
private String qqAccount;
|
||||
@ApiModelProperty(value = "档口地址")
|
||||
private String storeAddress;
|
||||
@ApiModelProperty(name = "营业执照名称")
|
||||
private String licenseName;
|
||||
}
|
||||
|
||||
@Data
|
||||
@ApiModel(value = "档口商品基本信息")
|
||||
@Accessors(chain = true)
|
||||
public static class StoreProdInfoDTO {
|
||||
@ApiModelProperty("档口商品ID")
|
||||
private Long storeProdId;
|
||||
@ApiModelProperty("档口商品名称")
|
||||
private String prodName;
|
||||
@ApiModelProperty(value = "商品货号")
|
||||
private String prodArtNum;
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date createTime;
|
||||
@ApiModelProperty(value = "商品标题")
|
||||
private String prodTitle;
|
||||
@ApiModelProperty(value = "大小码加价")
|
||||
private Integer overPrice;
|
||||
@ApiModelProperty(value = "详情内容")
|
||||
private StoreProdDetailDTO detail;
|
||||
@ApiModelProperty(value = "档口商品尺码库存列表")
|
||||
private List<StoreProdColorDTO> colorList;
|
||||
@ApiModelProperty(value = "档口文件列表")
|
||||
private List<StoreProdFileResDTO> mainPicList;
|
||||
@ApiModelProperty(value = "档口类目属性列表")
|
||||
private List<StoreProdCateAttrDTO> cateAttrList;
|
||||
}
|
||||
|
||||
@Data
|
||||
@ApiModel(value = "档口商品基本信息")
|
||||
@Accessors(chain = true)
|
||||
public static class StoreProdColorDTO {
|
||||
@ApiModelProperty(value = "档口商品颜色ID")
|
||||
private Long storeProdColorId;
|
||||
@ApiModelProperty(value = "档口颜色ID")
|
||||
private Long storeColorId;
|
||||
@ApiModelProperty(value = "颜色名称")
|
||||
private String colorName;
|
||||
@ApiModelProperty(value = "排序")
|
||||
private Integer orderNum;
|
||||
@ApiModelProperty(value = "档口商品定价")
|
||||
private BigDecimal price;
|
||||
@ApiModelProperty(value = "商品尺码及库存")
|
||||
List<StoreProdSizeStockDTO> sizeStockList;
|
||||
}
|
||||
|
||||
@Data
|
||||
@ApiModel(value = "档口商品尺码及库存")
|
||||
@Accessors(chain = true)
|
||||
public static class StoreProdSizeStockDTO {
|
||||
@ApiModelProperty(value = "商品尺码")
|
||||
private Integer size;
|
||||
@ApiModelProperty(value = "尺码库存")
|
||||
private Integer stock;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
package com.ruoyi.xkt.dto.storeHomepage;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import com.ruoyi.xkt.dto.storeProduct.StoreProdStatusCountDTO;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* @author liujiang
|
||||
* @version v1.0
|
||||
* @date 2025/3/27 15:12
|
||||
*/
|
||||
@ApiModel("档口首页返回数据")
|
||||
@Data
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class StoreHomeResDTO {
|
||||
|
||||
@ApiModelProperty(value = "档口基本信息")
|
||||
private StoreBasicDTO store;
|
||||
@ApiModelProperty(value = "档口首页商品基本信息")
|
||||
private StoreProdStatusCountDTO storeProdStatusCount;
|
||||
|
||||
@Data
|
||||
@ApiModel(value = "档口基本信息")
|
||||
@Accessors(chain = true)
|
||||
public static class StoreBasicDTO {
|
||||
@ApiModelProperty(value = "档口模板ID")
|
||||
private Integer templateNum;
|
||||
@ApiModelProperty(value = "档口ID")
|
||||
private Long storeId;
|
||||
@ApiModelProperty(value = "档口名称")
|
||||
private String storeName;
|
||||
@ApiModelProperty(value = "经营年限")
|
||||
private Integer operateYears;
|
||||
@ApiModelProperty(value = "联系电话")
|
||||
private String contactPhone;
|
||||
@ApiModelProperty(value = "备选联系电话")
|
||||
private String contactBackPhone;
|
||||
@ApiModelProperty(value = "微信账号")
|
||||
private String wechatAccount;
|
||||
@ApiModelProperty(value = "QQ账号")
|
||||
private String qqAccount;
|
||||
@ApiModelProperty(value = "档口地址")
|
||||
private String storeAddress;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -42,6 +42,9 @@ public class StoreProdStorageDTO {
|
|||
@NotNull(message = "档口商品颜色ID不能为空!")
|
||||
@ApiModelProperty(value = "档口商品颜色ID")
|
||||
private Long storeProdColorId;
|
||||
@NotNull(message = "档口颜色ID不能为空!")
|
||||
@ApiModelProperty(value = "档口颜色ID")
|
||||
private Long storeColorId;
|
||||
@NotBlank(message = "颜色名称不能为空!")
|
||||
@ApiModelProperty(value = "颜色名称")
|
||||
private String colorName;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,28 @@
|
|||
package com.ruoyi.xkt.dto.storeProduct;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* @author liujiang
|
||||
* @version v1.0
|
||||
* @date 2025/3/27 15:12
|
||||
*/
|
||||
@ApiModel("店铺首页编辑查询商品")
|
||||
@Data
|
||||
@Builder
|
||||
@Accessors(chain = true)
|
||||
public class StoreProdFuzzyResPicDTO {
|
||||
|
||||
@ApiModelProperty(value = "档口商品ID")
|
||||
private Long storeProdId;
|
||||
@ApiModelProperty(value = "档口ID")
|
||||
private Long storeId;
|
||||
@ApiModelProperty(value = "商品货号")
|
||||
private String prodArtNum;
|
||||
@ApiModelProperty(value = "商品主图")
|
||||
private String mainPicUrl;
|
||||
}
|
||||
|
|
@ -60,7 +60,7 @@ public class StoreProdResDTO {
|
|||
private List<StoreProdFileResDTO> fileList;
|
||||
@ApiModelProperty(value = "档口类目属性列表")
|
||||
private List<StoreProdCateAttrDTO> cateAttrList;
|
||||
@ApiModelProperty(value = "档口宿友颜色列表")
|
||||
@ApiModelProperty(value = "档口所有颜色列表")
|
||||
private List<StoreColorDTO> allColorList;
|
||||
@ApiModelProperty(value = "档口颜色列表")
|
||||
private List<StoreProdColorDTO> colorList;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,25 @@
|
|||
package com.ruoyi.xkt.dto.storeProduct;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author liujiang
|
||||
* @version v1.0
|
||||
* @date 2025/3/27 15:12
|
||||
*/
|
||||
@ApiModel("档口首页返回数据")
|
||||
@Data
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class StoreProdStatusCountDTO {
|
||||
|
||||
@ApiModelProperty(value = "在售数量")
|
||||
private Integer onSaleNum;
|
||||
@ApiModelProperty(value = "尾货数量")
|
||||
private Integer tailGoodsNum;
|
||||
@ApiModelProperty(value = "已下架数量")
|
||||
private Integer offSaleNum;
|
||||
|
||||
}
|
||||
|
|
@ -23,6 +23,8 @@ public class StoreProdStockDTO {
|
|||
private String prodArtNum;
|
||||
@ApiModelProperty(value = "档口商品颜色ID")
|
||||
private Long storeProdColorId;
|
||||
@ApiModelProperty(value = "档口颜色ID")
|
||||
private Long storeColorId;
|
||||
@ApiModelProperty(value = "颜色名称")
|
||||
private String colorName;
|
||||
@ApiModelProperty(value = "尺码30")
|
||||
|
|
|
|||
|
|
@ -95,4 +95,16 @@ public interface StoreProductFileMapper extends BaseMapper<StoreProductFile> {
|
|||
*/
|
||||
List<StoreProdFilePicSpaceResDTO> selectPicSpaceList(@Param("storeId") Long storeId, @Param("fileType") Integer fileType);
|
||||
|
||||
/**
|
||||
* 查询所有的商品主图
|
||||
*
|
||||
* @param storeProdId 档口商品ID
|
||||
* @param storeId 档口ID
|
||||
* @param fileType 文件类型
|
||||
* @return
|
||||
*/
|
||||
List<StoreProdFileResDTO> selectTotalMainPicList(@Param("storeProdId") Long storeProdId,
|
||||
@Param("storeId") Long storeId,
|
||||
@Param("fileType") Integer fileType);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,9 @@ package com.ruoyi.xkt.mapper;
|
|||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.ruoyi.xkt.domain.StoreProduct;
|
||||
import com.ruoyi.xkt.dto.storeProduct.StoreProdFuzzyResDTO;
|
||||
import com.ruoyi.xkt.dto.storeHomepage.StoreHomeResDTO;
|
||||
import com.ruoyi.xkt.dto.storeProduct.StoreProdFuzzyResPicDTO;
|
||||
import com.ruoyi.xkt.dto.storeProduct.StoreProdStatusCountDTO;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
|
|
@ -64,4 +66,19 @@ public interface StoreProductMapper extends BaseMapper<StoreProduct> {
|
|||
*/
|
||||
public int deleteStoreProductByStoreProdIds(Long[] storeProdIds);
|
||||
|
||||
/**
|
||||
* 根据商品货号模糊查询档口商品并返回商品主图
|
||||
*
|
||||
* @param storeId 档口ID
|
||||
* @param prodArtNum 货号
|
||||
* @return List<StoreProdFuzzyResPicDTO>
|
||||
*/
|
||||
List<StoreProdFuzzyResPicDTO> fuzzyQueryResPicList(@Param("storeId") Long storeId, @Param("prodArtNum") String prodArtNum);
|
||||
|
||||
/**
|
||||
* 查询档口的在售、尾货、下架数量
|
||||
* @param storeId 档口ID
|
||||
* @return StoreProdCountDTO
|
||||
*/
|
||||
StoreProdStatusCountDTO selectStatusCount(Long storeId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -72,6 +72,7 @@ public interface IStoreCustomerService {
|
|||
|
||||
/**
|
||||
* 模糊查询客户名称列表
|
||||
*
|
||||
* @param storeId 档口ID
|
||||
* @param cusName 客户名称
|
||||
* @return List<StoreCusFuzzyResDTO>
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ public interface IStoreFactoryService {
|
|||
/**
|
||||
* 查询档口合作工厂
|
||||
*
|
||||
* @param storeId 档口ID
|
||||
* @param storeId 档口ID
|
||||
* @param storeFacId 档口合作工厂主键
|
||||
* @return 档口合作工厂
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -2,6 +2,8 @@ package com.ruoyi.xkt.service;
|
|||
|
||||
import com.ruoyi.xkt.dto.storeHomepage.StoreHomeDecorationDTO;
|
||||
import com.ruoyi.xkt.dto.storeHomepage.StoreHomeDecorationResDTO;
|
||||
import com.ruoyi.xkt.dto.storeHomepage.StoreHomeProdResDTO;
|
||||
import com.ruoyi.xkt.dto.storeHomepage.StoreHomeResDTO;
|
||||
|
||||
/**
|
||||
* 档口首页Service接口
|
||||
|
|
@ -39,4 +41,21 @@ public interface IStoreHomepageService {
|
|||
*/
|
||||
Integer updateStoreHomepage(Long storeId, Integer templateNum, StoreHomeDecorationDTO homeDTO);
|
||||
|
||||
/**
|
||||
* 获取档口首页数据
|
||||
*
|
||||
* @param storeId 档口ID
|
||||
* @return StoreHomeResDTO
|
||||
*/
|
||||
StoreHomeResDTO getHomepageInfo(Long storeId);
|
||||
|
||||
/**
|
||||
* 首页查询档口商品详情
|
||||
*
|
||||
* @param storeId 档口ID
|
||||
* @param storeProdId 档口商品详情ID
|
||||
* @return StoreHomeProdResDTO
|
||||
*/
|
||||
StoreHomeProdResDTO getStoreProdInfo(Long storeId, Long storeProdId);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
package com.ruoyi.xkt.service;
|
||||
|
||||
import com.ruoyi.xkt.domain.StoreProductColor;
|
||||
import com.ruoyi.xkt.dto.storeProdColor.StoreProdColorResDTO;
|
||||
|
||||
import java.util.List;
|
||||
|
|
@ -15,7 +14,7 @@ public interface IStoreProductColorService {
|
|||
/**
|
||||
* 根据商店ID和产品款式编号模糊查询颜色列表
|
||||
*
|
||||
* @param storeId 商店ID,用于限定查询范围
|
||||
* @param storeId 商店ID,用于限定查询范围
|
||||
* @param prodArtNum 产品款式编号,用于模糊匹配产品
|
||||
* @return 返回一个列表,包含匹配的产品颜色信息
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -19,14 +19,15 @@ public interface IStoreProductService {
|
|||
* @param storeProdId 档口商品主键
|
||||
* @return 档口商品
|
||||
*/
|
||||
public StoreProdResDTO selectStoreProductByStoreProdId(Long storeProdId);
|
||||
StoreProdResDTO selectStoreProductByStoreProdId(Long storeProdId);
|
||||
|
||||
/**
|
||||
* 获取档口图片空间
|
||||
*
|
||||
* @param storeId 档口ID
|
||||
* @return StoreProdPicSpaceResDTO
|
||||
*/
|
||||
public StoreProdPicSpaceResDTO getStoreProductPicSpace(Long storeId);
|
||||
StoreProdPicSpaceResDTO getStoreProductPicSpace(Long storeId);
|
||||
|
||||
/**
|
||||
* 查询档口商品列表
|
||||
|
|
@ -34,9 +35,9 @@ public interface IStoreProductService {
|
|||
* @param storeProduct 档口商品
|
||||
* @return 档口商品集合
|
||||
*/
|
||||
public List<StoreProduct> selectStoreProductList(StoreProduct storeProduct);
|
||||
List<StoreProduct> selectStoreProductList(StoreProduct storeProduct);
|
||||
|
||||
public Page<StoreProdPageResDTO> page(StoreProdPageDTO pageDTO);
|
||||
Page<StoreProdPageResDTO> page(StoreProdPageDTO pageDTO);
|
||||
|
||||
|
||||
/**
|
||||
|
|
@ -45,7 +46,7 @@ public interface IStoreProductService {
|
|||
* @param storeProdDTO 档口商品
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertStoreProduct(StoreProdDTO storeProdDTO);
|
||||
int insertStoreProduct(StoreProdDTO storeProdDTO);
|
||||
|
||||
/**
|
||||
* 修改档口商品
|
||||
|
|
@ -55,6 +56,11 @@ public interface IStoreProductService {
|
|||
*/
|
||||
public int updateStoreProduct(Long storeProdId, StoreProdDTO storeProdDTO);
|
||||
|
||||
/**
|
||||
* 更新档口商品状态
|
||||
*
|
||||
* @param prodStatusDTO 更新状态入参
|
||||
*/
|
||||
public void updateStoreProductStatus(StoreProdStatusDTO prodStatusDTO);
|
||||
|
||||
/**
|
||||
|
|
@ -75,10 +81,19 @@ public interface IStoreProductService {
|
|||
|
||||
/**
|
||||
* 根据档口ID和商品货号模糊查询货号列表
|
||||
* @param storeId 档口ID
|
||||
*
|
||||
* @param storeId 档口ID
|
||||
* @param prodArtNum 商品货号
|
||||
* @return List<StoreProdFuzzyResDTO>
|
||||
*/
|
||||
List<StoreProdFuzzyResDTO> fuzzyQueryList(Long storeId, String prodArtNum);
|
||||
|
||||
/**
|
||||
* 根据档口ID和商品货号模糊查询货号列表,返回数据带上商品主图
|
||||
*
|
||||
* @param storeId 档口ID
|
||||
* @param prodArtNum 商品货号
|
||||
* @return List<StoreProdFuzzyResPicDTO>
|
||||
*/
|
||||
List<StoreProdFuzzyResPicDTO> fuzzyQueryResPicList(Long storeId, String prodArtNum);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,10 +2,10 @@ package com.ruoyi.xkt.service;
|
|||
|
||||
import com.ruoyi.common.core.page.Page;
|
||||
import com.ruoyi.xkt.domain.StoreProductStock;
|
||||
import com.ruoyi.xkt.dto.storeProductStock.StoreProdStockDTO;
|
||||
import com.ruoyi.xkt.dto.storeProductStock.StoreProdStockPageDTO;
|
||||
import com.ruoyi.xkt.dto.storeProductStock.StoreProdStockPageResDTO;
|
||||
import com.ruoyi.xkt.dto.storeProductStock.StoreProdStockResDTO;
|
||||
import com.ruoyi.xkt.dto.storeProductStock.StoreProdStockDTO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
|
@ -19,8 +19,7 @@ public interface IStoreProductStockService {
|
|||
/**
|
||||
* 查询档口商品库存
|
||||
*
|
||||
*
|
||||
* @param storeId 档口ID
|
||||
* @param storeId 档口ID
|
||||
* @param storeProdStockId 档口商品库存主键
|
||||
* @return 档口商品库存
|
||||
*/
|
||||
|
|
@ -68,7 +67,8 @@ public interface IStoreProductStockService {
|
|||
|
||||
/**
|
||||
* 增加库存
|
||||
* @param storeId 档口ID
|
||||
*
|
||||
* @param storeId 档口ID
|
||||
* @param increaseStockList 增加库存入参
|
||||
* @return int
|
||||
*/
|
||||
|
|
@ -76,7 +76,8 @@ public interface IStoreProductStockService {
|
|||
|
||||
/**
|
||||
* 减少库存
|
||||
* @param storeId 档口ID
|
||||
*
|
||||
* @param storeId 档口ID
|
||||
* @param decreaseStockList 减少库存入参
|
||||
* @return int
|
||||
*/
|
||||
|
|
@ -84,7 +85,8 @@ public interface IStoreProductStockService {
|
|||
|
||||
/**
|
||||
* 清空库存
|
||||
* @param storeId 档口ID
|
||||
*
|
||||
* @param storeId 档口ID
|
||||
* @param storeProdStockId 清空库存
|
||||
* @return int
|
||||
*/
|
||||
|
|
@ -92,8 +94,9 @@ public interface IStoreProductStockService {
|
|||
|
||||
/**
|
||||
* 直接调整库存
|
||||
* @param storeId 档口ID
|
||||
* @param updateStockList 调整库存入参
|
||||
*
|
||||
* @param storeId 档口ID
|
||||
* @param updateStockList 调整库存入参
|
||||
* @param multiplierFactor 乘积因子 0 直接调整库存,将库存更新为页面输入的数量 1 不变数量
|
||||
* @return int
|
||||
*/
|
||||
|
|
@ -101,6 +104,7 @@ public interface IStoreProductStockService {
|
|||
|
||||
/**
|
||||
* 查询档口商品分页
|
||||
*
|
||||
* @param pageDTO 分页入参
|
||||
* @return List<StoreProdStockPageResDTO>
|
||||
*/
|
||||
|
|
@ -108,7 +112,8 @@ public interface IStoreProductStockService {
|
|||
|
||||
/**
|
||||
* 根据档口ID和商品货号查询档口商品库存
|
||||
* @param storeId 档口ID
|
||||
*
|
||||
* @param storeId 档口ID
|
||||
* @param prodArtNum 商品货号
|
||||
* @return String
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
package com.ruoyi.xkt.service;
|
||||
|
||||
import com.ruoyi.xkt.domain.StoreQuickFunction;
|
||||
import com.ruoyi.xkt.dto.storeQuickFunction.StoreQuickFuncDTO;
|
||||
|
||||
import java.util.List;
|
||||
|
|
@ -14,6 +13,7 @@ import java.util.List;
|
|||
public interface IStoreQuickFunctionService {
|
||||
/**
|
||||
* 获取当前档口绑定的快捷功能
|
||||
*
|
||||
* @param storeId 当前档口ID
|
||||
* @return List<StoreQuickFuncDTO.DetailDTO>
|
||||
*/
|
||||
|
|
@ -21,6 +21,7 @@ public interface IStoreQuickFunctionService {
|
|||
|
||||
/**
|
||||
* 更新档口绑定的快捷功能
|
||||
*
|
||||
* @param storeQuickFuncDTO 绑定档口快捷功能的DTO
|
||||
* @return
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -46,6 +46,7 @@ public interface IStoreRoleAccountService {
|
|||
|
||||
/**
|
||||
* 停用/启用档口子账号
|
||||
*
|
||||
* @param updateStatusDTO
|
||||
* @return
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -1,15 +1,12 @@
|
|||
package com.ruoyi.xkt.service;
|
||||
|
||||
import com.ruoyi.common.core.page.Page;
|
||||
import com.ruoyi.xkt.domain.StoreSale;
|
||||
import com.ruoyi.xkt.dto.storeCustomer.StoreCusGeneralSaleDTO;
|
||||
import com.ruoyi.xkt.dto.storeSale.StoreSaleDTO;
|
||||
import com.ruoyi.xkt.dto.storeSale.StoreSalePageDTO;
|
||||
import com.ruoyi.xkt.dto.storeSale.StoreSalePageResDTO;
|
||||
import com.ruoyi.xkt.dto.storeSale.StoreSalePayStatusDTO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 档口销售出库Service接口
|
||||
*
|
||||
|
|
@ -51,8 +48,9 @@ public interface IStoreSaleService {
|
|||
|
||||
/**
|
||||
* 获取当前档口客户的销售业绩
|
||||
* @param days 查询时间ditff
|
||||
* @param storeId 档口ID
|
||||
*
|
||||
* @param days 查询时间ditff
|
||||
* @param storeId 档口ID
|
||||
* @param storeCusId 档口客户ID
|
||||
* @return StoreCusGeneralSaleDTO
|
||||
*/
|
||||
|
|
@ -60,6 +58,7 @@ public interface IStoreSaleService {
|
|||
|
||||
/**
|
||||
* 分页查询销售出库列表
|
||||
*
|
||||
* @param pageDTO 入参
|
||||
* @return Page
|
||||
*/
|
||||
|
|
@ -67,7 +66,7 @@ public interface IStoreSaleService {
|
|||
|
||||
/**
|
||||
* 清除店铺顾客债务信息
|
||||
*
|
||||
* <p>
|
||||
* 该方法旨在根据提供的店铺销售支付状态信息来清除或更新店铺顾客的债务记录
|
||||
* 它通常在完成销售交易、债务偿还或其他需要调整顾客债务的情况下调用
|
||||
*
|
||||
|
|
|
|||
|
|
@ -60,8 +60,8 @@ public class ExpressServiceImpl implements IExpressService {
|
|||
Assert.notEmpty(cityCode);
|
||||
Assert.notEmpty(countyCode);
|
||||
Map<String, ExpressFeeConfig> map = expressFeeConfigMapper.selectList(Wrappers.lambdaQuery(ExpressFeeConfig.class)
|
||||
.eq(ExpressFeeConfig::getExpressId, expressId)
|
||||
.in(ExpressFeeConfig::getRegionCode, Arrays.asList(provinceCode, cityCode, countyCode)))
|
||||
.eq(ExpressFeeConfig::getExpressId, expressId)
|
||||
.in(ExpressFeeConfig::getRegionCode, Arrays.asList(provinceCode, cityCode, countyCode)))
|
||||
.stream()
|
||||
//过滤掉已被删除的配置
|
||||
.filter(BeanValidators::exists)
|
||||
|
|
|
|||
|
|
@ -2,12 +2,12 @@ package com.ruoyi.xkt.service.impl;
|
|||
|
||||
import com.ruoyi.common.constant.Constants;
|
||||
import com.ruoyi.xkt.domain.InternalAccount;
|
||||
import com.ruoyi.xkt.dto.order.StoreOrderInfo;
|
||||
import com.ruoyi.xkt.dto.finance.FinanceBillInfo;
|
||||
import com.ruoyi.xkt.dto.order.StoreOrderInfo;
|
||||
import com.ruoyi.xkt.mapper.FinanceBillDetailMapper;
|
||||
import com.ruoyi.xkt.mapper.FinanceBillMapper;
|
||||
import com.ruoyi.xkt.service.IInternalAccountService;
|
||||
import com.ruoyi.xkt.service.IFinanceBillService;
|
||||
import com.ruoyi.xkt.service.IInternalAccountService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
|
|
|||
|
|
@ -5,18 +5,20 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|||
import com.ruoyi.common.constant.Constants;
|
||||
import com.ruoyi.common.constant.HttpStatus;
|
||||
import com.ruoyi.common.exception.ServiceException;
|
||||
import com.ruoyi.xkt.domain.Store;
|
||||
import com.ruoyi.xkt.domain.StoreHomepage;
|
||||
import com.ruoyi.xkt.domain.StoreProduct;
|
||||
import com.ruoyi.xkt.domain.SysFile;
|
||||
import com.ruoyi.xkt.domain.*;
|
||||
import com.ruoyi.xkt.dto.storeHomepage.StoreHomeDecorationDTO;
|
||||
import com.ruoyi.xkt.dto.storeHomepage.StoreHomeDecorationResDTO;
|
||||
import com.ruoyi.xkt.dto.storeHomepage.StoreHomeProdResDTO;
|
||||
import com.ruoyi.xkt.dto.storeHomepage.StoreHomeResDTO;
|
||||
import com.ruoyi.xkt.dto.storeProdCateAttr.StoreProdCateAttrDTO;
|
||||
import com.ruoyi.xkt.dto.storeProdDetail.StoreProdDetailDTO;
|
||||
import com.ruoyi.xkt.dto.storeProduct.StoreProdStatusCountDTO;
|
||||
import com.ruoyi.xkt.dto.storeProductFile.StoreProdFileResDTO;
|
||||
import com.ruoyi.xkt.enums.FileType;
|
||||
import com.ruoyi.xkt.enums.HomepageJumpType;
|
||||
import com.ruoyi.xkt.enums.HomepageType;
|
||||
import com.ruoyi.xkt.mapper.StoreHomepageMapper;
|
||||
import com.ruoyi.xkt.mapper.StoreMapper;
|
||||
import com.ruoyi.xkt.mapper.StoreProductMapper;
|
||||
import com.ruoyi.xkt.mapper.SysFileMapper;
|
||||
import com.ruoyi.xkt.enums.ProductSizeStatus;
|
||||
import com.ruoyi.xkt.mapper.*;
|
||||
import com.ruoyi.xkt.service.IStoreHomepageService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
|
|
@ -30,6 +32,8 @@ import java.util.*;
|
|||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.ruoyi.common.constant.Constants.*;
|
||||
|
||||
/**
|
||||
* 档口首页Service业务层处理
|
||||
*
|
||||
|
|
@ -44,6 +48,13 @@ public class StoreHomepageServiceImpl implements IStoreHomepageService {
|
|||
final StoreHomepageMapper storeHomeMapper;
|
||||
final StoreMapper storeMapper;
|
||||
final StoreProductMapper storeProdMapper;
|
||||
final StoreProductDetailMapper prodDetailMapper;
|
||||
final StoreProductColorMapper prodColorMapper;
|
||||
final StoreProductColorSizeMapper prodColorSizeMapper;
|
||||
final StoreProductStockMapper prodStockMapper;
|
||||
final StoreProductColorPriceMapper prodColorPriceMapper;
|
||||
final StoreProductFileMapper prodFileMapper;
|
||||
final StoreProductCategoryAttributeMapper prodCateAttrMapper;
|
||||
|
||||
|
||||
/**
|
||||
|
|
@ -102,7 +113,7 @@ public class StoreHomepageServiceImpl implements IStoreHomepageService {
|
|||
StoreHomeDecorationResDTO.DecorationDTO decorationDTO = BeanUtil.toBean(x, StoreHomeDecorationResDTO.DecorationDTO.class)
|
||||
.setBizName((Objects.equals(x.getJumpType(), HomepageJumpType.JUMP_PRODUCT.getValue()))
|
||||
? (storeProdMap.containsKey(x.getBizId()) ? storeProdMap.get(x.getBizId()).getProdName() : null)
|
||||
: (ObjectUtils.isEmpty(x.getJumpType()) ? null : store.getStoreName()));
|
||||
: (ObjectUtils.isEmpty(x.getBizId()) ? null : store.getStoreName()));
|
||||
if (fileMap.containsKey(x.getFileId())) {
|
||||
decorationDTO.setFileType(x.getFileType()).setFileName(fileMap.get(x.getFileId()).getFileName())
|
||||
.setFileUrl(fileMap.get(x.getFileId()).getFileUrl()).setFileSize(fileMap.get(x.getFileId()).getFileSize());
|
||||
|
|
@ -156,6 +167,237 @@ public class StoreHomepageServiceImpl implements IStoreHomepageService {
|
|||
return homepageList.size();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取档口首页数据
|
||||
*
|
||||
* @param storeId 档口ID
|
||||
* @return StoreHomeResDTO
|
||||
*/
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public StoreHomeResDTO getHomepageInfo(Long storeId) {
|
||||
// 档口基本信息
|
||||
Store store = Optional.ofNullable(this.storeMapper.selectOne(new LambdaQueryWrapper<Store>()
|
||||
.eq(Store::getId, storeId).eq(Store::getDelFlag, Constants.UNDELETED)))
|
||||
.orElseThrow(() -> new ServiceException("档口不存在!", HttpStatus.ERROR));
|
||||
// 档口各个状态的数量
|
||||
StoreProdStatusCountDTO statusCountDTO = this.storeProdMapper.selectStatusCount(storeId);
|
||||
|
||||
// TODO 根据模板Num返回具体的模板数据
|
||||
// TODO 根据模板Num返回具体的模板数据
|
||||
// TODO 根据模板Num返回具体的模板数据
|
||||
|
||||
|
||||
return new StoreHomeResDTO() {{
|
||||
setStore(BeanUtil.toBean(store, StoreBasicDTO.class).setStoreId(storeId));
|
||||
setStoreProdStatusCount(statusCountDTO);
|
||||
}};
|
||||
}
|
||||
|
||||
/**
|
||||
* 首页查询档口商品详情
|
||||
*
|
||||
* @param storeId 档口ID
|
||||
* @param storeProdId 档口商品详情ID
|
||||
* @return StoreHomeProdResDTO
|
||||
*/
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public StoreHomeProdResDTO getStoreProdInfo(Long storeId, Long storeProdId) {
|
||||
|
||||
// TODO 获取当前登录者,判断是否关注当前档口是否收藏当前商品
|
||||
// TODO 获取当前登录者,判断是否关注当前档口是否收藏当前商品
|
||||
// TODO 获取当前登录者,判断是否关注当前档口是否收藏当前商品
|
||||
|
||||
// 档口基本信息
|
||||
Store store = Optional.ofNullable(this.storeMapper.selectOne(new LambdaQueryWrapper<Store>()
|
||||
.eq(Store::getId, storeId).eq(Store::getDelFlag, Constants.UNDELETED)))
|
||||
.orElseThrow(() -> new ServiceException("档口不存在!", HttpStatus.ERROR));
|
||||
// 获取商品基本信息
|
||||
StoreProduct storeProd = Optional.ofNullable(this.storeProdMapper.selectOne(new LambdaQueryWrapper<StoreProduct>()
|
||||
.eq(StoreProduct::getId, storeProdId).eq(StoreProduct::getDelFlag, Constants.UNDELETED)
|
||||
.eq(StoreProduct::getStoreId, storeId)))
|
||||
.orElseThrow(() -> new ServiceException("档口商品不存在!", HttpStatus.ERROR));
|
||||
// 档口各个状态的数量
|
||||
StoreProdStatusCountDTO statusCountDTO = this.storeProdMapper.selectStatusCount(storeId);
|
||||
// 获取商品详情内容
|
||||
StoreProductDetail detail = this.prodDetailMapper.selectOne(new LambdaQueryWrapper<StoreProductDetail>()
|
||||
.eq(StoreProductDetail::getStoreProdId, storeProdId).eq(StoreProductDetail::getDelFlag, Constants.UNDELETED));
|
||||
// 获取商品颜色列表
|
||||
List<StoreProductColor> colorList = this.prodColorMapper.selectList(new LambdaQueryWrapper<StoreProductColor>()
|
||||
.eq(StoreProductColor::getStoreProdId, storeProdId).eq(StoreProductColor::getDelFlag, Constants.UNDELETED));
|
||||
// 档口商品主图列表
|
||||
List<StoreProdFileResDTO> mainPicDTOList = this.prodFileMapper.selectTotalMainPicList(storeProdId, storeId, FileType.MAIN_PIC.getValue());
|
||||
// 档口商品颜色价格列表
|
||||
List<StoreProductColorPrice> colorPriceList = this.prodColorPriceMapper.selectList(new LambdaQueryWrapper<StoreProductColorPrice>()
|
||||
.eq(StoreProductColorPrice::getStoreProdId, storeProdId).eq(StoreProductColorPrice::getDelFlag, Constants.UNDELETED));
|
||||
Map<String, StoreProductColorPrice> colorPriceMap = colorPriceList.stream().collect(Collectors
|
||||
.toMap(x -> x.getStoreProdId().toString() + x.getStoreColorId().toString(), Function.identity()));
|
||||
// 档口商品属性
|
||||
List<StoreProductCategoryAttribute> prodAttrList = this.prodCateAttrMapper.selectList(new LambdaQueryWrapper<StoreProductCategoryAttribute>()
|
||||
.eq(StoreProductCategoryAttribute::getStoreProdId, storeProdId).eq(StoreProductCategoryAttribute::getDelFlag, Constants.UNDELETED));
|
||||
// 档口商品标准尺码
|
||||
List<StoreProductColorSize> standardSizeList = this.prodColorSizeMapper.selectList(new LambdaQueryWrapper<StoreProductColorSize>()
|
||||
.eq(StoreProductColorSize::getStoreProdId, storeProdId).eq(StoreProductColorSize::getDelFlag, Constants.UNDELETED)
|
||||
.eq(StoreProductColorSize::getStandard, ProductSizeStatus.STANDARD.getValue()));
|
||||
Map<String, List<StoreProductColorSize>> colorSizeMap = standardSizeList.stream().collect(Collectors
|
||||
.groupingBy(x -> x.getStoreProdId().toString() + x.getStoreColorId().toString()));
|
||||
// 根据标准尺码去找对应尺码的库存数量
|
||||
List<StoreProductStock> prodStockList = this.prodStockMapper.selectList(new LambdaQueryWrapper<StoreProductStock>()
|
||||
.eq(StoreProductStock::getStoreProdId, storeProdId)
|
||||
.in(StoreProductStock::getStoreProdColorId, colorList.stream().map(StoreProductColor::getId).distinct().collect(Collectors.toList()))
|
||||
.eq(StoreProductStock::getDelFlag, Constants.UNDELETED));
|
||||
// 获取档口颜色尺码的库存数量
|
||||
Map<String, List<StoreHomeProdResDTO.StoreProdSizeStockDTO>> colorSizeStockMap = this.convertSizeStock(prodStockList, standardSizeList);
|
||||
List<StoreHomeProdResDTO.StoreProdColorDTO> colorSizeStockList = colorList.stream()
|
||||
.map(color -> BeanUtil.toBean(color, StoreHomeProdResDTO.StoreProdColorDTO.class)
|
||||
.setStoreProdColorId(color.getId())
|
||||
// 获取颜色设定的价格
|
||||
.setPrice(colorPriceMap.containsKey(color.getStoreProdId().toString() + color.getStoreColorId().toString())
|
||||
? colorPriceMap.get(color.getStoreProdId().toString() + color.getStoreColorId().toString()).getPrice() : null)
|
||||
// 设定库存
|
||||
.setSizeStockList(colorSizeMap.containsKey(color.getStoreProdId().toString() + color.getStoreColorId().toString())
|
||||
? colorSizeStockMap.get(color.getStoreProdId().toString() + color.getStoreColorId().toString()) : null))
|
||||
.collect(Collectors.toList());
|
||||
// 商品基础信息
|
||||
StoreHomeProdResDTO.StoreProdInfoDTO storeProdDTO = BeanUtil.toBean(storeProd, StoreHomeProdResDTO.StoreProdInfoDTO.class)
|
||||
.setStoreProdId(storeProdId).setMainPicList(mainPicDTOList)
|
||||
.setDetail(BeanUtil.toBean(detail, StoreProdDetailDTO.class))
|
||||
.setCateAttrList(BeanUtil.copyToList(prodAttrList, StoreProdCateAttrDTO.class))
|
||||
.setColorList(colorSizeStockList);
|
||||
return new StoreHomeProdResDTO() {{
|
||||
setStore(BeanUtil.toBean(store, StoreBasicDTO.class).setStoreId(storeId));
|
||||
setStoreProd(storeProdDTO);
|
||||
setStoreProdStatusCount(statusCountDTO);
|
||||
|
||||
// TODO 还有关注的档口及收藏的商品
|
||||
// TODO 还有关注的档口及收藏的商品
|
||||
// TODO 还有关注的档口及收藏的商品
|
||||
// TODO 还有关注的档口及收藏的商品
|
||||
|
||||
}};
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取档口商品颜色尺码的库存
|
||||
*
|
||||
* @param stockList 库存数量
|
||||
* @param standardSizeList 当前商品的标准尺码
|
||||
* @return Map<Long, Map < Integer, Integer>>
|
||||
*/
|
||||
private Map<String, List<StoreHomeProdResDTO.StoreProdSizeStockDTO>> convertSizeStock(List<StoreProductStock> stockList, List<StoreProductColorSize> standardSizeList) {
|
||||
Map<String, List<StoreHomeProdResDTO.StoreProdSizeStockDTO>> colorSizeStockMap = new HashMap<>();
|
||||
if (CollectionUtils.isEmpty(stockList)) {
|
||||
return colorSizeStockMap;
|
||||
}
|
||||
// 标准尺码map
|
||||
Map<Integer, StoreProductColorSize> standardSizeMap = standardSizeList.stream().collect(Collectors.toMap(StoreProductColorSize::getSize, Function.identity()));
|
||||
Map<String, List<StoreProductStock>> map = stockList.stream().collect(Collectors.groupingBy(x -> x.getStoreProdId().toString() + x.getStoreColorId().toString()));
|
||||
map.forEach((unionId, tempStockList) -> {
|
||||
List<StoreHomeProdResDTO.StoreProdSizeStockDTO> 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 StoreHomeProdResDTO.StoreProdSizeStockDTO() {{
|
||||
setSize(SIZE_30);
|
||||
setStock(size30Stock);
|
||||
}});
|
||||
}
|
||||
Integer size31Stock = tempStockList.stream().map(x -> ObjectUtils.defaultIfNull(x.getSize31(), 0)).reduce(0, Integer::sum);
|
||||
if (standardSizeMap.containsKey(SIZE_31)) {
|
||||
sizeStockList.add(new StoreHomeProdResDTO.StoreProdSizeStockDTO() {{
|
||||
setSize(SIZE_31);
|
||||
setStock(size31Stock);
|
||||
}});
|
||||
}
|
||||
Integer size32Stock = tempStockList.stream().map(x -> ObjectUtils.defaultIfNull(x.getSize32(), 0)).reduce(0, Integer::sum);
|
||||
if (standardSizeMap.containsKey(SIZE_32)) {
|
||||
sizeStockList.add(new StoreHomeProdResDTO.StoreProdSizeStockDTO() {{
|
||||
setSize(SIZE_32);
|
||||
setStock(size32Stock);
|
||||
}});
|
||||
}
|
||||
Integer size33Stock = tempStockList.stream().map(x -> ObjectUtils.defaultIfNull(x.getSize33(), 0)).reduce(0, Integer::sum);
|
||||
if (standardSizeMap.containsKey(SIZE_33)) {
|
||||
sizeStockList.add(new StoreHomeProdResDTO.StoreProdSizeStockDTO() {{
|
||||
setSize(SIZE_33);
|
||||
setStock(size33Stock);
|
||||
}});
|
||||
}
|
||||
Integer size34Stock = tempStockList.stream().map(x -> ObjectUtils.defaultIfNull(x.getSize34(), 0)).reduce(0, Integer::sum);
|
||||
if (standardSizeMap.containsKey(SIZE_34)) {
|
||||
sizeStockList.add(new StoreHomeProdResDTO.StoreProdSizeStockDTO() {{
|
||||
setSize(SIZE_34);
|
||||
setStock(size34Stock);
|
||||
}});
|
||||
}
|
||||
Integer size35Stock = tempStockList.stream().map(x -> ObjectUtils.defaultIfNull(x.getSize35(), 0)).reduce(0, Integer::sum);
|
||||
if (standardSizeMap.containsKey(SIZE_35)) {
|
||||
sizeStockList.add(new StoreHomeProdResDTO.StoreProdSizeStockDTO() {{
|
||||
setSize(SIZE_35);
|
||||
setStock(size35Stock);
|
||||
}});
|
||||
}
|
||||
Integer size36Stock = tempStockList.stream().map(x -> ObjectUtils.defaultIfNull(x.getSize36(), 0)).reduce(0, Integer::sum);
|
||||
if (standardSizeMap.containsKey(SIZE_36)) {
|
||||
sizeStockList.add(new StoreHomeProdResDTO.StoreProdSizeStockDTO() {{
|
||||
setSize(SIZE_36);
|
||||
setStock(size36Stock);
|
||||
}});
|
||||
}
|
||||
Integer size37Stock = tempStockList.stream().map(x -> ObjectUtils.defaultIfNull(x.getSize37(), 0)).reduce(0, Integer::sum);
|
||||
if (standardSizeMap.containsKey(SIZE_37)) {
|
||||
sizeStockList.add(new StoreHomeProdResDTO.StoreProdSizeStockDTO() {{
|
||||
setSize(SIZE_37);
|
||||
setStock(size37Stock);
|
||||
}});
|
||||
}
|
||||
Integer size38Stock = tempStockList.stream().map(x -> ObjectUtils.defaultIfNull(x.getSize38(), 0)).reduce(0, Integer::sum);
|
||||
if (standardSizeMap.containsKey(SIZE_38)) {
|
||||
sizeStockList.add(new StoreHomeProdResDTO.StoreProdSizeStockDTO() {{
|
||||
setSize(SIZE_38);
|
||||
setStock(size38Stock);
|
||||
}});
|
||||
}
|
||||
Integer size39Stock = tempStockList.stream().map(x -> ObjectUtils.defaultIfNull(x.getSize39(), 0)).reduce(0, Integer::sum);
|
||||
if (standardSizeMap.containsKey(SIZE_39)) {
|
||||
sizeStockList.add(new StoreHomeProdResDTO.StoreProdSizeStockDTO() {{
|
||||
setSize(SIZE_39);
|
||||
setStock(size39Stock);
|
||||
}});
|
||||
}
|
||||
Integer size40Stock = tempStockList.stream().map(x -> ObjectUtils.defaultIfNull(x.getSize40(), 0)).reduce(0, Integer::sum);
|
||||
if (standardSizeMap.containsKey(SIZE_40)) {
|
||||
sizeStockList.add(new StoreHomeProdResDTO.StoreProdSizeStockDTO() {{
|
||||
setSize(SIZE_40);
|
||||
setStock(size40Stock);
|
||||
}});
|
||||
}
|
||||
Integer size41Stock = tempStockList.stream().map(x -> ObjectUtils.defaultIfNull(x.getSize41(), 0)).reduce(0, Integer::sum);
|
||||
if (standardSizeMap.containsKey(SIZE_41)) {
|
||||
sizeStockList.add(new StoreHomeProdResDTO.StoreProdSizeStockDTO() {{
|
||||
setSize(SIZE_41);
|
||||
setStock(size41Stock);
|
||||
}});
|
||||
}
|
||||
Integer size42Stock = tempStockList.stream().map(x -> ObjectUtils.defaultIfNull(x.getSize42(), 0)).reduce(0, Integer::sum);
|
||||
if (standardSizeMap.containsKey(SIZE_42)) {
|
||||
sizeStockList.add(new StoreHomeProdResDTO.StoreProdSizeStockDTO() {{
|
||||
setSize(SIZE_42);
|
||||
setStock(size42Stock);
|
||||
}});
|
||||
}
|
||||
Integer size43Stock = tempStockList.stream().map(x -> ObjectUtils.defaultIfNull(x.getSize43(), 0)).reduce(0, Integer::sum);
|
||||
if (standardSizeMap.containsKey(SIZE_43)) {
|
||||
sizeStockList.add(new StoreHomeProdResDTO.StoreProdSizeStockDTO() {{
|
||||
setSize(SIZE_43);
|
||||
setStock(size43Stock);
|
||||
}});
|
||||
}
|
||||
colorSizeStockMap.put(unionId, sizeStockList);
|
||||
});
|
||||
return colorSizeStockMap;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 新增档口首页模板展示
|
||||
|
|
|
|||
|
|
@ -37,6 +37,8 @@ import java.util.*;
|
|||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.ruoyi.common.constant.Constants.ORDER_NUM_1;
|
||||
|
||||
/**
|
||||
* 档口商品Service业务层处理
|
||||
*
|
||||
|
|
@ -407,6 +409,19 @@ public class StoreProductServiceImpl implements IStoreProductService {
|
|||
.setColorList(colorMap.getOrDefault(x.getId(), new ArrayList<>()))).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据档口ID和商品货号模糊查询货号列表,返回数据带上商品主图
|
||||
*
|
||||
* @param storeId 档口ID
|
||||
* @param prodArtNum 商品货号
|
||||
* @return List<StoreProdFuzzyResPicDTO>
|
||||
*/
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public List<StoreProdFuzzyResPicDTO> fuzzyQueryResPicList(Long storeId, String prodArtNum) {
|
||||
return this.storeProdMapper.fuzzyQueryResPicList(storeId, prodArtNum);
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理档口商品属性
|
||||
*
|
||||
|
|
|
|||
|
|
@ -33,6 +33,8 @@ import java.util.*;
|
|||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.ruoyi.common.constant.Constants.ORDER_NUM_1;
|
||||
|
||||
/**
|
||||
* 档口商品库存Service业务层处理
|
||||
*
|
||||
|
|
@ -244,7 +246,7 @@ public class StoreProductStockServiceImpl implements IStoreProductStockService {
|
|||
StoreProductFile mainPic = Optional.ofNullable(this.storeProdFileMapper.selectOne(new LambdaQueryWrapper<StoreProductFile>()
|
||||
.eq(StoreProductFile::getStoreProdId, stock.getStoreProdId()).eq(StoreProductFile::getStoreId, storeId)
|
||||
.eq(StoreProductFile::getDelFlag, Constants.UNDELETED).eq(StoreProductFile::getFileType, FileType.MAIN_PIC.getValue())
|
||||
.eq(StoreProductFile::getOrderNum, 1)))
|
||||
.eq(StoreProductFile::getOrderNum, ORDER_NUM_1)))
|
||||
.orElseThrow(() -> new ServiceException("商品主图不存在!", HttpStatus.ERROR));
|
||||
// 图片
|
||||
SysFile file = Optional.ofNullable(this.fileMapper.selectOne(new LambdaQueryWrapper<SysFile>()
|
||||
|
|
|
|||
|
|
@ -155,7 +155,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
</select>
|
||||
|
||||
|
||||
|
||||
<select id="selectTotalMainPicList" resultType="com.ruoyi.xkt.dto.storeProductFile.StoreProdFileResDTO">
|
||||
SELECT
|
||||
spf.store_prod_id AS storeProdId,
|
||||
spf.file_id AS fileId,
|
||||
sf.file_url AS fileUrl,
|
||||
spf.file_type AS fileType,
|
||||
spf.file_size AS fileSize,
|
||||
sf.file_name AS fileName,
|
||||
spf.order_num AS orderNum
|
||||
FROM
|
||||
store_product_file spf
|
||||
LEFT JOIN sys_file sf ON spf.file_id = sf.id
|
||||
WHERE
|
||||
spf.del_flag = 0
|
||||
AND spf.file_type = #{fileType}
|
||||
AND spf.store_id = #{storeId}
|
||||
</select>
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -145,4 +145,36 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
</foreach>
|
||||
</delete>
|
||||
|
||||
<select id="fuzzyQueryResPicList" resultType="com.ruoyi.xkt.dto.storeProduct.StoreProdFuzzyResPicDTO">
|
||||
SELECT
|
||||
sp.id AS storeProdId,
|
||||
sp.store_id AS storeId,
|
||||
sp.prod_art_num AS prodArtNum,
|
||||
sf.file_url AS mainPicUrl
|
||||
FROM
|
||||
store_product sp
|
||||
LEFT JOIN store_product_file spf ON sp.id = spf.store_prod_id
|
||||
LEFT JOIN sys_file sf ON spf.file_id = sf.id
|
||||
WHERE
|
||||
sp.del_flag = 0
|
||||
AND spf.order_num = 1
|
||||
AND spf.file_type = 1
|
||||
AND sp.store_id = #{storeId}
|
||||
<if test="prodArtNum != null and prodArtNum != ''">
|
||||
AND sp.prod_art_num like concat('%', #{prodArtNum}, '%')
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<select id="selectStatusCount" resultType="com.ruoyi.xkt.dto.storeProduct.StoreProdStatusCountDTO">
|
||||
SELECT
|
||||
SUM( CASE WHEN prod_status = 2 THEN 1 ELSE 0 END ) AS onSaleNum,
|
||||
SUM( CASE WHEN prod_status = 3 THEN 1 ELSE 0 END ) AS tailGoodsNum,
|
||||
SUM( CASE WHEN prod_status = 4 THEN 1 ELSE 0 END ) AS offSaleNum
|
||||
FROM
|
||||
store_product
|
||||
WHERE
|
||||
del_flag = 0 AND store_id = #{storeId}
|
||||
</select>
|
||||
|
||||
|
||||
</mapper>
|
||||
Loading…
Reference in New Issue