浏览代码

免登录绑定订单并兑换车票

zoujiajian 2 年之前
父节点
当前提交
e577d7d58b

+ 20 - 0
netflix-dao/src/main/java/com/cyksj/model/request/OrderBindCommonReq.java

@@ -0,0 +1,20 @@
+package com.cyksj.model.request;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: OrderBindCommonReq
+ * 创建者: JavaZou
+ * 创建时间:2023/12/14 17:00
+ */
+@Getter
+@Setter
+public class OrderBindCommonReq {
+	private Long userId;
+
+	private String orderNo;
+
+	private String markInfo;
+}

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

@@ -1160,38 +1160,17 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 
 
 	@Override
-	public void orderNotify(OrderDon orderDon){ 
+	public void orderNotify(OrderDon orderDon){
 		Long goodsId = orderDon.getGoodsId();
 		if (orderDon.getIsNoLogin()) {
 			orderDon.setExCode(exchangeCodeService.getExCode(goodsId, orderDon.getSkuId(), 1));
 		}
-		GoodsDonSku sku = goodsDonSkuMapper.selectById(orderDon.getSkuId());
-		GoodsDon goodsDon = goodsDonMapper.selectById(sku.getGoodsId());
-		orderDon.setStatus(goodsDon.getType() == 1 && goodsDon.getSecondType() == 2 ? OrderDon.Status.complete : OrderDon.Status.hasPayment);
-
-		if (orderDon.getIsNoLogin()) {
-			orderDon.setStatus(OrderDon.Status.hasPayment);
-		}
-		boolean isSuccess = update(Wrappers.lambdaUpdate(OrderDon.class)
-				.set(OrderDon::getStatus, orderDon.getStatus())
-				.in(OrderDon::getStatus, List.of(OrderDon.Status.noPayment, OrderDon.Status.close))
-				.eq(OrderDon::getId, orderDon.getId()));
-		if (!isSuccess) {
-			log.info("支付宝回调商家订单号:{}订单状态已修改", orderDon.getOrderNo());
-			return;
-		}
-		if (!orderDon.getIsNoLogin()) {
-			//更新座位信息
-			updateGroupsTicket(orderDon, goodsDon, sku);
-
-			if (goodsDon.getType() == 1) {
-				//无车队,新增车队
-				checkNoGroupsTripsAndSendMsg(sku, orderDon);
-			}
-			//客服续费订单
-			handleServiceRenewOrder(orderDon);
+		GoodsDonSku sku = null;
+		if (orderDon.getSkuId() != null) {
+			sku = goodsDonSkuMapper.selectById(orderDon.getSkuId());
 		}
-		this.updateById(orderDon);
+		GoodsDon goodsDon = goodsDonMapper.selectById(orderDon.getGoodsId());
+		unifiedHandlerOrderNotify(orderDon, goodsDon, sku);
 	}
 
 
@@ -1212,7 +1191,6 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 		if (orderDon.getIsNoLogin()) {
 			orderDon.setStatus(OrderDon.Status.hasPayment);
 		}
-		Long goodsId = goodsDon.getId();
 		if (!orderDon.getIsNoLogin() && sku != null) {
 			//更新座位信息
 			updateGroupsTicket(orderDon, goodsDon, sku);

+ 3 - 0
netflix-service/src/main/java/com/cyksj/service/user/UserService.java

@@ -5,6 +5,7 @@ import com.cyksj.dto.UserSharedDto;
 import com.cyksj.model.dto.UserWhoami;
 import com.cyksj.model.entity.User;
 import com.cyksj.model.request.LoginReq;
+import com.cyksj.model.request.OrderBindCommonReq;
 
 import java.util.List;
 
@@ -37,4 +38,6 @@ public interface UserService extends IService<User> {
 	UserSharedDto getUserShredDtoByDsCode(String dsCode);
 
 	Long getSharedIdByUserId(Long userId);
+
+	void bindUserOrder(OrderBindCommonReq orderBindCommonReq);
 }

+ 36 - 4
netflix-service/src/main/java/com/cyksj/service/user/impl/UserServiceImpl.java

@@ -16,18 +16,20 @@ import com.cyksj.common.util.Codec;
 import com.cyksj.common.util.Jsons;
 import com.cyksj.common.util.StringUtil;
 import com.cyksj.dto.UserSharedDto;
+import com.cyksj.mapper.GroupsRelationMapper;
+import com.cyksj.mapper.OrderDonMapper;
 import com.cyksj.mapper.PhoneCodeMapper;
 import com.cyksj.mapper.UserMapper;
 import com.cyksj.mapper.manage.distribute.UserDistributeSharedMapper;
 import com.cyksj.mapper.market.UserBindDetailMapper;
 import com.cyksj.model.dto.OrderDonPostDataDto;
 import com.cyksj.model.dto.UserWhoami;
-import com.cyksj.model.entity.PhoneCode;
-import com.cyksj.model.entity.User;
-import com.cyksj.model.entity.UserBindDetail;
-import com.cyksj.model.entity.UserDistributeShared;
+import com.cyksj.model.entity.*;
+import com.cyksj.model.request.ExchangeCodeTicket;
 import com.cyksj.model.request.LoginReq;
+import com.cyksj.model.request.OrderBindCommonReq;
 import com.cyksj.redis.RedisService;
+import com.cyksj.service.exchange.ExchangeCodeService;
 import com.cyksj.service.user.UserService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -59,6 +61,12 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
 
 	private final UserDistributeSharedMapper userDistributeSharedMapper;
 
+	private final OrderDonMapper orderDonMapper;
+
+	private final ExchangeCodeService exchangeCodeService;
+
+	private final GroupsRelationMapper relationMapper;
+
 	private static final GlobalThreadPoolTaskExecutor TASK_POOL = GlobalThreadPoolTaskExecutor.getInstance();
 
     @Override
@@ -289,4 +297,28 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
 		return distributeShared.getSharedId();
 	}
 
+	@Override
+	public void bindUserOrder(OrderBindCommonReq orderBindCommonReq) {
+		String orderNo = orderBindCommonReq.getOrderNo();
+		OrderDon orderDon = orderDonMapper.selectOne(Wrappers.lambdaQuery(OrderDon.class)
+				.eq(OrderDon::getOrderNo, orderNo)
+				.eq(OrderDon::getUserId, 0)
+				.last("limit 1"));
+		if (orderDon == null) {
+			return;
+		}
+		orderDon.setUserId(orderBindCommonReq.getUserId());
+		GroupsRelation relation = relationMapper.selectOne(Wrappers.lambdaQuery(GroupsRelation.class)
+				.eq(GroupsRelation::getId, orderDon.getRelationId())
+				.eq(GroupsRelation::getStatus, GroupsRelation.Status.validity)
+				.last("limit 1"));
+		//免登录兑换流程未成功 继续兑换
+		if (relation == null) {
+			String exCode = orderDon.getExCode();
+			ExchangeCodeTicket exchangeCodeTicket = new ExchangeCodeTicket();
+			exchangeCodeTicket.setCode(exCode);
+			exchangeCodeService.getTicketByExchangeCode(exchangeCodeTicket, orderBindCommonReq.getUserId());
+			orderDonMapper.updateById(orderDon);
+		}
+	}
 }

+ 12 - 0
netflix-web/src/main/java/com/cyksj/web/controller/user/UserController.java

@@ -17,6 +17,7 @@ import com.cyksj.mapper.manage.coupon.CouponUserMapper;
 import com.cyksj.model.dto.UserWhoami;
 import com.cyksj.model.entity.*;
 import com.cyksj.model.request.ExchangeCodeTicket;
+import com.cyksj.model.request.OrderBindCommonReq;
 import com.cyksj.model.request.UserReq;
 import com.cyksj.model.request.WorkOrderReq;
 import com.cyksj.model.response.UserAuthLoginResp;
@@ -356,4 +357,15 @@ public class UserController {
         }
         return GatewayResponse.SUCCESS.newBuilder().toResult(exchangeRate);
     }
+
+    /**
+     * 用户绑定免登录订单
+     */
+    @PostMapping("/bind/others/users")
+    public Result<String> bindOtherUsersByOrderNo(@RequestBody @Validated OrderBindCommonReq orderBindCommonReq) throws Exception {
+        Long userId = StpUserUtil.getLoginIdAsLong();
+        orderBindCommonReq.setUserId(userId);
+        userService.bindUserOrder(orderBindCommonReq);
+        return GatewayResponse.SUCCESS.newBuilder().toResult();
+    }
 }