package cn.chnmuseum.party.service.impl; import cn.chnmuseum.party.common.enums.AuditOperationEnum; import cn.chnmuseum.party.common.enums.AuditStatusEnum; import cn.chnmuseum.party.common.util.RSAUtils; import cn.chnmuseum.party.mapper.TAreaMapper; import cn.chnmuseum.party.mapper.TUserMapper; import cn.chnmuseum.party.model.TBoxOperation; import cn.chnmuseum.party.model.TUser; import cn.chnmuseum.party.model.TUserRole; import cn.chnmuseum.party.service.TUserService; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import javax.validation.constraints.NotNull; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * <pre> * 用户 服务实现类 * </pre> * * @author Danny Lee * @since 2021-03-22 */ @Slf4j @Service @Transactional public class TUserServiceImpl extends ServiceImpl<TUserMapper, TUser> implements TUserService { @Resource private TUserMapper tUserMapper; @Resource private TAreaMapper areaMapper; @Resource TBoxOperationServiceImpl boxOperationService; @Resource TUserRoleServiceImpl tUserRoleService; @Override public TUser selectByUsername(String userName) { return tUserMapper.selectByUsername(userName); } @Override public Page<TUser> getList(Page<TUser> page, TUser user) { List<TUser> list = tUserMapper.getList(page, user); List<TUser> userList = new ArrayList<>(); if (!CollectionUtils.isEmpty(list) && "2".equals(user.getType())) { List<String> collect = list.stream().map(TUser::getId).collect(Collectors.toList()); userList = tUserMapper.getUserRole(collect); } for (TUser u : list) { // 用户状态 if (AuditStatusEnum.REFUSED.name().equals(u.getAuditStatus()) || AuditStatusEnum.APPROVED_FINAL.name().equals(u.getAuditStatus())) { if (AuditOperationEnum.ENABLE.name().equals(u.getStatus())) { u.setStatusName("活跃"); } else { u.setStatusName("禁用"); } } else { u.setStatusName("待审核"); } // 用户管理员类型 for (TUser tUser : userList) { if (u.getId().equals(tUser.getId())) { u.setRoleName(tUser.getRoleName()); continue; } } } return page.setRecords(list); } @Override public TUser selectById(String id) { TUser user = tUserMapper.getById(id); if (user.getAreaId() != null) { String s = areaMapper.selectParent(user.getAreaId()); if (s != null) { user.setAreas(Arrays.asList(s.split(","))); } } return user; } @Override public List<TUser> getUserList(TUser user) { return tUserMapper.getUserList(user); } @Override public boolean addBox(TUser user) { boolean ret; save(user); TBoxOperation tBoxOperation = new TBoxOperation(); tBoxOperation.setOrganId(user.getOrgId()); tBoxOperation.setAreaId(user.getAreaId()); tBoxOperation.setStatus(1); tBoxOperation.setCreateTime(LocalDateTime.now()); tBoxOperation.setUpdateTime(LocalDateTime.now()); final ArrayList<String> rsaKeys = RSAUtils.createRSAKeys(); tBoxOperation.setPublicKey(rsaKeys.get(0)); tBoxOperation.setPrivateKey(rsaKeys.get(1)); ret = boxOperationService.save(tBoxOperation); TUserRole userRole = new TUserRole(); userRole.setUserId(user.getId()); userRole.setRoleId("3"); userRole.setIsDeleted(false); ret = tUserRoleService.save(userRole); return ret; } @Override public List<TUser> getUserListByRole(Map<String, Object> map) { return tUserMapper.getListByRole(map); } }