追加功能 #499
Updated by Zhongbao Ye about 2 months ago
*Background*
# 国内的AWS迁移到海外(新加坡),主要分3个Web资源。
## OTS3.0
## Easydingzhi
## Redmine
# 国内其他云服务(阿里云: 域名, DNS, SSL等)不在迁移计划内。
*Task Details(概要)*
* 1. OTS3.0
** 1.1 数据库数据迁移(主要是订单数据,产品+文件等除外)到OTS4.0
问题1:OTS3.0老订单数字5位,比如 EASY00001 - EASY99999,OTS4.0新订单数字6位,比如 EASY100001
问题2:OTS4.0新订单数字6位,既存数据需要保留嘛?如果保留可能需要统一【id + 100000】,否者删除即可。另外UI6位数字是否换行等,需要排查
** 1.2 SSL域名迁移
OTS3.0 = order3.easydingzhi.com (现域名:order.easydingzhi.com)
OTS4.0 = order.easydingzhi.com
** 1.3 OTS3.0备份 所有DB, Uploaded files数据全部迁移(1月内完成)
Uploaded files数据半年前的数据备份onedrive。
* 2. Easydingzhi
所有DB, 图片,Uploaded files数据全部迁移(1月内完成)
* 3. Redmine (IT团队使用)
所有DB, Uploaded files数据全部迁移(1月内完成)
* 4. 其他:等1-3全部完成,将全部关闭AWS China,并注销【网站备注】。
*Task Details(OTS3.0 -> OTS4.0 数据迁移的详细步骤)*
* 0. *%{color:red}事先准备(重要)%*
- 备份v4数据库(最新) *注意:* 如果是SBX(宁夏)测试的数据库,无须备份可以直接PROD(新加坡)覆盖SBX(宁夏)
- 备份文件(只备份Image和Upload,暂时copy到【0_backup】)目录 *注意:* 如果是SBX(宁夏)测试的文件,无须备份
- 导出v3数据库(最新)
* 1. 数据保留【v4 11月-1月】:Van
- 1.1 查找和v3的不同,需要order全匹配并组装【order id mapping表】
* 2. 数据清除【v4】:程序处理(DB+File物理文件)
- 2.1 删除(11月前)
- 2.1.1 根据满足条件(o.date_added < '2025-11-01')的所有order_id删除相关数据
- 2.2 删除 o.is_delete = 1的数据。另需要通过o.is_delete=1, 对应的其他表的数据(order_product, packing等相关的表)都删除
- 2.2.1 2.1.1 根据满足条件(o.is_delete = 1)的所有order_id删除相关数据
- 2.3.1 2.1.1 根据满足条件(op.is_delete = 1)的所有order_product_id删除相关数据
- 2.3 删除脏数据: order_id = 2081, 2082,还有其他指定order id(参考1.1)
- 2.3.1 根据满足条件(o.order_id in (xxx,xxx))的所有order_id删除相关数据
- 2.4 删除脏数据: packing 相关的垃圾数据
<pre>
DELETE spc
FROM ots_shipping_packing_carton spc
LEFT JOIN ots_shipping_packing_carton_product spcp
ON spcp.shipping_packing_carton_id = spc.shipping_packing_carton_id
WHERE spcp.shipping_packing_carton_id IS NULL;
DELETE spcn
FROM ots_shipping_packing_carton_number spcn
LEFT JOIN ots_shipping_packing_carton spc
ON spc.shipping_packing_carton_number_id = spcn.shipping_packing_carton_number_id
WHERE spc.shipping_packing_carton_number_id IS NULL;
DELETE spccd
FROM ots_shipping_packing_carton_custom_declaration spccd
LEFT JOIN ots_shipping_packing_carton spc
ON spc.shipping_packing_carton_custom_declaration_id
= spccd.shipping_packing_carton_custom_declaration_id
WHERE spc.shipping_packing_carton_custom_declaration_id IS NULL;
</pre>
* 3. 数据导入【v3全部】:程序处理
- 3.1 v4 11月-1月的order id + 70000(临时:给v3导入腾出id空间),注意DB+File都要处理
- 3.2 导入v3数据,重复的order id = 80000+, 且order status = completed(80)
- 3.3 根据1.1的mapping表,恢复2.1为真实的order id(v3老的id)
--3.3.1 先根据mapping表中的v3.order_id(ca_index) 将导入的v3数据删除一遍(关联的表都需要删除)。
--3.3.2 再根据mapping表,更新v4数据为v3数据(如果v4存在多个相同的v3.order_id,执行合并操作)
* 4. Order id采用新的开始v4 id:程序处理
- 4.1 order id = 100001
*v4 coding standard:*
# Git提交
#xxx(redmine number): xxx(redmine title) - xxx(任意:补充内容)
# 代码规范
2.1: 结构:Public -> Protected -> Private
2.2: 其他代码规范同SBX
# 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
# 前台代码
twig, js, css (js, css尽量写在单独的css文件中)
# 后台代码
MVCL (L:en,cn)
# 注释
## 类名:
<pre>
/**
* xxx
*
* @copyright RedBlue-OTS 2024
* @version v4
*
*/
</pre>
## 函数名:参数类型 + 返回值类型
<pre>
/**
* xxx
*
* @param xxx $xxx
* @param xxx $xxx
* @return xxx
*/
</pre>
*Output*
* Report and Solution
*Others*