瀏覽代碼

fix 同一用户不同id续费退款时车票未清除

zoujiajian 3 年之前
父節點
當前提交
4d8946e675

+ 70 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/OrderDetailView.java

@@ -0,0 +1,70 @@
+package com.cyksj.model.entity;
+
+import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.DbIgnore;
+import com.ejlchina.searcher.bean.SearchBean;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/*
+ *项目名: netflix
+ *文件名: OrderDetail
+ *创建者: JavaZou
+ *创建时间:2023/4/14 15:00
+ */
+@Getter
+@Setter
+@SearchBean(tables = "order_don o left join goods_don_sku sku on o.sku_id = sku.id " +
+		"left join goods_don g on g.id = sku.goods_id ")
+public class OrderDetailView {
+	/**
+	 * 订单id
+	 */
+	@DbField("o.id")
+	private Long id;
+
+	/**
+	 * 商品id
+	 */
+	@DbField("sku.id")
+	private Long skuId;
+
+	@DbField("sku.spec_val")
+	private String specVal;
+
+	/** 订单号 */
+	@DbField("o.order_no")
+	private String orderNo ;
+
+	@DbField("o.status")
+	private OrderDon.Status status;
+
+	@DbField("g.id")
+	private Long goodsId;
+
+	@DbField("g.title")
+	private String title;
+
+	@DbField("g.second_type")
+	private Integer secondType;
+
+	/**
+	 * 微信订单号
+	 */
+	@DbField("o.transaction_id")
+	private String transactionId;
+
+	@DbField("o.money")
+	private BigDecimal money;
+
+	@DbField("o.num")
+	private Integer num;
+
+	@DbIgnore
+	private OrderDonWaybill waybill;
+
+	@DbIgnore
+	private OrderDonTransport transport;
+}

+ 2 - 2
netflix-service/src/main/java/com/cyksj/service/order/OrderDonService.java

@@ -9,9 +9,9 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.cyksj.dto.Result;
 import com.cyksj.model.dto.AliPayParams;
 import com.cyksj.model.dto.H5JsPayParams;
+import com.cyksj.model.entity.OrderDetailView;
 import com.cyksj.model.entity.OrderDon;
 import com.cyksj.model.entity.RealGoodsInterestUser;
-import com.cyksj.model.manage.views.OrderDonView;
 import com.cyksj.model.request.OrderPayRequest;
 import com.cyksj.model.request.TransferAccountsReq;
 import com.cyksj.model.request.WxOrderRefundReq;
@@ -51,7 +51,7 @@ public interface OrderDonService extends IService<OrderDon> {
 
     OrderDon renewal(OrderPayRequest request) throws Exception;
 
-    OrderDonView getDetail(Long orderId, Long userId);
+    OrderDetailView getDetail(Long orderId, Long userId);
 
     List<OrderDon> getAppleOneOrderDons(List<Long> skuIds, List<String> noOrderStatus, Date yesZeroDate, Date thisZeroDate);
 

+ 5 - 5
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java

@@ -726,7 +726,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 		//续费订单
 		orderDon.setOrderType(2);
 		orderDon.setStatus(OrderDon.Status.noPayment);
-		orderDon.setUserId(user.getId());
+		orderDon.setUserId(relation.getUserId());
 		//续费后 是否需要更换车票
 		if (isChangeTicket) {
 			orderDon.setIsChangeTicket(isChangeTicket);
@@ -773,15 +773,15 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 	}
 
 	@Override
-	public OrderDonView getDetail(Long orderId, Long userId) {
+	public OrderDetailView getDetail(Long orderId, Long userId) {
+		OrderDon orderDon = this.getById(orderId);
 		MapBuilder builder = MapUtils.builder()
 				.field(OrderDonView::getId, orderId)
 				.orderBy(OrderDonView::getId).desc();
-		if (userId != null) {
+		if (userId != null && orderDon.getOrderType() != 2) {
 			builder.field(OrderDonView::getUserId, userId);
 		}
-		OrderDonView detail = beanSearcher.searchFirst(OrderDonView.class, builder.build());
-
+		OrderDetailView detail = beanSearcher.searchFirst(OrderDetailView.class, builder.build());
 		detail.setTransport(transportMapper.selectOne(Wrappers.lambdaQuery(OrderDonTransport.class).eq(OrderDonTransport::getOrderId, detail.getId()).last(" limit 1")));
 		detail.setWaybill(waybillMapper.selectOne(Wrappers.lambdaQuery(OrderDonWaybill.class).eq(OrderDonWaybill::getOrderId, detail.getId()).last(" limit 1")));
 		return detail;

+ 6 - 2
netflix-service/src/main/java/com/cyksj/service/wechat/impl/WeChatServiceImpl.java

@@ -481,9 +481,13 @@ public class WeChatServiceImpl implements WeChatService {
         String gzhQrCodeUrl = String.format("https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=%s", this.getAccessToken());
         //scene_str:场景值ID(字符串形式的ID),字符串类型,长度限制为1到64
         String scene_str = RandomUtil.randomString(16);
-        DateTime dateTime = DateUtil.offsetSecond(DateTime.now(), 60);
+        int expireTime = 60;
+        if (StrUtil.isNotBlank(loginPhone)) {
+            expireTime = 25;
+        }
+        DateTime dateTime = DateUtil.offsetSecond(DateTime.now(), expireTime);
         String body = String.format("{\"expire_seconds\": %s, \"action_name\": \"%s\", \"action_info\": {\"scene\": {\"scene_str\": \"%s\"}}}",
-                60,
+                expireTime,
                 "QR_STR_SCENE",
                 scene_str);
         HttpResponse<String> response = J11HttpC.custom()

+ 24 - 7
netflix-web/src/main/java/com/cyksj/web/controller/payment/OrderController.java

@@ -50,10 +50,7 @@ import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.OutputStream;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -354,8 +351,28 @@ public class OrderController {
     @GetMapping("/get")
     public Result<SearchResult<OrderDonView>> list(){
         long userId = StpUserUtil.getLoginIdAsLong();
+        List<Long> userIds = new ArrayList<>();
+        userIds.add(userId);
+        UserBindDetail userBindDetail = userBindDetailMapper.selectOne(Wrappers.lambdaQuery(UserBindDetail.class)
+                .eq(UserBindDetail::getUserId, userId).last("limit 1"));
+        if (userBindDetail == null) {
+            User user = userMapper.selectById(userId);
+            if (StrUtil.isEmpty(user.getOpenId()) && StrUtil.isNotEmpty(user.getLoginPhone())) {
+                userBindDetail = userBindDetailMapper.selectOne(Wrappers.lambdaQuery(UserBindDetail.class)
+                        .eq(UserBindDetail::getPhone, user.getLoginPhone()).last("limit 1"));
+                if (userBindDetail != null) {
+                    userIds.add(userBindDetail.getUserId());
+                }
+            }
+        }else {
+            User otherUser = userMapper.selectOne(Wrappers.lambdaQuery(User.class)
+                    .eq(User::getLoginPhone, userBindDetail.getPhone()).last("limit 1"));
+            if (otherUser != null) {
+                userIds.add(otherUser.getId());
+            }
+        }
         SearchResult<OrderDonView> search = beanSearcher.search(OrderDonView.class, MapUtils.flatBuilder(request.getParameterMap())
-                .field(OrderDonView::getUserId,userId)
+                .field(OrderDonView::getUserId, userIds).op(Operator.InList)
                 .orderBy(OrderDonView::getId).desc()
                 .build());
         search.getDataList().forEach(data->{
@@ -384,13 +401,13 @@ public class OrderController {
      * 获取订单详情
      */
     @GetMapping("/get/{orderId}")
-    public Result<OrderDonView> detail(@PathVariable Long orderId, Boolean isNoLogin) {
+    public Result<OrderDetailView> detail(@PathVariable Long orderId, Boolean isNoLogin) {
         Long userId = null;
         if (isNoLogin == null || !isNoLogin) {
             userId = StpUserUtil.getLoginIdAsLong();
         }
 
-        OrderDonView detail = orderDonService.getDetail(orderId, userId);
+        OrderDetailView detail = orderDonService.getDetail(orderId, userId);
 
         return GatewayResponse.SUCCESS.newBuilder().toResult(detail);
     }