1、用户资料加入[个人博客地址、码云/GitHub地址](部分用户开放设置)

2、加入用户信息接口UF/UI,优化用户信息设置代码
This commit is contained in:
2018-06-13 00:05:06 +08:00
parent 9e117e9e5b
commit 4a41fe20a1
15 changed files with 263 additions and 127 deletions

View File

@@ -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);
}
}

View 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();
}

View 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();
}
}

View File

@@ -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);

View File

@@ -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;
}

View File

@@ -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 = "用户信息")