增加通知设置接口

This commit is contained in:
TinyAnts 2022-08-24 17:48:57 +08:00
parent 0d09cbfd0e
commit 0d644bb957
9 changed files with 349 additions and 7 deletions

View File

@ -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<NoticeSettingListVo> 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<String, Object> params) {
System.out.println(ToolsUtil.objectToMap(params.get("systemNotice")));
iNoticeSettingService.save(params);
return AjaxResult.success();
}
}

View File

@ -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<NoticeSettingListVo>
*/
List<NoticeSettingListVo> list();
NoticeSettingDetailVo detail(Integer id);
void save(Map<String, Object> params);
}

View File

@ -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<NoticeSettingListVo>
*/
@Override
public List<NoticeSettingListVo> list() {
QueryWrapper<NoticeSetting> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("is_delete", 0);
queryWrapper.orderByAsc("id");
List<NoticeSetting> noticeSettings = noticeSettingMapper.selectList(queryWrapper);
List<NoticeSettingListVo> list = new LinkedList<>();
for (NoticeSetting n : noticeSettings) {
NoticeSettingListVo vo = new NoticeSettingListVo();
BeanUtils.copyProperties(n, vo);
Map<String, String> systemMap = ToolsUtil.jsonToMap(n.getSystemNotice());
Map<String, String> smsMap = ToolsUtil.jsonToMap(n.getSmsNotice());
Map<String, String> oaMap = ToolsUtil.jsonToMap(n.getOaNotice());
Map<String, String> 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<NoticeSetting>()
.eq("id", id)
.eq("is_delete", 0)
.last("limit 1"));
NoticeSettingDetailVo vo = new NoticeSettingDetailVo();
BeanUtils.copyProperties(noticeSetting, vo);
Map<String, Object> systemMap = ToolsUtil.jsonToMapAsObj(noticeSetting.getSystemNotice());
Map<String, Object> smsMap = ToolsUtil.jsonToMapAsObj(noticeSetting.getSmsNotice());
Map<String, Object> oaMap = ToolsUtil.jsonToMapAsObj(noticeSetting.getOaNotice());
Map<String, Object> 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<String, Object> params) {
Integer id = Integer.parseInt(params.get("id").toString());
NoticeSetting noticeSetting = noticeSettingMapper.selectOne(new QueryWrapper<NoticeSetting>()
.eq("id", id)
.eq("is_delete", 0)
.last("limit 1"));
Map<String, String> systemParam = ToolsUtil.objectToMap(params.get("systemNotice"));
Map<String, String> systemMap = ToolsUtil.jsonToMap(noticeSetting.getSystemNotice());
systemMap.put("title", systemParam.get("title"));
systemMap.put("content", systemParam.get("content"));
systemMap.put("status", systemParam.get("status"));
Map<String, String> smsParam = ToolsUtil.objectToMap(params.get("smsNotice"));
Map<String, String> smsMap = ToolsUtil.jsonToMap(noticeSetting.getSmsNotice());
smsMap.put("templateId", smsParam.get("templateId"));
smsMap.put("content", smsParam.get("content"));
smsMap.put("status", smsParam.get("status"));
Map<String, String> oaParam = ToolsUtil.objectToMap(params.get("oaNotice"));
Map<String, String> 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<String, String> mnpParam = ToolsUtil.objectToMap(params.get("mnpNotice"));
Map<String, String> 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);
}
}

View File

@ -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;
}

View File

@ -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; // 更新时间
}

View File

@ -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;
}

View File

@ -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; // 删除时间
}

View File

@ -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<NoticeSetting> {
}

View File

@ -139,6 +139,18 @@ public class ToolsUtil {
return JSON.parseObject(json, type);
}
/**
* JSON转 Map<String, Object>
*
* @author fzr
* @param json 对象
* @return Map<String, String>
*/
public static Map<String, Object> jsonToMapAsObj(String json){
Type type = new TypeToken<Map<String, Object>>() {}.getType();
return JSON.parseObject(json, type);
}
/**
* JSON转Map<String, String>
*