美文网首页
订单号生成策略

订单号生成策略

作者: 杨少侠_Y | 来源:发表于2018-09-11 16:50 被阅读0次

    这里提供一个根据日期+数据库自增实现的一个订单号生成策略,也可以使用UUID。
    首先建立一个全局的数据表,这里只要一个自增的主键。

    package xxx;
    
    import lombok.Data;
    
    import javax.persistence.*;
    
    /**
     * @author lqyang
     * @Title: ${file_name}
     * @date 2018/9/1115:08
     */
    @Data
    @Entity
    @Table(name="erp_order_id_strategy")
    public class OrderIDStrategy {
    
        /**
         * 订单生成ID
         */
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Column(name = "order_id")
        private Long orderId;
    }
    

    建立对应的Dao

    package xxx;
    
    import xxx.OrderIDStrategy;
    import org.springframework.data.jpa.repository.JpaRepository;
    import org.springframework.data.jpa.repository.Query;
    import org.springframework.stereotype.Repository;
    
    import javax.persistence.Id;
    
    /**
     * @author lqyang
     * @Title: ${file_name}
     * @date 2018/9/1115:13
     */
    @Repository
    public interface OrderIDStrategyDao extends JpaRepository<OrderIDStrategy,Long>{
    
        @Query(value = "select MAX(a.order_id) from erp_order_id_strategy as a",nativeQuery = true)
        Long findById();
    }
    

    编写生成订单号工具类

    private static String date ;
     /**
         * 生成订单编号
         * @return
         */
        public static synchronized String getOrderNo(Long orderNum) {
            String str = new SimpleDateFormat("yyMMdd").format(new Date());
            if(date==null||!date.equals(str)){
                date = str;
            }
            long orderNo = Long.parseLong((date)) * 10000;
            orderNo += orderNum;
            return orderNo+"";
        }
    

    每次生成订单号时,只需每次执行insert操作

     orderIDStrategyDao.save(orderIDStrategy);
     orderInfo.setOrderId(StringUtil.getOrderNo(orderIDStrategyDao.findById()))
    

    打完收工。

    相关文章

      网友评论

          本文标题:订单号生成策略

          本文链接:https://www.haomeiwen.com/subject/ugbugftx.html