提交 902af792 作者: xiaowang

功能:租赁设备商品新增

上级 07a0ff83
...@@ -8,7 +8,7 @@ package com.mmc.pms.controller.lease; ...@@ -8,7 +8,7 @@ package com.mmc.pms.controller.lease;
import com.mmc.pms.common.ResultBody; import com.mmc.pms.common.ResultBody;
import com.mmc.pms.controller.BaseController; import com.mmc.pms.controller.BaseController;
import com.mmc.pms.model.mall.MallGoodsVO; import com.mmc.pms.model.lease.vo.LeaseGoodsVO;
import com.mmc.pms.service.lease.LeaseGoodsService; import com.mmc.pms.service.lease.LeaseGoodsService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
...@@ -36,8 +36,7 @@ public class LeaseGoodsController extends BaseController { ...@@ -36,8 +36,7 @@ public class LeaseGoodsController extends BaseController {
@ApiOperation(value = "新增商城商品") @ApiOperation(value = "新增商城商品")
@PostMapping("addLeaseGoods") @PostMapping("addLeaseGoods")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)}) @ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
public ResultBody addLeaseGoods(@RequestBody MallGoodsVO mallGoodsVO, HttpServletRequest request) { public ResultBody addLeaseGoods(@RequestBody LeaseGoodsVO leaseGoodsVO, HttpServletRequest request) {
return null; return leaseGoodsService.addLeaseGoods(leaseGoodsVO, this.getUserLoginInfoFromRedis(request).getUserAccountId());
// return leaseGoodsService.addLeaseGoods(mallGoodsVO, this.getUserLoginInfoFromRedis(request).getUserAccountId());
} }
} }
package com.mmc.pms.dao.lease; package com.mmc.pms.dao.lease;
import com.mmc.pms.entity.lease.LeaseGoodsDO;
import com.mmc.pms.entity.lease.LeasePartsListDO;
import com.mmc.pms.entity.lease.LeasePriceStockDO;
import com.mmc.pms.entity.mall.MallGoodsResourcesDO;
import com.mmc.pms.entity.mall.SpecAttrDO;
import com.mmc.pms.entity.mall.SpecAttrValueDO;
import com.mmc.pms.model.lease.vo.LeaseGoodsVO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* @Author LW * @Author LW
...@@ -9,4 +19,19 @@ import org.apache.ibatis.annotations.Mapper; ...@@ -9,4 +19,19 @@ import org.apache.ibatis.annotations.Mapper;
*/ */
@Mapper @Mapper
public interface LeaseGoodsDao { public interface LeaseGoodsDao {
int countLeaseGoodsByName(@Param("leaseGoodsVO") LeaseGoodsVO leaseGoodsVO, @Param("userAccountId") Integer userAccountId);
int countLeaseGoodsByUserAccountId(Integer userAccountId);
void insertLeaseGoodsBaseInfo(LeaseGoodsDO leaseGoodsDO);
void batchInsertLeaseGoodsResources(List<MallGoodsResourcesDO> mallGoodsResourcesList);
void insertSpecAttr(SpecAttrDO specAttrDO);
void batchInsertSpecAttr(List<SpecAttrValueDO> list);
void batchInsertPriceStock(List<LeasePriceStockDO> list);
void batchInsertLeaseParts(List<LeasePartsListDO> list);
} }
package com.mmc.pms.entity.lease;
import com.mmc.pms.model.lease.vo.LeaseGoodsVO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* 租赁商品信息(LeaseGoodsDO)实体类
*
* @author makejava
* @since 2023-08-11 14:53:01
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class LeaseGoodsDO implements Serializable {
private static final long serialVersionUID = -99441568098401769L;
private Integer id;
/**
* 商品名称
*/
private String tradeName;
/**
* 商品卖点
*/
private String sellingPoint;
/**
* 商品成新
*/
private Integer level;
/**
* 状态:0: 下架 1:上架
*/
private Integer shelfStatus;
/**
* 商品类型
*/
private Integer productTypeId;
/**
* 品牌id
*/
private Integer brandInfoId;
/**
* 型号id
*/
private Integer deviceModeId;
/**
* 商品参数
*/
private String productParam;
/**
* 商品详情
*/
private String productDetails;
/**
* 最短租期
*/
private Integer minLeaseTerm;
/**
* 最长租期
*/
private Integer maxLeaseTerm;
/**
* 发货地址
*/
private Integer shipAddress;
/**
* 归还地址
*/
private Integer returnAddress;
/**
* 寄出物流
*/
private Integer logisticsCompany;
/**
* 配送方式
*/
private Integer modeOfDelivery;
/**
* 上架店铺id
*/
private Integer userAccountId;
private Date createTime;
private Date updateTime;
private Integer sort;
public LeaseGoodsDO(LeaseGoodsVO leaseGoodsVO) {
this.id = leaseGoodsVO.getId();
this.tradeName = leaseGoodsVO.getTradeName();
this.sellingPoint = leaseGoodsVO.getSellingPoint();
this.level = leaseGoodsVO.getLevel();
this.shelfStatus = leaseGoodsVO.getShelfStatus();
this.productTypeId = leaseGoodsVO.getProductTypeId();
this.brandInfoId = leaseGoodsVO.getBrandInfoId();
this.deviceModeId = leaseGoodsVO.getDeviceModeId();
this.productParam = leaseGoodsVO.getProductParam();
this.productDetails = leaseGoodsVO.getProductDetails();
this.minLeaseTerm = leaseGoodsVO.getMinLeaseTerm();
this.maxLeaseTerm = leaseGoodsVO.getMaxLeaseTerm();
this.shipAddress = leaseGoodsVO.getShipAddress();
this.returnAddress = leaseGoodsVO.getReturnAddress();
this.logisticsCompany = leaseGoodsVO.getLogisticsCompany();
this.modeOfDelivery = leaseGoodsVO.getModeOfDelivery();
}
}
package com.mmc.pms.entity.lease;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* (LeaseGoodsResourcesDO)实体类
*
* @author makejava
* @since 2023-08-11 14:53:12
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class LeaseGoodsResourcesDO implements Serializable {
private static final long serialVersionUID = 184452413040400338L;
private Integer id;
private Integer mallGoodsId;
/**
* 资源url
*/
private String url;
/**
* 类型:0主图 1副图 2视频
*/
private Integer type;
private Date createTime;
private Date updateTime;
}
package com.mmc.pms.entity.lease;
import com.mmc.pms.model.lease.vo.LeasePartsListVO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* (LeasePartsListDO)实体类
*
* @author makejava
* @since 2023-08-11 14:53:22
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class LeasePartsListDO implements Serializable {
private static final long serialVersionUID = 474304471357903661L;
private Integer id;
private Integer leaseGoodsId;
private String name;
private Integer number;
private BigDecimal price;
public LeasePartsListDO(LeasePartsListVO param) {
this.id = param.getId();
this.number = param.getNumber();
this.name = param.getName();
this.price = param.getPrice();
}
}
package com.mmc.pms.entity.lease;
import com.mmc.pms.model.lease.vo.LeasePriceStockVO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* 价格库存表(LeasePriceStockDO)实体类
*
* @author makejava
* @since 2023-08-11 14:55:42
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class LeasePriceStockDO implements Serializable {
private static final long serialVersionUID = 909783790755484524L;
private Integer id;
/**
* 租赁商品id
*/
private Integer leaseGoodsId;
/**
* 商品规格
*/
private String productSpec;
/**
* sku图片
*/
private String skuImage;
/**
* 押金
*/
private BigDecimal cashPledge;
/**
* 3天租金
*/
private BigDecimal threeDaysRental;
/**
* 7天租金
*/
private BigDecimal sevenDaysRental;
/**
* 30天租金
*/
private BigDecimal thirtyDaysRental;
/**
* 90天租金
*/
private BigDecimal ninetyDaysRental;
/**
* 180天租金
*/
private BigDecimal maxDaysRental;
/**
* 展示最低价
*/
private BigDecimal showPrice;
/**
* 库存
*/
private Integer stock;
/**
* 0:否 1:是
*/
private Integer stockOut;
private Date createTime;
private Date updateTime;
public LeasePriceStockDO(LeasePriceStockVO param, Integer id) {
this.leaseGoodsId = id;
this.productSpec = param.getProductSpec();
this.cashPledge = param.getCashPledge();
this.skuImage = param.getSkuImage();
this.stock = param.getStock();
this.threeDaysRental = param.getThreeDaysRental();
this.sevenDaysRental = param.getSevenDaysRental();
this.thirtyDaysRental = param.getThirtyDaysRental();
this.ninetyDaysRental = param.getNinetyDaysRental();
this.maxDaysRental = param.getMaxDaysRental();
this.showPrice = param.getShowPrice();
this.stockOut = param.getStockOut();
}
}
package com.mmc.pms.entity.lease;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* (LeaseServiceDO)实体类
*
* @author makejava
* @since 2023-08-11 14:56:08
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class LeaseServiceDO implements Serializable {
private static final long serialVersionUID = -10400818294747116L;
private Integer id;
private Integer goodsInfoId;
private Integer saleServiceId;
private Date createTime;
}
package com.mmc.pms.entity.lease;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* 规格属性表(LeaseSpecAttrDO)实体类
*
* @author makejava
* @since 2023-08-11 14:56:29
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class LeaseSpecAttrDO implements Serializable {
private static final long serialVersionUID = -71136469129605718L;
private Integer id;
/**
* 商品id
*/
private Integer mallGoodsId;
/**
* 规格名称
*/
private String specName;
private Date createTime;
private Date updateTime;
}
package com.mmc.pms.entity.lease;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* 规格属性表(LeaseSpecAttrValueDO)实体类
*
* @author makejava
* @since 2023-08-11 14:56:41
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class LeaseSpecAttrValueDO implements Serializable {
private static final long serialVersionUID = -96267116189395775L;
private Integer id;
private Integer specAttrId;
/**
* 规格值名称
*/
private String specValueName;
private Date createTime;
}
package com.mmc.pms.entity.lease;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* (LeaseTermInfoDO)实体类
*
* @author makejava
* @since 2023-08-11 14:56:52
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class LeaseTermInfoDO implements Serializable {
private static final long serialVersionUID = 273133269479111689L;
private Integer id;
private String leaseDate;
}
package com.mmc.pms.model.lease.vo;
import com.mmc.pms.model.group.Create;
import com.mmc.pms.model.group.Update;
import com.mmc.pms.model.mall.GoodsResourcesVO;
import com.mmc.pms.model.mall.SpecAttrVO;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* @Author LW
* @date 2023/7/24 17:44
* 概要:
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class LeaseGoodsVO implements Serializable {
private static final long serialVersionUID = -3147170430919703826L;
@ApiModelProperty(value = "id", example = "1")
@NotNull(message = "id不能为空", groups = {Update.class})
private Integer id;
@ApiModelProperty(value = "商品标题", example = "商品标题", required = true)
@NotBlank(message = "商品标题不能为空", groups = {Update.class, Create.class})
private String tradeName;
@ApiModelProperty(value = "商品卖点", example = "商品卖点")
private String sellingPoint;
@ApiModelProperty(value = "商品成新", example = "1", required = true)
private Integer level;
@ApiModelProperty(value = "商品状态", example = "1", required = true)
@NotNull(message = "商品状态不能为空", groups = {Update.class, Create.class})
private Integer shelfStatus;
@ApiModelProperty(value = "商品类型id", example = "1", required = true)
@NotNull(message = "商品类型id不能为空", groups = {Update.class, Create.class})
private Integer productTypeId;
@ApiModelProperty(value = "品牌id", example = "2", required = true)
@NotNull(message = "品牌id不能为空", groups = {Update.class, Create.class})
private Integer brandInfoId;
@ApiModelProperty(value = "型号id", example = "2", required = true)
@NotNull(message = "型号id不能为空", groups = {Update.class, Create.class})
private Integer deviceModeId;
@ApiModelProperty(value = "商品参数", example = "示例:[{\"起飞重量\":\"595g\"}]")
private String productParam;
@ApiModelProperty(value = "商品资源:图片or视频及其他")
@NotEmpty(message = "图片不能为空")
private List<GoodsResourcesVO> resourcesList;
@ApiModelProperty(value = "规格")
@NotEmpty(message = "规格不能为空", groups = {Update.class, Create.class})
private List<SpecAttrVO> specAttrList;
@ApiModelProperty(value = "价格库存排列组合表信息")
private List<LeasePriceStockVO> priceStock;
@ApiModelProperty(value = "商品详情 富文本")
private String productDetails;
@ApiModelProperty(value = "最短租期")
private Integer minLeaseTerm;
@ApiModelProperty(value = "最长租期")
private Integer maxLeaseTerm;
@ApiModelProperty(value = "配件清单")
private List<LeasePartsListVO> leasePartsList;
@ApiModelProperty(value = "发货地址")
private Integer shipAddress;
@ApiModelProperty(value = "归还地址")
private Integer returnAddress;
@ApiModelProperty(value = "寄出物流")
private Integer logisticsCompany;
@ApiModelProperty(value = "配送方式")
private Integer modeOfDelivery;
@ApiModelProperty(value = "创建时间 用作列表回显", hidden = true)
private Date createTime;
@ApiModelProperty(value = "店铺id 小程序用", hidden = true)
private Integer userAccountId;
}
package com.mmc.pms.model.lease.vo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
/**
* @Author LW
* @date 2023/8/11 14:43
* 概要:
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class LeasePartsListVO {
private Integer id;
private String name;
private Integer number;
private BigDecimal price;
}
package com.mmc.pms.model.lease.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @Author LW
* @date 2023/8/8 10:48
* 概要:
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class LeasePriceStockVO implements Serializable {
private static final long serialVersionUID = 1011141620995647903L;
@ApiModelProperty(value = "id", example = "1")
private Integer id;
@ApiModelProperty(value = "商品规格", example = "示例:{\"颜色\":\"蓝色\",\"尺寸\":\"1寸\",\"大小\":\"小\"} 或 [\"颜色\":\"蓝色\",\"尺寸\":\"1寸\",\"大小\":\"小\"] 或 你怎么方便怎么来")
private String productSpec;
@ApiModelProperty(value = "押金", example = "1")
private BigDecimal cashPledge;
@ApiModelProperty(value = "3天租金", example = "1")
private BigDecimal threeDaysRental;
@ApiModelProperty(value = "7天租金", example = "1")
private BigDecimal sevenDaysRental;
@ApiModelProperty(value = "30天租金", example = "1")
private BigDecimal thirtyDaysRental;
@ApiModelProperty(value = "90天租金", example = "1")
private BigDecimal ninetyDaysRental;
@ApiModelProperty(value = "180天租金", example = "1")
private BigDecimal maxDaysRental;
@ApiModelProperty(value = "展示最低价", example = "1")
private BigDecimal showPrice;
@ApiModelProperty(value = "sku图片", example = "https://pad-video-x.oss-cn-shenzhen.aliyuncs.com/file/35bbd044-7cd7-4c85-ba27-69776e03dbb2.jpg")
private String skuImage;
@ApiModelProperty(value = "库存", example = "10")
private Integer stock;
@ApiModelProperty(value = "是否缺货 0:否 1:是")
private Integer stockOut;
}
package com.mmc.pms.service.lease; package com.mmc.pms.service.lease;
import com.mmc.pms.common.ResultBody;
import com.mmc.pms.model.lease.vo.LeaseGoodsVO;
/** /**
* @Author LW * @Author LW
* @date 2023/8/4 10:37 * @date 2023/8/4 10:37
* 概要: * 概要:
*/ */
public interface LeaseGoodsService { public interface LeaseGoodsService {
ResultBody addLeaseGoods(LeaseGoodsVO leaseGoodsVO, Integer userAccountId);
} }
package com.mmc.pms.service.lease.impl; package com.mmc.pms.service.lease.impl;
import com.mmc.pms.common.ResultBody;
import com.mmc.pms.dao.lease.LeaseGoodsDao;
import com.mmc.pms.entity.lease.LeaseGoodsDO;
import com.mmc.pms.entity.lease.LeasePartsListDO;
import com.mmc.pms.model.lease.vo.LeaseGoodsVO;
import com.mmc.pms.model.lease.vo.LeasePartsListVO;
import com.mmc.pms.service.lease.LeaseGoodsService; import com.mmc.pms.service.lease.LeaseGoodsService;
import com.mmc.pms.service.mall.MallGoodsService;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;
/** /**
* @Author LW * @Author LW
...@@ -10,4 +23,39 @@ import org.springframework.stereotype.Service; ...@@ -10,4 +23,39 @@ import org.springframework.stereotype.Service;
*/ */
@Service @Service
public class LeaseGoodsServiceImpl implements LeaseGoodsService { public class LeaseGoodsServiceImpl implements LeaseGoodsService {
@Resource
MallGoodsService mallGoodsService;
@Resource
LeaseGoodsDao leaseGoodsDao;
@Override
public ResultBody addLeaseGoods(LeaseGoodsVO leaseGoodsVO, Integer userAccountId) {
ResultBody resultError = mallGoodsService.checkInformation(leaseGoodsVO, null, userAccountId);
if (resultError != null) return resultError;
int count = leaseGoodsDao.countLeaseGoodsByUserAccountId(userAccountId);
LeaseGoodsDO leaseGoodsDO = new LeaseGoodsDO(leaseGoodsVO);
leaseGoodsDO.setUserAccountId(userAccountId);
leaseGoodsDO.setSort(count + 1);
// 将租赁商品基本信息存储入数据库
leaseGoodsDao.insertLeaseGoodsBaseInfo(leaseGoodsDO);
// 将商品图片等资源存入数据库中
mallGoodsService.insertMallGoodsResources(leaseGoodsVO, null, leaseGoodsDO.getId());
// 将商品规格存入数据库
mallGoodsService.addMallGoodsSpec(leaseGoodsVO.getSpecAttrList(), leaseGoodsDO.getId(), null, leaseGoodsVO.getPriceStock(), 1);
// 将商品清单入库
insertLeasePartsList(leaseGoodsVO.getLeasePartsList(), leaseGoodsDO.getId());
return ResultBody.success();
}
@Transactional(rollbackFor = Exception.class)
public void insertLeasePartsList(List<LeasePartsListVO> leasePartsList, Integer id) {
if (CollectionUtils.isNotEmpty(leasePartsList)) {
List<LeasePartsListDO> list = leasePartsList.stream().map(d -> {
LeasePartsListDO leasePartsListDO = new LeasePartsListDO(d);
leasePartsListDO.setLeaseGoodsId(id);
return leasePartsListDO;
}).collect(Collectors.toList());
leaseGoodsDao.batchInsertLeaseParts(list);
}
}
} }
...@@ -2,10 +2,16 @@ package com.mmc.pms.service.mall; ...@@ -2,10 +2,16 @@ package com.mmc.pms.service.mall;
import com.mmc.pms.auth.dto.LoginSuccessDTO; import com.mmc.pms.auth.dto.LoginSuccessDTO;
import com.mmc.pms.common.ResultBody; import com.mmc.pms.common.ResultBody;
import com.mmc.pms.model.lease.vo.LeaseGoodsVO;
import com.mmc.pms.model.lease.vo.LeasePriceStockVO;
import com.mmc.pms.model.mall.MallGoodsVO; import com.mmc.pms.model.mall.MallGoodsVO;
import com.mmc.pms.model.mall.PriceStockVO;
import com.mmc.pms.model.mall.SpecAttrVO;
import com.mmc.pms.model.sale.qo.MallGoodsInfoQO; import com.mmc.pms.model.sale.qo.MallGoodsInfoQO;
import com.mmc.pms.page.PageResult; import com.mmc.pms.page.PageResult;
import java.util.List;
/** /**
* @Author LW * @Author LW
* @date 2023/7/24 17:37 概要: * @date 2023/7/24 17:37 概要:
...@@ -28,4 +34,10 @@ public interface MallGoodsService { ...@@ -28,4 +34,10 @@ public interface MallGoodsService {
ResultBody removeMallGoods(Integer id); ResultBody removeMallGoods(Integer id);
ResultBody feignRemoveGoodsByBackUserAccountId(Integer id); ResultBody feignRemoveGoodsByBackUserAccountId(Integer id);
ResultBody checkInformation(LeaseGoodsVO leaseGoodsVO, MallGoodsVO mallGoodsVO, Integer userAccountId);
void insertMallGoodsResources(LeaseGoodsVO leaseGoodsVO, MallGoodsVO mallGoodsVO, Integer id);
void addMallGoodsSpec(List<SpecAttrVO> specAttrList, Integer id, List<PriceStockVO> priceStock, List<LeasePriceStockVO> leasePriceStockVO, Integer flag);
} }
...@@ -3,8 +3,12 @@ package com.mmc.pms.service.mall.impl; ...@@ -3,8 +3,12 @@ package com.mmc.pms.service.mall.impl;
import com.mmc.pms.auth.dto.LoginSuccessDTO; import com.mmc.pms.auth.dto.LoginSuccessDTO;
import com.mmc.pms.common.ResultBody; import com.mmc.pms.common.ResultBody;
import com.mmc.pms.common.ResultEnum; import com.mmc.pms.common.ResultEnum;
import com.mmc.pms.dao.lease.LeaseGoodsDao;
import com.mmc.pms.dao.mall.MallGoodsDao; import com.mmc.pms.dao.mall.MallGoodsDao;
import com.mmc.pms.entity.lease.LeasePriceStockDO;
import com.mmc.pms.entity.mall.*; import com.mmc.pms.entity.mall.*;
import com.mmc.pms.model.lease.vo.LeaseGoodsVO;
import com.mmc.pms.model.lease.vo.LeasePriceStockVO;
import com.mmc.pms.model.mall.GoodsResourcesVO; import com.mmc.pms.model.mall.GoodsResourcesVO;
import com.mmc.pms.model.mall.MallGoodsVO; import com.mmc.pms.model.mall.MallGoodsVO;
import com.mmc.pms.model.mall.PriceStockVO; import com.mmc.pms.model.mall.PriceStockVO;
...@@ -33,11 +37,13 @@ import java.util.stream.Collectors; ...@@ -33,11 +37,13 @@ import java.util.stream.Collectors;
public class MallGoodsServiceImpl implements MallGoodsService { public class MallGoodsServiceImpl implements MallGoodsService {
@Resource @Resource
private MallGoodsDao mallGoodsDao; private MallGoodsDao mallGoodsDao;
@Resource
private LeaseGoodsDao leaseGoodsDao;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public ResultBody addMallGoods(MallGoodsVO mallGoodsVO, Integer userAccountId) { public ResultBody addMallGoods(MallGoodsVO mallGoodsVO, Integer userAccountId) {
ResultBody resultError = checkInformation(mallGoodsVO, userAccountId); ResultBody resultError = checkInformation(null, mallGoodsVO, userAccountId);
if (resultError != null) return resultError; if (resultError != null) return resultError;
int count = mallGoodsDao.countMallGoods(userAccountId); int count = mallGoodsDao.countMallGoods(userAccountId);
MallGoodsDO mallGoodsDO = new MallGoodsDO(mallGoodsVO); MallGoodsDO mallGoodsDO = new MallGoodsDO(mallGoodsVO);
...@@ -47,20 +53,34 @@ public class MallGoodsServiceImpl implements MallGoodsService { ...@@ -47,20 +53,34 @@ public class MallGoodsServiceImpl implements MallGoodsService {
// 将基础信息存储入库 // 将基础信息存储入库
mallGoodsDao.insertMallGoodsBaseInfo(mallGoodsDO); mallGoodsDao.insertMallGoodsBaseInfo(mallGoodsDO);
// 将商品图片等资源存入数据库中 // 将商品图片等资源存入数据库中
insertMallGoodsResources(mallGoodsVO, mallGoodsDO.getId()); insertMallGoodsResources(null, mallGoodsVO, mallGoodsDO.getId());
// 将商品规格存入数据库 // 将商品规格存入数据库
addMallGoodsSpec(mallGoodsVO.getSpecAttrList(), mallGoodsDO.getId(), mallGoodsVO.getPriceStock()); addMallGoodsSpec(mallGoodsVO.getSpecAttrList(), mallGoodsDO.getId(), mallGoodsVO.getPriceStock(), null, 0);
return ResultBody.success(); return ResultBody.success();
} }
/**
* 添加商品规格
*
* @param specAttrList
* @param id id
* @param priceStock
* @param leasePriceStockVO
* @param flag 0:商城 其他值:租赁
*/
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void addMallGoodsSpec(List<SpecAttrVO> specAttrList, Integer id, List<PriceStockVO> priceStock) { @Override
public void addMallGoodsSpec(List<SpecAttrVO> specAttrList, Integer id, List<PriceStockVO> priceStock, List<LeasePriceStockVO> leasePriceStockVO, Integer flag) {
if (CollectionUtils.isNotEmpty(specAttrList)) { if (CollectionUtils.isNotEmpty(specAttrList)) {
for (SpecAttrVO specAttrVO : specAttrList) { for (SpecAttrVO specAttrVO : specAttrList) {
SpecAttrDO specAttrDO = new SpecAttrDO(); SpecAttrDO specAttrDO = new SpecAttrDO();
specAttrDO.setMallGoodsId(id); specAttrDO.setMallGoodsId(id);
specAttrDO.setSpecName(specAttrVO.getSpecName()); specAttrDO.setSpecName(specAttrVO.getSpecName());
if (flag.equals(0)) {
mallGoodsDao.insertSpecAttr(specAttrDO); mallGoodsDao.insertSpecAttr(specAttrDO);
} else {
leaseGoodsDao.insertSpecAttr(specAttrDO);
}
List<SpecAttrVO> specValuesList = specAttrVO.getSpecValuesList(); List<SpecAttrVO> specValuesList = specAttrVO.getSpecValuesList();
List<SpecAttrValueDO> list = specValuesList.stream().map(d -> { List<SpecAttrValueDO> list = specValuesList.stream().map(d -> {
SpecAttrValueDO specAttrValueDO = new SpecAttrValueDO(); SpecAttrValueDO specAttrValueDO = new SpecAttrValueDO();
...@@ -68,19 +88,30 @@ public class MallGoodsServiceImpl implements MallGoodsService { ...@@ -68,19 +88,30 @@ public class MallGoodsServiceImpl implements MallGoodsService {
specAttrValueDO.setSpecAttrId(specAttrDO.getId()); specAttrValueDO.setSpecAttrId(specAttrDO.getId());
return specAttrValueDO; return specAttrValueDO;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
if (flag.equals(0)) {
mallGoodsDao.batchInsertSpecAttr(list); mallGoodsDao.batchInsertSpecAttr(list);
} else {
leaseGoodsDao.batchInsertSpecAttr(list);
}
} }
} }
if (CollectionUtils.isNotEmpty(priceStock)) { if (CollectionUtils.isNotEmpty(priceStock)) {
List<PriceStockDO> priceStockDOList = priceStock.stream().map(d -> new PriceStockDO(d, id)).collect(Collectors.toList()); List<PriceStockDO> priceStockDOList = priceStock.stream().map(d -> new PriceStockDO(d, id)).collect(Collectors.toList());
mallGoodsDao.batchInsertPriceStock(priceStockDOList); mallGoodsDao.batchInsertPriceStock(priceStockDOList);
} }
if (CollectionUtils.isNotEmpty(leasePriceStockVO)) {
List<LeasePriceStockDO> priceStockDOList = leasePriceStockVO.stream().map(d -> new LeasePriceStockDO(d, id)).collect(Collectors.toList());
leaseGoodsDao.batchInsertPriceStock(priceStockDOList);
}
} }
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void insertMallGoodsResources(MallGoodsVO mallGoodsVO, Integer id) { @Override
List<MallGoodsResourcesDO> mallGoodsResourcesList = mallGoodsVO.getResourcesList().stream().map(d -> { public void insertMallGoodsResources(LeaseGoodsVO leaseGoodsVO, MallGoodsVO mallGoodsVO, Integer id) {
List<MallGoodsResourcesDO> mallGoodsResourcesList;
if (mallGoodsVO != null) {
mallGoodsResourcesList = mallGoodsVO.getResourcesList().stream().map(d -> {
MallGoodsResourcesDO mallGoodsResourcesDO = new MallGoodsResourcesDO(d); MallGoodsResourcesDO mallGoodsResourcesDO = new MallGoodsResourcesDO(d);
mallGoodsResourcesDO.setMallGoodsId(id); mallGoodsResourcesDO.setMallGoodsId(id);
return mallGoodsResourcesDO; return mallGoodsResourcesDO;
...@@ -88,7 +119,19 @@ public class MallGoodsServiceImpl implements MallGoodsService { ...@@ -88,7 +119,19 @@ public class MallGoodsServiceImpl implements MallGoodsService {
mallGoodsDao.batchInsertMallGoodsResources(mallGoodsResourcesList); mallGoodsDao.batchInsertMallGoodsResources(mallGoodsResourcesList);
} }
private ResultBody checkInformation(MallGoodsVO mallGoodsVO, Integer userAccountId) { if (leaseGoodsVO != null) {
mallGoodsResourcesList = leaseGoodsVO.getResourcesList().stream().map(d -> {
MallGoodsResourcesDO mallGoodsResourcesDO = new MallGoodsResourcesDO(d);
mallGoodsResourcesDO.setMallGoodsId(id);
return mallGoodsResourcesDO;
}).collect(Collectors.toList());
leaseGoodsDao.batchInsertLeaseGoodsResources(mallGoodsResourcesList);
}
}
@Override
public ResultBody checkInformation(LeaseGoodsVO leaseGoodsVO, MallGoodsVO mallGoodsVO, Integer userAccountId) {
if (mallGoodsVO != null) {
// 查询该账账号下是否有相同的商品名称存在 // 查询该账账号下是否有相同的商品名称存在
if (mallGoodsDao.countMallGoodsByName(mallGoodsVO, userAccountId) > 0) { if (mallGoodsDao.countMallGoodsByName(mallGoodsVO, userAccountId) > 0) {
return ResultBody.error(ResultEnum.GOODS_CATEGORY_NAME_EXIST_ERROR); return ResultBody.error(ResultEnum.GOODS_CATEGORY_NAME_EXIST_ERROR);
...@@ -100,6 +143,21 @@ public class MallGoodsServiceImpl implements MallGoodsService { ...@@ -100,6 +143,21 @@ public class MallGoodsServiceImpl implements MallGoodsService {
if (resourcesList.size() == 0) { if (resourcesList.size() == 0) {
return ResultBody.error(ResultEnum.GOODS_PIC_IS_NOT_NULL); return ResultBody.error(ResultEnum.GOODS_PIC_IS_NOT_NULL);
} }
}
if (leaseGoodsVO != null) {
// 查询该账账号下是否有相同的租赁商品名称存在
if (leaseGoodsDao.countLeaseGoodsByName(leaseGoodsVO, userAccountId) > 0) {
return ResultBody.error(ResultEnum.GOODS_CATEGORY_NAME_EXIST_ERROR);
}
// 判断主图是否为空
List<GoodsResourcesVO> resourcesList = leaseGoodsVO.getResourcesList()
.stream().filter(d -> d.getType().equals(0))
.collect(Collectors.toList());
if (resourcesList.size() == 0) {
return ResultBody.error(ResultEnum.GOODS_PIC_IS_NOT_NULL);
}
}
return null; return null;
} }
...@@ -137,14 +195,14 @@ public class MallGoodsServiceImpl implements MallGoodsService { ...@@ -137,14 +195,14 @@ public class MallGoodsServiceImpl implements MallGoodsService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public ResultBody editMallGoods(MallGoodsVO mallGoodsVO, Integer userAccountId) { public ResultBody editMallGoods(MallGoodsVO mallGoodsVO, Integer userAccountId) {
ResultBody resultError = checkInformation(mallGoodsVO, userAccountId); ResultBody resultError = checkInformation(null, mallGoodsVO, userAccountId);
if (resultError != null) return resultError; if (resultError != null) return resultError;
MallGoodsDO mallGoodsDO = new MallGoodsDO(mallGoodsVO); MallGoodsDO mallGoodsDO = new MallGoodsDO(mallGoodsVO);
// 修改商城商品的基本信息 // 修改商城商品的基本信息
mallGoodsDao.updateMallGoods(mallGoodsDO); mallGoodsDao.updateMallGoods(mallGoodsDO);
// 修改商城商品的图片等资源信息,先删除后新增 // 修改商城商品的图片等资源信息,先删除后新增
mallGoodsDao.deleteMallGoodsResources(mallGoodsVO.getId()); mallGoodsDao.deleteMallGoodsResources(mallGoodsVO.getId());
this.insertMallGoodsResources(mallGoodsVO, mallGoodsVO.getId()); this.insertMallGoodsResources(null, mallGoodsVO, mallGoodsVO.getId());
// 修改规格 // 修改规格
List<SpecAttrVO> specAttrList = mallGoodsVO.getSpecAttrList(); List<SpecAttrVO> specAttrList = mallGoodsVO.getSpecAttrList();
// 从数据库获取该商品下的所有规格 // 从数据库获取该商品下的所有规格
...@@ -198,11 +256,11 @@ public class MallGoodsServiceImpl implements MallGoodsService { ...@@ -198,11 +256,11 @@ public class MallGoodsServiceImpl implements MallGoodsService {
// 获取规格id为空的值,进行新增 // 获取规格id为空的值,进行新增
List<SpecAttrVO> addSpecAttr = specAttrList.stream().filter(spec -> spec.getId() == null).collect(Collectors.toList()); List<SpecAttrVO> addSpecAttr = specAttrList.stream().filter(spec -> spec.getId() == null).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(addSpecAttr)) { if (CollectionUtils.isNotEmpty(addSpecAttr)) {
addMallGoodsSpec(addSpecAttr, mallGoodsVO.getId(), null); addMallGoodsSpec(addSpecAttr, mallGoodsVO.getId(), null, null, 0);
} }
// 修改排列组合数据 // 修改排列组合数据
mallGoodsDao.deleteMallPriceStock(mallGoodsVO.getId()); mallGoodsDao.deleteMallPriceStock(mallGoodsVO.getId());
addMallGoodsSpec(null, mallGoodsVO.getId(), mallGoodsVO.getPriceStock()); addMallGoodsSpec(null, mallGoodsVO.getId(), mallGoodsVO.getPriceStock(), null, 0);
return ResultBody.success(); return ResultBody.success();
} }
......
...@@ -3,5 +3,99 @@ ...@@ -3,5 +3,99 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mmc.pms.dao.lease.LeaseGoodsDao"> <mapper namespace="com.mmc.pms.dao.lease.LeaseGoodsDao">
<insert id="insertLeaseGoodsBaseInfo" parameterType="com.mmc.pms.entity.lease.LeaseGoodsDO"
keyProperty="id" useGeneratedKeys="true">
insert into lease_goods (trade_name,
selling_point,
`level`,
shelf_status,
product_type_id,
brand_info_id,
device_mode_id,
product_param,
product_details,
min_lease_term,
max_lease_term,
ship_address,
return_address,
logistics_company,
mode_of_delivery,
user_account_id,
sort)
values (#{tradeName}, #{sellingPoint}, #{level}, #{shelfStatus}, #{productTypeId}, #{brandInfoId},
#{deviceModeId}, #{productParam}, #{productDetails}, #{minLeaseTerm}, #{maxLeaseTerm}, #{shipAddress},
#{returnAddress}, #{logisticsCompany}, #{modeOfDelivery}, #{userAccountId}, #{sort})
</insert>
<insert id="batchInsertLeaseGoodsResources">
insert into lease_goods_resources (lease_goods_id,
url,
`type`
)
values
<foreach collection="list" item="item" separator=",">
(#{item.mallGoodsId},#{item.url},#{item.type})
</foreach>
</insert>
<insert id="insertSpecAttr" useGeneratedKeys="true" keyProperty="id"
parameterType="com.mmc.pms.entity.mall.SpecAttrDO">
insert into lease_spec_attr (lease_goods_id,
spec_name)
values (#{mallGoodsId}, #{specName})
</insert>
<insert id="batchInsertSpecAttr">
insert into lease_spec_attr_value (spec_attr_id,
spec_value_name
)
values
<foreach collection="list" item="item" separator=",">
(#{item.specAttrId},#{item.specValueName})
</foreach>
</insert>
<insert id="batchInsertPriceStock">
insert into lease_price_stock (lease_goods_id,
product_spec,
sku_image,
cash_pledge,
three_days_rental,
seven_days_rental,
thirty_days_rental,
ninety_days_rental,
max_days_rental,
show_price,
stock,
stock_out
)
values
<foreach collection="list" item="item" separator=",">
(#{item.leaseGoodsId},#{item.productSpec},#{item.skuImage},#{item.cashPledge},#{item.threeDaysRental}
,#{item.sevenDaysRental},#{item.thirtyDaysRental},#{item.ninetyDaysRental},#{item.maxDaysRental}
,#{item.showPrice},#{item.stock},#{item.stockOut})
</foreach>
</insert>
<insert id="batchInsertLeaseParts">
insert into lease_parts_list (lease_goods_id,
`name`,`number`,price
)
values
<foreach collection="list" item="item" separator=",">
(#{item.leaseGoodsId},#{item.name},#{item.number},#{item.price})
</foreach>
</insert>
<select id="countLeaseGoodsByName" resultType="java.lang.Integer">
select count(*)
from lease_goods
where
trade_name = #{leaseGoodsVO.tradeName}
and user_account_id = #{userAccountId}
<if test="leaseGoodsVO.id!=null">
and id <![CDATA[<>]]> #{leaseGoodsVO.id}
</if>
</select>
<select id="countLeaseGoodsByUserAccountId" resultType="java.lang.Integer">
select count(*)
from lease_goods
where user_account_id = #{userAccountId}
</select>
</mapper> </mapper>
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论