From 02240180878ce26b4c5322d453c02236c253c1cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Wed, 19 Feb 2025 20:07:23 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=B8=80=E4=BA=9B=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/controller/FileController.java | 16 ++++-- .../admin/controller/MessageController.java | 55 +++++++++++++++++-- .../cfs/controller/FileController.java | 16 ++++-- .../cfs/controller/MessageController.java | 4 +- .../repository/mapper/AdminMessageMapper.java | 4 ++ .../service/IAdminMessageService.java | 3 + .../service/impl/AdminMessageServiceImpl.java | 6 ++ .../resources/mapper/AdminMessageMapper.xml | 9 +++ 8 files changed, 95 insertions(+), 18 deletions(-) diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/FileController.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/FileController.java index 557ca6e4..32557e2d 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/FileController.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/FileController.java @@ -55,7 +55,7 @@ public class FileController extends ControllerBase { ,@Valid @NotNull @RequestParam("source") Byte source ,@Valid @NotNull @RequestParam("sourceId") Integer sourceId) { try { - String url=fileUploadService.upload(buildFilePath(file.getOriginalFilename()), file); + String url=fileUploadService.upload(buildFilePath(file), file); fileUploadRecordService.save(buildFileUploadRecord(source,sourceId,file,url)); return ApiResult.success(url); } catch (Exception ex) { @@ -63,9 +63,13 @@ public class FileController extends ControllerBase { } } - private String buildFilePath(String fileName) { - return StrUtil.format("admin/{}/{}/{}/{}", LocalDateTime.now().format(FORMATTER), AdminUserUtil.getUserId(), - RandomUtil.randomString(4), fileName); + private String buildFilePath(MultipartFile file) { + return StrUtil.format("admin/{}/{}/{}{}", LocalDateTime.now().format(FORMATTER), AdminUserUtil.getUserId(), + RandomUtil.randomString(6),getExtensions(file)); + } + + private String getExtensions(MultipartFile file){ + return file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")); } /** @@ -84,7 +88,7 @@ public class FileController extends ControllerBase { List list = new ArrayList<>(); List records = new ArrayList<>(); for (MultipartFile f : files) { - String url=fileUploadService.upload(buildFilePath(f.getOriginalFilename()), f); + String url=fileUploadService.upload(buildFilePath(f), f); list.add(url); records.add(buildFileUploadRecord(source,sourceId,f,url)); } @@ -103,7 +107,7 @@ public class FileController extends ControllerBase { @PostMapping("uploadSingleFile1") public ApiResult uploadSingleFile1(@Valid @NotNull @RequestParam("file") MultipartFile file) { try { - String url=fileUploadService.upload(buildFilePath(file.getOriginalFilename()), file); + String url=fileUploadService.upload(buildFilePath(file), file); return ApiResult.success(url); }catch (Exception ex){ throw new NflgException(STATE.BusinessError,"上传文件失败:"+ex.getMessage()); 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 70e6af9c..832f3582 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 @@ -2,10 +2,13 @@ package com.nflg.mobilebroken.admin.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.nflg.mobilebroken.admin.annotation.ApiMark; +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.request.MessageConfigRequest; import com.nflg.mobilebroken.common.pojo.vo.AdminMessageVO; +import com.nflg.mobilebroken.common.pojo.vo.MessageConfigVO; import com.nflg.mobilebroken.common.util.AdminUserUtil; import com.nflg.mobilebroken.common.util.PageUtil; import com.nflg.mobilebroken.repository.entity.AppUser; @@ -13,15 +16,16 @@ import com.nflg.mobilebroken.repository.entity.AppUserApplyfor; import com.nflg.mobilebroken.repository.entity.Ticket; import com.nflg.mobilebroken.repository.service.*; import com.nflg.mobilebroken.starter.annotation.MethodInfoMark; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.data.redis.core.HashOperations; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.validation.Valid; import java.security.Principal; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.Objects; /** @@ -48,6 +52,9 @@ public class MessageController extends ControllerBase { @Resource private IAppUserApplyforService appUserApplyforService; + @Resource + private RedisTemplate redisTemplate; + /** * 搜索消息 * @param request 请求参数 @@ -96,4 +103,44 @@ public class MessageController extends ControllerBase { adminMessageService.setNotRead(ids); return ApiResult.success(); } + + /** + * 获取未读消息 + * @param num 获取未读消息的数量 + * @return 未读消息列表 + */ + @GetMapping("getNotReadMessages") + public ApiResult> getNotReadMessages(@RequestParam(defaultValue = "10") Integer num) { + return ApiResult.success(adminMessageService.getNotReadMessage(AdminUserUtil.getUserId(), num)); + } + + /** + * 获取消息配置 + * @return 消息配置 + */ + @GetMapping("getConfig") + public ApiResult getConfig(){ + HashOperations hashOps = redisTemplate.opsForHash(); + Map maps = hashOps.entries("message:config:admin:" + AdminUserUtil.getUserId()); + return ApiResult.success(new MessageConfigVO() + .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)) + ); + } + + /** + * 设置消息配置 + * @param request 消息配置请求 + */ + @PostMapping("setConfig") + public ApiResult setConfig(@Valid @RequestBody MessageConfigRequest request) { + Map maps = new HashMap<>(); + 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:admin:" + AdminUserUtil.getUserId(), maps); + return ApiResult.success(); + } } diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/FileController.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/FileController.java index 0dfaad29..16978bfc 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/FileController.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/FileController.java @@ -53,7 +53,7 @@ public class FileController extends ControllerBase { ,@Valid @NotNull @RequestParam("source") Byte source ,@Valid @NotNull @RequestParam("sourceId") Integer sourceId) { try { - String url=fileUploadService.upload(buildFilePath(file.getOriginalFilename()), file); + String url=fileUploadService.upload(buildFilePath(file), file); fileUploadRecordService.save(buildFileUploadRecord(source,sourceId,file,url)); return ApiResult.success(url); }catch (Exception ex){ @@ -61,9 +61,13 @@ public class FileController extends ControllerBase { } } - private String buildFilePath(String fileName){ - return StrUtil.format("cfs/{}/{}/{}/{}", LocalDateTime.now().format(FORMATTER), AppUserUtil.getUserId(), - RandomUtil.randomString(4),fileName); + private String buildFilePath(MultipartFile file) { + return StrUtil.format("cfs/{}/{}/{}{}", LocalDateTime.now().format(FORMATTER), AppUserUtil.getUserId(), + RandomUtil.randomString(6),getExtensions(file)); + } + + private String getExtensions(MultipartFile file){ + return file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")); } /** @@ -81,7 +85,7 @@ public class FileController extends ControllerBase { List list = new ArrayList<>(); List records = new ArrayList<>(); for (MultipartFile f : files) { - String url=fileUploadService.upload(buildFilePath(f.getOriginalFilename()), f); + String url=fileUploadService.upload(buildFilePath(f), f); list.add(url); records.add(buildFileUploadRecord(source,sourceId,f,url)); } @@ -100,7 +104,7 @@ public class FileController extends ControllerBase { @PostMapping("uploadSingleFile1") public ApiResult uploadSingleFile1(@Valid @NotNull @RequestParam("file") MultipartFile file) { try { - String url=fileUploadService.upload(buildFilePath(file.getOriginalFilename()), file); + String url=fileUploadService.upload(buildFilePath(file), file); return ApiResult.success(url); }catch (Exception ex){ throw new NflgException(STATE.BusinessError,"上传文件失败:"+ex.getMessage()); 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 5ed3c79e..4357ec38 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 @@ -82,7 +82,7 @@ public class MessageController extends ControllerBase { @GetMapping("getConfig") public ApiResult getConfig(){ HashOperations hashOps = redisTemplate.opsForHash(); - Map maps = hashOps.entries("message:config:" + AppUserUtil.getUserId()); + Map maps = hashOps.entries("message:config:app:" + AppUserUtil.getUserId()); return ApiResult.success(new MessageConfigVO() .setAppNotifyEnabled((Boolean) maps.getOrDefault(Constant.REDIS_KEY_MESSAGECONFIG_APP, true)) .setEmailNotifyEnabled((Boolean) maps.getOrDefault(Constant.REDIS_KEY_MESSAGECONFIG_EMAIL, true)) @@ -101,7 +101,7 @@ public class MessageController extends ControllerBase { 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:" + AppUserUtil.getUserId(), maps); + operations.putAll("message:config:app:" + AppUserUtil.getUserId(), maps); return ApiResult.success(); } } 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 6acc3601..536d9a88 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 @@ -2,6 +2,8 @@ package com.nflg.mobilebroken.repository.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.nflg.mobilebroken.common.pojo.PageData; import com.nflg.mobilebroken.common.pojo.request.AdminMessageSearchRequest; import com.nflg.mobilebroken.common.pojo.vo.AdminMessageVO; import com.nflg.mobilebroken.repository.entity.AdminMessage; @@ -17,4 +19,6 @@ import com.nflg.mobilebroken.repository.entity.AdminMessage; public interface AdminMessageMapper extends BaseMapper { IPage search(Integer userId, AdminMessageSearchRequest request, IPage page); + + PageData getNotReadMessage(Integer userId, Integer num, Page page); } 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 8138eae2..a99aabc6 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 @@ -2,6 +2,7 @@ package com.nflg.mobilebroken.repository.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; +import com.nflg.mobilebroken.common.pojo.PageData; import com.nflg.mobilebroken.common.pojo.request.AdminMessageSearchRequest; import com.nflg.mobilebroken.common.pojo.vo.AdminMessageVO; import com.nflg.mobilebroken.repository.entity.AdminMessage; @@ -28,4 +29,6 @@ public interface IAdminMessageService extends IService { void addCQMNotify(Ticket ticket); void add(AdminMessage message); + + PageData getNotReadMessage(Integer userId, Integer num); } 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 b359acf9..01df801f 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 @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.nflg.mobilebroken.common.pojo.PageData; import com.nflg.mobilebroken.common.pojo.request.AdminMessageSearchRequest; import com.nflg.mobilebroken.common.pojo.vo.AdminMessageVO; import com.nflg.mobilebroken.repository.entity.AdminMessage; @@ -79,4 +80,9 @@ public class AdminMessageServiceImpl extends ServiceImpl getNotReadMessage(Integer userId, Integer num) { + return baseMapper.getNotReadMessage(userId, num, new Page<>(1, num)); + } } diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/AdminMessageMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/AdminMessageMapper.xml index c5e342e3..415cd157 100644 --- a/nflg-mobilebroken-repository/src/main/resources/mapper/AdminMessageMapper.xml +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/AdminMessageMapper.xml @@ -19,4 +19,13 @@ ORDER BY m.id DESC + +