Commit cef79216032b88edb5b395e651cd2aaedf5705cd
1 parent
11da0a5c
Exists in
master
feat: 车辆维保API接口文档
Showing
2 changed files
with
2196 additions
and
0 deletions
Show diff stats
| ... | ... | @@ -0,0 +1,1406 @@ |
| 1 | +[toc] | |
| 2 | + | |
| 3 | +# 车辆维保对接API | |
| 4 | + | |
| 5 | +则一提供了不同规范的API,调用服务端API前,需了解开发前须知及调用流程。本文提供了调用则一服务端API示例,供开发者参考。 | |
| 6 | + | |
| 7 | +## 白名单 | |
| 8 | + | |
| 9 | +则一服务端API接口访问有IP白名单限制,需要接口调用方提供调用API的服务器IP地址。 | |
| 10 | + | |
| 11 | +## 数据加签 | |
| 12 | + | |
| 13 | +采用md5(32位小写)算法生成签名 | |
| 14 | +appKey(则一提供) + appSecret(则一提供) + timestamp(当前时间戳毫秒) + nonce(6位随机码大小写字母数子组合) + data(请求数据) | |
| 15 | + | |
| 16 | +## 数据加密 | |
| 17 | + | |
| 18 | +数据加密采用AES算法 | |
| 19 | +加密模式: CBC | |
| 20 | +填充方式:PKCS5Padding | |
| 21 | +偏移量:iv(则一提供) | |
| 22 | +加密内容:appKey(则一提供) + timestamp(当前时间戳毫秒) + nonce(6位随机码大小写字母数子组合) + data(加密数据) | |
| 23 | +密钥: appSecret(则一提供) | |
| 24 | +输出:base64 | |
| 25 | +字符集:utf-8 | |
| 26 | +注:无敏感数据则无需加密 | |
| 27 | + | |
| 28 | +## 获取访问凭证 | |
| 29 | + | |
| 30 | +### 概述 | |
| 31 | + | |
| 32 | +调用则一服务API时,都需要先获取对应权限类型的访问凭证accessToken。访问凭证(accessToken)是由则一权限系统颁发的,用来校验调用者的身份信息,确保调用者具有要执行的操作的权限。 | |
| 33 | +**说明**: 在使用accessToken时,请注意: | |
| 34 | + | |
| 35 | +* accessToken的有效期默认为30天,有效期内重复获取会返回相同结果,过期后获取会返回新的accessToken。 | |
| 36 | +* 开发者需要缓存accessToken,用于后续接口的调用。不能频繁调用获取accessToken接口,否则会受到频率拦截。 | |
| 37 | +* 当调用业务API时,如果返回状态码为401,则说明accessToken不正确或已过期,这时需要重新获取accessToken后再调用对应的API。 | |
| 38 | + | |
| 39 | +### 接口信息 | |
| 40 | + | |
| 41 | +#### 请求方式: | |
| 42 | + | |
| 43 | +post | |
| 44 | + | |
| 45 | +#### 请求地址: | |
| 46 | + | |
| 47 | +* 生产:https://gw.shjiuze.cn/auth-service-api/login/password | |
| 48 | +* 测试:https://test.shjiuze.cn/auth-service-api/login/password | |
| 49 | + | |
| 50 | +#### Body参数 | |
| 51 | + | |
| 52 | +| 名称 | 类型 | 必填 | 示例值 | 描述 | | |
| 53 | +| -------- | ------ | ---- | ----------- | ---------------- | | |
| 54 | +| username | String | 是 | zhangsan | 用户名,则一提供 | | |
| 55 | +| password | String | 是 | password123 | 密码,则一提供 | | |
| 56 | + | |
| 57 | +#### 返回参数 | |
| 58 | + | |
| 59 | +| 名称 | 类型 | 示例值 | 描述 | | |
| 60 | +| ------------------------------ | ---------- | -------------------------------- | -------------------------------------------------- | | |
| 61 | +| success | boolean | true | 成功标识: true 成功,false 失败 | | |
| 62 | +| businessException | boolean | false | 业务异常标识: true 业务异常,false 正常 | | |
| 63 | +| errorCode | String | 200 | 错误码: 200 业务异常,500 系统异常, 空表示无错误 | | |
| 64 | +| message | String | 订单号不能为空 | 错误信息,无错误则返回空 | | |
| 65 | +| result | ZYTokenDto | | accessToken结果数据 | | |
| 66 | +| accessToken | String | 000626f15b4b41bba6fe56216a5d2f73 | accessToken | | |
| 67 | +| expiresIn | Integer | 2060 | 有效期限单位秒,accessToken在2060秒后过期 | | |
| 68 | +| tokenType | String | bearer | token类型 | | |
| 69 | + | |
| 70 | +#### 请求示例 | |
| 71 | + | |
| 72 | +##### Http方式 | |
| 73 | + | |
| 74 | +```http | |
| 75 | +POST /auth-service-api/login/password HTTP/1.1 | |
| 76 | +Host:test.shjiuze.cn | |
| 77 | +Content-Type:application/json | |
| 78 | + | |
| 79 | +{ | |
| 80 | + "username" : "zeyi", | |
| 81 | + "password" : "test1111" | |
| 82 | +} | |
| 83 | +``` | |
| 84 | + | |
| 85 | +##### Java-sdk方式 [下载SDK](https://zeyi-tms-product.oss-cn-hangzhou.aliyuncs.com/file/jar/java-sdk/zy-java-sdk-1.0.0.jar) | |
| 86 | + | |
| 87 | +```java | |
| 88 | +public class Sample { | |
| 89 | + public static void main(String[] args_) { | |
| 90 | + String appKey = "appkey"; | |
| 91 | + String appSecret = "appSecret"; | |
| 92 | + ZYClient zyClient = new ZYClient(appKey, appSecret); | |
| 93 | + ZYTokenRequestDto zyTokenRequest = new ZYTokenRequestDto(); | |
| 94 | + zyTokenRequest.setUsername("zeyi"); | |
| 95 | + zyTokenRequest.setPassword("test1111"); | |
| 96 | + String body = gson.toJson(zyTokenRequest); | |
| 97 | + HttpResponseData httpResponseData = zyClient.doPost(Constants.TEST_HOST + Constants.TOKEN_PATH, body); | |
| 98 | + if(httpResponseData == null) { | |
| 99 | + throw new TokenException("则一Token请求失败,返回为空!"); | |
| 100 | + } | |
| 101 | + ZYResponse<ZYTokenDto> zyResponse = gson.fromJson(httpResponseData.getBody(), new TypeToken<ZYResponse<ZYTokenDto>>(){}.getType()); | |
| 102 | + if(!Boolean.TRUE.equals(zyResponse.isSuccess())) { | |
| 103 | + throw new TokenException("则一Token请求返回失败!" + zyResponse.getMessage()); | |
| 104 | + } | |
| 105 | + if(zyResponse.getResult() == null) { | |
| 106 | + throw new TokenException("则一Token请求返回失败,返回结果为空!" + zyResponse.getMessage()); | |
| 107 | + } | |
| 108 | + if(StringUtils.isBlank(zyResponse.getResult().getAccessToken())) { | |
| 109 | + throw new TokenException("则一Token请求返回数据异常,AccessToken为空!" + zyResponse.getMessage()); | |
| 110 | + } | |
| 111 | + // 结果 zyResponse.getResult(); | |
| 112 | + } | |
| 113 | +} | |
| 114 | +``` | |
| 115 | + | |
| 116 | +#### 返回示例 | |
| 117 | + | |
| 118 | +```json | |
| 119 | +{ | |
| 120 | + "success": true, | |
| 121 | + "businessException": false, | |
| 122 | + "errorCode": null, | |
| 123 | + "message": null, | |
| 124 | + "result": { | |
| 125 | + "accessToken": "64d7f367-609b-4f7d-a84d-a3d2a0b5ad85", | |
| 126 | + "expiresIn": 602105, | |
| 127 | + "tokenType": "bearer" | |
| 128 | + } | |
| 129 | +} | |
| 130 | +``` | |
| 131 | + | |
| 132 | +## 车辆报修 | |
| 133 | + | |
| 134 | +### 简要描述 | |
| 135 | + | |
| 136 | +· 车辆报修 | |
| 137 | + | |
| 138 | +### 请求URL | |
| 139 | + | |
| 140 | +· 车畅行提供 /vehicleRepair/repair | |
| 141 | + | |
| 142 | +### 请求方式 | |
| 143 | + | |
| 144 | +· POST | |
| 145 | + | |
| 146 | +### 请求示例 | |
| 147 | + | |
| 148 | +```json | |
| 149 | +{ | |
| 150 | + "code":"WBJL21071000044", | |
| 151 | + "licenseNumber":"鄂ARY348", | |
| 152 | + "trailerNumber":"辽BHC28挂", | |
| 153 | + "owner":"上海则一", | |
| 154 | + "brand":"东风", | |
| 155 | + "specification":"9.6", | |
| 156 | + "vanType":"厢车", | |
| 157 | + "driverName":"张三", | |
| 158 | + "driverMobile":"18888888888", | |
| 159 | + "vin":"21654564894984LK", | |
| 160 | + "engineNumber":"2156156", | |
| 161 | + "engineModel":"大众EA111", | |
| 162 | + "manufactureTime":"1642993757000", | |
| 163 | + "registrationTime":"1642993757000", | |
| 164 | + "mileage":100000, | |
| 165 | + "trafficCompulsoryInsuranceStartTime":"1642993757000", | |
| 166 | + "trafficCompulsoryInsuranceEndTime":"1642993757000", | |
| 167 | + "commercialInsuranceStartTime":"1642993757000", | |
| 168 | + "commercialInsuranceEndTime":"1642993757000", | |
| 169 | + "medallionInvalidTime":"1642993757000", | |
| 170 | + "monthMileage":100000, | |
| 171 | + "recentRepairTime":"1642993757000", | |
| 172 | + "vehicleObject":"车头", | |
| 173 | + "vehicleAddress":"湖北省随州市曾都区淅河镇002县道", | |
| 174 | + "vehicleAddressLng":"113.465168", | |
| 175 | + "vehicleAddressLat":"31.664137", | |
| 176 | + "orgName":"上海区", | |
| 177 | + "repairProjectList":[ | |
| 178 | + { | |
| 179 | + "name":"机油滤芯", | |
| 180 | + "number":1 | |
| 181 | + } | |
| 182 | + ] | |
| 183 | +``` | |
| 184 | + | |
| 185 | + | |
| 186 | +### 参数 | |
| 187 | + | |
| 188 | +| 参数名 | 必传 | 类型 | | 说明 | | |
| 189 | +| :---------------------------------- | ---- | ------- | ---- | ------------------------------- | | |
| 190 | +| code | 是 | string | | 维保单号 | | |
| 191 | +| licenseNumber | 是 | string | | 车牌号 | | |
| 192 | +| trailerNumber | 否 | string | | 挂车号 | | |
| 193 | +| owner | 是 | string | | 车辆所有人 | | |
| 194 | +| brand | 否 | string | | 品牌 | | |
| 195 | +| specification | 否 | string | | 车型 | | |
| 196 | +| vanType | 否 | string | | 车厢类型 | | |
| 197 | +| driverName | 是 | string | | 司机联系姓名 | | |
| 198 | +| driverMobile | 是 | string | | 司机联系电话 | | |
| 199 | +| vin | 是 | string | | 车架号 | | |
| 200 | +| engineNumber | 是 | string | | 发动机号码 | | |
| 201 | +| engineModel | 否 | string | | 发动机型号 | | |
| 202 | +| manufactureTime | 否 | string | | 出厂日期时间戳(毫秒) | | |
| 203 | +| registrationTime | 否 | string | | 注册日期时间戳(毫秒) | | |
| 204 | +| mileage | 否 | Integer | | 车辆里程数 | | |
| 205 | +| trafficCompulsoryInsuranceStartTime | 否 | string | | 交强险开始时间戳(毫秒) | | |
| 206 | +| trafficCompulsoryInsuranceEndTime | 否 | string | | 交强险结束时间戳(毫秒) | | |
| 207 | +| commercialInsuranceStartTime | 否 | string | | 商业险开始时间戳(毫秒) | | |
| 208 | +| commercialInsuranceEndTime | 否 | string | | 商业险结束时间戳(毫秒) | | |
| 209 | +| medallionInvalidTime | 否 | string | | 营运证失效日期时间戳(毫秒) | | |
| 210 | +| monthMileage | 否 | Integer | | 月行驶里程数 | | |
| 211 | +| recentRepairTime | 否 | string | | 最近维修日期时间戳(毫秒) | | |
| 212 | +| vehicleObject | 是 | string | | 维修对象(车头、车挂、车头+车挂) | | |
| 213 | +| vehicleAddress | 是 | string | | 车辆位置 | | |
| 214 | +| vehicleAddressLng | 是 | string | | 车辆位置经度 | | |
| 215 | +| vehicleAddressLat | 是 | string | | 车辆位置纬度 | | |
| 216 | +| orgName | 是 | string | | 车辆所属区域 | | |
| 217 | +| remark | 否 | string | | 备注 | | |
| 218 | +| repairProjectList | 是 | list | | 维修项目列表 | | |
| 219 | +| name | 是 | string | | 维修项目名称 | | |
| 220 | +| number | 是 | Integer | | 维修项目数量 | | |
| 221 | + | |
| 222 | +### 返回正常示例 | |
| 223 | + | |
| 224 | + { "success": true, "businessException": false} | |
| 225 | + | |
| 226 | +### 返回异常示例 | |
| 227 | + | |
| 228 | + { "success": false, "businessException": true, "errorCode": "200", "message": "XXX不存在!"} | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | +## 车辆维修确认 | |
| 233 | + | |
| 234 | +### 简要描述 | |
| 235 | + | |
| 236 | +· 车辆维修确认 | |
| 237 | + | |
| 238 | +### 请求URL | |
| 239 | + | |
| 240 | +· 测试环境:https://test.shjiuze.cn/vehicle-service-api/maintenance/repairConfirm | |
| 241 | + | |
| 242 | +· 生产环境:https://gw.shjiuze.cn/vehicle-service-api/maintenance/repairConfirm | |
| 243 | + | |
| 244 | +### 请求示例 | |
| 245 | + | |
| 246 | +#### Http方式 | |
| 247 | + | |
| 248 | +```http | |
| 249 | +POST /vehicle-service-api/maintenance/repairConfirm HTTP/1.1 | |
| 250 | +Host:test.shjiuze.cn | |
| 251 | +Content-Type:application/json | |
| 252 | + | |
| 253 | +{ | |
| 254 | + "code":"WBJL21071000044", | |
| 255 | + "repairFlag":true, | |
| 256 | + "expectRepairTime":"1642759341000", | |
| 257 | + "reason":"无可用站点", | |
| 258 | + "stationUser":"张大三", | |
| 259 | + "stationMobile":"13277788817", | |
| 260 | + "stationAddress":"湖北省武汉市东西湖区新城十六路88号2056物流园B33-34", | |
| 261 | + "stationLng":"113.461238", | |
| 262 | + "stationLat":"32.614137" | |
| 263 | +} | |
| 264 | +``` | |
| 265 | + | |
| 266 | +#### Java-sdk方式 [下载SDK](https://zeyi-tms-product.oss-cn-hangzhou.aliyuncs.com/file/jar/java-sdk/zy-java-sdk-1.0.0.jar) | |
| 267 | + | |
| 268 | +```java | |
| 269 | +public class Sample { | |
| 270 | + public static void main(String[] args_) { | |
| 271 | + String appKey = "appkey"; | |
| 272 | + String appSecret = "appSecret"; | |
| 273 | + String jsonData = "报修确认Body参数JSON数据"; | |
| 274 | + ZYClient zyClient = new ZYClient(appKey, appSecret); | |
| 275 | + HttpResponseData httpResponseData = | |
| 276 | +zyClient.doPost(Constants.TEST_HOST + "/vehicle-service-api/maintenance/repairConfirm", "accessToken", jsonData); | |
| 277 | + if(httpResponseData == null) { | |
| 278 | + throw new BusinessException("则一请求失败,返回结果为空!"); | |
| 279 | + } | |
| 280 | + if(httpResponseData.getStatus() == HttpURLConnection.HTTP_UNAUTHORIZED) { | |
| 281 | + //重新获取token再次请求 | |
| 282 | + httpResponseData = zyClient.doPost(Constants.TEST_HOST + | |
| 283 | + "/vehicle-service-api/maintenance/repairConfirm", "accessToken", jsonData); | |
| 284 | + } | |
| 285 | + } | |
| 286 | +} | |
| 287 | +``` | |
| 288 | + | |
| 289 | +### Headers参数 | |
| 290 | + | |
| 291 | +| 名称 | 类型 | 必填 | 示例值 | 描述 | | |
| 292 | +| ------------- | ------ | -------------------------- | -------------------------------- | ------------------------------------------------------------ | | |
| 293 | +| Authorization | String | 是 | Bearer a2c5680001 | 调用服务端API的应用凭证accessToken,通过调用获取访问凭证接口获取。 | | |
| 294 | +| appKey | String | 是 | 0867ef5f23ef446483749e19e1692b40 | 则一提供 | | |
| 295 | +| timestamp | String | 是 | 1643251533306 | 当前时间戳毫秒值 | | |
| 296 | +| nonce | String | 是 | gdst9t | 6位小写字母数字组合随机串 | | |
| 297 | +| sign | String | 是 | fa3ed338d6dfe18e7273c8692234ee70 | 签名:appKey(则一提供) + appSecret(则一提供) + timestamp + nonce(6位随机码) + data(body参数)通过md5(32位小写)算法生成 | | |
| 298 | + | |
| 299 | +### Body参数 | |
| 300 | + | |
| 301 | +| 参数名 | 必传 | 类型 | 说明 | | |
| 302 | +| ---------------- | ---- | ------- | -------------------- | | |
| 303 | +| code | 是 | string | 维保单号 | | |
| 304 | +| repairFlag | 是 | boolean | 是否可维修 | | |
| 305 | +| expectRepairTime | 否 | string | 预计维修时间戳(毫秒) | | |
| 306 | +| reason | 否 | string | 不可维修原因 | | |
| 307 | +| stationUser | 否 | string | 站点联系人 | | |
| 308 | +| stationMobile | 否 | string | 站点联系电话 | | |
| 309 | +| stationAddress | 否 | string | 站点地址 | | |
| 310 | +| stationLng | 否 | string | 站点地址经度 | | |
| 311 | +| stationLat | 否 | string | 站点地址纬度 | | |
| 312 | + | |
| 313 | +### 返回正常示例 | |
| 314 | + | |
| 315 | + { "success": true, "businessException": false} | |
| 316 | + | |
| 317 | +### 返回异常示例 | |
| 318 | + | |
| 319 | + { "success": false, "businessException": true, "errorCode": "200", "message": "XXX不存在!"} | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | +## 车辆维修清单 | |
| 324 | + | |
| 325 | +### 简要描述 | |
| 326 | + | |
| 327 | +· 车辆维修清单 | |
| 328 | + | |
| 329 | +### 请求URL | |
| 330 | + | |
| 331 | +· 测试环境:https://test.shjiuze.cn/vehicle-service-api/maintenance/repairList | |
| 332 | + | |
| 333 | +· 生产环境:https://gw.shjiuze.cn/vehicle-service-api/maintenance/repairList | |
| 334 | + | |
| 335 | +### 请求示例 | |
| 336 | + | |
| 337 | +#### Http方式 | |
| 338 | + | |
| 339 | +```http | |
| 340 | +POST /vehicle-service-api/maintenance/repairList HTTP/1.1 | |
| 341 | +Host:test.shjiuze.cn | |
| 342 | +Content-Type:application/json | |
| 343 | + | |
| 344 | +{ | |
| 345 | + "code":"WBJL21071000044", | |
| 346 | + "orderCode":"xxxx", | |
| 347 | + "discountedAmount":100, | |
| 348 | + "totalAmount":1000, | |
| 349 | + "paidAmount":900, | |
| 350 | + "mileage":121900, | |
| 351 | + "type":"大修", | |
| 352 | + "startTime":"1642993757000", | |
| 353 | + "completeTime":"1642993757000", | |
| 354 | + "fieldMaintainPictureUrl":"http://zeyi-tms-test.oss-cn-hangzhou.aliyuncs.com/image/app/9c019526-63fd-4a39-808a-744a452cca18.jpg", | |
| 355 | + "certificatePictureUrl":"http://zeyi-tms-test.oss-cn-hangzhou.aliyuncs.com/image/app/9c019526-63fd-4a39-808a-744a452cca18.jpg", | |
| 356 | + "mileagePictureUrl":"http://zeyi-tms-test.oss-cn-hangzhou.aliyuncs.com/image/app/9c019526-63fd-4a39-808a-744a452cca18.jpg", | |
| 357 | + "feeList":[ | |
| 358 | + { | |
| 359 | + "name":"工时费", | |
| 360 | + "amount":100, | |
| 361 | + "discountedAmount":0, | |
| 362 | + "remark":"" | |
| 363 | + }, | |
| 364 | + { | |
| 365 | + "name":"材料费", | |
| 366 | + "amount":950, | |
| 367 | + "discountedAmount":50, | |
| 368 | + "remark":"" | |
| 369 | + } | |
| 370 | + ], | |
| 371 | + "repairProjectList":[ | |
| 372 | + { | |
| 373 | + "name":"空调滤芯", | |
| 374 | + "number":2, | |
| 375 | + "unitPrice":275, | |
| 376 | + "discountedAmount":50, | |
| 377 | + "laborAmount":0, | |
| 378 | + "totalAmount":500, | |
| 379 | + "remark":"" | |
| 380 | + }, | |
| 381 | + { | |
| 382 | + "name":"机油滤芯", | |
| 383 | + "number":1, | |
| 384 | + "unitPrice":400, | |
| 385 | + "discountedAmount":0, | |
| 386 | + "laborAmount":100, | |
| 387 | + "totalAmount":500, | |
| 388 | + "remark":"" | |
| 389 | + }, | |
| 390 | + | |
| 391 | + { | |
| 392 | + "name":"工时费用", | |
| 393 | + "timeQuota":"1", | |
| 394 | + "unitAmount":100, | |
| 395 | + "totalAmount":100, | |
| 396 | + "remark":"" | |
| 397 | + } | |
| 398 | + | |
| 399 | + ] | |
| 400 | +} | |
| 401 | +``` | |
| 402 | + | |
| 403 | +#### Java-sdk方式 [下载SDK](https://zeyi-tms-product.oss-cn-hangzhou.aliyuncs.com/file/jar/java-sdk/zy-java-sdk-1.0.0.jar) | |
| 404 | + | |
| 405 | +```java | |
| 406 | +public class Sample { | |
| 407 | + public static void main(String[] args_) { | |
| 408 | + String appKey = "appkey"; | |
| 409 | + String appSecret = "appSecret"; | |
| 410 | + String jsonData = "推送维修清单Body参数JSON数据"; | |
| 411 | + ZYClient zyClient = new ZYClient(appKey, appSecret); | |
| 412 | + HttpResponseData httpResponseData = | |
| 413 | +zyClient.doPost(Constants.TEST_HOST + "/vehicle-service-api/maintenance/repairList", "accessToken", jsonData); | |
| 414 | + if(httpResponseData == null) { | |
| 415 | + throw new BusinessException("则一请求失败,返回结果为空!"); | |
| 416 | + } | |
| 417 | + if(httpResponseData.getStatus() == HttpURLConnection.HTTP_UNAUTHORIZED) { | |
| 418 | + //重新获取token再次请求 | |
| 419 | + httpResponseData = zyClient.doPost(Constants.TEST_HOST + | |
| 420 | + "/vehicle-service-api/maintenance/repairList", "accessToken", jsonData); | |
| 421 | + } | |
| 422 | + } | |
| 423 | +} | |
| 424 | +``` | |
| 425 | + | |
| 426 | +### Headers参数 | |
| 427 | + | |
| 428 | +| 名称 | 类型 | 必填 | 示例值 | 描述 | | |
| 429 | +| ------------- | ------ | -------------------------- | -------------------------------- | ------------------------------------------------------------ | | |
| 430 | +| Authorization | String | 是 | Bearer a2c5680001 | 调用服务端API的应用凭证accessToken,通过调用获取访问凭证接口获取。 | | |
| 431 | +| appKey | String | 是 | 0867ef5f23ef446483749e19e1692b40 | 则一提供 | | |
| 432 | +| timestamp | String | 是 | 1643251533306 | 当前时间戳毫秒值 | | |
| 433 | +| nonce | String | 是 | gdst9t | 6位小写字母数字组合随机串 | | |
| 434 | +| sign | String | 是 | fa3ed338d6dfe18e7273c8692234ee70 | 签名:appKey(则一提供) + appSecret(则一提供) + timestamp + nonce(6位随机码) + data(body参数)通过md5(32位小写)算法生成 | | |
| 435 | + | |
| 436 | +### Body参数 | |
| 437 | + | |
| 438 | +| 参数名 | 必传 | 类型 | 说明 | | |
| 439 | +| ---------------------------------------- | ---- | ---------- | ------------------------------------------ | | |
| 440 | +| code | 是 | string | 维保编码 | | |
| 441 | +| orderCode | 是 | string | 维保订单号 | | |
| 442 | +| discountedAmount | 否 | Bigdecimal | 折扣金额 | | |
| 443 | +| totalAmount | 是 | Bigdecimal | 总金额 | | |
| 444 | +| paidAmount | 是 | Bigdecimal | 应付金额 | | |
| 445 | +| mileage | 是 | Integer | 车辆里程数 | | |
| 446 | +| type | 是 | string | 维修类型 | | |
| 447 | +| startTime | 是 | string | 开始时间戳(毫秒) | | |
| 448 | +| completeTime | 是 | string | 完工时间戳(毫秒) | | |
| 449 | +| fieldMaintainPictureUrl | 是 | string | 清单照片url,多个图片用逗号分割 | | |
| 450 | +| certificatePictureUrl | 是 | string | 现场照片url,多个图片用逗号分割 | | |
| 451 | +| mileagePictureUrl | 是 | string | 里程照片url,多个图片用逗号分割 | | |
| 452 | +| feeList | 否 | list | 费用明细集合 | | |
| 453 | +| name | 是 | string | 名称(工时费、拖车费等等) | | |
| 454 | +| unit | 否 | string | 单位 | | |
| 455 | +| unitPrice | 否 | Bigdecimal | 单价 | | |
| 456 | +| number | 否 | Integer | 数量 | | |
| 457 | +| amount | 是 | Bigdecimal | 金额 | | |
| 458 | +| discountedAmount | 是 | Bigdecimal | 折扣金额 | | |
| 459 | +| remark | 否 | string | 备注 | | |
| 460 | +| repairProjectList | 否 | list | 维修项目集合(包含配件信息) | | |
| 461 | +| name | 是 | string | 项目名称 | | |
| 462 | +| unit | 否 | string | 单位 | | |
| 463 | +| number | 否 | Integer | 数量 | | |
| 464 | +| unitPrice | 是 | Bigdecimal | 单价 | | |
| 465 | +| discountedAmount | 否 | Bigdecimal | 折扣金额 | | |
| 466 | +| totalAmount | 是 | Bigdecimal | 合计金额 | | |
| 467 | +| timeQuota | 否 | Bigdecimal | 工时定额 | | |
| 468 | +| projectType | 是 | string | 维修项目类型(配件:materials\|项目:project) | | |
| 469 | +| remark | 否 | string | 备注 | | |
| 470 | + | |
| 471 | +### 返回正常示例 | |
| 472 | + | |
| 473 | + { "success": true, "businessException": false} | |
| 474 | + | |
| 475 | +### 返回异常示例 | |
| 476 | + | |
| 477 | +{ "success": false, "businessException": true, "errorCode": "200", "message": "xxx不存在!"} | |
| 478 | + | |
| 479 | + | |
| 480 | + | |
| 481 | +## 车辆保养 | |
| 482 | + | |
| 483 | +### 简要描述 | |
| 484 | + | |
| 485 | +· 车辆保养信息推送 | |
| 486 | + | |
| 487 | +### 请求URL | |
| 488 | + | |
| 489 | +· 车畅行提供/vehicleMaintain/maintain | |
| 490 | + | |
| 491 | +### 请求方式 | |
| 492 | + | |
| 493 | +· POST | |
| 494 | + | |
| 495 | +### 请求示例 | |
| 496 | + | |
| 497 | +```json | |
| 498 | +{ | |
| 499 | + "code":"WBJL21071000044", | |
| 500 | + "licenseNumber":"鄂ARY348", | |
| 501 | + "trailerNumber":"辽BHC28挂", | |
| 502 | + "owner":"上海则一", | |
| 503 | + "brand":"东风", | |
| 504 | + "specification":"9.6", | |
| 505 | + "vanType":"厢车", | |
| 506 | + "driverName":"张三", | |
| 507 | + "driverMobile":"18888888888", | |
| 508 | + "vin":"21654564894984LK", | |
| 509 | + "engineNumber":"2156156", | |
| 510 | + "engineModel":"大众EA111", | |
| 511 | + "manufactureTime":"1642993757000", | |
| 512 | + "registrationTime":"1642993757000", | |
| 513 | + "mileage":100000, | |
| 514 | + "trafficCompulsoryInsuranceStartTime":"1642993757000", | |
| 515 | + "trafficCompulsoryInsuranceEndTime":"1642993757000", | |
| 516 | + "commercialInsuranceStartTime":"1642993757000", | |
| 517 | + "commercialInsuranceEndTime":"1642993757000", | |
| 518 | + "medallionInvalidTime":"1642993757000", | |
| 519 | + "monthMileage":100000, | |
| 520 | + "recentMaintainTime":"1642993757000", | |
| 521 | + "vehicleObject":"车头", | |
| 522 | + "vehicleAddress":"湖北省随州市曾都区淅河镇002县道", | |
| 523 | + "vehicleAddressLng":"113.465168", | |
| 524 | + "vehicleAddressLat":"31.664137", | |
| 525 | + "orgName":"上海区", | |
| 526 | + "maintainProjectList":[ | |
| 527 | + {"name": "机油滤芯"} | |
| 528 | + ] | |
| 529 | +} | |
| 530 | +``` | |
| 531 | + | |
| 532 | + | |
| 533 | + | |
| 534 | +### 参数 | |
| 535 | + | |
| 536 | +| 参数名 | 必传 | 类型 | | 说明 | | |
| 537 | +| :---------------------------------- | ---- | ------- | ---- | ------------------------------- | | |
| 538 | +| code | 是 | string | | 维保单号 | | |
| 539 | +| licenseNumber | 是 | string | | 车牌号 | | |
| 540 | +| trailerNumber | 否 | string | | 挂车号 | | |
| 541 | +| owner | 是 | string | | 车辆所有人 | | |
| 542 | +| brand | 否 | string | | 品牌 | | |
| 543 | +| specification | 否 | string | | 车型 | | |
| 544 | +| vanType | 否 | string | | 车厢类型 | | |
| 545 | +| driverName | 是 | string | | 司机联系姓名 | | |
| 546 | +| driverMobile | 是 | string | | 司机联系电话 | | |
| 547 | +| vin | 是 | string | | 车架号 | | |
| 548 | +| engineNumber | 是 | string | | 发动机号码 | | |
| 549 | +| engineModel | 否 | string | | 发动机型号 | | |
| 550 | +| manufactureTime | 否 | string | | 出厂日期时间戳(毫秒) | | |
| 551 | +| registrationTime | 否 | string | | 注册日期时间戳(毫秒) | | |
| 552 | +| mileage | 否 | Integer | | 车辆里程数 | | |
| 553 | +| trafficCompulsoryInsuranceStartTime | 否 | string | | 交强险开始时间戳(毫秒) | | |
| 554 | +| trafficCompulsoryInsuranceEndTime | 否 | string | | 交强险结束时间戳(毫秒) | | |
| 555 | +| commercialInsuranceStartTime | 否 | string | | 商业险开始时间戳(毫秒) | | |
| 556 | +| commercialInsuranceEndTime | 否 | string | | 商业险结束时间戳(毫秒) | | |
| 557 | +| medallionInvalidTime | 否 | string | | 营运证失效日期时间戳(毫秒) | | |
| 558 | +| monthMileage | 否 | Integer | | 月行驶里程数 | | |
| 559 | +| recentMaintainTime | 否 | string | | 最近保养日期时间戳(毫秒) | | |
| 560 | +| vehicleObject | 是 | string | | 保养对象(车头、车挂、车头+车挂) | | |
| 561 | +| vehicleAddress | 是 | string | | 车辆位置 | | |
| 562 | +| vehicleAddressLng | 是 | string | | 车辆位置经度 | | |
| 563 | +| vehicleAddressLat | 是 | string | | 车辆位置纬度 | | |
| 564 | +| orgName | 是 | string | | 车辆所属区域 | | |
| 565 | +| remark | 否 | string | | 备注 | | |
| 566 | +| maintainProjectList | 是 | list | | 保养项目列表 | | |
| 567 | +| name | 是 | string | | 保养项目名称 | | |
| 568 | + | |
| 569 | +### 返回正常示例 | |
| 570 | + | |
| 571 | + { "success": true, "businessException": false} | |
| 572 | + | |
| 573 | +### 返回异常示例 | |
| 574 | + | |
| 575 | +{ "success": false, "businessException": true, "errorCode": "200", "message": "xxx不存在!"} | |
| 576 | + | |
| 577 | +### 备注 | |
| 578 | + | |
| 579 | +| 保养类型:保养项目 | | |
| 580 | +| ------------------ | | |
| 581 | +| 发动机: | | |
| 582 | +| 检查皮带 | | |
| 583 | +| 机油滤芯 | | |
| 584 | +| 干燥罐 | | |
| 585 | +| 柴油滤芯(细滤) | | |
| 586 | +| 空气滤芯 | | |
| 587 | +| 其他 | | |
| 588 | +| 机油 | | |
| 589 | +| 油水分离器(粗滤) | | |
| 590 | +| 空调滤芯 | | |
| 591 | +| 底盘润滑: | | |
| 592 | +| 变速箱齿轮油 | | |
| 593 | +| 后桥齿轮油 | | |
| 594 | +| 车轮保养: | | |
| 595 | +| 轮毂保养 | | |
| 596 | +| 挂车保养: | | |
| 597 | +| 轴承保养 | | |
| 598 | +| 轮毂保养 | | |
| 599 | +| 底盘润滑: | | |
| 600 | +| 打黄油 | | |
| 601 | + | |
| 602 | + | |
| 603 | + | |
| 604 | +## 车辆保养确认 | |
| 605 | + | |
| 606 | +### 简要描述 | |
| 607 | + | |
| 608 | +· 车辆保养确认 | |
| 609 | + | |
| 610 | +### 请求URL | |
| 611 | + | |
| 612 | +· 测试环境:https://test.shjiuze.cn/vehicle-service-api/maintenance/maintainConfirm | |
| 613 | + | |
| 614 | +· 生产环境:https://gw.shjiuze.cn/vehicle-service-api/maintenance/maintainConfirm | |
| 615 | + | |
| 616 | +### 请求示例 | |
| 617 | + | |
| 618 | +#### Http方式 | |
| 619 | + | |
| 620 | +```http | |
| 621 | +POST /vehicle-service-api/maintenance/maintainConfirm HTTP/1.1 | |
| 622 | +Host:test.shjiuze.cn | |
| 623 | +Content-Type:application/json | |
| 624 | + | |
| 625 | +{ | |
| 626 | + "code":"WBJL21071000044", | |
| 627 | + "maintainFlag":true, | |
| 628 | + "expectMaintainTime":"1642759341000", | |
| 629 | + "reason":"无可用站点", | |
| 630 | + "stationUser":"张大三", | |
| 631 | + "stationMobile":"13277788817", | |
| 632 | + "stationAddress":"湖北省武汉市东西湖区新城十六路88号2056物流园B33-34", | |
| 633 | + "stationLng":"113.461238", | |
| 634 | + "stationLat":"32.614137" | |
| 635 | +} | |
| 636 | +``` | |
| 637 | + | |
| 638 | +#### Java-sdk方式 [下载SDK](https://zeyi-tms-product.oss-cn-hangzhou.aliyuncs.com/file/jar/java-sdk/zy-java-sdk-1.0.0.jar) | |
| 639 | + | |
| 640 | +```java | |
| 641 | +public class Sample { | |
| 642 | + public static void main(String[] args_) { | |
| 643 | + String appKey = "appkey"; | |
| 644 | + String appSecret = "appSecret"; | |
| 645 | + String jsonData = "保养确认Body参数JSON数据"; | |
| 646 | + ZYClient zyClient = new ZYClient(appKey, appSecret); | |
| 647 | + HttpResponseData httpResponseData = | |
| 648 | +zyClient.doPost(Constants.TEST_HOST + "/vehicle-service-api/maintenance/maintainConfirm", "accessToken", jsonData); | |
| 649 | + if(httpResponseData == null) { | |
| 650 | + throw new BusinessException("则一请求失败,返回结果为空!"); | |
| 651 | + } | |
| 652 | + if(httpResponseData.getStatus() == HttpURLConnection.HTTP_UNAUTHORIZED) { | |
| 653 | + //重新获取token再次请求 | |
| 654 | + httpResponseData = zyClient.doPost(Constants.TEST_HOST + | |
| 655 | + "/vehicle-service-api/maintenance/maintainConfirm", "accessToken", jsonData); | |
| 656 | + } | |
| 657 | + } | |
| 658 | +} | |
| 659 | +``` | |
| 660 | + | |
| 661 | +### Headers参数 | |
| 662 | + | |
| 663 | +| 名称 | 类型 | 必填 | 示例值 | 描述 | | |
| 664 | +| ------------- | ------ | -------------------------- | -------------------------------- | ------------------------------------------------------------ | | |
| 665 | +| Authorization | String | 是 | Bearer a2c5680001 | 调用服务端API的应用凭证accessToken,通过调用获取访问凭证接口获取。 | | |
| 666 | +| appKey | String | 是 | 0867ef5f23ef446483749e19e1692b40 | 则一提供 | | |
| 667 | +| timestamp | String | 是 | 1643251533306 | 当前时间戳毫秒值 | | |
| 668 | +| nonce | String | 是 | gdst9t | 6位小写字母数字组合随机串 | | |
| 669 | +| sign | String | 是 | fa3ed338d6dfe18e7273c8692234ee70 | 签名:appKey(则一提供) + appSecret(则一提供) + timestamp + nonce(6位随机码) + data(body参数)通过md5(32位小写)算法生成 | | |
| 670 | + | |
| 671 | +### Body参数 | |
| 672 | + | |
| 673 | +| 参数名 | 必传 | 类型 | 说明 | | |
| 674 | +| ------------------ | ---- | ------- | -------------------- | | |
| 675 | +| code | 是 | string | 维保单号 | | |
| 676 | +| maintainFlag | 是 | boolean | 是否可保养 | | |
| 677 | +| expectMaintainTime | 否 | string | 预计保养时间戳(毫秒) | | |
| 678 | +| reason | 否 | string | 不可保养原因 | | |
| 679 | +| stationUser | 否 | string | 站点联系人 | | |
| 680 | +| stationMobile | 否 | string | 站点联系电话 | | |
| 681 | +| stationAddress | 否 | string | 站点地址 | | |
| 682 | +| stationLng | 否 | string | 站点地址经度 | | |
| 683 | +| stationLat | 否 | string | 站点地址纬度 | | |
| 684 | + | |
| 685 | +### 返回正常示例 | |
| 686 | + | |
| 687 | + { "success": true, "businessException": false} | |
| 688 | + | |
| 689 | +### 返回异常示例 | |
| 690 | + | |
| 691 | +{ "success": false, "businessException": true, "errorCode": "200", "message": "xxx不存在!"} | |
| 692 | + | |
| 693 | + | |
| 694 | + | |
| 695 | +## 车辆保养清单 | |
| 696 | + | |
| 697 | +### 简要描述 | |
| 698 | + | |
| 699 | +· 车辆保养清单 | |
| 700 | + | |
| 701 | +### 请求URL | |
| 702 | + | |
| 703 | +· 测试环境:https://test.shjiuze.cn/vehicle-service-api/maintenance/maintainList | |
| 704 | + | |
| 705 | +· 生产环境:https://gw.shjiuze.cn/vehicle-service-api/maintenance/maintainList | |
| 706 | + | |
| 707 | +### 请求示例 | |
| 708 | + | |
| 709 | +#### Http方式 | |
| 710 | + | |
| 711 | +```http | |
| 712 | +POST /vehicle-service-api/maintenance/maintainList HTTP/1.1 | |
| 713 | +Host:test.shjiuze.cn | |
| 714 | +Content-Type:application/json | |
| 715 | + | |
| 716 | +{ | |
| 717 | + "code":"WBJL21071000044", | |
| 718 | + "orderCode":"xxxx", | |
| 719 | + "discountedAmount":100, | |
| 720 | + "totalAmount":1000, | |
| 721 | + "paidAmount":900, | |
| 722 | + "mileage":121900, | |
| 723 | + "type":"首保", | |
| 724 | + "startTime":"1642993757000", | |
| 725 | + "completeTime":"1642993757000", | |
| 726 | + "fieldMaintainPictureUrl":"http://zeyi-tms-test.oss-cn-hangzhou.aliyuncs.com/image/app/9c019526-63fd-4a39-808a-744a452cca18.jpg", | |
| 727 | + "certificatePictureUrl":"http://zeyi-tms-test.oss-cn-hangzhou.aliyuncs.com/image/app/9c019526-63fd-4a39-808a-744a452cca18.jpg", | |
| 728 | + "mileagePictureUrl":"http://zeyi-tms-test.oss-cn-hangzhou.aliyuncs.com/image/app/9c019526-63fd-4a39-808a-744a452cca18.jpg", | |
| 729 | + "feeList":[ | |
| 730 | + { | |
| 731 | + "name":"工时费", | |
| 732 | + "amount":100, | |
| 733 | + "discountedAmount":0, | |
| 734 | + "remark":"" | |
| 735 | + }, | |
| 736 | + { | |
| 737 | + "name":"材料费", | |
| 738 | + "amount":950, | |
| 739 | + "discountedAmount":50, | |
| 740 | + "remark":"" | |
| 741 | + } | |
| 742 | + ], | |
| 743 | + "maintainProjectList":[ | |
| 744 | + { | |
| 745 | + "name":"空调滤芯", | |
| 746 | + "number":2, | |
| 747 | + "unitPrice":275, | |
| 748 | + "discountedAmount":50, | |
| 749 | + "laborAmount":0, | |
| 750 | + "totalAmount":500, | |
| 751 | + | |
| 752 | + "type":"MAINTAIN" | |
| 753 | + | |
| 754 | + "remark":"" | |
| 755 | + }, | |
| 756 | + { | |
| 757 | + "name":"机油滤芯", | |
| 758 | + "number":1, | |
| 759 | + "unitPrice":400, | |
| 760 | + "discountedAmount":0, | |
| 761 | + "laborAmount":100, | |
| 762 | + "totalAmount":500, | |
| 763 | + | |
| 764 | + "type":"MAINTAIN" | |
| 765 | + | |
| 766 | + "remark":"" | |
| 767 | + }, | |
| 768 | + | |
| 769 | + { | |
| 770 | + "name":"工时费用", | |
| 771 | + "timeQuota":"1", | |
| 772 | + "unitAmount":100, | |
| 773 | + "amount":100, | |
| 774 | + "remark":"" | |
| 775 | + } | |
| 776 | + | |
| 777 | + ] | |
| 778 | +} | |
| 779 | +``` | |
| 780 | + | |
| 781 | +#### Java-sdk方式 [下载SDK](https://zeyi-tms-product.oss-cn-hangzhou.aliyuncs.com/file/jar/java-sdk/zy-java-sdk-1.0.0.jar) | |
| 782 | + | |
| 783 | +```java | |
| 784 | +public class Sample { | |
| 785 | + public static void main(String[] args_) { | |
| 786 | + String appKey = "appkey"; | |
| 787 | + String appSecret = "appSecret"; | |
| 788 | + String jsonData = "保养清单Body参数JSON数据"; | |
| 789 | + ZYClient zyClient = new ZYClient(appKey, appSecret); | |
| 790 | + HttpResponseData httpResponseData = | |
| 791 | +zyClient.doPost(Constants.TEST_HOST + "/vehicle-service-api/maintenance/maintainList", "accessToken", jsonData); | |
| 792 | + if(httpResponseData == null) { | |
| 793 | + throw new BusinessException("则一请求失败,返回结果为空!"); | |
| 794 | + } | |
| 795 | + if(httpResponseData.getStatus() == HttpURLConnection.HTTP_UNAUTHORIZED) { | |
| 796 | + //重新获取token再次请求 | |
| 797 | + httpResponseData = zyClient.doPost(Constants.TEST_HOST + | |
| 798 | + "/vehicle-service-api/maintenance/maintainList", "accessToken", jsonData); | |
| 799 | + } | |
| 800 | + } | |
| 801 | +} | |
| 802 | +``` | |
| 803 | + | |
| 804 | +### Headers参数 | |
| 805 | + | |
| 806 | +| 名称 | 类型 | 必填 | 示例值 | 描述 | | |
| 807 | +| ------------- | ------ | -------------------------- | -------------------------------- | ------------------------------------------------------------ | | |
| 808 | +| Authorization | String | 是 | Bearer a2c5680001 | 调用服务端API的应用凭证accessToken,通过调用获取访问凭证接口获取。 | | |
| 809 | +| appKey | String | 是 | 0867ef5f23ef446483749e19e1692b40 | 则一提供 | | |
| 810 | +| timestamp | String | 是 | 1643251533306 | 当前时间戳毫秒值 | | |
| 811 | +| nonce | String | 是 | gdst9t | 6位小写字母数字组合随机串 | | |
| 812 | +| sign | String | 是 | fa3ed338d6dfe18e7273c8692234ee70 | 签名:appKey(则一提供) + appSecret(则一提供) + timestamp + nonce(6位随机码) + data(body参数)通过md5(32位小写)算法生成 | | |
| 813 | + | |
| 814 | +### Body参数 | |
| 815 | + | |
| 816 | +| 参数名 | 必传 | 类型 | 说明 | | |
| 817 | +| ----------------------------------------------- | ---- | ---------- | -------------------------------------------- | | |
| 818 | +| code | 是 | string | 维保编码 | | |
| 819 | +| orderCode | 是 | string | 维保订单号 | | |
| 820 | +| discountedAmount | 否 | Bigdecimal | 折扣金额 | | |
| 821 | +| totalAmount | 是 | Bigdecimal | 总金额 | | |
| 822 | +| paidAmount | 是 | Bigdecimal | 应付金额 | | |
| 823 | +| mileage | 是 | Integer | 车辆里程数 | | |
| 824 | +| type | 是 | string | 保养类型 | | |
| 825 | +| startTime | 是 | string | 开始时间戳(毫秒) | | |
| 826 | +| completeTime | 是 | string | 完工时间戳(毫秒) | | |
| 827 | +| fieldMaintainPictureUrl | 是 | string | 清单照片url,多个图片用逗号分割 | | |
| 828 | +| certificatePictureUrl | 是 | string | 现场照片url,多个图片用逗号分割 | | |
| 829 | +| mileagePictureUrl | 是 | string | 里程照片url,多个图片用逗号分割 | | |
| 830 | +| feeList | 否 | list | 费用明细集合 | | |
| 831 | +| name | 是 | string | 名称(工时费、材料费、拖车费等等) | | |
| 832 | +| unit | 否 | string | 单位 | | |
| 833 | +| unitPrice | 否 | Bigdecimal | 单价 | | |
| 834 | +| number | 否 | Integer | 数量 | | |
| 835 | +| amount | 是 | Bigdecimal | 金额 | | |
| 836 | +| discountedAmount | 是 | Bigdecimal | 折扣金额 | | |
| 837 | +| remark | 否 | string | 备注 | | |
| 838 | +| maintainProjectList | 否 | list | 保养项目集合(包含配件信息) | | |
| 839 | +| name | 是 | string | 项目名称 | | |
| 840 | +| unit | 否 | string | 单位 | | |
| 841 | +| number | 是 | Integer | 数量 | | |
| 842 | +| unitPrice | 是 | Bigdecimal | 单价 | | |
| 843 | +| discountedAmount | 否 | Bigdecimal | 折扣金额 | | |
| 844 | +| totalAmount | 是 | Bigdecimal | 合计金额 | | |
| 845 | +| type | 是 | string | MAINTAIN:保养 或 REPAIR:维修 | | |
| 846 | +| remark | 否 | string | 备注 | | |
| 847 | +| timeQuota | 否 | Bigdecimal | 工时定额 | | |
| 848 | +| projectType | 是 | string | 维保项目类型(配件:materials\|项目:project) | | |
| 849 | +| nextMaintainanceMileage | 否 | Integer | 下次保养里程数 | | |
| 850 | +| nextMaintainanceTime | 是 | string | 下次保养时间戳(毫秒) | | |
| 851 | + | |
| 852 | +### 返回正常示例 | |
| 853 | + | |
| 854 | + { "success": true, "businessException": false} | |
| 855 | + | |
| 856 | +### 返回异常示例 | |
| 857 | + | |
| 858 | +{ "success": false, "businessException": true, "errorCode": "200", "message": "xxx不存在!"} | |
| 859 | + | |
| 860 | + | |
| 861 | + | |
| 862 | +## 车辆维保审核 | |
| 863 | + | |
| 864 | +### 简要描述 | |
| 865 | + | |
| 866 | +· 车辆维保审核 | |
| 867 | + | |
| 868 | +### 请求URL | |
| 869 | + | |
| 870 | +· 车畅行提供 /vehicleMaintainRepair/audit | |
| 871 | + | |
| 872 | +### 请求方式 | |
| 873 | + | |
| 874 | +· POST | |
| 875 | + | |
| 876 | +### 请求示例 | |
| 877 | + | |
| 878 | +{ | |
| 879 | + "code":"WBJL21071000044", | |
| 880 | + "auditStatus":"PASS", | |
| 881 | + "auditRemark":"审核备注", | |
| 882 | + "auditeTime":"1642755099000", | |
| 883 | + "contactUser":"张大三", | |
| 884 | + "contactMobile":"13277676171" | |
| 885 | +} | |
| 886 | + | |
| 887 | +### 参数 | |
| 888 | + | |
| 889 | +| 参数名 | 必传 | 类型 | 说明 | | |
| 890 | +| ------------- | ---- | ------ | ------------------------------------------- | | |
| 891 | +| code | 是 | string | 维保编码 | | |
| 892 | +| auditStatus | 是 | string | 审核状态(PASS:审核通过,NO_PASS:审核不通过) | | |
| 893 | +| auditRemark | 否 | string | 审核备注 | | |
| 894 | +| auditeTime | 是 | string | 审核时间戳(毫秒) | | |
| 895 | +| contactUser | 否 | string | 审核联系人 | | |
| 896 | +| contactMobile | 否 | string | 审核联系人电话 | | |
| 897 | + | |
| 898 | +### 返回正常示例 | |
| 899 | + | |
| 900 | + { "success": true, "businessException": false} | |
| 901 | + | |
| 902 | +### 返回异常示例 | |
| 903 | + | |
| 904 | +{ "success": false, "businessException": true, "errorCode": "200", "message": "xxx不存在!"} | |
| 905 | + | |
| 906 | + | |
| 907 | + | |
| 908 | +## 车辆维保作废 | |
| 909 | + | |
| 910 | +### 简要描述 | |
| 911 | + | |
| 912 | +· 车辆维保作废 | |
| 913 | + | |
| 914 | +### 请求URL | |
| 915 | + | |
| 916 | +· 车畅行提供 /vehicleMaintainRepair/delete | |
| 917 | + | |
| 918 | +### 请求方式 | |
| 919 | + | |
| 920 | +· POST | |
| 921 | + | |
| 922 | +### 请求示例 | |
| 923 | + | |
| 924 | +{ | |
| 925 | + "code":"WBJL21071000044", | |
| 926 | + "reason":"上报信息错误", | |
| 927 | + "operationTime":"1642755099000", | |
| 928 | + "operationUser":"张大三", | |
| 929 | + "operationMobile":"13277676171" | |
| 930 | +} | |
| 931 | + | |
| 932 | +### 参数 | |
| 933 | + | |
| 934 | +| 参数名 | 必传 | 类型 | 说明 | | |
| 935 | +| --------------- | ---- | ------ | ---------------- | | |
| 936 | +| code | 是 | string | 维保编码 | | |
| 937 | +| reason | 否 | string | 作废原因 | | |
| 938 | +| operationTime | 是 | string | 操作时间戳(毫秒) | | |
| 939 | +| operationUser | 否 | string | 操作人 | | |
| 940 | +| operationMobile | 否 | string | 操作人电话 | | |
| 941 | + | |
| 942 | +### 返回正常示例 | |
| 943 | + | |
| 944 | + { "success": true, "businessException": false} | |
| 945 | + | |
| 946 | +### 返回异常示例 | |
| 947 | + | |
| 948 | +{ "success": false, "businessException": true, "errorCode": "200", "message": "xxx异常!"} | |
| 949 | + | |
| 950 | + | |
| 951 | + | |
| 952 | +## 车辆维保合同推送 | |
| 953 | + | |
| 954 | +### 简要描述 | |
| 955 | + | |
| 956 | +· 车辆维修合同推送 | |
| 957 | + | |
| 958 | +### 请求URL | |
| 959 | + | |
| 960 | +· 测试环境:https://test.shjiuze.cn/vehicle-service-api/vehicleMaintainRepairContract/push | |
| 961 | + | |
| 962 | +· 生产环境:https://gw.shjiuze.cn/vehicle-service-api/vehicleMaintainRepairContract/push | |
| 963 | + | |
| 964 | +### 请求示例 | |
| 965 | + | |
| 966 | +#### Http方式 | |
| 967 | + | |
| 968 | +```http | |
| 969 | +POST /vehicle-service-api/vehicleMaintainRepairContract/push HTTP/1.1 | |
| 970 | +Host:test.shjiuze.cn | |
| 971 | +Content-Type:application/json | |
| 972 | + | |
| 973 | +{ | |
| 974 | + "code":"HT123123123123", | |
| 975 | + "originContractCode":"", | |
| 976 | + "maintainRepairCode":"WBJL123123123123", | |
| 977 | + "companyName":"上海东风公司", | |
| 978 | + "branchName":"上海东风青浦门店", | |
| 979 | + "billStatus":"", | |
| 980 | + "maintainType":"首保", | |
| 981 | + "devoteRate":0.56, | |
| 982 | + "memberType":"", | |
| 983 | + "memberNo":"", | |
| 984 | + "comeDate":"1642993757000", | |
| 985 | + "sendWay":"", | |
| 986 | + "collectionWay":"自提", | |
| 987 | + "collectionDate":"1642993757000", | |
| 988 | + "licenseNumber":"沪A123456", | |
| 989 | + "specification":"9.6", | |
| 990 | + "mileage":100000, | |
| 991 | + "expectCompleteTime":"1642993757000", | |
| 992 | + "deliveryTime":"1642993757000", | |
| 993 | + "remark":"备注", | |
| 994 | + "month":"2021-02-02", | |
| 995 | + "productTotalAmount":1000, | |
| 996 | + "serviceTotalAmount":1000, | |
| 997 | + "productDiscountedAmount":100, | |
| 998 | + "serviceDiscountedAmount":100, | |
| 999 | + "totalAmount":1800, | |
| 1000 | + "contractDetail":[ | |
| 1001 | + { | |
| 1002 | + "serviceName": "换机油", | |
| 1003 | + "serviceNeedHour": 2, | |
| 1004 | + "serviceHourUnitAmount": 100, | |
| 1005 | + "serviceCustomerUnitAmount": 120, | |
| 1006 | + "serviceBranchUnitAmount": 150, | |
| 1007 | + "confirmFlag": true, | |
| 1008 | + "completeTime": "1642993757000", | |
| 1009 | + "selfCheckUser": "张三", | |
| 1010 | + "selfCheckTime": "1642993757000", | |
| 1011 | + "checkUser": "张三", | |
| 1012 | + "checkTime": "1642993757000", | |
| 1013 | + "remark": "备注", | |
| 1014 | + } | |
| 1015 | + ] | |
| 1016 | +} | |
| 1017 | +``` | |
| 1018 | + | |
| 1019 | +#### Java-sdk方式 [下载SDK](https://zeyi-tms-product.oss-cn-hangzhou.aliyuncs.com/file/jar/java-sdk/zy-java-sdk-1.0.0.jar) | |
| 1020 | + | |
| 1021 | +```java | |
| 1022 | +public class Sample { | |
| 1023 | + public static void main(String[] args_) { | |
| 1024 | + String appKey = "appkey"; | |
| 1025 | + String appSecret = "appSecret"; | |
| 1026 | + String jsonData = "维保合同推送Body参数JSON数据"; | |
| 1027 | + ZYClient zyClient = new ZYClient(appKey, appSecret); | |
| 1028 | + HttpResponseData httpResponseData = | |
| 1029 | +zyClient.doPost(Constants.TEST_HOST + "/vehicle-service-api/vehicleMaintainRepairContract/push", "accessToken", jsonData); | |
| 1030 | + if(httpResponseData == null) { | |
| 1031 | + throw new BusinessException("则一请求失败,返回结果为空!"); | |
| 1032 | + } | |
| 1033 | + if(httpResponseData.getStatus() == HttpURLConnection.HTTP_UNAUTHORIZED) { | |
| 1034 | + //重新获取token再次请求 | |
| 1035 | + httpResponseData = zyClient.doPost(Constants.TEST_HOST + | |
| 1036 | + "/vehicle-service-api/vehicleMaintainRepairContract/push", "accessToken", jsonData); | |
| 1037 | + } | |
| 1038 | + } | |
| 1039 | +} | |
| 1040 | +``` | |
| 1041 | + | |
| 1042 | +### Headers参数 | |
| 1043 | + | |
| 1044 | +| 名称 | 类型 | 必填 | 示例值 | 描述 | | |
| 1045 | +| ------------- | ------ | -------------------------- | -------------------------------- | ------------------------------------------------------------ | | |
| 1046 | +| Authorization | String | 是 | Bearer a2c5680001 | 调用服务端API的应用凭证accessToken,通过调用获取访问凭证接口获取。 | | |
| 1047 | +| appKey | String | 是 | 0867ef5f23ef446483749e19e1692b40 | 则一提供 | | |
| 1048 | +| timestamp | String | 是 | 1643251533306 | 当前时间戳毫秒值 | | |
| 1049 | +| nonce | String | 是 | gdst9t | 6位小写字母数字组合随机串 | | |
| 1050 | +| sign | String | 是 | fa3ed338d6dfe18e7273c8692234ee70 | 签名:appKey(则一提供) + appSecret(则一提供) + timestamp + nonce(6位随机码) + data(body参数)通过md5(32位小写)算法生成 | | |
| 1051 | + | |
| 1052 | +### Body参数 | |
| 1053 | + | |
| 1054 | +| 参数名 | 必传 | 类型 | 说明 | | |
| 1055 | +| ------------------------- | ---- | ---------- | -------------------- | | |
| 1056 | +| code | 是 | string | 合同编号 | | |
| 1057 | +| originContractCode | 否 | string | 源合同编号 | | |
| 1058 | +| maintainRepairCode | 是 | string | 维保编号 | | |
| 1059 | +| companyName | 是 | string | 甲方公司名称 | | |
| 1060 | +| branchName | 是 | string | 维修门店名称 | | |
| 1061 | +| billStatus | 是 | string | 单据状态 | | |
| 1062 | +| maintainType | 是 | string | 维保类型 | | |
| 1063 | +| devoteRate | 否 | Bigdecimal | 维修类贡献比例 | | |
| 1064 | +| memberType | 否 | string | 会员类型 | | |
| 1065 | +| memberNo | 否 | string | 会员编号 | | |
| 1066 | +| comeDate | 是 | string | 进场时间戳(毫秒) | | |
| 1067 | +| sendWay | 否 | string | 送修方式 | | |
| 1068 | +| collectionWay | 否 | string | 提车方式 | | |
| 1069 | +| collectionDate | 否 | string | 提车时间戳(毫秒) | | |
| 1070 | +| licenseNumber | 是 | string | 车牌号 | | |
| 1071 | +| specification | 是 | string | 车型 | | |
| 1072 | +| mileage | 否 | Integer | 公里数 | | |
| 1073 | +| expectCompleteTime | 是 | string | 预计完成时间戳(毫秒) | | |
| 1074 | +| deliveryTime | 否 | string | 出厂时间戳(毫秒) | | |
| 1075 | +| remark | 否 | string | 备注 | | |
| 1076 | +| month | 否 | string | 会计时间 | | |
| 1077 | +| productTotalAmount | 否 | Bigdecimal | 货品项目总费用 | | |
| 1078 | +| serviceTotalAmount | 否 | Bigdecimal | 服务项目总费用 | | |
| 1079 | +| productDiscountedAmount | 否 | Bigdecimal | 货品项目优惠折扣费用 | | |
| 1080 | +| serviceDiscountedAmount | 否 | Bigdecimal | 服务项目优惠折扣费用 | | |
| 1081 | +| totalAmount | 否 | Bigdecimal | 总费用 | | |
| 1082 | +| contractDetail | 是 | list | 合同明细 | | |
| 1083 | +| serviceName | 是 | string | 服务名称 | | |
| 1084 | +| serviceNeedHour | 是 | Integer | 服务项目所需工时 | | |
| 1085 | +| serviceHourUnitAmount | 是 | Bigdecimal | 服务项目工时单价 | | |
| 1086 | +| serviceCustomerUnitAmount | 是 | Bigdecimal | 服务项目客户单价 | | |
| 1087 | +| serviceBranchUnitAmount | 是 | Bigdecimal | 服务项目门店单价 | | |
| 1088 | +| confirmFlag | 是 | boolean | 是否确认维修 | | |
| 1089 | +| completeTime | 否 | string | 完工时间戳(毫秒) | | |
| 1090 | +| selfCheckUser | 否 | string | 自检人 | | |
| 1091 | +| selfCheckTime | 否 | string | 自检时间戳(毫秒) | | |
| 1092 | +| checkUser | 否 | string | 过程检验人 | | |
| 1093 | +| checkTime | 否 | string | 过程检验时间戳(毫秒) | | |
| 1094 | +| remark | 否 | string | 备注 | | |
| 1095 | + | |
| 1096 | +### 返回正常示例 | |
| 1097 | + | |
| 1098 | + { "success": true, "businessException": false} | |
| 1099 | + | |
| 1100 | +### 返回异常示例 | |
| 1101 | + | |
| 1102 | +{ "success": false, "businessException": true, "errorCode": "200", "message": "xxx异常!"} | |
| 1103 | + | |
| 1104 | + | |
| 1105 | + | |
| 1106 | +## 车辆维保合同作废 | |
| 1107 | + | |
| 1108 | +### 简要描述 | |
| 1109 | + | |
| 1110 | +· 车辆维保合同作废 | |
| 1111 | + | |
| 1112 | +### 请求URL | |
| 1113 | + | |
| 1114 | +· 测试环境:https://test.shjiuze.cn/vehicle-service-api/vehicleMaintainRepairContract/invalid | |
| 1115 | + | |
| 1116 | +· 生产环境:https://gw.shjiuze.cn/vehicle-service-api/vehicleMaintainRepairContract/invalid | |
| 1117 | + | |
| 1118 | +### 请求示例 | |
| 1119 | + | |
| 1120 | +#### Http方式 | |
| 1121 | + | |
| 1122 | +```http | |
| 1123 | +POST /vehicle-service-api/vehicleMaintainRepairContract/delete HTTP/1.1 | |
| 1124 | +Host:test.shjiuze.cn | |
| 1125 | +Content-Type:application/json | |
| 1126 | + | |
| 1127 | +{ | |
| 1128 | + "code":"HT21071000044", | |
| 1129 | + "reason":"上报信息错误", | |
| 1130 | + "operationTime":"1642755099000", | |
| 1131 | + "operationUser":"张大三", | |
| 1132 | + "operationMobile":"13277676171" | |
| 1133 | +} | |
| 1134 | +``` | |
| 1135 | + | |
| 1136 | +#### Java-sdk方式 [下载SDK](https://zeyi-tms-product.oss-cn-hangzhou.aliyuncs.com/file/jar/java-sdk/zy-java-sdk-1.0.0.jar) | |
| 1137 | + | |
| 1138 | +```java | |
| 1139 | +public class Sample { | |
| 1140 | + public static void main(String[] args_) { | |
| 1141 | + String appKey = "appkey"; | |
| 1142 | + String appSecret = "appSecret"; | |
| 1143 | + String jsonData = "维保合同作废Body参数JSON数据"; | |
| 1144 | + ZYClient zyClient = new ZYClient(appKey, appSecret); | |
| 1145 | + HttpResponseData httpResponseData = | |
| 1146 | +zyClient.doPost(Constants.TEST_HOST + "/vehicle-service-api/vehicleMaintainRepairContract/delete", "accessToken", jsonData); | |
| 1147 | + if(httpResponseData == null) { | |
| 1148 | + throw new BusinessException("则一请求失败,返回结果为空!"); | |
| 1149 | + } | |
| 1150 | + if(httpResponseData.getStatus() == HttpURLConnection.HTTP_UNAUTHORIZED) { | |
| 1151 | + //重新获取token再次请求 | |
| 1152 | + httpResponseData = zyClient.doPost(Constants.TEST_HOST + | |
| 1153 | + "/vehicle-service-api/vehicleMaintainRepairContract/delete", "accessToken", jsonData); | |
| 1154 | + } | |
| 1155 | + } | |
| 1156 | +} | |
| 1157 | +``` | |
| 1158 | + | |
| 1159 | +### Headers参数 | |
| 1160 | + | |
| 1161 | +| 名称 | 类型 | 必填 | 示例值 | 描述 | | |
| 1162 | +| ------------- | ------ | -------------------------- | -------------------------------- | ------------------------------------------------------------ | | |
| 1163 | +| Authorization | String | 是 | Bearer a2c5680001 | 调用服务端API的应用凭证accessToken,通过调用获取访问凭证接口获取。 | | |
| 1164 | +| appKey | String | 是 | 0867ef5f23ef446483749e19e1692b40 | 则一提供 | | |
| 1165 | +| timestamp | String | 是 | 1643251533306 | 当前时间戳毫秒值 | | |
| 1166 | +| nonce | String | 是 | gdst9t | 6位小写字母数字组合随机串 | | |
| 1167 | +| sign | String | 是 | fa3ed338d6dfe18e7273c8692234ee70 | 签名:appKey(则一提供) + appSecret(则一提供) + timestamp + nonce(6位随机码) + data(body参数)通过md5(32位小写)算法生成 | | |
| 1168 | + | |
| 1169 | +### Body参数 | |
| 1170 | + | |
| 1171 | +| 参数名 | 必传 | 类型 | 说明 | | |
| 1172 | +| --------------- | ---- | ------ | ---------------- | | |
| 1173 | +| code | 是 | string | 合同编码 | | |
| 1174 | +| reason | 否 | string | 作废原因 | | |
| 1175 | +| operationTime | 是 | string | 操作时间戳(毫秒) | | |
| 1176 | +| operationUser | 否 | string | 操作人 | | |
| 1177 | +| operationMobile | 否 | string | 操作人电话 | | |
| 1178 | + | |
| 1179 | +### 返回正常示例 | |
| 1180 | + | |
| 1181 | + { "success": true, "businessException": false} | |
| 1182 | + | |
| 1183 | +### 返回异常示例 | |
| 1184 | + | |
| 1185 | +{ "success": false, "businessException": true, "errorCode": "200", "message": "xxx异常!"} | |
| 1186 | + | |
| 1187 | + | |
| 1188 | + | |
| 1189 | + | |
| 1190 | + | |
| 1191 | +## 维保单作废 | |
| 1192 | + | |
| 1193 | +### 简要描述 | |
| 1194 | + | |
| 1195 | +· 维保单作废 | |
| 1196 | + | |
| 1197 | + <font color="red"> 如果此维保单已生成结算单或者已付款,则维保单不可作废,系统会抛出业务异常例如:已生成结算单不可作废 或 已付款不可作废</font> | |
| 1198 | + | |
| 1199 | +### 请求URL | |
| 1200 | + | |
| 1201 | +· 测试环境:https://test.shjiuze.cn/vehicle-service-api/maintenance/invalid | |
| 1202 | + | |
| 1203 | +· 生产环境:https://gw.shjiuze.cn/vehicle-service-api/maintenance/invalid | |
| 1204 | + | |
| 1205 | +### 请求示例 | |
| 1206 | + | |
| 1207 | +#### Http方式 | |
| 1208 | + | |
| 1209 | +```http | |
| 1210 | +POST /vehicle-service-api/maintenance/delete HTTP/1.1 | |
| 1211 | +Host:test.shjiuze.cn | |
| 1212 | +Content-Type:application/json | |
| 1213 | + | |
| 1214 | +{ | |
| 1215 | + "code":"WBJL22090200012", | |
| 1216 | + "reason":"原因:重复数据等等xxxxxxxx", | |
| 1217 | + "operationTime":"1642755099000", | |
| 1218 | + "operationUser":"张大三", | |
| 1219 | + "operationMobile":"13277676171" | |
| 1220 | +} | |
| 1221 | +``` | |
| 1222 | + | |
| 1223 | +#### Java-sdk方式 [下载SDK](https://zeyi-tms-product.oss-cn-hangzhou.aliyuncs.com/file/jar/java-sdk/zy-java-sdk-1.0.0.jar) | |
| 1224 | + | |
| 1225 | +```java | |
| 1226 | +public class Sample { | |
| 1227 | + public static void main(String[] args_) { | |
| 1228 | + String appKey = "appkey"; | |
| 1229 | + String appSecret = "appSecret"; | |
| 1230 | + String jsonData = "维保单作废Body参数JSON数据"; | |
| 1231 | + ZYClient zyClient = new ZYClient(appKey, appSecret); | |
| 1232 | + HttpResponseData httpResponseData = | |
| 1233 | +zyClient.doPost(Constants.TEST_HOST + "/vehicle-service-api/maintenance/invalid", "accessToken", jsonData); | |
| 1234 | + if(httpResponseData == null) { | |
| 1235 | + throw new BusinessException("则一请求失败,返回结果为空!"); | |
| 1236 | + } | |
| 1237 | + if(httpResponseData.getStatus() == HttpURLConnection.HTTP_UNAUTHORIZED) { | |
| 1238 | + //重新获取token再次请求 | |
| 1239 | + httpResponseData = zyClient.doPost(Constants.TEST_HOST + | |
| 1240 | + "/vehicle-service-api/maintenance/delete", "accessToken", jsonData); | |
| 1241 | + } | |
| 1242 | + } | |
| 1243 | +} | |
| 1244 | +``` | |
| 1245 | + | |
| 1246 | +### Headers参数 | |
| 1247 | + | |
| 1248 | +| 名称 | 类型 | 必填 | 示例值 | 描述 | | |
| 1249 | +| ------------- | ------ | -------------------------- | -------------------------------- | ------------------------------------------------------------ | | |
| 1250 | +| Authorization | String | 是 | Bearer a2c5680001 | 调用服务端API的应用凭证accessToken,通过调用获取访问凭证接口获取。 | | |
| 1251 | +| appKey | String | 是 | 0867ef5f23ef446483749e19e1692b40 | 则一提供 | | |
| 1252 | +| timestamp | String | 是 | 1643251533306 | 当前时间戳毫秒值 | | |
| 1253 | +| nonce | String | 是 | gdst9t | 6位小写字母数字组合随机串 | | |
| 1254 | +| sign | String | 是 | fa3ed338d6dfe18e7273c8692234ee70 | 签名:appKey(则一提供) + appSecret(则一提供) + timestamp + nonce(6位随机码) + data(body参数)通过md5(32位小写)算法生成 | | |
| 1255 | + | |
| 1256 | +### Body参数 | |
| 1257 | + | |
| 1258 | +| 参数名 | 必传 | 类型 | 说明 | | |
| 1259 | +| --------------- | ---- | ------ | ---------------- | | |
| 1260 | +| code | 是 | string | 维保编码 | | |
| 1261 | +| reason | 是 | string | 作废原因 | | |
| 1262 | +| operationTime | 是 | string | 操作时间戳(毫秒) | | |
| 1263 | +| operationUser | 否 | string | 操作人 | | |
| 1264 | +| operationMobile | 否 | string | 操作人电话 | | |
| 1265 | + | |
| 1266 | +### 返回正常示例 | |
| 1267 | + | |
| 1268 | + { "success": true, "businessException": false} | |
| 1269 | + | |
| 1270 | +### 返回异常示例 | |
| 1271 | + | |
| 1272 | +{ "success": false, "businessException": true, "errorCode": "200", "message": "xxx已付款,无法作废!"} | |
| 1273 | + | |
| 1274 | + | |
| 1275 | + | |
| 1276 | +## 维保单价格推送 | |
| 1277 | + | |
| 1278 | +### 简要描述 | |
| 1279 | + | |
| 1280 | +维保单价格推送 | |
| 1281 | + | |
| 1282 | +### 请求方式 | |
| 1283 | + | |
| 1284 | +· POST | |
| 1285 | + | |
| 1286 | +### 请求URL | |
| 1287 | + | |
| 1288 | +· 车畅行提供 /vehicleMaintainRepair/confirmPirce | |
| 1289 | + | |
| 1290 | +<h3>请求示例</h3> | |
| 1291 | + | |
| 1292 | +{ | |
| 1293 | + "code":"WBJL21071000044", | |
| 1294 | + "confirmAmount":1000, | |
| 1295 | + "feeList":[ | |
| 1296 | + { | |
| 1297 | + "name":"工时费", | |
| 1298 | + "confirmNumber":0, | |
| 1299 | + "confirmAmount":0 | |
| 1300 | + }, | |
| 1301 | + { | |
| 1302 | + "name":"材料费", | |
| 1303 | + "confirmNumber":0, | |
| 1304 | + "confirmAmount":0 | |
| 1305 | + } | |
| 1306 | + ], | |
| 1307 | + "maintainProjectList":[ | |
| 1308 | + { | |
| 1309 | + "name":"空调滤芯", | |
| 1310 | + "confirmNumber":2, | |
| 1311 | + "confirmAmount":0, | |
| 1312 | + "type":"MAINTAIN", | |
| 1313 | + "projectType":"materials" | |
| 1314 | + }, | |
| 1315 | + { | |
| 1316 | + "name":"机油滤芯", | |
| 1317 | + "confirmNumber":1, | |
| 1318 | + "confirmAmount":500, | |
| 1319 | + "type":"MAINTAIN", | |
| 1320 | + "projectType":"materials" | |
| 1321 | + } | |
| 1322 | + ] | |
| 1323 | +} | |
| 1324 | + | |
| 1325 | +### Body参数 | |
| 1326 | + | |
| 1327 | +| 参数名 | 必传 | 类型 | 说明 | | |
| 1328 | +| ------------------------------------- | ---- | ---------- | -------------------------------------------- | | |
| 1329 | +| code | 是 | string | 维保编码 | | |
| 1330 | +| confirmAmount | 是 | Bigdecimal | 则一确认总金额 | | |
| 1331 | +| feeList | 是 | list | 费用明细集合 | | |
| 1332 | +| name | 是 | string | 名称(工时费、材料费、拖车费等等) | | |
| 1333 | +| confirmNumber | 是 | Integer | 则一确认数量 | | |
| 1334 | +| confirmAmount | 是 | Bigdecimal | 则一确认金额 | | |
| 1335 | +| maintainProjectList | 是 | list | 保养项目集合(包含配件信息) | | |
| 1336 | +| name | 是 | string | 项目名称 | | |
| 1337 | +| confirmNumber | 是 | Integer | 则一确认数量 | | |
| 1338 | +| confirmAmount | 是 | Bigdecimal | 则一确认金额 | | |
| 1339 | +| type | 是 | string | MAINTAIN:保养 或 REPAIR:维修 | | |
| 1340 | +| projectType | 是 | string | 维保项目类型(配件:materials\|项目:project) | | |
| 1341 | + | |
| 1342 | +### 返回正常示例 | |
| 1343 | + | |
| 1344 | + { "success": true, "businessException": false} | |
| 1345 | + | |
| 1346 | +### 返回异常示例 | |
| 1347 | + | |
| 1348 | +{ "success": false, "businessException": true, "errorCode": "200", "message": "xxx不能为空!"} | |
| 1349 | + | |
| 1350 | +------------------------------------------------------------------------------------------ | |
| 1351 | + | |
| 1352 | +### 2022-03-05更新日志 | |
| 1353 | + | |
| 1354 | +1. [车辆报修](#车辆报修) 、[车辆保养](#车辆保养)接口参数增加remark字段非必填 | |
| 1355 | +2. [车辆保养清单](#车辆保养清单):接口参数maintainProjectList中增加类型type字段需必填 | |
| 1356 | + | |
| 1357 | + | |
| 1358 | + | |
| 1359 | +### 2022-03-11更新日志 | |
| 1360 | + | |
| 1361 | +1. 回调则一接口请求路径变更 | |
| 1362 | +2. [车辆保养清单](#车辆保养清单)、[车辆维修清单](#车辆维修清单):接口参数taskFeeList移除、合并到维修保养项目集合字段中。 | |
| 1363 | +3. [车辆保养清单](#车辆保养清单):保养项目集合中增加下次保养时间、下次保养里程数字段 | |
| 1364 | + | |
| 1365 | + | |
| 1366 | + | |
| 1367 | +### 2022-03-16更新日志 | |
| 1368 | + | |
| 1369 | + 1.优化接口请求示例 | |
| 1370 | + | |
| 1371 | + | |
| 1372 | + | |
| 1373 | +### 2022-03-23更新日志 | |
| 1374 | + | |
| 1375 | + 1.维修、保养清单推送增加应付金额字段(必填):【应付价格】计算逻辑:应付价格=总金额-折扣金额 | |
| 1376 | + | |
| 1377 | + | |
| 1378 | + | |
| 1379 | +### 2022-03-31更新日志 | |
| 1380 | + | |
| 1381 | + 1.车辆维修清单、车辆保养清单中的项目集合兼容配件信息 | |
| 1382 | + | |
| 1383 | + | |
| 1384 | + | |
| 1385 | +### 2022-09-02更新日志 | |
| 1386 | + | |
| 1387 | + 1. 增加维保单作废接口 (车畅行操作作废后成功后 回调此接口) | |
| 1388 | + 2. 增加维保单价格推送接口 (我司对维保清单的项目价格确认后推送给车畅行) | |
| 1389 | + | |
| 1390 | + | |
| 1391 | + | |
| 1392 | +### 2022-10-13更新日志 | |
| 1393 | + | |
| 1394 | +```json | |
| 1395 | +1. 维修及保养清单推送增加orderCode(必填) 开始时间戳:startTime(必填) 完工时间戳:completeTime (必填) | |
| 1396 | +``` | |
| 1397 | + | |
| 1398 | + | |
| 1399 | + | |
| 1400 | +### 2022-11-03更新日志 | |
| 1401 | + | |
| 1402 | +```json | |
| 1403 | +1. 车辆报修、车辆保养接口增加车辆所属区域字段:orgName | |
| 1404 | +2. 车辆维修清单、车辆保养清单中的项目集合、费用明细集合设置为非必填 | |
| 1405 | +``` | |
| 1406 | + | ... | ... |
| ... | ... | @@ -0,0 +1,790 @@ |
| 1 | +[toc] | |
| 2 | + | |
| 3 | +# 车辆维保对接API | |
| 4 | + | |
| 5 | +则一提供了不同规范的API,调用服务端API前,需了解开发前须知及调用流程。本文提供了调用则一服务端API示例,供开发者参考。 | |
| 6 | + | |
| 7 | +## 白名单 | |
| 8 | + | |
| 9 | +则一服务端API接口访问有IP白名单限制,需要接口调用方提供调用API的服务器IP地址。 | |
| 10 | + | |
| 11 | +## 数据加签 | |
| 12 | + | |
| 13 | +采用md5(32位小写)算法生成签名 | |
| 14 | +appKey(则一提供) + appSecret(则一提供) + timestamp(当前时间戳毫秒) + nonce(6位随机码大小写字母数子组合) + data(请求数据) | |
| 15 | + | |
| 16 | +## 数据加密 | |
| 17 | + | |
| 18 | +数据加密采用AES算法 | |
| 19 | +加密模式: CBC | |
| 20 | +填充方式:PKCS5Padding | |
| 21 | +偏移量:iv(则一提供) | |
| 22 | +加密内容:appKey(则一提供) + timestamp(当前时间戳毫秒) + nonce(6位随机码大小写字母数子组合) + data(加密数据) | |
| 23 | +密钥: appSecret(则一提供) | |
| 24 | +输出:base64 | |
| 25 | +字符集:utf-8 | |
| 26 | +注:无敏感数据则无需加密 | |
| 27 | + | |
| 28 | +## 获取访问凭证 | |
| 29 | + | |
| 30 | +### 概述 | |
| 31 | + | |
| 32 | +调用则一服务API时,都需要先获取对应权限类型的访问凭证accessToken。访问凭证(accessToken)是由则一权限系统颁发的,用来校验调用者的身份信息,确保调用者具有要执行的操作的权限。 | |
| 33 | +**说明**: 在使用accessToken时,请注意: | |
| 34 | + | |
| 35 | +* accessToken的有效期默认为30天,有效期内重复获取会返回相同结果,过期后获取会返回新的accessToken。 | |
| 36 | +* 开发者需要缓存accessToken,用于后续接口的调用。不能频繁调用获取accessToken接口,否则会受到频率拦截。 | |
| 37 | +* 当调用业务API时,如果返回状态码为401,则说明accessToken不正确或已过期,这时需要重新获取accessToken后再调用对应的API。 | |
| 38 | + | |
| 39 | +### 接口信息 | |
| 40 | + | |
| 41 | +#### 请求方式: | |
| 42 | + | |
| 43 | +post | |
| 44 | + | |
| 45 | +#### 请求地址: | |
| 46 | + | |
| 47 | +* 生产:https://gw.shjiuze.cn/auth-service-api/login/password | |
| 48 | +* 测试:https://test.shjiuze.cn/auth-service-api/login/password | |
| 49 | + | |
| 50 | +#### Body参数 | |
| 51 | + | |
| 52 | +| 名称 | 类型 | 必填 | 示例值 | 描述 | | |
| 53 | +| -------- | ------ | ---- | ----------- | ---------------- | | |
| 54 | +| username | String | 是 | zhangsan | 用户名,则一提供 | | |
| 55 | +| password | String | 是 | password123 | 密码,则一提供 | | |
| 56 | + | |
| 57 | +#### 返回参数 | |
| 58 | + | |
| 59 | +| 名称 | 类型 | 示例值 | 描述 | | |
| 60 | +| ------------------------------ | ---------- | -------------------------------- | -------------------------------------------------- | | |
| 61 | +| success | boolean | true | 成功标识: true 成功,false 失败 | | |
| 62 | +| businessException | boolean | false | 业务异常标识: true 业务异常,false 正常 | | |
| 63 | +| errorCode | String | 200 | 错误码: 200 业务异常,500 系统异常, 空表示无错误 | | |
| 64 | +| message | String | 订单号不能为空 | 错误信息,无错误则返回空 | | |
| 65 | +| result | ZYTokenDto | | accessToken结果数据 | | |
| 66 | +| accessToken | String | 000626f15b4b41bba6fe56216a5d2f73 | accessToken | | |
| 67 | +| expiresIn | Integer | 2060 | 有效期限单位秒,accessToken在2060秒后过期 | | |
| 68 | +| tokenType | String | bearer | token类型 | | |
| 69 | + | |
| 70 | +#### 请求示例 | |
| 71 | + | |
| 72 | +##### Http方式 | |
| 73 | + | |
| 74 | +```http | |
| 75 | +POST /auth-service-api/login/password HTTP/1.1 | |
| 76 | +Host:test.shjiuze.cn | |
| 77 | +Content-Type:application/json | |
| 78 | + | |
| 79 | +{ | |
| 80 | + "username" : "zeyi", | |
| 81 | + "password" : "test1111" | |
| 82 | +} | |
| 83 | +``` | |
| 84 | + | |
| 85 | +##### Java-sdk方式 [下载SDK](https://zeyi-tms-product.oss-cn-hangzhou.aliyuncs.com/file/jar/java-sdk/zy-java-sdk-1.0.0.jar) | |
| 86 | + | |
| 87 | +```java | |
| 88 | +public class Sample { | |
| 89 | + public static void main(String[] args_) { | |
| 90 | + String appKey = "appkey"; | |
| 91 | + String appSecret = "appSecret"; | |
| 92 | + ZYClient zyClient = new ZYClient(appKey, appSecret); | |
| 93 | + ZYTokenRequestDto zyTokenRequest = new ZYTokenRequestDto(); | |
| 94 | + zyTokenRequest.setUsername("zeyi"); | |
| 95 | + zyTokenRequest.setPassword("test1111"); | |
| 96 | + String body = gson.toJson(zyTokenRequest); | |
| 97 | + HttpResponseData httpResponseData = zyClient.doPost(Constants.TEST_HOST + Constants.TOKEN_PATH, body); | |
| 98 | + if(httpResponseData == null) { | |
| 99 | + throw new TokenException("则一Token请求失败,返回为空!"); | |
| 100 | + } | |
| 101 | + ZYResponse<ZYTokenDto> zyResponse = gson.fromJson(httpResponseData.getBody(), new TypeToken<ZYResponse<ZYTokenDto>>(){}.getType()); | |
| 102 | + if(!Boolean.TRUE.equals(zyResponse.isSuccess())) { | |
| 103 | + throw new TokenException("则一Token请求返回失败!" + zyResponse.getMessage()); | |
| 104 | + } | |
| 105 | + if(zyResponse.getResult() == null) { | |
| 106 | + throw new TokenException("则一Token请求返回失败,返回结果为空!" + zyResponse.getMessage()); | |
| 107 | + } | |
| 108 | + if(StringUtils.isBlank(zyResponse.getResult().getAccessToken())) { | |
| 109 | + throw new TokenException("则一Token请求返回数据异常,AccessToken为空!" + zyResponse.getMessage()); | |
| 110 | + } | |
| 111 | + // 结果 zyResponse.getResult(); | |
| 112 | + } | |
| 113 | +} | |
| 114 | +``` | |
| 115 | + | |
| 116 | +#### 返回示例 | |
| 117 | + | |
| 118 | +```json | |
| 119 | +{ | |
| 120 | + "success": true, | |
| 121 | + "businessException": false, | |
| 122 | + "errorCode": null, | |
| 123 | + "message": null, | |
| 124 | + "result": { | |
| 125 | + "accessToken": "64d7f367-609b-4f7d-a84d-a3d2a0b5ad85", | |
| 126 | + "expiresIn": 602105, | |
| 127 | + "tokenType": "bearer" | |
| 128 | + } | |
| 129 | +} | |
| 130 | +``` | |
| 131 | + | |
| 132 | +## 车辆报修 | |
| 133 | + | |
| 134 | +### 简要描述 | |
| 135 | + | |
| 136 | +· 车辆报修 | |
| 137 | + | |
| 138 | +### 请求URL | |
| 139 | + | |
| 140 | +· 车畅行提供 /vehicleRepair/repair | |
| 141 | + | |
| 142 | +### 请求方式 | |
| 143 | + | |
| 144 | +· POST | |
| 145 | + | |
| 146 | +### 请求示例 | |
| 147 | + | |
| 148 | +```json | |
| 149 | +{ | |
| 150 | + "code":"WBJL21071000044", | |
| 151 | + "licenseNumber":"鄂ARY348", | |
| 152 | + "trailerNumber":"辽BHC28挂", | |
| 153 | + "owner":"上海则一", | |
| 154 | + "brand":"东风", | |
| 155 | + "specification":"9.6", | |
| 156 | + "vanType":"厢车", | |
| 157 | + "driverName":"张三", | |
| 158 | + "driverMobile":"18888888888", | |
| 159 | + "vin":"21654564894984LK", | |
| 160 | + "engineNumber":"2156156", | |
| 161 | + "engineModel":"大众EA111", | |
| 162 | + "manufactureTime":"1642993757000", | |
| 163 | + "registrationTime":"1642993757000", | |
| 164 | + "mileage":100000, | |
| 165 | + "trafficCompulsoryInsuranceStartTime":"1642993757000", | |
| 166 | + "trafficCompulsoryInsuranceEndTime":"1642993757000", | |
| 167 | + "commercialInsuranceStartTime":"1642993757000", | |
| 168 | + "commercialInsuranceEndTime":"1642993757000", | |
| 169 | + "medallionInvalidTime":"1642993757000", | |
| 170 | + "monthMileage":100000, | |
| 171 | + "recentRepairTime":"1642993757000", | |
| 172 | + "vehicleObject":"车头", | |
| 173 | + "vehicleAddress":"湖北省随州市曾都区淅河镇002县道", | |
| 174 | + "vehicleAddressLng":"113.465168", | |
| 175 | + "vehicleAddressLat":"31.664137", | |
| 176 | + "orgName":"上海区" | |
| 177 | +} | |
| 178 | +``` | |
| 179 | + | |
| 180 | + | |
| 181 | +### 参数 | |
| 182 | + | |
| 183 | +| 参数名 | 必传 | 类型 | | 说明 | | |
| 184 | +| :---------------------------------- | ---- | ------- | ---- | ------------------------------- | | |
| 185 | +| code | 是 | string | | 维保单号 | | |
| 186 | +| licenseNumber | 是 | string | | 车牌号 | | |
| 187 | +| trailerNumber | 否 | string | | 挂车号 | | |
| 188 | +| owner | 是 | string | | 车辆所有人 | | |
| 189 | +| brand | 否 | string | | 品牌 | | |
| 190 | +| specification | 否 | string | | 车型 | | |
| 191 | +| vanType | 否 | string | | 车厢类型 | | |
| 192 | +| driverName | 是 | string | | 司机联系姓名 | | |
| 193 | +| driverMobile | 是 | string | | 司机联系电话 | | |
| 194 | +| vin | 是 | string | | 车架号 | | |
| 195 | +| engineNumber | 是 | string | | 发动机号码 | | |
| 196 | +| engineModel | 否 | string | | 发动机型号 | | |
| 197 | +| manufactureTime | 否 | string | | 出厂日期时间戳(毫秒) | | |
| 198 | +| registrationTime | 否 | string | | 注册日期时间戳(毫秒) | | |
| 199 | +| mileage | 否 | Integer | | 车辆里程数 | | |
| 200 | +| trafficCompulsoryInsuranceStartTime | 否 | string | | 交强险开始时间戳(毫秒) | | |
| 201 | +| trafficCompulsoryInsuranceEndTime | 否 | string | | 交强险结束时间戳(毫秒) | | |
| 202 | +| commercialInsuranceStartTime | 否 | string | | 商业险开始时间戳(毫秒) | | |
| 203 | +| commercialInsuranceEndTime | 否 | string | | 商业险结束时间戳(毫秒) | | |
| 204 | +| medallionInvalidTime | 否 | string | | 营运证失效日期时间戳(毫秒) | | |
| 205 | +| monthMileage | 否 | Integer | | 月行驶里程数 | | |
| 206 | +| recentRepairTime | 否 | string | | 最近维修日期时间戳(毫秒) | | |
| 207 | +| vehicleObject | 是 | string | | 维修对象(车头、车挂、车头+车挂) | | |
| 208 | +| vehicleAddress | 是 | string | | 车辆位置 | | |
| 209 | +| vehicleAddressLng | 是 | string | | 车辆位置经度 | | |
| 210 | +| vehicleAddressLat | 是 | string | | 车辆位置纬度 | | |
| 211 | +| orgName | 是 | string | | 车辆所属区域 | | |
| 212 | +| remark | 否 | string | | 备注 | | |
| 213 | + | |
| 214 | +### 返回正常示例 | |
| 215 | + | |
| 216 | + { "success": true, "businessException": false} | |
| 217 | + | |
| 218 | +### 返回异常示例 | |
| 219 | + | |
| 220 | + { "success": false, "businessException": true, "errorCode": "200", "message": "XXX不存在!"} | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | +## 车辆维修清单 | |
| 225 | + | |
| 226 | +### 简要描述 | |
| 227 | + | |
| 228 | +· 车辆维修清单 | |
| 229 | + | |
| 230 | +### 请求URL | |
| 231 | + | |
| 232 | +· 测试环境:https://test.shjiuze.cn/vehicle-service-api/maintenance/repairList | |
| 233 | + | |
| 234 | +· 生产环境:https://gw.shjiuze.cn/vehicle-service-api/maintenance/repairList | |
| 235 | + | |
| 236 | +### 请求示例 | |
| 237 | + | |
| 238 | +#### Http方式 | |
| 239 | + | |
| 240 | +```http | |
| 241 | +POST /vehicle-service-api/maintenance/repairList HTTP/1.1 | |
| 242 | +Host:test.shjiuze.cn | |
| 243 | +Content-Type:application/json | |
| 244 | + | |
| 245 | +{ | |
| 246 | + "code":"WBJL21071000044", | |
| 247 | + "orderCode":"xxxx", | |
| 248 | + "discountedAmount":100, | |
| 249 | + "totalAmount":1000, | |
| 250 | + "paidAmount":900, | |
| 251 | + "mileage":121900, | |
| 252 | + "type":"大修", | |
| 253 | + "feeList":[ | |
| 254 | + { | |
| 255 | + "name":"工时费", | |
| 256 | + "amount":100, | |
| 257 | + "discountedAmount":0, | |
| 258 | + "remark":"" | |
| 259 | + }, | |
| 260 | + { | |
| 261 | + "name":"材料费", | |
| 262 | + "amount":950, | |
| 263 | + "discountedAmount":50, | |
| 264 | + "remark":"" | |
| 265 | + } | |
| 266 | + ], | |
| 267 | + "repairProjectList":[ | |
| 268 | + { | |
| 269 | + "name":"空调滤芯", | |
| 270 | + "number":2, | |
| 271 | + "unitPrice":275, | |
| 272 | + "discountedAmount":50, | |
| 273 | + "laborAmount":0, | |
| 274 | + "totalAmount":500, | |
| 275 | + "remark":"" | |
| 276 | + }, | |
| 277 | + { | |
| 278 | + "name":"机油滤芯", | |
| 279 | + "number":1, | |
| 280 | + "unitPrice":400, | |
| 281 | + "discountedAmount":0, | |
| 282 | + "laborAmount":100, | |
| 283 | + "totalAmount":500, | |
| 284 | + "remark":"" | |
| 285 | + }, | |
| 286 | + | |
| 287 | + { | |
| 288 | + "name":"工时费用", | |
| 289 | + "timeQuota":"1", | |
| 290 | + "unitAmount":100, | |
| 291 | + "totalAmount":100, | |
| 292 | + "remark":"" | |
| 293 | + } | |
| 294 | + | |
| 295 | + ] | |
| 296 | +} | |
| 297 | +``` | |
| 298 | + | |
| 299 | +#### Java-sdk方式 [下载SDK](https://zeyi-tms-product.oss-cn-hangzhou.aliyuncs.com/file/jar/java-sdk/zy-java-sdk-1.0.0.jar) | |
| 300 | + | |
| 301 | +```java | |
| 302 | +public class Sample { | |
| 303 | + public static void main(String[] args_) { | |
| 304 | + String appKey = "appkey"; | |
| 305 | + String appSecret = "appSecret"; | |
| 306 | + String jsonData = "推送维修清单Body参数JSON数据"; | |
| 307 | + ZYClient zyClient = new ZYClient(appKey, appSecret); | |
| 308 | + HttpResponseData httpResponseData = | |
| 309 | +zyClient.doPost(Constants.TEST_HOST + "/vehicle-service-api/maintenance/repairList", "accessToken", jsonData); | |
| 310 | + if(httpResponseData == null) { | |
| 311 | + throw new BusinessException("则一请求失败,返回结果为空!"); | |
| 312 | + } | |
| 313 | + if(httpResponseData.getStatus() == HttpURLConnection.HTTP_UNAUTHORIZED) { | |
| 314 | + //重新获取token再次请求 | |
| 315 | + httpResponseData = zyClient.doPost(Constants.TEST_HOST + | |
| 316 | + "/vehicle-service-api/maintenance/repairList", "accessToken", jsonData); | |
| 317 | + } | |
| 318 | + } | |
| 319 | +} | |
| 320 | +``` | |
| 321 | + | |
| 322 | +### Headers参数 | |
| 323 | + | |
| 324 | +| 名称 | 类型 | 必填 | 示例值 | 描述 | | |
| 325 | +| ------------- | ------ | -------------------------- | -------------------------------- | ------------------------------------------------------------ | | |
| 326 | +| Authorization | String | 是 | Bearer a2c5680001 | 调用服务端API的应用凭证accessToken,通过调用获取访问凭证接口获取。 | | |
| 327 | +| appKey | String | 是 | 0867ef5f23ef446483749e19e1692b40 | 则一提供 | | |
| 328 | +| timestamp | String | 是 | 1643251533306 | 当前时间戳毫秒值 | | |
| 329 | +| nonce | String | 是 | gdst9t | 6位小写字母数字组合随机串 | | |
| 330 | +| sign | String | 是 | fa3ed338d6dfe18e7273c8692234ee70 | 签名:appKey(则一提供) + appSecret(则一提供) + timestamp + nonce(6位随机码) + data(body参数)通过md5(32位小写)算法生成 | | |
| 331 | + | |
| 332 | +### Body参数 | |
| 333 | + | |
| 334 | +| 参数名 | 必传 | 类型 | 说明 | | |
| 335 | +| ---------------------------------------- | ---- | ---------- | ------------------------------------------ | | |
| 336 | +| code | 是 | string | 维保编码 | | |
| 337 | +| orderCode | 是 | string | 维保订单号 | | |
| 338 | +| discountedAmount | 否 | Bigdecimal | 折扣金额 | | |
| 339 | +| totalAmount | 是 | Bigdecimal | 总金额 | | |
| 340 | +| paidAmount | 是 | Bigdecimal | 应付金额 | | |
| 341 | +| mileage | 是 | Integer | 车辆里程数 | | |
| 342 | +| type | 是 | string | 维修类型 | | |
| 343 | +| feeList | 否 | list | 费用明细集合 | | |
| 344 | +| name | 是 | string | 名称(工时费、拖车费等等) | | |
| 345 | +| unit | 否 | string | 单位 | | |
| 346 | +| unitPrice | 否 | Bigdecimal | 单价 | | |
| 347 | +| number | 否 | Integer | 数量 | | |
| 348 | +| amount | 是 | Bigdecimal | 金额 | | |
| 349 | +| discountedAmount | 是 | Bigdecimal | 折扣金额 | | |
| 350 | +| remark | 否 | string | 备注 | | |
| 351 | +| repairProjectList | 否 | list | 维修项目集合(包含配件信息) | | |
| 352 | +| name | 是 | string | 项目名称 | | |
| 353 | +| unit | 否 | string | 单位 | | |
| 354 | +| number | 否 | Integer | 数量 | | |
| 355 | +| unitPrice | 是 | Bigdecimal | 单价 | | |
| 356 | +| discountedAmount | 否 | Bigdecimal | 折扣金额 | | |
| 357 | +| totalAmount | 是 | Bigdecimal | 合计金额 | | |
| 358 | +| timeQuota | 否 | Bigdecimal | 工时定额 | | |
| 359 | +| projectType | 是 | string | 维修项目类型(配件:materials\|项目:project) | | |
| 360 | +| remark | 否 | string | 备注 | | |
| 361 | + | |
| 362 | +### 返回正常示例 | |
| 363 | + | |
| 364 | + { "success": true, "businessException": false} | |
| 365 | + | |
| 366 | +### 返回异常示例 | |
| 367 | + | |
| 368 | +{ "success": false, "businessException": true, "errorCode": "200", "message": "xxx不存在!"} | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
| 372 | +## 车辆保养 | |
| 373 | + | |
| 374 | +### 简要描述 | |
| 375 | + | |
| 376 | +· 车辆保养信息推送 | |
| 377 | + | |
| 378 | +### 请求URL | |
| 379 | + | |
| 380 | +· 车畅行提供/vehicleMaintain/maintain | |
| 381 | + | |
| 382 | +### 请求方式 | |
| 383 | + | |
| 384 | +· POST | |
| 385 | + | |
| 386 | +### 请求示例 | |
| 387 | + | |
| 388 | +```json | |
| 389 | +{ | |
| 390 | + "code":"WBJL21071000044", | |
| 391 | + "licenseNumber":"鄂ARY348", | |
| 392 | + "trailerNumber":"辽BHC28挂", | |
| 393 | + "owner":"上海则一", | |
| 394 | + "brand":"东风", | |
| 395 | + "specification":"9.6", | |
| 396 | + "vanType":"厢车", | |
| 397 | + "driverName":"张三", | |
| 398 | + "driverMobile":"18888888888", | |
| 399 | + "vin":"21654564894984LK", | |
| 400 | + "engineNumber":"2156156", | |
| 401 | + "engineModel":"大众EA111", | |
| 402 | + "manufactureTime":"1642993757000", | |
| 403 | + "registrationTime":"1642993757000", | |
| 404 | + "mileage":100000, | |
| 405 | + "trafficCompulsoryInsuranceStartTime":"1642993757000", | |
| 406 | + "trafficCompulsoryInsuranceEndTime":"1642993757000", | |
| 407 | + "commercialInsuranceStartTime":"1642993757000", | |
| 408 | + "commercialInsuranceEndTime":"1642993757000", | |
| 409 | + "medallionInvalidTime":"1642993757000", | |
| 410 | + "monthMileage":100000, | |
| 411 | + "recentMaintainTime":"1642993757000", | |
| 412 | + "vehicleObject":"车头", | |
| 413 | + "vehicleAddress":"湖北省随州市曾都区淅河镇002县道", | |
| 414 | + "vehicleAddressLng":"113.465168", | |
| 415 | + "vehicleAddressLat":"31.664137", | |
| 416 | + "orgName":"上海区" | |
| 417 | +} | |
| 418 | +``` | |
| 419 | + | |
| 420 | + | |
| 421 | + | |
| 422 | +### 参数 | |
| 423 | + | |
| 424 | +| 参数名 | 必传 | 类型 | | 说明 | | |
| 425 | +| :---------------------------------- | ---- | ------- | ---- | ------------------------------- | | |
| 426 | +| code | 是 | string | | 维保单号 | | |
| 427 | +| licenseNumber | 是 | string | | 车牌号 | | |
| 428 | +| trailerNumber | 否 | string | | 挂车号 | | |
| 429 | +| owner | 是 | string | | 车辆所有人 | | |
| 430 | +| brand | 否 | string | | 品牌 | | |
| 431 | +| specification | 否 | string | | 车型 | | |
| 432 | +| vanType | 否 | string | | 车厢类型 | | |
| 433 | +| driverName | 是 | string | | 司机联系姓名 | | |
| 434 | +| driverMobile | 是 | string | | 司机联系电话 | | |
| 435 | +| vin | 是 | string | | 车架号 | | |
| 436 | +| engineNumber | 是 | string | | 发动机号码 | | |
| 437 | +| engineModel | 否 | string | | 发动机型号 | | |
| 438 | +| manufactureTime | 否 | string | | 出厂日期时间戳(毫秒) | | |
| 439 | +| registrationTime | 否 | string | | 注册日期时间戳(毫秒) | | |
| 440 | +| mileage | 否 | Integer | | 车辆里程数 | | |
| 441 | +| trafficCompulsoryInsuranceStartTime | 否 | string | | 交强险开始时间戳(毫秒) | | |
| 442 | +| trafficCompulsoryInsuranceEndTime | 否 | string | | 交强险结束时间戳(毫秒) | | |
| 443 | +| commercialInsuranceStartTime | 否 | string | | 商业险开始时间戳(毫秒) | | |
| 444 | +| commercialInsuranceEndTime | 否 | string | | 商业险结束时间戳(毫秒) | | |
| 445 | +| medallionInvalidTime | 否 | string | | 营运证失效日期时间戳(毫秒) | | |
| 446 | +| monthMileage | 否 | Integer | | 月行驶里程数 | | |
| 447 | +| recentMaintainTime | 否 | string | | 最近保养日期时间戳(毫秒) | | |
| 448 | +| vehicleObject | 是 | string | | 保养对象(车头、车挂、车头+车挂) | | |
| 449 | +| vehicleAddress | 是 | string | | 车辆位置 | | |
| 450 | +| vehicleAddressLng | 是 | string | | 车辆位置经度 | | |
| 451 | +| vehicleAddressLat | 是 | string | | 车辆位置纬度 | | |
| 452 | +| orgName | 是 | string | | 车辆所属区域 | | |
| 453 | +| remark | 否 | string | | 备注 | | |
| 454 | + | |
| 455 | +### 返回正常示例 | |
| 456 | + | |
| 457 | + { "success": true, "businessException": false} | |
| 458 | + | |
| 459 | +### 返回异常示例 | |
| 460 | + | |
| 461 | +{ "success": false, "businessException": true, "errorCode": "200", "message": "xxx不存在!"} | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
| 465 | +## 车辆保养清单 | |
| 466 | + | |
| 467 | +### 简要描述 | |
| 468 | + | |
| 469 | +· 车辆保养清单 | |
| 470 | + | |
| 471 | +### 请求URL | |
| 472 | + | |
| 473 | +· 测试环境:https://test.shjiuze.cn/vehicle-service-api/maintenance/maintainList | |
| 474 | + | |
| 475 | +· 生产环境:https://gw.shjiuze.cn/vehicle-service-api/maintenance/maintainList | |
| 476 | + | |
| 477 | +### 请求示例 | |
| 478 | + | |
| 479 | +#### Http方式 | |
| 480 | + | |
| 481 | +```http | |
| 482 | +POST /vehicle-service-api/maintenance/maintainList HTTP/1.1 | |
| 483 | +Host:test.shjiuze.cn | |
| 484 | +Content-Type:application/json | |
| 485 | + | |
| 486 | +{ | |
| 487 | + "code":"WBJL21071000044", | |
| 488 | + "orderCode":"xxxx", | |
| 489 | + "discountedAmount":100, | |
| 490 | + "totalAmount":1000, | |
| 491 | + "paidAmount":900, | |
| 492 | + "mileage":121900, | |
| 493 | + "feeList":[ | |
| 494 | + { | |
| 495 | + "name":"工时费", | |
| 496 | + "amount":100, | |
| 497 | + "discountedAmount":0, | |
| 498 | + "remark":"" | |
| 499 | + }, | |
| 500 | + { | |
| 501 | + "name":"材料费", | |
| 502 | + "amount":950, | |
| 503 | + "discountedAmount":50, | |
| 504 | + "remark":"" | |
| 505 | + } | |
| 506 | + ], | |
| 507 | + "maintainProjectList":[ | |
| 508 | + { | |
| 509 | + "name":"空调滤芯", | |
| 510 | + "number":2, | |
| 511 | + "unitPrice":275, | |
| 512 | + "discountedAmount":50, | |
| 513 | + "laborAmount":0, | |
| 514 | + "totalAmount":500, | |
| 515 | + | |
| 516 | + "type":"MAINTAIN" | |
| 517 | + | |
| 518 | + "remark":"" | |
| 519 | + }, | |
| 520 | + { | |
| 521 | + "name":"机油滤芯", | |
| 522 | + "number":1, | |
| 523 | + "unitPrice":400, | |
| 524 | + "discountedAmount":0, | |
| 525 | + "laborAmount":100, | |
| 526 | + "totalAmount":500, | |
| 527 | + | |
| 528 | + "type":"MAINTAIN" | |
| 529 | + | |
| 530 | + "remark":"" | |
| 531 | + }, | |
| 532 | + | |
| 533 | + { | |
| 534 | + "name":"工时费用", | |
| 535 | + "timeQuota":"1", | |
| 536 | + "unitAmount":100, | |
| 537 | + "amount":100, | |
| 538 | + "remark":"" | |
| 539 | + } | |
| 540 | + | |
| 541 | + ] | |
| 542 | +} | |
| 543 | +``` | |
| 544 | + | |
| 545 | +#### Java-sdk方式 [下载SDK](https://zeyi-tms-product.oss-cn-hangzhou.aliyuncs.com/file/jar/java-sdk/zy-java-sdk-1.0.0.jar) | |
| 546 | + | |
| 547 | +```java | |
| 548 | +public class Sample { | |
| 549 | + public static void main(String[] args_) { | |
| 550 | + String appKey = "appkey"; | |
| 551 | + String appSecret = "appSecret"; | |
| 552 | + String jsonData = "保养清单Body参数JSON数据"; | |
| 553 | + ZYClient zyClient = new ZYClient(appKey, appSecret); | |
| 554 | + HttpResponseData httpResponseData = | |
| 555 | +zyClient.doPost(Constants.TEST_HOST + "/vehicle-service-api/maintenance/maintainList", "accessToken", jsonData); | |
| 556 | + if(httpResponseData == null) { | |
| 557 | + throw new BusinessException("则一请求失败,返回结果为空!"); | |
| 558 | + } | |
| 559 | + if(httpResponseData.getStatus() == HttpURLConnection.HTTP_UNAUTHORIZED) { | |
| 560 | + //重新获取token再次请求 | |
| 561 | + httpResponseData = zyClient.doPost(Constants.TEST_HOST + | |
| 562 | + "/vehicle-service-api/maintenance/maintainList", "accessToken", jsonData); | |
| 563 | + } | |
| 564 | + } | |
| 565 | +} | |
| 566 | +``` | |
| 567 | + | |
| 568 | +### Headers参数 | |
| 569 | + | |
| 570 | +| 名称 | 类型 | 必填 | 示例值 | 描述 | | |
| 571 | +| ------------- | ------ | -------------------------- | -------------------------------- | ------------------------------------------------------------ | | |
| 572 | +| Authorization | String | 是 | Bearer a2c5680001 | 调用服务端API的应用凭证accessToken,通过调用获取访问凭证接口获取。 | | |
| 573 | +| appKey | String | 是 | 0867ef5f23ef446483749e19e1692b40 | 则一提供 | | |
| 574 | +| timestamp | String | 是 | 1643251533306 | 当前时间戳毫秒值 | | |
| 575 | +| nonce | String | 是 | gdst9t | 6位小写字母数字组合随机串 | | |
| 576 | +| sign | String | 是 | fa3ed338d6dfe18e7273c8692234ee70 | 签名:appKey(则一提供) + appSecret(则一提供) + timestamp + nonce(6位随机码) + data(body参数)通过md5(32位小写)算法生成 | | |
| 577 | + | |
| 578 | +### Body参数 | |
| 579 | + | |
| 580 | +| 参数名 | 必传 | 类型 | 说明 | | |
| 581 | +| ----------------------------------------------- | ---- | ---------- | -------------------------------------------- | | |
| 582 | +| code | 是 | string | 维保编码 | | |
| 583 | +| orderCode | 是 | string | 维保订单号 | | |
| 584 | +| discountedAmount | 否 | Bigdecimal | 折扣金额 | | |
| 585 | +| totalAmount | 是 | Bigdecimal | 总金额 | | |
| 586 | +| paidAmount | 是 | Bigdecimal | 应付金额 | | |
| 587 | +| mileage | 是 | Integer | 车辆里程数 | | |
| 588 | +| feeList | 否 | list | 费用明细集合 | | |
| 589 | +| name | 是 | string | 名称(工时费、材料费、拖车费等等) | | |
| 590 | +| unit | 否 | string | 单位 | | |
| 591 | +| unitPrice | 否 | Bigdecimal | 单价 | | |
| 592 | +| number | 否 | Integer | 数量 | | |
| 593 | +| amount | 是 | Bigdecimal | 金额 | | |
| 594 | +| discountedAmount | 是 | Bigdecimal | 折扣金额 | | |
| 595 | +| remark | 否 | string | 备注 | | |
| 596 | +| maintainProjectList | 否 | list | 保养项目集合(包含配件信息) | | |
| 597 | +| name | 是 | string | 项目名称 | | |
| 598 | +| unit | 否 | string | 单位 | | |
| 599 | +| number | 是 | Integer | 数量 | | |
| 600 | +| unitPrice | 是 | Bigdecimal | 单价 | | |
| 601 | +| discountedAmount | 否 | Bigdecimal | 折扣金额 | | |
| 602 | +| totalAmount | 是 | Bigdecimal | 合计金额 | | |
| 603 | +| type | 是 | string | MAINTAIN:保养 或 REPAIR:维修 | | |
| 604 | +| remark | 否 | string | 备注 | | |
| 605 | +| timeQuota | 否 | Bigdecimal | 工时定额 | | |
| 606 | +| projectType | 是 | string | 维保项目类型(配件:materials\|项目:project) | | |
| 607 | +| nextMaintainanceMileage | 否 | Integer | 下次保养里程数 | | |
| 608 | +| nextMaintainanceTime | 是 | string | 下次保养时间戳(毫秒) | | |
| 609 | + | |
| 610 | +### 返回正常示例 | |
| 611 | + | |
| 612 | + { "success": true, "businessException": false} | |
| 613 | + | |
| 614 | +### 返回异常示例 | |
| 615 | + | |
| 616 | +{ "success": false, "businessException": true, "errorCode": "200", "message": "xxx不存在!"} | |
| 617 | + | |
| 618 | + | |
| 619 | + | |
| 620 | +## 车辆维保审核 | |
| 621 | + | |
| 622 | +### 简要描述 | |
| 623 | + | |
| 624 | +· 车辆维保审核 | |
| 625 | + | |
| 626 | +### 请求URL | |
| 627 | + | |
| 628 | +· 车畅行提供 /vehicleMaintainRepair/audit | |
| 629 | + | |
| 630 | +### 请求方式 | |
| 631 | + | |
| 632 | +· POST | |
| 633 | + | |
| 634 | +### 请求示例 | |
| 635 | + | |
| 636 | +{ | |
| 637 | + "code":"WBJL21071000044", | |
| 638 | + "auditStatus":"PASS", | |
| 639 | + "auditRemark":"审核备注", | |
| 640 | + "auditeTime":"1642755099000", | |
| 641 | + "contactUser":"张大三", | |
| 642 | + "contactMobile":"13277676171" | |
| 643 | +} | |
| 644 | + | |
| 645 | +### 参数 | |
| 646 | + | |
| 647 | +| 参数名 | 必传 | 类型 | 说明 | | |
| 648 | +| ------------- | ---- | ------ | ------------------------------------------- | | |
| 649 | +| code | 是 | string | 维保编码 | | |
| 650 | +| auditStatus | 是 | string | 审核状态(PASS:审核通过,NO_PASS:审核不通过) | | |
| 651 | +| auditRemark | 否 | string | 审核备注 | | |
| 652 | +| auditeTime | 是 | string | 审核时间戳(毫秒) | | |
| 653 | +| contactUser | 否 | string | 审核联系人 | | |
| 654 | +| contactMobile | 否 | string | 审核联系人电话 | | |
| 655 | + | |
| 656 | +### 返回正常示例 | |
| 657 | + | |
| 658 | + { "success": true, "businessException": false} | |
| 659 | + | |
| 660 | +### 返回异常示例 | |
| 661 | + | |
| 662 | +{ "success": false, "businessException": true, "errorCode": "200", "message": "xxx不存在!"} | |
| 663 | + | |
| 664 | + | |
| 665 | + | |
| 666 | +## 车辆维保作废 | |
| 667 | + | |
| 668 | +### 简要描述 | |
| 669 | + | |
| 670 | +· 车辆维保作废 | |
| 671 | + | |
| 672 | +### 请求URL | |
| 673 | + | |
| 674 | +· 车畅行提供 /vehicleMaintainRepair/delete | |
| 675 | + | |
| 676 | +### 请求方式 | |
| 677 | + | |
| 678 | +· POST | |
| 679 | + | |
| 680 | +### 请求示例 | |
| 681 | + | |
| 682 | +{ | |
| 683 | + "code":"WBJL21071000044", | |
| 684 | + "reason":"上报信息错误", | |
| 685 | + "operationTime":"1642755099000", | |
| 686 | + "operationUser":"张大三", | |
| 687 | + "operationMobile":"13277676171" | |
| 688 | +} | |
| 689 | + | |
| 690 | +### 参数 | |
| 691 | + | |
| 692 | +| 参数名 | 必传 | 类型 | 说明 | | |
| 693 | +| --------------- | ---- | ------ | ---------------- | | |
| 694 | +| code | 是 | string | 维保编码 | | |
| 695 | +| reason | 否 | string | 作废原因 | | |
| 696 | +| operationTime | 是 | string | 操作时间戳(毫秒) | | |
| 697 | +| operationUser | 否 | string | 操作人 | | |
| 698 | +| operationMobile | 否 | string | 操作人电话 | | |
| 699 | + | |
| 700 | +### 返回正常示例 | |
| 701 | + | |
| 702 | + { "success": true, "businessException": false} | |
| 703 | + | |
| 704 | +### 返回异常示例 | |
| 705 | + | |
| 706 | +{ "success": false, "businessException": true, "errorCode": "200", "message": "xxx异常!"} | |
| 707 | + | |
| 708 | + | |
| 709 | + | |
| 710 | +## 维保单价格推送 | |
| 711 | + | |
| 712 | +### 简要描述 | |
| 713 | + | |
| 714 | +维保单价格推送 | |
| 715 | + | |
| 716 | +### 请求方式 | |
| 717 | + | |
| 718 | +· POST | |
| 719 | + | |
| 720 | +### 请求URL | |
| 721 | + | |
| 722 | +· 车畅行提供 /vehicleMaintainRepair/confirmPirce | |
| 723 | + | |
| 724 | +<h3>请求示例</h3> | |
| 725 | + | |
| 726 | +{ | |
| 727 | + "code":"WBJL21071000044", | |
| 728 | + "confirmAmount":1000, | |
| 729 | + "feeList":[ | |
| 730 | + { | |
| 731 | + "name":"工时费", | |
| 732 | + "confirmNumber":0, | |
| 733 | + "confirmAmount":0 | |
| 734 | + }, | |
| 735 | + { | |
| 736 | + "name":"材料费", | |
| 737 | + "confirmNumber":0, | |
| 738 | + "confirmAmount":0 | |
| 739 | + } | |
| 740 | + ], | |
| 741 | + "maintainProjectList":[ | |
| 742 | + { | |
| 743 | + "name":"空调滤芯", | |
| 744 | + "confirmNumber":2, | |
| 745 | + "confirmAmount":0, | |
| 746 | + "type":"MAINTAIN", | |
| 747 | + "projectType":"materials" | |
| 748 | + }, | |
| 749 | + { | |
| 750 | + "name":"机油滤芯", | |
| 751 | + "confirmNumber":1, | |
| 752 | + "confirmAmount":500, | |
| 753 | + "type":"MAINTAIN", | |
| 754 | + "projectType":"materials" | |
| 755 | + } | |
| 756 | + ] | |
| 757 | +} | |
| 758 | + | |
| 759 | +### Body参数 | |
| 760 | + | |
| 761 | +| 参数名 | 必传 | 类型 | 说明 | | |
| 762 | +| ------------------------------------- | ---- | ---------- | -------------------------------------------- | | |
| 763 | +| code | 是 | string | 维保编码 | | |
| 764 | +| confirmAmount | 是 | Bigdecimal | 则一确认总金额 | | |
| 765 | +| feeList | 是 | list | 费用明细集合 | | |
| 766 | +| name | 是 | string | 名称(工时费、材料费、拖车费等等) | | |
| 767 | +| confirmNumber | 是 | Integer | 则一确认数量 | | |
| 768 | +| confirmAmount | 是 | Bigdecimal | 则一确认金额 | | |
| 769 | +| maintainProjectList | 是 | list | 保养项目集合(包含配件信息) | | |
| 770 | +| name | 是 | string | 项目名称 | | |
| 771 | +| confirmNumber | 是 | Integer | 则一确认数量 | | |
| 772 | +| confirmAmount | 是 | Bigdecimal | 则一确认金额 | | |
| 773 | +| type | 是 | string | MAINTAIN:保养 或 REPAIR:维修 | | |
| 774 | +| projectType | 是 | string | 维保项目类型(配件:materials\|项目:project) | | |
| 775 | + | |
| 776 | +### 返回正常示例 | |
| 777 | + | |
| 778 | + { "success": true, "businessException": false} | |
| 779 | + | |
| 780 | +### 返回异常示例 | |
| 781 | + | |
| 782 | +{ "success": false, "businessException": true, "errorCode": "200", "message": "xxx不能为空!"} | |
| 783 | + | |
| 784 | +------------------------------------------------------------------------------------------ | |
| 785 | + | |
| 786 | +### 2022-12-02文档编写 | |
| 787 | + | |
| 788 | + | |
| 789 | + | |
| 790 | +### | ... | ... |