Files
quinn-bbc/src/main/java/com/quinn/service/impl/AccountCheckServiceImpl.java
2023-02-28 21:18:10 +08:00

84 lines
3.3 KiB
Java

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<AccSetting> insertList = new ArrayList<>();
List<AccSettingDefault> 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;
}
}