添加商品类型:实物商品、虚拟商品、电子卡券

This commit is contained in:
lifenlong 2021-05-28 17:43:55 +08:00
parent 814d118d77
commit 969437fc34
12 changed files with 133 additions and 83 deletions

View File

@ -150,6 +150,7 @@ ignored:
- /buyer/memberEvaluation/**/goodsEvaluation
- /buyer/memberEvaluation/**/evaluationNumber
- /buyer/appVersion/**
- /buyer/broadcast/studio
- /druid/**
- /swagger-ui.html
- /doc.html

View File

@ -147,6 +147,7 @@ ignored:
- /buyer/memberEvaluation/**/goodsEvaluation
- /buyer/memberEvaluation/**/evaluationNumber
- /buyer/appVersion/**
- /buyer/broadcast/studio/**
- /store/login/**
- /manager/user/login
- /manager/user/refresh/**

View File

@ -182,6 +182,12 @@ public class Goods extends BaseEntity {
@ApiModelProperty(value = "销售模式", required = true)
private String salesModel;
/**
* @see cn.lili.modules.goods.entity.enums.GoodsTypeEnum
*/
@ApiModelProperty(value = "商品类型", required = true)
private String goodsType;
public Goods() {
}
@ -203,6 +209,6 @@ public class Goods extends BaseEntity {
this.cost = goodsOperationDTO.getCost();
//如果立即上架则
this.marketEnable = goodsOperationDTO.isRelease() ? GoodsStatusEnum.UPPER.name() : GoodsStatusEnum.DOWN.name();
this.goodsType=goodsOperationDTO.getGoodsType();
}
}

View File

@ -16,7 +16,7 @@ import java.util.List;
import java.util.Map;
/**
* 商品查询条件
* 商品编辑DTO
*
* @author pikachu
* @date 2020-02-24 19:27:20
@ -118,4 +118,10 @@ public class GoodsOperationDTO implements Serializable {
@ApiModelProperty(value = "是否重新生成sku数据")
private Boolean regeneratorSkuFlag = true;
/**
* @see cn.lili.modules.goods.entity.enums.GoodsTypeEnum
*/
@ApiModelProperty(value = "商品类型")
private String goodsType;
}

View File

@ -67,6 +67,12 @@ public class GoodsSearchParams extends PageVO {
@ApiModelProperty(value = "是否为推荐商品")
private Boolean recommend;
/**
* @see cn.lili.modules.goods.entity.enums.GoodsTypeEnum
*/
@ApiModelProperty(value = "商品类型")
private String goodsType;
public <T> QueryWrapper<T> queryWrapper() {
QueryWrapper<T> queryWrapper = new QueryWrapper<>();
if (StringUtils.isNotEmpty(goodsId)) {
@ -108,6 +114,10 @@ public class GoodsSearchParams extends PageVO {
if (recommend != null) {
queryWrapper.le("recommend", recommend);
}
if (goodsType != null) {
queryWrapper.eq("goods_type", goodsType);
}
queryWrapper.eq("delete_flag", false);
this.betweenWrapper(queryWrapper);
return queryWrapper;

View File

@ -1,28 +0,0 @@
package cn.lili.modules.goods.entity.enums;
/**
* 商品运费承担者
*
* @author pikachu
* @date 2020-02-26 23:24:13
*/
public enum GoodsFreightEnum {
/**
* 买家承担运费
*/
BUYER("买家承担运费"),
/**
* 卖家承担运费
*/
STORE("卖家承担运费");
private final String description;
GoodsFreightEnum(String description) {
this.description = description;
}
public String description() {
return description;
}
}

View File

@ -0,0 +1,29 @@
package cn.lili.modules.goods.entity.enums;
/**
* 商品类型
*
* @author Bulbasaur
* @date: 2021/5/28 4:23 下午
*/
public enum GoodsTypeEnum {
PHYSICAL_GOODS("实物商品"),
VIRTUAL_GOODS("虚拟商品"),
E_COUPON("电子卡券");
private final String description;
GoodsTypeEnum(String description) {
this.description = description;
}
public String description() {
return description;
}
}

View File

@ -101,41 +101,19 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
@Override
public void addGoods(GoodsOperationDTO goodsOperationDTO) {
Goods goods = new Goods(goodsOperationDTO);
//判定商品是否需要审核
this.checkNeedAuth(goods);
//检查商品
this.checkGoods(goods);
// 向goods加入图片
this.setGoodsGalleryParam(goodsOperationDTO.getGoodsGalleryList().get(0), goods);
//商品添加卖家信息
StoreVO storeDetail = this.storeService.getStoreDetail();
goods.setStoreId(storeDetail.getId());
goods.setStoreName(storeDetail.getStoreName());
if (storeDetail.getSelfOperated() != null) {
goods.setSelfOperated(storeDetail.getSelfOperated());
}
// 评论次数
goods.setCommentNum(0);
// 购买次数
goods.setBuyCount(0);
// 购买次数
goods.setQuantity(0);
// 商品评分
goods.setGrade(100.0);
//添加商品
this.save(goods);
// 添加商品参数
if (goodsOperationDTO.getGoodsParamsList() != null && !goodsOperationDTO.getGoodsParamsList().isEmpty()) {
this.goodsParamsService.addParams(goodsOperationDTO.getGoodsParamsList(), goods.getId());
}
// 添加商品sku信息
this.goodsSkuService.add(goodsOperationDTO.getSkuList(), goods);
// 添加相册
if (goodsOperationDTO.getGoodsGalleryList() != null && !goodsOperationDTO.getGoodsGalleryList().isEmpty()) {
this.goodsGalleryService.add(goodsOperationDTO.getGoodsGalleryList(), goods.getId());
@ -145,37 +123,27 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
@Override
public void editGoods(GoodsOperationDTO goodsOperationDTO, String goodsId) {
this.checkExist(goodsId);
Goods goods = new Goods(goodsOperationDTO);
goods.setId(goodsId);
//是否需要审核
this.checkNeedAuth(goods);
//检查商品信息
this.checkGoods(goods);
// 向goods加入图片
this.setGoodsGalleryParam(goodsOperationDTO.getGoodsGalleryList().get(0), goods);
//商品添加卖家信息
StoreVO storeDetail = this.storeService.getStoreDetail();
if (storeDetail.getSelfOperated() != null) {
goods.setSelfOperated(storeDetail.getSelfOperated());
}
goods.setStoreId(storeDetail.getId());
goods.setStoreName(storeDetail.getStoreName());
//修改商品
this.updateById(goods);
// 添加商品参数
if (goodsOperationDTO.getGoodsParamsList() != null && !goodsOperationDTO.getGoodsParamsList().isEmpty()) {
this.goodsParamsService.addParams(goodsOperationDTO.getGoodsParamsList(), goods.getId());
//修改商品规格
}
//修改商品sku信息
this.goodsSkuService.update(goodsOperationDTO.getSkuList(), goods, goodsOperationDTO.getRegeneratorSkuFlag());
// 添加相册
if (goodsOperationDTO.getGoodsGalleryList() != null && !goodsOperationDTO.getGoodsGalleryList().isEmpty()) {
this.goodsGalleryService.add(goodsOperationDTO.getGoodsGalleryList(), goods.getId());
}
}
@Override
public GoodsVO getGoodsVO(String goodsId) {
//查询商品信息
@ -353,16 +321,62 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
}
/**
* 商品是否需要审核
* 检查商品信息
* 如果商品是虚拟商品则无需配置配送模板
* 如果商品是实物商品需要配置配送模板
* 判断商品是否存在
* 判断商品是否需要审核
* 判断当前用户是否为店铺
*
* @param goods 商品
*/
private void checkNeedAuth(Goods goods) {
private void checkGoods(Goods goods) {
//判断商品类型
switch (goods.getGoodsType()) {
case "PHYSICAL_GOODS":
if (goods.getTemplateId() == null) {
throw new ServiceException("实物商品需选择配送模板");
}
break;
case "VIRTUAL_GOODS":
if (goods.getTemplateId() != null) {
throw new ServiceException("虚拟商品不需要选择配送模板");
}
break;
default:
throw new ServiceException("需选择商品类型");
}
//检查商品是否存在--修改商品时使用
if (goods.getId() != null) {
this.checkExist(goods.getId());
} else {
// 评论次数
goods.setCommentNum(0);
// 购买次数
goods.setBuyCount(0);
// 购买次数
goods.setQuantity(0);
// 商品评分
goods.setGrade(100.0);
}
//获取商品系统配置决定是否审核
Setting setting = settingService.get(SettingEnum.GOODS_SETTING.name());
GoodsSetting goodsSetting = JSONUtil.toBean(setting.getSettingValue(), GoodsSetting.class);
//是否需要审核
goods.setIsAuth(Boolean.TRUE.equals(goodsSetting.getGoodsCheck()) ? GoodsAuthEnum.TOBEAUDITED.name() : GoodsAuthEnum.PASS.name());
//判断当前用户是否为店铺
if (UserContext.getCurrentUser().getRole().equals(UserEnums.STORE)) {
StoreVO storeDetail = this.storeService.getStoreDetail();
if (storeDetail.getSelfOperated() != null) {
goods.setSelfOperated(storeDetail.getSelfOperated());
}
goods.setStoreId(storeDetail.getId());
goods.setStoreName(storeDetail.getStoreName());
goods.setSelfOperated(storeDetail.getSelfOperated());
} else {
throw new ServiceException("当前未登录店铺");
}
}
/**

View File

@ -184,7 +184,7 @@ public class Order extends BaseEntity {
private Boolean canReturn;
@ApiModelProperty(value = "提货码")
private String qrCode;
private String verificationCode;
@ApiModelProperty(value = "分销员ID")
private String distributionId;

View File

@ -56,27 +56,38 @@ public class OrderItem extends BaseEntity {
@ApiModelProperty(value = "商品ID")
private String goodsId;
@ApiModelProperty(value = "货品ID")
private String skuId;
@ApiModelProperty(value = "销售量")
private Integer num;
@ApiModelProperty(value = "交易编号")
private String tradeSn;
@ApiModelProperty(value = "图片")
private String image;
@ApiModelProperty(value = "商品名称")
private String goodsName;
@ApiModelProperty(value = "分类ID")
private String categoryId;
@ApiModelProperty(value = "快照id")
private String snapshotId;
@ApiModelProperty(value = "规格json")
@Column(columnDefinition = "TEXT")
private String specs;
@ApiModelProperty(value = "促销类型")
private String promotionType;
@ApiModelProperty(value = "促销id")
private String promotionId;
@ApiModelProperty(value = "销售金额")
private Double goodsPrice;

View File

@ -282,7 +282,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
//填写提货码
String code = CommonUtil.getRandomNum();
orderLambdaUpdateWrapper.eq(Order::getSn, orderSn);
orderLambdaUpdateWrapper.set(Order::getQrCode, code);
orderLambdaUpdateWrapper.set(Order::getVerificationCode, code);
orderLambdaUpdateWrapper.set(Order::getOrderStatus, OrderStatusEnum.TAKE.name());
orderLambdaUpdateWrapper.set(Order::getCanReturn, !PaymentMethodEnum.BANK_TRANSFER.name().equals(order.getPaymentMethod()));
@ -395,8 +395,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
}
@Override
@OrderLogPoint(description = "'订单['+#orderSn+']核销,核销码['+#qrCode+']'", orderSn = "#orderSn")
public Order take(String orderSn, String qrCode) {
@OrderLogPoint(description = "'订单['+#orderSn+']核销,核销码['+#verificationCode+']'", orderSn = "#orderSn")
public Order take(String orderSn, String verificationCode) {
//是否可以查询到订单
Order order = OperationalJudgment.judgment(this.getBySn(orderSn));
//判断是否为虚拟订单
@ -406,7 +406,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
//判断虚拟订单状态
if (order.getOrderStatus().equals(OrderStatusEnum.TAKE.name())) {
//判断提货码是否正确\修改订单状态
if (order.getOrderStatus().equals(OrderStatusEnum.TAKE.name()) && qrCode.equals(order.getQrCode())) {
if (order.getOrderStatus().equals(OrderStatusEnum.TAKE.name()) && verificationCode.equals(order.getVerificationCode())) {
order.setOrderStatus(OrderStatusEnum.COMPLETED.name());
this.updateById(order);

View File

@ -14,7 +14,7 @@ import lombok.Data;
public class StoreBasicInfoVO {
@ApiModelProperty(value = "店铺ID")
private Long storeId;
private String storeId;
@ApiModelProperty(value = "店铺名称")
private String storeName;