diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/MessageController.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/MessageController.java index 3fe49b50..b415a5b7 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/MessageController.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/MessageController.java @@ -1,13 +1,16 @@ package com.nflg.mobilebroken.admin.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.nflg.mobilebroken.common.constant.Constant; import com.nflg.mobilebroken.common.pojo.ApiResult; import com.nflg.mobilebroken.common.pojo.PageData; import com.nflg.mobilebroken.common.pojo.request.AdminMessageSearchRequest; import com.nflg.mobilebroken.common.pojo.vo.AdminMessageVO; +import com.nflg.mobilebroken.common.util.AdminUserUtil; +import com.nflg.mobilebroken.common.util.PageUtil; +import com.nflg.mobilebroken.repository.entity.AdminUser; import com.nflg.mobilebroken.repository.service.IAdminMessageService; +import com.nflg.mobilebroken.repository.service.IAdminUserService; import com.nflg.mobilebroken.starter.annotation.MethodInfoMark; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -17,6 +20,7 @@ import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import javax.validation.Valid; import java.util.List; +import java.util.stream.Collectors; /** * 消息相关接口 @@ -30,6 +34,9 @@ public class MessageController extends ControllerBase { @Resource private IAdminMessageService adminMessageService; + @Resource + private IAdminUserService adminUserService; + /** * 搜索消息 * @@ -39,11 +46,15 @@ public class MessageController extends ControllerBase { @PostMapping("searchMessages") @MethodInfoMark(value = "搜索消息", menuName = "消息管理") public ApiResult> searchMessages(@RequestBody AdminMessageSearchRequest request) { - IPage page = new Page<>(); - page.setCurrent(request.getPage()); - page.setSize(request.getPageSize()); - adminMessageService.search(Constant.USER_ID, request, page); - return ApiResult.success(page); + IPage pageData = adminMessageService.search(AdminUserUtil.getUserId(), request); + PageUtil.convert(pageData, d -> { + d.setTicketHandleBy(adminUserService.listByIds(StrUtil.split(",", d.getTicketHandleByIds())) + .stream() + .map(AdminUser::getUserName) + .collect(Collectors.toList())); + return d; + }); + return ApiResult.success(pageData); } /** @@ -57,4 +68,16 @@ public class MessageController extends ControllerBase { adminMessageService.setReaded(ids); return ApiResult.success(); } + + /** + * 设置消息未读 + * + * @param ids 消息id列表 + */ + @PostMapping("setNotRead") + @MethodInfoMark(value = "设置消息未读", menuName = "消息管理") + public ApiResult setNotRead(@Valid @RequestBody List ids) { + adminMessageService.setNotRead(ids); + return ApiResult.success(); + } } 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-admin/src/main/java/com/nflg/mobilebroken/admin/controller/SSEController.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/SSEController.java new file mode 100644 index 00000000..a08cf16b --- /dev/null +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/SSEController.java @@ -0,0 +1,37 @@ +package com.nflg.mobilebroken.admin.controller; + +import com.nflg.mobilebroken.common.constant.STATE; +import com.nflg.mobilebroken.common.exception.NflgException; +import com.nflg.mobilebroken.starter.service.impl.AdminSSEManagerService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; + +import javax.annotation.Resource; +import java.io.IOException; + +@RestController +@Slf4j +@RequestMapping("/sse") +public class SSEController extends ControllerBase { + + @Resource + private AdminSSEManagerService adminSSEManagerService; + + @GetMapping(value = "connect", produces = MediaType.TEXT_EVENT_STREAM_VALUE) + public SseEmitter connect(@RequestParam String userId) { + SseEmitter sse = adminSSEManagerService.connect(userId); + try { + sse.send("您已连接"); + } catch (IOException e) { + log.error("sse发送数据出错", e); + sse.complete(); + throw new NflgException(STATE.BusinessError, "sse发送数据出错"); + } + return sse; + } +} \ No newline at end of file diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/TicketController.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/TicketController.java index d681f4e1..75ede310 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/TicketController.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/TicketController.java @@ -1,13 +1,12 @@ package com.nflg.mobilebroken.admin.controller; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.nflg.mobilebroken.common.pojo.ApiResult; import com.nflg.mobilebroken.common.pojo.PageData; import com.nflg.mobilebroken.common.pojo.request.AdminTicketSearchRequest; import com.nflg.mobilebroken.common.pojo.request.AssignmentTicketRequest; import com.nflg.mobilebroken.common.pojo.vo.AdminTicketVO; import com.nflg.mobilebroken.common.util.EecExcelUtil; +import com.nflg.mobilebroken.common.util.PageUtil; import com.nflg.mobilebroken.repository.service.ITicketService; import com.nflg.mobilebroken.starter.annotation.MethodInfoMark; import lombok.extern.slf4j.Slf4j; @@ -43,11 +42,7 @@ public class TicketController extends ControllerBase { @PostMapping("searchTicket") @MethodInfoMark(value = "搜索工单", menuName = "工单管理") public ApiResult> searchTicket(@RequestBody AdminTicketSearchRequest request) { - IPage page = new Page<>(); - page.setCurrent(request.getPageNum()); - page.setSize(request.getPageSize()); - ticketService.search(request, page); - return ApiResult.success(page); + return ApiResult.success(PageUtil.convert(ticketService.searchPage(request), d -> d)); } /** @@ -58,7 +53,7 @@ public class TicketController extends ControllerBase { @PostMapping("exportSearchTicket") @MethodInfoMark(value = "导出搜索工单", menuName = "工单管理") public void exportSearchTicket(HttpServletResponse response, @RequestBody AdminTicketSearchRequest request) throws IOException { - List datas = ticketService.search(request); + List datas = ticketService.exportSearch(request); EecExcelUtil.export("工单", "sheet1", datas, response); } diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/impl/EmailINotifyPushService.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/impl/EmailINotifyPushService.java index 57206218..d2c4715b 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/impl/EmailINotifyPushService.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/impl/EmailINotifyPushService.java @@ -1,15 +1,18 @@ package com.nflg.mobilebroken.admin.service.impl; import cn.hutool.core.util.StrUtil; +import com.nflg.mobilebroken.common.constant.Constant; import com.nflg.mobilebroken.common.constant.STATE; import com.nflg.mobilebroken.common.exception.NflgException; import com.nflg.mobilebroken.common.pojo.dto.UserDTO; import com.nflg.mobilebroken.starter.service.EmailService; import com.nflg.mobilebroken.starter.service.INotifyPushService; import lombok.extern.slf4j.Slf4j; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.Objects; @Service @Slf4j @@ -18,6 +21,9 @@ public class EmailINotifyPushService implements INotifyPushService { @Resource private EmailService emailService; + @Resource + private RedisTemplate redisTemplate; + @Override public void push(UserDTO user, String subject, String content) { try { @@ -30,6 +36,10 @@ public class EmailINotifyPushService implements INotifyPushService { @Override public boolean check(UserDTO user) { - return StrUtil.isNotBlank(user.getEmail()); + Object value = redisTemplate.opsForHash().get("message:config:" + user.getId(), Constant.REDIS_KEY_MESSAGECONFIG_EMAIL); + if (Objects.isNull(value) || (boolean) value) { + return StrUtil.isNotBlank(user.getEmail()); + } + return false; } } diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/impl/SSEINotifyPushService.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/impl/SSEINotifyPushService.java index 574994a3..c8bdfd09 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/impl/SSEINotifyPushService.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/impl/SSEINotifyPushService.java @@ -1,14 +1,17 @@ package com.nflg.mobilebroken.admin.service.impl; +import com.nflg.mobilebroken.common.constant.Constant; import com.nflg.mobilebroken.common.pojo.dto.UserDTO; import com.nflg.mobilebroken.starter.service.INotifyPushService; import com.nflg.mobilebroken.starter.service.SSEManagerService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.io.IOException; +import java.util.Objects; @Service @Slf4j @@ -18,6 +21,9 @@ public class SSEINotifyPushService implements INotifyPushService { @Qualifier("APPSSEManagerService") private SSEManagerService sseManagerService; + @Resource + private RedisTemplate redisTemplate; + @Override public void push(UserDTO user, String subject, String content) { try { @@ -29,6 +35,7 @@ public class SSEINotifyPushService implements INotifyPushService { @Override public boolean check(UserDTO user) { - return true; + Object value = redisTemplate.opsForHash().get("message:config:" + user.getId(), Constant.REDIS_KEY_MESSAGECONFIG_APP); + return Objects.isNull(value) || (boolean) value; } } diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/impl/WXINotifyPushService.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/impl/WXINotifyPushService.java index 34dbb8d2..81de50b5 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/impl/WXINotifyPushService.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/impl/WXINotifyPushService.java @@ -1,14 +1,18 @@ package com.nflg.mobilebroken.admin.service.impl; +import cn.hutool.core.util.StrUtil; +import com.nflg.mobilebroken.common.constant.Constant; import com.nflg.mobilebroken.common.pojo.dto.UserDTO; import com.nflg.mobilebroken.starter.service.INotifyPushService; import lombok.extern.slf4j.Slf4j; import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.config.WxMpConfigStorage; import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.Objects; @Service @Slf4j @@ -23,6 +27,9 @@ public class WXINotifyPushService implements INotifyPushService { @Resource private WxMpConfigStorage wxMpConfigStorage; + @Resource + private RedisTemplate redisTemplate; + @Override public void push(UserDTO user,String subject, String content) { //TODO @@ -42,6 +49,10 @@ public class WXINotifyPushService implements INotifyPushService { @Override public boolean check(UserDTO user) { + Object value = redisTemplate.opsForHash().get("message:config:" + user.getId(), Constant.REDIS_KEY_MESSAGECONFIG_WX); + if (Objects.isNull(value) || (boolean) value) { + return StrUtil.isNotBlank(user.getWxOpenId()); + } return false; } } diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/AreaController.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/AreaController.java index b35873fb..2a3fd66c 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/AreaController.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/AreaController.java @@ -2,7 +2,6 @@ package com.nflg.mobilebroken.cfs.controller; import cn.hutool.core.convert.Convert; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.nflg.mobilebroken.common.constant.Constant; import com.nflg.mobilebroken.common.pojo.ApiResult; import com.nflg.mobilebroken.common.pojo.PageData; import com.nflg.mobilebroken.common.pojo.request.AreaSaveRequest; @@ -10,6 +9,7 @@ import com.nflg.mobilebroken.common.pojo.request.AreaSearchRequest; import com.nflg.mobilebroken.common.pojo.request.EnableRequest; import com.nflg.mobilebroken.common.pojo.vo.AreaSimpleVO; import com.nflg.mobilebroken.common.pojo.vo.AreaVO; +import com.nflg.mobilebroken.common.util.AppUserUtil; import com.nflg.mobilebroken.repository.entity.AppArea; import com.nflg.mobilebroken.repository.service.IAppAreaService; import org.springframework.web.bind.annotation.*; @@ -84,7 +84,7 @@ public class AreaController extends ControllerBase { AppArea area=new AppArea() .setId(request.getId()) .setEnable(request.getEnable()) - .setUpdateBy(Constant.USER_NAME) + .setUpdateBy(AppUserUtil.getUserName()) .setUpdateTime(LocalDateTime.now()); return ApiResult.success(appAreaService.updateById(area)); } diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/MessageController.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/MessageController.java index b2113d9c..16b49614 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/MessageController.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/MessageController.java @@ -9,6 +9,7 @@ import com.nflg.mobilebroken.common.pojo.request.AppMessageSearchRequest; import com.nflg.mobilebroken.common.pojo.request.MessageConfigRequest; import com.nflg.mobilebroken.common.pojo.vo.AppMessageVO; import com.nflg.mobilebroken.common.pojo.vo.MessageConfigVO; +import com.nflg.mobilebroken.common.util.AppUserUtil; import com.nflg.mobilebroken.repository.service.IAppMessageService; import org.springframework.data.redis.core.HashOperations; import org.springframework.data.redis.core.RedisTemplate; @@ -45,7 +46,7 @@ public class MessageController extends ControllerBase { IPage page = new Page<>(); page.setCurrent(request.getPage()); page.setSize(request.getPageSize()); - appMessageService.search(Constant.USER_ID, request.getTitle(), page); + appMessageService.search(AppUserUtil.getUserId(), request.getTitle(), page); return ApiResult.success(page); } @@ -60,6 +61,17 @@ public class MessageController extends ControllerBase { return ApiResult.success(); } + /** + * 设置消息未读 + * + * @param ids 消息id列表 + */ + @PostMapping("setNotRead") + public ApiResult setNotRead(@Valid @RequestBody List ids) { + appMessageService.setNotRead(ids); + return ApiResult.success(); + } + /** * 获取未读消息 * @param num 获取未读消息的数量 @@ -70,7 +82,7 @@ public class MessageController extends ControllerBase { IPage page = new Page<>(); page.setCurrent(1); page.setSize(num); - appMessageService.getNotReadMessage(Constant.USER_ID, num, page); + appMessageService.getNotReadMessage(AppUserUtil.getUserId(), num, page); return ApiResult.success(page); } @@ -81,11 +93,11 @@ public class MessageController extends ControllerBase { @GetMapping("getConfig") public ApiResult getConfig(){ HashOperations hashOps = redisTemplate.opsForHash(); - Map maps=hashOps.entries("message:config:" + Constant.USER_ID); + Map maps = hashOps.entries("message:config:" + AppUserUtil.getUserId()); return ApiResult.success(new MessageConfigVO() - .setAppNotifyEnabled((Boolean) maps.getOrDefault("appNotifyEnabled",true)) - .setEmailNotifyEnabled((Boolean) maps.getOrDefault("emailNotifyEnabled",true)) - .setWxNotifyEnabled((Boolean) maps.getOrDefault("wxNotifyEnabled",true)) + .setAppNotifyEnabled((Boolean) maps.getOrDefault(Constant.REDIS_KEY_MESSAGECONFIG_APP, true)) + .setEmailNotifyEnabled((Boolean) maps.getOrDefault(Constant.REDIS_KEY_MESSAGECONFIG_EMAIL, true)) + .setWxNotifyEnabled((Boolean) maps.getOrDefault(Constant.REDIS_KEY_MESSAGECONFIG_WX, true)) ); } @@ -96,11 +108,11 @@ public class MessageController extends ControllerBase { @PostMapping("setConfig") public ApiResult setConfig(@Valid @RequestBody MessageConfigRequest request) { Map maps = new HashMap<>(); - maps.put("wxNotifyEnabled", request.isWxNotifyEnabled()); - maps.put("emailNotifyEnabled", request.isEmailNotifyEnabled()); - maps.put("appNotifyEnabled", request.isAppNotifyEnabled()); + maps.put(Constant.REDIS_KEY_MESSAGECONFIG_WX, request.isWxNotifyEnabled()); + maps.put(Constant.REDIS_KEY_MESSAGECONFIG_EMAIL, request.isEmailNotifyEnabled()); + maps.put(Constant.REDIS_KEY_MESSAGECONFIG_APP, request.isAppNotifyEnabled()); HashOperations operations = redisTemplate.opsForHash(); - operations.putAll("message:config:" + Constant.USER_ID, maps); + operations.putAll("message:config:" + AppUserUtil.getUserId(), maps); return ApiResult.success(); } } 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..a55ac970 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.MultilingualUtil; 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 = MultilingualUtil.getLanguage(); + return ApiResult.success(dictionaryItemTranslateService.getTicketEvaluateSelect(language)); + } + /** * 添加工单评价 * diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/runner/InitZoneMap.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/runner/InitZoneMap.java new file mode 100644 index 00000000..8ed80521 --- /dev/null +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/runner/InitZoneMap.java @@ -0,0 +1,33 @@ +package com.nflg.mobilebroken.cfs.runner; + +import cn.hutool.core.collection.CollectionUtil; +import com.nflg.mobilebroken.common.util.MultilingualUtil; +import com.nflg.mobilebroken.repository.entity.Language; +import com.nflg.mobilebroken.repository.service.ILanguageService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.CommandLineRunner; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +@Component +@Slf4j +public class InitZoneMap implements CommandLineRunner { + + @Resource + private ILanguageService languageService; + + @Override + public void run(String... args) { + log.info("初始化语言区域映射"); + List languages = languageService.getLanguages(); + if (CollectionUtil.isNotEmpty(languages)) { + Map map = languages.stream() + .collect(Collectors.toMap(Language::getCode, Language::getZone)); + MultilingualUtil.setZoneMap(map); + } + } +} 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 41643a19..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,13 +2,26 @@ package com.nflg.mobilebroken.common.constant; public class Constant { - public static final String USER_NAME="admin"; - public static final Integer USER_ID=1; + public static final String DICTIONARY_TYPE_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"; - public static final String DICTIONARY_TYPE_LANGUAGE="Language"; + public static final String DICTIONARY_TYPE_TITLE_CQM = "CQM"; public static final String REDIS_KEY_USER_UPDATE_KAPTCHA = "kaptcha:userupdate:{}"; + + public static final String DICTIONARY_TYPE_SYSTEMERROR_CQMNOTCONFIG = "CQMNotConfig"; + + public static final String REDIS_KEY_MESSAGECONFIG_WX = "wxNotifyEnabled"; + + public static final String REDIS_KEY_MESSAGECONFIG_EMAIL = "emailNotifyEnabled"; + + public static final String REDIS_KEY_MESSAGECONFIG_APP = "appNotifyEnabled"; } 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 ad184dbb..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 @@ -1,14 +1,16 @@ package com.nflg.mobilebroken.common.pojo.request; import lombok.Data; +import lombok.EqualsAndHashCode; import javax.validation.constraints.NotNull; import java.time.LocalDateTime; +@EqualsAndHashCode(callSuper = false) @Data -public class TicketSearchRequest { +public class TicketSearchRequest extends PageRequest { - //搜索类型,1: 我的工单,2: 我的关注,3: 区域工单 + //搜索类型,1: 我的工单,2: 我的关注,3: 区域工单,4: 全部工单 @NotNull(message = "搜索类型不能为空") private Integer type; @@ -32,10 +34,4 @@ public class TicketSearchRequest { //结束日期 private LocalDateTime endTime; - - //页码 - private Integer pageNum=1; - - //每页数量 - private Integer pageSize=10; } diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AdminMessageVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AdminMessageVO.java index db56d854..bef38940 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AdminMessageVO.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AdminMessageVO.java @@ -1,14 +1,28 @@ package com.nflg.mobilebroken.common.pojo.vo; +import com.fasterxml.jackson.annotation.JsonIgnore; import com.nflg.mobilebroken.common.constant.MessageType; import lombok.Data; import lombok.experimental.Accessors; +import java.time.LocalDateTime; +import java.util.List; + @Data @Accessors(chain = true) public class AdminMessageVO { + //任务id + private Integer ticketId; + + //任务编号 + private String ticketNo; + + //任务事项 + private String content; + //任务类别 + @JsonIgnore private Integer type; //任务类别名称 @@ -17,4 +31,22 @@ public class AdminMessageVO { public String getTypeName() { return MessageType.findByValue(type).getDescription(); } + + //消息时间 + private LocalDateTime createTime; + + //提交人 + private String createUserName; + + //任务提交时间 + private LocalDateTime ticketCreateTime; + + @JsonIgnore + private String ticketHandleByIds; + + //待处理人 + private List ticketHandleBy; + + //是否已读 + private boolean isRead; } diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AdminTicketVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AdminTicketVO.java index 4b1f7224..8d4a0d47 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AdminTicketVO.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AdminTicketVO.java @@ -10,6 +10,7 @@ import org.ttzero.excel.annotation.IgnoreExport; import java.time.LocalDateTime; import java.util.List; +import java.util.Objects; @Data public class AdminTicketVO { @@ -34,77 +35,101 @@ public class AdminTicketVO { //解决状态 @ExcelColumn("解决状态") private String stateDesc; + //紧急程度 @IgnoreExport @JsonIgnore private Integer urgency; + //紧急程度 @ExcelColumn("紧急程度") private String urgencyDesc; + //问题部位 @ExcelColumn("问题部位") private String component; + //问题类型 @ExcelColumn("问题类型") private String question; + //解决方案 @ExcelColumn("解决方案") private String solution; + //区域名称 @ExcelColumn("区域") private String areaName; + //代理商名称 @ExcelColumn("代理商") private String companyName; + //客户 @ExcelColumn("客户") private String createUserName; + //设备编号 @ExcelColumn("设备编号") private String deviceNo; + //设备类型 @ExcelColumn("设备类型") private String deviceType; + //设备机型 @ExcelColumn("设备机型") private String equipmentModel; + //发货日期 @ExcelColumn("发货日期") private String shipmentDate; + //使用时长 @ExcelColumn("使用时长(小时)") private Integer useTime; + //质保状态 @ExcelColumn("质保状态") private String warrantyStatusDesc; + //提交时间 @ExcelColumn("提交时间") private LocalDateTime createTime; + //提交人 @ExcelColumn("提交人") private String createBy; + //所属CQM @ExcelColumn("所属CQM") private String cqm; + //处理人 @JsonIgnore @IgnoreExport private String handle; + //处理人 @ExcelColumn("处理人") private List handleBy; + //当前处理人 @ExcelColumn("当前处理人") private List currentProcessor; + //处理完成时间 @ExcelColumn("处理完成时间") private LocalDateTime solveTime; + //关闭时间 @ExcelColumn("关闭时间") private LocalDateTime closeTime; + //是否已关注 @IgnoreExport private boolean followed; + @ExcelColumn("关注") private String followedDesc; @@ -113,6 +138,9 @@ public class AdminTicketVO { } public String getUrgencyDesc() { + if (Objects.isNull(urgency)) { + return ""; + } return TicketUrgency.findByValue(urgency).getDescription(); } 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-common/src/main/java/com/nflg/mobilebroken/common/util/MultilingualUtil.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/util/MultilingualUtil.java new file mode 100644 index 00000000..ce274c91 --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/util/MultilingualUtil.java @@ -0,0 +1,40 @@ +package com.nflg.mobilebroken.common.util; + +import cn.hutool.core.map.MapUtil; + +import java.util.Map; + +public class MultilingualUtil { + + private static final ThreadLocal THREAD_LOCAL = new ThreadLocal<>(); + + private static final Map ZONE_MAP = MapUtil.newHashMap(); + + public static String getLanguage() { + String language = THREAD_LOCAL.get(); + if (language == null) { + language = "cn"; + } + return language; + } + + public static void setLanguage(String language) { + THREAD_LOCAL.set(language); + } + + public static void clear() { + THREAD_LOCAL.remove(); + } + + public static void setZoneMap(Map map) { + ZONE_MAP.putAll(map); + } + + public static String getZone(String language) { + return ZONE_MAP.get(language); + } + + public static String getZone() { + return ZONE_MAP.get(getLanguage()); + } +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/Language.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/Language.java index e8756f22..bfa5bad6 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/Language.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/Language.java @@ -2,11 +2,12 @@ package com.nflg.mobilebroken.repository.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; -import java.io.Serializable; import lombok.Getter; import lombok.Setter; import lombok.experimental.Accessors; +import java.io.Serializable; + /** *

* 字典 @@ -45,6 +46,11 @@ public class Language implements Serializable { */ private String ico; + /** + * 时区 + */ + private String zone; + /** * 排序,从大到小 */ diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/Ticket.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/Ticket.java index 6f6535d2..d599de80 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/Ticket.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/Ticket.java @@ -2,12 +2,13 @@ package com.nflg.mobilebroken.repository.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; -import java.io.Serializable; -import java.time.LocalDateTime; import lombok.Getter; import lombok.Setter; import lombok.experimental.Accessors; +import java.io.Serializable; +import java.time.LocalDateTime; + /** *

* 工单 @@ -76,6 +77,11 @@ public class Ticket implements Serializable { */ private LocalDateTime createTime; + /** + * 所属CQM + */ + private Integer cqm; + /** * 紧急程度,0:非紧急;1:普通;2:紧急 */ diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/AdminMessageMapper.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/AdminMessageMapper.java index b8006ffb..6acc3601 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/AdminMessageMapper.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/AdminMessageMapper.java @@ -16,5 +16,5 @@ import com.nflg.mobilebroken.repository.entity.AdminMessage; */ public interface AdminMessageMapper extends BaseMapper { - void search(Integer userId, AdminMessageSearchRequest request, IPage page); + IPage search(Integer userId, AdminMessageSearchRequest request, IPage page); } 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 768b9661..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; @@ -20,4 +21,8 @@ public interface DictionaryItemTranslateMapper extends BaseMapper getListByDictionaryItemId(Integer id); List 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/mapper/TicketMapper.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/TicketMapper.java index 5efd605f..063c55b4 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/TicketMapper.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/TicketMapper.java @@ -26,7 +26,7 @@ public interface TicketMapper extends BaseMapper { IPage searchArea(IPage page, TicketSearchRequest request, List companyIds); - void searchFromAdmin(AdminTicketSearchRequest request, IPage page); + IPage searchFromAdmin(AdminTicketSearchRequest request, IPage page); void completeTicket(List ids, Integer userId); @@ -34,7 +34,7 @@ public interface TicketMapper extends BaseMapper { List searchAllFromAdmin(AdminTicketSearchRequest request); - void searchFromAdminAndFollow(AdminTicketSearchRequest request, Integer userId, IPage page); + IPage searchFromAdminAndFollow(AdminTicketSearchRequest request, Integer userId, IPage page); List searchAllFromAdminAndFollow(AdminTicketSearchRequest request, Integer userId); } 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 c284d8b5..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 @@ -6,7 +6,6 @@ import com.nflg.mobilebroken.common.pojo.request.AdminMessageSearchRequest; import com.nflg.mobilebroken.common.pojo.vo.AdminMessageVO; import com.nflg.mobilebroken.repository.entity.AdminMessage; -import javax.validation.Valid; import java.util.List; /** @@ -19,7 +18,11 @@ import java.util.List; */ public interface IAdminMessageService extends IService { - void search(Integer userId, AdminMessageSearchRequest request, IPage page); + IPage search(Integer userId, AdminMessageSearchRequest request); - void setReaded(@Valid List ids); + 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 4f299cf6..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; + /** *

* 后台-用户 服务类 @@ -28,4 +30,6 @@ public interface IAdminUserService extends IService { void enable(EnableAccountRequest request); PageData search(SearchAccountRequest request); + + List getCQM(); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IAppMessageService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IAppMessageService.java index bf81caef..ddb0a9bc 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IAppMessageService.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IAppMessageService.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.nflg.mobilebroken.common.pojo.vo.AppMessageVO; import com.nflg.mobilebroken.repository.entity.AppMessage; -import javax.validation.Valid; import java.util.List; /** @@ -22,5 +21,7 @@ public interface IAppMessageService extends IService { void search(Integer userId, String title, IPage page); - void setReaded(@Valid List ids); + void setReaded(List ids); + + void setNotRead(List ids); } 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 685234a4..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; @@ -25,4 +26,8 @@ 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 48d1558b..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,11 +23,11 @@ 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); - void search(AdminTicketSearchRequest request, IPage page); + IPage searchPage(AdminTicketSearchRequest request); void assignmentTicket(AssignmentTicketRequest request); @@ -35,7 +35,7 @@ public interface ITicketService extends IService { void closeTicket(List ids); - List search(AdminTicketSearchRequest request); + List exportSearch(AdminTicketSearchRequest request); List getEmergencys(int days); 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 b5c0ea53..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,15 +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; /** *

@@ -22,9 +31,12 @@ import java.util.List; @Service public class AdminMessageServiceImpl extends ServiceImpl implements IAdminMessageService { + @Resource + private IAdminUserService adminUserService; + @Override - public void search(Integer userId, AdminMessageSearchRequest request, IPage page) { - baseMapper.search(userId, request, page); + public IPage search(Integer userId, AdminMessageSearchRequest request) { + return baseMapper.search(userId, request, new Page<>(request.getPage(), request.getPageSize())); } @Override @@ -34,4 +46,30 @@ public class AdminMessageServiceImpl extends ServiceImpl ids) { + lambdaUpdate() + .set(AdminMessage::getIsRead, false) + .in(AdminMessage::getId, ids) + .update(); + } + + @Transactional + @Override + public void addCQMNotify(Integer ticketId) { + List 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 3170da54..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 @@ -5,6 +5,7 @@ import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.nflg.mobilebroken.common.constant.Constant; import com.nflg.mobilebroken.common.pojo.PageData; import com.nflg.mobilebroken.common.pojo.request.AccountAddRequest; import com.nflg.mobilebroken.common.pojo.request.AccountUpdateRequest; @@ -23,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; @@ -51,6 +53,9 @@ 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()) + .list(); + } + private String getDepartmentName(Integer departmentId) { TBaseDepartment department = departmentService.lambdaQuery() .eq(TBaseDepartment::getId, departmentId) diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AppAreaServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AppAreaServiceImpl.java index 3680b578..e64a647b 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AppAreaServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AppAreaServiceImpl.java @@ -7,9 +7,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.nflg.mobilebroken.common.constant.Constant; import com.nflg.mobilebroken.common.pojo.request.AreaSearchRequest; import com.nflg.mobilebroken.common.pojo.vo.AreaVO; +import com.nflg.mobilebroken.common.util.AppUserUtil; import com.nflg.mobilebroken.repository.entity.AppArea; import com.nflg.mobilebroken.repository.mapper.AppAreaMapper; import com.nflg.mobilebroken.repository.service.IAppAreaService; @@ -36,11 +36,11 @@ public class AppAreaServiceImpl extends ServiceImpl impl @Override public boolean saveOrUpdate(AppArea entity) { if (Objects.isNull(entity.getId()) || entity.getId()<=0){ - entity.setCreateBy(Constant.USER_NAME); + entity.setCreateBy(AppUserUtil.getUserName()); entity.setCreateTime(LocalDateTime.now()); return save(entity); }else { - entity.setUpdateBy(Constant.USER_NAME); + entity.setUpdateBy(AppUserUtil.getUserName()); entity.setUpdateTime(LocalDateTime.now()); return updateById(entity); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AppMessageServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AppMessageServiceImpl.java index b4cd196d..72ac98ed 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AppMessageServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AppMessageServiceImpl.java @@ -38,4 +38,12 @@ public class AppMessageServiceImpl extends ServiceImpl ids) { + lambdaUpdate() + .set(AppMessage::getIsRead, false) + .in(AppMessage::getId, ids) + .update(); + } } 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 1f226684..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; @@ -86,4 +88,19 @@ public class DictionaryItemTranslateServiceImpl extends ServiceImpl getTitles(String language) { return baseMapper.getTitles(language); } + + @Override + public String getErrorMsg(String language, String errorCode) { + return baseMapper.getErrorMsg(language, errorCode); + } + + @Override + public TicketEvaluateVO getTicketEvaluateSelect(String language) { + TicketEvaluateVO vo = new TicketEvaluateVO(); + vo.setServiceEvaluation(baseMapper.getListByDictionaryCode(Constant.DICTIONARY_TYPE_SERVICE_EVALUATION, language)); + vo.setServiceEvaluationSelect(baseMapper.getListByDictionaryCode(Constant.DICTIONARY_TYPE_SERVICE_EVALUATION_SELECT, language)); + vo.setExperienceEvaluation(baseMapper.getListByDictionaryCode(Constant.DICTIONARY_TYPE_EXPERIENCE_EVALUATION, language)); + vo.setExperienceEvaluationSelect(baseMapper.getListByDictionaryCode(Constant.DICTIONARY_TYPE_EXPERIENCE_EVALUATION_SELECT, language)); + return vo; + } } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketServiceImpl.java index 573b8428..16629e8c 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketServiceImpl.java @@ -1,5 +1,6 @@ package com.nflg.mobilebroken.repository.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -18,12 +19,16 @@ import com.nflg.mobilebroken.common.util.TicketUtl; import com.nflg.mobilebroken.common.util.VUtils; import com.nflg.mobilebroken.repository.entity.Ticket; import com.nflg.mobilebroken.repository.mapper.TicketMapper; +import com.nflg.mobilebroken.repository.service.IAdminUserService; import com.nflg.mobilebroken.repository.service.ITicketService; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.time.LocalDateTime; +import java.util.Collections; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; /** *

@@ -36,14 +41,17 @@ import java.util.Objects; @Service public class TicketServiceImpl extends ServiceImpl implements ITicketService { + @Resource + private IAdminUserService adminUserService; + @Override - public void add(TicketAddRequest request,Integer userId) { + public Integer add(TicketAddRequest request, Integer userId) { Ticket lastTicket=lambdaQuery() .ge(Ticket::getCreateTime, LocalDateTime.now().toLocalDate()) .orderByDesc(Ticket::getId) .last("LIMIT 1") .one(); - String no=lastTicket==null? TicketUtl.getNextNo(null):TicketUtl.getNextNo(lastTicket.getNo()); + String no = lastTicket == null ? TicketUtl.getNextNo(null) : TicketUtl.getNextNo(lastTicket.getNo()); Ticket ticket = new Ticket() .setNo(no) .setDeviceNo(request.getDeviceNo()) @@ -51,32 +59,34 @@ public class TicketServiceImpl extends ServiceImpl impleme .setUseTime(request.getUseTime()) .setTitle(request.getTitle()) .setDescription(request.getDescription()) - .setAttachments(StrUtil.join(",",request.getAttachments())) - .setState(TicketState.PendingProcessing.getState().byteValue()) + .setAttachments(StrUtil.join(",", request.getAttachments())) + .setState(TicketState.PendingProcessing.getState()) .setUserId(userId) .setCreateTime(LocalDateTime.now()); save(ticket); + return ticket.getId(); } @Override public IPage search(TicketSearchRequest request, UserDTO user) { if (request.getType()==1){ - return baseMapper.searchMy(new Page<>(request.getPageNum(), request.getPageSize()), request, user.getId()); + return baseMapper.searchMy(new Page<>(request.getPage(), request.getPageSize()), request, user.getId()); }else if (request.getType()==2){ - return baseMapper.searchFollow(new Page<>(request.getPageNum(), request.getPageSize()), request, user.getId()); + return baseMapper.searchFollow(new Page<>(request.getPage(), request.getPageSize()), request, user.getId()); }else if (request.getType()==3) { - return baseMapper.searchArea(new Page<>(request.getPageNum(), request.getPageSize()), request, user.getCompanyIds()); + return baseMapper.searchArea(new Page<>(request.getPage(), request.getPageSize()), request, user.getCompanyIds()); } return null; } @Override - public void search(AdminTicketSearchRequest request, IPage page) { + public IPage searchPage(AdminTicketSearchRequest request) { if (request.getType() == 2) { - baseMapper.searchFromAdminAndFollow(request, AdminUserUtil.getUserId(), page); - } else { - baseMapper.searchFromAdmin(request, page); + return baseMapper.searchFromAdminAndFollow(request, AdminUserUtil.getUserId(), new Page<>(request.getPage(), request.getPageSize())); + } else if (request.getType() == 4) { + return baseMapper.searchFromAdmin(request, new Page<>(request.getPage(), request.getPageSize())); } + return new Page<>(request.getPage(), request.getPageSize(), 0); } @Override @@ -84,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); } @@ -99,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 search(AdminTicketSearchRequest request) { + 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/AdminMessageMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/AdminMessageMapper.xml index ab67d820..01c5283a 100644 --- a/nflg-mobilebroken-repository/src/main/resources/mapper/AdminMessageMapper.xml +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/AdminMessageMapper.xml @@ -2,10 +2,10 @@ - + SELECT t.id AS 'ticketId',t.`no` AS 'ticketNo',m.content,m.type,m.create_time AS 'createTime', + u.`name` AS 'createUserName',t.create_time AS 'ticketCreateTime',t.handle AS 'ticketHandleByIds', + m.is_read AS 'isRead' FROM admin_message m INNER JOIN ticket t ON m.ticket_id=t.id INNER JOIN admin_user u ON t.user_id=u.id diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/DictionaryItemTranslateMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/DictionaryItemTranslateMapper.xml index 98d451e8..8304bdd6 100644 --- a/nflg-mobilebroken-repository/src/main/resources/mapper/DictionaryItemTranslateMapper.xml +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/DictionaryItemTranslateMapper.xml @@ -19,4 +19,19 @@ LEFT JOIN dictionary_item_translate dit ON di.id=dit.dictionary_item_id WHERE d.`code`=#{Constant.DICTIONARY_TYPE_TITLE} AND dit.language_code=#{language} + + + + diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/TicketMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/TicketMapper.xml index 29c4f8eb..0157f10a 100644 --- a/nflg-mobilebroken-repository/src/main/resources/mapper/TicketMapper.xml +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/TicketMapper.xml @@ -95,12 +95,16 @@ - + SELECT t.id,t.`no`,t.title,t.state,t.urgency,t.component,t.question,t.solution,a.`name` AS 'areaName' + ,c.agency_company_name AS 'companyName',u.`name` AS 'createUserName',t.device_no AS 'deviceNo',t.use_time AS 'useTime' + ,t.create_time AS 'createTime',t.handle,t.solve_time AS 'solveTime',di.name AS 'warrantyStatusDesc' FROM ticket t LEFT JOIN app_user u ON t.user_id=u.id LEFT JOIN t_base_customer c ON u.company_id=c.id LEFT JOIN app_area a ON u.area_id=a.id + LEFT JOIN device d ON t.device_no=d.device_no AND d.data_valid_state=1 + LEFT JOIN dictionary_item di ON d.warranty_state=di.id @@ -123,31 +127,43 @@ - + SELECT t.id,t.`no`,t.title,t.state,t.urgency,t.component,t.question,t.solution,a.`name` AS 'areaName' + ,c.agency_company_name AS 'companyName',u.`name` AS 'createUserName',t.device_no AS 'deviceNo',t.use_time AS 'useTime' + ,t.create_time AS 'createTime',t.handle,t.solve_time AS 'solveTime',di.name AS 'warrantyStatusDesc' FROM ticket t LEFT JOIN app_user u ON t.user_id=u.id LEFT JOIN t_base_customer c ON u.company_id=c.id LEFT JOIN app_area a ON u.area_id=a.id INNER JOIN ticket_follow tf ON t.id=tf.ticket_id AND tf.user_id=#{userId} + LEFT JOIN device d ON t.device_no=d.device_no AND d.data_valid_state=1 + LEFT JOIN dictionary_item di ON d.warranty_state=di.id 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 diff --git a/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/advice/LoggingAspect.java b/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/advice/LoggingAspect.java index ee702a17..4172a4d9 100644 --- a/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/advice/LoggingAspect.java +++ b/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/advice/LoggingAspect.java @@ -73,6 +73,7 @@ public class LoggingAspect { StackTraceElement[] stackTraceElements = ex.getStackTrace(); logRecord.setRequestResult(false); logDetail.setRequestErrMsg(stackTraceElements.length > 0 ? ex.getMessage() + ":" + stackTraceElements[0].toString() : ""); +// logger.error("未捕获的异常",ex); return ApiResult.error(STATE.Error,"操作出现错误"+ex.getMessage()); } finally { diff --git a/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/handler/UTCLocalDateTimeTypeHandler.java b/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/handler/UTCLocalDateTimeTypeHandler.java index 4f4655fa..10c4fe95 100644 --- a/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/handler/UTCLocalDateTimeTypeHandler.java +++ b/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/handler/UTCLocalDateTimeTypeHandler.java @@ -1,5 +1,6 @@ package com.nflg.mobilebroken.starter.handler; +import com.nflg.mobilebroken.common.util.MultilingualUtil; import org.apache.ibatis.type.BaseTypeHandler; import org.apache.ibatis.type.JdbcType; import org.apache.ibatis.type.MappedTypes; @@ -31,7 +32,7 @@ public class UTCLocalDateTimeTypeHandler extends BaseTypeHandler public LocalDateTime getNullableResult(ResultSet rs, String columnName) throws SQLException { LocalDateTime utcTime = rs.getObject(columnName, LocalDateTime.class); // 将 UTC 时间转换为本地时间 - return utcTime != null ? utcTime.atZone(ZoneId.of("UTC")) + return utcTime != null ? utcTime.atZone(ZoneId.of(MultilingualUtil.getZone())) .withZoneSameInstant(ZoneId.systemDefault()) .toLocalDateTime() : null; } @@ -40,7 +41,7 @@ public class UTCLocalDateTimeTypeHandler extends BaseTypeHandler public LocalDateTime getNullableResult(ResultSet rs, int columnIndex) throws SQLException { LocalDateTime utcTime = rs.getObject(columnIndex, LocalDateTime.class); // 将 UTC 时间转换为本地时间 - return utcTime != null ? utcTime.atZone(ZoneId.of("UTC")) + return utcTime != null ? utcTime.atZone(ZoneId.of(MultilingualUtil.getZone())) .withZoneSameInstant(ZoneId.systemDefault()) .toLocalDateTime() : null; } @@ -49,7 +50,7 @@ public class UTCLocalDateTimeTypeHandler extends BaseTypeHandler public LocalDateTime getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { LocalDateTime utcTime = cs.getObject(columnIndex, LocalDateTime.class); // 将 UTC 时间转换为本地时间 - return utcTime != null ? utcTime.atZone(ZoneId.of("UTC")) + return utcTime != null ? utcTime.atZone(ZoneId.of(MultilingualUtil.getZone())) .withZoneSameInstant(ZoneId.systemDefault()) .toLocalDateTime() : null; }