Prechádzať zdrojové kódy

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	performance-appraisal/src/main/java/cn/com/ctop/huananvideoreport/mapper/xml/HuananVideoReportMapper.xml
syh 4 rokov pred
rodič
commit
5e94a484d4
47 zmenil súbory, kde vykonal 2021 pridanie a 18 odobranie
  1. 20 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/constants/MaterialType.java
  2. 19 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/constants/PutSystem.java
  3. 86 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/controller/DesignerCommitProcessCtrl.java
  4. 84 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/controller/OperatorApprovalProcessCtrl.java
  5. 135 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/controller/PlatformFileCtrl.java
  6. 193 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/controller/PlatformMaterialCtrl.java
  7. 40 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/controller/PlatformOperateRecordCtrl.java
  8. 75 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/controller/PlatformOrderCtrl.java
  9. 50 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/controller/PlatformQueryOtherCtrl.java
  10. 95 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/entity/PlatformMaterial.java
  11. 30 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/entity/PlatformOperateRecord.java
  12. 111 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/entity/PlatformOrder.java
  13. 27 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/mapper/PlatformMaterialMapper.java
  14. 19 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/mapper/PlatformOperateRecordMapper.java
  15. 12 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/mapper/PlatformOrderMapper.java
  16. 47 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/mapper/PlatformQueryOtherMapper.java
  17. 126 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/mapper/xml/PlatformMaterialMapper.xml
  18. 18 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/mapper/xml/PlatformOperateRecordMapper.xml
  19. 5 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/mapper/xml/PlatformOrderMapper.xml
  20. 127 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/mapper/xml/PlatformQueryOtherMapper.xml
  21. 43 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/service/IPlatformMaterialService.java
  22. 16 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/service/IPlatformOperateRecordService.java
  23. 16 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/service/IPlatformOrderService.java
  24. 19 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/service/IPlatformQueryOtherService.java
  25. 57 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/service/impl/PlatformMaterialServiceImpl.java
  26. 26 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/service/impl/PlatformOperateRecordServiceImpl.java
  27. 117 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/service/impl/PlatformOrderServiceImpl.java
  28. 94 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/service/impl/PlatformQueryOtherServiceImpl.java
  29. 10 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/util/CodeBuilder.java
  30. 53 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/util/DictHandler.java
  31. 18 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/util/JsonArrayUtil.java
  32. 83 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/util/OperateRecordHandler.java
  33. 1 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysUserService.java
  34. 4 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java
  35. 1 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/wps/service/IWpsFileService.java
  36. 5 2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/wps/service/impl/WpsFileServiceImpl.java
  37. 2 0
      module-common/src/main/java/cn/com/ctop/common/module/mapper/SysUserMapper.java
  38. 5 0
      module-common/src/main/java/cn/com/ctop/common/module/mapper/xml/SysUserMapper.xml
  39. 5 0
      module-common/src/main/java/cn/com/ctop/common/module/service/IMaterialInfoService.java
  40. 96 0
      module-common/src/main/java/cn/com/ctop/common/module/service/impl/MaterialInfoServiceImpl.java
  41. 1 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/entity/KuaiShouGroupTarget.java
  42. 2 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/xml/KuaiShouGroupTargetMapper.xml
  43. 16 8
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/BatchServiceImpl.java
  44. 5 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaiShouGroupServiceImpl.java
  45. 3 3
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/AccountReportMapper.xml
  46. 2 2
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/DailyReportMapper.xml
  47. 2 2
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/KuaiShouYiCheReportServiceImpl.java

+ 20 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/constants/MaterialType.java

@@ -0,0 +1,20 @@
+package org.jeecg.modules.orderplatform.constants;
+
+import lombok.Getter;
+
+@Getter
+public enum MaterialType {
+
+    REAL   (1,"真人"),
+    CUT    (2,"剪辑"),
+    GROUP  (3,"组合");
+
+    MaterialType(int key, String value) {
+        this.key = key;
+        this.value = value;
+    }
+
+    private final int key;
+    private final String value;
+}
+

+ 19 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/constants/PutSystem.java

@@ -0,0 +1,19 @@
+package org.jeecg.modules.orderplatform.constants;
+
+import lombok.Getter;
+
+@Getter
+public enum  PutSystem {
+
+    IOS      (1,"IOS"),
+    ANDROID  (2,"安卓"),
+    NO_LIMIT (3,"不限");
+
+    PutSystem(int key, String value) {
+        this.key = key;
+        this.value = value;
+    }
+
+    private final int key;
+    private final String value;
+}

+ 86 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/controller/DesignerCommitProcessCtrl.java

@@ -0,0 +1,86 @@
+package org.jeecg.modules.orderplatform.controller;
+
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.orderplatform.entity.PlatformMaterial;
+import org.jeecg.modules.orderplatform.entity.PlatformOrder;
+import org.jeecg.modules.orderplatform.service.IPlatformMaterialService;
+import org.jeecg.modules.orderplatform.service.IPlatformOrderService;
+import org.jeecg.modules.orderplatform.util.OperateRecordHandler;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@Slf4j
+@RestController
+@RequestMapping("/platform/designer")
+public class DesignerCommitProcessCtrl {
+
+    @Autowired
+    private IPlatformOrderService platformOrderService;
+
+    @Autowired
+    private IPlatformMaterialService platformMaterialService;
+
+    @Autowired
+    private OperateRecordHandler operateRecordHandler;
+
+    /**
+     * 设计组长接单,根据订单中的物料数量按类型发起物料审批流程
+     */
+    @PostMapping(value = "/accept")
+    public Result<Object> accept(@RequestBody PlatformOrder platformOrder) {
+        Result<Object> result = new Result<>();
+        //订单状态->制作中
+        platformOrder.setOrderStatus(1);
+        boolean ok = platformOrderService.updateById(platformOrder);
+        if (ok) {
+            //自动分发订单,生成物料审批流程
+            platformOrderService.generateMaterials(platformOrder);
+            operateRecordHandler.Approval(platformOrder.getOrderCode(),"ACCEPT_ORDER");
+            result.success("接单成功!");
+        }else {
+            result.error500("订单接单失败,请联系管理员!");
+        }
+
+        return result;
+    }
+
+    /**
+     *  设计组长驳回订单,说明驳回理由
+     */
+    @PostMapping("/reject")
+    public Result<Object> reject(@RequestBody PlatformOrder platformOrder) {
+        Result<Object> result = new Result<>();
+        //订单状态->驳回,可重新提交
+        platformOrder.setOrderStatus(2);
+        boolean ok = platformOrderService.updateById(platformOrder);
+        if (ok) {
+            operateRecordHandler.Approval(platformOrder.getOrderCode(),"REJECT_ORDER");
+            result.success("订单已被驳回!");
+        }else {
+            result.error500("订单驳回失败,请联系管理员!");
+        }
+        return result;
+    }
+
+    /**
+     *   设计组长派单,指定编导、拍摄、剪辑
+     */
+    @PostMapping("/assign")
+    public Result<Object> assign(@RequestBody PlatformMaterial platformMaterial) {
+        Result<Object> result = new Result<>();
+        //物料状态->脚本待上传
+        platformMaterial.setMaterialStatus(1);
+        platformMaterial.setScriptStatus(0);
+        boolean ok = platformMaterialService.updateById(platformMaterial);
+        if (ok) {
+            result.success("物料派单成功!");
+        }else {
+            result.error500("物料派单成功,请联系管理员!");
+        }
+        return result;
+    }
+}

+ 84 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/controller/OperatorApprovalProcessCtrl.java

@@ -0,0 +1,84 @@
+package org.jeecg.modules.orderplatform.controller;
+
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.orderplatform.entity.PlatformOrder;
+import org.jeecg.modules.orderplatform.service.IPlatformOrderService;
+import org.jeecg.modules.orderplatform.util.OperateRecordHandler;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import static org.jeecg.modules.orderplatform.util.CodeBuilder.generateCode;
+
+@Slf4j
+@RestController
+@RequestMapping("/platform/operator")
+public class OperatorApprovalProcessCtrl {
+
+    @Autowired
+    private IPlatformOrderService platformOrderService;
+
+    @Autowired
+    private OperateRecordHandler operateRecordHandler;
+
+    /**
+     * 运营下单
+     */
+    @PostMapping(value = "/payout")
+    public Result<PlatformOrder> payout(@RequestBody PlatformOrder platformOrder) {
+        Result<PlatformOrder> result = new Result<>();
+        try {
+            //订单状态->订单开启
+            platformOrder.setOrderStatus(0);
+            platformOrder.setOrderCode(generateCode());
+            boolean save = platformOrderService.save(platformOrder);
+            if (save) {
+                operateRecordHandler.Submit(platformOrder.getOrderCode(), "PAYOUT");
+                result.success("下单成功!");
+            }
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+            result.error500("下单失败");
+        }
+        return result;
+    }
+
+    /**
+     * 驳回修改后重新发起订单
+     */
+    @PostMapping(value = "/rePayout")
+    public Result<PlatformOrder> rePayout(@RequestBody PlatformOrder platformOrder) {
+        Result<PlatformOrder> result = new Result<PlatformOrder>();
+        platformOrder.setOrderStatus(0);
+        boolean ok = platformOrderService.updateById(platformOrder);
+        if (ok) {
+            operateRecordHandler.Submit(platformOrder.getOrderCode(), "PAYOUT");
+            result.success("订单重新提交成功!");
+        }else {
+            result.error500("订单重新提交异常,请联系管理员");
+        }
+
+        return result;
+    }
+
+    /**
+     * 订单发起人可以将订单作废
+     */
+    @PostMapping(value = "/destroy")
+    public Result<Object> destroy(@RequestBody PlatformOrder platformOrder) {
+        Result<Object> result = new Result<>();
+        //订单状态->订单作废
+        platformOrder.setOrderStatus(-1);
+        boolean ok = platformOrderService.updateById(platformOrder);
+        if (ok) {
+            operateRecordHandler.Approval(platformOrder.getOrderCode(), "DESTROY_ORDER");
+            result.success("接单已销毁!");
+        } else {
+            result.error500("订单销毁失败,请联系管理员!");
+        }
+        return result;
+    }
+}

+ 135 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/controller/PlatformFileCtrl.java

@@ -0,0 +1,135 @@
+package org.jeecg.modules.orderplatform.controller;
+
+import cn.com.ctop.common.module.service.IMaterialInfoService;
+import cn.com.ctop.common.module.utils.CosUtils;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.SecurityUtils;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.common.util.DateUtils;
+import org.jeecg.modules.orderplatform.entity.PlatformMaterial;
+import org.jeecg.modules.orderplatform.service.IPlatformMaterialService;
+import org.jeecg.modules.orderplatform.util.OperateRecordHandler;
+import org.jeecg.modules.wps.entity.WpsFile;
+import org.jeecg.modules.wps.service.IWpsFileService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 文件处理接口
+ */
+@Slf4j
+@RestController
+@RequestMapping("/platform/file")
+public class PlatformFileCtrl {
+
+    @Autowired
+    private IWpsFileService wpsFileService;
+
+    @Autowired
+    private IMaterialInfoService materialInfoService;
+
+    @Autowired
+    private IPlatformMaterialService platformMaterialService;
+
+    @Autowired
+    private OperateRecordHandler operateRecordHandler;
+
+    /**
+     * 新建订单上传附件
+     */
+    @PostMapping("/uploadAttachment")
+    public Result<Map<String, Object>> uploadAttachment(@RequestParam("file") MultipartFile file,
+                                                        @RequestParam("projectId") Long projectId) {
+        Result<Map<String, Object>> result = new Result<>();
+        if (file.isEmpty() || !((file.getOriginalFilename().endsWith(".zip") || file.getOriginalFilename().endsWith(".rar") || file.getOriginalFilename().endsWith(".7z")))) {
+            result.error500("请上传正确的压缩文件");
+        } else {
+            String fileName = file.getOriginalFilename() + "_" + projectId + "_" + System.currentTimeMillis();
+            InputStream inputStream = null;
+            try {
+                inputStream = file.getInputStream();
+            } catch (IOException e) {
+                log.error("工作台下单附件上传异常");
+            }
+            String attachmentPath = "attachment/zip/" + DateUtils.date2Str() + "/";
+            CosUtils.uploadFileByInputStream(inputStream, attachmentPath, fileName);
+            Map<String, Object> detail = new HashMap<>();
+            detail.put("attachmentName", fileName);
+            detail.put("attachmentUrl", "https://media-1301855440.cos.ap-chongqing.myqcloud.com/" + attachmentPath + fileName);
+            result.setResult(detail);
+        }
+        return result;
+    }
+
+    /**
+     * 编导上传脚本
+     */
+    @PostMapping("/uploadScript")
+    public Result<Object> uploadScript(@RequestParam("file") MultipartFile file,
+                                       @RequestParam("materialId") Long materialId,
+                                       @RequestParam("projectId") Long projectId) {
+        Result<Object> result = new Result<>();
+        try {
+            LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+            // 脚本上传成功需要返回脚本id,更新物料表,更新完成后去更新脚本库的绑定项目
+            WpsFile wpsFile = wpsFileService.uploadFile(file, user.getId());
+            if (null == wpsFile) {
+                result.error500("脚本上传失败");
+                return result;
+            }
+            //物料状态->脚本已上传,待审核
+            PlatformMaterial platformMaterial = new PlatformMaterial();
+            platformMaterial.setId(materialId);
+            platformMaterial.setMaterialStatus(2);
+            platformMaterial.setScriptStatus(1);
+            platformMaterial.setScriptId(wpsFile.getId());
+            boolean save = platformMaterialService.updateById(platformMaterial);
+            if (save) {
+                // 更新脚本库的绑定项目
+                wpsFile.setProjectId(projectId);
+                //  Todo 暂时兼容题库
+                wpsFile.setIsScript(0);
+                wpsFileService.updateById(wpsFile);
+                operateRecordHandler.Submit(platformMaterialService.getById(materialId).getMaterialCode(), "SCRIPT");
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return result;
+    }
+
+    /**
+     * 剪辑上传视频
+     * Todo 在下单制正式上线后,这个接口会改造
+     */
+    @PostMapping("/uploadVideo")
+    public Result<Object> uploadVideo(@RequestBody JSONObject requestBody) {
+        Result<Object> result = new Result<>();
+        String videoId = materialInfoService.platformUploadVideo(requestBody);
+        if (videoId.isEmpty()) {
+            result.error500("同步素材库失败,请联系管理员");
+        } else {
+            //物料状态->视频已上传,待审核
+            PlatformMaterial platformMaterial = new PlatformMaterial();
+            platformMaterial.setId(requestBody.getLong("materialId"));
+            platformMaterial.setMaterialStatus(5);
+            platformMaterial.setVideoStatus(1);
+            platformMaterial.setVideoId(videoId);
+            boolean save = platformMaterialService.updateById(platformMaterial);
+            if (save) {
+                operateRecordHandler.Submit(platformMaterialService.getById(requestBody.getString("materialId")).getMaterialCode(), "VIDEO");
+                result.success("同步素材库成功");
+            }
+        }
+        return result;
+    }
+
+}

+ 193 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/controller/PlatformMaterialCtrl.java

@@ -0,0 +1,193 @@
+package org.jeecg.modules.orderplatform.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+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.modules.orderplatform.entity.PlatformMaterial;
+import org.jeecg.modules.orderplatform.service.IPlatformMaterialService;
+import org.jeecg.modules.orderplatform.service.IPlatformOrderService;
+import org.jeecg.modules.orderplatform.util.DictHandler;
+import org.jeecg.modules.orderplatform.util.OperateRecordHandler;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+
+/**
+ * 物料审批流程
+ */
+@Slf4j
+@RestController
+@RequestMapping("/platform/material")
+public class PlatformMaterialCtrl {
+
+    @Autowired
+    private IPlatformMaterialService platformMaterialService;
+
+    @Autowired
+    private IPlatformOrderService platformOrderService;
+
+    @Autowired
+    private OperateRecordHandler operateRecordHandler;
+
+    @Autowired
+    DictHandler dictHandler;
+
+    /**
+     * 根据orderCode查询关联物料
+     */
+    @GetMapping(value = "/listByOrderCode")
+    public Result<PageInfo<PlatformMaterial>> listByOrderCode(PlatformMaterial platformMaterial,
+                                                         @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                         @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+                                                         HttpServletRequest req) {
+        Result<PageInfo<PlatformMaterial>> result = new Result<>();
+        QueryWrapper<PlatformMaterial> queryWrapper = new QueryWrapper<>();
+        queryWrapper.setEntity(platformMaterial);
+        PageHelper.startPage(pageNo,pageSize);
+        List<PlatformMaterial> platformMaterialList= platformMaterialService.list(queryWrapper);
+        result.setSuccess(true);
+        result.setResult(new PageInfo<>(dictHandler.dictHandlerMaterial(platformMaterialList)));
+        return result;
+    }
+
+    /**
+     * 根据设计查询我参与的物料列表
+     */
+    @GetMapping(value = "/listByRole")
+    public Result<PageInfo<JSONObject>> listByRole(@RequestParam String designUserId,
+                                                   @RequestParam String materialStatus,
+                                                   @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                   @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
+        Result<PageInfo<JSONObject>> result = new Result<>();
+        PageHelper.startPage(pageNo, pageSize);
+        List<JSONObject> jsonObjectList = platformMaterialService.queryMaterialsByDesignUserId(materialStatus, designUserId);
+        result.setResult(new PageInfo<>(jsonObjectList));
+        result.setSuccess(true);
+        return result;
+    }
+
+    /**
+     * 运营查询需要自己审批的订单
+     */
+    @GetMapping(value = "/listByOperatorUserId")
+    public Result<PageInfo<JSONObject>> listByOperatorUserId(@RequestParam String operatorUserId,
+                                                             @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                             @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
+        Result<PageInfo<JSONObject>> result = new Result<>();
+        PageHelper.startPage(pageNo, pageSize);
+        List<JSONObject> jsonObjectList = platformMaterialService.queryMaterialsByOperatorUserId(operatorUserId);
+        result.setResult(new PageInfo<>(jsonObjectList));
+        result.setSuccess(true);
+        return result;
+    }
+
+
+    /**
+     * 运营审核脚本
+     */
+    @PostMapping(value = "/script/accept")
+    public Result<Object> acceptScript(@RequestBody PlatformMaterial platformMaterial) {
+        Result<Object> result = new Result<>();
+        //物料状态->脚本通过,视频待上传
+        platformMaterial.setMaterialStatus(4);
+        platformMaterial.setScriptStatus(3);
+        platformMaterial.setVideoStatus(0);
+        boolean ok = platformMaterialService.updateById(platformMaterial);
+        if (ok) {
+            operateRecordHandler.Approval(platformMaterial.getMaterialCode(),"ACCEPT_SCRIPT");
+            result.success("脚本审核通过!");
+        } else {
+            result.error500("脚本审核失败!请联系管理员");
+        }
+        return result;
+    }
+
+    //驳回脚本,驳回理由必填
+    @PostMapping(value = "/script/reject")
+    public Result<Object> rejectScript(@RequestBody PlatformMaterial platformMaterial) {
+        Result<Object> result = new Result<>();
+        //物料状态->脚本被驳回,可以重新提交
+        platformMaterial.setMaterialStatus(3);
+        platformMaterial.setScriptStatus(2);
+        boolean ok = platformMaterialService.updateById(platformMaterial);
+        if (ok) {
+            operateRecordHandler.Approval(platformMaterial.getMaterialCode(),"REJECT_SCRIPT");
+            result.success("脚本已驳回!");
+        } else {
+            result.error500("脚本驳回失败!请联系管理员");
+        }
+        return result;
+    }
+
+    /**
+     * 脚本详情页
+     */
+    @GetMapping(value = "/scriptDetail")
+    public Result<JSONObject> scriptDetail(String scriptId) {
+        Result<JSONObject> result = new Result<>();
+        JSONObject scriptDetail = platformMaterialService.queryScriptDetailById(scriptId);
+        result.setResult(scriptDetail);
+        result.setSuccess(true);
+        return result;
+    }
+
+    /**
+     * 运营审核视频
+     */
+    @PostMapping(value = "/video/accept")
+    public Result<Object> acceptVideo(@RequestBody PlatformMaterial platformMaterial) {
+        Result<Object> result = new Result<>();
+        //物料状态->视频审核通过
+        platformMaterial.setMaterialStatus(7);
+        platformMaterial.setVideoStatus(3);
+        boolean ok = platformMaterialService.updateById(platformMaterial);
+        if (ok) {
+            //更新订单的素材完成数
+            boolean order = platformOrderService.updateOrderFinishAmount(platformMaterial.getOrderCode());
+            if (order) {
+                operateRecordHandler.Approval(platformMaterial.getMaterialCode(),"ACCEPT_VIDEO");
+                //修改素材库审核状态
+                platformMaterialService.updateMaterialStatusById(platformMaterial.getVideoId());
+                result.success("视频审核通过!");
+            }
+        } else {
+            result.error500("视频审核失败!请联系管理员");
+        }
+        return result;
+    }
+
+    //驳回视频,驳回理由必填
+    @PostMapping(value = "/video/reject")
+    public Result<Object> rejectVideo(@RequestBody PlatformMaterial platformMaterial) {
+        Result<Object> result = new Result<>();
+        //物料状态->视频被驳回,可以重新提交
+        platformMaterial.setMaterialStatus(6);
+        platformMaterial.setVideoStatus(2);
+        boolean ok = platformMaterialService.updateById(platformMaterial);
+        if (ok) {
+            operateRecordHandler.Approval(platformMaterial.getMaterialCode(),"REJECT_VIDEO");
+            result.success("视频已驳回!");
+        } else {
+            result.error500("视频驳回失败!请联系管理员");
+        }
+        return result;
+    }
+
+    /**
+     * 视频详情页
+     */
+    @GetMapping(value = "/videoDetail")
+    public Result<JSONObject> videoDetail(String videoId) {
+        Result<JSONObject> result = new Result<>();
+        JSONObject scriptDetail = platformMaterialService.queryVideoDetailById(videoId);
+        result.setResult(scriptDetail);
+        result.setSuccess(true);
+        return result;
+    }
+
+}

+ 40 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/controller/PlatformOperateRecordCtrl.java

@@ -0,0 +1,40 @@
+package org.jeecg.modules.orderplatform.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.github.pagehelper.PageInfo;
+import org.jeecg.common.api.vo.Result;
+
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecg.modules.orderplatform.service.IPlatformOperateRecordService;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 下单制操作记录
+ */
+
+@Slf4j
+@RestController
+@RequestMapping("/platform/operateRecord")
+public class PlatformOperateRecordCtrl {
+
+	@Autowired
+	private IPlatformOperateRecordService platformOperateRecordService;
+
+	/**
+	 * 操作记录查询
+	 */
+	@GetMapping(value = "/createDesc")
+
+	public Result<PageInfo<JSONObject>> queryPageList() {
+		Result<PageInfo<JSONObject>> result = new Result<>();
+		List<JSONObject> operateRecordList= platformOperateRecordService.PageByCreateDesc();
+		result.setSuccess(true);
+		result.setResult(new PageInfo<>(operateRecordList));
+		return result;
+	}
+}

+ 75 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/controller/PlatformOrderCtrl.java

@@ -0,0 +1,75 @@
+package org.jeecg.modules.orderplatform.controller;
+
+import cn.com.ctop.common.module.entity.SysUser;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+
+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.modules.orderplatform.entity.PlatformOrder;
+import org.jeecg.modules.orderplatform.service.IPlatformOrderService;
+
+import org.jeecg.modules.orderplatform.util.DictHandler;
+import org.jeecg.modules.system.service.ISysUserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+
+/**
+ * 运营下单
+ */
+@Slf4j
+@RestController
+@RequestMapping("/platform/order")
+public class PlatformOrderCtrl {
+
+	@Autowired
+	private IPlatformOrderService platformOrderService;
+
+	@Autowired
+	ISysUserService sysUserService;
+
+	@Autowired
+	DictHandler dictHandler;
+	/**
+	  * 查询
+	 */
+	@GetMapping(value = "/listByCreatorOrDesignLeader")
+	public Result<PageInfo<PlatformOrder>> queryPageList(PlatformOrder platformOrder,
+														 @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+														 @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+														 HttpServletRequest req) {
+		Result<PageInfo<PlatformOrder>> result = new Result<>();
+		QueryWrapper<PlatformOrder> queryWrapper = new QueryWrapper<>();
+		//发起人精准查询
+		if((null!=platformOrder.getCreateByName())){
+			SysUser sysUser=sysUserService.getUserByRealName(platformOrder.getCreateByName());
+			if(null!=sysUser){
+				platformOrder.setCreateBy(sysUser.getId());
+			}
+		}
+		queryWrapper.setEntity(platformOrder);
+		queryWrapper.orderByDesc("update_time");
+		PageHelper.startPage(pageNo,pageSize);
+		List<PlatformOrder> platformOrderList= platformOrderService.list(queryWrapper);
+		result.setSuccess(true);
+		result.setResult(new PageInfo<>(dictHandler.dictHandlerOrders(platformOrderList)));
+		return result;
+	}
+
+
+	/**
+	  * 订单详情页
+	 */
+	@GetMapping(value = "/queryById")
+	public Result<PlatformOrder> queryById(@RequestParam Long id) {
+		Result<PlatformOrder> result = new Result<>();
+		PlatformOrder platformOrder = platformOrderService.getById(id);
+		result.setResult(dictHandler.dictHandlerOrder(platformOrder));
+		result.setSuccess(true);
+		return result;
+	}
+}

+ 50 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/controller/PlatformQueryOtherCtrl.java

@@ -0,0 +1,50 @@
+package org.jeecg.modules.orderplatform.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.orderplatform.service.IPlatformQueryOtherService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Slf4j
+@RestController
+@RequestMapping("/platform/query")
+public class PlatformQueryOtherCtrl {
+
+    @Autowired
+    IPlatformQueryOtherService platformQueryOtherService;
+
+    @GetMapping(value = "/designLeader")
+    public Result<List<JSONObject>> queryPageList() {
+        Result<List<JSONObject>> result = new Result<>();
+        result.setSuccess(true);
+        result.setResult(platformQueryOtherService.getAllDesignLeader());
+        return result;
+    }
+
+
+    @GetMapping(value = "/identity")
+    public Result<JSONObject> identity() {
+        Result<JSONObject> result = new Result<>();
+        result.setSuccess(true);
+        result.setResult(platformQueryOtherService.queryIdentity());
+        return result;
+    }
+
+    @GetMapping(value ="/jobContent")
+    public Result<Map<String,Object>> jobContent() {
+        Result<Map<String,Object>> result = new Result<>();
+        Map<String,Object> jobContent =new HashMap<>();
+        jobContent.put("operatorJobContent",platformQueryOtherService.operatorJobContent());
+        jobContent.put("designLeaderJobContent",platformQueryOtherService.designLeaderJobContent());
+        jobContent.put("designJobContent",platformQueryOtherService.designJobContent());
+        result.setSuccess(true);
+        result.setResult(jobContent);
+        return result;
+    }
+}

+ 95 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/entity/PlatformMaterial.java

@@ -0,0 +1,95 @@
+package org.jeecg.modules.orderplatform.entity;
+
+import java.util.Date;
+
+import cn.com.ctop.common.module.annotation.Dict;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import lombok.Data;
+
+/**
+ * 物料审批流程
+ */
+@Data
+@TableName("ctop_platform_material")
+public class PlatformMaterial {
+    
+	/**id*/
+	@TableId(type = IdType.AUTO)
+	private Long id;
+
+	/**orderCode*/
+	private String orderCode;
+
+	/**关联项目*/
+	private Long projectId;
+
+	@TableField(exist = false)
+	private String projectName;
+
+	/**物料唯一标识*/
+	private String materialCode;
+
+	/**物料名*/
+	private String materialName;
+
+	/**materialType*/
+	private Integer materialType;
+
+	/**materialStatus*/
+	private Integer materialStatus;
+
+	/**脚本id*/
+	private String scriptId;
+
+	/**脚本审批状态*/
+	private Integer scriptStatus;
+
+	/**审批建议*/
+	private String scriptAdvise;
+
+	/**脚本上传人*/
+	private String scriptCreator;
+
+	/**脚本创建时间*/
+	private Date scriptCreateTime;
+
+	/**编导*/
+	@Dict(dicCode = "id",dictTable="sys_user",dicText="realname")
+	private String plan;
+
+	@TableField(exist = false)
+	private String planName;
+
+	/**视频id*/
+	private String videoId;
+
+	/**视频审批状态*/
+	private Integer videoStatus;
+
+	/**视频审批建议*/
+	private String videoAdvise;
+
+	/**视频上传人*/
+	private String videoCreator;
+
+	/**视频创建时间*/
+	private Date videoCreateTime;
+
+	/**视频拍摄*/
+	@Dict(dicCode = "id",dictTable="sys_user",dicText="realname")
+	private String shot;
+
+	@TableField(exist = false)
+	private String shotName;
+
+	/**视频剪辑*/
+	@Dict(dicCode = "id",dictTable="sys_user",dicText="realname")
+	private String clip;
+
+	@TableField(exist = false)
+	private String clipName;
+}

+ 30 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/entity/PlatformOperateRecord.java

@@ -0,0 +1,30 @@
+package org.jeecg.modules.orderplatform.entity;
+
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+/**
+ * 下单制操作记录
+ */
+@Data
+@TableName("ctop_platform_operate_record")
+public class PlatformOperateRecord {
+    
+	/**id*/
+	@TableId(type = IdType.AUTO)
+	private Integer id;
+	/**订单标识*/
+	private String orderCode;
+	/**素材标识*/
+	private String materialCode;
+	/**操作人*/
+	private String userId;
+	/**操作*/
+	private String operate;
+	/**执行时间*/
+	private Date createTime;
+}

+ 111 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/entity/PlatformOrder.java

@@ -0,0 +1,111 @@
+package org.jeecg.modules.orderplatform.entity;
+
+import java.util.Date;
+
+import cn.com.ctop.common.module.annotation.Dict;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import lombok.Data;
+
+
+/**
+ * 订单表
+ */
+@Data
+@TableName("ctop_platform_order")
+public class PlatformOrder {
+    
+	/**id*/
+	@TableId(type = IdType.AUTO)
+	private Long id;
+
+	/**订单唯一标识*/
+	private String orderCode;
+
+	/**订单标题*/
+	private String orderTitle;
+
+	/**设计组长*/
+	@Dict(dicCode = "id",dictTable="sys_user",dicText="realname")
+	private String design;
+
+	@TableField(exist = false)
+	private String designName;
+
+    /**设计接单时间*/
+	private Date designPassTime;
+
+	/**订单状态*/
+	private Integer orderStatus;
+
+	/**投放系统*/
+	private String orderAdvice;
+
+	/**关联项目*/
+	@Dict(dictTable ="ctop_project",dicText = "project_name",dicCode = "id")
+	private Long project;
+
+	@TableField(exist = false)
+	private String projectName;
+
+	/**投放系统*/
+	private String sysName;
+
+	/**包名*/
+	private String sysPackage;
+
+	/**素材数量*/
+	private Integer materialAmount;
+
+	/**素材完成数量*/
+	private Integer materialFinishAmount;
+
+	/**物料最新上传时间*/
+	private Date materialFinishTime;
+
+	/**日均产量*/
+	private Integer materialAmountDay;
+
+	/**materialType*/
+	private Integer materialType;
+
+	/**真人数量*/
+	private Integer realAmount;
+
+	/**剪辑数量*/
+	private Integer cutAmount;
+
+	/**开始时间*/
+	private String startDate;
+
+	/**结束时间*/
+	private String endDate;
+
+	/**附件地址*/
+	private String attachmentUrl;
+
+	/**attachmentName*/
+	private String attachmentName;
+
+	/**订单备注*/
+	private String orderRemark;
+
+	/**订单创建人*/
+	@Dict(dicCode = "id",dictTable="sys_user",dicText="realname")
+	private String createBy;
+
+	@TableField(exist = false)
+	private String createByName;
+
+	/**订单完成时间*/
+	private Date orderFinishTime;
+
+	/**创建时间*/
+	private Date createTime;
+
+	/**修改时间*/
+	private Date updateTime;
+}

+ 27 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/mapper/PlatformMaterialMapper.java

@@ -0,0 +1,27 @@
+package org.jeecg.modules.orderplatform.mapper;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.orderplatform.entity.PlatformMaterial;
+
+import java.util.List;
+
+/**
+ * 物料审批流程
+ * @author: jeecg-boot
+ * @date:   2020-11-10
+ * @cersion: V1.0
+ */
+public interface PlatformMaterialMapper extends BaseMapper<PlatformMaterial> {
+
+    List<JSONObject> queryMaterialsByDesignUserId(@Param("materialStatus") JSONArray materialStatus, @Param("designUserId") String designUserId);
+
+    List<JSONObject> queryMaterialsByOperatorUserId(@Param("operatorUserId") String designUserId);
+
+    JSONObject queryScriptDetailById(@Param("scriptId") String scriptId);
+
+    JSONObject queryVideoDetailById(@Param("videoId") String videoId);
+
+}

+ 19 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/mapper/PlatformOperateRecordMapper.java

@@ -0,0 +1,19 @@
+package org.jeecg.modules.orderplatform.mapper;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.orderplatform.entity.PlatformOperateRecord;
+
+import java.util.List;
+
+/**
+ * 下单制操作记录
+ * @author: jeecg-boot
+ * @date:   2020-11-10
+ * @cersion: V1.0
+ */
+public interface PlatformOperateRecordMapper extends BaseMapper<PlatformOperateRecord> {
+
+    List<JSONObject> PageByCreateDesc();
+
+}

+ 12 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/mapper/PlatformOrderMapper.java

@@ -0,0 +1,12 @@
+package org.jeecg.modules.orderplatform.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.orderplatform.entity.PlatformOrder;
+
+/**
+ * 订单
+ * Created by JQ.bi on 2020.10.23
+ */
+public interface PlatformOrderMapper extends BaseMapper<PlatformOrder> {
+
+}

+ 47 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/mapper/PlatformQueryOtherMapper.java

@@ -0,0 +1,47 @@
+package org.jeecg.modules.orderplatform.mapper;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.orderplatform.entity.PlatformMaterial;
+
+import java.util.List;
+
+/**
+ * 下单制查询其他接口
+ */
+public interface PlatformQueryOtherMapper extends BaseMapper<PlatformMaterial> {
+
+    List<JSONObject> queryAllDesignLeader();
+
+    JSONObject queryIdentity(String currentLogon);
+
+    //设计参与物料、被驳回物料、指派给我的物料数量
+    int queryMaterialCountByDesignUserId(String userId, JSONArray materialStatus);
+
+    //运营待审核的物料
+    int queryMaterialCountByOperatorUserId(String userId);
+
+    //设计组长带指派的物料
+    int queryMaterialCountByDesign(String userId);
+
+    //设计组长待确定的订单
+    int queryOrderCountByDesign(String userId);
+
+    //运营我发起的订单
+    int queryNewOrderCountByOperator(String userId);
+
+    //运营被驳回的订单
+    int queryRejectOrderCountByOperator(String userId);
+
+    //已完成的订单
+    int queryFinishOrderCountByOperator(String userId);
+
+    //设计组长已完成的订单
+    int queryFinishOrderCountByDesign(String userId);
+
+    //设计组长全部订单
+    int queryAllOrderByDesign(String userId);
+
+
+}

+ 126 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/mapper/xml/PlatformMaterialMapper.xml

@@ -0,0 +1,126 @@
+<?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="org.jeecg.modules.orderplatform.mapper.PlatformMaterialMapper">
+
+    <select id="queryMaterialsByDesignUserId" resultType="com.alibaba.fastjson.JSONObject">
+        SELECT
+            t2.id as orderId,
+            t2.order_title as orderTitle,
+            (SELECT realname from sys_user where id=t2.create_by) as createBy,
+            (SELECT realname from sys_user where id=t2.design) as designLeader,
+            t2.start_date as startDate,
+            t2.end_date as endDate,
+            t2.attachment_url as attachmentUrl,
+            t2.attachment_name as attachmentName,
+            t2.order_remark as orderRemark,
+            (SELECT project_name from ctop_project where id=t1.project_id) as projectName,
+            t1.id as materialId,
+            t1.project_id as projectId,
+            t1.material_code as materialCode,
+            t1.material_name as materialName,
+            t1.material_type as materialType,
+            t1.material_status as materialStatus,
+            t1.script_id as scriptId,
+            t1.script_status  as scriptStatus,
+            t1.script_advise as scriptAdvise,
+            t1.video_id as videoId,
+            t1.video_status as videoStatus,
+            t1.video_advise as videoAdvise,
+            t1.shot,
+            (SELECT realname from sys_user where id=t1.shot) as shotName,
+            t1.clip,
+            (SELECT realname from sys_user where id=t1.clip) as clipName,
+            t1.plan,
+            (SELECT realname from sys_user where id=t1.plan) as planName
+        FROM
+            ctop_platform_material t1
+                LEFT JOIN ctop_platform_order t2 ON t1.order_code = t2.order_code
+        WHERE
+           t1.material_status in
+        <foreach item="item" index="index" collection="materialStatus"
+                 open="(" separator="," close=")">
+            #{item}
+        </foreach>
+           And (plan = #{designUserId}
+           OR clip = #{designUserId}
+           OR shot = #{designUserId})
+    </select>
+
+    <select id="queryMaterialsByOperatorUserId" resultType="com.alibaba.fastjson.JSONObject">
+        SELECT
+            t2.id as orderId,
+            t2.order_code as orderCode,
+            t2.order_title as orderTitle,
+            (SELECT realname from sys_user where id=t2.create_by) as createBy,
+            (SELECT realname from sys_user where id=t2.design) as designLeader,
+            t2.start_date as startDate,
+            t2.end_date as endDate,
+            t2.attachment_url as attachmentUrl,
+            t2.attachment_name as attachmentName,
+            t2.order_remark as orderRemark,
+            (SELECT project_name from ctop_project where id=t1.project_id) as projectName,
+            t1.id as materialId,
+            t1.material_code as materialCode,
+            t1.material_name as materialName,
+            t1.material_type as materialType,
+            t1.material_status as materialStatus,
+            t1.script_id as scriptId,
+            t1.script_status as scriptStatus,
+            t1.script_advise as scriptAdvise,
+            t1.video_id as videoId,
+            t1.video_status as videoStatus,
+            t1.video_advise as videoAdvise,
+            t1.shot,
+            (SELECT realname from sys_user where id=t1.shot) as shotName,
+            t1.clip,
+            (SELECT realname from sys_user where id=t1.shot) as clipName,
+            t1.plan,
+            (SELECT realname from sys_user where id=t1.plan) as planName
+        FROM
+            ctop_platform_material t1
+                LEFT JOIN ctop_platform_order t2 ON t1.order_code = t2.order_code
+        WHERE
+            t1.material_status in(2,5)
+          and t1.project_id in(SELECT DISTINCT project_id from ctop_project_member WHERE user_id=#{operatorUserId})
+    </select>
+
+    <select id="queryScriptDetailById" resultType="com.alibaba.fastjson.JSONObject">
+        SELECT
+            t1.script_id as scriptId,
+            t1.script_status as scriptStatus,
+            t1.script_advise as scriptAdvise,
+            (SELECT project_name from ctop_project where id=t1.project_id) as projectName,
+            t1.material_name as materialName,
+            (SELECT realname from sys_user where id=t1.plan) as planName,
+            t2.name as scriptName,
+            t2.download_url as url
+        FROM
+            ctop_platform_material t1
+            LEFT JOIN wps_file t2 ON t1.script_id = t2.id
+        where t2.id=#{scriptId}
+    </select>
+
+    <select id="queryVideoDetailById" resultType="com.alibaba.fastjson.JSONObject">
+        SELECT
+            t.code,
+            t.url,
+            t1.video_id as videoId,
+            t1.video_status as videoStatus,
+            t1.video_advise as videoAdvise,
+            t2.second,
+            t2.width,
+            t2.height,
+            t2.size,
+            (SELECT realname from sys_user where id=t3.clip_id limit 1) as clipName,
+            (SELECT realname from sys_user where id=t3.shot_id limit 1) as shotName,
+            (SELECT realname from sys_user where id=t3.plan_id limit 1) as planName,
+            (SELECT GROUP_CONCAT(tag_name) from ctop_material_tag_info where code=t.code) as tag,
+            (SELECT GROUP_CONCAT(url) from ctop_material_image_info where video_id=t.code) as imageUrl
+        FROM
+            ctop_material_info t
+                LEFT JOIN  ctop_platform_material t1 on t.id=t1.video_id
+                LEFT JOIN  ctop_material_parameter t2 ON t. CODE = t2.material_id
+                left join  ctop_material_ascription t3 on t.code=t3. material_id
+        where t.id=#{videoId}
+    </select>
+</mapper>

+ 18 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/mapper/xml/PlatformOperateRecordMapper.xml

@@ -0,0 +1,18 @@
+<?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="org.jeecg.modules.orderplatform.mapper.PlatformOperateRecordMapper">
+
+    <select id="PageByCreateDesc" resultType="com.alibaba.fastjson.JSONObject">
+        SELECT
+            (SELECT order_title from ctop_platform_order where order_code=t.order_code)  orderTitle,
+            (SELECT material_name from ctop_platform_material where material_code=t.material_code)  materialName,
+            (SELECT realname from sys_user where id=t.user_id) userName,
+            operate,
+            create_time as createTime
+        FROM
+            ctop_platform_operate_record t
+        ORDER BY
+            create_time DESC
+        LIMIT 50
+    </select>
+</mapper>

+ 5 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/mapper/xml/PlatformOrderMapper.xml

@@ -0,0 +1,5 @@
+<?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="org.jeecg.modules.orderplatform.mapper.PlatformOrderMapper">
+
+</mapper>

+ 127 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/mapper/xml/PlatformQueryOtherMapper.xml

@@ -0,0 +1,127 @@
+<?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="org.jeecg.modules.orderplatform.mapper.PlatformQueryOtherMapper">
+
+    <select id="queryAllDesignLeader" resultType="com.alibaba.fastjson.JSONObject">
+        SELECT
+            t1.realname,
+            t1.id as userId
+        FROM
+            sys_user t1
+                LEFT JOIN sys_user_role t2 ON t1.id = t2.user_id
+                LEFT JOIN sys_role t3 ON t2.role_id = t3.id
+        where t3.role_code='designTeamLeader'
+    </select>
+
+    <select id="queryIdentity" resultType="com.alibaba.fastjson.JSONObject">
+        SELECT
+            t.realname,
+            t2.role_name as roleName,
+            t4.depart_name as departName,
+            t6.area as area
+        FROM
+            sys_user t
+                LEFT JOIN sys_user_role t1 ON t.id = t1.user_id
+                LEFT JOIN sys_role t2 on t1.role_id=t2.id
+                LEFT JOIN sys_user_depart t3 on t.id = t3.user_id
+                LEFT JOIN sys_depart t4 on t3.dep_id=t4.id
+                LEFT JOIN user_company t5 on t.id=t5.user_id
+                LEFT JOIN sys_company t6 on t5.company_id=t6.company_id
+        where t.id=#{currentLogon}
+    </select>
+
+    <select id="queryMaterialCountByDesignUserId" resultType="java.lang.Integer">
+        SELECT
+        count(id)
+        FROM
+        ctop_platform_material
+        WHERE
+        material_status in
+        <foreach item="item" index="index" collection="materialStatus"
+                 open="(" separator="," close=")">
+            #{item}
+        </foreach>
+        And (plan = #{userId}
+        OR clip = #{userId}
+        OR shot = #{userId})
+    </select>
+
+    <select id="queryMaterialCountByOperatorUserId" resultType="java.lang.Integer">
+        SELECT
+            count(id)
+        FROM
+            ctop_platform_material
+        WHERE
+            material_status in(2,5)
+          and project_id in(SELECT DISTINCT project_id from ctop_project_member WHERE user_id=#{operatorUserId})
+    </select>
+
+    <select id="queryMaterialCountByDesign" resultType="java.lang.Integer">
+        SELECT
+            count(t1.id)
+        FROM
+            ctop_platform_material t1
+                LEFT JOIN ctop_platform_order t2 ON t1.order_code = t2.order_code
+        WHERE
+            t2.design =#{userId}
+          AND t1.material_status = 0
+    </select>
+
+    <select id="queryOrderCountByDesign" resultType="java.lang.Integer">
+        SELECT
+            count(id)
+        FROM
+            ctop_platform_order
+        WHERE
+            design =#{userId}
+        and order_status=0
+    </select>
+
+    <select id="queryNewOrderCountByOperator" resultType="java.lang.Integer">
+        SELECT
+            count(id)
+        FROM
+            ctop_platform_order
+        WHERE
+            create_by =#{userId}
+    </select>
+
+    <select id="queryRejectOrderCountByOperator" resultType="java.lang.Integer">
+        SELECT
+            count(id)
+        FROM
+            ctop_platform_order
+        WHERE
+            create_by =#{userId}
+        and order_status=2
+    </select>
+
+    <select id="queryFinishOrderCountByOperator" resultType="java.lang.Integer">
+        SELECT
+            count(id)
+        FROM
+            ctop_platform_order
+        WHERE
+            create_by =#{userId}
+        and order_status=3
+    </select>
+
+    <select id="queryFinishOrderCountByDesign" resultType="java.lang.Integer">
+        SELECT
+            count(id)
+        FROM
+            ctop_platform_order
+        WHERE
+            design =#{userId}
+          and order_status=3
+    </select>
+
+    <select id="queryAllOrderByDesign" resultType="java.lang.Integer">
+        SELECT
+            count(id)
+        FROM
+            ctop_platform_order
+        WHERE
+            design =#{userId}
+    </select>
+</mapper>

+ 43 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/service/IPlatformMaterialService.java

@@ -0,0 +1,43 @@
+package org.jeecg.modules.orderplatform.service;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.orderplatform.entity.PlatformMaterial;
+
+import java.util.List;
+
+/**
+ * 物料审批流程
+ */
+public interface IPlatformMaterialService extends IService<PlatformMaterial> {
+
+    /**
+     *  设计参与的物料信息
+     *  逻辑是拿当前登录人userId查询物料列表的plan、clip、shot 取全集
+     */
+    List<JSONObject> queryMaterialsByDesignUserId(String materialStatus, String designUserId);
+
+    /**
+     *  运营需要审核的订单
+     *  查询逻辑先查当前登录人参与的项目,在通过项目关联订单物料查询出需要审批的物料流程
+     */
+    List<JSONObject> queryMaterialsByOperatorUserId(String operatorUserId);
+
+    /**
+     *  脚本详情页
+     *  根据脚本id关联脚本库、物料、订单信息
+     */
+    JSONObject queryScriptDetailById(String scriptId);
+
+    /**
+     *  视频详情页
+     *  根据视频id关联脚本库、物料、订单信息
+     */
+    JSONObject queryVideoDetailById(String videoId);
+
+    /**
+     *  视频审核通过后修改素材库审核状态
+     */
+    void updateMaterialStatusById(String id);
+
+}

+ 16 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/service/IPlatformOperateRecordService.java

@@ -0,0 +1,16 @@
+package org.jeecg.modules.orderplatform.service;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.orderplatform.entity.PlatformOperateRecord;
+
+import java.util.List;
+
+/**
+ * 下单制操作记录
+ */
+public interface IPlatformOperateRecordService extends IService<PlatformOperateRecord> {
+
+    List<JSONObject> PageByCreateDesc();
+
+}

+ 16 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/service/IPlatformOrderService.java

@@ -0,0 +1,16 @@
+package org.jeecg.modules.orderplatform.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.orderplatform.entity.PlatformOrder;
+
+/**
+ * 订单
+ */
+public interface IPlatformOrderService extends IService<PlatformOrder> {
+
+    //自动分发订单,生成物料审批流程
+    boolean generateMaterials(PlatformOrder platformOrder);
+
+    //更新订单素材完成数量
+    boolean updateOrderFinishAmount(String code);
+}

+ 19 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/service/IPlatformQueryOtherService.java

@@ -0,0 +1,19 @@
+package org.jeecg.modules.orderplatform.service;
+
+import com.alibaba.fastjson.JSONObject;
+
+import java.util.List;
+import java.util.Map;
+
+public interface IPlatformQueryOtherService {
+
+    List<JSONObject> getAllDesignLeader();
+
+    Map<String,Object> operatorJobContent();
+
+    Map<String,Object> designJobContent();
+
+    Map<String,Object> designLeaderJobContent();
+
+    JSONObject queryIdentity();
+}

+ 57 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/service/impl/PlatformMaterialServiceImpl.java

@@ -0,0 +1,57 @@
+package org.jeecg.modules.orderplatform.service.impl;
+
+import cn.com.ctop.common.module.entity.MaterialInfo;
+import cn.com.ctop.common.module.service.IMaterialInfoService;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.jeecg.modules.orderplatform.entity.PlatformMaterial;
+import org.jeecg.modules.orderplatform.mapper.PlatformMaterialMapper;
+import org.jeecg.modules.orderplatform.service.IPlatformMaterialService;
+import org.jeecg.modules.orderplatform.util.JsonArrayUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 物料审批流程
+ */
+@Service
+public class PlatformMaterialServiceImpl extends ServiceImpl<PlatformMaterialMapper, PlatformMaterial> implements IPlatformMaterialService {
+
+    @Autowired
+    PlatformMaterialMapper platformMaterialMapper;
+
+    @Autowired
+    IMaterialInfoService materialInfoService;
+
+    @Override
+    public List<JSONObject> queryMaterialsByDesignUserId(String materialStatus, String designUserId) {
+        JSONArray materialStatusJsonArray = JsonArrayUtil.Varchar2JSONArray(materialStatus);
+        return platformMaterialMapper.queryMaterialsByDesignUserId(materialStatusJsonArray, designUserId);
+    }
+
+    @Override
+    public List<JSONObject> queryMaterialsByOperatorUserId(String operatorUserId) {
+        return platformMaterialMapper.queryMaterialsByOperatorUserId(operatorUserId);
+    }
+
+    @Override
+    public JSONObject queryScriptDetailById(String scriptId) {
+        return platformMaterialMapper.queryScriptDetailById(scriptId);
+    }
+
+    @Override
+    public JSONObject queryVideoDetailById(String videoId) {
+        return platformMaterialMapper.queryVideoDetailById(videoId);
+    }
+
+    @Override
+    public void updateMaterialStatusById(String id) {
+        MaterialInfo materialInfo = new MaterialInfo();
+        materialInfo.setId(id);
+        materialInfo.setStatus(1);
+        materialInfoService.updateById(materialInfo);
+    }
+}

+ 26 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/service/impl/PlatformOperateRecordServiceImpl.java

@@ -0,0 +1,26 @@
+package org.jeecg.modules.orderplatform.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.jeecg.modules.orderplatform.entity.PlatformOperateRecord;
+import org.jeecg.modules.orderplatform.mapper.PlatformOperateRecordMapper;
+import org.jeecg.modules.orderplatform.service.IPlatformOperateRecordService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 下单制操作记录
+ */
+@Service
+public class PlatformOperateRecordServiceImpl extends ServiceImpl<PlatformOperateRecordMapper, PlatformOperateRecord> implements IPlatformOperateRecordService {
+
+    @Autowired
+    PlatformOperateRecordMapper platformOperateRecordMapper;
+
+    @Override
+    public List<JSONObject> PageByCreateDesc() {
+        return platformOperateRecordMapper.PageByCreateDesc();
+    }
+}

+ 117 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/service/impl/PlatformOrderServiceImpl.java

@@ -0,0 +1,117 @@
+package org.jeecg.modules.orderplatform.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+
+import org.jeecg.common.util.DateUtils;
+import org.jeecg.modules.orderplatform.constants.MaterialType;
+import org.jeecg.modules.orderplatform.entity.PlatformMaterial;
+import org.jeecg.modules.orderplatform.entity.PlatformOrder;
+import org.jeecg.modules.orderplatform.mapper.PlatformOrderMapper;
+import org.jeecg.modules.orderplatform.service.IPlatformMaterialService;
+import org.jeecg.modules.orderplatform.service.IPlatformOrderService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.jeecg.modules.orderplatform.util.CodeBuilder.generateCode;
+
+@Service
+public class PlatformOrderServiceImpl extends ServiceImpl<PlatformOrderMapper, PlatformOrder> implements IPlatformOrderService {
+
+    @Autowired
+    IPlatformMaterialService platFormMaterialService;
+
+    @Override
+    public boolean generateMaterials(PlatformOrder platformOrder) {
+        boolean result=false;
+        //全部为真人视频
+        if(MaterialType.REAL.getKey()==platformOrder.getMaterialType()){
+            result= generateRealMaterial(platformOrder,platformOrder.getMaterialAmount());
+        }
+        //全部为剪辑视频
+        else if(MaterialType.CUT.getKey()==platformOrder.getMaterialType()){
+            result= generateCutMaterial(platformOrder,platformOrder.getMaterialAmount());
+        }
+        //组合视频
+        else if(MaterialType.GROUP.getKey()==platformOrder.getMaterialType()){
+            boolean real=generateRealMaterial(platformOrder,platformOrder.getRealAmount());
+            boolean cut=generateCutMaterial(platformOrder,platformOrder.getCutAmount());
+            result= real&&cut;
+        }
+        return result;
+    }
+
+    @Override
+    public boolean updateOrderFinishAmount(String code) {
+        QueryWrapper<PlatformOrder> queryWrapper=new QueryWrapper<>();
+        queryWrapper.eq("order_code",code);
+        PlatformOrder platformOrder= this.getOne(queryWrapper);
+        platformOrder.setMaterialFinishAmount(platformOrder.getMaterialFinishAmount()+1);
+        platformOrder.setMaterialFinishTime(DateUtils.getDate());
+        if(platformOrder.getMaterialAmount()==platformOrder.getMaterialFinishAmount()+1){
+            platformOrder.setOrderStatus(3);
+            platformOrder.setOrderFinishTime(DateUtils.getDate());
+        }
+        return this.updateById(platformOrder);
+    }
+
+    /**
+     * 生成真人物料
+     */
+    private boolean generateRealMaterial(PlatformOrder platformOrder,int amount){
+        String orderCode=platformOrder.getOrderCode();
+        if(orderCode.isEmpty()){
+            return false;
+        }
+        Long projectId=platformOrder.getProject();
+        String orderTitle=platformOrder.getOrderTitle();
+        PlatformMaterial platformMaterial;
+        List<PlatformMaterial> batch=new ArrayList<>();
+        for(int i=0; i<amount ;i++){
+            platformMaterial=new PlatformMaterial();
+            platformMaterial.setOrderCode(orderCode);
+            platformMaterial.setProjectId(projectId);
+            platformMaterial.setMaterialType(MaterialType.REAL.getKey());
+            platformMaterial.setMaterialStatus(0);
+            platformMaterial.setScriptStatus(-1);
+            platformMaterial.setVideoStatus(-1);
+            //注入唯一标识物料code
+            platformMaterial.setMaterialCode(generateCode());
+            platformMaterial.setMaterialName(orderTitle+"-"+MaterialType.REAL.getValue()+(i+1));
+            batch.add(platformMaterial);
+        }
+        return platFormMaterialService.saveBatch(batch);
+    }
+
+    /**
+     * 生成真人物料
+     */
+    private boolean generateCutMaterial(PlatformOrder platformOrder,int amount){
+        String orderCode=platformOrder.getOrderCode();
+        if(orderCode.isEmpty()){
+            return false;
+        }
+        Long projectId=platformOrder.getProject();
+        String orderTitle=platformOrder.getOrderTitle();
+        PlatformMaterial platformMaterial;
+        List<PlatformMaterial> batch=new ArrayList<>();
+        for(int i=0; i<amount ;i++){
+            platformMaterial=new PlatformMaterial();
+            platformMaterial.setOrderCode(orderCode);
+            platformMaterial.setProjectId(projectId);
+            platformMaterial.setMaterialType(MaterialType.CUT.getKey());
+            platformMaterial.setMaterialStatus(0);
+            platformMaterial.setScriptStatus(-1);
+            platformMaterial.setVideoStatus(-1);
+            //注入唯一标识物料code
+            platformMaterial.setMaterialCode(generateCode());
+            platformMaterial.setMaterialName(orderTitle+"-"+MaterialType.CUT.getValue()+(i+1));
+            batch.add(platformMaterial);
+        }
+        return platFormMaterialService.saveBatch(batch);
+    }
+} 

+ 94 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/service/impl/PlatformQueryOtherServiceImpl.java

@@ -0,0 +1,94 @@
+package org.jeecg.modules.orderplatform.service.impl;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import org.apache.shiro.SecurityUtils;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.modules.orderplatform.mapper.PlatformQueryOtherMapper;
+import org.jeecg.modules.orderplatform.service.IPlatformQueryOtherService;
+import org.jeecg.modules.orderplatform.util.JsonArrayUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class PlatformQueryOtherServiceImpl implements IPlatformQueryOtherService {
+
+    @Autowired
+    PlatformQueryOtherMapper platformQueryOtherMapper;
+
+    @Override
+    public List<JSONObject> getAllDesignLeader() {
+        return platformQueryOtherMapper.queryAllDesignLeader();
+    }
+
+    @Override
+    public Map<String, Object> operatorJobContent() {
+        Map<String, Object> result=new HashMap<>();
+        String currentLogon=getCurrentLogon();
+        //我发起的订单
+        result.put("newOrder",platformQueryOtherMapper.queryNewOrderCountByOperator(currentLogon));
+        //待审核的物料
+        result.put("toAuditMaterial",platformQueryOtherMapper.queryMaterialCountByOperatorUserId(currentLogon));
+        //已完成的订单
+        result.put("finishOrder",platformQueryOtherMapper.queryFinishOrderCountByOperator(currentLogon));
+        //被驳回的
+        result.put("rejectOrder",platformQueryOtherMapper.queryRejectOrderCountByOperator(currentLogon));
+        //全部订单
+        result.put("allOrder",platformQueryOtherMapper.queryNewOrderCountByOperator(currentLogon));
+
+        return result;
+
+    }
+
+    @Override
+    public Map<String, Object> designJobContent() {
+        Map<String, Object> result=new HashMap<>();
+        String currentLogon=getCurrentLogon();
+        //指派给我的物料(待完成)
+        result.put("myMaterial", getMaterialCountByDesignUserId(currentLogon,"1346"));
+        //被驳回的物料
+        result.put("rejectMaterial", getMaterialCountByDesignUserId(currentLogon,"36"));
+        //已完成的物料
+        result.put("finishMaterial", getMaterialCountByDesignUserId(currentLogon,"7"));
+        //全部物料
+        result.put("allMaterial", getMaterialCountByDesignUserId(currentLogon,"1234567"));
+        return result;
+    }
+
+    @Override
+    public Map<String, Object> designLeaderJobContent() {
+        Map<String, Object> result=new HashMap<>();
+        String currentLogon=getCurrentLogon();
+        //待确定的订单
+        result.put("toDecided", platformQueryOtherMapper.queryOrderCountByDesign(currentLogon));
+        //带指派的物料
+        result.put("toPayOut", platformQueryOtherMapper.queryMaterialCountByDesign(currentLogon));
+        //指派给我的物料(待完成)
+        result.put("myMaterial", getMaterialCountByDesignUserId(currentLogon,"1234567"));
+        //被驳回的物料
+        result.put("rejectMaterial", getMaterialCountByDesignUserId(currentLogon,"36"));
+        //已完成订单
+        result.put("finishOrder", platformQueryOtherMapper.queryFinishOrderCountByDesign(currentLogon));
+        //全部订单
+        result.put("allOrder",platformQueryOtherMapper.queryAllOrderByDesign(currentLogon));
+        return result;
+    }
+
+    @Override
+    public JSONObject queryIdentity() {
+        return platformQueryOtherMapper.queryIdentity(getCurrentLogon());
+    }
+
+    private String getCurrentLogon(){
+        return ((LoginUser) SecurityUtils.getSubject().getPrincipal()).getId();
+    }
+
+    private int getMaterialCountByDesignUserId(String userId,String materialStatus){
+        JSONArray materialStatusJsonArray = JsonArrayUtil.Varchar2JSONArray(materialStatus);
+        return platformQueryOtherMapper.queryMaterialCountByDesignUserId(userId,materialStatusJsonArray);
+    }
+}

+ 10 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/util/CodeBuilder.java

@@ -0,0 +1,10 @@
+package org.jeecg.modules.orderplatform.util;
+
+import java.util.UUID;
+
+public class CodeBuilder {
+
+    public static String generateCode(){
+        return UUID.randomUUID().toString().replaceAll("-","");
+    }
+}

+ 53 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/util/DictHandler.java

@@ -0,0 +1,53 @@
+package org.jeecg.modules.orderplatform.util;
+
+import cn.com.ctop.common.module.service.IProjectService;
+import org.jeecg.modules.orderplatform.entity.PlatformMaterial;
+import org.jeecg.modules.orderplatform.entity.PlatformOrder;
+import org.jeecg.modules.system.service.ISysUserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+@Component
+public class DictHandler {
+
+    @Autowired
+    ISysUserService sysUserService;
+
+    @Autowired
+    IProjectService projectService;
+
+    public List<PlatformOrder> dictHandlerOrders(List<PlatformOrder> data){
+        data.forEach(platformOrder -> {
+            platformOrder.setDesignName(sysUserService.getById(platformOrder.getDesign()).getRealname());
+            platformOrder.setCreateByName(sysUserService.getById(platformOrder.getCreateBy()).getRealname());
+            platformOrder.setProjectName(projectService.getById(platformOrder.getProject()).getProjectName());
+        });
+        return data;
+    }
+
+    public PlatformOrder dictHandlerOrder(PlatformOrder data){
+        data.setDesignName(sysUserService.getById(data.getDesign()).getRealname());
+        data.setCreateByName(sysUserService.getById(data.getCreateBy()).getRealname());
+        data.setProjectName(projectService.getById(data.getProject()).getProjectName());
+
+        return data;
+    }
+
+    public List<PlatformMaterial> dictHandlerMaterial(List<PlatformMaterial> data){
+        data.forEach(platformMaterial -> {
+            if(!platformMaterial.getClip().isEmpty()){
+                platformMaterial.setClipName(sysUserService.getById(platformMaterial.getClip()).getRealname());
+            }
+            if(!platformMaterial.getPlan().isEmpty()){
+                platformMaterial.setPlanName(sysUserService.getById(platformMaterial.getPlan()).getRealname());
+            }
+            if(!platformMaterial.getShot().isEmpty()){
+                platformMaterial.setShotName(sysUserService.getById(platformMaterial.getShot()).getRealname());
+            }
+            platformMaterial.setProjectName(projectService.getById(platformMaterial.getProjectId()).getProjectName());
+        });
+        return data;
+    }
+}

+ 18 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/util/JsonArrayUtil.java

@@ -0,0 +1,18 @@
+package org.jeecg.modules.orderplatform.util;
+
+import com.alibaba.fastjson.JSONArray;
+
+public class JsonArrayUtil {
+
+    public static JSONArray Varchar2JSONArray(String data){
+        if(data.isEmpty()){
+            return null;
+        }
+        JSONArray jsonArray=new JSONArray();
+        char[] chars= data.toCharArray();
+        for(int i=0;i<chars.length;i++){
+            jsonArray.add(chars[i]);
+        }
+        return jsonArray;
+    }
+}

+ 83 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/util/OperateRecordHandler.java

@@ -0,0 +1,83 @@
+package org.jeecg.modules.orderplatform.util;
+
+import org.apache.shiro.SecurityUtils;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.modules.orderplatform.entity.PlatformOperateRecord;
+import org.jeecg.modules.orderplatform.service.IPlatformOperateRecordService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@Component
+public class OperateRecordHandler {
+
+    @Autowired
+    IPlatformOperateRecordService platformOperateRecordService;
+
+    /**
+     * 审批记录
+     */
+    public void Approval(String code, String operate) {
+        switch (operate) {
+            //接单:
+            case "ACCEPT_ORDER":
+                saveOperateRecord(code, "", "接单成功");
+                break;
+            //销毁订单
+            case "DESTROY_ORDER":
+                saveOperateRecord(code, "", "销毁了订单");
+                break;
+            //驳回订单
+            case "REJECT_ORDER":
+                saveOperateRecord(code, "", "驳回了订单");
+                break;
+            //通过脚本
+            case "ACCEPT_SCRIPT":
+                saveOperateRecord("", code, "审批通过了脚本");
+                break;
+            //驳回脚本
+            case "REJECT_SCRIPT":
+                saveOperateRecord("", code, "审批驳回了脚本");
+                break;
+            //通过脚本
+            case "ACCEPT_VIDEO":
+                saveOperateRecord("", code, "审批通过了视频");
+                break;
+            //驳回脚本
+            case "REJECT_VIDEO":
+                saveOperateRecord("", code, "审批驳回了视频");
+                break;
+        }
+    }
+
+    /**
+     * 提交记录
+     */
+    public void Submit(String code, String operate) {
+        switch (operate) {
+            //发起订单
+            case "PAYOUT":
+                saveOperateRecord(code, "", "发起了一个订单");
+                break;
+            //上传脚本
+            case "SCRIPT":
+                saveOperateRecord("", code, "上传了一个脚本");
+                break;
+            //上传视频
+            case "VIDEO":
+                saveOperateRecord("", code, "上传了一个视频");
+                break;
+        }
+    }
+
+    //操作记录入库
+    private void saveOperateRecord(String order, String material, String operate) {
+        //获取操作人Id
+        String userId = ((LoginUser) SecurityUtils.getSubject().getPrincipal()).getId();
+        PlatformOperateRecord platformOperateRecord = new PlatformOperateRecord();
+        platformOperateRecord.setUserId(userId);
+        platformOperateRecord.setOrderCode(order);
+        platformOperateRecord.setMaterialCode(material);
+        platformOperateRecord.setOperate(operate);
+        platformOperateRecordService.save(platformOperateRecord);
+    }
+}

+ 1 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysUserService.java

@@ -70,6 +70,7 @@ public interface ISysUserService extends IService<SysUser> {
 
     public SysUser getUserByName(String username);
 
+    SysUser getUserByRealName(String realname);
     /**
      * 添加用户和用户角色关系
      *

+ 4 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java

@@ -146,6 +146,10 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         return userMapper.getUserByName(username);
     }
 
+    @Override
+    public SysUser getUserByRealName(String username) {
+        return userMapper.getUserByRealName(username);
+    }
 
     @Override
     @Transactional

+ 1 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/wps/service/IWpsFileService.java

@@ -40,7 +40,7 @@ public interface IWpsFileService extends IService<WpsFile> {
 
     int delFile(String id);
 
-    void uploadFile(MultipartFile file,String userId);
+    WpsFile uploadFile(MultipartFile file,String userId);
 
     String createTemplateFile(String template);
 

+ 5 - 2
jeecg-boot-module-system/src/main/java/org/jeecg/modules/wps/service/impl/WpsFileServiceImpl.java

@@ -349,7 +349,7 @@ public class WpsFileServiceImpl extends ServiceImpl<WpsFileMapper, WpsFile> impl
     }
 
     @Override
-    public void uploadFile(MultipartFile file,String userId){
+    public WpsFile uploadFile(MultipartFile file,String userId){
         ResFileDTO resFileDTO = CosUtils.uploadMultipartFile(file,"script-lib/wps/");
         // 上传成功后,处理数据库记录值
         Date date = new Date();
@@ -364,8 +364,9 @@ public class WpsFileServiceImpl extends ServiceImpl<WpsFileMapper, WpsFile> impl
 
         // 处理水印
         wpsFileWatermarkService.saveWatermark(f.getId());
-    }
 
+        return f;
+    }
     @Override
     public String createTemplateFile(String template){
         LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
@@ -395,4 +396,6 @@ public class WpsFileServiceImpl extends ServiceImpl<WpsFileMapper, WpsFile> impl
         ResultMapUtils.setResultMap(result,StatusCode.COMMON_SUCCESS);
         return result;
     }
+
+
 }

+ 2 - 0
module-common/src/main/java/cn/com/ctop/common/module/mapper/SysUserMapper.java

@@ -34,6 +34,8 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
      */
     SysUser getUserByName(@Param("username") String username);
 
+    SysUser getUserByRealName(@Param("realname") String realname);
+
     /**
      * 根据部门Id查询用户信息
      *

+ 5 - 0
module-common/src/main/java/cn/com/ctop/common/module/mapper/xml/SysUserMapper.xml

@@ -61,6 +61,11 @@
 		select * from  sys_user  where phone = #{phone} and del_flag = 0
 	</select>
 
+    <!-- 根据realname查询 -->
+    <select id="getUserByRealName" resultType="cn.com.ctop.common.module.entity.SysUser">
+        select * from  sys_user  where realname = #{realname} and del_flag = 0 limit 1
+    </select>
+
     <!-- 根据邮箱查询用户信息 -->
     <select id="getUserByEmail" resultType="cn.com.ctop.common.module.entity.SysUser">
 	select * from  sys_user  where email = #{email} and del_flag = 0

+ 5 - 0
module-common/src/main/java/cn/com/ctop/common/module/service/IMaterialInfoService.java

@@ -58,6 +58,11 @@ public interface IMaterialInfoService extends IService<MaterialInfo> {
      */
     Map<String, Object> correlationUpload(JSONObject json);
 
+    /**
+     *  下单制关联素材库
+     */
+    String platformUploadVideo(JSONObject json);
+
 
     /**
      * 关联上传封面

+ 96 - 0
module-common/src/main/java/cn/com/ctop/common/module/service/impl/MaterialInfoServiceImpl.java

@@ -44,6 +44,8 @@ import com.tencentcloudapi.mps.v20190612.models.DescribeTaskDetailResponse;
 import it.sauronsoftware.jave.Encoder;
 import it.sauronsoftware.jave.EncoderException;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.SecurityUtils;
+import org.jeecg.common.system.vo.LoginUser;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
@@ -634,6 +636,100 @@ public class MaterialInfoServiceImpl extends ServiceImpl<MaterialInfoMapper, Mat
         return resultMap;
     }
 
+    @Override
+    public String platformUploadVideo(JSONObject json) {
+        String userId = ((LoginUser) SecurityUtils.getSubject().getPrincipal()).getId();
+        MaterialInfo info = new MaterialInfo();
+        String type = json.getString("type");
+        info.setType(type);
+        String url = "";
+        if (!Check.isNull(json.getString("url"))) {
+            url = "https:" + json.getString("url");
+        }
+        Long projectId = json.getLong("projectId");
+        String code = json.getString("code");
+        info.setCode(code);
+        String id = code + "_" + projectId;
+        info.setId(id);
+        if (!Check.isNull(json.getString("watermarkUrl"))) {
+            info.setWatermarkUrl(json.getString("watermarkUrl"));
+        }
+        info.setUrl(url);
+        info.setUserId(userId);
+        info.setProjectId(projectId);
+        info.setWatermarkCode(json.getString("watermarkCode"));
+        info.setStatus(0);
+        info.setMaterialName(json.getString("materialName"));
+        info.setWatermarkMaterialName(json.getString("watermarkMaterialName"));
+        info.setMaterialDescribe(json.getString("materialDescribe"));
+        Project project = projectService.getById(projectId);
+        if (!Check.isNull(project)) {
+            if (!Check.isNull(project.getSupplierCode())) {
+                info.setSupplierCode(project.getSupplierCode());
+            }
+        }
+        MaterialCutFrame cutFrame = materialCutFrameService.getCutFrameByCode(code);
+        if (Check.isNull(cutFrame)) {
+            String videoUrl = URLDecoder.decode(info.getUrl()).replace("https://media-1301855440.cos.ap-chongqing.myqcloud.com/", "");
+            String loadImage = "cutFrame/" + code + "/zero.jpg";
+            String coverUrl = CloudVideoProcessUtil.videoCutPictureHandle(videoUrl, loadImage);
+            info.setCoverUrl(coverUrl);
+            Thread thread = new Thread() {
+                @Override
+                public void run() {
+                    try {
+                        log.info("开始抽帧,code:{}", code);
+                        materialCutFrameService.getTencentCutFrame(videoUrl, code, coverUrl);
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    }
+                }
+            };
+            thread.start();
+        } else {
+            info.setCoverUrl(cutFrame.getUrl());
+        }
+        this.save(info);
+        JSONArray imageArr = json.getJSONArray("imageArr");
+        if (!Check.isNull(imageArr)) {
+            JSONObject imageJson = new JSONObject();
+            imageJson.put("videoId", info.getCode());
+            imageJson.put("userId", userId);
+            imageJson.put("projectId", projectId);
+            imageJson.put("imageArr", imageArr);
+            materialImageInfoService.insertImage(imageJson);
+        }
+        Map<String, Object> deleteMap = new HashMap<>();
+        deleteMap.put("material_id", info.getCode());
+        JSONObject ascription = json.getJSONObject("ascription");
+        if (!Check.isNull(ascription)) {
+            MaterialAscription materialAscription = new MaterialAscription();
+            materialAscription.setMaterialId(info.getCode());
+            materialAscription.setClipId(ascription.getString("clipId"));
+            materialAscription.setShotId(ascription.getString("shotId"));
+            materialAscription.setPlanId(ascription.getString("planId"));
+            materialAscription.setPlaneId(ascription.getString("planeId"));
+            materialAscriptionMapper.deleteByMap(deleteMap);
+            int result = materialAscriptionMapper.insert(materialAscription);
+            if (result > 0) {
+                log.info("素材归属信息入库完成,MaterialId:{}", info.getId());
+            }
+        }
+        materialTagInfoService.deleteByCode(code);
+        JSONArray modalityTagList = json.getJSONArray("modalityTagList");
+        insertTagList(code, userId, modalityTagList);
+        JSONArray contentTagList = json.getJSONArray("contentTagList");
+        insertTagList(code, userId, contentTagList);
+        JSONArray senceTagList = json.getJSONArray("senceTagList");
+        insertTagList(code, userId, senceTagList);
+        JSONArray modTagList = json.getJSONArray("modTagList");
+        insertTagList(code, userId, modTagList);
+        getFile(info, project.getMediaId());
+
+        return id;
+    }
+
+
     private void insertTagList(String code, String userId, JSONArray tagList) {
         if (null != tagList && !tagList.isEmpty()) {
             for (int m = 0; m < tagList.size(); m++) {

+ 1 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/entity/KuaiShouGroupTarget.java

@@ -162,6 +162,7 @@ public class KuaiShouGroupTarget {
     @Excel(name = "人群包排除", width = 15)
     @ApiModelProperty(value = "人群包排除")
     private String excludePopulation;
+    private String thirdPlatformCode;
     /**
      * 0:关闭智能扩量,1:打开智能扩量
      */

+ 2 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/xml/KuaiShouGroupTargetMapper.xml

@@ -26,6 +26,7 @@
         app_ids,
         population,
         exclude_population,
+        third_platform_code,
         filter_converted_level,
         is_open,
         no_age_break,
@@ -56,6 +57,7 @@
             #{targets.appIds},
             #{targets.population},
             #{targets.excludePopulation},
+            #{targets.thirdPlatformCode},
             #{targets.filterConvertedLevel},
             #{targets.isOpen},
             #{targets.noAgeBreak},

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

@@ -329,6 +329,11 @@ public class BatchServiceImpl implements IBatchService {
             targetJson.put("exclude_population", requestJson.getJSONArray("excludePopulation"));
         }
 
+
+        if (!Check.isNull(requestJson.getJSONArray("thirdPlatformCode"))) {
+            targetJson.put("third_platform_code", requestJson.getJSONArray("thirdPlatformCode"));
+        }
+
         if (sceneId != 5) {
             JSONObject intelliExtendJson = new JSONObject();
 
@@ -463,8 +468,6 @@ public class BatchServiceImpl implements IBatchService {
         JSONObject returnJson = new JSONObject();
 
         try {
-
-
             JSONObject unitJson = new JSONObject();
             Long campaignId = requestJson.getLong("campaignId");
             if (Check.isNull(campaignId)) {
@@ -477,8 +480,6 @@ public class BatchServiceImpl implements IBatchService {
             } else {
                 unitJson.put("campaign_id", campaignId);
             }
-
-
             // 资源位置
             JSONArray scene_id = requestJson.getJSONArray("sceneId");
             if (!Check.isNull(scene_id)) {
@@ -637,8 +638,10 @@ public class BatchServiceImpl implements IBatchService {
                 targetJson.put("exclude_population", requestJson.getJSONArray("excludePopulation"));
             }
 
+            if (!Check.isNull(requestJson.getJSONArray("thirdPlatformCode"))) {
+                targetJson.put("third_platform_code", requestJson.getJSONArray("thirdPlatformCode"));
+            }
             JSONObject intelliExtendJson = new JSONObject();
-
             if (sceneId != 5) {
                 // 开启智能扩量
                 if (!Check.isNull(requestJson.getInteger("isOpen"))) {
@@ -935,11 +938,11 @@ public class BatchServiceImpl implements IBatchService {
                         targetJson.put("exclude_population", JSONArray.parseArray(groupTarget.getExcludePopulation()));
                     }
 
+                    if (!Check.isNull(groupTarget.getThirdPlatformCode())) {
+                        targetJson.put("third_platform_code", groupTarget.getThirdPlatformCode());
+                    }
                     if (sceneId != 5) {
-
-
                         JSONObject intelliExtendJson = new JSONObject();
-
                         // 开启智能扩量
                         if (!Check.isNull(groupTarget.getIsOpen())) {
                             intelliExtendJson.put("is_open", groupTarget.getIsOpen());
@@ -1771,6 +1774,11 @@ public class BatchServiceImpl implements IBatchService {
             if (!Check.isNull(requestJson.getJSONArray("excludePopulation"))) {
                 targetJson.put("exclude_population", requestJson.getJSONArray("excludePopulation"));
             }
+
+            if (!Check.isNull(requestJson.getJSONArray("thirdPlatformCode"))) {
+                targetJson.put("third_platform_code", requestJson.getJSONArray("thirdPlatformCode"));
+            }
+
             if (scene != 5) {
                 if (!Check.isNull(requestJson.getInteger("filterConvertedLevel"))) {
                     targetJson.put("filter_converted_level", requestJson.getInteger("filterConvertedLevel"));

+ 5 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaiShouGroupServiceImpl.java

@@ -464,6 +464,11 @@ public class KuaiShouGroupServiceImpl extends ServiceImpl<KuaiShouGroupMapper, K
                             groupTarget.setExcludePopulation(targetJson.getJSONArray("exclude_population").toJSONString());
                         }
 
+                        if (!Check.isNull(targetJson.getJSONArray("third_platform_code"))) {
+                            groupTarget.setThirdPlatformCode(targetJson.getJSONArray("third_platform_code").toJSONString());
+                        }
+
+
                         JSONObject intelliExtend = targetJson.getJSONObject("intelli_extend");
                         if (!Check.isNull(intelliExtend)) {
                             groupTarget.setIsOpen(intelliExtend.getInteger("is_open"));

+ 3 - 3
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/AccountReportMapper.xml

@@ -117,7 +117,7 @@
         end
         ) eventRegisterCost,
         account_id accountId,
-        (select auth_name from ctop_user_allocation where account_id = = t1.account_id limit 1) accountName,
+        (select auth_name from ctop_user_allocation where account_id = t1.account_id limit 1) accountName,
         sum(event_next_day_stay) eventNextDayStay,
         (case
         when sum(activation) != 0
@@ -171,7 +171,7 @@
         ) eventRegisterCost,
 
         account_id accountId,
-        (select auth_name from ctop_user_allocation where account_id = = t1.account_id limit 1) accountName
+        (select auth_name from ctop_user_allocation where account_id = t1.account_id limit 1) accountName
         from
         ctop_kuaishou_report_hourly_account t1
         where stat_date = #{date}
@@ -215,7 +215,7 @@
         end
         ) eventRegisterCost,
         account_id accountId,
-        (select auth_name from ctop_user_allocation where account_id = = t1.account_id limit 1) accountName,
+        (select auth_name from ctop_user_allocation where account_id = t1.account_id limit 1) accountName,
         sum(event_next_day_stay) eventNextDayStay,
         (case
         when sum(activation) != 0

+ 2 - 2
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/DailyReportMapper.xml

@@ -120,7 +120,7 @@
         FROM
         ctop_user_allocation
         WHERE
-        account_id = accountId
+        account_id = t1.account_id
         ) authName,
         stat_date statDate,
         campaign_name campaignName,
@@ -184,7 +184,7 @@
         ) conversionPrice
 
         FROM
-        ctop_kuaishou_report_daily_group
+        ctop_kuaishou_report_daily_group t1
         <where>
             <if test="date != null">
                 and stat_date = #{date}

+ 2 - 2
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/KuaiShouYiCheReportServiceImpl.java

@@ -64,7 +64,7 @@ public class KuaiShouYiCheReportServiceImpl implements IKuaiShouYiCheReportServi
 
 
             // ios
-            requestMap.put("systemType", "IOS");
+            requestMap.put("systemType", "ios");
             requestMap.put("statDate", statDate);
             // 账号
             List<JSONObject> iosReportArr = kuaiShouYiCheReportMapper.selectReportByMap(requestMap);
@@ -106,7 +106,7 @@ public class KuaiShouYiCheReportServiceImpl implements IKuaiShouYiCheReportServi
             requestMap.put("disCount", disCount);
             requestMap.put("projectId", projectId);
             requestMap.put("statDate", statDate);
-            requestMap.put("systemType", "IOS");
+            requestMap.put("systemType", "ios");
             JSONObject iosReport = kuaiShouYiCheReportMapper.getDailyReportByMap(requestMap);
             requestMap.put("systemType", "android");
             JSONObject androidReport = kuaiShouYiCheReportMapper.getDailyReportByMap(requestMap);