Преглед изворни кода

fix wxcuser cache

release_toaliyun_real
xiaohanzi пре 5 година
родитељ
комит
57d8d56d41
10 измењених фајлова са 137 додато и 43 уклоњено
  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 Прегледај датотеку

@@ -120,12 +120,16 @@ public class BaseController {
*/ */
public WxCUser getWxCUser() { public WxCUser getWxCUser() {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); 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(); // Long cUserId = getUserId();
// WxCUser user = wxCUserService.getById(cUserId); // WxCUser user = wxCUserService.getById(cUserId);
if (user == null) {
if (baseuser == null) {
throw new MallinkException(ErrorCode.USER_IS_EMPTY); 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(); TenantEntity tenantEntity = getTenantInfo();
if (user.getTenantId() == null) { if (user.getTenantId() == null) {
user.setTenantId(tenantEntity.getTenantId()); user.setTenantId(tenantEntity.getTenantId());


+ 29
- 27
mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java Прегледај датотеку

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


@Autowired @Autowired
WxMallService mallService; WxMallService mallService;
@Autowired
private CUserTokenService cUserTokenService;




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

return new ResultData(resultMap); 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") @PostMapping("/updateScene")
@ApiOperation(value = "用户更新scene", notes = "{\"scene\":\"string\"}") @ApiOperation(value = "用户更新scene", notes = "{\"scene\":\"string\"}")


+ 2
- 0
mallinkService/src/main/java/com/iformall/domain/po/base/BaseCUserEntity.java Прегледај датотеку

@@ -27,6 +27,8 @@ public class BaseCUserEntity extends TenantEntity {
/*用户过期时间**/ /*用户过期时间**/
@io.swagger.annotations.ApiModelProperty(value="用户过期时间",name="expireTime") @io.swagger.annotations.ApiModelProperty(value="用户过期时间",name="expireTime")
private Date 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 Прегледај датотеку

@@ -26,4 +26,13 @@ public enum EnumAppPlat {
public void setName(String name) { public void setName(String name) {
this.name = 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 Прегледај датотеку

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

+ 12
- 0
mallinkService/src/main/java/com/iformall/service/cuser/CUserServiceApapter.java Прегледај датотеку

@@ -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 Прегледај датотеку

@@ -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 Прегледај датотеку

@@ -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 Прегледај датотеку

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


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


@Override @Override
public BaseCUserEntity getByToken(String token) { public BaseCUserEntity getByToken(String token) {
@@ -44,15 +48,14 @@ public class CUserTokenServiceImpl implements CUserTokenService {
return baseUser; return baseUser;
} }
if(token.endsWith(Constant.TOKEN_WXC_END)){ 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); //operations.set(key, user, 3600, TimeUnit.SECONDS);
logger.info("DB中获取用户信息End-" + token);
//logger.info("DB中获取用户信息End-" + token);
return baseUser; return baseUser;
} }


} }

+ 7
- 6
mallinkService/src/main/java/com/iformall/service/pay/service/share/wx/WxPayShareService.java Прегледај датотеку

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


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


String result_code = returnMap.get("result_code"); String result_code = returnMap.get("result_code");
if (!"SUCCESS".equals(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); return new ShareAccountResult(false, ErrorCode.PROFIT_SHARING_RECEIVER_ADD_FAILED.getCode(), returnMap.get("err_code_des"), null);
} }


if (!WxPayment.verifyNotifyHMAC(returnMap, payAccount.getApiKey())) { 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); 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); Map<String, String> returnMap = WxPayment.xmlToMap(response);
String return_code = returnMap.get("return_code"); String return_code = returnMap.get("return_code");
if (!"SUCCESS".equals(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); 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()); receiver.setUpdateTime(new Date());
wxProfitSharingReceiverMapper.updateById(receiver); 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); return new ShareAccountResult(false, ErrorCode.PROFIT_SHARING_RECEIVER_DEL_FAILED.getCode(), returnMap.get("err_code_des"), null);
} }


if (!WxPayment.verifyNotifyHMAC(returnMap, payAccount.getApiKey())) { 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); return new ShareAccountResult(false, ErrorCode.PROFIT_SHARING_RECEIVER_DEL_FAILED.getCode(), "verifyNotifyHMAC", null);
} }


Loading…
Откажи
Сачувај