修改商品信息查询以及订单新增订单接口逻辑

This commit is contained in:
longbinbin
2024-12-06 16:11:36 +08:00
parent 1488a6dd33
commit 5e6a52536a
9 changed files with 135 additions and 29 deletions

View File

@ -1,5 +1,6 @@
package com.ycwl.basic.controller.mobile;
import com.ycwl.basic.model.mobile.goods.GoodsDetailVO;
import com.ycwl.basic.model.mobile.goods.GoodsPriceQueryReq;
import com.ycwl.basic.model.mobile.goods.GoodsReqQuery;
import com.ycwl.basic.model.mobile.goods.GoodsPageVO;
@ -35,16 +36,15 @@ public class AppGoodsController {
@ApiOperation("源素材(原片/照片)商品列表")
@PostMapping("/sourceGoodsList")
public ApiResponse<List<SourceRespVO>> sourceGoodsList(@RequestBody GoodsReqQuery query) {
public ApiResponse<List<GoodsDetailVO>> sourceGoodsList(@RequestBody GoodsReqQuery query) {
return goodsService.sourceGoodsList(query);
}
// @ApiOperation("成片vlog商品详情")
// @GetMapping("/getVideoGoodsDetail/{goodId}")
// public ApiResponse<GoodsVO> videoGoodsDetail(@RequestBody GoodsReqQuery query) {
//
// return ApiResponse.success("");
// }
@ApiOperation("成片vlog商品详情")
@GetMapping("/getVideoGoodsDetail/{goodId}")
public ApiResponse<GoodsDetailVO> videoGoodsDetail(@PathVariable("goodId") Long goodsId) {
return goodsService.videoGoodsDetail(goodsId);
}
@ApiOperation("查询价格")
@PostMapping("/queryPrice")

View File

@ -0,0 +1,42 @@
package com.ycwl.basic.model.mobile.goods;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* @Authorlongbinbin
* @Date2024/12/5 15:10
*/
@Data
@ApiModel("商品详情")
public class GoodsDetailVO {
@ApiModelProperty("商品名称")
private String goodsName;
@ApiModelProperty("景区id")
private Long scenicId;
@ApiModelProperty("景区名称")
private String scenicName;
@ApiModelProperty("经度")
private BigDecimal longitude;
@ApiModelProperty("纬度")
private BigDecimal latitude;
@ApiModelProperty("商品类型 1:成片视频 2:源素材")
private Integer goodsType;
@ApiModelProperty("源素材类型 1:视频 2:图片")
private Integer sourceType;
@ApiModelProperty("商品id goodsType=1时为videoIdgoodsType=2时为sourceId")
private Long goodsId;
@ApiModelProperty("模版封面图片")
private String templateCoverUrl;
@ApiModelProperty("图片文件存储地址")
private String url;
@ApiModelProperty("视频文件存储地址")
private String videoUrl;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
}

View File

@ -11,7 +11,7 @@ import java.math.BigDecimal;
* @Date2024/12/5 15:10
*/
@Data
@ApiModel("商品")
@ApiModel("移动端商品列表响应信息")
public class GoodsPageVO {
@ApiModelProperty("商品名称")
private String goodsName;
@ -27,7 +27,7 @@ public class GoodsPageVO {
private Integer goodsType;
@ApiModelProperty("源素材类型 1:视频 2:图片")
private Integer sourceType;
@ApiModelProperty("商品id goodsType为1时才有值")
@ApiModelProperty("商品vlogid goodsType为1时才有值")
private Long goodsId;
@ApiModelProperty("模版封面图片")
private String templateCoverUrl;

View File

@ -1,6 +1,7 @@
package com.ycwl.basic.model.pc.order.req;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ycwl.basic.model.mobile.goods.GoodsDetailVO;
import com.ycwl.basic.model.pc.order.entity.OrderItemEntity;
import com.ycwl.basic.model.pc.order.resp.OrderItemVO;
import io.swagger.annotations.ApiModel;
@ -96,6 +97,6 @@ public class OrderAddOrUpdateReq {
@ApiModelProperty("订单退款时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date refundAt;
@ApiModelProperty("订单明细")
private List<OrderItemDTO> orderItemList;
@ApiModelProperty("订单商品明细")
private List<GoodsDetailVO> goodsItemList;
}

View File

@ -51,6 +51,4 @@ public class SourceRespVO {
private String videoUrl;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updateTime;
}

View File

@ -3,6 +3,7 @@ package com.ycwl.basic.service.impl.mobile;
import com.ycwl.basic.mapper.pc.ScenicMapper;
import com.ycwl.basic.mapper.pc.SourceMapper;
import com.ycwl.basic.mapper.pc.VideoMapper;
import com.ycwl.basic.model.mobile.goods.GoodsDetailVO;
import com.ycwl.basic.model.mobile.goods.GoodsPriceQueryReq;
import com.ycwl.basic.model.mobile.goods.GoodsReqQuery;
import com.ycwl.basic.model.mobile.goods.GoodsPageVO;
@ -13,6 +14,7 @@ import com.ycwl.basic.model.pc.video.req.VideoReqQuery;
import com.ycwl.basic.model.pc.video.resp.VideoRespVO;
import com.ycwl.basic.service.mobile.GoodsService;
import com.ycwl.basic.utils.ApiResponse;
import com.ycwl.basic.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -83,14 +85,49 @@ public class GoodsServiceImpl implements GoodsService {
}
@Override
public ApiResponse<List<SourceRespVO>> sourceGoodsList(GoodsReqQuery query) {
SourceReqQuery sourceReqQuery = new SourceReqQuery();
public ApiResponse<List<GoodsDetailVO>> sourceGoodsList(GoodsReqQuery query) {
Integer sourceType = query.getSourceType();
SourceReqQuery sourceReqQuery = new SourceReqQuery();
sourceReqQuery.setScenicId(query.getScenicId());
sourceReqQuery.setIsBuy(query.getIsBuy());
sourceReqQuery.setMemberId(query.getMemberId());
sourceReqQuery.setType(query.getSourceType());
sourceReqQuery.setType(sourceType);
List<SourceRespVO> list = sourceMapper.list(sourceReqQuery);
return ApiResponse.success(list);
List<GoodsDetailVO> goodsDetailVOList = new ArrayList<>();
String goodsNamePrefix = "";
if(sourceType==1){
goodsNamePrefix="视频";
}else if (sourceType==2){
goodsNamePrefix="图片";
}else {
goodsNamePrefix="其他类型";
}
//图片编号
int i=1;
for (SourceRespVO sourceRespVO : list) {
GoodsDetailVO goodsDetailVO = new GoodsDetailVO();
String shootingTime = DateUtils.format(sourceRespVO.getCreateTime(), "yyyy.MM.dd HH:mm:ss");
if(i<10){
goodsDetailVO.setGoodsName(goodsNamePrefix +"0"+i+" "+shootingTime);
}else {
goodsDetailVO.setGoodsName(goodsNamePrefix +i+" "+shootingTime);
}
goodsDetailVO.setScenicId(sourceRespVO.getScenicId());
goodsDetailVO.setScenicName(sourceRespVO.getScenicName());
goodsDetailVO.setLongitude(sourceRespVO.getLongitude());
goodsDetailVO.setLatitude(sourceRespVO.getLatitude());
goodsDetailVO.setGoodsType(2);
goodsDetailVO.setSourceType(sourceType);
goodsDetailVO.setGoodsId(sourceRespVO.getId());
goodsDetailVO.setVideoUrl(sourceRespVO.getVideoUrl());
goodsDetailVO.setUrl(sourceRespVO.getUrl());
goodsDetailVO.setCreateTime(sourceRespVO.getCreateTime());
goodsDetailVOList.add(goodsDetailVO);
i++;
}
return ApiResponse.success(goodsDetailVOList);
}
@Override
@ -125,4 +162,21 @@ public class GoodsServiceImpl implements GoodsService {
}
return ApiResponse.fail("不合法的商品,请联系管理员");
}
@Override
public ApiResponse<GoodsDetailVO> videoGoodsDetail(Long goodsId) {
GoodsDetailVO goodsDetailVO = new GoodsDetailVO();
VideoRespVO videoRespVO = videoMapper.getById(goodsId);
goodsDetailVO.setGoodsName(videoRespVO.getTemplateName());
goodsDetailVO.setScenicId(videoRespVO.getScenicId());
goodsDetailVO.setScenicName(videoRespVO.getScenicName());
goodsDetailVO.setLongitude(videoRespVO.getLongitude());
goodsDetailVO.setLatitude(videoRespVO.getLatitude());
goodsDetailVO.setGoodsType(1);
goodsDetailVO.setGoodsId(videoRespVO.getId());
goodsDetailVO.setVideoUrl(videoRespVO.getVideoUrl());
goodsDetailVO.setTemplateCoverUrl(videoRespVO.getTemplateCoverUrl());
goodsDetailVO.setCreateTime(videoRespVO.getCreateTime());
return ApiResponse.success(goodsDetailVO);
}
}

View File

@ -11,6 +11,7 @@ import com.ycwl.basic.exception.AppException;
import com.ycwl.basic.mapper.pc.OrderMapper;
import com.ycwl.basic.mapper.pc.SourceMapper;
import com.ycwl.basic.mapper.pc.VideoMapper;
import com.ycwl.basic.model.mobile.goods.GoodsDetailVO;
import com.ycwl.basic.model.mobile.goods.GoodsPriceQueryReq;
import com.ycwl.basic.model.mobile.order.RefundOrderReq;
import com.ycwl.basic.model.pc.member.resp.MemberRespVO;
@ -92,12 +93,14 @@ public class OrderServiceImpl implements OrderService {
if (add == NumberConstant.ZERO) {
return ApiResponse.fail("订单添加失败");
} else {
List<OrderItemDTO> orderItemList = order.getOrderItemList();
List<GoodsDetailVO> goodsItemList = order.getGoodsItemList();
List<OrderItemEntity> orderItems = new ArrayList<>();
orderItemList.forEach(orderItemDTO -> {
goodsItemList.forEach(goodsDto -> {
OrderItemEntity orderItemEntity = new OrderItemEntity();
BeanUtil.copyProperties(orderItemDTO, orderItemEntity);
orderItemEntity.setId(SnowFlakeUtil.getLongId());
orderItemEntity.setOrderId(orderId);
orderItemEntity.setGoodsType(goodsDto.getGoodsType());
orderItemEntity.setGoodsId(goodsDto.getGoodsId());
orderItems.add(orderItemEntity);
});
int addOrderItems = orderMapper.addOrderItems(orderItems);
@ -106,24 +109,23 @@ public class OrderServiceImpl implements OrderService {
return ApiResponse.fail("订单添加失败");
}
Integer goodsType = order.getOrderItemList().get(NumberConstant.ZERO).getGoodsType();
Long goodsId = order.getOrderItemList().get(NumberConstant.ZERO).getGoodsId();
GoodsDetailVO goodsDetailVO = goodsItemList.get(NumberConstant.ZERO);
Integer goodsType = goodsDetailVO.getGoodsType();
Long goodsId = goodsDetailVO.getGoodsId();
String goodsName = null;
if (goodsType == NumberConstant.ONE) {
VideoRespVO videoRespVO = videoMapper.getById(goodsId);
goodsName = videoRespVO.getTemplateName();
goodsName = goodsDetailVO.getGoodsName();
} else if (goodsType == NumberConstant.TWO) {
SourceRespVO sourceRespVO = sourceMapper.getById(goodsId);
goodsName = SourceTypeNameEnum.getRemark(sourceRespVO.getType());
Integer sourceType = goodsDetailVO.getSourceType();
goodsName = SourceTypeNameEnum.getRemark(sourceType);
}
/* 成片的时候子订单只会有一个,素材的时候 子订单多个且价格与子订单数量无关,只与子订单商品对应景区定义的价格相同*/
GoodsPriceQueryReq goodsPriceQueryReq = new GoodsPriceQueryReq();
goodsPriceQueryReq.setGoodsId(goodsId);
goodsPriceQueryReq.setGoodsType(goodsType);
// goodsPriceQueryReq.setScenicId(order.get)
goodsPriceQueryReq.setScenicId(goodsDetailVO.getScenicId());
BigDecimal price = goodsService.queryPrice(goodsPriceQueryReq).getData();
MemberRespVO memberRespVO = memberService.getUserInfo().getData();

View File

@ -1,5 +1,6 @@
package com.ycwl.basic.service.mobile;
import com.ycwl.basic.model.mobile.goods.GoodsDetailVO;
import com.ycwl.basic.model.mobile.goods.GoodsPriceQueryReq;
import com.ycwl.basic.model.mobile.goods.GoodsReqQuery;
import com.ycwl.basic.model.mobile.goods.GoodsPageVO;
@ -27,7 +28,7 @@ public interface GoodsService {
* @param query
* @return
*/
ApiResponse<List<SourceRespVO>> sourceGoodsList(GoodsReqQuery query);
ApiResponse<List<GoodsDetailVO>> sourceGoodsList(GoodsReqQuery query);
/**
* 查询订单应付价格
@ -35,4 +36,11 @@ public interface GoodsService {
* @return
*/
ApiResponse<BigDecimal> queryPrice(GoodsPriceQueryReq queryPriceData);
/**
*
* @param goodsId 商品vlogid
* @return
*/
ApiResponse<GoodsDetailVO> videoGoodsDetail(Long goodsId);
}