JFinal的方法的调用

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

    listPage
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

listPage
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

listPage
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");
}
update
//修改
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();
}
detailPage
//详情页面
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);
}

initActionMapping扫描遍历各个controller中的方法建立映射。

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







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值