Project

General

Profile

Actions

追加功能 #501

closed
XF ZY

追加功能 #499: v4.0: Migration plan (AWS China → AWS Singapore)

v4.0: Migration plan (AWS China → AWS Singapore) - 数据迁移

追加功能 #501: v4.0: Migration plan (AWS China → AWS Singapore) - 数据迁移

Added by Xihua Fan 2 months ago. Updated about 2 months ago.

Status:
已关闭
Priority:
Assignee:
Target version:
IT: Easytryck (Sweden) - v4.0
Start date:
01/06/2026
Due date:
01/30/2026
% Done:

100%

Estimated time:
100.00 h

Description

Background
  1. 国内的AWS迁移到海外(新加坡),主要分3个Web资源。
    1. OTS3.0
    2. Easydingzhi
    3. Redmine
  2. 国内其他云服务(阿里云: 域名, DNS, SSL等)不在迁移计划内。
Task Details
  • 1. OTS3.0
    • 1.1 数据库数据迁移(主要是订单数据,产品+文件等除外)到OTS4.0 ( 1/26 凌晨完成
      问题1:OTS3.0老订单数字5位,比如 EASY00001 - EASY99999,OTS4.0新订单数字6位,比如 EASY100001
      问题2:OTS4.0新订单数字6位,既存数据需要保留嘛?如果保留可能需要统一【id + 100000】,否者删除即可。另外UI6位数字是否换行等,需要排查
      • 1.1.1 2025-11-01 ~ 今天的v3/v4数据比对:
        -- V3
        SELECT u.company_abbreviation AS abbreviation_name,
               o.ca_index,
               o.order_name,
               date(FROM_UNIXTIME(o.create_time)) AS input_date
        FROM t_order o
        LEFT JOIN t_user u ON u.id=o.retailer_id
        WHERE FROM_UNIXTIME(o.create_time) >= '2025-11-01'
          AND o.is_delete=0
        ORDER BY o.create_time DESC
        
        -- V4
        SELECT cc.abbreviation_name,
               o.order_id,
               REPLACE(o.order_name, '&', '&') AS order_name,
                DATE(o.date_added) AS input_date
        FROM ots_order o
        LEFT JOIN ots_customer_company cc ON cc.customer_company_id = o.retailer_company_id
        WHERE o.date_added >= '2025-11-01'
          AND o.is_delete = 0
        ORDER BY o.date_added DESC
        
      • 1.1.2 具体数据迁移明细:
        No. v4 fields v3 fields Note
        ======================== v4.ots_order VS v3.t_order ========================
        1 order_id ca_index
        2 order_name order_name
        3 urgency urgency
        4 remake remake
        5 is_retailer is_retailer
        6~8 retailer_company_id
        retailer_abbreviation_name
        retailer_company_name
        1. v3.retailer_id 对应的 company_abbreviation = RBSH/LVOT
          v4.retailer_company_id = 1
          v4.retailer_abbreviation_name = 'RBSH'
          v4.retailer_company_name = 'Redblue'
        2. v3.retailer_id 对应的 company_abbreviation = EASY
          v4.retailer_company_id = 2
          v4.retailer_abbreviation_name = 'EASY'
          v4.retailer_company_name = 'EASY Online Stores AB'
        3. v3.retailer_id 对应的 company_abbreviation = ABLV
          v4.retailer_company_id = 3
          v4.retailer_abbreviation_name = 'ABLV'
          v4.retailer_company_name = 'Aust banners'
        4. v3.retailer_id 对应的 company_abbreviation = 其他内容,暂无对应关系
        9 retailer_shipping_time FROM_UNIXTIME(retailer_ship_time)
        10~20 retailer_shipping_address_id
        retailer_shipping_country_id
        retailer_shipping_zone_id
        retailer_shipping_city
        retailer_shipping_postcode
        retailer_shipping_address_1
        retailer_shipping_address_2
        retailer_shipping_recipient_name
        retailer_shipping_recipient_email
        retailer_shipping_recipient_telephone
        retailer_shipping_recipient_comment
        1. v3.retailer_ship_to = 1 (STO Office):
          v4.retailer_shipping_address_id = 151
          v4.retailer_shipping_country_id = 203
          v4.retailer_shipping_zone_id = 3088
          v4.retailer_shipping_city = 'Stockholm'
          v4.retailer_shipping_postcode = '113 50'
          v4.retailer_shipping_address_1 = 'Sveavägen 83'
          v4.retailer_shipping_address_2 =
          v4.retailer_shipping_recipient_name = 'Ivar Hassler'
          v4.retailer_shipping_recipient_email = ''
          v4.retailer_shipping_recipient_telephone = '08 - 12 00 11 28'
          v4.retailer_shipping_recipient_comment = ''
        2. v3.retailer_ship_to = 2 (Same Retailer):
          v4.retailer_shipping_address_id = 0
          v4.retailer_shipping_country_id = 0
          v4.retailer_shipping_zone_id = 0
          v4.retailer_shipping_city = ''
          v4.retailer_shipping_postcode = ''
          v4.retailer_shipping_address_1 = ''
          v4.retailer_shipping_address_2 = ''
          v4.retailer_shipping_recipient_name = ''
          v4.retailer_shipping_recipient_email = ''
          v4.retailer_shipping_recipient_telephone = ''
          v4.retailer_shipping_recipient_comment = v3.retailer_ship_address
        3. v3.retailer_ship_to = 3 (Customer):
          同上(Same Retailer)
        21 customer_shipping_time FROM_UNIXTIME(customer_ship_time)
        22 customer_shipping_service CASE v3.customer_ship_to
        WHEN 10 THEN 1
        WHEN 11 THEN 10
        WHEN 12 THEN 11
        WHEN 13 THEN 12
        WHEN 14 THEN 13
        WHEN 15 THEN 14
        WHEN 60 THEN 15
        WHEN 70 THEN 16
        WHEN 99 THEN ''
        99 在v3中表示‘Other’, v4中没有对应的字段,暂时不做映射。
        23 customer_shipping_country_id 0
        24 customer_shipping_zone_id 0
        25 customer_shipping_city ''
        26 customer_shipping_postcode ''
        27 customer_shipping_address_1 ''
        28 customer_shipping_address_2 ''
        29 customer_shipping_recipient_name ''
        30 customer_shipping_recipient_email ''
        31 customer_shipping_recipient_telephone ''
        32 customer_shipping_recipient_comment customer_ship_address
        33 is_delete is_delete
        34 create_customer_id 通过v3的o.retailer_id找v4中的用户,找不到设置为其领导
        35 update_customer_id 通过v3的o.update_user找v4中的用户,找不到设置为其领导
        36 date_added FROM_UNIXTIME(create_time)
        37 date_modified FROM_UNIXTIME(update_time)
        ======================== v4.ots_order_product VS v3.t_order_product ========================
        1 order_product_id id
        2 order_id order_id
        3 product_id 0
        4 model ''
        5 manufacturer_id 0
        6 manufacturer_name ''
        7 manufacturer_origin ''
        8 extra_info extra_info
        9 quantity quantity
        10 unit_price 0
        11 total 0
        12 weight 0
        13 weight_class_id 0
        14 tax_class_id 0
        15 status status
        16 expected_finishing_time FROM_UNIXTIME(expected_finishing_time)
        17 customer_shipper CASE v3.customer_ship_type
        WHEN 10 THEN 1
        WHEN 11 THEN 10
        WHEN 12 THEN 11
        WHEN 13 THEN 12
        WHEN 14 THEN 13
        WHEN 15 THEN 14
        WHEN 60 THEN 15
        WHEN 70 THEN 16
        WHEN 99 THEN ''
        18 customer_shipper_code customer_ship_code
        19 brand ''
        20 declaration_required 0
        21 declaration_unit_price ''
        22 declaration_g_w_g ''
        23 declaration_w_v ''
        24 declaration_product_unit ''
        25 declaration_cn_product_name ''
        26 declaration_en_product_name ''
        27 declaration_cn_hs_code ''
        28 declaration_se_hs_code ''
        29 declaration_base_info 0
        30 sales_info_incoterm 0
        31 sales_info_currency 0
        32 sales_info_real_unit_price ''
        33 sales_info_declare_unit_price ''
        34 manual_review 0
        35 manual_reviewed 0
        36 transferred 0
        37 key ''
        38 legacy_info v4新增字段:v3产品与v4产品不兼容,使用一个字段:legacy_info,存json储序列化的 product信息,格式参考Output: Note - 导出注意事项 No.3
        39 is_delete is_delete
        40 create_customer_id 通过v3的o.retailer_id找v4中的用户,找不到设置为其领导
        41 update_customer_id v3找v4中的用户,找不到设置为其领导
        42 date_added FROM_UNIXTIME(create_time)
        43 date_modified FROM_UNIXTIME(update_time)
        ======================== v4.ots_order_product_file VS v3.t_order_file ========================
        1 order_product_file_id id
        2 order_id order_id
        3 order_product_id order_product_id
        4 original_name file_original_name
        5 save_path file_save_path
        6 is_delete is_delete
        7 create_customer_id v3找v4中的用户,找不到设置为其领导
        8 update_customer_id v3找v4中的用户,找不到设置为其领导
        9 date_added FROM_UNIXTIME(create_time)
        10 date_modified FROM_UNIXTIME(update_time)
  • 1.2 SSL域名迁移 ( 1/26 凌晨完成
    OTS3.0 = order3.easydingzhi.com (现域名:order.easydingzhi.com)
    OTS4.0 = order.easydingzhi.com
  • 1.3 OTS3.0备份 所有DB, Uploaded files数据全部迁移( 2月内完成 van可以处理,这里先关闭
    Uploaded files数据半年前的数据备份onedrive。
  • 2. Easydingzhi
    所有DB, 图片,Uploaded files数据全部迁移( 2月内完成 van可以处理,这里先关闭
  • 3. Redmine (IT团队使用)
    所有DB, Uploaded files数据全部迁移( 2月内完成 van+bruce可以处理,这里先关闭
  • 4. 其他:等1-3全部完成,将全部关闭AWS China,并注销【网站备注】。( 2月内完成 van可以处理,这里先关闭
v4 coding standard:
  1. Git提交
    #xxx(redmine number): xxx(redmine title) - xxx(任意:补充内容)
      
  2. 代码规范
    2.1: 结构:Public -> Protected -> Private
    2.2: 其他代码规范同SBX
      
  3. MVCL的v3/v4物理分割
    3.1: v3/v4的代码分为两个文件,比如: order.php, order_v3.php
    3.2: system也分为两个文件,暂时只有一个user_v3
    - Note: front的$this->user在v4中会替换为$this->customer, 即v4中需要清除$this->user
    3.3: 代码中,区分v3/v4的调用,比如:new User_V3
     
  4. 前台代码
    twig, js, css (js, css尽量写在单独的css文件中)
     
  5. 后台代码
    MVCL (L:en,cn)
     
  6. 注释
    1. 类名:
      /**
       * xxx
       *
       * @copyright RedBlue-OTS 2024
       * @version v4
       *
       */
      
    2. 函数名:参数类型 + 返回值类型
          /**
           * xxx
           *
           * @param  xxx $xxx
           * @param  xxx $xxx
           * @return xxx
           */
      
Output
  • Report and Solution

Others


Files

v3-orders-2026-01-21.xlsx (37.3 KB) v3-orders-2026-01-21.xlsx v3-orders-251201到260121数据详情 Zhongbao Ye, 01/21/2026 12:20 PM
v4-orders-2026-01-21.xlsx (39.4 KB) v4-orders-2026-01-21.xlsx v4-orders-251201到260121数据详情 Zhongbao Ye, 01/21/2026 12:20 PM

ZY Updated by Zhongbao Ye 2 months ago Actions #1

  • Description updated (diff)

ZY Updated by Zhongbao Ye 2 months ago Actions #2

Output(2026/01/12 ~ 2026/01/13) 九亭 + Output(2026/01/8 ~ 2026/01/11) 居家

Note - 导出注意事项
  1. v3 已删除的order/order_product/order_file 不在导入v4
  2. 重复订单发生时:
    1. order 表存储最后一个订单作为主订单
      • order.order_name 合并处理:
        v3: ABLV06840 (1196 -UGG x LOVE ATHLETICA MERCH Sign 66cm x 180cm)
        EASY06840 (Klinikutrusting Sverige)
        =>

        v4: ABLV06840 + EASY06840 (ABLV: 1196 -UGG x LOVE ATHLETICA MERCH Sign 66cm x 180cm + EASY: Klinikutrustning Sverige)

    2. order_product 表存储所有订单产品
    3. order 表中的其他字段,均使用最新订单的数据,比如:urgency,remake,update_customer_id,date_added,date_modified等
  3. v3/v4 订单产品不兼容,order_product 新增字段legacy_info,格式如下:
    {
      "index": xxx,
      "order_name": xxx,
      "is_need_sample":0,
      "company_abbreviation":"EASY",
      "retailer_ship_type_name":"FedEx",
      "retailer_ship_code":"771974168979",
      "product_type":"Promotion products",
      "product_name":"",
      "product_color":"",
      "product_size":"",
      "product_material":"" 
    }
    
  4. order.create_customer_id处理:
    1. Priority 1: v3.user.email = v4.customer.email && v3.公司缩写 = v4.公司缩写
    2. Priority 2: v3.user.company_abbreviation = RBSH => v4.customer.customer_id = 6 (Lee)
    3. Priority 3: v3.user.company_abbreviation = EASY => v4.customer.customer_id = 13 (Oskar)
    4. Priority 4: v3.user.company_abbreviation = ABLV/LVOT/BARG/AB45 => v4.customer.customer_id = 7 (Lake)
    5. Priority 5: others => v4.customer.customer_id = 0
  5. order retailer_company_id/retailer_abbreviation_name 处理:
    1. Priority 1: o.retailer的公司 = RBSH/LVOT => retailer_company_id = 1,retailer_abbreviation_name = RBSH
    2. Priority 2: o.retailer的公司 = EASY => retailer_company_id = 2,retailer_abbreviation_name = EASY
    3. Priority 3: o.retailer的公司 = ABLV => retailer_company_id = 3,retailer_abbreviation_name = ABLV
    4. Priority 4: 其他 => => retailer_company_id = 0,retailer_abbreviation_name = ''
Databases:

ZY Updated by Zhongbao Ye 2 months ago Actions #3

  • % Done changed from 0 to 20

ZY Updated by Zhongbao Ye 2 months ago Actions #4

  • Status changed from 新建 to 进行中

ZY Updated by Zhongbao Ye 2 months ago Actions #5

  • Description updated (diff)

ZY Updated by Zhongbao Ye 2 months ago Actions #6

  • File v4-orders-2026-01-14.csv added
  • File v3-orders-2026-01-14.csv added

ZY Updated by Zhongbao Ye 2 months ago Actions #7

  • Description updated (diff)

XF Updated by Xihua Fan 2 months ago Actions #8

  • File deleted (v4-orders-2026-01-14.csv)

XF Updated by Xihua Fan 2 months ago Actions #9

  • File deleted (v3-orders-2026-01-14.csv)

ZY Updated by Zhongbao Ye 2 months ago Actions #10

  • Description updated (diff)

XF Updated by Xihua Fan about 2 months ago Actions #12

  • Description updated (diff)

ZY Updated by Zhongbao Ye about 2 months ago Actions #13

  • Description updated (diff)

ZY Updated by Zhongbao Ye about 2 months ago Actions #14

  • Description updated (diff)

ZY Updated by Zhongbao Ye about 2 months ago Actions #15

  • Status changed from 进行中 to 已关闭
  • % Done changed from 20 to 100

ZY Updated by Zhongbao Ye about 2 months ago Actions #16

  • Status changed from 已关闭 to 进行中
  • % Done changed from 100 to 50

ZY Updated by Zhongbao Ye about 2 months ago Actions #17

  • Description updated (diff)

ZY Updated by Zhongbao Ye about 2 months ago Actions #18

  • Description updated (diff)
  • Status changed from 进行中 to 已关闭
  • % Done changed from 50 to 100
Actions

Also available in: PDF Atom