55import com .lzq .api .dto .ExampleAccount ;
66import com .lzq .api .service .AccountResultService ;
77import com .lzq .api .service .ExampleAccountService ;
8+ import com .lzq .web .utils .JWTUtils ;
89import com .lzq .web .utils .ResultMapUtils ;
9- import com .sun .istack .internal .NotNull ;
1010import io .swagger .annotations .Api ;
1111import io .swagger .annotations .ApiOperation ;
1212import lombok .extern .slf4j .Slf4j ;
1313import org .apache .dubbo .config .annotation .Reference ;
1414import org .springframework .beans .factory .annotation .Autowired ;
1515import org .springframework .data .redis .core .RedisTemplate ;
1616import org .springframework .web .bind .annotation .GetMapping ;
17- import org .springframework .web .bind .annotation .PostMapping ;
1817import org .springframework .web .bind .annotation .RequestMapping ;
1918import org .springframework .web .bind .annotation .RestController ;
2019
20+ import javax .servlet .http .HttpServletRequest ;
2121import java .util .List ;
2222import java .util .Map ;
2323
2929@ Slf4j
3030@ RestController
3131@ RequestMapping ("/search" )
32- @ Api (value = "搜索接口" ,description = "搜索接口" )
32+ @ Api (value = "搜索接口" , description = "搜索接口" )
3333public 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