@SovietPower
2022-04-29T10:19:52.000000Z
字数 4474
阅读 1417
DB
表景点(景点ID,名称,省,市,区,门牌号,类型,多张图片,介绍,开放时间,等级)景点卡片(景点ID,用户ID,卡片ID,图片,评分,点赞量)评价(卡片ID,评论,序号,时间)用户(用户ID,用户名,密码,性别,年龄,省,市,区)关注(被关注者ID ,关注者ID)景点: scenery (scenery_id, scenery_name, province, city, district, street, pictures, intro, open_time, level, tag_id)景点标签: scenery_tag (tag_id, tag)景点卡片: scenery_card (card_id, scenery_id, user_id, picture, score, likes, title, create_at)评价: comment (card_id, comment_id, comment, comment_time)用户: user (user_id, user_name, password, gender, age, province, city, district)关注: follow (follower_id, followee_id)
发表景点卡片
insert into scenery_card (scenery_id, user_id, pictures, score, likes, title, create_at)values([scenery_id], [user_id], [picture], [score], 0, [title], time.Now());
匹配景点
同搜索
select * from scenerywhere 省市区匹配 and ([keyword] in scenery_name or scenery_name in [keyword]);
查看某用户的卡片
select * from scenery_cardwhere user_id = [user_id];
删除某个卡片
后端先检查是否为自己的卡片
select user_id from scenery_cardwhere card_id = [card_id];
delete from scenery_cardwhere card_id = [card_id];
推送地址附近的卡片
同搜索。要先查该用户的地址
todo:一次只返回一定数量的记录。每次查询应有随机性。
with user_address(province, city, district) as(select province, city, district from userwhere user_id = [user_id])select *from scenery natural join user_address;
推送关注用户的卡片
todo:一次只返回一定数量的记录。每次查询应有随机性。
select * from scenery_cardwhere user_id in(select followee_id from followwhere follower_id = [user_id])
查看某用户的卡片
查看某用户的卡片
表
用户 (用户ID,名称,性别,年龄,星座,省,市,区,粉丝数,关注数)
关注(粉丝ID,被关注人ID,关注时间)
景点卡片(景点ID,图片,地址,评级,评分)
景点(景点ID,多张图片,介绍,开放时间,优惠政策,标签)
评价(评价ID,景点ID,用户ID,是否为分享,评价时间,评分,内容,图片,点击数,点赞数)
对评价的评论(评价ID,评论ID,用户ID,评论时间,评论内容)
功能
如何推荐关注博主的分享?不重复?如何与其他推荐排序?
用户密码(用户ID,密码密文)
评级是4A 5A这种,评分是用户给分平均
用户访问关键词(用户ID,关键词ID,访问次数)
分享和评价有关系吗,分享后自动评价?那分享需要记录内容吗,还是指向一个评价ID
热度怎么实现呢
可能是每个景点,都会存每个月被访问了多少次,热度就是 (当月访问数+上月访问数)/两个月总访问数。每个月每个景点新增一条记录。
可能最好是每天存一个,用近多少天,但数据好像会很大。
而且我们 没有这个数据(不过去哪儿有热度,虽然很多都是0),也很难展示它的变化,因为周期很长。
XSS 攻击或 SQL 注⼊
做什么,能做哪些页面和功能,页面的设计及之间的逻辑
能否设计出更复杂的询问(就是不是三四行简单sql就可以解决的)?
数据集怎么获取
期望目标(简单的信息查询,还是功能比较完整的网站;是否添加更复杂但有用的功能或组件)
使用哪些工具
前端页面的整体风格,要不要参考已有的网站,或者是否使用已有的东西比如ElementPlus
是否使用界面设计工具
是否用那种特别常见但很简单的框架,比如Vue Element Admin,Gin Vue Admin
是否需要review
是否用git
文件名格式(和函数相同 大写开头+驼峰?)
目录结构
缩进使用tab(4空格长度)?
函数名称:简洁的动词+名词(+修饰/补充)?如get/update/create/edit/modify/delete+名词?
URL格式(router\index.js)
代码格式:
js大括号是否换行?
简单标签、空标签一行内写完
复杂标签每个属性一行,
标签内的每层标签一缩进
(如果直接用vscode的自动补全,应该就是这样)
每个主要内容用一层块(一个div)
css标明一下主要路径
注释:
主要功能区空行,且用注释标明
比如:
<!-- 步骤条 --><div class="step-title step-title-unfinished" v-if="order.status==1">等待对方接收</div><div class="step-title step-title-unfinished" v-else-if="order.status==2">待接收</div><div class="step-title step-title-unfinished" v-else-if="order.status==3">未评价</div><div class="step-title step-title-finished" v-else>已完成</div><!-- 预计送达时间 --><div class="evaluate-time" v-if="order.status==1||order.status==2">预计送达时间:{{$filters.dateFormat(order.time)}}</div><!-- 预计送达时间END --><div class="step"><el-steps:space="200":active="activeStep"finish-status="success"align-center><el-step title="创建订单" :description="$filters.dateFormat(order.created_at)"></el-step><el-step title="管理员确认并分配" :description="allocateDescription" v-if="activeStep!=1"></el-step><el-step title="管理员确认并分配" v-else></el-step><!-- 这里order应再加一个值allocated_at --><el-step title="运输中"></el-step><el-step title="订单送达" :description="$filters.dateFormat(order.updated_at)" v-if="activeStep==4"></el-step><el-step title="订单送达" v-else></el-step></el-steps><div class="extra"></div><div class="extra"></div></div><!-- 步骤条END --><style scoped>/* 货车选择Drawer */.order-detail :deep() .el-drawer__body {overflow: auto;}.order-detail :deep() .el-table .el-table__cell {padding: 5px 0;font-size: 16px;}.order-detail .table-expand {font-size: 0;background-color: #f0fcff;}.order-detail .table-expand label {width: 90px;color: #99a9bf;}.order-detail :deep() .table-expand .el-form-item {margin: 0 0 0 25px;width: 50%;}/* 货车选择Drawer END */</style>
命名:
对外公开的全局变量、函数名大写开头,只在该包内可用的小写开头
局部变量小写开头?
驼峰式?
名称内的特殊名词、缩写词大写,如userID, userAPI而不是userId, userApi?
我之前用的是基本格式是
type Response struct {Status int `json:"status"` // 状态码Msg string `json:"msg"` // 状态信息Error string `json:"error"` // 错误信息(如果出错)Data interface{} `json:"data"` // 所需数据}
错误码及信息(constant\code.go msg.go)
项目名称
数据库名称、密码等
1. 基本介绍
描述应用场景,场景背景,涉及哪些数据。
功能介绍。
项目特点。
2. 关系模式设计
3. 测试数据集
4. 界面
5. SQL语句(May 9)
有关数据库的处理逻辑(即SQL语句)。
在测试数据集上进行测试(test-sample.sql test-sample.out)
6. 开发平台
7. 完整的生产数据集
足够大,如千个员工,百万条简单数据。
8. SQL测试(May 30)
在完整数据集上的SQL测试(test-production.sql test-production.out):是否正确,效率,相应时间。
10. 性能优化
建立索引,修改SQL语句等。
11. 美化界面(June 17)
Vue