package com.estate.expert.admin.service.impl; import com.estate.expert.admin.domain.business.sign.project.ProjectSignRecord; import com.estate.expert.admin.domain.business.sign.project.ProjectSignRecordDto; import com.estate.expert.admin.domain.business.sign.project.ProjectSignRecordRepository; import com.estate.expert.admin.domain.user.User; import com.estate.expert.admin.enums.BizResultCode; import com.estate.expert.admin.service.common.CrudServiceBaseImpl; import com.estate.expert.admin.service.sign.ProjectSignService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.List; import java.util.UUID; /** * 项目签到服务实现 */ @Slf4j @Service public class ProjectSignServiceImpl extends CrudServiceBaseImpl implements ProjectSignService { @Resource private ProjectSignRecordRepository entityRepository; @Override public ProjectSignRecord add(User creator, ProjectSignRecord entity) { BizResultCode.BIZ_PROJECT_NOT_EXIST.check(entity.getProject() == null); var records = getRecord(creator.getId(), entity.getProject().getId(), LocalDate.now()); BizResultCode.SIGN_RECORD_EXIST.check(!CollectionUtils.isEmpty(records)); entity.setName(UUID.randomUUID().toString()); return super.add(creator, entity); } @Override public List getRecord(Integer userId, Integer projectId, LocalDate date) { return entityRepository.listSignRecord(userId, projectId, date.atStartOfDay(), date.plusDays(1).atStartOfDay()); } @Override public ProjectSignRecord add(User creator, ProjectSignRecordDto dto, LocalDateTime date) { var entity = toEntity(dto); BizResultCode.BIZ_PROJECT_NOT_EXIST.check(entity.getProject() == null); var records = getRecord(creator.getId(), dto.getProject().getId(), LocalDate.from(date)); BizResultCode.SIGN_RECORD_EXIST.check(!CollectionUtils.isEmpty(records)); entity.setName(UUID.randomUUID().toString()); BizResultCode.ENTITY_NAME_ALREADY_EXISTS.check(entityRepository.existsByName(entity.getName())); entity.setId(null); entity.setCreator(creator); entity.setCreateTime(date); entity.setUpdateTime(date); return save(entity); } }