package com.wuhunyu.service;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.wuhunyu.base.BaseService;
import com.wuhunyu.mapper.RoleMapper;
import com.wuhunyu.mapper.UserMapper;
import com.wuhunyu.mapper.UserRoleMapper;
import com.wuhunyu.pojo.User;
import com.wuhunyu.pojo.UserRole;
import com.wuhunyu.query.UserQuery;
import com.wuhunyu.utils.AssertUtil;
import com.wuhunyu.utils.Md5Util;
import com.wuhunyu.utils.PhoneUtil;
import com.wuhunyu.utils.UserIDBase64;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* UserService业务逻辑层
*
* @author wuhunyu
* @version 1.0
* @date 2020-12-08 15:42
*/
@Service("userService")
@ConfigurationProperties(prefix = "user")
@PropertySource("classpath:/password.yml")
public class UserService extends BaseService<User, Integer> {
/**
* 读取配置文件中的password值
*/
@Value("${password}")
private String password;
private Map<String, String> map = new HashMap<>(16);
@Autowired
private UserMapper userMapper;
@Autowired
private RoleMapper roleMapper;
@Autowired
private UserRoleMapper userRoleMapper;
/**
* 根据用户名查询user记录
* @param userName
* @return
*/
public Map<String,String> findUserByName(String userName, String password) {
// 验证userName非空
AssertUtil.isTrue(StringUtils.isBlank(userName),"用户名不能为空");
// 验证password非空
AssertUtil.isTrue(StringUtils.isBlank(password),"密码不能为空");
// 调用userMapper查询user记录
User user = userMapper.findUserByName(userName);
// 校验用户是否失效
AssertUtil.isTrue(user.getIsValid() != 1, "该用户已被除名");
// 验证查询结果user非空
AssertUtil.isTrue(user == null, "用户不存在");
if (Md5Util.encode(password).equals(user.getUserPwd())) {
return changeUser(user);
}
AssertUtil.isTrue(true,"密码输入有误");
return null;
}
/**
* 修改密码
* @param userId
* @param oldPWD
* @param newPWD
* @param checkPWD
*/
@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
public void updatePassword(Integer userId,String oldPWD,String newPWD,String checkPWD) {
// 判断字段是否为空
AssertUtil.isTrue(userId == -1, "userId为空");
AssertUtil.isTrue(StringUtils.isBlank(oldPWD), "旧密码为空");
AssertUtil.isTrue(StringUtils.isBlank(newPWD), "新密码为空");
AssertUtil.isTrue(StringUtils.isBlank(checkPWD), "确认密码为空");
// 校验新旧密码是否相同
AssertUtil.isTrue(oldPWD.equals(newPWD), "新旧密码不能相同");
// 校验新密码和确认密码是否相同
AssertUtil.isTrue(!newPWD.equals(checkPWD), "两次新密码不一致");
User user = userMapper.selectByPrimaryKey(userId);
// 判断查询结果是否为空
AssertUtil.isTrue(null == user, "用户不存在");
// 旧密码和数据库中的密码不一致
AssertUtil.isTrue(!Md5Util.encode(oldPWD).equals(user.getUserPwd()), "旧密码输入错误");
// 修改密码
user.setUserPwd(Md5Util.encode(newPWD));
Integer result = userMapper.updateByPrimaryKeySelective(user);
AssertUtil.isTrue(result < 1, "修改密码失败");
}
/**
* 截取一部分user字段
* @param user
* @return
*/
private Map<String, String> changeUser(User user) {
// 对userId进行加密处理
map.put("userId", UserIDBase64.encoderUserID(user.getId()));
map.put("userName", user.getUserName());
map.put("trueName", user.getTrueName());
return map;
}
/**
* 用户权限管理查询
* @param userQuery
* @return
*/
public Map<String, Object> selectByParams(UserQuery userQuery) {
Map<String,Object> result = new HashMap<>(16);
PageHelper.startPage(userQuery.getPage(),userQuery.getLimit());
PageInfo<User> users =new PageInfo<User>(userMapper.selectByParams(userQuery));
// 使用list来存放所有的数据
ArrayList<Object> userList = new ArrayList<>();
// 格式化时间
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
for (User user : users.getList()) {
// 创建一个新的map来存放数据
Map<String, Object> map = new HashMap<>(16);
map.put("id", user.getId());
map.put("userName", user.getUserName());
map.put("trueName", user.getTrueName());
map.put("email", user.getEmail());
map.put("phone", user.getPhone());
map.put("createDate", formatter.format(user.getCreateDate()));
map.put("updateDate", formatter.format(user.getUpdateDate()));
// 添加角色集合
map.put("roleName", roleMapper.findRolesByUserId(user.getId()));
userList.add(map);
}
result.put("count", userList.size());
result.put("data", userList);
result.put("code", 0);
result.put("msg", "没有查询到任何符合条件的数据");
// 返回结果
return result;
}
/**
* 新增一个用户
* @param user
*/
@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
public void addUser(User user, Integer[] ids) {
// 参数校验
// 用户名不能为空
AssertUtil.isTrue(StringUtils.isBlank(user.getUserName()), "用户名不能为空");
// 真实姓名不能为空
AssertUtil.isTrue(StringUtils.isBlank(user.getTrueName()), "真实姓名不能为空");
// email不能为空
AssertUtil.isTrue(StringUtils.isBlank(user.getEmail()),"邮箱不能为空");
// phone不能为空
AssertUtil.isTrue(StringUtils.isBlank(user.getPhone()),"手机号码不能为空");
// 校验手机号码格式
AssertUtil.isTrue(!PhoneUtil.isMobile(user.getPhone()), "手机号码格式错误");
// 角色不能为空
AssertUtil.isTrue(ids == null && ids.length == 0, "用户角色不能为空");
// 需要保证数据库中没有和新增用户同名的记录
AssertUtil.isTrue(userMapper.findUsersByName(user.getUserName()).size() > 0, "此用户名已被占用");
// 默认参数设置
// 是否有效
user.setIsValid(1);
user.setCreateDate(new Date());
user.setUpdateDate(new Date());
// 默认密码
user.setUserPwd(Md5Util.encode(password));
// 执行新增操作
AssertUtil.isTrue(userMapper.insertSelective(user) != 1, "新增用户失败");
// 执行添加角色操作
List<Map<String, Object>> roles = roleMapper.findRoles();
AssertUtil.isTrue(roles.size() == 0, "角色表数据异常");
List<UserRole> rolesByUserId = userRoleMapper.findUserRolesByUserId(user.getId());
// userRole实体类对象
UserRole userRole = new UserRole();
// 创建时间
userRole.setCreateDate(new Date());
// 修改事件
userRole.setUpdateDate(new Date());
for (Integer id : ids) {
boolean flag = false;
// 判断角色表中是否存在该角色
for (Map<String, Object> map :
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
基于SpringBoot+Layui的CRM客户管理系统【运行文档+源码】 (868个子文件)
UserService.class 13KB
CustomerServeService.class 9KB
ModuleService.class 8KB
CustomerService.class 8KB
Customer.class 7KB
CustomerServeController.class 6KB
CusDevPlanController.class 6KB
UserController.class 6KB
RoleService.class 5KB
CustomerReprieveService.class 5KB
SaleChanceController.class 5KB
SaleChanceService.class 5KB
CustomerCountService.class 5KB
PermissionService.class 5KB
CustomerServe.class 5KB
DataDicService.class 5KB
BaseService.class 4KB
SaleChance.class 4KB
ModuleController.class 4KB
CustomerController.class 4KB
Module.class 4KB
GlobalExceptionHandler.class 4KB
CusDevPlanService.class 4KB
RoleController.class 4KB
User.class 3KB
CustomerLoss.class 3KB
DataDicController.class 3KB
IndexController.class 3KB
CustomerOrderService.class 3KB
OrderDetailService.class 3KB
CustomerReprieveController.class 3KB
UserIDBase64.class 3KB
CookieUtil.class 3KB
OrderDetail.class 3KB
CustomerCountController.class 3KB
CustomerOrder.class 3KB
CusDevPlan.class 3KB
Role.class 2KB
CustomerLossService.class 2KB
CustomerReprieve.class 2KB
CustomerLossController.class 2KB
Permission.class 2KB
PermissionHandler.class 2KB
OrderDetailController.class 2KB
DataDic.class 2KB
ResultInfo.class 2KB
CustomerContributionQuery.class 2KB
SaleChanceQuery.class 2KB
PermissionController.class 2KB
CustomerServeQuery.class 2KB
MvcConfig.class 2KB
NoLoginInterceptor.class 2KB
ModuleMapper.class 2KB
DataConvertConfig.class 2KB
UserRole.class 2KB
BaseController.class 2KB
DevResult.class 1KB
AuthException.class 1KB
ParamsException.class 1KB
RoleMapper.class 1KB
NoLoginException.class 1KB
PhoneUtil.class 1KB
StateStatus.class 1KB
PermissionMapper.class 1KB
Md5Util.class 1KB
CustomerOrderController.class 1KB
CustomerMapper.class 1KB
DataBaseTask.class 1KB
BaseMapper.class 1KB
DataDicMapper.class 1KB
CustomerLossQuery.class 1KB
CustomerCountMapper.class 1KB
LoginUserUtil.class 1KB
CustomerReprieveMapper.class 1KB
UserMapper.class 1KB
CustomerQuery.class 1021B
UserQuery.class 982B
UserRoleMapper.class 975B
CustomerServeMapper.class 964B
CustomerOrderMapper.class 912B
OrderDetailMapper.class 862B
BaseQuery.class 858B
CustomerLossMapper.class 807B
SaleChanceMapper.class 782B
crmApp.class 763B
DicQuery.class 711B
AssertUtil.class 681B
CusDevPlanQuery.class 620B
OrderDetailQuery.class 611B
CustomerOrderQuery.class 611B
RoleQuery.class 590B
RequestCode.class 502B
CusDevPlanMapper.class 450B
layui.css 73KB
layui.css 73KB
layui.css 73KB
layui.css 73KB
font-awesome.css 37KB
font-awesome.css 37KB
font-awesome.min.css 30KB
共 868 条
- 1
- 2
- 3
- 4
- 5
- 6
- 9
资源评论
程序猿代码之路
- 粉丝: 1712
- 资源: 11
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- PySpark和Matplotlib绘制趋势图的简单示例.rar
- 实验5 用例图.docx
- 课程大作业基于python实现的单目双目视觉三维重建源码(95分以上).zip
- 使用matplotlib库绘制简单图表的例子.rar
- 九阴真经OL资源解包工具
- python-leetcode面试题解之第307题区域和检索.zip
- python-leetcode面试题解之第305题岛屿数量II.zip
- python-leetcode面试题解之第304题二维区域和检索.zip
- python-leetcode面试题解之第303题区域和检索.zip
- python-leetcode面试题解之第299题猜数字游戏.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功