BaseController.java 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. package com.goafanti.common.controller;
  2. import java.text.DateFormat;
  3. import java.text.MessageFormat;
  4. import java.text.SimpleDateFormat;
  5. import java.util.ArrayList;
  6. import java.util.Date;
  7. import java.util.List;
  8. import javax.annotation.Resource;
  9. import javax.servlet.http.HttpServletRequest;
  10. import com.goafanti.common.utils.RedisUtil;
  11. import org.apache.commons.lang3.StringUtils;
  12. import org.apache.shiro.SecurityUtils;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.beans.factory.annotation.Value;
  15. import org.springframework.beans.propertyeditors.CustomDateEditor;
  16. import org.springframework.core.io.support.ResourcePropertySource;
  17. import org.springframework.stereotype.Controller;
  18. import org.springframework.ui.Model;
  19. import org.springframework.web.bind.WebDataBinder;
  20. import org.springframework.web.bind.annotation.InitBinder;
  21. import org.springframework.web.bind.annotation.ModelAttribute;
  22. import com.goafanti.common.bo.Error;
  23. import com.goafanti.common.constant.AFTConstants;
  24. import com.goafanti.common.model.Admin;
  25. import com.goafanti.common.model.User;
  26. import com.goafanti.core.shiro.token.TokenManager;
  27. @Controller
  28. public class BaseController {
  29. @Resource(name = "errorResource")
  30. private ResourcePropertySource errorResource;
  31. @Value(value = "${static.host}")
  32. private String staticHost = null;
  33. @Value(value = "${avatar.host}")
  34. private String avatarHost = null;
  35. @Value(value = "${upload.path}")
  36. private String uploadPath = null;
  37. @Value(value = "${upload.private.path}")
  38. private String uploadPrivatePath = null;
  39. @Value(value = "${accessKey}")
  40. private String accessKey = null;
  41. @Value(value = "${accessSecret}")
  42. private String accessSecret = null;
  43. @Value(value = "${portal.host}")
  44. private String portalHost = null;
  45. @Value(value = "${avatar.upload.host}")
  46. private String avatarUploadHost = null;
  47. @Autowired
  48. private RedisUtil redisUtil;
  49. protected Error buildError(String key) {
  50. return buildError(key, null);
  51. }
  52. protected Error buildError(String key, String message) {
  53. String msg = (String) errorResource.getProperty(key);
  54. if (StringUtils.isEmpty(msg)) {
  55. msg = message;
  56. }
  57. if (StringUtils.isEmpty(msg)) {
  58. msg = key;
  59. }
  60. return new Error(key, msg);
  61. }
  62. /**
  63. * 带参数的error message
  64. *
  65. * @param key
  66. * @param message
  67. * @param object
  68. * @return
  69. */
  70. protected Error buildError(String key, String message, Object... object) {
  71. String msg = (String) errorResource.getProperty(key);
  72. if (StringUtils.isEmpty(msg)) {
  73. msg = message;
  74. }
  75. msg = MessageFormat.format(msg, object);
  76. return new Error(key, msg);
  77. }
  78. protected Error buildErrorByMsg(String msg, Object... params) {
  79. return new Error(MessageFormat.format(msg, params));
  80. }
  81. protected String getErrorMessage(String key) {
  82. Object msg = errorResource.getProperty(key);
  83. if (msg == null) {
  84. return key;
  85. }
  86. return (String) msg;
  87. }
  88. protected String getErrorMessage(String key, Object... obj) {
  89. return MessageFormat.format(getErrorMessage(key), obj);
  90. }
  91. @InitBinder
  92. public void initBinder(WebDataBinder binder) {
  93. DateFormat dateFormat = new SimpleDateFormat(AFTConstants.YYYYMMDDHHMMSS);
  94. dateFormat.setLenient(true);
  95. binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
  96. }
  97. @ModelAttribute
  98. public void prepareModel(HttpServletRequest request, Model model) {
  99. model.addAttribute("staticDomain", avatarHost);
  100. model.addAttribute("staticHost", staticHost);
  101. model.addAttribute("avatarHost", avatarHost);
  102. model.addAttribute("avatarUploadHost", avatarUploadHost);
  103. model.addAttribute("portalHost", portalHost);
  104. model.addAttribute("basePath", request.getContextPath());
  105. model.addAttribute("isLogin", TokenManager.isLogin());
  106. model.addAttribute("csrf", TokenManager.getCSRF());
  107. model.addAttribute("shiro", SecurityUtils.getSubject());
  108. model.addAttribute("isAdmin", false);
  109. if (TokenManager.isLogin() && TokenManager.getToken() instanceof User) {
  110. model.addAttribute("userData", TokenManager.getUserToken());
  111. model.addAttribute("userName", TokenManager.getUserToken().getNickname());
  112. }
  113. if (TokenManager.isLogin() && TokenManager.getToken() instanceof Admin) {
  114. model.addAttribute("adminData", TokenManager.getAdminToken());
  115. model.addAttribute("userName", TokenManager.getAdminToken().getName());
  116. model.addAttribute("departmentId", TokenManager.getAdminToken().getDepartmentId());
  117. model.addAttribute("isAdmin", true);
  118. model.addAttribute("shiroList", getshiroList());
  119. }
  120. }
  121. private String getshiroList() {
  122. String shiroList = redisUtil.getString("shiroList");
  123. if (StringUtils.isBlank(shiroList)){
  124. shiroList=shiroAddRedis();
  125. }
  126. return shiroList;
  127. }
  128. /**
  129. * 获取权利列表
  130. * @return String 返回权限列表 逗号隔开 1=营销员,2=营销经理,3=营销管理员,4=营销总监,5=财务专员,6=财务经理,7=财务管理员,
  131. * 8=技术员,9=技术经理,10=技术管理员
  132. */
  133. public String shiroAddRedis() {
  134. redisUtil.deleteString("shiroList");
  135. StringBuffer str=new StringBuffer();
  136. if (TokenManager.hasRole(AFTConstants.SALESMAN))str=str.append(1).append(",");
  137. if (TokenManager.hasRole(AFTConstants.SALESMAN_MANAGER))str=str.append(2).append(",");
  138. if (TokenManager.hasRole(AFTConstants.SALESMAN_ADMIN))str=str.append(3).append(",");
  139. if (TokenManager.hasRole(AFTConstants.SALESMAN_DIRECTOR))str=str.append(4).append(",");
  140. if (TokenManager.hasRole(AFTConstants.FINANCE))str=str.append(5).append(",");
  141. if (TokenManager.hasRole(AFTConstants.FINANCE_MANAGER))str=str.append(6).append(",");
  142. if (TokenManager.hasRole(AFTConstants.FINANCE_ADMIN))str=str.append(7).append(",");
  143. if (TokenManager.hasRole(AFTConstants.TECH))str=str.append(8).append(",");
  144. if (TokenManager.hasRole(AFTConstants.TECH_MANAGER))str=str.append(9).append(",");
  145. if (TokenManager.hasRole(AFTConstants.TECH_ADMIN))str=str.append(10).append(",");
  146. if (str.length()<1)return "";
  147. String shiroList=str.substring(0,str.length()-1);
  148. redisUtil.setString("shiroList",shiroList);
  149. return shiroList;
  150. }
  151. }