| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- package com.goafanti.common.controller;
- import java.text.DateFormat;
- import java.text.MessageFormat;
- import java.text.SimpleDateFormat;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.List;
- import javax.annotation.Resource;
- import javax.servlet.http.HttpServletRequest;
- import com.goafanti.common.utils.RedisUtil;
- import org.apache.commons.lang3.StringUtils;
- import org.apache.shiro.SecurityUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.beans.propertyeditors.CustomDateEditor;
- import org.springframework.core.io.support.ResourcePropertySource;
- import org.springframework.stereotype.Controller;
- import org.springframework.ui.Model;
- import org.springframework.web.bind.WebDataBinder;
- import org.springframework.web.bind.annotation.InitBinder;
- import org.springframework.web.bind.annotation.ModelAttribute;
- import com.goafanti.common.bo.Error;
- import com.goafanti.common.constant.AFTConstants;
- import com.goafanti.common.model.Admin;
- import com.goafanti.common.model.User;
- import com.goafanti.core.shiro.token.TokenManager;
- @Controller
- public class BaseController {
- @Resource(name = "errorResource")
- private ResourcePropertySource errorResource;
- @Value(value = "${static.host}")
- private String staticHost = null;
- @Value(value = "${avatar.host}")
- private String avatarHost = null;
- @Value(value = "${upload.path}")
- private String uploadPath = null;
- @Value(value = "${upload.private.path}")
- private String uploadPrivatePath = null;
- @Value(value = "${accessKey}")
- private String accessKey = null;
- @Value(value = "${accessSecret}")
- private String accessSecret = null;
- @Value(value = "${portal.host}")
- private String portalHost = null;
- @Value(value = "${avatar.upload.host}")
- private String avatarUploadHost = null;
- @Autowired
- private RedisUtil redisUtil;
- protected Error buildError(String key) {
- return buildError(key, null);
- }
- protected Error buildError(String key, String message) {
- String msg = (String) errorResource.getProperty(key);
- if (StringUtils.isEmpty(msg)) {
- msg = message;
- }
- if (StringUtils.isEmpty(msg)) {
- msg = key;
- }
- return new Error(key, msg);
- }
- /**
- * 带参数的error message
- *
- * @param key
- * @param message
- * @param object
- * @return
- */
- protected Error buildError(String key, String message, Object... object) {
- String msg = (String) errorResource.getProperty(key);
- if (StringUtils.isEmpty(msg)) {
- msg = message;
- }
- msg = MessageFormat.format(msg, object);
- return new Error(key, msg);
- }
- protected Error buildErrorByMsg(String msg, Object... params) {
- return new Error(MessageFormat.format(msg, params));
- }
- protected String getErrorMessage(String key) {
- Object msg = errorResource.getProperty(key);
- if (msg == null) {
- return key;
- }
- return (String) msg;
- }
- protected Error buildErrorMessageParams(String key,Object... params) {
- String msg = (String) errorResource.getProperty(key);
- return new Error(MessageFormat.format( msg, params));
- }
- protected String getErrorMessage(String key, Object... obj) {
- return MessageFormat.format(getErrorMessage(key), obj);
- }
- @InitBinder
- public void initBinder(WebDataBinder binder) {
- DateFormat dateFormat = new SimpleDateFormat(AFTConstants.YYYYMMDDHHMMSS);
- dateFormat.setLenient(true);
- binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
- }
- @ModelAttribute
- public void prepareModel(HttpServletRequest request, Model model) {
- model.addAttribute("staticDomain", avatarHost);
- model.addAttribute("staticHost", staticHost);
- model.addAttribute("avatarHost", avatarHost);
- model.addAttribute("avatarUploadHost", avatarUploadHost);
- model.addAttribute("portalHost", portalHost);
- model.addAttribute("basePath", request.getContextPath());
- model.addAttribute("isLogin", TokenManager.isLogin());
- model.addAttribute("csrf", TokenManager.getCSRF());
- model.addAttribute("shiro", SecurityUtils.getSubject());
- model.addAttribute("isAdmin", false);
- if (TokenManager.isLogin() && TokenManager.getToken() instanceof User) {
- model.addAttribute("userData", TokenManager.getUserToken());
- model.addAttribute("userName", TokenManager.getUserToken().getNickname());
- }
- if (TokenManager.isLogin() && TokenManager.getToken() instanceof Admin) {
- model.addAttribute("adminData", TokenManager.getAdminToken());
- model.addAttribute("userName", TokenManager.getAdminToken().getName());
- model.addAttribute("departmentId", TokenManager.getAdminToken().getDepartmentId());
- model.addAttribute("isAdmin", true);
- model.addAttribute("shiroList", getshiroList());
- }
- }
- private String getshiroList() {
- String shiroList = redisUtil.getString("shiroList");
- if (StringUtils.isBlank(shiroList)){
- shiroList=shiroAddRedis();
- }
- return shiroList;
- }
- /**
- * 获取权利列表
- * @return String 返回权限列表 逗号隔开 1=营销员,2=营销经理,3=营销管理员,4=营销总监,5=财务专员,6=财务经理,7=财务管理员,
- * 8=技术员,9=技术经理,10=技术管理员,11=运营管理,12=总裁助理,13=总裁,14=董事长助理,15=董事长
- */
- public String shiroAddRedis() {
- redisUtil.deleteString("shiroList");
- StringBuffer str=new StringBuffer();
- if (TokenManager.hasRole(AFTConstants.SALESMAN))str=str.append(1).append(",");
- if (TokenManager.hasRole(AFTConstants.SALESMAN_MANAGER))str=str.append(2).append(",");
- if (TokenManager.hasRole(AFTConstants.SALESMAN_ADMIN))str=str.append(3).append(",");
- if (TokenManager.hasRole(AFTConstants.SALESMAN_DIRECTOR))str=str.append(4).append(",");
- if (TokenManager.hasRole(AFTConstants.FINANCE))str=str.append(5).append(",");
- if (TokenManager.hasRole(AFTConstants.FINANCE_MANAGER))str=str.append(6).append(",");
- if (TokenManager.hasRole(AFTConstants.FINANCE_ADMIN))str=str.append(7).append(",");
- if (TokenManager.hasRole(AFTConstants.TECH))str=str.append(8).append(",");
- if (TokenManager.hasRole(AFTConstants.TECH_MANAGER))str=str.append(9).append(",");
- if (TokenManager.hasRole(AFTConstants.TECH_ADMIN))str=str.append(10).append(",");
- if (TokenManager.hasRole(AFTConstants.OPERATION_MANAGER))str=str.append(11).append(",");
- if (TokenManager.hasRole(AFTConstants.CED_ASSISTANT))str=str.append(12).append(",");
- if (TokenManager.hasRole(AFTConstants.CED))str=str.append(13).append(",");
- if (TokenManager.hasRole(AFTConstants.APPROVAL_DECISION_AUDITOR))str=str.append(14).append(",");
- if (TokenManager.hasRole(AFTConstants.APPROVAL_DECISION))str=str.append(15).append(",");
- if (str.length()<1)return "";
- String shiroList=str.substring(0,str.length()-1);
- redisUtil.setString("shiroList",shiroList);
- return shiroList;
- }
- }
|