This commit is contained in:
2025-09-09 11:13:36 +08:00
parent cf50a9f1fa
commit fcd35c78e5
60 changed files with 2753 additions and 2196 deletions
@@ -5,21 +5,27 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.emotion.common.BasePageRequest;
import com.emotion.common.PageResult;
import com.emotion.dto.request.guest.GuestUserCreateRequest;
import com.emotion.dto.request.guest.GuestUserUpdateRequest;
import com.emotion.dto.response.guest.GuestUserResponse;
import com.emotion.entity.GuestUser;
import com.emotion.mapper.GuestUserMapper;
import com.emotion.service.GuestUserService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
/**
* 访客用户服务实现类
*
* @author emotion-museum
* @date 2025-07-24
* @date 2025-09-08
*/
@Service
public class GuestUserServiceImpl extends ServiceImpl<GuestUserMapper, GuestUser> implements GuestUserService {
@@ -37,6 +43,30 @@ public class GuestUserServiceImpl extends ServiceImpl<GuestUserMapper, GuestUser
return this.page(page, wrapper);
}
@Override
public PageResult<GuestUserResponse> getPageWithResponse(BasePageRequest request) {
IPage<GuestUser> page = getPage(request);
List<GuestUserResponse> responses = page.getRecords().stream()
.map(this::convertToResponse)
.collect(Collectors.toList());
PageResult<GuestUserResponse> pageResult = new PageResult<>();
pageResult.setRecords(responses);
pageResult.setCurrent(page.getCurrent());
pageResult.setSize(page.getSize());
pageResult.setTotal(page.getTotal());
pageResult.setPages(page.getPages());
return pageResult;
}
@Override
public GuestUserResponse getGuestUserResponseById(String id) {
GuestUser guestUser = this.getById(id);
if (guestUser == null || guestUser.getIsDeleted() == 1) {
return null;
}
return convertToResponse(guestUser);
}
@Override
public GuestUser getByDeviceId(String deviceId) {
LambdaQueryWrapper<GuestUser> wrapper = new LambdaQueryWrapper<>();
@@ -219,4 +249,68 @@ public class GuestUserServiceImpl extends ServiceImpl<GuestUserMapper, GuestUser
this.save(guestUser);
return guestUser;
}
@Override
public GuestUserResponse createGuestUserWithResponse(GuestUserCreateRequest request) {
GuestUser guestUser = createGuestUser(
request.getDeviceId(),
request.getIpAddress(),
request.getUserAgent(),
request.getLocation());
return convertToResponse(guestUser);
}
@Override
public GuestUserResponse updateGuestUserWithResponse(GuestUserUpdateRequest request) {
GuestUser guestUser = this.getById(request.getId());
if (guestUser == null || guestUser.getIsDeleted() == 1) {
return null;
}
// 只更新非空字段
if (StringUtils.hasText(request.getNickname())) {
guestUser.setNickname(request.getNickname());
}
if (StringUtils.hasText(request.getAvatar())) {
guestUser.setAvatar(request.getAvatar());
}
if (StringUtils.hasText(request.getLocation())) {
guestUser.setLocation(request.getLocation());
}
this.updateById(guestUser);
return convertToResponse(guestUser);
}
@Override
public boolean deleteGuestUser(String id) {
GuestUser guestUser = this.getById(id);
if (guestUser == null || guestUser.getIsDeleted() == 1) {
return false;
}
// 逻辑删除
guestUser.setIsDeleted(1);
return this.updateById(guestUser);
}
/**
* 将实体转换为响应对象
*/
private GuestUserResponse convertToResponse(GuestUser guestUser) {
if (guestUser == null) {
return null;
}
GuestUserResponse response = new GuestUserResponse();
BeanUtils.copyProperties(guestUser, response);
response.setId(guestUser.getId());
if (guestUser.getCreateTime() != null) {
response.setCreateTime(guestUser.getCreateTime().toString());
}
if (guestUser.getUpdateTime() != null) {
response.setUpdateTime(guestUser.getUpdateTime().toString());
}
return response;
}
}