Skip to content

Commit 54400ec

Browse files
committed
查看自己的关注/粉丝
查看自己的粉丝时判断是否互关 查看他人的关注用户或粉丝时判断是否自己关注了该用户
1 parent bfd0057 commit 54400ec

File tree

3 files changed

+128
-35
lines changed

3 files changed

+128
-35
lines changed

springboot-dubbo-api/src/main/java/com/lzq/api/dto/AccountResult.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ public class AccountResult implements Serializable{
9999
* 我的关注
100100
*/
101101
@JsonProperty("myFollow")
102-
private Boolean myFollow;
102+
private Boolean myFollow=false;
103103
/**
104104
* 创建时间
105105
*/

springboot-dubbo-api/src/main/java/com/lzq/api/dto/ExampleAccount.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public class ExampleAccount implements Serializable {
4747
*/
4848
@TableField(exist = false)
4949
@JsonProperty("myFollow")
50-
private Boolean myFollow;
50+
private Boolean myFollow=false;
5151
/**
5252
* 主键
5353
*/
@@ -81,5 +81,5 @@ public class ExampleAccount implements Serializable {
8181

8282
@TableField(exist = false)
8383
@JsonProperty("myFavorites")
84-
private Boolean myFavorites;
84+
private Boolean myFavorites=false;
8585
}

springboot-dubbo-web/src/main/java/com/lzq/web/controller/SearchController.java

Lines changed: 125 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,19 @@
55
import com.lzq.api.dto.ExampleAccount;
66
import com.lzq.api.service.AccountResultService;
77
import com.lzq.api.service.ExampleAccountService;
8+
import com.lzq.web.utils.JWTUtils;
89
import com.lzq.web.utils.ResultMapUtils;
9-
import com.sun.istack.internal.NotNull;
1010
import io.swagger.annotations.Api;
1111
import io.swagger.annotations.ApiOperation;
1212
import lombok.extern.slf4j.Slf4j;
1313
import org.apache.dubbo.config.annotation.Reference;
1414
import org.springframework.beans.factory.annotation.Autowired;
1515
import org.springframework.data.redis.core.RedisTemplate;
1616
import org.springframework.web.bind.annotation.GetMapping;
17-
import org.springframework.web.bind.annotation.PostMapping;
1817
import org.springframework.web.bind.annotation.RequestMapping;
1918
import org.springframework.web.bind.annotation.RestController;
2019

20+
import javax.servlet.http.HttpServletRequest;
2121
import java.util.List;
2222
import java.util.Map;
2323

@@ -29,7 +29,7 @@
2929
@Slf4j
3030
@RestController
3131
@RequestMapping("/search")
32-
@Api(value = "搜索接口",description = "搜索接口")
32+
@Api(value = "搜索接口", description = "搜索接口")
3333
public class SearchController {
3434

3535
@Reference
@@ -44,75 +44,168 @@ public class SearchController {
4444

4545
/**
4646
* 根据用户名查询用户信息
47+
*
4748
* @param username
4849
* @return
4950
*/
5051
@GetMapping("/queryByUsername")
5152
@ApiOperation("根据用户名查询用户信息")
52-
public Map<String,Object> queryByUsername(String username){
53+
public Map<String, Object> queryByUsername(String username) {
5354
AccountResult result = accountResultService.queryByUsername(username);
54-
return ResultMapUtils.ResultMap(true,0,result);
55+
return ResultMapUtils.ResultMap(true, 0, result);
5556
}
5657

5758

5859
/**
5960
* 获取关注列表
61+
*
6062
* @param result
63+
* @param currentPage 当前页
6164
* @return
6265
*/
6366
@GetMapping("/getFollow")
6467
@ApiOperation("获取关注列表")
65-
public Map<String,Object> getFollowList(AccountResult result,Integer currentPage){
66-
PageInfo<AccountResult> list = accountResultService.getFollowList(result, currentPage);
67-
return ResultMapUtils.ResultMap(true,0,list);
68+
public Map<String, Object> getFollowList(HttpServletRequest request, AccountResult result, Integer currentPage) {
69+
String username = null;
70+
PageInfo<AccountResult> list = null;
71+
//判断用户是否登录
72+
if (request.getHeader("token") != null) {
73+
username = JWTUtils.verify(request.getHeader("token"))
74+
.getClaim("username").asString();
75+
}
76+
//登录的情况
77+
if (username != null) {
78+
//查看用户自己的关注
79+
if (username.equals(result.getUsername())) {
80+
list = accountResultService.getFollowList(result, currentPage);
81+
List<AccountResult> results = list.getList();
82+
for (AccountResult accountResult : results) {
83+
accountResult.setMyFollow(true);
84+
}
85+
list.setList(results);
86+
} else { //用户查看他人的关注
87+
//获取缓存中的所有关注的用户
88+
List<String> followList = redisTemplate.opsForList().range(username, 0, -1);
89+
list = accountResultService.getFollowList(result, currentPage);
90+
//通过遍历查找用户也关注的用户
91+
List<AccountResult> results = list.getList();
92+
for (AccountResult accountResult : results) {
93+
//当查询到同样的用户时,修改其状态
94+
if (followList.contains(accountResult.getUsername())) {
95+
accountResult.setMyFollow(true);
96+
} else if (username.equals(accountResult.getUsername())) {
97+
//当用户查询到自己时不需要设置任何状态
98+
accountResult.setMyFollow(null);
99+
}
100+
}
101+
//添加回分页集合中
102+
list.setList(results);
103+
}
104+
} else { //未登录的情况
105+
list = accountResultService.getFollowList(result, currentPage);
106+
}
107+
return ResultMapUtils.ResultMap(true, 0, list);
68108
}
69109

70110
/**
71111
* 获取粉丝列表
72-
* @param result
112+
*
113+
* @param request
114+
* @param result 实体类
115+
* @param currentPage 当前页
73116
* @return
74117
*/
75118
@GetMapping("/getFan")
76119
@ApiOperation("获取粉丝列表")
77-
public Map<String,Object> getFanList(AccountResult result,Integer currentPage){
78-
PageInfo<AccountResult> list = accountResultService.getFanList(result, currentPage);
79-
return ResultMapUtils.ResultMap(true,0,list);
120+
public Map<String, Object> getFanList(HttpServletRequest request, AccountResult result, Integer currentPage) {
121+
String username = null;
122+
PageInfo<AccountResult> list = null;
123+
//判断用户是否登录
124+
if (request.getHeader("token") != null) {
125+
username = JWTUtils.verify(request.getHeader("token"))
126+
.getClaim("username").asString();
127+
}
128+
//登录的情况
129+
if (username != null) {
130+
//查看用户自己的粉丝
131+
if (username.equals(result.getUsername())) {
132+
list = accountResultService.getFanList(result, currentPage);
133+
List<AccountResult> results = list.getList();
134+
log.info("我到了 哈哈哈");
135+
//获取缓存中的所有关注的用户
136+
List<String> followList = redisTemplate.opsForList().range(username, 0, -1);
137+
for (AccountResult accountResult : results) {
138+
//当互关时,修改状态
139+
if (followList.contains(accountResult.getUsername())) {
140+
accountResult.setMyFollow(true);
141+
}
142+
}
143+
list.setList(results);
144+
} else { //用户查看他人的粉丝
145+
//获取缓存中的所有关注的用户
146+
List<String> followList = redisTemplate.opsForList().range(username, 0, -1);
147+
list = accountResultService.getFanList(result, currentPage);
148+
//通过遍历查找当前用户也关注的用户
149+
List<AccountResult> results = list.getList();
150+
for (AccountResult accountResult : results) {
151+
//当查询到同样的用户时,修改其状态
152+
if (followList.contains(accountResult.getUsername())) {
153+
accountResult.setMyFollow(true);
154+
} else if (username.equals(accountResult.getUsername())) {
155+
//当用户查询到自己时不需要设置任何状态
156+
accountResult.setMyFollow(null);
157+
}
158+
}
159+
//添加回分页集合中
160+
list.setList(results);
161+
}
162+
} else { //未登录的情况
163+
list = accountResultService.getFanList(result, currentPage);
164+
}
165+
return ResultMapUtils.ResultMap(true, 0, list);
80166
}
81167

82168

83169
/**
84170
* 根据实例名查询实例
171+
*
172+
* @param request
85173
* @param exampleName 实例名
86-
* @param username 查询者的用户名
174+
* @param currentPage 当前页
87175
* @return
88176
*/
89177
@GetMapping("/queryByExampleName")
90178
@ApiOperation("根据实例名查询实例")
91-
public Map<String,Object> queryByExampleName(String exampleName, String username, Integer currentPage){
179+
public Map<String, Object> queryByExampleName(HttpServletRequest request, String exampleName, Integer currentPage) {
180+
String username = null;
181+
if (request.getHeader("token") != null) {
182+
//获取token中的用户名
183+
username = JWTUtils.verify(request.getHeader("token"))
184+
.getClaim("username").toString();
185+
}
92186
//先查询实例用户集合
93187
PageInfo<ExampleAccount> pageInfo = exampleAccountService.queryByExampleName(exampleName, currentPage);
94188
List<ExampleAccount> list = pageInfo.getList();
95-
List<String> followlist = redisTemplate.opsForList().range(username, 0, -1);
96-
List<String> favoriteslist = redisTemplate.opsForList().range(username+"fav", 0, -1);
97-
//遍历修改数组
98-
for (ExampleAccount exampleAccount : list) {
99-
//当该用户被当前用户关注时设置为true,否则为false
100-
if (followlist.contains(exampleAccount.getUsername())){
101-
exampleAccount.setMyFollow(true);
102-
}else {
103-
exampleAccount.setMyFollow(false);
104-
}
105-
//当该实例被当前用户所喜爱时设置为true,否则为false
106-
if (favoriteslist.contains(exampleAccount.getExampleId())){
107-
exampleAccount.setMyFavorites(true);
108-
}else {
109-
exampleAccount.setMyFavorites(false);
189+
//当用户不登陆时不需要进行任何操作查询数据直接返回
190+
if (username != null) {
191+
List<String> followlist = redisTemplate.opsForList().range(username, 0, -1);
192+
List<String> favoriteslist = redisTemplate.opsForList().range(username + "fav", 0, -1);
193+
//遍历修改数组
194+
for (ExampleAccount exampleAccount : list) {
195+
//当该用户被当前用户关注时设置为true,否则为false
196+
if (followlist.contains(exampleAccount.getUsername())) {
197+
exampleAccount.setMyFollow(true);
198+
}
199+
//当该实例被当前用户所喜爱时设置为true,否则为false
200+
if (favoriteslist.contains(exampleAccount.getExampleId())) {
201+
exampleAccount.setMyFavorites(true);
202+
}
110203
}
204+
//把修改好的数据重新放入分页中
205+
pageInfo.setList(list);
111206
}
112-
//把修改好的数据重新放入分页中
113-
pageInfo.setList(list);
114207
log.info(list.toString());
115-
return ResultMapUtils.ResultMap(true,0,pageInfo);
208+
return ResultMapUtils.ResultMap(true, 0, pageInfo);
116209
}
117210

118211
}

0 commit comments

Comments
 (0)