feat(common): 修改ApiResult增加成功消息返回方法并调整WebComponent主键类型

- 在ApiResult类中新增successWithMessage静态方法用于返回带消息的成功结果
- 将WebComponent实体类的主键类型从Integer改为Long并使用ASSIGN_ID策略
- 相应修改WebComponent相关VO和Request类中的id字段类型为Long
- 优化TicketController中通话邀请逻辑,添加用户状态检查和响应消息
- 修复MultilingualController中组件ID类型转换问题
- 调整TicketController中通话拒绝逻辑增加条件判断
- 清理多个控制器中多余的注释文档星号标记
This commit is contained in:
曹鹏飞 2026-01-09 17:19:32 +08:00
parent bf343116dd
commit 3a0facbd9e
9 changed files with 118 additions and 125 deletions

View File

@ -230,7 +230,7 @@ public class MultilingualController extends ControllerBase {
.setCreateTime(LocalDateTime.now());
webComponentService.save(webComponent);
}
int componentId = webComponent.getId();
Long componentId = webComponent.getId();
d.remove("模块");
d.remove("模块编号");
d.remove("页面");

View File

@ -1458,43 +1458,51 @@ public class TicketController extends ControllerBase {
@Transactional
@PostMapping("addCallUser")
public ApiResult<Void> addCallUser(@Valid @RequestBody CallUserAddRequest request) {
AdminUser adminUser = adminUserService.getById(AdminUserUtil.getUserId());
// TicketCall ticketCall = ticketCallService.lambdaQuery()
// .eq(TicketCall::getTicketId, request.getTicketId())
// .eq(TicketCall::getState, 1)
// .one();
// VUtils.trueThrowBusinessError(Objects.isNull(ticketCall)).throwMessage("未在通话中");
List<String> userNames = new ArrayList<>();
request.getUserIds().forEach(userId -> {
AdminUser adminUser1 = adminUserService.getById(userId);
if (Objects.nonNull(adminUser1)) {
uniPushService.send(new UniPushMessage()
.setSenderId("admin-uid-" + adminUser.getId())
.setReceiverId("admin-uid-" + userId)
.setSendData(new UniPushMessageBody()
.setTitle("视频通话")
.setContent(adminUser.getUserName() + "请求与您视频通话")
.setPayload(new UniPushMessageCallPayload()
.setTitle("视频通话")
.setContent(adminUser.getUserName() + "请求与您视频通话")
.setTicketId(String.valueOf(request.getTicketId()))
.setTicketType(0)
.setUserId(adminUser.getId())
.setUserName(adminUser.getUserName())
.setUserAvatar(adminUser.getAvatar())
.setCategory("ticketCall")
.setFrom("admin")
.setReceiverId("admin-uid-" + userId)
)
)
);
ssePushService.sendTicketCallToAdmin(adminUser, userId, request.getTicketId());
if (stringRedisTemplate.opsForHash().hasKey("ticket:shengwang:users", "2" + StrUtil.padPre(userId.toString(), 9, "0"))) {
userNames.add(adminUser1.getUserName());
} else {
uniPushService.send(new UniPushMessage()
.setSenderId("admin-uid-" + adminUser.getId())
.setReceiverId("admin-uid-" + userId)
.setSendData(new UniPushMessageBody()
.setTitle("视频通话")
.setContent(adminUser.getUserName() + "请求与您视频通话")
.setPayload(new UniPushMessageCallPayload()
.setTitle("视频通话")
.setContent(adminUser.getUserName() + "请求与您视频通话")
.setTicketId(String.valueOf(request.getTicketId()))
.setTicketType(0)
.setUserId(adminUser.getId())
.setUserName(adminUser.getUserName())
.setUserAvatar(adminUser.getAvatar())
.setCategory("ticketCall")
.setFrom("admin")
.setReceiverId("admin-uid-" + userId)
)
)
);
ssePushService.sendTicketCallToAdmin(adminUser, userId, request.getTicketId());
// ticketCallJoinService.add(ticketCall.getId(), userId, Constant.FROM_ADMIN);
stringRedisTemplate.opsForSet().add(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId(), Constant.FROM_ADMIN + "-" + userId);
stringRedisTemplate.expire(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId(), 1, TimeUnit.MINUTES);
stringRedisTemplate.opsForSet().add(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId(), Constant.FROM_ADMIN + "-" + userId);
stringRedisTemplate.expire(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId(), 1, TimeUnit.MINUTES);
}
}
});
return ApiResult.success();
if (CollectionUtil.isEmpty(userNames)) {
return ApiResult.success();
} else {
return ApiResult.successWithMessage("以下用户正在通话中:" + StrUtil.join(",", userNames));
}
}
/**
@ -1503,7 +1511,6 @@ public class TicketController extends ControllerBase {
*/
@GetMapping("call/joinChannel")
public ApiResult<Void> joinChannel(@Valid @RequestParam @NotNull Long ticketId) throws IOException, InterruptedException {
TicketDTO ticket = ticketService.getDto(ticketId);
VUtils.trueThrowBusinessError(Objects.isNull(ticket)).throwMessage("工单不存在");
VUtils.trueThrowBusinessError(!Objects.equals(ticket.getState(), TicketState.Processing.getState()))
@ -1538,7 +1545,6 @@ public class TicketController extends ControllerBase {
*/
@PostMapping("call/hangUp")
public ApiResult<Void> hangUp(@Valid @RequestBody TicketCallHangUpRequest request) {
TicketDTO ticket = ticketService.getDto(request.getTicketId());
VUtils.trueThrowBusinessError(Objects.isNull(ticket)).throwMessage("工单不存在");
if (StrUtil.equals(request.getFrom(), Constant.FROM_ADMIN) && Objects.equals(request.getFromUserId(), AdminUserUtil.getUserId())) {
@ -1565,22 +1571,24 @@ public class TicketController extends ControllerBase {
}
stringRedisTemplate.delete(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId());
} else {
uniPushService.send(new UniPushMessage()
.setSenderId(Constant.FROM_ADMIN + "-uid-" + AdminUserUtil.getUserId())//不重要
.setReceiverId(request.getFrom() + "-uid-" + request.getFromUserId())
.setSendData(new UniPushMessageBody()
.setTitle("视频通话")
.setContent("视频通话拒接")
.setPayload(new UniPushMessageCallPayload()
.setTitle("视频通话拒接")
.setTicketId(String.valueOf(request.getTicketId()))
.setTicketType(ticket.getType())
.setUserId(AdminUserUtil.getUserId())
.setCategory("ticketCallReject")
.setFrom("admin")
)
)
);
if (request.getReject()) {
uniPushService.send(new UniPushMessage()
.setSenderId(Constant.FROM_ADMIN + "-uid-" + AdminUserUtil.getUserId())//不重要
.setReceiverId(request.getFrom() + "-uid-" + request.getFromUserId())
.setSendData(new UniPushMessageBody()
.setTitle("视频通话")
.setContent("视频通话拒接")
.setPayload(new UniPushMessageCallPayload()
.setTitle("视频通话拒接")
.setTicketId(String.valueOf(request.getTicketId()))
.setTicketType(ticket.getType())
.setUserId(AdminUserUtil.getUserId())
.setCategory("ticketCallReject")
.setFrom("admin")
)
)
);
}
stringRedisTemplate.opsForSet().remove(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId(), Constant.FROM_ADMIN + "-" + AdminUserUtil.getUserId());
}
taskScheduler.schedule(() -> {

View File

@ -16,21 +16,28 @@ public class ApiResult<T> implements Serializable {
private String type;
private String message;
private Object extras;
private LocalDateTime time=LocalDateTime.now();
private LocalDateTime time = LocalDateTime.now();
private T result;
public static <T> ApiResult<T> success(T value) {
ApiResult<T> vo = new ApiResult<>();
vo.result = value;
vo.code = STATE.Success.getState();
vo.type=STATE.Success.getType();
vo.type = STATE.Success.getType();
return vo;
}
public static ApiResult<Void> successWithMessage(String msg) {
ApiResult<Void> vo = success();
vo.message = msg;
return vo;
}
public static <T> ApiResult<PageData<T>> success(Collection<T> value, PageBaseQuery query, long total) {
ApiResult<PageData<T>> vo = new ApiResult<>();
PageData<T> data=new PageData<>();
data.setItems(value);;
PageData<T> data = new PageData<>();
data.setItems(value);
;
data.setPage(query.getPage());
data.setPageSize(query.getPageSize());
data.setTotal((int) total);
@ -53,12 +60,12 @@ public class ApiResult<T> implements Serializable {
return vo;
}
public static <T> ApiResult<T> error(int state,String msg,T value) {
public static <T> ApiResult<T> error(int state, String msg, T value) {
ApiResult<T> vo = new ApiResult<>();
vo.result = value;
vo.code = state;
vo.type = msg;
vo.message=msg;
vo.message = msg;
return vo;
}
@ -71,7 +78,7 @@ public class ApiResult<T> implements Serializable {
return vo;
}
public static <T> ApiResult<T> error(int state, String type,String msg) {
public static <T> ApiResult<T> error(int state, String type, String msg) {
ApiResult<T> vo = new ApiResult<T>();
vo.code = state;
vo.type = type;
@ -85,12 +92,13 @@ public class ApiResult<T> implements Serializable {
vo.type = STATE.Success.getType();
return vo;
}
public static <T> ApiResult<T> error(STATE code, String msg) {
return error(code.getState(),code.getType(), msg);
return error(code.getState(), code.getType(), msg);
}
public static <T> ApiResult<T> error(String msg) {
return error(STATE.Error.getState(),STATE.Error.getType(), msg);
return error(STATE.Error.getState(), STATE.Error.getType(), msg);
}
public static <T> ApiResult<T> error(STATE code) {

View File

@ -10,5 +10,5 @@ import javax.validation.constraints.NotNull;
public class WebComponentUpdateRequest extends WebComponentAddRequest {
@NotNull
private Integer id;
private Long id;
}

View File

@ -9,7 +9,7 @@ import java.util.List;
@Accessors(chain = true)
public class WebComponentInfoVO {
private Integer id;
private Long id;
//模块名称
private String moduleName;

View File

@ -9,7 +9,7 @@ import java.time.LocalDateTime;
@Accessors(chain = true)
public class WebComponentVO {
private Integer id;
private Long id;
//模块名称
private String moduleName;

View File

@ -140,7 +140,6 @@ public class TicketController extends ControllerBase {
/**
* 获取问题类型
*
* @return 问题类型列表
*/
@GetMapping("getQuestions")
@ -151,7 +150,6 @@ public class TicketController extends ControllerBase {
/**
* 获取收藏夹
*
* @param id 收藏夹id0为根节点
* @return 收藏夹信息
*/
@ -163,7 +161,6 @@ public class TicketController extends ControllerBase {
/**
* 获取收藏夹树结构
*
* @param id 父级id0为根节点
* @return 树结构
*/
@ -174,7 +171,6 @@ public class TicketController extends ControllerBase {
/**
* 添加收藏夹
*
* @param request 请求信息
* @return
*/
@ -187,7 +183,6 @@ public class TicketController extends ControllerBase {
/**
* 更新收藏夹名称
*
* @param request 请求信息
*/
@PostMapping("updateFavorites")
@ -198,7 +193,6 @@ public class TicketController extends ControllerBase {
/**
* 删除收藏夹
*
* @param favoritesId 收藏夹id
* @return
*/
@ -211,7 +205,6 @@ public class TicketController extends ControllerBase {
/**
* 移动收藏夹
*
* @param request 请求信息
*/
@PostMapping("moveFavorites")
@ -222,7 +215,6 @@ public class TicketController extends ControllerBase {
/**
* 移动收藏夹工单
*
* @param request 请求信息
*/
@PostMapping("moveFavoritesTicket")
@ -233,7 +225,6 @@ public class TicketController extends ControllerBase {
/**
* 关注工单
*
* @param request 请求信息
**/
@PostMapping("followTiket")
@ -246,7 +237,6 @@ public class TicketController extends ControllerBase {
/**
* 取消关注工单
*
* @param ticketId 工单id
**/
@PostMapping("unfollowTicket")
@ -257,7 +247,6 @@ public class TicketController extends ControllerBase {
/**
* 获取所有设备部件
*
* @param name 部件名称模糊查询
* @return 部件列表
*/
@ -277,7 +266,6 @@ public class TicketController extends ControllerBase {
/**
* 搜索工单
*
* @param request 请求参数
* @return 工单列表
*/
@ -340,7 +328,6 @@ public class TicketController extends ControllerBase {
/**
* 获取工单根本原因分析
*
* @param ticketId 工单id
* @return 根本原因分析
*/
@ -354,7 +341,6 @@ public class TicketController extends ControllerBase {
/**
* 导出搜索工单
*
* @param request 请求参数
*/
@PostMapping("exportSearchTicket")
@ -367,7 +353,6 @@ public class TicketController extends ControllerBase {
/**
* 分派工单
*
* @param request 请求参数
*/
@PostMapping("assignmentTicket")
@ -397,7 +382,6 @@ public class TicketController extends ControllerBase {
/**
* 获取工单处理人
*
* @param id 工单id
* @return 工单处理人列表
*/
@ -409,7 +393,6 @@ public class TicketController extends ControllerBase {
/**
* 添加/删除工单处理人
*
* @param request 请求参数
*/
@PostMapping("addTicketHandle")
@ -431,7 +414,6 @@ public class TicketController extends ControllerBase {
/**
* 完成工单
*
* @param ids 工单id列表
*/
@PostMapping("completeTicket")
@ -463,7 +445,6 @@ public class TicketController extends ControllerBase {
/**
* 驳回工单
*
* @param ids 工单id列表
*/
@PostMapping("rejectTicket")
@ -495,7 +476,6 @@ public class TicketController extends ControllerBase {
/**
* 撤销工单
*
* @param id 工单编号
**/
@GetMapping("revokedTicket")
@ -506,7 +486,6 @@ public class TicketController extends ControllerBase {
/**
* 导出工单为pdf
*
* @param id 工单id
*/
@GetMapping("exportPdf")
@ -615,7 +594,6 @@ public class TicketController extends ControllerBase {
/**
* 获取工单详情
*
* @param id 工单编号
* @return 工单详情
**/
@ -784,7 +762,6 @@ public class TicketController extends ControllerBase {
/**
* 获取工单聊天记录
*
* @param ticketId 工单编号
* @return 聊天记录
**/
@ -826,7 +803,6 @@ public class TicketController extends ControllerBase {
/**
* 设置聊天记录已读
*
* @param ticketId 工单编号
**/
@PostMapping("setChatMessageReaded")
@ -837,7 +813,6 @@ public class TicketController extends ControllerBase {
/**
* 添加聊天记录
*
* @param request 请求信息
**/
@PostMapping("addChatMessage")
@ -901,7 +876,6 @@ public class TicketController extends ControllerBase {
/**
* 撤回聊天记录
*
* @param request 请求信息
**/
@PostMapping("withdrawChatMessage")
@ -916,7 +890,6 @@ public class TicketController extends ControllerBase {
/**
* 获取工单解决方案措施
*
* @param ticketId 工单编号
* @return 解决方案措施
**/
@ -928,7 +901,6 @@ public class TicketController extends ControllerBase {
/**
* 获取工单解决方案评审部门
*
* @param ticketId 工单编号
* @return 评审部门
**/
@ -940,7 +912,6 @@ public class TicketController extends ControllerBase {
/**
* 保存工单解决方案措施
*
* @param request 请求信息
**/
@PostMapping("saveSolutionMeasures")
@ -954,7 +925,6 @@ public class TicketController extends ControllerBase {
/**
* 驳回工单解决方案
*
* @param request 请求信息
**/
@PostMapping("rejectSolution")
@ -983,7 +953,6 @@ public class TicketController extends ControllerBase {
/**
* 通过工单解决方案
*
* @param ticketId 工单编号
**/
@GetMapping("passSolution")
@ -1013,7 +982,6 @@ public class TicketController extends ControllerBase {
/**
* 导出工单报表
*
* @param request 请求参数
*/
@PostMapping("exportTicketReport")
@ -1026,7 +994,6 @@ public class TicketController extends ControllerBase {
/**
* 导出工单详情为excel
*
* @param ticketId 工单编号
*/
@GetMapping("/exportTicketExcel")
@ -1335,7 +1302,6 @@ public class TicketController extends ControllerBase {
/**
* 获取工单处理人
*
* @param ticketId 工单编号
*/
@GetMapping("/getHandlers")
@ -1346,7 +1312,6 @@ public class TicketController extends ControllerBase {
/**
* 请求通话
*
* @param ticketId 工单编号
*/
@GetMapping("call")
@ -1416,7 +1381,6 @@ public class TicketController extends ControllerBase {
/**
* 添加通话用户
*
* @param request 请求参数
*/
@Transactional
@ -1428,36 +1392,45 @@ public class TicketController extends ControllerBase {
// .eq(TicketCall::getState, 1)
// .one();
// VUtils.trueThrowBusinessError(Objects.isNull(ticketCall)).throwMessage("未在通话中");
List<String> userNames = new ArrayList<>();
request.getUserIds().forEach(userId -> {
AdminUser adminUser1 = adminUserService.getById(userId);
if (Objects.nonNull(adminUser1)) {
uniPushService.send(new UniPushMessage()
.setSenderId("admin-uid-" + adminUser.getId())
.setReceiverId("admin-uid-" + userId)
.setSendData(new UniPushMessageBody()
.setTitle("视频通话")
.setContent(adminUser.getUserName() + "请求与您视频通话")
.setPayload(new UniPushMessageCallPayload()
.setTitle("视频通话")
.setContent(adminUser.getUserName() + "请求与您视频通话")
.setTicketId(String.valueOf(request.getTicketId()))
.setTicketType(1)
.setUserId(adminUser.getId())
.setUserName(adminUser.getUserName())
.setUserAvatar(adminUser.getAvatar())
.setCategory("ticketCall")
.setFrom("admin")
.setReceiverId("admin-uid-" + userId)
)
)
);
ssePushService.sendTicketCallToAdmin(adminUser, userId, request.getTicketId());
if (stringRedisTemplate.opsForHash().hasKey("ticket:shengwang:users", "2" + StrUtil.padPre(userId.toString(), 9, "0"))) {
userNames.add(adminUser1.getUserName());
} else {
uniPushService.send(new UniPushMessage()
.setSenderId("admin-uid-" + adminUser.getId())
.setReceiverId("admin-uid-" + userId)
.setSendData(new UniPushMessageBody()
.setTitle("视频通话")
.setContent(adminUser.getUserName() + "请求与您视频通话")
.setPayload(new UniPushMessageCallPayload()
.setTitle("视频通话")
.setContent(adminUser.getUserName() + "请求与您视频通话")
.setTicketId(String.valueOf(request.getTicketId()))
.setTicketType(1)
.setUserId(adminUser.getId())
.setUserName(adminUser.getUserName())
.setUserAvatar(adminUser.getAvatar())
.setCategory("ticketCall")
.setFrom("admin")
.setReceiverId("admin-uid-" + userId)
)
)
);
ssePushService.sendTicketCallToAdmin(adminUser, userId, request.getTicketId());
// ticketCallJoinService.add(ticketCall.getId(), userId, Constant.FROM_ADMIN);
stringRedisTemplate.opsForSet().add(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId(), Constant.FROM_ADMIN + "-" + userId);
stringRedisTemplate.expire(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId(), 1, TimeUnit.MINUTES);
stringRedisTemplate.opsForSet().add(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId(), Constant.FROM_ADMIN + "-" + userId);
stringRedisTemplate.expire(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId(), 1, TimeUnit.MINUTES);
}
}
});
return ApiResult.success();
if (CollectionUtil.isEmpty(userNames)) {
return ApiResult.success();
} else {
return ApiResult.successWithMessage("以下用户正在通话中:" + StrUtil.join(",", userNames));
}
}
// /**
@ -1528,7 +1501,6 @@ public class TicketController extends ControllerBase {
/**
* 获取声网频道用户列表
*
* @param ticketId 工单ID
* @return 用户列表
*/
@ -1539,7 +1511,6 @@ public class TicketController extends ControllerBase {
/**
* 获取处理人列表
*
* @return 处理人列表
*/
@GetMapping("getHandlerForSelect")
@ -1549,7 +1520,6 @@ public class TicketController extends ControllerBase {
/**
* 获取工单案例图片
*
* @param id 工单ID
* @return 工单案例图片
*/

View File

@ -3,12 +3,13 @@ package com.nflg.mobilebroken.repository.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
*
@ -25,8 +26,8 @@ public class WebComponent implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@TableId(value = "id", type = IdType.ASSIGN_ID)
private Long id;
/**
* 模块名称

View File

@ -1,11 +1,14 @@
package com.nflg.mobilebroken.repository.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* <p>
*
@ -22,10 +25,13 @@ public class WebComponentTranslate implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.ASSIGN_ID)
private Long id;
/**
* 组件id
*/
private Integer componentId;
private Long componentId;
/**
* 语言id