|
@@ -1,5 +1,6 @@
|
|
|
package cn.com.ty.lift.quan.news.service.impl;
|
|
|
|
|
|
+import cn.com.ty.lift.quan.news.dao.entity.MapInfo;
|
|
|
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;
|
|
@@ -9,10 +10,14 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.fasterxml.jackson.databind.DeserializationFeature;
|
|
|
+import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
import org.springframework.data.redis.core.RedisTemplate;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.web.client.RestTemplate;
|
|
|
|
|
|
+import java.io.IOException;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
@@ -37,11 +42,14 @@ public class QuanNewsServiceImpl extends ServiceImpl<QuanNewsMapper, QuanNews> i
|
|
|
*
|
|
|
* @since 2019/12/3 10:30
|
|
|
*/
|
|
|
- public RestResponse news(Long pageNum, Long pageSize, Integer haveTops) {
|
|
|
- Page<QuanNews> page = new Page<>(pageNum, pageSize);
|
|
|
+ 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_path videoPath","release_id releaseId","release_user releaseUser","release_date releaseDate")
|
|
|
- .eq("top_serial", "0").orderByDesc("release_date"));
|
|
|
+ .select("id", "title", "content", "top_serial topSerial", "video_path videoPath", "release_id releaseId", "release_user releaseUser", "release_date releaseDate")
|
|
|
+ .like(null != request.getDistrict(), "area_code_id", request.getDistrict())
|
|
|
+ .like(null != request.getTitle(), "title", request.getTitle())
|
|
|
+ .eq("top_serial", "0")
|
|
|
+ .orderByDesc("release_date"));
|
|
|
//全部新闻的浏览量列表
|
|
|
Map<Object, Object> lookTimes = redisTemplate.boundHashOps("system-quanNews-look-time").entries();
|
|
|
//全部新闻的点赞用户列表
|
|
@@ -49,7 +57,7 @@ public class QuanNewsServiceImpl extends ServiceImpl<QuanNewsMapper, QuanNews> i
|
|
|
HashMap<String, Object> result = new HashMap<>();
|
|
|
newsAddLookAndLike(news.getRecords(), lookTimes, likeUsers);
|
|
|
result.put("news", news);
|
|
|
- if (haveTops == 1) {
|
|
|
+ if (request.getHaveTops() == 1) {
|
|
|
List<Map<String, Object>> topNews = this.listMaps(new QueryWrapper<QuanNews>().ne("top_serial", "0").orderByAsc("top_serial"));
|
|
|
//把点赞的用户数量和浏览量整入新闻字段中
|
|
|
newsAddLookAndLike(topNews, lookTimes, likeUsers);
|
|
@@ -174,35 +182,28 @@ public class QuanNewsServiceImpl extends ServiceImpl<QuanNewsMapper, QuanNews> i
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public RestResponse addNew(QuanNewsReq req) {
|
|
|
+ public RestResponse addNew(QuanNewsReq request) {
|
|
|
QuanNews quanNews = new QuanNews();
|
|
|
- quanNews.setTitle(req.getTitle())
|
|
|
- .setContent(req.getContent())
|
|
|
- .setReleaseId(req.getReleaseId())
|
|
|
- .setReleaseUser(req.getReleaseUser());
|
|
|
-
|
|
|
- List<QuanNews> tops;
|
|
|
- if (req.getIsTop() != 0) {
|
|
|
+ quanNews.setDistrict(request.getDistrict())
|
|
|
+ .setTitle(request.getTitle())
|
|
|
+ .setContent(request.getContent())
|
|
|
+ .setReleaseId(request.getReleaseId())
|
|
|
+ .setReleaseUser(request.getReleaseUser())
|
|
|
+ .setTopSerial(0);
|
|
|
+ if (request.getIsTop() != 0) {
|
|
|
+ List<QuanNews> tops;
|
|
|
//获取置顶新闻列表
|
|
|
tops = this.list(new QueryWrapper<QuanNews>().ne("top_serial", 0));
|
|
|
- //设置新添加新闻的数据
|
|
|
+ //设置添加的新闻置顶排序为第1个
|
|
|
quanNews.setTopSerial(1);
|
|
|
- //遍历排序加1
|
|
|
+ //遍历其它新闻,序号+1
|
|
|
if (!tops.isEmpty()) {
|
|
|
- tops.forEach(top -> {
|
|
|
- top.setTopSerial(top.getTopSerial() + 1);
|
|
|
- });
|
|
|
+ tops.forEach(top -> top.setTopSerial(top.getTopSerial() + 1));
|
|
|
if (this.updateBatchById(tops) && this.save(quanNews)) {
|
|
|
return RestResponse.success(quanNews.getId(), "成功");
|
|
|
} else {
|
|
|
return RestResponse.fail();
|
|
|
}
|
|
|
- } else {
|
|
|
- if (this.save(quanNews)) {
|
|
|
- return RestResponse.success(quanNews.getId(), "成功");
|
|
|
- } else {
|
|
|
- return RestResponse.fail();
|
|
|
- }
|
|
|
}
|
|
|
}
|
|
|
//添加新闻
|
|
@@ -248,15 +249,12 @@ public class QuanNewsServiceImpl extends ServiceImpl<QuanNewsMapper, QuanNews> i
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public RestResponse like(QuanNewsReq req) {
|
|
|
- String userId = req.getUserId().toString();
|
|
|
- String id = req.getId().toString();
|
|
|
+ public RestResponse like(QuanNewsReq request) {
|
|
|
+ String userId = request.getUserId().toString();
|
|
|
+ String id = request.getId().toString();
|
|
|
ArrayList users = (ArrayList) redisTemplate.opsForHash().get("system-quanNews-like-users", id);
|
|
|
- if (users == null) {
|
|
|
+ if (null == users) {
|
|
|
users = new ArrayList<>();
|
|
|
- users.add(userId);
|
|
|
- redisTemplate.opsForHash().put("system-quanNews-like-users", id, users);
|
|
|
- return RestResponse.success(null, "点赞成功");
|
|
|
} else {
|
|
|
//遍历userId列表
|
|
|
for (Object user : users) {
|
|
@@ -267,22 +265,22 @@ public class QuanNewsServiceImpl extends ServiceImpl<QuanNewsMapper, QuanNews> i
|
|
|
return RestResponse.success(null, "取消点赞成功");
|
|
|
}
|
|
|
}
|
|
|
- //如果列表内没有这个uid就标记喜欢
|
|
|
- users.add(userId);
|
|
|
- redisTemplate.opsForHash().put("system-quanNews-like-users", id, users);
|
|
|
- return RestResponse.success(null, "点赞成功");
|
|
|
}
|
|
|
+ //如果没有列表或列表内没有这个uid就标记喜欢
|
|
|
+ users.add(userId);
|
|
|
+ redisTemplate.opsForHash().put("system-quanNews-like-users", id, users);
|
|
|
+ return RestResponse.success(null, "点赞成功");
|
|
|
}
|
|
|
|
|
|
//获取一条新闻
|
|
|
- public RestResponse getQuanNews(QuanNewsReq req) {
|
|
|
- Map<String, Object> byId = this.getMap(new QueryWrapper<QuanNews>().eq("id", req.getId()));
|
|
|
+ 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(req.getUserId().toString())) {
|
|
|
+ if (users != null && users.contains(request.getUserId().toString())) {
|
|
|
isLike = 1;
|
|
|
} else {
|
|
|
isLike = 0;
|
|
@@ -294,4 +292,23 @@ public class QuanNewsServiceImpl extends ServiceImpl<QuanNewsMapper, QuanNews> i
|
|
|
return RestResponse.success();
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ public RestResponse areas() {
|
|
|
+ List<String> areas = this.getBaseMapper().areas();
|
|
|
+ if (areas.isEmpty()) {
|
|
|
+ return RestResponse.success();
|
|
|
+ }
|
|
|
+ return RestResponse.success(areas);
|
|
|
+ }
|
|
|
+
|
|
|
+ //传入经纬度,返回城市名称,基于百度地图,文档http://lbsyun.baidu.com/index.php?title=uri/api/web#service-page-anchor2
|
|
|
+ public RestResponse location(String point) throws IOException {
|
|
|
+ ObjectMapper jackson = new ObjectMapper();
|
|
|
+ jackson.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
|
|
|
+ String body = new RestTemplate()
|
|
|
+ .getForEntity("http://api.map.baidu.com/geocoder?location=" + point + "&output=json", String.class)
|
|
|
+ .getBody();
|
|
|
+ MapInfo mapInfo = jackson.readValue(body, MapInfo.class);
|
|
|
+ return RestResponse.success(mapInfo.getCity());
|
|
|
+ }
|
|
|
}
|