Browse Source

系统消息管理开发

wangzhengliang 3 years ago
parent
commit
d345936fe2

+ 94 - 0
src/main/java/com/chuanghai/ihotel/controller/SystemNoticeController.java

@@ -0,0 +1,94 @@
+package com.chuanghai.ihotel.controller;
+
+import com.chuanghai.ihotel.anno.AdminLoginCheck;
+import com.chuanghai.ihotel.common.exception.BizCodeEnume;
+import com.chuanghai.ihotel.common.exception.RRException;
+import com.chuanghai.ihotel.common.utils.CommonResult;
+import com.chuanghai.ihotel.common.utils.PageParam;
+import com.chuanghai.ihotel.common.utils.PageUtils;
+import com.chuanghai.ihotel.entity.SystemNoticeEntity;
+import com.chuanghai.ihotel.service.SystemNoticeService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestHeader;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Arrays;
+
+
+/**
+ * 系统通知 
+ *
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-08-11 17:15:07
+ */
+@RestController
+@RequestMapping("ihotel/systemnotice")
+public class SystemNoticeController {
+
+    @Autowired
+    private SystemNoticeService systemNoticeService;
+
+    /**
+     * 通知列表
+     * @param adminToken 管理员token
+     * @param readFlag 已读标识 0未读、1已读
+     * @param pageParam 分页参数
+     * @return
+     */
+    @AdminLoginCheck
+    @GetMapping("/list")
+    public CommonResult<PageUtils<SystemNoticeEntity>> list(@RequestHeader("admin_token")String adminToken,
+                                                            String readFlag,
+                                                            PageParam pageParam){
+        if (StringUtils.hasText(readFlag)) {
+            if (!("0".equals(readFlag) || "1".equals(readFlag))) {
+                throw new RRException(BizCodeEnume.PARAMETER_ERROR, "readFlag只能为0或1");
+            }
+        }
+
+        PageUtils page = systemNoticeService.queryPage(readFlag, pageParam);
+
+        return CommonResult.ok().setResult(page);
+    }
+
+    /**
+     * 标记为已读
+     * @param adminToken 管理员token
+     * @param ids 消息id集合
+     * @return
+     */
+    @AdminLoginCheck
+    @PutMapping("/read")
+    public CommonResult<String> read(@RequestHeader("admin_token")String adminToken,
+                                     @RequestBody Long[] ids) {
+        systemNoticeService.read(ids);
+
+        return CommonResult.ok();
+    }
+
+    /**
+     * 删除通知
+     * @param adminToken 管理员token
+     * @param ids 消息id集合
+     * @return
+     */
+    @AdminLoginCheck
+    @DeleteMapping("/delete")
+    public CommonResult<String> delete(@RequestHeader("admin_token")String adminToken,
+                                       @RequestBody Long[] ids){
+        boolean flag = systemNoticeService.removeByIds(Arrays.asList(ids));
+
+        if (flag) {
+            return CommonResult.ok();
+        } else {
+            return CommonResult.fail();
+        }
+    }
+}

+ 17 - 0
src/main/java/com/chuanghai/ihotel/dao/SystemNoticeDao.java

@@ -0,0 +1,17 @@
+package com.chuanghai.ihotel.dao;
+
+import com.chuanghai.ihotel.entity.SystemNoticeEntity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 系统通知 
+ * 
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-08-11 17:15:07
+ */
+@Mapper
+public interface SystemNoticeDao extends BaseMapper<SystemNoticeEntity> {
+	
+}

+ 48 - 0
src/main/java/com/chuanghai/ihotel/entity/SystemNoticeEntity.java

@@ -0,0 +1,48 @@
+package com.chuanghai.ihotel.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * 系统通知 
+ * 
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-08-11 17:15:07
+ */
+@Data
+@TableName("system_notice")
+public class SystemNoticeEntity implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * id
+	 */
+	@TableId
+	private Long id;
+	/**
+	 * 标题
+	 */
+	private String title;
+	/**
+	 * 内容
+	 */
+	private String content;
+	/**
+	 * 类型
+	 */
+	private String type;
+	/**
+	 * 发生时间
+	 */
+	private LocalDateTime createTime;
+	/**
+	 * 是否已读 0未读、1已读
+	 */
+	private String readFlag;
+
+}

+ 21 - 0
src/main/java/com/chuanghai/ihotel/service/SystemNoticeService.java

@@ -0,0 +1,21 @@
+package com.chuanghai.ihotel.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.chuanghai.ihotel.common.utils.PageUtils;
+import com.chuanghai.ihotel.common.utils.PageParam;
+import com.chuanghai.ihotel.entity.SystemNoticeEntity;
+
+/**
+ * 系统通知 
+ *
+ * @author codingliang
+ * @email codingliang@gmail.com
+ * @date 2022-08-11 17:15:07
+ */
+public interface SystemNoticeService extends IService<SystemNoticeEntity> {
+
+    PageUtils queryPage(String readFlag, PageParam pageParam);
+
+    void read(Long[] ids);
+}
+

+ 44 - 0
src/main/java/com/chuanghai/ihotel/service/impl/SystemNoticeServiceImpl.java

@@ -0,0 +1,44 @@
+package com.chuanghai.ihotel.service.impl;
+
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.chuanghai.ihotel.common.utils.PageUtils;
+import com.chuanghai.ihotel.common.utils.MyQuery;
+import com.chuanghai.ihotel.common.utils.PageParam;
+
+import com.chuanghai.ihotel.dao.SystemNoticeDao;
+import com.chuanghai.ihotel.entity.SystemNoticeEntity;
+import com.chuanghai.ihotel.service.SystemNoticeService;
+import org.springframework.util.StringUtils;
+
+import java.util.List;
+
+
+@Service("systemNoticeService")
+public class SystemNoticeServiceImpl extends ServiceImpl<SystemNoticeDao, SystemNoticeEntity> implements SystemNoticeService {
+
+    @Override
+    public PageUtils queryPage(String readFlag, PageParam pageParam) {
+        QueryWrapper<SystemNoticeEntity> wrapper = new QueryWrapper<>();
+        wrapper.eq(StringUtils.hasText(readFlag), "read_flag", readFlag);
+        IPage<SystemNoticeEntity> page = this.page(
+                new MyQuery<SystemNoticeEntity>().getPage(pageParam),
+                wrapper
+        );
+
+        return new PageUtils(page);
+    }
+
+    @Override
+    public void read(Long[] ids) {
+        QueryWrapper<SystemNoticeEntity> wrapper = new QueryWrapper<>();
+        wrapper.in("id", ids);
+        List<SystemNoticeEntity> list = this.list(wrapper);
+        list.forEach(e -> e.setReadFlag("1"));
+
+        this.updateBatchById(list);
+    }
+
+}

+ 17 - 0
src/main/resources/mapper/ihotel/SystemNoticeDao.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.chuanghai.ihotel.dao.SystemNoticeDao">
+
+	<!-- 可根据自己的需求,是否要使用 -->
+    <resultMap type="com.chuanghai.ihotel.entity.SystemNoticeEntity" id="systemNoticeMap">
+        <result property="id" column="id"/>
+        <result property="title" column="title"/>
+        <result property="content" column="content"/>
+        <result property="type" column="type"/>
+        <result property="createTime" column="create_time"/>
+        <result property="readFlag" column="read_flag"/>
+    </resultMap>
+
+
+</mapper>