package com.nuvole.four.util; import cn.hutool.core.convert.Convert; import com.nuvole.base.domain.SysUser; import com.nuvole.constants.SystemConstants; import com.nuvole.four.contants.Contants; import com.nuvole.four.domain.StoreMemberInfo; import com.nuvole.four.domain.StoreSupplierInfoAccount; import com.nuvole.four.service.RedisService; import com.nuvole.util.JWTUtil; import jakarta.servlet.http.HttpServletRequest; import org.apache.commons.lang.StringEscapeUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; /** * 系统工具类 * * @Author: lc * @Date: 2019/6/3 20:10 */ @Component public class SystemUtil { private static RedisService redisService; @Autowired public void setRedisService(RedisService redisService) { SystemUtil.redisService = redisService; } /** * 获取request对象 * * @param * @return : javax.servlet.http.HttpServletRequest * @author ChenLong * @date 2019/5/8 16:50 * @version 1.0 */ public static HttpServletRequest getRequest() { ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); HttpServletRequest request = requestAttributes.getRequest(); return request; } /** * 根据key获取header值 * * @param k * @param k * @return : java.lang.String * @author ChenLong * @date 2019/5/8 16:55 * @version 1.0 */ public static String getHeader(String k) { return StringEscapeUtils.unescapeHtml(getRequest().getHeader(k)); } /** * 取token */ public static String getToken(String loginType) { if (loginType.equals(Contants.LOGIN_TYPE_PC)) { return getPcToken(); } else if (loginType.equals(Contants.LOGIN_TYPE_WECHAT)) { return getWechatToken(); } else if (loginType.equals(Contants.LOGIN_TYPE_MANAGER_APP)) { return getManagerAppToken(); } else if (loginType.equals(Contants.SCAN_WECHAT_TOKEN_HEADER)) { return getScanToken(); } return ""; } /** * 获取header中的扫码付 token */ public static String getScanToken() { return getHeader(SystemConstants.SCAN_WECHAT_TOKEN_HEADER); } /** * 获取header中PC token * * @param * @return : java.lang.String * @author ChenLong * @date 2019/5/8 16:57 * @version 1.0 */ public static String getPcToken() { return getHeader(SystemConstants.BASE_PC_TOKEN_HEADER); } /** * 获取header中PC 供货商头 * * @return */ public static String getSupplierPcToken() { return getHeader(SystemConstants.SUPPLIER_PC_TOKEN_HEADER); } /** * 获取header中的WECHAT token * * @Author: lc * @Date: 2019/6/14 11:43 */ public static String getWechatToken() { return getHeader(SystemConstants.SHOP_WECHAT_TOKEN_HEADER); } /** * 获取header中的客户经理app token * * @Author: lc * @Date: 2019/9/3 15:31 */ public static String getManagerAppToken() { return getHeader(SystemConstants.MANAGER_APP_TOKEN_HEADER); } /** * 根据token获取pc登录用户信息 * * @param token * @return : com.nuvole.merchant.domain.StoreMerchantShopAccount * @author ChenLong * @date 2019/5/8 17:00 * @version 1.0 */ public static SysUser getPcLoginUserByToken(String token) { try { token = JWTUtil.getSubOfClaims(token); } catch (Exception e) { return null; } String redisK = Convert.toStr(redisService.get(SystemConstants.BASE_PC_USER_PREFIX + token)); SysUser s = (SysUser) redisService.get(redisK); return s; } public static StoreSupplierInfoAccount getSupplierLoginUserByToken(String token) { try { token = JWTUtil.getSubOfClaims(token); } catch (Exception e) { return null; } String redisK = Convert.toStr(redisService.get(SystemConstants.BASE_PC_USER_PREFIX + token)); StoreSupplierInfoAccount s = (StoreSupplierInfoAccount) redisService.get(redisK); return s; } /** * 根据token获取wechat登录用户信息 * * @Author: lc * @Date: 2019/6/14 11:44 */ public static StoreMemberInfo getWechatLoginUserByToken(String token) { return (StoreMemberInfo) redisService.get(SystemConstants.SHOP_WECHAT_USER_PREFIX + token); } /** * 根据token获取扫码付登录用户 * * @param token * @return */ public static StoreMemberInfo getScanLoginUserByToken(String token) { return (StoreMemberInfo) redisService.get(SystemConstants.SCAN_WECHAT_USER_PREFIX + token); } /** * 根据token获取客户经理app登录用户信息 * * @Author: lc * @Date: 2019/9/3 15:33 */ public static SysUser getManagerAppLoginUserByToken(String token) { try { token = JWTUtil.getSubOfClaims(token); } catch (Exception e) { return new SysUser(); } if (redisService.get(SystemConstants.MANAGER_APP_USER_PREFIX + token) == null) { return new SysUser(); } String redisK = Convert.toStr(redisService.get(SystemConstants.MANAGER_APP_USER_PREFIX + token)); SysUser s = (SysUser) redisService.get(redisK); return s; } // // public static StoreSupplierInfoAccount getLoginSupplierUser() { // StoreSupplierInfoAccount supplierInfo = getPcLoginUserByToken(getPcToken()); // if (supplierInfo == null) { // return new StoreSupplierInfoAccount(); // } // StoreSupplierInfoAccount s = new StoreSupplierInfoAccount(); // BeanUtils.copyProperties(supplierInfo, s); // supplierInfo = s; // return supplierInfo; // } /** * 取综合后台PC/客户经理app登录信息 */ public static SysUser getLoginUser(String loginType) { if (loginType.equals(Contants.LOGIN_TYPE_PC)) { SysUser sysUser = getPcLoginUserByToken(getPcToken()); if (sysUser == null) { return new SysUser(); } SysUser s = new SysUser(); BeanUtils.copyProperties(sysUser, s); sysUser = s; return sysUser; } else if (loginType.equals(Contants.LOGIN_TYPE_MANAGER_APP)) { SysUser sysUser = getManagerAppLoginUserByToken(getManagerAppToken()); SysUser s = new SysUser(); BeanUtils.copyProperties(sysUser, s); sysUser = s; return sysUser; } return new SysUser(); } /** * 取商城微信登录信息 */ public static StoreMemberInfo getMemberInfo() { StoreMemberInfo storeMemberInfo = getWechatLoginUserByToken(getWechatToken()); if (storeMemberInfo != null) { StoreMemberInfo s = new StoreMemberInfo(); BeanUtils.copyProperties(storeMemberInfo, s); storeMemberInfo = s; } return storeMemberInfo; } /************************************* 获取登录信息 *****************************************/ /** * 获取登录信息(商户pc和商户app) */ public static StoreSupplierInfoAccount getSupplierLoginUser(String loginType) { if (loginType.equals(Contants.LOGIN_TYPE_PC)) { StoreSupplierInfoAccount storeSupplierInfoAccount = getPcLoginSupplierUserByToken(getSupplierPcToken()); StoreSupplierInfoAccount sto = new StoreSupplierInfoAccount(); BeanUtils.copyProperties(storeSupplierInfoAccount, sto); return sto; } return new StoreSupplierInfoAccount(); } /** * 根据token获取pc登录用户信息 */ public static StoreSupplierInfoAccount getPcLoginSupplierUserByToken(String token) { try { token = JWTUtil.getSubOfClaims(token); } catch (Exception e) { return new StoreSupplierInfoAccount(); } if (redisService.get(SystemConstants.SUPPLIER_PC_USER_PREFIX + token) == null) { return new StoreSupplierInfoAccount(); } return (StoreSupplierInfoAccount) redisService.get(SystemConstants.SUPPLIER_PC_USER_PREFIX + token); } }