商品共享库存字段
This commit is contained in:
parent
70abb276bc
commit
1945d3f906
|
|
@ -44,19 +44,19 @@ public class TbProskuConController {
|
||||||
return new ResponseEntity<>(tbProskuConService.queryAll(criteria,pageable),HttpStatus.OK);
|
return new ResponseEntity<>(tbProskuConService.queryAll(criteria,pageable),HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping
|
// @PostMapping
|
||||||
@Log("新增商品规格耗材信息")
|
// @Log("新增商品规格耗材信息")
|
||||||
@ApiOperation("新增商品规格耗材信息")
|
// @ApiOperation("新增商品规格耗材信息")
|
||||||
public ResponseEntity<Object> createTbProskuCon(@Validated @RequestBody List<ProskuInfo> resources) throws Exception {
|
// public ResponseEntity<Object> createTbProskuCon(@Validated @RequestBody List<ProskuInfo> resources) throws Exception {
|
||||||
try {
|
// try {
|
||||||
return new ResponseEntity<>(tbProskuConService.create(resources),HttpStatus.CREATED);
|
// return new ResponseEntity<>(tbProskuConService.create(resources),HttpStatus.CREATED);
|
||||||
} catch (BadRequestException be) {
|
// } catch (BadRequestException be) {
|
||||||
throw new Exception(be.getMessage());
|
// throw new Exception(be.getMessage());
|
||||||
}catch (Exception e){
|
// }catch (Exception e){
|
||||||
e.printStackTrace();
|
// e.printStackTrace();
|
||||||
throw new Exception("相同商品耗材信息不允许添加");
|
// throw new Exception("相同商品耗材信息不允许添加");
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
@PostMapping("V2")
|
@PostMapping("V2")
|
||||||
@Log("新增商品耗材绑定关系")
|
@Log("新增商品耗材绑定关系")
|
||||||
|
|
|
||||||
|
|
@ -78,11 +78,10 @@ public class TbProskuConServiceImpl implements TbProskuConService {
|
||||||
throw new BadRequestException("对应的商品信息不存在");
|
throw new BadRequestException("对应的商品信息不存在");
|
||||||
}
|
}
|
||||||
List<TbProskuCon> list=new ArrayList<>();
|
List<TbProskuCon> list=new ArrayList<>();
|
||||||
if(product.getIsDistribute().intValue()==1){
|
// if(product.getIsDistribute().intValue()==1){
|
||||||
|
|
||||||
TbConsInfo tbConsInfo= tbConsInfoRepository.findById(resource.getConsInfoId()).orElseGet(TbConsInfo::new);
|
TbConsInfo tbConsInfo= tbConsInfoRepository.findById(resource.getConsInfoId()).orElseGet(TbConsInfo::new);
|
||||||
|
|
||||||
log.info("product.getIsDistribute().intValue():{}", JSONUtil.toJSONString(tbConsInfo));
|
|
||||||
if(ObjectUtil.isNull(tbConsInfo)||ObjectUtil.isNull(tbConsInfo.getId())){
|
if(ObjectUtil.isNull(tbConsInfo)||ObjectUtil.isNull(tbConsInfo.getId())){
|
||||||
throw new BadRequestException("对应的耗材信息不存在");
|
throw new BadRequestException("对应的耗材信息不存在");
|
||||||
}
|
}
|
||||||
|
|
@ -109,41 +108,41 @@ public class TbProskuConServiceImpl implements TbProskuConService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}else {
|
// }else {
|
||||||
for (ProskuInfo.SkuInfo skuInfo : resource.getSkuInfos()) {
|
// for (ProskuInfo.SkuInfo skuInfo : resource.getSkuInfos()) {
|
||||||
|
//
|
||||||
|
//
|
||||||
TbConsInfo tbConsInfo= tbConsInfoRepository.findById(skuInfo.getConInfoId()).orElseGet(TbConsInfo::new);
|
// TbConsInfo tbConsInfo= tbConsInfoRepository.findById(skuInfo.getConInfoId()).orElseGet(TbConsInfo::new);
|
||||||
|
//
|
||||||
log.info("skuInfo:{}", JSONUtil.toJSONString(tbConsInfo));
|
// log.info("skuInfo:{}", JSONUtil.toJSONString(tbConsInfo));
|
||||||
|
//
|
||||||
if(ObjectUtil.isNull(tbConsInfo)||ObjectUtil.isNull(tbConsInfo.getId())){
|
// if(ObjectUtil.isNull(tbConsInfo)||ObjectUtil.isNull(tbConsInfo.getId())){
|
||||||
throw new BadRequestException("对应的耗材信息不存在");
|
// throw new BadRequestException("对应的耗材信息不存在");
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
TbProductSku tbProductSku= tbProductSkuRepository.findById(skuInfo.getSkuId()).orElseGet(TbProductSku::new);
|
// TbProductSku tbProductSku= tbProductSkuRepository.findById(skuInfo.getSkuId()).orElseGet(TbProductSku::new);
|
||||||
if(ObjectUtil.isNull(tbProductSku)||ObjectUtil.isNull(tbProductSku.getId())){
|
// if(ObjectUtil.isNull(tbProductSku)||ObjectUtil.isNull(tbProductSku.getId())){
|
||||||
throw new BadRequestException("规格信息不存在");
|
// throw new BadRequestException("规格信息不存在");
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
int count=tbProskuConRepository.countByConInfoIdAndProductSkuIdAndShopId(resource.getConsInfoId(), skuInfo.getSkuId(), skuInfo.getShopId(), resource.getProductId());
|
// int count=tbProskuConRepository.countByConInfoIdAndProductSkuIdAndShopId(resource.getConsInfoId(), skuInfo.getSkuId(), skuInfo.getShopId(), resource.getProductId());
|
||||||
if(count<=0){
|
// if(count<=0){
|
||||||
TbProskuCon tbProskuCon=new TbProskuCon();
|
// TbProskuCon tbProskuCon=new TbProskuCon();
|
||||||
tbProskuCon.setShopId(Integer.valueOf(skuInfo.getShopId()));
|
// tbProskuCon.setShopId(Integer.valueOf(skuInfo.getShopId()));
|
||||||
tbProskuCon.setConInfoId(tbConsInfo.getId());
|
// tbProskuCon.setConInfoId(tbConsInfo.getId());
|
||||||
tbProskuCon.setProductId(resource.getProductId());
|
// tbProskuCon.setProductId(resource.getProductId());
|
||||||
tbProskuCon.setProductSkuId(skuInfo.getSkuId());
|
// tbProskuCon.setProductSkuId(skuInfo.getSkuId());
|
||||||
tbProskuCon.setSurplusStock(skuInfo.getSurplusStock());
|
// tbProskuCon.setSurplusStock(skuInfo.getSurplusStock());
|
||||||
tbProskuCon.setStatus("1");
|
// tbProskuCon.setStatus("1");
|
||||||
tbProskuCon.setCreateTime(new Timestamp(System.currentTimeMillis()));
|
// tbProskuCon.setCreateTime(new Timestamp(System.currentTimeMillis()));
|
||||||
list.add(tbProskuCon);
|
// list.add(tbProskuCon);
|
||||||
}else {
|
// }else {
|
||||||
TbProductSku sku= tbProductSkuRepository.getById(skuInfo.getSkuId());
|
// TbProductSku sku= tbProductSkuRepository.getById(skuInfo.getSkuId());
|
||||||
throw new BadRequestException(product.getName().concat("商品对应的").concat(Objects.nonNull(sku.getSpecSnap())?sku.getSpecSnap():"").concat("规格已存在"));
|
// throw new BadRequestException(product.getName().concat("商品对应的").concat(Objects.nonNull(sku.getSpecSnap())?sku.getSpecSnap():"").concat("规格已存在"));
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
}
|
// }
|
||||||
if(Objects.nonNull(list)&&list.size()>0){
|
if(Objects.nonNull(list)&&list.size()>0){
|
||||||
tbProskuConRepository.saveAll(list);
|
tbProskuConRepository.saveAll(list);
|
||||||
}
|
}
|
||||||
|
|
@ -243,48 +242,6 @@ public class TbProskuConServiceImpl implements TbProskuConService {
|
||||||
ValidationUtil.isNull( tbProskuCon.getId(),"TbProskuCon","id",resources.getId());
|
ValidationUtil.isNull( tbProskuCon.getId(),"TbProskuCon","id",resources.getId());
|
||||||
tbProskuCon.copy(resources);
|
tbProskuCon.copy(resources);
|
||||||
tbProskuConRepository.save(tbProskuCon);
|
tbProskuConRepository.save(tbProskuCon);
|
||||||
|
|
||||||
|
|
||||||
// TbProduct product= tbProductRepository.getById(resources.getProductId());
|
|
||||||
// if(Objects.isNull(product)){
|
|
||||||
// throw new Exception("对应的商品信息不存在");
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// TbConsInfo tbConsInfo= tbConsInfoRepository.getById(resources.getConsInfoId());
|
|
||||||
// if(Objects.isNull(tbConsInfo)){
|
|
||||||
// throw new Exception("对应的耗材信息不存在");
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// List<TbProskuCon> list=new ArrayList<>();
|
|
||||||
// if("1".equals(product.getIsDistribute().toString())){
|
|
||||||
// //查询商品对应的所有规格
|
|
||||||
// List<TbProductSku> skuList= tbProductSkuRepository.searchSku(product.getId().toString());
|
|
||||||
// if(Objects.nonNull(skuList)&&skuList.size()>0){
|
|
||||||
// for (TbProductSku tbProductSku : skuList) {
|
|
||||||
// TbProskuCon tbProskuCon=tbProskuConRepository.selectByConInfoIdAndProductSkuIdAndShopId(resources.getConsInfoId(), tbProductSku.getId(), Integer.valueOf(tbProductSku.getShopId()), Integer.valueOf(tbProductSku.getProductId()));
|
|
||||||
// if(Objects.nonNull(tbProskuCon)){
|
|
||||||
// tbProskuCon.setSurplusStock(resources.getSurplusStock());
|
|
||||||
// tbProskuCon.setStatus(resources.getStatus());
|
|
||||||
// tbProskuCon.setCreateTime(new Timestamp(System.currentTimeMillis()));
|
|
||||||
// list.add(tbProskuCon);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// }else {
|
|
||||||
//
|
|
||||||
// for (ProskuInfo.SkuInfo skuInfo : resources.getSkuInfos()) {
|
|
||||||
// TbProskuCon tbProskuCon=tbProskuConRepository.selectByConInfoIdAndProductSkuIdAndShopId(resources.getConsInfoId(), skuInfo.getSkuId(), skuInfo.getShopId(), resources.getProductId());
|
|
||||||
// if(Objects.nonNull(tbProskuCon)){
|
|
||||||
// tbProskuCon.setSurplusStock(skuInfo.getSurplusStock());
|
|
||||||
// tbProskuCon.setStatus(skuInfo.getStatus());
|
|
||||||
// tbProskuCon.setCreateTime(new Timestamp(System.currentTimeMillis()));
|
|
||||||
// list.add(tbProskuCon);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
// tbProskuConRepository.saveAll(list);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -121,8 +121,6 @@ public class TbProductDto implements Serializable {
|
||||||
/** 商品规格:0-单规格 1多规格 */
|
/** 商品规格:0-单规格 1多规格 */
|
||||||
private String typeEnum;
|
private String typeEnum;
|
||||||
|
|
||||||
/** 是否独立分销 */
|
|
||||||
private Integer isDistribute;
|
|
||||||
|
|
||||||
/** 是否回收站 0-否,1回收站 */
|
/** 是否回收站 0-否,1回收站 */
|
||||||
private Integer isDel;
|
private Integer isDel;
|
||||||
|
|
|
||||||
|
|
@ -169,9 +169,6 @@ public class TbProduct implements Serializable {
|
||||||
@ApiModelProperty(value = "商品规格:0-单规格 1多规格")
|
@ApiModelProperty(value = "商品规格:0-单规格 1多规格")
|
||||||
private String typeEnum;
|
private String typeEnum;
|
||||||
|
|
||||||
@Column(name = "`is_distribute`")
|
|
||||||
@ApiModelProperty(value = "是否共享库存")
|
|
||||||
private Integer isDistribute = 0;
|
|
||||||
|
|
||||||
@Column(name = "`is_del`",nullable = false)
|
@Column(name = "`is_del`",nullable = false)
|
||||||
@NotNull
|
@NotNull
|
||||||
|
|
|
||||||
|
|
@ -1,314 +0,0 @@
|
||||||
|
|
||||||
package cn.ysk.cashier.pojo.product;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.IdType;
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
|
||||||
import lombok.Data;
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
|
||||||
import cn.hutool.core.bean.copier.CopyOptions;
|
|
||||||
import lombok.EqualsAndHashCode;
|
|
||||||
|
|
||||||
import javax.persistence.*;
|
|
||||||
import javax.validation.constraints.*;
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @website https://eladmin.vip
|
|
||||||
* @description /
|
|
||||||
* @author lyf
|
|
||||||
* @date 2023-12-11
|
|
||||||
**/
|
|
||||||
@Entity
|
|
||||||
@Data
|
|
||||||
@Table(name="tb_product")
|
|
||||||
@TableName("tb_product")
|
|
||||||
public class TbProductAndSku implements Serializable {
|
|
||||||
|
|
||||||
@Id
|
|
||||||
@Column(name = "`id`")
|
|
||||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
|
||||||
@ApiModelProperty(value = "id")
|
|
||||||
@TableId(type = IdType.AUTO)
|
|
||||||
private Integer id;
|
|
||||||
|
|
||||||
@Column(name = "`source_path`")
|
|
||||||
@ApiModelProperty(value = "商品来源 NORMAL普通商品 --,SCORE积分商品")
|
|
||||||
private String sourcePath="NORMAL";
|
|
||||||
|
|
||||||
@Column(name = "`merchant_id`")
|
|
||||||
@ApiModelProperty(value = "商户Id")
|
|
||||||
private String merchantId = "PLANT_ID";
|
|
||||||
|
|
||||||
@Column(name = "`shop_id`")
|
|
||||||
@ApiModelProperty(value = "店铺id")
|
|
||||||
private String shopId;
|
|
||||||
|
|
||||||
@Column(name = "`name`")
|
|
||||||
@ApiModelProperty(value = "商品名称")
|
|
||||||
private String name;
|
|
||||||
|
|
||||||
@Column(name = "`type`")
|
|
||||||
@ApiModelProperty(value = "商品类型(属性):REAL- 实物商品 VIR---虚拟商品")
|
|
||||||
private String type = "REAL";
|
|
||||||
|
|
||||||
@Column(name = "`pack_fee`")
|
|
||||||
@ApiModelProperty(value = "包装费")
|
|
||||||
private BigDecimal packFee;
|
|
||||||
|
|
||||||
@Column(name = "`low_price`",nullable = false)
|
|
||||||
@NotNull
|
|
||||||
@ApiModelProperty(value = "商品最低价")
|
|
||||||
private BigDecimal lowPrice;
|
|
||||||
|
|
||||||
@Column(name = "`unit_id`")
|
|
||||||
@ApiModelProperty(value = "单位Id")
|
|
||||||
private Integer unitId;
|
|
||||||
|
|
||||||
@Column(name = "`cover_img`")
|
|
||||||
@ApiModelProperty(value = "商品封面图")
|
|
||||||
private String coverImg;
|
|
||||||
|
|
||||||
@Column(name = "`category_id`")
|
|
||||||
@ApiModelProperty(value = "categoryId")
|
|
||||||
private String categoryId;
|
|
||||||
|
|
||||||
@Column(name = "`spec_id`")
|
|
||||||
@ApiModelProperty(value = "商品规格")
|
|
||||||
private Integer specId;
|
|
||||||
|
|
||||||
@Column(name = "`brand_id`")
|
|
||||||
@ApiModelProperty(value = "品牌Id")
|
|
||||||
private Integer brandId;
|
|
||||||
|
|
||||||
@Column(name = "`short_title`")
|
|
||||||
@ApiModelProperty(value = "短标题--促销语")
|
|
||||||
private String shortTitle;
|
|
||||||
|
|
||||||
@Column(name = "`low_member_price`")
|
|
||||||
@ApiModelProperty(value = "lowMemberPrice")
|
|
||||||
private BigDecimal lowMemberPrice;
|
|
||||||
|
|
||||||
@Column(name = "`unit_snap`")
|
|
||||||
@ApiModelProperty(value = "单位镜像")
|
|
||||||
private String unitSnap;
|
|
||||||
|
|
||||||
@Column(name = "`share_img`")
|
|
||||||
@ApiModelProperty(value = "商品分享图")
|
|
||||||
private String shareImg;
|
|
||||||
|
|
||||||
@Column(name = "`images`")
|
|
||||||
@ApiModelProperty(value = "商品图片(第一张为缩略图,其他为详情)")
|
|
||||||
private String images;
|
|
||||||
|
|
||||||
@Column(name = "`video`")
|
|
||||||
@ApiModelProperty(value = "商品视频URL地址")
|
|
||||||
private String video;
|
|
||||||
|
|
||||||
@Column(name = "`video_cover_img`")
|
|
||||||
@ApiModelProperty(value = "视频封面图")
|
|
||||||
private String videoCoverImg;
|
|
||||||
|
|
||||||
@Column(name = "`sort`")
|
|
||||||
@ApiModelProperty(value = "排序")
|
|
||||||
private Integer sort = 0;
|
|
||||||
|
|
||||||
@Column(name = "`limit_number`")
|
|
||||||
@ApiModelProperty(value = "0-不限购")
|
|
||||||
private Integer limitNumber = 0;
|
|
||||||
|
|
||||||
@Column(name = "`product_score`")
|
|
||||||
@ApiModelProperty(value = "商品赚送积分")
|
|
||||||
private Integer productScore;
|
|
||||||
|
|
||||||
@Column(name = "`status`",nullable = false)
|
|
||||||
@NotNull
|
|
||||||
@ApiModelProperty(value = "0--待审核 1审核通过 -1审核失败 -2违规下架")
|
|
||||||
private Integer status = 0;
|
|
||||||
|
|
||||||
@Column(name = "`fail_msg`")
|
|
||||||
@ApiModelProperty(value = "审核失败原因")
|
|
||||||
private String failMsg;
|
|
||||||
|
|
||||||
@Column(name = "`is_recommend`")
|
|
||||||
@ApiModelProperty(value = "是否推荐,店铺推荐展示")
|
|
||||||
private Integer isRecommend = 0;
|
|
||||||
|
|
||||||
@Column(name = "`is_hot`")
|
|
||||||
@ApiModelProperty(value = "是否热销")
|
|
||||||
private Integer isHot = 0;
|
|
||||||
|
|
||||||
@Column(name = "`is_new`")
|
|
||||||
@ApiModelProperty(value = "是否新品")
|
|
||||||
private Integer isNew;
|
|
||||||
|
|
||||||
@Column(name = "`is_on_sale`")
|
|
||||||
@ApiModelProperty(value = "是否促销1-是0-否")
|
|
||||||
private Integer isOnSale = 0;
|
|
||||||
|
|
||||||
@Column(name = "`is_show`")
|
|
||||||
@ApiModelProperty(value = "是否展示0-下架 1上架---废弃")
|
|
||||||
private Integer isShow = 0;
|
|
||||||
|
|
||||||
@Column(name = "`type_enum`")
|
|
||||||
@ApiModelProperty(value = "商品规格:0-单规格 1多规格")
|
|
||||||
private String typeEnum;
|
|
||||||
|
|
||||||
@Column(name = "`is_distribute`")
|
|
||||||
@ApiModelProperty(value = "是否共享库存")
|
|
||||||
private Integer isDistribute = 0;
|
|
||||||
|
|
||||||
@Column(name = "`is_del`",nullable = false)
|
|
||||||
@NotNull
|
|
||||||
@ApiModelProperty(value = "是否回收站 0-否,1回收站")
|
|
||||||
private Integer isDel = 0;
|
|
||||||
|
|
||||||
@Column(name = "`is_stock`")
|
|
||||||
@ApiModelProperty(value = "是否开启库存")
|
|
||||||
private Integer isStock = 1;
|
|
||||||
|
|
||||||
@Column(name = "`is_pause_sale`")
|
|
||||||
@ApiModelProperty(value = "是否暂停销售")
|
|
||||||
private Integer isPauseSale = 0;
|
|
||||||
|
|
||||||
@Column(name = "`is_free_freight`",nullable = false)
|
|
||||||
@NotNull
|
|
||||||
@ApiModelProperty(value = "是否免邮1-是 0-否")
|
|
||||||
private Integer isFreeFreight=1;
|
|
||||||
|
|
||||||
@Column(name = "`freight_id`")
|
|
||||||
@ApiModelProperty(value = "邮费模版")
|
|
||||||
private Long freightId;
|
|
||||||
|
|
||||||
@Column(name = "`strategy_type`")
|
|
||||||
@ApiModelProperty(value = "商品当前生效策略")
|
|
||||||
private String strategyType;
|
|
||||||
|
|
||||||
@Column(name = "`strategy_id`")
|
|
||||||
@ApiModelProperty(value = "策略Id")
|
|
||||||
private Integer strategyId = 1;
|
|
||||||
|
|
||||||
@Column(name = "`is_vip`")
|
|
||||||
@ApiModelProperty(value = "vip专属")
|
|
||||||
private Integer isVip = 0;
|
|
||||||
|
|
||||||
@Column(name = "`is_delete`",nullable = false)
|
|
||||||
@NotNull
|
|
||||||
@ApiModelProperty(value = "是否删除")
|
|
||||||
private Integer isDelete = 0;
|
|
||||||
|
|
||||||
@Column(name = "`notice`")
|
|
||||||
@ApiModelProperty(value = "购买须知")
|
|
||||||
private String notice;
|
|
||||||
|
|
||||||
@Column(name = "`created_at`")
|
|
||||||
@ApiModelProperty(value = "createdAt")
|
|
||||||
private Long createdAt;
|
|
||||||
|
|
||||||
@Column(name = "`updated_at`")
|
|
||||||
@ApiModelProperty(value = "updatedAt")
|
|
||||||
private Long updatedAt;
|
|
||||||
|
|
||||||
@Column(name = "`base_sales_number`")
|
|
||||||
@ApiModelProperty(value = "基础出售数量")
|
|
||||||
private Double baseSalesNumber =0.00;
|
|
||||||
|
|
||||||
@Column(name = "`real_sales_number`")
|
|
||||||
@ApiModelProperty(value = "实际销量")
|
|
||||||
private Double realSalesNumber = (double) 0;
|
|
||||||
|
|
||||||
@Column(name = "`sales_number`")
|
|
||||||
@ApiModelProperty(value = "合计销量")
|
|
||||||
private Integer salesNumber = 0;
|
|
||||||
|
|
||||||
@Column(name = "`thumb_count`")
|
|
||||||
@ApiModelProperty(value = "点赞次数")
|
|
||||||
private Integer thumbCount = 0;
|
|
||||||
|
|
||||||
@Column(name = "`store_count`")
|
|
||||||
@ApiModelProperty(value = "收藏次数")
|
|
||||||
private Integer storeCount = 0;
|
|
||||||
|
|
||||||
@Column(name = "`furnish_meal`")
|
|
||||||
@ApiModelProperty(value = "支持堂食")
|
|
||||||
private Integer furnishMeal = 0;
|
|
||||||
|
|
||||||
@Column(name = "`furnish_express`")
|
|
||||||
@ApiModelProperty(value = "支持配送")
|
|
||||||
private Integer furnishExpress = 0;
|
|
||||||
|
|
||||||
@Column(name = "`furnish_draw`")
|
|
||||||
@ApiModelProperty(value = "支持自提")
|
|
||||||
private Integer furnishDraw = 0;
|
|
||||||
|
|
||||||
@Column(name = "`furnish_vir`")
|
|
||||||
@ApiModelProperty(value = "支持虚拟")
|
|
||||||
private Integer furnishVir = 0;
|
|
||||||
|
|
||||||
@Column(name = "`is_combo`")
|
|
||||||
@ApiModelProperty(value = "是否套餐")
|
|
||||||
private Integer isCombo =0;
|
|
||||||
|
|
||||||
@Column(name = "`group_snap`")
|
|
||||||
@ApiModelProperty(value = "套餐内容")
|
|
||||||
private String groupSnap;
|
|
||||||
|
|
||||||
@Column(name = "`is_show_cash`")
|
|
||||||
@ApiModelProperty(value = "isShowCash")
|
|
||||||
private Integer isShowCash =0;
|
|
||||||
|
|
||||||
@Column(name = "`is_show_mall`")
|
|
||||||
@ApiModelProperty(value = "isShowMall")
|
|
||||||
private Integer isShowMall = 0;
|
|
||||||
|
|
||||||
@Column(name = "`is_need_examine`")
|
|
||||||
@ApiModelProperty(value = "是否需要审核")
|
|
||||||
private Integer isNeedExamine = 0;
|
|
||||||
|
|
||||||
@Column(name = "`show_on_mall_status`")
|
|
||||||
@ApiModelProperty(value = "线上商城展示状态0待审核 -1 异常 1正常")
|
|
||||||
private Integer showOnMallStatus = 1;
|
|
||||||
|
|
||||||
@Column(name = "`show_on_mall_time`")
|
|
||||||
@ApiModelProperty(value = "提交审核时间")
|
|
||||||
private Long showOnMallTime;
|
|
||||||
|
|
||||||
@Column(name = "`show_on_mall_error_msg`")
|
|
||||||
@ApiModelProperty(value = "线上商城展示失败原因")
|
|
||||||
private String showOnMallErrorMsg;
|
|
||||||
|
|
||||||
@Column(name = "`enable_label`")
|
|
||||||
@ApiModelProperty(value = "使用标签打印 选择 是 并在 前台>本机设置 勾选打印标签后,收银完成后会自动打印对应数量的标签数")
|
|
||||||
private Integer enableLabel = 0;
|
|
||||||
|
|
||||||
@Column(name = "`tax_config_id`")
|
|
||||||
@ApiModelProperty(value = "税率")
|
|
||||||
private String taxConfigId;
|
|
||||||
|
|
||||||
@Column(name = "spec_info")
|
|
||||||
@ApiModelProperty(value = "specInfo")
|
|
||||||
private String specInfo;
|
|
||||||
|
|
||||||
@Column(name = "select_spec")
|
|
||||||
@ApiModelProperty(value = "selectSpec")
|
|
||||||
private String selectSpec;
|
|
||||||
|
|
||||||
@Column(name = "spec_table_headers")
|
|
||||||
@ApiModelProperty(value = "specTableHeaders")
|
|
||||||
private String specTableHeaders;
|
|
||||||
|
|
||||||
@Column(name = "group_category_id")
|
|
||||||
@ApiModelProperty(value = "团购卷分类Id")
|
|
||||||
private String groupCategoryId;
|
|
||||||
|
|
||||||
@Column(name = "stock_number")
|
|
||||||
@ApiModelProperty("库存数量")
|
|
||||||
private Double stockNumber = (double) 0;
|
|
||||||
|
|
||||||
|
|
||||||
public void copy(TbProduct source){
|
|
||||||
BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -169,24 +169,14 @@ public class TbProductServiceImpl implements TbProductService {
|
||||||
|
|
||||||
tbProductVo.setMaxPrice(maxPrice);
|
tbProductVo.setMaxPrice(maxPrice);
|
||||||
|
|
||||||
if (product.getIsDistribute() == 1) {
|
stockNumber = product.getStockNumber() == null ? 0 : product.getStockNumber();
|
||||||
stockNumber = product.getStockNumber() == null ? 0 : product.getStockNumber();
|
TbProductSku tbProductSku = null;
|
||||||
TbProductSku tbProductSku = null;
|
if (isAdmin) {
|
||||||
if (isAdmin) {
|
if (!tbProductSkus.isEmpty()) {
|
||||||
if (!tbProductSkus.isEmpty()) {
|
tbProductSku = BeanUtil.copyProperties(tbProductSkus.get(0), TbProductSku.class);
|
||||||
tbProductSku = BeanUtil.copyProperties(tbProductSkus.get(0), TbProductSku.class);
|
tbProductSku.setStockNumber(stockNumber);
|
||||||
tbProductSku.setStockNumber(stockNumber);
|
|
||||||
}
|
|
||||||
skuList.add(tbProductSku);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
for (TbProductSku sku : tbProductSkus) {
|
|
||||||
//sku
|
|
||||||
if (sku.getProductId().equals(product.getId().toString())) {
|
|
||||||
skuList.add(sku);
|
|
||||||
stockNumber = isAdmin ? sku.getStockNumber() : stockNumber + sku.getStockNumber();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
skuList.add(tbProductSku);
|
||||||
}
|
}
|
||||||
tbProductVo.setStockNumber(stockNumber);
|
tbProductVo.setStockNumber(stockNumber);
|
||||||
tbProductVo.setSkuList(skuList);
|
tbProductVo.setSkuList(skuList);
|
||||||
|
|
@ -716,7 +706,6 @@ public class TbProductServiceImpl implements TbProductService {
|
||||||
map.put("是否促销1-是0-否", tbProduct.getIsOnSale());
|
map.put("是否促销1-是0-否", tbProduct.getIsOnSale());
|
||||||
map.put("是否展示0-下架 1上架---废弃", tbProduct.getIsShow());
|
map.put("是否展示0-下架 1上架---废弃", tbProduct.getIsShow());
|
||||||
map.put("商品规格:0-单规格 1多规格", tbProduct.getTypeEnum());
|
map.put("商品规格:0-单规格 1多规格", tbProduct.getTypeEnum());
|
||||||
map.put("是否独立分销", tbProduct.getIsDistribute());
|
|
||||||
map.put("是否回收站 0-否,1回收站", tbProduct.getIsDel());
|
map.put("是否回收站 0-否,1回收站", tbProduct.getIsDel());
|
||||||
map.put("是否开启库存", tbProduct.getIsStock());
|
map.put("是否开启库存", tbProduct.getIsStock());
|
||||||
map.put("是否暂停销售", tbProduct.getIsPauseSale());
|
map.put("是否暂停销售", tbProduct.getIsPauseSale());
|
||||||
|
|
@ -826,11 +815,8 @@ public class TbProductServiceImpl implements TbProductService {
|
||||||
tbProductSkus.forEach(item2 -> {
|
tbProductSkus.forEach(item2 -> {
|
||||||
Map<String, Object> itemMap = BeanUtil.beanToMap(item2, false, true);
|
Map<String, Object> itemMap = BeanUtil.beanToMap(item2, false, true);
|
||||||
|
|
||||||
if (item.getIsDistribute().equals(1)) {
|
itemMap.put("stockNumber", item.getStockNumber());
|
||||||
itemMap.put("stockNumber", item.getStockNumber());
|
|
||||||
} else {
|
|
||||||
itemMap.put("stockNumber", item2.getStockNumber());
|
|
||||||
}
|
|
||||||
specList.add(itemMap);
|
specList.add(itemMap);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -236,7 +236,6 @@ public class TbProductStockOperateServiceImpl implements TbProductStockOperateSe
|
||||||
throw new BadRequestException("商品有误");
|
throw new BadRequestException("商品有误");
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean isDistribute = product.getIsDistribute() == 1;
|
|
||||||
|
|
||||||
// 保存库存详情
|
// 保存库存详情
|
||||||
TbProductStockDetail productStockDetail = new TbProductStockDetail();
|
TbProductStockDetail productStockDetail = new TbProductStockDetail();
|
||||||
|
|
@ -244,7 +243,7 @@ public class TbProductStockOperateServiceImpl implements TbProductStockOperateSe
|
||||||
productStockDetail.setCreatedAt(times);
|
productStockDetail.setCreatedAt(times);
|
||||||
productStockDetail.setUpdatedAt(times);
|
productStockDetail.setUpdatedAt(times);
|
||||||
productStockDetail.setIsStock(1);
|
productStockDetail.setIsStock(1);
|
||||||
Integer round = (int) Math.floor(isDistribute ? product.getStockNumber() : tbProductSku.getStockNumber());
|
Integer round = (int) Math.floor(product.getStockNumber());
|
||||||
productStockDetail.setLeftNumber(round);
|
productStockDetail.setLeftNumber(round);
|
||||||
productStockDetail.setProductId(tbProductSku.getProductId());
|
productStockDetail.setProductId(tbProductSku.getProductId());
|
||||||
productStockDetail.setProductName(product.getName());
|
productStockDetail.setProductName(product.getName());
|
||||||
|
|
@ -268,7 +267,7 @@ public class TbProductStockOperateServiceImpl implements TbProductStockOperateSe
|
||||||
|
|
||||||
// 获取增加后的库存
|
// 获取增加后的库存
|
||||||
setProSpecInfo(product, tbProductSku, getStockNum(product, tbProductSku, productListDto.getNumber(), false),
|
setProSpecInfo(product, tbProductSku, getStockNum(product, tbProductSku, productListDto.getNumber(), false),
|
||||||
productListDto.getCostPrice(), isDistribute);
|
productListDto.getCostPrice());
|
||||||
break;
|
break;
|
||||||
//后台入库
|
//后台入库
|
||||||
case "purveyor":
|
case "purveyor":
|
||||||
|
|
@ -281,7 +280,7 @@ public class TbProductStockOperateServiceImpl implements TbProductStockOperateSe
|
||||||
// 获取增加后的库存
|
// 获取增加后的库存
|
||||||
double stockNum = getStockNum(product, tbProductSku, productListDto.getNumber(), true);
|
double stockNum = getStockNum(product, tbProductSku, productListDto.getNumber(), true);
|
||||||
setProSpecInfo(product, tbProductSku, stockNum,
|
setProSpecInfo(product, tbProductSku, stockNum,
|
||||||
productListDto.getCostPrice(), isDistribute);
|
productListDto.getCostPrice());
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case "purchase":
|
case "purchase":
|
||||||
|
|
@ -294,7 +293,7 @@ public class TbProductStockOperateServiceImpl implements TbProductStockOperateSe
|
||||||
|
|
||||||
// 获取增加后的库存
|
// 获取增加后的库存
|
||||||
setProSpecInfo(product, tbProductSku, getStockNum(product, tbProductSku, productListDto.getNumber(), true),
|
setProSpecInfo(product, tbProductSku, getStockNum(product, tbProductSku, productListDto.getNumber(), true),
|
||||||
productListDto.getCostPrice(), isDistribute);
|
productListDto.getCostPrice());
|
||||||
break;
|
break;
|
||||||
case "other-out":
|
case "other-out":
|
||||||
productStockDetail.setStockNumber((double) -productListDto.getNumber());
|
productStockDetail.setStockNumber((double) -productListDto.getNumber());
|
||||||
|
|
@ -306,7 +305,7 @@ public class TbProductStockOperateServiceImpl implements TbProductStockOperateSe
|
||||||
|
|
||||||
// 获取增加后的库存
|
// 获取增加后的库存
|
||||||
setProSpecInfo(product, tbProductSku, getStockNum(product, tbProductSku, productListDto.getNumber(), false),
|
setProSpecInfo(product, tbProductSku, getStockNum(product, tbProductSku, productListDto.getNumber(), false),
|
||||||
productListDto.getCostPrice(), isDistribute);
|
productListDto.getCostPrice());
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
@ -314,15 +313,9 @@ public class TbProductStockOperateServiceImpl implements TbProductStockOperateSe
|
||||||
productStockDetail.setUnitName(productListDto.getUnitName());
|
productStockDetail.setUnitName(productListDto.getUnitName());
|
||||||
entityManager.persist(productStockDetail);
|
entityManager.persist(productStockDetail);
|
||||||
|
|
||||||
if (isDistribute) {
|
//修改成本价
|
||||||
//修改成本价
|
tbProductSkuRepository.updateCostByProductId(product.getId().toString(), productListDto.getCostPrice());
|
||||||
tbProductSkuRepository.updateCostByProductId(product.getId().toString(), productListDto.getCostPrice());
|
tbProductRepository.save(product);
|
||||||
tbProductRepository.save(product);
|
|
||||||
} else {
|
|
||||||
//sku数量
|
|
||||||
tbProductSku.setCostPrice(productListDto.getCostPrice());
|
|
||||||
productSkuService.update(tbProductSku);
|
|
||||||
}
|
|
||||||
idStockMap.put(productListDto.getId(), productStockDetail.getStockNumber());
|
idStockMap.put(productListDto.getId(), productStockDetail.getStockNumber());
|
||||||
}
|
}
|
||||||
redisUtils.redisUp(2, resources.getShopId(), idStockMap);
|
redisUtils.redisUp(2, resources.getShopId(), idStockMap);
|
||||||
|
|
@ -333,35 +326,20 @@ public class TbProductStockOperateServiceImpl implements TbProductStockOperateSe
|
||||||
}
|
}
|
||||||
|
|
||||||
private double getStockNum(TbProduct product, TbProductSku productSku, double num, boolean isAdd) {
|
private double getStockNum(TbProduct product, TbProductSku productSku, double num, boolean isAdd) {
|
||||||
if (product.getIsDistribute() == 1) {
|
product.setStockNumber((int) (isAdd ? product.getStockNumber() + num : product.getStockNumber() - num));
|
||||||
product.setStockNumber((int) (isAdd ? product.getStockNumber() + num : product.getStockNumber() - num));
|
return product.getStockNumber();
|
||||||
return product.getStockNumber();
|
|
||||||
} else {
|
|
||||||
productSku.setStockNumber(isAdd ? productSku.getStockNumber() + num : productSku.getStockNumber() - num);
|
|
||||||
return productSku.getStockNumber();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void main(String[] args) {
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setProSpecInfo(TbProduct product, TbProductSku productSku, double num, BigDecimal cost, boolean isShareStock) {
|
private void setProSpecInfo(TbProduct product, TbProductSku productSku, double num, BigDecimal cost) {
|
||||||
if (product.getSpecInfo() != null) {
|
if (product.getSpecInfo() != null) {
|
||||||
JSONArray specInfoArr = JSON.parseArray(product.getSpecInfo());
|
JSONArray specInfoArr = JSON.parseArray(product.getSpecInfo());
|
||||||
for (Object item : specInfoArr) {
|
for (Object item : specInfoArr) {
|
||||||
JSONObject jsonObject = (JSONObject) item;
|
JSONObject jsonObject = (JSONObject) item;
|
||||||
if (isShareStock) {
|
jsonObject.put("stockNumber", num);
|
||||||
jsonObject.put("stockNumber", num);
|
jsonObject.put("costPrice", cost);
|
||||||
jsonObject.put("costPrice", cost);
|
|
||||||
} else if (productSku != null &&
|
|
||||||
(
|
|
||||||
productSku.getId().equals(jsonObject.getInteger("id")) ||
|
|
||||||
(productSku.getSpecSnap() != null && productSku.getSpecSnap().equals(jsonObject.getString("specSnap")))
|
|
||||||
)) {
|
|
||||||
jsonObject.put("stockNumber", num);
|
|
||||||
jsonObject.put("costPrice", cost);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
product.setSpecInfo(specInfoArr.toJSONString());
|
product.setSpecInfo(specInfoArr.toJSONString());
|
||||||
}
|
}
|
||||||
|
|
@ -453,8 +431,7 @@ public class TbProductStockOperateServiceImpl implements TbProductStockOperateSe
|
||||||
//增加操作日志
|
//增加操作日志
|
||||||
long times = Instant.now().toEpochMilli();
|
long times = Instant.now().toEpochMilli();
|
||||||
HashMap<String, Object> snapItem = new HashMap<>();
|
HashMap<String, Object> snapItem = new HashMap<>();
|
||||||
snapItem.put("stockNumber", product.getIsDistribute().equals(1) ? product.getStockNumber() - stockRecordMsg.getNumber() :
|
snapItem.put("stockNumber", product.getStockNumber() - stockRecordMsg.getNumber());
|
||||||
productSku.getStockNumber() - stockRecordMsg.getNumber());
|
|
||||||
snapItem.put("number", stockRecordMsg.getSubType() == -1 ? -stockRecordMsg.getNumber() : stockRecordMsg.getNumber());
|
snapItem.put("number", stockRecordMsg.getSubType() == -1 ? -stockRecordMsg.getNumber() : stockRecordMsg.getNumber());
|
||||||
snapItem.put("coverImg", product.getCoverImg());
|
snapItem.put("coverImg", product.getCoverImg());
|
||||||
snapItem.put("productId", product.getId());
|
snapItem.put("productId", product.getId());
|
||||||
|
|
@ -495,8 +472,7 @@ public class TbProductStockOperateServiceImpl implements TbProductStockOperateSe
|
||||||
productStockDetail.setSpecSnap(productSku.getSpecSnap());
|
productStockDetail.setSpecSnap(productSku.getSpecSnap());
|
||||||
productStockDetail.setStockNumber(Double.valueOf(stockRecordMsg.getNumber()));
|
productStockDetail.setStockNumber(Double.valueOf(stockRecordMsg.getNumber()));
|
||||||
productStockDetail.setCostAmount(productSku.getSalePrice().multiply(BigDecimal.valueOf(Math.abs(stockRecordMsg.getNumber()))));
|
productStockDetail.setCostAmount(productSku.getSalePrice().multiply(BigDecimal.valueOf(Math.abs(stockRecordMsg.getNumber()))));
|
||||||
productStockDetail.setLeftNumber(product.getIsDistribute().equals(1) ? product.getStockNumber() - stockRecordMsg.getNumber()
|
productStockDetail.setLeftNumber(product.getStockNumber() - stockRecordMsg.getNumber());
|
||||||
: productSku.getStockNumber().intValue() - stockRecordMsg.getNumber());
|
|
||||||
productStockDetail.setRecordId(stockOperate.getId().toString());
|
productStockDetail.setRecordId(stockOperate.getId().toString());
|
||||||
productStockDetail.setStockSnap(JSONObject.toJSONString(snapItem));
|
productStockDetail.setStockSnap(JSONObject.toJSONString(snapItem));
|
||||||
productStockDetail.setSourcePath("CASHIER");
|
productStockDetail.setSourcePath("CASHIER");
|
||||||
|
|
|
||||||
|
|
@ -128,56 +128,22 @@ public class TbProductStocktakinServiceImpl implements TbProductStocktakinServic
|
||||||
snap.put("unitName", tbShopUnit == null ? null : tbShopUnit.getName());
|
snap.put("unitName", tbShopUnit == null ? null : tbShopUnit.getName());
|
||||||
// snap.put("specSnap", tbShopUnit == null ? null : tbShopUnit.getName());
|
// snap.put("specSnap", tbShopUnit == null ? null : tbShopUnit.getName());
|
||||||
|
|
||||||
// 共享库存
|
phaseNum = productStocktakinDTO.getStocktakinNum() - product.getStockNumber();
|
||||||
if (product.getIsDistribute() == 1) {
|
round = (int) Math.floor(product.getStockNumber());
|
||||||
phaseNum = productStocktakinDTO.getStocktakinNum() - product.getStockNumber();
|
productStocktakin.setPhasePrice(
|
||||||
round = (int) Math.floor( product.getStockNumber());
|
productStocktakinDTO.getPrice().multiply(BigDecimal.valueOf(phaseNum))
|
||||||
productStocktakin.setPhasePrice(
|
);
|
||||||
productStocktakinDTO.getPrice().multiply(BigDecimal.valueOf(phaseNum))
|
|
||||||
);
|
|
||||||
|
|
||||||
productStockDetail.setSubType(productStocktakinDTO.getStocktakinNum() > product.getStockNumber() ? 1 : -1);
|
productStockDetail.setSubType(productStocktakinDTO.getStocktakinNum() > product.getStockNumber() ? 1 : -1);
|
||||||
stockOperate.setType(productStocktakinDTO.getStocktakinNum() > product.getStockNumber() ? "盘点入库" : "盘点出库");
|
stockOperate.setType(productStocktakinDTO.getStocktakinNum() > product.getStockNumber() ? "盘点入库" : "盘点出库");
|
||||||
productStockDetail.setType(productStocktakinDTO.getStocktakinNum() > product.getStockNumber() ? "盘点入库" : "盘点出库");
|
productStockDetail.setType(productStocktakinDTO.getStocktakinNum() > product.getStockNumber() ? "盘点入库" : "盘点出库");
|
||||||
|
|
||||||
productStocktakin.setPhaseNum(productStocktakinDTO.getStocktakinNum() - product.getStockNumber());
|
|
||||||
productStocktakin.setStock(product.getStockNumber());
|
|
||||||
if (tbProductRepository.updateStock(product.getId(), product.getStockNumber(), productStocktakinDTO.getStocktakinNum()) < 1) {
|
|
||||||
throw new BadRequestException("修改库存失败,稍后再试");
|
|
||||||
}
|
|
||||||
snap.put("stockNumber", product.getStockNumber());
|
|
||||||
|
|
||||||
}else {
|
|
||||||
if (productStocktakinDTO.getSkuId() == null) {
|
|
||||||
throw new BadRequestException("非共享库存必须传入skuId");
|
|
||||||
}
|
|
||||||
|
|
||||||
TbProductSku productSku = producSkutMapper.selectByProIdAndId(productStocktakinDTO.getSkuId(),
|
|
||||||
productStocktakinDTO.getProductId());
|
|
||||||
phaseNum = (int) (productStocktakinDTO.getStocktakinNum() - productSku.getStockNumber());
|
|
||||||
|
|
||||||
productStocktakinDTO.setPrice(productSku.getSalePrice());
|
|
||||||
|
|
||||||
|
|
||||||
round = (int) Math.floor( productSku.getStockNumber());
|
|
||||||
productStockDetail.setSpecSnap(productSku.getSpecSnap());
|
|
||||||
|
|
||||||
productStockDetail.setSubType(productStocktakinDTO.getStocktakinNum() > productSku.getStockNumber() ? 1 : -1);
|
|
||||||
stockOperate.setType(productStocktakinDTO.getStocktakinNum() > productSku.getStockNumber() ? "盘点入库" : "盘点出库");
|
|
||||||
productStockDetail.setType(productStocktakinDTO.getStocktakinNum() > productSku.getStockNumber() ? "盘点入库" : "盘点出库");
|
|
||||||
productStocktakin.setSkuId(productSku.getId());
|
|
||||||
productStocktakin.setPhasePrice(
|
|
||||||
productStocktakinDTO.getPrice().multiply(BigDecimal.valueOf(phaseNum))
|
|
||||||
);
|
|
||||||
productStocktakin.setStock(productSku.getStockNumber().intValue());
|
|
||||||
|
|
||||||
productStocktakin.setPhaseNum((int) (productStocktakinDTO.getStocktakinNum() - productSku.getStockNumber()));
|
|
||||||
if (producSkutMapper.updateStock(productSku.getId(), productSku.getStockNumber(), productStocktakinDTO.getStocktakinNum()) < 1) {
|
|
||||||
throw new BadRequestException("修改库存失败,稍后再试");
|
|
||||||
}
|
|
||||||
snap.put("stockNumber", productSku.getStockNumber());
|
|
||||||
|
|
||||||
|
productStocktakin.setPhaseNum(productStocktakinDTO.getStocktakinNum() - product.getStockNumber());
|
||||||
|
productStocktakin.setStock(product.getStockNumber());
|
||||||
|
if (tbProductRepository.updateStock(product.getId(), product.getStockNumber(), productStocktakinDTO.getStocktakinNum()) < 1) {
|
||||||
|
throw new BadRequestException("修改库存失败,稍后再试");
|
||||||
}
|
}
|
||||||
|
snap.put("stockNumber", product.getStockNumber());
|
||||||
snap.put("number", phaseNum);
|
snap.put("number", phaseNum);
|
||||||
productStocktakin.setPrice(productStocktakinDTO.getPrice());
|
productStocktakin.setPrice(productStocktakinDTO.getPrice());
|
||||||
productStockDetail.setStockNumber((double) phaseNum);
|
productStockDetail.setStockNumber((double) phaseNum);
|
||||||
|
|
|
||||||
|
|
@ -319,9 +319,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
||||||
throw new BadRequestException("商品不存在或已下架, id: " + addCartDTO.getSkuId());
|
throw new BadRequestException("商品不存在或已下架, id: " + addCartDTO.getSkuId());
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((product.getIsDistribute().equals(1) && product.getStockNumber() < 1)
|
if (product.getStockNumber() < 1) {
|
||||||
|| (!product.getIsDistribute().equals(1) && productSku.getStockNumber() < 1)
|
|
||||||
) {
|
|
||||||
throw new BadRequestException(product.getName() + "商品库存不足");
|
throw new BadRequestException(product.getName() + "商品库存不足");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -622,12 +620,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
||||||
* @param addNum 增加的库存数量
|
* @param addNum 增加的库存数量
|
||||||
*/
|
*/
|
||||||
public void incrStock(Integer productId, Integer skuId, Integer addNum) {
|
public void incrStock(Integer productId, Integer skuId, Integer addNum) {
|
||||||
TbProduct product = productMapper.selectById(productId);
|
productMapper.incrStock(productId, addNum);
|
||||||
if (product.getIsDistribute() == 1) {
|
|
||||||
productMapper.incrStock(product.getId(), addNum);
|
|
||||||
} else {
|
|
||||||
producSkutMapper.incrStock(skuId, addNum);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -639,22 +632,12 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
||||||
*/
|
*/
|
||||||
public void decrStock(Integer productId, String skuId, int decrNum) {
|
public void decrStock(Integer productId, String skuId, int decrNum) {
|
||||||
TbProduct product = productMapper.selectById(productId);
|
TbProduct product = productMapper.selectById(productId);
|
||||||
if (product.getIsDistribute() == 1) {
|
if (product.getIsStock() == 1) {
|
||||||
if (product.getIsStock() == 1) {
|
if (productMapper.decrStock(productId, decrNum) < 1) {
|
||||||
if (productMapper.decrStock(productId, decrNum) < 1) {
|
throw new BadRequestException(product.getName() + "库存不足,下单失败");
|
||||||
throw new BadRequestException(product.getName() + "库存不足,下单失败");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
productMapper.decrStockUnCheck(productId, decrNum);
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (product.getIsStock() == 1) {
|
productMapper.decrStockUnCheck(productId, decrNum);
|
||||||
if (producSkutMapper.decrStock(String.valueOf(skuId), decrNum) < 1) {
|
|
||||||
throw new BadRequestException(product.getName() + "库存不足,下单失败");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
producSkutMapper.decrStockUnCheck(String.valueOf(skuId), decrNum);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -114,9 +114,6 @@ public class TbProductVo {
|
||||||
private String typeEnum;
|
private String typeEnum;
|
||||||
|
|
||||||
|
|
||||||
private Integer isDistribute;
|
|
||||||
|
|
||||||
|
|
||||||
private Integer isDel;
|
private Integer isDel;
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue