1.1 通讯录 API 接口列表
1.2 添加用户-单个添加接口
请求
请求方式:json 格式封装的字符串,采用 post 方式提交请求
请求协议:http/https
编码格式:utf-8
Content-Type:application/json
请求参数
参数名称 | 类型 | 是否必传 | 描述 | 示例 |
---|
phone | String | 是 | 手机号 | "phone": "19956567878" |
name | String | 否 | 姓名 | "name": "张三" |
gender | String | 否 | 性别 0 未知 1 男 2 女) | "gender": "0" |
remarks | String | 否 | 备注 | "remarks": "办公室经理" |
labelNames | List | 否 | 标签名称 | "labelNames": ["管理人员","单身"] |
请求格式
{
"phone": "19956567878",
"name": "张三",
"gender": "0",
"remarks": "办公室经理",
"labelNames": ["管理人员","单身"]
}
响应说明
参数名称 | 类型 | 描述 | 示例 |
---|
code | String | 响应码,2xx:成功,4xx:客户端错误,5xx:服务端错误 | "code": "20000200" |
msg | String | 响应消息 | "msg": "请求成功" |
totalMillis | integer(int64) | 处理耗时 | "totalMillis": 1698 |
extensions | object | 扩展数据 | |
JSON 成功返回示例
{
"code": "20000200",
"msg": "请求成功",
"totalMillis": 1698
}
JSON 失败返回示例
{
"code": "43030403",
"msg": "手机号已存在",
"totalMillis": 120,
"extensions": {
"realMessage": "手机号已存在",
"stack": "org.chuanglan.nsms.boot.domain.web.exception.ApiException: 手机号已存在\r\n\tat com.chuanglan.nsms.common.api.util.ApiClientUtils.resultWithApi(ApiClientUtils.java:27)\r\n\tat com.chuanglan.nsms.sms.SmsTenantServiceClient.createSingleUser(SmsTenantServiceClient.java:59)\r\n\tat com.chuanglan.nsms.saas.manager.AddressBookManager.createSingleUser(AddressBookManager.java:45)\r\n\tat com.chuanglan.nsms.saas.controller.AddressBookResource.createSingleUser(AddressBookResource.java:37)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.lang.reflect.Method.invoke(Method.java:498)\r\n\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)\r\n\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)\r\n\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)\r\n\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:878)\r\n\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:792)\r\n\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\r\n\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)\r\n\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)\r\n\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\r\n\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)\r\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:652)\r\n\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\r\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:733)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\r\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\r\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.chuanglan.nsms.boot.web.servlet.filter.RequestContentCachingFilter.doFilterInternal(RequestContentCachingFilter.java:27)\r\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat com.chuanglan.nsms.common.app.context.ContextTransferFilter.doFilterInternal(ContextTransferFilter.java:33)\r\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:93)\r\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.chuanglan.nsms.boot.web.servlet.monitor.cat.CatExtendedFilter.doFilter(CatExtendedFilter.java:40)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\r\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.chuanglan.nsms.boot.web.servlet.filter.RequestTimeFilter.doFilterInternal(RequestTimeFilter.java:26)\r\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat com.dianping.cat.servlet.CatFilter.doFilter(CatFilter.java:84)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)\r\n\tat org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\r\n\tat org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)\r\n\tat org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)\r\n\tat org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\r\n\tat org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\r\n\tat org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)\r\n\tat org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)\r\n\tat org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\r\n\tat org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)\r\n\tat org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590)\r\n\tat org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\r\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\r\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\r\n\tat org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\r\n\tat java.lang.Thread.run(Thread.java:748)\r\n"
}
}
1.3 通讯录删除接口
请求
请求方式:json 格式封装的字符串,采用 post 方式提交请求
请求协议:http/https
编码格式:utf-8
Content-Type:application/json
请求参数
参数名称 | 类型 | 是否必传 | 描述 | 示例 |
---|
labelId | String | 否 | 标签 ID | "labelId": "1422042106465214465" |
addrBookIds | List | 是 | addrBookIds 集合 | "addrBookIds": ["1428625935769456642"] |
请求格式
{
"labelId": "1422042106465214465",
"addrBookIds": ["1428625935769456642"]
}
响应说明
参数名称 | 类型 | 描述 | 示例 |
---|
code | String | 响应码,2xx:成功,4xx:客户端错误,5xx:服务端错误 | "code": "20000200" |
msg | String | 响应消息 | "msg": "请求成功" |
totalMillis | integer(int64) | 处理耗时 | "totalMillis": 1698 |
extensions | object | 扩展数据 | |
JSON 成功返回示例
{
"code": "20000200",
"msg": "请求成功",
"totalMillis": 164
}
JSON 失败返回示例
{
"code": "40000470",
"msg": "Validation failed for argument [0] in public org.chuanglan.nsms.boot.domain.web.ApiResult<java.lang.Void> com.chuanglan.nsms.saas.controller.AddressBookResource.labelBatchDelete(com.chuanglan.nsms.saas.manager.vo.addressbooklabel.LabelBatchDeleteRequest): [Field error in object 'labelBatchDeleteRequest' on field 'addrBookIds': rejected value [[]]; codes [NotEmpty.labelBatchDeleteRequest.addrBookIds,NotEmpty.addrBookIds,NotEmpty.java.util.List,NotEmpty]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [labelBatchDeleteRequest.addrBookIds,addrBookIds]; arguments []; default message [addrBookIds]]; default message [addrBookId集合不能为空]] ",
"totalMillis": 31,
"extensions": {
"realMessage": "参数[addrBookIds]: addrBookId集合不能为空",
"stack": "org.springframework.web.bind.MethodArgumentNotValidException: Validation failed for argument [0] in public org.chuanglan.nsms.boot.domain.web.ApiResult<java.lang.Void> com.chuanglan.nsms.saas.controller.AddressBookResource.labelBatchDelete(com.chuanglan.nsms.saas.manager.vo.addressbooklabel.LabelBatchDeleteRequest): [Field error in object 'labelBatchDeleteRequest' on field 'addrBookIds': rejected value [[]]; codes [NotEmpty.labelBatchDeleteRequest.addrBookIds,NotEmpty.addrBookIds,NotEmpty.java.util.List,NotEmpty]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [labelBatchDeleteRequest.addrBookIds,addrBookIds]; arguments []; default message [addrBookIds]]; default message [addrBookId集合不能为空]] \r\n\tat org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:139)\r\n\tat org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121)\r\n\tat org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:167)\r\n\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:134)\r\n\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)\r\n\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:878)\r\n\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:792)\r\n\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\r\n\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)\r\n\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)\r\n\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\r\n\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)\r\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:652)\r\n\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\r\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:733)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\r\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\r\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.chuanglan.nsms.boot.web.servlet.filter.RequestContentCachingFilter.doFilterInternal(RequestContentCachingFilter.java:27)\r\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat com.chuanglan.nsms.common.app.context.ContextTransferFilter.doFilterInternal(ContextTransferFilter.java:33)\r\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:93)\r\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.chuanglan.nsms.boot.web.servlet.monitor.cat.CatExtendedFilter.doFilter(CatExtendedFilter.java:40)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\r\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.chuanglan.nsms.boot.web.servlet.filter.RequestTimeFilter.doFilterInternal(RequestTimeFilter.java:26)\r\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat com.dianping.cat.servlet.CatFilter.doFilter(CatFilter.java:84)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)\r\n\tat org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\r\n\tat org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)\r\n\tat org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)\r\n\tat org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\r\n\tat org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\r\n\tat org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)\r\n\tat org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)\r\n\tat org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\r\n\tat org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)\r\n\tat org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590)\r\n\tat org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\r\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\r\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\r\n\tat org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\r\n\tat java.lang.Thread.run(Thread.java:748)\r\n"
}
}
1.4 编辑通讯录接口
请求
请求方式:json 格式封装的字符串,采用 post 方式提交请求
请求协议:http/https
编码格式:utf-8
Content-Type: application/x-www-form-urlencoded
请求参数
参数名称 | 类型 | 是否必传 | 描述 | 示例 |
---|
addrBookId | String | 是 | 通讯录 Id | "addrBookId": "1428958303114866690" |
phone | String | 是 | 手机号 | "phone": "19956567878" |
name | String | 否 | 姓名 | "name": "孙悟空" |
gender | String | 否 | 性别 0 未知 1 男 2 女) | "gender": "1" |
remarks | String | 否 | 备注 | "remarks": "美猴王" |
labelNames | List | 否 | 标签名称 | "labelNames": ["001"] |
请求格式
{
"addrBookId": "1428958303114866690",
"gender": "1",
"phone": "19956567878",
"labelNames": [
"001"
],
"remarks": "美猴王",
"name": "孙悟空"
}
响应说明
参数名称 | 类型 | 描述 | 示例 |
---|
code | String | 响应码,2xx:成功,4xx:客户端错误,5xx:服务端错误 | "code": "20000200" |
msg | String | 响应消息 | "msg": "请求成功" |
totalMillis | integer(int64) | 处理耗时 | "totalMillis": 1698 |
extensions | object | 扩展数据 | |
JSON 成功返回示例
{
"code": "20000200",
"msg": "请求成功",
"totalMillis": 582
}
JSON 失败返回示例
{
"code": "43030403",
"msg": "手机号已存在",
"totalMillis": 120,
"extensions": {
"realMessage": "手机号已存在",
"stack": "org.chuanglan.nsms.boot.domain.web.exception.ApiException: 手机号已存在\r\n\tat com.chuanglan.nsms.common.api.util.ApiClientUtils.resultWithApi(ApiClientUtils.java:27)\r\n\tat com.chuanglan.nsms.sms.SmsTenantServiceClient.createSingleUser(SmsTenantServiceClient.java:59)\r\n\tat com.chuanglan.nsms.saas.manager.AddressBookManager.createSingleUser(AddressBookManager.java:45)\r\n\tat com.chuanglan.nsms.saas.controller.AddressBookResource.createSingleUser(AddressBookResource.java:37)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.lang.reflect.Method.invoke(Method.java:498)\r\n\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)\r\n\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)\r\n\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)\r\n\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:878)\r\n\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:792)\r\n\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\r\n\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)\r\n\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)\r\n\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\r\n\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)\r\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:652)\r\n\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\r\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:733)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\r\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\r\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.chuanglan.nsms.boot.web.servlet.filter.RequestContentCachingFilter.doFilterInternal(RequestContentCachingFilter.java:27)\r\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat com.chuanglan.nsms.common.app.context.ContextTransferFilter.doFilterInternal(ContextTransferFilter.java:33)\r\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:93)\r\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.chuanglan.nsms.boot.web.servlet.monitor.cat.CatExtendedFilter.doFilter(CatExtendedFilter.java:40)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\r\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.chuanglan.nsms.boot.web.servlet.filter.RequestTimeFilter.doFilterInternal(RequestTimeFilter.java:26)\r\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat com.dianping.cat.servlet.CatFilter.doFilter(CatFilter.java:84)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)\r\n\tat org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\r\n\tat org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)\r\n\tat org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)\r\n\tat org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\r\n\tat org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\r\n\tat org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)\r\n\tat org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)\r\n\tat org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\r\n\tat org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)\r\n\tat org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590)\r\n\tat org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\r\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\r\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\r\n\tat org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\r\n\tat java.lang.Thread.run(Thread.java:748)\r\n"
}
}
1.5 根据 id 查询接口
请求
推送方式:GET
请求协议:http/https
编码格式:utf-8
Content-Type:application/json
请求参数
参数名称 | 类型 | 是否必传 | 描述 | 示例 |
---|
id | integer | 是 | id | 1428959560730783746 |
响应说明
参数名称 | 类型 | 描述 | 示例 |
---|
code | String | 响应码,2xx:成功,4xx:客户端错误,5xx:服务端错误 | "code": "20000200" |
msg | String | 响应消息 | "msg": "请求成功" |
data--- | AddressBookVO | 响应数据 | |
id | String | 主键 ID | "id":"1428959560730783746" |
customerId | String | 客户 ID | "customerId":"486" |
phone | String | 手机号码 | "phone":"19956567876" |
name | String | 姓名 | "name":"孙悟空 2" |
gender | integer | 性别 0-未知 1-男 2-女 3-男和女 | "gender":1, |
status | integer | 该手机号码状态 0 正常,1 黑名单 | "status":0 |
remarks | String | 备注 | |
bookLabelName | List | 标签名 | "bookLabelName":["001"] |
totalMillis | integer(int64) | 处理耗时 | "totalMillis": 1698 |
extensions | object | 扩展数据 | |
JSON 成功返回示例
{
"code": "20000200",
"msg": "请求成功",
"data": {
"id": "1428959560730783746",
"customerId": "486",
"phone": "19956567876",
"name": "孙悟空2",
"gender": 1,
"genderName": "男",
"status": 0,
"bookLabelName": ["001"]
},
"totalMillis": 2527
}
1.6 根据标签-手机号-分页查询接口
请求
URL:
https://XXX /api/v1/address-book/query-by-page(登录管理后台获取完整域名)
推送方式:GET
请求协议:http/https
编码格式:utf-8
Content-Type: application/x-www-form-urlencoded
请求参数
参数名称 | 类型 | 是否必传 | 描述 | 示例 |
---|
gender | List | 否 | 性别 0 未知 1 男 2 女 | "gender": "0" |
labelId | String | 否 | 标签 ID | |
phoneAndName | String | 否 | 手机号码-姓名-模糊 | |
addrBookId | String | 否 | 通讯录 id | |
page | integer | 否 | 页码(从 1 开始),示例值(1) | |
size | integer | 否 | 每页数量,示例值(20) | |
sort | List | 否 | 排序标准: property[,property](,asc|desc) 默认升序,支持多级排序 | |
响应说明
参数名称 | 类型 | 描述 | 示例 |
---|
code | String | 响应码,2xx:成功,4xx:客户端错误,5xx:服务端错误 | "code": "20000200" |
msg | String | 响应消息 | "msg": "请求成功" |
data-- | PagingOfAddressBookVO | 响应数据 | |
totalElement | integer | 数据总条数 | "totalElement":2 |
totalPage | integer | 总页数 | "totalPage":1 |
currentPage | integer | 当前页码 | "currentPage":1 |
pageSize | integer | 每页数量 | "pageSize":10 |
content | List | 当前页数据 | |
id | String | 主键 ID | "id":"1428959560730783746" |
customerId | String | 客户 ID | "customerId":"486" |
phone | String | 手机号码 | "phone":"19956567876" |
name | String | 姓名 | "name":"孙悟空 2" |
gender | integer | 性别 [ 0-未知、1-男、2-女、3-男和女] | "gender":1 |
status | integer | 该手机号码状态 0 正常,1 黑名单 | "status":0 |
remarks | String | 备注 | "remarks":"美猴王" |
bookLabelName | List | 标签名 | "bookLabelName":"猴子" |
totalMillis | integer(int64) | 处理耗时 | "totalMillis": 1698 |
extensions | object | 扩展数据 | |
JSON 成功返回示例
{
"code": "20000200",
"msg": "请求成功",
"data": {
"totalElement": 2,
"totalPage": 1,
"currentPage": 1,
"pageSize": 10,
"content": [
{
"id": "1428959560730783746",
"customerId": "486",
"phone": "19956567876",
"name": "孙悟空2",
"gender": 1,
"genderName": "男",
"status": 0
},
{
"id": "1428958303114866690",
"customerId": "486",
"phone": "19956567878",
"name": "孙悟空",
"gender": 1,
"genderName": "男",
"status": 0,
"remarks": "美猴王"
}
]
},
"totalMillis": 227
}
1.7 根据标签批量移动接口
请求
请求方式:json 格式封装的字符串,采用 post 方式提交请求
请求协议:http/https
编码格式:utf-8
Content-Type:application/json
请求参数
参数名称 | 类型 | 是否必传 | 描述 | 示例 |
---|
beforeLabelId | String | 否 | 修改前标签 | "beforeLabelId": "1428958303559462913" |
afterLabelId | String | 是 | 修改后标签 | "afterLabelId": "1429070340436357122" |
addrBookIds | List | 是 | addrBookIds 集合 | "addrBookIds": [ "1428958303114866690"] |
请求格式
{
"beforeLabelId": "1428958303559462913",
"afterLabelId": "1429070340436357122",
"addrBookIds": [
"1428959560730783746",
"1428958303114866690"
]
}
响应说明
参数名称 | 类型 | 描述 | 示例 |
---|
code | String | 响应码,2xx:成功,4xx:客户端错误,5xx:服务端错误 | "code": "20000200" |
msg | String | 响应消息 | "msg": "请求成功" |
totalMillis | integer(int64) | 处理耗时 | "totalMillis": 1698 |
extensions | object | 扩展数据 | |
JSON 成功返回示例
{
"code":"20000200",
"msg":"请求成功",
"totalMillis":460
}
1.8 根据标签批量复制接口
请求
URL:
https://XXX /api/v1/address-book/label-batch-copy(登录管理后台获取完整域名)
请求方式:json 格式封装的字符串,采用 post 方式提交请求
请求协议:http/https
编码格式:utf-8
Content-Type:application/json
请求参数
参数名称 | 类型 | 是否必传 | 描述 | 示例 |
---|
beforeLabelId | String | 否 | 修改前标签 | "beforeLabelId": "1428958303559462913" |
afterLabelId | String | 是 | 修改后标签 | "afterLabelId": "1429070340436357122" |
addrBookIds | List | 是 | addrBookIds 集合 | "addrBookIds": [ "1428958303114866690"] |
请求格式
{
"beforeLabelId": "1428958303559462913",
"afterLabelId": "1429070340436357122",
"addrBookIds": [
"1428959560730783746",
"1428958303114866690"
]
}
响应说明
参数名称 | 类型 | 描述 | 示例 |
---|
code | String | 响应码,2xx:成功,4xx:客户端错误,5xx:服务端错误 | "code": "20000200" |
msg | String | 响应消息 | "msg": "请求成功" |
totalMillis | integer(int64) | 处理耗时 | "totalMillis": 1698 |
extensions | object | 扩展数据 | |
JSON 成功返回示例
{
"code":"20000200",
"msg":"请求成功",
"totalMillis":460
}
没有更多了