| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- package com.poyee.base.controller;
- import com.poyee.base.dto.BaseDto;
- import com.poyee.base.dto.BaseReq;
- import com.poyee.base.dto.UserInfo;
- import com.poyee.base.service.BaseService;
- import com.poyee.common.exception.AuthException;
- import com.poyee.i18n.I18nUtils;
- import com.poyee.util.DateUtils;
- import com.poyee.util.ServletUtils;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.lang.StringUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import javax.servlet.http.HttpServletRequest;
- import java.lang.reflect.Field;
- import java.util.Date;
- import java.util.Objects;
- import static com.poyee.i18n.I18nMessageEnums.GET_USER_INFO_ERROR;
- import static com.poyee.i18n.I18nMessageEnums.NO_PERMISSION;
- /**
- *
- */
- @Slf4j
- public abstract class BaseController<S extends BaseService<T, R>, T extends BaseReq, R extends BaseDto> {
- @Autowired
- protected S baseService;
- /**
- * 日志
- * @param label
- * @param obj
- */
- public void console(String label, Object obj ){
- //当前操作用户 及 角色 ,操作时间
- String userName = "游客";
- String roleCode = "游客";
- try{
- UserInfo userInfo = ServletUtils.getUserInfo();
- String name = StringUtils.isNotBlank(userInfo.getDisplayName()) ? userInfo.getDisplayName() : userInfo.getSub();
- if(StringUtils.isBlank(name)){
- userName = StringUtils.isNotBlank(userInfo.getUserId()) ? "用户id:"+userInfo.getUserId() : userName;
- }
- String role = userInfo.getRoleCode();
- if (StringUtils.isBlank(role)) {
- roleCode = userInfo.isMerchant() ? "商户" : roleCode;
- }
- } catch (Exception e) {
- log.error("当前用户[{}] 角色【{}】获取用户信息异常", userName, roleCode, e);
- } finally {
- log.info("{} {}\n" + " 当前用户[{}] 角色【{}】操作时间[{}] ", label, obj,
- userName, roleCode , DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, new Date()));
- }
- }
- /**
- * 检查商户权限
- * @param p
- * @param <P>
- */
- public <P extends BaseReq> void checkAndSetMerchantId(P p){
- try {
- UserInfo userInfo = ServletUtils.getUserInfo();
- if(userInfo.isMerchant()) {
- //解析 p 中的user_id
- if (Objects.nonNull(p)) {
- Field merchantId = p.getClass().getDeclaredField("merchantId");
- if (Objects.nonNull(merchantId)) {
- merchantId.setAccessible(true);
- String typeName = merchantId.getType().getName();
- if (Objects.equals("java.lang.Long", typeName)) {
- merchantId.set(p, Long.valueOf(userInfo.getMerchantId()));
- } else if (Objects.equals("java.lang.Integer", typeName)) {
- merchantId.set(p, userInfo.getMerchantId());
- }
- }
- }
- }
- } catch (NoSuchFieldException ne) {
- log.error("请求参数中无userId",ne);
- throw new AuthException(402, I18nUtils.get(NO_PERMISSION, "【权限不足】"));
- } catch (Exception e) {
- log.error("获取用户信息失败",e);
- throw new AuthException(I18nUtils.get(GET_USER_INFO_ERROR));
- }
- }
- /**
- * 获取request
- */
- public HttpServletRequest getRequest() {
- return ServletUtils.getRequest();
- }
- }
|