package com.kidgrow.usercenter.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.kidgrow.common.constant.CommonConstant; import com.kidgrow.common.lock.DistributedLock; import com.kidgrow.common.model.PageResult; import com.kidgrow.common.model.ResultBody; import com.kidgrow.common.model.SysRole; import com.kidgrow.common.service.impl.SuperServiceImpl; import com.kidgrow.usercenter.mapper.SysRoleMapper; import com.kidgrow.usercenter.mapper.SysRoleMenuMapper; import com.kidgrow.usercenter.mapper.SysUserRoleMapper; import com.kidgrow.usercenter.service.ISysRoleService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.MapUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.Date; import java.util.List; import java.util.Map; /** * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020
* * @Description:
* @Project:
* @CreateDate: Created in 2020/2/13 16:33
* @Author: liuke */ @Slf4j @Service public class SysRoleServiceImpl extends SuperServiceImpl implements ISysRoleService { private final static String LOCK_KEY_ROLECODE = CommonConstant.LOCK_KEY_PREFIX+"rolecode:"; @Resource private SysUserRoleMapper userRoleMapper; @Resource private SysRoleMenuMapper roleMenuMapper; @Autowired private DistributedLock lock; @Transactional(rollbackFor = Exception.class) @Override public void saveRole(SysRole sysRole) { String roleCode = sysRole.getCode(); super.saveIdempotency(sysRole, lock, LOCK_KEY_ROLECODE+roleCode, new QueryWrapper().eq("code", roleCode), "角色code已存在"); } @Transactional(rollbackFor = Exception.class) @Override public void deleteRole(Long id) { baseMapper.deleteById(id); roleMenuMapper.delete(id, null); userRoleMapper.deleteUserRole(null, id); } @Override public PageResult findRoles(Map params) { Integer curPage = MapUtils.getInteger(params, "page"); Integer limit = MapUtils.getInteger(params, "limit"); Page page = new Page<>(curPage == null ? 0 : curPage, limit == null ? -1 : limit); List list = baseMapper.findList(page, params); return PageResult.builder().data(list).code(0).count(page.getTotal()).build(); } @Override @Transactional(rollbackFor = Exception.class) public ResultBody saveOrUpdateRole(SysRole sysRole) { if (sysRole.getId() == null) { this.saveRole(sysRole); } else { baseMapper.updateById(sysRole); } return ResultBody.ok().msg("操作成功"); } @Override public List findAll() { return baseMapper.findAll(); } @Override public ResultBody updateEnabled(Map params) { Long id = MapUtils.getLong(params, "id"); Boolean enabled = MapUtils.getBoolean(params, "enabled"); SysRole sysRole = baseMapper.selectById(id); if (sysRole == null) { return ResultBody.failed("角色不存在"); } sysRole.setEnabled(enabled); sysRole.setUpdateTime(new Date()); int i = baseMapper.updateById(sysRole); log.info("修改角色:{}", sysRole); return i > 0 ? ResultBody.ok().data(sysRole).msg("更新成功") : ResultBody.failed("更新失败"); } }