From 0d644bb957fce08222a618795c049c636ec062b0 Mon Sep 17 00:00:00 2001 From: TinyAnts Date: Wed, 24 Aug 2022 17:48:57 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=80=9A=E7=9F=A5=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/setting/NoticeController.java | 54 +++++- .../service/notice/INoticeSettingService.java | 26 +++ .../notice/impl/NoticeSettingServiceImpl.java | 154 ++++++++++++++++++ .../vo/notice/NoticeSettingDetailVo.java | 21 +++ .../admin/vo/notice/NoticeSettingListVo.java | 25 +++ .../common/entity/notice/NoticeRecord.java | 18 ++ .../common/entity/notice/NoticeSetting.java | 34 ++++ .../mapper/notice/NoticeSettingMapper.java | 12 ++ .../java/com/mdd/common/utils/ToolsUtil.java | 12 ++ 9 files changed, 349 insertions(+), 7 deletions(-) create mode 100644 server/like-admin/src/main/java/com/mdd/admin/service/notice/INoticeSettingService.java create mode 100644 server/like-admin/src/main/java/com/mdd/admin/service/notice/impl/NoticeSettingServiceImpl.java create mode 100644 server/like-admin/src/main/java/com/mdd/admin/vo/notice/NoticeSettingDetailVo.java create mode 100644 server/like-admin/src/main/java/com/mdd/admin/vo/notice/NoticeSettingListVo.java create mode 100644 server/like-common/src/main/java/com/mdd/common/entity/notice/NoticeRecord.java create mode 100644 server/like-common/src/main/java/com/mdd/common/entity/notice/NoticeSetting.java create mode 100644 server/like-common/src/main/java/com/mdd/common/mapper/notice/NoticeSettingMapper.java diff --git a/server/like-admin/src/main/java/com/mdd/admin/controller/setting/NoticeController.java b/server/like-admin/src/main/java/com/mdd/admin/controller/setting/NoticeController.java index 578cf722..2ce3d2e2 100644 --- a/server/like-admin/src/main/java/com/mdd/admin/controller/setting/NoticeController.java +++ b/server/like-admin/src/main/java/com/mdd/admin/controller/setting/NoticeController.java @@ -1,7 +1,17 @@ package com.mdd.admin.controller.setting; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import com.mdd.admin.service.notice.INoticeSettingService; +import com.mdd.admin.vo.notice.NoticeSettingDetailVo; +import com.mdd.admin.vo.notice.NoticeSettingListVo; +import com.mdd.common.core.AjaxResult; +import com.mdd.common.utils.ToolsUtil; +import com.mdd.common.validator.annotation.IDMust; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Map; /** * 通知设置管理 @@ -10,16 +20,46 @@ import org.springframework.web.bind.annotation.RestController; @RequestMapping("api/setting/notice") public class NoticeController { + @Resource + INoticeSettingService iNoticeSettingService; + + /** + * 通知设置列表 + * + * @author fzr + * @return Object + */ + @GetMapping("/list") public Object list() { - return null; + List list = iNoticeSettingService.list(); + return AjaxResult.success(list); } - public Object detail() { - return null; + /** + * 通知设置详情 + * + * @author fzr + * @param id 主键 + * @return Object + */ + @GetMapping("/detail") + public Object detail(@Validated @IDMust() @RequestParam("id") Integer id) { + NoticeSettingDetailVo vo = iNoticeSettingService.detail(id); + return AjaxResult.success(vo); } - public Object save() { - return null; + /** + * 通知设置保存 + * + * @author fzr + * @param params 参数 + * @return Object + */ + @PostMapping("/save") + public Object save(@RequestBody Map params) { + System.out.println(ToolsUtil.objectToMap(params.get("systemNotice"))); + iNoticeSettingService.save(params); + return AjaxResult.success(); } } diff --git a/server/like-admin/src/main/java/com/mdd/admin/service/notice/INoticeSettingService.java b/server/like-admin/src/main/java/com/mdd/admin/service/notice/INoticeSettingService.java new file mode 100644 index 00000000..16f394ea --- /dev/null +++ b/server/like-admin/src/main/java/com/mdd/admin/service/notice/INoticeSettingService.java @@ -0,0 +1,26 @@ +package com.mdd.admin.service.notice; + +import com.mdd.admin.vo.notice.NoticeSettingDetailVo; +import com.mdd.admin.vo.notice.NoticeSettingListVo; + +import java.util.List; +import java.util.Map; + +/** + * 通知设置服务接口类 + */ +public interface INoticeSettingService { + + /** + * 通知设置列表 + * + * @author fzr + * @return List + */ + List list(); + + NoticeSettingDetailVo detail(Integer id); + + void save(Map params); + +} diff --git a/server/like-admin/src/main/java/com/mdd/admin/service/notice/impl/NoticeSettingServiceImpl.java b/server/like-admin/src/main/java/com/mdd/admin/service/notice/impl/NoticeSettingServiceImpl.java new file mode 100644 index 00000000..d92606c7 --- /dev/null +++ b/server/like-admin/src/main/java/com/mdd/admin/service/notice/impl/NoticeSettingServiceImpl.java @@ -0,0 +1,154 @@ +package com.mdd.admin.service.notice.impl; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.mdd.admin.service.notice.INoticeSettingService; +import com.mdd.admin.vo.notice.NoticeSettingDetailVo; +import com.mdd.admin.vo.notice.NoticeSettingListVo; +import com.mdd.common.entity.notice.NoticeSetting; +import com.mdd.common.mapper.notice.NoticeSettingMapper; +import com.mdd.common.utils.TimeUtil; +import com.mdd.common.utils.ToolsUtil; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; + +@Service +public class NoticeSettingServiceImpl implements INoticeSettingService { + + @Resource + NoticeSettingMapper noticeSettingMapper; + + /** + * 通知设置列表 + * + * @author fzr + * @return List + */ + @Override + public List list() { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("is_delete", 0); + queryWrapper.orderByAsc("id"); + + List noticeSettings = noticeSettingMapper.selectList(queryWrapper); + + List list = new LinkedList<>(); + for (NoticeSetting n : noticeSettings) { + NoticeSettingListVo vo = new NoticeSettingListVo(); + BeanUtils.copyProperties(n, vo); + + Map systemMap = ToolsUtil.jsonToMap(n.getSystemNotice()); + Map smsMap = ToolsUtil.jsonToMap(n.getSmsNotice()); + Map oaMap = ToolsUtil.jsonToMap(n.getOaNotice()); + Map mnpMap = ToolsUtil.jsonToMap(n.getMnpNotice()); + + vo.setType(n.getType()==1?"业务通知":"验证码"); + vo.setSystemStatus(Integer.parseInt(systemMap.get("status"))); + vo.setSmsStatus(Integer.parseInt(smsMap.get("status"))); + vo.setOaStatus(Integer.parseInt(oaMap.get("status"))); + vo.setMnpStatus(Integer.parseInt(mnpMap.get("status"))); + vo.setCreateTime(TimeUtil.timestampToDate(n.getCreateTime())); + vo.setUpdateTime(TimeUtil.timestampToDate(n.getUpdateTime())); + list.add(vo); + } + + return list; + } + + /** + * 通知设置详情 + * + * @author fzr + * @param id 主键 + * @return NoticeSettingDetailVo + * + */ + @Override + public NoticeSettingDetailVo detail(Integer id) { + NoticeSetting noticeSetting = noticeSettingMapper.selectOne(new QueryWrapper() + .eq("id", id) + .eq("is_delete", 0) + .last("limit 1")); + + NoticeSettingDetailVo vo = new NoticeSettingDetailVo(); + BeanUtils.copyProperties(noticeSetting, vo); + + Map systemMap = ToolsUtil.jsonToMapAsObj(noticeSetting.getSystemNotice()); + Map smsMap = ToolsUtil.jsonToMapAsObj(noticeSetting.getSmsNotice()); + Map oaMap = ToolsUtil.jsonToMapAsObj(noticeSetting.getOaNotice()); + Map mnpMap = ToolsUtil.jsonToMapAsObj(noticeSetting.getMnpNotice()); + + systemMap.put("tips", JSONArray.toJSON(systemMap.get("tips"))); + smsMap.put("tips", JSONArray.toJSON(smsMap.get("tips"))); + oaMap.put("tips", JSONArray.toJSON(oaMap.get("tips"))); + oaMap.put("tpl", JSONArray.toJSON(oaMap.get("tpl"))); + mnpMap.put("tips", JSONArray.toJSON(mnpMap.get("tips"))); + mnpMap.put("tpl", JSONArray.toJSON(mnpMap.get("tpl"))); + + vo.setType(noticeSetting.getType()==1?"业务通知":"验证码"); + vo.setSystemNotice(systemMap); + vo.setSmsNotice(smsMap); + vo.setOaNotice(oaMap); + vo.setMnpNotice(mnpMap); + + return vo; + } + + /** + * 通知设置保存 + * + * @author fzr + * @param params 参数 + */ + @Override + public void save(Map params) { + Integer id = Integer.parseInt(params.get("id").toString()); + NoticeSetting noticeSetting = noticeSettingMapper.selectOne(new QueryWrapper() + .eq("id", id) + .eq("is_delete", 0) + .last("limit 1")); + + Map systemParam = ToolsUtil.objectToMap(params.get("systemNotice")); + Map systemMap = ToolsUtil.jsonToMap(noticeSetting.getSystemNotice()); + systemMap.put("title", systemParam.get("title")); + systemMap.put("content", systemParam.get("content")); + systemMap.put("status", systemParam.get("status")); + + Map smsParam = ToolsUtil.objectToMap(params.get("smsNotice")); + Map smsMap = ToolsUtil.jsonToMap(noticeSetting.getSmsNotice()); + smsMap.put("templateId", smsParam.get("templateId")); + smsMap.put("content", smsParam.get("content")); + smsMap.put("status", smsParam.get("status")); + + Map oaParam = ToolsUtil.objectToMap(params.get("oaNotice")); + Map oaMap = ToolsUtil.jsonToMap(noticeSetting.getOaNotice()); + oaMap.put("name", oaParam.getOrDefault("name", "")); + oaMap.put("first", oaParam.get("first")); + oaMap.put("remark", oaParam.get("remark")); + oaMap.put("templateId", oaParam.get("templateId")); + oaMap.put("templateSn", oaParam.get("templateSn")); + oaMap.put("tpl", JSON.toJSONString(oaParam.get("tpl"))); + oaMap.put("status", oaParam.get("status")); + + Map mnpParam = ToolsUtil.objectToMap(params.get("mnpNotice")); + Map mnpMap = ToolsUtil.jsonToMap(noticeSetting.getMnpNotice()); + mnpMap.put("templateId", mnpParam.get("templateId")); + mnpMap.put("templateSn", mnpParam.get("templateSn")); + mnpMap.put("tpl", mnpParam.get("tpl")); + mnpMap.put("status", mnpParam.get("status")); + + noticeSetting.setSystemNotice(JSON.toJSONString(systemMap)); + noticeSetting.setSmsNotice(JSON.toJSONString(smsMap)); + noticeSetting.setOaNotice(JSON.toJSONString(oaMap)); + noticeSetting.setMnpNotice(JSON.toJSONString(mnpMap)); + noticeSetting.setUpdateTime(System.currentTimeMillis() / 1000); + noticeSettingMapper.updateById(noticeSetting); + } + +} diff --git a/server/like-admin/src/main/java/com/mdd/admin/vo/notice/NoticeSettingDetailVo.java b/server/like-admin/src/main/java/com/mdd/admin/vo/notice/NoticeSettingDetailVo.java new file mode 100644 index 00000000..4d5db766 --- /dev/null +++ b/server/like-admin/src/main/java/com/mdd/admin/vo/notice/NoticeSettingDetailVo.java @@ -0,0 +1,21 @@ +package com.mdd.admin.vo.notice; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class NoticeSettingDetailVo implements Serializable { + + private static final long serialVersionUID = 1L; + + private Integer id; + private String name; + private String type; + private String remarks; + private Object systemNotice; + private Object smsNotice; + private Object oaNotice; + private Object mnpNotice; + +} diff --git a/server/like-admin/src/main/java/com/mdd/admin/vo/notice/NoticeSettingListVo.java b/server/like-admin/src/main/java/com/mdd/admin/vo/notice/NoticeSettingListVo.java new file mode 100644 index 00000000..f393a482 --- /dev/null +++ b/server/like-admin/src/main/java/com/mdd/admin/vo/notice/NoticeSettingListVo.java @@ -0,0 +1,25 @@ +package com.mdd.admin.vo.notice; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 通知设置列表Vo + */ +@Data +public class NoticeSettingListVo implements Serializable { + + private static final long serialVersionUID = 1L; + + private Integer id; // 主键 + private String name; // 通知名称 + private String type; // 通知类型 + private Integer systemStatus; // 通知状态 + private Integer smsStatus; // 通知状态 + private Integer oaStatus; // 公众号状态 + private Integer mnpStatus; // 小程序状态 + private String createTime; // 创建时间 + private String updateTime; // 更新时间 + +} diff --git a/server/like-common/src/main/java/com/mdd/common/entity/notice/NoticeRecord.java b/server/like-common/src/main/java/com/mdd/common/entity/notice/NoticeRecord.java new file mode 100644 index 00000000..ff67670b --- /dev/null +++ b/server/like-common/src/main/java/com/mdd/common/entity/notice/NoticeRecord.java @@ -0,0 +1,18 @@ +package com.mdd.common.entity.notice; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; + +import java.io.Serializable; + +@Data +public class NoticeRecord implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value="id", type= IdType.AUTO) + private Integer id; // 主键ID + private Integer userId; + +} diff --git a/server/like-common/src/main/java/com/mdd/common/entity/notice/NoticeSetting.java b/server/like-common/src/main/java/com/mdd/common/entity/notice/NoticeSetting.java new file mode 100644 index 00000000..8ebee4d1 --- /dev/null +++ b/server/like-common/src/main/java/com/mdd/common/entity/notice/NoticeSetting.java @@ -0,0 +1,34 @@ +package com.mdd.common.entity.notice; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; + +import java.io.Serializable; + +/** + * 通知设置实体 + */ +@Data +public class NoticeSetting implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value="id", type= IdType.AUTO) + private Integer id; // 主键ID + private Integer scene; // 场景编号 + private String name; // 场景名称 + private String remarks; // 场景描述 + private Integer recipient; // 接收人员: [1=用户, 2=平台] + private Integer type; // 通知类型: [1=业务, 2=验证码] + private String systemNotice; // 系统的通知设置 + private String smsNotice; // 短信的通知设置 + private String oaNotice; // 公众号通知设置 + private String mnpNotice; // 小程序通知设置 + private String support; // 支持的发送类型 + private Integer isDelete; // 是否删除: [0=否, 1=是] + private Long createTime; // 创建时间 + private Long updateTime; // 更新时间 + private Long deleteTime; // 删除时间 + +} diff --git a/server/like-common/src/main/java/com/mdd/common/mapper/notice/NoticeSettingMapper.java b/server/like-common/src/main/java/com/mdd/common/mapper/notice/NoticeSettingMapper.java new file mode 100644 index 00000000..dde8692c --- /dev/null +++ b/server/like-common/src/main/java/com/mdd/common/mapper/notice/NoticeSettingMapper.java @@ -0,0 +1,12 @@ +package com.mdd.common.mapper.notice; + +import com.mdd.common.core.basics.IBaseMapper; +import com.mdd.common.entity.notice.NoticeSetting; +import org.apache.ibatis.annotations.Mapper; + +/** + * 通知设置Mapper + */ +@Mapper +public interface NoticeSettingMapper extends IBaseMapper { +} diff --git a/server/like-common/src/main/java/com/mdd/common/utils/ToolsUtil.java b/server/like-common/src/main/java/com/mdd/common/utils/ToolsUtil.java index f6aab872..a807227e 100644 --- a/server/like-common/src/main/java/com/mdd/common/utils/ToolsUtil.java +++ b/server/like-common/src/main/java/com/mdd/common/utils/ToolsUtil.java @@ -139,6 +139,18 @@ public class ToolsUtil { return JSON.parseObject(json, type); } + /** + * JSON转 Map + * + * @author fzr + * @param json 对象 + * @return Map + */ + public static Map jsonToMapAsObj(String json){ + Type type = new TypeToken>() {}.getType(); + return JSON.parseObject(json, type); + } + /** * JSON转Map *