| 项目 | APP端 | 微信小程序端 |
|---|---|---|
| 域名 | jsapp.ezhupei.com |
jswx.ezhupei.com |
| API基础路径 | /pdapp/res/jswjw/ |
/pdapp/res/jswjw/wx/ |
| 认证方式 | userFlow 参数(登录获取) |
token 头 + SESSION/Admin-Token Cookie |
| 内容类型 | application/x-www-form-urlencoded; charset=UTF-8 |
同左 |
| 登录方式 | 账号密码 | 微信OAuth |
POST https://jsapp.ezhupei.com/pdapp/res/jswjw/login
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| userCode | String | 是 | 用户名 |
| userPasswd | String | 是 | 密码 |
| uuid | String | 是 | 设备UUID(首次生成后持久化保存) |
| systemName | String | 是 | 固定值 "android" |
| versionNumber | String | 是 | APP版本号,如 "2.0.47" |
成功响应 (resultId=200):
{
"resultId": 200,
"resultType": "success",
"dataCount": 0,
"userInfo": {
"userFlow": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"userName": "张三",
"userPhone": "138****0000",
"userSex": "男",
"roleId": "Student",
"roleName": "学员",
"deptFlow": "xxx",
"deptName": "内科",
"orgFlow": "BYYXXXXXXX",
"orgName": "XX市人民医院",
"token": "a1b2c3d4...",
"isZJ": "Y",
"isChargeOrg": "N",
"isVerify": "Y",
"isNdks": "N",
"startDate": "2024-09-01",
"endDate": "2026-08-31",
"trainingYears": "TwoYear",
"trainingSpeName": "助理全科",
"trainingDays": "730",
"schDays": "300",
"schProgress": "41",
"sessionNumber": "2024"
},
"depts": [
{ "deptFlow": "xxx", "deptName": "内科" }
],
"roles": [
{ "roleId": "Student", "roleName": "学员" }
],
"isStrongPasswd": "Y",
"isRecruit": "N",
"hasNotReadInfo": "Y"
}失败响应:
{
"resultId": 500,
"resultType": "用户名或密码错误"
}登录后
userFlow是后续所有接口的认证凭据,作为参数传递。
POST https://jsapp.ezhupei.com/pdapp/res/jswjw/studentSignIn
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| userFlow | String | 是 | 登录后获取的用户唯一标识 |
响应:
{
"resultId": 200,
"resultType": "success",
"count": 0, // 当日已签到次数, 0=未签到
"workingDaySign": "Y", // "Y"=工作日, "N"=非工作日
"nowDay": "2026-06-12", // 当前日期
"orgFlow": "BYYXXXXXXX",
"orgName": "XX市人民医院",
"signList": [ // 当日签到记录
{
"attendLocal": "江苏省XX市XXX",
"attendTime": "08:30",
"order": 1,
"selfRemarks": ""
}
],
"orgAddresses": [ // 允许签到的机构地址(APP端仅用于客户端校验)
{
"latitude": "32.xxxx",
"longitude": "119.xxxx",
"orgAddress": "XX市人民医院",
"scopeLength": "500", // 允许范围(米)
"isRange": true
}
]
}APP端的位置校验在客户端完成(Haversine公式计算距离),服务端不校验坐标。
POST https://jsapp.ezhupei.com/pdapp/res/jswjw/saveSignIn
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| userFlow | String | 是 | 用户唯一标识 |
| date | String | 是 | 签到日期,格式:2026-06-12 |
| time | String | 是 | 签到时间,格式:HH:mm |
| local | String | 是 | 签到地点文字描述 |
| remark | String | 否 | 备注,可为空 |
| workingDaySign | String | 是 | "Y"=工作日, "N"=非工作日 |
注意:APP端 不需要
lng/lat参数,位置校验在客户端完成。
成功响应:
{
"resultId": 200,
"resultType": "success",
"dataCount": 0
}失败响应:
{
"resultId": 500,
"resultType": "错误信息"
}GET https://jsapp.ezhupei.com/pdapp/res/jswjw/version
响应:
{
"resultId": 200,
"data": {
"androidVersion": "2.0.47",
"androidVersionCode": "2047",
"androidURL": "https://xxx/jszp.apk",
"onlineCountNum": "123",
"updateDesc": "更新说明"
}
}- 域名:
jswx.ezhupei.com - 路径前缀:
/pdapp/res/jswjw/wx/ - 认证:
token请求头 +SESSION/Admin-TokenCookie - 微信AppID:
wxXXXXXXXXXXXXXXXX
POST https://jswx.ezhupei.com/pdapp/api/wx/appid
响应: {"msg":"get appid successfully","code":"200","data":"wxXXXXXXXXXXXXXXXX"}
与APP端相同,但需要 token 头和 Cookie 认证。
与APP端的关键差异:
| 参数 | 小程序 | APP |
|---|---|---|
| workingDaySign | 工作日/非工作日 |
Y/N |
| date格式 | 2026年06月12日 |
2026-06-12 |
| lng/lat | 必填(服务端校验) | 不需要 |
| 差异项 | APP端 | 微信小程序端 |
|---|---|---|
| 域名 | jsapp.ezhupei.com |
jswx.ezhupei.com |
| 路径前缀 | /pdapp/res/jswjw/ |
/pdapp/res/jswjw/wx/ |
| 认证方式 | userFlow 参数 |
token 头 + Cookie |
| 登录方式 | 账号密码 | 微信OAuth |
| workingDaySign | "Y"/"N" |
"工作日"/"非工作日" |
| date格式 | 2026-06-12 |
2026年06月12日 |
| 经纬度参数 | 不需要 | 必填 lng/lat |
| 位置校验 | 客户端校验 | 服务端校验 |