Merge remote-tracking branch 'origin/develop' into develop
This commit is contained in:
commit
25f6282920
|
|
@ -3,7 +3,7 @@ package com.nflg.mobilebroken.admin.controller;
|
||||||
import com.nflg.mobilebroken.admin.annotation.ApiMark;
|
import com.nflg.mobilebroken.admin.annotation.ApiMark;
|
||||||
import com.nflg.mobilebroken.common.constant.STATE;
|
import com.nflg.mobilebroken.common.constant.STATE;
|
||||||
import com.nflg.mobilebroken.common.exception.NflgException;
|
import com.nflg.mobilebroken.common.exception.NflgException;
|
||||||
import com.nflg.mobilebroken.starter.service.impl.AdminSSEManagerService;
|
import com.nflg.mobilebroken.starter.service.impl.APPSSEManagerService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.http.MediaType;
|
import org.springframework.http.MediaType;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
|
@ -20,8 +20,9 @@ import java.io.IOException;
|
||||||
@RequestMapping("/sse")
|
@RequestMapping("/sse")
|
||||||
public class SSEController extends ControllerBase {
|
public class SSEController extends ControllerBase {
|
||||||
|
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private AdminSSEManagerService adminSSEManagerService;
|
private APPSSEManagerService sseManagerService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 建立sse连接
|
* 建立sse连接
|
||||||
|
|
@ -31,7 +32,7 @@ public class SSEController extends ControllerBase {
|
||||||
@GetMapping(value = "connect", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
|
@GetMapping(value = "connect", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
|
||||||
@ApiMark(moduleName = "连接", apiName = "SSE", isPublic = true)
|
@ApiMark(moduleName = "连接", apiName = "SSE", isPublic = true)
|
||||||
public SseEmitter connect(@RequestParam String userId) {
|
public SseEmitter connect(@RequestParam String userId) {
|
||||||
SseEmitter sse = adminSSEManagerService.connect(Integer.valueOf(userId));
|
SseEmitter sse = sseManagerService.connect(Integer.valueOf(userId));
|
||||||
try {
|
try {
|
||||||
sse.send("您已连接");
|
sse.send("您已连接");
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
|
|
|
||||||
|
|
@ -13,10 +13,7 @@ import com.nflg.mobilebroken.common.pojo.PageData;
|
||||||
import com.nflg.mobilebroken.common.pojo.dto.ChatMessageDTO;
|
import com.nflg.mobilebroken.common.pojo.dto.ChatMessageDTO;
|
||||||
import com.nflg.mobilebroken.common.pojo.dto.SSEMessageDTO;
|
import com.nflg.mobilebroken.common.pojo.dto.SSEMessageDTO;
|
||||||
import com.nflg.mobilebroken.common.pojo.request.*;
|
import com.nflg.mobilebroken.common.pojo.request.*;
|
||||||
import com.nflg.mobilebroken.common.pojo.vo.AdminTicketVO;
|
import com.nflg.mobilebroken.common.pojo.vo.*;
|
||||||
import com.nflg.mobilebroken.common.pojo.vo.DeviceInfoVO;
|
|
||||||
import com.nflg.mobilebroken.common.pojo.vo.TicketInfoVO;
|
|
||||||
import com.nflg.mobilebroken.common.pojo.vo.TicketPdfVO;
|
|
||||||
import com.nflg.mobilebroken.common.util.AdminUserUtil;
|
import com.nflg.mobilebroken.common.util.AdminUserUtil;
|
||||||
import com.nflg.mobilebroken.common.util.EecExcelUtil;
|
import com.nflg.mobilebroken.common.util.EecExcelUtil;
|
||||||
import com.nflg.mobilebroken.common.util.PageUtil;
|
import com.nflg.mobilebroken.common.util.PageUtil;
|
||||||
|
|
@ -119,7 +116,15 @@ public class TicketController extends ControllerBase {
|
||||||
d.setHandleBy(adminUsers.stream().map(AdminUser::getUserName).collect(Collectors.toList()));
|
d.setHandleBy(adminUsers.stream().map(AdminUser::getUserName).collect(Collectors.toList()));
|
||||||
}
|
}
|
||||||
AppUser primaryUser = appUserService.getPrimaryByCompanyId(d.getCompanyId());
|
AppUser primaryUser = appUserService.getPrimaryByCompanyId(d.getCompanyId());
|
||||||
d.setPrimaryUserName(primaryUser.getName());
|
if (Objects.nonNull(primaryUser)) {
|
||||||
|
d.setPrimaryUserName(primaryUser.getName());
|
||||||
|
}
|
||||||
|
if (StrUtil.isNotBlank(d.getCqm())) {
|
||||||
|
AdminUser adminUser = adminUserService.getById(Integer.valueOf(d.getCqm()));
|
||||||
|
if (Objects.nonNull(adminUser)) {
|
||||||
|
d.setCqm(adminUser.getUserName());
|
||||||
|
}
|
||||||
|
}
|
||||||
return d;
|
return d;
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
@ -313,7 +318,7 @@ public class TicketController extends ControllerBase {
|
||||||
**/
|
**/
|
||||||
@GetMapping("getChatMessages")
|
@GetMapping("getChatMessages")
|
||||||
@ApiMark(moduleName = "工单管理", apiName = "获取工单聊天记录")
|
@ApiMark(moduleName = "工单管理", apiName = "获取工单聊天记录")
|
||||||
public ApiResult<List<ChatMessageDTO>> getChatMessages(@Valid @RequestParam @NotNull Integer ticketId) {
|
public ApiResult<List<ChatMessageVO>> getChatMessages(@Valid @RequestParam @NotNull Integer ticketId) {
|
||||||
return ApiResult.success(ticketChatService.getMessages(ticketId));
|
return ApiResult.success(ticketChatService.getMessages(ticketId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,15 +9,14 @@ import com.nflg.mobilebroken.common.pojo.request.AreaSearchRequest;
|
||||||
import com.nflg.mobilebroken.common.pojo.request.EnableRequest;
|
import com.nflg.mobilebroken.common.pojo.request.EnableRequest;
|
||||||
import com.nflg.mobilebroken.common.pojo.vo.AreaSimpleVO;
|
import com.nflg.mobilebroken.common.pojo.vo.AreaSimpleVO;
|
||||||
import com.nflg.mobilebroken.common.pojo.vo.AreaVO;
|
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.entity.AppArea;
|
||||||
import com.nflg.mobilebroken.repository.service.IAppAreaService;
|
import com.nflg.mobilebroken.repository.service.IAppAreaService;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 区域相关接口
|
* 区域相关接口
|
||||||
|
|
@ -60,9 +59,10 @@ public class AreaController extends ControllerBase {
|
||||||
**/
|
**/
|
||||||
@PostMapping("saveArea")
|
@PostMapping("saveArea")
|
||||||
public ApiResult<Boolean> saveArea(@Valid @RequestBody AreaSaveRequest request){
|
public ApiResult<Boolean> saveArea(@Valid @RequestBody AreaSaveRequest request){
|
||||||
AppArea area=new AppArea().setId(request.getId())
|
AppArea area = new AppArea()
|
||||||
|
.setId(request.getId())
|
||||||
.setName(request.getName())
|
.setName(request.getName())
|
||||||
.setParentId(request.getParentId());
|
.setParentId(Optional.ofNullable(request.getParentId()).orElse(0));
|
||||||
return ApiResult.success(appAreaService.saveOrUpdate(area));
|
return ApiResult.success(appAreaService.saveOrUpdate(area));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -80,12 +80,8 @@ public class AreaController extends ControllerBase {
|
||||||
* @param request 请求信息
|
* @param request 请求信息
|
||||||
**/
|
**/
|
||||||
@PostMapping("changeAreaEnable")
|
@PostMapping("changeAreaEnable")
|
||||||
public ApiResult<Boolean> changeAreaEnable(@Valid @RequestBody EnableRequest request){
|
public ApiResult<Void> changeAreaEnable(@Valid @RequestBody EnableRequest request) {
|
||||||
AppArea area=new AppArea()
|
appAreaService.enable(request);
|
||||||
.setId(request.getId())
|
return ApiResult.success();
|
||||||
.setEnable(request.getEnable())
|
|
||||||
.setUpdateBy(AppUserUtil.getUserName())
|
|
||||||
.setUpdateTime(LocalDateTime.now());
|
|
||||||
return ApiResult.success(appAreaService.updateById(area));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ package com.nflg.mobilebroken.cfs.controller;
|
||||||
|
|
||||||
import com.nflg.mobilebroken.common.constant.STATE;
|
import com.nflg.mobilebroken.common.constant.STATE;
|
||||||
import com.nflg.mobilebroken.common.exception.NflgException;
|
import com.nflg.mobilebroken.common.exception.NflgException;
|
||||||
import com.nflg.mobilebroken.starter.service.impl.APPSSEManagerService;
|
import com.nflg.mobilebroken.starter.service.impl.AdminSSEManagerService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.http.MediaType;
|
import org.springframework.http.MediaType;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
|
@ -25,7 +25,7 @@ import java.io.IOException;
|
||||||
public class SSEController extends ControllerBase {
|
public class SSEController extends ControllerBase {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private APPSSEManagerService sseManagerService;
|
private AdminSSEManagerService adminSSEManagerService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 建立sse连接
|
* 建立sse连接
|
||||||
|
|
@ -34,7 +34,7 @@ public class SSEController extends ControllerBase {
|
||||||
*/
|
*/
|
||||||
@GetMapping(value = "connect",produces = MediaType.TEXT_EVENT_STREAM_VALUE)
|
@GetMapping(value = "connect",produces = MediaType.TEXT_EVENT_STREAM_VALUE)
|
||||||
public SseEmitter connect(@RequestParam Integer userId) {
|
public SseEmitter connect(@RequestParam Integer userId) {
|
||||||
SseEmitter sse=sseManagerService.connect(userId);
|
SseEmitter sse = adminSSEManagerService.connect(userId);
|
||||||
try {
|
try {
|
||||||
sse.send("您已连接");
|
sse.send("您已连接");
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
|
|
|
||||||
|
|
@ -209,7 +209,6 @@ public class TiketController extends ControllerBase {
|
||||||
.setAreaName(appArea.getName())
|
.setAreaName(appArea.getName())
|
||||||
.setCompanyName(company.getAgencyCompanyName())
|
.setCompanyName(company.getAgencyCompanyName())
|
||||||
.setHandle(handle);
|
.setHandle(handle);
|
||||||
;
|
|
||||||
return ApiResult.success(vo);
|
return ApiResult.success(vo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -219,7 +218,7 @@ public class TiketController extends ControllerBase {
|
||||||
* @return 聊天记录
|
* @return 聊天记录
|
||||||
**/
|
**/
|
||||||
@GetMapping("getChatMessages")
|
@GetMapping("getChatMessages")
|
||||||
public ApiResult<List<ChatMessageDTO>> getChatMessages(@Valid @RequestParam @NotNull Integer ticketId) {
|
public ApiResult<List<ChatMessageVO>> getChatMessages(@Valid @RequestParam @NotNull Integer ticketId) {
|
||||||
return ApiResult.success(ticketChatService.getMessages(ticketId));
|
return ApiResult.success(ticketChatService.getMessages(ticketId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,6 @@ package com.nflg.mobilebroken.common.pojo.request;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import javax.validation.constraints.NotBlank;
|
||||||
import javax.validation.constraints.NotNull;
|
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class AreaSaveRequest {
|
public class AreaSaveRequest {
|
||||||
|
|
@ -11,8 +10,7 @@ public class AreaSaveRequest {
|
||||||
//区域id
|
//区域id
|
||||||
private Integer id;
|
private Integer id;
|
||||||
|
|
||||||
//上级区域id,如果没有上级,则填0
|
//上级区域id,如果为空则是一级区域
|
||||||
@NotNull(message = "上级区域id不能为空")
|
|
||||||
private Integer parentId;
|
private Integer parentId;
|
||||||
|
|
||||||
//区域名称
|
//区域名称
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,40 @@
|
||||||
|
package com.nflg.mobilebroken.common.pojo.vo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Accessors(chain = true)
|
||||||
|
public class ChatMessageVO {
|
||||||
|
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
//来源
|
||||||
|
private String from;
|
||||||
|
|
||||||
|
// 发送者id
|
||||||
|
private Integer senderId;
|
||||||
|
|
||||||
|
// 发送者名称
|
||||||
|
private String senderName;
|
||||||
|
|
||||||
|
// 发送者头像
|
||||||
|
private String senderAvatar;
|
||||||
|
|
||||||
|
// 消息内容
|
||||||
|
private String content;
|
||||||
|
|
||||||
|
// 附件列表
|
||||||
|
private List<String> attachments;
|
||||||
|
|
||||||
|
//图片列表
|
||||||
|
private List<String> images;
|
||||||
|
|
||||||
|
// 创建时间
|
||||||
|
private String createTime;
|
||||||
|
|
||||||
|
// 引用的消息
|
||||||
|
private ChatMessageVO quote;
|
||||||
|
}
|
||||||
|
|
@ -3,6 +3,7 @@ package com.nflg.mobilebroken.repository.service;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import com.nflg.mobilebroken.common.pojo.request.AreaSearchRequest;
|
import com.nflg.mobilebroken.common.pojo.request.AreaSearchRequest;
|
||||||
|
import com.nflg.mobilebroken.common.pojo.request.EnableRequest;
|
||||||
import com.nflg.mobilebroken.common.pojo.vo.AreaVO;
|
import com.nflg.mobilebroken.common.pojo.vo.AreaVO;
|
||||||
import com.nflg.mobilebroken.repository.entity.AppArea;
|
import com.nflg.mobilebroken.repository.entity.AppArea;
|
||||||
|
|
||||||
|
|
@ -21,4 +22,6 @@ public interface IAppAreaService extends IService<AppArea> {
|
||||||
IPage<AreaVO> search(AreaSearchRequest request);
|
IPage<AreaVO> search(AreaSearchRequest request);
|
||||||
|
|
||||||
List<Integer> getAllhildrens(Integer areaId);
|
List<Integer> getAllhildrens(Integer areaId);
|
||||||
|
|
||||||
|
void enable(EnableRequest request);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,10 @@
|
||||||
package com.nflg.mobilebroken.repository.service;
|
package com.nflg.mobilebroken.repository.service;
|
||||||
|
|
||||||
|
import cn.hutool.core.date.DatePattern;
|
||||||
import com.nflg.mobilebroken.common.pojo.dto.ChatMessageDTO;
|
import com.nflg.mobilebroken.common.pojo.dto.ChatMessageDTO;
|
||||||
import com.nflg.mobilebroken.common.pojo.dto.TicketChatDTO;
|
import com.nflg.mobilebroken.common.pojo.dto.TicketChatDTO;
|
||||||
|
import com.nflg.mobilebroken.common.pojo.vo.ChatMessageVO;
|
||||||
|
import com.nflg.mobilebroken.common.util.MultilingualUtil;
|
||||||
import org.springframework.data.mongodb.core.MongoTemplate;
|
import org.springframework.data.mongodb.core.MongoTemplate;
|
||||||
import org.springframework.data.mongodb.core.query.Criteria;
|
import org.springframework.data.mongodb.core.query.Criteria;
|
||||||
import org.springframework.data.mongodb.core.query.Query;
|
import org.springframework.data.mongodb.core.query.Query;
|
||||||
|
|
@ -9,9 +12,12 @@ import org.springframework.data.mongodb.core.query.Update;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import java.time.ZoneId;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class TicketChatService {
|
public class TicketChatService {
|
||||||
|
|
@ -23,13 +29,37 @@ public class TicketChatService {
|
||||||
mongoTemplate.save(ticketChatDTO);
|
mongoTemplate.save(ticketChatDTO);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<ChatMessageDTO> getMessages(Integer ticketId) {
|
public List<ChatMessageVO> getMessages(Integer ticketId) {
|
||||||
Query query = new Query(Criteria.where("ticketId").is(ticketId));
|
Query query = new Query(Criteria.where("ticketId").is(ticketId));
|
||||||
TicketChatDTO ticketChatDTO = mongoTemplate.findOne(query, TicketChatDTO.class);
|
TicketChatDTO ticketChatDTO = mongoTemplate.findOne(query, TicketChatDTO.class);
|
||||||
if (Objects.isNull(ticketChatDTO)) {
|
if (Objects.isNull(ticketChatDTO)) {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
} else {
|
} else {
|
||||||
return ticketChatDTO.getMessages();
|
String zone = MultilingualUtil.getZone();
|
||||||
|
ZoneId zoneId = ZoneId.of(Objects.isNull(zone) ? "Asia/Shanghai" : zone);
|
||||||
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN).withZone(zoneId);
|
||||||
|
List<ChatMessageDTO> messages = ticketChatDTO.getMessages();
|
||||||
|
return messages.stream().map(m -> new ChatMessageVO()
|
||||||
|
.setId(m.getId())
|
||||||
|
.setFrom(m.getFrom())
|
||||||
|
.setSenderId(m.getSenderId())
|
||||||
|
.setSenderName(m.getSenderName())
|
||||||
|
.setSenderAvatar(m.getSenderAvatar())
|
||||||
|
.setContent(m.getContent())
|
||||||
|
.setAttachments(m.getAttachments())
|
||||||
|
.setImages(m.getImages())
|
||||||
|
.setCreateTime(formatter.format(m.getCreateTime()))
|
||||||
|
.setQuote(Objects.isNull(m.getQuote()) ? null : new ChatMessageVO()
|
||||||
|
.setId(m.getId())
|
||||||
|
.setFrom(m.getFrom())
|
||||||
|
.setSenderId(m.getSenderId())
|
||||||
|
.setSenderName(m.getSenderName())
|
||||||
|
.setSenderAvatar(m.getSenderAvatar())
|
||||||
|
.setContent(m.getContent())
|
||||||
|
.setAttachments(m.getAttachments())
|
||||||
|
.setImages(m.getImages()))
|
||||||
|
.setCreateTime(formatter.format(m.getCreateTime())))
|
||||||
|
.collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,12 +8,14 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.nflg.mobilebroken.common.pojo.request.AreaSearchRequest;
|
import com.nflg.mobilebroken.common.pojo.request.AreaSearchRequest;
|
||||||
|
import com.nflg.mobilebroken.common.pojo.request.EnableRequest;
|
||||||
import com.nflg.mobilebroken.common.pojo.vo.AreaVO;
|
import com.nflg.mobilebroken.common.pojo.vo.AreaVO;
|
||||||
import com.nflg.mobilebroken.common.util.AppUserUtil;
|
import com.nflg.mobilebroken.common.util.AppUserUtil;
|
||||||
import com.nflg.mobilebroken.repository.entity.AppArea;
|
import com.nflg.mobilebroken.repository.entity.AppArea;
|
||||||
import com.nflg.mobilebroken.repository.mapper.AppAreaMapper;
|
import com.nflg.mobilebroken.repository.mapper.AppAreaMapper;
|
||||||
import com.nflg.mobilebroken.repository.service.IAppAreaService;
|
import com.nflg.mobilebroken.repository.service.IAppAreaService;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
@ -98,6 +100,27 @@ public class AppAreaServiceImpl extends ServiceImpl<AppAreaMapper, AppArea> impl
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
@Override
|
||||||
|
public void enable(EnableRequest request) {
|
||||||
|
if (request.getEnable()) {
|
||||||
|
lambdaUpdate()
|
||||||
|
.set(AppArea::getEnable, true)
|
||||||
|
.set(AppArea::getUpdateBy, AppUserUtil.getUserName())
|
||||||
|
.set(AppArea::getUpdateTime, LocalDateTime.now())
|
||||||
|
.eq(AppArea::getId, request.getId())
|
||||||
|
.update();
|
||||||
|
} else {
|
||||||
|
List<Integer> childrens = getAllhildrens(request.getId());
|
||||||
|
lambdaUpdate()
|
||||||
|
.set(AppArea::getEnable, false)
|
||||||
|
.set(AppArea::getUpdateBy, AppUserUtil.getUserName())
|
||||||
|
.set(AppArea::getUpdateTime, LocalDateTime.now())
|
||||||
|
.in(AppArea::getId, childrens)
|
||||||
|
.update();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private List<AppArea> getChildrens(Integer areaId) {
|
private List<AppArea> getChildrens(Integer areaId) {
|
||||||
List<AppArea> areas = lambdaQuery()
|
List<AppArea> areas = lambdaQuery()
|
||||||
.eq(AppArea::getEnable, true)
|
.eq(AppArea::getEnable, true)
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ import com.nflg.mobilebroken.common.pojo.vo.AppUserApplyforInfoVO;
|
||||||
import com.nflg.mobilebroken.common.pojo.vo.AppUserApplyforVO;
|
import com.nflg.mobilebroken.common.pojo.vo.AppUserApplyforVO;
|
||||||
import com.nflg.mobilebroken.common.pojo.vo.AppUserVO;
|
import com.nflg.mobilebroken.common.pojo.vo.AppUserVO;
|
||||||
import com.nflg.mobilebroken.common.util.AdminUserUtil;
|
import com.nflg.mobilebroken.common.util.AdminUserUtil;
|
||||||
|
import com.nflg.mobilebroken.common.util.AppUserUtil;
|
||||||
import com.nflg.mobilebroken.common.util.VUtils;
|
import com.nflg.mobilebroken.common.util.VUtils;
|
||||||
import com.nflg.mobilebroken.repository.entity.AppArea;
|
import com.nflg.mobilebroken.repository.entity.AppArea;
|
||||||
import com.nflg.mobilebroken.repository.entity.AppUser;
|
import com.nflg.mobilebroken.repository.entity.AppUser;
|
||||||
|
|
@ -73,7 +74,7 @@ public class AppUserApplyforServiceImpl extends ServiceImpl<AppUserApplyforMappe
|
||||||
.setCompanyId(request.getCompanyId())
|
.setCompanyId(request.getCompanyId())
|
||||||
.setTitleId(request.getTitleId())
|
.setTitleId(request.getTitleId())
|
||||||
.setType(AppUserApplyforType.ADD.getState().byteValue())
|
.setType(AppUserApplyforType.ADD.getState().byteValue())
|
||||||
.setCreateBy(AdminUserUtil.getUserId())
|
.setCreateBy(AppUserUtil.getUserId())
|
||||||
.setCreateTime(LocalDateTime.now());
|
.setCreateTime(LocalDateTime.now());
|
||||||
save(applyfor);
|
save(applyfor);
|
||||||
}
|
}
|
||||||
|
|
@ -85,7 +86,7 @@ public class AppUserApplyforServiceImpl extends ServiceImpl<AppUserApplyforMappe
|
||||||
.setReason(request.getReason())
|
.setReason(request.getReason())
|
||||||
.setState(AppUserApplyForState.PENDINGAPPROVAL.getState().byteValue())
|
.setState(AppUserApplyForState.PENDINGAPPROVAL.getState().byteValue())
|
||||||
.setType(AppUserApplyforType.ENABLE.getState().byteValue())
|
.setType(AppUserApplyforType.ENABLE.getState().byteValue())
|
||||||
.setCreateBy(AdminUserUtil.getUserId())
|
.setCreateBy(AppUserUtil.getUserId())
|
||||||
.setCreateTime(LocalDateTime.now());
|
.setCreateTime(LocalDateTime.now());
|
||||||
save(applyfor);
|
save(applyfor);
|
||||||
}
|
}
|
||||||
|
|
@ -97,7 +98,7 @@ public class AppUserApplyforServiceImpl extends ServiceImpl<AppUserApplyforMappe
|
||||||
.setReason(request.getReason())
|
.setReason(request.getReason())
|
||||||
.setState(AppUserApplyForState.PENDINGAPPROVAL.getState().byteValue())
|
.setState(AppUserApplyForState.PENDINGAPPROVAL.getState().byteValue())
|
||||||
.setType(AppUserApplyforType.EXTENSION.getState().byteValue())
|
.setType(AppUserApplyforType.EXTENSION.getState().byteValue())
|
||||||
.setCreateBy(AdminUserUtil.getUserId())
|
.setCreateBy(AppUserUtil.getUserId())
|
||||||
.setCreateTime(LocalDateTime.now());
|
.setCreateTime(LocalDateTime.now());
|
||||||
save(applyfor);
|
save(applyfor);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -77,7 +77,7 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
|
||||||
public void disable(Integer userId) {
|
public void disable(Integer userId) {
|
||||||
AppUser user=new AppUser()
|
AppUser user=new AppUser()
|
||||||
.setId(userId)
|
.setId(userId)
|
||||||
.setUpdateBy(AdminUserUtil.getUserId())
|
.setUpdateBy(AppUserUtil.getUserId())
|
||||||
.setUpdateTime(LocalDateTime.now());
|
.setUpdateTime(LocalDateTime.now());
|
||||||
updateById(user);
|
updateById(user);
|
||||||
}
|
}
|
||||||
|
|
@ -248,12 +248,31 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void enable(EnableAppUserRequest request) {
|
public void enable(EnableAppUserRequest request) {
|
||||||
lambdaUpdate()
|
if (request.getEnable()) {
|
||||||
.set(AppUser::getState, request.getEnable() ? UserState.Activated.getState() : UserState.Disabled.getState())
|
lambdaUpdate()
|
||||||
// .set(AppUser::getUpdateBy, AdminUserUtil.getUserId())
|
.set(AppUser::getState, UserState.Activated.getState())
|
||||||
.set(AppUser::getUpdateTime, LocalDateTime.now())
|
.set(AppUser::getUpdateTime, LocalDateTime.now())
|
||||||
.in(AppUser::getId, request.getIds())
|
.in(AppUser::getId, request.getIds())
|
||||||
.update();
|
.update();
|
||||||
|
} else {
|
||||||
|
lambdaUpdate()
|
||||||
|
.set(AppUser::getState, UserState.Disabled.getState())
|
||||||
|
.set(AppUser::getUpdateTime, LocalDateTime.now())
|
||||||
|
.in(AppUser::getId, request.getIds())
|
||||||
|
.update();
|
||||||
|
//禁用子账号
|
||||||
|
List<String> companyIds = listByIds(request.getIds())
|
||||||
|
.stream()
|
||||||
|
.filter(AppUser::getIsPrimary)
|
||||||
|
.flatMap(u -> Arrays.stream(u.getCompanyId().split(",")))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
lambdaUpdate()
|
||||||
|
.set(AppUser::getState, UserState.Disabled.getState())
|
||||||
|
.set(AppUser::getUpdateTime, LocalDateTime.now())
|
||||||
|
.eq(AppUser::getIsPrimary, false)
|
||||||
|
.in(AppUser::getCompanyId, companyIds)
|
||||||
|
.update();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@
|
||||||
INNER JOIN ticket t ON m.ticket_id=t.id
|
INNER JOIN ticket t ON m.ticket_id=t.id
|
||||||
INNER JOIN app_user u ON t.user_id=u.id
|
INNER JOIN app_user u ON t.user_id=u.id
|
||||||
WHERE m.is_read=0 AND m.user_id=#{userId}
|
WHERE m.is_read=0 AND m.user_id=#{userId}
|
||||||
ORDER BY m.id
|
ORDER BY m.create_time DESC
|
||||||
</select>
|
</select>
|
||||||
<select id="search" resultType="com.nflg.mobilebroken.common.pojo.vo.AppMessageVO">
|
<select id="search" resultType="com.nflg.mobilebroken.common.pojo.vo.AppMessageVO">
|
||||||
SELECT m.id,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'
|
SELECT m.id,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'
|
||||||
|
|
@ -19,6 +19,6 @@
|
||||||
<if test="title != null and title != ''">
|
<if test="title != null and title != ''">
|
||||||
AND (t.title LIKE CONCAT('%',#{title},'%') OR t.no LIKE CONCAT('%',#{title},'%'))
|
AND (t.title LIKE CONCAT('%',#{title},'%') OR t.no LIKE CONCAT('%',#{title},'%'))
|
||||||
</if>
|
</if>
|
||||||
ORDER BY m.id
|
ORDER BY m.create_time DESC
|
||||||
</select>
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
|
||||||
|
|
@ -52,19 +52,17 @@
|
||||||
<foreach collection="companyIds" open="(" close=")" item="companyId" separator=",">
|
<foreach collection="companyIds" open="(" close=")" item="companyId" separator=",">
|
||||||
#{companyId}
|
#{companyId}
|
||||||
</foreach>
|
</foreach>
|
||||||
<where>
|
<if test="request.deviceNo!=null and request.deviceNo!=''">
|
||||||
<if test="request.deviceNo!=null and request.deviceNo!=''">
|
and d.device_no LIKE concat('%', #{request.deviceNo}, '%')
|
||||||
and d.device_no LIKE concat('%', #{request.deviceNo}, '%')
|
</if>
|
||||||
</if>
|
<if test="request.modelNo!=null and request.modelNo!=''">
|
||||||
<if test="request.modelNo!=null and request.modelNo!=''">
|
and d.model_no LIKE concat('%', #{request.modelNo}, '%')
|
||||||
and d.model_no LIKE concat('%', #{request.modelNo}, '%')
|
</if>
|
||||||
</if>
|
<if test="request.startTime!=null and request.startTime!=''">
|
||||||
<if test="request.startTime!=null and request.startTime!=''">
|
and d.shipment_date >= #{request.startTime}
|
||||||
and d.shipment_date >= #{request.startTime}
|
</if>
|
||||||
</if>
|
<if test="request.endTime!=null and request.endTime!=''">
|
||||||
<if test="request.endTime!=null and request.endTime!=''">
|
and d.shipment_date <= #{request.endTime}
|
||||||
and d.shipment_date <= #{request.endTime}
|
</if>
|
||||||
</if>
|
|
||||||
</where>
|
|
||||||
</select>
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
|
||||||
|
|
@ -78,6 +78,7 @@
|
||||||
LEFT JOIN ticket_follow tf ON t.id=tf.ticket_id AND tf.user_id=#{userId} AND tf.from=0
|
LEFT JOIN ticket_follow tf ON t.id=tf.ticket_id AND tf.user_id=#{userId} AND tf.from=0
|
||||||
WHERE t.user_id=#{userId}
|
WHERE t.user_id=#{userId}
|
||||||
<include refid="searchWhereCondition"/>
|
<include refid="searchWhereCondition"/>
|
||||||
|
ORDER BY t.create_time DESC
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="searchFollow" resultType="com.nflg.mobilebroken.common.pojo.vo.TicketVO">
|
<select id="searchFollow" resultType="com.nflg.mobilebroken.common.pojo.vo.TicketVO">
|
||||||
|
|
@ -88,6 +89,7 @@
|
||||||
LEFT JOIN ticket_follow tf ON t.id=tf.ticket_id AND tf.from=0
|
LEFT JOIN ticket_follow tf ON t.id=tf.ticket_id AND tf.from=0
|
||||||
WHERE tf.user_id=#{userId}
|
WHERE tf.user_id=#{userId}
|
||||||
<include refid="searchWhereCondition"/>
|
<include refid="searchWhereCondition"/>
|
||||||
|
ORDER BY t.create_time DESC
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="searchArea" resultType="com.nflg.mobilebroken.common.pojo.vo.TicketVO">
|
<select id="searchArea" resultType="com.nflg.mobilebroken.common.pojo.vo.TicketVO">
|
||||||
|
|
@ -100,13 +102,14 @@
|
||||||
#{companyId}
|
#{companyId}
|
||||||
</foreach>
|
</foreach>
|
||||||
<include refid="searchWhereCondition"/>
|
<include refid="searchWhereCondition"/>
|
||||||
|
ORDER BY t.create_time DESC
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="searchFromAdmin" resultType="com.nflg.mobilebroken.common.pojo.vo.AdminTicketVO">
|
<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'
|
SELECT t.id,t.`no`,t.title,t.state,t.urgency,t.component,t.question,t.solution,a.`name` AS 'areaName'
|
||||||
,d.customer_name AS 'companyName',u.company_id AS 'companyId',u.`name` AS 'createBy',t.device_no AS 'deviceNo',t.use_time AS 'useTime'
|
,d.customer_name AS 'companyName',u.company_id AS 'companyId',u.`name` AS 'createBy',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',d.device_type AS 'deviceType'
|
,t.create_time AS 'createTime',t.handle,t.solve_time AS 'solveTime',di.name AS 'warrantyStatusDesc',d.device_type AS 'deviceType'
|
||||||
,d.model_no AS 'equipmentModel',d.shipment_date AS 'shipmentDate',IF(tf.id IS NULL, false, true) AS 'followed'
|
,d.model_no AS 'equipmentModel',d.shipment_date AS 'shipmentDate',IF(tf.id IS NULL, false, true) AS 'followed',t.cqm
|
||||||
FROM ticket t
|
FROM ticket t
|
||||||
LEFT JOIN app_user u ON t.user_id=u.id
|
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 t_base_customer c ON u.company_id=c.id
|
||||||
|
|
@ -115,6 +118,7 @@
|
||||||
LEFT JOIN dictionary_item di ON d.warranty_state=di.id
|
LEFT JOIN dictionary_item di ON d.warranty_state=di.id
|
||||||
LEFT JOIN ticket_follow tf ON t.id=tf.ticket_id AND tf.user_id=#{userId} AND tf.from=1
|
LEFT JOIN ticket_follow tf ON t.id=tf.ticket_id AND tf.user_id=#{userId} AND tf.from=1
|
||||||
<include refid="adminSearchWhereCondition"/>
|
<include refid="adminSearchWhereCondition"/>
|
||||||
|
ORDER BY t.create_time DESC
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="completeTicket">
|
<select id="completeTicket">
|
||||||
|
|
@ -137,13 +141,14 @@
|
||||||
LEFT JOIN device d ON t.device_no=d.device_no AND d.data_valid_state=1
|
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
|
LEFT JOIN dictionary_item di ON d.warranty_state=di.id
|
||||||
<include refid="adminSearchWhereCondition"/>
|
<include refid="adminSearchWhereCondition"/>
|
||||||
|
ORDER BY t.create_time DESC
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="searchFromAdminAndFollow" resultType="com.nflg.mobilebroken.common.pojo.vo.AdminTicketVO">
|
<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'
|
SELECT t.id,t.`no`,t.title,t.state,t.urgency,t.component,t.question,t.solution,a.`name` AS 'areaName'
|
||||||
,d.customer_name AS 'companyName',u.company_id AS 'companyId',u.`name` AS 'createBy',t.device_no AS 'deviceNo',t.use_time AS 'useTime'
|
,d.customer_name AS 'companyName',u.company_id AS 'companyId',u.`name` AS 'createBy',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',d.device_type AS 'deviceType'
|
,t.create_time AS 'createTime',t.handle,t.solve_time AS 'solveTime',di.name AS 'warrantyStatusDesc',d.device_type AS 'deviceType'
|
||||||
,d.model_no AS 'equipmentModel',d.shipment_date AS 'shipmentDate',IF(tf.id IS NULL, false, true) AS 'followed'
|
,d.model_no AS 'equipmentModel',d.shipment_date AS 'shipmentDate',IF(tf.id IS NULL, false, true) AS 'followed',t.cqm
|
||||||
FROM ticket t
|
FROM ticket t
|
||||||
LEFT JOIN app_user u ON t.user_id=u.id
|
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 t_base_customer c ON u.company_id=c.id
|
||||||
|
|
@ -152,6 +157,7 @@
|
||||||
LEFT JOIN device d ON t.device_no=d.device_no AND d.data_valid_state=1
|
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
|
LEFT JOIN dictionary_item di ON d.warranty_state=di.id
|
||||||
<include refid="adminSearchWhereCondition"/>
|
<include refid="adminSearchWhereCondition"/>
|
||||||
|
ORDER BY t.create_time DESC
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="searchAllFromAdminAndFollow" resultType="com.nflg.mobilebroken.common.pojo.vo.AdminTicketVO">
|
<select id="searchAllFromAdminAndFollow" resultType="com.nflg.mobilebroken.common.pojo.vo.AdminTicketVO">
|
||||||
|
|
@ -166,5 +172,6 @@
|
||||||
LEFT JOIN device d ON t.device_no=d.device_no AND d.data_valid_state=1
|
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
|
LEFT JOIN dictionary_item di ON d.warranty_state=di.id
|
||||||
<include refid="adminSearchWhereCondition"/>
|
<include refid="adminSearchWhereCondition"/>
|
||||||
|
ORDER BY t.create_time DESC
|
||||||
</select>
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue