TestServiceImpl.java 5.16 KB
package com.infoloop.tianting.service.impl;

import com.infoloop.tianting.exception.ClientEndExceptions;
import com.infoloop.tianting.exception.ErrorCodeEnum;
import com.infoloop.tianting.model.common.CreatedResult;
import com.infoloop.tianting.model.common.PageResult;
import com.infoloop.tianting.model.create.TestExampleDbCreate;
import com.infoloop.tianting.model.dto.TestExampleDbDTO;
import com.infoloop.tianting.model.query.TestExampleDbQuery;
import com.infoloop.tianting.model.update.TestExampleDbUpdate;
import com.infoloop.tianting.model.vo.TestExampleDbVO;
import com.infoloop.tianting.service.TestService;
import com.infoloop.tianting.service.client.ExampleServiceRpcClient;
import com.infoloop.tianting.utils.DateUtil;
import com.infoloop.tianting.utils.PageUtil;
import com.tianting.infoloop.grpc.exampleservice.SingleTestExampleDbRpcResponse;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.validation.Valid;
import java.util.List;
import java.util.stream.Collectors;

@Slf4j
@Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class TestServiceImpl implements TestService {

    private final ExampleServiceRpcClient exampleServiceRpcClient;

    @Override
    public PageResult<TestExampleDbVO> queryPage(TestExampleDbDTO.@Valid QueryPage queryPage) {
        TestExampleDbQuery query = TestExampleDbQuery.builder()
                .name(queryPage.getName())
                .status(queryPage.getStatus())
                .build();
        final var response = exampleServiceRpcClient.queryTestExampleDbByPagination(queryPage.getPageInfo(), query);
        final var results = response.getResponsesList().stream().map(e -> TestExampleDbVO.builder()
                .id(e.getId())
                .name(e.getName())
                .status(e.getStatus())
                .createdAt(DateUtil.formatDate(e.getCreatedAt()))
                .updatedAt(DateUtil.formatDate(e.getUpdatedAt()))
                .build()).collect(Collectors.toList());
        return PageUtil.from(results, response.getTotal(), response.getPages(), queryPage.getPageInfo().getPageNo(), queryPage.getPageInfo().getPageSize());
    }

    @Override
    public List<TestExampleDbVO> queryAll() {
        final var responseList = exampleServiceRpcClient.getAllTestExampleDb();
        return responseList.stream().map(e -> TestExampleDbVO.builder()
                .id(e.getId())
                .name(e.getName())
                .status(e.getStatus())
                .createdAt(DateUtil.formatDate(e.getCreatedAt()))
                .updatedAt(DateUtil.formatDate(e.getUpdatedAt()))
                .build()).collect(Collectors.toList());
    }

    @Override
    public CreatedResult<TestExampleDbVO> createTestExampleDb(TestExampleDbDTO.CreateTestExampleDb createTestExampleDb) {
        final var create = TestExampleDbCreate.builder()
                .name(createTestExampleDb.getName())
                .status(createTestExampleDb.getStatus())
                .build();
        final var response = exampleServiceRpcClient.createTestExampleDb(create);
        final var testExampleDbVO = TestExampleDbVO.builder()
                .id(response.getId())
                .name(create.getName())
                .status(create.getStatus())
                //TODO: 其他新增信息
                .build();
        return CreatedResult.<TestExampleDbVO>builder().isCreated(response.getIsCreated()).id(response.getId()).data(testExampleDbVO).build();
    }

    @Override
    public void updateTestExampleDb(SingleTestExampleDbRpcResponse testExampleDbRpcResponse, TestExampleDbDTO.UpdateTestExampleDb updateTestExampleDb) {
        final var update = TestExampleDbUpdate.builder()
                .id(testExampleDbRpcResponse.getId())
                .name(updateTestExampleDb.getName())
                .status(updateTestExampleDb.getStatus())
                .build();
        final var isUpdated = exampleServiceRpcClient.updateTestExampleDb(update);
        if (!isUpdated) {
            throw ClientEndExceptions.BusinessException.build(ErrorCodeEnum.UPDATE_DATA_ERROR);
        }
    }

    @Override
    public void deleteTestExampleDb(SingleTestExampleDbRpcResponse testExampleDbRpcResponse) {
        final var isDeleted = exampleServiceRpcClient.deleteTestExampleDbByIds(List.of(testExampleDbRpcResponse.getId()));
        if (!isDeleted) {
            throw ClientEndExceptions.BusinessException.build(ErrorCodeEnum.DELETE_DATA_ERROR);
        }
    }

    @Override
    public TestExampleDbVO getTestExampleDb(SingleTestExampleDbRpcResponse testExampleDbRpcResponse) {
//        final var testExampleDb = exampleServiceRpcClient.getTestExampleDbById(testExampleDbRpcResponse.getId());
        return TestExampleDbVO.builder()
                .id(testExampleDbRpcResponse.getId())
                .name(testExampleDbRpcResponse.getName())
                .status(testExampleDbRpcResponse.getStatus())
                .createdAt(DateUtil.formatDate(testExampleDbRpcResponse.getCreatedAt()))
                .updatedAt(DateUtil.formatDate(testExampleDbRpcResponse.getUpdatedAt()))
                .build();
    }
}