package net.ccfish.jvue.service.impl; import java.util.Collection; import java.util.List; import java.util.stream.Collectors; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.CacheEvict; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; import com.github.pagehelper.PageHelper; import net.ccfish.common.OrderByUtils; import net.ccfish.common.mybatis.BaseMapper; import net.ccfish.common.web.PageParam; import net.ccfish.jvue.autogen.dao.JvueUserMapper; import net.ccfish.jvue.autogen.dao.JvueUserRoleMapper; import net.ccfish.jvue.autogen.model.JvueUser; import net.ccfish.jvue.autogen.model.JvueUserRole; import net.ccfish.jvue.domain.dao.JvueExUserMapper; import net.ccfish.jvue.domain.model.JvueExUser; import net.ccfish.jvue.service.JvueUserService; import tk.mybatis.mapper.entity.Example; import tk.mybatis.mapper.weekend.WeekendSqls; /** * Generated by Spring Data Generator on 31/01/2018 */ @Service @Transactional public class JvueUserServiceImpl implements JvueUserService { private JvueUserMapper userMapper; @Autowired private JvueExUserMapper exUserMapper; @Autowired private JvueUserRoleMapper userRoleMapper; @Autowired public JvueUserServiceImpl(JvueUserMapper userMapper) { this.userMapper = userMapper; } @Override public BaseMapper<JvueUser> baseMapper() { return this.userMapper; } @Override @CacheEvict(value = "JwtUserDetailsService", key = "#result.username") public JvueUser updateRoles(Long id, List<Integer> roles) { Assert.notNull(id, "用户ID不能为空"); JvueUserRole userRole = new JvueUserRole(); userRole.setUserId(id); List<JvueUserRole> userRoles = userRoleMapper.select(userRole); Collection<Integer> deleds; Collection<Integer> addeds; List<Integer> existes = userRoles.stream().map(r -> r.getRoleId()).collect(Collectors.toList()); if (existes != null) { if (roles != null && roles.size() > 0) { deleds = CollectionUtils.subtract(existes, roles); addeds = CollectionUtils.subtract(roles, existes); } else { // 删除所有 userRoleMapper.delete(userRole); deleds = null; addeds = null; } } else { deleds = null; addeds = roles; } if (deleds != null && deleds.size() > 0) { // SearchCriteria<UserRole> searchCriteria = new SearchCriteria<>(); // searchCriteria.add(JpaRestrictions.eq("userId", id, false)); // searchCriteria.add(JpaRestrictions.in("roleId", deleds, false)); // List<UserRole> dRoles = userRoleMapper.findAll(searchCriteria); // userRoleMapper.deleteAll(dRoles); Example example = new Example.Builder(JvueUserRole.class).where( WeekendSqls.<JvueUserRole>custom().andEqualTo(JvueUserRole::getUserId, id).andIn(JvueUserRole::getRoleId, deleds)) .build(); userRoleMapper.deleteByExample(example); } if (addeds != null && addeds.size() > 0) { for (Integer roleId: addeds) { JvueUserRole role = new JvueUserRole(); role.setUserId(id); role.setRoleId(roleId); userRoleMapper.insertSelective(role); } } return getOne(id); } @CacheEvict(value = "JwtUserDetailsService", key = "#result.username") @Override public JvueUser update(Long id, JvueUser data) { JvueUser jvueUser = userMapper.selectByPrimaryKey(id); if (jvueUser != null) { // jvueUser.setSuperUser(data.getSuperUser()); jvueUser.setPassword(data.getPassword()); jvueUser.setDeptCode(data.getDeptCode()); jvueUser.setNickname(data.getNickname()); jvueUser.setEmail(data.getEmail()); jvueUser.setStatus(data.getStatus()); userMapper.updateByPrimaryKeySelective(jvueUser); return jvueUser; } else { return data; } } @Override public void delete(Long id) { userMapper.deleteByPrimaryKey(id); } @Override public List<JvueExUser> searchUser(PageParam pageParam) { String orderBy = OrderByUtils.toString(pageParam.getSort(), pageParam.getDirection()); PageHelper.startPage(pageParam.getPage(), pageParam.getPageSize(), orderBy); // TODO 后续追加查询条件 return exUserMapper.searchUsers(null); } }