|
@@ -13,11 +13,14 @@ import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
|
|
import org.apache.poi.ss.usermodel.HorizontalAlignment;
|
|
import org.apache.poi.ss.usermodel.HorizontalAlignment;
|
|
|
import org.apache.poi.ss.util.CellRangeAddress;
|
|
import org.apache.poi.ss.util.CellRangeAddress;
|
|
|
import org.jeecg.common.api.vo.Result;
|
|
import org.jeecg.common.api.vo.Result;
|
|
|
|
|
+import org.jeecg.common.util.DateUtils;
|
|
|
import org.jeecg.ctop.material.constants.Check;
|
|
import org.jeecg.ctop.material.constants.Check;
|
|
|
import org.jeecg.ctop.material.entity.vo.KuaiShouOperateAccountVo;
|
|
import org.jeecg.ctop.material.entity.vo.KuaiShouOperateAccountVo;
|
|
|
import org.jeecg.ctop.material.entity.vo.KuaiShouOperateProjectVo;
|
|
import org.jeecg.ctop.material.entity.vo.KuaiShouOperateProjectVo;
|
|
|
import org.jeecg.ctop.material.mapper.MaterialStareMapper;
|
|
import org.jeecg.ctop.material.mapper.MaterialStareMapper;
|
|
|
|
|
+import org.jeecg.ctop.material.service.IAdqAdvertiserReportService;
|
|
|
import org.jeecg.ctop.material.service.MaterialStareService;
|
|
import org.jeecg.ctop.material.service.MaterialStareService;
|
|
|
|
|
+import org.jeecg.ctop.material.service.support.DashboardLocalCacheService;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.web.bind.annotation.GetMapping;
|
|
import org.springframework.web.bind.annotation.GetMapping;
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
@@ -29,8 +32,10 @@ import java.io.BufferedOutputStream;
|
|
|
import java.io.OutputStream;
|
|
import java.io.OutputStream;
|
|
|
import java.net.URLEncoder;
|
|
import java.net.URLEncoder;
|
|
|
import java.text.ParseException;
|
|
import java.text.ParseException;
|
|
|
|
|
+import java.util.Date;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
|
|
|
+import java.util.function.Supplier;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 快手-运营数据盯盘-经理&个人
|
|
* 快手-运营数据盯盘-经理&个人
|
|
@@ -41,6 +46,9 @@ import java.util.Map;
|
|
|
@RequestMapping("/kuaiShouOpreate/kuaiShouMaterialStareController")
|
|
@RequestMapping("/kuaiShouOpreate/kuaiShouMaterialStareController")
|
|
|
public class KuaiShouMaterialStareController {
|
|
public class KuaiShouMaterialStareController {
|
|
|
|
|
|
|
|
|
|
+ private static final long REALTIME_CACHE_TTL = 30 * 1000L;
|
|
|
|
|
+ private static final long HISTORY_CACHE_TTL = 5 * 60 * 1000L;
|
|
|
|
|
+
|
|
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
|
MaterialStareService materialStareService;
|
|
MaterialStareService materialStareService;
|
|
@@ -48,6 +56,12 @@ public class KuaiShouMaterialStareController {
|
|
|
@Autowired
|
|
@Autowired
|
|
|
private MaterialStareMapper materialStareMapper;
|
|
private MaterialStareMapper materialStareMapper;
|
|
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private IAdqAdvertiserReportService adqAdvertiserReportService;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private DashboardLocalCacheService dashboardLocalCacheService;
|
|
|
|
|
+
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* @param mediaType 媒体类型 1-头条 2-快手
|
|
* @param mediaType 媒体类型 1-头条 2-快手
|
|
@@ -65,7 +79,8 @@ public class KuaiShouMaterialStareController {
|
|
|
@RequestParam(name = "startTime") String startTime,
|
|
@RequestParam(name = "startTime") String startTime,
|
|
|
@RequestParam(name = "endTime") String endTime,
|
|
@RequestParam(name = "endTime") String endTime,
|
|
|
@RequestParam(name = "userId") String userId) {
|
|
@RequestParam(name = "userId") String userId) {
|
|
|
- return materialStareService.kuaiShousumData(mediaType, type, startTime, endTime, userId);
|
|
|
|
|
|
|
+ String cacheKey = "dashboard:stare:sumData:" + safe(mediaType) + ":" + safe(type) + ":" + safe(startTime) + ":" + safe(endTime) + ":" + safe(userId);
|
|
|
|
|
+ return getCachedResult(cacheKey, resolveCacheTtl(startTime, endTime), () -> materialStareService.kuaiShousumData(mediaType, type, startTime, endTime, userId));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -84,8 +99,8 @@ public class KuaiShouMaterialStareController {
|
|
|
@RequestParam(name = "startTime") String startTime,
|
|
@RequestParam(name = "startTime") String startTime,
|
|
|
@RequestParam(name = "endTime") String endTime,
|
|
@RequestParam(name = "endTime") String endTime,
|
|
|
@RequestParam(name = "userId") String userId) {
|
|
@RequestParam(name = "userId") String userId) {
|
|
|
-
|
|
|
|
|
- return materialStareService.kuaiShouOperateDateTotal(mediaType, startTime, endTime, userId);
|
|
|
|
|
|
|
+ String cacheKey = "dashboard:stare:dateTotal:" + safe(mediaType) + ":" + safe(startTime) + ":" + safe(endTime) + ":" + safe(userId);
|
|
|
|
|
+ return getCachedResult(cacheKey, resolveCacheTtl(startTime, endTime), () -> materialStareService.kuaiShouOperateDateTotal(mediaType, startTime, endTime, userId));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -139,29 +154,32 @@ public class KuaiShouMaterialStareController {
|
|
|
@RequestParam(name = "startTime") String startTime,
|
|
@RequestParam(name = "startTime") String startTime,
|
|
|
@RequestParam(name = "endTime") String endTime,
|
|
@RequestParam(name = "endTime") String endTime,
|
|
|
@RequestParam(name = "userId") String userId) {
|
|
@RequestParam(name = "userId") String userId) {
|
|
|
-
|
|
|
|
|
- //查询用户角色
|
|
|
|
|
- String roleCode = materialStareMapper.getRoleCodeByUserId(userId);
|
|
|
|
|
- //判断是否运营相关角色,并获取媒体类型
|
|
|
|
|
- if (!Check.isNull(roleCode)) {
|
|
|
|
|
- if ("touTiaoOperationManager".equals(roleCode)) {
|
|
|
|
|
- mediaType = "1";
|
|
|
|
|
- } else if ("kuaishouOperationManager".equals(roleCode)) {
|
|
|
|
|
- mediaType = "2";
|
|
|
|
|
- } else if (roleCode.toLowerCase().contains("perat")) {
|
|
|
|
|
- String leaderRoleCode = materialStareMapper.getOperatLeaderRole(userId);
|
|
|
|
|
- if (!Check.isNull(leaderRoleCode)) {
|
|
|
|
|
- if ("touTiaoOperationManager".equals(leaderRoleCode)) {
|
|
|
|
|
- mediaType = "1";
|
|
|
|
|
- } else if ("kuaishouOperationManager".equals(leaderRoleCode)) {
|
|
|
|
|
- mediaType = "2";
|
|
|
|
|
|
|
+ if (!"16".equals(mediaType)) {
|
|
|
|
|
+ //查询用户角色
|
|
|
|
|
+ String roleCode = materialStareMapper.getRoleCodeByUserId(userId);
|
|
|
|
|
+ //判断是否运营相关角色,并获取媒体类型
|
|
|
|
|
+ if (!Check.isNull(roleCode)) {
|
|
|
|
|
+ if ("touTiaoOperationManager".equals(roleCode)) {
|
|
|
|
|
+ mediaType = "1";
|
|
|
|
|
+ } else if ("kuaishouOperationManager".equals(roleCode)) {
|
|
|
|
|
+ mediaType = "2";
|
|
|
|
|
+ } else if (roleCode.toLowerCase().contains("perat")) {
|
|
|
|
|
+ String leaderRoleCode = materialStareMapper.getOperatLeaderRole(userId);
|
|
|
|
|
+ if (!Check.isNull(leaderRoleCode)) {
|
|
|
|
|
+ if ("touTiaoOperationManager".equals(leaderRoleCode)) {
|
|
|
|
|
+ mediaType = "1";
|
|
|
|
|
+ } else if ("kuaishouOperationManager".equals(leaderRoleCode)) {
|
|
|
|
|
+ mediaType = "2";
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
+ } else {
|
|
|
|
|
+ return Result.successMsg("非运营相关角色,不显示数据", null);
|
|
|
}
|
|
}
|
|
|
- } else {
|
|
|
|
|
- return Result.successMsg("非运营相关角色,不显示数据", null);
|
|
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- return materialStareService.getKuaiShouOperateProjectInfo(pageNum, pageSize, mediaType, startTime, endTime, userId);
|
|
|
|
|
|
|
+ String resolvedMediaType = mediaType;
|
|
|
|
|
+ String cacheKey = "dashboard:stare:projectInfo:" + safe(resolvedMediaType) + ":" + safe(startTime) + ":" + safe(endTime) + ":" + safe(userId) + ":" + safe(pageNum) + ":" + safe(pageSize);
|
|
|
|
|
+ return (Result<Object>) (Result<?>) getCachedResult(cacheKey, resolveCacheTtl(startTime, endTime), () -> materialStareService.getKuaiShouOperateProjectInfo(pageNum, pageSize, resolvedMediaType, startTime, endTime, userId));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -197,13 +215,13 @@ public class KuaiShouMaterialStareController {
|
|
|
@GetMapping("/getKuaiShouOperateAccountInfo")
|
|
@GetMapping("/getKuaiShouOperateAccountInfo")
|
|
|
public Result<JSONObject> getKuaiShouOperateAccountInfo(@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
|
|
public Result<JSONObject> getKuaiShouOperateAccountInfo(@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
|
|
|
@RequestParam(name = "pageSize", defaultValue = "1000") int pageSize,
|
|
@RequestParam(name = "pageSize", defaultValue = "1000") int pageSize,
|
|
|
|
|
+ @RequestParam(name = "mediaType", required = false) String mediaType,
|
|
|
@RequestParam(name = "startTime") String startTime,
|
|
@RequestParam(name = "startTime") String startTime,
|
|
|
@RequestParam(name = "endTime") String endTime,
|
|
@RequestParam(name = "endTime") String endTime,
|
|
|
@RequestParam(name = "projectId", required = false) String projectId,
|
|
@RequestParam(name = "projectId", required = false) String projectId,
|
|
|
@RequestParam(name = "userId") String userId) {
|
|
@RequestParam(name = "userId") String userId) {
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
- return materialStareService.getKuaiShouOperateAccountInfo(pageNum, pageSize, startTime, endTime, projectId, userId);
|
|
|
|
|
|
|
+ String cacheKey = "dashboard:stare:accountInfo:" + safe(mediaType) + ":" + safe(startTime) + ":" + safe(endTime) + ":" + safe(projectId) + ":" + safe(userId) + ":" + safe(pageNum) + ":" + safe(pageSize);
|
|
|
|
|
+ return getCachedResult(cacheKey, resolveCacheTtl(startTime, endTime), () -> materialStareService.getKuaiShouOperateAccountInfo(pageNum, pageSize, startTime, endTime, projectId, userId, mediaType));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -292,7 +310,8 @@ public class KuaiShouMaterialStareController {
|
|
|
@RequestParam(name = "startTime") String startTime,
|
|
@RequestParam(name = "startTime") String startTime,
|
|
|
@RequestParam(name = "endTime") String endTime,
|
|
@RequestParam(name = "endTime") String endTime,
|
|
|
@RequestParam(name = "userId") String userId) {
|
|
@RequestParam(name = "userId") String userId) {
|
|
|
- return materialStareService.kuaiShousumDataPersonal(mediaType, startTime, endTime, userId);
|
|
|
|
|
|
|
+ String cacheKey = "dashboard:stare:sumDataPersonal:" + safe(mediaType) + ":" + safe(startTime) + ":" + safe(endTime) + ":" + safe(userId);
|
|
|
|
|
+ return getCachedResult(cacheKey, resolveCacheTtl(startTime, endTime), () -> materialStareService.kuaiShousumDataPersonal(mediaType, startTime, endTime, userId));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -311,28 +330,49 @@ public class KuaiShouMaterialStareController {
|
|
|
@RequestParam(name = "startTime") String startTime,
|
|
@RequestParam(name = "startTime") String startTime,
|
|
|
@RequestParam(name = "endTime") String endTime,
|
|
@RequestParam(name = "endTime") String endTime,
|
|
|
@RequestParam(name = "userId") String userId) {
|
|
@RequestParam(name = "userId") String userId) {
|
|
|
- //查询用户角色
|
|
|
|
|
- String roleCode = materialStareMapper.getRoleCodeByUserId(userId);
|
|
|
|
|
- //判断是否运营相关角色,并获取媒体类型
|
|
|
|
|
- if (!Check.isNull(roleCode)) {
|
|
|
|
|
- if ("touTiaoOperationManager".equals(roleCode)) {
|
|
|
|
|
- mediaType = "1";
|
|
|
|
|
- } else if ("kuaishouOperationManager".equals(roleCode)) {
|
|
|
|
|
- mediaType = "2";
|
|
|
|
|
- } else if (roleCode.toLowerCase().contains("perat")) {
|
|
|
|
|
- String leaderRoleCode = materialStareMapper.getOperatLeaderRole(userId);
|
|
|
|
|
- if (!Check.isNull(leaderRoleCode)) {
|
|
|
|
|
- if ("touTiaoOperationManager".equals(leaderRoleCode)) {
|
|
|
|
|
- mediaType = "1";
|
|
|
|
|
- } else if ("kuaishouOperationManager".equals(leaderRoleCode)) {
|
|
|
|
|
- mediaType = "2";
|
|
|
|
|
|
|
+ if (!"16".equals(mediaType)) {
|
|
|
|
|
+ //查询用户角色
|
|
|
|
|
+ String roleCode = materialStareMapper.getRoleCodeByUserId(userId);
|
|
|
|
|
+ //判断是否运营相关角色,并获取媒体类型
|
|
|
|
|
+ if (!Check.isNull(roleCode)) {
|
|
|
|
|
+ if ("touTiaoOperationManager".equals(roleCode)) {
|
|
|
|
|
+ mediaType = "1";
|
|
|
|
|
+ } else if ("kuaishouOperationManager".equals(roleCode)) {
|
|
|
|
|
+ mediaType = "2";
|
|
|
|
|
+ } else if (roleCode.toLowerCase().contains("perat")) {
|
|
|
|
|
+ String leaderRoleCode = materialStareMapper.getOperatLeaderRole(userId);
|
|
|
|
|
+ if (!Check.isNull(leaderRoleCode)) {
|
|
|
|
|
+ if ("touTiaoOperationManager".equals(leaderRoleCode)) {
|
|
|
|
|
+ mediaType = "1";
|
|
|
|
|
+ } else if ("kuaishouOperationManager".equals(leaderRoleCode)) {
|
|
|
|
|
+ mediaType = "2";
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
+ } else {
|
|
|
|
|
+ return Result.successMsg("非运营相关角色,不显示数据", null);
|
|
|
}
|
|
}
|
|
|
- } else {
|
|
|
|
|
- return Result.successMsg("非运营相关角色,不显示数据", null);
|
|
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- return materialStareService.kuaiShouOperateDateTotalPersonal(mediaType, startTime, endTime, userId);
|
|
|
|
|
|
|
+ String cacheKey = "dashboard:stare:dateTotalPersonal:" + safe(mediaType) + ":" + safe(startTime) + ":" + safe(endTime) + ":" + safe(userId);
|
|
|
|
|
+ final String resolvedMediaType = mediaType;
|
|
|
|
|
+ return getCachedResult(cacheKey, resolveCacheTtl(startTime, endTime), () -> materialStareService.kuaiShouOperateDateTotalPersonal(resolvedMediaType, startTime, endTime, userId));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @SuppressWarnings("unchecked")
|
|
|
|
|
+ private Result<JSONObject> getCachedResult(String cacheKey, long ttlMillis, Supplier<Result> loader) {
|
|
|
|
|
+ return dashboardLocalCacheService.getIfCacheable(cacheKey, ttlMillis, loader, result -> result != null && result.isSuccess());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private long resolveCacheTtl(String startTime, String endTime) {
|
|
|
|
|
+ String today = DateUtils.formatDate(new Date());
|
|
|
|
|
+ if (today.equals(startTime) && today.equals(endTime)) {
|
|
|
|
|
+ return REALTIME_CACHE_TTL;
|
|
|
|
|
+ }
|
|
|
|
|
+ return HISTORY_CACHE_TTL;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private String safe(Object value) {
|
|
|
|
|
+ return value == null ? "null" : String.valueOf(value);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -576,7 +616,6 @@ public class KuaiShouMaterialStareController {
|
|
|
@RequestParam(name = "endTime") String endTime,
|
|
@RequestParam(name = "endTime") String endTime,
|
|
|
@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
|
|
@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
|
|
|
@RequestParam(name = "pageSize", defaultValue = "5") Integer pageSize) {
|
|
@RequestParam(name = "pageSize", defaultValue = "5") Integer pageSize) {
|
|
|
-
|
|
|
|
|
return materialStareService.getOperationGroupData(userId, mediaType, startTime, endTime, pageNum, pageSize);
|
|
return materialStareService.getOperationGroupData(userId, mediaType, startTime, endTime, pageNum, pageSize);
|
|
|
}
|
|
}
|
|
|
|
|
|