|
@@ -0,0 +1,107 @@
|
|
|
+package com.imed.costaccount.service.impl;
|
|
|
+
|
|
|
+import cn.hutool.core.date.DateUtil;
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.imed.costaccount.common.exception.CostException;
|
|
|
+import com.imed.costaccount.common.util.PageUtils;
|
|
|
+import com.imed.costaccount.mapper.RoleMapper;
|
|
|
+import com.imed.costaccount.model.Role;
|
|
|
+import com.imed.costaccount.model.User;
|
|
|
+import com.imed.costaccount.model.dto.RoleEditDTO;
|
|
|
+import com.imed.costaccount.model.dto.RoleSaveDTO;
|
|
|
+import com.imed.costaccount.model.vo.RoleVO;
|
|
|
+import com.imed.costaccount.service.RoleService;
|
|
|
+import com.imed.costaccount.service.UserService;
|
|
|
+import com.imed.costaccount.utils.BeanUtil;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Propagation;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
+import java.util.List;
|
|
|
+import java.util.Objects;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+@Slf4j
|
|
|
+@Service("roleService")
|
|
|
+public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements RoleService {
|
|
|
+
|
|
|
+
|
|
|
+ private final UserService userService;
|
|
|
+
|
|
|
+ public RoleServiceImpl(UserService userService) {
|
|
|
+ this.userService = userService;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 保存角色
|
|
|
+ *
|
|
|
+ * @param roleSaveDTO {@link RoleSaveDTO}
|
|
|
+ * @param user
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
|
|
|
+ public void saveRole(RoleSaveDTO roleSaveDTO, User user) {
|
|
|
+ Role role = BeanUtil.convertObj(roleSaveDTO, Role.class);
|
|
|
+ role.setCreateUserId(user.getId())
|
|
|
+ .setHospId(user.getHospId())
|
|
|
+ .setCreateTime(System.currentTimeMillis());
|
|
|
+ this.save(role);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询角色列表并分页
|
|
|
+ *
|
|
|
+ * @param page 页码
|
|
|
+ * @param pageSize 每页展示数据条数
|
|
|
+ * @param keyword 模糊匹配关键字
|
|
|
+ * @param user 当前登录用户
|
|
|
+ * @return {@link PageUtils} 分页对象
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public PageUtils selectList(Integer page, Integer pageSize, String keyword, User user) {
|
|
|
+ Page<Role> rolePage = new Page<>(page, pageSize);
|
|
|
+ Page<Role> pages = this.page(rolePage,
|
|
|
+ new LambdaQueryWrapper<Role>().eq(Role::getHospId, user.getHospId())
|
|
|
+ .and( StrUtil.isNotBlank(keyword), i -> i.eq( Role::getRoleName, keyword)
|
|
|
+ .or()
|
|
|
+ .eq(Role::getRemark, keyword))
|
|
|
+
|
|
|
+ );
|
|
|
+ List<Role> records = pages.getRecords();
|
|
|
+ List<RoleVO> list = records.stream().map(i -> {
|
|
|
+ RoleVO roleVO = BeanUtil.convertObj(i, RoleVO.class);
|
|
|
+ roleVO.setModifyUserName(userService.getUsernameByIdAndHospId(i.getCreateUserId(), user.getHospId()));
|
|
|
+ roleVO.setModifyTime(DateUtil.formatDateTime(DateUtil.date(i.getCreateTime())));
|
|
|
+ // todo 相关user 菜单等绑定信息
|
|
|
+ return roleVO;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+
|
|
|
+ return new PageUtils(list, (int) pages.getTotal(),pageSize,page);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 编辑某个角色
|
|
|
+ *
|
|
|
+ * @param roleEditDTO {@link RoleEditDTO}
|
|
|
+ * @param userId 当前登录人id
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
|
|
|
+ public void updateRole(RoleEditDTO roleEditDTO, Long userId) {
|
|
|
+ Role byId = this.getById(roleEditDTO.getRoleId());
|
|
|
+ if (Objects.isNull(byId)) {
|
|
|
+ throw new CostException(500, "选择的角色已被移除");
|
|
|
+ }
|
|
|
+ BeanUtil.convertObj(roleEditDTO, byId);
|
|
|
+ byId.setCreateTime(System.currentTimeMillis());
|
|
|
+ byId.setCreateUserId(userId);
|
|
|
+
|
|
|
+ log.info("byId:{}",byId);
|
|
|
+ this.updateById(byId);
|
|
|
+ }
|
|
|
+}
|