package com.quinn.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.quinn.common.RoleType; import com.quinn.intergration.AttrIcon; import com.quinn.mapper.UserMapper; import com.quinn.pojo.AccSetting; import com.quinn.pojo.AccSettingDefault; import com.quinn.pojo.User; import com.quinn.service.AccSettingDefaultService; import com.quinn.service.AccSettingService; import com.quinn.service.AccountCheckService; import com.quinn.utils.HttpUtils; import com.quinn.utils.JsonUtils; import com.quinn.utils.QuinnUtils; import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.BeanUtils; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.stereotype.Component; import org.springframework.util.StringUtils; import javax.annotation.Resource; import java.util.*; @Component public class AccountCheckServiceImpl implements AccountCheckService { @Resource UserMapper userMapper; @Resource AccSettingService accSettingService; @Resource AccSettingDefaultService accSettingDefaultService; private final String WX_OPENID_URL = "https://api.weixin.qq.com/sns/jscode2session"; private final String WX_APP_ID = "wxb1f499f0a173865b"; private final String WX_APP_SECRET = "833eefaf9206337d6c2d643f94baef7b"; private final String GRANT_TYPE = "authorization_code"; @Override public String getUserId(String code) { Map param = new HashMap<>(); param.put("appid",WX_APP_ID); param.put("secret",WX_APP_SECRET); param.put("js_code",code); param.put("GRANT_TYPE",GRANT_TYPE); String result = HttpUtils.doPost(WX_OPENID_URL, param); String openid = (String) JsonUtils.decode(result,Map.class).get("openid"); String uid = userMapper.getUserByOpenid(openid); if (StringUtils.isEmpty(uid) && !StringUtils.isEmpty(openid)){ // 没有这个用户,需要构建用户对象 User user = new User(); uid = QuinnUtils.getUuid(); user.setUid(uid); // 用户唯一id user.setRole(RoleType.NORMAL.name()); user.setUsername(uid); // 密码加密 String bCryptPassword = new BCryptPasswordEncoder().encode("123456"); user.setAvatar(AttrIcon.INSTANCE.generateImgUrl("123456")); user.setPassword(bCryptPassword); user.setGmtCreate(QuinnUtils.getTime()); user.setLoginDate(QuinnUtils.getTime()); user.setOpenid(openid); // 保存对象! userMapper.insert(user); // 初始化支出收入配置 List insertList = new ArrayList<>(); List list = accSettingDefaultService.list(new QueryWrapper<>()); for (AccSettingDefault x : list) { AccSetting accSetting = new AccSetting(); BeanUtils.copyProperties(x,accSetting); accSetting.setGmtCreate(new Date()); accSetting.setUserId(uid); insertList.add(accSetting); } if (!CollectionUtils.isEmpty(insertList)){ accSettingService.saveBatch(insertList); } } return uid; } }