8
build.sh
8
build.sh
@@ -1,8 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
echo "查询已存在进程"
|
|
||||||
pgrep -af blog-0.0.1-SNAPSHOT.jar
|
|
||||||
echo "结束已存在进程"
|
|
||||||
pkill -f blog-0.0.1-SNAPSHOT.jar
|
|
||||||
echo "开始运行小海博客"
|
|
||||||
nohup java -jar -Dfile.encoding=UTF-8 blog-0.0.1-SNAPSHOT.jar >blog.log &
|
|
||||||
echo "更新结束"
|
|
||||||
@@ -31,19 +31,16 @@ public class RedisConfig extends CachingConfigurerSupport {
|
|||||||
@Override
|
@Override
|
||||||
@Bean
|
@Bean
|
||||||
public KeyGenerator keyGenerator() {
|
public KeyGenerator keyGenerator() {
|
||||||
return new KeyGenerator() {
|
return (target, method, params) -> {
|
||||||
@Override
|
StringBuilder sb = new StringBuilder();
|
||||||
public Object generate(Object target, Method method, Object... params) {
|
String name = target.getClass().getName();
|
||||||
StringBuilder sb = new StringBuilder();
|
sb.append(name.substring(name.lastIndexOf(".") + 1));
|
||||||
String name = target.getClass().getName();
|
sb.append(":");
|
||||||
sb.append(name.substring(name.lastIndexOf(".") + 1));
|
sb.append(method.getName());
|
||||||
sb.append(":");
|
for (Object obj : params) {
|
||||||
sb.append(method.getName());
|
sb.append("-").append(obj.toString());
|
||||||
for (Object obj : params) {
|
|
||||||
sb.append("-").append(obj.toString());
|
|
||||||
}
|
|
||||||
return sb.toString();
|
|
||||||
}
|
}
|
||||||
|
return sb.toString();
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ public class SessionListener implements HttpSessionListener {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sessionCreated(HttpSessionEvent se) {
|
public void sessionCreated(HttpSessionEvent se) {
|
||||||
// TODO : can move 'visit' api to here
|
|
||||||
se.getSession().setAttribute("visitDetail", new HashMap<String, Integer>());
|
se.getSession().setAttribute("visitDetail", new HashMap<String, Integer>());
|
||||||
// 10s for debug
|
// 10s for debug
|
||||||
// se.getSession().setMaxInactiveInterval(10);
|
// se.getSession().setMaxInactiveInterval(10);
|
||||||
@@ -44,9 +43,7 @@ public class SessionListener implements HttpSessionListener {
|
|||||||
sb.append("\t登录情况 => ");
|
sb.append("\t登录情况 => ");
|
||||||
String email = (String) se.getSession().getAttribute("email");
|
String email = (String) se.getSession().getAttribute("email");
|
||||||
sb.append(email == null ? "游客访问" : email);
|
sb.append(email == null ? "游客访问" : email);
|
||||||
visitDetail.forEach((s, integer) -> {
|
visitDetail.forEach((s, integer) -> sb.append("\n").append("Method:[").append(s.split(":")[1]).append("]\tTimes:[").append(integer).append("]\tPath:[").append(s.split(":")[0]).append("]"));
|
||||||
sb.append("\n").append("Method:[").append(s.split(":")[1]).append("]\tTimes:[").append(integer).append("]\tPath:[").append(s.split(":")[0]).append("]");
|
|
||||||
});
|
|
||||||
log.info(sb.toString());
|
log.info(sb.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -120,7 +120,7 @@ public class ArticleController {
|
|||||||
@GetMapping("/admin/articles")
|
@GetMapping("/admin/articles")
|
||||||
public Response adminArticles(@RequestParam(name = "page", defaultValue = "1") int page,
|
public Response adminArticles(@RequestParam(name = "page", defaultValue = "1") int page,
|
||||||
@RequestParam(name = "count", defaultValue = "10") int count,
|
@RequestParam(name = "count", defaultValue = "10") int count,
|
||||||
@RequestParam(name = "deleted", defaultValue = "false") boolean deleted) {
|
@RequestParam(name = "deleted", required = false) Boolean deleted) {
|
||||||
return Response.success(articleService.adminArticles(count, page, deleted));
|
return Response.success(articleService.adminArticles(count, page, deleted));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -11,8 +11,8 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author : xiaohai
|
* @author : xiaohai
|
||||||
@@ -46,21 +46,15 @@ public class LinksController {
|
|||||||
|
|
||||||
@GetMapping("/links")
|
@GetMapping("/links")
|
||||||
public Response allForOpen() {
|
public Response allForOpen() {
|
||||||
List<PartnerSite> sites = new ArrayList<>();
|
List<PartnerSite> sites = partnerSiteService.findAll().stream().peek(partnerSite -> partnerSite.setOpen(null)).collect(Collectors.toList());
|
||||||
for (PartnerSite p : partnerSiteService.findAll()) {
|
|
||||||
if (p.getOpen()) {
|
|
||||||
//隐藏open字段
|
|
||||||
p.setOpen(null);
|
|
||||||
sites.add(p);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return Response.success(sites);
|
return Response.success(sites);
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/admin/links")
|
@GetMapping("/admin/links")
|
||||||
public Response all(@RequestParam("page") int page,
|
public Response all(@RequestParam("page") int page,
|
||||||
@RequestParam("count") int count) {
|
@RequestParam("count") int count,
|
||||||
return Response.success(partnerSiteService.partnerSitePages(page, count));
|
@RequestParam(value = "deleted", required = false) Boolean deleted) {
|
||||||
|
return Response.success(partnerSiteService.partnerSitePages(page, count, deleted));
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/apply")
|
@PostMapping("/apply")
|
||||||
|
|||||||
@@ -116,8 +116,8 @@ public class UserController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/admin/users")
|
@GetMapping("/admin/users")
|
||||||
public Response getAllUser(@RequestParam("page") int pageNum, @RequestParam("count") int count) {
|
public Response getAllUser(@RequestParam("page") int pageNum, @RequestParam("count") int count, @RequestParam(name = "status", required = false) Integer status) {
|
||||||
return Response.success(userService.getUserList(pageNum, count));
|
return Response.success(userService.getUserList(pageNum, count, status));
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/emailStatus/{email}")
|
@GetMapping("/emailStatus/{email}")
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ public enum ResponseEnum {
|
|||||||
PWD_NOT_SAME(3602, "新密码与原密码不相同"),
|
PWD_NOT_SAME(3602, "新密码与原密码不相同"),
|
||||||
LOGIN_EXPIRED(3700, "登陆过期"),
|
LOGIN_EXPIRED(3700, "登陆过期"),
|
||||||
LOGOUT(3710, "账户已注销"),
|
LOGOUT(3710, "账户已注销"),
|
||||||
|
CAN_NOT_USE(3711, "账户不可用"),
|
||||||
PWD_WRONG(3800, "密码不正确"),
|
PWD_WRONG(3800, "密码不正确"),
|
||||||
|
|
||||||
JWT_EXPIRED(3810, "Token过期"),
|
JWT_EXPIRED(3810, "Token过期"),
|
||||||
|
|||||||
@@ -1,5 +1,11 @@
|
|||||||
package cn.celess.blog.enmu;
|
package cn.celess.blog.enmu;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonCreator;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonValue;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Author: 小海
|
* @Author: 小海
|
||||||
* @Date: 2020-05-22 21:32
|
* @Date: 2020-05-22 21:32
|
||||||
@@ -36,4 +42,31 @@ public enum UserAccountStatusEnum {
|
|||||||
public String getDesc() {
|
public String getDesc() {
|
||||||
return desc;
|
return desc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static UserAccountStatusEnum get(int code) {
|
||||||
|
for (UserAccountStatusEnum value : UserAccountStatusEnum.values()) {
|
||||||
|
if (value.code == code) {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonCreator
|
||||||
|
public static UserAccountStatusEnum get(Map<String, Object> map) {
|
||||||
|
for (UserAccountStatusEnum value : UserAccountStatusEnum.values()) {
|
||||||
|
if (value.code == (int) map.get("code") && value.desc.equals(map.get("desc"))) {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonValue
|
||||||
|
public Map<String, Object> toJson() {
|
||||||
|
Map<String, Object> map = new HashMap<>(2);
|
||||||
|
map.put("code", code);
|
||||||
|
map.put("desc", desc);
|
||||||
|
return map;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package cn.celess.blog.entity.model;
|
package cn.celess.blog.entity.model;
|
||||||
|
|
||||||
|
import cn.celess.blog.enmu.UserAccountStatusEnum;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
|
||||||
@@ -38,5 +39,5 @@ public class UserModel {
|
|||||||
|
|
||||||
private String token;
|
private String token;
|
||||||
|
|
||||||
private int status;
|
private UserAccountStatusEnum status;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -83,7 +83,12 @@ public class ExceptionHandle {
|
|||||||
simpleMailMessage.setTo("a@celess.cn");
|
simpleMailMessage.setTo("a@celess.cn");
|
||||||
simpleMailMessage.setSubject("服务器出现了错误");
|
simpleMailMessage.setSubject("服务器出现了错误");
|
||||||
StringBuilder msg = new StringBuilder();
|
StringBuilder msg = new StringBuilder();
|
||||||
msg.append("requirePath:\n").append(request.getRequestURL().toString()).append("?").append(request.getQueryString()).append("\n\n\n");
|
String queryString = request.getQueryString();
|
||||||
|
msg.append("requirePath:\n").append(request.getRequestURL().toString());
|
||||||
|
if (queryString != null) {
|
||||||
|
msg.append("?").append(queryString);
|
||||||
|
}
|
||||||
|
msg.append("\n\n\n");
|
||||||
msg.append("msg:\n").append(e.getMessage()).append("\n\n\n");
|
msg.append("msg:\n").append(e.getMessage()).append("\n\n\n");
|
||||||
msg.append("date:\n").append(DateFormatUtil.getNow()).append("\n\n\n");
|
msg.append("date:\n").append(DateFormatUtil.getNow()).append("\n\n\n");
|
||||||
msg.append("from:\n").append(request.getHeader("User-Agent")).append("\n\n\n");
|
msg.append("from:\n").append(request.getHeader("User-Agent")).append("\n\n\n");
|
||||||
|
|||||||
@@ -22,6 +22,12 @@ public class MyException extends RuntimeException {
|
|||||||
this.code = e.getCode();
|
this.code = e.getCode();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public MyException(ResponseEnum e, Object result) {
|
||||||
|
super(e.getMsg());
|
||||||
|
this.code = e.getCode();
|
||||||
|
this.result = result;
|
||||||
|
}
|
||||||
|
|
||||||
public MyException(ResponseEnum e, String msg) {
|
public MyException(ResponseEnum e, String msg) {
|
||||||
super(msg + e.getMsg());
|
super(msg + e.getMsg());
|
||||||
this.code = e.getCode();
|
this.code = e.getCode();
|
||||||
|
|||||||
@@ -36,5 +36,6 @@ public interface PartnerMapper {
|
|||||||
|
|
||||||
List<PartnerSite> findAll();
|
List<PartnerSite> findAll();
|
||||||
|
|
||||||
|
List<PartnerSite> findAll(Boolean deleted);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -53,6 +53,8 @@ public interface UserMapper {
|
|||||||
|
|
||||||
int setUserRole(Long id, String role);
|
int setUserRole(Long id, String role);
|
||||||
|
|
||||||
|
List<User> findAll(Integer status);
|
||||||
|
|
||||||
List<User> findAll();
|
List<User> findAll();
|
||||||
|
|
||||||
int update(User user);
|
int update(User user);
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ public interface ArticleService {
|
|||||||
* @param page 数据页
|
* @param page 数据页
|
||||||
* @return 分页数据
|
* @return 分页数据
|
||||||
*/
|
*/
|
||||||
PageData<ArticleModel> adminArticles(int count, int page, boolean deleted);
|
PageData<ArticleModel> adminArticles(int count, int page, Boolean deleted);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取文章状态为开放的文章
|
* 获取文章状态为开放的文章
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ public interface PartnerSiteService {
|
|||||||
* @param page 数据页
|
* @param page 数据页
|
||||||
* @return 分页数据
|
* @return 分页数据
|
||||||
*/
|
*/
|
||||||
PageData<PartnerSite> partnerSitePages(int page, int count);
|
PageData<PartnerSite> partnerSitePages(int page, int count, Boolean deleted);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取全部数据
|
* 获取全部数据
|
||||||
|
|||||||
@@ -129,7 +129,7 @@ public interface UserService {
|
|||||||
* @param page 数据页
|
* @param page 数据页
|
||||||
* @return 分页数据
|
* @return 分页数据
|
||||||
*/
|
*/
|
||||||
PageData<UserModel> getUserList(Integer page, Integer count);
|
PageData<UserModel> getUserList(Integer page, Integer count, Integer status);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更改用户信息
|
* 更改用户信息
|
||||||
|
|||||||
@@ -278,11 +278,16 @@ public class ArticleServiceImpl implements ArticleService {
|
|||||||
* @return PageInfo
|
* @return PageInfo
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public PageData<ArticleModel> adminArticles(int count, int page, boolean deleted) {
|
public PageData<ArticleModel> adminArticles(int count, int page, Boolean deleted) {
|
||||||
List<Article> articleList = articleMapper.findAll();
|
List<Article> articleList = articleMapper.findAll();
|
||||||
|
|
||||||
PageData<ArticleModel> pageData = new PageData<>(null, 0, count, page);
|
PageData<ArticleModel> pageData = new PageData<>(null, 0, count, page);
|
||||||
List<Article> collect = articleList.stream().filter(article -> article.isDeleted() == deleted).collect(Collectors.toList());
|
List<Article> collect;
|
||||||
|
if (deleted != null) {
|
||||||
|
collect = articleList.stream().filter(article -> article.isDeleted() == deleted).collect(Collectors.toList());
|
||||||
|
} else {
|
||||||
|
collect = articleList;
|
||||||
|
}
|
||||||
pageData.setTotal(collect.size());
|
pageData.setTotal(collect.size());
|
||||||
List<ArticleModel> articleModels = collect.stream()
|
List<ArticleModel> articleModels = collect.stream()
|
||||||
.peek(article -> article.setMdContent(null))
|
.peek(article -> article.setMdContent(null))
|
||||||
|
|||||||
@@ -123,9 +123,9 @@ public class PartnerSiteServiceImpl implements PartnerSiteService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageData<PartnerSite> partnerSitePages(int page, int count) {
|
public PageData<PartnerSite> partnerSitePages(int page, int count, Boolean deleted) {
|
||||||
PageHelper.startPage(page, count);
|
PageHelper.startPage(page, count);
|
||||||
List<PartnerSite> sitePage = partnerMapper.findAll();
|
List<PartnerSite> sitePage = partnerMapper.findAll(deleted);
|
||||||
PageInfo<PartnerSite> pageInfo = new PageInfo<PartnerSite>(sitePage);
|
PageInfo<PartnerSite> pageInfo = new PageInfo<PartnerSite>(sitePage);
|
||||||
return new PageData<>(pageInfo, sitePage);
|
return new PageData<>(pageInfo, sitePage);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package cn.celess.blog.service.serviceimpl;
|
|||||||
|
|
||||||
import cn.celess.blog.enmu.ResponseEnum;
|
import cn.celess.blog.enmu.ResponseEnum;
|
||||||
import cn.celess.blog.enmu.RoleEnum;
|
import cn.celess.blog.enmu.RoleEnum;
|
||||||
|
import cn.celess.blog.enmu.UserAccountStatusEnum;
|
||||||
import cn.celess.blog.entity.Response;
|
import cn.celess.blog.entity.Response;
|
||||||
import cn.celess.blog.entity.User;
|
import cn.celess.blog.entity.User;
|
||||||
import cn.celess.blog.entity.model.PageData;
|
import cn.celess.blog.entity.model.PageData;
|
||||||
@@ -28,6 +29,7 @@ import java.beans.Transient;
|
|||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author : xiaohai
|
* @author : xiaohai
|
||||||
@@ -98,6 +100,16 @@ public class UserServiceImpl implements UserService {
|
|||||||
if (!RegexUtil.pwdMatch(loginReq.getPassword())) {
|
if (!RegexUtil.pwdMatch(loginReq.getPassword())) {
|
||||||
throw new MyException(ResponseEnum.PARAMETERS_PWD_ERROR);
|
throw new MyException(ResponseEnum.PARAMETERS_PWD_ERROR);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
User user = userMapper.findByEmail(loginReq.getEmail());
|
||||||
|
if (user == null) {
|
||||||
|
// 用户不存在
|
||||||
|
throw new MyException(ResponseEnum.USER_NOT_EXIST);
|
||||||
|
}
|
||||||
|
if (user.getStatus() != UserAccountStatusEnum.NORMAL.getCode()) {
|
||||||
|
throw new MyException(ResponseEnum.CAN_NOT_USE, UserAccountStatusEnum.get(user.getStatus()));
|
||||||
|
}
|
||||||
|
|
||||||
//获取redis缓存中登录失败次数
|
//获取redis缓存中登录失败次数
|
||||||
String s = redisUtil.get(loginReq.getEmail() + "-passwordWrongTime");
|
String s = redisUtil.get(loginReq.getEmail() + "-passwordWrongTime");
|
||||||
if (s != null) {
|
if (s != null) {
|
||||||
@@ -105,14 +117,9 @@ public class UserServiceImpl implements UserService {
|
|||||||
throw new MyException(ResponseEnum.LOGIN_LATER, loginReq.getEmail());
|
throw new MyException(ResponseEnum.LOGIN_LATER, loginReq.getEmail());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
User user = null;
|
|
||||||
user = userMapper.findByEmail(loginReq.getEmail());
|
String token;
|
||||||
String token = null;
|
|
||||||
// 密码比对
|
// 密码比对
|
||||||
if (user == null) {
|
|
||||||
// 用户不存在
|
|
||||||
throw new MyException(ResponseEnum.USER_NOT_EXIST);
|
|
||||||
}
|
|
||||||
if (user.getPwd().equals(MD5Util.getMD5(loginReq.getPassword()))) {
|
if (user.getPwd().equals(MD5Util.getMD5(loginReq.getPassword()))) {
|
||||||
logger.info("====> {} 进行权限认证 状态:登录成功 <====", loginReq.getEmail());
|
logger.info("====> {} 进行权限认证 状态:登录成功 <====", loginReq.getEmail());
|
||||||
userMapper.updateLoginTime(loginReq.getEmail());
|
userMapper.updateLoginTime(loginReq.getEmail());
|
||||||
@@ -338,12 +345,11 @@ public class UserServiceImpl implements UserService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageData<UserModel> getUserList(Integer page, Integer count) {
|
public PageData<UserModel> getUserList(Integer page, Integer count, Integer status) {
|
||||||
PageHelper.startPage(page, count);
|
PageHelper.startPage(page, count);
|
||||||
List<User> all = userMapper.findAll();
|
List<User> all = userMapper.findAll(status);
|
||||||
List<UserModel> modelList = new ArrayList<>();
|
List<UserModel> modelList = all.stream().map(ModalTrans::userFullInfo).collect(Collectors.toList());
|
||||||
all.forEach(user -> modelList.add(ModalTrans.userFullInfo(user)));
|
return new PageData<>(PageInfo.of(all), modelList);
|
||||||
return new PageData<UserModel>(PageInfo.of(all), modelList);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package cn.celess.blog.util;
|
package cn.celess.blog.util;
|
||||||
|
|
||||||
|
import cn.celess.blog.enmu.UserAccountStatusEnum;
|
||||||
import cn.celess.blog.entity.*;
|
import cn.celess.blog.entity.*;
|
||||||
import cn.celess.blog.entity.model.*;
|
import cn.celess.blog.entity.model.*;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
@@ -46,6 +47,7 @@ public class ModalTrans {
|
|||||||
}
|
}
|
||||||
UserModel userModel = new UserModel();
|
UserModel userModel = new UserModel();
|
||||||
BeanUtils.copyProperties(user, userModel);
|
BeanUtils.copyProperties(user, userModel);
|
||||||
|
userModel.setStatus(UserAccountStatusEnum.get(user.getStatus()));
|
||||||
userModel.setAvatarImgUrl(user.getAvatarImgUrl() == null || user.getAvatarImgUrl().length() == 0 ?
|
userModel.setAvatarImgUrl(user.getAvatarImgUrl() == null || user.getAvatarImgUrl().length() == 0 ?
|
||||||
null :
|
null :
|
||||||
"http://cdn.celess.cn/" + user.getAvatarImgUrl());
|
"http://cdn.celess.cn/" + user.getAvatarImgUrl());
|
||||||
|
|||||||
@@ -78,6 +78,9 @@
|
|||||||
<select id="findAll" resultMap="partnerSiteResultMap">
|
<select id="findAll" resultMap="partnerSiteResultMap">
|
||||||
select *
|
select *
|
||||||
from links
|
from links
|
||||||
|
<if test="_parameter != null">
|
||||||
|
where is_delete=#{deleted}
|
||||||
|
</if>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -130,5 +130,8 @@
|
|||||||
<select id="findAll" resultMap="userResultMap">
|
<select id="findAll" resultMap="userResultMap">
|
||||||
select *
|
select *
|
||||||
from user
|
from user
|
||||||
|
<if test="_parameter != null">
|
||||||
|
where status=#{status}
|
||||||
|
</if>
|
||||||
</select>
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
@@ -1,3 +1,22 @@
|
|||||||
|
INSERT INTO `user` (`u_id`, `u_email`, `u_pwd`, `u_email_status`, `u_avatar`, `u_desc`, `u_recently_landed_time`,
|
||||||
|
`u_display_name`, `u_role`, `status`)
|
||||||
|
VALUES (1, 'a@celess.cn', '25f9e794323b453885f5181f1b624d0b', 1, 'a@celess.cn_2.png', '禾几海不需要自我介绍',
|
||||||
|
'2020-07-02 11:30:38', '禾几海', 'admin', 0),
|
||||||
|
(3, 'zh56462271@qq.com', '25f9e794323b453885f5181f1b624d0b', 1, NULL, NULL, '2020-05-16 13:21:35', NULL, 'user',
|
||||||
|
0),
|
||||||
|
(2, 'b@celess.cn', '25f9e794323b453885f5181f1b624d0b', 1, NULL, NULL, '2020-05-16 13:21:35', NULL, 'user', 0),
|
||||||
|
(4, 'c@celess.cn', '25f9e794323b453885f5181f1b624d0b', 1, NULL, NULL, '2020-05-16 13:21:35', NULL, 'user', 1),
|
||||||
|
(5, 'd@celess.cn', '25f9e794323b453885f5181f1b624d0b', 1, NULL, NULL, '2020-05-16 13:21:35', NULL, 'user', 1),
|
||||||
|
(6, 'e@celess.cn', '25f9e794323b453885f5181f1b624d0b', 1, NULL, NULL, '2020-05-16 13:21:35', NULL, 'user', 2),
|
||||||
|
(7, 'f@celess.cn', '25f9e794323b453885f5181f1b624d0b', 1, NULL, NULL, '2020-05-16 13:21:35', NULL, 'user', 2),
|
||||||
|
(8, 'g@celess.cn', '25f9e794323b453885f5181f1b624d0b', 1, NULL, NULL, '2020-05-16 13:21:35', NULL, 'user', 0),
|
||||||
|
(9, 'h@celess.cn', '25f9e794323b453885f5181f1b624d0b', 1, NULL, NULL, '2020-05-16 13:21:35', NULL, 'user', 1),
|
||||||
|
(10, 'i@celess.cn', '25f9e794323b453885f5181f1b624d0b', 1, NULL, NULL, '2020-05-16 13:21:35', NULL, 'user', 2),
|
||||||
|
(11, 'j@celess.cn', '25f9e794323b453885f5181f1b624d0b', 1, NULL, NULL, '2020-05-16 13:21:35', NULL, 'user', 0),
|
||||||
|
(12, 'k@celess.cn', '25f9e794323b453885f5181f1b624d0b', 1, NULL, NULL, '2020-05-16 13:21:35', NULL, 'user', 1);
|
||||||
|
|
||||||
|
|
||||||
|
-- 密码123456789
|
||||||
INSERT INTO `tag_category` (`t_id`, `t_name`, `is_category`, `is_delete`)
|
INSERT INTO `tag_category` (`t_id`, `t_name`, `is_category`, `is_delete`)
|
||||||
VALUES (1, '随笔', 1, 0),
|
VALUES (1, '随笔', 1, 0),
|
||||||
(2, '后端', 1, 0),
|
(2, '后端', 1, 0),
|
||||||
@@ -28,17 +47,6 @@ VALUES (1, '随笔', 1, 0),
|
|||||||
(27, '网课', 0, 0);
|
(27, '网课', 0, 0);
|
||||||
|
|
||||||
|
|
||||||
-- 密码123456789
|
|
||||||
INSERT INTO `user` (`u_id`, `u_email`, `u_pwd`, `u_email_status`, `u_avatar`, `u_desc`, `u_recently_landed_time`,
|
|
||||||
`u_display_name`, `u_role`, `status`)
|
|
||||||
VALUES (1, 'a@celess.cn', '25f9e794323b453885f5181f1b624d0b', 1, 'a@celess.cn_2.png', '禾几海不需要自我介绍',
|
|
||||||
'2020-07-02 11:30:38', '禾几海', 'admin', 0),
|
|
||||||
(2, 'b@celess.cn', '25f9e794323b453885f5181f1b624d0b', 1, NULL, NULL, '2020-05-16 13:21:35', NULL, 'user',
|
|
||||||
0),
|
|
||||||
(3, 'zh56462271@qq.com', '25f9e794323b453885f5181f1b624d0b', 1, NULL, NULL, '2020-05-16 13:21:35', NULL, 'user',
|
|
||||||
0);
|
|
||||||
|
|
||||||
|
|
||||||
INSERT INTO `article` (`a_id`, `a_title`, `a_summary`, `a_md_content`, `a_url`, `a_author_id`, `a_is_original`,
|
INSERT INTO `article` (`a_id`, `a_title`, `a_summary`, `a_md_content`, `a_url`, `a_author_id`, `a_is_original`,
|
||||||
`a_reading_number`, `a_like`, `a_dislike`, `a_category_id`, `a_publish_date`, `a_update_date`,
|
`a_reading_number`, `a_like`, `a_dislike`, `a_category_id`, `a_publish_date`, `a_update_date`,
|
||||||
`a_is_open`, `is_delete`)
|
`a_is_open`, `is_delete`)
|
||||||
@@ -150,7 +158,11 @@ VALUES (1, '程序猿张先生', 1, 'https://zhyocean.cn', '', '', 0),
|
|||||||
(3, '罗炜杰个人博客', 1, 'http://www.lwjppz.cn', '', '', 0),
|
(3, '罗炜杰个人博客', 1, 'http://www.lwjppz.cn', '', '', 0),
|
||||||
(4, '强子博客', 1, 'https://www.lqnb.xyz', '', '', 0),
|
(4, '强子博客', 1, 'https://www.lqnb.xyz', '', '', 0),
|
||||||
(5, '原创博客技术联盟', 1, 'http://techblog.pub/', '', '', 0),
|
(5, '原创博客技术联盟', 1, 'http://techblog.pub/', '', '', 0),
|
||||||
(6, 'WarlockMT', 1, 'https://www.warlock.live/', '', '', 0);
|
(6, 'WarlockMT', 1, 'https://www.warlock.live/', '', '', 0),
|
||||||
|
(7, '测试例1', 1, 'https://t1.celess.cn/', '', '', 1),
|
||||||
|
(8, '测试例2', 1, 'https://t2.celess.cn/', '', '', 1),
|
||||||
|
(9, '测试例3', 1, 'https://t3.celess.cn/', '', '', 1),
|
||||||
|
(10, '测试例4', 1, 'https://t4.celess.cn/', '', '', 1);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ CREATE TABLE `links`
|
|||||||
`l_url` varchar(255) unique not null comment '首页地址',
|
`l_url` varchar(255) unique not null comment '首页地址',
|
||||||
`l_icon_path` varchar(255) not null comment '友链的icon地址',
|
`l_icon_path` varchar(255) not null comment '友链的icon地址',
|
||||||
`l_desc` varchar(255) COLLATE utf8mb4_unicode_ci not null comment '友链的说明描述',
|
`l_desc` varchar(255) COLLATE utf8mb4_unicode_ci not null comment '友链的说明描述',
|
||||||
`is_delete` boolean not null default false comment '该数据是否被删除',
|
`is_delete` boolean not null default false comment '该数据是否被删除',
|
||||||
`l_email` varchar(255) comment '网站管理员的邮箱',
|
`l_email` varchar(255) comment '网站管理员的邮箱',
|
||||||
`l_notification` boolean default false comment '是否通知了'
|
`l_notification` boolean default false comment '是否通知了'
|
||||||
) comment '友站表';
|
) comment '友站表';
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ public class CategoryControllerTest extends BaseTest {
|
|||||||
CategoryModel category = response.getResult();
|
CategoryModel category = response.getResult();
|
||||||
assertEquals(categoryName, category.getName());
|
assertEquals(categoryName, category.getName());
|
||||||
assertNotNull(category.getId());
|
assertNotNull(category.getId());
|
||||||
assertNotEquals(0, category.getArticles());
|
assertNull(category.getArticles());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -56,7 +56,7 @@ public class CategoryControllerTest extends BaseTest {
|
|||||||
assertEquals(SUCCESS.getCode(), response.getCode());
|
assertEquals(SUCCESS.getCode(), response.getCode());
|
||||||
CategoryModel c = response.getResult();
|
CategoryModel c = response.getResult();
|
||||||
assertEquals(name, c.getName());
|
assertEquals(name, c.getName());
|
||||||
assertNotEquals(0, c.getArticles());
|
assertNull(c.getArticles());
|
||||||
assertNotNull(c.getId());
|
assertNotNull(c.getId());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -70,7 +70,7 @@ public class CategoryControllerTest extends BaseTest {
|
|||||||
response.getResult().getList().forEach(c -> {
|
response.getResult().getList().forEach(c -> {
|
||||||
assertNotNull(c.getName());
|
assertNotNull(c.getName());
|
||||||
assertNotNull(c.getId());
|
assertNotNull(c.getId());
|
||||||
assertNotEquals(0, c.getArticles());
|
assertNotNull(c.getArticles());
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,36 @@
|
|||||||
|
package cn.celess.blog.enmu;
|
||||||
|
|
||||||
|
import cn.celess.blog.BaseTest;
|
||||||
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
|
public class UserAccountStatusEnumTest extends BaseTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void get() {
|
||||||
|
assertEquals(UserAccountStatusEnum.NORMAL, UserAccountStatusEnum.get(0));
|
||||||
|
assertEquals(UserAccountStatusEnum.LOCKED, UserAccountStatusEnum.get(1));
|
||||||
|
assertEquals(UserAccountStatusEnum.DELETED, UserAccountStatusEnum.get(2));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void toJson() throws JsonProcessingException {
|
||||||
|
// 序列化
|
||||||
|
ObjectMapper objectMapper = new ObjectMapper();
|
||||||
|
assertEquals("{\"code\":0,\"desc\":\"正常\"}", objectMapper.writeValueAsString(UserAccountStatusEnum.NORMAL));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGet() throws IOException {
|
||||||
|
// 反序列化
|
||||||
|
ObjectMapper mapper = new ObjectMapper();
|
||||||
|
UserAccountStatusEnum userAccountStatusEnum = mapper.readValue(mapper.writeValueAsString(UserAccountStatusEnum.NORMAL), UserAccountStatusEnum.class);
|
||||||
|
assertEquals(UserAccountStatusEnum.NORMAL.getCode(), userAccountStatusEnum.getCode());
|
||||||
|
assertEquals(UserAccountStatusEnum.NORMAL.getDesc(), userAccountStatusEnum.getDesc());
|
||||||
|
}
|
||||||
|
}
|
||||||
27
src/test/java/cn/celess/blog/service/ArticleServiceTest.java
Normal file
27
src/test/java/cn/celess/blog/service/ArticleServiceTest.java
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
package cn.celess.blog.service;
|
||||||
|
|
||||||
|
import cn.celess.blog.BaseTest;
|
||||||
|
import cn.celess.blog.entity.model.ArticleModel;
|
||||||
|
import cn.celess.blog.entity.model.PageData;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
|
public class ArticleServiceTest extends BaseTest {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
ArticleService articleService;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void adminArticles() {
|
||||||
|
// 测deleted参数传值
|
||||||
|
PageData<ArticleModel> pageData = articleService.adminArticles(10, 1, true);
|
||||||
|
assertTrue(pageData.getList().stream().allMatch(ArticleModel::isDeleted));
|
||||||
|
pageData = articleService.adminArticles(10, 1, false);
|
||||||
|
assertFalse(pageData.getList().stream().allMatch(ArticleModel::isDeleted));
|
||||||
|
pageData = articleService.adminArticles(10, 1, null);
|
||||||
|
assertTrue(pageData.getList().stream().anyMatch(ArticleModel::isDeleted));
|
||||||
|
assertTrue(pageData.getList().stream().anyMatch(articleModel -> !articleModel.isDeleted()));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
package cn.celess.blog.service;
|
||||||
|
|
||||||
|
import cn.celess.blog.BaseTest;
|
||||||
|
import cn.celess.blog.entity.PartnerSite;
|
||||||
|
import cn.celess.blog.entity.model.PageData;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
|
public class PartnerSiteServiceTest extends BaseTest {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
PartnerSiteService partnerSiteService;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void partnerSitePages() {
|
||||||
|
// 测试deleted 参数
|
||||||
|
PageData<PartnerSite> pageData = partnerSiteService.partnerSitePages(1, 10, true);
|
||||||
|
assertTrue(pageData.getList().stream().allMatch(PartnerSite::getDelete));
|
||||||
|
pageData = partnerSiteService.partnerSitePages(1, 10, false);
|
||||||
|
assertTrue(pageData.getList().stream().noneMatch(PartnerSite::getDelete));
|
||||||
|
pageData = partnerSiteService.partnerSitePages(1, 10, null);
|
||||||
|
|
||||||
|
List<PartnerSite> list = pageData.getList();
|
||||||
|
assertNotEquals(0, list.stream().filter(PartnerSite::getDelete).count());
|
||||||
|
assertNotEquals(0, list.stream().filter(partnerSite -> !partnerSite.getDelete()).count());
|
||||||
|
}
|
||||||
|
}
|
||||||
73
src/test/java/cn/celess/blog/service/UserServiceTest.java
Normal file
73
src/test/java/cn/celess/blog/service/UserServiceTest.java
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
package cn.celess.blog.service;
|
||||||
|
|
||||||
|
import cn.celess.blog.BaseTest;
|
||||||
|
import cn.celess.blog.enmu.ResponseEnum;
|
||||||
|
import cn.celess.blog.enmu.UserAccountStatusEnum;
|
||||||
|
import cn.celess.blog.entity.User;
|
||||||
|
import cn.celess.blog.entity.model.PageData;
|
||||||
|
import cn.celess.blog.entity.model.UserModel;
|
||||||
|
import cn.celess.blog.entity.request.LoginReq;
|
||||||
|
import cn.celess.blog.exception.MyException;
|
||||||
|
import cn.celess.blog.mapper.UserMapper;
|
||||||
|
import cn.celess.blog.util.MD5Util;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
|
public class UserServiceTest extends BaseTest {
|
||||||
|
@Autowired
|
||||||
|
UserService userService;
|
||||||
|
@Autowired
|
||||||
|
UserMapper userMapper;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getUserList() {
|
||||||
|
// 测试status 参数
|
||||||
|
PageData<UserModel> userList = userService.getUserList(1, 10, UserAccountStatusEnum.NORMAL.getCode());
|
||||||
|
assertTrue(userList.getList().stream().allMatch(userModel -> userModel.getStatus().getCode() == UserAccountStatusEnum.NORMAL.getCode()));
|
||||||
|
userList = userService.getUserList(1, 10, UserAccountStatusEnum.LOCKED.getCode());
|
||||||
|
assertTrue(userList.getList().stream().allMatch(userModel -> userModel.getStatus().getCode() == UserAccountStatusEnum.LOCKED.getCode()));
|
||||||
|
userList = userService.getUserList(1, 10, UserAccountStatusEnum.DELETED.getCode());
|
||||||
|
assertTrue(userList.getList().stream().allMatch(userModel -> userModel.getStatus().getCode() == UserAccountStatusEnum.DELETED.getCode()));
|
||||||
|
userList = userService.getUserList(1, 10, null);
|
||||||
|
assertTrue(userList.getList().stream().anyMatch(userModel -> userModel.getStatus().getCode() == UserAccountStatusEnum.NORMAL.getCode()));
|
||||||
|
assertTrue(userList.getList().stream().anyMatch(userModel -> userModel.getStatus().getCode() == UserAccountStatusEnum.LOCKED.getCode()));
|
||||||
|
assertTrue(userList.getList().stream().anyMatch(userModel -> userModel.getStatus().getCode() == UserAccountStatusEnum.DELETED.getCode()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testLogin() {
|
||||||
|
// 测试账户 被锁 被删除 登录
|
||||||
|
String email = randomStr(5) + "@celess.cn";
|
||||||
|
String pwd = MD5Util.getMD5("123456789");
|
||||||
|
User user = new User(email, pwd);
|
||||||
|
userMapper.addUser(user);
|
||||||
|
assertNotNull(user.getId());
|
||||||
|
|
||||||
|
user = userMapper.findByEmail(email);
|
||||||
|
LoginReq loginReq = new LoginReq(email, "123456789", false);
|
||||||
|
UserModel login = userService.login(loginReq);
|
||||||
|
assertEquals(UserAccountStatusEnum.NORMAL, login.getStatus());
|
||||||
|
|
||||||
|
userMapper.lock(user.getId());
|
||||||
|
try {
|
||||||
|
userService.login(loginReq);
|
||||||
|
fail("测试登录被锁账户 失败!");
|
||||||
|
} catch (MyException e) {
|
||||||
|
assertEquals(ResponseEnum.CAN_NOT_USE.getCode(), e.getCode());
|
||||||
|
assertEquals(UserAccountStatusEnum.LOCKED, e.getResult());
|
||||||
|
}
|
||||||
|
|
||||||
|
userMapper.delete(user.getId());
|
||||||
|
try {
|
||||||
|
userService.login(loginReq);
|
||||||
|
fail("测试登录被删除账户 失败!");
|
||||||
|
} catch (MyException e) {
|
||||||
|
assertEquals(ResponseEnum.CAN_NOT_USE.getCode(), e.getCode());
|
||||||
|
assertEquals(UserAccountStatusEnum.DELETED, e.getResult());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user