diff --git a/server/like-front/src/main/java/com/mdd/front/controller/LoginController.java b/server/like-front/src/main/java/com/mdd/front/controller/LoginController.java index 6b5e6433..a336be35 100644 --- a/server/like-front/src/main/java/com/mdd/front/controller/LoginController.java +++ b/server/like-front/src/main/java/com/mdd/front/controller/LoginController.java @@ -2,8 +2,12 @@ package com.mdd.front.controller; import com.baomidou.mybatisplus.core.toolkit.Assert; import com.mdd.common.core.AjaxResult; +import com.mdd.common.enums.ClientEnum; +import com.mdd.common.util.StringUtils; import com.mdd.front.service.ILoginService; -import com.mdd.front.validate.UserRegisterValidate; +import com.mdd.front.validate.login.RegisterValidate; +import com.mdd.front.validate.login.ForgetPwdValidate; +import com.mdd.front.validate.login.OaLoginValidate; import com.mdd.front.vo.LoginCodesVo; import com.mdd.front.vo.LoginTokenVo; import lombok.extern.slf4j.Slf4j; @@ -12,8 +16,6 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpSession; -import java.io.UnsupportedEncodingException; -import java.net.URLEncoder; import java.util.LinkedHashMap; import java.util.Map; @@ -32,12 +34,12 @@ public class LoginController { * 注册账号 * * @author fzr - * @param userRegisterValidate 参数 + * @param registerValidate 参数 * @return AjaxResult */ @PostMapping("/register") - public AjaxResult register(@Validated @RequestBody UserRegisterValidate userRegisterValidate) { - iLoginService.register(userRegisterValidate); + public AjaxResult register(@Validated @RequestBody RegisterValidate registerValidate) { + iLoginService.register(registerValidate); return AjaxResult.success(); } @@ -52,9 +54,14 @@ public class LoginController { public AjaxResult check(@RequestBody Map params) { Assert.notNull(params.get("scene"), "scene参数缺失!"); LoginTokenVo vo = new LoginTokenVo(); + switch (params.get("scene")) { case "mnp": - vo = iLoginService.mnpLogin(params); + Assert.notNull(params.get("code"), "code参数缺失!"); + Assert.notNull(params.get("client"), "client参数缺失!"); + String code = params.get("code"); + Integer client = Integer.parseInt(params.get("client")); + vo = iLoginService.mnpLogin(code, client); break; case "mobile": vo = iLoginService.mobileLogin(params); @@ -63,6 +70,7 @@ public class LoginController { vo = iLoginService.accountLogin(params); break; } + return AjaxResult.success(vo); } @@ -70,12 +78,16 @@ public class LoginController { * 公众号登录 * * @author fzr - * @param params 参数 + * @param oaLoginValidate 参数 * @return AjaxResult */ - @GetMapping("/oaLogin") - public AjaxResult oaLogin(@RequestParam Map params) { - LoginTokenVo vo = iLoginService.officeLogin(params); + @PostMapping("/oaLogin") + public AjaxResult oaLogin(@Validated @RequestBody OaLoginValidate oaLoginValidate) { + String code = oaLoginValidate.getCode(); + Integer client = oaLoginValidate.getClient(); + client = StringUtils.isNotNull(client) ? client : ClientEnum.OA.getCode(); + + LoginTokenVo vo = iLoginService.officeLogin(code, client); return AjaxResult.success(vo); } @@ -99,15 +111,22 @@ public class LoginController { * 忘记密码 * * @author fzr - * @param params 参数 + * @param forgetPwdValidate 参数 * @return AjaxResult */ @PostMapping("/forgotPassword") - public AjaxResult forgotPassword(@RequestBody Map params) { - iLoginService.forgotPassword(params); + public AjaxResult forgotPassword(@Validated @RequestBody ForgetPwdValidate forgetPwdValidate) { + iLoginService.forgotPassword(forgetPwdValidate); return AjaxResult.success(); } + /** + * 扫码链接 + * + * @author fzr + * @param session session + * @return AjaxResult> + */ @GetMapping("/getScanCode") public AjaxResult> getScanCode(HttpSession session) { String qrcodeUrl = iLoginService.getScanCode(session); diff --git a/server/like-front/src/main/java/com/mdd/front/service/ILoginService.java b/server/like-front/src/main/java/com/mdd/front/service/ILoginService.java index 648df3fd..97e31dfb 100644 --- a/server/like-front/src/main/java/com/mdd/front/service/ILoginService.java +++ b/server/like-front/src/main/java/com/mdd/front/service/ILoginService.java @@ -1,6 +1,7 @@ package com.mdd.front.service; -import com.mdd.front.validate.UserRegisterValidate; +import com.mdd.front.validate.login.RegisterValidate; +import com.mdd.front.validate.login.ForgetPwdValidate; import com.mdd.front.vo.LoginTokenVo; import javax.servlet.http.HttpSession; @@ -15,9 +16,9 @@ public interface ILoginService { * 账号注册 * * @author fzr - * @param userRegisterValidate 参数 + * @param registerValidate 参数 */ - void register(UserRegisterValidate userRegisterValidate); + void register(RegisterValidate registerValidate); /** * 账号登录 @@ -41,19 +42,21 @@ public interface ILoginService { * 微信登录 * * @author fzr - * @param params 参数 + * @param code 微信code + * @param client 来源客户端 * @return LoginTokenVo */ - LoginTokenVo mnpLogin(Map params); + LoginTokenVo mnpLogin(String code, Integer client); /** * 公众号登录 * * @author fzr - * @param params 参数 + * @param code 参数 + * @param client 参数 * @return LoginTokenVo */ - LoginTokenVo officeLogin(Map params); + LoginTokenVo officeLogin(String code, Integer client); /** * 公众号跳转url @@ -68,9 +71,9 @@ public interface ILoginService { * 忘记密码 * * @author fzr - * @param params 参数 + * @param forgetPwdValidate 参数 */ - void forgotPassword(Map params); + void forgotPassword(ForgetPwdValidate forgetPwdValidate); String getScanCode(HttpSession session); } 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 b6c1e55a..7217b369 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 @@ -15,7 +15,8 @@ import com.mdd.common.mapper.user.UserMapper; import com.mdd.common.util.*; import com.mdd.front.config.FrontConfig; import com.mdd.front.service.ILoginService; -import com.mdd.front.validate.UserRegisterValidate; +import com.mdd.front.validate.login.RegisterValidate; +import com.mdd.front.validate.login.ForgetPwdValidate; import com.mdd.front.vo.LoginTokenVo; import lombok.extern.slf4j.Slf4j; import me.chanjar.weixin.common.api.WxConsts; @@ -49,13 +50,13 @@ public class LoginServiceImpl implements ILoginService { * 注册账号 * * @author fzr - * @param userRegisterValidate 参数 + * @param registerValidate 参数 */ @Override - public void register(UserRegisterValidate userRegisterValidate) { + public void register(RegisterValidate registerValidate) { User model = userMapper.selectOne(new QueryWrapper() .select("id,sn,username") - .eq("username", userRegisterValidate.getUsername()) + .eq("username", registerValidate.getUsername()) .eq("is_delete", 0) .last("limit 1")); @@ -63,16 +64,16 @@ public class LoginServiceImpl implements ILoginService { Integer sn = this.randMakeSn(); String salt = ToolsUtils.randomString(5); - String pwd = ToolsUtils.makeMd5(userRegisterValidate.getPassword()+salt); + String pwd = ToolsUtils.makeMd5(registerValidate.getPassword()+salt); User user = new User(); user.setSn(sn); user.setNickname("用户"+sn); - user.setUsername(userRegisterValidate.getUsername()); + user.setUsername(registerValidate.getUsername()); user.setPassword(pwd); user.setSalt(salt); user.setAvatar("/api/static/default_avatar.png"); - user.setChannel(userRegisterValidate.getClient()); + user.setChannel(registerValidate.getClient()); user.setCreateTime(System.currentTimeMillis() / 1000); user.setUpdateTime(System.currentTimeMillis() / 1000); userMapper.insert(user); @@ -157,19 +158,13 @@ public class LoginServiceImpl implements ILoginService { * 微信小程序登录 * * @author fzr - * @param params 参数 + * @param code 微信code + * @param client 来源客户端 * @return LoginTokenVo */ @Override @Transactional - public LoginTokenVo mnpLogin(Map params) { - Assert.notNull(params.get("code"), "code参数缺失!"); - String code = params.get("code"); - String avatarUrl = params.getOrDefault("avatarUrl", "/api/static/default_avatar.png"); - String nickName = params.getOrDefault("nickName", "微信用户"); - String gender = params.getOrDefault("gender", "0"); - Integer client = Integer.parseInt(params.getOrDefault("client", "1")); - + public LoginTokenVo mnpLogin(String code, Integer client) { try { WxMaService wxMaService = WeChatUtils.mnp(); WxMaJscode2SessionResult sessionResult = wxMaService.getUserService().getSessionInfo(code); @@ -196,10 +191,10 @@ public class LoginServiceImpl implements ILoginService { Integer sn = this.randMakeSn(); User model = new User(); model.setSn(sn); - model.setAvatar(avatarUrl); - model.setNickname(nickName.equals("") ? "用户"+sn : nickName); + model.setAvatar("/api/static/default_avatar.png"); + model.setNickname("用户"+sn); model.setUsername("u"+sn); - model.setSex(Integer.parseInt(gender)); + model.setSex(0); model.setChannel(client); model.setLastLoginIp(IpUtils.getHostIp()); model.setLastLoginTime(System.currentTimeMillis() / 1000); @@ -227,13 +222,6 @@ public class LoginServiceImpl implements ILoginService { userAuthMapper.updateById(userAuth); } - // 更新用户信息 - if (StringUtils.isEmpty(user.getAvatar()) && StringUtils.isNotEmpty(avatarUrl)) { - user.setAvatar(avatarUrl); - user.setNickname(nickName); - user.setSex(Integer.parseInt(gender)); - } - // 更新登录信息 user.setLastLoginIp(IpUtils.getHostIp()); user.setLastLoginTime(System.currentTimeMillis() / 1000); @@ -254,10 +242,7 @@ public class LoginServiceImpl implements ILoginService { * @return LoginTokenVo */ @Override - public LoginTokenVo officeLogin(Map params) { - Assert.notNull(params.get("code"), "code参数缺失!"); - String code = params.get("code"); - + public LoginTokenVo officeLogin(String code, Integer client) { try { WxMpService wxMpService = WeChatUtils.official(); WxOAuth2AccessToken wxOAuth2AccessToken = wxMpService.getOAuth2Service().getAccessToken(code); @@ -286,8 +271,8 @@ public class LoginServiceImpl implements ILoginService { model.setSn(sn); model.setAvatar("/api/static/default_avatar.png"); model.setNickname("用户" + sn); - model.setUsername("u"+sn); - model.setChannel(ClientEnum.OA.getCode()); + model.setUsername("u" + sn); + model.setChannel(client); model.setSex(0); model.setLastLoginIp(IpUtils.getHostIp()); model.setLastLoginTime(System.currentTimeMillis() / 1000); @@ -345,16 +330,13 @@ public class LoginServiceImpl implements ILoginService { * 忘记密码 * * @author fzr - * @param params 参数 + * @param forgetPwdValidate 参数 */ @Override - public void forgotPassword(Map params) { - Assert.notNull(params.get("mobile"), "mobile参数缺失!"); - Assert.notNull(params.get("code"), "code参数缺失!"); - Assert.notNull(params.get("password"), "password参数缺失!"); - String mobile = params.get("mobile"); - String code = params.get("code"); - String password = params.get("password"); + public void forgotPassword(ForgetPwdValidate forgetPwdValidate) { + String mobile = forgetPwdValidate.getMobile(); + String code = forgetPwdValidate.getCode(); + String password = forgetPwdValidate.getPassword(); // 校验验证码 int typeCode = NoticeEnum.SMS_FORGOT_PASSWORD_CODE.getCode(); diff --git a/server/like-front/src/main/java/com/mdd/front/validate/login/ForgetPwdValidate.java b/server/like-front/src/main/java/com/mdd/front/validate/login/ForgetPwdValidate.java new file mode 100644 index 00000000..531850f4 --- /dev/null +++ b/server/like-front/src/main/java/com/mdd/front/validate/login/ForgetPwdValidate.java @@ -0,0 +1,25 @@ +package com.mdd.front.validate.login; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * 忘记密码参数 + */ +@Data +public class ForgetPwdValidate implements Serializable { + + private static final long serialVersionUID = 1L; + + @NotNull(message = "mobile参数缺失") + private String mobile; + + @NotNull(message = "code参数缺失") + private String code; + + @NotNull(message = "password参数缺失") + private String password; + +} \ No newline at end of file diff --git a/server/like-front/src/main/java/com/mdd/front/validate/login/OaLoginValidate.java b/server/like-front/src/main/java/com/mdd/front/validate/login/OaLoginValidate.java new file mode 100644 index 00000000..7738aaf9 --- /dev/null +++ b/server/like-front/src/main/java/com/mdd/front/validate/login/OaLoginValidate.java @@ -0,0 +1,23 @@ +package com.mdd.front.validate.login; + +import com.mdd.common.validator.annotation.IntegerContains; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * 公众号登录参数 + */ +@Data +public class OaLoginValidate implements Serializable { + + private static final long serialVersionUID = 1L; + + @NotNull(message = "code参数缺失") + private String code; + + @IntegerContains(values = {1, 2, 3, 4, 5, 6}, message = "client参数值不符合") + private Integer client; + +} diff --git a/server/like-front/src/main/java/com/mdd/front/validate/UserRegisterValidate.java b/server/like-front/src/main/java/com/mdd/front/validate/login/RegisterValidate.java similarity index 91% rename from server/like-front/src/main/java/com/mdd/front/validate/UserRegisterValidate.java rename to server/like-front/src/main/java/com/mdd/front/validate/login/RegisterValidate.java index f28a0122..ab2b822f 100644 --- a/server/like-front/src/main/java/com/mdd/front/validate/UserRegisterValidate.java +++ b/server/like-front/src/main/java/com/mdd/front/validate/login/RegisterValidate.java @@ -1,4 +1,4 @@ -package com.mdd.front.validate; +package com.mdd.front.validate.login; import com.mdd.common.validator.annotation.IntegerContains; import lombok.Data; @@ -13,7 +13,7 @@ import java.io.Serializable; * 注册参数类 */ @Data -public class UserRegisterValidate implements Serializable { +public class RegisterValidate implements Serializable { private static final long serialVersionUID = 1L;