feat(admin): 最低价ASIN列表操作列新增整条删除按钮——后端DELETE /skip-price-asins/{id}(权限校验+日志),前端确认弹窗+删空页回退,补单测与对齐测试

This commit is contained in:
2026-09-07 16:05:57 +08:00
parent 0bd4843b8e
commit c5982dd900
6 changed files with 92 additions and 1 deletions
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
import org.apache.ibatis.builder.MapperBuilderAssistant;
import org.apache.ibatis.session.Configuration;
import com.nanri.aiimage.common.exception.BusinessException;
import com.nanri.aiimage.modules.shopkey.mapper.ShopManageMapper;
import com.nanri.aiimage.modules.shopkey.mapper.SkipPriceAsinMapper;
import com.nanri.aiimage.modules.shopkey.model.dto.SkipPriceAsinCreateRequest;
@@ -34,6 +35,7 @@ import java.util.concurrent.atomic.AtomicReference;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
@@ -179,6 +181,31 @@ class SkipPriceAsinServiceTest {
assertEquals(new BigDecimal("14.00"), existing.getMinimumPriceUk());
}
@Test
void deleteRemovesWholeRecordAfterGroupAccessCheck() {
SkipPriceAsinEntity entity = new SkipPriceAsinEntity();
entity.setId(100L);
entity.setGroupId(10L);
entity.setShopName("shop-a");
entity.setAsinDe("B0DE1");
when(skipPriceAsinMapper.selectById(100L)).thenReturn(entity);
when(shopManageGroupService.getAccessibleById(10L, 7L, true)).thenReturn(group());
service.delete(100L, 7L, true);
verify(skipPriceAsinMapper).deleteById((java.io.Serializable) 100L);
}
@Test
void deleteRejectsUnknownRecord() {
when(skipPriceAsinMapper.selectById(999L)).thenReturn(null);
BusinessException exception = assertThrows(BusinessException.class, () -> service.delete(999L, 7L, true));
assertEquals("记录不存在", exception.getMessage());
verify(skipPriceAsinMapper, never()).deleteById(any(java.io.Serializable.class));
}
private ShopManageGroupEntity group() {
ShopManageGroupEntity group = new ShopManageGroupEntity();
group.setId(10L);