|
|
|
@@ -44,24 +44,6 @@ public class BaseController { |
|
|
|
|
|
|
|
private final Logger logger = LoggerFactory.getLogger(this.getClass()); |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private boolean isFmOpen; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private WxAppinfoService wxAppinfoService; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private FmOpenService openService; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private WxCUserBasicInfoService wxCUserBasicInfoService; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private WxCUserBasicChildService wxCUserBasicChildService; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private CUserTokenService cUserTokenService; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
@Qualifier("objectCommonRedisTemplate") |
|
|
|
RedisTemplate<String, Object> objectCommonRedisTemplate; |
|
|
|
@@ -74,7 +56,7 @@ public class BaseController { |
|
|
|
setValue(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(value)); |
|
|
|
} catch (ParseException e) { |
|
|
|
try { |
|
|
|
setValue(new SimpleDateFormat("yyyy-MM-dd ").parse(value)); |
|
|
|
setValue(new SimpleDateFormat("yyyy-MM-dd").parse(value)); |
|
|
|
} catch (ParseException e1) { |
|
|
|
setValue(null); |
|
|
|
} |
|
|
|
@@ -88,202 +70,7 @@ public class BaseController { |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
@Deprecated |
|
|
|
public String getTenantId() { |
|
|
|
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); |
|
|
|
String tenantId = (String) request.getAttribute(Constant.TENANT_ID); |
|
|
|
return tenantId; |
|
|
|
} |
|
|
|
|
|
|
|
public TenantEntity getTenantInfo() { |
|
|
|
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); |
|
|
|
String tenantId = (String) request.getAttribute(Constant.TENANT_ID); |
|
|
|
String parentTenantId = (String) request.getAttribute(Constant.PARENT_TENANT_ID); |
|
|
|
TenantEntity tenantEntity = new TenantEntity() ; |
|
|
|
tenantEntity.setTenantId(tenantId); |
|
|
|
tenantEntity.setParentTenantId(parentTenantId); |
|
|
|
return tenantEntity; |
|
|
|
} |
|
|
|
|
|
|
|
public String getFinalTenantId() { |
|
|
|
TenantEntity tenantEntity = getTenantInfo(); |
|
|
|
return tenantEntity.getFinalTenantId(); |
|
|
|
} |
|
|
|
|
|
|
|
public Long getMemberId() { |
|
|
|
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); |
|
|
|
Long memberId = (Long) request.getAttribute(Constant.LOGIN_MEMBER_KEY); |
|
|
|
if(memberId == null){ |
|
|
|
throw new MallinkException(ErrorCode.USER_IS_NOT_MEMBER); |
|
|
|
} |
|
|
|
return memberId; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 微信端获取当前用户 wx_c_user,非会员 |
|
|
|
* 请尽量多用getTenantId, getUserId |
|
|
|
*/ |
|
|
|
public WxCUser getWxCUser() { |
|
|
|
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); |
|
|
|
BaseCUserEntity baseuser = (BaseCUserEntity) request.getAttribute(Constant.REQUEST_C_USER_KEY); |
|
|
|
|
|
|
|
if (baseuser == null) { |
|
|
|
throw new MallinkException(ErrorCode.USER_IS_EMPTY); |
|
|
|
} |
|
|
|
if (baseuser.getRealUser() == null) { |
|
|
|
throw new MallinkException(ErrorCode.USER_IS_EMPTY); |
|
|
|
} |
|
|
|
WxCUser user = RedisCacheUtils.getFieldObject(baseuser, "realUser", WxCUser.class); |
|
|
|
TenantEntity tenantEntity = getTenantInfo(); |
|
|
|
if (user.getTenantId() == null) { |
|
|
|
user.setTenantId(tenantEntity.getTenantId()); |
|
|
|
} |
|
|
|
if (user.getParentTenantId() == null) { |
|
|
|
user.setParentTenantId(tenantEntity.getParentTenantId()); |
|
|
|
} |
|
|
|
return user; |
|
|
|
} |
|
|
|
|
|
|
|
public void removeCacheCUser() { |
|
|
|
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); |
|
|
|
BaseCUserEntity baseuser = (BaseCUserEntity) request.getAttribute(Constant.REQUEST_C_USER_KEY); |
|
|
|
cUserTokenService.removeTokenCache(baseuser.getToken()); |
|
|
|
} |
|
|
|
|
|
|
|
public void updateCacheCUser(String token,Object cuser) { |
|
|
|
cUserTokenService.updateTokenCache(token, cuser); |
|
|
|
} |
|
|
|
|
|
|
|
private WxCUserBasicInfo getCacheMember(Long memberId,String finalTenantId,String key,long seconds) throws MallinkException { |
|
|
|
// 缓存 |
|
|
|
WxCUserBasicInfo member = RedisCacheUtils.getCacheObject(objectCommonRedisTemplate, key, WxCUserBasicInfo.class); |
|
|
|
if(null == member) { |
|
|
|
member = wxCUserBasicInfoService.getById(memberId,finalTenantId); |
|
|
|
if (member == null) { |
|
|
|
throw new MallinkException(ErrorCode.USER_IS_EMPTY); |
|
|
|
} |
|
|
|
setCUserBasicChild(member); |
|
|
|
|
|
|
|
RedisCacheUtils.cache(objectCommonRedisTemplate, key, member, seconds); |
|
|
|
} |
|
|
|
return member; |
|
|
|
} |
|
|
|
|
|
|
|
public WxCUserBasicInfo getCacheMember() throws MallinkException { |
|
|
|
Long memberId = getMemberId(); |
|
|
|
String key = "webapp:member:"+memberId; |
|
|
|
return getCacheMember(memberId,getFinalTenantId(), key, 3600*24*3); |
|
|
|
} |
|
|
|
|
|
|
|
/*此处缓存短暂时间,因为积分、成长值记录*/ |
|
|
|
public WxCUserBasicInfo getShortCacheMember(Long memberId,String finalTenantId) throws Exception { |
|
|
|
String key = "webapp:short:member:"+memberId; |
|
|
|
return getCacheMember(memberId,finalTenantId, key, 100); |
|
|
|
} |
|
|
|
|
|
|
|
public void removeCacheMember(Long memberId) { |
|
|
|
String key = "webapp:member:"+memberId; |
|
|
|
RedisCacheUtils.removeCache(objectCommonRedisTemplate, key); |
|
|
|
String shortKey = "webapp:short:member:"+memberId; |
|
|
|
RedisCacheUtils.removeCache(objectCommonRedisTemplate, shortKey); |
|
|
|
} |
|
|
|
|
|
|
|
public WxAppinfo getAppInfo(String appId) { |
|
|
|
return wxAppinfoService.getByAppId(appId); |
|
|
|
} |
|
|
|
|
|
|
|
public WxMaService getWeappService(String appId) { |
|
|
|
if(isFmOpen) { |
|
|
|
return openService.getWxOpenComponentService().getWxMaServiceByAppid(appId); |
|
|
|
} else { |
|
|
|
WxAppinfo appinfo = wxAppinfoService.getByAppId(appId); |
|
|
|
if (appinfo == null) { |
|
|
|
return null; |
|
|
|
} |
|
|
|
WxMaService service = MaUtil.getWeappService(appinfo); |
|
|
|
return service; |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
public WxMaService getWeappServiceByAppInfo(WxAppinfo appinfo) { |
|
|
|
if(!isFmOpen) { |
|
|
|
WxMaService service = MaUtil.getWeappService(appinfo); |
|
|
|
return service; |
|
|
|
} |
|
|
|
return null; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public Long saveToBasicInfoByCUser(String userPhone,String userName,String avatarUrl,Integer sex,Long userId) { |
|
|
|
TenantEntity tenantEntity = getTenantInfo(); |
|
|
|
if (StringUtils.isBlank(userPhone)) |
|
|
|
return null; |
|
|
|
|
|
|
|
WxCUserBasicInfo byId = null; |
|
|
|
if (null != userId) { |
|
|
|
byId = wxCUserBasicInfoService.getById(userId,getFinalTenantId()); |
|
|
|
} |
|
|
|
|
|
|
|
WxCUserBasicInfo basicInfo = wxCUserBasicInfoService.findInfoByPhone(tenantEntity, userPhone); |
|
|
|
|
|
|
|
if (basicInfo != null) { |
|
|
|
if (byId != null) { |
|
|
|
if (!byId.getId().equals(basicInfo.getId())) { |
|
|
|
//数据库存在此手机号的会员,并且当前微信存在另一手机号会员 |
|
|
|
logger.error("会员" + userId + "更换手机号时,当前手机号会员表已存在:" + userPhone); |
|
|
|
return Long.valueOf(-1); |
|
|
|
} |
|
|
|
} |
|
|
|
if (!basicInfo.getTenantId().contains("," + tenantEntity.getTenantId() + ",")) { |
|
|
|
basicInfo.setTenantId(basicInfo.getTenantId() + tenantEntity.getTenantId() + ","); |
|
|
|
} |
|
|
|
basicInfo.setNickName(userName); |
|
|
|
basicInfo.setAvatarUrl(avatarUrl); |
|
|
|
basicInfo.setSex(sex); |
|
|
|
wxCUserBasicInfoService.update(basicInfo); |
|
|
|
removeCacheMember(basicInfo.getId()); |
|
|
|
return basicInfo.getId(); |
|
|
|
} else { |
|
|
|
if (byId != null) { |
|
|
|
if (!byId.getTenantId().contains("," + tenantEntity.getTenantId() + ",")) { |
|
|
|
byId.setTenantId(byId.getTenantId() + tenantEntity.getTenantId() + ","); |
|
|
|
} |
|
|
|
byId.setPhone(userPhone); |
|
|
|
byId.setNickName(userName); |
|
|
|
byId.setAvatarUrl(avatarUrl); |
|
|
|
byId.setSex(sex); |
|
|
|
wxCUserBasicInfoService.update(byId); |
|
|
|
removeCacheMember(basicInfo.getId()); |
|
|
|
return byId.getId(); |
|
|
|
} else { |
|
|
|
basicInfo = new WxCUserBasicInfo(); |
|
|
|
basicInfo.setTenantId("," + tenantEntity.getTenantId() + ","); |
|
|
|
basicInfo.setFinalTenantId(tenantEntity.getFinalTenantId()); |
|
|
|
basicInfo.setPhone(userPhone); |
|
|
|
basicInfo.setNickName(userName); |
|
|
|
basicInfo.setAvatarUrl(avatarUrl); |
|
|
|
basicInfo.setSex(sex); |
|
|
|
wxCUserBasicInfoService.save(basicInfo); |
|
|
|
removeCacheMember(basicInfo.getId()); |
|
|
|
return basicInfo.getId(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public String getIpAddr() { |
|
|
|
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); |
|
|
|
String ipaddress = IPUtil.getIpAddr(request); |
|
|
|
return ipaddress; |
|
|
|
} |
|
|
|
|
|
|
|
private void setCUserBasicChild(WxCUserBasicInfo basicInfo){ |
|
|
|
WxCUserBasicChild child = new WxCUserBasicChild(); |
|
|
|
child.setCUserId(basicInfo.getId()); |
|
|
|
child.setTenantId(basicInfo.getFinalTenantId()); |
|
|
|
List<WxCUserBasicChild> list = wxCUserBasicChildService.findList(child); |
|
|
|
basicInfo.setChildrenList(list); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |