Commit 0c154d13 by 吴博

feat: [none] 新增资源导出接口

parent c575891e
...@@ -2,7 +2,8 @@ package com.pcloud.book.applet.biz; ...@@ -2,7 +2,8 @@ package com.pcloud.book.applet.biz;
import com.pcloud.book.applet.entity.AppletNewsServe; import com.pcloud.book.applet.entity.AppletNewsServe;
import com.pcloud.common.page.PageBeanNew; import com.pcloud.common.page.PageBeanNew;
import java.util.List;
import java.util.Map;
/** /**
* (AppletNewsServe)表服务接口 * (AppletNewsServe)表服务接口
...@@ -48,4 +49,5 @@ public interface AppletNewsServeBiz { ...@@ -48,4 +49,5 @@ public interface AppletNewsServeBiz {
*/ */
void deleteById(Long id); void deleteById(Long id);
Map<String, Object> exportClickCountExcel(Integer count, String date, Integer sourceType);
} }
\ No newline at end of file
package com.pcloud.book.applet.biz.impl; package com.pcloud.book.applet.biz.impl;
import com.pcloud.book.applet.dao.AppletLinkClickDao;
import com.pcloud.book.applet.dto.ExportClickDTO;
import com.pcloud.book.applet.entity.AppletNewsServe; import com.pcloud.book.applet.entity.AppletNewsServe;
import com.pcloud.book.applet.dao.AppletNewsServeDao; import com.pcloud.book.applet.dao.AppletNewsServeDao;
import com.pcloud.book.applet.biz.AppletNewsServeBiz; import com.pcloud.book.applet.biz.AppletNewsServeBiz;
import com.pcloud.book.applet.enums.SourceTypeEnum;
import com.pcloud.book.consumer.common.ExportConsr;
import com.pcloud.common.core.aspect.ParamLog; import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.page.PageBeanNew; import com.pcloud.common.page.PageBeanNew;
import com.pcloud.common.page.PageParam; import com.pcloud.common.page.PageParam;
...@@ -13,7 +17,14 @@ import org.slf4j.Logger; ...@@ -13,7 +17,14 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Objects;
/** /**
* (AppletNewsServe)表服务实现类 * (AppletNewsServe)表服务实现类
...@@ -28,6 +39,10 @@ public class AppletNewsServeBizImpl implements AppletNewsServeBiz { ...@@ -28,6 +39,10 @@ public class AppletNewsServeBizImpl implements AppletNewsServeBiz {
@Autowired @Autowired
private AppletNewsServeDao appletNewsServeDao; private AppletNewsServeDao appletNewsServeDao;
@Autowired
private AppletLinkClickDao appletLinkClickDao;
@Autowired
private ExportConsr exportConsr;
@Override @Override
@ParamLog("通过ID查询单条数据") @ParamLog("通过ID查询单条数据")
...@@ -69,4 +84,71 @@ public class AppletNewsServeBizImpl implements AppletNewsServeBiz { ...@@ -69,4 +84,71 @@ public class AppletNewsServeBizImpl implements AppletNewsServeBiz {
public void deleteById(Long id) { public void deleteById(Long id) {
appletNewsServeDao.deleteById(id); appletNewsServeDao.deleteById(id);
} }
@Override
public Map<String, Object> exportClickCountExcel(Integer count, String date, Integer sourceType) {
List<ExportClickDTO> exportClickDTOS = new ArrayList<>();
String excelUrl = null;
Map<String, Object> result = new HashMap<>();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
if (Objects.equals(SourceTypeEnum.NEWS.value, sourceType)) {
exportClickDTOS = appletLinkClickDao.getNews(count, date);
String fileName ="资讯点击量top50-研发-" + simpleDateFormat.format(new Date());
excelUrl = getExcelUrl4News(exportClickDTOS, fileName);
result.put("fileUrl", excelUrl);
result.put("fileName", fileName);
return result;
} else if (Objects.equals(SourceTypeEnum.THIRD_GROUP.value, sourceType)) {
exportClickDTOS = appletLinkClickDao.getThirdGroup(count, date);
String fileName ="第三方群点击量top50-研发-" + simpleDateFormat.format(new Date());
excelUrl = getExcelUrl4Group(exportClickDTOS, fileName);
result.put("fileUrl", excelUrl);
result.put("fileName", fileName);
return result;
} else if (Objects.equals(SourceTypeEnum.NORMAL_GROUP.value, sourceType)) {
exportClickDTOS = appletLinkClickDao.getNormalGroup(count, date);
String fileName ="群分类点击量top50-研发-" + simpleDateFormat.format(new Date());
excelUrl = getExcelUrl4Group(exportClickDTOS, fileName);
result.put("fileUrl", excelUrl);
result.put("fileName", fileName);
return result;
}
return new HashMap<>();
}
private String getExcelUrl4Group(List<ExportClickDTO> exportClickDTOS, String fileName) {
// 字段名
String[] rowsName = {"资源id", "点击量", "群名称"};
List<Object[]> dataList = new ArrayList<>();
Object[] objs;
for (int i = 0; i < exportClickDTOS.size(); i++) {
ExportClickDTO exportClickDTO = exportClickDTOS.get(i);
objs = new Object[rowsName.length];
objs[0] = exportClickDTO.getId();
objs[1] = exportClickDTO.getClickCount();
objs[2] = exportClickDTO.getResourceName();
dataList.add(objs);
}
String fileUrl = exportConsr.exportExcel(fileName, rowsName, dataList);
return fileUrl;
}
private String getExcelUrl4News(List<ExportClickDTO> exportClickDTOS, String fileName) {
// 字段名
String[] rowsName = {"资源id", "点击量", "资讯名称", "资讯来源", "权益类型"};
List<Object[]> dataList = new ArrayList<>();
Object[] objs;
for (int i = 0; i < exportClickDTOS.size(); i++) {
ExportClickDTO exportClickDTO = exportClickDTOS.get(i);
objs = new Object[rowsName.length];
objs[0] = exportClickDTO.getId();
objs[1] = exportClickDTO.getClickCount();
objs[2] = exportClickDTO.getResourceName();
objs[3] = exportClickDTO.getSource();
objs[4] = exportClickDTO.getRightsSettingName();
dataList.add(objs);
}
String fileUrl = exportConsr.exportExcel(fileName, rowsName, dataList);
return fileUrl;
}
} }
\ No newline at end of file
...@@ -4,6 +4,7 @@ import java.util.List; ...@@ -4,6 +4,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import com.pcloud.book.applet.dto.AppletChartDateDTO; import com.pcloud.book.applet.dto.AppletChartDateDTO;
import com.pcloud.book.applet.dto.ExportClickDTO;
import com.pcloud.book.applet.dto.PvuvDTO; import com.pcloud.book.applet.dto.PvuvDTO;
import com.pcloud.book.applet.entity.AppletLinkClick; import com.pcloud.book.applet.entity.AppletLinkClick;
import com.pcloud.common.core.dao.BaseDao; import com.pcloud.common.core.dao.BaseDao;
...@@ -38,4 +39,10 @@ public interface AppletLinkClickDao extends BaseDao<AppletLinkClick> { ...@@ -38,4 +39,10 @@ public interface AppletLinkClickDao extends BaseDao<AppletLinkClick> {
*/ */
Map<Long, PvuvDTO> mapCouponUseCount(List<Long> fromIds); Map<Long, PvuvDTO> mapCouponUseCount(List<Long> fromIds);
List<ExportClickDTO> getThirdGroup(Integer count, String date);
List<ExportClickDTO> getNormalGroup(Integer count, String date);
List<ExportClickDTO> getNews(Integer count, String date);
} }
\ No newline at end of file
...@@ -2,6 +2,7 @@ package com.pcloud.book.applet.dao.impl; ...@@ -2,6 +2,7 @@ package com.pcloud.book.applet.dao.impl;
import com.pcloud.book.applet.dao.AppletLinkClickDao; import com.pcloud.book.applet.dao.AppletLinkClickDao;
import com.pcloud.book.applet.dto.AppletChartDateDTO; import com.pcloud.book.applet.dto.AppletChartDateDTO;
import com.pcloud.book.applet.dto.ExportClickDTO;
import com.pcloud.book.applet.dto.PvuvDTO; import com.pcloud.book.applet.dto.PvuvDTO;
import com.pcloud.book.applet.entity.AppletLinkClick; import com.pcloud.book.applet.entity.AppletLinkClick;
import com.pcloud.common.core.dao.BaseDaoImpl; import com.pcloud.common.core.dao.BaseDaoImpl;
...@@ -47,4 +48,28 @@ public class AppletLinkClickDaoImpl extends BaseDaoImpl<AppletLinkClick> impleme ...@@ -47,4 +48,28 @@ public class AppletLinkClickDaoImpl extends BaseDaoImpl<AppletLinkClick> impleme
map.put("list",fromIds); map.put("list",fromIds);
return getSessionTemplate().selectMap(getStatement("mapCouponUseCount"),map,"fromId"); return getSessionTemplate().selectMap(getStatement("mapCouponUseCount"),map,"fromId");
} }
@Override
public List<ExportClickDTO> getThirdGroup(Integer count, String date) {
Map<String,Object> map = new HashMap<>();
map.put("count", count);
map.put("date", date);
return getSessionTemplate().selectList(getStatement("getThirdGroup"), map);
}
@Override
public List<ExportClickDTO> getNormalGroup(Integer count, String date) {
Map<String,Object> map = new HashMap<>();
map.put("count", count);
map.put("date", date);
return getSessionTemplate().selectList(getStatement("getNormalGroup"), map);
}
@Override
public List<ExportClickDTO> getNews(Integer count, String date) {
Map<String,Object> map = new HashMap<>();
map.put("count", count);
map.put("date", date);
return getSessionTemplate().selectList(getStatement("getNews"), map);
}
} }
package com.pcloud.book.applet.dto;
import lombok.Data;
@Data
public class ExportClickDTO {
private Long id;
private Long clickCount;
private String resourceName;
private String source;
private String rightsSettingName;
}
package com.pcloud.book.applet.enums;
public enum SourceTypeEnum {
NEWS(1),
THIRD_GROUP(2),
NORMAL_GROUP(3)
;
SourceTypeEnum(Integer value) {
this.value = value;
}
public Integer value;
}
...@@ -11,6 +11,8 @@ import org.springframework.web.bind.annotation.*; ...@@ -11,6 +11,8 @@ import org.springframework.web.bind.annotation.*;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import java.util.Map;
/** /**
* (AppletNewsServe)表控制层 * (AppletNewsServe)表控制层
* *
...@@ -69,4 +71,12 @@ public class AppletNewsServeFacade { ...@@ -69,4 +71,12 @@ public class AppletNewsServeFacade {
return new ResponseDto<>(); return new ResponseDto<>();
} }
@GetMapping("exportClickCountExcel")
public ResponseDto<Map<String, Object>> exportClickCountExcel(@RequestParam(value = "count", required = false, defaultValue = "50") Integer count,
@RequestParam("date") String date,
@RequestParam("sourceType") Integer sourceType) {
Map<String, Object> map = appletNewsServeBiz.exportClickCountExcel(count, date,sourceType);
return new ResponseDto<>(map);
}
} }
\ No newline at end of file
...@@ -112,5 +112,66 @@ ...@@ -112,5 +112,66 @@
GROUP BY from_id GROUP BY from_id
</select> </select>
<select id="getThirdGroup" parameterType="map" resultType="com.pcloud.book.applet.dto.ExportClickDTO">
SELECT
from_id id,
count(*) clickCount,
b.NAME resourceName
FROM
`applet_link_click` a
LEFT JOIN pcloud_group_activity b ON a.from_id = b.id
WHERE
type_id = 4
AND record_type = 1
AND DATE_FORMAT(create_date,"%Y-%m-%d") = #{date}
GROUP BY
from_id
ORDER BY
clickCount DESC
LIMIT #{count}
</select>
<select id="getNormalGroup" parameterType="map" resultType="com.pcloud.book.applet.dto.ExportClickDTO">
SELECT
from_id id,
count(*) clickCount,
b.classify resourceName
FROM
applet_link_click a
LEFT JOIN book_group_classify b ON a.from_id = b.id
WHERE
type_id = 3
AND record_type = 1
AND DATE_FORMAT(create_date,"%Y-%m-%d") = #{date}
GROUP BY
from_id
ORDER BY
clickCount DESC
LIMIT #{count}
</select>
<select id="getNews" parameterType="map" resultType="com.pcloud.book.applet.dto.ExportClickDTO">
SELECT
from_id id,
count(*) clickCount,
n.news_name resourceName,
n.source source,
c.classify rightsSettingName
FROM
applet_link_click a
LEFT JOIN applet_news n ON a.from_id = n.id
LEFT JOIN rights_setting_classify c ON n.rights_classify_id = c.id
WHERE
type_id = 1
AND record_type = 1
AND DATE_FORMAT(create_date,"%Y-%m-%d") = #{date}
GROUP BY
from_id
ORDER BY
clickCount DESC
LIMIT #{count}
</select>
</mapper> </mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment