feat: 一些调整
This commit is contained in:
parent
0224018087
commit
e41216f9c4
|
|
@ -55,21 +55,19 @@ public class FileController extends ControllerBase {
|
|||
,@Valid @NotNull @RequestParam("source") Byte source
|
||||
,@Valid @NotNull @RequestParam("sourceId") Integer sourceId) {
|
||||
try {
|
||||
String url=fileUploadService.upload(buildFilePath(file), file);
|
||||
fileUploadRecordService.save(buildFileUploadRecord(source,sourceId,file,url));
|
||||
String fileName=file.getOriginalFilename().substring(0,file.getOriginalFilename().lastIndexOf("."));
|
||||
String fileType=file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
|
||||
String url=fileUploadService.upload(buildFilePath(fileName,fileType), file);
|
||||
fileUploadRecordService.save(buildFileUploadRecord(source,sourceId,fileName,fileType,url));
|
||||
return ApiResult.success(url);
|
||||
} catch (Exception ex) {
|
||||
throw new NflgException(STATE.BusinessError, "上传文件失败:" + ex.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
private String buildFilePath(MultipartFile file) {
|
||||
return StrUtil.format("admin/{}/{}/{}{}", LocalDateTime.now().format(FORMATTER), AdminUserUtil.getUserId(),
|
||||
RandomUtil.randomString(6),getExtensions(file));
|
||||
}
|
||||
|
||||
private String getExtensions(MultipartFile file){
|
||||
return file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
|
||||
private String buildFilePath(String fileName, String fileType) {
|
||||
return StrUtil.format("admin/{}/{}/{}/{}{}", LocalDateTime.now().format(FORMATTER), AdminUserUtil.getUserId()
|
||||
, RandomUtil.randomString(4), fileName, fileType);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -87,10 +85,12 @@ public class FileController extends ControllerBase {
|
|||
try {
|
||||
List<String> list = new ArrayList<>();
|
||||
List<FileUploadRecord> records = new ArrayList<>();
|
||||
for (MultipartFile f : files) {
|
||||
String url=fileUploadService.upload(buildFilePath(f), f);
|
||||
for (MultipartFile file : files) {
|
||||
String fileName=file.getOriginalFilename().substring(0,file.getOriginalFilename().lastIndexOf("."));
|
||||
String fileType=file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
|
||||
String url=fileUploadService.upload(buildFilePath(fileName,fileType), file);
|
||||
list.add(url);
|
||||
records.add(buildFileUploadRecord(source,sourceId,f,url));
|
||||
records.add(buildFileUploadRecord(source,sourceId,fileName,fileType,url));
|
||||
}
|
||||
fileUploadRecordService.saveBatch(records);
|
||||
return ApiResult.success(list);
|
||||
|
|
@ -107,7 +107,9 @@ public class FileController extends ControllerBase {
|
|||
@PostMapping("uploadSingleFile1")
|
||||
public ApiResult<String> uploadSingleFile1(@Valid @NotNull @RequestParam("file") MultipartFile file) {
|
||||
try {
|
||||
String url=fileUploadService.upload(buildFilePath(file), file);
|
||||
String fileName=file.getOriginalFilename().substring(0,file.getOriginalFilename().lastIndexOf("."));
|
||||
String fileType=file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
|
||||
String url=fileUploadService.upload(buildFilePath(fileName,fileType), file);
|
||||
return ApiResult.success(url);
|
||||
}catch (Exception ex){
|
||||
throw new NflgException(STATE.BusinessError,"上传文件失败:"+ex.getMessage());
|
||||
|
|
@ -115,10 +117,10 @@ public class FileController extends ControllerBase {
|
|||
}
|
||||
|
||||
|
||||
private FileUploadRecord buildFileUploadRecord(Byte source,Integer sourceId,MultipartFile file, String url){
|
||||
private FileUploadRecord buildFileUploadRecord(Byte source,Integer sourceId,String fileName,String fileType, String url){
|
||||
return new FileUploadRecord()
|
||||
.setFileName(file.getOriginalFilename())
|
||||
.setFileType(file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")))
|
||||
.setFileName(fileName)
|
||||
.setFileType(fileType)
|
||||
.setFrom("admin")
|
||||
.setCreateTime(LocalDateTime.now())
|
||||
.setSource(source)
|
||||
|
|
|
|||
|
|
@ -125,7 +125,10 @@ public class TicketController extends ControllerBase {
|
|||
@PostMapping("searchTicket")
|
||||
@ApiMark(moduleName = "工单管理", apiName = "搜索工单")
|
||||
public ApiResult<PageData<AdminTicketVO>> searchTicket(@Valid @RequestBody AdminTicketSearchRequest request) {
|
||||
return ApiResult.success(PageUtil.convert(ticketService.searchPage(request), d -> d));
|
||||
return ApiResult.success(PageUtil.convert(ticketService.searchPage(request), d -> {
|
||||
d.setEvaluate(getTicketEvaluate(d.getId()));
|
||||
return d;
|
||||
}));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -167,6 +170,20 @@ public class TicketController extends ControllerBase {
|
|||
} catch (IOException e) {
|
||||
log.error("发送SSE消息出错", e);
|
||||
}
|
||||
ticketEventPublisher.publishTicketAssignedEvent(ticket,request.getUserIds());
|
||||
return ApiResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加工单处理人
|
||||
* @param request 请求参数
|
||||
*/
|
||||
@PostMapping("addTicketHandle")
|
||||
@MethodInfoMark(value = "添加工单处理人", menuName = "工单管理")
|
||||
@ApiMark(moduleName = "工单管理", apiName = "添加工单处理人")
|
||||
public ApiResult<Void> addTicketHandle(@Valid @RequestBody TicketHandleAddRequest request){
|
||||
Ticket ticket=ticketService.addTicketHandle(request);
|
||||
ticketEventPublisher.publishTicketAssignedEvent(ticket,request.getUserIds());
|
||||
return ApiResult.success();
|
||||
}
|
||||
|
||||
|
|
@ -180,7 +197,7 @@ public class TicketController extends ControllerBase {
|
|||
public ApiResult<Void> completeTicket(@Valid @RequestBody @NotEmpty List<Integer> ids) {
|
||||
for (Integer id : ids){
|
||||
Ticket ticket=ticketService.completeTicket(id);
|
||||
ticketEventPublisher.publishTicketCompleteEvent(ticket,MultilingualUtil.getLanguage(),MultilingualUtil.getZone());
|
||||
ticketEventPublisher.publishTicketCompleteEvent(ticket);
|
||||
TicketChatDTO message=new TicketChatDTO()
|
||||
.setTicketId(ticket.getId())
|
||||
.setMessages(Collections.singletonList(new ChatMessageDTO()
|
||||
|
|
@ -212,7 +229,7 @@ public class TicketController extends ControllerBase {
|
|||
@ApiMark(moduleName = "工单管理", apiName = "关闭工单")
|
||||
public ApiResult<Void> closeTicket(@Valid @RequestBody TicketCloseRequest request) {
|
||||
Ticket ticket=ticketService.closeTicket(request);
|
||||
ticketEventPublisher.publishTicketCloseEvent(ticket,MultilingualUtil.getLanguage(),MultilingualUtil.getZone());
|
||||
ticketEventPublisher.publishTicketCloseEvent(ticket);
|
||||
TicketChatDTO message=new TicketChatDTO()
|
||||
.setTicketId(ticket.getId())
|
||||
.setMessages(Collections.singletonList(new ChatMessageDTO()
|
||||
|
|
@ -493,7 +510,7 @@ public class TicketController extends ControllerBase {
|
|||
} catch (IOException e) {
|
||||
log.error("发送SSE消息出错", e);
|
||||
}
|
||||
ticketEventPublisher.publishTicketReplyEvent(ticket, MultilingualUtil.getLanguage(), MultilingualUtil.getZone());
|
||||
ticketEventPublisher.publishTicketReplyEvent(ticket);
|
||||
return ApiResult.success();
|
||||
}
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.nflg.mobilebroken.cfs.event;
|
||||
package com.nflg.mobilebroken.admin.event;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
|
|
@ -22,10 +22,7 @@ import org.springframework.context.ApplicationEvent;
|
|||
|
||||
import javax.mail.MessagingException;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZoneId;
|
||||
import java.time.ZoneOffset;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
|
@ -34,19 +31,17 @@ public class TicketAssignedEvent extends ApplicationEvent implements Application
|
|||
|
||||
private static final DateTimeFormatter FORMATTER= DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN);
|
||||
private final Ticket ticket;
|
||||
private final String language;
|
||||
private final String zone;
|
||||
private final List<Integer> userIds;
|
||||
private IDictionaryItemTranslateService dictionaryItemTranslateService;
|
||||
private IAppUserService appUserService;
|
||||
private EmailService emailService;
|
||||
private IAdminUserService adminUserService;
|
||||
private IAdminMessageService adminMessageService;
|
||||
|
||||
public TicketAssignedEvent(Object source, Ticket ticket, String language, String zone) {
|
||||
public TicketAssignedEvent(Object source, Ticket ticket, List<Integer> userIds) {
|
||||
super(source);
|
||||
this.ticket = ticket;
|
||||
this.language = language;
|
||||
this.zone = zone;
|
||||
this.userIds = userIds;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -65,7 +60,6 @@ public class TicketAssignedEvent extends ApplicationEvent implements Application
|
|||
|
||||
private void sendUserMessage(){
|
||||
//我的待办
|
||||
List<Integer> userIds=Arrays.stream(ticket.getHandle().split(",")).filter(StrUtil::isNotBlank).map(Integer::parseInt).collect(Collectors.toList());
|
||||
List<AdminUser> adminUsers=adminUserService.listByIds(userIds);
|
||||
if (CollectionUtil.isNotEmpty(adminUsers)){
|
||||
adminUsers.forEach(c -> adminMessageService.add(
|
||||
|
|
@ -84,17 +78,16 @@ public class TicketAssignedEvent extends ApplicationEvent implements Application
|
|||
|
||||
private void sendEmail(){
|
||||
try {
|
||||
List<Integer> userIds = Arrays.stream(ticket.getHandle().split(",")).filter(StrUtil::isNotBlank).map(Integer::parseInt).collect(Collectors.toList());
|
||||
List<AdminUser> adminUsers = adminUserService.listByIds(userIds);
|
||||
if (CollectionUtil.isNotEmpty(adminUsers)) {
|
||||
AppUser appUser=appUserService.getById(ticket.getUserId());
|
||||
String subject = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_TITLE_TICKET_ASSIGNED, language);
|
||||
String content = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_CONTENT_TICKET_NOTIFY, language)
|
||||
String subject = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_TITLE_TICKET_ASSIGNED, Constant.DEFAULT_LANGUAGE_CODE);
|
||||
String content = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_CONTENT_TICKET_NOTIFY, Constant.DEFAULT_LANGUAGE_CODE)
|
||||
.replace("${no}", ticket.getNo())
|
||||
.replace("${title}", ticket.getTitle())
|
||||
.replace("${createUser}", appUser.getName())
|
||||
.replace("${handleUser}", StrUtil.join(",",adminUsers.stream().map(AdminUser::getUserName).collect(Collectors.toList())))
|
||||
.replace("${createTime}", toTimeString(ticket.getCreateTime()))
|
||||
.replace("${createTime}", ticket.getCreateTime().format(FORMATTER))
|
||||
.replace("${msg}", subject);
|
||||
sendEmail(adminUsers, subject, content);
|
||||
}
|
||||
|
|
@ -110,11 +103,4 @@ public class TicketAssignedEvent extends ApplicationEvent implements Application
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
private String toTimeString(LocalDateTime time){
|
||||
return time.atZone(ZoneOffset.UTC)
|
||||
.withZoneSameInstant(ZoneId.of(zone))
|
||||
.toLocalDateTime()
|
||||
.format(FORMATTER);
|
||||
}
|
||||
}
|
||||
|
|
@ -26,8 +26,6 @@ public class TicketCloseEvent extends ApplicationEvent implements ApplicationCon
|
|||
|
||||
private static final DateTimeFormatter FORMATTER= DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN);
|
||||
private final Ticket ticket;
|
||||
private final String language;
|
||||
private final String zone;
|
||||
private IDictionaryItemTranslateService dictionaryItemTranslateService;
|
||||
private IAppUserService appUserService;
|
||||
private EmailService emailService;
|
||||
|
|
@ -35,11 +33,9 @@ public class TicketCloseEvent extends ApplicationEvent implements ApplicationCon
|
|||
private IAdminUserService adminUserService;
|
||||
private IAdminMessageService adminMessageService;
|
||||
|
||||
public TicketCloseEvent(Object source,Ticket ticket, String language, String zone) {
|
||||
public TicketCloseEvent(Object source,Ticket ticket) {
|
||||
super(source);
|
||||
this.ticket = ticket;
|
||||
this.language = language;
|
||||
this.zone = zone;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -22,8 +22,6 @@ public class TicketCompleteEvent extends ApplicationEvent implements Application
|
|||
|
||||
private static final DateTimeFormatter FORMATTER= DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN);
|
||||
private final Ticket ticket;
|
||||
private final String language;
|
||||
private final String zone;
|
||||
private IDictionaryItemTranslateService dictionaryItemTranslateService;
|
||||
private IAppUserService appUserService;
|
||||
private EmailService emailService;
|
||||
|
|
@ -32,11 +30,9 @@ public class TicketCompleteEvent extends ApplicationEvent implements Application
|
|||
private IAdminMessageService adminMessageService;
|
||||
private IAppMessageService appMessageService;
|
||||
|
||||
public TicketCompleteEvent(Object source,Ticket ticket, String language, String zone) {
|
||||
public TicketCompleteEvent(Object source,Ticket ticket) {
|
||||
super(source);
|
||||
this.ticket = ticket;
|
||||
this.language = language;
|
||||
this.zone = zone;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -18,8 +18,6 @@ import org.springframework.context.ApplicationEvent;
|
|||
|
||||
import javax.mail.MessagingException;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZoneId;
|
||||
import java.time.ZoneOffset;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
|
@ -30,8 +28,6 @@ public class TicketReplyEvent extends ApplicationEvent implements ApplicationCon
|
|||
|
||||
private static final DateTimeFormatter FORMATTER= DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN);
|
||||
private final Ticket ticket;
|
||||
private final String language;
|
||||
private final String zone;
|
||||
private IDictionaryItemTranslateService dictionaryItemTranslateService;
|
||||
private IAppUserService appUserService;
|
||||
private EmailService emailService;
|
||||
|
|
@ -40,11 +36,9 @@ public class TicketReplyEvent extends ApplicationEvent implements ApplicationCon
|
|||
private IAdminMessageService adminMessageService;
|
||||
private IAppMessageService appMessageService;
|
||||
|
||||
public TicketReplyEvent(Object source,Ticket ticket, String language, String zone) {
|
||||
public TicketReplyEvent(Object source,Ticket ticket) {
|
||||
super(source);
|
||||
this.ticket = ticket;
|
||||
this.language = language;
|
||||
this.zone = zone;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -79,13 +73,13 @@ public class TicketReplyEvent extends ApplicationEvent implements ApplicationCon
|
|||
List<AdminUser> adminUsers = adminUserService.listByIds(userIds);
|
||||
if (CollectionUtil.isNotEmpty(adminUsers)) {
|
||||
AppUser appUser=appUserService.getById(ticket.getUserId());
|
||||
String subject = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_TITLE_TICKET_REPLY, language);
|
||||
String content = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_CONTENT_TICKET_NOTIFY, language)
|
||||
String subject = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_TITLE_TICKET_REPLY, Constant.DEFAULT_LANGUAGE_CODE);
|
||||
String content = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_CONTENT_TICKET_NOTIFY, Constant.DEFAULT_LANGUAGE_CODE)
|
||||
.replace("${no}", ticket.getNo())
|
||||
.replace("${title}", ticket.getTitle())
|
||||
.replace("${createUser}", appUser.getName())
|
||||
.replace("${handleUser}", StrUtil.join(",",adminUsers.stream().map(AdminUser::getUserName).collect(Collectors.toList())))
|
||||
.replace("${createTime}", toTimeString(ticket.getCreateTime()))
|
||||
.replace("${createTime}", ticket.getCreateTime().format(FORMATTER))
|
||||
.replace("${msg}", subject);
|
||||
//发送给提交人
|
||||
sendEmail(appUser, subject, content);
|
||||
|
|
@ -98,11 +92,4 @@ public class TicketReplyEvent extends ApplicationEvent implements ApplicationCon
|
|||
private void sendEmail(AppUser appUser,String subject,String content) throws MessagingException {
|
||||
emailService.sendEmail(appUser.getEmail(),subject,content);
|
||||
}
|
||||
|
||||
private String toTimeString(LocalDateTime time){
|
||||
return time.atZone(ZoneOffset.UTC)
|
||||
.withZoneSameInstant(ZoneId.of(zone))
|
||||
.toLocalDateTime()
|
||||
.format(FORMATTER);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.nflg.mobilebroken.admin.listener;
|
||||
|
||||
import com.nflg.mobilebroken.admin.event.TicketAssignedEvent;
|
||||
import com.nflg.mobilebroken.admin.event.TicketCloseEvent;
|
||||
import com.nflg.mobilebroken.admin.event.TicketCompleteEvent;
|
||||
import com.nflg.mobilebroken.admin.event.TicketReplyEvent;
|
||||
|
|
@ -10,6 +11,12 @@ import org.springframework.stereotype.Component;
|
|||
@Component
|
||||
public class TicketEventListener {
|
||||
|
||||
@Async
|
||||
@EventListener
|
||||
public void handleTicketAssignedEvent(TicketAssignedEvent event) {
|
||||
event.send();
|
||||
}
|
||||
|
||||
@Async
|
||||
@EventListener
|
||||
public void handleTicketReplyEvent(TicketReplyEvent event) {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.nflg.mobilebroken.admin.publisher;
|
||||
|
||||
import com.nflg.mobilebroken.admin.event.TicketAssignedEvent;
|
||||
import com.nflg.mobilebroken.admin.event.TicketCloseEvent;
|
||||
import com.nflg.mobilebroken.admin.event.TicketCompleteEvent;
|
||||
import com.nflg.mobilebroken.admin.event.TicketReplyEvent;
|
||||
|
|
@ -9,6 +10,7 @@ import org.springframework.context.ApplicationEventPublisher;
|
|||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class TicketEventPublisher {
|
||||
|
|
@ -19,20 +21,26 @@ public class TicketEventPublisher {
|
|||
@Resource
|
||||
private ApplicationContext applicationContext;
|
||||
|
||||
public void publishTicketReplyEvent(Ticket ticket, String language, String zone) {
|
||||
TicketReplyEvent event = new TicketReplyEvent(this, ticket, language, zone);
|
||||
public void publishTicketAssignedEvent(Ticket ticket, List<Integer> userIds) {
|
||||
TicketAssignedEvent event = new TicketAssignedEvent(this, ticket,userIds);
|
||||
event.setApplicationContext(applicationContext);
|
||||
eventPublisher.publishEvent(event);
|
||||
}
|
||||
|
||||
public void publishTicketCompleteEvent(Ticket ticket, String language, String zone) {
|
||||
TicketCompleteEvent event = new TicketCompleteEvent(this, ticket, language, zone);
|
||||
public void publishTicketReplyEvent(Ticket ticket) {
|
||||
TicketReplyEvent event = new TicketReplyEvent(this, ticket);
|
||||
event.setApplicationContext(applicationContext);
|
||||
eventPublisher.publishEvent(event);
|
||||
}
|
||||
|
||||
public void publishTicketCloseEvent(Ticket ticket, String language, String zone) {
|
||||
TicketCloseEvent event = new TicketCloseEvent(this, ticket, language, zone);
|
||||
public void publishTicketCompleteEvent(Ticket ticket) {
|
||||
TicketCompleteEvent event = new TicketCompleteEvent(this, ticket);
|
||||
event.setApplicationContext(applicationContext);
|
||||
eventPublisher.publishEvent(event);
|
||||
}
|
||||
|
||||
public void publishTicketCloseEvent(Ticket ticket) {
|
||||
TicketCloseEvent event = new TicketCloseEvent(this, ticket);
|
||||
event.setApplicationContext(applicationContext);
|
||||
eventPublisher.publishEvent(event);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -54,8 +54,8 @@ public class AdminController extends ControllerBase {
|
|||
@Valid @NotBlank(message = "密码不能为空") @RequestParam("password") String password) {
|
||||
AdminUser user=adminUserService.getUser(userName,password);
|
||||
VUtils.trueThrow(Objects.isNull(user)).throwMessage(STATE.PassportErr,"用户名或密码错误");
|
||||
VUtils.trueThrow(Objects.equals(user.getState(), UserState.Disabled.getState())).throwMessage(STATE.PassportErr, "账户被禁用,请联系管理员");
|
||||
VUtils.trueThrow(Objects.equals(user.getState(), UserState.ToBeActivated.getState())).throwMessage(STATE.PassportErr, "账户未激活");
|
||||
VUtils.trueThrow(Objects.equals(user.getState(), UserState.Disabled.getState())).throwMessage(STATE.PassportErr, "账号被禁用,请联系管理员");
|
||||
VUtils.trueThrow(Objects.equals(user.getState(), UserState.ToBeActivated.getState())).throwMessage(STATE.PassportErr, "账号未激活");
|
||||
List<RoleVO> roleCodes = adminUserRoleMapService.getRoleList(user.getId());
|
||||
SaTokenAdminUtil.login(user.getId(), SaLoginConfig
|
||||
.setExtra("from", "admin")
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package com.nflg.mobilebroken.auth.controller;
|
|||
import cn.dev33.satoken.stp.SaLoginConfig;
|
||||
import cn.dev33.satoken.stp.SaTokenInfo;
|
||||
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.constant.UserState;
|
||||
import com.nflg.mobilebroken.common.pojo.ApiResult;
|
||||
|
|
@ -11,6 +12,7 @@ import com.nflg.mobilebroken.common.util.SaTokenAppUtil;
|
|||
import com.nflg.mobilebroken.common.util.VUtils;
|
||||
import com.nflg.mobilebroken.repository.entity.AppUser;
|
||||
import com.nflg.mobilebroken.repository.service.IAppUserService;
|
||||
import com.nflg.mobilebroken.repository.service.IDictionaryItemTranslateService;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
|
@ -30,7 +32,10 @@ import java.util.stream.Collectors;
|
|||
public class AppController extends ControllerBase {
|
||||
|
||||
@Resource
|
||||
IAppUserService appUserService;
|
||||
private IAppUserService appUserService;
|
||||
|
||||
@Resource
|
||||
private IDictionaryItemTranslateService dictionaryItemTranslateService;
|
||||
|
||||
/**
|
||||
* 用户端登录
|
||||
|
|
@ -41,10 +46,16 @@ public class AppController extends ControllerBase {
|
|||
@GetMapping("login")
|
||||
public ApiResult<AppLoginVO> login(String userName, String password) {
|
||||
AppUser user=appUserService.getUser(userName,password);
|
||||
VUtils.trueThrow(Objects.isNull(user)).throwMessage(STATE.PassportErr,"用户名或密码错误");
|
||||
VUtils.trueThrow(Objects.equals(user.getState(), UserState.Disabled.getState())).throwMessage(STATE.PassportErr, "账户被禁用,请联系管理员");
|
||||
VUtils.trueThrow(Objects.equals(user.getState(), UserState.ToBeActivated.getState())).throwMessage(STATE.PassportErr, "账户未激活");
|
||||
VUtils.trueThrow(user.getExpireTime().isBefore(ChronoLocalDate.from(LocalDateTime.now()))).throwMessage(STATE.PassportErr, "用户已过期,请联系管理员");
|
||||
VUtils.trueThrow(Objects.isNull(user))
|
||||
.throwMessage(STATE.PassportErr,dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_SYSTEMERROR,Constant.DICTIONARY_ITEM_INCORRECTUSERNAMEORPASSWORD,Constant.DEFAULT_LANGUAGE_CODE));
|
||||
VUtils.trueThrow(Objects.equals(user.getState(), UserState.Disabled.getState()))
|
||||
.throwMessage(STATE.PassportErr, dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_SYSTEMERROR,Constant.DICTIONARY_ITEM_ACCOUNT_DISABLED,user.getLanguageCode()));
|
||||
VUtils.trueThrow(Objects.equals(user.getState(), UserState.ToBeActivated.getState()))
|
||||
.throwMessage(STATE.PassportErr, dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_SYSTEMERROR,Constant.DICTIONARY_ITEM_ACCOUNT_NOT_ACTIVATED,user.getLanguageCode()));
|
||||
VUtils.trueThrow(user.getExpireTime().isBefore(ChronoLocalDate.from(LocalDateTime.now())) && user.getIsPrimary())
|
||||
.throwMessage(STATE.PassportErr, dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_SYSTEMERROR,Constant.DICTIONARY_ITEM_ACCOUNT_HAS_EXPIRED_PRIMARY,user.getLanguageCode()));
|
||||
VUtils.trueThrow(user.getExpireTime().isBefore(ChronoLocalDate.from(LocalDateTime.now())) && !user.getIsPrimary())
|
||||
.throwMessage(STATE.PassportErr, dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_SYSTEMERROR,Constant.DICTIONARY_ITEM_ACCOUNT_HAS_EXPIRED,user.getLanguageCode()));
|
||||
SaTokenAppUtil.login(user.getId(), SaLoginConfig
|
||||
.setExtra("from", "app")
|
||||
.setExtra("name", user.getName())
|
||||
|
|
|
|||
|
|
@ -53,21 +53,19 @@ public class FileController extends ControllerBase {
|
|||
,@Valid @NotNull @RequestParam("source") Byte source
|
||||
,@Valid @NotNull @RequestParam("sourceId") Integer sourceId) {
|
||||
try {
|
||||
String url=fileUploadService.upload(buildFilePath(file), file);
|
||||
fileUploadRecordService.save(buildFileUploadRecord(source,sourceId,file,url));
|
||||
String fileName=file.getOriginalFilename().substring(0,file.getOriginalFilename().lastIndexOf("."));
|
||||
String fileType=file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
|
||||
String url=fileUploadService.upload(buildFilePath(fileName,fileType), file);
|
||||
fileUploadRecordService.save(buildFileUploadRecord(source,sourceId,fileName,fileType,url));
|
||||
return ApiResult.success(url);
|
||||
}catch (Exception ex){
|
||||
throw new NflgException(STATE.BusinessError,"上传文件失败:"+ex.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
private String buildFilePath(MultipartFile file) {
|
||||
return StrUtil.format("cfs/{}/{}/{}{}", LocalDateTime.now().format(FORMATTER), AppUserUtil.getUserId(),
|
||||
RandomUtil.randomString(6),getExtensions(file));
|
||||
}
|
||||
|
||||
private String getExtensions(MultipartFile file){
|
||||
return file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
|
||||
private String buildFilePath(String fileName,String fileType) {
|
||||
return StrUtil.format("cfs/{}/{}/{}/{}{}", LocalDateTime.now().format(FORMATTER), AppUserUtil.getUserId()
|
||||
, RandomUtil.randomString(4), fileName,fileType);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -84,10 +82,12 @@ public class FileController extends ControllerBase {
|
|||
try {
|
||||
List<String> list = new ArrayList<>();
|
||||
List<FileUploadRecord> records = new ArrayList<>();
|
||||
for (MultipartFile f : files) {
|
||||
String url=fileUploadService.upload(buildFilePath(f), f);
|
||||
for (MultipartFile file : files) {
|
||||
String fileName=file.getOriginalFilename().substring(0,file.getOriginalFilename().lastIndexOf("."));
|
||||
String fileType=file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
|
||||
String url=fileUploadService.upload(buildFilePath(fileName,fileType), file);
|
||||
list.add(url);
|
||||
records.add(buildFileUploadRecord(source,sourceId,f,url));
|
||||
records.add(buildFileUploadRecord(source,sourceId,fileName,fileType,url));
|
||||
}
|
||||
fileUploadRecordService.saveBatch(records);
|
||||
return ApiResult.success(list);
|
||||
|
|
@ -104,17 +104,19 @@ public class FileController extends ControllerBase {
|
|||
@PostMapping("uploadSingleFile1")
|
||||
public ApiResult<String> uploadSingleFile1(@Valid @NotNull @RequestParam("file") MultipartFile file) {
|
||||
try {
|
||||
String url=fileUploadService.upload(buildFilePath(file), file);
|
||||
String fileName=file.getOriginalFilename().substring(0,file.getOriginalFilename().lastIndexOf("."));
|
||||
String fileType=file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
|
||||
String url=fileUploadService.upload(buildFilePath(fileName,fileType), file);
|
||||
return ApiResult.success(url);
|
||||
}catch (Exception ex){
|
||||
throw new NflgException(STATE.BusinessError,"上传文件失败:"+ex.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
private FileUploadRecord buildFileUploadRecord(Byte source,Integer sourceId,MultipartFile file,String url){
|
||||
private FileUploadRecord buildFileUploadRecord(Byte source,Integer sourceId,String fileName,String fileType,String url){
|
||||
return new FileUploadRecord()
|
||||
.setFileName(file.getOriginalFilename())
|
||||
.setFileType(file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")))
|
||||
.setFileName(fileName)
|
||||
.setFileType(fileType)
|
||||
.setFrom("app")
|
||||
.setCreateTime(LocalDateTime.now())
|
||||
.setSource(source)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
package com.nflg.mobilebroken.cfs.listener;
|
||||
|
||||
import com.nflg.mobilebroken.cfs.event.TicketAssignedEvent;
|
||||
import com.nflg.mobilebroken.cfs.event.TicketCreateEvent;
|
||||
import com.nflg.mobilebroken.cfs.event.TicketReplyEvent;
|
||||
import com.nflg.mobilebroken.cfs.event.TicketRevokeEvent;
|
||||
|
|
@ -17,12 +16,6 @@ public class TicketEventListener {
|
|||
event.send();
|
||||
}
|
||||
|
||||
@Async
|
||||
@EventListener
|
||||
public void handleTicketAssignedEvent(TicketAssignedEvent event) {
|
||||
event.send();
|
||||
}
|
||||
|
||||
@Async
|
||||
@EventListener
|
||||
public void handleTicketReplyEvent(TicketReplyEvent event) {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,9 @@
|
|||
package com.nflg.mobilebroken.cfs.publisher;
|
||||
|
||||
import com.nflg.mobilebroken.cfs.event.*;
|
||||
import com.nflg.mobilebroken.cfs.event.TicketCreateEvent;
|
||||
import com.nflg.mobilebroken.cfs.event.TicketReopenEvent;
|
||||
import com.nflg.mobilebroken.cfs.event.TicketReplyEvent;
|
||||
import com.nflg.mobilebroken.cfs.event.TicketRevokeEvent;
|
||||
import com.nflg.mobilebroken.repository.entity.Ticket;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.ApplicationEventPublisher;
|
||||
|
|
@ -23,12 +26,6 @@ public class TicketEventPublisher {
|
|||
eventPublisher.publishEvent(event);
|
||||
}
|
||||
|
||||
public void publishTicketAssignedEvent(Ticket ticket, String language, String zone) {
|
||||
TicketAssignedEvent event = new TicketAssignedEvent(this, ticket, language, zone);
|
||||
event.setApplicationContext(applicationContext);
|
||||
eventPublisher.publishEvent(event);
|
||||
}
|
||||
|
||||
public void publishTicketReplyEvent(Ticket ticket, String language, String zone) {
|
||||
TicketReplyEvent event = new TicketReplyEvent(this, ticket, language, zone);
|
||||
event.setApplicationContext(applicationContext);
|
||||
|
|
|
|||
|
|
@ -6,18 +6,12 @@ public class Constant {
|
|||
|
||||
public static final String DICTIONARY_TYPE_SERVICE_EVALUATION = "ServiceEvaluation";
|
||||
|
||||
// public static final String DICTIONARY_TYPE_SERVICE_EVALUATION_SELECT = "ServiceEvaluationSelect";
|
||||
|
||||
public static final String DICTIONARY_TYPE_EXPERIENCE_EVALUATION = "ExperienceEvaluation";
|
||||
|
||||
// public static final String DICTIONARY_TYPE_EXPERIENCE_EVALUATION_SELECT = "ExperienceEvaluationSelect";
|
||||
|
||||
public static final String DICTIONARY_TYPE_TITLE_CQM = "CQM";
|
||||
|
||||
public static final String DICTIONARY_ITEM_DEVICECOMPONENT = "modelComponents";
|
||||
|
||||
public static final String REDIS_KEY_USER_RESETPASSWORD_RANDOM_CODE_APP = "app:kaptcha:user:resetpassword:{}";
|
||||
|
||||
public static final String REDIS_KEY_USER_UPDATE_KAPTCHA_APP = "app:kaptcha:user:update:{}";
|
||||
|
||||
public static final String REDIS_KEY_USER_UPDATE_KAPTCHA_ADMIN = "admin:kaptcha:user:update:{}";
|
||||
|
|
@ -81,4 +75,16 @@ public class Constant {
|
|||
* 角色 账号审核
|
||||
*/
|
||||
public static final String ROLE_CODE_ACCOUNT_REVIEW = "AccountReview";
|
||||
|
||||
public static final String DICTIONARY_SYSTEMERROR ="SystemErrorMessage";
|
||||
|
||||
public static final String DICTIONARY_ITEM_INCORRECTUSERNAMEORPASSWORD="IncorrectUsernameOrPassword";
|
||||
|
||||
public static final String DICTIONARY_ITEM_ACCOUNT_DISABLED="AccountDisabled";
|
||||
|
||||
public static final String DICTIONARY_ITEM_ACCOUNT_NOT_ACTIVATED="AccountNotActivated";
|
||||
|
||||
public static final String DICTIONARY_ITEM_ACCOUNT_HAS_EXPIRED_PRIMARY="AccountHasExpiredPrimary";
|
||||
|
||||
public static final String DICTIONARY_ITEM_ACCOUNT_HAS_EXPIRED="AccountHasExpired";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,14 +2,18 @@ package com.nflg.mobilebroken.common.pojo.request;
|
|||
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class MigrateAppUserRequest {
|
||||
|
||||
// 新公司id
|
||||
@NotNull
|
||||
private Integer companyId;
|
||||
|
||||
// 用户id集合
|
||||
@NotEmpty
|
||||
private List<Integer> userIds;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,19 @@
|
|||
package com.nflg.mobilebroken.common.pojo.request;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class TicketHandleAddRequest {
|
||||
|
||||
//工单id
|
||||
@NotNull
|
||||
private Integer ticketId;
|
||||
|
||||
//用户id列表
|
||||
@NotEmpty
|
||||
private List<Integer> userIds;
|
||||
}
|
||||
|
|
@ -148,4 +148,8 @@ public class AdminTicketVO {
|
|||
public String getFollowedDesc() {
|
||||
return followed ? "已关注" : "未关注";
|
||||
}
|
||||
|
||||
//评价
|
||||
@IgnoreExport
|
||||
private TicketEvaluateVO evaluate;
|
||||
}
|
||||
|
|
@ -3,7 +3,6 @@ package com.nflg.mobilebroken.repository.mapper;
|
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
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.repository.entity.AdminMessage;
|
||||
|
|
@ -20,5 +19,5 @@ public interface AdminMessageMapper extends BaseMapper<AdminMessage> {
|
|||
|
||||
IPage<AdminMessageVO> search(Integer userId, AdminMessageSearchRequest request, IPage<AdminMessageVO> page);
|
||||
|
||||
PageData<AdminMessageVO> getNotReadMessage(Integer userId, Integer num, Page<?> page);
|
||||
IPage<AdminMessageVO> getNotReadMessage(Integer userId, Integer num, Page<?> page);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,11 +2,9 @@ package com.nflg.mobilebroken.repository.service;
|
|||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
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.repository.entity.AdminMessage;
|
||||
import com.nflg.mobilebroken.repository.entity.Ticket;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
|
@ -26,9 +24,7 @@ public interface IAdminMessageService extends IService<AdminMessage> {
|
|||
|
||||
void setNotRead(List<Integer> ids);
|
||||
|
||||
void addCQMNotify(Ticket ticket);
|
||||
|
||||
void add(AdminMessage message);
|
||||
|
||||
PageData<AdminMessageVO> getNotReadMessage(Integer userId, Integer num);
|
||||
IPage<AdminMessageVO> getNotReadMessage(Integer userId, Integer num);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -43,4 +43,6 @@ public interface ITicketService extends IService<Ticket> {
|
|||
Ticket revoked(Integer id);
|
||||
|
||||
Ticket reopen(Integer id);
|
||||
|
||||
Ticket addTicketHandle(TicketHandleAddRequest request);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,11 +4,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.pojo.PageData;
|
||||
import com.nflg.mobilebroken.common.pojo.request.AdminMessageSearchRequest;
|
||||
import com.nflg.mobilebroken.common.pojo.vo.AdminMessageVO;
|
||||
import com.nflg.mobilebroken.repository.entity.AdminMessage;
|
||||
import com.nflg.mobilebroken.repository.entity.Ticket;
|
||||
import com.nflg.mobilebroken.repository.mapper.AdminMessageMapper;
|
||||
import com.nflg.mobilebroken.repository.service.IAdminMessageService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
|
@ -48,30 +46,6 @@ public class AdminMessageServiceImpl extends ServiceImpl<AdminMessageMapper, Adm
|
|||
.update();
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public void addCQMNotify(Ticket ticket) {
|
||||
// List<Integer> cqms=deviceTypeService.getCqmsByDeviceType(ticket.getDeviceNo());
|
||||
// if (CollectionUtil.isEmpty(cqms)){
|
||||
// log.warn("该设备尚未设置CQM负责人:"+ticket.getDeviceNo());
|
||||
// }else {
|
||||
// List<AdminUser> cqmUsers = adminUserService.listByIds(cqms);
|
||||
// if (CollectionUtil.isNotEmpty(cqmUsers)) {
|
||||
// cqmUsers.forEach(c -> add(
|
||||
// new AdminMessage()
|
||||
// .setNo(ticket.getNo())
|
||||
// .setUserId(c.getId())
|
||||
// .setSourceId(ticket.getId())
|
||||
// .setSource(0)
|
||||
// .setType(MessageType.WorkOrderAssignment.getState())
|
||||
// .setSubType(MessageSubType.TicketToBeAssigned.getState())
|
||||
// .setIsRead(false)
|
||||
// .setCreateTime(LocalDateTime.now()))
|
||||
// );
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void add(AdminMessage message){
|
||||
remove(new LambdaQueryWrapper<AdminMessage>()
|
||||
|
|
@ -82,7 +56,7 @@ public class AdminMessageServiceImpl extends ServiceImpl<AdminMessageMapper, Adm
|
|||
}
|
||||
|
||||
@Override
|
||||
public PageData<AdminMessageVO> getNotReadMessage(Integer userId, Integer num) {
|
||||
public IPage<AdminMessageVO> getNotReadMessage(Integer userId, Integer num) {
|
||||
return baseMapper.getNotReadMessage(userId, num, new Page<>(1, num));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -55,6 +55,9 @@ public class AppUserApplyforServiceImpl extends ServiceImpl<AppUserApplyforMappe
|
|||
@Resource
|
||||
private ITBaseCustomerService customerService;
|
||||
|
||||
@Resource
|
||||
private ITBaseAreaService baseAreaService;
|
||||
|
||||
@Override
|
||||
public AppUserApplyfor add(AddUserRequest request) {
|
||||
VUtils.trueThrowBusinessError(appUserService.lambdaQuery().eq(AppUser::getEmail, request.getEmail()).exists())
|
||||
|
|
@ -127,23 +130,25 @@ public class AppUserApplyforServiceImpl extends ServiceImpl<AppUserApplyforMappe
|
|||
applyfor.setAreaId(appUser.getAreaId());
|
||||
applyfor.setTitleId(appUser.getTitleId());
|
||||
List<TBaseCustomer> customers =customerService.listByIds(Arrays.stream(appUser.getCompanyId().split(",")).map(Integer::parseInt).collect(Collectors.toList()));
|
||||
applyforInfo.setCompanyName(StrUtil.join(",",customers.stream().map(TBaseCustomer::getAgencyCompanyName).collect(Collectors.toList())));
|
||||
applyforInfo
|
||||
.setCompanyName(StrUtil.join(",",customers.stream().map(TBaseCustomer::getAgencyCompanyName).collect(Collectors.toList())))
|
||||
.setPhone(appUser.getPhone())
|
||||
.setUserName(appUser.getName())
|
||||
.setEmail(appUser.getEmail());
|
||||
}
|
||||
AppArea area = appAreaService.getById(applyfor.getAreaId());
|
||||
applyforInfo.setAreaName(area.getName());
|
||||
if (Objects.nonNull(applyfor.getAreaId())) {
|
||||
AppArea area = appAreaService.getById(applyfor.getAreaId());
|
||||
applyforInfo.setAreaName(area.getName());
|
||||
}
|
||||
if (Objects.nonNull(applyfor.getTitleId())) {
|
||||
TBasePosition position = positionService.getById(applyfor.getTitleId());
|
||||
applyforInfo.setTitleName(position.getPositionName());
|
||||
}
|
||||
vo.setApplyfor(applyforInfo);
|
||||
appUser = appUserService.getById(applyfor.getCreateBy());
|
||||
area = appAreaService.getById(appUser.getAreaId());
|
||||
TBaseArea area = baseAreaService.getById(appUser.getAreaId());
|
||||
vo.setUser(new AppUserVO()
|
||||
.setAreaName(area.getName())
|
||||
.setAreaName(area.getAreaName())
|
||||
.setSalesUserName(appUser.getSalesUserName())
|
||||
.setState(1)
|
||||
.setExpireTime(appUser.getExpireTime())
|
||||
|
|
|
|||
|
|
@ -213,6 +213,7 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
|
|||
updateById(user);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public void migrate(MigrateAppUserRequest request) {
|
||||
AppUser appUser = getPrimaryByCompanyId(request.getCompanyId().toString());
|
||||
|
|
@ -221,6 +222,7 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
|
|||
.set(AppUser::getCompanyId, request.getCompanyId())
|
||||
.set(AppUser::getExpireTime, appUser.getExpireTime())
|
||||
// .set(AppUser::getUpdateBy, AdminUserUtil.getUserId())
|
||||
.set(AppUser::getAreaId, null)
|
||||
.set(AppUser::getUpdateTime, LocalDateTime.now())
|
||||
.eq(AppUser::getIsPrimary, false)
|
||||
.in(AppUser::getId, request.getUserIds())
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@ public class TicketServiceImpl extends ServiceImpl<TicketMapper, Ticket> impleme
|
|||
public Ticket assignmentTicket(AssignmentTicketRequest request) {
|
||||
Ticket ticket = getById(request.getTicketId());
|
||||
VUtils.trueThrowBusinessError(Objects.isNull(ticket)).throwMessage("未找到工单");
|
||||
VUtils.trueThrowBusinessError(ticket.getState() != TicketState.PendingProcessing.getState().byteValue()).throwMessage("工单状态异常");
|
||||
VUtils.trueThrowBusinessError(!Objects.equals(ticket.getState(), TicketState.PendingProcessing.getState())).throwMessage("工单状态异常");
|
||||
// VUtils.trueThrowBusinessError(Objects.nonNull(ticket.getCqm()) && !Objects.equals(ticket.getCqm(), AdminUserUtil.getUserId()))
|
||||
// .throwMessage("当前工单已归属别的CQM负责人");
|
||||
ticket.setUrgency(TicketUrgency.findByValue(request.getUrgency()).getState());
|
||||
|
|
@ -256,4 +256,21 @@ public class TicketServiceImpl extends ServiceImpl<TicketMapper, Ticket> impleme
|
|||
updateById(ticket);
|
||||
return ticket;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Ticket addTicketHandle(TicketHandleAddRequest request) {
|
||||
Ticket ticket = getById(request.getTicketId());
|
||||
VUtils.trueThrowBusinessError(Objects.isNull(ticket)).throwMessage("未找到工单");
|
||||
VUtils.trueThrowBusinessError(!Objects.equals(ticket.getState(), TicketState.Processing.getState())).throwMessage("工单状态异常");
|
||||
VUtils.trueThrowBusinessError(!Objects.equals(ticket.getCqm(), AdminUserUtil.getUserId())
|
||||
&& Arrays.stream(ticket.getHandle().split(","))
|
||||
.map(Integer::parseInt)
|
||||
.noneMatch(uid -> Objects.equals(uid, AdminUserUtil.getUserId())))
|
||||
.throwMessage("你无权添加处理人");
|
||||
ticket.setHandle(ticket.getHandle().concat(",").concat(StrUtil.join(",", request.getUserIds())));
|
||||
ticket.setHandleName(ticket.getHandleName().concat(",").concat(StrUtil.join(",", adminUserService.listByIds(request.getUserIds()).stream().map(AdminUser::getUserName).collect(Collectors.toList()))));
|
||||
ticket.setUpdateTime(LocalDateTime.now());
|
||||
updateById(ticket);
|
||||
return ticket;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue