1、用户资料加入[个人博客地址、码云/GitHub地址](部分用户开放设置)
2、加入用户信息接口UF/UI,优化用户信息设置代码
This commit is contained in:
@@ -1,18 +1,24 @@
|
||||
package com.lxyer.bbs.base;
|
||||
|
||||
import com.lxyer.bbs.base.user.User;
|
||||
import com.lxyer.bbs.base.user.UserInfo;
|
||||
import org.redkale.service.Service;
|
||||
import org.redkale.source.CacheSource;
|
||||
import org.redkale.source.DataSource;
|
||||
import org.redkale.source.FilterExpress;
|
||||
import org.redkale.source.FilterNode;
|
||||
import org.redkale.util.Sheet;
|
||||
import org.redkalex.cache.RedisCacheSource;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created by Lxy at 2017/10/3 13:50.
|
||||
*/
|
||||
public class BaseService implements Service {
|
||||
public class BaseService<F extends UF,I extends UI> implements Service {
|
||||
|
||||
protected final int sessionExpireSeconds = 7 * 24 * 60 * 60;
|
||||
|
||||
@@ -30,4 +36,50 @@ public class BaseService implements Service {
|
||||
|
||||
protected static final boolean winos = System.getProperty("os.name").contains("Window");
|
||||
|
||||
|
||||
protected Sheet<I> createInfo(Sheet<F> fSheet){
|
||||
if (fSheet == null || fSheet.getTotal() < 1){
|
||||
Sheet<I> sheet = new Sheet<>();
|
||||
sheet.setTotal(0);
|
||||
sheet.setRows(new ArrayList<>());
|
||||
return sheet;
|
||||
}
|
||||
List<I> list = new ArrayList<>((int)fSheet.getTotal());
|
||||
fSheet.forEach(x->{
|
||||
list.add((I)x.createInfo());
|
||||
});
|
||||
|
||||
Sheet<I> sheet = new Sheet<>();
|
||||
sheet.setTotal(fSheet.getTotal());
|
||||
sheet.setRows(list);
|
||||
return sheet;
|
||||
}
|
||||
|
||||
protected <I extends UI> Sheet<I> setIUser(Sheet<I> ufSheet){
|
||||
int[] userIds = ufSheet.stream().mapToInt(I::getUserId).toArray();
|
||||
List<User> users = source.queryList(User.class, FilterNode.create("userId", FilterExpress.IN, userIds));
|
||||
List<I> infos = new ArrayList((int) ufSheet.getTotal());
|
||||
|
||||
ufSheet.forEach(x->{
|
||||
User user = users.stream().filter(u -> u.getUserId() == x.getUserId()).findAny().orElse(null);
|
||||
infos.add((I) x.setUser(user));
|
||||
});
|
||||
|
||||
Sheet<I> sheet = new Sheet<>();
|
||||
sheet.setTotal(ufSheet.getTotal());
|
||||
sheet.setRows(infos);
|
||||
|
||||
return sheet;
|
||||
}
|
||||
|
||||
/**
|
||||
* 将含有用户外键的实体,转为info,并加入用户信息
|
||||
* @param uf
|
||||
* @return
|
||||
*/
|
||||
protected I setIUser(I uf){
|
||||
User user = source.find(User.class, uf.getUserId());
|
||||
|
||||
return (I) uf.setUser(user);
|
||||
}
|
||||
}
|
||||
|
10
src/com/lxyer/bbs/base/UF.java
Normal file
10
src/com/lxyer/bbs/base/UF.java
Normal file
@@ -0,0 +1,10 @@
|
||||
package com.lxyer.bbs.base;
|
||||
|
||||
/**
|
||||
* user foreign key (userId)
|
||||
* Created by liangxianyou at 2018/6/9 14:50.
|
||||
*/
|
||||
public interface UF<I extends UI> {
|
||||
int getUserId();
|
||||
I createInfo();
|
||||
}
|
31
src/com/lxyer/bbs/base/UI.java
Normal file
31
src/com/lxyer/bbs/base/UI.java
Normal file
@@ -0,0 +1,31 @@
|
||||
package com.lxyer.bbs.base;
|
||||
|
||||
import com.lxyer.bbs.base.user.User;
|
||||
|
||||
/**
|
||||
* Created by liangxianyou at 2018/6/9 13:45.
|
||||
*/
|
||||
public interface UI<I extends UI> {
|
||||
|
||||
//抽象方法
|
||||
int getUserId();
|
||||
User getUser();
|
||||
I setUser(User user);
|
||||
|
||||
//默认实现方法
|
||||
default String getRealname(){
|
||||
return getUser() == null ? null : getUser().getRealname();
|
||||
}
|
||||
default String getNickname(){
|
||||
return getUser() == null ? null : getUser().getNickname();
|
||||
}
|
||||
default String getSite(){
|
||||
return getUser() == null ? "" : getUser().getSite();
|
||||
}
|
||||
default String getGit(){
|
||||
return getUser() == null ? "" : getUser().getGit();
|
||||
}
|
||||
default String getAvatar(){
|
||||
return getUser() == null ? null : getUser().getAvatar();
|
||||
}
|
||||
}
|
@@ -52,6 +52,12 @@ public class User implements java.io.Serializable {
|
||||
@Column(length = 2, comment = "[用户角色]")
|
||||
private int roleId = 0;
|
||||
|
||||
@Column(length = 128, comment = "[个人博客地址]")
|
||||
private String site = "";
|
||||
|
||||
@Column(length = 128, comment = "[码云/GitHub]")
|
||||
private String git = "";
|
||||
|
||||
@Column(comment = "[创建时间]", updatable = false)
|
||||
private long createTime;
|
||||
|
||||
@@ -164,6 +170,22 @@ public class User implements java.io.Serializable {
|
||||
this.roleId = roleId;
|
||||
}
|
||||
|
||||
public String getSite() {
|
||||
return site;
|
||||
}
|
||||
|
||||
public void setSite(String site) {
|
||||
this.site = site;
|
||||
}
|
||||
|
||||
public String getGit() {
|
||||
return git;
|
||||
}
|
||||
|
||||
public void setGit(String git) {
|
||||
this.git = git;
|
||||
}
|
||||
|
||||
public long getCreateTime() {
|
||||
return createTime;
|
||||
}
|
||||
@@ -213,6 +235,8 @@ public class User implements java.io.Serializable {
|
||||
userInfo.setRelaname(realname);
|
||||
userInfo.setEmail(email);
|
||||
userInfo.setRoleId(roleId);
|
||||
userInfo.setSite(site);
|
||||
userInfo.setGit(git);
|
||||
userInfo.setCreateTime(createTime);
|
||||
userInfo.setSign(sign);
|
||||
userInfo.setCity(city);
|
||||
|
@@ -26,6 +26,8 @@ public class UserInfo implements java.io.Serializable {
|
||||
private String relaname = "";
|
||||
private String email = "";
|
||||
private int roleId = 0;
|
||||
private String site = "";
|
||||
private String git = "";
|
||||
private long createTime;
|
||||
private String sign = "";
|
||||
private String city = "";
|
||||
@@ -113,6 +115,22 @@ public class UserInfo implements java.io.Serializable {
|
||||
this.roleId = roleId;
|
||||
}
|
||||
|
||||
public String getSite() {
|
||||
return site;
|
||||
}
|
||||
|
||||
public void setSite(String site) {
|
||||
this.site = site;
|
||||
}
|
||||
|
||||
public String getGit() {
|
||||
return git;
|
||||
}
|
||||
|
||||
public void setGit(String git) {
|
||||
this.git = git;
|
||||
}
|
||||
|
||||
public void setCreateTime(long createTime) {
|
||||
this.createTime = createTime;
|
||||
}
|
||||
|
@@ -48,14 +48,15 @@ public class UserService extends BaseService {
|
||||
}
|
||||
|
||||
public UserInfo current(String sessionid){
|
||||
Integer userid = sessions.getAndRefresh(sessionid, sessionExpireSeconds);
|
||||
return userid == null ? null : findUserInfo(userid);
|
||||
Object userid = sessions.getAndRefresh(sessionid, sessionExpireSeconds);
|
||||
sessions.getAndRefresh(sessionid, sessionExpireSeconds);
|
||||
return userid == null ? null : findUserInfo((Integer) userid);
|
||||
}
|
||||
@RestMapping(name = "userid")
|
||||
public int currentUserId(String sessionid){
|
||||
if (sessionid == null) return 0;
|
||||
Integer userid = sessions.getAndRefresh(sessionid, sessionExpireSeconds);
|
||||
return userid == null ? 0 : userid;
|
||||
Object userid = sessions.getAndRefresh(sessionid, sessionExpireSeconds);
|
||||
return userid == null ? 0 : (Integer)userid;
|
||||
}
|
||||
|
||||
@RestMapping(name = "info", comment = "用户信息")
|
||||
|
Reference in New Issue
Block a user