add TagTest and correctDateConf logic (#797)

This commit is contained in:
daikon
2024-03-08 13:16:15 +08:00
committed by GitHub
parent 276009f014
commit 9d27031543
4 changed files with 181 additions and 3 deletions

View File

@@ -2,11 +2,13 @@ package com.tencent.supersonic.common.pojo;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.ToString;
@Data
@AllArgsConstructor
@Builder
@ToString
public class ItemDateResp {

View File

@@ -35,6 +35,14 @@ public class TagController {
this.tagQueryService = tagQueryService;
}
/**
* 新建标签
* @param tagReq
* @param request
* @param response
* @return
* @throws Exception
*/
@PostMapping("/create")
public TagResp create(@RequestBody TagReq tagReq,
HttpServletRequest request,
@@ -43,6 +51,14 @@ public class TagController {
return tagMetaService.create(tagReq, user);
}
/**
* 编辑标签信息
* @param tagReq
* @param request
* @param response
* @return
* @throws Exception
*/
@PostMapping("/update")
public TagResp update(@RequestBody TagReq tagReq,
HttpServletRequest request,
@@ -51,6 +67,13 @@ public class TagController {
return tagMetaService.update(tagReq, user);
}
/**
* 批量更新标签状态
* @param metaBatchReq
* @param request
* @param response
* @return
*/
@PostMapping("/batchUpdateStatus")
public Boolean batchUpdateStatus(@RequestBody MetaBatchReq metaBatchReq,
HttpServletRequest request,
@@ -59,6 +82,14 @@ public class TagController {
return tagMetaService.batchUpdateStatus(metaBatchReq, user);
}
/**
* 标签删除
* @param id
* @param request
* @param response
* @return
* @throws Exception
*/
@DeleteMapping("delete/{id}")
public Boolean delete(@PathVariable("id") Long id,
HttpServletRequest request,
@@ -68,6 +99,13 @@ public class TagController {
return true;
}
/**
* 标签详情获取
* @param id
* @param request
* @param response
* @return
*/
@GetMapping("getTag/{id}")
public TagResp getTag(@PathVariable("id") Long id,
HttpServletRequest request,
@@ -76,6 +114,14 @@ public class TagController {
return tagMetaService.getTag(id, user);
}
/**
* 标签市场-分页查询
* @param tagFilterPage
* @param request
* @param response
* @return
* @throws Exception
*/
@PostMapping("/queryTag")
public PageInfo<TagResp> queryPage(@RequestBody TagFilterPage tagFilterPage,
HttpServletRequest request,

View File

@@ -6,19 +6,25 @@ import com.tencent.supersonic.common.pojo.Aggregator;
import com.tencent.supersonic.common.pojo.DateConf;
import com.tencent.supersonic.common.pojo.Order;
import com.tencent.supersonic.common.pojo.enums.AggOperatorEnum;
import com.tencent.supersonic.headless.api.pojo.Dim;
import com.tencent.supersonic.headless.api.pojo.SchemaElementType;
import com.tencent.supersonic.headless.api.pojo.ValueDistribution;
import com.tencent.supersonic.headless.api.pojo.request.ItemValueReq;
import com.tencent.supersonic.headless.api.pojo.request.QueryTagReq;
import com.tencent.supersonic.headless.api.pojo.response.ItemValueResp;
import com.tencent.supersonic.headless.api.pojo.response.ModelResp;
import com.tencent.supersonic.headless.api.pojo.response.SemanticQueryResp;
import com.tencent.supersonic.headless.api.pojo.response.TagResp;
import com.tencent.supersonic.headless.server.service.ModelService;
import com.tencent.supersonic.headless.server.service.QueryService;
import com.tencent.supersonic.headless.server.service.TagMetaService;
import com.tencent.supersonic.headless.server.service.TagQueryService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -30,13 +36,19 @@ import static com.tencent.supersonic.common.pojo.Constants.DESC_UPPER;
@Service
public class TagQueryServiceImpl implements TagQueryService {
@Value("${item.value.date.before:1}")
private Integer dayBefore;
private final String tagValueAlias = "internalTagCount";
private final TagMetaService tagMetaService;
private final QueryService queryService;
private final ModelService modelService;
public TagQueryServiceImpl(TagMetaService tagMetaService, QueryService queryService) {
public TagQueryServiceImpl(TagMetaService tagMetaService, QueryService queryService,
ModelService modelService) {
this.tagMetaService = tagMetaService;
this.queryService = queryService;
this.modelService = modelService;
}
@Override
@@ -47,6 +59,7 @@ public class TagQueryServiceImpl implements TagQueryService {
TagResp tag = tagMetaService.getTag(itemValueReq.getItemId(), user);
itemValueResp.setName(tag.getName());
itemValueResp.setBizName(tag.getBizName());
correctDateConf(itemValueReq, tag);
// tag total count
Long totalCount = queryTagTotalCount(tag, itemValueReq, user);
// tag value
@@ -56,6 +69,26 @@ public class TagQueryServiceImpl implements TagQueryService {
return itemValueResp;
}
private void correctDateConf(ItemValueReq itemValueReq, TagResp tag) {
if (Objects.nonNull(itemValueReq.getDateConf())) {
return;
}
ModelResp model = modelService.getModel(tag.getModelId());
List<Dim> timeDimension = model.getTimeDimension();
if (CollectionUtils.isEmpty(timeDimension)) {
return;
}
Dim dim = timeDimension.get(0);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(dim.getDateFormat());
String endDate = LocalDate.now().plusDays(-dayBefore).format(formatter);
DateConf dateConf = new DateConf();
dateConf.setDateMode(DateConf.DateMode.BETWEEN);
dateConf.setStartDate(endDate);
dateConf.setEndDate(endDate);
itemValueReq.setDateConf(dateConf);
}
private Long queryTagTotalCount(TagResp tag, ItemValueReq itemValueReq, User user) throws Exception {
QueryTagReq queryTagReq = new QueryTagReq();
@@ -74,8 +107,7 @@ public class TagQueryServiceImpl implements TagQueryService {
return Long.parseLong(total.toString());
}
}
return Long.MAX_VALUE;
throw new RuntimeException("queryTagTotalCount error");
}
private void fillTagValueInfo(ItemValueResp itemValueResp, SemanticQueryResp semanticQueryResp, Long totalCount) {

View File

@@ -0,0 +1,98 @@
package com.tencent.supersonic.headless;
import com.tencent.supersonic.auth.api.authentication.pojo.User;
import com.tencent.supersonic.common.pojo.enums.TypeEnums;
import com.tencent.supersonic.headless.api.pojo.TagDefineParams;
import com.tencent.supersonic.headless.api.pojo.enums.TagDefineType;
import com.tencent.supersonic.headless.api.pojo.request.ItemValueReq;
import com.tencent.supersonic.headless.api.pojo.request.TagReq;
import com.tencent.supersonic.headless.api.pojo.response.TagResp;
import com.tencent.supersonic.headless.server.pojo.TagFilter;
import com.tencent.supersonic.headless.server.service.TagMetaService;
import com.tencent.supersonic.headless.server.service.TagQueryService;
import org.junit.Assert;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.ArrayList;
import java.util.Arrays;
public class TagTest extends BaseTest {
private final String bizName = "page";
private final Long modelId = 3L;
private final Integer dimId = 3;
@Autowired
private TagMetaService tagMetaService;
@Autowired
private TagQueryService tagQueryService;
@Test
void testCreateTag() {
TagReq tagReq = newTagReq();
tagMetaService.create(tagReq, User.getFakeUser());
TagResp tag = queryTagRespByBizName(bizName);
Assert.assertEquals(bizName, tag.getBizName());
tagMetaService.delete(tag.getId(), User.getFakeUser());
}
@Test
void testUpdateTag() {
TagReq tagReq = newTagReq();
TagResp tagResp = tagMetaService.create(tagReq, User.getFakeUser());
Assert.assertEquals(bizName, tagReq.getBizName());
tagReq.setId(tagResp.getId());
tagReq.setName("新页面");
tagMetaService.update(tagReq, User.getFakeUser());
TagResp tag = queryTagRespByBizName(bizName);
Assert.assertEquals("新页面", tag.getName());
tagMetaService.delete(tag.getId(), User.getFakeUser());
}
private TagResp queryTagRespByBizName(String bizName) {
TagFilter tagFilter = new TagFilter();
tagFilter.setBizName(bizName);
TagResp tagRespDb = tagMetaService.getTags(tagFilter).get(0);
return tagRespDb;
}
private TagReq newTagReq() {
TagReq tagReq = new TagReq();
tagReq.setModelId(modelId);
tagReq.setName("页面");
tagReq.setBizName(bizName);
tagReq.setStatus(1);
tagReq.setTypeEnum(TypeEnums.TAG);
tagReq.setTagDefineType(TagDefineType.DIMENSION);
TagDefineParams tagDefineParams = new TagDefineParams();
tagDefineParams.setExpr(bizName);
tagDefineParams.setDependencies(new ArrayList<>(Arrays.asList(dimId)));
tagReq.setTagDefineParams(tagDefineParams);
return tagReq;
}
@Test
void testQueryTag() {
TagReq tagReq = newTagReq();
tagMetaService.create(tagReq, User.getFakeUser());
TagResp tag = queryTagRespByBizName(bizName);
Assert.assertEquals(bizName, tag.getBizName());
tagMetaService.delete(tag.getId(), User.getFakeUser());
}
@Test
void testTagValue() throws Exception {
TagReq tagReq = newTagReq();
tagMetaService.create(tagReq, User.getFakeUser());
TagResp tag = queryTagRespByBizName(bizName);
ItemValueReq itemValueReq = new ItemValueReq();
itemValueReq.setItemId(tag.getId());
tagMetaService.delete(tag.getId(), User.getFakeUser());
}
}