perf: 添加功能
This commit is contained in:
parent
0187c28a91
commit
b3ec09148f
|
|
@ -1,13 +1,16 @@
|
|||
package com.nflg.mobilebroken.admin.controller;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.nflg.mobilebroken.common.constant.Constant;
|
||||
import com.nflg.mobilebroken.common.pojo.ApiResult;
|
||||
import com.nflg.mobilebroken.common.pojo.PageData;
|
||||
import com.nflg.mobilebroken.common.pojo.request.AdminMessageSearchRequest;
|
||||
import com.nflg.mobilebroken.common.pojo.vo.AdminMessageVO;
|
||||
import com.nflg.mobilebroken.common.util.AdminUserUtil;
|
||||
import com.nflg.mobilebroken.common.util.PageUtil;
|
||||
import com.nflg.mobilebroken.repository.entity.AdminUser;
|
||||
import com.nflg.mobilebroken.repository.service.IAdminMessageService;
|
||||
import com.nflg.mobilebroken.repository.service.IAdminUserService;
|
||||
import com.nflg.mobilebroken.starter.annotation.MethodInfoMark;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
|
|
@ -17,6 +20,7 @@ import org.springframework.web.bind.annotation.RestController;
|
|||
import javax.annotation.Resource;
|
||||
import javax.validation.Valid;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 消息相关接口
|
||||
|
|
@ -30,6 +34,9 @@ public class MessageController extends ControllerBase {
|
|||
@Resource
|
||||
private IAdminMessageService adminMessageService;
|
||||
|
||||
@Resource
|
||||
private IAdminUserService adminUserService;
|
||||
|
||||
/**
|
||||
* 搜索消息
|
||||
*
|
||||
|
|
@ -39,11 +46,15 @@ public class MessageController extends ControllerBase {
|
|||
@PostMapping("searchMessages")
|
||||
@MethodInfoMark(value = "搜索消息", menuName = "消息管理")
|
||||
public ApiResult<PageData<AdminMessageVO>> searchMessages(@RequestBody AdminMessageSearchRequest request) {
|
||||
IPage<AdminMessageVO> page = new Page<>();
|
||||
page.setCurrent(request.getPage());
|
||||
page.setSize(request.getPageSize());
|
||||
adminMessageService.search(Constant.USER_ID, request, page);
|
||||
return ApiResult.success(page);
|
||||
IPage<AdminMessageVO> pageData = adminMessageService.search(AdminUserUtil.getUserId(), request);
|
||||
PageUtil.convert(pageData, d -> {
|
||||
d.setTicketHandleBy(adminUserService.listByIds(StrUtil.split(",", d.getTicketHandleByIds()))
|
||||
.stream()
|
||||
.map(AdminUser::getUserName)
|
||||
.collect(Collectors.toList()));
|
||||
return d;
|
||||
});
|
||||
return ApiResult.success(pageData);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -57,4 +68,16 @@ public class MessageController extends ControllerBase {
|
|||
adminMessageService.setReaded(ids);
|
||||
return ApiResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置消息未读
|
||||
*
|
||||
* @param ids 消息id列表
|
||||
*/
|
||||
@PostMapping("setNotRead")
|
||||
@MethodInfoMark(value = "设置消息未读", menuName = "消息管理")
|
||||
public ApiResult<Void> setNotRead(@Valid @RequestBody List<Integer> ids) {
|
||||
adminMessageService.setNotRead(ids);
|
||||
return ApiResult.success();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,37 @@
|
|||
package com.nflg.mobilebroken.admin.controller;
|
||||
|
||||
import com.nflg.mobilebroken.common.constant.STATE;
|
||||
import com.nflg.mobilebroken.common.exception.NflgException;
|
||||
import com.nflg.mobilebroken.starter.service.impl.AdminSSEManagerService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.io.IOException;
|
||||
|
||||
@RestController
|
||||
@Slf4j
|
||||
@RequestMapping("/sse")
|
||||
public class SSEController extends ControllerBase {
|
||||
|
||||
@Resource
|
||||
private AdminSSEManagerService adminSSEManagerService;
|
||||
|
||||
@GetMapping(value = "connect", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
|
||||
public SseEmitter connect(@RequestParam String userId) {
|
||||
SseEmitter sse = adminSSEManagerService.connect(userId);
|
||||
try {
|
||||
sse.send("您已连接");
|
||||
} catch (IOException e) {
|
||||
log.error("sse发送数据出错", e);
|
||||
sse.complete();
|
||||
throw new NflgException(STATE.BusinessError, "sse发送数据出错");
|
||||
}
|
||||
return sse;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,13 +1,12 @@
|
|||
package com.nflg.mobilebroken.admin.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.nflg.mobilebroken.common.pojo.ApiResult;
|
||||
import com.nflg.mobilebroken.common.pojo.PageData;
|
||||
import com.nflg.mobilebroken.common.pojo.request.AdminTicketSearchRequest;
|
||||
import com.nflg.mobilebroken.common.pojo.request.AssignmentTicketRequest;
|
||||
import com.nflg.mobilebroken.common.pojo.vo.AdminTicketVO;
|
||||
import com.nflg.mobilebroken.common.util.EecExcelUtil;
|
||||
import com.nflg.mobilebroken.common.util.PageUtil;
|
||||
import com.nflg.mobilebroken.repository.service.ITicketService;
|
||||
import com.nflg.mobilebroken.starter.annotation.MethodInfoMark;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
|
@ -43,11 +42,7 @@ public class TicketController extends ControllerBase {
|
|||
@PostMapping("searchTicket")
|
||||
@MethodInfoMark(value = "搜索工单", menuName = "工单管理")
|
||||
public ApiResult<PageData<AdminTicketVO>> searchTicket(@RequestBody AdminTicketSearchRequest request) {
|
||||
IPage<AdminTicketVO> page = new Page<>();
|
||||
page.setCurrent(request.getPageNum());
|
||||
page.setSize(request.getPageSize());
|
||||
ticketService.search(request, page);
|
||||
return ApiResult.success(page);
|
||||
return ApiResult.success(PageUtil.convert(ticketService.searchPage(request), d -> d));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -58,7 +53,7 @@ public class TicketController extends ControllerBase {
|
|||
@PostMapping("exportSearchTicket")
|
||||
@MethodInfoMark(value = "导出搜索工单", menuName = "工单管理")
|
||||
public void exportSearchTicket(HttpServletResponse response, @RequestBody AdminTicketSearchRequest request) throws IOException {
|
||||
List<AdminTicketVO> datas = ticketService.search(request);
|
||||
List<AdminTicketVO> datas = ticketService.exportSearch(request);
|
||||
EecExcelUtil.export("工单", "sheet1", datas, response);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,15 +1,18 @@
|
|||
package com.nflg.mobilebroken.admin.service.impl;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.nflg.mobilebroken.common.constant.Constant;
|
||||
import com.nflg.mobilebroken.common.constant.STATE;
|
||||
import com.nflg.mobilebroken.common.exception.NflgException;
|
||||
import com.nflg.mobilebroken.common.pojo.dto.UserDTO;
|
||||
import com.nflg.mobilebroken.starter.service.EmailService;
|
||||
import com.nflg.mobilebroken.starter.service.INotifyPushService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Objects;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
|
|
@ -18,6 +21,9 @@ public class EmailINotifyPushService implements INotifyPushService {
|
|||
@Resource
|
||||
private EmailService emailService;
|
||||
|
||||
@Resource
|
||||
private RedisTemplate<String, Object> redisTemplate;
|
||||
|
||||
@Override
|
||||
public void push(UserDTO user, String subject, String content) {
|
||||
try {
|
||||
|
|
@ -30,6 +36,10 @@ public class EmailINotifyPushService implements INotifyPushService {
|
|||
|
||||
@Override
|
||||
public boolean check(UserDTO user) {
|
||||
return StrUtil.isNotBlank(user.getEmail());
|
||||
Object value = redisTemplate.opsForHash().get("message:config:" + user.getId(), Constant.REDIS_KEY_MESSAGECONFIG_EMAIL);
|
||||
if (Objects.isNull(value) || (boolean) value) {
|
||||
return StrUtil.isNotBlank(user.getEmail());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,14 +1,17 @@
|
|||
package com.nflg.mobilebroken.admin.service.impl;
|
||||
|
||||
import com.nflg.mobilebroken.common.constant.Constant;
|
||||
import com.nflg.mobilebroken.common.pojo.dto.UserDTO;
|
||||
import com.nflg.mobilebroken.starter.service.INotifyPushService;
|
||||
import com.nflg.mobilebroken.starter.service.SSEManagerService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.io.IOException;
|
||||
import java.util.Objects;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
|
|
@ -18,6 +21,9 @@ public class SSEINotifyPushService implements INotifyPushService {
|
|||
@Qualifier("APPSSEManagerService")
|
||||
private SSEManagerService sseManagerService;
|
||||
|
||||
@Resource
|
||||
private RedisTemplate<String, Object> redisTemplate;
|
||||
|
||||
@Override
|
||||
public void push(UserDTO user, String subject, String content) {
|
||||
try {
|
||||
|
|
@ -29,6 +35,7 @@ public class SSEINotifyPushService implements INotifyPushService {
|
|||
|
||||
@Override
|
||||
public boolean check(UserDTO user) {
|
||||
return true;
|
||||
Object value = redisTemplate.opsForHash().get("message:config:" + user.getId(), Constant.REDIS_KEY_MESSAGECONFIG_APP);
|
||||
return Objects.isNull(value) || (boolean) value;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,14 +1,18 @@
|
|||
package com.nflg.mobilebroken.admin.service.impl;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.nflg.mobilebroken.common.constant.Constant;
|
||||
import com.nflg.mobilebroken.common.pojo.dto.UserDTO;
|
||||
import com.nflg.mobilebroken.starter.service.INotifyPushService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import me.chanjar.weixin.mp.api.WxMpService;
|
||||
import me.chanjar.weixin.mp.config.WxMpConfigStorage;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Objects;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
|
|
@ -23,6 +27,9 @@ public class WXINotifyPushService implements INotifyPushService {
|
|||
@Resource
|
||||
private WxMpConfigStorage wxMpConfigStorage;
|
||||
|
||||
@Resource
|
||||
private RedisTemplate<String, Object> redisTemplate;
|
||||
|
||||
@Override
|
||||
public void push(UserDTO user,String subject, String content) {
|
||||
//TODO
|
||||
|
|
@ -42,6 +49,10 @@ public class WXINotifyPushService implements INotifyPushService {
|
|||
|
||||
@Override
|
||||
public boolean check(UserDTO user) {
|
||||
Object value = redisTemplate.opsForHash().get("message:config:" + user.getId(), Constant.REDIS_KEY_MESSAGECONFIG_WX);
|
||||
if (Objects.isNull(value) || (boolean) value) {
|
||||
return StrUtil.isNotBlank(user.getWxOpenId());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@ package com.nflg.mobilebroken.cfs.controller;
|
|||
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.nflg.mobilebroken.common.constant.Constant;
|
||||
import com.nflg.mobilebroken.common.pojo.ApiResult;
|
||||
import com.nflg.mobilebroken.common.pojo.PageData;
|
||||
import com.nflg.mobilebroken.common.pojo.request.AreaSaveRequest;
|
||||
|
|
@ -10,6 +9,7 @@ import com.nflg.mobilebroken.common.pojo.request.AreaSearchRequest;
|
|||
import com.nflg.mobilebroken.common.pojo.request.EnableRequest;
|
||||
import com.nflg.mobilebroken.common.pojo.vo.AreaSimpleVO;
|
||||
import com.nflg.mobilebroken.common.pojo.vo.AreaVO;
|
||||
import com.nflg.mobilebroken.common.util.AppUserUtil;
|
||||
import com.nflg.mobilebroken.repository.entity.AppArea;
|
||||
import com.nflg.mobilebroken.repository.service.IAppAreaService;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
|
@ -84,7 +84,7 @@ public class AreaController extends ControllerBase {
|
|||
AppArea area=new AppArea()
|
||||
.setId(request.getId())
|
||||
.setEnable(request.getEnable())
|
||||
.setUpdateBy(Constant.USER_NAME)
|
||||
.setUpdateBy(AppUserUtil.getUserName())
|
||||
.setUpdateTime(LocalDateTime.now());
|
||||
return ApiResult.success(appAreaService.updateById(area));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import com.nflg.mobilebroken.common.pojo.request.AppMessageSearchRequest;
|
|||
import com.nflg.mobilebroken.common.pojo.request.MessageConfigRequest;
|
||||
import com.nflg.mobilebroken.common.pojo.vo.AppMessageVO;
|
||||
import com.nflg.mobilebroken.common.pojo.vo.MessageConfigVO;
|
||||
import com.nflg.mobilebroken.common.util.AppUserUtil;
|
||||
import com.nflg.mobilebroken.repository.service.IAppMessageService;
|
||||
import org.springframework.data.redis.core.HashOperations;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
|
|
@ -45,7 +46,7 @@ public class MessageController extends ControllerBase {
|
|||
IPage<AppMessageVO> page = new Page<>();
|
||||
page.setCurrent(request.getPage());
|
||||
page.setSize(request.getPageSize());
|
||||
appMessageService.search(Constant.USER_ID, request.getTitle(), page);
|
||||
appMessageService.search(AppUserUtil.getUserId(), request.getTitle(), page);
|
||||
return ApiResult.success(page);
|
||||
}
|
||||
|
||||
|
|
@ -60,6 +61,17 @@ public class MessageController extends ControllerBase {
|
|||
return ApiResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置消息未读
|
||||
*
|
||||
* @param ids 消息id列表
|
||||
*/
|
||||
@PostMapping("setNotRead")
|
||||
public ApiResult<Void> setNotRead(@Valid @RequestBody List<Integer> ids) {
|
||||
appMessageService.setNotRead(ids);
|
||||
return ApiResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取未读消息
|
||||
* @param num 获取未读消息的数量
|
||||
|
|
@ -70,7 +82,7 @@ public class MessageController extends ControllerBase {
|
|||
IPage<AppMessageVO> page = new Page<>();
|
||||
page.setCurrent(1);
|
||||
page.setSize(num);
|
||||
appMessageService.getNotReadMessage(Constant.USER_ID, num, page);
|
||||
appMessageService.getNotReadMessage(AppUserUtil.getUserId(), num, page);
|
||||
return ApiResult.success(page);
|
||||
}
|
||||
|
||||
|
|
@ -81,11 +93,11 @@ public class MessageController extends ControllerBase {
|
|||
@GetMapping("getConfig")
|
||||
public ApiResult<MessageConfigVO> getConfig(){
|
||||
HashOperations<String, String, Object> hashOps = redisTemplate.opsForHash();
|
||||
Map<String, Object> maps=hashOps.entries("message:config:" + Constant.USER_ID);
|
||||
Map<String, Object> maps = hashOps.entries("message:config:" + AppUserUtil.getUserId());
|
||||
return ApiResult.success(new MessageConfigVO()
|
||||
.setAppNotifyEnabled((Boolean) maps.getOrDefault("appNotifyEnabled",true))
|
||||
.setEmailNotifyEnabled((Boolean) maps.getOrDefault("emailNotifyEnabled",true))
|
||||
.setWxNotifyEnabled((Boolean) maps.getOrDefault("wxNotifyEnabled",true))
|
||||
.setAppNotifyEnabled((Boolean) maps.getOrDefault(Constant.REDIS_KEY_MESSAGECONFIG_APP, true))
|
||||
.setEmailNotifyEnabled((Boolean) maps.getOrDefault(Constant.REDIS_KEY_MESSAGECONFIG_EMAIL, true))
|
||||
.setWxNotifyEnabled((Boolean) maps.getOrDefault(Constant.REDIS_KEY_MESSAGECONFIG_WX, true))
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -96,11 +108,11 @@ public class MessageController extends ControllerBase {
|
|||
@PostMapping("setConfig")
|
||||
public ApiResult<Void> setConfig(@Valid @RequestBody MessageConfigRequest request) {
|
||||
Map<String, Object> maps = new HashMap<>();
|
||||
maps.put("wxNotifyEnabled", request.isWxNotifyEnabled());
|
||||
maps.put("emailNotifyEnabled", request.isEmailNotifyEnabled());
|
||||
maps.put("appNotifyEnabled", request.isAppNotifyEnabled());
|
||||
maps.put(Constant.REDIS_KEY_MESSAGECONFIG_WX, request.isWxNotifyEnabled());
|
||||
maps.put(Constant.REDIS_KEY_MESSAGECONFIG_EMAIL, request.isEmailNotifyEnabled());
|
||||
maps.put(Constant.REDIS_KEY_MESSAGECONFIG_APP, request.isAppNotifyEnabled());
|
||||
HashOperations<String, String, Object> operations = redisTemplate.opsForHash();
|
||||
operations.putAll("message:config:" + Constant.USER_ID, maps);
|
||||
operations.putAll("message:config:" + AppUserUtil.getUserId(), maps);
|
||||
return ApiResult.success();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,13 +2,18 @@ package com.nflg.mobilebroken.common.constant;
|
|||
|
||||
public class Constant {
|
||||
|
||||
public static final String USER_NAME="admin";
|
||||
public static final Integer USER_ID=1;
|
||||
|
||||
//字典 类型 用户职位
|
||||
public static final String DICTIONARY_TYPE_TITLE="UserTitle";
|
||||
|
||||
public static final String DICTIONARY_TYPE_LANGUAGE="Language";
|
||||
public static final String DICTIONARY_TYPE_TITLE_CQM = "CQM";
|
||||
|
||||
public static final String REDIS_KEY_USER_UPDATE_KAPTCHA = "kaptcha:userupdate:{}";
|
||||
|
||||
public static final String DICTIONARY_TYPE_SYSTEMERROR_CQMNOTCONFIG = "CQMNotConfig";
|
||||
|
||||
public static final String REDIS_KEY_MESSAGECONFIG_WX = "wxNotifyEnabled";
|
||||
|
||||
public static final String REDIS_KEY_MESSAGECONFIG_EMAIL = "emailNotifyEnabled";
|
||||
|
||||
public static final String REDIS_KEY_MESSAGECONFIG_APP = "appNotifyEnabled";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,12 +1,14 @@
|
|||
package com.nflg.mobilebroken.common.pojo.request;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Data
|
||||
public class TicketSearchRequest {
|
||||
public class TicketSearchRequest extends PageRequest {
|
||||
|
||||
//搜索类型,1: 我的工单,2: 我的关注,3: 区域工单
|
||||
@NotNull(message = "搜索类型不能为空")
|
||||
|
|
@ -32,10 +34,4 @@ public class TicketSearchRequest {
|
|||
|
||||
//结束日期
|
||||
private LocalDateTime endTime;
|
||||
|
||||
//页码
|
||||
private Integer pageNum=1;
|
||||
|
||||
//每页数量
|
||||
private Integer pageSize=10;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,14 +1,28 @@
|
|||
package com.nflg.mobilebroken.common.pojo.vo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import com.nflg.mobilebroken.common.constant.MessageType;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class AdminMessageVO {
|
||||
|
||||
//任务id
|
||||
private Integer ticketId;
|
||||
|
||||
//任务编号
|
||||
private String ticketNo;
|
||||
|
||||
//任务事项
|
||||
private String content;
|
||||
|
||||
//任务类别
|
||||
@JsonIgnore
|
||||
private Integer type;
|
||||
|
||||
//任务类别名称
|
||||
|
|
@ -17,4 +31,22 @@ public class AdminMessageVO {
|
|||
public String getTypeName() {
|
||||
return MessageType.findByValue(type).getDescription();
|
||||
}
|
||||
|
||||
//消息时间
|
||||
private LocalDateTime createTime;
|
||||
|
||||
//提交人
|
||||
private String createUserName;
|
||||
|
||||
//任务提交时间
|
||||
private LocalDateTime ticketCreateTime;
|
||||
|
||||
@JsonIgnore
|
||||
private String ticketHandleByIds;
|
||||
|
||||
//待处理人
|
||||
private List<String> ticketHandleBy;
|
||||
|
||||
//是否已读
|
||||
private boolean isRead;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,77 +34,101 @@ public class AdminTicketVO {
|
|||
//解决状态
|
||||
@ExcelColumn("解决状态")
|
||||
private String stateDesc;
|
||||
|
||||
//紧急程度
|
||||
@IgnoreExport
|
||||
@JsonIgnore
|
||||
private Integer urgency;
|
||||
|
||||
//紧急程度
|
||||
@ExcelColumn("紧急程度")
|
||||
private String urgencyDesc;
|
||||
|
||||
//问题部位
|
||||
@ExcelColumn("问题部位")
|
||||
private String component;
|
||||
|
||||
//问题类型
|
||||
@ExcelColumn("问题类型")
|
||||
private String question;
|
||||
|
||||
//解决方案
|
||||
@ExcelColumn("解决方案")
|
||||
private String solution;
|
||||
|
||||
//区域名称
|
||||
@ExcelColumn("区域")
|
||||
private String areaName;
|
||||
|
||||
//代理商名称
|
||||
@ExcelColumn("代理商")
|
||||
private String companyName;
|
||||
|
||||
//客户
|
||||
@ExcelColumn("客户")
|
||||
private String createUserName;
|
||||
|
||||
//设备编号
|
||||
@ExcelColumn("设备编号")
|
||||
private String deviceNo;
|
||||
|
||||
//设备类型
|
||||
@ExcelColumn("设备类型")
|
||||
private String deviceType;
|
||||
|
||||
//设备机型
|
||||
@ExcelColumn("设备机型")
|
||||
private String equipmentModel;
|
||||
|
||||
//发货日期
|
||||
@ExcelColumn("发货日期")
|
||||
private String shipmentDate;
|
||||
|
||||
//使用时长
|
||||
@ExcelColumn("使用时长(小时)")
|
||||
private Integer useTime;
|
||||
|
||||
//质保状态
|
||||
@ExcelColumn("质保状态")
|
||||
private String warrantyStatusDesc;
|
||||
|
||||
//提交时间
|
||||
@ExcelColumn("提交时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
//提交人
|
||||
@ExcelColumn("提交人")
|
||||
private String createBy;
|
||||
|
||||
//所属CQM
|
||||
@ExcelColumn("所属CQM")
|
||||
private String cqm;
|
||||
|
||||
//处理人
|
||||
@JsonIgnore
|
||||
@IgnoreExport
|
||||
private String handle;
|
||||
|
||||
//处理人
|
||||
@ExcelColumn("处理人")
|
||||
private List<String> handleBy;
|
||||
|
||||
//当前处理人
|
||||
@ExcelColumn("当前处理人")
|
||||
private List<String> currentProcessor;
|
||||
|
||||
//处理完成时间
|
||||
@ExcelColumn("处理完成时间")
|
||||
private LocalDateTime solveTime;
|
||||
|
||||
//关闭时间
|
||||
@ExcelColumn("关闭时间")
|
||||
private LocalDateTime closeTime;
|
||||
|
||||
//是否已关注
|
||||
@IgnoreExport
|
||||
private boolean followed;
|
||||
|
||||
@ExcelColumn("关注")
|
||||
private String followedDesc;
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,22 @@
|
|||
package com.nflg.mobilebroken.common.util;
|
||||
|
||||
public class LanguageUtil {
|
||||
|
||||
private static final ThreadLocal<String> threadLocal = new ThreadLocal<>();
|
||||
|
||||
public static String getLanguage() {
|
||||
String language = threadLocal.get();
|
||||
if (language == null) {
|
||||
language = "cn";
|
||||
}
|
||||
return language;
|
||||
}
|
||||
|
||||
public static void setLanguage(String language) {
|
||||
threadLocal.set(language);
|
||||
}
|
||||
|
||||
public static void clear() {
|
||||
threadLocal.remove();
|
||||
}
|
||||
}
|
||||
|
|
@ -2,12 +2,13 @@ package com.nflg.mobilebroken.repository.entity;
|
|||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
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>
|
||||
* 工单
|
||||
|
|
@ -76,6 +77,11 @@ public class Ticket implements Serializable {
|
|||
*/
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 所属CQM
|
||||
*/
|
||||
private Integer cqm;
|
||||
|
||||
/**
|
||||
* 紧急程度,0:非紧急;1:普通;2:紧急
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -16,5 +16,5 @@ import com.nflg.mobilebroken.repository.entity.AdminMessage;
|
|||
*/
|
||||
public interface AdminMessageMapper extends BaseMapper<AdminMessage> {
|
||||
|
||||
void search(Integer userId, AdminMessageSearchRequest request, IPage<AdminMessageVO> page);
|
||||
IPage<AdminMessageVO> search(Integer userId, AdminMessageSearchRequest request, IPage<AdminMessageVO> page);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,4 +20,6 @@ public interface DictionaryItemTranslateMapper extends BaseMapper<DictionaryItem
|
|||
List<DictionaryItemTranslateVO> getListByDictionaryItemId(Integer id);
|
||||
|
||||
List<TitleVO> getTitles(String language);
|
||||
|
||||
String getErrorMsg(String language, String errorCode);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ public interface TicketMapper extends BaseMapper<Ticket> {
|
|||
|
||||
IPage<TicketVO> searchArea(IPage<?> page, TicketSearchRequest request, List<Integer> companyIds);
|
||||
|
||||
void searchFromAdmin(AdminTicketSearchRequest request, IPage<AdminTicketVO> page);
|
||||
IPage<AdminTicketVO> searchFromAdmin(AdminTicketSearchRequest request, IPage<?> page);
|
||||
|
||||
void completeTicket(List<Integer> ids, Integer userId);
|
||||
|
||||
|
|
@ -34,7 +34,7 @@ public interface TicketMapper extends BaseMapper<Ticket> {
|
|||
|
||||
List<AdminTicketVO> searchAllFromAdmin(AdminTicketSearchRequest request);
|
||||
|
||||
void searchFromAdminAndFollow(AdminTicketSearchRequest request, Integer userId, IPage<AdminTicketVO> page);
|
||||
IPage<AdminTicketVO> searchFromAdminAndFollow(AdminTicketSearchRequest request, Integer userId, IPage<?> page);
|
||||
|
||||
List<AdminTicketVO> searchAllFromAdminAndFollow(AdminTicketSearchRequest request, Integer userId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ import com.nflg.mobilebroken.common.pojo.request.AdminMessageSearchRequest;
|
|||
import com.nflg.mobilebroken.common.pojo.vo.AdminMessageVO;
|
||||
import com.nflg.mobilebroken.repository.entity.AdminMessage;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
|
|
@ -19,7 +18,9 @@ import java.util.List;
|
|||
*/
|
||||
public interface IAdminMessageService extends IService<AdminMessage> {
|
||||
|
||||
void search(Integer userId, AdminMessageSearchRequest request, IPage<AdminMessageVO> page);
|
||||
IPage<AdminMessageVO> search(Integer userId, AdminMessageSearchRequest request);
|
||||
|
||||
void setReaded(@Valid List<Integer> ids);
|
||||
void setReaded(List<Integer> ids);
|
||||
|
||||
void setNotRead(List<Integer> ids);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,4 +28,6 @@ public interface IAdminUserService extends IService<AdminUser> {
|
|||
void enable(EnableAccountRequest request);
|
||||
|
||||
PageData<AdminUserVO> search(SearchAccountRequest request);
|
||||
|
||||
AdminUser getCQM();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
|||
import com.nflg.mobilebroken.common.pojo.vo.AppMessageVO;
|
||||
import com.nflg.mobilebroken.repository.entity.AppMessage;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
|
|
@ -22,5 +21,7 @@ public interface IAppMessageService extends IService<AppMessage> {
|
|||
|
||||
void search(Integer userId, String title, IPage<AppMessageVO> page);
|
||||
|
||||
void setReaded(@Valid List<Integer> ids);
|
||||
void setReaded(List<Integer> ids);
|
||||
|
||||
void setNotRead(List<Integer> ids);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,4 +25,6 @@ public interface IDictionaryItemTranslateService extends IService<DictionaryItem
|
|||
Integer getId(Integer dictionaryItemId, String code);
|
||||
|
||||
List<TitleVO> getTitles(String language);
|
||||
|
||||
String getErrorMsg(String language, String errorCode);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ public interface ITicketService extends IService<Ticket> {
|
|||
|
||||
IPage<TicketVO> search(TicketSearchRequest request, UserDTO user);
|
||||
|
||||
void search(AdminTicketSearchRequest request, IPage<AdminTicketVO> page);
|
||||
IPage<AdminTicketVO> searchPage(AdminTicketSearchRequest request);
|
||||
|
||||
void assignmentTicket(AssignmentTicketRequest request);
|
||||
|
||||
|
|
@ -35,7 +35,7 @@ public interface ITicketService extends IService<Ticket> {
|
|||
|
||||
void closeTicket(List<Integer> ids);
|
||||
|
||||
List<AdminTicketVO> search(AdminTicketSearchRequest request);
|
||||
List<AdminTicketVO> exportSearch(AdminTicketSearchRequest request);
|
||||
|
||||
List<Ticket> getEmergencys(int days);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package com.nflg.mobilebroken.repository.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.nflg.mobilebroken.common.pojo.request.AdminMessageSearchRequest;
|
||||
import com.nflg.mobilebroken.common.pojo.vo.AdminMessageVO;
|
||||
|
|
@ -23,8 +24,8 @@ import java.util.List;
|
|||
public class AdminMessageServiceImpl extends ServiceImpl<AdminMessageMapper, AdminMessage> implements IAdminMessageService {
|
||||
|
||||
@Override
|
||||
public void search(Integer userId, AdminMessageSearchRequest request, IPage<AdminMessageVO> page) {
|
||||
baseMapper.search(userId, request, page);
|
||||
public IPage<AdminMessageVO> search(Integer userId, AdminMessageSearchRequest request) {
|
||||
return baseMapper.search(userId, request, new Page<>(request.getPage(), request.getPageSize()));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -34,4 +35,12 @@ public class AdminMessageServiceImpl extends ServiceImpl<AdminMessageMapper, Adm
|
|||
.in(AdminMessage::getId, ids)
|
||||
.update();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNotRead(List<Integer> ids) {
|
||||
lambdaUpdate()
|
||||
.set(AdminMessage::getIsRead, false)
|
||||
.in(AdminMessage::getId, ids)
|
||||
.update();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import cn.hutool.core.util.StrUtil;
|
|||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.nflg.mobilebroken.common.constant.Constant;
|
||||
import com.nflg.mobilebroken.common.pojo.PageData;
|
||||
import com.nflg.mobilebroken.common.pojo.request.AccountAddRequest;
|
||||
import com.nflg.mobilebroken.common.pojo.request.AccountUpdateRequest;
|
||||
|
|
@ -51,6 +52,9 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, AdminUser
|
|||
@Resource
|
||||
private IAdminUserRoleMapService adminUserRoleMapService;
|
||||
|
||||
@Resource
|
||||
private IDictionaryItemService dictionaryItemService;
|
||||
|
||||
@Override
|
||||
public AdminUser getUser(String userName, String password) {
|
||||
String encodePassword= PASSWORDENCODER.encode(password);
|
||||
|
|
@ -127,6 +131,17 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, AdminUser
|
|||
return pageData;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AdminUser getCQM() {
|
||||
DictionaryItem cqm = dictionaryItemService
|
||||
.lambdaQuery()
|
||||
.eq(DictionaryItem::getCode, Constant.DICTIONARY_TYPE_TITLE_CQM)
|
||||
.one();
|
||||
return lambdaQuery()
|
||||
.eq(AdminUser::getTitleId, cqm.getId())
|
||||
.one();
|
||||
}
|
||||
|
||||
private String getDepartmentName(Integer departmentId) {
|
||||
TBaseDepartment department = departmentService.lambdaQuery()
|
||||
.eq(TBaseDepartment::getId, departmentId)
|
||||
|
|
|
|||
|
|
@ -7,9 +7,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.nflg.mobilebroken.common.constant.Constant;
|
||||
import com.nflg.mobilebroken.common.pojo.request.AreaSearchRequest;
|
||||
import com.nflg.mobilebroken.common.pojo.vo.AreaVO;
|
||||
import com.nflg.mobilebroken.common.util.AppUserUtil;
|
||||
import com.nflg.mobilebroken.repository.entity.AppArea;
|
||||
import com.nflg.mobilebroken.repository.mapper.AppAreaMapper;
|
||||
import com.nflg.mobilebroken.repository.service.IAppAreaService;
|
||||
|
|
@ -36,11 +36,11 @@ public class AppAreaServiceImpl extends ServiceImpl<AppAreaMapper, AppArea> impl
|
|||
@Override
|
||||
public boolean saveOrUpdate(AppArea entity) {
|
||||
if (Objects.isNull(entity.getId()) || entity.getId()<=0){
|
||||
entity.setCreateBy(Constant.USER_NAME);
|
||||
entity.setCreateBy(AppUserUtil.getUserName());
|
||||
entity.setCreateTime(LocalDateTime.now());
|
||||
return save(entity);
|
||||
}else {
|
||||
entity.setUpdateBy(Constant.USER_NAME);
|
||||
entity.setUpdateBy(AppUserUtil.getUserName());
|
||||
entity.setUpdateTime(LocalDateTime.now());
|
||||
return updateById(entity);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -38,4 +38,12 @@ public class AppMessageServiceImpl extends ServiceImpl<AppMessageMapper, AppMess
|
|||
.in(AppMessage::getId, ids)
|
||||
.update();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNotRead(List<Integer> ids) {
|
||||
lambdaUpdate()
|
||||
.set(AppMessage::getIsRead, false)
|
||||
.in(AppMessage::getId, ids)
|
||||
.update();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -86,4 +86,9 @@ public class DictionaryItemTranslateServiceImpl extends ServiceImpl<DictionaryIt
|
|||
public List<TitleVO> getTitles(String language) {
|
||||
return baseMapper.getTitles(language);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getErrorMsg(String language, String errorCode) {
|
||||
return baseMapper.getErrorMsg(language, errorCode);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import cn.hutool.core.util.StrUtil;
|
|||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.nflg.mobilebroken.common.constant.Constant;
|
||||
import com.nflg.mobilebroken.common.constant.TicketState;
|
||||
import com.nflg.mobilebroken.common.constant.TicketUrgency;
|
||||
import com.nflg.mobilebroken.common.pojo.dto.UserDTO;
|
||||
|
|
@ -14,13 +15,18 @@ import com.nflg.mobilebroken.common.pojo.request.TicketSearchRequest;
|
|||
import com.nflg.mobilebroken.common.pojo.vo.AdminTicketVO;
|
||||
import com.nflg.mobilebroken.common.pojo.vo.TicketVO;
|
||||
import com.nflg.mobilebroken.common.util.AdminUserUtil;
|
||||
import com.nflg.mobilebroken.common.util.LanguageUtil;
|
||||
import com.nflg.mobilebroken.common.util.TicketUtl;
|
||||
import com.nflg.mobilebroken.common.util.VUtils;
|
||||
import com.nflg.mobilebroken.repository.entity.AdminUser;
|
||||
import com.nflg.mobilebroken.repository.entity.Ticket;
|
||||
import com.nflg.mobilebroken.repository.mapper.TicketMapper;
|
||||
import com.nflg.mobilebroken.repository.service.IAdminUserService;
|
||||
import com.nflg.mobilebroken.repository.service.IDictionaryItemTranslateService;
|
||||
import com.nflg.mobilebroken.repository.service.ITicketService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
|
@ -36,14 +42,23 @@ import java.util.Objects;
|
|||
@Service
|
||||
public class TicketServiceImpl extends ServiceImpl<TicketMapper, Ticket> implements ITicketService {
|
||||
|
||||
@Resource
|
||||
private IAdminUserService adminUserService;
|
||||
|
||||
@Resource
|
||||
private IDictionaryItemTranslateService dictionaryItemTranslateService;
|
||||
|
||||
@Override
|
||||
public void add(TicketAddRequest request,Integer userId) {
|
||||
AdminUser cqmUser = adminUserService.getCQM();
|
||||
VUtils.trueThrowBusinessError(Objects.isNull(cqmUser))
|
||||
.throwMessage(dictionaryItemTranslateService.getErrorMsg(LanguageUtil.getLanguage(), Constant.DICTIONARY_TYPE_SYSTEMERROR_CQMNOTCONFIG));
|
||||
Ticket lastTicket=lambdaQuery()
|
||||
.ge(Ticket::getCreateTime, LocalDateTime.now().toLocalDate())
|
||||
.orderByDesc(Ticket::getId)
|
||||
.last("LIMIT 1")
|
||||
.one();
|
||||
String no=lastTicket==null? TicketUtl.getNextNo(null):TicketUtl.getNextNo(lastTicket.getNo());
|
||||
String no = lastTicket == null ? TicketUtl.getNextNo(null) : TicketUtl.getNextNo(lastTicket.getNo());
|
||||
Ticket ticket = new Ticket()
|
||||
.setNo(no)
|
||||
.setDeviceNo(request.getDeviceNo())
|
||||
|
|
@ -51,31 +66,32 @@ public class TicketServiceImpl extends ServiceImpl<TicketMapper, Ticket> impleme
|
|||
.setUseTime(request.getUseTime())
|
||||
.setTitle(request.getTitle())
|
||||
.setDescription(request.getDescription())
|
||||
.setAttachments(StrUtil.join(",",request.getAttachments()))
|
||||
.setState(TicketState.PendingProcessing.getState().byteValue())
|
||||
.setAttachments(StrUtil.join(",", request.getAttachments()))
|
||||
.setState(TicketState.PendingProcessing.getState())
|
||||
.setUserId(userId)
|
||||
.setCreateTime(LocalDateTime.now());
|
||||
.setCreateTime(LocalDateTime.now())
|
||||
.setCqm(cqmUser.getId());
|
||||
save(ticket);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IPage<TicketVO> search(TicketSearchRequest request, UserDTO user) {
|
||||
if (request.getType()==1){
|
||||
return baseMapper.searchMy(new Page<>(request.getPageNum(), request.getPageSize()), request, user.getId());
|
||||
return baseMapper.searchMy(new Page<>(request.getPage(), request.getPageSize()), request, user.getId());
|
||||
}else if (request.getType()==2){
|
||||
return baseMapper.searchFollow(new Page<>(request.getPageNum(), request.getPageSize()), request, user.getId());
|
||||
return baseMapper.searchFollow(new Page<>(request.getPage(), request.getPageSize()), request, user.getId());
|
||||
}else if (request.getType()==3) {
|
||||
return baseMapper.searchArea(new Page<>(request.getPageNum(), request.getPageSize()), request, user.getCompanyIds());
|
||||
return baseMapper.searchArea(new Page<>(request.getPage(), request.getPageSize()), request, user.getCompanyIds());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void search(AdminTicketSearchRequest request, IPage<AdminTicketVO> page) {
|
||||
public IPage<AdminTicketVO> searchPage(AdminTicketSearchRequest request) {
|
||||
if (request.getType() == 2) {
|
||||
baseMapper.searchFromAdminAndFollow(request, AdminUserUtil.getUserId(), page);
|
||||
return baseMapper.searchFromAdminAndFollow(request, AdminUserUtil.getUserId(), new Page<>(request.getPage(), request.getPageSize()));
|
||||
} else {
|
||||
baseMapper.searchFromAdmin(request, page);
|
||||
return baseMapper.searchFromAdmin(request, new Page<>(request.getPage(), request.getPageSize()));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -105,7 +121,7 @@ public class TicketServiceImpl extends ServiceImpl<TicketMapper, Ticket> impleme
|
|||
}
|
||||
|
||||
@Override
|
||||
public List<AdminTicketVO> search(AdminTicketSearchRequest request) {
|
||||
public List<AdminTicketVO> exportSearch(AdminTicketSearchRequest request) {
|
||||
if (request.getType() == 2) {
|
||||
return baseMapper.searchAllFromAdminAndFollow(request, AdminUserUtil.getUserId());
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -2,10 +2,10 @@
|
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.nflg.mobilebroken.repository.mapper.AdminMessageMapper">
|
||||
|
||||
<select id="search">
|
||||
SELECT t.id AS 'ticketId',t.`no` AS 'ticketNo',t.title AS 'ticketTitle',m.content,m.create_time AS 'createTime',
|
||||
u.`name` AS 'ticketCreateBy',t.create_time AS 'ticketCreateTime',t.handle AS 'ticketHandleBy',
|
||||
m.is_read AS 'isRead',m.type
|
||||
<select id="search" resultType="com.nflg.mobilebroken.common.pojo.vo.AdminMessageVO">
|
||||
SELECT t.id AS 'ticketId',t.`no` AS 'ticketNo',m.content,m.type,m.create_time AS 'createTime',
|
||||
u.`name` AS 'createUserName',t.create_time AS 'ticketCreateTime',t.handle AS 'ticketHandleByIds',
|
||||
m.is_read AS 'isRead'
|
||||
FROM admin_message m
|
||||
INNER JOIN ticket t ON m.ticket_id=t.id
|
||||
INNER JOIN admin_user u ON t.user_id=u.id
|
||||
|
|
|
|||
|
|
@ -19,4 +19,11 @@
|
|||
LEFT JOIN dictionary_item_translate dit ON di.id=dit.dictionary_item_id
|
||||
WHERE d.`code`=#{Constant.DICTIONARY_TYPE_TITLE} AND dit.language_code=#{language}
|
||||
</select>
|
||||
|
||||
<select id="getErrorMsg" resultType="java.lang.String">
|
||||
SELECT IFNULL(dit.`value`,di.`name`) message
|
||||
FROM dictionary_item di
|
||||
LEFT JOIN dictionary_item_translate dit ON dit.dictionary_item_id=di.id AND dit.language_code=#{language}
|
||||
WHERE di.`code`=#{errorCode}
|
||||
</select>
|
||||
</mapper>
|
||||
|
|
|
|||
|
|
@ -95,12 +95,16 @@
|
|||
<include refid="searchWhereCondition"/>
|
||||
</select>
|
||||
|
||||
<select id="searchFromAdmin">
|
||||
SELECT t.id,t.`no`,t.title,t.state,t.urgency,t.component,t.question,t.solution,a.`name` AS 'areaName',c.agency_company_name AS 'companyName',u.`name` AS 'createUserName',t.device_no AS 'deviceNo',t.use_time AS 'useTime',t.create_time AS 'createTime',t.handle,t.solve_time AS 'solveTime'
|
||||
<select id="searchFromAdmin" resultType="com.nflg.mobilebroken.common.pojo.vo.AdminTicketVO">
|
||||
SELECT t.id,t.`no`,t.title,t.state,t.urgency,t.component,t.question,t.solution,a.`name` AS 'areaName'
|
||||
,c.agency_company_name AS 'companyName',u.`name` AS 'createUserName',t.device_no AS 'deviceNo',t.use_time AS 'useTime'
|
||||
,t.create_time AS 'createTime',t.handle,t.solve_time AS 'solveTime',di.name AS 'warrantyStatusDesc'
|
||||
FROM ticket t
|
||||
LEFT JOIN app_user u ON t.user_id=u.id
|
||||
LEFT JOIN t_base_customer c ON u.company_id=c.id
|
||||
LEFT JOIN app_area a ON u.area_id=a.id
|
||||
LEFT JOIN device d ON t.device_no=d.device_no AND d.data_valid_state=1
|
||||
LEFT JOIN dictionary_item di ON d.warranty_state=di.id
|
||||
<include refid="adminSearchWhereCondition"/>
|
||||
</select>
|
||||
|
||||
|
|
@ -123,31 +127,43 @@
|
|||
</select>
|
||||
|
||||
<select id="searchAllFromAdmin" resultType="com.nflg.mobilebroken.common.pojo.vo.AdminTicketVO">
|
||||
SELECT t.id,t.`no`,t.title,t.state,t.urgency,t.component,t.question,t.solution,a.`name` AS 'areaName',c.agency_company_name AS 'companyName',u.`name` AS 'createUserName',t.device_no AS 'deviceNo',t.use_time AS 'useTime',t.create_time AS 'createTime',t.handle,t.solve_time AS 'solveTime'
|
||||
SELECT t.id,t.`no`,t.title,t.state,t.urgency,t.component,t.question,t.solution,a.`name` AS 'areaName'
|
||||
,c.agency_company_name AS 'companyName',u.`name` AS 'createUserName',t.device_no AS 'deviceNo',t.use_time AS 'useTime'
|
||||
,t.create_time AS 'createTime',t.handle,t.solve_time AS 'solveTime',di.name AS 'warrantyStatusDesc'
|
||||
FROM ticket t
|
||||
LEFT JOIN app_user u ON t.user_id=u.id
|
||||
LEFT JOIN t_base_customer c ON u.company_id=c.id
|
||||
LEFT JOIN app_area a ON u.area_id=a.id
|
||||
LEFT JOIN device d ON t.device_no=d.device_no AND d.data_valid_state=1
|
||||
LEFT JOIN dictionary_item di ON d.warranty_state=di.id
|
||||
<include refid="adminSearchWhereCondition"/>
|
||||
</select>
|
||||
|
||||
<select id="searchFromAdminAndFollow">
|
||||
SELECT t.id,t.`no`,t.title,t.state,t.urgency,t.component,t.question,t.solution,a.`name` AS 'areaName',c.agency_company_name AS 'companyName',u.`name` AS 'createUserName',t.device_no AS 'deviceNo',t.use_time AS 'useTime',t.create_time AS 'createTime',t.handle,t.solve_time AS 'solveTime'
|
||||
<select id="searchFromAdminAndFollow" resultType="com.nflg.mobilebroken.common.pojo.vo.AdminTicketVO">
|
||||
SELECT t.id,t.`no`,t.title,t.state,t.urgency,t.component,t.question,t.solution,a.`name` AS 'areaName'
|
||||
,c.agency_company_name AS 'companyName',u.`name` AS 'createUserName',t.device_no AS 'deviceNo',t.use_time AS 'useTime'
|
||||
,t.create_time AS 'createTime',t.handle,t.solve_time AS 'solveTime',di.name AS 'warrantyStatusDesc'
|
||||
FROM ticket t
|
||||
LEFT JOIN app_user u ON t.user_id=u.id
|
||||
LEFT JOIN t_base_customer c ON u.company_id=c.id
|
||||
LEFT JOIN app_area a ON u.area_id=a.id
|
||||
INNER JOIN ticket_follow tf ON t.id=tf.ticket_id AND tf.user_id=#{userId}
|
||||
LEFT JOIN device d ON t.device_no=d.device_no AND d.data_valid_state=1
|
||||
LEFT JOIN dictionary_item di ON d.warranty_state=di.id
|
||||
<include refid="adminSearchWhereCondition"/>
|
||||
</select>
|
||||
|
||||
<select id="searchAllFromAdminAndFollow" resultType="com.nflg.mobilebroken.common.pojo.vo.AdminTicketVO">
|
||||
SELECT t.id,t.`no`,t.title,t.state,t.urgency,t.component,t.question,t.solution,a.`name` AS 'areaName',c.agency_company_name AS 'companyName',u.`name` AS 'createUserName',t.device_no AS 'deviceNo',t.use_time AS 'useTime',t.create_time AS 'createTime',t.handle,t.solve_time AS 'solveTime'
|
||||
SELECT t.id,t.`no`,t.title,t.state,t.urgency,t.component,t.question,t.solution,a.`name` AS 'areaName'
|
||||
,c.agency_company_name AS 'companyName',u.`name` AS 'createUserName',t.device_no AS 'deviceNo',t.use_time AS 'useTime'
|
||||
,t.create_time AS 'createTime',t.handle,t.solve_time AS 'solveTime',di.name AS 'warrantyStatusDesc'
|
||||
FROM ticket t
|
||||
LEFT JOIN app_user u ON t.user_id=u.id
|
||||
LEFT JOIN t_base_customer c ON u.company_id=c.id
|
||||
LEFT JOIN app_area a ON u.area_id=a.id
|
||||
INNER JOIN ticket_follow tf ON t.id=tf.ticket_id AND tf.user_id=#{userId}
|
||||
LEFT JOIN device d ON t.device_no=d.device_no AND d.data_valid_state=1
|
||||
LEFT JOIN dictionary_item di ON d.warranty_state=di.id
|
||||
<include refid="adminSearchWhereCondition"/>
|
||||
</select>
|
||||
</mapper>
|
||||
|
|
|
|||
Loading…
Reference in New Issue