From 97aa4d579c4ae86905d079163757d7cc0cd7af83 Mon Sep 17 00:00:00 2001 From: "kuang.yife" Date: Sun, 29 Oct 2023 22:59:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=8D=8E=E4=B8=BA=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BD=92=E5=9B=A0=E5=88=86=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 7 + .../controller/system/TaskDataController.java | 127 +++++++++++++++ .../resources/templates/system/data/add.html | 85 ++++++++++ .../resources/templates/system/data/data.html | 154 ++++++++++++++++++ .../resources/templates/system/data/edit.html | 86 ++++++++++ ruoyi-common/pom.xml | 5 + ruoyi-quartz/pom.xml | 5 + .../quartz/service/HuaWeiDataRespService.java | 7 + .../impl/HuaWeiDataRespServiceImpl.java | 76 +++++++++ .../ruoyi/quartz/task/HuaWeiDataRespTask.java | 23 +++ .../com/ruoyi/system/domain/TaskData.java | 59 +++++++ .../ruoyi/system/mapper/TaskDataMapper.java | 61 +++++++ .../system/service/ITaskDataService.java | 61 +++++++ .../service/impl/TaskDataServiceImpl.java | 97 +++++++++++ .../mapper/system/TaskDataMapper.xml | 117 +++++++++++++ 15 files changed, 970 insertions(+) create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/TaskDataController.java create mode 100644 ruoyi-admin/src/main/resources/templates/system/data/add.html create mode 100644 ruoyi-admin/src/main/resources/templates/system/data/data.html create mode 100644 ruoyi-admin/src/main/resources/templates/system/data/edit.html create mode 100644 ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/HuaWeiDataRespService.java create mode 100644 ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/HuaWeiDataRespServiceImpl.java create mode 100644 ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/HuaWeiDataRespTask.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/TaskData.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/mapper/TaskDataMapper.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/ITaskDataService.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TaskDataServiceImpl.java create mode 100644 ruoyi-system/src/main/resources/mapper/system/TaskDataMapper.xml diff --git a/pom.xml b/pom.xml index eb2da607..8499ce82 100644 --- a/pom.xml +++ b/pom.xml @@ -32,12 +32,19 @@ 1.18.12 8.5.5 7.4.0 + 5.8.22 + + cn.hutool + hutool-all + ${hutool.version} + + io.minio minio diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/TaskDataController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/TaskDataController.java new file mode 100644 index 00000000..627d661a --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/TaskDataController.java @@ -0,0 +1,127 @@ +package com.ruoyi.web.controller.system; + +import java.util.List; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.system.domain.TaskData; +import com.ruoyi.system.service.ITaskDataService; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.common.core.page.TableDataInfo; + +/** + * 归因数据回传Controller + * + * @author ruoyi + * @date 2023-10-29 + */ +@Controller +@RequestMapping("/system/data") +public class TaskDataController extends BaseController +{ + private String prefix = "system/data"; + + @Autowired + private ITaskDataService taskDataService; + + @RequiresPermissions("system:data:view") + @GetMapping() + public String data() + { + return prefix + "/data"; + } + + /** + * 查询归因数据回传列表 + */ + @RequiresPermissions("system:data:list") + @PostMapping("/list") + @ResponseBody + public TableDataInfo list(TaskData taskData) + { + startPage(); + List list = taskDataService.selectTaskDataList(taskData); + return getDataTable(list); + } + + /** + * 导出归因数据回传列表 + */ + @RequiresPermissions("system:data:export") + @Log(title = "归因数据回传", businessType = BusinessType.EXPORT) + @PostMapping("/export") + @ResponseBody + public AjaxResult export(TaskData taskData) + { + List list = taskDataService.selectTaskDataList(taskData); + ExcelUtil util = new ExcelUtil(TaskData.class); + return util.exportExcel(list, "归因数据回传数据"); + } + + /** + * 新增归因数据回传 + */ + @GetMapping("/add") + public String add() + { + return prefix + "/add"; + } + + /** + * 新增保存归因数据回传 + */ + @RequiresPermissions("system:data:add") + @Log(title = "归因数据回传", businessType = BusinessType.INSERT) + @PostMapping("/add") + @ResponseBody + public AjaxResult addSave(TaskData taskData) + { + return toAjax(taskDataService.insertTaskData(taskData)); + } + + /** + * 修改归因数据回传 + */ + @RequiresPermissions("system:data:edit") + @GetMapping("/edit/{id}") + public String edit(@PathVariable("id") Long id, ModelMap mmap) + { + TaskData taskData = taskDataService.selectTaskDataById(id); + mmap.put("taskData", taskData); + return prefix + "/edit"; + } + + /** + * 修改保存归因数据回传 + */ + @RequiresPermissions("system:data:edit") + @Log(title = "归因数据回传", businessType = BusinessType.UPDATE) + @PostMapping("/edit") + @ResponseBody + public AjaxResult editSave(TaskData taskData) + { + return toAjax(taskDataService.updateTaskData(taskData)); + } + + /** + * 删除归因数据回传 + */ + @RequiresPermissions("system:data:remove") + @Log(title = "归因数据回传", businessType = BusinessType.DELETE) + @PostMapping( "/remove") + @ResponseBody + public AjaxResult remove(String ids) + { + return toAjax(taskDataService.deleteTaskDataByIds(ids)); + } +} diff --git a/ruoyi-admin/src/main/resources/templates/system/data/add.html b/ruoyi-admin/src/main/resources/templates/system/data/add.html new file mode 100644 index 00000000..ff375374 --- /dev/null +++ b/ruoyi-admin/src/main/resources/templates/system/data/add.html @@ -0,0 +1,85 @@ + + + + + + +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/templates/system/data/data.html b/ruoyi-admin/src/main/resources/templates/system/data/data.html new file mode 100644 index 00000000..6ca29d9b --- /dev/null +++ b/ruoyi-admin/src/main/resources/templates/system/data/data.html @@ -0,0 +1,154 @@ + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/templates/system/data/edit.html b/ruoyi-admin/src/main/resources/templates/system/data/edit.html new file mode 100644 index 00000000..98879118 --- /dev/null +++ b/ruoyi-admin/src/main/resources/templates/system/data/edit.html @@ -0,0 +1,86 @@ + + + + + + +
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/ruoyi-common/pom.xml b/ruoyi-common/pom.xml index dd5807f6..73743905 100644 --- a/ruoyi-common/pom.xml +++ b/ruoyi-common/pom.xml @@ -17,6 +17,11 @@ + + cn.hutool + hutool-all + + org.springframework diff --git a/ruoyi-quartz/pom.xml b/ruoyi-quartz/pom.xml index 065a765c..479c21dc 100644 --- a/ruoyi-quartz/pom.xml +++ b/ruoyi-quartz/pom.xml @@ -35,6 +35,11 @@ ruoyi-common + + com.ruoyi + ruoyi-system + + \ No newline at end of file diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/HuaWeiDataRespService.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/HuaWeiDataRespService.java new file mode 100644 index 00000000..ecd6ed46 --- /dev/null +++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/HuaWeiDataRespService.java @@ -0,0 +1,7 @@ +package com.ruoyi.quartz.service; + +public interface HuaWeiDataRespService { + + public void getTodayData(); + +} diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/HuaWeiDataRespServiceImpl.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/HuaWeiDataRespServiceImpl.java new file mode 100644 index 00000000..2d63bf0e --- /dev/null +++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/HuaWeiDataRespServiceImpl.java @@ -0,0 +1,76 @@ +package com.ruoyi.quartz.service.impl; + +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpResponse; +import cn.hutool.http.HttpUtil; +import com.alibaba.fastjson.JSONObject; +import com.ruoyi.quartz.service.HuaWeiDataRespService; +import com.ruoyi.system.domain.TaskData; +import com.ruoyi.system.service.ITaskDataService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.text.SimpleDateFormat; +import java.util.*; + +@Slf4j +@Service +public class HuaWeiDataRespServiceImpl implements HuaWeiDataRespService { + + @Autowired + private ITaskDataService taskDataService; + + @Override + public void getTodayData() { + String authorization = this.getToken(); + String clientId = "1262989161703450304"; + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); + JSONObject contentObject = new JSONObject(); + contentObject.put("startDate", format.format(new Date())); + contentObject.put("endDate",format.format(new Date())); + List taskIds = new ArrayList<>(); + taskIds.add("108366615"); + JSONObject appJosn = new JSONObject(); + appJosn.put("appIds", taskIds); + contentObject.put("filtering", appJosn); + HttpRequest httpRequest = HttpUtil.createPost("https://connect-api.cloud.huawei.com/api/marketing-api/v1/report/ad/subtask"); + Map headerMap = new HashMap<>(); + headerMap.put("client_id", clientId); + headerMap.put("Authorization", authorization); + httpRequest.addHeaders(headerMap); + httpRequest.body(contentObject.toJSONString()); + try { + HttpResponse response = httpRequest.execute(); + log.info(response.body()); + JSONObject taskJson = JSONObject.parseObject(response.body()); + if("20770001".equals(taskJson.getString("code"))){ + JSONObject dataJson = taskJson.getJSONArray("datas").getJSONObject(0); + TaskData taskData = new TaskData(); + taskData.setClick(dataJson.getLong("click")); + taskData.setDownload(dataJson.getLong("download")); + taskData.setCostDate(dataJson.getString("statDate")); + taskData.setExposure(dataJson.getLong("exposure")); + taskData.setClickRate(dataJson.getString("clickRate")); + taskData.setDownloadRate(dataJson.getString("downloadRate")); + taskData.setTotalCost(dataJson.getString("cost")); + taskData.setSourceApp("华为"); + taskData.setDownloadAvgCost(dataJson.getString("downloadAverageCost")); + taskData.setCreateTime(new Date()); + taskDataService.insertTaskData(taskData); + } + }catch (Exception e){ + e.printStackTrace(); + } + } + + public String getToken(){ + JSONObject contentJson = new JSONObject(); + contentJson.put("grant_type","client_credentials"); + contentJson.put("client_id","1262989161703450304"); + contentJson.put("client_secret","57A572E30208BF67AD2FD19B3F58C0B07FFBD4AE3AB775617138BD69B85AB7C3"); + String result = HttpUtil.post("https://connect-api.cloud.huawei.com/api/oauth2/v1/token", contentJson.toJSONString()); + JSONObject resultJson = JSONObject.parseObject(result); + return "Bearer " + resultJson.getString("access_token"); + } +} diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/HuaWeiDataRespTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/HuaWeiDataRespTask.java new file mode 100644 index 00000000..0397fe55 --- /dev/null +++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/HuaWeiDataRespTask.java @@ -0,0 +1,23 @@ +package com.ruoyi.quartz.task; + +import com.ruoyi.quartz.service.HuaWeiDataRespService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + *

华为归因数据取回

+ * @author clunt + */ +@Component("huaWeiDataRespTask") +public class HuaWeiDataRespTask { + + + @Autowired + private HuaWeiDataRespService huaWeiDataRespService; + + public void ryParams() { + huaWeiDataRespService.getTodayData(); + } + + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TaskData.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TaskData.java new file mode 100644 index 00000000..f18f8a8e --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TaskData.java @@ -0,0 +1,59 @@ +package com.ruoyi.system.domain; + +import lombok.Data; +import com.ruoyi.common.annotation.Excel; +import com.ruoyi.common.core.domain.BaseEntity; +import lombok.EqualsAndHashCode; + +/** + * 归因数据回传对象 task_data + * + * @author ruoyi + * @date 2023-10-29 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class TaskData extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键id */ + private Long id; + + /** 消耗日期 */ + @Excel(name = "消耗日期") + private String costDate; + + /** 来源App */ + @Excel(name = "来源App") + private String sourceApp; + + /** 总花费 */ + @Excel(name = "总花费") + private String totalCost; + + /** 曝光次数 */ + @Excel(name = "曝光次数") + private Long exposure; + + /** 点击次数 */ + @Excel(name = "点击次数") + private Long click; + + /** 点击率 */ + @Excel(name = "点击率") + private String clickRate; + + /** 下载次数 */ + @Excel(name = "下载次数") + private Long download; + + /** 下载率 */ + @Excel(name = "下载率") + private String downloadRate; + + /** 每次下载花费 */ + @Excel(name = "每次下载花费") + private String downloadAvgCost; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TaskDataMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TaskDataMapper.java new file mode 100644 index 00000000..256a19fd --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TaskDataMapper.java @@ -0,0 +1,61 @@ +package com.ruoyi.system.mapper; + +import java.util.List; +import com.ruoyi.system.domain.TaskData; + +/** + * 归因数据回传Mapper接口 + * + * @author ruoyi + * @date 2023-10-29 + */ +public interface TaskDataMapper +{ + /** + * 查询归因数据回传 + * + * @param id 归因数据回传主键 + * @return 归因数据回传 + */ + public TaskData selectTaskDataById(Long id); + + /** + * 查询归因数据回传列表 + * + * @param taskData 归因数据回传 + * @return 归因数据回传集合 + */ + public List selectTaskDataList(TaskData taskData); + + /** + * 新增归因数据回传 + * + * @param taskData 归因数据回传 + * @return 结果 + */ + public int insertTaskData(TaskData taskData); + + /** + * 修改归因数据回传 + * + * @param taskData 归因数据回传 + * @return 结果 + */ + public int updateTaskData(TaskData taskData); + + /** + * 删除归因数据回传 + * + * @param id 归因数据回传主键 + * @return 结果 + */ + public int deleteTaskDataById(Long id); + + /** + * 批量删除归因数据回传 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteTaskDataByIds(String[] ids); +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ITaskDataService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ITaskDataService.java new file mode 100644 index 00000000..76b906ab --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ITaskDataService.java @@ -0,0 +1,61 @@ +package com.ruoyi.system.service; + +import java.util.List; +import com.ruoyi.system.domain.TaskData; + +/** + * 归因数据回传Service接口 + * + * @author ruoyi + * @date 2023-10-29 + */ +public interface ITaskDataService +{ + /** + * 查询归因数据回传 + * + * @param id 归因数据回传主键 + * @return 归因数据回传 + */ + public TaskData selectTaskDataById(Long id); + + /** + * 查询归因数据回传列表 + * + * @param taskData 归因数据回传 + * @return 归因数据回传集合 + */ + public List selectTaskDataList(TaskData taskData); + + /** + * 新增归因数据回传 + * + * @param taskData 归因数据回传 + * @return 结果 + */ + public int insertTaskData(TaskData taskData); + + /** + * 修改归因数据回传 + * + * @param taskData 归因数据回传 + * @return 结果 + */ + public int updateTaskData(TaskData taskData); + + /** + * 批量删除归因数据回传 + * + * @param ids 需要删除的归因数据回传主键集合 + * @return 结果 + */ + public int deleteTaskDataByIds(String ids); + + /** + * 删除归因数据回传信息 + * + * @param id 归因数据回传主键 + * @return 结果 + */ + public int deleteTaskDataById(Long id); +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TaskDataServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TaskDataServiceImpl.java new file mode 100644 index 00000000..972f355c --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TaskDataServiceImpl.java @@ -0,0 +1,97 @@ +package com.ruoyi.system.service.impl; + +import java.util.List; +import com.ruoyi.common.utils.DateUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.ruoyi.system.mapper.TaskDataMapper; +import com.ruoyi.system.domain.TaskData; +import com.ruoyi.system.service.ITaskDataService; +import com.ruoyi.common.core.text.Convert; + +/** + * 归因数据回传Service业务层处理 + * + * @author ruoyi + * @date 2023-10-29 + */ +@Service +public class TaskDataServiceImpl implements ITaskDataService +{ + @Autowired + private TaskDataMapper taskDataMapper; + + /** + * 查询归因数据回传 + * + * @param id 归因数据回传主键 + * @return 归因数据回传 + */ + @Override + public TaskData selectTaskDataById(Long id) + { + return taskDataMapper.selectTaskDataById(id); + } + + /** + * 查询归因数据回传列表 + * + * @param taskData 归因数据回传 + * @return 归因数据回传 + */ + @Override + public List selectTaskDataList(TaskData taskData) + { + return taskDataMapper.selectTaskDataList(taskData); + } + + /** + * 新增归因数据回传 + * + * @param taskData 归因数据回传 + * @return 结果 + */ + @Override + public int insertTaskData(TaskData taskData) + { + taskData.setCreateTime(DateUtils.getNowDate()); + return taskDataMapper.insertTaskData(taskData); + } + + /** + * 修改归因数据回传 + * + * @param taskData 归因数据回传 + * @return 结果 + */ + @Override + public int updateTaskData(TaskData taskData) + { + taskData.setUpdateTime(DateUtils.getNowDate()); + return taskDataMapper.updateTaskData(taskData); + } + + /** + * 批量删除归因数据回传 + * + * @param ids 需要删除的归因数据回传主键 + * @return 结果 + */ + @Override + public int deleteTaskDataByIds(String ids) + { + return taskDataMapper.deleteTaskDataByIds(Convert.toStrArray(ids)); + } + + /** + * 删除归因数据回传信息 + * + * @param id 归因数据回传主键 + * @return 结果 + */ + @Override + public int deleteTaskDataById(Long id) + { + return taskDataMapper.deleteTaskDataById(id); + } +} diff --git a/ruoyi-system/src/main/resources/mapper/system/TaskDataMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TaskDataMapper.xml new file mode 100644 index 00000000..b074913f --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/system/TaskDataMapper.xml @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + select id, cost_date, source_app, total_cost, exposure, click, click_rate, download, download_rate, download_avg_cost, create_by, create_time, update_by, update_time, remark from task_data + + + + + + + + insert into task_data + + cost_date, + source_app, + total_cost, + exposure, + click, + click_rate, + download, + download_rate, + download_avg_cost, + create_by, + create_time, + update_by, + update_time, + remark, + + + #{costDate}, + #{sourceApp}, + #{totalCost}, + #{exposure}, + #{click}, + #{clickRate}, + #{download}, + #{downloadRate}, + #{downloadAvgCost}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{remark}, + + + + + update task_data + + cost_date = #{costDate}, + source_app = #{sourceApp}, + total_cost = #{totalCost}, + exposure = #{exposure}, + click = #{click}, + click_rate = #{clickRate}, + download = #{download}, + download_rate = #{downloadRate}, + download_avg_cost = #{downloadAvgCost}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + remark = #{remark}, + + where id = #{id} + + + + delete from task_data where id = #{id} + + + + delete from task_data where id in + + #{id} + + + + \ No newline at end of file