| @@ -1,6 +1,7 @@ | |||||
| package com.iformall.config; | package com.iformall.config; | ||||
| import com.iformall.domain.po.PushLimit; | import com.iformall.domain.po.PushLimit; | ||||
| import com.iformall.domain.po.WxCUser; | |||||
| import com.iformall.domain.po.WxScoreRules; | import com.iformall.domain.po.WxScoreRules; | ||||
| import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
| @@ -86,4 +87,21 @@ public class RedisConfig extends CachingConfigurerSupport { | |||||
| return template; | return template; | ||||
| } | } | ||||
| @Bean("cuserTokenRedisTemplate") | |||||
| public RedisTemplate<String, WxCUser> getCUserTokenRedisTemplate(RedisConnectionFactory connectionFactory) { | |||||
| RedisTemplate<String, WxCUser> template = new RedisTemplate<String, WxCUser>(); | |||||
| Jackson2JsonRedisSerializer<WxScoreRules> j = new Jackson2JsonRedisSerializer<WxScoreRules>(WxScoreRules.class); | |||||
| // value值的序列化 | |||||
| template.setValueSerializer(j); | |||||
| template.setHashKeySerializer(j); | |||||
| // key的序列化 | |||||
| template.setKeySerializer(new StringRedisSerializer()); | |||||
| template.setHashKeySerializer(new StringRedisSerializer()); | |||||
| template.setConnectionFactory(connectionFactory); | |||||
| return template; | |||||
| } | |||||
| } | } | ||||
| @@ -149,8 +149,7 @@ public class WxUserGrantController extends BaseController { | |||||
| try { | try { | ||||
| WxCUser user1 = wxCUserService.getByOpenId(user); | WxCUser user1 = wxCUserService.getByOpenId(user); | ||||
| if (user1 != null) { | if (user1 != null) { | ||||
| user1.createToken(new Date()); | |||||
| token = user1.getToken(); | |||||
| token = user1.createToken(new Date()); | |||||
| resultMap.put("token", token); | resultMap.put("token", token); | ||||
| request.setAttribute(AuthorizationInterceptor.LOGIN_USER_KEY, user1.getId()); | request.setAttribute(AuthorizationInterceptor.LOGIN_USER_KEY, user1.getId()); | ||||
| @@ -181,8 +180,7 @@ public class WxUserGrantController extends BaseController { | |||||
| wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_LOGIN,user1); | wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_LOGIN,user1); | ||||
| } else { | } else { | ||||
| user.setTenantId(wxAppinfo.getTenantId()); | user.setTenantId(wxAppinfo.getTenantId()); | ||||
| user.createToken(new Date()); | |||||
| token = user.getToken(); | |||||
| token = user.createToken(new Date()); | |||||
| user.setRegisterIp(ipaddress); | user.setRegisterIp(ipaddress); | ||||
| if (user.getSceneAddress() == null || user.getSceneAddress().equals("undefined")) | if (user.getSceneAddress() == null || user.getSceneAddress().equals("undefined")) | ||||
| @@ -223,6 +221,11 @@ public class WxUserGrantController extends BaseController { | |||||
| return new ResultData(resultMap); | return new ResultData(resultMap); | ||||
| } | } | ||||
| /** | |||||
| * WxAppInfo更新accessToken | |||||
| * @param wxAppinfo | |||||
| * @param wxMaService | |||||
| */ | |||||
| private void updateAppAccessToken(WxAppinfo wxAppinfo, WxMaService wxMaService) { | private void updateAppAccessToken(WxAppinfo wxAppinfo, WxMaService wxMaService) { | ||||
| try { | try { | ||||
| String accessToken = wxMaService.getAccessToken(true); | String accessToken = wxMaService.getAccessToken(true); | ||||
| @@ -44,9 +44,6 @@ public class CouponSendSchedule { | |||||
| @Autowired | @Autowired | ||||
| private WxCUserBasicInfoMapper wxCUserBasicInfoMapper; | private WxCUserBasicInfoMapper wxCUserBasicInfoMapper; | ||||
| @Autowired | |||||
| private WxCUserMapper wxCUserMapper; | |||||
| @Autowired | @Autowired | ||||
| private WxCouponSendMapper wxCouponSendMapper; | private WxCouponSendMapper wxCouponSendMapper; | ||||
| @@ -461,15 +461,14 @@ public class WxCUser implements Serializable { | |||||
| } | } | ||||
| } | } | ||||
| public void createToken(Date currentDate) { | |||||
| public String createToken(Date currentDate) { | |||||
| if (expireTime == null || expireTime.getTime() < currentDate.getTime()) | if (expireTime == null || expireTime.getTime() < currentDate.getTime()) | ||||
| { | { | ||||
| //生成一个token | //生成一个token | ||||
| String token = UUID.randomUUID().toString(); | |||||
| this.token = UUID.randomUUID().toString(); | |||||
| //过期时间 | //过期时间 | ||||
| Date expireTime = new Date(currentDate.getTime() + BaseConstant.EXPIRE * 1000); | |||||
| setToken(token); | |||||
| setExpireTime(expireTime); | |||||
| this.expireTime = new Date(currentDate.getTime() + BaseConstant.EXPIRE * 1000); | |||||
| } | } | ||||
| return this.token; | |||||
| } | } | ||||
| } | } | ||||
| @@ -5,7 +5,6 @@ import com.github.pagehelper.PageInfo; | |||||
| import com.iformall.common.IdWorker; | import com.iformall.common.IdWorker; | ||||
| import com.iformall.domain.dto.WxCUserBasicInfoDto; | import com.iformall.domain.dto.WxCUserBasicInfoDto; | ||||
| import com.iformall.domain.po.WxCUser; | import com.iformall.domain.po.WxCUser; | ||||
| import com.iformall.domain.po.WxScoreHistory; | |||||
| import com.iformall.enums.EnumScoreType; | import com.iformall.enums.EnumScoreType; | ||||
| import com.iformall.mapper.WxCUserMapper; | import com.iformall.mapper.WxCUserMapper; | ||||
| import com.iformall.mapper.WxCouponOrderMapper; | import com.iformall.mapper.WxCouponOrderMapper; | ||||
| @@ -13,14 +12,17 @@ import com.iformall.mapper.WxScoreHistoryMapper; | |||||
| import com.iformall.mapper.WxScoreRulesMapper; | import com.iformall.mapper.WxScoreRulesMapper; | ||||
| import com.iformall.service.WxCUserService; | import com.iformall.service.WxCUserService; | ||||
| import com.iformall.service.WxScoreRulesService; | import com.iformall.service.WxScoreRulesService; | ||||
| import com.iformall.utils.BaseConstant; | |||||
| import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.beans.factory.annotation.Qualifier; | |||||
| import org.springframework.data.redis.core.RedisTemplate; | |||||
| import org.springframework.data.redis.core.ValueOperations; | |||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||
| import java.util.Date; | import java.util.Date; | ||||
| import java.util.HashMap; | |||||
| import java.util.List; | |||||
| import java.util.concurrent.TimeUnit; | |||||
| @Service | @Service | ||||
| public class WxCUserServiceImpl implements WxCUserService { | public class WxCUserServiceImpl implements WxCUserService { | ||||
| @@ -42,6 +44,11 @@ public class WxCUserServiceImpl implements WxCUserService { | |||||
| WxScoreHistoryMapper wxScoreHistoryMapper; | WxScoreHistoryMapper wxScoreHistoryMapper; | ||||
| @Autowired | |||||
| @Qualifier("cuserTokenRedisTemplate") | |||||
| RedisTemplate<String, WxCUser> cUserTokenRedisTemplate; | |||||
| @Override | @Override | ||||
| public PageInfo<WxCUser> listAsPage(WxCUser record, Integer pageIndex, Integer pageSize) { | public PageInfo<WxCUser> listAsPage(WxCUser record, Integer pageIndex, Integer pageSize) { | ||||
| return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCUserMapper.findList(record)); | return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCUserMapper.findList(record)); | ||||
| @@ -59,7 +66,22 @@ public class WxCUserServiceImpl implements WxCUserService { | |||||
| @Override | @Override | ||||
| public WxCUser getByToken(String token) { | public WxCUser getByToken(String token) { | ||||
| return wxCUserMapper.findByToken(token); | |||||
| logger.info("获取用户信息start ..."); | |||||
| String key = "token_" + token; | |||||
| ValueOperations<String, WxCUser> operations = cUserTokenRedisTemplate.opsForValue(); | |||||
| // 缓存 | |||||
| boolean hasKey = cUserTokenRedisTemplate.hasKey(key); | |||||
| if(hasKey) { | |||||
| // 从缓存获取用户信息 | |||||
| WxCUser user = operations.get(key); | |||||
| return user; | |||||
| } | |||||
| WxCUser user = wxCUserMapper.findByToken(token); | |||||
| // 插入缓存 | |||||
| operations.set(key, user, BaseConstant.EXPIRE, TimeUnit.SECONDS); | |||||
| return user; | |||||
| } | } | ||||
| @Override | @Override | ||||
| @@ -79,6 +101,13 @@ public class WxCUserServiceImpl implements WxCUserService { | |||||
| user.setUpdateDate(curr); | user.setUpdateDate(curr); | ||||
| ret = wxCUserMapper.updateByPrimaryKeySelective(user); | ret = wxCUserMapper.updateByPrimaryKeySelective(user); | ||||
| } | } | ||||
| String key = "token_" + user.getToken(); | |||||
| // 缓存已存在,删除 | |||||
| boolean hasKey = cUserTokenRedisTemplate.hasKey(key); | |||||
| if(hasKey) { | |||||
| cUserTokenRedisTemplate.delete(key); | |||||
| logger.info("更新用户,从缓存中删除用户 token >> " + user.getToken()); | |||||
| } | |||||
| return ret; | return ret; | ||||
| } | } | ||||
| @@ -39,6 +39,9 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { | |||||
| @Autowired | @Autowired | ||||
| WxCUserMapper wxCUserMapper; | WxCUserMapper wxCUserMapper; | ||||
| @Autowired | |||||
| WxCUserService wxCUserService; | |||||
| @Autowired | @Autowired | ||||
| WxPayAccountMapper wxPayAccountMapper; | WxPayAccountMapper wxPayAccountMapper; | ||||
| @@ -1299,7 +1302,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { | |||||
| } else { | } else { | ||||
| userQ.setIsSubscribe(EnumUserIsSubscribe.YES.getCode()); | userQ.setIsSubscribe(EnumUserIsSubscribe.YES.getCode()); | ||||
| } | } | ||||
| wxCUserMapper.insertSelective(userQ); | |||||
| wxCUserService.saveOrUpdate(userQ); | |||||
| } else { | } else { | ||||
| userQ.setId(user1.getId()); | userQ.setId(user1.getId()); | ||||
| userQ.setUpdateDate(curDate); | userQ.setUpdateDate(curDate); | ||||
| @@ -1308,7 +1311,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { | |||||
| } else { | } else { | ||||
| userQ.setIsSubscribe(EnumUserIsSubscribe.YES.getCode()); | userQ.setIsSubscribe(EnumUserIsSubscribe.YES.getCode()); | ||||
| } | } | ||||
| wxCUserMapper.updateByPrimaryKeySelective(userQ); | |||||
| wxCUserService.saveOrUpdate(userQ); | |||||
| } | } | ||||
| record.setcUserId(userQ.getId()); | record.setcUserId(userQ.getId()); | ||||
| @@ -143,7 +143,7 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService { | |||||
| if (!list.isEmpty()) { | if (!list.isEmpty()) { | ||||
| wxCUser = list.get(0); | wxCUser = list.get(0); | ||||
| wxCUser.setScore(scoreNumber); | wxCUser.setScore(scoreNumber); | ||||
| wxCUserMapper.updateByPrimaryKeySelective(wxCUser); | |||||
| wxCUserService.saveOrUpdate(wxCUser); | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -163,7 +163,7 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService { | |||||
| WxCUser wxCUser = new WxCUser(); | WxCUser wxCUser = new WxCUser(); | ||||
| wxCUser.setId(user.getId()); | wxCUser.setId(user.getId()); | ||||
| wxCUser.setScore(user.getPoins()); | wxCUser.setScore(user.getPoins()); | ||||
| wxCUserMapper.updateByPrimaryKeySelective(wxCUser); | |||||
| wxCUserService.saveOrUpdate(wxCUser); | |||||
| } | } | ||||
| } | } | ||||
| @@ -351,7 +351,7 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService { | |||||
| wxCUser.setTenantId(userInfo.getTenantId()); | wxCUser.setTenantId(userInfo.getTenantId()); | ||||
| wxCUser.setPhone(userInfo.getPhone()); | wxCUser.setPhone(userInfo.getPhone()); | ||||
| wxCUser.setScore(score); | wxCUser.setScore(score); | ||||
| wxCUserMapper.updateByPrimaryKeySelective(wxCUser); | |||||
| wxCUserService.saveOrUpdate(wxCUser);; | |||||
| } | } | ||||
| // 2. 记录历史 | // 2. 记录历史 | ||||