小程序注册抽成通用方法
This commit is contained in:
parent
824933f911
commit
737c7a1ff1
|
|
@ -17,14 +17,13 @@ import com.mdd.common.core.AjaxResult;
|
|||
import com.mdd.common.core.PageResult;
|
||||
import com.mdd.common.entity.College;
|
||||
import com.mdd.common.entity.Teacher;
|
||||
import com.mdd.common.entity.admin.Admin;
|
||||
import com.mdd.common.entity.admin.AdminRole;
|
||||
import com.mdd.common.entity.system.SystemRole;
|
||||
import com.mdd.common.mapper.CollegeMapper;
|
||||
import com.mdd.common.mapper.TeacherMapper;
|
||||
import com.mdd.common.mapper.admin.AdminMapper;
|
||||
import com.mdd.common.mapper.system.SystemRoleMapper;
|
||||
import com.mdd.common.exception.OperateException;
|
||||
import com.mdd.common.service.RegisterService;
|
||||
import com.mdd.common.util.ConfigUtils;
|
||||
import com.mdd.common.util.QrCodeUtil;
|
||||
import com.mdd.common.util.RandomUtil;
|
||||
|
|
@ -55,8 +54,8 @@ public class TeacherServiceImpl implements ITeacherService {
|
|||
|
||||
@Resource
|
||||
TeacherMapper teacherMapper;
|
||||
@Autowired
|
||||
private AdminMapper adminMapper;
|
||||
@Resource
|
||||
RegisterService registerService;
|
||||
@Autowired
|
||||
private CollegeMapper collegeMapper;
|
||||
@Autowired
|
||||
|
|
@ -161,15 +160,17 @@ public class TeacherServiceImpl implements ITeacherService {
|
|||
*/
|
||||
@Override
|
||||
public AjaxResult<Object> add(TeacherCreateValidate createValidate) {
|
||||
// 密码默认是电话号码后8位
|
||||
String password = createValidate.getContactPhone().substring(3);
|
||||
// 自动生成唯一教师工号,作为管理员账号 & 教师工号
|
||||
String teacherCode = generateTeacherCode();
|
||||
// 创建admin账号
|
||||
|
||||
// 创建后台管理系统账号
|
||||
SystemAdminCreateValidate admin = new SystemAdminCreateValidate();
|
||||
admin.setAccount(teacherCode);
|
||||
admin.setName(createValidate.getName());
|
||||
admin.setDisable(1);
|
||||
// 密码默认是电话号码后8位
|
||||
admin.setPassword(createValidate.getContactPhone().substring(3));
|
||||
admin.setPassword(password);
|
||||
int teacherRoleId;
|
||||
try {
|
||||
teacherRoleId = Integer.parseInt(ConfigUtils.get("teacher", "teacher_role_id"));
|
||||
|
|
@ -182,10 +183,15 @@ public class TeacherServiceImpl implements ITeacherService {
|
|||
// 是否启用:0-启用 1-不启用
|
||||
admin.setDisable(0);
|
||||
adminServiceImpl.add(admin);
|
||||
QueryWrapper<Admin> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("account", admin.getAccount());
|
||||
queryWrapper.isNull("delete_time");
|
||||
Admin admin1 = adminMapper.selectOne(queryWrapper);
|
||||
|
||||
// 注册小程序
|
||||
registerService.registerUniapp(password, teacherCode, 5);
|
||||
|
||||
// TODO: 这段没用上,先注释了
|
||||
// QueryWrapper<Admin> queryWrapper = new QueryWrapper<>();
|
||||
// queryWrapper.eq("account", admin.getAccount());
|
||||
// queryWrapper.isNull("delete_time");
|
||||
// Admin admin1 = adminMapper.selectOne(queryWrapper);
|
||||
// 创建教师信息(注意:新表结构没有admin_id字段,所以不存储adminId)
|
||||
Teacher model = new Teacher();
|
||||
model.setTeacherName(createValidate.getName());
|
||||
|
|
|
|||
|
|
@ -0,0 +1,65 @@
|
|||
package com.mdd.common.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.mdd.common.entity.user.User;
|
||||
import com.mdd.common.mapper.user.UserMapper;
|
||||
import com.mdd.common.util.ConfigUtils;
|
||||
import com.mdd.common.util.ToolUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
@Service
|
||||
public class RegisterService {
|
||||
|
||||
@Resource
|
||||
UserMapper userMapper;
|
||||
|
||||
/**
|
||||
* 注册小程序
|
||||
*
|
||||
* @param password 密码
|
||||
* @param account 账号
|
||||
*/
|
||||
public void registerUniapp(String password, String account, Integer terminal) {
|
||||
Integer sn = this.__generateSn();
|
||||
String pwd = ToolUtils.makePassword(password);
|
||||
|
||||
User user = new User();
|
||||
user.setSn(sn);
|
||||
user.setNickname("用户" + sn);
|
||||
user.setAccount(account);
|
||||
user.setPassword(pwd);
|
||||
|
||||
String defaultAvatar = ConfigUtils.get("default_image", "user_avatar", "/api/static/default_avatar.png");
|
||||
|
||||
user.setAvatar(defaultAvatar);
|
||||
// 默认是PC端注册
|
||||
user.setChannel(terminal);
|
||||
user.setIsNewUser(1);
|
||||
user.setCreateTime(System.currentTimeMillis() / 1000);
|
||||
user.setUpdateTime(System.currentTimeMillis() / 1000);
|
||||
userMapper.insert(user);
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成用户编号
|
||||
*
|
||||
* @return Integer
|
||||
* @author fzr
|
||||
*/
|
||||
public Integer __generateSn() {
|
||||
Integer sn;
|
||||
while (true) {
|
||||
sn = Integer.parseInt(ToolUtils.randomInt(8));
|
||||
User snModel = userMapper.selectOne(new QueryWrapper<User>()
|
||||
.select("id,sn")
|
||||
.eq("sn", sn)
|
||||
.last("limit 1"));
|
||||
if (snModel == null) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
return sn;
|
||||
}
|
||||
}
|
||||
|
|
@ -18,6 +18,7 @@ import com.mdd.common.mapper.user.UserMapper;
|
|||
import com.mdd.common.mapper.user.UserSessionMapper;
|
||||
import com.mdd.common.plugin.notice.NoticeCheck;
|
||||
import com.mdd.common.plugin.wechat.WxMnpDriver;
|
||||
import com.mdd.common.service.RegisterService;
|
||||
import com.mdd.common.util.*;
|
||||
import com.mdd.front.cache.ScanLoginCache;
|
||||
import com.mdd.front.cache.TokenLoginCache;
|
||||
|
|
@ -49,7 +50,8 @@ public class LoginServiceImpl implements ILoginService {
|
|||
|
||||
@Resource
|
||||
UserMapper userMapper;
|
||||
|
||||
@Resource
|
||||
RegisterService registerService;
|
||||
@Resource
|
||||
UserAuthMapper userAuthMapper;
|
||||
@Resource
|
||||
|
|
@ -58,10 +60,10 @@ public class LoginServiceImpl implements ILoginService {
|
|||
/**
|
||||
* 注册账号
|
||||
*
|
||||
* @author fzr
|
||||
* @param account 账号
|
||||
* @param account 账号
|
||||
* @param password 密码
|
||||
* @param terminal 总端
|
||||
* @author fzr
|
||||
*/
|
||||
@Override
|
||||
public void register(String account, String password, Integer terminal) {
|
||||
|
|
@ -73,31 +75,14 @@ public class LoginServiceImpl implements ILoginService {
|
|||
|
||||
Assert.isNull(model, "账号已存在,换一个吧!");
|
||||
|
||||
Integer sn = this.__generateSn();
|
||||
// String salt = ToolUtils.randomString(5);
|
||||
String pwd = ToolUtils.makePassword(password);
|
||||
|
||||
User user = new User();
|
||||
user.setSn(sn);
|
||||
user.setNickname("用户"+sn);
|
||||
user.setAccount(account);
|
||||
user.setPassword(pwd);
|
||||
|
||||
String defaultAvatar = ConfigUtils.get("default_image", "user_avatar", "/api/static/default_avatar.png");
|
||||
|
||||
user.setAvatar(defaultAvatar);
|
||||
user.setChannel(terminal);
|
||||
user.setIsNewUser(1);
|
||||
user.setCreateTime(System.currentTimeMillis() / 1000);
|
||||
user.setUpdateTime(System.currentTimeMillis() / 1000);
|
||||
userMapper.insert(user);
|
||||
registerService.registerUniapp(password, account, terminal);
|
||||
}
|
||||
|
||||
/**
|
||||
* 账号登录
|
||||
*
|
||||
* @author fzr
|
||||
* @return LoginTokenVo
|
||||
* @author fzr
|
||||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
|
|
@ -115,7 +100,7 @@ public class LoginServiceImpl implements ILoginService {
|
|||
// 账号密码登录
|
||||
if (loginPwdValidate.getScene().equals(LoginEnum.ACCOUNT_PASSWORD.getCode())) {
|
||||
User user = userMapper.selectOne(new QueryWrapper<User>()
|
||||
.nested(wq->wq
|
||||
.nested(wq -> wq
|
||||
.eq("account", account).or()
|
||||
.eq("mobile", account).or()
|
||||
)
|
||||
|
|
@ -136,10 +121,10 @@ public class LoginServiceImpl implements ILoginService {
|
|||
/**
|
||||
* 手机号登录
|
||||
*
|
||||
* @author fzr
|
||||
* @param mobile 手机号
|
||||
* @param code 验证码
|
||||
* @param code 验证码
|
||||
* @return LoginTokenVo
|
||||
* @author fzr
|
||||
*/
|
||||
@Override
|
||||
public LoginTokenVo mobileLogin(String mobile, String code, Integer terminal, Integer sceneId) {
|
||||
|
|
@ -165,10 +150,10 @@ public class LoginServiceImpl implements ILoginService {
|
|||
/**
|
||||
* 微信小程序登录
|
||||
*
|
||||
* @author fzr
|
||||
* @param code 编码
|
||||
* @param code 编码
|
||||
* @param terminal 终端
|
||||
* @return LoginTokenVo
|
||||
* @author fzr
|
||||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
|
|
@ -189,10 +174,10 @@ public class LoginServiceImpl implements ILoginService {
|
|||
/**
|
||||
* 公众号登录
|
||||
*
|
||||
* @author fzr
|
||||
* @param code 编码
|
||||
* @param code 编码
|
||||
* @param terminal 终端
|
||||
* @return LoginTokenVo
|
||||
* @author fzr
|
||||
*/
|
||||
@Override
|
||||
public LoginTokenVo officeLogin(String code, Integer terminal) {
|
||||
|
|
@ -200,7 +185,7 @@ public class LoginServiceImpl implements ILoginService {
|
|||
WxMpService wxMpService = WxMnpDriver.oa();
|
||||
WxOAuth2AccessToken wxOAuth2AccessToken = wxMpService.getOAuth2Service().getAccessToken(code);
|
||||
String uniId = wxOAuth2AccessToken.getUnionId();
|
||||
String openId = wxOAuth2AccessToken.getOpenId();
|
||||
String openId = wxOAuth2AccessToken.getOpenId();
|
||||
String unionId = uniId == null ? "0" : uniId;
|
||||
|
||||
String avatar = "";
|
||||
|
|
@ -211,9 +196,10 @@ public class LoginServiceImpl implements ILoginService {
|
|||
String userInfoUrl = String.format(userInfoUri, accessToken, openId);
|
||||
String resultInfo = HttpUtils.sendGet(userInfoUrl);
|
||||
Map<String, String> resultMap = MapUtils.jsonToMap(resultInfo);
|
||||
avatar = resultMap.get("headimgurl");
|
||||
avatar = resultMap.get("headimgurl");
|
||||
nickname = resultMap.get("nickname");
|
||||
} catch (Exception ignored) {}
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
|
||||
return this.__wxLoginHandle(openId, unionId, avatar, nickname, terminal);
|
||||
} catch (WxErrorException e) {
|
||||
|
|
@ -224,9 +210,9 @@ public class LoginServiceImpl implements ILoginService {
|
|||
/**
|
||||
* 公众号跳转url
|
||||
*
|
||||
* @author fzr
|
||||
* @param url 连接
|
||||
* @return String
|
||||
* @author fzr
|
||||
*/
|
||||
@Override
|
||||
public String oaCodeUrl(String url) {
|
||||
|
|
@ -239,9 +225,9 @@ public class LoginServiceImpl implements ILoginService {
|
|||
/**
|
||||
* 扫码链接
|
||||
*
|
||||
* @author fzr
|
||||
* @param session session
|
||||
* @return String
|
||||
* @author fzr
|
||||
*/
|
||||
@Override
|
||||
public String scanCodeUrl(String url, HttpSession session) {
|
||||
|
|
@ -280,11 +266,11 @@ public class LoginServiceImpl implements ILoginService {
|
|||
/**
|
||||
* 扫码登录
|
||||
*
|
||||
* @author fzr
|
||||
* @param code 编码
|
||||
* @param state 标识
|
||||
* @param code 编码
|
||||
* @param state 标识
|
||||
* @param terminal 终端
|
||||
* @param session 会话
|
||||
* @param session 会话
|
||||
* @author fzr
|
||||
*/
|
||||
@Override
|
||||
public LoginTokenVo scanLogin(String code, String state, Integer terminal, HttpSession session) {
|
||||
|
|
@ -309,7 +295,7 @@ public class LoginServiceImpl implements ILoginService {
|
|||
String result = HttpUtils.sendGet(accessTokenUrl);
|
||||
resultMap = MapUtils.jsonToMap(result);
|
||||
} catch (Exception e) {
|
||||
throw new OperateException("获取access_token失败:"+e.getMessage());
|
||||
throw new OperateException("获取access_token失败:" + e.getMessage());
|
||||
}
|
||||
|
||||
// 访问微信获取用户信息 (openId,unionId,昵称,头像等)
|
||||
|
|
@ -322,13 +308,13 @@ public class LoginServiceImpl implements ILoginService {
|
|||
String resultUserInfo = HttpUtils.sendGet(userInfoUrl);
|
||||
userinfoMap = MapUtils.jsonToMap(resultUserInfo);
|
||||
} catch (Exception e) {
|
||||
throw new OperateException("获取用户信息失败:"+e.getMessage());
|
||||
throw new OperateException("获取用户信息失败:" + e.getMessage());
|
||||
}
|
||||
|
||||
String openId = userinfoMap.get("openid");
|
||||
String uniId = userinfoMap.get("unionid");
|
||||
String openId = userinfoMap.get("openid");
|
||||
String uniId = userinfoMap.get("unionid");
|
||||
String unionId = uniId == null ? "0" : uniId;
|
||||
String avatar = resultMap.getOrDefault("headimgurl", "");
|
||||
String avatar = resultMap.getOrDefault("headimgurl", "");
|
||||
String nickname = resultMap.getOrDefault("nickname", "");
|
||||
|
||||
return this.__wxLoginHandle(openId, unionId, avatar, nickname, terminal);
|
||||
|
|
@ -356,13 +342,13 @@ public class LoginServiceImpl implements ILoginService {
|
|||
|
||||
if (StringUtils.equals(unionId, "0") == false) {
|
||||
queryWrapper = new QueryWrapper<UserAuth>()
|
||||
.nested(wq->wq
|
||||
.nested(wq -> wq
|
||||
.eq("unionid", unionId).or()
|
||||
.eq("openid", openId)
|
||||
).last("limit 1");
|
||||
} else {
|
||||
queryWrapper = new QueryWrapper<UserAuth>()
|
||||
.nested(wq->wq
|
||||
.nested(wq -> wq
|
||||
.eq("openid", openId)
|
||||
).last("limit 1");
|
||||
}
|
||||
|
|
@ -380,14 +366,14 @@ public class LoginServiceImpl implements ILoginService {
|
|||
String defaultAvatar = ConfigUtils.get("default_image", "user_avatar", "/api/static/default_avatar.png");
|
||||
// 创建用户
|
||||
if (StringUtils.isNull(user)) {
|
||||
Integer sn = this.__generateSn();
|
||||
Integer sn = registerService.__generateSn();
|
||||
//user.setAvatar(defaultAvatar);
|
||||
String defaultNickname = "用户" + sn;
|
||||
if (StringUtils.isNotEmpty(avatar)) {
|
||||
try {
|
||||
Long time = System.currentTimeMillis();
|
||||
String date = TimeUtils.millisecondToDate(time, "yyyyMMdd");
|
||||
String name = ToolUtils.makeMd5(ToolUtils.makeUUID()+time) + ".jpg";
|
||||
String name = ToolUtils.makeMd5(ToolUtils.makeUUID() + time) + ".jpg";
|
||||
String path = "avatar" + date + "/" + name;
|
||||
String savePath = YmlUtils.get("like.upload-directory") + path;
|
||||
ToolUtils.download(avatar, savePath);
|
||||
|
|
@ -445,11 +431,11 @@ public class LoginServiceImpl implements ILoginService {
|
|||
/**
|
||||
* 处理录令牌
|
||||
*
|
||||
* @author fzr
|
||||
* @param userId 用户ID
|
||||
* @param mobile 用户手机
|
||||
* @param userId 用户ID
|
||||
* @param mobile 用户手机
|
||||
* @param terminal 终端
|
||||
* @return LoginTokenVo
|
||||
* @author fzr
|
||||
*/
|
||||
private LoginTokenVo __loginToken(Integer userId, String mobile, Integer isNew, Integer terminal) {
|
||||
// 实现账号登录
|
||||
|
|
@ -485,26 +471,4 @@ public class LoginServiceImpl implements ILoginService {
|
|||
|
||||
return vo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成用户编号
|
||||
*
|
||||
* @author fzr
|
||||
* @return Integer
|
||||
*/
|
||||
private Integer __generateSn() {
|
||||
Integer sn;
|
||||
while (true) {
|
||||
sn = Integer.parseInt(ToolUtils.randomInt(8));
|
||||
User snModel = userMapper.selectOne(new QueryWrapper<User>()
|
||||
.select("id,sn")
|
||||
.eq("sn", sn)
|
||||
.last("limit 1"));
|
||||
if (snModel == null) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
return sn;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue