|
@@ -8,6 +8,7 @@ import cn.com.ty.lift.quan.news.service.QuanNewsService;
|
|
|
import cn.com.xwy.boot.web.dto.RestResponse;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.fasterxml.jackson.databind.DeserializationFeature;
|
|
@@ -44,8 +45,7 @@ public class QuanNewsServiceImpl extends ServiceImpl<QuanNewsMapper, QuanNews> i
|
|
|
*/
|
|
|
public RestResponse appNews(QuanNewsReq request) {
|
|
|
Page<QuanNews> page = new Page<>(request.getPageNum(), request.getPageSize());
|
|
|
- IPage<Map<String, Object>> news = this.pageMaps(page, new QueryWrapper<QuanNews>()
|
|
|
- .select("id", "title", "content", "top_serial topSerial", "video_url videoUrl", "release_id releaseId", "release_user releaseUser", "release_date releaseDate")
|
|
|
+ IPage<QuanNews> news = this.page(page, Wrappers.<QuanNews>query()
|
|
|
.like(null != request.getTitle(), "title", request.getTitle())
|
|
|
.eq("top_serial", "0")
|
|
|
.orderByDesc("release_date"));
|
|
@@ -57,8 +57,7 @@ public class QuanNewsServiceImpl extends ServiceImpl<QuanNewsMapper, QuanNews> i
|
|
|
newsAddLookAndLike(news.getRecords(), lookTimes, likeUsers);
|
|
|
result.put("news", news);
|
|
|
if (request.getHaveTops() == 1) {
|
|
|
- List<Map<String, Object>> topNews = this.listMaps(new QueryWrapper<QuanNews>()
|
|
|
- .select("id", "title", "content", "top_serial topSerial", "video_url videoUrl", "release_id releaseId", "release_user releaseUser", "release_date releaseDate")
|
|
|
+ List<QuanNews> topNews = this.list(Wrappers.<QuanNews>query()
|
|
|
.ne("top_serial", "0")
|
|
|
.orderByAsc("top_serial"));
|
|
|
//把点赞的用户数量和浏览量整入新闻字段中
|
|
@@ -70,8 +69,9 @@ public class QuanNewsServiceImpl extends ServiceImpl<QuanNewsMapper, QuanNews> i
|
|
|
|
|
|
public RestResponse news(QuanNewsReq request) {
|
|
|
Page<QuanNews> page = new Page<>(request.getPageNum(), request.getPageSize());
|
|
|
- IPage<Map<String, Object>> news = this.pageMaps(page, new QueryWrapper<QuanNews>()
|
|
|
- .select("id", "title", "content", "top_serial topSerial", "video_url videoUrl", "release_id releaseId", "release_user releaseUser", "release_date releaseDate")
|
|
|
+ IPage<QuanNews> news = this.page(page, Wrappers.<QuanNews>query()
|
|
|
+ .orderByDesc("is_top")
|
|
|
+ .orderByAsc("top_serial")
|
|
|
.orderByDesc("release_date"));
|
|
|
//全部新闻的浏览量列表
|
|
|
Map<Object, Object> lookTimes = redisTemplate.boundHashOps("system-quanNews-look-time").entries();
|
|
@@ -81,123 +81,44 @@ public class QuanNewsServiceImpl extends ServiceImpl<QuanNewsMapper, QuanNews> i
|
|
|
return RestResponse.success(news);
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 将新闻置顶
|
|
|
- *
|
|
|
- * @since 2019/12/3 11:23
|
|
|
- */
|
|
|
- public RestResponse top(Long id, Integer type) {
|
|
|
- QuanNews byId = this.getById(id);
|
|
|
- if (byId == null) {
|
|
|
- return RestResponse.success();
|
|
|
- }
|
|
|
- //1置顶 0取消置顶
|
|
|
- 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) {
|
|
|
- if (top.getTopSerial() < serial) {
|
|
|
- top.setTopSerial(top.getTopSerial() + 1);
|
|
|
- }
|
|
|
- }
|
|
|
- byId.setTopSerial(1);
|
|
|
- //更新排序
|
|
|
- this.updateBatchById(tops);
|
|
|
- this.updateById(byId);
|
|
|
- } else {
|
|
|
- //如果新闻不是置顶新闻
|
|
|
- //获取置顶新闻
|
|
|
- List<QuanNews> news = this.list(new QueryWrapper<QuanNews>().select("id", "top_serial").ne("top_serial", 0));
|
|
|
- if (!news.isEmpty()) {
|
|
|
- //如果有置顶新闻
|
|
|
- news.forEach(n -> {
|
|
|
- n.setTopSerial(n.getTopSerial() + 1);
|
|
|
- });
|
|
|
- this.updateBatchById(news, 100);
|
|
|
- }
|
|
|
- byId.setTopSerial(1);
|
|
|
- //更新置顶新闻列表,新闻
|
|
|
- if (this.updateById(byId)) {
|
|
|
- return RestResponse.success(null, "置顶成功");
|
|
|
- } else {
|
|
|
- return RestResponse.fail();
|
|
|
- }
|
|
|
- }
|
|
|
- return RestResponse.success(null, "置顶成功");
|
|
|
- }
|
|
|
- //1置顶 0取消置顶
|
|
|
- if (type == 0) {
|
|
|
- if (byId.getTopSerial() == 0) {
|
|
|
- //如果不是置顶新闻
|
|
|
- return RestResponse.success(null, "不是置顶新闻");
|
|
|
- }
|
|
|
- List<QuanNews> tops = this.list(new QueryWrapper<QuanNews>().select("id", "top_serial").ne("top_serial", 0).ne("id", id));
|
|
|
- //如果置顶新闻为0个
|
|
|
- if (tops.isEmpty()) {
|
|
|
- byId.setTopSerial(0);
|
|
|
- if (this.updateById(byId)) {
|
|
|
- return RestResponse.success(null, "取消置顶成功");
|
|
|
- } else {
|
|
|
- return RestResponse.fail();
|
|
|
- }
|
|
|
- }
|
|
|
- //比这个新闻排序大的都 序号-1
|
|
|
- tops.forEach(top -> {
|
|
|
- if (top.getTopSerial() > byId.getTopSerial()) {
|
|
|
- top.setTopSerial(top.getTopSerial() - 1);
|
|
|
- }
|
|
|
- });
|
|
|
- byId.setTopSerial(0);
|
|
|
- if (this.updateById(byId) && this.updateBatchById(tops)) {
|
|
|
- return RestResponse.success(null, "取消置顶成功");
|
|
|
- } else {
|
|
|
- return RestResponse.fail();
|
|
|
- }
|
|
|
- }
|
|
|
- return RestResponse.failParam();
|
|
|
- }
|
|
|
-
|
|
|
//把点赞的用户数量和浏览量整入新闻字段中
|
|
|
- void newsAddLookAndLike(List<Map<String, Object>> records, Map<Object, Object> lookTimes, Map<Object, Object> likeUsers) {
|
|
|
- for (Map<String, Object> record : records) {
|
|
|
- Object id = record.get("id");
|
|
|
+ void newsAddLookAndLike(List<QuanNews> records, Map<Object, Object> lookTimes, Map<Object, Object> likeUsers) {
|
|
|
+ for (QuanNews quanNews : records) {
|
|
|
+ Long id = quanNews.getId();
|
|
|
//如果没有浏览量
|
|
|
if (lookTimes.isEmpty()) {
|
|
|
- record.put("lookNum", 0);
|
|
|
+ quanNews.setLookNum(0L);
|
|
|
} else {
|
|
|
//遍历lookTimes,查看对应id的新闻浏览量
|
|
|
for (Map.Entry<Object, Object> entry : lookTimes.entrySet()) {
|
|
|
Object key = entry.getKey();
|
|
|
- Object value = entry.getValue();
|
|
|
+ Long value = Long.valueOf((Integer) entry.getValue());
|
|
|
if (key.equals(id.toString())) {
|
|
|
- record.put("lookNum", value);
|
|
|
+ quanNews.setLookNum(value);
|
|
|
break;
|
|
|
}
|
|
|
- record.put("lookNum", 0);
|
|
|
+ quanNews.setLookNum(0L);
|
|
|
}
|
|
|
}
|
|
|
//如果没有用户喜爱
|
|
|
if (likeUsers.isEmpty()) {
|
|
|
- record.put("likeNum", 0);
|
|
|
+ quanNews.setLikeNum(0L);
|
|
|
} else {
|
|
|
//遍历likeUsers,查看对应id的新闻的点赞量
|
|
|
for (Map.Entry<Object, Object> entry : likeUsers.entrySet()) {
|
|
|
String k = entry.getKey().toString();
|
|
|
ArrayList v = (ArrayList) entry.getValue();
|
|
|
if (k.equals(id.toString())) {
|
|
|
- record.put("likeNum", v.size());
|
|
|
+ quanNews.setLikeNum((long) v.size());
|
|
|
break;
|
|
|
}
|
|
|
- record.put("likeNum", 0);
|
|
|
+ quanNews.setLikeNum(0L);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+ @SuppressWarnings({"unchecked", "rawtypes"})
|
|
|
public RestResponse like(QuanNewsReq request) {
|
|
|
String userId = request.getUserId().toString();
|
|
|
String id = request.getId().toString();
|
|
@@ -222,24 +143,26 @@ public class QuanNewsServiceImpl extends ServiceImpl<QuanNewsMapper, QuanNews> i
|
|
|
}
|
|
|
|
|
|
//获取一条新闻
|
|
|
- public RestResponse getQuanNews(QuanNewsReq request) {
|
|
|
- Map<String, Object> byId = this.getMap(new QueryWrapper<QuanNews>().eq("id", request.getId()));
|
|
|
- if (null != byId) {
|
|
|
- String id = byId.get("id").toString();
|
|
|
- Long lookNum = redisTemplate.boundHashOps("system-quanNews-look-time").increment(id, 1);
|
|
|
- int isLike;
|
|
|
- ArrayList users = (ArrayList) redisTemplate.opsForHash().get("system-quanNews-like-users", id);
|
|
|
- if (users != null && users.contains(request.getUserId().toString())) {
|
|
|
- isLike = 1;
|
|
|
- } else {
|
|
|
- isLike = 0;
|
|
|
- }
|
|
|
- byId.put("lookNum", lookNum);
|
|
|
- byId.put("isLike", isLike);
|
|
|
- return RestResponse.success(byId, "成功");
|
|
|
- } else {
|
|
|
+ @SuppressWarnings("rawtypes")
|
|
|
+ public RestResponse getNews(QuanNewsReq quanNewsReq) {
|
|
|
+ QuanNews byId = this.getById(quanNewsReq);
|
|
|
+ if (null == byId) {
|
|
|
return RestResponse.success();
|
|
|
}
|
|
|
+ String id = byId.getId().toString();
|
|
|
+ Long lookNum = redisTemplate
|
|
|
+ .boundHashOps("system-quanNews-look-time").increment(id, 1);
|
|
|
+ ArrayList users = (ArrayList) redisTemplate
|
|
|
+ .opsForHash().get("system-quanNews-like-users", id);
|
|
|
+ Long userId = quanNewsReq.getUserId();
|
|
|
+ boolean isLike = false;
|
|
|
+ if (null != userId) {
|
|
|
+ isLike = users != null && users.contains(userId.toString());
|
|
|
+ }
|
|
|
+ byId.setLookNum(lookNum);
|
|
|
+ byId.setLikeNum(users != null ? users.size() : 0L);
|
|
|
+ byId.setIsLike(isLike);
|
|
|
+ return RestResponse.success(byId, "成功");
|
|
|
}
|
|
|
|
|
|
public RestResponse areas() {
|