@SovietPower
2022-04-29T18:19:52.000000Z
字数 4474
阅读 916
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 scenery
where 省市区匹配 and ([keyword] in scenery_name or scenery_name in [keyword]);
查看某用户的卡片
select * from scenery_card
where user_id = [user_id];
删除某个卡片
后端先检查是否为自己的卡片
select user_id from scenery_card
where card_id = [card_id];
delete from scenery_card
where card_id = [card_id];
推送地址附近的卡片
同搜索。要先查该用户的地址
todo:一次只返回一定数量的记录。每次查询应有随机性。
with user_address(province, city, district) as
(select province, city, district from user
where user_id = [user_id])
select *
from scenery natural join user_address;
推送关注用户的卡片
todo:一次只返回一定数量的记录。每次查询应有随机性。
select * from scenery_card
where user_id in
(select followee_id from follow
where 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