| | |
| | | package com.ruoyi.iot.service.impl; |
| | | |
| | | import com.ruoyi.common.annotation.DataScope; |
| | | import com.ruoyi.common.constant.Constants; |
| | | import com.ruoyi.common.constant.UserConstants; |
| | | import com.ruoyi.common.core.domain.entity.SysUser; |
| | |
| | | import java.util.Random; |
| | | |
| | | /** |
| | | * |
| | | * @author kerwincui |
| | | * @date 2021-12-16 |
| | | */ |
| | | @Service |
| | | public class ToolServiceImpl implements IToolService |
| | | { |
| | | public class ToolServiceImpl implements IToolService { |
| | | private static final Logger log = LoggerFactory.getLogger(ToolServiceImpl.class); |
| | | |
| | | @Autowired |
| | |
| | | String val = ""; |
| | | Random random = new Random(); |
| | | //参数length,表示生成几位随机数 |
| | | for(int i = 0; i < length; i++) { |
| | | for (int i = 0; i < length; i++) { |
| | | String charOrNum = random.nextInt(2) % 2 == 0 ? "char" : "num"; |
| | | //输出字母还是数字 |
| | | if( "char".equalsIgnoreCase(charOrNum) ) { |
| | | if ("char".equalsIgnoreCase(charOrNum)) { |
| | | //输出是大写字母还是小写字母 |
| | | // int temp = random.nextInt(2) % 2 == 0 ? 65 : 97; |
| | | val += (char)(random.nextInt(26) + 65); |
| | | } else if( "num".equalsIgnoreCase(charOrNum) ) { |
| | | val += (char) (random.nextInt(26) + 65); |
| | | } else if ("num".equalsIgnoreCase(charOrNum)) { |
| | | val += String.valueOf(random.nextInt(10)); |
| | | } |
| | | } |
| | |
| | | */ |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public String register(RegisterUserInput registerBody) |
| | | { |
| | | public String register(RegisterUserInput registerBody) { |
| | | String msg = ""; |
| | | String username = registerBody.getUsername(); |
| | | String password = registerBody.getPassword(); |
| | | String phonenumber=registerBody.getPhonenumber(); |
| | | String phonenumber = registerBody.getPhonenumber(); |
| | | |
| | | boolean captchaOnOff = configService.selectCaptchaOnOff(); |
| | | // 验证码开关 |
| | | if (captchaOnOff) |
| | | { |
| | | if (captchaOnOff) { |
| | | validateCaptcha(username, registerBody.getCode(), registerBody.getUuid()); |
| | | } |
| | | |
| | | if (StringUtils.isEmpty(username)) |
| | | { |
| | | if (StringUtils.isEmpty(username)) { |
| | | msg = "用户名不能为空"; |
| | | } |
| | | else if (StringUtils.isEmpty(password)) |
| | | { |
| | | } else if (StringUtils.isEmpty(password)) { |
| | | msg = "用户密码不能为空"; |
| | | } |
| | | else if (username.length() < UserConstants.USERNAME_MIN_LENGTH |
| | | || username.length() > UserConstants.USERNAME_MAX_LENGTH) |
| | | { |
| | | } else if (username.length() < UserConstants.USERNAME_MIN_LENGTH |
| | | || username.length() > UserConstants.USERNAME_MAX_LENGTH) { |
| | | msg = "账户长度必须在2到20个字符之间"; |
| | | } |
| | | else if (password.length() < UserConstants.PASSWORD_MIN_LENGTH |
| | | || password.length() > UserConstants.PASSWORD_MAX_LENGTH) |
| | | { |
| | | } else if (password.length() < UserConstants.PASSWORD_MIN_LENGTH |
| | | || password.length() > UserConstants.PASSWORD_MAX_LENGTH) { |
| | | msg = "密码长度必须在5到20个字符之间"; |
| | | } |
| | | else if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(username))) |
| | | { |
| | | } else if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(username))) { |
| | | msg = "保存用户'" + username + "'失败,注册账号已存在"; |
| | | }else if (UserConstants.NOT_UNIQUE.equals(checkPhoneUnique(phonenumber))) |
| | | { |
| | | } else if (UserConstants.NOT_UNIQUE.equals(checkPhoneUnique(phonenumber))) { |
| | | msg = "保存用户'" + username + "'失败,注册手机号码已存在"; |
| | | } |
| | | else |
| | | { |
| | | } else { |
| | | SysUser sysUser = new SysUser(); |
| | | sysUser.setUserName(username); |
| | | sysUser.setNickName(username); |
| | |
| | | sysUser.setPassword(SecurityUtils.encryptPassword(registerBody.getPassword())); |
| | | boolean regFlag = userService.registerUser(sysUser); |
| | | //分配普通用户角色(1=超级管理员,2=设备租户,3=普通用户,4=游客) |
| | | Long[] roleIds={3L}; |
| | | userService.insertUserAuth(sysUser.getUserId(),roleIds); |
| | | if (!regFlag) |
| | | { |
| | | Long[] roleIds = {3L}; |
| | | userService.insertUserAuth(sysUser.getUserId(), roleIds); |
| | | if (!regFlag) { |
| | | msg = "注册失败,请联系系统管理人员"; |
| | | } |
| | | else |
| | | { |
| | | } else { |
| | | AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.REGISTER, |
| | | MessageUtils.message("user.register.success"))); |
| | | } |
| | |
| | | * @return 用户信息集合信息 |
| | | */ |
| | | @Override |
| | | public List<SysUser> selectUserList(SysUser user) |
| | | { |
| | | public List<SysUser> selectUserList(SysUser user) { |
| | | return userMapper.selectUserList(user); |
| | | } |
| | | |
| | |
| | | * @param phonenumber 手机号码 |
| | | * @return |
| | | */ |
| | | public String checkPhoneUnique(String phonenumber) |
| | | { |
| | | public String checkPhoneUnique(String phonenumber) { |
| | | SysUser info = userMapper.checkPhoneUnique(phonenumber); |
| | | if (StringUtils.isNotNull(info)) |
| | | { |
| | | if (StringUtils.isNotNull(info)) { |
| | | return UserConstants.NOT_UNIQUE; |
| | | } |
| | | return UserConstants.UNIQUE; |
| | |
| | | * 校验验证码 |
| | | * |
| | | * @param username 用户名 |
| | | * @param code 验证码 |
| | | * @param uuid 唯一标识 |
| | | * @param code 验证码 |
| | | * @param uuid 唯一标识 |
| | | * @return 结果 |
| | | */ |
| | | public void validateCaptcha(String username, String code, String uuid) |
| | | { |
| | | public void validateCaptcha(String username, String code, String uuid) { |
| | | String verifyKey = Constants.CAPTCHA_CODE_KEY + uuid; |
| | | String captcha = redisCache.getCacheObject(verifyKey); |
| | | redisCache.deleteObject(verifyKey); |
| | | if (captcha == null) |
| | | { |
| | | if (captcha == null) { |
| | | throw new CaptchaExpireException(); |
| | | } |
| | | if (!code.equalsIgnoreCase(captcha)) |
| | | { |
| | | if (!code.equalsIgnoreCase(captcha)) { |
| | | throw new CaptchaException(); |
| | | } |
| | | } |
| | |
| | | @Override |
| | | public ResponseEntity simpleMqttAuthentication(MqttAuthenticationModel mqttModel, ProductAuthenticateModel productModel) { |
| | | // 1=简单认证,2=加密认证,3=简单+加密认证 |
| | | if(productModel.getVertificateMethod()!=1 && productModel.getVertificateMethod()!=3){ |
| | | if (productModel.getVertificateMethod() != 1 && productModel.getVertificateMethod() != 3) { |
| | | return returnUnauthorized(mqttModel, "设备简单认证,设备对应产品不支持简单认证"); |
| | | } |
| | | String[] passwordArray = mqttModel.getPassword().split("&"); |
| | |
| | | @Override |
| | | public ResponseEntity encryptAuthentication(MqttAuthenticationModel mqttModel, ProductAuthenticateModel productModel) throws Exception { |
| | | // 1=简单认证,2=加密认证,3=简单+加密认证 |
| | | if(productModel.getVertificateMethod()!=2 && productModel.getVertificateMethod()!=3){ |
| | | if (productModel.getVertificateMethod() != 2 && productModel.getVertificateMethod() != 3) { |
| | | return returnUnauthorized(mqttModel, "设备加密认证,设备对应产品不支持加密认证"); |
| | | } |
| | | String decryptPassword = AESUtils.decrypt(mqttModel.getPassword(), productModel.getMqttSecret()); |
| | |
| | | } |
| | | if (authorize.getSerialNumber() != null && !authorize.getSerialNumber().equals("")) { |
| | | // 授权码已关联设备 |
| | | if (!authorize.getSerialNumber().equals( productModel.getSerialNumber())) { |
| | | if (!authorize.getSerialNumber().equals(productModel.getSerialNumber())) { |
| | | message = "设备认证,设备授权码已经分配给其他设备"; |
| | | return message; |
| | | } |