员工登录
该接口用于 员工或管理员 登录系统,成功登录后返回 token,后续请求需在请求头 Authorization 中携带该 token 进行身份验证。  
POST http://{ip}:{port}/app/login.pcUserLogin
POST  
| 参数名称 | 必填 | 类型 | 描述 | 默认值 | 
|---|---|---|---|---|
| APP-ID | 是 | String | 应用ID,由系统分配 | 无 | 
| TRANSACTION-ID | 是 | String | 请求流水号(建议使用UUID) | 无 | 
| REQ-TIME | 是 | String | 请求时间(格式:YYYYMMDDhhmmss) | 
无 | 
| JAVA110-LANG | 否 | String | 语言(如 zh-cn) | 
zh-cn | 
| USER-ID | 否 | String | 调用用户ID(未登录时传 -1) | 
-1 | 
{
  "username": "wuxw",
  "passwd": "xxxx"
}
| 参数名称 | 必填 | 类型 | 描述 | 示例值 | 
|---|---|---|---|---|
| username | 是 | String | 用户名(物业系统分配) | wuxw | 
| passwd | 是 | String | 密码(物业系统分配,部分场景会MD5加密) | xxxx | 
密码加密逻辑
AuthenticationFactory.passwdMd5(loginInfo.getString("passwd"))
    /**
     * 用户密码 md5签名
     *
     * @param inStr
     * @return
     */
    public static String passwdMd5(String inStr) throws NoAuthorityException {
        return md5(md5(inStr + "hc@java110"));
    }
{
  "code": 0,
  "msg": "成功",
  "data": {
    "userId": "123123",
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    "userName": "wuxw"
  }
}
{
  "code": 401,
  "msg": "用户或密码错误"
}
| 参数名称 | 类型 | 描述 | 
|---|---|---|
| code | int | 返回码(0 成功,非 0 失败) | 
| msg | String | 返回信息 | 
| data | Object | 返回数据(登录成功时包含用户信息) | 
| data.userId | String | 用户ID | 
| data.token | String | 身份认证令牌(需在后续请求头中携带) | 
| data.userName | String | 用户名 | 
| 错误码 | 描述 | 解决方案 | 
|---|---|---|
| 0 | 成功 | - | 
| 401 | 用户名或密码错误 | 检查输入或联系管理员 | 
| 48002 | 商户限制登录 | 联系管理员解除限制 | 
| 500 | 系统内部错误 | 检查日志或联系技术支持 | 
curl -X POST \
  http://localhost:8080/app/login.pcUserLogin \
  -H 'APP-ID: your_app_id' \
  -H 'TRANSACTION-ID: 123e4567-e89b-12d3-a456-426614174000' \
  -H 'REQ-TIME: 20231010120000' \
  -H 'Content-Type: application/json' \
  -d '{"username":"wuxw","passwd":"admin"}'
username 和 passwd 是否为空。  username 查询用户,若不存在则尝试按手机号(tel)查询。  ADMIN 或 STAFF 登录)。state=48002),则拒绝登录。  user(用户信息)、store_user(商户用户关联)  user_login(登录日志)备注:
APP-ID 需提前在系统后台申请。  token 需在后续请求头中以 Authorization: Bearer {token} 形式传递。