Sfoglia il codice sorgente

更新新闻公告

wanghaicheng 5 anni fa
parent
commit
a7d69d0ce0

+ 34 - 25
lift-enterprise-service/src/main/java/cn/com/ty/lift/enterprise/organization/service/OrganizationService.java

@@ -5,6 +5,7 @@ import cn.com.ty.lift.enterprise.organization.dao.entity.Project;
 import cn.com.ty.lift.enterprise.organization.dao.entity.model.OrganizationReq;
 import cn.com.ty.lift.enterprise.organization.service.impl.ProjectServiceImpl;
 import cn.com.xwy.boot.web.dto.RestResponse;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 
@@ -22,8 +23,12 @@ public class OrganizationService {
      */
     public RestResponse organization(OrganizationReq req) {
         List<HashMap<String, String>> areas;
-        List<HashMap<String, String>> areaChild;
         HashMap<String, Object> result;
+
+        List<Project> list = projectService.list(new QueryWrapper<Project>()
+                .select("province", "city", "district")
+                .eq("mt_company_id", req.getMtCompanyId()));
+
         if (req.getDistrict() != null) {
             List<HashMap<String, String>> projects = projectService.getBaseMapper().projects(req.getMtCompanyId(), req.getDistrict());
             if (projects.isEmpty()) {
@@ -59,29 +64,33 @@ public class OrganizationService {
         if (projectUsers.isEmpty()) {
             return RestResponse.ok(null, ApiConstants.RESULT_NO_DATA, "无数据");
         }
-//        for (HashMap<String, Object> projectUser : projectUsers) {
-//            Object monitor = projectUser.get("monitor");
-//            Object role = projectUser.get("role");
-//            if (monitor != null && monitor.equals("1")) {
-//                projectUser.replace("monitor", "维保班长");
-//            }
-//            if (role != null) {
-//                switch (role.toString()) {
-//                    case "13":
-//                        projectUser.replace("role", "维保工");
-//                        break;
-//                    case "14":
-//                        projectUser.replace("role", "省级经理");
-//                        break;
-//                    case "15":
-//                        projectUser.replace("role", "市级经理");
-//                        break;
-//                    case "16":
-//                        projectUser.replace("role", "文员");
-//                        break;
-//                }
-//            }
-//        }
+        for (HashMap<String, Object> projectUser : projectUsers) {
+            Object monitor = projectUser.get("monitor");
+            Object role = projectUser.get("role");
+            if (monitor != null && monitor.equals("1")) {
+                projectUser.replace("monitor", "维保班长");
+            }
+            if (role != null) {
+                switch (role.toString()) {
+                    case "13":
+                        projectUser.replace("role", "维保工");
+                        break;
+                    case "14":
+                        projectUser.replace("role", "省级经理");
+                        break;
+                    case "15":
+                        projectUser.replace("role", "市级经理");
+                        break;
+                    case "16":
+                        projectUser.replace("role", "文员");
+                        break;
+                }
+            }
+        }
         return RestResponse.ok(projectUsers, ApiConstants.RESULT_SUCCESS, "查询成功");
     }
-}
+
+    public Integer childNum(List<HashMap<String, String>> areas, List<HashMap<String, String>> projects) {
+
+    }
+}

+ 38 - 0
lift-quan-service/src/main/java/cn/com/ty/lift/quan/config/RedisConfig.java

@@ -0,0 +1,38 @@
+package cn.com.ty.lift.quan.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
+import org.springframework.data.redis.serializer.StringRedisSerializer;
+
+@Configuration
+public class RedisConfig {
+    /**
+     * 重写Redis序列化方式,使用Json方式:
+     * 当我们的数据存储到Redis的时候,我们的键(key)和值(value)都是通过Spring提供的Serializer序列化到数据库的。RedisTemplate默认使用的是JdkSerializationRedisSerializer,StringRedisTemplate默认使用的是StringRedisSerializer。
+     * Spring Data JPA为我们提供了下面的Serializer:
+     * GenericToStringSerializer、Jackson2JsonRedisSerializer、JacksonJsonRedisSerializer、JdkSerializationRedisSerializer、OxmSerializer、StringRedisSerializer。
+     * 在此我们将自己配置RedisTemplate并定义Serializer。
+     *
+     * @param redisConnectionFactory
+     * @return
+     */
+    @Bean
+    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
+        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
+        redisTemplate.setConnectionFactory(redisConnectionFactory);
+//        JdkSerializationRedisSerializer jdkSerializationRedisSerializer = new JdkSerializationRedisSerializer();
+        GenericJackson2JsonRedisSerializer jackson2JsonRedisSerializer = new GenericJackson2JsonRedisSerializer();
+        // 设置值(value)的序列化采用FastJsonRedisSerializer。
+        redisTemplate.setValueSerializer(new StringRedisSerializer());
+//        redisTemplate.setHashValueSerializer(fastJsonRedisSerializer);
+        // 设置键(key)的序列化采用StringRedisSerializer。
+        redisTemplate.setKeySerializer(new StringRedisSerializer());
+        redisTemplate.setHashKeySerializer(new StringRedisSerializer());
+        redisTemplate.afterPropertiesSet();
+        return redisTemplate;
+    }
+
+}

+ 6 - 22
lift-quan-service/src/main/java/cn/com/ty/lift/quan/news/controller/QuanNewsController.java

@@ -13,6 +13,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.Set;
 
 /**
  * <p>
@@ -27,7 +28,6 @@ import java.util.HashMap;
 @RequestMapping("/quan-news")
 public class QuanNewsController {
     private final QuanNewsServiceImpl quanNewsService;
-    private final StringRedisTemplate redisTemplate;
 
     @PostMapping("/list")
     /**
@@ -58,13 +58,8 @@ public class QuanNewsController {
      * @param [新闻id]
      * @return cn.com.xwy.boot.web.dto.RestResponse
      */
-    public RestResponse news(@RequestBody QuanNews quanNews) {
-        QuanNews byId = quanNewsService.getById(quanNews.getId());
-        if (null != byId) {
-            return RestResponse.ok(byId, "1", "查询成功");
-        } else {
-            return RestResponse.ok(null, "9", "无数据");
-        }
+    public RestResponse news(@RequestBody QuanNewsReq quanNews) {
+        return quanNewsService.getQuanNews(quanNews);
     }
 
     @PostMapping("/add")
@@ -74,13 +69,8 @@ public class QuanNewsController {
      * @param [新闻标题, 新闻内容, 视频文件, 发布人id]
      * @return org.springframework.http.ResponseEntity
      */
-    public RestResponse add(@RequestParam String title, @RequestParam String content, @RequestParam Long releaseId, @RequestParam String releaseUser, @RequestParam MultipartFile videoFile, @RequestParam Integer isTop) {
-        QuanNews quanNews = new QuanNews();
-        quanNews.setTitle(title)
-                .setContent(content)
-                .setReleaseId(releaseId)
-                .setReleaseUser(releaseUser);
-        return quanNewsService.addNew(quanNews, videoFile, isTop);
+    public RestResponse add(@RequestBody QuanNewsReq req) {
+        return quanNewsService.addNew(req);
     }
 
     @PostMapping("/update")
@@ -113,12 +103,6 @@ public class QuanNewsController {
 
     @PostMapping("/like")
     public RestResponse like(@RequestBody QuanNewsReq req) {
-        String users = redisTemplate.opsForValue().get("quan-users");
-        if (users == null) {
-            redisTemplate.opsForValue().append("quan-users", req.getUserId().toString());
-        } else {
-            redisTemplate.opsForValue().append("quan-users", users + "," + req.getUserId());
-        }
-        return RestResponse.ok(null, ApiConstants.RESULT_SUCCESS, "成功");
+        return quanNewsService.like(req);
     }
 }

+ 2 - 7
lift-quan-service/src/main/java/cn/com/ty/lift/quan/news/dao/entity/QuanNews.java

@@ -53,8 +53,8 @@ public class QuanNews implements Serializable {
     /**
      * 视频地址
      */
-    @TableField("video_path")
-    private String videoPath;
+    @TableField("video_name")
+    private String videoName;
 
     /**
      * 发布时间
@@ -74,9 +74,4 @@ public class QuanNews implements Serializable {
     @TableField("release_id")
     private Long releaseId;
 
-    /**
-     *  此新闻的点赞及浏览的用户列表
-     * */
-    @TableField("quan_news_record_id")
-    private Long quanNewsRecordId;
 }

+ 8 - 7
lift-quan-service/src/main/java/cn/com/ty/lift/quan/news/dao/entity/model/QuanNewsReq.java

@@ -7,7 +7,6 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
-import org.springframework.web.multipart.MultipartFile;
 
 import java.io.Serializable;
 import java.time.LocalDateTime;
@@ -52,10 +51,9 @@ public class QuanNewsReq extends BaseRequestModel implements Serializable {
     private String content;
 
     /**
-     * 视频地址
+     * 视频名称
      */
-    @TableField("video_path")
-    private String videoPath;
+    private String videoName;
 
     /**
      * 发布时间
@@ -77,19 +75,22 @@ public class QuanNewsReq extends BaseRequestModel implements Serializable {
 
     /**
      * 查询时是否包含置顶新闻
-     * 数据库不存在此字段
+     *
      */
-    @TableField(exist = false)
     private Integer haveTops;
 
     /**
      * 1置顶 ,0取消置顶
      */
-    @TableField(exist = false)
     private Integer type;
 
     /***
      * 点赞的用户id
      */
     private Long userId;
+
+    /**
+     * 新增时标识是否为置顶新闻
+     */
+    private Integer isTop;
 }

+ 132 - 20
lift-quan-service/src/main/java/cn/com/ty/lift/quan/news/service/impl/QuanNewsServiceImpl.java

@@ -1,7 +1,9 @@
 package cn.com.ty.lift.quan.news.service.impl;
 
+import cn.com.ty.lift.common.constants.ApiConstants;
 import cn.com.ty.lift.common.utils.AliyunOSSUtil;
 import cn.com.ty.lift.quan.news.dao.entity.QuanNews;
+import cn.com.ty.lift.quan.news.dao.entity.model.QuanNewsReq;
 import cn.com.ty.lift.quan.news.dao.mapper.QuanNewsMapper;
 import cn.com.ty.lift.quan.news.service.QuanNewsService;
 import cn.com.xwy.boot.web.dto.RestResponse;
@@ -10,13 +12,15 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.AllArgsConstructor;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
-import java.util.HashMap;
-import java.util.List;
+import java.util.*;
 
 /**
  * <p>
@@ -27,9 +31,13 @@ import java.util.List;
  * @since 2019-12-02
  */
 @Service
+@AllArgsConstructor
 @Transactional
 public class QuanNewsServiceImpl extends ServiceImpl<QuanNewsMapper, QuanNews> implements QuanNewsService {
 
+    private final RedisTemplate redisTemplate;
+    private final StringRedisTemplate stringRedisTemplate;
+
     /**
      * @description 将新闻置顶
      * @date 2019/12/3 11:23
@@ -43,9 +51,17 @@ public class QuanNewsServiceImpl extends ServiceImpl<QuanNewsMapper, QuanNews> i
         if (type == 1) {
             if (byId.getTopSerial() != 0) {
                 //如果新闻在置顶新闻中
+                Integer serial = byId.getTopSerial();
+
                 List<QuanNews> tops = this.list(new QueryWrapper<QuanNews>().ne("top_serial", 0));
                 for (QuanNews top : tops) {
-                    top.setTopSerial(top.getTopSerial() + 1);
+                    if (top.getTopSerial() < serial) {
+                        top.setTopSerial(top.getTopSerial() + 1);
+                    }
+                    if (top.getTopSerial().equals(serial)) {
+                        top.setTopSerial(1);
+                        continue;
+                    }
                 }
                 QuanNews top = this.getOne(new QueryWrapper<QuanNews>().eq("top_serial", 1));
                 top.setTopSerial(byId.getTopSerial());
@@ -107,36 +123,88 @@ public class QuanNewsServiceImpl extends ServiceImpl<QuanNewsMapper, QuanNews> i
     }
 
     /**
-     * @description 时间倒序查询置顶新闻+普通新闻列表
+     * @description 查询置顶新闻+普通新闻列表
      * @date 2019/12/3 10:30
      */
     public RestResponse news(Long pageNum, Long pageSize, Integer haveTops) {
         Page<QuanNews> page = new Page<>(pageNum, pageSize);
-        IPage<QuanNews> news = this.page(page, new QueryWrapper<QuanNews>().eq("top_serial", "0").orderByDesc("release_date"));
+        IPage<Map<String, Object>> news = this.pageMaps(page, new QueryWrapper<QuanNews>().eq("top_serial", "0").orderByDesc("release_date"));
+        //全部新闻的浏览量列表
+        Map<Object, Object> lookTimes = stringRedisTemplate.boundHashOps("system-quanNews-look-time").entries();
+        //全部新闻的点赞用户列表
+        Map<String, TreeSet> likeUsers = redisTemplate.opsForHash().entries("system-quanNews-like-users");
         if (haveTops == 0) {
-            return RestResponse.ok(news, "1", "查询成功");
+            if (news.getRecords().isEmpty()) {
+                return RestResponse.ok(null, ApiConstants.RESULT_NO_DATA, "无数据");
+            }
+            //把点赞的用户数量和浏览量整入新闻字段中
+            newsAddLookAndLike(news.getRecords(), lookTimes, likeUsers);
+            return RestResponse.ok(news, ApiConstants.RESULT_SUCCESS, "查询成功");
         }
-        List topNews = this.list(new QueryWrapper<QuanNews>().ne("top_serial", "0").orderByAsc("top_serial"));
+        List<Map<String, Object>> topNews = this.listMaps(new QueryWrapper<QuanNews>().ne("top_serial", "0").orderByAsc("top_serial"));
+        //把点赞的用户数量和浏览量整入新闻字段中
+        newsAddLookAndLike(topNews, lookTimes, likeUsers);
+
         HashMap<String, Object> map = new HashMap<>();
         map.put("topNews", topNews);
         map.put("news", news);
-        return RestResponse.ok(map, "1", "查询成功");
+        return RestResponse.ok(map, ApiConstants.RESULT_SUCCESS, "查询成功");
+    }
+
+    //把点赞的用户数量和浏览量整入新闻字段中
+    void newsAddLookAndLike(List<Map<String, Object>> records, Map<Object, Object> lookTimes, Map<String, TreeSet> likeUsers) {
+        for (Map<String, Object> record : records) {
+            Object id = record.get("id");
+            //如果没有浏览量
+            if (lookTimes.isEmpty()) {
+                record.put("lookNum", "0");
+            } else {
+                //遍历lookTimes,查看对应id的新闻浏览量
+                for (Map.Entry<Object, Object> entry : lookTimes.entrySet()) {
+                    Object key = entry.getKey();
+                    Object value = entry.getValue();
+                    if (key.equals(id.toString())) {
+                        record.put("lookNum", value);
+                        break;
+                    }
+                    record.put("lookNum", "0");
+                }
+            }
+            //如果没有用户喜爱
+            if (likeUsers.isEmpty()) {
+                record.put("likeNum", "0");
+            } else {
+                //遍历likeUsers,查看对应id的新闻的点赞量
+                for (Map.Entry<String, TreeSet> entry : likeUsers.entrySet()) {
+                    String k = entry.getKey();
+                    TreeSet v = entry.getValue();
+                    if (k.equals(id.toString())) {
+                        record.put("likeNum", v.size());
+                        break;
+                    }
+                    record.put("likeNum", "0");
+                }
+            }
+        }
     }
 
-    public RestResponse addNew(QuanNews quanNews, MultipartFile videoFile, Integer isTop) {
+    public RestResponse addNew(QuanNewsReq req) {
+        QuanNews quanNews = new QuanNews();
+        quanNews.setTitle(req.getTitle())
+                .setContent(req.getContent())
+                .setReleaseId(req.getReleaseId())
+                .setReleaseUser(req.getReleaseUser());
+
         if (!videoFile.isEmpty()) {
-            quanNews.setVideoPath(this.upFile(videoFile));
+            quanNews.setVideoName(this.upFile(videoFile));
         }
 
         List<QuanNews> tops;
-        if (isTop != 0) {
+        if (req.getIsTop() != 0) {
             //获取置顶新闻列表
             tops = this.list(new QueryWrapper<QuanNews>().ne("top_serial", 0));
             //设置新添加新闻的数据
-            quanNews
-                    .setReleaseId(quanNews.getReleaseId())
-                    .setReleaseUser(quanNews.getReleaseUser())
-                    .setTopSerial(1);
+            quanNews.setTopSerial(1);
             //遍历排序加1
             if (!tops.isEmpty()) {
                 tops.forEach(top -> {
@@ -155,10 +223,7 @@ public class QuanNewsServiceImpl extends ServiceImpl<QuanNewsMapper, QuanNews> i
                 }
             }
         }
-        //设置新添加新闻的数据
-        quanNews
-                .setReleaseId(quanNews.getReleaseId())
-                .setReleaseUser(quanNews.getReleaseUser());
+        //添加新闻
         if (this.save(quanNews)) {
             return RestResponse.ok(null, "1", "新增成功");
         } else {
@@ -180,7 +245,7 @@ public class QuanNewsServiceImpl extends ServiceImpl<QuanNewsMapper, QuanNews> i
 
         if (!videoFile.isEmpty()) {
             //上传视频到Oss,获取视频地址
-            byId.setVideoPath(this.upFile(videoFile));
+            byId.setVideoName(this.upFile(videoFile));
         }
 
         if (this.updateById(byId)) {
@@ -227,4 +292,51 @@ public class QuanNewsServiceImpl extends ServiceImpl<QuanNewsMapper, QuanNews> i
         }
         return null;
     }
+
+    public RestResponse like(QuanNewsReq req) {
+        String uid = req.getUserId().toString();
+        String id = req.getId().toString();
+        TreeSet users = (TreeSet) redisTemplate.opsForHash().get("system-quanNews-like-users", id);
+        if (users == null) {
+            users = new TreeSet<>();
+            users.add(uid);
+            redisTemplate.opsForHash().put("system-quanNews-like-users", id, users);
+            return RestResponse.ok(1, ApiConstants.RESULT_SUCCESS, "点赞成功");
+        } else {
+            //遍历userId列表
+            for (Object user : users) {
+                if (user.equals(uid)) {
+                    //如果列表内有这个uid就删除喜欢,并return
+                    users.remove(user);
+                    redisTemplate.opsForHash().put("system-quanNews-like-users", id, users);
+                    return RestResponse.ok(0, ApiConstants.RESULT_SUCCESS, "取消点赞成功");
+                }
+            }
+            //如果列表内没有这个uid就标记喜欢
+            users.add(uid);
+            redisTemplate.opsForHash().put("system-quanNews-like-users", id, users);
+            return RestResponse.ok(1, ApiConstants.RESULT_SUCCESS, "点赞成功");
+        }
+    }
+
+    //获取一条新闻
+    public RestResponse getQuanNews(QuanNewsReq req) {
+        Map<String, Object> byId = this.getMap(new QueryWrapper<QuanNews>().eq("id", req.getId()));
+        if (null != byId) {
+            String id = byId.get("id").toString();
+            Long lookNum = redisTemplate.boundHashOps("system-quanNews-look-time").increment(id, 1);
+            int isLike;
+            TreeSet users = (TreeSet) redisTemplate.opsForHash().get("system-quanNews-like-users", id);
+            if (users != null && !users.add(req.getUserId().toString())) {
+                isLike = 1;
+            } else {
+                isLike = 0;
+            }
+            byId.put("lookNum", lookNum);
+            byId.put("isLike", isLike);
+            return RestResponse.ok(byId, ApiConstants.RESULT_SUCCESS, "查询成功");
+        } else {
+            return RestResponse.ok(null, ApiConstants.RESULT_NO_DATA, "无数据");
+        }
+    }
 }

+ 6 - 4
lift-system-service/src/main/java/cn/com/ty/lift/system/settings/controller/GlobalSetController.java

@@ -29,14 +29,16 @@ public class GlobalSetController {
     private final GlobalSetServiceImpl globalSetService;
 
     /**
-     * @param mtCompanyId
+     * @param globalSet
      * @return 操作结果
      * @description 获取维保公司的全局设置列表
      * @date 2019/12/13 16:23
      */
-    @PostMapping("/{mtCompanyId}")
-    public RestResponse id(@PathVariable Long mtCompanyId) {
-        List<GlobalSet> globalSets = globalSetService.list(new QueryWrapper<GlobalSet>().eq("company_id", mtCompanyId));
+    @PostMapping
+    public RestResponse sets(@RequestBody GlobalSet globalSet) {
+        List<GlobalSet> globalSets = globalSetService
+                .list(new QueryWrapper<GlobalSet>()
+                        .eq("company_id", globalSet.getCompanyId()));
         if (globalSets.isEmpty()) {
             return RestResponse.ok(null, ApiConstants.RESULT_NO_DATA, "无数据");
         }