From e3917d1ff17e9d0046e9ee1e53e290fd449abc83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E5=91=98=E5=B0=8F=E5=A2=A8?= <2291200076@qq.com> Date: Thu, 3 Mar 2022 23:10:07 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=A4=E6=98=93=E4=B8=8B=E5=8D=952-=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0sequence=5Finfo=E8=A1=A8=E5=B9=B6=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E7=94=9F=E6=88=90Mapper?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Others/sql/flashsale.sql | 18 ++- .../flashsale/dao/SequenceDOMapper.java | 53 +++++++++ .../flashsale/dataobject/SequenceDO.java | 102 ++++++++++++++++ .../service/impl/OrderServiceImpl.java | 12 +- .../resources/mapping/SequenceDOMapper.xml | 111 ++++++++++++++++++ src/main/resources/mybatis-generator.xml | 3 + 6 files changed, 296 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/cxyxiaomo/flashsale/dao/SequenceDOMapper.java create mode 100644 src/main/java/com/cxyxiaomo/flashsale/dataobject/SequenceDO.java create mode 100644 src/main/resources/mapping/SequenceDOMapper.xml diff --git a/Others/sql/flashsale.sql b/Others/sql/flashsale.sql index 372b68a..54c9eff 100644 --- a/Others/sql/flashsale.sql +++ b/Others/sql/flashsale.sql @@ -11,7 +11,7 @@ Target Server Version : 50726 File Encoding : 65001 - Date: 03/03/2022 22:01:38 + Date: 03/03/2022 23:08:26 */ SET NAMES utf8mb4; @@ -100,6 +100,22 @@ CREATE TABLE `order_info` ( -- Records of order_info -- ---------------------------- +-- ---------------------------- +-- Table structure for sequence_info +-- ---------------------------- +DROP TABLE IF EXISTS `sequence_info`; +CREATE TABLE `sequence_info` ( + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `current_value` int(11) NOT NULL DEFAULT 0, + `step` int(11) NOT NULL DEFAULT 0, + PRIMARY KEY (`name`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of sequence_info +-- ---------------------------- +INSERT INTO `sequence_info` VALUES ('order_info', 0, 1); + -- ---------------------------- -- Table structure for user_info -- ---------------------------- diff --git a/src/main/java/com/cxyxiaomo/flashsale/dao/SequenceDOMapper.java b/src/main/java/com/cxyxiaomo/flashsale/dao/SequenceDOMapper.java new file mode 100644 index 0000000..93cdd1e --- /dev/null +++ b/src/main/java/com/cxyxiaomo/flashsale/dao/SequenceDOMapper.java @@ -0,0 +1,53 @@ +package com.cxyxiaomo.flashsale.dao; + +import com.cxyxiaomo.flashsale.dataobject.SequenceDO; + +public interface SequenceDOMapper { + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table sequence_info + * + * @mbg.generated Thu Mar 03 23:07:17 CST 2022 + */ + int deleteByPrimaryKey(String name); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table sequence_info + * + * @mbg.generated Thu Mar 03 23:07:17 CST 2022 + */ + int insert(SequenceDO record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table sequence_info + * + * @mbg.generated Thu Mar 03 23:07:17 CST 2022 + */ + int insertSelective(SequenceDO record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table sequence_info + * + * @mbg.generated Thu Mar 03 23:07:17 CST 2022 + */ + SequenceDO selectByPrimaryKey(String name); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table sequence_info + * + * @mbg.generated Thu Mar 03 23:07:17 CST 2022 + */ + int updateByPrimaryKeySelective(SequenceDO record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table sequence_info + * + * @mbg.generated Thu Mar 03 23:07:17 CST 2022 + */ + int updateByPrimaryKey(SequenceDO record); +} \ No newline at end of file diff --git a/src/main/java/com/cxyxiaomo/flashsale/dataobject/SequenceDO.java b/src/main/java/com/cxyxiaomo/flashsale/dataobject/SequenceDO.java new file mode 100644 index 0000000..a32a315 --- /dev/null +++ b/src/main/java/com/cxyxiaomo/flashsale/dataobject/SequenceDO.java @@ -0,0 +1,102 @@ +package com.cxyxiaomo.flashsale.dataobject; + +public class SequenceDO { + /** + * + * This field was generated by MyBatis Generator. + * This field corresponds to the database column sequence_info.name + * + * @mbg.generated Thu Mar 03 23:07:17 CST 2022 + */ + private String name; + + /** + * + * This field was generated by MyBatis Generator. + * This field corresponds to the database column sequence_info.current_value + * + * @mbg.generated Thu Mar 03 23:07:17 CST 2022 + */ + private Integer currentValue; + + /** + * + * This field was generated by MyBatis Generator. + * This field corresponds to the database column sequence_info.step + * + * @mbg.generated Thu Mar 03 23:07:17 CST 2022 + */ + private Integer step; + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column sequence_info.name + * + * @return the value of sequence_info.name + * + * @mbg.generated Thu Mar 03 23:07:17 CST 2022 + */ + public String getName() { + return name; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column sequence_info.name + * + * @param name the value for sequence_info.name + * + * @mbg.generated Thu Mar 03 23:07:17 CST 2022 + */ + public void setName(String name) { + this.name = name == null ? null : name.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column sequence_info.current_value + * + * @return the value of sequence_info.current_value + * + * @mbg.generated Thu Mar 03 23:07:17 CST 2022 + */ + public Integer getCurrentValue() { + return currentValue; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column sequence_info.current_value + * + * @param currentValue the value for sequence_info.current_value + * + * @mbg.generated Thu Mar 03 23:07:17 CST 2022 + */ + public void setCurrentValue(Integer currentValue) { + this.currentValue = currentValue; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column sequence_info.step + * + * @return the value of sequence_info.step + * + * @mbg.generated Thu Mar 03 23:07:17 CST 2022 + */ + public Integer getStep() { + return step; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column sequence_info.step + * + * @param step the value for sequence_info.step + * + * @mbg.generated Thu Mar 03 23:07:17 CST 2022 + */ + public void setStep(Integer step) { + this.step = step; + } +} \ No newline at end of file diff --git a/src/main/java/com/cxyxiaomo/flashsale/service/impl/OrderServiceImpl.java b/src/main/java/com/cxyxiaomo/flashsale/service/impl/OrderServiceImpl.java index 2b40828..6f1dae6 100644 --- a/src/main/java/com/cxyxiaomo/flashsale/service/impl/OrderServiceImpl.java +++ b/src/main/java/com/cxyxiaomo/flashsale/service/impl/OrderServiceImpl.java @@ -16,6 +16,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; @Service public class OrderServiceImpl implements OrderService { @@ -83,13 +85,19 @@ public class OrderServiceImpl implements OrderService { } // 生成交易流水号,订单号 - private String generateOderNo(){ + private String generateOrderNo() { // 订单号为16位 + StringBuilder stringBuilder = new StringBuilder(); + // 前8位为时间信息(年月日) + LocalDateTime now = LocalDateTime.now(); + String nowDate = now.format(DateTimeFormatter.ISO_DATE).replace("-", ""); + stringBuilder.append(nowDate); // 中间6位为自增序列 // 最后2位为分库分表位 - + stringBuilder.append("00"); // 暂时写死 + return ""; } } diff --git a/src/main/resources/mapping/SequenceDOMapper.xml b/src/main/resources/mapping/SequenceDOMapper.xml new file mode 100644 index 0000000..df87397 --- /dev/null +++ b/src/main/resources/mapping/SequenceDOMapper.xml @@ -0,0 +1,111 @@ + + + + + + + + + + + + name, current_value, step + + + + + delete from sequence_info + where name = #{name,jdbcType=VARCHAR} + + + + insert into sequence_info (name, current_value, step + ) + values (#{name,jdbcType=VARCHAR}, #{currentValue,jdbcType=INTEGER}, #{step,jdbcType=INTEGER} + ) + + + + insert into sequence_info + + + name, + + + current_value, + + + step, + + + + + #{name,jdbcType=VARCHAR}, + + + #{currentValue,jdbcType=INTEGER}, + + + #{step,jdbcType=INTEGER}, + + + + + + update sequence_info + + + current_value = #{currentValue,jdbcType=INTEGER}, + + + step = #{step,jdbcType=INTEGER}, + + + where name = #{name,jdbcType=VARCHAR} + + + + update sequence_info + set current_value = #{currentValue,jdbcType=INTEGER}, + step = #{step,jdbcType=INTEGER} + where name = #{name,jdbcType=VARCHAR} + + \ No newline at end of file diff --git a/src/main/resources/mybatis-generator.xml b/src/main/resources/mybatis-generator.xml index 71a1ce4..b378ffb 100644 --- a/src/main/resources/mybatis-generator.xml +++ b/src/main/resources/mybatis-generator.xml @@ -56,6 +56,9 @@ + + + \ No newline at end of file