package com.szxgl.vote2021.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.szxgl.vote2021.entity.UserDO; import com.szxgl.vote2021.entity.UserWorks; import com.szxgl.vote2021.entity.WxMpUser; import com.szxgl.vote2021.mapper.UserMapper; import com.szxgl.vote2021.mapper.UserMapper2; import com.szxgl.vote2021.service.UserService; import com.szxgl.vote2021.utils.RedisUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.servlet.http.Cookie; import java.util.Date; import java.util.List; @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Autowired private UserMapper2 userMapper2; @Autowired private RedisUtil redisUtil; @Autowired private static final String USERINFO = "userInfo"; @Override public void saveAndUpdate(WxMpUser wxMpUser) { String openid = wxMpUser.getOpenid(); UserDO userDO = get(openid); if(userDO==null){ UserDO userDO1 = new UserDO(); userDO1.setOpenid(openid); userDO1.setNickname(wxMpUser.getNickname()); userDO1.setHeadimgurl(wxMpUser.getHeadimgurl()); userDO1.setCreateTime(new Date()); userMapper.insert(userDO1); } } @Override public UserDO get(String openid) { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("openid",openid); return userMapper.selectOne(wrapper); } @Override public void updateUser(UserDO userDO) { UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("openid",userDO.getOpenid()); updateWrapper.set("realname",userDO.getRealname()); updateWrapper.set("phone",userDO.getPhone()); updateWrapper.set("update_time",new Date()); userMapper.update(null,updateWrapper); } @Override public UserWorks getUserWorks(String openid) { //redis是否有该用户信息 if(!redisUtil.hasKey(USERINFO+openid)){ //不存在创建缓存 有效期2小时 UserWorks userWorks = userMapper2.getUserWorks(openid); redisUtil.set(USERINFO+openid,userWorks,60 * 60 * 2); return userWorks; }else { //判断redis中的用户信息是否为null 如果之前没有上传文件去查看排行榜存入的信息就为null if(redisUtil.get(USERINFO + openid) != null){ return (UserWorks)redisUtil.get(USERINFO + openid); }else { redisUtil.del(USERINFO + openid); UserWorks userWorks = userMapper2.getUserWorks(openid); redisUtil.set(USERINFO+openid,userWorks,60 * 60 * 2); return userWorks; } } } @Override public List getUserList() { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.select("openid"); return userMapper.selectList(queryWrapper); } @Override public UserDO getUserInfo(String openid) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("openid",openid); queryWrapper.select("realname","phone"); return userMapper.selectOne(queryWrapper); } @Override public String getWorksUser(Integer worksId) { return userMapper2.getWorksUser(worksId); } }