You've already forked FrameTour-BE
Merge remote-tracking branch 'origin/master'
This commit is contained in:
@ -1,8 +1,9 @@
|
||||
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.GoodsVO;
|
||||
import com.ycwl.basic.model.mobile.goods.GoodsPageVO;
|
||||
import com.ycwl.basic.model.pc.source.resp.SourceRespVO;
|
||||
import com.ycwl.basic.service.mobile.GoodsService;
|
||||
import com.ycwl.basic.utils.ApiResponse;
|
||||
@ -29,22 +30,21 @@ public class AppGoodsController {
|
||||
|
||||
@ApiOperation("商品列表")
|
||||
@PostMapping("/goodsList")
|
||||
public ApiResponse<List<GoodsVO>> goodsList(@RequestBody GoodsReqQuery query) {
|
||||
public ApiResponse<List<GoodsPageVO>> goodsList(@RequestBody GoodsReqQuery query) {
|
||||
return goodsService.goodsList(query);
|
||||
}
|
||||
|
||||
@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")
|
||||
|
@ -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;
|
||||
|
||||
/**
|
||||
* @Author:longbinbin
|
||||
* @Date:2024/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时为videoId,goodsType=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;
|
||||
}
|
@ -1,21 +1,18 @@
|
||||
package com.ycwl.basic.model.mobile.goods;
|
||||
|
||||
import com.ycwl.basic.model.pc.source.resp.SourceRespVO;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author:longbinbin
|
||||
* @Date:2024/12/5 15:10
|
||||
*/
|
||||
@Data
|
||||
@ApiModel("商品")
|
||||
public class GoodsVO {
|
||||
@ApiModel("移动端商品列表响应信息")
|
||||
public class GoodsPageVO {
|
||||
@ApiModelProperty("商品名称")
|
||||
private String goodsName;
|
||||
@ApiModelProperty("景区id")
|
||||
@ -30,7 +27,7 @@ public class GoodsVO {
|
||||
private Integer goodsType;
|
||||
@ApiModelProperty("源素材类型 1:视频 2:图片")
|
||||
private Integer sourceType;
|
||||
@ApiModelProperty("商品id goodsType为1时才有值")
|
||||
@ApiModelProperty("商品(vlog)id goodsType为1时才有值")
|
||||
private Long goodsId;
|
||||
@ApiModelProperty("模版封面图片")
|
||||
private String templateCoverUrl;
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -3,9 +3,10 @@ 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.GoodsVO;
|
||||
import com.ycwl.basic.model.mobile.goods.GoodsPageVO;
|
||||
import com.ycwl.basic.model.pc.scenic.resp.ScenicRespVO;
|
||||
import com.ycwl.basic.model.pc.source.req.SourceReqQuery;
|
||||
import com.ycwl.basic.model.pc.source.resp.SourceRespVO;
|
||||
@ -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;
|
||||
|
||||
@ -32,9 +34,9 @@ public class GoodsServiceImpl implements GoodsService {
|
||||
@Autowired
|
||||
private ScenicMapper scenicMapper;
|
||||
|
||||
public ApiResponse<List<GoodsVO>> goodsList(GoodsReqQuery query) {
|
||||
public ApiResponse<List<GoodsPageVO>> goodsList(GoodsReqQuery query) {
|
||||
//查询原素材
|
||||
List<GoodsVO> goodsList = new ArrayList<>();
|
||||
List<GoodsPageVO> goodsList = new ArrayList<>();
|
||||
|
||||
VideoReqQuery videoReqQuery = new VideoReqQuery();
|
||||
videoReqQuery.setScenicId(query.getScenicId());
|
||||
@ -43,16 +45,16 @@ public class GoodsServiceImpl implements GoodsService {
|
||||
//查询成片vlog
|
||||
List<VideoRespVO> videoList = videoMapper.list(videoReqQuery);
|
||||
videoList.forEach(videoRespVO -> {
|
||||
GoodsVO goodsVO = new GoodsVO();
|
||||
goodsVO.setGoodsName(videoRespVO.getTemplateName());
|
||||
goodsVO.setScenicId(videoRespVO.getScenicId());
|
||||
goodsVO.setScenicName(videoRespVO.getScenicName());
|
||||
goodsVO.setLongitude(videoRespVO.getLongitude());
|
||||
goodsVO.setLatitude(videoRespVO.getLatitude());
|
||||
goodsVO.setGoodsType(1);
|
||||
goodsVO.setGoodsId(videoRespVO.getId());
|
||||
goodsVO.setTemplateCoverUrl(videoRespVO.getTemplateCoverUrl());
|
||||
goodsList.add(goodsVO);
|
||||
GoodsPageVO goodsPageVO = new GoodsPageVO();
|
||||
goodsPageVO.setGoodsName(videoRespVO.getTemplateName());
|
||||
goodsPageVO.setScenicId(videoRespVO.getScenicId());
|
||||
goodsPageVO.setScenicName(videoRespVO.getScenicName());
|
||||
goodsPageVO.setLongitude(videoRespVO.getLongitude());
|
||||
goodsPageVO.setLatitude(videoRespVO.getLatitude());
|
||||
goodsPageVO.setGoodsType(1);
|
||||
goodsPageVO.setGoodsId(videoRespVO.getId());
|
||||
goodsPageVO.setTemplateCoverUrl(videoRespVO.getTemplateCoverUrl());
|
||||
goodsList.add(goodsPageVO);
|
||||
});
|
||||
|
||||
|
||||
@ -63,34 +65,69 @@ public class GoodsServiceImpl implements GoodsService {
|
||||
//查询源素材
|
||||
List<SourceRespVO> sourceList = sourceMapper.listGroupByType(sourceReqQuery);
|
||||
sourceList.forEach(sourceRespVO -> {
|
||||
GoodsVO goodsVO = new GoodsVO();
|
||||
GoodsPageVO goodsPageVO = new GoodsPageVO();
|
||||
Integer type = sourceRespVO.getType();
|
||||
if(type==1){
|
||||
goodsVO.setGoodsName("原片集");
|
||||
goodsPageVO.setGoodsName("原片集");
|
||||
}else {
|
||||
goodsVO.setGoodsName("照片集");
|
||||
goodsPageVO.setGoodsName("照片集");
|
||||
}
|
||||
goodsVO.setScenicId(sourceRespVO.getScenicId());
|
||||
goodsVO.setScenicName(sourceRespVO.getScenicName());
|
||||
goodsVO.setLongitude(sourceRespVO.getLongitude());
|
||||
goodsVO.setLatitude(sourceRespVO.getLatitude());
|
||||
goodsVO.setGoodsType(2);
|
||||
goodsVO.setSourceType(type);
|
||||
goodsList.add(goodsVO);
|
||||
goodsPageVO.setScenicId(sourceRespVO.getScenicId());
|
||||
goodsPageVO.setScenicName(sourceRespVO.getScenicName());
|
||||
goodsPageVO.setLongitude(sourceRespVO.getLongitude());
|
||||
goodsPageVO.setLatitude(sourceRespVO.getLatitude());
|
||||
goodsPageVO.setGoodsType(2);
|
||||
goodsPageVO.setSourceType(type);
|
||||
goodsList.add(goodsPageVO);
|
||||
});
|
||||
|
||||
return ApiResponse.success(goodsList);
|
||||
}
|
||||
|
||||
@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);
|
||||
}
|
||||
}
|
||||
|
@ -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,15 @@ 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);
|
||||
if (addOrderItems == NumberConstant.ZERO) {
|
||||
@ -105,21 +109,24 @@ public class OrderServiceImpl implements OrderService {
|
||||
return ApiResponse.fail("订单添加失败");
|
||||
}
|
||||
|
||||
/* 成片的时候子订单只会有一个,素材的时候 子订单多个且价格与子订单数量无关,只与子订单商品对应景区定义的价格相同*/
|
||||
GoodsPriceQueryReq goodsPriceQueryReq = new GoodsPriceQueryReq();
|
||||
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);
|
||||
}
|
||||
BigDecimal price = goodsService.queryPrice(goodsPriceQueryReq.setGoodsId(goodsId)
|
||||
.setGoodsType(goodsType)).getData();
|
||||
|
||||
/* 成片的时候子订单只会有一个,素材的时候 子订单多个且价格与子订单数量无关,只与子订单商品对应景区定义的价格相同*/
|
||||
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();
|
||||
|
@ -1,8 +1,9 @@
|
||||
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.GoodsVO;
|
||||
import com.ycwl.basic.model.mobile.goods.GoodsPageVO;
|
||||
import com.ycwl.basic.model.pc.source.resp.SourceRespVO;
|
||||
import com.ycwl.basic.utils.ApiResponse;
|
||||
|
||||
@ -20,14 +21,14 @@ public interface GoodsService {
|
||||
* @param query 查询条件
|
||||
* @return
|
||||
*/
|
||||
ApiResponse<List<GoodsVO>> goodsList(GoodsReqQuery query);
|
||||
ApiResponse<List<GoodsPageVO>> goodsList(GoodsReqQuery query);
|
||||
|
||||
/**
|
||||
* 查询源素材商品列表
|
||||
* @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 商品(vlog)id
|
||||
* @return
|
||||
*/
|
||||
ApiResponse<GoodsDetailVO> videoGoodsDetail(Long goodsId);
|
||||
}
|
||||
|
Reference in New Issue
Block a user