package com.ctrip.framework.apollo.biz.service; import com.ctrip.framework.apollo.biz.entity.Audit; import com.ctrip.framework.apollo.biz.repository.AppRepository; import com.ctrip.framework.apollo.common.entity.App; import com.ctrip.framework.apollo.common.exception.BadRequestException; import com.ctrip.framework.apollo.common.exception.ServiceException; import com.ctrip.framework.apollo.common.utils.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Objects; @Service public class AppService { @Autowired private AppRepository appRepository; @Autowired private AuditService auditService; public boolean isAppIdUnique(String appId) { Objects.requireNonNull(appId, "AppId must not be null"); return Objects.isNull(appRepository.findByAppId(appId)); } @Transactional public void delete(long id, String operator) { App app = appRepository.findOne(id); if (app == null) { return; } app.setDeleted(true); app.setDataChangeLastModifiedBy(operator); appRepository.save(app); auditService.audit(App.class.getSimpleName(), id, Audit.OP.DELETE, operator); } public List<App> findAll(Pageable pageable) { Page<App> page = appRepository.findAll(pageable); return page.getContent(); } public List<App> findByName(String name) { return appRepository.findByName(name); } public App findOne(String appId) { return appRepository.findByAppId(appId); } @Transactional public App save(App entity) { if (!isAppIdUnique(entity.getAppId())) { throw new ServiceException("appId not unique"); } entity.setId(0);//protection App app = appRepository.save(entity); auditService.audit(App.class.getSimpleName(), app.getId(), Audit.OP.INSERT, app.getDataChangeCreatedBy()); return app; } @Transactional public void update(App app) { String appId = app.getAppId(); App managedApp = appRepository.findByAppId(appId); if (managedApp == null) { throw new BadRequestException(String.format("App not exists. AppId = %s", appId)); } managedApp.setName(app.getName()); managedApp.setOrgId(app.getOrgId()); managedApp.setOrgName(app.getOrgName()); managedApp.setOwnerName(app.getOwnerName()); managedApp.setOwnerEmail(app.getOwnerEmail()); managedApp.setDataChangeLastModifiedBy(app.getDataChangeLastModifiedBy()); managedApp = appRepository.save(managedApp); auditService.audit(App.class.getSimpleName(), managedApp.getId(), Audit.OP.UPDATE, managedApp.getDataChangeLastModifiedBy()); } }