mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-10 19:51:00 +00:00
add TagTest and correctDateConf logic (#797)
This commit is contained in:
@@ -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 {
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user