软件设计描述

一、数据库设计步骤详解(500字)

  1. 数据库需求分析 基于项目文档,需满足以下核心数据需求:
    用户数据:存储微信一键登录的用户ID(openid)、昵称、头像URL及账号状态(正常/禁止登录),需保证用户信息安全;
    照片数据:记录用户上传的原始照片路径(o_img)、处理后的照片路径(n_img)、文件大小及生成时间,支持按规格模板自动裁剪与美化;
    规格模板数据:预设200+种证件规格参数(如身份证35mm×45mm),包含像素尺寸(width_px/height_px)、物理尺寸(width_mm/height_mm)、分辨率(dpi)等属性,并支持用户自定义尺寸(custom表);
    操作日志数据:追踪用户行为记录(生成证件照、换背景、下载等),用于分析用户偏好与系统优化。 需满足高并发读写、快速检索规格模板、数据加密存储等性能与安全需求。
  2. 概念结构设计(E-R模型) 根据文档中的E-R图框架,定义核心实体及关系:
    用户(User):属性包括用户ID(主键)、openid、昵称、头像URL、创建时间;
    证件照(Photo):属性包括照片ID(主键)、用户ID(外键)、规格名称、原图路径、处理后路径、生成时间;
    规格模板(Item):属性包括模板ID(主键)、名称(如“护照35mm×45mm”)、宽高比、分辨率、所属分类(常用寸照/签证/证件);
    用户自定义尺寸(Custom):记录用户自定义的宽高参数,关联用户ID与模板ID(多对多关系);
    操作日志(PhotoRecord):记录用户行为类型(生成/下载/编辑)、操作时间及关联用户ID。 实体间通过外键约束(如User.Photo.user_id)确保数据一致性。
  3. 逻辑结构设计(关系模型) 将E-R模型转化为表结构:
    用户表(users):id (PK), openid, nickname, avatar_url, status, create_time
    照片表(photos):id (PK), user_id (FK), name, o_img, n_img, size, create_time
    模板表(items):id (PK), name, width_px, height_px, width_mm, height_mm, dpi, category
    自定义尺寸表(custom):id (PK), user_id (FK), width_px, height_px, width_mm, height_mm, create_time
    操作日志表(photo_records):id (PK), user_id (FK), type, name, create_time 通过索引优化高频查询(如photos.user_id、items.category),采用范式化设计减少冗余字段。
  4. 物理结构设计 结合性能与安全需求:
    存储优化:照片文件采用对象存储(如腾讯云COS),数据库仅保存文件路径(o_img/n_img);
    索引策略:对photos.user_id建立B+树索引,加速用户照片检索;对items.name建立哈希索引,提升规格搜索效率;
    安全机制:用户敏感字段(如openid)使用AES加密存储,定期备份至异地灾备中心;
    扩展性设计:通过水平分表策略(按user_id哈希)支持千万级数据量,预留模板参数动态更新接口;
    参数配置表:使用web_glow表存储美颜参数(亮度、对比度等),支持后台灵活调整算法强度。
    二、用户界面设计策略(500字)
  5. 用户特性与功能任务分析 针对目标用户差异化需求:
    求职者/学生:高频次制作标准化证件照,需突出“一键合规”功能,提供官方尺寸自动校验提醒(如护照尺寸不符合时弹窗提示);
    企业用户:批量处理需求突出,设计“批量上传+模板同步应用”功能,支持一次操作生成百张同规格证件照;
    普通用户:操作容忍度低,采用极简流程(拍摄→AI引导→自动裁剪),隐藏复杂参数(如dpi设置默认值300)。 核心任务包括拍摄引导、规格选择、美颜调整、结果分享,需适配微信“即用即走”特性。
  6. 界面类型与交互设计:
    拍摄界面:全屏摄像头预览叠加AR引导框(人脸位置提示),底部悬浮“拍摄按钮+切换前后置摄像头”控件,长按触发拍摄教程视频;
    编辑界面:左侧Canvas实时渲染,右侧垂直布局工具面板(美颜/背景替换/调参),采用拖拽式参数滑块(亮度、对比度);
    模板选择界面:分类导航栏(常用寸照/各类签证/证件)+搜索框,每项模板配预览图与官方说明标签(如“护照35mm×45mm”);
    社交裂变组件:在结果页嵌入“分享给好友领模板”按钮,触发微信原生分享面板,好友通过链接领取专属模板。 工具原型通过Figma设计,使用WePY框架实现组件化开发。
  7. 界面设计原则落实
    合适性:针对移动端优化按钮尺寸(≥1cm²),禁用灰色不可点击状态;为视力障碍用户提供语音引导拍摄功能(TalkBack兼容);
    简便易操作:关键操作不超过3步(拍摄→裁剪→保存),提供“撤销/重做”快捷按钮;弱网环境下显示“压缩中...”状态提示,断网时缓存草稿至LocalStorage;
    交互控制:手势支持双指缩放预览图,长按历史版本弹出对比浮层;关键操作(如删除照片)弹出二次确认模态框;
    媒体组合恰当:
    o色彩:主色调采用微信绿色(#07C160),错误提示用红色(#FF4949);
    o图标:使用Ant Design Weapp图标库(相机图标用于拍摄入口);
    o动效:加载状态显示微信风格菊花进度条,裁剪完成时播放0.3秒缩放动画。
  8. 容错与无障碍设计
    为视力障碍用户提供语音引导拍摄功能,支持TalkBack屏幕朗读;
    在弱网环境下显示“压缩中...”状态提示,断网时缓存草稿至LocalStorage;
    关键操作(如删除照片)弹出二次确认模态框,确保用户控制权。
点击查看代码
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- 数据库: `zjzwx1`
--

-- --------------------------------------------------------

--
-- 表的结构 `admin`
--

CREATE TABLE `admin` (
  `id` int NOT NULL COMMENT '管理员登录识别码表',
  `status` int NOT NULL DEFAULT '0' COMMENT '0等待登录,1登录成功',
  `code` bigint DEFAULT NULL COMMENT '识别码'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

-- --------------------------------------------------------

--
-- 表的结构 `app_set`
--

CREATE TABLE `app_set` (
  `id` int NOT NULL COMMENT '探索中心设置表',
  `type` int DEFAULT NULL COMMENT '类型:1鉴黄,2美颜,3智能证件照,4六寸排版照,5老照片上色,6智能抠图,7图片编辑,8新海诚动漫风',
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '名字',
  `status` int DEFAULT '1' COMMENT '0关闭,1开启,2次数限制(status==2时type=1和2没用 | type==3时 0代表关闭下载高清证件照广告,1代表开启广告下载高清证件照广告,2没用)',
  `counts` int DEFAULT '0' COMMENT '用户每天免费次数(type=1,2,3没用)'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- 转存表中的数据 `app_set`
--

INSERT INTO `app_set` (`id`, `type`, `name`, `status`, `counts`) VALUES
(1, 3, '智能证件照', 1, 0),
(2, 4, '六寸排版照', 1, 0),
(3, 5, '老照片上色', 1, 0),
(4, 6, '智能抠图', 1, 0),
(5, 7, '图片编辑', 1, 0),
(6, 8, '新海诚动漫风', 1, 0),
(7, 1, '鉴黄', 0, 0),
(8, 2, '美颜', 1, 0);

-- --------------------------------------------------------

--
-- 表的结构 `custom`
--

CREATE TABLE `custom` (
  `id` int NOT NULL COMMENT '用户定制尺寸表',
  `user_id` int DEFAULT NULL COMMENT '用户id',
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '名称',
  `width_px` int NOT NULL DEFAULT '0' COMMENT '像素-宽',
  `height_px` int NOT NULL DEFAULT '0' COMMENT '像素-高',
  `width_mm` int NOT NULL DEFAULT '0' COMMENT '尺寸-宽',
  `height_mm` int NOT NULL DEFAULT '0' COMMENT '尺寸-高',
  `dpi` int DEFAULT '300' COMMENT '分辨率',
  `icon` int DEFAULT '1' COMMENT '图标,1-6',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='用户自定义' ROW_FORMAT=COMPACT;

-- --------------------------------------------------------

--
-- 表的结构 `item`
--

CREATE TABLE `item` (
  `id` int NOT NULL COMMENT '尺寸表',
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '名称',
  `width_px` int NOT NULL DEFAULT '0' COMMENT '像素-宽',
  `height_px` int NOT NULL DEFAULT '0' COMMENT '像素-高',
  `width_mm` int NOT NULL DEFAULT '0' COMMENT '尺寸-宽',
  `height_mm` int NOT NULL DEFAULT '0' COMMENT '尺寸-高',
  `icon` int DEFAULT '1' COMMENT '图标',
  `sort` int DEFAULT '100' COMMENT '排序',
  `category` int DEFAULT '0' COMMENT '1=常用寸照,2=各类签证,3=各类证件',
  `dpi` int DEFAULT '0' COMMENT '分辨率'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='证件照表' ROW_FORMAT=COMPACT;
--
-- 表的结构 `photo`
--

CREATE TABLE `photo` (
  `id` int NOT NULL COMMENT '用户保存记录表',
  `user_id` int DEFAULT NULL COMMENT '用户id',
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '规格名字',
  `o_img` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '原图,隐私考虑暂不启用',
  `n_img` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '保存图',
  `size` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '尺寸',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

-- --------------------------------------------------------

--
-- 表的结构 `photo_record`
--

CREATE TABLE `photo_record` (
  `id` int NOT NULL COMMENT '用户行为记录',
  `type` int DEFAULT '0' COMMENT '类型:0旧数据,1生成证件照,2生成高清证件照,3换背景,4下载证件照,5老照片上色,6智能抠图,7六寸排版照,8动漫风照,9图片编辑,10上传图片',
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '名字',
  `user_id` int DEFAULT NULL COMMENT '用户id',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

-- --------------------------------------------------------

--
-- 表的结构 `user`
--

CREATE TABLE `user` (
  `id` int NOT NULL COMMENT '用户表id',
  `openid` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'openid',
  `nickname` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '用户名字',
  `avatar_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '用户头像',
  `status` int DEFAULT '1' COMMENT '1正常,2禁止登录',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

-- --------------------------------------------------------

--
-- 表的结构 `web_glow`
--

CREATE TABLE `web_glow` (
  `id` int NOT NULL COMMENT '美颜参数配置表',
  `brightness_strength` int DEFAULT '1' COMMENT '亮度调整强度,最大25',
  `contrast_strength` int DEFAULT '1' COMMENT '对比度调整强度,最大50',
  `sharpen_strength` int DEFAULT '1' COMMENT '锐化调整强度,最大50',
  `saturation_strength` int DEFAULT '1' COMMENT '饱和度调整强度,最大5'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- 转存表中的数据 `web_glow`
--

INSERT INTO `web_glow` (`id`, `brightness_strength`, `contrast_strength`, `sharpen_strength`, `saturation_strength`) VALUES
(1, 1, 1, 1, 1);

-- --------------------------------------------------------

--
-- 表的结构 `web_set`
--

CREATE TABLE `web_set` (
  `id` int NOT NULL COMMENT '系统设置表',
  `app_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '小程序appid',
  `app_secret` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '小程序AppSecret',
  `video_unit_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '广告位id'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- 转存表中的数据 `web_set`
--

INSERT INTO `web_set` (`id`, `app_id`, `app_secret`, `video_unit_id`) VALUES
(1, '0', '0', '0');

--


posted @ 2025-05-16 09:55  神明邮递员  阅读(33)  评论(0)    收藏  举报