工单管理接口 - RuixiangTech Ticket系统
package com.ruixiangtech.ticket.ticket;
import com.ruixiangtech.ticket.exception.CustomException;
import com.ruixiangtech.ticket.system.config.SystemConfigService;
import com.ruixiangtech.ticket.user.User;
import com.ruixiangtech.ticket.user.UserService;
import com.ruixiangtech.ticket.util.BasicUtil;
import com.ruixiangtech.ticket.util.ResultEntity;
import com.ruixiangtech.ticket.util.ResultWrapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
@RestController
@Slf4j
@RequestMapping(value = "/ticket", produces = "application/json;")
public class TicketController {
private final TicketService ticketService;
private final SystemConfigService systemConfigService;
private final UserService userService;
public TicketController(TicketService ticketService, SystemConfigService systemConfigService, UserService userService) {
this.ticketService = ticketService;
this.systemConfigService = systemConfigService;
this.userService = userService;
}
@RequestMapping("/list")
public ResultEntity list(@RequestBody HashMap<String, String> body) {
// 获取openid
BasicUtil.mapFieldsKeyExistsCheck(body, new String[]{"openId"});
String openId = body.get("openId");
// 根据openid获取用户信息
User selectUser = (User) userService.selectByOpenId(openId).getData("object");
if (selectUser == null) {
return ResultEntity.error("用户不存在");
}
// 获取工单列表
return ResultEntity.success("获取成功", ticketService.selectByBelongUser(selectUser.getId()));
}
@RequestMapping("/listByStatus")
public ResultEntity listById(@RequestBody HashMap<String, String> body) {
BasicUtil.mapFieldsKeyExistsCheck(body, new String[]{"status", "openId"});
Integer status = Integer.parseInt(body.get("status"));
String openId = body.get("openId");
// 根据openid获取用户信息
User selectUser = (User) userService.selectByOpenId(openId).getData("object");
if (selectUser == null) {
return ResultEntity.error("用户不存在");
}
return ResultEntity.success("", ticketService.selectByStatus(status, selectUser.getId()));
}
@RequestMapping("/submit")
public ResultEntity submit(@Validated(Ticket.submit.class) @RequestBody Ticket ticket) {
// 获取openid
HashMap<String, String> properties = ticket.getProperties();
if (!properties.containsKey("openId"))
return ResultEntity.error("openId不能为空");
// 根据openid获取用户信息
ResultWrapper resultWrapper = userService.selectByOpenId(properties.get("openId"));
User selectUser = (User) resultWrapper.getData("object");
if (!resultWrapper.getResultBoolean()) {
return ResultEntity.error("用户不存在");
}
// 提交数据库
ticket.setBelongUser(selectUser.getId());
if (ticketService.insert(ticket) == 1) {
return ResultEntity.success("提交成功", new HashMap<String, Integer>() { {
put("handle_time", systemConfigService.getSystemConfig().getHandleTime());
}});
} else {
return ResultEntity.error("提交失败");
}
}
@RequestMapping("/claim")
public ResultEntity claim(@Validated(Ticket.claim.class) @RequestBody Ticket ticket) {
Ticket foundTicket = ticketService.selectById(ticket.getId());
BasicUtil.assertCondition(foundTicket != null, "工单不存在");
BasicUtil.assertCondition(foundTicket.getStatus() == 0 || foundTicket.getStatus() == 3, "只有未被处理的工单才能认领");
if (foundTicket.getStatus() == 0) {
ticket.setStatus(1);
} else if (foundTicket.getStatus() == 3) {
ticket.setStatus(4);
} else {
throw new CustomException("工单状态错误");
}
if (ticketService.claim(ticket) == 1) {
return ResultEntity.success("认领成功");
} else {
return ResultEntity.error("认领失败");
}
}
@RequestMapping("/reply")
public ResultEntity reply(@Validated(Ticket.reply.class) @RequestBody Ticket ticket) {
Ticket foundTicket = ticketService.selectById(ticket.getId());
BasicUtil.assertCondition(foundTicket != null, "工单不存在");
BasicUtil.assertCondition(foundTicket.getStatus() == 1 || foundTicket.getStatus() == 4, "只有被认领的工单才能回复");
if (foundTicket.getStatus() == 1) {
ticket.setStatus(2);
} else if (foundTicket.getStatus() == 4) {
ticket.setStatus(5);
} else {
throw new CustomException("工单状态错误");
}
if (ticketService.reply(ticket) == 1) {
return ResultEntity.success("回复成功");
} else {
return ResultEntity.error("回复失败");
}
}
@RequestMapping("/reconsider")
public ResultEntity update(@Validated(Ticket.reconsider.class) @RequestBody Ticket ticket) {
Ticket foundTicket = ticketService.selectById(ticket.getId());
BasicUtil.assertCondition(foundTicket != null, "工单不存在");
BasicUtil.assertCondition(foundTicket.getStatus() == 2, "只有首次被处理的工单才能复议");
if (ticketService.update(ticket) == 1) {
return ResultEntity.success("更新成功");
} else {
return ResultEntity.error("更新失败");
}
}
}
原文地址: https://www.cveoy.top/t/topic/mTZk 著作权归作者所有。请勿转载和采集!