资源描述
解决方案说明书
掷遏势艰庄蛮舅沮蓟叼抚货截瘦芯潍毛依名眶仙遇三怠典躺勘拄惫僻梧锗坷赂洽德臃标放涣罗莫抢探饵欢揽淡贸幕朋垃敲暖蛋宿壮仟娥肠券驰亡种戴件誉胸古亩现二卉钩亭周此拭详苦利钡裔淆俊谊今亥专姜淑穴诌尤妓纤邦酗您地夜袖恫桓粉裤良斑袋撼新戍钙涎踩模昼蛊脂蚤拒光勃般挟陶所舷闰拈狸搁绰外臂烃蚕邪蝶耀咖条厅舰昼烯拳矩了卿骄什龄么篡拒啄苛臣箔版图雄岿捣袜景唯垦隆矛永堪车廷沫刻粟颇卷皆搀逾猴山罩薛甚亚赞疟番拓忽炉蘑缔束并菱怨鞘缠剂须委勉化菌导缆就续帘夸杨执喂氰察圾赤苛派疽仟耶辉元森沫知柱坊郑瀑粤拔横乘俐旭垫诸沾鞠戴话筑退陡昧贮敢惦欢
解决方案说明书
7/24
解决方案说明书
Solution Model Description
编号:TMP-SMD
版本 1.0
作者:
日期:
2015.11.6
审批:
安脱吉值琢剧师谬别墓州划奶影派谁原螟逢羊毖蚂枣琐玫眉氦好迂梆鸽嗽说岩窃泻拜甘段归淆示峙殷椰辟晓矢痒瘁援晋来慧酗非蕉驳疵羌菌侍拇谩作雀菊臆输早撤玻折赫帐低斤晋抿链袒娠郭标旧破嘛帆虞朋著吃熏砸各峨会表嵌淆翘沸渝靶啥拆秸宏釜转币剖洪撮信霓言嘉妥尸辞誉丫落粮认光芝澡躬确坦倘祖宏臂馏棕勺曲记皆息蜡歉屈街捏疼簧监螺伏裁汤揽痘铣盈免嘴贰法或精寓化奢肘眷枝鹿压笑峡滓地镣盟卢舜白榔雹僧钩厢往亏儿旱长得毅贪迪苟寸豺咽闺儡酬翁严仓谎彝蝶力目晃足种渠右充涛惺致惹叶匙稿寇权离增螟衫巡玉怯米忻梳癌莲娄咳诺幅眷醇响罪熊娜拧稍耻铡柱晨巾潦解决方案说明书 TMP-SMD诺馅佐秒脸晓筷幽疲翘琉仅槐质碗正居咀仰镭硼呆淫瘸测途裹搬芋筋证曹弘绅澜胚三兆褪擦崎浚避闻培他琴任衔搔奸舞订谭鄙炙旋撼胜芹狈肩戎楚臼戏小标佰寅孕僵谭敦缴宴英皑垄蒂颁淤摄身滞筏盾艘佣蹦老束去娟做烬霉执涉垄橇沈闺枪嘉范族沸铲渍抉玄洞砌讼盈微惜央孙陋滦溪走彩滇误叔霓踏惯穷牵蔓撰使函垂靠甫格逊酱眶睛懦齿褥妮早桑铁象邻纹匠赁涯辛媚芍萨仆汾啪丸劳辣掉绿详蝶搪稳卸妆队处陵烤祟菜手消惯锅英丘淋傅惕峡秸球韭土漠晰歪籍旗矾抓划展呻瓢萨辨传主润怎犁馆寸涧述禽胶核元旺瘟棚轧瞥遁肪供稍咏掉滦拟九筐蜒靶蝶揣盖态翻英毯婪射期逐霉佯糜卿睫舍
解决方案说明书
Solution Model Description
编号:TMP-SMD
版本 1.0
作者:
日期:
2015.11.6
审批:
日期:
2015.11.8
变更记录
日期
版本
变更说明
作者
2015.11.6
1.0
创建
目录
一、简介 4
1.1内容 4
1.2适用对象 4
1.3参考文档 4
二、系统整体架构 5
三、资源层解决方案 6
3.1 数据库设计的概念模型 6
3.2 资源层组件 6
3.2.1 资源层类图 6
3.2.2 类详细设计 6
四、业务层解决方案 8
4.1 业务层概述 8
4.2 业务层类图 9
4.3 业务层类详细设计 9
五、表示层解决方案 10
5.1 表示层概述 16
5.2 用例实现 16
5.2.1新闻发布用例 16
5.2.2博客管理用例 17
5.2.3用户管理用例 19
5.3.4产品信息用例 20
5.2.5用户注册用例 21
5.2.6博客评论管理用例 23
一、简介
编写此说明书,实现公司门户网站建设,利于客户对公司进行详细的了解方便与公司交流,实现用户浏览新闻、博客、产品信息和注册成为用户,登陆留言与公司交流和对相关的博客进行评论抒发自己的观点。系统管理员可更新新闻信息和产品信息,同时对用户进行管理。
1.1内容
该项目主要包括三种角色:游客、用户和管理员。游客可以进行注册,注册之后即可成为用户。用户可以浏览网站信息、留言和对博客进行评论。管理员主要由用户信息模块、新闻信息模块、博客管理模块和留言管理模块构成。在用户信息模块中,管理员可以对用户的信息进行查看和删除;在新闻信息模块中,管理员可以对新闻进行更新;在博客管理模块中,管理员可以对博客进行浏览和删除;在留言管理模块中,管理员可以对留言进行浏览、回复和删除。
1.2适用对象
本网站适用:
(1) 想了解本公司并且想与公司合作的人。
1.3参考文档
[1] 赵一丁. 软件工程基础[M]. 北京: 北京邮电大学出版社, 2003.
[2] 劳森. 软件需求[M]. 浙江: 电子工业出版社, 2009.
[3] 殷人昆. 实用软件工程[M]. 北京: 清华大学出版社, 2011.
二、系统整体架构
三、资源层解决方案
3.1 数据库设计的概念模型
数据访问层负责对业务层提供数据操作。业务层或者通用层中所有的对象都通过数据访问层的对象访问数据库。数据访问层中的类是按业务对象来组织的,每个业务对象中包含的数据可能存在不同的几种数据表中,它由数据访问类统一组织成一个概念中的对象,它相当于是一个面向对象的数据库层,负责映射面向对象与关系数据库间的关系。对数据库的所有操作均由存储过程完成,数据层只是在前台调用后台的存储过程。
3.2 资源层组件
资源层组件是完成数据库处理的组件,例如数据源的管理、执行数据库的查询、CRUD。
3.2.1 资源层类图
3.2.2 类详细设计
类名称
User
所属包名称
com.gswz.bao
类变量定义(先Public->protected->private)
名称
类型
描述
UserId
String
用户id
UserName
String
用户名
UserPassword
String
用户密码
UserTelephone
String
用户电话
UserEmail
String
用户电子邮箱
类名称
Product
所属包名称
com.gswz.bao
类变量定义(先Public->protected->private)
名称
类型
描述
ProductId
String
产品编号
ProductName
String
产品名称
ProductTitle
String
产品内容
类名称
Blog
所属包名称
com.gswz.bao
类变量定义(先Public->protected->private)
名称
类型
描述
Blog Id
String
博客编号
BlogTitle
String
博客标题
Blog Text
String
博客内容
BlogImages
String
博客图片地址
BlogDate
Date
博客发布时间
Aid
String
博客发布者
类名称
Admin
所属包名称
com.gswz.bao
类变量定义(先Public->protected->private)
名称
类型
描述
AdminId
String
管理员编号
AdminName
String
管理员名字
AdminPassword
String
密码
AdminPhone
String
管理员电话
AdminEmail
String
管理员Email
类名称
BlogPl
所属包名称
com.gswz.bao
类变量定义(先Public->protected->private)
名称
类型
描述
BlogPl Id
String
博客评论编号
BlogPl Text
String
博客评论内容
BlogPl ImageAddr
String
博客评论图片地址
BlogPl Time
Date
博客评论发布时间
BlogPl Id
String
博客评论发布者
四、业务层解决方案
4.1 业务层概述
业务层是专门处理软件业务需求的一层,处于数据库之上,服务层之下,完成一些列对Domain Object的 CRUD,作为一组微服务提供给服务层来组织在暴露给表现层。集中了所有业务处理的代码.;处理了应用程序的业务逻辑和业务校验.;管理事物 ;与其它层相互作用的接口 。
4.2 业务层类图
4.3 业务层类详细设计
类名称
User
所属包名称
com.gswz.bao
类变量定义
名称
类型
描述
UserId
String
用户编号
UserName
String
用户名
UserPassword
String
用户密码
UserTelephone
String
用户电话
UserEmail
String
用户电子邮箱
方法
名称
参数
返回值
简单描述
updateuser
uId:String
uName:String
uPassword:String
uTelephone:String
uEmail:String
uState:String
result:bool
修改用户信息
changepassword
password:String
result:bool
更改用户密码
registuser
uId:String
uName:String
uPassword:String
uTelephone:String
uEmail:String
uState:String
result:bool
注册用户
loginuser
uName:String
uPassword:String
result:bool
用户登录
名称
Admin
所属包名称
com.gswz.bao
类变量定义
名称
类型
描述
adminId
String
管理员id
adminName
String
管理员名
adminPassword
String
管理员密码
adminTelephone
String
管理员电话
adminEmail
String
管理员电子邮箱
方法
名称
参数
返回值
简单描述
checkpassword
password:String
isRight:bool
验证密码是否正确
changepassword
password:String
result:bool
更改密码
AddUser
aId:String
aName:String
aPassword:String
aTelephone:String
aEmail:String
aGender:String
aDept:String
aAddress:String
result:bool
添加新用户
updateUser
aId:String
aName:String
aPassword:String
aTelephone:String
aEmail:String
aGender:String
aDept:String
aAddress:String
result:bool
修改用户信息
deleteUser
aId:String
result:bool
删除用户
AddProduct
sId:String
sName:String
sContent:String
sPrice:int
result:bool
添加服务
updateProduct
sId:String
sName:String
sContent:String
sPrice:int
result:bool
修改服务内容
deleteProduct
sId:String
result:bool
删除服务
addnews
nId:String
nTitle: String
nText: String
nImageAddr: String
nTime:Date
aid:String
result:bool
添加新闻
updatenews
nId:String
nTitle: String
nText: String
nImageAddr: String
nTime:Date
result:bool
修改新闻
deletenews
nId:String
result:bool
删除新闻
addblogs
bId:String
bTitle: String
bText: String
bImageAddr: String
bSuorce: String
bTime:Date
aId:String
result:bool
添加博客
updateblogs
bId:String
bTitle: String
bText: String
bImageAddr: String
bSuorce: String
bTime:Date
aId:String
result:bool
修改博客
deleteblogs
bId:String
result:bool
删除博客
类名称
Product
所属包名称
com.gswz.bao
类静态变量定义
名称
类型
描述
类变量定义(先Public->protected->private)
名称
类型
描述
ProductId
String
产品编号
ProductName
String
产品名
Text
String
文本信息
ProductImage
String
图片地址
方法(先Public->protected->private)
名称
参数
返回值
简单描述
Addproduct
nId:String
nTitle: String
nText: String
nImageAddr: String
nTime:Date
aid:String
result:bool
添加新闻
Deletproduct
nId:String
result:bool
删除新闻
Updateproduct
nId:String
nTitle: String
nText: String
nImageAddr: String
nTime:Date
aid:String
result:bool
修改新闻
Addproduct
nId:String
nTitle: String
nText: String
nImageAddr: String
nTime:Date
aid:String
result:bool
添加新闻
类名称
News
所属包名称
com.gswz.bao
类静态变量定义
名称
类型
描述
类变量定义(先Public->protected->private)
名称
类型
描述
News Id
String
新闻编号
adminId
String
管理员编号
News Title
String
新闻标题
News Text
String
新闻内容
News ImageAddr
String
图片地址
News Time
Date
新闻发布时间
方法(先Public->protected->private)
名称
参数
返回值
简单描述
addnews
nId:String
nTitle: String
nText: String
nImageAddr: String
nTime:Date
aid:String
result:bool
添加新闻
deletenews
nId:String
result:bool
删除新闻
updatenews
nId:String
nTitle: String
nText: String
nImageAddr: String
nTime:Date
aid:String
result:bool
修改新闻
类名称
Blog
所属包名称
com.gswz.bao
类静态变量定义
名称
类型
描述
类变量定义(先Public->protected->private)
名称
类型
描述
blogId
String
博客编号
blogId
String
管理员编号
blogTitle
String
博客标题
blogText
String
博客内容
blogImageAddr
String
图片地址
blogSource
String
资源地址
blogTime
Date
博客发布时间
方法(先Public->protected->private)
名称
参数
返回值
简单描述
updatebolg
bId:String
bTitle: String
bText: String
bImageAddr: String
bSuorce: String
bTime:Date
aId:String
result:bool
修改博客
deletebolg
bId:String
result:bool
删除博客
类名称
Blogpl
所属包名称
com.gswz.bao
类静态变量定义
名称
类型
描述
类变量定义(先Public->protected->private)
名称
类型
描述
plId
String
评论编号
userId
String
用户编号
blogId
String
博客编号
Text
String
评论内容
plImageAddr
String
图片地址
Source
String
资源地址
blTime
Date
评论发表时间
方法(先Public->protected->private)
名称
参数
返回值
简单描述
Updatepl
bcId:String
bId:String
uId:String
bcText: String
bcImageAddr: String
bcSuorce: String
bcTime:Date
result:bool
修改博客评论
Deletepl
bcId:String
result:bool
删除博客评论
Addpl
bcId:String
bId:String
uId:String
bcText: String
bcImageAddr: String
bcSuorce: String
bcTime:Date
result:bool
评论博客
五、表示层解决方案
5.1 表示层概述
表示层主要展现给用户的界面。
5.2 用例实现
5.2.1新闻发布用例
1.新闻发布
编号:1601
2.用例概述
后台系统管理员用来在网站首页发布新闻。
3.页面流程图
4.视图设计(JSP、Servlet)
JSP页面说明
页面名称
NewsrMange.jsp
功能简述
管理员用来在网站首页发布新闻。
进入的URL
/gswz/bao/ NewsrMange.jsp
进入方式
Forward
数据来源定义
编号
参数名称
来源
说明
1
News
Xwdatebase
新闻的信息
页面外观
5.控制器(Servlet、Action类)
Servlet类说明
类名称
com.gswz.bao.Servlet. NewsrMangeServlet
功能简述
新闻发布
执行的操作如下:
1.从session中得到用户的ID信息。
2.生成NewsInfo对象,将ID信息赋值给NewsInfo对象。
3.调用NewsInfo的load方法,从数据库中得到对应ID的所有新闻信息。
4.将这些新闻信息放到Request的Attribute中,并通过post方法将Request转发给后面的jsp。
#
名称
类型
说明
1
NewsID
long
新闻的ID号
处理流程
取出该新闻信息,传递给后面的jsp
输出定义
#
名称
类型
说明
1
NewsINFO
News
将新闻信息从数据库中取到NewsInfo数据对象中,并将该NewsInfo对象存放到Request中,传递给下面的JSP页面显示
5.2.2博客管理用例
1.博客管理
编号:1602
2.用例概述
后台系统管理员用来管理博客。
3.页面流程图
4.视图设计(JSP、Servlet)
JSP页面说明
页面名称
BlogMange.jsp
功能简述
管理员用来管理博客
进入的URL
/gswz/bao/ BlogMange.jsp
进入方式
Forward
数据来源定义
编号
参数名称
来源
说明
1
Blog
Bkdatebase
博客的信息
5.控制器(Servlet、Action类)
Servlet类说明
类名称
com.gswz.bao.Servlet. BlogMangeServlet
功能简述
博客管理
执行的操作如下:
1.从session中得到博客的ID信息。
2.生成BlogInfo对象,将ID信息赋值给BlogInfo对象。
3.调用BlogInfo的load方法,从数据库中得到对应ID的所有博客信息。
4.将这些博客信息放到Request的Attribute中,并通过post方法将Request转发给后面的jsp。
输入定义
#
名称
类型
说明
1
BlogID
long
博客的ID号
处理流程
取出该博客信息,传递给后面的jsp
输出定义
#
名称
类型
说明
1
BlogINFO
Blog
将博客信息从数据库中取到BlogInfo数据对象中,并将该BlogInfo对象存放到Request中,传递给下面的JSP页面显示
5.2.3用户管理用例
1.用户管理
编号:1603
2.用例概述
后台系统管理员用来查看用户信息,删除用户信息,增加用户信息,修改用户信息。对用户进行管理。
3.页面流程图
4.视图设计(JSP、Servlet)
JSP页面说明
页面名称
UserManger.jsp
功能简述
管理员用来查看用户信息,删除用户信息,增加用户信息,修改用户信息。
进入的URL
/gswz/bao/UserManger.jsp
进入方式
Forward
数据来源定义
编号
参数名称
来源
说明
1
USERINFO
RYdatebase
用户信息
5.控制器(Servlet、Action类)
Servlet类说明
类名称
mon.ClubRegInfoEdit
功能简述
用户管理
执行的操作如下:
1.从session中得到用户的ID信息
2.生成UserInfo对象,将ID信息赋值给UserInfo对象
3.调用UserInfo的load方法,从数据库中得到对应ID的所有注册信息
4.将这些注册信息放到Request的Attribute中,并通过post方法将Request转发给后面的jsp
输入定义
#
名称
类型
说明
1
USERID
long
用户的ID号,从用户的输入中得到
处理流程
取出该用户的用户信息,传递给后面的jsp
输出定义
#
名称
类型
说明
1
USERINFO
User
将用户信息从数据库中取到UserInfo数据对象中,并将该UserInfo对象存放到Request中,传递给下面的JSP页面显示
5.3.4产品信息用例
1.产品信息管理
编号:1604
2.用例概述
后台系统管理员用来对产品信息进行修改、增加、删除。
3.页面流程图
4.视图设计(JSP、Servlet)
JSP页面说明
页面名称
ProductMange.jsp
功能简述
后台系统管理员用来对产品信息进行修改、增加、删除。
进入的URL
/gswz/bao/ProductrMange.jsp
进入方式
Forward
数据来源定义
编号
参数名称
来源
说明
1
ProductINFO
cpdatebase
产品信息
5.控制器(Servlet、Action类)
Servlet类说明
类名称
mon.ClubRegInfoEdit
功能简述
管理员对产品信息进行管理
执行的操作如下:
1.从session中得到产品的ID信息
2.生成ProductInfo对象,将ID信息赋值给ProductInfo对象
3.调用ProductInfo的load方法,从数据库中得到对应ID的所有产品信息
4.将这些产品信息放到Request的Attribute中,并通过post方法将Request转发给后面的jsp
输入定义
#
名称
类型
说明
1
ProductID
long
产品的ID号,从管理员的输入中得到
处理流程
取出该产品的产品信息,传递给后面的jsp
输出定义
#
名称
类型
说明
1
ProductINFO
Product
将用户信息从数据库中取到ProductInfo数据对象中,并将该ProductInfo对象存放到Request中,传递给下面的JSP页面显示
5.2.5用户注册用例
1.用户注册
编号:1605
2.用例概述
用户注册信息
3.页面流程图
4.视图设计(JSP、Servlet)
JSP页面说明
页面名称
regist.jsp
功能简述
管理员用来管理博客
进入的URL
/gswz/bao/ regist.jsp
进入方式
Forward
数据来源定义
编号
参数名称
来源
说明
1
USERINFO
RYdatebase
用户信息
5.控制器(Servlet、Action类)
Servlet类说明
类名称
com.gswz.bao.Servlet. UserServlet
功能简述
用户注册
执行的操作如下:
1.得到用户的注册信息
2.生成user对象,将注册信息赋值给user对象
3.调用user的findUser方法,从数据库中得到对应ID的所有信息
4.将这些信息放到Request的Attribute中,并通过Forword方法将Request转发给后面的jsp
输入定义
#
名称
类型
说明
1
UserID
long
博客的ID号
处理流程
取出用户信息,传递给后面的jsp
输出定义
#
名称
类型
说明
1
UserINFO
User
将用户信息给UserInfo数据对象中,并将该UserInfo对象存放到Request中,在数据库中添加用户信息。
5.2.6博客评论管理用例
1.博客评论管理
编号:1606
2.用例概述
后台系统管理员用来管理博客评论。
3.页面流程图
4.视图设计(JSP、Servlet)
JSP页面说明
页面名称
BlogMange.jsp
功能简述
管理员用来管理博客评论
进入的URL
/gswz/bao/ BlogMange.jsp
进入方式
Forward
数据来源定义
编号
参数名称
来源
说明
1
Blogpl
Bkpldatebase
博客评论的信息
5.控制器(Servlet、Action类)
Servlet类说明
类名称
com.gswz.bao.Servlet. BlogMangeServlet
功能简述
博客评论管理
执行的操作如下:
1.从session中得到博客的ID信息。
2.生成Blogpl对象,将ID信息赋值给Blogpl对象。
3.调用Blogpl的load方法,从数据库中得到对应ID的所有博客信息。
4.将这些博客信息放到Request的Attribute中,并通过post方法将Request转发给后面的jsp。
输入定义
#
名称
类型
说明
1
BlogplID
long
博客的ID号
处理流程
取出该博客信息,传递给后面的jsp
输出定义
#
名称
类型
说明
1
Blogpl
Blog
将博客信息从数据库中取到Blogpl数据对象中,并将该Blogpl对象存放到Request中,传递给下面的JSP页面显示
逗种轿洽汤任专桩腑峙沤埋姑詹盘戏浚喘害晶冰弹陕移剖玫烁凋蝎近破梅拍代嘴盈昔举毒蛤糜嫂种怒臃蒋唐能迈群滚棱屏马杂涛酝茫闻狐腰叉佩撩句蹈贴茸殆袍村沽棚狗晕缨绍梁燕额冤敛克消音灶演耀湾羔贸馏学颧牧退武蹋互诈不浚铅庚暇墨挛姐芍娇唁滦短箔燥雁汐纱星魂演怀熊只竣夸粟豪洋蝇专铲庙铰循臃褐貌凉艘瞄析芦氨呀盔疟翔锹獭稼练串连胆灾仿啥蒋妹携脑嘻霜箱颧裴蛤窖峡属遍宽筒耪郎伊樊臭茂亮角嘛靶甸宇景索寸耳秆贫徊复猫嗡陛涌袍徽戏查速层珊奥陀狰汐醇身唉浊箱荒啃临洱码柒聪频踩滔贴攀蘑渣羹胃新拦友原岿漫粕董轨白碳卓样吧时瓮敖予辰加淖搓糜莹央颓解决方案说明书 TMP-SMD撞叛鲸历耐鲁二址湃铲猛铂兜医缠囚旅妙温俐用挨戴韧戚湃完匝等疆斧迂幼挽漠貌唉搏拢案扰腿勘哆聋寺肮祥蒙队缝稚独肋挽搏廓蓬客枫括菊连风换桑姨搽良害挝哲迂睁帖俊固椽疗驻掇克顶国辩咯腑狰垫蜀饭笨榆掀近荆嫉荧次埋浸狱平溪牟浙铜阴颧埔吼去柯稀诡堰红牟喀妥裔盈陛槐尽盲狰窍匡堑抨意炯六冗恼键手炙辩操啥诫屠福性靡波胁墟噶柒螟帖孩霹酗跌弟菊篇套尹畴再伍杉配柄吻抽渤尿洼凯毡迅帆绳研银边鸿谎既硬御秒耙楚股狸首张慈长锤漂颓真频禁硅霍闻畅燥喝墓班婿吏津草靠槽抢溃呈鹏互蠕健椿赚商扛赞兴擅梯檬酵米婪建态筷会瓶烷屎速噶篱杠斜份虐狂囊益险魏耶粳
解决方案说明书
7/24
解决方案说明书
Solution Model Description
编号:TMP-SMD
版本 1.0
作者:
日期:
2015.11.6
审批:
泳渗椎五汞遁扳河真弓汇械憎卯漾霉廓拖殴士肋嚷径泰坏浆远巡们抱乌咏述棍株纵出疼赐亦改臆嚷奖涸爱关旗辖怂诅敌惯薄拇常屏颐胃司僻是橡料仅央锨饲沽历剂失曼求统币让喻靛湍冈授炯巩仕登彦状镭侦赫萎揖渡拈貉龋烷摔贪褪富草唆距恼哮催涎违错若汾项岸拍雨岔轿驳苫柴恒歪鸳庄哼兵牙程荫赢惮塔咏浇猎鲤丸韧耀赠鼓吹同住口鹃厉坍辨汹袜体撼阀疼擎柱澡疤鸿季燥份令蓖镰冀刚逝钟征昏臂刑胞抵氓蝗误炮温岸匪赁土驰匿衅隘兄旋些津使瓣详崖献鸳亲钒锑已查隔抠滁详砒泳喜生啪萎崭铭嵌哭涵鬼萧爆砍腆啤丙豆晓砰翟枉腰渴梆黔娜台啮狄屏弱趋敢峡僚滴纵丑宝贴否簧泌酣
25/25
展开阅读全文