河工APP文档

数据API接口

1,登录

访问路径URL:http://192.168.2.156:8089/api/Login

请求方式:POST

请求头内容:

{
    'Accept': 'application/json',
    'Content-Type': 'application/json',
}

请求参数:

name 登录用户名
pwd 登录密码
返回值:

{
    success:true,
    id:"用户UID",
    token:"用户access_token"
}

2,获取Room数据

访问路径URL:http://192.168.2.156:8089/api/Room

请求方式:GET

请求头内容:

{
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    'timespan':"数据时间戳",
}

timespan为当前数据时间戳,用于更新数据信息。第一次请求是值为0。非第一次请是,填写上次数据返回的时间戳。

请求参数:无

返回值:

{
    success:true,
    timespan:'当前数据时间戳',//下次刷新数据是,需要提交这个时间戳
    datalist:[
        {
            roomID:1,
            roomName:'101',
            roomType:0,
            roomTypeName:'宿舍',
            buildingID:1,
            buildingName:'1号楼',
            className:'16移动应用开发',
            teacherName:'小李',
            state:'',//此字段非业务数据,只是标注当前数据处理状态'add','updata','delete'
        },
        ...
    ]
}

3,获取检查项

请求路径URL:http://192.168.2.156:8089/api/CkeckItem

请求方式:GET

请求头内容:

{
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    'timespan':"时间戳",
}

请求参数:无

返回值:

{
    success:true,
    timespan:'当前数据时间戳',//下次刷新数据是,需要提交这个时间戳
    datalist:[
        {
            checkID:1,
            checkName:'地面卫生',
            roomType:0,
            sectionID:0,
            sectionName:'常规检查项',
            state:'',//此字段非业务数据,只是标注当前数据处理状态'add','updata','delete'
        },
        ...
    ]
}

4,提交检查结果

请求URL:http://192.168.2.156:8089/api/CheckRecord

请求方式:POST

请求头内容:

{
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    'uid':'你的uid',
    'token':'你的token',
}

提交参数,检查结果数组,

[
    checkResult1,
]

提交元数据说明

{
    room:{
        roomID:1,
    },
    checkItems:[
        {
            checkID:1,
            checkState:true,
            checkImage:'base64格式的图片',//可选字段
        },
        ...
    ],
    result:true,
    date:'时间字符串,格式为YYYY-MM-DD'
}

返回值:

{
    success:true,
}

5,使用方法

post提交的数据需要使用JSON进行编码

//1,首先构造请求头数据对象
const headers = {
  'Accept': 'application/json',
  'Content-Type': 'application/json',
};

//2,构造post参数对象
const postValues = {
  name: username,
  pwd: password,
};

//3,对post参数进行JSON编码
const jsonData = JSON.stringify(postValues);

//4,开始post请求
fetch(url, {
  method: 'POST',
  headers:headers,
  body: jsonData,
})
.then((response) => response.json())
.then((responseJson) => {
  console.log(responseJson);
})
.catch((error) => {
  console.error(error);
});

数据服务层设计稿

数据层服务是整个App的基础,App的所有页面和功能都是基于数据服务进行构建的。

数据服务是开发中的第一步,非常重要,关于数据服务的设计方法,之前已经讲解过,这里只重点强调两种情况:

同步数据操作
异步数据操作
数据操作过程由数据服务对象Manager进行封装,对于操作过程,有同步和异步的区别。除内存操作为,其余所有操作都为异步操作。例如:

  • Storage
  • Fetch
  • SQLite
  • 文件I/O

封装同步数据操作时,数据操作结果通过方法返回值进行返回。

封装异步数据操作时,数据操作结果通过事件回调函数携带的参数进行返回。

1,设计元数据

元数据是App中基础业务数据,不可再分割。一个App根据业务需要,可能需要多个元数据支撑。

更具业务分析,此App需要4种元数据:

  • UserInfo
  • Room
  • CheckItem
  • CheckResult

UserInfo

{
    uid:'xxxxxx',
    token:'xxxxxx',
}
字段说明

字段名 作用  备注
uid 用户唯一ID  通过登录请求获取
token   用户权限令牌  通过登录请求获取

Room


{
    roomID:1,
    roomName:'101',
    roomType:0,
    roomTypeName:'宿舍',
    buildingID:1,
    buildingName:'1号楼',
    className:'16移动应用开发',
    teacherName:'小李',
}

字段说明:

字段名作用备注
roomID房间主键ID房间唯一标识,自增
roomName房间名
roomType房间类型ID0为宿舍,1为教室
roomTypeName房间类型名称
buildingID房间所属建筑物ID
buildingName房间所属建筑物名称
className房间所属班级
teacherName房间所属辅导员

CheckItem


{
    checkID:1,
    checkName:'地面卫生',
    roomType:0,
    sectionID:0,
    sectionName:'常规检查项',
    checkResult:true,
}

字段说明:

字段名作用备注
checkID检查项ID唯一
checkName检查项名称
roomType检查项所属房间类型
sectionID检查项类别ID0为常规检查项,1为安全检查项
sectionName检查项类别名
checkResult检查结果true为合格,false为不合格

CheckResult

{
    id:1,
    room:room,
    checkItems:[
        checkItem,
        ...
    ],
    result:true,
    date:'时间字符串,格式为YYYY-MM-DD',
    submit:false,
}

字段说明:

字段名作用备注
id数据唯一标识数据库主键自增
room房间元数据对象
checkItems检查结果数据组,数组中每个元素为检查项元数据
result房间检查结果已经检查规则对检查项进行计算,得出检查结果
date检查时间
submit检查结果是否上传服务器true为未上传,false为已上传

2,设计数据服务对象

数据服务对象的作用是对元数据的相关操作进行封装。依照元数据的设计,我们设计4个数据服务对象

  • UserManager
  • RoomManager
  • CheckItemManager
  • CheckResultManager

在设计数据服务对象时,要从以下两个方面进行考虑

  • 需要为上层容器组件提供哪些数据
  • 需要为上层容器组件提供哪些功能
  • 在上传组件调用数据服务对象是有哪些数据交互

我们首先强调一个原则,各个数据服务对象直接是互不知晓的。如果遇到一个数据服务对象需要使用另一个数据服务对象中的数据的情况,我们需要将数据保存在系统级服务中:stroage或sqlite中。

UserManager

//登录功能
login(user,loginResultCallBack);

参数说明:
user,登录所需的数据,为一个对象
{
    username:'用户输入的用户名',
    pwd:'用户输入的密码'
}

loginResultCallBack,登录完成事件回调函数。
(result,message)=>void
result:登录结果,true为成功,false为失败。
message:失败原因,当成功时,值为空。

RoomManager

//更新本地Room数据
updateRoom(resultCallBack);

参数说明:
resultCallBack,为更新结果回调函数
(result,message)=>void
result:更新结果,true为成功,false为失败。
message:失败原因,当成功时,值为空。
//获取房间所有类型
getRoomTypes(callBack);

参数说明:
callBack为查询结果回调函数,类型为(roomTypes,message)=>void
roomTypes,查询结果数组,数组中每个元素为roomType对象
{
    roomTypeID:0,
    roomTypeName:'xxx',
}
当查询失败时,roomTypes值为null
message为失败原因
//通过房间类型,获取该类型下的所有建筑物
getBuildings(roomTypeID,callBack);

参数说明:
roomTypeID:房间类型ID

callBack为查询结果回调函数,类型为(buildings,message)=>void
buildings,查询结果数组,数组中每个元素为roomType对象
{
    buildingName:'xxx',
}
当查询失败时,buildings值为null
message为失败原因
//通过房间类型和建筑物ID获取所有房间
getRooms(roomTypeID,buildingName,callBack);

callBack为查询结果回调函数,类型为(rooms,message)=>void
rooms,查询结果数组,数组中每个元素为rooms对象
当查询失败时,rooms值为null
message为失败原因
CheckItemManager
//更新本地CheckItem数据
updateCheckItem(resultCallBack);

参数说明:
resultCallBack,为更新结果回调函数
(result,message)=>void
result:更新结果,true为成功,false为失败。
message:失败原因,当成功时,值为空。
//通过房间对象,获取相应的检查项
getCheckItems(room,callBack);

参数说明
room:room元数据对象

callBack:为查询结果回调函数,类型为(checkItems,message)=>void
checkItems,查询结果数组,数组中每个元素为checkItems对象
当查询失败时,checkItems值为null
message为失败原因

CheckResultManager

//添加检查结果
addCheckResult(checkResult,resultCallBack);

参数说明
checkResult:检查结果元数据

resultCallBack,为操作结果回调函数
(result,message)=>void
result:更新结果,true为成功,false为失败。
message:失败原因,当成功时,值为空。
//保存修改后的检查结果
saveCheckResult(checkResult,resultCallBack);

参数说明
checkResult:检查结果元数据

resultCallBack,为操作结果回调函数
(result,message)=>void
result:更新结果,true为成功,false为失败。
message:失败原因,当成功时,值为空。
//删除检查结果
deleteCheckResult(checkResultIDs,resultCallBack);

参数说明
checkResultIDs:检查结果ID数组

resultCallBack,为操作结果回调函数
(result,message)=>void
result:更新结果,true为成功,false为失败。
message:失败原因,当成功时,值为空。
//根据roomType获取相应检查结果
getCheckResults(roomType,resultCallBack);

参数说明
roomType:房间类型ID

resultCallBack,为操作结果回调函数
(checkResults,message)=>void
checkResults:当前类型下的检查结果数组,数组中每一个元素为checkResult元数据对象
message:失败原因,当成功时,值为空。
//提交检查结果到服务器
postCheckResults(checkResultIDs,resultCallBack);

参数说明
checkResultIDs:检查结果ID数组

resultCallBack,为操作结果回调函数
(result,message)=>void
result:更新结果,true为成功,false为失败。
message:失败原因,当成功时,值为空。
//添加监听者,监听数据变化事件
addListener(callBack);

参数说明
callBack,为操作结果回调函数,当数据发送变化时会调用
(void)=>void
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值