订单改改改

This commit is contained in:
Jerry Yan 2025-01-05 16:18:35 +08:00
parent 3b65094c2d
commit 294f9b6690
11 changed files with 147 additions and 135 deletions

View File

@ -30,14 +30,14 @@ public class OrderBiz {
public PriceObj queryPrice(int goodsType, Long goodsId) { public PriceObj queryPrice(int goodsType, Long goodsId) {
PriceObj priceObj = new PriceObj(); PriceObj priceObj = new PriceObj();
priceObj.setGoodsType(goodsType);
priceObj.setGoodsId(goodsId);
switch (goodsType) { switch (goodsType) {
case 0: // video case 0: // video
VideoRespVO video = videoMapper.getById(goodsId); VideoRespVO video = videoMapper.getById(goodsId);
if (video == null) { if (video == null) {
return null; return null;
} }
priceObj.setGoodsId(goodsId);
priceObj.setGoodsType(goodsType);
TemplateRespVO template = templateRepository.getTemplate(video.getTemplateId()); TemplateRespVO template = templateRepository.getTemplate(video.getTemplateId());
if (template == null) { if (template == null) {
return priceObj; return priceObj;
@ -85,6 +85,8 @@ public class OrderBiz {
if (priceObj == null) { if (priceObj == null) {
return respVO; return respVO;
} }
respVO.setGoodsType(goodsType);
respVO.setGoodsId(goodsId);
respVO.setPrice(priceObj.getPrice()); respVO.setPrice(priceObj.getPrice());
respVO.setSlashPrice(priceObj.getSlashPrice()); respVO.setSlashPrice(priceObj.getSlashPrice());
} }

View File

@ -3,10 +3,12 @@ package com.ycwl.basic.controller.mobile;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.ycwl.basic.biz.OrderBiz; import com.ycwl.basic.biz.OrderBiz;
import com.ycwl.basic.constant.BaseContextHandler; import com.ycwl.basic.constant.BaseContextHandler;
import com.ycwl.basic.model.jwt.JwtInfo;
import com.ycwl.basic.model.mobile.goods.GoodsPriceQueryReq; import com.ycwl.basic.model.mobile.goods.GoodsPriceQueryReq;
import com.ycwl.basic.model.mobile.order.IsBuyRespVO; import com.ycwl.basic.model.mobile.order.IsBuyRespVO;
import com.ycwl.basic.model.mobile.order.OrderAppPageReq; import com.ycwl.basic.model.mobile.order.OrderAppPageReq;
import com.ycwl.basic.model.mobile.order.RefundOrderReq; import com.ycwl.basic.model.mobile.order.RefundOrderReq;
import com.ycwl.basic.model.pc.order.req.CreateOrderReqVO;
import com.ycwl.basic.model.pc.order.req.OrderAddReq; import com.ycwl.basic.model.pc.order.req.OrderAddReq;
import com.ycwl.basic.model.pc.order.resp.OrderAppRespVO; import com.ycwl.basic.model.pc.order.resp.OrderAppRespVO;
import com.ycwl.basic.model.wx.WxPayRespVO; import com.ycwl.basic.model.wx.WxPayRespVO;
@ -14,6 +16,7 @@ import com.ycwl.basic.repository.OrderRepository;
import com.ycwl.basic.service.mobile.GoodsService; import com.ycwl.basic.service.mobile.GoodsService;
import com.ycwl.basic.service.pc.OrderService; import com.ycwl.basic.service.pc.OrderService;
import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.ApiResponse;
import com.ycwl.basic.utils.JwtTokenUtil;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -51,8 +54,9 @@ public class AppOrderController {
@ApiOperation("用户端订单新增") @ApiOperation("用户端订单新增")
@PostMapping("/addOrder") @PostMapping("/addOrder")
public ApiResponse<WxPayRespVO> addOrder(@RequestBody OrderAddReq orderAddReq) throws Exception { public ApiResponse<WxPayRespVO> addOrder(@RequestBody CreateOrderReqVO orderAddReq) throws Exception {
return orderService.add(orderAddReq); JwtInfo worker = JwtTokenUtil.getWorker();
return orderService.createOrder(worker.getUserId(), orderAddReq);
} }

View File

@ -21,7 +21,7 @@ import java.util.List;
public interface OrderMapper { public interface OrderMapper {
List<OrderRespVO> list(OrderReqQuery orderReqQuery); List<OrderRespVO> list(OrderReqQuery orderReqQuery);
OrderRespVO getById(Long id); OrderRespVO getById(Long id);
int add(OrderAddReq order); int add(OrderEntity order);
// int deleteById(Long id); // int deleteById(Long id);
int update(OrderUpdateReq order); int update(OrderUpdateReq order);

View File

@ -16,6 +16,7 @@ import java.util.Date;
public class OrderEntity { public class OrderEntity {
@TableId @TableId
private Long id; private Long id;
private Long scenicId;
/** /**
* 用户id * 用户id
*/ */

View File

@ -0,0 +1,12 @@
package com.ycwl.basic.model.pc.order.req;
import lombok.Data;
@Data
public class CreateOrderReqVO {
private Long scenicId;
private Integer goodsType;
private Long goodsId;
private String brokerCode;
private Long couponId;
}

View File

@ -18,6 +18,7 @@ import java.io.Serializable;
public class WxPayRespVO implements Serializable { public class WxPayRespVO implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private boolean needPay = true;
/** /**
* 预支付交易会话标识小程序下单接口返回的prepay_id参数值 * 预支付交易会话标识小程序下单接口返回的prepay_id参数值
*/ */

View File

@ -6,7 +6,6 @@ import com.aliyuncs.utils.StringUtils;
import com.wechat.pay.java.core.Config; import com.wechat.pay.java.core.Config;
import com.wechat.pay.java.core.RSAAutoCertificateConfig; import com.wechat.pay.java.core.RSAAutoCertificateConfig;
import com.wechat.pay.java.core.exception.ServiceException; import com.wechat.pay.java.core.exception.ServiceException;
import com.wechat.pay.java.core.http.HttpMethod;
import com.wechat.pay.java.core.notification.NotificationConfig; import com.wechat.pay.java.core.notification.NotificationConfig;
import com.wechat.pay.java.core.notification.NotificationParser; import com.wechat.pay.java.core.notification.NotificationParser;
import com.wechat.pay.java.core.notification.RequestParam; import com.wechat.pay.java.core.notification.RequestParam;
@ -46,7 +45,6 @@ import com.ycwl.basic.service.HttpService;
import com.ycwl.basic.service.mobile.WxPayService; import com.ycwl.basic.service.mobile.WxPayService;
import com.ycwl.basic.service.pc.OrderService; import com.ycwl.basic.service.pc.OrderService;
import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.ApiResponse;
import com.ycwl.basic.utils.DateUtils;
import com.ycwl.basic.utils.SnowFlakeUtil; import com.ycwl.basic.utils.SnowFlakeUtil;
import com.ycwl.basic.utils.WXPayUtil; import com.ycwl.basic.utils.WXPayUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -204,42 +202,7 @@ public class WxPayServiceImpl implements WxPayService {
} }
if (Objects.nonNull(OrderStateEnum)) { if (Objects.nonNull(OrderStateEnum)) {
long orderId = Long.parseLong(parse.getOutTradeNo()); long orderId = Long.parseLong(parse.getOutTradeNo());
try { notifyOrderSuccess(orderId);
orderService.updateOrderState(orderId, OrderStateEnum, null);
// 添加统计数据
statisticsHandler(orderId);
}catch (Exception e) {
log.error("[微信支付回调]更新订单状态失败", e);
}
OrderRespVO byId = orderMapper.getById(orderId);
List<OrderItemEntity> orderItemList = orderMapper.listOrderItemByOrderId(orderId);
orderItemList.forEach(orderItemVO -> {
orderRepository.clearUserBuyItemCache(byId.getMemberId(), orderItemVO.getGoodsType(), orderItemVO.getGoodsId());
switch (orderItemVO.getGoodsType()) {
case 0: // 成片
MemberVideoEntity memberVideoEntity = new MemberVideoEntity();
memberVideoEntity.setMemberId(byId.getMemberId());
memberVideoEntity.setVideoId(orderItemVO.getGoodsId());
memberVideoEntity.setIsBuy(1);
memberVideoEntity.setOrderId(orderId);
videoMapper.updateRelation(memberVideoEntity);
break;
case 1: // 源视频
case 2: // 源素材
MemberSourceEntity memberSourceEntity = new MemberSourceEntity();
memberSourceEntity.setMemberId(byId.getMemberId());
// 源素材的goodsId是人脸ID
memberSourceEntity.setFaceId(orderItemVO.getGoodsId());
memberSourceEntity.setType(orderItemVO.getGoodsType());
memberSourceEntity.setIsBuy(1);
memberSourceEntity.setOrderId(orderId);
sourceMapper.updateRelation(memberSourceEntity);
break;
default:
break;
}
});
} }
}).start(); }).start();
} catch (Exception e) { } catch (Exception e) {
@ -247,6 +210,45 @@ public class WxPayServiceImpl implements WxPayService {
} }
} }
@Override
public void notifyOrderSuccess(Long orderId) {
try {
orderService.updateOrderState(orderId, OrderStateEnum.PAID, null);
// 添加统计数据
statisticsHandler(orderId);
}catch (Exception e) {
log.error("[微信支付回调]更新订单状态失败", e);
}
OrderRespVO byId = orderMapper.getById(orderId);
List<OrderItemEntity> orderItemList = orderMapper.listOrderItemByOrderId(orderId);
orderItemList.forEach(orderItemVO -> {
orderRepository.clearUserBuyItemCache(byId.getMemberId(), orderItemVO.getGoodsType(), orderItemVO.getGoodsId());
switch (orderItemVO.getGoodsType()) {
case 0: // 成片
MemberVideoEntity memberVideoEntity = new MemberVideoEntity();
memberVideoEntity.setMemberId(byId.getMemberId());
memberVideoEntity.setVideoId(orderItemVO.getGoodsId());
memberVideoEntity.setIsBuy(1);
memberVideoEntity.setOrderId(orderId);
videoMapper.updateRelation(memberVideoEntity);
break;
case 1: // 源视频
case 2: // 源素材
MemberSourceEntity memberSourceEntity = new MemberSourceEntity();
memberSourceEntity.setMemberId(byId.getMemberId());
// 源素材的goodsId是人脸ID
memberSourceEntity.setFaceId(orderItemVO.getGoodsId());
memberSourceEntity.setType(orderItemVO.getGoodsType());
memberSourceEntity.setIsBuy(1);
memberSourceEntity.setOrderId(orderId);
sourceMapper.updateRelation(memberSourceEntity);
break;
default:
break;
}
});
}
// //
private void statisticsHandler(Long orderId) { private void statisticsHandler(Long orderId) {
ApiResponse<OrderRespVO> orderDetail = orderService.detail(orderId); ApiResponse<OrderRespVO> orderDetail = orderService.detail(orderId);

View File

@ -2,6 +2,7 @@ package com.ycwl.basic.service.impl.pc;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.ycwl.basic.biz.OrderBiz;
import com.ycwl.basic.constant.BaseContextHandler; import com.ycwl.basic.constant.BaseContextHandler;
import com.ycwl.basic.constant.NumberConstant; import com.ycwl.basic.constant.NumberConstant;
import com.ycwl.basic.enums.*; import com.ycwl.basic.enums.*;
@ -11,11 +12,13 @@ import com.ycwl.basic.model.jwt.JwtInfo;
import com.ycwl.basic.model.mobile.goods.GoodsDetailVO; import com.ycwl.basic.model.mobile.goods.GoodsDetailVO;
import com.ycwl.basic.model.mobile.goods.GoodsPriceQueryReq; import com.ycwl.basic.model.mobile.goods.GoodsPriceQueryReq;
import com.ycwl.basic.model.mobile.order.OrderAppPageReq; import com.ycwl.basic.model.mobile.order.OrderAppPageReq;
import com.ycwl.basic.model.mobile.order.PriceObj;
import com.ycwl.basic.model.mobile.order.RefundOrderReq; import com.ycwl.basic.model.mobile.order.RefundOrderReq;
import com.ycwl.basic.model.mobile.statistic.req.StatisticsRecordAddReq; import com.ycwl.basic.model.mobile.statistic.req.StatisticsRecordAddReq;
import com.ycwl.basic.model.pc.member.resp.MemberRespVO; import com.ycwl.basic.model.pc.member.resp.MemberRespVO;
import com.ycwl.basic.model.pc.order.entity.OrderEntity; import com.ycwl.basic.model.pc.order.entity.OrderEntity;
import com.ycwl.basic.model.pc.order.entity.OrderItemEntity; import com.ycwl.basic.model.pc.order.entity.OrderItemEntity;
import com.ycwl.basic.model.pc.order.req.CreateOrderReqVO;
import com.ycwl.basic.model.pc.order.req.OrderUpdateReq; import com.ycwl.basic.model.pc.order.req.OrderUpdateReq;
import com.ycwl.basic.model.pc.order.req.OrderAddReq; import com.ycwl.basic.model.pc.order.req.OrderAddReq;
import com.ycwl.basic.model.pc.order.req.OrderReqQuery; import com.ycwl.basic.model.pc.order.req.OrderReqQuery;
@ -70,6 +73,8 @@ public class OrderServiceImpl implements OrderService {
private OrderOperationMapper orderOperationMapper; private OrderOperationMapper orderOperationMapper;
@Autowired @Autowired
private StatisticsMapper statisticsMapper; private StatisticsMapper statisticsMapper;
@Autowired
private OrderBiz orderBiz;
@Override @Override
public ApiResponse<PageInfo<OrderRespVO>> pageQuery(OrderReqQuery query) { public ApiResponse<PageInfo<OrderRespVO>> pageQuery(OrderReqQuery query) {
@ -89,92 +94,39 @@ public class OrderServiceImpl implements OrderService {
return ApiResponse.success(orderMapper.getById(orderId)); return ApiResponse.success(orderMapper.getById(orderId));
} }
@Override
@Transactional(rollbackFor = Exception.class)
public ApiResponse<WxPayRespVO> add(OrderAddReq order) throws Exception {
Long orderId = SnowFlakeUtil.getLongId();
order.setId(orderId);
JwtInfo worker = JwtTokenUtil.getWorker();
Long userId = worker.getUserId();
MemberRespVO memberRespVO = memberMapper.getById(userId);
order.setMemberId(userId);
order.setOpenid(memberRespVO.getOpenId());
/* 成片的时候子订单只会有一个,素材的时候 子订单多个且价格与子订单数量无关,只与子订单商品对应景区定义的价格相同*/
List<GoodsDetailVO> goodsItemList = order.getGoodsItemList();
GoodsDetailVO goodsDetailVO = goodsItemList.get(NumberConstant.ZERO);
if (order.getGoodsType() == null) {
order.setGoodsType(goodsDetailVO.getGoodsType());
}
GoodsPriceQueryReq goodsPriceQueryReq = new GoodsPriceQueryReq();
goodsPriceQueryReq.setGoodsId(goodsDetailVO.getGoodsId());
goodsPriceQueryReq.setGoodsType(order.getGoodsType());
goodsPriceQueryReq.setScenicId(order.getScenicId());
BigDecimal price = goodsService.queryPrice(goodsPriceQueryReq).getData();
order.setPrice(price);
order.setPayPrice(price);
int add = orderMapper.add(order);
if (add == NumberConstant.ZERO) {
return ApiResponse.fail("订单添加失败");
} else {
Integer goodsType = order.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(goodsType);
orderItemEntity.setGoodsId(goodsId);
orderItems.add(orderItemEntity);
});
int addOrderItems = orderMapper.addOrderItems(orderItems);
if (addOrderItems == NumberConstant.ZERO) {
log.error("订单明细添加失败");
return ApiResponse.fail("订单添加失败");
}
//点击支付按钮统计
OrderRespVO orderRespVO = orderMapper.getById(orderId);
StatisticsRecordAddReq statisticsRecordAddReq = new StatisticsRecordAddReq();
statisticsRecordAddReq.setMemberId(orderRespVO.getMemberId());
statisticsRecordAddReq.setType(StatisticEnum.CLICK_ON_PAYMENT.code);
statisticsRecordAddReq.setScenicId(orderRespVO.getScenicId());
statisticsRecordAddReq.setMorphId(orderId);
statisticsMapper.addStatisticsRecord(statisticsRecordAddReq);
WxPayRespVO wxPayRespVO = initiatePayment(order, goodsDetailVO);
return ApiResponse.success(wxPayRespVO);
}
}
/** /**
* 发起支付 * 发起支付
* @param order 订单 * @param order 订单
* @param goodsDetailVO 商品详情 * @param orderItems 商品详情
* @return 支付请求结果 * @return 支付请求结果
*/ */
private WxPayRespVO initiatePayment(OrderAddReq order,GoodsDetailVO goodsDetailVO) throws Exception { private WxPayRespVO initiatePayment(OrderEntity order, List<OrderItemEntity> orderItems) throws Exception {
WXPayOrderReqVO wxPayOrderReqVO = new WXPayOrderReqVO(); WXPayOrderReqVO wxPayOrderReqVO = new WXPayOrderReqVO();
Integer goodsType = order.getGoodsType();
String goodsName = null; String goodsName = null;
if (goodsType == NumberConstant.ONE) { if (orderItems.size() > 1) {
goodsName = goodsDetailVO.getGoodsName(); goodsName = "多项景区VLOG商品";
} else if (goodsType == NumberConstant.TWO) { } else {
Integer sourceType = goodsDetailVO.getSourceType(); int type = orderItems.get(NumberConstant.ZERO).getGoodsType();
goodsName = SourceTypeNameEnum.getRemark(sourceType); if (type == NumberConstant.ZERO) {
goodsName = "景区VLog视频";
} else if (type == NumberConstant.ONE) {
goodsName = "景区原片包";
} else if (type == NumberConstant.TWO) {
goodsName = "景区照片包";
}
} }
if (order.getPayPrice().equals(BigDecimal.ZERO)) {
wxPayOrderReqVO.setOpenId(order.getOpenid()) // 0元支付
WxPayRespVO wxPayRespVO = new WxPayRespVO();
wxPayRespVO.setNeedPay(false);
return wxPayRespVO;
}
wxPayOrderReqVO.setOpenId(order.getOpenId())
.setMemberId(order.getMemberId()) .setMemberId(order.getMemberId())
.setOrderSn(order.getId()) .setOrderSn(order.getId())
.setTotalPrice(BigDecimalUtil.convertToCents(order.getPrice())) .setTotalPrice(BigDecimalUtil.convertToCents(order.getPrice()))
.setGoodsName(goodsName) .setGoodsName(goodsName)
.setDescription("VLOG视频支付"); .setDescription(goodsName);
return wxPayService.createOrder(wxPayOrderReqVO); return wxPayService.createOrder(wxPayOrderReqVO);
} }
@ -319,4 +271,46 @@ public class OrderServiceImpl implements OrderService {
return ApiResponse.success(pageInfo); return ApiResponse.success(pageInfo);
} }
@Override
@Transactional(rollbackFor = Exception.class)
public ApiResponse<WxPayRespVO> createOrder(Long userId, CreateOrderReqVO createOrderReqVO) throws Exception {
OrderEntity order = new OrderEntity();
Long orderId = SnowFlakeUtil.getLongId();
order.setId(orderId);
order.setMemberId(userId);
MemberRespVO member = memberMapper.getById(userId);
order.setOpenId(member.getOpenId());
order.setScenicId(createOrderReqVO.getScenicId());
List<OrderItemEntity> orderItems = new ArrayList<>();
OrderItemEntity orderItem = new OrderItemEntity();
orderItem.setGoodsId(createOrderReqVO.getGoodsId());
orderItem.setGoodsType(createOrderReqVO.getGoodsType());
orderItem.setOrderId(orderId);
orderItems.add(orderItem);
PriceObj priceObj = orderBiz.queryPrice(createOrderReqVO.getGoodsType(), createOrderReqVO.getGoodsId());
order.setPrice(priceObj.getPrice());
// promo code
// coupon
order.setPayPrice(priceObj.getPrice());
order.setStatus(OrderStateEnum.UNPAID.getState());
orderMapper.add(order);
int addOrderItems = orderMapper.addOrderItems(orderItems);
if (addOrderItems == NumberConstant.ZERO) {
log.error("订单明细添加失败");
return ApiResponse.fail("订单添加失败");
}
//点击支付按钮统计
OrderRespVO orderRespVO = orderMapper.getById(orderId);
StatisticsRecordAddReq statisticsRecordAddReq = new StatisticsRecordAddReq();
statisticsRecordAddReq.setMemberId(orderRespVO.getMemberId());
statisticsRecordAddReq.setType(StatisticEnum.CLICK_ON_PAYMENT.code);
statisticsRecordAddReq.setScenicId(orderRespVO.getScenicId());
statisticsRecordAddReq.setMorphId(orderId);
statisticsMapper.addStatisticsRecord(statisticsRecordAddReq);
WxPayRespVO wxPayRespVO = initiatePayment(order, orderItems);
return ApiResponse.success(wxPayRespVO);
}
} }

View File

@ -20,6 +20,8 @@ public interface WxPayService {
*/ */
void payNotify(HttpServletRequest xml); void payNotify(HttpServletRequest xml);
void notifyOrderSuccess(Long orderId);
/** /**
* 微信支付结果查询 * 微信支付结果查询
*/ */

View File

@ -5,6 +5,7 @@ import com.ycwl.basic.enums.OrderStateEnum;
import com.ycwl.basic.model.mobile.order.OrderAppPageReq; import com.ycwl.basic.model.mobile.order.OrderAppPageReq;
import com.ycwl.basic.model.mobile.order.RefundOrderReq; import com.ycwl.basic.model.mobile.order.RefundOrderReq;
import com.ycwl.basic.model.pc.order.entity.OrderEntity; import com.ycwl.basic.model.pc.order.entity.OrderEntity;
import com.ycwl.basic.model.pc.order.req.CreateOrderReqVO;
import com.ycwl.basic.model.pc.order.req.OrderUpdateReq; import com.ycwl.basic.model.pc.order.req.OrderUpdateReq;
import com.ycwl.basic.model.pc.order.req.OrderAddReq; import com.ycwl.basic.model.pc.order.req.OrderAddReq;
import com.ycwl.basic.model.pc.order.req.OrderReqQuery; import com.ycwl.basic.model.pc.order.req.OrderReqQuery;
@ -26,7 +27,7 @@ public interface OrderService {
ApiResponse<OrderRespVO> detail(Long orderId); ApiResponse<OrderRespVO> detail(Long orderId);
ApiResponse<WxPayRespVO> add(OrderAddReq query) throws Exception; // ApiResponse<WxPayRespVO> add(OrderAddReq query) throws Exception;
ApiResponse<Integer> update(OrderUpdateReq query); ApiResponse<Integer> update(OrderUpdateReq query);
@ -59,4 +60,6 @@ public interface OrderService {
void remarkOrder(Long orderId, OrderEntity query); void remarkOrder(Long orderId, OrderEntity query);
ApiResponse<PageInfo<OrderRespVO>> refundPageQuery(OrderReqQuery query); ApiResponse<PageInfo<OrderRespVO>> refundPageQuery(OrderReqQuery query);
ApiResponse<WxPayRespVO> createOrder(Long userId, CreateOrderReqVO orderAddReq) throws Exception;
} }

View File

@ -14,7 +14,6 @@
<result column="remark" property="remark"/> <result column="remark" property="remark"/>
<result column="broker_id" property="brokerId"/> <result column="broker_id" property="brokerId"/>
<result column="promo_code" property="promoCode"/> <result column="promo_code" property="promoCode"/>
<result column="goods_type" property="goodsType"/>
<result column="refund_reason" property="refundReason"/> <result column="refund_reason" property="refundReason"/>
<result column="refund_status" property="refundStatus"/> <result column="refund_status" property="refundStatus"/>
<result column="status" property="status"/> <result column="status" property="status"/>
@ -40,7 +39,6 @@
<result column="price" property="price"/> <result column="price" property="price"/>
<result column="pay_price" property="payPrice"/> <result column="pay_price" property="payPrice"/>
<result column="remark" property="remark"/> <result column="remark" property="remark"/>
<result column="goods_type" property="goodsType"/>
<result column="refund_reason" property="refundReason"/> <result column="refund_reason" property="refundReason"/>
<result column="refund_status" property="refundStatus"/> <result column="refund_status" property="refundStatus"/>
<result column="status" property="status"/> <result column="status" property="status"/>
@ -113,13 +111,13 @@
</select> </select>
<insert id="add"> <insert id="add">
insert into `order`(id, member_id, openid,price, pay_price, remark, broker_id, promo_code,goods_type,scenic_id) insert into `order`(id, member_id, openid, price, pay_price, remark, broker_id, promo_code, scenic_id)
VALUES (#{id}, #{memberId}, #{openid},#{price}, #{payPrice}, #{remark}, #{brokerId}, #{promoCode},#{goodsType},#{scenicId}) VALUES (#{id}, #{memberId}, #{openId}, #{price}, #{payPrice}, #{remark}, #{brokerId}, #{promoCode}, #{scenicId})
</insert> </insert>
<insert id="addOrderItems"> <insert id="addOrderItems">
insert into order_item(id, order_id,goods_type, goods_id) VALUES insert into order_item(order_id,goods_type, goods_id) VALUES
<foreach collection="orderItems" item="item" index="index" separator=","> <foreach collection="orderItems" item="item" index="index" separator=",">
(#{item.id}, #{item.orderId}, #{item.goodsType},#{item.goodsId}) (#{item.orderId}, #{item.goodsType},#{item.goodsId})
</foreach> </foreach>
</insert> </insert>
<update id="update"> <update id="update">
@ -160,13 +158,11 @@
</delete> </delete>
<select id="list" resultMap="PCBaseResultMap"> <select id="list" resultMap="PCBaseResultMap">
select distinct o.id, o.scenic_id, s.name as scenic_name, o.member_id,m.nickname ,m.real_name , o.openid, o.price, pay_price, remark, o.broker_id, o.promo_code, select distinct o.id, o.scenic_id, s.name as scenic_name, o.member_id,m.nickname ,m.real_name , o.openid, o.price, pay_price, remark, o.broker_id, o.promo_code,
refund_reason, refund_status, o.`status`, refund_at, pay_at, cancel_at,oi.id oiId, o.goods_type, oi.goods_id, o.create_at refund_reason, refund_status, o.`status`, refund_at, pay_at, cancel_at,oi.id oiId, oi.goods_id, o.create_at
from `order` AS o from `order` AS o
left join member m on o.member_id = m.id left join member m on o.member_id = m.id
left join scenic s on o.scenic_id = s.id left join scenic s on o.scenic_id = s.id
left join order_item oi on o.id = oi.order_id left join order_item oi on o.id = oi.order_id
left join source sr on o.goods_type='2' and oi.goods_id = sr.id
left join video vd on o.goods_type='1' and oi.goods_id = vd.id
<where> <where>
<if test="id!= null "> <if test="id!= null ">
and o.id = #{id} and o.id = #{id}
@ -247,7 +243,7 @@
</select> </select>
<select id="appList" resultMap="AppBaseResultMap"> <select id="appList" resultMap="AppBaseResultMap">
select DISTINCT o.id, o.member_id,o.openid, o.price, pay_price, remark, o.broker_id, o.promo_code, select DISTINCT o.id, o.member_id,o.openid, o.price, pay_price, remark, o.broker_id, o.promo_code,
refund_reason, refund_status, o.`status`, o.create_at, refund_at, pay_at, cancel_at, o.goods_type, refund_reason, refund_status, o.`status`, o.create_at, refund_at, pay_at, cancel_at,
sc.name scenicName sc.name scenicName
from `order` AS o from `order` AS o
left join scenic sc on o.scenic_id = sc.id left join scenic sc on o.scenic_id = sc.id
@ -255,15 +251,12 @@
<if test="memberId!=null"> <if test="memberId!=null">
and o.member_id=#{memberId} and o.member_id=#{memberId}
</if> </if>
<if test="type!= null ">
and o.goods_type = #{type}
</if>
</where> </where>
order by o.create_at desc order by o.create_at desc
</select> </select>
<select id="appDetail" resultMap="AppBaseResultMap"> <select id="appDetail" resultMap="AppBaseResultMap">
select distinct o.id, o.member_id,o.openid, o.price, pay_price, remark, o.broker_id, o.promo_code, select distinct o.id, o.member_id,o.openid, o.price, pay_price, remark, o.broker_id, o.promo_code,
refund_reason, refund_status, o.`status`, o.create_at, refund_at, pay_at, cancel_at, o.goods_type, refund_reason, refund_status, o.`status`, o.create_at, refund_at, pay_at, cancel_at,
o.scenic_id, sc.name scenicName o.scenic_id, sc.name scenicName
from `order` AS o from `order` AS o
left join member m on o.member_id = m.id left join member m on o.member_id = m.id
@ -272,13 +265,11 @@
</select> </select>
<select id="refundList" resultType="com.ycwl.basic.model.pc.order.resp.OrderRespVO"> <select id="refundList" resultType="com.ycwl.basic.model.pc.order.resp.OrderRespVO">
select distinct o.id, o.scenic_id, s.name as scenic_name, o.member_id,m.nickname ,m.real_name , o.openid, o.price, pay_price, remark, o.broker_id, o.promo_code, select distinct o.id, o.scenic_id, s.name as scenic_name, o.member_id,m.nickname ,m.real_name , o.openid, o.price, pay_price, remark, o.broker_id, o.promo_code,
refund_reason, refund_status, o.`status`, refund_at, pay_at, cancel_at,oi.id oiId, o.goods_type, oi.goods_id, o.create_at refund_reason, refund_status, o.`status`, refund_at, pay_at, cancel_at,oi.id oiId, oi.goods_id, o.create_at
from `order` AS o from `order` AS o
left join member m on o.member_id = m.id left join member m on o.member_id = m.id
left join scenic s on o.scenic_id = s.id left join scenic s on o.scenic_id = s.id
left join order_item oi on o.id = oi.order_id left join order_item oi on o.id = oi.order_id
left join source sr on o.goods_type='2' and oi.goods_id = sr.id
left join video vd on o.goods_type='1' and oi.goods_id = vd.id
<where> <where>
o.refund_status != 0 o.refund_status != 0
<if test="id!= null "> <if test="id!= null ">