Commit 8f386c27 authored by ma's avatar ma

完善邀请注册接口

parent 016d5233
package iot.sixiang.license.controller; package iot.sixiang.license.controller;
import cn.hutool.core.lang.Validator;
import com.acc.secret.util.RSAUtil; import com.acc.secret.util.RSAUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
...@@ -12,6 +13,8 @@ import io.swagger.annotations.ApiImplicitParams; ...@@ -12,6 +13,8 @@ import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import iot.sixiang.license.entity.Permission; import iot.sixiang.license.entity.Permission;
import iot.sixiang.license.entity.User; import iot.sixiang.license.entity.User;
import iot.sixiang.license.entity.UserPermission;
import iot.sixiang.license.handler.IotLicenseException;
import iot.sixiang.license.jwt.UserUtils; import iot.sixiang.license.jwt.UserUtils;
import iot.sixiang.license.log.BusinessType; import iot.sixiang.license.log.BusinessType;
import iot.sixiang.license.log.MyLog; import iot.sixiang.license.log.MyLog;
...@@ -20,6 +23,7 @@ import iot.sixiang.license.model.PageInfoModel; ...@@ -20,6 +23,7 @@ import iot.sixiang.license.model.PageInfoModel;
import iot.sixiang.license.model.PageResult; import iot.sixiang.license.model.PageResult;
import iot.sixiang.license.model.ResResult; import iot.sixiang.license.model.ResResult;
import iot.sixiang.license.model.dto.AssignUserPermissionDTO; import iot.sixiang.license.model.dto.AssignUserPermissionDTO;
import iot.sixiang.license.model.dto.UpdateNotifyDTO;
import iot.sixiang.license.model.vo.UserDeleteVO; import iot.sixiang.license.model.vo.UserDeleteVO;
import iot.sixiang.license.model.vo.UserUpdatePwdVo; import iot.sixiang.license.model.vo.UserUpdatePwdVo;
import iot.sixiang.license.model.vo.UserVo; import iot.sixiang.license.model.vo.UserVo;
...@@ -27,6 +31,7 @@ import iot.sixiang.license.service.PermissionService; ...@@ -27,6 +31,7 @@ import iot.sixiang.license.service.PermissionService;
import iot.sixiang.license.service.UserPermissionService; import iot.sixiang.license.service.UserPermissionService;
import iot.sixiang.license.service.UserService; import iot.sixiang.license.service.UserService;
import iot.sixiang.license.util.CommonUtil; import iot.sixiang.license.util.CommonUtil;
import iot.sixiang.license.util.EmailUtils;
import iot.sixiang.license.xss.XssUtil; import iot.sixiang.license.xss.XssUtil;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -51,6 +56,8 @@ import java.util.List; ...@@ -51,6 +56,8 @@ import java.util.List;
@Api(value = "用户模块", tags = {"用户模块"}) @Api(value = "用户模块", tags = {"用户模块"})
public class UserController { public class UserController {
@Resource
EmailUtils emailUtils;
@Autowired @Autowired
private UserService userService; private UserService userService;
@Resource @Resource
...@@ -74,24 +81,42 @@ public class UserController { ...@@ -74,24 +81,42 @@ public class UserController {
} }
/** /**
* 添加user * 邀请用户注册
* *
* @param jsonObject * @param jsonObject
* @return * @return
*/ */
@ApiOperation(value = "用户添加接口", notes = "用于添加用户") @ApiOperation(value = "邀请注册接口", notes = "用于邀请用户注册")
@PostMapping("add") @PostMapping("add")
@MyLog(title = "添加用户", optParam = "#{jsonObject}", businessType = BusinessType.INSERT) @MyLog(title = "邀请用户注册", optParam = "#{jsonObject}", businessType = BusinessType.INSERT)
@ApiOperationSupport(params = @DynamicParameters(name = "jsonObject", properties = { @ApiOperationSupport(params = @DynamicParameters(name = "jsonObject", properties = {
@DynamicParameter(name = "userName", value = "账户名", required = true, dataTypeClass = String.class), @DynamicParameter(name = "userName", value = "账户名", required = true, dataTypeClass = String.class),
@DynamicParameter(name = "company", value = "公司名", required = true, dataTypeClass = String.class) @DynamicParameter(name = "company", value = "公司名", required = true, dataTypeClass = String.class)
})) }))
public BaseResult addUser(@RequestBody JSONObject jsonObject) { public BaseResult addUser(@RequestBody JSONObject jsonObject) {
String userId = UserUtils.getLoginUserId();
if (StringUtils.isEmpty(userId)) {
return BaseResult.failed().setMsgValue("请重新登录");
}
String userName = (String) jsonObject.get("userName"); String userName = (String) jsonObject.get("userName");
String company = (String) jsonObject.get("company"); String company = (String) jsonObject.get("company");
if (!Validator.isEmail(userName)) {
throw new IotLicenseException(403, "请输入正确的邮箱账号");
}
String password = CommonUtil.genRandomNum(18); String password = CommonUtil.genRandomNum(18);
boolean res = userService.addUser(userName, company, password); User user = userService.getUserById(Integer.parseInt(userId));
List<UserPermission> userPermissions = userPermissionService.getPermissionById(user.getUserId());
if (!CommonUtil.checkPermission(userPermissions, 1)) {
throw new IotLicenseException(403, "该用户无邀请用户注册权限!");
}
int level = user.getLevel();
if (level >= 3 || level <= 0) {
return BaseResult.failed().setMsgValue("该等级账号不支持邀请注册用户");
}
boolean res = userService.addUser(userName, company, password, user.getUserId(), ++level);
if (res) { if (res) {
String content = "注册成功!感谢您使用实名制身份验证云应用平台,请点击以下链接登录:http://web.license.srthinker.com/user#/login";
emailUtils.sendSimpleMail(userName, "感谢您使用实名制身份验证云应用平台", content);
return BaseResult.success(); return BaseResult.success();
} else { } else {
return BaseResult.failed(); return BaseResult.failed();
...@@ -109,6 +134,14 @@ public class UserController { ...@@ -109,6 +134,14 @@ public class UserController {
@MyLog(title = "删除用户", optParam = "#{userId}", businessType = BusinessType.DELETE) @MyLog(title = "删除用户", optParam = "#{userId}", businessType = BusinessType.DELETE)
public BaseResult deleteUser(@RequestBody UserDeleteVO userDeleteVO) { public BaseResult deleteUser(@RequestBody UserDeleteVO userDeleteVO) {
String userId = XssUtil.checkXSS(userDeleteVO.getUserId()); String userId = XssUtil.checkXSS(userDeleteVO.getUserId());
String curUserId = UserUtils.getLoginUserId();
if (StringUtils.isEmpty(curUserId)) {
return BaseResult.failed().setMsgValue("请重新登录");
}
List<UserPermission> userPermissions = userPermissionService.getPermissionById(Integer.parseInt(curUserId));
if (!CommonUtil.checkPermission(userPermissions, 2)) {
throw new IotLicenseException(403, "该用户无删除用户权限!");
}
boolean res = userService.deleteUser(Integer.parseInt(userId)); boolean res = userService.deleteUser(Integer.parseInt(userId));
userPermissionService.deleteUserPermission(Integer.parseInt(userId)); userPermissionService.deleteUserPermission(Integer.parseInt(userId));
UserUtils.removeToken(userId); UserUtils.removeToken(userId);
...@@ -268,7 +301,7 @@ public class UserController { ...@@ -268,7 +301,7 @@ public class UserController {
} }
/** /**
* 为用户批量分配权限 * todo 待完善 为用户批量分配权限
* *
* @param assignUserPermissionDTO * @param assignUserPermissionDTO
* @return * @return
...@@ -285,5 +318,10 @@ public class UserController { ...@@ -285,5 +318,10 @@ public class UserController {
} }
} }
@ApiOperation(value = "修改通知人接口", notes = "修改通知人邮箱")
@PostMapping("update_notify")
public BaseResult updateNotify(@RequestBody UpdateNotifyDTO updateNotifyDTO) {
return userService.updateNotify(updateNotifyDTO);
}
} }
...@@ -19,7 +19,7 @@ public interface UserMapper extends BaseMapper<User> { ...@@ -19,7 +19,7 @@ public interface UserMapper extends BaseMapper<User> {
boolean deleteUser(int user); boolean deleteUser(int user);
boolean addUser(String userName, String company, String password, String notify); boolean addUser(String userName, String company, String password, String notify, int parent, int level);
boolean updateUser(int userId, String password); boolean updateUser(int userId, String password);
......
package iot.sixiang.license.service; package iot.sixiang.license.service;
import iot.sixiang.license.entity.User; import iot.sixiang.license.entity.User;
import iot.sixiang.license.model.BaseResult;
import iot.sixiang.license.model.PageInfoModel; import iot.sixiang.license.model.PageInfoModel;
import iot.sixiang.license.model.dto.UpdateNotifyDTO;
import iot.sixiang.license.model.vo.UserVo; import iot.sixiang.license.model.vo.UserVo;
/** /**
...@@ -16,7 +18,7 @@ public interface UserService { ...@@ -16,7 +18,7 @@ public interface UserService {
boolean deleteUser(int userIdVo); boolean deleteUser(int userIdVo);
boolean addUser(String userName, String company, String password); boolean addUser(String userName, String company, String password, int parent, int level);
boolean updateUser(User user); boolean updateUser(User user);
...@@ -25,4 +27,6 @@ public interface UserService { ...@@ -25,4 +27,6 @@ public interface UserService {
User getUserById(int userId); User getUserById(int userId);
User getUserByName(String root); User getUserByName(String root);
BaseResult updateNotify(UpdateNotifyDTO updateNotifyDTO);
} }
...@@ -7,8 +7,11 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; ...@@ -7,8 +7,11 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import iot.sixiang.license.consts.ResultCode; import iot.sixiang.license.consts.ResultCode;
import iot.sixiang.license.entity.User; import iot.sixiang.license.entity.User;
import iot.sixiang.license.handler.IotLicenseException; import iot.sixiang.license.handler.IotLicenseException;
import iot.sixiang.license.jwt.UserUtils;
import iot.sixiang.license.mapper.UserMapper; import iot.sixiang.license.mapper.UserMapper;
import iot.sixiang.license.model.BaseResult;
import iot.sixiang.license.model.PageInfoModel; import iot.sixiang.license.model.PageInfoModel;
import iot.sixiang.license.model.dto.UpdateNotifyDTO;
import iot.sixiang.license.model.vo.UserVo; import iot.sixiang.license.model.vo.UserVo;
import iot.sixiang.license.service.UserService; import iot.sixiang.license.service.UserService;
import iot.sixiang.license.util.CommonUtil; import iot.sixiang.license.util.CommonUtil;
...@@ -18,6 +21,7 @@ import org.springframework.stereotype.Service; ...@@ -18,6 +21,7 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Comparator; import java.util.Comparator;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -74,7 +78,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us ...@@ -74,7 +78,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
} }
@Override @Override
public boolean addUser(String userName, String company, String password) { public boolean addUser(String userName, String company, String password, int parent, int level) {
String notify; String notify;
if (Validator.isEmail(userName)) { if (Validator.isEmail(userName)) {
notify = userName; notify = userName;
...@@ -88,11 +92,36 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us ...@@ -88,11 +92,36 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
if (res != null) { if (res != null) {
throw new IotLicenseException(403, "用户名已存在"); throw new IotLicenseException(403, "用户名已存在");
} }
return userMapper.addUser(userName, company, password, notify); return userMapper.addUser(userName, company, password, notify, parent, level);
} }
@Override @Override
public boolean updateUser(User user) { public boolean updateUser(User user) {
return userMapper.updateUser(user.getUserId(), user.getPassword()); return userMapper.updateUser(user.getUserId(), user.getPassword());
} }
@Override
public BaseResult updateNotify(UpdateNotifyDTO updateNotifyDTO) {
String notify = updateNotifyDTO.getNotify();
String loginUserId = UserUtils.getLoginUserId();
if (StringUtils.isEmpty(notify) || !Validator.isEmail(notify)) {
throw new IotLicenseException(ResultCode.VALIDATE_FAILED.getCode(), ResultCode.VALIDATE_FAILED.getMsg());
}
if (StringUtils.isEmpty(loginUserId)) {
throw new IotLicenseException(ResultCode.UNAUTHORIZED.getCode(), ResultCode.UNAUTHORIZED.getMsg());
}
int userId = Integer.parseInt(loginUserId);
User user = new User();
user.setNotify(notify);
user.setUpdateTime(new Date());
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(User::getUserId, userId);
int res = userMapper.update(user, wrapper);
if (res > 0) {
return BaseResult.success();
} else {
return BaseResult.failed();
}
}
} }
package iot.sixiang.license.util; package iot.sixiang.license.util;
import iot.sixiang.license.consts.Constant; import iot.sixiang.license.consts.Constant;
import iot.sixiang.license.entity.UserPermission;
import iot.sixiang.license.model.ResResult; import iot.sixiang.license.model.ResResult;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -13,10 +14,7 @@ import java.security.NoSuchAlgorithmException; ...@@ -13,10 +14,7 @@ import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom; import java.security.SecureRandom;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Calendar; import java.util.*;
import java.util.Date;
import java.util.HashMap;
import java.util.Locale;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
...@@ -345,4 +343,15 @@ public class CommonUtil { ...@@ -345,4 +343,15 @@ public class CommonUtil {
} }
return ""; return "";
} }
public static boolean checkPermission(List<UserPermission> userPermissions, int permission) {
boolean res = false;
for (UserPermission userPermission : userPermissions) {
if (userPermission.getPermission() == permission) {
res = true;
break;
}
}
return res;
}
} }
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<mapper namespace="iot.sixiang.license.mapper.UserMapper"> <mapper namespace="iot.sixiang.license.mapper.UserMapper">
<insert id="addUser" parameterType="iot.sixiang.license.entity.User"> <insert id="addUser" parameterType="iot.sixiang.license.entity.User">
insert into user(user_name, company, password, notify, create_time, update_time) values (#{userName},#{company}, #{password}, #{notify, jdbcType=VARCHAR}, now(), now()) insert into user(user_name, company, password, notify, parent, `level`, create_time, update_time) values (#{userName},#{company}, #{password}, #{notify, jdbcType=VARCHAR}, #{parent}, #{level}, now(), now())
</insert> </insert>
<delete id="deleteUser" parameterType="iot.sixiang.license.entity.User"> <delete id="deleteUser" parameterType="iot.sixiang.license.entity.User">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment