feat(backend): 意见反馈接口(提交+图片上传+admin列表)
- model/feedback.go: Feedback(多租户 shop_id,images 以 JSON 存)+ StringSlice 类型 - handler/feedback.go: Submit(认证,shop/user 从 JWT,去规范化 username/shop_code)、 UploadImage(复用 product_image 压缩逻辑,存 /images/feedback/<shop>/)、 List(SuperAdminOnly,分页过滤)、UpdateStatus(new/handled) - router 注册 /feedback、/feedback/images、/admin/feedback;main AutoMigrate;schema.sql 加表 - feedback_test 覆盖提交/校验/权限/列表 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -446,4 +446,26 @@ CREATE TABLE IF NOT EXISTS `product_spec_options` (
|
||||
KEY `idx_deleted_at` (`deleted_at`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品规格选项';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `feedbacks` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`shop_id` BIGINT UNSIGNED NOT NULL,
|
||||
`shop_code` VARCHAR(50) DEFAULT NULL,
|
||||
`user_id` BIGINT UNSIGNED DEFAULT NULL,
|
||||
`username` VARCHAR(50) DEFAULT NULL,
|
||||
`role` VARCHAR(20) DEFAULT NULL,
|
||||
`type` VARCHAR(20) NOT NULL COMMENT 'bug / suggestion',
|
||||
`content` TEXT,
|
||||
`images` JSON,
|
||||
`app_version` VARCHAR(30) DEFAULT NULL,
|
||||
`platform` VARCHAR(20) DEFAULT NULL,
|
||||
`client_ip` VARCHAR(60) DEFAULT NULL,
|
||||
`status` VARCHAR(20) NOT NULL DEFAULT 'new',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_shop_id` (`shop_id`),
|
||||
KEY `idx_user_id` (`user_id`),
|
||||
KEY `idx_type` (`type`),
|
||||
KEY `idx_status` (`status`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户意见反馈';
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
||||
Reference in New Issue
Block a user