|
@@ -1,6 +1,5 @@
|
|
package cn.com.ty.lift.quan.news.service.impl;
|
|
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.common.utils.AliyunOSSUtil;
|
|
import cn.com.ty.lift.quan.news.dao.entity.QuanNews;
|
|
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.entity.model.QuanNewsReq;
|
|
@@ -14,7 +13,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import lombok.AllArgsConstructor;
|
|
import lombok.AllArgsConstructor;
|
|
import org.springframework.data.redis.core.RedisTemplate;
|
|
import org.springframework.data.redis.core.RedisTemplate;
|
|
-import org.springframework.data.redis.core.StringRedisTemplate;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
@@ -33,8 +31,7 @@ import java.util.*;
|
|
@AllArgsConstructor
|
|
@AllArgsConstructor
|
|
public class QuanNewsServiceImpl extends ServiceImpl<QuanNewsMapper, QuanNews> implements QuanNewsService {
|
|
public class QuanNewsServiceImpl extends ServiceImpl<QuanNewsMapper, QuanNews> implements QuanNewsService {
|
|
|
|
|
|
- private final RedisTemplate redisTemplate;
|
|
|
|
- private final StringRedisTemplate stringRedisTemplate;
|
|
|
|
|
|
+ private final RedisTemplate<String, Object> redisTemplate;
|
|
|
|
|
|
/**
|
|
/**
|
|
* @description 将新闻置顶
|
|
* @description 将新闻置顶
|
|
@@ -122,31 +119,29 @@ public class QuanNewsServiceImpl extends ServiceImpl<QuanNewsMapper, QuanNews> i
|
|
Page<QuanNews> page = new Page<>(pageNum, pageSize);
|
|
Page<QuanNews> page = new Page<>(pageNum, pageSize);
|
|
IPage<Map<String, Object>> news = this.pageMaps(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<Object, Object> lookTimes = redisTemplate.boundHashOps("system-quanNews-look-time").entries();
|
|
//全部新闻的点赞用户列表
|
|
//全部新闻的点赞用户列表
|
|
- Map<String, TreeSet> likeUsers = redisTemplate.opsForHash().entries("system-quanNews-like-users");
|
|
|
|
- if (haveTops == 0) {
|
|
|
|
- if (news.getRecords().isEmpty()) {
|
|
|
|
- return RestResponse.success();
|
|
|
|
- }
|
|
|
|
|
|
+ Map<Object, Object> likeUsers = redisTemplate.opsForHash().entries("system-quanNews-like-users");
|
|
|
|
+ HashMap<String, Object> result = new HashMap<>();
|
|
|
|
+ newsAddLookAndLike(news.getRecords(), lookTimes, likeUsers);
|
|
|
|
+ result.put("news", news);
|
|
|
|
+ if (haveTops == 1) {
|
|
|
|
+ List<Map<String, Object>> topNews = this.listMaps(new QueryWrapper<QuanNews>().ne("top_serial", "0").orderByAsc("top_serial"));
|
|
//把点赞的用户数量和浏览量整入新闻字段中
|
|
//把点赞的用户数量和浏览量整入新闻字段中
|
|
- newsAddLookAndLike(news.getRecords(), lookTimes, likeUsers);
|
|
|
|
- return RestResponse.success(news, "查询成功");
|
|
|
|
|
|
+ newsAddLookAndLike(topNews, lookTimes, likeUsers);
|
|
|
|
+ result.put("topNews", topNews);
|
|
}
|
|
}
|
|
- 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.success(map, "查询成功");
|
|
|
|
|
|
+ return RestResponse.success(result);
|
|
}
|
|
}
|
|
|
|
|
|
//把点赞的用户数量和浏览量整入新闻字段中
|
|
//把点赞的用户数量和浏览量整入新闻字段中
|
|
- void newsAddLookAndLike(List<Map<String, Object>> records, Map<Object, Object> lookTimes, Map<String, TreeSet> likeUsers) {
|
|
|
|
|
|
+ void newsAddLookAndLike(List<Map<String, Object>> records, Map<Object, Object> lookTimes, Map<Object, Object> likeUsers) {
|
|
for (Map<String, Object> record : records) {
|
|
for (Map<String, Object> record : records) {
|
|
Object id = record.get("id");
|
|
Object id = record.get("id");
|
|
|
|
+ if (null != record.get("video_name")) {
|
|
|
|
+ //fixme 新闻视频的路径
|
|
|
|
+ record.put("video_name", "https://temp15827479607.oss-cn-beijing.aliyuncs.com/" + record.get("video_name"));
|
|
|
|
+ }
|
|
//如果没有浏览量
|
|
//如果没有浏览量
|
|
if (lookTimes.isEmpty()) {
|
|
if (lookTimes.isEmpty()) {
|
|
record.put("lookNum", "0");
|
|
record.put("lookNum", "0");
|
|
@@ -167,9 +162,9 @@ public class QuanNewsServiceImpl extends ServiceImpl<QuanNewsMapper, QuanNews> i
|
|
record.put("likeNum", "0");
|
|
record.put("likeNum", "0");
|
|
} else {
|
|
} else {
|
|
//遍历likeUsers,查看对应id的新闻的点赞量
|
|
//遍历likeUsers,查看对应id的新闻的点赞量
|
|
- for (Map.Entry<String, TreeSet> entry : likeUsers.entrySet()) {
|
|
|
|
- String k = entry.getKey();
|
|
|
|
- TreeSet v = entry.getValue();
|
|
|
|
|
|
+ for (Map.Entry<Object, Object> entry : likeUsers.entrySet()) {
|
|
|
|
+ String k = entry.getKey().toString();
|
|
|
|
+ ArrayList v = (ArrayList) entry.getValue();
|
|
if (k.equals(id.toString())) {
|
|
if (k.equals(id.toString())) {
|
|
record.put("likeNum", v.size());
|
|
record.put("likeNum", v.size());
|
|
break;
|
|
break;
|
|
@@ -224,8 +219,9 @@ public class QuanNewsServiceImpl extends ServiceImpl<QuanNewsMapper, QuanNews> i
|
|
* @date 2019/12/4 13:34
|
|
* @date 2019/12/4 13:34
|
|
*/
|
|
*/
|
|
public RestResponse updateNews(QuanNews quanNews) {
|
|
public RestResponse updateNews(QuanNews quanNews) {
|
|
- if (null == this.getById(quanNews.getId())) {
|
|
|
|
- return RestResponse.success();
|
|
|
|
|
|
+ QuanNews byId = this.getById(quanNews);
|
|
|
|
+ if (byId.getVideoName() != null) {
|
|
|
|
+ AliyunOSSUtil.me().deleteObject(byId.getVideoName());
|
|
}
|
|
}
|
|
if (this.updateById(quanNews)) {
|
|
if (this.updateById(quanNews)) {
|
|
return RestResponse.success(null, "成功");
|
|
return RestResponse.success(null, "成功");
|
|
@@ -248,6 +244,9 @@ public class QuanNewsServiceImpl extends ServiceImpl<QuanNewsMapper, QuanNews> i
|
|
//取消新闻置顶
|
|
//取消新闻置顶
|
|
this.top(id, 0);
|
|
this.top(id, 0);
|
|
}
|
|
}
|
|
|
|
+ if (byId.getVideoName() != null) {
|
|
|
|
+ AliyunOSSUtil.me().deleteObject(byId.getVideoName());
|
|
|
|
+ }
|
|
if (this.removeById(id)) {
|
|
if (this.removeById(id)) {
|
|
return RestResponse.success(null, "成功");
|
|
return RestResponse.success(null, "成功");
|
|
} else {
|
|
} else {
|
|
@@ -256,25 +255,22 @@ public class QuanNewsServiceImpl extends ServiceImpl<QuanNewsMapper, QuanNews> i
|
|
}
|
|
}
|
|
|
|
|
|
//新增、更新新闻时上传文件
|
|
//新增、更新新闻时上传文件
|
|
- public RestResponse upFile(Long id, MultipartFile videoFile) {
|
|
|
|
- String originalFilename = videoFile.getOriginalFilename();
|
|
|
|
|
|
+ public RestResponse upFile(MultipartFile file) {
|
|
|
|
+ String originalFilename = file.getOriginalFilename();
|
|
if (originalFilename != null && originalFilename.contains(".")) {
|
|
if (originalFilename != null && originalFilename.contains(".")) {
|
|
- String fileName = IdWorker.getIdStr()
|
|
|
|
|
|
+ String fileName = "quan/news/video/" + IdWorker.getIdStr()
|
|
+ "."
|
|
+ "."
|
|
- + originalFilename.substring(videoFile.getOriginalFilename().lastIndexOf(".") + 1);
|
|
|
|
|
|
+ + originalFilename.substring(file.getOriginalFilename().lastIndexOf(".") + 1);
|
|
//阿里云OSS操作结果
|
|
//阿里云OSS操作结果
|
|
boolean result = false;
|
|
boolean result = false;
|
|
try {
|
|
try {
|
|
- result = new AliyunOSSUtil().putObject("temp15827479607", videoFile.getBytes(), fileName);
|
|
|
|
|
|
+ result = new AliyunOSSUtil().putObject(file.getBytes(), fileName);
|
|
} catch (IOException e) {
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
//如果保存成功
|
|
//如果保存成功
|
|
if (result) {
|
|
if (result) {
|
|
- QuanNews quanNews = new QuanNews();
|
|
|
|
- quanNews.setId(id).setVideoName(fileName);
|
|
|
|
- this.updateById(quanNews);
|
|
|
|
- return RestResponse.success(fileName, "成功");
|
|
|
|
|
|
+ return RestResponse.success(fileName);
|
|
}
|
|
}
|
|
return RestResponse.fail();
|
|
return RestResponse.fail();
|
|
}
|
|
}
|
|
@@ -284,9 +280,9 @@ public class QuanNewsServiceImpl extends ServiceImpl<QuanNewsMapper, QuanNews> i
|
|
public RestResponse like(QuanNewsReq req) {
|
|
public RestResponse like(QuanNewsReq req) {
|
|
String uid = req.getUserId().toString();
|
|
String uid = req.getUserId().toString();
|
|
String id = req.getId().toString();
|
|
String id = req.getId().toString();
|
|
- TreeSet users = (TreeSet) redisTemplate.opsForHash().get("system-quanNews-like-users", id);
|
|
|
|
|
|
+ ArrayList users = (ArrayList) redisTemplate.opsForHash().get("system-quanNews-like-users", id);
|
|
if (users == null) {
|
|
if (users == null) {
|
|
- users = new TreeSet<>();
|
|
|
|
|
|
+ users = new ArrayList<>();
|
|
users.add(uid);
|
|
users.add(uid);
|
|
redisTemplate.opsForHash().put("system-quanNews-like-users", id, users);
|
|
redisTemplate.opsForHash().put("system-quanNews-like-users", id, users);
|
|
return RestResponse.success(null, "点赞成功");
|
|
return RestResponse.success(null, "点赞成功");
|
|
@@ -314,14 +310,16 @@ public class QuanNewsServiceImpl extends ServiceImpl<QuanNewsMapper, QuanNews> i
|
|
String id = byId.get("id").toString();
|
|
String id = byId.get("id").toString();
|
|
Long lookNum = redisTemplate.boundHashOps("system-quanNews-look-time").increment(id, 1);
|
|
Long lookNum = redisTemplate.boundHashOps("system-quanNews-look-time").increment(id, 1);
|
|
int isLike;
|
|
int isLike;
|
|
- TreeSet users = (TreeSet) redisTemplate.opsForHash().get("system-quanNews-like-users", id);
|
|
|
|
- if (users != null && !users.add(req.getUserId().toString())) {
|
|
|
|
|
|
+ ArrayList users = (ArrayList) redisTemplate.opsForHash().get("system-quanNews-like-users", id);
|
|
|
|
+ if (users != null && users.contains(req.getUserId().toString())) {
|
|
isLike = 1;
|
|
isLike = 1;
|
|
} else {
|
|
} else {
|
|
isLike = 0;
|
|
isLike = 0;
|
|
}
|
|
}
|
|
byId.put("lookNum", lookNum);
|
|
byId.put("lookNum", lookNum);
|
|
byId.put("isLike", isLike);
|
|
byId.put("isLike", isLike);
|
|
|
|
+ //fixme 新闻视频的路径
|
|
|
|
+ byId.put("videoName", "https://temp15827479607.oss-cn-beijing.aliyuncs.com/" + byId.get("videoName"));
|
|
return RestResponse.success(byId, "成功");
|
|
return RestResponse.success(byId, "成功");
|
|
} else {
|
|
} else {
|
|
return RestResponse.success();
|
|
return RestResponse.success();
|