Commit 184a586e authored by 何金镒's avatar 何金镒

优化兆慧用户的缓存数据

parent b0949251
...@@ -9,6 +9,7 @@ public class RedisKeys { ...@@ -9,6 +9,7 @@ public class RedisKeys {
// 临时场景的存活时间 5分钟 // 临时场景的存活时间 5分钟
public static final int TEMPORARY_SCENE_TIME = 60 * 5;//TimeUnit.SECONDS public static final int TEMPORARY_SCENE_TIME = 60 * 5;//TimeUnit.SECONDS
public static final String KONKE_DIFY_AI_CDC_USER = "konke:dify:ai:cdc:user:";
public static final String KONKE_DIFY_CONVERSATION_ID = "konke:dify:conversationid:"; public static final String KONKE_DIFY_CONVERSATION_ID = "konke:dify:conversationid:";
......
...@@ -5,6 +5,7 @@ import cn.hutool.core.util.StrUtil; ...@@ -5,6 +5,7 @@ import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONArray; import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject; import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ikonke.konkeaialibabamcp.constant.RedisKeys;
import com.ikonke.konkeaialibabamcp.entity.mysql.CDCToken; import com.ikonke.konkeaialibabamcp.entity.mysql.CDCToken;
import com.ikonke.konkeaialibabamcp.entity.mysql.SynDevice; import com.ikonke.konkeaialibabamcp.entity.mysql.SynDevice;
import com.ikonke.konkeaialibabamcp.service.SycDeviceService; import com.ikonke.konkeaialibabamcp.service.SycDeviceService;
...@@ -50,6 +51,9 @@ public class CDCController { ...@@ -50,6 +51,9 @@ public class CDCController {
} }
log.info("getCDCToken..获取CDCToken..sn:{},ccuId:{},ownerId:{}",sn,ccuId,ownerId); log.info("getCDCToken..获取CDCToken..sn:{},ccuId:{},ownerId:{}",sn,ccuId,ownerId);
// 每次重启都要删除缓存的兆慧用户数据
cdcHttpUtils.delCDCUserCache(sn);
QueryWrapper<CDCToken> wrapper = new QueryWrapper<>(); QueryWrapper<CDCToken> wrapper = new QueryWrapper<>();
wrapper.eq("state", 1); wrapper.eq("state", 1);
if(StrUtil.isNotBlank(ownerId)){ if(StrUtil.isNotBlank(ownerId)){
...@@ -69,6 +73,7 @@ public class CDCController { ...@@ -69,6 +73,7 @@ public class CDCController {
log.error("【{}】未传入主机号,删除数据库数据..",sn); log.error("【{}】未传入主机号,删除数据库数据..",sn);
tokenService.removeById(token); tokenService.removeById(token);
} }
cdcHttpUtils.delCDCUserCache(sn);
//todo 主机号不存在,表明未绑定主机,需要不能使用AI功能 //todo 主机号不存在,表明未绑定主机,需要不能使用AI功能
JSONObject result = new JSONObject(); JSONObject result = new JSONObject();
result.set("msg", "未绑定主机"); result.set("msg", "未绑定主机");
...@@ -161,7 +166,7 @@ public class CDCController { ...@@ -161,7 +166,7 @@ public class CDCController {
log.info("synCDCToken..不需要同步CDCToken..耗时:{}ms",System.currentTimeMillis()-time); log.info("synCDCToken..不需要同步CDCToken..耗时:{}ms",System.currentTimeMillis()-time);
return true; return true;
}else{ }else{
CdcHttpUtils.CDCTokenCache.remove(sn); cdcHttpUtils.delCDCUserCache(sn);
bySn.setAccessToken(token); bySn.setAccessToken(token);
bySn.setRefreshToken(bySn.getAccessToken()); bySn.setRefreshToken(bySn.getAccessToken());
......
...@@ -2,22 +2,24 @@ package com.ikonke.konkeaialibabamcp.service.cdc; ...@@ -2,22 +2,24 @@ package com.ikonke.konkeaialibabamcp.service.cdc;
import cn.hutool.cache.Cache; import cn.hutool.cache.Cache;
import cn.hutool.cache.CacheUtil; import cn.hutool.cache.CacheUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpRequest;
import cn.hutool.json.JSONObject; import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.ikonke.konkeaialibabamcp.constant.RedisKeys;
import com.ikonke.konkeaialibabamcp.entity.cdc.UserEntity; import com.ikonke.konkeaialibabamcp.entity.cdc.UserEntity;
import com.ikonke.konkeaialibabamcp.entity.mysql.CDCToken; import com.ikonke.konkeaialibabamcp.entity.mysql.CDCToken;
import com.ikonke.konkeaialibabamcp.service.mysqlservice.ICDCTokenService; import com.ikonke.konkeaialibabamcp.service.mysqlservice.ICDCTokenService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@Slf4j @Slf4j
@Component @Component
public class CdcHttpUtils { public class CdcHttpUtils {
public static Cache<String, String> CDCTokenCache = CacheUtil.newLRUCache(1024);
@Value("${cdc.getOwnerUrl}") @Value("${cdc.getOwnerUrl}")
private String getOwnerUrl; private String getOwnerUrl;
...@@ -28,6 +30,9 @@ public class CdcHttpUtils { ...@@ -28,6 +30,9 @@ public class CdcHttpUtils {
@Value("${cdc.timeout}") @Value("${cdc.timeout}")
private Integer timeout; private Integer timeout;
@Autowired
private RedisTemplate<String, Object> redisTemplate;
@Autowired @Autowired
private ICDCTokenService tokenService; private ICDCTokenService tokenService;
...@@ -57,15 +62,27 @@ public class CdcHttpUtils { ...@@ -57,15 +62,27 @@ public class CdcHttpUtils {
return null; return null;
} }
public boolean delCDCUserCache(String sn){
if(StrUtil.isNotBlank(sn)){
String redis_user_key = RedisKeys.KONKE_DIFY_AI_CDC_USER+sn;
return redisTemplate.delete(redis_user_key);
}
return false;
}
/** /**
* 获取用户信息 * 获取用户信息
* *
*/ */
public UserEntity getOwner(CDCToken bySn){ public UserEntity getOwner(CDCToken bySn){
log.info("【{}】去建发获取业主信息,ccu:{}",bySn.getSn(),bySn.getCcuId()); log.info("【{}】去建发获取业主信息,ccu:{}",bySn.getSn(),bySn.getCcuId());
if(CDCTokenCache.get(bySn.getSn())!=null){
String s = CDCTokenCache.get(bySn.getSn()); String redis_user_key = RedisKeys.KONKE_DIFY_AI_CDC_USER+bySn.getSn();
return JSONUtil.toBean(s, UserEntity.class); Object user_obj =redisTemplate.opsForValue().get(redis_user_key);
if(user_obj != null){
String user_str = user_obj.toString();
return JSONUtil.toBean(user_str, UserEntity.class);
}else{ }else{
String body = HttpRequest.get(getOwnerUrl) String body = HttpRequest.get(getOwnerUrl)
.header("X-token", bySn.getAccessToken()) .header("X-token", bySn.getAccessToken())
...@@ -76,7 +93,7 @@ public class CdcHttpUtils { ...@@ -76,7 +93,7 @@ public class CdcHttpUtils {
JSONObject jsonObject = JSONUtil.parseObj(body); JSONObject jsonObject = JSONUtil.parseObj(body);
if(jsonObject.getInt("code") == 200){ if(jsonObject.getInt("code") == 200){
UserEntity userEntity = JSONUtil.toBean(jsonObject.getJSONObject("data"), UserEntity.class); UserEntity userEntity = JSONUtil.toBean(jsonObject.getJSONObject("data"), UserEntity.class);
CDCTokenCache.put(bySn.getSn(),jsonObject.getJSONObject("data").toString()); redisTemplate.opsForValue().set(redis_user_key,jsonObject.getJSONObject("data").toString());
return userEntity; return userEntity;
}else{ }else{
log.error("【{}】获取用户信息失败:{}",bySn.getSn(),body); log.error("【{}】获取用户信息失败:{}",bySn.getSn(),body);
......
## 工具列表
> Http Streamable 模式访问:[https://mcp.cndmega.com/mcp](https://mcp.cndmega.com/mcp)
| 更新日期 | 变更内容 |
| ---------- | ------------------------ |
| 2025-09-30 | 文档初始化 |
| 2025-10-14 | 接口相关参数调整 |
| 2025-11-03 | 调整访客预约新增车行预约 |
### 请求头参数
- Authorization(必需)
- user-token(必需)
- communityCode(必需)
- communityId(必需)
- easId(必需)
- roomId(必需)
- roomName(必需)
- buildingId(必需)
- userPhone(必需)
- userName(必需)
>示例:
>
>{
>
>​ "Authorization": "Bearer 秘钥"
>
>​ "user-token": "eyJhbGciOiJIUzUxMiJ9.eyJ1c2VyX2lkIjoiMDA3NjdkOTAzZDU0NDY1YmE4YjdjMjY3MTMzZmFkZTAiLCJ1c2VyX2tleSI6IjVkNjljZjZlLWNlYmMtNGMwYy1hMmI2LTYwMTYyNWY1MWQ0NyIsInVzZXJuYW1lIjoiSXgrNk5RUno1ZE1vNnFqMndrN2twQT09In0.OH_wbW7ZxHcpeZ3x2kgp0SZXijW875cGcj0w1cg9GoJ7bm5GXg_FjIpvR1sLr5vbRKRoWjeS8O9vey_kD84uRg",
>
>​ "communityCode": "35020101",
>
>​ "easId": "NECtdFFjRuW32yezGyi0kpA%2BAjY%3D",
>
>​ "roomId": "21998",
>
>​ "roomName": "公寓B-2301",
>
>​ "buildingId": "9DAC3011-3844-4A25-B342-B023D2469657",
>
>​ "userPhone": "13599533372",
>
>​ "userName": "123123123"
>
>}
### 时间参数定义
- 只需精确到天的参数命名以 `date` 开头,格式为 `YYYY-MM-DD`,同时可支持相对时间格式:`now`, `-7d`, `-1m`, `-1y`
- 例如:`dateStart="-7d"`表示查询从7天前开始的记录
- 例如:`dateStart="now"`或者`date="0d"`表示查询当天的记录
- 例如:`dateStart="-1m"`表示查询从1个月前开始的记录
- 例如:`dateStart="-1y"`表示查询从1年前开始的记录
- 例如:`dateInvite="+1d"`表示邀请访客明天来访
- 需精确到小时/分钟/秒的参数命名以 `datetime` 开头,格式为 `YYYY-MM-DD HH:MM:SS`
### 访客管理工具
#### createVisitorInvitation
创建访客邀请,生成访客记录。
**参数:**
- `name` (必需): 访客姓名
- `phone` (必需): 访客手机号码
- `datetimeStart` (必需): 到访起始时间 (格式:参考时间参数定义)
- `datetimeEnd` (必需): 到访结束时间 (格式:参考时间参数定义)
- `plate` (可选): 访客车牌号
**注意:** 社区代码、房间ID、房间名称、楼栋ID等通用参数将从请求头自动获取
#### getVisitorInvitationList
查看业主的访客记录列表。
**参数:**
- `dateStart` (可选): 查询起始时间,默认为-7d 7天前(格式:参考时间参数定义)
**注意:** 社区代码等通用参数将从请求头自动获取
### 智慧会所工具
#### getClubList
查看当前所有的智慧会所。
**注意:** 社区ID和房间ID等通用参数将从请求头自动获取
#### getClubDetail
查看指定智慧会所的信息,包含开放时间和地址。
**参数:**
- `clubName` (必需): 会所名称
**注意:** 社区ID和房间ID等通用参数将从请求头自动获取
#### createClubAppointment
预约智慧会所。
**参数:**
- `clubName` (必需): 会所名称
- `datetimeStart` (必需): 预约日期开始时间 (格式: yyyy-MM-dd HH:mm:ss)
- `datetimeEnd` (必需): 预约时段结束时间 (格式: yyyy-MM-dd HH:mm:ss)
**注意:** 社区ID和房间ID等通用参数将从请求头自动获取
#### getClubAppointmentList
获取智慧会所预约订单列表。
**参数:**
- `dateStart` (可选): 查询起始时间,默认为-7d 7天前(格式:参考时间参数定义)
**注意:** 社区ID和房间ID等通用参数将从请求头自动获取
#### getClubSchedule
查询会所可预定时间表。
**参数:**
- `clubName` (必需): 会所名称
- `date` (可选): 查询日期, 默认值为now (格式:参考时间参数定义)
**注意:** 社区ID和房间ID等通用参数将从请求头自动获取
### 垃圾代收工具
#### createRobotAppointment
创建垃圾代收订单。
**注意:** 楼栋ID和房间ID等通用参数将从请求头自动获取
#### getRobotAppointmentList
查询垃圾代收订单列表。
**参数:**
- `dateStart` (可选): 查询起始时间,默认为-7d 7天前(格式:参考时间参数定义)
**注意:** 社区ID等通用参数将从请求头自动获取
### 工单服务工具
#### createWorkOrder
创建工单。
**参数:**
- `description` (必需): 问题描述
**注意:** 社区ID等通用参数将从请求头自动获取,默认创建"问题整改"类型工单
#### getWorkOrderList
查询工单列表。
**参数:**
- `dateStart` (可选): 查询起始时间,默认为-7d 7天前(格式:参考时间参数定义)
**注意:** 社区ID等通用参数将从请求头自动获取
\ No newline at end of file
## 工具列表
> Http Streamable 模式访问:[https://mcp.cndmega.com/mcp](https://mcp.cndmega.com/mcp)
| 更新日期 | 变更内容 |
| ---------- | ------------------------ |
| 2025-09-30 | 文档初始化 |
| 2025-10-14 | 接口相关参数调整 |
| 2025-11-03 | 调整访客预约新增车行预约 |
### 请求头参数
- Authorization(必需)
- user-token(必需)
- communityCode(必需)
- communityId(必需)
- easId(必需)
- roomId(必需)
- roomName(必需)
- buildingId(必需)
- userPhone(必需)
- userName(必需)
>示例:
>
>{
>
>​ "Authorization": "Bearer 秘钥"
>
>​ "user-token": "eyJhbGciOiJIUzUxMiJ9.eyJ1c2VyX2lkIjoiMDA3NjdkOTAzZDU0NDY1YmE4YjdjMjY3MTMzZmFkZTAiLCJ1c2VyX2tleSI6IjVkNjljZjZlLWNlYmMtNGMwYy1hMmI2LTYwMTYyNWY1MWQ0NyIsInVzZXJuYW1lIjoiSXgrNk5RUno1ZE1vNnFqMndrN2twQT09In0.OH_wbW7ZxHcpeZ3x2kgp0SZXijW875cGcj0w1cg9GoJ7bm5GXg_FjIpvR1sLr5vbRKRoWjeS8O9vey_kD84uRg",
>
>​ "communityCode": "35020101",
>
>​ "easId": "NECtdFFjRuW32yezGyi0kpA%2BAjY%3D",
>
>​ "roomId": "21998",
>
>​ "roomName": "公寓B-2301",
>
>​ "buildingId": "9DAC3011-3844-4A25-B342-B023D2469657",
>
>​ "userPhone": "13599533372",
>
>​ "userName": "123123123"
>
>}
### 时间参数定义
- 只需精确到天的参数命名以 `date` 开头,格式为 `YYYY-MM-DD`,同时可支持相对时间格式:`now`, `-7d`, `-1m`, `-1y`
- 例如:`dateStart="-7d"`表示查询从7天前开始的记录
- 例如:`dateStart="now"`或者`date="0d"`表示查询当天的记录
- 例如:`dateStart="-1m"`表示查询从1个月前开始的记录
- 例如:`dateStart="-1y"`表示查询从1年前开始的记录
- 例如:`dateInvite="+1d"`表示邀请访客明天来访
- 需精确到小时/分钟/秒的参数命名以 `datetime` 开头,格式为 `YYYY-MM-DD HH:MM:SS`
### 访客管理工具
#### createVisitorInvitation
创建访客邀请,生成访客记录。
**参数:**
- `name` (必需): 访客姓名
- `phone` (必需): 访客手机号码
- `datetimeStart` (必需): 到访起始时间 (格式:参考时间参数定义)
- `datetimeEnd` (必需): 到访结束时间 (格式:参考时间参数定义)
- `plate` (必需): 访客车牌号(如果客人不开车,请填写'不开车'或者'无车'或者'不带车')
**注意:** 社区代码、房间ID、房间名称、楼栋ID等通用参数将从请求头自动获取
#### getVisitorInvitationList
查看业主的访客记录列表。
**参数:**
- `dateStart` (可选): 查询起始时间,默认为-7d 7天前(格式:参考时间参数定义)
**注意:** 社区代码等通用参数将从请求头自动获取
### 智慧会所工具
#### getClubList
查看当前所有的智慧会所。
**注意:** 社区ID和房间ID等通用参数将从请求头自动获取
#### getClubDetail
查看指定智慧会所的信息,包含开放时间和地址。
**参数:**
- `clubName` (必需): 会所名称
**注意:** 社区ID和房间ID等通用参数将从请求头自动获取
#### createClubAppointment
预约智慧会所。
**参数:**
- `clubName` (必需): 会所名称
- `datetimeStart` (必需): 预约日期开始时间 (格式: yyyy-MM-dd HH:mm:ss)
- `datetimeEnd` (必需): 预约时段结束时间 (格式: yyyy-MM-dd HH:mm:ss)
**注意:** 社区ID和房间ID等通用参数将从请求头自动获取
#### getClubAppointmentList
获取智慧会所预约订单列表。
**参数:**
- `dateStart` (可选): 查询起始时间,默认为-7d 7天前(格式:参考时间参数定义)
**注意:** 社区ID和房间ID等通用参数将从请求头自动获取
#### getClubSchedule
查询会所可预定时间表。
**参数:**
- `clubName` (必需): 会所名称
- `date` (可选): 查询日期, 默认值为now (格式:参考时间参数定义)
**注意:** 社区ID和房间ID等通用参数将从请求头自动获取
### 垃圾代收工具
#### createRobotAppointment
创建垃圾代收订单。
**注意:** 楼栋ID和房间ID等通用参数将从请求头自动获取
#### getRobotAppointmentList
查询垃圾代收订单列表。
**参数:**
- `dateStart` (可选): 查询起始时间,默认为-7d 7天前(格式:参考时间参数定义)
**注意:** 社区ID等通用参数将从请求头自动获取
### 工单服务工具
#### createWorkOrder
创建工单。
**参数:**
- `description` (必需): 问题描述
**注意:** 社区ID等通用参数将从请求头自动获取,默认创建"问题整改"类型工单
#### getWorkOrderList
查询工单列表。
**参数:**
- `dateStart` (可选): 查询起始时间,默认为-7d 7天前(格式:参考时间参数定义)
**注意:** 社区ID等通用参数将从请求头自动获取
\ No newline at end of file
## 工具列表
> Http Streamable 模式访问:[https://mcp.cndmega.com/mcp](https://mcp.cndmega.com/mcp)
| 更新日期 | 变更内容 |
| ---------- | ------------------------ |
| 2025-09-30 | 文档初始化 |
| 2025-10-14 | 接口相关参数调整 |
| 2025-11-03 | 调整访客预约新增车行预约 |
| 2025-11-04 | 新增紧急呼救工具 |
### 请求头参数
- Authorization(必需)
- user-token(必需)
- communityCode(必需)
- communityId(必需)
- easId(必需)
- roomId(必需)
- roomName(必需)
- buildingId(必需)
- userPhone(必需)
- userName(必需)
>示例:
>
>{
>
>​ "Authorization": "Bearer 秘钥"
>
>​ "user-token": "eyJhbGciOiJIUzUxMiJ9.eyJ1c2VyX2lkIjoiMDA3NjdkOTAzZDU0NDY1YmE4YjdjMjY3MTMzZmFkZTAiLCJ1c2VyX2tleSI6IjVkNjljZjZlLWNlYmMtNGMwYy1hMmI2LTYwMTYyNWY1MWQ0NyIsInVzZXJuYW1lIjoiSXgrNk5RUno1ZE1vNnFqMndrN2twQT09In0.OH_wbW7ZxHcpeZ3x2kgp0SZXijW875cGcj0w1cg9GoJ7bm5GXg_FjIpvR1sLr5vbRKRoWjeS8O9vey_kD84uRg",
>
>​ "communityCode": "35020101",
>
>​ "easId": "NECtdFFjRuW32yezGyi0kpA%2BAjY%3D",
>
>​ "roomId": "21998",
>
>​ "roomName": "公寓B-2301",
>
>​ "buildingId": "9DAC3011-3844-4A25-B342-B023D2469657",
>
>​ "userPhone": "13599533372",
>
>​ "userName": "123123123"
>
>}
### 时间参数定义
- 只需精确到天的参数命名以 `date` 开头,格式为 `YYYY-MM-DD`,同时可支持相对时间格式:`now`, `-7d`, `-1m`, `-1y`
- 例如:`dateStart="-7d"`表示查询从7天前开始的记录
- 例如:`dateStart="now"`或者`date="0d"`表示查询当天的记录
- 例如:`dateStart="-1m"`表示查询从1个月前开始的记录
- 例如:`dateStart="-1y"`表示查询从1年前开始的记录
- 例如:`dateInvite="+1d"`表示邀请访客明天来访
- 需精确到小时/分钟/秒的参数命名以 `datetime` 开头,格式为 `YYYY-MM-DD HH:MM:SS`
### 访客管理工具
#### createVisitorInvitation
创建访客邀请,生成访客记录。
**参数:**
- `name` (必需): 访客姓名
- `phone` (必需): 访客手机号码
- `datetimeStart` (必需): 到访起始时间 (格式:参考时间参数定义)
- `datetimeEnd` (必需): 到访结束时间 (格式:参考时间参数定义)
- `plate` (必需): 访客车牌号(如果客人不开车,请填写'不开车'或者'无车'或者'不带车')
**注意:** 社区代码、房间ID、房间名称、楼栋ID等通用参数将从请求头自动获取
#### getVisitorInvitationList
查看业主的访客记录列表。
**参数:**
- `dateStart` (可选): 查询起始时间,默认为-7d 7天前(格式:参考时间参数定义)
**注意:** 社区代码等通用参数将从请求头自动获取
### 智慧会所工具
#### getClubList
查看当前所有的智慧会所。
**注意:** 社区ID和房间ID等通用参数将从请求头自动获取
#### getClubDetail
查看指定智慧会所的信息,包含开放时间和地址。
**参数:**
- `clubName` (必需): 会所名称
**注意:** 社区ID和房间ID等通用参数将从请求头自动获取
#### createClubAppointment
预约智慧会所。
**参数:**
- `clubName` (必需): 会所名称
- `datetimeStart` (必需): 预约日期开始时间 (格式: yyyy-MM-dd HH:mm:ss)
- `datetimeEnd` (必需): 预约时段结束时间 (格式: yyyy-MM-dd HH:mm:ss)
**注意:** 社区ID和房间ID等通用参数将从请求头自动获取
#### getClubAppointmentList
获取智慧会所预约订单列表。
**参数:**
- `dateStart` (可选): 查询起始时间,默认为-7d 7天前(格式:参考时间参数定义)
**注意:** 社区ID和房间ID等通用参数将从请求头自动获取
#### getClubSchedule
查询会所可预定时间表。
**参数:**
- `clubName` (必需): 会所名称
- `date` (可选): 查询日期, 默认值为now (格式:参考时间参数定义)
**注意:** 社区ID和房间ID等通用参数将从请求头自动获取
### 垃圾代收工具
#### createRobotAppointment
创建垃圾代收订单。
**注意:** 楼栋ID和房间ID等通用参数将从请求头自动获取
#### getRobotAppointmentList
查询垃圾代收订单列表。
**参数:**
- `dateStart` (可选): 查询起始时间,默认为-7d 7天前(格式:参考时间参数定义)
**注意:** 社区ID等通用参数将从请求头自动获取
### 工单服务工具
#### createWorkOrder
创建工单。
**参数:**
- `description` (必需): 问题描述
**注意:** 社区ID等通用参数将从请求头自动获取,默认创建"问题整改"类型工单
#### getWorkOrderList
查询工单列表。
**参数:**
- `dateStart` (可选): 查询起始时间,默认为-7d 7天前(格式:参考时间参数定义)
**注意:** 社区ID等通用参数将从请求头自动获取
### 紧急呼救工具
#### helpMe
紧急呼救,推送业务微信公众号消息。
**注意:** 社区ID等通用参数将从请求头自动获取
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment