package com.taoke.autopay.service.impl; import com.google.gson.Gson; import com.taoke.autopay.dao.WxUserInfoMapper; import com.taoke.autopay.entity.SystemConfigKeyEnum; import com.taoke.autopay.entity.WxUserInfo; import com.taoke.autopay.entity.WxUserSettings; import com.taoke.autopay.service.SystemConfigService; import com.taoke.autopay.service.WxUserService; import com.taoke.autopay.service.WxUserSettingService; import com.taoke.autopay.service.credit.UserCreditBalanceService; import com.taoke.autopay.utils.IPUtil; import com.taoke.autopay.utils.StringUtil; import com.taoke.autopay.utils.WxApiUtil; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.Date; import java.util.List; /** * @author hxh * @title: WxUserServiceImpl * @description: 微信用户服务实现 * @date 2024/6/28 18:54 */ @Service public class WxUserServiceImpl implements WxUserService { @Resource private WxUserInfoMapper wxUserInfoMapper; @Resource private WxUserSettingService wxUserSettingService; @Resource private SystemConfigService systemConfigService; @Resource private UserCreditBalanceService userCreditBalanceService; @Transactional(rollbackFor = Exception.class) @Override public WxUserInfo login(WxApiUtil.WXUserInfo wxUserInfo) { // 查询用户是否存在 WxUserInfoMapper.DaoQuery query = new WxUserInfoMapper.DaoQuery(); query.openId = wxUserInfo.getOpenid(); query.count = 1; query.start = 0; List list = wxUserInfoMapper.list(query); if (list.size() == 0) { // 没有数据,需要注册 WxUserInfo user = new WxUserInfo(); user.setOpenId(wxUserInfo.getOpenid()); user.setNickName(wxUserInfo.getNickname()); user.setPortrait(wxUserInfo.getHeadimgurl()); user.setLoginTime(new Date()); user.setCreateTime(new Date()); wxUserInfoMapper.insertSelective(user); userCreditBalanceService.initializeCreditBalance(user.getId()); return user; } else { WxUserInfo update = new WxUserInfo(); update.setId(list.get(0).getId()); update.setNickName(wxUserInfo.getNickname()); update.setPortrait(wxUserInfo.getHeadimgurl()); update.setLoginTime(new Date()); update.setUpdateTime(new Date()); wxUserInfoMapper.updateByPrimaryKeySelective(update); userCreditBalanceService.initializeCreditBalance(update.getId()); return list.get(0); } } @Override public WxUserInfo selectById(Long id) { return wxUserInfoMapper.selectByPrimaryKey(id); } @Override public List list(WxUserInfoMapper.DaoQuery query, int page, int pageSize) { query.start = (page - 1) * pageSize; query.count = pageSize; return wxUserInfoMapper.list(query); } @Override public long count(WxUserInfoMapper.DaoQuery query) { return wxUserInfoMapper.count(query); } @Override public void setLatestInfoInfo(Long uid, String ip, IPUtil.IPInfo ipInfo) { WxUserInfo wxUserInfo=new WxUserInfo(); wxUserInfo.setId(uid); wxUserInfo.setLatestIP(ip); wxUserInfo.setLatestIPInfo(ipInfo!=null?new Gson().toJson(ipInfo):null); wxUserInfo.setUpdateTime(new Date()); wxUserInfoMapper.updateByPrimaryKeySelective(wxUserInfo); } @Override public void update(WxUserInfo wxUserInfo) { wxUserInfoMapper.updateByPrimaryKeySelective(wxUserInfo); } }