Browse Source

fix wxcuser cache

release_toaliyun_real
xiaohanzi 5 years ago
parent
commit
57d8d56d41
10 changed files with 137 additions and 43 deletions
  1. +6
    -2
      mallinkCApi/src/main/java/com/iformall/controller/BaseController.java
  2. +29
    -27
      mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java
  3. +2
    -0
      mallinkService/src/main/java/com/iformall/domain/po/base/BaseCUserEntity.java
  4. +9
    -0
      mallinkService/src/main/java/com/iformall/enums/EnumAppPlat.java
  5. +1
    -1
      mallinkService/src/main/java/com/iformall/service/CUserTokenService.java
  6. +12
    -0
      mallinkService/src/main/java/com/iformall/service/cuser/CUserServiceApapter.java
  7. +32
    -0
      mallinkService/src/main/java/com/iformall/service/cuser/CUserServiceFactory.java
  8. +29
    -0
      mallinkService/src/main/java/com/iformall/service/cuser/wx/WxCUserServiceAdapter.java
  9. +10
    -7
      mallinkService/src/main/java/com/iformall/service/impl/CUserTokenServiceImpl.java
  10. +7
    -6
      mallinkService/src/main/java/com/iformall/service/pay/service/share/wx/WxPayShareService.java

+ 6
- 2
mallinkCApi/src/main/java/com/iformall/controller/BaseController.java View File

@@ -120,12 +120,16 @@ public class BaseController {
*/
public WxCUser getWxCUser() {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
WxCUser user = (WxCUser) request.getAttribute(Constant.REQUEST_WX_C_USER_KEY);
BaseCUserEntity baseuser = (BaseCUserEntity) request.getAttribute(Constant.REQUEST_WX_C_USER_KEY);
// Long cUserId = getUserId();
// WxCUser user = wxCUserService.getById(cUserId);
if (user == null) {
if (baseuser == null) {
throw new MallinkException(ErrorCode.USER_IS_EMPTY);
}
if (baseuser.getRealUser() == null) {
throw new MallinkException(ErrorCode.USER_IS_EMPTY);
}
WxCUser user = (WxCUser) baseuser.getRealUser();
TenantEntity tenantEntity = getTenantInfo();
if (user.getTenantId() == null) {
user.setTenantId(tenantEntity.getTenantId());


+ 29
- 27
mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java View File

@@ -94,6 +94,9 @@ public class WxUserGrantController extends BaseController {

@Autowired
WxMallService mallService;
@Autowired
private CUserTokenService cUserTokenService;


/**
@@ -398,36 +401,35 @@ public class WxUserGrantController extends BaseController {
int score = wxCUserService.actionAfterLogin(newUser, null);
resultMap.put("score", score);
}

return new ResultData(resultMap);
}

@PostMapping("/selectMall")
@ApiOperation(value = "用户选中子广场", notes = "{\"tenantId\":\"string\",\"parentTenantId\":\"string\"}")
public ResultData selectMall(@RequestBody Map<String, String> map) {
logger.debug(map.toString());
String tenantId = map.get("tenantId");
String parentTenantId = map.get("parentTenantId");
if (StringUtils.isBlank(tenantId)) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "tenantId不能为空");
}
if (StringUtils.isBlank(parentTenantId)) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "parentTenantId不能为空");
}
WxCUser user = getWxCUser();
if (user.getParentTenantId().equalsIgnoreCase(parentTenantId)) {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
request.setAttribute(Constant.TENANT_ID, tenantId);
request.setAttribute(Constant.PARENT_TENANT_ID, parentTenantId);
user.setTenantId(tenantId);
wxCUserService.saveOrUpdate(user);
}
return new ResultData();
}
// @PostMapping("/selectMall")
// @ApiOperation(value = "用户选中子广场", notes = "{\"tenantId\":\"string\",\"parentTenantId\":\"string\"}")
// public ResultData selectMall(@RequestBody Map<String, String> map) {
// logger.debug(map.toString());
//
// String tenantId = map.get("tenantId");
// String parentTenantId = map.get("parentTenantId");
//
// if (StringUtils.isBlank(tenantId)) {
// return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "tenantId不能为空");
// }
// if (StringUtils.isBlank(parentTenantId)) {
// return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "parentTenantId不能为空");
// }
//
// WxCUser user = getWxCUser();
// if (user.getParentTenantId().equalsIgnoreCase(parentTenantId)) {
// HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
// request.setAttribute(Constant.TENANT_ID, tenantId);
// request.setAttribute(Constant.PARENT_TENANT_ID, parentTenantId);
// user.setTenantId(tenantId);
// wxCUserService.saveOrUpdate(user);
// }
//
// return new ResultData();
// }

@PostMapping("/updateScene")
@ApiOperation(value = "用户更新scene", notes = "{\"scene\":\"string\"}")


+ 2
- 0
mallinkService/src/main/java/com/iformall/domain/po/base/BaseCUserEntity.java View File

@@ -27,6 +27,8 @@ public class BaseCUserEntity extends TenantEntity {
/*用户过期时间**/
@io.swagger.annotations.ApiModelProperty(value="用户过期时间",name="expireTime")
private Date expireTime;
@io.swagger.annotations.ApiModelProperty(value="真实对象如wxCUser",name="expireTime")
private Object realUser;

/**
* 是否是会员


+ 9
- 0
mallinkService/src/main/java/com/iformall/enums/EnumAppPlat.java View File

@@ -26,4 +26,13 @@ public enum EnumAppPlat {
public void setName(String name) {
this.name = name;
}
public static EnumAppPlat getByCode(Integer code) {
for (EnumAppPlat e : EnumAppPlat.values()) {
if (e.getCode().intValue() == code.intValue()) {
return e;
}
}
return null;
}
}

+ 1
- 1
mallinkService/src/main/java/com/iformall/service/CUserTokenService.java View File

@@ -11,5 +11,5 @@ public interface CUserTokenService {
* @return
*/
BaseCUserEntity getByToken(String token);
}

+ 12
- 0
mallinkService/src/main/java/com/iformall/service/cuser/CUserServiceApapter.java View File

@@ -0,0 +1,12 @@
package com.iformall.service.cuser;

import com.iformall.domain.po.base.BaseCUserEntity;

/**
* C端用户操作
* @author alascor
*/
public interface CUserServiceApapter {

public BaseCUserEntity getToken(String token);
}

+ 32
- 0
mallinkService/src/main/java/com/iformall/service/cuser/CUserServiceFactory.java View File

@@ -0,0 +1,32 @@
package com.iformall.service.cuser;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.iformall.enums.EnumAppPlat;
import com.iformall.service.cuser.wx.WxCUserServiceAdapter;

@Service
public class CUserServiceFactory {

@Autowired
WxCUserServiceAdapter wxCuserService;
private Map<Integer,CUserServiceApapter> serviceMap ;
public CUserServiceApapter getCUserService(EnumAppPlat plat) {
return getcUserServiceMap().get(plat);
}
private Map<Integer,CUserServiceApapter> getcUserServiceMap() {
if (null != serviceMap ) {
return serviceMap;
}
serviceMap = new ConcurrentHashMap<Integer,CUserServiceApapter>();
serviceMap.put(EnumAppPlat.WX.getCode(), wxCuserService);
return serviceMap;
}
}

+ 29
- 0
mallinkService/src/main/java/com/iformall/service/cuser/wx/WxCUserServiceAdapter.java View File

@@ -0,0 +1,29 @@
package com.iformall.service.cuser.wx;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.iformall.domain.po.WxCUser;
import com.iformall.domain.po.base.BaseCUserEntity;
import com.iformall.mapper.WxCUserMapper;
import com.iformall.service.cuser.CUserServiceApapter;

@Service
public class WxCUserServiceAdapter implements CUserServiceApapter{

@Autowired
WxCUserMapper wxCUserMapper;
@Override
public BaseCUserEntity getToken(String token) {
WxCUser wxCUser = wxCUserMapper.findByToken(token);
BaseCUserEntity entity = new BaseCUserEntity();
entity.setId(wxCUser.getId());
entity.setExpireTime(wxCUser.getExpireTime());
entity.setUserId(wxCUser.getUserId());
entity.setToken(wxCUser.getToken());
entity.setRealUser(wxCUser);
return entity;
}

}

+ 10
- 7
mallinkService/src/main/java/com/iformall/service/impl/CUserTokenServiceImpl.java View File

@@ -1,9 +1,10 @@
package com.iformall.service.impl;

import com.iformall.domain.po.WxCUser;
import com.iformall.domain.po.base.BaseCUserEntity;
import com.iformall.enums.EnumAppPlat;
import com.iformall.mapper.WxCUserMapper;
import com.iformall.service.CUserTokenService;
import com.iformall.service.cuser.CUserServiceFactory;
import com.iformall.utils.Constant;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -25,6 +26,9 @@ public class CUserTokenServiceImpl implements CUserTokenService {
@Autowired
@Qualifier("baseCUserTokenRedisTemplate")
RedisTemplate<String, BaseCUserEntity> baseCUserTokenRedisTemplate;
@Autowired
CUserServiceFactory cuserFactory;

@Override
public BaseCUserEntity getByToken(String token) {
@@ -44,15 +48,14 @@ public class CUserTokenServiceImpl implements CUserTokenService {
return baseUser;
}
if(token.endsWith(Constant.TOKEN_WXC_END)){
WxCUser user = wxCUserMapper.findByToken(token);
operations.set(key, user, 3600, TimeUnit.SECONDS);
baseUser = user;
baseUser = cuserFactory.getCUserService(EnumAppPlat.WX).getToken(token);
}
// 插入缓存
if (null != baseUser) {
operations.set(key, baseUser, 3600*24*3, TimeUnit.SECONDS);
}
//operations.set(key, user, 3600, TimeUnit.SECONDS);
logger.info("DB中获取用户信息End-" + token);
//logger.info("DB中获取用户信息End-" + token);
return baseUser;
}


}

+ 7
- 6
mallinkService/src/main/java/com/iformall/service/pay/service/share/wx/WxPayShareService.java View File

@@ -10,6 +10,7 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.iformall.common.ErrorCode;
@@ -301,18 +302,18 @@ public class WxPayShareService extends PayShareBaseAdapterService{
Map<String, String> returnMap = WxPayment.xmlToMap(response);
String return_code = returnMap.get("return_code");
if (!"SUCCESS".equals(return_code)) {
log.error(ErrorCode.PROFIT_SHARING_RECEIVER_ADD_FAILED.getMessage() + returnMap.get("return_msg"));
log.error(ErrorCode.PROFIT_SHARING_RECEIVER_ADD_FAILED.getMessage() + returnMap.get("return_msg")+":"+JSON.toJSONString(returnMap));
return new ShareAccountResult(false, ErrorCode.PROFIT_SHARING_RECEIVER_ADD_FAILED.getCode(), returnMap.get("return_msg"), null);
}

String result_code = returnMap.get("result_code");
if (!"SUCCESS".equals(result_code)) {
log.error(ErrorCode.PROFIT_SHARING_RECEIVER_ADD_FAILED.getMessage() + returnMap.get("err_code_des"));
log.error(ErrorCode.PROFIT_SHARING_RECEIVER_ADD_FAILED.getMessage() + returnMap.get("err_code_des")+":"+JSON.toJSONString(returnMap));
return new ShareAccountResult(false, ErrorCode.PROFIT_SHARING_RECEIVER_ADD_FAILED.getCode(), returnMap.get("err_code_des"), null);
}

if (!WxPayment.verifyNotifyHMAC(returnMap, payAccount.getApiKey())) {
log.error(ErrorCode.PROFIT_SHARING_RECEIVER_ADD_FAILED.getMessage() + "verifyNotifyHMAC");
log.error(ErrorCode.PROFIT_SHARING_RECEIVER_ADD_FAILED.getMessage() + "verifyNotifyHMAC"+":"+JSON.toJSONString(returnMap));
return new ShareAccountResult(false, ErrorCode.PROFIT_SHARING_RECEIVER_ADD_FAILED.getCode(), ErrorCode.PROFIT_SHARING_RECEIVER_ADD_FAILED.getMessage(), null);
}

@@ -355,7 +356,7 @@ public class WxPayShareService extends PayShareBaseAdapterService{
Map<String, String> returnMap = WxPayment.xmlToMap(response);
String return_code = returnMap.get("return_code");
if (!"SUCCESS".equals(return_code)) {
log.error(ErrorCode.PROFIT_SHARING_RECEIVER_DEL_FAILED.getMessage() + returnMap.get("return_msg"));
log.error(ErrorCode.PROFIT_SHARING_RECEIVER_DEL_FAILED.getMessage() + returnMap.get("return_msg")+":"+JSON.toJSONString(returnMap));
return new ShareAccountResult(false, ErrorCode.PROFIT_SHARING_RECEIVER_DEL_FAILED.getCode(), returnMap.get("return_msg"), null);
}

@@ -367,12 +368,12 @@ public class WxPayShareService extends PayShareBaseAdapterService{
receiver.setUpdateTime(new Date());
wxProfitSharingReceiverMapper.updateById(receiver);
}
log.error(ErrorCode.PROFIT_SHARING_RECEIVER_DEL_FAILED.getMessage() + returnMap.get("err_code_des"));
log.error(ErrorCode.PROFIT_SHARING_RECEIVER_DEL_FAILED.getMessage() + returnMap.get("err_code_des")+":"+JSON.toJSONString(returnMap));
return new ShareAccountResult(false, ErrorCode.PROFIT_SHARING_RECEIVER_DEL_FAILED.getCode(), returnMap.get("err_code_des"), null);
}

if (!WxPayment.verifyNotifyHMAC(returnMap, payAccount.getApiKey())) {
log.error(ErrorCode.PROFIT_SHARING_RECEIVER_DEL_FAILED.getMessage());
log.error(ErrorCode.PROFIT_SHARING_RECEIVER_DEL_FAILED.getMessage()+":"+JSON.toJSONString(returnMap));
return new ShareAccountResult(false, ErrorCode.PROFIT_SHARING_RECEIVER_DEL_FAILED.getCode(), "verifyNotifyHMAC", null);
}


Loading…
Cancel
Save