mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-10 11:07:06 +00:00
add checkTagObjectStatus when delete tagObject (#1225)
This commit is contained in:
@@ -74,7 +74,7 @@ public class TagObjectController {
|
|||||||
HttpServletRequest request,
|
HttpServletRequest request,
|
||||||
HttpServletResponse response) throws Exception {
|
HttpServletResponse response) throws Exception {
|
||||||
User user = UserHolder.findUser(request, response);
|
User user = UserHolder.findUser(request, response);
|
||||||
tagObjectService.delete(id, user);
|
tagObjectService.delete(id, user, true);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,6 +16,8 @@ public interface TagObjectService {
|
|||||||
|
|
||||||
Boolean delete(Long id, User user) throws Exception;
|
Boolean delete(Long id, User user) throws Exception;
|
||||||
|
|
||||||
|
Boolean delete(Long id, User user, Boolean checkStatus) throws Exception;
|
||||||
|
|
||||||
TagObjectResp getTagObject(Long id, User user);
|
TagObjectResp getTagObject(Long id, User user);
|
||||||
|
|
||||||
List<TagObjectResp> getTagObjects(TagObjectFilter filter, User user);
|
List<TagObjectResp> getTagObjects(TagObjectFilter filter, User user);
|
||||||
|
|||||||
@@ -1,30 +1,44 @@
|
|||||||
package com.tencent.supersonic.headless.server.web.service.impl;
|
package com.tencent.supersonic.headless.server.web.service.impl;
|
||||||
|
|
||||||
|
import com.github.pagehelper.PageInfo;
|
||||||
import com.tencent.supersonic.auth.api.authentication.pojo.User;
|
import com.tencent.supersonic.auth.api.authentication.pojo.User;
|
||||||
import com.tencent.supersonic.common.pojo.enums.StatusEnum;
|
import com.tencent.supersonic.common.pojo.enums.StatusEnum;
|
||||||
import com.tencent.supersonic.common.util.BeanMapper;
|
import com.tencent.supersonic.common.util.BeanMapper;
|
||||||
|
import com.tencent.supersonic.headless.api.pojo.request.TagFilterPageReq;
|
||||||
import com.tencent.supersonic.headless.api.pojo.request.TagObjectReq;
|
import com.tencent.supersonic.headless.api.pojo.request.TagObjectReq;
|
||||||
|
import com.tencent.supersonic.headless.api.pojo.response.ModelResp;
|
||||||
import com.tencent.supersonic.headless.api.pojo.response.TagObjectResp;
|
import com.tencent.supersonic.headless.api.pojo.response.TagObjectResp;
|
||||||
|
import com.tencent.supersonic.headless.api.pojo.response.TagResp;
|
||||||
import com.tencent.supersonic.headless.server.persistence.dataobject.TagObjectDO;
|
import com.tencent.supersonic.headless.server.persistence.dataobject.TagObjectDO;
|
||||||
import com.tencent.supersonic.headless.server.persistence.repository.TagObjectRepository;
|
import com.tencent.supersonic.headless.server.persistence.repository.TagObjectRepository;
|
||||||
import com.tencent.supersonic.headless.server.pojo.TagObjectFilter;
|
import com.tencent.supersonic.headless.server.pojo.TagObjectFilter;
|
||||||
|
import com.tencent.supersonic.headless.server.web.service.ModelService;
|
||||||
|
import com.tencent.supersonic.headless.server.web.service.TagMetaService;
|
||||||
import com.tencent.supersonic.headless.server.web.service.TagObjectService;
|
import com.tencent.supersonic.headless.server.web.service.TagObjectService;
|
||||||
import com.tencent.supersonic.headless.server.utils.TagObjectConverter;
|
import com.tencent.supersonic.headless.server.utils.TagObjectConverter;
|
||||||
|
import org.springframework.context.annotation.Lazy;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class TagObjectServiceImpl implements TagObjectService {
|
public class TagObjectServiceImpl implements TagObjectService {
|
||||||
|
|
||||||
private final TagObjectRepository tagObjectRepository;
|
private final TagObjectRepository tagObjectRepository;
|
||||||
|
private final ModelService modelService;
|
||||||
|
private final TagMetaService tagMetaService;
|
||||||
|
|
||||||
public TagObjectServiceImpl(TagObjectRepository tagObjectRepository) {
|
public TagObjectServiceImpl(TagObjectRepository tagObjectRepository, ModelService modelService,
|
||||||
|
@Lazy TagMetaService tagMetaService) {
|
||||||
this.tagObjectRepository = tagObjectRepository;
|
this.tagObjectRepository = tagObjectRepository;
|
||||||
|
this.modelService = modelService;
|
||||||
|
this.tagMetaService = tagMetaService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -78,6 +92,7 @@ public class TagObjectServiceImpl implements TagObjectService {
|
|||||||
public Boolean delete(Long id, User user) throws Exception {
|
public Boolean delete(Long id, User user) throws Exception {
|
||||||
TagObjectDO tagObjectDO = tagObjectRepository.getTagObjectById(id);
|
TagObjectDO tagObjectDO = tagObjectRepository.getTagObjectById(id);
|
||||||
checkDeletePermission(tagObjectDO, user);
|
checkDeletePermission(tagObjectDO, user);
|
||||||
|
checkTagObjectStatus(tagObjectDO, user);
|
||||||
tagObjectDO.setUpdatedAt(new Date());
|
tagObjectDO.setUpdatedAt(new Date());
|
||||||
tagObjectDO.setUpdatedBy(user.getName());
|
tagObjectDO.setUpdatedBy(user.getName());
|
||||||
tagObjectDO.setStatus(StatusEnum.DELETED.getCode());
|
tagObjectDO.setStatus(StatusEnum.DELETED.getCode());
|
||||||
@@ -85,6 +100,40 @@ public class TagObjectServiceImpl implements TagObjectService {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Boolean delete(Long id, User user, Boolean checkStatus) throws Exception {
|
||||||
|
TagObjectDO tagObjectDO = tagObjectRepository.getTagObjectById(id);
|
||||||
|
checkDeletePermission(tagObjectDO, user);
|
||||||
|
if (checkStatus) {
|
||||||
|
checkTagObjectStatus(tagObjectDO, user);
|
||||||
|
}
|
||||||
|
tagObjectDO.setUpdatedAt(new Date());
|
||||||
|
tagObjectDO.setUpdatedBy(user.getName());
|
||||||
|
tagObjectDO.setStatus(StatusEnum.DELETED.getCode());
|
||||||
|
tagObjectRepository.update(tagObjectDO);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void checkTagObjectStatus(TagObjectDO tagObjectDO, User user) throws Exception {
|
||||||
|
List<ModelResp> allModelByDomainIds = modelService.getAllModelByDomainIds(
|
||||||
|
Arrays.asList(tagObjectDO.getDomainId()));
|
||||||
|
if (!CollectionUtils.isEmpty(allModelByDomainIds)) {
|
||||||
|
List<Long> modelIds = allModelByDomainIds.stream().map(ModelResp::getId).collect(Collectors.toList());
|
||||||
|
throw new Exception("delete operation is not supported at the moment. related modelIds:" + modelIds);
|
||||||
|
}
|
||||||
|
TagFilterPageReq tagMarketPageReq = new TagFilterPageReq();
|
||||||
|
tagMarketPageReq.setTagObjectId(tagObjectDO.getId());
|
||||||
|
PageInfo<TagResp> respPageInfo = tagMetaService.queryTagMarketPage(tagMarketPageReq, user);
|
||||||
|
if (Objects.nonNull(respPageInfo)) {
|
||||||
|
List<TagResp> tagRespList = respPageInfo.getList();
|
||||||
|
if (!CollectionUtils.isEmpty(tagRespList)) {
|
||||||
|
List<Long> tagIds = tagRespList.stream().map(TagResp::getId).collect(Collectors.toList());
|
||||||
|
throw new Exception("delete operation is not supported at the moment. related tagIds:" + tagIds);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
private void checkDeletePermission(TagObjectDO tagObjectDO, User user) throws Exception {
|
private void checkDeletePermission(TagObjectDO tagObjectDO, User user) throws Exception {
|
||||||
if (user.getName().equalsIgnoreCase(tagObjectDO.getCreatedBy()) || user.isSuperAdmin()) {
|
if (user.getName().equalsIgnoreCase(tagObjectDO.getCreatedBy()) || user.isSuperAdmin()) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ public class TagObjectTest extends BaseTest {
|
|||||||
User user = User.getFakeUser();
|
User user = User.getFakeUser();
|
||||||
TagObjectReq tagObjectReq = newTagObjectReq();
|
TagObjectReq tagObjectReq = newTagObjectReq();
|
||||||
TagObjectResp tagObjectResp = tagObjectService.create(tagObjectReq, user);
|
TagObjectResp tagObjectResp = tagObjectService.create(tagObjectReq, user);
|
||||||
tagObjectService.delete(tagObjectResp.getId(), user);
|
tagObjectService.delete(tagObjectResp.getId(), user, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -33,7 +33,7 @@ public class TagObjectTest extends BaseTest {
|
|||||||
tagObjectReqUpdate.setName("艺人1");
|
tagObjectReqUpdate.setName("艺人1");
|
||||||
tagObjectService.update(tagObjectReqUpdate, User.getFakeUser());
|
tagObjectService.update(tagObjectReqUpdate, User.getFakeUser());
|
||||||
TagObjectResp tagObject = tagObjectService.getTagObject(tagObjectReqUpdate.getId(), User.getFakeUser());
|
TagObjectResp tagObject = tagObjectService.getTagObject(tagObjectReqUpdate.getId(), User.getFakeUser());
|
||||||
tagObjectService.delete(tagObject.getId(), User.getFakeUser());
|
tagObjectService.delete(tagObject.getId(), User.getFakeUser(), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -43,7 +43,7 @@ public class TagObjectTest extends BaseTest {
|
|||||||
TagObjectFilter filter = new TagObjectFilter();
|
TagObjectFilter filter = new TagObjectFilter();
|
||||||
List<TagObjectResp> tagObjects = tagObjectService.getTagObjects(filter, User.getFakeUser());
|
List<TagObjectResp> tagObjects = tagObjectService.getTagObjects(filter, User.getFakeUser());
|
||||||
tagObjects.size();
|
tagObjects.size();
|
||||||
tagObjectService.delete(tagObjectResp.getId(), User.getFakeUser());
|
tagObjectService.delete(tagObjectResp.getId(), User.getFakeUser(), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private TagObjectReq newTagObjectReq() {
|
private TagObjectReq newTagObjectReq() {
|
||||||
|
|||||||
Reference in New Issue
Block a user