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