diff --git a/src/main/java/com/ycwl/basic/mapper/PaymentMapper.java b/src/main/java/com/ycwl/basic/mapper/PaymentMapper.java new file mode 100644 index 0000000..6c1f43d --- /dev/null +++ b/src/main/java/com/ycwl/basic/mapper/PaymentMapper.java @@ -0,0 +1,14 @@ +package com.ycwl.basic.mapper; + +import com.ycwl.basic.model.pc.payment.entity.PaymentEntity; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +@Mapper +public interface PaymentMapper { + Long addGetId(PaymentEntity entity); + PaymentEntity findByOutTradeNo(@Param("outTradeNo") String outTradeNo); + int update(PaymentEntity entity); + int setOutTradeNo(@Param("id") Long id, @Param("outTradeNo") String outTradeNo); + int setPaid(Long paymentId); +} diff --git a/src/main/java/com/ycwl/basic/mapper/RefundMapper.java b/src/main/java/com/ycwl/basic/mapper/RefundMapper.java new file mode 100644 index 0000000..88ddd6b --- /dev/null +++ b/src/main/java/com/ycwl/basic/mapper/RefundMapper.java @@ -0,0 +1,14 @@ +package com.ycwl.basic.mapper; + +import com.ycwl.basic.model.pc.refund.entity.RefundEntity; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +@Mapper +public interface RefundMapper { + Long addGetId(RefundEntity entity); + RefundEntity findByOutRefundNo(String outRefundNo); + int update(RefundEntity entity); + int setRefundNo(@Param("id") Long id, @Param("outRefundNo") String outRefundNo); + int setRefunded(Long id); +} diff --git a/src/main/java/com/ycwl/basic/model/pc/order/resp/OrderItemVO.java b/src/main/java/com/ycwl/basic/model/pc/order/resp/OrderItemVO.java index 84027fd..5b8435c 100644 --- a/src/main/java/com/ycwl/basic/model/pc/order/resp/OrderItemVO.java +++ b/src/main/java/com/ycwl/basic/model/pc/order/resp/OrderItemVO.java @@ -29,6 +29,7 @@ public class OrderItemVO { */ @ApiModelProperty("商品ID,goods_type=1关联video.id,=2关联source.id") private Long goodsId; + private Long faceId; @ApiModelProperty("景区名称") private String scenicName; @ApiModelProperty("商品名称 模版名称/原片x个/照片x个") diff --git a/src/main/java/com/ycwl/basic/model/pc/payment/entity/PaymentEntity.java b/src/main/java/com/ycwl/basic/model/pc/payment/entity/PaymentEntity.java new file mode 100644 index 0000000..f20782d --- /dev/null +++ b/src/main/java/com/ycwl/basic/model/pc/payment/entity/PaymentEntity.java @@ -0,0 +1,19 @@ +package com.ycwl.basic.model.pc.payment.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +@TableName("payment") +@Data +public class PaymentEntity { + private Long id; + private Long memberId; + private Long orderId; + private String outOrderNo; + private BigDecimal payPrice; + private Date createTime; + private Date payTime; +} diff --git a/src/main/java/com/ycwl/basic/model/pc/refund/entity/RefundEntity.java b/src/main/java/com/ycwl/basic/model/pc/refund/entity/RefundEntity.java new file mode 100644 index 0000000..37ac487 --- /dev/null +++ b/src/main/java/com/ycwl/basic/model/pc/refund/entity/RefundEntity.java @@ -0,0 +1,20 @@ +package com.ycwl.basic.model.pc.refund.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +@TableName("refund") +@Data +public class RefundEntity { + private Long id; + private Long memberId; + private Long orderId; + private String outRefundNo; + private BigDecimal refundPrice; + private String reason; + private Date createTime; + private Date acceptTime; +} diff --git a/src/main/java/com/ycwl/basic/model/wx/WXPayOrderReqVO.java b/src/main/java/com/ycwl/basic/model/wx/WXPayOrderReqVO.java index a45262a..97f472a 100644 --- a/src/main/java/com/ycwl/basic/model/wx/WXPayOrderReqVO.java +++ b/src/main/java/com/ycwl/basic/model/wx/WXPayOrderReqVO.java @@ -28,4 +28,6 @@ public class WXPayOrderReqVO { private Long orderSn; private String description; + + private Long memberId; } diff --git a/src/main/java/com/ycwl/basic/service/impl/mobile/WxPayServiceImpl.java b/src/main/java/com/ycwl/basic/service/impl/mobile/WxPayServiceImpl.java index c8bc1a6..6b56557 100644 --- a/src/main/java/com/ycwl/basic/service/impl/mobile/WxPayServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/impl/mobile/WxPayServiceImpl.java @@ -27,9 +27,11 @@ import com.ycwl.basic.enums.BizCodeEnum; import com.ycwl.basic.enums.OrderStateEnum; import com.ycwl.basic.enums.StatisticEnum; import com.ycwl.basic.exception.AppException; +import com.ycwl.basic.mapper.PaymentMapper; import com.ycwl.basic.mapper.StatisticsMapper; import com.ycwl.basic.model.mobile.statistic.req.StatisticsRecordAddReq; import com.ycwl.basic.model.pc.order.resp.OrderRespVO; +import com.ycwl.basic.model.pc.payment.entity.PaymentEntity; import com.ycwl.basic.model.wx.WXPayOrderReqVO; import com.ycwl.basic.model.wx.WxPayRespVO; import com.ycwl.basic.model.wx.WxchatCallbackSuccessData; @@ -55,6 +57,7 @@ import java.io.IOException; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.math.BigDecimal; +import java.math.BigInteger; import java.nio.charset.StandardCharsets; import java.security.*; import java.util.*; @@ -82,10 +85,17 @@ public class WxPayServiceImpl implements WxPayService { @Autowired private OrderService orderService; @Autowired + private PaymentMapper paymentMapper; + @Autowired private StatisticsMapper statisticsMapper; @Override public WxPayRespVO createOrder(WXPayOrderReqVO req) { + PaymentEntity entity = new PaymentEntity(); + entity.setOrderId(req.getOrderSn()); + entity.setMemberId(req.getMemberId()); + entity.setPayPrice(new BigDecimal(BigInteger.valueOf(req.getTotalPrice()), 2)); + Long entityId = paymentMapper.addGetId(entity); try { // 使用自动更新平台证书的RSA配置 Config config = getInstance(wechatConfig); @@ -95,7 +105,7 @@ public class WxPayServiceImpl implements WxPayService { // request.setXxx(val)设置所需参数,具体参数可见Request定义 PrepayRequest request = new PrepayRequest(); Amount amount = new Amount(); - amount.setTotal(1); + amount.setTotal(req.getTotalPrice()); request.setAmount(amount); request.setAppid(wechatConfig.getMiniProgramAppId()); request.setMchid(wechatConfig.getMchId()); diff --git a/src/main/java/com/ycwl/basic/service/impl/pc/OrderServiceImpl.java b/src/main/java/com/ycwl/basic/service/impl/pc/OrderServiceImpl.java index faa3b34..91c4174 100644 --- a/src/main/java/com/ycwl/basic/service/impl/pc/OrderServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/impl/pc/OrderServiceImpl.java @@ -183,6 +183,7 @@ public class OrderServiceImpl implements OrderService { } wxPayOrderReqVO.setOpenId(order.getOpenid()) + .setMemberId(order.getMemberId()) .setOrderSn(order.getId()) .setTotalPrice(BigDecimalUtil.convertToCents(order.getPrice())) .setGoodsName(goodsName) diff --git a/src/main/resources/mapper/OrderMapper.xml b/src/main/resources/mapper/OrderMapper.xml index 8374677..a3f2ce6 100644 --- a/src/main/resources/mapper/OrderMapper.xml +++ b/src/main/resources/mapper/OrderMapper.xml @@ -55,6 +55,7 @@ + @@ -66,6 +67,10 @@ select oi.id oiId,oi.order_id orderId,oi.goods_id, sc.name scenicName,t.cover_url coverUrl, if(oi.goods_type='1',t.name,(select count(1) from order_item oi2 where oi2.order_id=oi.order_id)) as goodsName, + if(oi.goods_type='1', + (select task.face_id from task where task.id = vd.task_id), + (select id face_id from face where FIND_IN_SET(sr.face_sample_id, face.match_sample_ids) > 0 limit 1) + ) as face_id, if(oi.goods_type='1',vd.video_url,sr.video_url) videoUrl, if(oi.goods_type='2',sr.url,null) imgUrl, if(oi.goods_type='2',sr.type,null) sourceType, @@ -308,7 +313,7 @@ + SELECT * FROM payment WHERE out_order_no = #{outOrderNo} + + \ No newline at end of file diff --git a/src/main/resources/mapper/RefundMapper.xml b/src/main/resources/mapper/RefundMapper.xml new file mode 100644 index 0000000..5b247ec --- /dev/null +++ b/src/main/resources/mapper/RefundMapper.xml @@ -0,0 +1,28 @@ + + + + + INSERT INTO refund(member_id,order_id,out_refund_no,refund_price,reason,create_time) + VALUES (#{memberId},#{orderId},#{outRefundNo},#{refundPrice},#{reason},now()) + + + UPDATE refund + + member_id = #{memberId}, + order_id = #{orderId}, + out_refund_no = #{outRefundNo}, + refund_price = #{refundPrice}, + reason = #{reason}, + + WHERE id = #{id} + + + UPDATE refund SET out_refund_no = #{outRefundNo} WHERE id = #{id} + + + UPDATE refund SET refund_time = now() WHERE id = #{id} + + + \ No newline at end of file