From 5f9543d0972f7f869075a498760631f5a94e5e9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Wed, 5 Feb 2025 17:24:07 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E6=B7=BB=E5=8A=A0=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/MultilingualController.java | 2 +- .../cfs/controller/SystemController.java | 2 +- .../cfs/controller/TiketController.java | 19 +++++++++- .../common/constant/Constant.java | 8 +++++ .../request/SaveDictionaryItemRequest.java | 5 +++ .../pojo/request/TicketSearchRequest.java | 2 +- .../common/pojo/vo/LanguageVO.java | 2 +- .../common/pojo/vo/TicketEvaluateItemVO.java | 13 +++++++ .../common/pojo/vo/TicketEvaluateVO.java | 21 +++++++++++ .../mapper/DictionaryItemTranslateMapper.java | 3 ++ .../service/IAdminMessageService.java | 2 ++ .../repository/service/IAdminUserService.java | 4 ++- .../IDictionaryItemTranslateService.java | 3 ++ .../repository/service/ITicketService.java | 2 +- .../service/impl/AdminMessageServiceImpl.java | 29 +++++++++++++++ .../service/impl/AdminUserServiceImpl.java | 5 +-- .../impl/DictionaryItemServiceImpl.java | 22 +++++++++--- .../DictionaryItemTranslateServiceImpl.java | 12 +++++++ .../service/impl/TicketServiceImpl.java | 36 +++++++++---------- .../mapper/DictionaryItemTranslateMapper.xml | 8 +++++ .../advice/GlobalRestControllerAdvice.java | 16 +++++++++ 21 files changed, 185 insertions(+), 31 deletions(-) create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/TicketEvaluateItemVO.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/TicketEvaluateVO.java diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/MultilingualController.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/MultilingualController.java index 519df8c2..b761e78b 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/MultilingualController.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/MultilingualController.java @@ -57,7 +57,7 @@ public class MultilingualController extends ControllerBase { * * @return 语言列表 */ - @PostMapping("/getLanguage") + @GetMapping("/getLanguage") @MethodInfoMark(value = "获取语言列表", menuName = "系统管理") public ApiResult> getLanguage() { List languages = languageService.getAllLanguages(); diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/SystemController.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/SystemController.java index c9adc89d..89ead5f3 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/SystemController.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/SystemController.java @@ -40,7 +40,7 @@ public class SystemController extends ControllerBase { .map(l->new LanguageVO() .setCode(l.getCode()) .setName(l.getName()) - .setVaLue(l.getValue()) + .setValue(l.getValue()) .setIco(l.getIco()) .setSort(l.getSort()) .setEnable(l.getEnable())) diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TiketController.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TiketController.java index 26ebcf41..cd2afdb1 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TiketController.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TiketController.java @@ -7,6 +7,7 @@ import com.nflg.mobilebroken.common.pojo.PageData; import com.nflg.mobilebroken.common.pojo.request.*; import com.nflg.mobilebroken.common.pojo.vo.*; import com.nflg.mobilebroken.common.util.AppUserUtil; +import com.nflg.mobilebroken.common.util.LanguageUtil; import com.nflg.mobilebroken.repository.entity.AppUser; import com.nflg.mobilebroken.repository.entity.Ticket; import com.nflg.mobilebroken.repository.entity.TicketChat; @@ -51,6 +52,12 @@ public class TiketController extends ControllerBase { @Resource private ITicketEvaluateService ticketEvaluateService; + @Resource + private IAdminMessageService adminMessageService; + + @Resource + private IDictionaryItemTranslateService dictionaryItemTranslateService; + /** * 搜索设备 * @@ -90,7 +97,8 @@ public class TiketController extends ControllerBase { **/ @PostMapping("/addTiket") public ApiResult addTiket(@Valid @RequestBody TicketAddRequest request) { - ticketService.add(request, AppUserUtil.getUserId()); + Integer ticketId = ticketService.add(request, AppUserUtil.getUserId()); + adminMessageService.addCQMNotify(ticketId); return ApiResult.success(); } @@ -175,6 +183,15 @@ public class TiketController extends ControllerBase { return ApiResult.success(); } + /** + * 获取工单评价数据 + **/ + @GetMapping("getTicketEvaluateSelect") + public ApiResult getTicketEvaluateSelect() { + String language = LanguageUtil.getLanguage(); + return ApiResult.success(dictionaryItemTranslateService.getTicketEvaluateSelect(language)); + } + /** * 添加工单评价 * diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/constant/Constant.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/constant/Constant.java index 52deb74a..0b4b56f9 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/constant/Constant.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/constant/Constant.java @@ -2,6 +2,14 @@ package com.nflg.mobilebroken.common.constant; 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="UserTitle"; diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/SaveDictionaryItemRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/SaveDictionaryItemRequest.java index 6760c3e3..bfcf336c 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/SaveDictionaryItemRequest.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/SaveDictionaryItemRequest.java @@ -3,6 +3,7 @@ package com.nflg.mobilebroken.common.pojo.request; import lombok.Data; import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; import java.util.List; @Data @@ -11,6 +12,10 @@ public class SaveDictionaryItemRequest { //字典值id private Integer id; + //字典id + @NotNull + private Integer dictionaryId; + //字典值名称 @NotBlank(message = "字典名称不能为空") private String name; diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/TicketSearchRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/TicketSearchRequest.java index 473dfac2..b03f1018 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/TicketSearchRequest.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/TicketSearchRequest.java @@ -10,7 +10,7 @@ import java.time.LocalDateTime; @Data public class TicketSearchRequest extends PageRequest { - //搜索类型,1: 我的工单,2: 我的关注,3: 区域工单 + //搜索类型,1: 我的工单,2: 我的关注,3: 区域工单,4: 全部工单 @NotNull(message = "搜索类型不能为空") private Integer type; diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/LanguageVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/LanguageVO.java index d35c475e..7311af38 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/LanguageVO.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/LanguageVO.java @@ -14,7 +14,7 @@ public class LanguageVO { private String name; //语言名称 - private String vaLue; + private String value; //图标url private String ico; diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/TicketEvaluateItemVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/TicketEvaluateItemVO.java new file mode 100644 index 00000000..c6dd4f37 --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/TicketEvaluateItemVO.java @@ -0,0 +1,13 @@ +package com.nflg.mobilebroken.common.pojo.vo; + +import lombok.Data; + +@Data +public class TicketEvaluateItemVO { + + //编码 + private String code; + + //描述 + private String desc; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/TicketEvaluateVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/TicketEvaluateVO.java new file mode 100644 index 00000000..7437b4bb --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/TicketEvaluateVO.java @@ -0,0 +1,21 @@ +package com.nflg.mobilebroken.common.pojo.vo; + +import lombok.Data; + +import java.util.List; + +@Data +public class TicketEvaluateVO { + + // 售后服务评价 + private List serviceEvaluation; + + // 售后服务评价选择项 + private List serviceEvaluationSelect; + + // 产品体验评价 + private List experienceEvaluation; + + // 产品体验评价选择项 + private List experienceEvaluationSelect; +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/DictionaryItemTranslateMapper.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/DictionaryItemTranslateMapper.java index 042ac509..5b85f9ff 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/DictionaryItemTranslateMapper.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/DictionaryItemTranslateMapper.java @@ -2,6 +2,7 @@ package com.nflg.mobilebroken.repository.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.nflg.mobilebroken.common.pojo.vo.DictionaryItemTranslateVO; +import com.nflg.mobilebroken.common.pojo.vo.TicketEvaluateItemVO; import com.nflg.mobilebroken.common.pojo.vo.TitleVO; import com.nflg.mobilebroken.repository.entity.DictionaryItemTranslate; @@ -22,4 +23,6 @@ public interface DictionaryItemTranslateMapper extends BaseMapper getTitles(String language); String getErrorMsg(String language, String errorCode); + + List getListByDictionaryCode(String dictionaryCode, String language); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IAdminMessageService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IAdminMessageService.java index 64e7f88f..438a60be 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IAdminMessageService.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IAdminMessageService.java @@ -23,4 +23,6 @@ public interface IAdminMessageService extends IService { void setReaded(List ids); void setNotRead(List ids); + + void addCQMNotify(Integer ticketId); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IAdminUserService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IAdminUserService.java index 37f1cff3..f06790a4 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IAdminUserService.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IAdminUserService.java @@ -9,6 +9,8 @@ import com.nflg.mobilebroken.common.pojo.request.SearchAccountRequest; import com.nflg.mobilebroken.common.pojo.vo.AdminUserVO; import com.nflg.mobilebroken.repository.entity.AdminUser; +import java.util.List; + /** *

* 后台-用户 服务类 @@ -29,5 +31,5 @@ public interface IAdminUserService extends IService { PageData search(SearchAccountRequest request); - AdminUser getCQM(); + List getCQM(); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IDictionaryItemTranslateService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IDictionaryItemTranslateService.java index 9fc93cef..450dc298 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IDictionaryItemTranslateService.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IDictionaryItemTranslateService.java @@ -3,6 +3,7 @@ package com.nflg.mobilebroken.repository.service; import com.baomidou.mybatisplus.extension.service.IService; import com.nflg.mobilebroken.common.pojo.dto.DictionaryItemTranslateDTO; import com.nflg.mobilebroken.common.pojo.vo.DictionaryItemTranslateVO; +import com.nflg.mobilebroken.common.pojo.vo.TicketEvaluateVO; import com.nflg.mobilebroken.common.pojo.vo.TitleVO; import com.nflg.mobilebroken.repository.entity.DictionaryItemTranslate; @@ -27,4 +28,6 @@ public interface IDictionaryItemTranslateService extends IService getTitles(String language); String getErrorMsg(String language, String errorCode); + + TicketEvaluateVO getTicketEvaluateSelect(String language); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITicketService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITicketService.java index d4a43ecf..3f99453b 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITicketService.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITicketService.java @@ -23,7 +23,7 @@ import java.util.List; */ public interface ITicketService extends IService { - void add(TicketAddRequest request,Integer userId); + Integer add(TicketAddRequest request, Integer userId); IPage search(TicketSearchRequest request, UserDTO user); diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminMessageServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminMessageServiceImpl.java index fc23f36a..6aee3762 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminMessageServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminMessageServiceImpl.java @@ -1,16 +1,24 @@ package com.nflg.mobilebroken.repository.service.impl; +import cn.hutool.core.collection.CollectionUtil; 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.MessageType; 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.AdminUser; import com.nflg.mobilebroken.repository.mapper.AdminMessageMapper; import com.nflg.mobilebroken.repository.service.IAdminMessageService; +import com.nflg.mobilebroken.repository.service.IAdminUserService; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; +import java.time.LocalDateTime; import java.util.List; +import java.util.stream.Collectors; /** *

@@ -23,6 +31,9 @@ import java.util.List; @Service public class AdminMessageServiceImpl extends ServiceImpl implements IAdminMessageService { + @Resource + private IAdminUserService adminUserService; + @Override public IPage search(Integer userId, AdminMessageSearchRequest request) { return baseMapper.search(userId, request, new Page<>(request.getPage(), request.getPageSize())); @@ -43,4 +54,22 @@ public class AdminMessageServiceImpl extends ServiceImpl cqmUsers = adminUserService.getCQM(); + if (CollectionUtil.isEmpty(cqmUsers)) { + log.error("未设置CQM负责人"); + } else { + List messages = cqmUsers.stream().map(c -> new AdminMessage() + .setUserId(c.getId()) + .setTicketId(ticketId) + .setIsRead(false) + .setType(MessageType.WorkOrderAssignment.getState().byteValue()) + .setContent("工单待分配") + .setCreateTime(LocalDateTime.now())).collect(Collectors.toList()); + saveBatch(messages); + } + } } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminUserServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminUserServiceImpl.java index f93bab46..7a5c597c 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminUserServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminUserServiceImpl.java @@ -24,6 +24,7 @@ import javax.annotation.Resource; import java.time.LocalDateTime; import java.util.Collection; import java.util.Collections; +import java.util.List; import java.util.Objects; import java.util.stream.Collectors; @@ -132,14 +133,14 @@ public class AdminUserServiceImpl extends ServiceImpl getCQM() { DictionaryItem cqm = dictionaryItemService .lambdaQuery() .eq(DictionaryItem::getCode, Constant.DICTIONARY_TYPE_TITLE_CQM) .one(); return lambdaQuery() .eq(AdminUser::getTitleId, cqm.getId()) - .one(); + .list(); } private String getDepartmentName(Integer departmentId) { diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/DictionaryItemServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/DictionaryItemServiceImpl.java index a5ad296b..913bf8c8 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/DictionaryItemServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/DictionaryItemServiceImpl.java @@ -10,11 +10,14 @@ import com.nflg.mobilebroken.common.pojo.request.DictionaryItemSearchRequest; import com.nflg.mobilebroken.common.pojo.request.SaveDictionaryItemRequest; import com.nflg.mobilebroken.common.pojo.request.TranslateMap; import com.nflg.mobilebroken.common.util.AdminUserUtil; +import com.nflg.mobilebroken.common.util.VUtils; +import com.nflg.mobilebroken.repository.entity.Dictionary; import com.nflg.mobilebroken.repository.entity.DictionaryItem; import com.nflg.mobilebroken.repository.entity.DictionaryItemTranslate; import com.nflg.mobilebroken.repository.mapper.DictionaryItemMapper; import com.nflg.mobilebroken.repository.service.IDictionaryItemService; import com.nflg.mobilebroken.repository.service.IDictionaryItemTranslateService; +import com.nflg.mobilebroken.repository.service.IDictionaryService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -39,6 +42,9 @@ public class DictionaryItemServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); @@ -64,25 +70,33 @@ public class DictionaryItemServiceImpl extends ServiceImpl() diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/DictionaryItemTranslateServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/DictionaryItemTranslateServiceImpl.java index 4319064c..17c17c53 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/DictionaryItemTranslateServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/DictionaryItemTranslateServiceImpl.java @@ -3,8 +3,10 @@ package com.nflg.mobilebroken.repository.service.impl; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.nflg.mobilebroken.common.constant.Constant; import com.nflg.mobilebroken.common.pojo.dto.DictionaryItemTranslateDTO; import com.nflg.mobilebroken.common.pojo.vo.DictionaryItemTranslateVO; +import com.nflg.mobilebroken.common.pojo.vo.TicketEvaluateVO; import com.nflg.mobilebroken.common.pojo.vo.TitleVO; import com.nflg.mobilebroken.common.util.VUtils; import com.nflg.mobilebroken.repository.entity.Dictionary; @@ -91,4 +93,14 @@ public class DictionaryItemTranslateServiceImpl extends ServiceImpl @@ -45,14 +44,8 @@ public class TicketServiceImpl extends ServiceImpl impleme @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)); + public Integer add(TicketAddRequest request, Integer userId) { Ticket lastTicket=lambdaQuery() .ge(Ticket::getCreateTime, LocalDateTime.now().toLocalDate()) .orderByDesc(Ticket::getId) @@ -69,9 +62,9 @@ public class TicketServiceImpl extends ServiceImpl impleme .setAttachments(StrUtil.join(",", request.getAttachments())) .setState(TicketState.PendingProcessing.getState()) .setUserId(userId) - .setCreateTime(LocalDateTime.now()) - .setCqm(cqmUser.getId()); + .setCreateTime(LocalDateTime.now()); save(ticket); + return ticket.getId(); } @Override @@ -90,9 +83,10 @@ public class TicketServiceImpl extends ServiceImpl impleme public IPage searchPage(AdminTicketSearchRequest request) { if (request.getType() == 2) { return baseMapper.searchFromAdminAndFollow(request, AdminUserUtil.getUserId(), new Page<>(request.getPage(), request.getPageSize())); - } else { + } else if (request.getType() == 4) { return baseMapper.searchFromAdmin(request, new Page<>(request.getPage(), request.getPageSize())); } + return new Page<>(request.getPage(), request.getPageSize(), 0); } @Override @@ -100,10 +94,13 @@ public class TicketServiceImpl extends ServiceImpl impleme Ticket ticket = getById(request.getTickerId()); VUtils.trueThrowBusinessError(Objects.isNull(ticket)).throwMessage("未找到工单"); VUtils.trueThrowBusinessError(ticket.getState() != TicketState.PendingProcessing.getState().byteValue()).throwMessage("工单状态异常"); + VUtils.trueThrowBusinessError(Objects.nonNull(ticket.getCqm()) && !Objects.equals(ticket.getCqm(), AdminUserUtil.getUserId())) + .throwMessage("当前工单已归属别的CQM负责人"); ticket.setUrgency(TicketUrgency.findByValue(request.getUrgency()).getState().byteValue()); ticket.setQuestion(request.getQuestion()); ticket.setRemark(request.getRemark()); ticket.setHandle(StrUtil.join(",", request.getUserIds())); + ticket.setCqm(AdminUserUtil.getUserId()); ticket.setUpdateTime(LocalDateTime.now()); updateById(ticket); } @@ -115,18 +112,21 @@ public class TicketServiceImpl extends ServiceImpl impleme @Override public void closeTicket(List ids) { - //TokenUtil.getUserId() - //TODO 判断用户是否有权限关闭工单 - baseMapper.closeTicket(ids); + List tickets = listByIds(ids); + List tids = tickets.stream().map(Ticket::getId).filter(cqm -> Objects.equals(AdminUserUtil.getUserId(), cqm)).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(tids)) { + baseMapper.closeTicket(ids); + } } @Override public List exportSearch(AdminTicketSearchRequest request) { if (request.getType() == 2) { return baseMapper.searchAllFromAdminAndFollow(request, AdminUserUtil.getUserId()); - } else { + } else if (request.getType() == 4) { return baseMapper.searchAllFromAdmin(request); } + return Collections.emptyList(); } @Override diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/DictionaryItemTranslateMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/DictionaryItemTranslateMapper.xml index 417069c2..8304bdd6 100644 --- a/nflg-mobilebroken-repository/src/main/resources/mapper/DictionaryItemTranslateMapper.xml +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/DictionaryItemTranslateMapper.xml @@ -26,4 +26,12 @@ LEFT JOIN dictionary_item_translate dit ON dit.dictionary_item_id=di.id AND dit.language_code=#{language} WHERE di.`code`=#{errorCode} + + diff --git a/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/advice/GlobalRestControllerAdvice.java b/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/advice/GlobalRestControllerAdvice.java index 625c18f3..6e23c4cf 100644 --- a/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/advice/GlobalRestControllerAdvice.java +++ b/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/advice/GlobalRestControllerAdvice.java @@ -5,11 +5,15 @@ import com.nflg.mobilebroken.common.constant.STATE; import com.nflg.mobilebroken.common.exception.NflgException; import com.nflg.mobilebroken.common.pojo.ApiResult; import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.FieldError; +import org.springframework.web.bind.MethodArgumentNotValidException; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice; import javax.validation.ConstraintViolation; import javax.validation.ConstraintViolationException; +import java.util.ArrayList; +import java.util.List; import java.util.stream.Collectors; @RestControllerAdvice @@ -33,4 +37,16 @@ public class GlobalRestControllerAdvice { log.error("数据校验失败: ", ex); return ApiResult.error(STATE.ParamErr, "数据校验失败: " + StrUtil.join(",", ex.getConstraintViolations().stream().map(ConstraintViolation::getMessage).collect(Collectors.toList()))); } + + @ExceptionHandler(MethodArgumentNotValidException.class) + public ApiResult handleMethodArgumentNotValidException(MethodArgumentNotValidException ex) { + log.error("数据校验失败: ", ex); + List errors = new ArrayList<>(); + ex.getBindingResult().getAllErrors().forEach(error -> { + String fieldName = ((FieldError) error).getField(); + String errorMessage = error.getDefaultMessage(); + errors.add(fieldName + ":" + errorMessage); + }); + return ApiResult.error(STATE.ParamErr, "数据校验失败: " + StrUtil.join(",", errors)); + } } \ No newline at end of file