|
|
@@ -0,0 +1,77 @@
|
|
|
+package com.poyee.service.impl;
|
|
|
+
|
|
|
+import com.poyee.dto.EndUserDTO;
|
|
|
+import com.poyee.entity.SysUser;
|
|
|
+import com.poyee.mapper.PoyeeSysUserMapper;
|
|
|
+import com.poyee.service.SysUserService;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.time.ZoneId;
|
|
|
+import java.util.Collections;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+@Service
|
|
|
+public class SysUserServiceImpl implements SysUserService {
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private PoyeeSysUserMapper poyeeSysUserMapper;
|
|
|
+
|
|
|
+ public SysUserServiceImpl() {
|
|
|
+ }
|
|
|
+
|
|
|
+ public SysUserServiceImpl(PoyeeSysUserMapper poyeeSysUserMapper) {
|
|
|
+ this.poyeeSysUserMapper = poyeeSysUserMapper;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public EndUserDTO loadUserByLoginId(String loginId) {
|
|
|
+ SysUser sysUser = poyeeSysUserMapper.selectByLoginId(loginId);
|
|
|
+ if (sysUser == null) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ EndUserDTO dto = new EndUserDTO();
|
|
|
+ dto.setId(sysUser.getUserId() == null ? 0 : sysUser.getUserId());
|
|
|
+ dto.setUsername(sysUser.getLoginName());
|
|
|
+ dto.setEmail(sysUser.getEmail());
|
|
|
+ dto.setPhone(sysUser.getPhonenumber());
|
|
|
+ dto.setDisplayName(sysUser.getUserName());
|
|
|
+ dto.setAvatarUrl(sysUser.getAvatar());
|
|
|
+ dto.setPasswordHash(sysUser.getPassword());
|
|
|
+ dto.setSalt(sysUser.getSalt());
|
|
|
+ dto.setStatus(resolveStatus(sysUser));
|
|
|
+ dto.setIdentityType(sysUser.getUserType());
|
|
|
+ dto.setRegistrationTime(toLocalDateTime(sysUser.getCreateTime()));
|
|
|
+ dto.setLastLoginTime(toLocalDateTime(sysUser.getLoginDate()));
|
|
|
+ dto.setRoleCode(resolveRoleCodes(sysUser.getUserId()));
|
|
|
+
|
|
|
+ EndUserDTO.EndUserProfile profile = new EndUserDTO.EndUserProfile();
|
|
|
+ profile.setRealName(sysUser.getUserName());
|
|
|
+ profile.setGender(sysUser.getSex());
|
|
|
+ profile.setAddress(sysUser.getAddress());
|
|
|
+ dto.setProfile(profile);
|
|
|
+ return dto;
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<String> resolveRoleCodes(Integer userId) {
|
|
|
+ if (userId == null) {
|
|
|
+ return Collections.emptyList();
|
|
|
+ }
|
|
|
+ List<String> roles = poyeeSysUserMapper.selectRoleKeysByUserId(userId);
|
|
|
+ return roles == null ? Collections.emptyList() : roles;
|
|
|
+ }
|
|
|
+
|
|
|
+ private String resolveStatus(SysUser sysUser) {
|
|
|
+ if (!"0".equals(sysUser.getDelFlag())) {
|
|
|
+ return "INACTIVE";
|
|
|
+ }
|
|
|
+ return "1".equals(sysUser.getStatus()) ? "ACTIVE" : "BANNED";
|
|
|
+ }
|
|
|
+
|
|
|
+ private LocalDateTime toLocalDateTime(Date date) {
|
|
|
+ return date == null ? null : LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
|
|
|
+ }
|
|
|
+}
|