use of app.hongs.db.Table in project HongsCORE by ihongs.
the class AuthKit method getUserRoles.
public static Set getUserRoles(String uid) throws HongsException {
Table rel = DB.getInstance("master").getTable("user_role");
List<Map> lst = rel.fetchCase().filter("user_id = ?", uid).select("role").all();
Set set = new HashSet();
for (Map row : lst) {
set.add(row.get("role"));
}
return set;
}
use of app.hongs.db.Table in project HongsCORE by ihongs.
the class RoleSet method imports.
@Override
protected void imports() throws HongsException {
roles = new HashSet();
DB db;
Table tb;
Table td;
FetchCase fc;
List<Map> rz;
db = DB.getInstance("master");
// ** 查询用户权限 **/
tb = db.getTable("user_role");
fc = new FetchCase().from(tb.tableName, tb.name).select(tb.name + ".role").filter(tb.name + ".user_id = ?", userId);
rz = db.fetchMore(fc);
for (Map rm : rz) {
roles.add((String) rm.get("role"));
}
// ** 查询部门权限 **/
tb = db.getTable("dept_role");
td = db.getTable("user_dept");
fc = new FetchCase().from(tb.tableName, tb.name).select(tb.name + ".role");
fc.join(td.tableName, td.name).on(td.name + ".dept_id = " + tb.name + ".dept_id").filter(td.name + ".user_id = ?", userId);
rz = db.fetchMore(fc);
for (Map rm : rz) {
roles.add((String) rm.get("role"));
}
// ** 当前保存时间 **/
rtime = (int) (System.currentTimeMillis() / 1000);
}
use of app.hongs.db.Table in project HongsCORE by ihongs.
the class Data method save.
public void save(String id, Map rd) throws HongsException {
String fid = getFormId();
Table table = getTable();
String where = "`id`=? AND `form_id`=? AND `etime`=?";
Object[] param = new String[] { id, fid, "0" };
long ctime = System.currentTimeMillis() / 1000;
time = ctime;
// 删除当前数据
if (rd == null) {
if (table != null) {
Map ud = new HashMap();
ud.put("etime", ctime);
ud.put("state", 0);
table.update(ud, where, param);
}
super.del(id);
return;
}
// 获取旧的数据
Map dd;
if (table != null) {
dd = table.fetchCase().filter(where, param).select("data,ctime").one();
if (!dd.isEmpty()) {
if (ctime <= Synt.declare(dd.get("ctime"), 0L)) {
throw new HongsException(0x1100, "等会儿, 不要急");
}
dd = (Map) app.hongs.util.Data.toObject(dd.get("data").toString());
}
} else {
dd = get(id);
}
// 合并新旧数据
int i = 0;
Map<String, Map> fields = getFields();
for (String fn : fields.keySet()) {
if ("id".equals(fn)) {
dd.put(fn, id);
} else if (rd.containsKey(fn)) {
Object fr = Synt.defoult(rd.get(fn), "");
Object fo = Synt.defoult(dd.get(fn), "");
dd.put(fn, fr);
if (!equals(fr, fo) && !fn.equals("muid") && !fn.equals("mtime")) {
// 需要排除修改环境数据
i++;
}
}
}
// 无更新不存储
if (i == 0) {
return;
}
dd.put("name", getName(dd));
dd.put("word", getWord(dd));
if (table != null) {
Map ud = new HashMap();
ud.put("etime", ctime);
Map nd = new HashMap();
nd.put("ctime", ctime);
nd.put("etime", 0);
nd.put(/**
*/
"id", id);
nd.put("form_id", fid);
nd.put("user_id", rd.get("user_id"));
nd.put("name", dd.get("name"));
nd.put("memo", rd.get("memo"));
nd.put("data", app.hongs.util.Data.toString(dd));
table.update(ud, where, param);
table.insert(nd);
}
// ** 保存到索引库 **/
Document doc = new Document();
dd.put(Cnst.ID_KEY, id);
docAdd(doc, dd);
setDoc(id, doc);
}
use of app.hongs.db.Table in project HongsCORE by ihongs.
the class Data method redo.
public void redo(String id, Map rd) throws HongsException {
long ctime = System.currentTimeMillis() / 1000;
long rtime = Synt.declare(rd.get("rtime"), 0L);
// ** 获取旧的数据 **/
String fid = getFormId();
Table table = getTable();
String where = "`id`=? AND `form_id`=? AND `ctime`=?";
Object[] param = new Object[] { id, fid, rtime };
if (table == null) {
throw new HongsException(0x1100, "此资源不支持恢复");
}
Map dd = table.fetchCase().filter(where, param).select("data, name, etime").orderBy("ctime DESC").one();
if (dd.isEmpty()) {
throw new HongsException(0x1100, "恢复数据源不存在");
}
if (Synt.declare(dd.get("etime"), 0L) == 0L) {
throw new HongsException(0x1100, "活跃数据不可操作");
}
// ** 保存到数据库 **/
Map ud = new HashMap();
ud.put("etime", ctime);
rd.put("ctime", ctime);
rd.put("rtime", rtime);
rd.put("etime", 0);
rd.put("name", dd.get("name"));
rd.put("data", dd.get("data"));
where = "`id`=? AND `form_id`=? AND `etime`=?";
param = new Object[] { id, fid, 0 };
table.update(ud, where, param);
table.insert(rd);
// ** 保存到索引库 **/
dd = (Map) app.hongs.util.Data.toObject(dd.get("data").toString());
Document doc = new Document();
dd.put(Cnst.ID_KEY, id);
docAdd(doc, dd);
setDoc(id, doc);
}
use of app.hongs.db.Table in project HongsCORE by ihongs.
the class Form method deleteAuthRole.
protected void deleteAuthRole(String id) throws HongsException {
ActionHelper helper = Core.getInstance(ActionHelper.class);
String uid = (String) helper.getSessibute(Cnst.UID_SES);
String tan;
// 删除权限
tan = (String) table.getParams().get("role.table");
if (tan != null) {
Table tab = db.getTable(tan);
tab.remove("`role` IN (?)", Synt.setOf(prefix + "/" + id + "/search", prefix + "/" + id + "/create", prefix + "/" + id + "/update", prefix + "/" + id + "/delete", prefix + "/" + id + "/revert"));
}
// 更新缓存(通过改变权限更新时间)
tan = (String) table.getParams().get("user.table");
if (tan != null) {
Table tab = db.getTable(tan);
tab.update(Synt.mapOf("rtime", System.currentTimeMillis() / 1000), "`id` = ?", uid);
}
}
Aggregations