From af5faf60dfc404cfd5d4cb541c38e907abbba174 Mon Sep 17 00:00:00 2001 From: WangHao <43278047@qq.com> Date: Sun, 18 Apr 2021 03:19:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=B9=A6=E7=AD=BE=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E6=98=9F=E6=A0=87=E5=8A=9F=E8=83=BD=20=EF=BC=8C?= =?UTF-8?q?=E6=96=B0=E5=A2=9Eredis=E5=B7=A5=E5=85=B7=E7=B1=BB=E8=A7=84?= =?UTF-8?q?=E5=AE=9A=E6=97=B6=E9=97=B4=E5=86=85=E8=AF=B7=E6=B1=82=E9=99=90?= =?UTF-8?q?=E5=88=B6=E6=AC=A1=E6=95=B0=EF=BC=8C=E6=96=B0=E5=A2=9E=E9=98=BF?= =?UTF-8?q?=E9=87=8C=E5=A4=A7=E9=B1=BC=E6=89=8B=E6=9C=BA=E5=8F=B7=E5=8F=91?= =?UTF-8?q?=E9=80=81=E9=AA=8C=E8=AF=81=E7=A0=81=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/RegisterPhoneController.java | 58 ++++++ .../controller/system/SysLoginController.java | 19 ++ .../yunbookmark/SqBookmarkController.java | 3 +- .../ruoyi/web/test/controller/SqMenuTest.java | 4 + .../ruoyi/web/test/controller/UIDTest.java | 31 +++ .../src/main/resources/application.yml | 2 + ruoyi-common/pom.xml | 11 + .../com/ruoyi/common/constant/Constants.java | 4 + .../common/core/domain/model/LoginBody.java | 39 +++- .../com/ruoyi/common/core/redis/RedisKey.java | 4 + .../com/ruoyi/common/utils/PhoneCode.java | 112 +++++++++++ .../com/ruoyi/common/utils/PhoneDeploy.java | 34 ++++ .../common/utils/bookmarkhtml/Const.java | 11 +- .../web/service/SysLoginService.java | 52 ++++- .../ruoyi/system/mapper/SysUserMapper.java | 46 ++++- .../ruoyi/system/service/ISysUserService.java | 61 ++++-- .../service/impl/SysUserServiceImpl.java | 78 +++++-- .../resources/mapper/system/SysUserMapper.xml | 55 +++-- ruoyi-ui/src/api/bookmark/bookmark.js | 11 + .../src/components/BookmarkList/index.vue | 33 ++- .../bookmark/bkuser/tool/userSettings.vue | 32 ++- .../src/views/bookmark/bookmark/index.vue | 8 +- ruoyi-ui/src/views/bookmark/common/inform.vue | 190 ++++++++++++++++++ ruoyi-ui/src/views/bookmark/common/tool.vue | 9 +- ruoyi-ui/src/views/bookmark/index/index.vue | 19 +- .../bookmark/mapper/SqBookmarkMapper.java | 9 + .../bookmark/service/ISqBookmarkService.java | 2 +- .../bookmark/service/ISqMenuService.java | 14 +- .../service/impl/SqBookmarkServiceImpl.java | 8 +- .../service/impl/SqMenuServiceImpl.java | 46 ++++- .../mapper/bookmark/SqBookmarkMapper.xml | 8 +- 31 files changed, 885 insertions(+), 128 deletions(-) create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/RegisterPhoneController.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/PhoneCode.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/PhoneDeploy.java create mode 100644 ruoyi-ui/src/views/bookmark/common/inform.vue diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/RegisterPhoneController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/RegisterPhoneController.java new file mode 100644 index 000000000..857b651af --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/RegisterPhoneController.java @@ -0,0 +1,58 @@ +package com.ruoyi.web.controller.common; + + +import com.ruoyi.bookmark.service.ISqMenuService; +import com.ruoyi.common.constant.Constants; +import com.ruoyi.common.constant.HttpStatus; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.redis.RedisCache; +import com.ruoyi.common.utils.PhoneCode; +import com.ruoyi.common.utils.bookmarkhtml.Const; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + + +/** + * 验证码操作处理 + * + * @author ruoyi + */ +@RestController +public class RegisterPhoneController extends BaseController +{ + + @Autowired + private ISqMenuService iSqMenuService; + + + /** + * 发送注册验证码 + */ + @GetMapping("/registerPhoneCode") + public AjaxResult registerPhoneCode(String phone) + { + AjaxResult ajaxResult = new AjaxResult(); + ajaxResult.put("code", HttpStatus.SUCCESS); + //防止重复点击 + boolean phoneCodelFlag = iSqMenuService.countRepetition(Const.PHONE_REGISTER,getAuthUser().getUserId(),3600L,10); //3600秒 最多请求10次验证码 + + if(!phoneCodelFlag){ + ajaxResult.put("msg","短时间内发送频繁,请稍后再操作!"); + return ajaxResult; + } + + //通过手机号发送短信 + Boolean flag = PhoneCode.getPhonemsg(phone); + + if (flag){ + ajaxResult.put("msg","短信发送成功,请在"+Constants.CAPTCHA_PHONE_EXPIRATION+"分钟内验证。"); + return ajaxResult; + }else { + ajaxResult.put("msg","短信发送失败"); + return ajaxResult; + } + } + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java index 5f8593f8a..dc6678faf 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java @@ -39,6 +39,25 @@ public class SysLoginController @Autowired private TokenService tokenService; + + /** + * 注册方法 + * + * @param loginBody 注册信息 + * @return 结果 + */ + @PostMapping("/registerUser") + public AjaxResult registerUser(@RequestBody LoginBody loginBody) + { + AjaxResult ajax = AjaxResult.success(); + // 生成令牌 + String token = loginService.registerUser(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(), + loginBody.getUuid(),loginBody.getEmail(),loginBody.getPhone()); + ajax.put(Constants.TOKEN, token); + return ajax; + } + + /** * 登录方法 * diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/yunbookmark/SqBookmarkController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/yunbookmark/SqBookmarkController.java index fda34be34..cb7985774 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/yunbookmark/SqBookmarkController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/yunbookmark/SqBookmarkController.java @@ -76,9 +76,8 @@ public class SqBookmarkController extends BaseController * 书签设置星标 取消星标 */ @GetMapping("/updateBookmarkStarById") - public AjaxResult updateBookmarkStarById(String bookmarkId,int bookmarkStr) { + public AjaxResult updateBookmarkStarById(Long bookmarkId,Integer bookmarkStr) { return toAjax(sqBookmarkService.updateBookmarkStarById(getAuthUser().getUserId(),bookmarkId,bookmarkStr)); - } /** diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/test/controller/SqMenuTest.java b/ruoyi-admin/src/main/java/com/ruoyi/web/test/controller/SqMenuTest.java index 977404002..f72ae1778 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/test/controller/SqMenuTest.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/test/controller/SqMenuTest.java @@ -7,6 +7,7 @@ import com.ruoyi.bookmark.mapper.SqMenuMapper; import com.ruoyi.bookmark.service.ISqBookmarkService; import com.ruoyi.bookmark.service.ISqMenuService; import com.ruoyi.bookmark.service.impl.SqMenuServiceImpl; +import com.ruoyi.common.utils.bookmarkhtml.Const; import org.apache.ibatis.session.ExecutorType; import org.apache.ibatis.session.SqlSession; import org.apache.velocity.runtime.directive.Foreach; @@ -162,4 +163,7 @@ public class SqMenuTest extends BaseSpringBootTest{ long end = System.currentTimeMillis(); System.out.println("---------------" + (start - end) + "---------------"); } + + + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/test/controller/UIDTest.java b/ruoyi-admin/src/main/java/com/ruoyi/web/test/controller/UIDTest.java index a8dee696a..fa485cd19 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/test/controller/UIDTest.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/test/controller/UIDTest.java @@ -1,9 +1,15 @@ package com.ruoyi.web.test.controller; +import cn.hutool.core.date.DateUtil; import com.github.wujun234.uid.UidGenerator; +import com.ruoyi.bookmark.service.ISqMenuService; +import com.ruoyi.common.core.redis.RedisUtil; +import com.ruoyi.common.utils.bookmarkhtml.Const; import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; import javax.annotation.Resource; +import java.util.Date; /** * @Auther: Wang @@ -17,6 +23,10 @@ public class UIDTest extends BaseSpringBootTest{ private UidGenerator defaultUidGenerator; @Resource private UidGenerator cachedUidGenerator; + @Autowired + private ISqMenuService iSqMenuService; + @Autowired + private RedisUtil redisUtil; @Test public void testSerialGenerate() { @@ -34,4 +44,25 @@ public class UIDTest extends BaseSpringBootTest{ // System.out.println(cachedUidGenerator.parseUID(uid)); } + @Test + public void dateTest(){ + //当前时间 + Date date3 = DateUtil.date(System.currentTimeMillis()); + System.out.println(date3); + } + + + //测试规定时间内 禁能访问次数 + @Test + public void rest2(){ + boolean phoneCodelFlag = iSqMenuService.countRepetition(Const.PHONE_REGISTER,1L,600L,3); + if (phoneCodelFlag){ + System.out.println("可以访问请求!"); + }else{ + System.out.println("访问请求失败了!"); + } + } + + + } diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 728c8eddc..ee7d4d4f5 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -15,6 +15,8 @@ ruoyi: # 验证码类型 math 数组计算 char 字符验证 captchaType: math + + # 开发环境配置 server: # 服务器的HTTP端口,默认为8080 diff --git a/ruoyi-common/pom.xml b/ruoyi-common/pom.xml index 38cbddc5b..912b55d1b 100644 --- a/ruoyi-common/pom.xml +++ b/ruoyi-common/pom.xml @@ -167,6 +167,17 @@ + + + com.aliyun + aliyun-java-sdk-core + 4.5.18 + + + com.aliyun + aliyun-java-sdk-dysmsapi + 2.1.0 + diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java b/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java index 8879fffed..543fe78e9 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java @@ -66,6 +66,10 @@ public class Constants * 验证码有效期(分钟) */ public static final Integer CAPTCHA_EXPIRATION = 2; + /** + * 手机号验证码有效期(分钟) + */ + public static final Integer CAPTCHA_PHONE_EXPIRATION = 2; /** * 令牌 diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java index a1f8b8337..f780a7a3d 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java @@ -2,7 +2,7 @@ package com.ruoyi.common.core.domain.model; /** * 用户登录对象 - * + * * @author ruoyi */ public class LoginBody @@ -17,6 +17,19 @@ public class LoginBody */ private String password; + /** + * 邮箱 + */ + private String email; + /** + * 手机号 + */ + private String phone; + /** + * 手机号验证码 + */ + private String phoneCode; + /** * 验证码 */ @@ -66,4 +79,28 @@ public class LoginBody { this.uuid = uuid; } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getPhoneCode() { + return phoneCode; + } + + public void setPhoneCode(String phoneCode) { + this.phoneCode = phoneCode; + } } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisKey.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisKey.java index 785f5ca09..204f28423 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisKey.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisKey.java @@ -8,4 +8,8 @@ package com.ruoyi.common.core.redis; public class RedisKey { public static final String USER_FOLLOW ="USER:FOLLOW:"; + + public static final String BOOKMARK ="bookMark:"; + + public static final String CONNECTOR =":"; } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/PhoneCode.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/PhoneCode.java new file mode 100644 index 000000000..36fbe0495 --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/PhoneCode.java @@ -0,0 +1,112 @@ +package com.ruoyi.common.utils; + +import cn.hutool.core.date.DateUtil; +import com.aliyuncs.DefaultAcsClient; +import com.aliyuncs.IAcsClient; +import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest; +import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse; +import com.aliyuncs.exceptions.ClientException; +import com.aliyuncs.http.MethodType; +import com.aliyuncs.profile.DefaultProfile; +import com.aliyuncs.profile.IClientProfile; +import com.ruoyi.common.constant.Constants; +import com.ruoyi.common.core.redis.RedisUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.concurrent.TimeUnit; + +/** + * 通过手机号发送短信 + * + * @Auther: Wang + */ +public class PhoneCode { + + private static final Logger logger = LoggerFactory.getLogger(PhoneCode.class); + + private static String code; + + + + /** + * 阿里云短信服务配置 + * + * @param phone + * @return + */ + public static Boolean getPhonemsg(String phone) { + + // 短信验证---阿里 + // 设置超时时间-可自行调整 + System.setProperty(PhoneDeploy.defaultConnectTimeout, PhoneDeploy.Timeout); + System.setProperty(PhoneDeploy.defaultReadTimeout, PhoneDeploy.Timeout); + // 初始化ascClient需要的几个参数 + final String product = PhoneDeploy.product;// 短信API产品名称(短信产品名固定,无需修改) + final String domain = PhoneDeploy.domain;// 短信API产品域名(接口地址固定,无需修改) + // 替换成你的AK + final String accessKeyId = PhoneDeploy.accessKeyId;// 你的accessKeyId + final String accessKeySecret = PhoneDeploy.accessKeySecret;// 你的accessKeySecret + // 初始化ascClient,暂时不支持多region + IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret); + try { + DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain); + } catch (ClientException e1) { + e1.printStackTrace(); + } + + //获取验证码 + code = vcode(); + + IAcsClient acsClient = new DefaultAcsClient(profile); + // 组装请求对象 + SendSmsRequest request = new SendSmsRequest(); + // 使用post提交 + request.setMethod(MethodType.POST); + // 必填:待发送手机号。支持以逗号分隔的形式进行批量调用,批量上限为1000个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式 + request.setPhoneNumbers(phone); + // 必填:短信签名-可在短信控制台中找到 + request.setSignName(PhoneDeploy.SignName); + // 必填:短信模板-可在短信控制台中找到 + request.setTemplateCode(PhoneDeploy.TemplateCode); + // 可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为 + // 友情提示:如果JSON中需要带换行符,请参照标准的JSON协议对换行符的要求,比如短信内容中包含\r\n的情况在JSON中需要表示成\\r\\n,否则会导致JSON在服务端解析失败 + request.setTemplateParam("{ \"code\":\"" + code + "\"}"); //此处的code和短信模板中的${code}对应 + // 可选-上行短信扩展码(无特殊需求用户请忽略此字段) + // request.setSmsUpExtendCode("90997"); + // 可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者 + request.setOutId("yourOutId"); + // 请求失败这里会抛ClientException异常 + SendSmsResponse sendSmsResponse; + try { + sendSmsResponse = acsClient.getAcsResponse(request); + if (sendSmsResponse.getCode() != null && sendSmsResponse.getCode().equals("OK")) { + // 请求成功 + RedisUtil redisUtil = new RedisUtil(); + redisUtil.setEx(phone,code,Constants.CAPTCHA_PHONE_EXPIRATION, TimeUnit.MINUTES); + return true; + } else { + // 验证码失败 如果验证码出错,会输出错误码告诉你具体原因 + logger.info("手机号:" + code + " 时间"+DateUtil.now()+" 发送失败!!错误日志:"+sendSmsResponse.getCode()); + return false; + } + } catch (ClientException e) { + e.printStackTrace(); + logger.info("手机号:" + code + " 时间"+DateUtil.now()+" 发送失败!!"); + return false; + } + } + + /** + * 生成4位随机数验证码 + * + * @return 验证码 + */ + public static String vcode(){ + StringBuilder vcode = new StringBuilder(); + for (int i = 0; i < 4; i++) { + vcode.append((int)(Math.random() * 9)); + } + return vcode.toString(); + } +} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/PhoneDeploy.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/PhoneDeploy.java new file mode 100644 index 000000000..54a8fc249 --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/PhoneDeploy.java @@ -0,0 +1,34 @@ +package com.ruoyi.common.utils; + + +/** + * 手机号获取验证码 + * + * @Auther: Wang + * + */ +public class PhoneDeploy { + + // 设置超时时间-可自行调整 + final static String defaultConnectTimeout = "sun.net.client.defaultConnectTimeout"; + + final static String defaultReadTimeout = "sun.net.client.defaultReadTimeout"; + + final static String Timeout = "20000"; + + // 初始化ascClient需要的几个参数 + final static String product = "Dysmsapi";// 短信API产品名称(短信产品名固定,无需修改) + final static String domain = "dysmsapi.aliyuncs.com";// 短信API产品域名(接口地址固定,无需修改) + + // 替换成你的AK (产品密) + final static String accessKeyId = "。。。。。。。。。。。";// 你的accessKeyId,填你自己的 上文配置所得 自行配置 + + final static String accessKeySecret = "。。。。。。。。。。。。。。";// 你的accessKeySecret,填你自己的 上文配置所得 自行配置 + + // 必填:短信签名-可在短信控制台中找到 + final static String SignName = "【藏趣云】";// 阿里云配置你自己的短信签名填入 + + // 必填:短信模板-可在短信控制台中找到 + final static String TemplateCode = "SMS_........."; // 阿里云配置你自己的短信模板填入 + +} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/bookmarkhtml/Const.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/bookmarkhtml/Const.java index 601030c8c..54642f41e 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/bookmarkhtml/Const.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/bookmarkhtml/Const.java @@ -3,9 +3,7 @@ package com.ruoyi.common.utils.bookmarkhtml; import org.springframework.stereotype.Component; /** - * @Auther: Wang - * @Date: 2020/08/22 23:03 - * 功能描述: + * 常量类 */ @Component public class Const { @@ -35,13 +33,10 @@ public class Const { //导入书签html功能 public static String IMPORTHTML= "IMPORT_HTML"; + //手机号发送验证码 + public static String PHONE_REGISTER= "phone_register"; -// @Autowired(required = true) -// public void setBasePath(@Value("${favorites.base.path}")String basePath) { -// Const.BASE_PATH = basePath; -// } - } diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java index 22a55269a..c1f795d7b 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java @@ -1,11 +1,16 @@ package com.ruoyi.framework.web.service; import javax.annotation.Resource; + +import cn.hutool.core.date.DateUtil; +import com.ruoyi.common.core.domain.entity.SysUser; +import com.ruoyi.system.service.ISysUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.BadCredentialsException; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.Authentication; +import org.springframework.security.core.userdetails.User; import org.springframework.stereotype.Component; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.core.domain.model.LoginUser; @@ -35,9 +40,14 @@ public class SysLoginService @Autowired private RedisCache redisCache; + @Autowired + private ISysUserService sysUserService; + + + /** * 登录验证 - * + * * @param username 用户名 * @param password 密码 * @param code 验证码 @@ -85,4 +95,44 @@ public class SysLoginService // 生成token return tokenService.createToken(loginUser); } + + /** + * 注册账号 + * + * @param username 用户名 + * @param password 密码 + * @param code 验证码 + * @param uuid 唯一标识 + * @param email 邮箱 + * @param phone 手机号 + * @return 结果 + */ + public String registerUser(String username, String password, String code, String uuid, String email, String phone) { + + int usernameCount = sysUserService.countUserByUserName(username); + if (usernameCount != 0) { + return username + "登陆账号已经存在,请更换!"; + } + int phoneCount = sysUserService.countUserByPhone(phone); + if (phoneCount != 0) { + return phone + "手机账号已经存在,请更换!"; + } + + + //验证传入的手机号和验证码是否匹配 + + + + + + //加密信息存入数据库 + SysUser user = new SysUser(); + user.setUserName(username); + user.setPassword(password); + user.setDeptId(100L); + user.setNickName(username); + user.setCreateTime(DateUtil.date(System.currentTimeMillis())); + user.setUpdateBy("admin"); + return sysUserService.insertUser(user)!=0?Constants.LOGIN_SUCCESS:Constants.LOGIN_FAIL; + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java index b9937f399..5e33be9e9 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java @@ -6,14 +6,14 @@ import com.ruoyi.common.core.domain.entity.SysUser; /** * 用户表 数据层 - * + * * @author ruoyi */ public interface SysUserMapper { /** * 根据条件分页查询用户列表 - * + * * @param sysUser 用户信息 * @return 用户信息集合信息 */ @@ -21,7 +21,7 @@ public interface SysUserMapper /** * 通过用户名查询用户 - * + * * @param userName 用户名 * @return 用户对象信息 */ @@ -29,7 +29,7 @@ public interface SysUserMapper /** * 通过用户ID查询用户 - * + * * @param userId 用户ID * @return 用户对象信息 */ @@ -37,7 +37,7 @@ public interface SysUserMapper /** * 新增用户信息 - * + * * @param user 用户信息 * @return 结果 */ @@ -45,7 +45,7 @@ public interface SysUserMapper /** * 修改用户信息 - * + * * @param user 用户信息 * @return 结果 */ @@ -53,7 +53,7 @@ public interface SysUserMapper /** * 修改用户头像 - * + * * @param userName 用户名 * @param avatar 头像地址 * @return 结果 @@ -62,7 +62,7 @@ public interface SysUserMapper /** * 重置用户密码 - * + * * @param userName 用户名 * @param password 密码 * @return 结果 @@ -71,7 +71,7 @@ public interface SysUserMapper /** * 通过用户ID删除用户 - * + * * @param userId 用户ID * @return 结果 */ @@ -79,7 +79,7 @@ public interface SysUserMapper /** * 批量删除用户信息 - * + * * @param userIds 需要删除的用户ID * @return 结果 */ @@ -87,7 +87,7 @@ public interface SysUserMapper /** * 校验用户名称是否唯一 - * + * * @param userName 用户名称 * @return 结果 */ @@ -108,4 +108,28 @@ public interface SysUserMapper * @return 结果 */ public SysUser checkEmailUnique(String email); + + /** + * 查询邮箱是否唯一 + * + * @param email 邮箱 + * @return 用户对象信息 + */ + public int selectUserByEmail(String email); + /** + * 查询登陆名称是否唯一 + * + * @param userName 用户名 + * @return 用户对象信息 + */ + public int countUserByUserName(String userName); + + + /** + * 查询手机号是否唯一 + * + * @param phone 手机号 + * @return 用户对象信息 + */ + public int countUserByPhone(String phone); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java index 00afa0011..24ab170de 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java @@ -5,14 +5,14 @@ import com.ruoyi.common.core.domain.entity.SysUser; /** * 用户 业务层 - * + * * @author ruoyi */ public interface ISysUserService { /** * 根据条件分页查询用户列表 - * + * * @param user 用户信息 * @return 用户信息集合信息 */ @@ -20,15 +20,36 @@ public interface ISysUserService /** * 通过用户名查询用户 - * + * * @param userName 用户名 * @return 用户对象信息 */ public SysUser selectUserByUserName(String userName); + /** + * 查询邮箱是否唯一 + * + * @param email 邮箱 + * @return 用户对象信息 + */ + public int selectUserByEmail(String email); + /** + * 查询登陆名称是否唯一 + * + * @param userName 用户名 + * @return 用户对象信息 + */ + public int countUserByUserName(String userName); + /** + * 查询手机号是否唯一 + * + * @param phone 手机号 + * @return 用户对象信息 + */ + public int countUserByPhone(String phone); /** * 通过用户ID查询用户 - * + * * @param userId 用户ID * @return 用户对象信息 */ @@ -36,7 +57,7 @@ public interface ISysUserService /** * 根据用户ID查询用户所属角色组 - * + * * @param userName 用户名 * @return 结果 */ @@ -44,7 +65,7 @@ public interface ISysUserService /** * 根据用户ID查询用户所属岗位组 - * + * * @param userName 用户名 * @return 结果 */ @@ -52,7 +73,7 @@ public interface ISysUserService /** * 校验用户名称是否唯一 - * + * * @param userName 用户名称 * @return 结果 */ @@ -76,14 +97,14 @@ public interface ISysUserService /** * 校验用户是否允许操作 - * + * * @param user 用户信息 */ public void checkUserAllowed(SysUser user); /** * 新增用户信息 - * + * * @param user 用户信息 * @return 结果 */ @@ -91,7 +112,7 @@ public interface ISysUserService /** * 修改用户信息 - * + * * @param user 用户信息 * @return 结果 */ @@ -99,7 +120,7 @@ public interface ISysUserService /** * 修改用户状态 - * + * * @param user 用户信息 * @return 结果 */ @@ -107,7 +128,7 @@ public interface ISysUserService /** * 修改用户基本信息 - * + * * @param user 用户信息 * @return 结果 */ @@ -115,7 +136,7 @@ public interface ISysUserService /** * 修改用户头像 - * + * * @param userName 用户名 * @param avatar 头像地址 * @return 结果 @@ -124,7 +145,7 @@ public interface ISysUserService /** * 重置用户密码 - * + * * @param user 用户信息 * @return 结果 */ @@ -132,7 +153,7 @@ public interface ISysUserService /** * 重置用户密码 - * + * * @param userName 用户名 * @param password 密码 * @return 结果 @@ -141,7 +162,7 @@ public interface ISysUserService /** * 通过用户ID删除用户 - * + * * @param userId 用户ID * @return 结果 */ @@ -149,7 +170,7 @@ public interface ISysUserService /** * 批量删除用户信息 - * + * * @param userIds 需要删除的用户ID * @return 结果 */ @@ -157,11 +178,15 @@ public interface ISysUserService /** * 导入用户数据 - * + * * @param userList 用户数据列表 * @param isUpdateSupport 是否更新支持,如果已存在,则进行更新数据 * @param operName 操作用户 * @return 结果 */ public String importUser(List userList, Boolean isUpdateSupport, String operName); + + + + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java index 9c77dd8d1..1f5210f30 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java @@ -27,7 +27,7 @@ import com.ruoyi.system.service.ISysUserService; /** * 用户 业务层处理 - * + * * @author ruoyi */ @Service @@ -55,7 +55,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 根据条件分页查询用户列表 - * + * * @param user 用户信息 * @return 用户信息集合信息 */ @@ -68,7 +68,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 通过用户名查询用户 - * + * * @param userName 用户名 * @return 用户对象信息 */ @@ -78,9 +78,47 @@ public class SysUserServiceImpl implements ISysUserService return userMapper.selectUserByUserName(userName); } + /** + * 查询邮箱是否唯一 + * + * @param email 邮箱 + * @return 用户对象信息 + */ + @Override + public int selectUserByEmail(String email) { + return userMapper.selectUserByEmail(email); + } + /** + * 查询登陆名称是否唯一 + * + * @param userName 用户名 + * @return 用户对象信息 + */ + @Override + public int countUserByUserName(String userName) { + return userMapper.countUserByUserName(userName); + } + /** + * 查询手机号是否唯一 + * + * @param phone 手机号 + * @return 用户对象信息 + */ + @Override + public int countUserByPhone(String phone) { + return userMapper.countUserByPhone(phone); + } + + + + + + + + /** * 通过用户ID查询用户 - * + * * @param userId 用户ID * @return 用户对象信息 */ @@ -92,7 +130,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 查询用户所属角色组 - * + * * @param userName 用户名 * @return 结果 */ @@ -114,7 +152,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 查询用户所属岗位组 - * + * * @param userName 用户名 * @return 结果 */ @@ -136,7 +174,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 校验用户名称是否唯一 - * + * * @param userName 用户名称 * @return 结果 */ @@ -189,7 +227,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 校验用户是否允许操作 - * + * * @param user 用户信息 */ @Override @@ -203,7 +241,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 新增保存用户信息 - * + * * @param user 用户信息 * @return 结果 */ @@ -222,7 +260,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 修改保存用户信息 - * + * * @param user 用户信息 * @return 结果 */ @@ -244,7 +282,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 修改用户状态 - * + * * @param user 用户信息 * @return 结果 */ @@ -256,7 +294,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 修改用户基本信息 - * + * * @param user 用户信息 * @return 结果 */ @@ -268,7 +306,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 修改用户头像 - * + * * @param userName 用户名 * @param avatar 头像地址 * @return 结果 @@ -281,7 +319,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 重置用户密码 - * + * * @param user 用户信息 * @return 结果 */ @@ -293,7 +331,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 重置用户密码 - * + * * @param userName 用户名 * @param password 密码 * @return 结果 @@ -306,7 +344,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 新增用户角色信息 - * + * * @param user 用户对象 */ public void insertUserRole(SysUser user) @@ -332,7 +370,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 新增用户岗位信息 - * + * * @param user 用户对象 */ public void insertUserPost(SysUser user) @@ -358,7 +396,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 通过用户ID删除用户 - * + * * @param userId 用户ID * @return 结果 */ @@ -374,7 +412,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 批量删除用户信息 - * + * * @param userIds 需要删除的用户ID * @return 结果 */ @@ -390,7 +428,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 导入用户数据 - * + * * @param userList 用户数据列表 * @param isUpdateSupport 是否更新支持,如果已存在,则进行更新数据 * @param operName 操作用户 diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml index a6aeb6280..838edaa61 100644 --- a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -26,7 +26,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + @@ -35,7 +35,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + @@ -44,9 +44,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + - select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, + select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_id, d.parent_id, d.dept_name, d.order_num, d.leader, d.status as dept_status, r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status from sys_user u @@ -54,7 +54,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" left join sys_user_role ur on u.user_id = ur.user_id left join sys_role r on r.role_id = ur.role_id - + - + - + + + + + + + + + + - + - + - + - + insert into sys_user( user_id, @@ -134,7 +149,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" sysdate() ) - + update sys_user @@ -155,28 +170,28 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where user_id = #{userId} - + update sys_user set status = #{status} where user_id = #{userId} - + update sys_user set avatar = #{avatar} where user_name = #{userName} - + update sys_user set password = #{password} where user_name = #{userName} - + delete from sys_user where user_id = #{userId} - + update sys_user set del_flag = '2' where user_id in #{userId} - + - - \ No newline at end of file + + diff --git a/ruoyi-ui/src/api/bookmark/bookmark.js b/ruoyi-ui/src/api/bookmark/bookmark.js index 6a3ddbcfc..0f81974d3 100644 --- a/ruoyi-ui/src/api/bookmark/bookmark.js +++ b/ruoyi-ui/src/api/bookmark/bookmark.js @@ -1,6 +1,17 @@ import request from '@/utils/request' + +//书签设置星标 取消星标 +export function updateBookmarkStarById(query) { + return request({ + url: '/bookmark/bookmark/updateBookmarkStarById', + method: 'get', + params: query + }) +} + + export function selectBymenuIdUserID(query) { return request({ url: '/bookmark/bookmark/selectBymenuIdUserID', diff --git a/ruoyi-ui/src/components/BookmarkList/index.vue b/ruoyi-ui/src/components/BookmarkList/index.vue index b55384d70..4182cc4f6 100644 --- a/ruoyi-ui/src/components/BookmarkList/index.vue +++ b/ruoyi-ui/src/components/BookmarkList/index.vue @@ -30,22 +30,22 @@
{{bm.urls}} · 
{{bm.createTime|changeTime}}
+
{{bm.bookmarkStar}}
- - {{t.name}} - + + + +
- + -
@@ -54,9 +54,10 @@ diff --git a/ruoyi-ui/src/views/bookmark/common/tool.vue b/ruoyi-ui/src/views/bookmark/common/tool.vue index 81fa8ef87..a1c31dcfc 100644 --- a/ruoyi-ui/src/views/bookmark/common/tool.vue +++ b/ruoyi-ui/src/views/bookmark/common/tool.vue @@ -80,18 +80,21 @@