Procházet zdrojové kódy

orderSequence订单流水号,店铺订单平台每日流水号

jlutt@163.com před 2 roky
rodič
revize
02c4e62ca4

+ 2 - 0
conf/rediskeys.properties

@@ -119,6 +119,8 @@ redis.douyin.lasttokendate = dydeliver:douyin:lasttokendate
 #抖音当前的token
 redis.douyin.accesstoken = dydeliver:douyin:accesstoken
 
+redis.erp.order.shop.sequence = dydeliver:erp:order:shop:sequence
+
 redis.erp.working.order = dydeliver:erp:working:order
 redis.erp.working.express.sf.order = dydeliver:erp:working:express:sf:order
 redis.erp.working.express.sf.store = dydeliver:erp:working:express:sf:store

+ 61 - 0
ddBusiness/src/main/java/com/dderp/business/service/flycat/OrderServiceImpl.java

@@ -0,0 +1,61 @@
+package com.dderp.business.service.flycat;
+
+import com.dderp.common.api.NoSqlKeysService;
+import com.dderp.common.api.flycat.OrderService;
+import com.dderp.common.base.BaseService;
+import com.dderp.common.datas.RedisKeys;
+import com.dySweetFishPlugin.redis.RedisService;
+import com.sweetfish.util.AnyValue;
+
+import javax.annotation.Resource;
+import java.time.Duration;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+
+public class OrderServiceImpl extends BaseService implements OrderService {
+
+    @Resource
+    RedisService redisService;
+
+    @Resource
+    NoSqlKeysService keysService;
+
+    @Override
+    public void init(AnyValue config) {
+        super.init(config);
+    }
+
+    @Override
+    public void destroy(AnyValue config) {
+        super.destroy(config);
+    }
+
+    @Override
+    public void start(AnyValue config) {
+        super.start(config);
+    }
+
+    /**
+     * 获取订单流水号
+     * 每个门店每个订单平台每天的流水号,从1开始,零点归1
+     *
+     * @param idShop       门店id
+     * @param idPlatform   订单平台id
+     * @param supplierCode 分表
+     */
+    public long getOrderSequence(long idShop, long idPlatform, long supplierCode) {
+        String key = keysService.getRedisKey(RedisKeys.KEY_ORDER_SHOP_SEQUENCE, supplierCode, true) +
+                idShop + ":" + idPlatform;
+        long orderSequence = redisService.incr(key);
+        if (orderSequence == 1) {
+            //让redis自动过期,不要自己写线程清零
+            //如果是新的一天,设置键的过期时间为到自然日零点的剩余时间
+            LocalDateTime now = LocalDateTime.now();
+            LocalDateTime tomorrowMidnight = LocalDateTime.of(now.toLocalDate().plusDays(1), LocalTime.MIDNIGHT);
+            Duration duration = Duration.between(now, tomorrowMidnight);
+
+            redisService.expire(key, (int) duration.getSeconds());
+        }
+        return orderSequence;
+    }
+}

+ 15 - 0
ddCommon/src/main/java/com/dderp/common/api/flycat/OrderService.java

@@ -0,0 +1,15 @@
+package com.dderp.common.api.flycat;
+
+import com.dderp.common.api.ScriptService;
+
+public interface OrderService extends ScriptService {
+
+    /**
+     * 获取订单流水号
+     * 每个门店每个订单平台每天的流水号,从1开始,零点归1
+     * @param idShop 门店id
+     * @param idPlatform 订单平台id
+     * @param supplierCode 分表
+     */
+    long getOrderSequence(long idShop, long idPlatform, long supplierCode);
+}

+ 5 - 0
ddCommon/src/main/java/com/dderp/common/datas/RedisKeys.java

@@ -325,6 +325,11 @@ public class RedisKeys {
      */
     public static final String KEY_DOUYIN_ACCESSTOKEN = "redis.douyin.accesstoken";
 
+    /**
+     * 订单流水号
+     */
+    public static final String KEY_ORDER_SHOP_SEQUENCE = "redis.erp.order.shop.sequence";
+
     private RedisKeys() {
     }
 }

+ 23 - 0
ddCommon/src/main/java/com/dderp/common/entity/order/BusinessOrder.java

@@ -5,6 +5,7 @@ import com.sweetfish.util.Comment;
 import org.rex.db.RColumn;
 
 import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
@@ -27,6 +28,10 @@ public class BusinessOrder extends BaseEntity {
     @Comment("订单状态")
     private int orderStatus;
 
+    @RColumn("ordersequence")
+    @Comment("订单每日流水号")
+    private long orderSequence;
+
     @RColumn("incomeplatformid")
     @Comment("订单来源平台id")
     private long incomePlatformId;
@@ -96,6 +101,8 @@ public class BusinessOrder extends BaseEntity {
     @Comment("订单配送信息")
     private OrderDeliveryInfo orderDeliveryInfo;
 
+    private List<OrderRiderItem> riderItemList = new ArrayList<>();
+
 
     public long getId() {
         return id;
@@ -272,4 +279,20 @@ public class BusinessOrder extends BaseEntity {
     public void setVoidFlag(int voidFlag) {
         this.voidFlag = voidFlag;
     }
+
+    public List<OrderRiderItem> getRiderItemList() {
+        return riderItemList;
+    }
+
+    public void setRiderItemList(List<OrderRiderItem> riderItemList) {
+        this.riderItemList = riderItemList;
+    }
+
+    public long getOrderSequence() {
+        return orderSequence;
+    }
+
+    public void setOrderSequence(long orderSequence) {
+        this.orderSequence = orderSequence;
+    }
 }