Commit 78cbd4d4 by 段启岩

用户备注完成

parent 6e4e4eb4
...@@ -655,11 +655,27 @@ DELETE /api/post/comment/{commentId} ...@@ -655,11 +655,27 @@ DELETE /api/post/comment/{commentId}
GET /api/post/{postId}/comments GET /api/post/{postId}/comments
``` ```
:white_check_mark: 10.我关注的用户的动态列表
``` ```
GET /api/posts/followed GET /api/posts/followed
``` ```
###### :white_check_mark: 10.我关注的用户的动态列表 :white_check_mark: 11.推荐动态
```
GET /api/post/recommends
```
:white_check_mark: 12.话题下的推荐动态
```
GET /api/topic/{topicId}/post/recommends
```
######
### 十一、CMS ### 十一、CMS
......
package cn.meteor.beyondclouds.core.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* @author meteor
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface ReplaceWithRemarks {
String id() default "userId";
String[] fields() default {"userNick", "nickName"};
}
package cn.meteor.beyondclouds.core.aop;
import cn.meteor.beyondclouds.common.dto.PageDTO;
import cn.meteor.beyondclouds.common.enums.ErrorCode;
import cn.meteor.beyondclouds.config.properties.BeyondCloudsProperties;
import cn.meteor.beyondclouds.core.annotation.ReplaceWithRemarks;
import cn.meteor.beyondclouds.core.api.Response;
import cn.meteor.beyondclouds.core.lock.RedisLockFactory;
import cn.meteor.beyondclouds.modules.user.entity.UserRemarks;
import cn.meteor.beyondclouds.modules.user.service.IUserRemarksService;
import cn.meteor.beyondclouds.modules.user.service.IUserService;
import cn.meteor.beyondclouds.util.Md5Utils;
import cn.meteor.beyondclouds.util.SubjectUtils;
import com.baomidou.mybatisplus.core.conditions.query.Query;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.Field;
import java.util.*;
import java.util.concurrent.locks.Lock;
import java.util.stream.Collectors;
/**
* 用户备注解析器
* @author meteor
*/
@Aspect
@Component
@Slf4j
public class RemarksReplacer {
private IUserRemarksService userRemarksService;
@Autowired
public RemarksReplacer(IUserRemarksService userRemarksService) {
this.userRemarksService = userRemarksService;
}
@Around(value = "@annotation(cn.meteor.beyondclouds.core.annotation.ReplaceWithRemarks)")
public Object processTx(ProceedingJoinPoint jp) throws Throwable {
Object retValue = jp.proceed();
MethodSignature methodSignature = (MethodSignature) jp.getSignature();
if (!(retValue instanceof Response)) {
return retValue;
}
Response<?> response = Response.class.cast(retValue);
if (0 != response.getCode() || response.getData() == null) {
return retValue;
}
if (SubjectUtils.isAuthenticated()) {
Object data = response.getData();
ReplaceWithRemarks replaceWithRemarks = methodSignature.getMethod().getAnnotation(ReplaceWithRemarks.class);
Set<Object> checked = new HashSet<>(100);
QueryWrapper<UserRemarks> userRemarksQueryWrapper = new QueryWrapper<>();
userRemarksQueryWrapper.eq("user_id", SubjectUtils.getSubject().getId());
Map<String, String> remarksMap = userRemarksService.list(userRemarksQueryWrapper).stream()
.collect(Collectors.toMap(UserRemarks::getMarkedId, UserRemarks::getRemarks));
parseAndReplace(data, replaceWithRemarks.id(), replaceWithRemarks.fields(), checked, remarksMap);
return retValue;
} else {
return retValue;
}
}
/**
* 解析字段并替换值
* @param data
* @param id
* @param fields
* @param checked
* @param remarksMap
*/
private void parseAndReplace(Object data, String id, String[] fields, Set<Object> checked, Map<String, String> remarksMap) {
if (checked.contains(data)) {
return;
}
// 将该对象添加到检测过的列表里面
checked.add(data);
// 如果对象为可迭代对象,则遍历对象
if (data instanceof Iterable) {
for (Object obj : (Collection) data) {
parseAndReplace(obj, id, fields, checked, remarksMap);
}
} else if (data instanceof PageDTO) {
// 如果对象为pageDTO,则遍历其分页内容
List<Object> dataList = ((PageDTO) data).getDataList();
if (!CollectionUtils.isEmpty(dataList)) {
for (Object obj : dataList) {
parseAndReplace(obj, id, fields, checked, remarksMap);
}
}
} else {
try {
// 遍历对象的每个字段,如果是可迭代对象,则继续遍历
// 获取用户ID
Field idField = getField(data, id);
if (null == idField) {
return;
}
idField.setAccessible(true);
String userId = (String) idField.get(data);
String remarks = remarksMap.get(userId);
// 如果有备注,则设置每个昵称的备注
if (!StringUtils.isEmpty(remarks)) {
for (String fieldName : fields) {
Field nickField = getField(data, fieldName);
if (null != nickField) {
nickField.setAccessible(true);
nickField.set(data, remarks);
log.debug("替换 {} 的字段 {} 值为 {}", data.getClass().getName(), nickField.getName(), remarks);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
* 获取字段,如果本类找不到,则从父类找
* @param obj
* @param fieldName
* @return
*/
private Field getField(Object obj, String fieldName) {
Class clazz = obj.getClass();
Field field = null;
do {
try {
field = clazz.getDeclaredField(fieldName);
} catch (NoSuchFieldException e) {}
clazz = clazz.getSuperclass();
} while (null == field && null != clazz);
return field;
}
}
...@@ -5,6 +5,7 @@ import cn.meteor.beyondclouds.common.dto.PageDTO; ...@@ -5,6 +5,7 @@ import cn.meteor.beyondclouds.common.dto.PageDTO;
import cn.meteor.beyondclouds.core.annotation.Anonymous; import cn.meteor.beyondclouds.core.annotation.Anonymous;
import cn.meteor.beyondclouds.core.annotation.CurrentSubject; import cn.meteor.beyondclouds.core.annotation.CurrentSubject;
import cn.meteor.beyondclouds.core.annotation.PreventDuplicate; import cn.meteor.beyondclouds.core.annotation.PreventDuplicate;
import cn.meteor.beyondclouds.core.annotation.ReplaceWithRemarks;
import cn.meteor.beyondclouds.core.api.Response; import cn.meteor.beyondclouds.core.api.Response;
import cn.meteor.beyondclouds.core.authentication.Subject; import cn.meteor.beyondclouds.core.authentication.Subject;
import cn.meteor.beyondclouds.core.flow.AccessInfo; import cn.meteor.beyondclouds.core.flow.AccessInfo;
...@@ -82,7 +83,7 @@ public class BlogApi { ...@@ -82,7 +83,7 @@ public class BlogApi {
} }
} }
@ReplaceWithRemarks
@Anonymous @Anonymous
@ApiOperation("博客详情") @ApiOperation("博客详情")
@GetMapping("/blog/{blogId}") @GetMapping("/blog/{blogId}")
...@@ -103,6 +104,7 @@ public class BlogApi { ...@@ -103,6 +104,7 @@ public class BlogApi {
} }
} }
@ReplaceWithRemarks
@PreventDuplicate @PreventDuplicate
@Anonymous @Anonymous
@ApiOperation("博客列表") @ApiOperation("博客列表")
...@@ -135,6 +137,7 @@ public class BlogApi { ...@@ -135,6 +137,7 @@ public class BlogApi {
* @param userId * @param userId
* @return * @return
*/ */
@ReplaceWithRemarks
@Anonymous @Anonymous
@ApiOperation("他人博客列表") @ApiOperation("他人博客列表")
@GetMapping("/user/{userId}/blogs") @GetMapping("/user/{userId}/blogs")
...@@ -166,6 +169,7 @@ public class BlogApi { ...@@ -166,6 +169,7 @@ public class BlogApi {
} }
} }
@ReplaceWithRemarks
@Anonymous @Anonymous
@ApiOperation("热门博客") @ApiOperation("热门博客")
@GetMapping("/blog/hots") @GetMapping("/blog/hots")
...@@ -175,6 +179,7 @@ public class BlogApi { ...@@ -175,6 +179,7 @@ public class BlogApi {
return Response.success(blogPageDTO); return Response.success(blogPageDTO);
} }
@ReplaceWithRemarks
@Anonymous @Anonymous
@ApiOperation("根据标签查找博客列表") @ApiOperation("根据标签查找博客列表")
@GetMapping("/tag/{tagId}/blogs") @GetMapping("/tag/{tagId}/blogs")
...@@ -188,6 +193,7 @@ public class BlogApi { ...@@ -188,6 +193,7 @@ public class BlogApi {
return Response.success(blogPageDTO); return Response.success(blogPageDTO);
} }
@ReplaceWithRemarks
@Anonymous @Anonymous
@ApiOperation("相关博客") @ApiOperation("相关博客")
@GetMapping("/blog/{blogId}/recommends") @GetMapping("/blog/{blogId}/recommends")
......
...@@ -4,6 +4,7 @@ import cn.meteor.beyondclouds.common.form.PageForm; ...@@ -4,6 +4,7 @@ import cn.meteor.beyondclouds.common.form.PageForm;
import cn.meteor.beyondclouds.common.dto.PageDTO; import cn.meteor.beyondclouds.common.dto.PageDTO;
import cn.meteor.beyondclouds.core.annotation.Anonymous; import cn.meteor.beyondclouds.core.annotation.Anonymous;
import cn.meteor.beyondclouds.core.annotation.CurrentSubject; import cn.meteor.beyondclouds.core.annotation.CurrentSubject;
import cn.meteor.beyondclouds.core.annotation.ReplaceWithRemarks;
import cn.meteor.beyondclouds.core.api.Response; import cn.meteor.beyondclouds.core.api.Response;
import cn.meteor.beyondclouds.core.authentication.Subject; import cn.meteor.beyondclouds.core.authentication.Subject;
import cn.meteor.beyondclouds.modules.post.dto.PostDTO; import cn.meteor.beyondclouds.modules.post.dto.PostDTO;
...@@ -121,6 +122,7 @@ public class PostApi { ...@@ -121,6 +122,7 @@ public class PostApi {
* @param pageForm * @param pageForm
* @return * @return
*/ */
@ReplaceWithRemarks
@Anonymous @Anonymous
@ApiOperation("动态列表") @ApiOperation("动态列表")
@GetMapping("/posts") @GetMapping("/posts")
...@@ -164,6 +166,7 @@ public class PostApi { ...@@ -164,6 +166,7 @@ public class PostApi {
* @param pageForm * @param pageForm
* @return * @return
*/ */
@ReplaceWithRemarks
@Anonymous @Anonymous
@ApiOperation("他人动态列表") @ApiOperation("他人动态列表")
@GetMapping("/user/{userId}/posts") @GetMapping("/user/{userId}/posts")
...@@ -215,6 +218,7 @@ public class PostApi { ...@@ -215,6 +218,7 @@ public class PostApi {
return postPageDTO; return postPageDTO;
} }
@ReplaceWithRemarks
@ApiOperation("获取我关注的用户的动态列表") @ApiOperation("获取我关注的用户的动态列表")
@GetMapping("/posts/followed") @GetMapping("/posts/followed")
public Response<?> getMyFollowdePosts (@Valid PageForm pageForm , BindingResult bindingResult, @CurrentSubject Subject subject) { public Response<?> getMyFollowdePosts (@Valid PageForm pageForm , BindingResult bindingResult, @CurrentSubject Subject subject) {
...@@ -231,6 +235,7 @@ public class PostApi { ...@@ -231,6 +235,7 @@ public class PostApi {
* @param bindingResult * @param bindingResult
* @return * @return
*/ */
@ReplaceWithRemarks
@Anonymous @Anonymous
@ApiOperation("推荐动态列表") @ApiOperation("推荐动态列表")
@GetMapping("/post/recommends") @GetMapping("/post/recommends")
...@@ -249,6 +254,7 @@ public class PostApi { ...@@ -249,6 +254,7 @@ public class PostApi {
* @param bindingResult * @param bindingResult
* @return * @return
*/ */
@ReplaceWithRemarks
@Anonymous @Anonymous
@ApiOperation("话题下的推荐动态列表") @ApiOperation("话题下的推荐动态列表")
@GetMapping("/topic/{topicId}/post/recommends") @GetMapping("/topic/{topicId}/post/recommends")
......
...@@ -4,6 +4,7 @@ import cn.meteor.beyondclouds.common.form.PageForm; ...@@ -4,6 +4,7 @@ import cn.meteor.beyondclouds.common.form.PageForm;
import cn.meteor.beyondclouds.common.dto.PageDTO; import cn.meteor.beyondclouds.common.dto.PageDTO;
import cn.meteor.beyondclouds.core.annotation.Anonymous; import cn.meteor.beyondclouds.core.annotation.Anonymous;
import cn.meteor.beyondclouds.core.annotation.CurrentSubject; import cn.meteor.beyondclouds.core.annotation.CurrentSubject;
import cn.meteor.beyondclouds.core.annotation.ReplaceWithRemarks;
import cn.meteor.beyondclouds.core.api.Response; import cn.meteor.beyondclouds.core.api.Response;
import cn.meteor.beyondclouds.core.authentication.Subject; import cn.meteor.beyondclouds.core.authentication.Subject;
import cn.meteor.beyondclouds.core.validation.groups.InsertGroup; import cn.meteor.beyondclouds.core.validation.groups.InsertGroup;
...@@ -137,6 +138,7 @@ public class QuestionApi { ...@@ -137,6 +138,7 @@ public class QuestionApi {
* @param questionId 问题ID * @param questionId 问题ID
* @return 问题详情 * @return 问题详情
*/ */
@ReplaceWithRemarks
@Anonymous @Anonymous
@ApiOperation("问题详情") @ApiOperation("问题详情")
@GetMapping("/question/{questionId}") @GetMapping("/question/{questionId}")
...@@ -174,6 +176,7 @@ public class QuestionApi { ...@@ -174,6 +176,7 @@ public class QuestionApi {
* @param pageForm 分页表单 * @param pageForm 分页表单
* @return 问答列表 * @return 问答列表
*/ */
@ReplaceWithRemarks
@Anonymous @Anonymous
@ApiOperation("问答列表") @ApiOperation("问答列表")
@GetMapping("/questions") @GetMapping("/questions")
...@@ -205,6 +208,7 @@ public class QuestionApi { ...@@ -205,6 +208,7 @@ public class QuestionApi {
* @param subject 访问者信息 * @param subject 访问者信息
* @return 我参与的问答列表 * @return 我参与的问答列表
*/ */
@ReplaceWithRemarks
@ApiOperation("我参与的问答列表") @ApiOperation("我参与的问答列表")
@GetMapping("/my/question/participated") @GetMapping("/my/question/participated")
public Response<PageDTO<Question>> getMyParticipateQuestions(@Valid PageForm pageForm, @CurrentSubject Subject subject) { public Response<PageDTO<Question>> getMyParticipateQuestions(@Valid PageForm pageForm, @CurrentSubject Subject subject) {
...@@ -220,6 +224,7 @@ public class QuestionApi { ...@@ -220,6 +224,7 @@ public class QuestionApi {
* @param userId 用户ID * @param userId 用户ID
* @return 用户创建的问答列表 * @return 用户创建的问答列表
*/ */
@ReplaceWithRemarks
@Anonymous @Anonymous
@ApiOperation("用户创建的问答列表") @ApiOperation("用户创建的问答列表")
@GetMapping("/user/{userId}/questions") @GetMapping("/user/{userId}/questions")
...@@ -236,6 +241,7 @@ public class QuestionApi { ...@@ -236,6 +241,7 @@ public class QuestionApi {
* @param userId 用户ID * @param userId 用户ID
* @return 用户参与的问答列表 * @return 用户参与的问答列表
*/ */
@ReplaceWithRemarks
@Anonymous @Anonymous
@ApiOperation("用户参与的问答列表") @ApiOperation("用户参与的问答列表")
@GetMapping("/user/{userId}/question/participated") @GetMapping("/user/{userId}/question/participated")
...@@ -246,6 +252,7 @@ public class QuestionApi { ...@@ -246,6 +252,7 @@ public class QuestionApi {
return Response.success(questionReplyPageDTO); return Response.success(questionReplyPageDTO);
} }
@ReplaceWithRemarks
@Anonymous @Anonymous
@ApiOperation("热门回答") @ApiOperation("热门回答")
@GetMapping("/question/hots") @GetMapping("/question/hots")
...@@ -255,6 +262,7 @@ public class QuestionApi { ...@@ -255,6 +262,7 @@ public class QuestionApi {
return Response.success(questionPageDTO); return Response.success(questionPageDTO);
} }
@ReplaceWithRemarks
@Anonymous @Anonymous
@ApiOperation("相关问答") @ApiOperation("相关问答")
@GetMapping("/question/{questionId}/recommends") @GetMapping("/question/{questionId}/recommends")
...@@ -269,6 +277,7 @@ public class QuestionApi { ...@@ -269,6 +277,7 @@ public class QuestionApi {
} }
} }
@ReplaceWithRemarks
@Anonymous @Anonymous
@ApiOperation("得到标签下的问答列表") @ApiOperation("得到标签下的问答列表")
@GetMapping("/tag/{tagId}/questions") @GetMapping("/tag/{tagId}/questions")
......
...@@ -4,6 +4,7 @@ import cn.meteor.beyondclouds.common.form.PageForm; ...@@ -4,6 +4,7 @@ import cn.meteor.beyondclouds.common.form.PageForm;
import cn.meteor.beyondclouds.common.dto.PageDTO; import cn.meteor.beyondclouds.common.dto.PageDTO;
import cn.meteor.beyondclouds.core.annotation.Anonymous; import cn.meteor.beyondclouds.core.annotation.Anonymous;
import cn.meteor.beyondclouds.core.annotation.CurrentSubject; import cn.meteor.beyondclouds.core.annotation.CurrentSubject;
import cn.meteor.beyondclouds.core.annotation.ReplaceWithRemarks;
import cn.meteor.beyondclouds.core.api.Response; import cn.meteor.beyondclouds.core.api.Response;
import cn.meteor.beyondclouds.core.authentication.Subject; import cn.meteor.beyondclouds.core.authentication.Subject;
import cn.meteor.beyondclouds.core.flow.AccessInfo; import cn.meteor.beyondclouds.core.flow.AccessInfo;
...@@ -130,6 +131,7 @@ public class TopicApi { ...@@ -130,6 +131,7 @@ public class TopicApi {
} }
@ReplaceWithRemarks
@Anonymous @Anonymous
@ApiOperation("话题关注者列表") @ApiOperation("话题关注者列表")
@GetMapping("/topic/{topicId}/follower") @GetMapping("/topic/{topicId}/follower")
...@@ -192,6 +194,7 @@ public class TopicApi { ...@@ -192,6 +194,7 @@ public class TopicApi {
return Response.success(topicPage); return Response.success(topicPage);
} }
@ReplaceWithRemarks
@Anonymous @Anonymous
@ApiOperation("查询话题下的所有动态") @ApiOperation("查询话题下的所有动态")
@GetMapping("/topic/{topicName}/posts") @GetMapping("/topic/{topicName}/posts")
...@@ -221,6 +224,7 @@ public class TopicApi { ...@@ -221,6 +224,7 @@ public class TopicApi {
return Response.success(topicDTOPage); return Response.success(topicDTOPage);
} }
@ReplaceWithRemarks
@Anonymous @Anonymous
@ApiOperation("话题贡献者列表") @ApiOperation("话题贡献者列表")
@GetMapping("/topic/{topicId}/contributes") @GetMapping("/topic/{topicId}/contributes")
......
...@@ -4,6 +4,7 @@ import cn.meteor.beyondclouds.common.form.PageForm; ...@@ -4,6 +4,7 @@ import cn.meteor.beyondclouds.common.form.PageForm;
import cn.meteor.beyondclouds.common.dto.PageDTO; import cn.meteor.beyondclouds.common.dto.PageDTO;
import cn.meteor.beyondclouds.core.annotation.Anonymous; import cn.meteor.beyondclouds.core.annotation.Anonymous;
import cn.meteor.beyondclouds.core.annotation.CurrentSubject; import cn.meteor.beyondclouds.core.annotation.CurrentSubject;
import cn.meteor.beyondclouds.core.annotation.ReplaceWithRemarks;
import cn.meteor.beyondclouds.core.flow.CollectAccessInfo; import cn.meteor.beyondclouds.core.flow.CollectAccessInfo;
import cn.meteor.beyondclouds.core.api.Response; import cn.meteor.beyondclouds.core.api.Response;
import cn.meteor.beyondclouds.core.authentication.Subject; import cn.meteor.beyondclouds.core.authentication.Subject;
...@@ -299,6 +300,7 @@ public class UserApi { ...@@ -299,6 +300,7 @@ public class UserApi {
} }
} }
@ReplaceWithRemarks
@ApiOperation(("获取我的粉丝")) @ApiOperation(("获取我的粉丝"))
@GetMapping("/my/fans") @GetMapping("/my/fans")
public Response<PageDTO<UserFollowDTO>> myFans(@Valid PageForm pageForm, @CurrentSubject Subject subject){ public Response<PageDTO<UserFollowDTO>> myFans(@Valid PageForm pageForm, @CurrentSubject Subject subject){
...@@ -309,6 +311,7 @@ public class UserApi { ...@@ -309,6 +311,7 @@ public class UserApi {
} }
@ReplaceWithRemarks
@Anonymous @Anonymous
@ApiOperation(("获取他人粉丝")) @ApiOperation(("获取他人粉丝"))
@GetMapping("/user/{userId}/fans") @GetMapping("/user/{userId}/fans")
...@@ -320,6 +323,7 @@ public class UserApi { ...@@ -320,6 +323,7 @@ public class UserApi {
} }
@ReplaceWithRemarks
@ApiOperation(("获取我的关注")) @ApiOperation(("获取我的关注"))
@GetMapping("/my/follower") @GetMapping("/my/follower")
public Response myFollower(@Valid PageForm pageForm, @CurrentSubject Subject subject){ public Response myFollower(@Valid PageForm pageForm, @CurrentSubject Subject subject){
...@@ -329,6 +333,7 @@ public class UserApi { ...@@ -329,6 +333,7 @@ public class UserApi {
return Response.success(followedPage); return Response.success(followedPage);
} }
@ReplaceWithRemarks
@Anonymous @Anonymous
@ApiOperation(("获取他人关注")) @ApiOperation(("获取他人关注"))
@GetMapping("/user/{userId}/follower") @GetMapping("/user/{userId}/follower")
...@@ -376,6 +381,7 @@ public class UserApi { ...@@ -376,6 +381,7 @@ public class UserApi {
} }
} }
@ReplaceWithRemarks
@Anonymous @Anonymous
@ApiOperation(("热门博主")) @ApiOperation(("热门博主"))
@GetMapping("/user/hotBloggers") @GetMapping("/user/hotBloggers")
...@@ -390,6 +396,7 @@ public class UserApi { ...@@ -390,6 +396,7 @@ public class UserApi {
return Response.success(userFollowDTOPage); return Response.success(userFollowDTOPage);
} }
@ReplaceWithRemarks
@Anonymous @Anonymous
@ApiOperation("热门答主") @ApiOperation("热门答主")
@GetMapping("/user/hotRepliers") @GetMapping("/user/hotRepliers")
...@@ -404,6 +411,7 @@ public class UserApi { ...@@ -404,6 +411,7 @@ public class UserApi {
return Response.success(userFollowDTOPage); return Response.success(userFollowDTOPage);
} }
@ReplaceWithRemarks
@Anonymous @Anonymous
@ApiOperation("社区精英") @ApiOperation("社区精英")
@GetMapping("/user/elites") @GetMapping("/user/elites")
...@@ -415,6 +423,7 @@ public class UserApi { ...@@ -415,6 +423,7 @@ public class UserApi {
return Response.success(pageDTO); return Response.success(pageDTO);
} }
@ReplaceWithRemarks
@Anonymous @Anonymous
@ApiOperation("活跃用户") @ApiOperation("活跃用户")
@GetMapping("/user/actives") @GetMapping("/user/actives")
......
...@@ -4,7 +4,7 @@ spring: ...@@ -4,7 +4,7 @@ spring:
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/beyond_clouds?useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true url: jdbc:mysql://127.0.0.1:3306/beyond_clouds?useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true
username: root username: root
password: 197442 password: 100Centa30821%mysql
# 邮箱 # 邮箱
mail: mail:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment