Example #1
0
 @CacheNameRemove(name = AppConstants.DEFAULT_CACHENAME)
 @Before({AdminValidator.PermSaveValidator.class, Tx.class})
 public void permSave() {
   Permission permission = getModel(Permission.class);
   Permission parent = null;
   if (permission.getParentId() == 0) {
     parent =
         Permission.dao.findFirstBy("`permission`.pid=0 ORDER BY `permission`.right_code DESC");
   } else parent = Permission.dao.findById(permission.getParentId());
   boolean result = false;
   if (!ValidateUtils.me().isNullOrEmpty(parent)) {
     Permission.dao.updateBy(
         "`permission`.left_code=`permission`.left_code+2",
         "`permission`.left_code>=" + parent.get("right_code"));
     Permission.dao.updateBy(
         "`permission`.right_code=`permission`.right_code+2",
         "`permission`.right_code>=" + parent.get("right_code"));
     permission.set("left_code", parent.getLong("right_code"));
     permission.set("right_code", parent.getLong("right_code") + 1);
     permission.set("created_at", new Date());
     if (ValidateUtils.me().isNullOrEmpty(permission.get("id"))) {
       permission.remove("id");
     }
     result = permission.save();
   }
   if (result) {
     Role admin = Role.dao.findFirstBy("`role`.pid=0");
     admin.addPermission(permission);
     setAttr("state", "success");
   } else {
     setAttr("state", "failure");
   }
   dynaRender("/view/admin/role.ftl");
 }