JDK 1.8
需要 connect J。如果使用了mysql的安装器的话就更新一下。 创建一个连接,端口是3306(基本是默认的) 然后账号密码设置
账号:root
密码:mysqlmysql
创建一个schema,名字是"distributedairconditioner" 然后执行"databasesTable.sql"
下载idea付费版,申请学生账号。 在github上下载最新的代码,然后用idea打开这个文件夹(open->pom.xml)
- 把自己编写的前端放到resoure文件下加(覆盖)
- 在idea中运行项目
网页端输入账号密码,服务器端进行验证并跳转。 分为4种角色,有5种情况
- 密码错误。跳转error.html。该页面执行一个alart警告,然后会自动重定向到登陆页面
- 管理员登陆。管理员账号固定为:admin。登陆成功后跳转管理员页面:admin.html
- 经理登陆。经理账号固定为:manager。登陆成功后转跳管理员页面:manager.html
- 前台服务人员登陆。账号固定为:receptionist。登陆后转跳前台服务人员页面:receptionist.html
- 房客登陆。成功后转跳房客温度控制页面:user.html
url: /login
methon: get
数据:(json格式)
username=xxxxxxx,
password=xxxxxxx
管理员首先点击按钮开启主机电源,然后开始设置系统参数,设置完毕后点击开始启动空调系统(此处希望通过前端界面实现 通电->设置参数->启动 的三层递进逻辑,防止系统异常) 管理员界面需要能够实时检测各房间状态,前端定时向后端发送请求获取房间状态信息(在请求中需指明房间ID,即0~3,后端每次只会根据房间ID返回指定单个房间的信息,故前端需要发送多次请求)
一、开机
url: /admin/powerOn
methon:GET
body:
无
response: (可忽略)
{ "statue" : "READY"}
二、设置参数
url: /admin/setParams
methon:POST
body: json格式,需要包含的参数如下
(value="defaultRoomTemp") int ,
(value="tempHighLimit") int ,
(value="tempLowLimit") int ,
(value="defaultTargetTemp") int ,
(value="feeRateHigh") double ,
(value="feeRateMiddle") double ,
(value="feeRateLow") double ,
(value="defaultFunSpeed") String ) //字符串, “LOW", "MIDDLE", "HIGH"三种
response: 可忽略
{
"defaultRoomTemp": 30,
"tempHighLimit": 30,
"tempLowLimit": 16,
"defaultTargetTemp": 24,
"feeRateHigh": 3,
"feeRateMiddle": 2,
"feeRateLow": 1,
"defaultFunSpeed": "MIDDLE",
"systemState": "READY",
"defaultFeeRate": 2
}
三、启动
url: /admin/startup
methon:GET
body:
无
response: (可忽略)
{ "statue" : "ON"}
四、监视房间状态
url: /admin/roomState/{roomID} //{roomID}字段直接替换为0~3之间的房间ID号
methon:GET
body:
无
response: (json格式)
{
"nowTemp": 0, //当前室温
"tarTemp": 0,
"funSpeed": "OFF",
"feeRate": 0,
"totalFee": 0,
"runningTime": 0, //单位为秒
"inService": false, //是否服务
"powerOn": false //是否开机
}
一、给用户办理入住,包括
- 查找空房
- 如果有空房给用户创建账号,并初始化账单 如果返回的userid=-1说明没有申请成功,如果是null则申请成功 二、退房 前台给系统房间号,系统进行退房的处理,如果退房成功返回"success",否则返回"error"
只有退房后才能进行查询账单服务。 三、查询详单 详单=每次服务对象的记录, 四、查询账单 账单=本次房客需要支付的钱。 四、退房 停止房间的账单计费
我们是这么理解详单与账单:当一个房客入住4天时,可能每隔一天酒店会给顾客两天消费的详单,但是最终在顾客只需要一张账单。
一、办理入住
url: /receptionist/adduser
methon:post
body:
idnumber : xxxxxxx //我想的是手机号码作为顾客的登陆账号,或者是身份证都行
response:(json格式)
{
"userid": null, //这个userid是没用的……
"username": "211376",
"password": "8728",
"roomid": 1 //房间id
}
二、办理退房
url: /receptionist/checkout
method: post
body:{
roomid : xx
}
response:
{ "statue" : "success"/"error"}
三、请求详单
url: /receptionist/createrdr
methon:get
body:
roomid : xxxxx
starttime : "yyyy-mm-ddThh:mm:ss" //格式严格,字符T表示一个分割,这是java默认的格式
stoptime : "yyyy-mm-ddThh:mm:ss"
response:(json格式)
{
"serviceDetailList": [
{
"servicedetailid": 1,
"starttime": "2019-01-01T01:00:00",
"stoptime": "2019-01-01T01:00:00",
"roomid": 1,
"funspeed": "3",
"feerate": 4,
"fee": 5
},
{
"servicedetailid": 2,
"starttime": "2019-01-01T01:00:00",
"stoptime": "2019-01-01T01:00:00",
"roomid": 1,
"funspeed": "7",
"feerate": 8,
"fee": 9
}
]
}
四、请求账单
http
url: /receptionist/createinvoice
methon:get
body:
roomid : xxxxx
starttime : "yyyy-mm-ddThh:mm:ss" //格式严格,字符T表示一个分割,这是java默认的格式
stoptime : "yyyy-mm-ddThh:mm:ss"
response:(json格式)
{
"billid": 1,
"starttime": "2019-01-01T01:00:00",
"stoptime": "2019-01-01T01:00:00",
"roomid": 1,
"userid": 1,
"totalfee": 2,
"runningtime": 3,
"schedulecounter": 4,
"detailedrecordcounter": 5,
"poweroncounter": 6,
"changetempcounter": 7,
"changefuncounter": 8
}
经理的功能是查看报表。报表=房间的账单的统计信息。 说明:输入的时间为查询的日期 当选择日报时只返回日期对应的报表, 当选择月报时返回日期对应的月份的报表 当选择年报时返回日期对应的年份的报表
url:/manager/queryreport
methon:get
body:
list_Roomid:1
list_Roomid:2
type_Report : 0/1/2 // 0 日报,1周报 ,2年报
year: yyyy //固定4位数字,表示查询的起始年份
month: mm //固定2位数字,表示查询的起始月份
day: dd //固定2位数字,表示查询的起始日期
response(json格式):
[
{
"roomid": 1,
"totalfee": 0,
"runningtime": 0,
"scheduleCounter": 0,
"detailedRecordCounter": 0,
"powerOnCounter": 0,
"changetempcounter": 0,
"changefuncounter": 0
},
{
"roomid": 2,
"totalfee": 0,
"runningtime": 0,
"scheduleCounter": 0,
"detailedRecordCounter": 0,
"powerOnCounter": 0,
"changetempcounter": 0,
"changefuncounter": 0
}
]
p.s. 代码提供了另一个接口,但是老师要求是的是日报,周报,年报,所以这个接口似乎没用,如果你们前端想写漂亮一点也行。
url:/manager/queryreportTwo
methon:get
body:
list_Roomid:1
list_Roomid:2
startTime: 2019-01-01T00:00:00
stopTime: 2019-01-01T23:59:59
response跟上面的请求是一样的。
顾客页面需要向顾客提供开机、调温、调风、关机功能,并能实时展示当前室温、风速、总费用等状态(定时向后端请求),数据呈现的样式由前端进行界面设计,后端会提供接口返回当前房间的所有状态信息 为了区分不同顾客和房间,要求前端在顾客每一次请求的HTTP body中加上顾客的roomID参数
一、开空调
http
url: /customer/requestOn
methon:POST
body:
(value="roomID") int )
response: 可忽略
{ "statue" : "success"/"Error: It's powerOn."}
二、关空调
http
url: /customer/requestOff
methon:POST
body:
(value="roomID") int )
response: 可忽略
{ "statue" : "success"/"Error: It's powerOff."}
三、获取房间状态信息
http
url: /customer/requestRoomState
methon:GET
body:
(value="roomID") int )
response: 与管理员部分监视房间状态接口的返回值一致
四、调温
http
url: /customer/changeTargetTemp
methon:POST
body:
(value="roomID") int )
(value="targetTemp") int )
response: 可忽略
五、调风
http
url: /customer/changeFanSpeed
methon:POST
body:
(value="roomID") int )
(value="targetFanSpeed") String ) //字符串, “LOW", "MIDDLE", "HIGH"三种
response: 可忽略