BaseController.java 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  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 Error buildErrorMessageParams(String key,Object... params) {
  89. String msg = (String) errorResource.getProperty(key);
  90. return new Error(MessageFormat.format( msg, params));
  91. }
  92. protected String getErrorMessage(String key, Object... obj) {
  93. return MessageFormat.format(getErrorMessage(key), obj);
  94. }
  95. @InitBinder
  96. public void initBinder(WebDataBinder binder) {
  97. DateFormat dateFormat = new SimpleDateFormat(AFTConstants.YYYYMMDDHHMMSS);
  98. dateFormat.setLenient(true);
  99. binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
  100. }
  101. @ModelAttribute
  102. public void prepareModel(HttpServletRequest request, Model model) {
  103. model.addAttribute("staticDomain", avatarHost);
  104. model.addAttribute("staticHost", staticHost);
  105. model.addAttribute("avatarHost", avatarHost);
  106. model.addAttribute("avatarUploadHost", avatarUploadHost);
  107. model.addAttribute("portalHost", portalHost);
  108. model.addAttribute("basePath", request.getContextPath());
  109. model.addAttribute("isLogin", TokenManager.isLogin());
  110. model.addAttribute("csrf", TokenManager.getCSRF());
  111. model.addAttribute("shiro", SecurityUtils.getSubject());
  112. model.addAttribute("isAdmin", false);
  113. if (TokenManager.isLogin() && TokenManager.getToken() instanceof User) {
  114. model.addAttribute("userData", TokenManager.getUserToken());
  115. model.addAttribute("userName", TokenManager.getUserToken().getNickname());
  116. }
  117. if (TokenManager.isLogin() && TokenManager.getToken() instanceof Admin) {
  118. model.addAttribute("adminData", TokenManager.getAdminToken());
  119. model.addAttribute("userName", TokenManager.getAdminToken().getName());
  120. model.addAttribute("departmentId", TokenManager.getAdminToken().getDepartmentId());
  121. model.addAttribute("isAdmin", true);
  122. model.addAttribute("shiroList", getshiroList());
  123. }
  124. }
  125. private String getshiroList() {
  126. String shiroList = redisUtil.getString("shiroList");
  127. if (StringUtils.isBlank(shiroList)){
  128. shiroList=shiroAddRedis();
  129. }
  130. return shiroList;
  131. }
  132. /**
  133. * 获取权利列表
  134. * @return String 返回权限列表 逗号隔开 1=营销员,2=营销经理,3=营销管理员,4=营销总监,5=财务专员,6=财务经理,7=财务管理员,
  135. * 8=技术员,9=技术经理,10=技术管理员,11=运营管理,12=总裁助理,13=总裁,14=董事长助理,15=董事长
  136. */
  137. public String shiroAddRedis() {
  138. redisUtil.deleteString("shiroList");
  139. StringBuffer str=new StringBuffer();
  140. if (TokenManager.hasRole(AFTConstants.SALESMAN))str=str.append(1).append(",");
  141. if (TokenManager.hasRole(AFTConstants.SALESMAN_MANAGER))str=str.append(2).append(",");
  142. if (TokenManager.hasRole(AFTConstants.SALESMAN_ADMIN))str=str.append(3).append(",");
  143. if (TokenManager.hasRole(AFTConstants.SALESMAN_DIRECTOR))str=str.append(4).append(",");
  144. if (TokenManager.hasRole(AFTConstants.FINANCE))str=str.append(5).append(",");
  145. if (TokenManager.hasRole(AFTConstants.FINANCE_MANAGER))str=str.append(6).append(",");
  146. if (TokenManager.hasRole(AFTConstants.FINANCE_ADMIN))str=str.append(7).append(",");
  147. if (TokenManager.hasRole(AFTConstants.TECH))str=str.append(8).append(",");
  148. if (TokenManager.hasRole(AFTConstants.TECH_MANAGER))str=str.append(9).append(",");
  149. if (TokenManager.hasRole(AFTConstants.TECH_ADMIN))str=str.append(10).append(",");
  150. if (TokenManager.hasRole(AFTConstants.OPERATION_MANAGER))str=str.append(11).append(",");
  151. if (TokenManager.hasRole(AFTConstants.CED_ASSISTANT))str=str.append(12).append(",");
  152. if (TokenManager.hasRole(AFTConstants.CED))str=str.append(13).append(",");
  153. if (TokenManager.hasRole(AFTConstants.APPROVAL_DECISION_AUDITOR))str=str.append(14).append(",");
  154. if (TokenManager.hasRole(AFTConstants.APPROVAL_DECISION))str=str.append(15).append(",");
  155. if (str.length()<1)return "";
  156. String shiroList=str.substring(0,str.length()-1);
  157. redisUtil.setString("shiroList",shiroList);
  158. return shiroList;
  159. }
  160. }