SelectPermissionFunction.java 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package com.sooka.component.beetl.fun;
  2. import com.sooka.module.web.system.service.RoleService;
  3. import com.sooka.mybatis.model.TSysPermission;
  4. import com.sooka.common.utils.StrUtil;
  5. import org.beetl.core.Context;
  6. import org.beetl.core.Function;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.stereotype.Service;
  9. import java.util.List;
  10. /**
  11. * Description:select
  12. *
  13. *
  14. * @create 2017-04-15
  15. **/
  16. @Service
  17. public class SelectPermissionFunction implements Function{
  18. @Autowired
  19. private RoleService service;
  20. private final String head = "<option value=\"0\" >顶级节点</option>";
  21. private final String isSelected = "selected=\"selected\"";
  22. @Override
  23. public Object call(Object[] objects, Context context) {
  24. Integer pid = (Integer)objects[0];
  25. Integer currentId = (Integer)objects[1];
  26. if(pid!=null) {
  27. return head+recursion(currentId,pid,0,"");
  28. }
  29. return head+recursion(currentId,0,0,"");
  30. }
  31. /*递归输出子节点*/
  32. private String recursion(int cid,int pid,int spid,String tag){
  33. tag+=(StrUtil.isBlank(tag)?"&nbsp;&nbsp;":"&nbsp;&nbsp;&nbsp;&nbsp;");
  34. StringBuffer sbf = new StringBuffer();
  35. List<TSysPermission> permissions = service.findPermissonByPid(spid);
  36. if(permissions!=null&&permissions.size()>0){
  37. int flag_ = 0;
  38. for(TSysPermission per:permissions){
  39. /**如果是自己就不输出了**/
  40. if(cid!=per.getPermissionId()&&cid!=per.getPid()||cid==0) {
  41. flag_ = per.getPermissionId();
  42. sbf.append("<option value=\"" + per.getPermissionId() + "\" " + isSelected(per.getPermissionId(), pid) + ">" + tag + "|—" + per.getDescription() + "</option>");
  43. }
  44. if(flag_!=0) {
  45. sbf.append(recursion(cid,pid,per.getPermissionId(),tag));
  46. }
  47. }
  48. return sbf.toString();
  49. }
  50. return "";
  51. }
  52. private String isSelected(Integer id,Integer perId){
  53. if(id.intValue()==perId.intValue()) {
  54. return isSelected;
  55. }
  56. return "";
  57. }
  58. }