-- 数据库升级脚本 -- 生成时间: 自动生成 -- 描述: 根据niushop_database.sql更新init.sql的表结构和数据 USE shop_mallnew; -- 表结构升级语句 ALTER TABLE `lucky_cashier_auth_group` ADD COLUMN `store_id` int NOT NULL DEFAULT '0' COMMENT '门店id 0为全部门店'; ALTER TABLE `lucky_cashier_auth_group` ADD COLUMN `store_name` varchar(255) NOT NULL DEFAULT '' COMMENT '门店名称'; ALTER TABLE `lucky_cashier_auth_group` ADD COLUMN `create_user_data` varchar(500) NOT NULL DEFAULT '[]' COMMENT '创建用户数据 json格式'; ALTER TABLE `lucky_cashier_auth_group` ADD COLUMN `create_uid` int NOT NULL DEFAULT '0' COMMENT '创建用户id'; ALTER TABLE `lucky_cron` ADD COLUMN `error_num` int NOT NULL DEFAULT 0 COMMENT '错误次数' AFTER `create_time`; ALTER TABLE `lucky_cron` ADD COLUMN `status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '状态 0待执行 1执行中' AFTER `error_num`; ALTER TABLE `lucky_express_delivery_package` ADD COLUMN `trace` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '物流轨迹' AFTER `template_name`; ALTER TABLE `lucky_fenxiao_withdraw` ADD COLUMN `fail_reason` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '失败原因' AFTER `applet_type`; ALTER TABLE `lucky_goods` ADD COLUMN is_reserve int NOT NULL DEFAULT 0 COMMENT '服务是否需要预约,0:否,1:是'; ALTER TABLE `lucky_goods` ADD COLUMN service_mode varchar(255) NOT NULL DEFAULT '' COMMENT '服务模式:onsite:上门服务,in_store:到店服务'; ALTER TABLE `lucky_goods` ADD COLUMN service_price_way varchar(255) NOT NULL DEFAULT '' COMMENT '上门服务费用方式,reserve_price:预约价格,fixed_price:一口价格'; ALTER TABLE `lucky_group` ADD COLUMN `create_user_data` varchar(500) NOT NULL DEFAULT '[]' COMMENT '创建用户数据 json格式'; ALTER TABLE `lucky_group` ADD COLUMN `create_uid` int NOT NULL DEFAULT '0' COMMENT '创建用户id'; ALTER TABLE `lucky_member_goods_card` ADD COLUMN `invalid_reason` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '失效原因' AFTER `store_id`; ALTER TABLE `lucky_order` ADD COLUMN delivery_start_time int NOT NULL DEFAULT 0 COMMENT '配送开始时间'; ALTER TABLE `lucky_order` ADD COLUMN delivery_end_time int NOT NULL DEFAULT 0 COMMENT '配送结束时间'; ALTER TABLE `lucky_order_goods` ADD COLUMN shop_active_refund_no VARCHAR(50) NOT NULL DEFAULT '' COMMENT '商家主动退款编号'; ALTER TABLE `lucky_order_goods` ADD COLUMN shop_active_refund_remark VARCHAR(255) NOT NULL DEFAULT '' COMMENT '商家主动退款说明'; ALTER TABLE `lucky_order_goods` ADD COLUMN shop_active_refund_money DECIMAL(10, 2) NOT NULL DEFAULT 0.00 COMMENT '商家主动退款金额'; ALTER TABLE `lucky_order_goods` ADD COLUMN shop_active_refund_money_type INT(11) NOT NULL DEFAULT 1 COMMENT '商家主动退款方式 1 原路退款 2线下退款3退款到余额'; ALTER TABLE `lucky_order_goods` ADD COLUMN `refund_images` varchar(3000) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '退款图片 最多五张' AFTER `refund_remark`; ALTER TABLE `lucky_pay` ADD COLUMN `is_delete` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除 1是 0否' AFTER `pay_json`; ALTER TABLE `lucky_pay` ADD COLUMN `relate_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '关联id' AFTER `is_delete`; ALTER TABLE `lucky_poster` ADD COLUMN `param_md5` varchar(255) NOT NULL DEFAULT '' COMMENT '参数md5值' AFTER `create_time`; ALTER TABLE `lucky_poster` ADD COLUMN `file_path` varchar(1000) NOT NULL DEFAULT '' COMMENT '文件路径' AFTER `param_md5`; ALTER TABLE `lucky_promotion_coupon` ADD COLUMN use_channel varchar(50) NOT NULL DEFAULT 'all' COMMENT '使用渠道 all 线上线下使用 online 线上使用 offline线下使用'; ALTER TABLE `lucky_promotion_coupon` ADD COLUMN use_store varchar(5000) NOT NULL DEFAULT 'all' COMMENT '适用门店 all 全部门店 ,门店id,门店id, 部分门店'; ALTER TABLE `lucky_promotion_coupon_type` ADD COLUMN use_channel varchar(50) NOT NULL DEFAULT 'all' COMMENT '使用渠道 all 线上线下使用 online 线上使用 offline线下使用'; ALTER TABLE `lucky_promotion_coupon_type` ADD COLUMN use_store varchar(5000) NOT NULL DEFAULT 'all' COMMENT '适用门店 all 全部门店 ,门店id,门店id, 部分门店'; ALTER TABLE `lucky_promotion_coupon_type` ADD COLUMN store_id int NOT NULL DEFAULT 0 COMMENT '所属门店id'; ALTER TABLE `lucky_promotion_coupon_type` ADD COLUMN `goods_names` varchar(3000) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '适用商品名称' AFTER `goods_ids`; ALTER TABLE `lucky_promotion_coupon_type` ADD COLUMN `give_count` int NOT NULL DEFAULT 0 COMMENT '发放数量(营销活动发放和直接发放)' AFTER `used_count`; ALTER TABLE `lucky_promotion_jielong` ADD COLUMN `take_start_time` int(11) NOT NULL DEFAULT 0 COMMENT '自提开始时间'; ALTER TABLE `lucky_promotion_jielong` ADD COLUMN `take_end_time` int(11) NOT NULL DEFAULT 0 COMMENT '自提结束时间'; ALTER TABLE `lucky_promotion_presale_order` ADD COLUMN delivery_start_time int NOT NULL COMMENT '配送开始时间'; ALTER TABLE `lucky_promotion_presale_order` ADD COLUMN delivery_end_time int NOT NULL COMMENT '配送结束时间'; ALTER TABLE `lucky_stock_allot` ADD COLUMN refuse_reason varchar(255) NOT NULL DEFAULT '' COMMENT '拒绝理由'; ALTER TABLE `lucky_stock_inventory` ADD COLUMN action_time int NOT NULL DEFAULT 0 COMMENT '盘点时间'; ALTER TABLE `lucky_store` ADD COLUMN `open_date_config` varchar(1000) NOT NULL DEFAULT '[]' COMMENT '营业时间配置 json格式' AFTER `store_introduce`; ALTER TABLE `lucky_store` ADD COLUMN `out_open_date_o2o_pay` tinyint(1) NOT NULL DEFAULT 1 COMMENT '非营业时间能否下同城配送单 1:能 0:不能' AFTER `open_date_config`; ALTER TABLE `lucky_store` ADD COLUMN `close_show` tinyint(1) NOT NULL DEFAULT 0 COMMENT '门店休息是否前台展示' AFTER `out_open_date_o2o_pay`; ALTER TABLE `lucky_store` ADD COLUMN `close_desc` varchar(255) NULL DEFAULT '' COMMENT '门店休息说明' AFTER `close_show`; ALTER TABLE `lucky_store_goods_sku` ADD COLUMN `is_delivery_restrictions` int NOT NULL DEFAULT 1 COMMENT '是否有起送限制 1 有 0 没有' AFTER `real_stock`; ALTER TABLE `lucky_user` ADD COLUMN `create_user_data` varchar(500) NOT NULL DEFAULT '[]' COMMENT '创建用户数据 json格式'; ALTER TABLE `lucky_user` ADD COLUMN `create_uid` int NOT NULL DEFAULT '0' COMMENT '创建用户id'; -- 数据升级语句 USE shop_mallnew; INSERT INTO `lucky_cashier_auth_group` (`group_name`, `menu_array`, `keyword`, `site_id`, `desc`) VALUES ('门店管理员', '', 'admin', 1, ''); INSERT INTO `lucky_cashier_auth_group` (`group_name`, `menu_array`, `keyword`, `site_id`, `desc`) VALUES ('收银员', 'cashier,billing,buycard,recharge', '', 1, ''); INSERT INTO `lucky_cashier_auth_group` (`group_name`, `menu_array`, `keyword`, `site_id`, `desc`) VALUES ('核销员', 'verify_manage,verify_index,verify_record,verify_code_info,verify', '', 1, ''); INSERT INTO `lucky_store` (`store_name`,`site_id`,`status`,`stock_type`,`is_default`) VALUES ('默认总店',1,1,'store', 1); INSERT INTO `lucky_cron` (`type`, `period`, `period_type`, `name`, `event`, `execute_time`, `relate_id`, `create_time`) VALUES (2, 2, 0, '店铺统计更新(按时)', 'CronStatShopHour', 1700447491, 0, 0); INSERT INTO `lucky_cron` (`type`, `period`, `period_type`, `name`, `event`, `execute_time`, `relate_id`, `create_time`) VALUES (2, 2, 0, '门店统计更新(按时)', 'CronStatStoreHour', 1700447491, 0, 0); INSERT INTO `lucky_cron` (`type`, `period`, `period_type`, `name`, `event`, `execute_time`, `relate_id`, `create_time`) VALUES (2, 2, 0, '店铺统计更新(按日)', 'CronStatShop', 1700447491, 0, 0); INSERT INTO `lucky_cron` (`type`, `period`, `period_type`, `name`, `event`, `execute_time`, `relate_id`, `create_time`) VALUES (2, 2, 0, '门店统计更新(按日)', 'CronStatStore', 1700447491, 0, 0); -- 相关插件 INSERT INTO `lucky_addon` (`name`, `type`, `icon`, `title`, `description`, `status`, `author`, `version`, `version_no`, `content`, `create_time`) VALUES ('offlinepay', 'system', 'addon/offlinepay/icon.png', '线下支付', '线下支付功能', 1, '', '5.5.2', '552250604001', '', 1764398910); INSERT INTO `lucky_addon` (`name`, `type`, `icon`, `title`, `description`, `status`, `author`, `version`, `version_no`, `content`, `create_time`) VALUES ('huaweipay', 'system', 'addon/huaweipay/icon.png', '华为支付', '华为支付功能', 1, '', '5.3.1', '525231212001', '', 1717865208); INSERT INTO `lucky_addon` (`name`, `type`, `icon`, `title`, `description`, `status`, `author`, `version`, `version_no`, `content`, `create_time`) VALUES ('aikefu', 'system', 'addon/aikefu/icon.png', '智能客服', '基于Dify的智能客服系统', 1, '', '1.0.0', '525231212001', '', 1717865208); -- 智能客服插件菜单 INSERT INTO `lucky_menu` (`app_module`, `addon`, `title`, `name`, `parent`, `level`, `url`, `is_show`, `sort`, `desc`, `is_icon`, `picture`, `picture_select`, `is_control`, `type`) VALUES ('shop', '', '智能客服', 'CONFIG_BASE_AIKEFU', 'CONFIG_BASE', 3, 'aikefu://shop/kefu/index', 1, 88, '', 0, '', '', 1, 'page'); -- 智能客服插件安装脚本 -- 1. 智能客服插件使用系统配置表存储配置信息,无需创建独立数据表 -- 2. 会话和消息数据存储在独立数据表中 -- 创建智能客服会话表 CREATE TABLE IF NOT EXISTS `lucky_aikefu_conversation` ( `id` int(11) NOT NULL AUTO_INCREMENT, `site_id` int(11) NOT NULL COMMENT '站点ID', `user_id` varchar(50) NOT NULL COMMENT '用户ID', `conversation_id` varchar(100) NOT NULL COMMENT 'Dify会话ID', `name` varchar(255) NOT NULL COMMENT '会话名称', `status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '状态:1活跃,0结束', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), KEY `site_id` (`site_id`), KEY `user_id` (`user_id`), KEY `conversation_id` (`conversation_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='智能客服会话表'; -- 索引 ALTER TABLE `lucky_aikefu_conversation` ADD INDEX `idx_status` (`status`); -- 创建智能客服消息表 CREATE TABLE IF NOT EXISTS `lucky_aikefu_message` ( `id` int(11) NOT NULL AUTO_INCREMENT, `site_id` int(11) NOT NULL COMMENT '站点ID', `user_id` varchar(50) NOT NULL COMMENT '用户ID', `conversation_id` varchar(100) NOT NULL COMMENT '会话ID', `message_id` varchar(100) NOT NULL COMMENT '消息ID', `role` varchar(20) NOT NULL COMMENT '角色:user用户,assistant助手', `content` text NOT NULL COMMENT '消息内容', `status` varchar(20) NOT NULL DEFAULT 'completed' COMMENT '消息状态:streaming(流式中), completed(已完成), failed(失败)', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`), KEY `site_id` (`site_id`), KEY `user_id` (`user_id`), KEY `conversation_id` (`conversation_id`), KEY `message_id` (`message_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='智能客服消息表'; -- 索引 ALTER TABLE `lucky_aikefu_message` ADD INDEX `idx_status` (`status`); -- 修改数据库字符集 ALTER DATABASE shop_mallnew CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci; -- 修改表字符集 ALTER TABLE lucky_aikefu_conversation CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ALTER TABLE lucky_aikefu_message CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 创建视频号表 CREATE TABLE IF NOT EXISTS `lucky_personnel_channel` ( `channel_id` int unsigned NOT NULL AUTO_INCREMENT, `site_id` int unsigned NOT NULL DEFAULT 0 COMMENT '站点ID', `create_time` int unsigned NOT NULL DEFAULT 0 COMMENT '创建时间', `channel_type` varchar(30) NOT NULL DEFAULT 'wechat' COMMENT '视频号类型:wechat-微信视频号,douyin-抖音,kuaishou-快手,redbook-小红书,bilibili-B站', `channel_name` varchar(200) NOT NULL DEFAULT '' COMMENT '视频号ID', `feed_id` varchar(500) NOT NULL DEFAULT '' COMMENT '视频号内容ID', `feed_token` varchar(255) NOT NULL DEFAULT '' COMMENT '视频号视频的标识', `avatar_image_type` varchar(20) NOT NULL DEFAULT 'upload' COMMENT '头像类型:upload-上传图片,url-URL', `avatar_url` varchar(500) NOT NULL DEFAULT '' COMMENT '头像URL', `video_title` varchar(500) NOT NULL DEFAULT '' COMMENT '视频标题', `cover_image_type` varchar(20) NOT NULL DEFAULT 'upload' COMMENT '封面类型:upload-上传图片,url-URL', `cover_url` varchar(500) NOT NULL DEFAULT '' COMMENT '封面URL', `view_count` int unsigned NOT NULL DEFAULT 0 COMMENT '视频观看次数', `show_view_count` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否显示视频观看次数:0-不显示,1-显示', `show_follow` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否显示关注按钮:0-不显示,1-显示', `is_show` tinyint(1) NOT NULL DEFAULT 1 COMMENT '是否显示:0-隐藏,1-显示', `sort` int NOT NULL DEFAULT 0 COMMENT '排序,数值越小越靠前', PRIMARY KEY (`channel_id`), KEY `idx_site_id` (`site_id`), KEY `idx_channel_type` (`channel_type`), KEY `idx_is_show` (`is_show`), KEY `idx_sort` (`sort`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='电子名片视频号资源表'; -- 插入视频号菜单权限(使用 IGNORE 避免重复插入报错) INSERT IGNORE INTO `lucky_menu` (`app_module`, `addon`, `title`, `name`, `parent`, `level`, `url`, `is_show`, `sort`, `desc`, `is_icon`, `picture`, `picture_select`, `is_control`) VALUES ('shop', 'personnel', '视频号', 'PERSONNEL_CHANNEL_LIST', 'PERSONNEL_ROOT', 4, 'personnel://shop/enterprise/channellists', 1, 4, '', 0, '', '', 1), ('shop', 'personnel', '添加视频号', 'PERSONNEL_CHANNEL_ADD', 'PERSONNEL_CHANNEL_LIST', 5, 'personnel://shop/enterprise/channeladd', 0, 1, '', 0, '', '', 1), ('shop', 'personnel', '编辑视频号', 'PERSONNEL_CHANNEL_EDIT', 'PERSONNEL_CHANNEL_LIST', 5, 'personnel://shop/enterprise/channeledit', 0, 1, '', 0, '', '', 1), ('shop', 'personnel', '删除视频号', 'PERSONNEL_CHANNEL_DELETE', 'PERSONNEL_CHANNEL_LIST', 5, 'personnel://shop/enterprise/channeldelete', 0, 2, '', 0, '', '', 1); -- 微信视频号组件 -- 仅当WechatChannel不存在时添加记录 INSERT INTO lucky_diy_view_util (`name`, `title`, `type`, `value`, `addon_name`, `sort`, `support_diy_view`, `max_count`, `is_delete`, `icon`, `icon_type`) SELECT 'WechatChannel', '微信视频号', 'SYSTEM', '{ "list": [{ "channelName":"", "finderUserName": "", "avatarImageType": "url", "avatarUrl": "", "videoTitle": "", "coverImageType": "url", "coverUrl": "", "feedId": "", "feedToken": "", "viewCount": 0, "showViewCount": true, "embedMode": false, "channelType":"wechat" }], "rowCount": 2, "showStyle": "fixed", "aspectRatio":"16:9", "titleLineClamp": 1, "showPlayBtn": true}', '', 100110, '', 0, 0, '/public/static/img/svg/xuanxiangka.svg', 0 WHERE NOT EXISTS ( SELECT 1 FROM lucky_diy_view_util WHERE name = 'WechatChannel' );