新增订单添加修改商品状态的逻辑

This commit is contained in:
longbinbin
2024-12-06 16:58:49 +08:00
parent 90b2851092
commit 3bb091d06d
4 changed files with 132 additions and 29 deletions

View File

@ -426,7 +426,7 @@ public enum BizCodeEnum {
ADVANCE_PAYMENT_REFUND_FAILED(2003, "退款失败"),
ADVANCE_PAYMENT_CALLBACK_REFUND_FAILED(2004, "退款回调失败"),
REQUEST_WECHAT_FAIL(2005, "请求微信服务器发生异常"),
;
GOODS_NOT_EXIST(2006, "商品不存在");
BizCodeEnum(Integer code, String message) {

View File

@ -0,0 +1,69 @@
package com.ycwl.basic.enums;
import java.util.HashMap;
import java.util.Map;
/**
* @Authorlongbinbin
* @Date2024/12/6 16:46
*/
public enum GoodsTypeEnum {
VIDEO(1,"成片"),
SOURCE(2,"源素材")
;
public Integer code;
private String value;
public static final Map<Integer, GoodsTypeEnum> cacheMap;
static {
cacheMap = new HashMap<>(GoodsTypeEnum.values().length);
for (GoodsTypeEnum value : GoodsTypeEnum.values()) {
cacheMap.put(value.code, value);
}
}
public static final java.util.Map<String, GoodsTypeEnum> valueMap;
static {
valueMap = new HashMap<>(GoodsTypeEnum.values().length);
for (GoodsTypeEnum value : GoodsTypeEnum.values()) {
valueMap.put(value.value, value);
}
}
GoodsTypeEnum(Integer code, String value) {
this.code = code;
this.value = value;
}
/**
* 获取value值
*/
public static String getValue(Integer noticeMethod) {
if (noticeMethod == null) {
return null;
}
GoodsTypeEnum GoodsTypeEnum = cacheMap.get(noticeMethod);
if (GoodsTypeEnum == null) {
return null;
}
return GoodsTypeEnum.value;
}
/**
* 获取code值
*/
public static Integer getCode(String noticeMethod) {
if (noticeMethod == null) {
return -1;
}
GoodsTypeEnum GoodsTypeEnum = valueMap.get(noticeMethod);
if (GoodsTypeEnum == null) {
return -1;
}
return GoodsTypeEnum.code;
}
}

View File

@ -5,6 +5,7 @@ import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.ycwl.basic.constant.NumberConstant;
import com.ycwl.basic.enums.BizCodeEnum;
import com.ycwl.basic.enums.GoodsTypeEnum;
import com.ycwl.basic.enums.OrderStateEnum;
import com.ycwl.basic.enums.SourceTypeNameEnum;
import com.ycwl.basic.exception.AppException;
@ -22,7 +23,9 @@ import com.ycwl.basic.model.pc.order.req.OrderReqQuery;
import com.ycwl.basic.model.pc.order.resp.OrderAppRespVO;
import com.ycwl.basic.model.pc.order.resp.OrderItemVO;
import com.ycwl.basic.model.pc.order.resp.OrderRespVO;
import com.ycwl.basic.model.pc.source.entity.SourceEntity;
import com.ycwl.basic.model.pc.source.resp.SourceRespVO;
import com.ycwl.basic.model.pc.video.entity.VideoEntity;
import com.ycwl.basic.model.pc.video.resp.VideoRespVO;
import com.ycwl.basic.model.wx.WXPayOrderReqVO;
import com.ycwl.basic.model.wx.WxPayRespVO;
@ -94,14 +97,30 @@ public class OrderServiceImpl implements OrderService {
return ApiResponse.fail("订单添加失败");
} else {
List<GoodsDetailVO> goodsItemList = order.getGoodsItemList();
GoodsDetailVO goodsDetailVO = goodsItemList.get(NumberConstant.ZERO);
Integer goodsType = goodsDetailVO.getGoodsType();
List<OrderItemEntity> orderItems = new ArrayList<>();
goodsItemList.forEach(goodsDto -> {
Long goodsId = goodsDto.getGoodsId();
OrderItemEntity orderItemEntity = new OrderItemEntity();
orderItemEntity.setId(SnowFlakeUtil.getLongId());
orderItemEntity.setOrderId(orderId);
orderItemEntity.setGoodsType(goodsDto.getGoodsType());
orderItemEntity.setGoodsId(goodsDto.getGoodsId());
orderItemEntity.setGoodsId(goodsId);
orderItems.add(orderItemEntity);
//修改商品状态
if (Objects.equals(goodsType, GoodsTypeEnum.VIDEO.code)) {
VideoEntity videoEntity = new VideoEntity();
videoEntity.setId(goodsId);
videoEntity.setIsBuy(1);
videoMapper.update(videoEntity);
}else if (Objects.equals(goodsType, GoodsTypeEnum.SOURCE.code)) {
SourceEntity sourceEntity = new SourceEntity();
sourceEntity.setId(goodsId);
sourceEntity.setIsBuy(1);
sourceMapper.update(sourceEntity);
}
});
int addOrderItems = orderMapper.addOrderItems(orderItems);
if (addOrderItems == NumberConstant.ZERO) {
@ -109,35 +128,49 @@ public class OrderServiceImpl implements OrderService {
return ApiResponse.fail("订单添加失败");
}
GoodsDetailVO goodsDetailVO = goodsItemList.get(NumberConstant.ZERO);
Integer goodsType = goodsDetailVO.getGoodsType();
Long goodsId = goodsDetailVO.getGoodsId();
String goodsName = null;
if (goodsType == NumberConstant.ONE) {
goodsName = goodsDetailVO.getGoodsName();
} else if (goodsType == NumberConstant.TWO) {
Integer sourceType = goodsDetailVO.getSourceType();
goodsName = SourceTypeNameEnum.getRemark(sourceType);
}
/* 成片的时候子订单只会有一个,素材的时候 子订单多个且价格与子订单数量无关,只与子订单商品对应景区定义的价格相同*/
GoodsPriceQueryReq goodsPriceQueryReq = new GoodsPriceQueryReq();
goodsPriceQueryReq.setGoodsId(goodsId);
goodsPriceQueryReq.setGoodsType(goodsType);
goodsPriceQueryReq.setScenicId(goodsDetailVO.getScenicId());
BigDecimal price = goodsService.queryPrice(goodsPriceQueryReq).getData();
MemberRespVO memberRespVO = memberService.getUserInfo().getData();
WXPayOrderReqVO wxPayOrderReqVO = new WXPayOrderReqVO();
wxPayOrderReqVO.setOpenId(memberRespVO.getOpenId())
.setOrderSn(orderId)
.setTotalPrice(BigDecimalUtil.convertToCents(price))
.setGoodsName(goodsName);
return ApiResponse.success(wxPayService.createOrder(wxPayOrderReqVO));
//封装微信支付请求
WxPayRespVO wxPayRespVO = initiatePayment(orderId, goodsDetailVO);
return ApiResponse.success(wxPayRespVO);
}
}
/**
* 发起支付
* @param orderId 订单id
* @param goodsDetailVO 商品详情
* @return 支付请求结果
*/
private WxPayRespVO initiatePayment(Long orderId,GoodsDetailVO goodsDetailVO) throws Exception {
WXPayOrderReqVO wxPayOrderReqVO = new WXPayOrderReqVO();
Integer goodsType = goodsDetailVO.getGoodsType();
Long goodsId = goodsDetailVO.getGoodsId();
String goodsName = null;
if (goodsType == NumberConstant.ONE) {
goodsName = goodsDetailVO.getGoodsName();
} else if (goodsType == NumberConstant.TWO) {
Integer sourceType = goodsDetailVO.getSourceType();
goodsName = SourceTypeNameEnum.getRemark(sourceType);
}
/* 成片的时候子订单只会有一个,素材的时候 子订单多个且价格与子订单数量无关,只与子订单商品对应景区定义的价格相同*/
GoodsPriceQueryReq goodsPriceQueryReq = new GoodsPriceQueryReq();
goodsPriceQueryReq.setGoodsId(goodsId);
goodsPriceQueryReq.setGoodsType(goodsType);
goodsPriceQueryReq.setScenicId(goodsDetailVO.getScenicId());
BigDecimal price = goodsService.queryPrice(goodsPriceQueryReq).getData();
MemberRespVO memberRespVO = memberService.getUserInfo().getData();
wxPayOrderReqVO.setOpenId(memberRespVO.getOpenId())
.setOrderSn(orderId)
.setTotalPrice(BigDecimalUtil.convertToCents(price))
.setGoodsName(goodsName);
return wxPayService.createOrder(wxPayOrderReqVO);
}
@Override
public ApiResponse<Integer> update(OrderAddOrUpdateReq query) {
int update = orderMapper.update(query);