From 737c7a1ff12e45aa3937a10de5ab03825ec68aa0 Mon Sep 17 00:00:00 2001 From: mirage <1127314491@qq.com> Date: Wed, 25 Feb 2026 10:43:17 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F=E6=B3=A8=E5=86=8C?= =?UTF-8?q?=E6=8A=BD=E6=88=90=E9=80=9A=E7=94=A8=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/TeacherServiceImpl.java | 28 +++-- .../mdd/common/service/RegisterService.java | 65 +++++++++++ .../front/service/impl/LoginServiceImpl.java | 108 ++++++------------ 3 files changed, 118 insertions(+), 83 deletions(-) create mode 100644 server/like-common/src/main/java/com/mdd/common/service/RegisterService.java diff --git a/server/like-admin/src/main/java/com/mdd/admin/service/impl/TeacherServiceImpl.java b/server/like-admin/src/main/java/com/mdd/admin/service/impl/TeacherServiceImpl.java index c4175a1e..f03fde41 100644 --- a/server/like-admin/src/main/java/com/mdd/admin/service/impl/TeacherServiceImpl.java +++ b/server/like-admin/src/main/java/com/mdd/admin/service/impl/TeacherServiceImpl.java @@ -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 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 queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("account", admin.getAccount()); - queryWrapper.isNull("delete_time"); - Admin admin1 = adminMapper.selectOne(queryWrapper); + + // 注册小程序 + registerService.registerUniapp(password, teacherCode, 5); + + // TODO: 这段没用上,先注释了 +// QueryWrapper 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()); diff --git a/server/like-common/src/main/java/com/mdd/common/service/RegisterService.java b/server/like-common/src/main/java/com/mdd/common/service/RegisterService.java new file mode 100644 index 00000000..e3f9060d --- /dev/null +++ b/server/like-common/src/main/java/com/mdd/common/service/RegisterService.java @@ -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() + .select("id,sn") + .eq("sn", sn) + .last("limit 1")); + if (snModel == null) { + break; + } + } + return sn; + } +} diff --git a/server/like-front/src/main/java/com/mdd/front/service/impl/LoginServiceImpl.java b/server/like-front/src/main/java/com/mdd/front/service/impl/LoginServiceImpl.java index b3ebeb40..3d7c1aab 100644 --- a/server/like-front/src/main/java/com/mdd/front/service/impl/LoginServiceImpl.java +++ b/server/like-front/src/main/java/com/mdd/front/service/impl/LoginServiceImpl.java @@ -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() - .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 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() - .nested(wq->wq + .nested(wq -> wq .eq("unionid", unionId).or() .eq("openid", openId) ).last("limit 1"); } else { queryWrapper = new QueryWrapper() - .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() - .select("id,sn") - .eq("sn", sn) - .last("limit 1")); - if (snModel == null) { - break; - } - } - return sn; - } - }