| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- <?php
- declare(strict_types=1);
- class CreateMessageTables extends \Phinx\Migration\AbstractMigration
- {
- /**
- * 执行迁移
- */
- public function change(): void
- {
- // 创建系统公告表
- $this->table('message_announcements', [
- 'engine' => 'InnoDB',
- 'comment' => '系统公告表',
- 'charset' => 'utf8mb4',
- 'collation' => 'utf8mb4_general_ci',
- ])
- ->addColumn('title', 'string', ['limit' => 255, 'null' => false, 'comment' => '公告标题'])
- ->addColumn('content', 'text', ['null' => false, 'comment' => '公告内容'])
- ->addColumn('status', 'integer', ['limit' => 1, 'default' => 1, 'null' => false, 'comment' => '状态:0-禁用,1-启用'])
- ->addColumn('type', 'integer', ['limit' => 1, 'default' => 1, 'null' => false, 'comment' => '类型:1-普通公告,2-重要公告,3-紧急公告'])
- ->addColumn('start_time', 'integer', ['default' => 0, 'null' => false, 'comment' => '开始时间'])
- ->addColumn('end_time', 'integer', ['default' => 0, 'null' => false, 'comment' => '结束时间'])
- ->addColumn('create_time', 'integer', ['default' => 0, 'null' => false, 'comment' => '创建时间'])
- ->addColumn('update_time', 'integer', ['default' => 0, 'null' => false, 'comment' => '更新时间'])
- ->addColumn('delete_time', 'integer', ['null' => true, 'comment' => '删除时间'])
- ->create();
- // 创建用户通知表
- $this->table('message_notifications', [
- 'engine' => 'InnoDB',
- 'comment' => '用户通知表',
- 'charset' => 'utf8mb4',
- 'collation' => 'utf8mb4_general_ci',
- ])
- ->addColumn('user_id', 'integer', ['limit' => 11, 'default' => 0, 'null' => false, 'comment' => '用户ID,0表示全部用户'])
- ->addColumn('title', 'string', ['limit' => 255, 'null' => false, 'comment' => '通知标题'])
- ->addColumn('content', 'text', ['null' => false, 'comment' => '通知内容'])
- ->addColumn('type', 'integer', ['limit' => 1, 'default' => 1, 'null' => false, 'comment' => '类型:1-系统通知,2-活动通知,3-订单通知,4-物流通知,5-其他'])
- ->addColumn('is_read', 'integer', ['limit' => 1, 'default' => 0, 'null' => false, 'comment' => '是否已读:0-未读,1-已读'])
- ->addColumn('read_time', 'integer', ['default' => 0, 'null' => false, 'comment' => '阅读时间'])
- ->addColumn('create_time', 'integer', ['default' => 0, 'null' => false, 'comment' => '创建时间'])
- ->addColumn('update_time', 'integer', ['default' => 0, 'null' => false, 'comment' => '更新时间'])
- ->addColumn('delete_time', 'integer', ['null' => true, 'comment' => '删除时间'])
- ->addIndex(['user_id'], ['name' => 'idx_user_id'])
- ->create();
- // 创建私信表
- $this->table('message_privates', [
- 'engine' => 'InnoDB',
- 'comment' => '私信表',
- 'charset' => 'utf8mb4',
- 'collation' => 'utf8mb4_general_ci',
- ])
- ->addColumn('from_user_id', 'integer', ['limit' => 11, 'null' => false, 'comment' => '发送者用户ID,0表示系统'])
- ->addColumn('to_user_id', 'integer', ['limit' => 11, 'null' => false, 'comment' => '接收者用户ID'])
- ->addColumn('content', 'text', ['null' => false, 'comment' => '私信内容'])
- ->addColumn('is_read', 'integer', ['limit' => 1, 'default' => 0, 'null' => false, 'comment' => '是否已读:0-未读,1-已读'])
- ->addColumn('read_time', 'integer', ['default' => 0, 'null' => false, 'comment' => '阅读时间'])
- ->addColumn('create_time', 'integer', ['default' => 0, 'null' => false, 'comment' => '创建时间'])
- ->addColumn('update_time', 'integer', ['default' => 0, 'null' => false, 'comment' => '更新时间'])
- ->addColumn('delete_time', 'integer', ['null' => true, 'comment' => '删除时间'])
- ->addIndex(['from_user_id'], ['name' => 'idx_from_user_id'])
- ->addIndex(['to_user_id'], ['name' => 'idx_to_user_id'])
- ->create();
- // 创建消息设置表
- $this->table('message_settings', [
- 'engine' => 'InnoDB',
- 'comment' => '消息设置表',
- 'charset' => 'utf8mb4',
- 'collation' => 'utf8mb4_general_ci',
- ])
- ->addColumn('user_id', 'integer', ['limit' => 11, 'null' => false, 'comment' => '用户ID,0表示系统默认设置'])
- ->addColumn('system_notify', 'integer', ['limit' => 1, 'default' => 1, 'null' => false, 'comment' => '系统通知:0-关闭,1-开启'])
- ->addColumn('activity_notify', 'integer', ['limit' => 1, 'default' => 1, 'null' => false, 'comment' => '活动通知:0-关闭,1-开启'])
- ->addColumn('order_notify', 'integer', ['limit' => 1, 'default' => 1, 'null' => false, 'comment' => '订单通知:0-关闭,1-开启'])
- ->addColumn('logistics_notify', 'integer', ['limit' => 1, 'default' => 1, 'null' => false, 'comment' => '物流通知:0-关闭,1-开启'])
- ->addColumn('private_message', 'integer', ['limit' => 1, 'default' => 1, 'null' => false, 'comment' => '私信:0-关闭,1-开启'])
- ->addColumn('create_time', 'integer', ['default' => 0, 'null' => false, 'comment' => '创建时间'])
- ->addColumn('update_time', 'integer', ['default' => 0, 'null' => false, 'comment' => '更新时间'])
- ->addIndex(['user_id'], ['name' => 'idx_user_id', 'unique' => true])
- ->create();
- // 创建消息模板表
- $this->table('message_templates', [
- 'engine' => 'InnoDB',
- 'comment' => '消息模板表',
- 'charset' => 'utf8mb4',
- 'collation' => 'utf8mb4_general_ci',
- ])
- ->addColumn('code', 'string', ['limit' => 50, 'null' => false, 'comment' => '模板代码'])
- ->addColumn('name', 'string', ['limit' => 100, 'null' => false, 'comment' => '模板名称'])
- ->addColumn('title', 'string', ['limit' => 255, 'null' => false, 'comment' => '标题模板'])
- ->addColumn('content', 'text', ['null' => false, 'comment' => '内容模板'])
- ->addColumn('type', 'integer', ['limit' => 1, 'default' => 1, 'null' => false, 'comment' => '类型:1-系统通知,2-活动通知,3-订单通知,4-物流通知,5-私信,6-其他'])
- ->addColumn('status', 'integer', ['limit' => 1, 'default' => 1, 'null' => false, 'comment' => '状态:0-禁用,1-启用'])
- ->addColumn('create_time', 'integer', ['default' => 0, 'null' => false, 'comment' => '创建时间'])
- ->addColumn('update_time', 'integer', ['default' => 0, 'null' => false, 'comment' => '更新时间'])
- ->addIndex(['code'], ['name' => 'idx_code', 'unique' => true])
- ->create();
- if (!$this->isMigratingUp()) {
- return;
- }
- // 插入默认消息模板数据
- $currentTime = time();
- $this->table('message_templates')
- ->insert([
- [
- 'code' => 'system_welcome',
- 'name' => '欢迎注册',
- 'title' => '欢迎加入{site_name}',
- 'content' => '亲爱的{user_name},欢迎您加入{site_name},祝您购物愉快!',
- 'type' => 1,
- 'status' => 1,
- 'create_time' => $currentTime,
- 'update_time' => $currentTime
- ],
- [
- 'code' => 'order_created',
- 'name' => '订单创建',
- 'title' => '您的订单已创建',
- 'content' => '亲爱的{user_name},您的订单{order_no}已创建成功,请及时支付。',
- 'type' => 3,
- 'status' => 1,
- 'create_time' => $currentTime,
- 'update_time' => $currentTime
- ],
- [
- 'code' => 'order_paid',
- 'name' => '订单支付',
- 'title' => '您的订单已支付',
- 'content' => '亲爱的{user_name},您的订单{order_no}已支付成功,我们将尽快为您发货。',
- 'type' => 3,
- 'status' => 1,
- 'create_time' => $currentTime,
- 'update_time' => $currentTime
- ],
- [
- 'code' => 'order_shipped',
- 'name' => '订单发货',
- 'title' => '您的订单已发货',
- 'content' => '亲爱的{user_name},您的订单{order_no}已发货,物流单号:{tracking_no}。',
- 'type' => 4,
- 'status' => 1,
- 'create_time' => $currentTime,
- 'update_time' => $currentTime
- ],
- [
- 'code' => 'order_completed',
- 'name' => '订单完成',
- 'title' => '您的订单已完成',
- 'content' => '亲爱的{user_name},您的订单{order_no}已完成,感谢您的购买!',
- 'type' => 3,
- 'status' => 1,
- 'create_time' => $currentTime,
- 'update_time' => $currentTime
- ]
- ])
- ->save();
- // 插入默认系统设置
- $this->table('message_settings')
- ->insert([
- [
- 'user_id' => 0,
- 'system_notify' => 1,
- 'activity_notify' => 1,
- 'order_notify' => 1,
- 'logistics_notify' => 1,
- 'private_message' => 1,
- 'create_time' => $currentTime,
- 'update_time' => $currentTime
- ]
- ])
- ->save();
- }
- }
|