package cn.dreampie.resource.user.model;
import cn.dreampie.orm.Model;
import cn.dreampie.orm.annotation.Table;
import java.util.List;
/**
* Created by ice on 14-12-31.
*/
@Table(name = "sec_user", primaryKey = {"sid"}, cached = true)
public class User extends Model<User> {
public static User dao = new User();
// 默认 getXxx 的形式的方法 会被认为是属性 如果userInfos的值不存在 方法会被执行一次
// json反转时 如果 getXxx的存在 会按 getXxx的返回值类型 进行转换 如:{userInfos:[{key:value,key1:value1}]} userInfos会被转换为 List<UserInfo>类型
// @JSONField(serialize = false) 如果getXxx的值不转为json 使用该注解
// 注意属性名和GetXxx一致 如:属性userInfos的get方法为 getUserInfos
// 支持驼峰和下划线 两种属性名字和驼峰方法的映射 (userInfos也可以使用下划线模式 user_infos全小写 也会映射到getUserInfos()方法)
// 个人喜欢数据库和属性 都使用下划线的方式
public List<UserInfo> getUserInfos() {
if (this.get("user_infos") == null && this.get("id") != null) {
this.put("user_infos", UserInfo.dao.findBy("user_id=?", this.get("id")));
}
return this.get("user_infos");
}
public Long getRoleId() {
if (this.get("role_id") == null && this.get("id") != null) {
String sql = "SELECT user_role.role_id FROM sec_user_role user_role WHERE user_role.user_id=?";
this.put("role_id", queryFirst(sql, this.get("id")));
}
return this.get("role_id");
}
public List<String> getPermissions() {
Long roleId = getRoleId();
if (this.get("permissions") == null && roleId != null) {
String sql = "SELECT permission.value FROM sec_permission permission WHERE permission.id in(SELECT rolePermission.permission_id FROM sec_role_permission rolePermission WHERE rolePermission.role_id=?)";
this.put("permissions", query(sql, roleId));
}
return this.get("permissions");
}
public List<Long> getPermissionIds() {
Long roleId = getRoleId();
if (this.get("permission_ids") == null && roleId != null) {
String sql = "SELECT permission.id FROM sec_permission permission WHERE permission.id in(SELECT rolePermission.permission_id FROM sec_role_permission rolePermission WHERE rolePermission.role_id=?)";
this.put("permission_ids", query(sql, roleId));
}
return this.get("permission_ids");
}
}