Pārlūkot izejas kodu

fix 车队满,生成新车队;发货备注

zoujiajian 3 gadi atpakaļ
vecāks
revīzija
90d5fc44f9

+ 2 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/OrderDonWaybill.java

@@ -30,6 +30,8 @@ public class OrderDonWaybill extends BaseEntity{
      */
     private String trackingNumber;
 
+    private String remark;
+
 
     public void setCodeCn(String codeCn) {
         if (StringUtils.equals("中国 EMS",codeCn)){

+ 5 - 3
netflix-dao/src/main/java/com/cyksj/model/manage/request/ReqSetLogisticsPost.java

@@ -2,9 +2,6 @@ package com.cyksj.model.manage.request;
 
 import lombok.Getter;
 import lombok.Setter;
-import org.apache.commons.lang3.StringUtils;
-
-import java.util.List;
 
 /**
  * @author chan
@@ -34,4 +31,9 @@ public class ReqSetLogisticsPost {
      */
     private String trackingNumber;
 
+    /**
+     * 备注
+     */
+    private String remark;
+
 }

+ 6 - 0
netflix-dao/src/main/java/com/cyksj/model/views/OrderDonTransportView.java

@@ -74,4 +74,10 @@ public class OrderDonTransportView {
 	 */
 	@DbField("odw.tracking_number")
 	private String trackingNumber;
+
+	/**
+	 * 发货备注
+	 */
+	@DbField("odw.remark")
+	private String remark;
 }

+ 1 - 0
netflix-service/src/main/java/com/cyksj/service/mange/impl/CmsOrderDonServiceImpl.java

@@ -61,6 +61,7 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
         orderDonWaybill.setCodeCn(reqSetLogisticsPost.getCodeCn());
         orderDonWaybill.setTrackingNumber(reqSetLogisticsPost.getTrackingNumber());
         orderDonWaybill.setOrderId(reqSetLogisticsPost.getOrderId());
+        orderDonWaybill.setRemark(reqSetLogisticsPost.getRemark());
         if(orderDonWaybill.getId() == null){
             orderDonWaybillMapper.insert(orderDonWaybill);
             OrderDon orderDon = getById(orderDonWaybill.getOrderId());

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

@@ -162,28 +162,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 				//TODO 如果没指定座位,等待逻辑确认
 				GroupsTrips groups = groupsMapper.selectOne(Wrappers.lambdaQuery(GroupsTrips.class).eq(GroupsTrips::getSkuId, payRequest.getSkuId()).gt(GroupsTrips::getAvailableNum, 0).last("limit 1").orderByAsc(GroupsTrips::getAvailableNum));
 				if (groups == null) {
-					//新增车次
-					groups = new GroupsTrips();
-					groups.setSkuId(sku.getId());
-					groups.setNum(sku.getNum());
-					groups.setAvailableNum(sku.getNum());
-					groups.setStatus(GroupsTrips.Status.waiting);
-					groups.setRemark("等待设置账号");
-					groupsMapper.insert(groups);
-					relation = new GroupsRelation();
-					relation.setGroupsId(groups.getId());
-					relation.setNum(1);
-					relation.setStatus(GroupsRelation.Status.locking);
-					relation.setGroupsId(groups.getId());
-					groupsRelationMapper.insert(relation);
-
-					for (int i = 2; i <= groups.getNum(); i++) {
-						GroupsRelation groupsRelation = new GroupsRelation();
-						groupsRelation.setGroupsId(groups.getId());
-						groupsRelation.setNum(i);
-						groupsRelation.setStatus(GroupsRelation.Status.none);
-						groupsRelationMapper.insert(groupsRelation);
-					}
+					relation = createNewGroupsTrips(sku, true);
 					isNew = true;
 				} else {
 					//寻找快满编车队进行占座
@@ -368,6 +347,8 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 			TASK_POOL.execute(() -> distributeWaitingSendPointsRecord(order));
 		}
 		this.updateById(order);
+		//无车队,新增车队
+		checkNoGroupsTripsAndSendMsg(sku, order);
 	}
 
     @Override
@@ -607,6 +588,8 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 			TASK_POOL.execute(() -> distributeWaitingSendPointsRecord(orderDon));
 		}
 		this.updateById(orderDon);
+		//无车队,新增车队
+		checkNoGroupsTripsAndSendMsg(sku, orderDon);
 	}
 
 	@Override
@@ -1065,4 +1048,55 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 			}
 		}
 	}
+
+	/**
+	 * 校验是否还有多余的车位
+	 */
+	private void checkNoGroupsTripsAndSendMsg(GoodsDonSku sku, OrderDon order) {
+		GroupsTrips groups = groupsMapper.selectOne(Wrappers.lambdaQuery(GroupsTrips.class).eq(GroupsTrips::getSkuId, sku.getId()).gt(GroupsTrips::getAvailableNum, 0).last("limit 1").orderByAsc(GroupsTrips::getAvailableNum));
+		if (groups == null) {
+			createNewGroupsTrips(sku, false);
+			//新增空车队发送模板消息
+			TASK_POOL.execute(() -> {
+				try {
+					List<CustomerService> customerServices = customerServiceMapper.selectList(null);
+					for (CustomerService customerService : customerServices) {
+						log.info("发送客服{}空车位通知消息", customerService.getNickName());
+						emptySendMsgNotify(order, customerService.getOpenId());
+					}
+				} catch (Exception e) {
+					log.error("发送{}空车位模板消息至客服失败:{}", order.getGoodsId(), e);
+				}
+			});
+		}
+	}
+
+	/**
+	 * 新增空车队
+	 */
+	private GroupsRelation createNewGroupsTrips(GoodsDonSku sku,Boolean isNeedRelationId) {
+		//新增车次
+		GroupsTrips groups = new GroupsTrips();
+		groups.setSkuId(sku.getId());
+		groups.setNum(sku.getNum());
+		groups.setAvailableNum(sku.getNum());
+		groups.setStatus(GroupsTrips.Status.waiting);
+		groups.setRemark("等待设置账号");
+		groupsMapper.insert(groups);
+		GroupsRelation relation = new GroupsRelation();
+		relation.setGroupsId(groups.getId());
+		relation.setNum(1);
+		relation.setStatus(isNeedRelationId ? GroupsRelation.Status.locking : GroupsRelation.Status.none);
+		relation.setGroupsId(groups.getId());
+		groupsRelationMapper.insert(relation);
+
+		for (int i = 2; i <= groups.getNum(); i++) {
+			GroupsRelation groupsRelation = new GroupsRelation();
+			groupsRelation.setGroupsId(groups.getId());
+			groupsRelation.setNum(i);
+			groupsRelation.setStatus(GroupsRelation.Status.none);
+			groupsRelationMapper.insert(groupsRelation);
+		}
+		return relation;
+	}
 }

+ 1 - 1
netflix-service/src/main/java/com/cyksj/service/register/impl/RegisterOrderDonServiceImpl.java

@@ -110,7 +110,7 @@ public class RegisterOrderDonServiceImpl extends ServiceImpl<RegisterOrderDonMap
         orderDon.setUserId(userId);
         orderDon.setOpenId(user.getOpenId());
         orderDon.setIsFree(isFree);
-        orderDon.setMoney(isFree ? BigDecimal.ZERO : BigDecimal.valueOf(map.get(req.getPlatform())));
+        orderDon.setMoney(isFree ? BigDecimal.ZERO : BigDecimal.valueOf(("apple".equals(req.getPlatform()) && "auto".equals(req.getAppleRegisterType())) ? map.get("appleAuto") : map.get(req.getPlatform())));
         orderDon.setStatus(isFree ? RegisterOrderDon.Status.hasPayment : RegisterOrderDon.Status.noPayment);
         save(orderDon);
         //apple