107 lines
3.5 KiB
Java
107 lines
3.5 KiB
Java
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<UserDO> wrapper = new QueryWrapper<>();
|
|
wrapper.eq("openid",openid);
|
|
return userMapper.selectOne(wrapper);
|
|
}
|
|
|
|
@Override
|
|
public void updateUser(UserDO userDO) {
|
|
UpdateWrapper<UserDO> 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<UserDO> getUserList() {
|
|
QueryWrapper<UserDO> queryWrapper = new QueryWrapper<>();
|
|
queryWrapper.select("openid");
|
|
return userMapper.selectList(queryWrapper);
|
|
}
|
|
|
|
@Override
|
|
public UserDO getUserInfo(String openid) {
|
|
QueryWrapper<UserDO> 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);
|
|
}
|
|
|
|
|
|
}
|