Преглед изворни кода

人群包功能开发。。。

zhaoxian пре 4 година
родитељ
комит
1ff5c7eb2d

+ 1 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/config/ShiroConfig.java

@@ -192,6 +192,7 @@ public class ShiroConfig {
         filterChainDefinitionMap.put("/ai/batchUpdate/*", "anon");
         filterChainDefinitionMap.put("/ctop/kuaishou/videoReport/*", "anon");
         //filterChainDefinitionMap.put("/overView/*", "anon");
+        filterChainDefinitionMap.put("/kuaishouCrowdPack/**", "anon");
 
         // 添加自己的过滤器并且取名为jwt
         Map<String, Filter> filterMap = new HashMap<>(1);

+ 315 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/controller/KuaishouCrowdPackController.java

@@ -0,0 +1,315 @@
+package cn.com.ctop.kuaishou.modules.ai.controller;
+
+import cn.com.ctop.common.module.annotation.AutoLog;
+import cn.com.ctop.common.module.utils.Check;
+import cn.com.ctop.common.module.utils.QueryGenerator;
+import cn.com.ctop.kuaishou.modules.ai.entity.KuaishouCrowdPack;
+import cn.com.ctop.kuaishou.modules.ai.service.IKuaishouCrowdPackService;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 人群报表
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2021-03-26
+ */
+@Slf4j
+@Api(tags = "人群报表")
+@RestController
+@RequestMapping("/kuaishouCrowdPack")
+public class KuaishouCrowdPackController {
+    @Autowired
+    private IKuaishouCrowdPackService kuaishouCrowdPackService;
+
+    /**
+     * 分页列表查询
+     *
+     * @param kuaishouCrowdPack
+     * @param pageNo
+     * @param pageSize
+     * @param req
+     * @return
+     */
+    @AutoLog(value = "人群报表-分页列表查询")
+    @ApiOperation(value = "人群报表-分页列表查询", notes = "人群报表-分页列表查询")
+    @GetMapping(value = "/list")
+    public Result<IPage<KuaishouCrowdPack>> list(KuaishouCrowdPack kuaishouCrowdPack,
+                                                 @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                 @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+                                                 HttpServletRequest req) {
+        Result<IPage<KuaishouCrowdPack>> result = new Result<>();
+        QueryWrapper<KuaishouCrowdPack> queryWrapper = QueryGenerator.initQueryWrapper(kuaishouCrowdPack, req.getParameterMap());
+        Page<KuaishouCrowdPack> page = new Page<KuaishouCrowdPack>(pageNo, pageSize);
+        IPage<KuaishouCrowdPack> pageList = kuaishouCrowdPackService.page(page, queryWrapper);
+        result.setSuccess(true);
+        result.setResult(pageList);
+        return result;
+    }
+
+    @GetMapping(value = "/queryPageList")
+    @PostMapping(value = "/queryPageList")
+    public Result<Object> queryPageList(@RequestBody JSONObject request) {
+        try {
+            return kuaishouCrowdPackService.queryPageList(request);
+        } catch (Exception e) {
+            log.error("查询异常,", e.getMessage());
+            e.printStackTrace();
+        }
+        return Result.error("查询失败");
+    }
+
+    /**
+     * 上传人群包
+     *
+     * @param kuaishouCrowdPack
+     * @return
+     */
+
+    @PostMapping(value = "/uploadCrowdPack")
+    public Result<Object> uploadCrowdPack(Integer type, String orientationName, Long accountId, String url) {
+        try {
+            if (Check.isNull(type) || Check.isNull(orientationName) || Check.isNull(url) || Check.isNull(accountId)) {
+                return Result.error("缺少参数");
+            }
+            return kuaishouCrowdPackService.uploadCrowdPack(type, orientationName, accountId, url);
+        } catch (Exception e) {
+            log.error("查询异常,", e.getMessage());
+            e.printStackTrace();
+        }
+        return Result.error("查询失败");
+    }
+
+    /**
+     * 账户推送
+     *
+     * @param kuaishouCrowdPack
+     * @return
+     */
+    @AutoLog(value = "账户推送")
+    @ApiOperation(value = "账户推送", notes = "账户推送")
+    @PostMapping(value = "/accountPush")
+    public Result<Object> accountPush(@RequestBody JSONObject request) {
+        try {
+            Long accountIds = request.getLong("accountIds");
+            String orientationId = request.getString("orientationId");
+            if (Check.isNull(accountIds) || Check.isNull(orientationId)) {
+                return Result.error("缺少参数");
+            }
+            return kuaishouCrowdPackService.accountPush(request);
+        } catch (Exception e) {
+            log.error("查询异常,", e.getMessage());
+            e.printStackTrace();
+        }
+        return Result.error("查询失败");
+    }
+
+    /**
+     * 添加
+     *
+     * @param kuaishouCrowdPack
+     * @return
+     */
+    @AutoLog(value = "人群报表-添加")
+    @ApiOperation(value = "人群报表-添加", notes = "人群报表-添加")
+    @PostMapping(value = "/add")
+    public Result<KuaishouCrowdPack> add(@RequestBody KuaishouCrowdPack kuaishouCrowdPack) {
+        Result<KuaishouCrowdPack> result = new Result<>();
+        try {
+            kuaishouCrowdPackService.save(kuaishouCrowdPack);
+            result.success("添加成功!");
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+            result.error500("操作失败");
+        }
+        return result;
+    }
+
+    /**
+     * 编辑
+     *
+     * @param kuaishouCrowdPack
+     * @return
+     */
+    @AutoLog(value = "人群报表-编辑")
+    @ApiOperation(value = "人群报表-编辑", notes = "人群报表-编辑")
+    @PutMapping(value = "/edit")
+    public Result<KuaishouCrowdPack> edit(@RequestBody KuaishouCrowdPack kuaishouCrowdPack) {
+        Result<KuaishouCrowdPack> result = new Result<KuaishouCrowdPack>();
+        KuaishouCrowdPack kuaishouCrowdPackEntity = kuaishouCrowdPackService.getById(kuaishouCrowdPack.getId());
+        if (kuaishouCrowdPackEntity == null) {
+            result.error500("未找到对应实体");
+        } else {
+            boolean ok = kuaishouCrowdPackService.updateById(kuaishouCrowdPack);
+            if (ok) {
+                result.success("修改成功!");
+            }
+        }
+
+        return result;
+    }
+
+    /**
+     * 通过id删除
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "人群报表-通过id删除")
+    @ApiOperation(value = "人群报表-通过id删除", notes = "人群报表-通过id删除")
+    @DeleteMapping(value = "/delete")
+    public Result<?> delete(@RequestParam(name = "id", required = true) String id) {
+        try {
+            kuaishouCrowdPackService.removeById(id);
+        } catch (Exception e) {
+            log.error("删除失败", e.getMessage());
+            return Result.error("删除失败!");
+        }
+        return Result.ok("删除成功!");
+    }
+
+    /**
+     * 批量删除
+     *
+     * @param ids
+     * @return
+     */
+    @AutoLog(value = "人群报表-批量删除")
+    @ApiOperation(value = "人群报表-批量删除", notes = "人群报表-批量删除")
+    @DeleteMapping(value = "/deleteBatch")
+    public Result<KuaishouCrowdPack> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
+        Result<KuaishouCrowdPack> result = new Result<>();
+        if (ids == null || "".equals(ids.trim())) {
+            result.error500("参数不识别!");
+        } else {
+            this.kuaishouCrowdPackService.removeByIds(Arrays.asList(ids.split(",")));
+            result.success("删除成功!");
+        }
+        return result;
+    }
+
+    /**
+     * 通过id查询
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "人群报表-通过id查询")
+    @ApiOperation(value = "人群报表-通过id查询", notes = "人群报表-通过id查询")
+    @GetMapping(value = "/queryById")
+    public Result<KuaishouCrowdPack> queryById(@RequestParam(name = "id", required = true) String id) {
+        Result<KuaishouCrowdPack> result = new Result<>();
+        KuaishouCrowdPack kuaishouCrowdPack = kuaishouCrowdPackService.getById(id);
+        if (kuaishouCrowdPack == null) {
+            result.error500("未找到对应实体");
+        } else {
+            result.setResult(kuaishouCrowdPack);
+            result.setSuccess(true);
+        }
+        return result;
+    }
+
+    /**
+     * 导出excel
+     *
+     * @param request
+     * @param response
+     */
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, HttpServletResponse response) {
+        // Step.1 组装查询条件
+        QueryWrapper<KuaishouCrowdPack> queryWrapper = null;
+        try {
+            String paramsStr = request.getParameter("paramsStr");
+            if (oConvertUtils.isNotEmpty(paramsStr)) {
+                String deString = URLDecoder.decode(paramsStr, "UTF-8");
+                KuaishouCrowdPack kuaishouCrowdPack = JSON.parseObject(deString, KuaishouCrowdPack.class);
+                queryWrapper = QueryGenerator.initQueryWrapper(kuaishouCrowdPack, request.getParameterMap());
+            }
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+
+        //Step.2 AutoPoi 导出Excel
+        ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+        List<KuaishouCrowdPack> pageList = kuaishouCrowdPackService.list(queryWrapper);
+        //导出文件名称
+        mv.addObject(NormalExcelConstants.FILE_NAME, "人群报表列表");
+        mv.addObject(NormalExcelConstants.CLASS, KuaishouCrowdPack.class);
+        mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("人群报表列表数据", "导出人:Jeecg", "导出信息"));
+        mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
+        return mv;
+    }
+
+    /**
+     * 通过excel导入数据
+     *
+     * @param request
+     * @param response
+     * @return
+     */
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+        Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
+        for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
+            MultipartFile file = entity.getValue();
+            ImportParams params = new ImportParams();
+            params.setTitleRows(2);
+            params.setHeadRows(1);
+            params.setNeedSave(true);
+            try {
+                List<KuaishouCrowdPack> listKuaishouCrowdPacks = ExcelImportUtil.importExcel(file.getInputStream(), KuaishouCrowdPack.class, params);
+                kuaishouCrowdPackService.saveBatch(listKuaishouCrowdPacks);
+                return Result.ok("文件导入成功!数据行数:" + listKuaishouCrowdPacks.size());
+            } catch (Exception e) {
+                log.error(e.getMessage(), e);
+                return Result.error("文件导入失败:" + e.getMessage());
+            } finally {
+                try {
+                    file.getInputStream().close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return Result.ok("文件导入失败!");
+    }
+
+}

+ 121 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/entity/KuaishouCrowdPack.java

@@ -0,0 +1,121 @@
+package cn.com.ctop.kuaishou.modules.ai.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * 人群报表
+ *package
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2021-03-26
+ */
+@Data
+@TableName("ctop_kuaishou_crowd_package")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "ctop_kuaishou_crowd_package对象", description = "人群报表")
+public class KuaishouCrowdPack {
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "id")
+    private Long id;
+    /**
+     * 账户ID
+     */
+    @Excel(name = "账户ID", width = 15)
+    @ApiModelProperty(value = "账户ID")
+    private Long accountId;
+    /**
+     * 上传日期
+     */
+    @Excel(name = "上传日期", width = 15)
+    @ApiModelProperty(value = "上传日期")
+    private String statDate;
+    /**
+     * 人群包ID
+     */
+    @Excel(name = "人群包ID", width = 15)
+    @ApiModelProperty(value = "人群包ID")
+    private Long orientationId;
+    /**
+     * 人群包名称
+     */
+    @Excel(name = "人群包名称", width = 15)
+    @ApiModelProperty(value = "人群包名称")
+    private String orientationName;
+    /**
+     * 链接
+     */
+    private String url;
+    /**
+     * 链接
+     */
+    private String signature;
+    /**
+     * 人群包类型 1上传人群,2广告人群,3主题专区,4逻辑规则,5人群扩展,6平台定制,7定制付费...
+     */
+    @Excel(name = "人群包类型 1上传人群,2广告人群,3主题专区,4逻辑规则,5人群扩展,6平台定制,7定制付费...", width = 15)
+    @ApiModelProperty(value = "人群包类型 1上传人群,2广告人群,3主题专区,4逻辑规则,5人群扩展,6平台定制,7定制付费...")
+    private String populationType;
+    /**
+     * 匹配类型 1:IMEI;2:IDFA;3:IMEI_MD5;4:IDFA_MD5;5:手机号-MD5;7:OAID;8:OAID_MD5
+     */
+    @Excel(name = "匹配类型 1:IMEI;2:IDFA;3:IMEI_MD5;4:IDFA_MD5;5:手机号-MD5;7:OAID;8:OAID_MD5", width = 15)
+    @ApiModelProperty(value = "匹配类型 1:IMEI;2:IDFA;3:IMEI_MD5;4:IDFA_MD5;5:手机号-MD5;7:OAID;8:OAID_MD5")
+    private Integer type;
+    /**
+     * 状态 0计算中,1已生效,2已删除,3推送中,4已推送,5计算失败,6推送失败,7已失效
+     */
+    @Excel(name = "状态 0计算中,1已生效,2已删除,3推送中,4已推送,5计算失败,6推送失败,7已失效", width = 15)
+    @ApiModelProperty(value = "状态 0计算中,1已生效,2已删除,3推送中,4已推送,5计算失败,6推送失败,7已失效")
+    private Integer status;
+    /**
+     * 覆盖人群
+     */
+    @Excel(name = "覆盖人群", width = 15)
+    @ApiModelProperty(value = "覆盖人群")
+    private Long coverNum;
+    /**
+     * 上传数量
+     */
+    @Excel(name = "上传数量", width = 15)
+    @ApiModelProperty(value = "上传数量")
+    private Long recordSize;
+    /**
+     * 匹配数量
+     */
+    @Excel(name = "匹配数量", width = 15)
+    @ApiModelProperty(value = "匹配数量")
+    private Long matchSize;
+    /**
+     * 创建时间
+     */
+    @Excel(name = "创建时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+    /**
+     * 修改时间
+     */
+    @Excel(name = "修改时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "修改时间")
+    private Date updateTime;
+}

+ 21 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/mapper/KuaishouCrowdPackMapper.java

@@ -0,0 +1,21 @@
+package cn.com.ctop.kuaishou.modules.ai.mapper;
+
+import java.util.List;
+
+import cn.com.ctop.kuaishou.modules.ai.entity.KuaishouCrowdPack;
+import com.alibaba.fastjson.JSONObject;
+import org.apache.ibatis.annotations.Param;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 人群报表
+ * @author: jeecg-boot
+ * @date:   2021-03-26
+ * @cersion: V1.0
+ */
+public interface KuaishouCrowdPackMapper extends BaseMapper<KuaishouCrowdPack> {
+
+    Long getTotal(JSONObject request);
+
+    List<KuaishouCrowdPack> queryPageList(JSONObject request);
+}

+ 14 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/mapper/xml/KuaishouCrowdPackMapper.xml

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.com.ctop.kuaishou.modules.ai.mapper.KuaishouCrowdPackMapper">
+
+    <select id="getTotal" resultType="java.lang.Long">
+
+    </select>
+
+     <select id="queryPageList" resultType="cn.com.ctop.kuaishou.modules.ai.entity.KuaishouCrowdPack">
+
+    </select>
+
+
+</mapper>

+ 21 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/service/IKuaishouCrowdPackService.java

@@ -0,0 +1,21 @@
+package cn.com.ctop.kuaishou.modules.ai.service;
+
+import cn.com.ctop.kuaishou.modules.ai.entity.KuaishouCrowdPack;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.common.api.vo.Result;
+
+/**
+ * @Description: 人群报表
+ * @Author: jeecg-boot
+ * @Date: 2021-03-26
+ * @Version: V1.0
+ */
+public interface IKuaishouCrowdPackService extends IService<KuaishouCrowdPack> {
+
+    Result<Object> queryPageList(JSONObject request);
+
+    Result<Object> uploadCrowdPack(Integer type, String orientationName, Long accountId, String url);
+
+    Result<Object> accountPush(JSONObject request);
+}

+ 103 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/service/impl/KuaishouCrowdPackServiceImpl.java

@@ -0,0 +1,103 @@
+package cn.com.ctop.kuaishou.modules.ai.service.impl;
+
+import cn.com.ctop.common.module.entity.CtopOauthToken;
+import cn.com.ctop.common.module.mapper.UserAllocationMapper;
+import cn.com.ctop.common.module.service.ICtopOauthTokenService;
+import cn.com.ctop.common.module.utils.Check;
+import cn.com.ctop.common.module.utils.LoadFileUtil;
+import cn.com.ctop.kuaishou.modules.ai.entity.KuaishouCrowdPack;
+import cn.com.ctop.kuaishou.modules.ai.mapper.KuaishouCrowdPackMapper;
+import cn.com.ctop.kuaishou.modules.ai.service.IKuaishouCrowdPackService;
+import cn.com.ctop.kuaishou.modules.batch.service.IKuaishouPopulationService;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.util.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+import java.util.UUID;
+
+/**
+ * 人群报表
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2021-03-26
+ */
+@Slf4j
+@Service
+public class KuaishouCrowdPackServiceImpl extends ServiceImpl<KuaishouCrowdPackMapper, KuaishouCrowdPack> implements IKuaishouCrowdPackService {
+
+    @Autowired
+    private KuaishouCrowdPackMapper crowdPackMapper;
+
+    @Autowired
+    private ICtopOauthTokenService tokenService;
+
+    @Autowired
+    private IKuaishouPopulationService iKuaishouPopulationService;
+
+    @Autowired
+    UserAllocationMapper userAllocationMapper;
+
+    @Value("${zip.local.download-path}")
+    private String downloadPath;
+
+
+    @Override
+    public Result<Object> queryPageList(JSONObject request) {
+        int pageNo = request.getInteger("pageNo");
+        int pageSize = request.getInteger("pageSize");
+        if (Check.isNull(pageNo)) {
+            pageNo = 1;
+        }
+        if (Check.isNull(pageSize)) {
+            pageSize = 10;
+        }
+        Long total = crowdPackMapper.getTotal(request);
+        PageHelper.startPage(pageNo, pageSize, false);
+        List<KuaishouCrowdPack> list = crowdPackMapper.queryPageList(request);
+        PageInfo pageInfo = new PageInfo(list);
+        pageInfo.setTotal(total);
+        return Result.ok(pageInfo);
+    }
+
+    @Override
+    public Result<Object> uploadCrowdPack(Integer type, String orientationName, Long accountId, String url) {
+        StringBuffer path = new StringBuffer();
+        path.append(downloadPath).append(DateUtils.getNowDate(DateUtils.WEB_FORMAT)).append("/").append(UUID.randomUUID().toString()).append("/");
+        log.info("-------下载到服务器地址:{}", path.toString());
+        String name = url.substring(url.lastIndexOf("/") + 1);
+//        String newFileUrl = FilesUtil.writeFiles(path.toString(), url, name);
+        String newFileUrl = LoadFileUtil.downLoadFromUrl(url, path.toString());
+//        String newFileUrl = url;
+        String md5 = null;
+        try {
+            md5 = LoadFileUtil.getMD5(newFileUrl);
+        } catch (IOException e) {
+            log.error("获取MD5签名失败", e);
+        }
+        CtopOauthToken token = tokenService.getTokenByAccountId(accountId);
+        JSONObject jsonObject = iKuaishouPopulationService.updatePopulation(token, type, orientationName, newFileUrl);
+        if (jsonObject.getInteger("code") == 0) {
+            KuaishouCrowdPack crowdPack = JSONObject.toJavaObject(jsonObject, KuaishouCrowdPack.class);
+            crowdPack.setSignature(md5);
+            crowdPack.setUrl(url);
+            this.save(crowdPack);
+        }
+        return null;
+    }
+
+    @Override
+    public Result<Object> accountPush(JSONObject request) {
+        return null;
+    }
+}

+ 5 - 1
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/IKuaishouInterfaceService.java

@@ -5,7 +5,11 @@ import cn.com.ctop.common.module.entity.CtopOauthToken;
 import cn.com.ctop.kuaishou.modules.batch.entity.vo.ConvertVo;
 import cn.com.ctop.kuaishou.modules.material.entity.KuaishouResult;
 import cn.com.ctop.kuaishou.modules.material.entity.KuaishouResultToken;
-import cn.com.ctop.kuaishou.modules.report.entity.*;
+import cn.com.ctop.kuaishou.modules.report.entity.KuaishouReportDailyCampaign;
+import cn.com.ctop.kuaishou.modules.report.entity.KuaishouReportDailyCreative;
+import cn.com.ctop.kuaishou.modules.report.entity.KuaishouReportHourlyCampaign;
+import cn.com.ctop.kuaishou.modules.report.entity.KuaishouReportHourlyCreative;
+import cn.com.ctop.kuaishou.modules.report.entity.KuaishouReportHourlyGroup;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 

+ 5 - 3
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/IKuaishouPopulationService.java

@@ -1,8 +1,10 @@
 package cn.com.ctop.kuaishou.modules.batch.service;
 
+import cn.com.ctop.common.module.entity.CtopOauthToken;
 import cn.com.ctop.kuaishou.modules.batch.entity.KuaishouPopulation;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.io.File;
 import java.util.List;
@@ -33,11 +35,11 @@ public interface IKuaishouPopulationService extends IService<KuaishouPopulation>
      * @param populationName 人群包名称
      * @param type           1:IMEI 2:IDFA 3:IMEI_MD5 4:IDFA_MD5 5:手机号-MD5 7:OAID
      * @param accountId      广告主ID
-     * @param file           请求的页码
+     * @param filePath       文件路径
      * @param accessToken    token
      * @return
      */
-    JSONObject updatePopulation(Long accountId, int type, String populationName, File file, String accessToken);
+    JSONObject updatePopulation(CtopOauthToken token,int type, String populationName,  String filePath);
 
     /**
      * 推送人群包接口(单日最多可调用50次推送接口)
@@ -91,7 +93,7 @@ public interface IKuaishouPopulationService extends IService<KuaishouPopulation>
      * @param file           请求的文件,最大支持500MB
      * @return
      */
-    JSONObject updatePopulation(Long accountId, Integer type, Long populationId, Integer populationType, File file, String accessToken);
+    JSONObject updatePopulations(Long accountId, Integer type, Long populationId, Integer populationType, File file, String accessToken);
 
     /**
      * 获取人群预估数量

+ 19 - 16
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaishouPopulationServiceImpl.java

@@ -1,11 +1,13 @@
 package cn.com.ctop.kuaishou.modules.batch.service.impl;
 
+import cn.com.ctop.common.module.entity.CtopOauthToken;
 import cn.com.ctop.common.module.utils.Check;
 import cn.com.ctop.common.module.utils.HttpUtils;
 import cn.com.ctop.common.module.utils.KuaishouInterfaceConstant;
 import cn.com.ctop.common.module.utils.PropertiesUtils;
 import cn.com.ctop.kuaishou.modules.batch.entity.KuaishouPopulation;
 import cn.com.ctop.kuaishou.modules.batch.mapper.KuaishouPopulationMapper;
+import cn.com.ctop.kuaishou.modules.batch.service.IKuaishouInterfaceService;
 import cn.com.ctop.kuaishou.modules.batch.service.IKuaishouPopulationService;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -33,6 +35,9 @@ public class KuaishouPopulationServiceImpl extends ServiceImpl<KuaishouPopulatio
     private KuaishouPopulationMapper populationMapper;
     private String urlPath = PropertiesUtils.getConfig("kuaishou_api_url");
 
+    @Autowired
+    private IKuaishouInterfaceService kuaishouInterfaceService;
+
     /**
      * 获取人群包接口
      *
@@ -74,23 +79,21 @@ public class KuaishouPopulationServiceImpl extends ServiceImpl<KuaishouPopulatio
      * @return
      */
     @Override
-    public JSONObject updatePopulation(Long accountId, int type, String populationName, File file, String accessToken) {
-        log.info("上传人群包,accountId:{}", accountId);
+    public JSONObject updatePopulation(CtopOauthToken token, int type, String populationName, String filePath) {
         String url = urlPath + KuaishouInterfaceConstant.POPULATION_UPLOAD;
-        Map<String, String> headers = new HashMap<>();
-        headers.put("Access-Token", accessToken);
-        headers.put("Content-Type", "application/json");
+        Map<String, String> headerMap = new HashMap<>();
+        headerMap.put("Access-Token", token.getAccessToken());
+        headerMap.put("Content-Type", "application/json");
         JSONObject requestJson = new JSONObject();
-        requestJson.put("advertiser_id", accountId);
-        requestJson.put("type", type);
-        requestJson.put("orientation_name", populationName);
-        requestJson.put("file", file);
-        String result = HttpUtils.kuaiShouhttpPostRequest(url, requestJson.toJSONString(), headers);
-        JSONObject resultJson = JSONObject.parseObject(result);
-        if (!Check.isNull(resultJson)) {
-            Integer code = resultJson.getInteger("code");
-            if (code == 0) {
-                return resultJson.getJSONObject("data");
+        Map<String, Object> paramMap = new HashMap<>();
+        paramMap.put("advertiser_id", token.getAccountId());
+        paramMap.put("type", type);
+        paramMap.put("orientation_name", populationName);
+        String result = kuaishouInterfaceService.exceptInfoForRestTemplate(url, paramMap, headerMap, filePath);
+        if (!Check.isNull(result)) {
+            JSONObject resultJson = JSONObject.parseObject(result);
+            if (!Check.isNull(resultJson)) {
+                return resultJson;
             }
         }
         return null;
@@ -232,7 +235,7 @@ public class KuaishouPopulationServiceImpl extends ServiceImpl<KuaishouPopulatio
      * @return
      */
     @Override
-    public JSONObject updatePopulation(Long accountId, Integer type, Long populationId, Integer populationType, File file, String accessToken) {
+    public JSONObject updatePopulations(Long accountId, Integer type, Long populationId, Integer populationType, File file, String accessToken) {
         String url = urlPath + KuaishouInterfaceConstant.POPULATION_UPDATE;
         Map<String, String> headers = new HashMap<>();
         headers.put("Access-Token", accessToken);