| @@ -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()); | |||
| @@ -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\"}") | |||
| @@ -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; | |||
| /** | |||
| * 是否是会员 | |||
| @@ -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; | |||
| } | |||
| } | |||
| @@ -11,5 +11,5 @@ public interface CUserTokenService { | |||
| * @return | |||
| */ | |||
| BaseCUserEntity getByToken(String token); | |||
| } | |||
| @@ -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); | |||
| } | |||
| @@ -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; | |||
| } | |||
| } | |||
| @@ -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; | |||
| } | |||
| } | |||
| @@ -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; | |||
| } | |||
| } | |||
| @@ -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); | |||
| } | |||