1.<script type="text/javascript">
if (self != top) { //主页不允许在iframe中top.window.location.reload();
}
</script>
整个页面的一个判断,因为好多是多个页面嵌套为一个页面的。
location.href ---如果后面没跟值 那么就是获取当前页面的url
至于top, 表示是顶层页面, 因为页面之中可能嵌入了 frame 等子页面,top表示最外面一层
top.location.href -- 当前页面地址
调试:
后台跟踪流程
1.“"开启页面交互的方法-------login-----
跳转LoginController遍历其中的公有的方法名称。
---index方法(实现页面跳转到登录界面login.html)
public void index() { setAttr("isShowRandomCode", isShowRandomCode()); render("login.html"); }
--getMenu方法、/admin用户拥有所有页面
public void getMenu() { //admin用户拥有所有页面 if("admin".equals(getSessionUser().get("user_name"))) { renderJson(Menu.me.findAll()); }else { Object menuList = getSessionAttr("menuList"); renderJson(menuList); } }
randomCode方法
/** * 图形验证码 */ public void randomCode() { renderCaptcha(); }
login方法
public void login() { String userName = getPara("user_name"); String remark = "登陆成功"; // 登陆日志 SysLoginLog log = new SysLoginLog().setUsername(userName) .setSessionId(getSession().getId()).setIp(getRemoteAddress()).setCreateTime(new Date()); // 验证验证码 boolean isShowRandomCode = isShowRandomCode(); if(isShowRandomCode && (StringUtil.isEmpty(getPara("randomCode")) || !validateCaptcha("randomCode"))) { remark = "验证码错误!"; log.setIsSuccess(0).setRemark(remark).save(); renderFailed(remark, isShowRandomCode); return; } LoginService loginService = Duang.duang(LoginService.class); List<SysUser> list = SysUser.me.findByMultiProperties(new String[]{"user_name", "password"}, new Object[]{userName, PasswordUtil.encodePassword(getPara("password"))}); if(list.size() > 0) { setSessionAttr("sysUser", list.get(0)); //用户菜单 setSessionAttr("menuList", loginService.getUserMenu(getSessionUser())); //页面权限 List<String> noAuthUrl = loginService.getNoAuthUrl(); setSessionAttr("noAuthUrl", noAuthUrl); //按钮权限 setSessionAttr("noAuthBtnUrl", loginService.getNoAuthBtnUrl(getSessionUser())); //数据权限 setSessionAttr("noAuthDatarule", loginService.getNoAuthDatarule(getSessionUser())); if("admin".equals(getSessionUser().get("user_name"))) { setSessionAttr("noAuthUrl", null); setSessionAttr("noAuthBtnUrl", null); setSessionAttr("pageBtnMap", null); setSessionAttr("noAuthDatarule", null); } addOpLog("登陆系统"); log.setIsSuccess(1).setRemark(remark).save(); renderSuccess(); }else { remark = "用户名或密码错误!"; log.setIsSuccess(0).setRemark(remark).save(); renderFailed(remark, isShowRandomCode); } }
logout方法
public void logout() { addOpLog("退出系统"); removeSessionAttr("sysUser"); redirect("/login"); }
继续遍历父类中Controller中公有的方法--getFile方法,getCookie方法,redirect方法,setAttr方法等公有方法,然后继续遍历其父类controller和Object中的公有方法。
pubic com.jfinal.upload.UploadFile com.jfinal.core.Controller.getFile(java.lang.String,java.lang.String,int);
继续加载TspaceController中d的方法
--add,
//增加 public void add() { int headId = getHeadId(); TspaceMeta metaData = DbMetaTool.getMetaData(headId); TspaceHead head = metaData.getHead(); Map<String, String[]> paraMap = new HashMap<String, String[]>(); paraMap.putAll(getParaMap()); //原始paramMap不允许修改,因此创建新的paraMap String handleClass = head.getStr("handle_class"); if(StringUtil.isNotEmpty(handleClass)) { try { CurdHandle ch = (CurdHandle) Duang.duang(Class.forName(handleClass)); ch.add(metaData, getRequest(), paraMap); } catch (Exception e) { e.printStackTrace(); } } TspaceService tspaceService = Duang.duang(TspaceService.class); tspaceService.add(getHeadId(), paraMap, getRequest(), getSessionUser()); addOpLog("[" + head.getFormName() + "] 增加"); renderSuccess(); }
update,
//修改 public void update() { int headId = getHeadId(); TspaceMeta metaData = DbMetaTool.getMetaData(headId); TspaceHead head = metaData.getHead(); Map<String, String[]> paraMap = new HashMap<String, String[]>(); paraMap.putAll(getParaMap()); //原始paramMap不允许修改,因此创建新的paraMap String handleClass = head.getStr("handle_class"); if(StringUtil.isNotEmpty(handleClass)) { try { CurdHandle ch = (CurdHandle) Duang.duang(Class.forName(handleClass)); ch.update(metaData, getRequest(), paraMap); } catch (Exception e) { e.printStackTrace(); } } TspaceService tspaceService = Duang.duang(TspaceService.class); tspaceService.update(getHeadId(), getParaToInt("id"), paraMap, getSessionUser()); addOpLog("[" + head.getFormName() + "] 修改"); renderSuccess(); }
listData,
//列表数据 public void listData() { int headId = getHeadId(); TspaceService tspaceService = Duang.duang(TspaceService.class); TspaceMeta metaData = DbMetaTool.getMetaData(headId); TspaceHead head = metaData.getHead(); Object[] queryParams = getQueryParams(); String[] properties = (String[]) queryParams[0]; String[] symbols = (String[]) queryParams[1]; Object[] values = (Object[]) queryParams[2]; String orderBy = getOrderBy(); if(StringUtil.isEmpty(orderBy)) { orderBy = head.getIdField() + " desc"; } renderDatagrid( TspaceTool.replaceDict(metaData, DBTool.findByMultPropertiesDbSource(head.getDbSource(), head.getTableName(), properties, symbols, values, orderBy, getPager())), DBTool.countByMultPropertiesDbSource(head.getDbSource(), head.getTableName(), properties, symbols, values), tspaceService.getFooter(metaData, properties, symbols, values)); }
listPage,
public void listPage() { int headId = getHeadId(); TspaceService tspaceService = Duang.duang(TspaceService.class); TspaceMeta metaData = tspaceService.getMetaData(headId); flushDictData(metaData); // 默认排序 setAttr("sort", getPara("sort")); setAttr("order", getPara("order")); setAttr("headId", headId); setAttrs(metaData.toMap()); setAttr("queryPara", TspaceTool.getQueryPara(getParaMap())); handleVar(metaData, null); render("listPage.html"); }
addPage,
//增加页面 public void addPage() { int headId = getHeadId(); TspaceService tspaceService = Duang.duang(TspaceService.class); TspaceMeta metaData = tspaceService.getMetaData(headId); flushDictData(metaData); //变量 Map<String, Object> varData = new HashMap<String, Object>(); varData.put("user", getSessionUser()); varData.put("metaData", metaData); varData.put("request", getRequest()); varData.put("session", getRequest().getSession()); for (TspaceField field : metaData.getAddFieldList()) { String defaultValue = field.getStr("default_value"); if(StringUtil.isNotEmpty(defaultValue)) { //默认值变量处理 field.set("default_value", FreemarkUtil.parse(defaultValue, varData)); } } setAttr("headId", headId); setAttrs(metaData.toMap()); setAttr("queryPara", TspaceTool.getQueryPara(getParaMap())); handleVar(metaData, null); }
updatePage,
//修改页面 public void updatePage() { int headId = getHeadId(); TspaceService tspaceService = Duang.duang(TspaceService.class); TspaceMeta metaData = tspaceService.getMetaData(headId); flushDictData(metaData); setAttr("headId", headId); setAttrs(metaData.toMap()); Record currRecord = tspaceService.get(headId, getParaToInt("id")); setAttr("model", currRecord.getColumns()); handleVar(metaData, currRecord); render("updatePage.html"); }
delt
//删除 public void delete() { int headId = getHeadId(); TspaceMeta metaData = DbMetaTool.getMetaData(headId); TspaceHead head = metaData.getHead(); Integer[] ids = getParaValuesToInt("id[]"); TspaceService tspaceService = Duang.duang(TspaceService.class); tspaceService.delete(getHeadId(), ids); addOpLog("[" + head.getFormName() + "] 删除"); renderSuccess(); }
detailPage,
//详情页面 public void detailPage() { int headId = getHeadId(); TspaceMeta metaData = DbMetaTool.getMetaData(headId); TspaceService tspaceService = Duang.duang(TspaceService.class); Record row = tspaceService.get(headId, getParaToInt("id")); setAttr("headId", headId); setAttrs(metaData.toMap()); setAttr("model", TspaceTool.replaceDict(metaData, row)); handleVar(metaData, row); render("detailPage.html"); }
exportCsv
//导出csv public void exportCsv() { int headId = getHeadId(); TspaceMeta metaData = DbMetaTool.getMetaData(headId); TspaceHead head = metaData.getHead(); List<TspaceField> fieldList = metaData.getFieldList(); flushDictData(metaData); Object[] queryParams = getQueryParams(); String[] properties = (String[]) queryParams[0]; String[] symbols = (String[]) queryParams[1]; Object[] values = (Object[]) queryParams[2]; String orderBy = getOrderBy(); if(StringUtil.isEmpty(orderBy)) { orderBy = head.getIdField() + " desc"; } List<Record> list = TspaceTool.replaceDict(headId, DBTool.findByMultPropertiesDbSource(TspaceTool.getDbSource(head.getDbSource()), head.getTableName(), properties, symbols, values)); List<String> headers = new ArrayList<String>(); List<String> clomuns = new ArrayList<String>(); for (TspaceField tspaceField : fieldList) { if(tspaceField.getInt("is_show_list") == 1) { headers.add(tspaceField.getStr("column_name")); clomuns.add(tspaceField.getStr("field_name")); } } CsvRender csvRender = new CsvRender(headers, list); csvRender.clomuns(clomuns); csvRender.fileName(head.getStr("form_name")); addOpLog("[" + head.getFormName() + "] 导出cvs"); render(csvRender); }
遍历完成后继续遍历其父类controller和Object中的方法
继续加载TspaceController中的方法和其父类controller和object
list
//表单列表 public void list() { render("head/list.html"); }
listData
//列表页面数据 public void listData() { Object[] queryParams = getQueryParams(); String[] properties = (String[]) queryParams[0]; String[] symbols = (String[]) queryParams[1]; Object[] values = (Object[]) queryParams[2]; String orderBy = getOrderBy(); if(StringUtil.isEmpty(orderBy)) { orderBy = "id desc"; } renderDatagrid( DBTool.findByMultProperties("tspace_head", properties, symbols, values, orderBy, getPager()), DBTool.countByMultProperties("tspace_head", properties, symbols, values) ); }
updatePage
//修改页面 public void updatePage() { setAttr("model", TspaceHead.me.findById(getParaToInt("id"))); render("head/update.html"); }
update
//修改 public void update() { final String fields = getPara("rowsStr"); final JSONArray jsonObjs = JSONObject.parseArray(fields); Db.tx(new IAtom(){ @SuppressWarnings("unchecked") public boolean run() throws SQLException { TspaceHead tspaceHead = getModel(TspaceHead.class, "model"); tspaceHead.update(); final Long headId = tspaceHead.getLong("id"); Db.update("delete from tspace_field where head_id=" + headId); if(jsonObjs.size() > 0) { for (Object object : jsonObjs) { TspaceField field = new TspaceField(); field.set("head_id", headId); field.put((Map<String, Object>)object); field.save(); } } DbMetaTool.updateMetaData(headId.intValue()); return true; } }); addOpLog("[在线表单] 修改"); renderSuccess("保存成功!"); }
genFormPage
//生成表单页面 public void genFormPage() { render("head/genForm.html"); }
genFormData
//生成表单页面 public void genFormData() { String dbSource = getPara("db_source"); String dbName = (String) DBTool.use(dbSource).execute(new ICallback() { @Override public Object call(Connection conn) throws SQLException { return conn.getCatalog(); } }); String sql = "select TABLE_SCHEMA, TABLE_TYPE, a.TABLE_NAME, TABLE_COMMENT, CREATE_TIME from information_schema.TABLES a where a.TABLE_SCHEMA='" + dbName + "' order by CREATE_TIME desc"; renderDatagrid(DBTool.use(dbSource).find(sql)); }
genForm
//生成表单 public void genForm() { String tableName = getPara("tableName"); String dbSource = getPara("db_source"); TspaceService tspaceService = Duang.duang(TspaceService.class); tspaceService.genForm(tableName, dbSource); addOpLog("[在线表单] 生成表单"); renderSuccess(); }
delete
//删除 public void delete() { Integer[] ids = getParaValuesToInt("id[]"); for (Integer id : ids) { TspaceHead.me.deleteById(id); Db.update("delete from tspace_field where head_id=?", id); DbMetaTool.updateMetaData(id); } addOpLog("[在线表单] 删除"); renderSuccess(); }
listField
//字段列表 public void listField() { renderDatagrid(TspaceField.me.paginate(getParaToInt("page", 1), getParaToInt("rows", 500), getParaToInt("head_id"))); }
genCode
//代码生成 public void genCode() throws IOException, TemplateException { int headId = getParaToInt("headId"); TspaceService tspaceService = Duang.duang(TspaceService.class); TspaceMeta metaMap = tspaceService.getMetaData(headId); TspaceHead head = metaMap.getHead(); String tableName = head.getTableName(); String className = tableName.substring(0, 1).toUpperCase() + tableName.substring(1); int index = className.indexOf("_"); while(index > 0) { String s = className.substring(index + 1, index + 2); className = className.replace("_" + s, s.toUpperCase()); index = className.indexOf("_"); } String lowerClassName = className.substring(0, 1).toLowerCase() + className.substring(1); Map<String, Object> mateDate = metaMap.toMap(); mateDate.put("className", className); mateDate.put("queryPara", new HashMap<>()); //复制模板 copyTemp("listPage.html"); //列表页面 copyTemp("addPage.html"); //增加页面 copyTemp("updatePage.html"); //编辑页面 copyTemp("detailPage.html"); //详情页面 String genCodePath = PropKit.get("genCodePath") + className + "/"; String genCodePagePath = genCodePath + lowerClassName + "/"; new File(genCodePath).mkdirs(); new File(genCodePagePath).mkdirs(); gen(mateDate, "/tspace/tspace/genCode/listPage.html", genCodePagePath + "list.html"); gen(mateDate, "/tspace/tspace/genCode/addPage.html", genCodePagePath + "add.html"); gen(mateDate, "/tspace/tspace/genCode/updatePage.html", genCodePagePath + "update.html"); gen(mateDate, "/tspace/tspace/genCode/detailPage.html", genCodePagePath + "detail.html"); gen(mateDate, "/tspace/tspace/genCode/controller.html", genCodePath + className + "Controller.java"); gen(mateDate, "/tspace/tspace/genCode/model.html", genCodePath + className + ".java"); addOpLog("[在线表单] 生成代码"); renderSuccess("代码生成成功!保存在" + genCodePath); }
gen
/** * 生成代码 */ private void gen(Map<String, Object> mateDate, String tempFile, String genFile) throws FileNotFoundException, UnsupportedEncodingException { Configuration config = FreeMarkerRender.getConfiguration(); PrintWriter pw = new PrintWriter(new File(genFile), "utf8"); try { Template template = config.getTemplate(tempFile); template.process(mateDate, pw); } catch (Exception e) { throw new RenderException(e); } finally { if (pw != null) { pw.close(); } } }
copyTemp
/** * 复制模板文件(共用tspace的模板) */ private void copyTemp(String fileName) { String basePath = PathKit.getWebRootPath() + "/tspace/tspace/"; String content = StringUtil.readTxt2String(new File(basePath + fileName)); //对特定标签进行替换,使freemark不解析 //替换include标签 content = content.replaceAll("<#include", "\\${\"<\"}#include"); //替换字典数据输出 content = content.replace("<#list item.dict.keySet() as key>,{id:'${key}', text:'${item.dict.get(key)}'}</#list>", "<${'#'}list dictData${item.field_name}.keySet() as key>,{id:'${'$'}{key}', text:'${'$'}{dictData${item.field_name}.get(key)}'}</${'#'}list>"); if("addPage.html".equals(fileName) || "updatePage.html".equals(fileName) || "detailPage.html".equals(fileName)) { //删除块 content = content.replace("\"headId\": ${headId},", ""); //替换主键、model输出 content = content.replace("model[item.field_name]??", "1==1"); //临时处理,默认都显示图片 content = content.replace("${model[head.id_field]}", "${'$'}{model.${head.id_field}}"); content = content.replaceAll("\\$\\{model\\[item\\.field_name\\]", "\\${'\\$'}{model.\\${item.field_name}"); content = content.replaceAll("\\$\\{modelDetail\\[item\\.field_name\\]", "\\${'\\$'}{modelDetail.\\${item.field_name}"); } StringUtil.saveToFile(basePath + "genCode/" + fileName, content); }
继续加载TspaceController中的方法和其父类controller和object
listAll
public void listAll() { renderJson(Menu.me.findAll()); }
list
public void list() { render("list.html"); }
addPage
public void addPage() { render("add.html"); }
add
public void add() { if(getModel(Menu.class, "model").save()) { addOpLog("[菜单管理] 增加"); renderSuccess(); }else { renderFailed(); } }
updatePage
public void updatePage() { setAttr("model", Menu.me.findById(getParaToInt("id"))); render("update.html"); }
update
public void update() { if(getModel(Menu.class, "model").update()) { addOpLog("[菜单管理] 修改"); renderSuccess(); }else { renderFailed(); } }
delete
public void delete() { Integer[] ids = getParaValuesToInt("id[]"); for (Integer id : ids) { Menu.me.deleteById(id); } addOpLog("[菜单管理] 删除"); renderSuccess(); }
继续加载MainController中的方法和其父类controller和object
public class MainController extends Controller { public void index() { render("main.html"); } }
继续加载RoleController中的方法和其父类controller和object
editAuthPage
//编辑权限页面 public void editAuthPage() { int roleId = getParaToInt("roleId"); setAttr("roleId", roleId); List<Record> btnIds = Db.find("select b.menu_id, b.id from sys_role_btn a join sys_menu_btn b on a.btn_id=b.id where role_id=?", roleId); List<Record> dataruleIds = Db.find("select b.menu_id, b.id from sys_role_datarule a join sys_menu_datarule b on a.datarule_id=b.id where role_id=?", roleId); setAttr("btnIds", btnIds); setAttr("dataruleIds", dataruleIds); render("editAuth.html"); }
editAuth
//编辑权限 public void editAuth() { String menuIds = getPara("menuIds"); String btnIds = getPara("btnIds"); String dataruleIds = getPara("dataruleIds"); int roleId = getParaToInt("roleId"); RoleService roleService = Duang.duang(RoleService.class); roleService.saveAuth(menuIds, btnIds, dataruleIds, roleId); addOpLog("[权限管理] 修改"); renderSuccess(); }
getAllMenu
//所有菜单 public void getAllMenu() { int roleId = getParaToInt("roleId", 0); Map<String, Object> result = new HashMap<String, Object>(); result.put("menuIds", Db.find("select * from sys_role_menu where role_id=?", roleId)); result.put("menuList", Menu.me.findAll()); renderJson(result); }
genAuthBtnBatch
//一键生成增、删、改、导出权限按钮 public void genAuthBtnBatch() { int menuId = getParaToInt("menuId"); List<SysMenuBtn> modelList = new ArrayList<SysMenuBtn>(); modelList.add(new SysMenuBtn().set("menu_id", menuId).set("btn_name", "增加").set("class_name", "addBtn").set("method_name", "add,addPage")); modelList.add(new SysMenuBtn().set("menu_id", menuId).set("btn_name", "修改").set("class_name", "updateBtn").set("method_name", "update,updatePage")); modelList.add(new SysMenuBtn().set("menu_id", menuId).set("btn_name", "删除").set("class_name", "delBtn").set("method_name", "delete")); modelList.add(new SysMenuBtn().set("menu_id", menuId).set("btn_name", "导出").set("class_name", "exportBtn").set("method_name", "exportCsv")); Db.batchSave(modelList, 1000); renderSuccess(); }
继续加载CommonController中的方法和其父类controller和object
getDictData
//获得字典数据 public void getDictData() { Object[] queryParams = getQueryParams(); String[] properties = (String[]) queryParams[0]; String[] symbols = (String[]) queryParams[1]; Object[] values = (Object[]) queryParams[2]; String orderBy = getOrderBy(); if(StringUtil.isEmpty(orderBy)) { orderBy = "id desc"; } renderJson(DBTool.findByMultProperties("sys_dict", properties, symbols, values)); }
iconsPage
//图标页面 public void iconsPage() { render("common/icons.html"); }
uploadFile
//文件上传 public void uploadFile() { UploadFile file = getFile("upload", "images", 1024 * 1024 * 5); //上传文件不能大于5M if(file != null) { //保存日志 new CommonFile().set("type", 1) //1表示图片 .set("path", file.getFileName()) .set("sys_user_id", getSessionUser().get("id")) .save(); renderJson("/upload/images/" + file.getFileName()); }else { renderFailed(); } }
taskPage
// 定时任务页面 public void taskPage() { render("common/task.html"); }继续加载SysOplogController中的方法和其父类controller和object
listPage
public void listPage() { setAttr("dictDatauser_id", SysOplog.me.getDictDatauser_id()); render("list.html"); }
listData
public void listData() { Object[] queryParams = getQueryParams(); String[] properties = (String[]) queryParams[0]; String[] symbols = (String[]) queryParams[1]; Object[] values = (Object[]) queryParams[2]; String orderBy = getOrderBy(); if(StringUtil.isEmpty(orderBy)) { orderBy = "id desc"; } List<Record> list = DBTool.findByMultPropertiesDbSource("tspace_base", "sys_oplog", properties, symbols, values, orderBy, getPager()); Map<String, Object> dictDatauser_id = SysOplog.me.getDictDatauser_id(); for(Record record : list) { String fieldName = "user_id"; if(dictDatauser_id.get(record.get(fieldName).toString()) != null) { record.set(fieldName, dictDatauser_id.get(record.get(fieldName).toString())); } } renderDatagrid( list, DBTool.countByMultPropertiesDbSource("tspace_base", "sys_oplog", properties, symbols, values) ); }
exportCsv
//导出csv public void exportCsv() { Object[] queryParams = getQueryParams(); String[] properties = (String[]) queryParams[0]; String[] symbols = (String[]) queryParams[1]; Object[] values = (Object[]) queryParams[2]; String orderBy = getOrderBy(); if(StringUtil.isEmpty(orderBy)) { orderBy = "id desc"; } List<Record> list = DBTool.findByMultPropertiesDbSource("tspace_base", "sys_oplog", properties, symbols, values); Map<String, Object> dictDatauser_id = SysOplog.me.getDictDatauser_id(); for(Record record : list) { String fieldName = "user_id"; if(dictDatauser_id.get(record.get(fieldName).toString()) != null) { record.set(fieldName, dictDatauser_id.get(record.get(fieldName).toString())); } } List<String> headers = new ArrayList<String>(); List<String> clomuns = new ArrayList<String>(); headers.add("操作内容"); clomuns.add("op_content"); CsvRender csvRender = new CsvRender(headers, list); csvRender.clomuns(clomuns); csvRender.fileName("系统操作日志"); addOpLog("[系统操作日志] 导出cvs"); render(csvRender); }
继续加载SysUserController中的方法和其父类controller和object
updatePasswordPage
//修改密码页面 public void updatePasswordPage() { setAttr("dictDataroles", SysUser.me.getDictDataroles()); setAttr("model", SysUser.me.findById(getSessionUser().getId())); render("updatePassword.html"); }
updatePassword
//修改密码 public void updatePassword() { SysUser model = SysUser.me.findById(getSessionUser().get("id")); if(!model.getStr("password").equals(PasswordUtil.encodePassword(getPara("model.old_password")))) { renderFailed("原始密码输入错误"); return; } model.set("password", PasswordUtil.encodePassword(getPara("model.password"))); model.update(); addOpLog("[用户行为] 修改密码"); renderSuccess(); }resetPassword
//重置密码 public void resetPassword() { Db.update("update sys_user set password='" + PasswordUtil.encodePassword(PasswordUtil.defaultPassword) + "' where id=" + getParaToInt("id")); addOpLog("[系统用户] 重置密码"); renderSuccess(); }
继续加载TaskBaseController中的方法和其父类controller和object
public void listPage() { setAttr("dictDatatarget_type", TaskBase.me.getDictDatatarget_type()); setAttr("dictDatastatus", TaskBase.me.getDictDatastatus()); render("list.html"); }
listData
public void listData() { Object[] queryParams = getQueryParams(); String[] properties = (String[]) queryParams[0]; String[] symbols = (String[]) queryParams[1]; Object[] values = (Object[]) queryParams[2]; String orderBy = getOrderBy(); if(StringUtil.isEmpty(orderBy)) { orderBy = "id desc"; } List<Record> list = DBTool.findByMultPropertiesDbSource("tspace_base", "task_base", properties, symbols, values, orderBy, getPager()); TspaceTool.replaceDict(TaskBase.me.getDictDatatarget_type(), list, "target_type"); TspaceTool.replaceDict(TaskBase.me.getDictDatastatus(), list, "status"); renderDatagrid( list, DBTool.countByMultPropertiesDbSource("tspace_base", "task_base", properties, symbols, values) ); }
addPage
//增加页面 public void addPage() { setAttr("dictDatatarget_type", TaskBase.me.getDictDatatarget_type()); setAttr("dictDatastatus", TaskBase.me.getDictDatastatus()); render("add.html"); }
add
//增加 public void add() { TaskBase model = getModel(TaskBase.class, "model"); TaskService taskService = Duang.duang(TaskService.class); taskService.add(model); addOpLog("[定时任务] 增加"); renderSuccess(); }
updatePage
//修改页面 public void updatePage() { setAttr("dictDatatarget_type", TaskBase.me.getDictDatatarget_type()); setAttr("dictDatastatus", TaskBase.me.getDictDatastatus()); setAttr("model", TaskBase.me.findById(getPara("id"))); render("update.html"); }
update
//修改 public void update() { TaskBase model = TaskBase.me.findById(getPara("id")); model.setName(getPara("model.name")); model.setTargetType(getParaToInt("model.target_type")); model.setTargetValue(getPara("model.target_value")); model.setCron(getPara("model.cron")); model.setStatus(getParaToInt("model.status")); TaskService taskService = Duang.duang(TaskService.class); taskService.update(model); addOpLog("[定时任务] 修改"); renderSuccess(); }
delete
//删除 public void delete() { Integer[] ids = getParaValuesToInt("id[]"); TaskService taskService = Duang.duang(TaskService.class); for (Integer id : ids) { taskService.delete(id); } addOpLog("[定时任务] 删除"); renderSuccess(); }
detailPage
//详情页面 public void detailPage() { TaskBase model = TaskBase.me.findById(getParaToInt("id")); Map<String, Object> dictDatatarget_type = TaskBase.me.getDictDatatarget_type(); if(dictDatatarget_type.get(model.get("target_type").toString()) != null) { model.set("target_type", dictDatatarget_type.get(model.get("target_type").toString())); } Map<String, Object> dictDatastatus = TaskBase.me.getDictDatastatus(); if(dictDatastatus.get(model.get("status").toString()) != null) { model.set("status", dictDatastatus.get(model.get("status").toString())); } setAttr("model", model); render("detail.html"); }
startOrStop
//启动/停止任务 public void startOrStop() { TaskService taskService = Duang.duang(TaskService.class); taskService.startOrStop(getParaToInt("id"), getParaToInt("status")); renderSuccess(); }
runAtSoon
//立即执行 public void runAtSoon() { TaskService taskService = Duang.duang(TaskService.class); TaskBase taskBase = TaskBase.me.findById(getPara("id")); taskService.runAtSoon(taskBase); renderSuccess(); }exportCsv
//导出csv public void exportCsv() { Object[] queryParams = getQueryParams(); String[] properties = (String[]) queryParams[0]; String[] symbols = (String[]) queryParams[1]; Object[] values = (Object[]) queryParams[2]; String orderBy = getOrderBy(); if(StringUtil.isEmpty(orderBy)) { orderBy = "id desc"; } List<Record> list = DBTool.findByMultPropertiesDbSource("tspace_base", "task_base", properties, symbols, values); List<String> headers = new ArrayList<String>(); List<String> clomuns = new ArrayList<String>(); headers.add("名称"); clomuns.add("name"); headers.add("目标类型"); clomuns.add("target_type"); headers.add("目标值"); clomuns.add("target_value"); headers.add("cron表达式"); clomuns.add("cron"); headers.add("上次执行时间"); clomuns.add("last_run_time"); headers.add("上次执行耗时"); clomuns.add("last_run_time_cost"); headers.add("状态"); clomuns.add("status"); CsvRender csvRender = new CsvRender(headers, list); csvRender.clomuns(clomuns); csvRender.fileName("定时任务"); addOpLog("[定时任务] 导出cvs"); render(csvRender); }
继续加载StockHistoryLogController中的方法和其父类controller和object
public void listPage() { render("list.html"); }listData
public void listData() { Object[] queryParams = getQueryParams(); String[] properties = (String[]) queryParams[0]; String[] symbols = (String[]) queryParams[1]; Object[] values = (Object[]) queryParams[2]; String orderBy = getOrderBy(); if(StringUtil.isEmpty(orderBy)) { orderBy = "id desc"; } renderDatagrid( DBTool.findByMultPropertiesDbSource("tspace_busi", "stock_history_log", properties, symbols, values, orderBy, getPager()), DBTool.countByMultPropertiesDbSource("tspace_busi", "stock_history_log", properties, symbols, values) ); }addPage
//增加页面 public void addPage() { render("add.html"); }add
//增加 public void add() { getModel(StockHistoryLog.class, "model").save(); renderSuccess(); }updatePage
//修改页面 public void updatePage() { setAttr("model", StockHistoryLog.me.findById(getPara("id"))); render("update.html"); }update
//修改 public void update() { StockHistoryLog model = StockHistoryLog.me.findById(getPara("id")); model.set("dt", getPara("model.dt")); model.set("code", getPara("model.code")); model.set("name", getPara("model.name")); model.set("closing_price", getPara("model.closing_price")); model.set("top_price", getPara("model.top_price")); model.set("minimum_price", getPara("model.minimum_price")); model.set("opening_price", getPara("model.opening_price")); model.set("pre", getPara("model.pre")); model.set("change_amount", getPara("model.change_amount")); model.set("change_ratio", getPara("model.change_ratio")); model.set("turnover_volume", getPara("model.turnover_volume")); model.set("turnover_money", getPara("model.turnover_money")); model.set("create_time", getPara("model.create_time")); model.update(); renderSuccess(); }delete
//删除 public void delete() { Integer[] ids = getParaValuesToInt("id[]"); for (Integer id : ids) { new StockHistoryLog().set("id", id).delete(); } renderSuccess(); }detailPage
//详情页面 public void detailPage() { render("detail.html"); }exportCsv
//导出csv public void exportCsv() { Object[] queryParams = getQueryParams(); String[] properties = (String[]) queryParams[0]; String[] symbols = (String[]) queryParams[1]; Object[] values = (Object[]) queryParams[2]; String orderBy = getOrderBy(); if(StringUtil.isEmpty(orderBy)) { orderBy = "id desc"; } List<Record> list = DBTool.findByMultPropertiesDbSource("tspace_busi", "stock_history_log", properties, symbols, values); List<String> headers = new ArrayList<String>(); List<String> clomuns = new ArrayList<String>(); headers.add("日期"); clomuns.add("dt"); headers.add("股票代码"); clomuns.add("code"); headers.add("名称"); clomuns.add("name"); headers.add("收盘价"); clomuns.add("closing_price"); headers.add("最高价"); clomuns.add("top_price"); headers.add("最低价"); clomuns.add("minimum_price"); headers.add("开盘价"); clomuns.add("opening_price"); headers.add("前收盘"); clomuns.add("pre"); headers.add("涨跌额"); clomuns.add("change_amount"); headers.add("涨跌幅"); clomuns.add("change_ratio"); headers.add("成交量"); clomuns.add("turnover_volume"); headers.add("成交金额"); clomuns.add("turnover_money"); headers.add("创建时间"); clomuns.add("create_time"); CsvRender csvRender = new CsvRender(headers, list); csvRender.clomuns(clomuns); csvRender.fileName("股票历史数据"); render(csvRender); }
继续加载ClawBookUrlController中的方法和其父类controller和object
public void listPage() { setAttr("dictDatastatus", ClawBookUrl.me.getDictDatastatus()); render("list.html"); }listData
public void listData() { Object[] queryParams = getQueryParams(); String[] properties = (String[]) queryParams[0]; String[] symbols = (String[]) queryParams[1]; Object[] values = (Object[]) queryParams[2]; String orderBy = getOrderBy(); if(StringUtil.isEmpty(orderBy)) { orderBy = "id desc"; } List<Record> list = DBTool.findByMultPropertiesDbSource("tspace_busi", "claw_book_url", properties, symbols, values, orderBy, getPager()); Map<String, Object> dictDatastatus = ClawBookUrl.me.getDictDatastatus(); for(Record record : list) { String fieldName = "status"; if(dictDatastatus.get(record.get(fieldName).toString()) != null) { record.set(fieldName, dictDatastatus.get(record.get(fieldName).toString())); } } renderDatagrid( list, DBTool.countByMultPropertiesDbSource("tspace_busi", "claw_book_url", properties, symbols, values) ); }addPage
//增加页面 public void addPage() { setAttr("dictDatastatus", ClawBookUrl.me.getDictDatastatus()); render("add.html"); }add
//增加 public void add() { getModel(ClawBookUrl.class, "model").save(); renderSuccess(); }updatePage
//修改页面 public void updatePage() { setAttr("dictDatastatus", ClawBookUrl.me.getDictDatastatus()); setAttr("model", ClawBookUrl.me.findById(getPara("id"))); render("update.html"); }
//修改 public void update() { ClawBookUrl model = ClawBookUrl.me.findById(getPara("id")); model.set("source", getPara("model.source")); model.set("book_name", getPara("model.book_name")); model.set("url", getPara("model.url")); model.set("status", getPara("model.status")); model.set("create_time", getPara("model.create_time")); model.set("last_update_time", getPara("model.last_update_time")); model.update(); renderSuccess(); }delete
//删除 public void delete() { Integer[] ids = getParaValuesToInt("id[]"); for (Integer id : ids) { new ClawBookUrl().set("id", id).delete(); } renderSuccess(); }
//详情页面 public void detailPage() { ClawBookUrl model = ClawBookUrl.me.findById(getParaToInt("id")); String fieldName = "status"; Map<String, Object> dictDatastatus = ClawBookUrl.me.getDictDatastatus(); if(dictDatastatus.get(model.get(fieldName).toString()) != null) { model.set(fieldName, dictDatastatus.get(model.get(fieldName).toString())); } setAttr("model", model); render("detail.html"); }exportCsv
//导出csv public void exportCsv() { Object[] queryParams = getQueryParams(); String[] properties = (String[]) queryParams[0]; String[] symbols = (String[]) queryParams[1]; Object[] values = (Object[]) queryParams[2]; String orderBy = getOrderBy(); if(StringUtil.isEmpty(orderBy)) { orderBy = "id desc"; } List<Record> list = DBTool.findByMultPropertiesDbSource("tspace_busi", "claw_book_url", properties, symbols, values); Map<String, Object> dictDatastatus = ClawBookUrl.me.getDictDatastatus(); for(Record record : list) { String fieldName = "status"; if(dictDatastatus.get(record.get(fieldName).toString()) != null) { record.set(fieldName, dictDatastatus.get(record.get(fieldName).toString())); } } List<String> headers = new ArrayList<String>(); List<String> clomuns = new ArrayList<String>(); headers.add("来源"); clomuns.add("source"); headers.add("书名"); clomuns.add("book_name"); headers.add("阅读地址"); clomuns.add("url"); headers.add("状态"); clomuns.add("status"); headers.add("创建时间"); clomuns.add("create_time"); headers.add("最后更新时间"); clomuns.add("last_update_time"); CsvRender csvRender = new CsvRender(headers, list); csvRender.clomuns(clomuns); csvRender.fileName("小说管理"); render(csvRender); }
private void initActionMapping() { this.actionMapping = new ActionMapping(Config.getRoutes(), Config.getInterceptors()); this.actionMapping.buildActionMapping(); Config.getRoutes().clear(); }
initHandler加载Handler
private void initHandler() { Handler actionHandler = new ActionHandler(this.actionMapping, this.constants); this.handler = HandlerFactory.getHandler(Config.getHandlers().getHandlerList(), actionHandler); }initRender