Bläddra i källkod

fix of 下单制相关code on 2021.1.20

jiequan.bi 4 år sedan
förälder
incheckning
02075850e8

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

@@ -45,6 +45,7 @@ DesignerCommitProcessCtrl {
             //自动分发订单,生成物料审批流程
             platformOrderService.generateMaterials(platformOrder);
             operateRecordHandler.Approval(platformOrder.getOrderCode(),"ACCEPT_ORDER");
+            approvalNodeNoticeHandler.NOTICE_WE_CHAT_ORDER("ACCEPT_ORDER",platformOrder.getOrderCode());
             result.success("接单成功!");
         }else {
             result.error500("订单接单失败,请联系管理员!");
@@ -64,6 +65,7 @@ DesignerCommitProcessCtrl {
         boolean ok = platformOrderService.updateById(platformOrder);
         if (ok) {
             operateRecordHandler.Approval(platformOrder.getOrderCode(),"REJECT_ORDER");
+            approvalNodeNoticeHandler.NOTICE_WE_CHAT_ORDER("REJECT_ORDER",platformOrder.getOrderCode());
             result.success("订单已被驳回!");
         }else {
             result.error500("订单驳回失败,请联系管理员!");

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

@@ -41,6 +41,7 @@ public class OperatorApprovalProcessCtrl {
             boolean save = platformOrderService.save(platformOrder);
             if (save) {
                 operateRecordHandler.Submit(platformOrder.getOrderCode(), "PAYOUT");
+                approvalNodeNoticeHandler.NOTICE_WE_CHAT_ORDER("PAYOUT",platformOrder.getOrderCode());
                 result.setResult(platformOrderService.queryByCode(platformOrder.getOrderCode()));
                 result.success("下单成功!");
             }
@@ -61,6 +62,7 @@ public class OperatorApprovalProcessCtrl {
         boolean ok = platformOrderService.updateById(platformOrder);
         if (ok) {
             operateRecordHandler.Submit(platformOrder.getOrderCode(), "PAYOUT");
+            approvalNodeNoticeHandler.NOTICE_WE_CHAT_ORDER("PAYOUT",platformOrder.getOrderCode());
             result.success("订单重新提交成功!");
         }else {
             result.error500("订单重新提交异常,请联系管理员");
@@ -80,6 +82,7 @@ public class OperatorApprovalProcessCtrl {
         boolean ok = platformOrderService.updateById(platformOrder);
         if (ok) {
             operateRecordHandler.Approval(platformOrder.getOrderCode(), "DESTROY_ORDER");
+            approvalNodeNoticeHandler.NOTICE_WE_CHAT_ORDER("DESTROY_ORDER",platformOrder.getOrderCode());
             result.success("接单已销毁!");
         } else {
             result.error500("订单销毁失败,请联系管理员!");

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

@@ -10,6 +10,7 @@ import org.jeecg.modules.orderplatform.entity.PlatformMaterial;
 import org.jeecg.modules.orderplatform.entity.PlatformScript;
 import org.jeecg.modules.orderplatform.service.IPlatformMaterialService;
 import org.jeecg.modules.orderplatform.service.IPlatformOrderService;
+import org.jeecg.modules.orderplatform.util.ApprovalNodeNoticeHandler;
 import org.jeecg.modules.orderplatform.util.DictHandler;
 import org.jeecg.modules.orderplatform.util.OperateRecordHandler;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -37,7 +38,10 @@ public class PlatformMaterialCtrl {
     private OperateRecordHandler operateRecordHandler;
 
     @Autowired
-    DictHandler dictHandler;
+    private ApprovalNodeNoticeHandler approvalNodeNoticeHandler;
+
+    @Autowired
+    private DictHandler dictHandler;
 
     /**
      * 根据orderCode查询关联物料
@@ -118,6 +122,7 @@ public class PlatformMaterialCtrl {
         boolean ok = platformMaterialService.updateById(platformMaterial);
         if (ok) {
             operateRecordHandler.Approval(platformMaterial.getMaterialCode(), "ACCEPT_SCRIPT");
+            approvalNodeNoticeHandler.NOTICE_WE_CHAT_MATERIAL("ACCEPT_SCRIPT",platformMaterial.getMaterialCode());
             result.success("脚本审核通过!");
         } else {
             result.error500("脚本审核失败!请联系管理员");
@@ -135,6 +140,7 @@ public class PlatformMaterialCtrl {
         boolean ok = platformMaterialService.updateById(platformMaterial);
         if (ok) {
             operateRecordHandler.Approval(platformMaterial.getMaterialCode(), "REJECT_SCRIPT");
+            approvalNodeNoticeHandler.NOTICE_WE_CHAT_MATERIAL("REJECT_SCRIPT",platformMaterial.getMaterialCode());
             result.success("脚本已驳回!");
         } else {
             result.error500("脚本驳回失败!请联系管理员");
@@ -192,8 +198,7 @@ public class PlatformMaterialCtrl {
             boolean order = platformOrderService.updateOrderFinishAmount(platformMaterial.getOrderCode());
             if (order) {
                 operateRecordHandler.Approval(platformMaterial.getMaterialCode(), "ACCEPT_VIDEO");
-                //修改素材库审核状态
-                //platformMaterialService.updateMaterialStatusById(platformMaterial.getVideoId());
+                approvalNodeNoticeHandler.NOTICE_WE_CHAT_MATERIAL("ACCEPT_VIDEO",platformMaterial.getMaterialCode());
                 result.success("视频审核通过!");
             }
         } else {
@@ -212,6 +217,7 @@ public class PlatformMaterialCtrl {
         boolean ok = platformMaterialService.updateById(platformMaterial);
         if (ok) {
             operateRecordHandler.Approval(platformMaterial.getMaterialCode(), "REJECT_VIDEO");
+            approvalNodeNoticeHandler.NOTICE_WE_CHAT_MATERIAL("REJECT_VIDEO",platformMaterial.getMaterialCode());
             result.success("视频已驳回!");
         } else {
             result.error500("视频驳回失败!请联系管理员");

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

@@ -31,4 +31,10 @@ public interface PlatformMaterialMapper extends BaseMapper<PlatformMaterial> {
 
     int queryCountByMaterialAndVideo(@Param("materialCode") String materialCode,@Param("videoMd5") String videoMd5);
 
+    //查询物料相关人员
+    JSONObject queryMaterialRelatePersonByMaterialCode(@Param("materialCode") String materialCode);
+
+    //查询订单相关人员
+    JSONObject queryOrderRelatePersonByMaterialCode(@Param("orderCode") String orderCode);
+
 }

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

@@ -183,4 +183,45 @@
             material_code != #{materialCode}
           AND video_id = #{videoMd5}
     </select>
+    <select id="queryMaterialRelatePersonByMaterialCode" resultType="com.alibaba.fastjson.JSONObject">
+        SELECT
+            t1.id AS materialId,
+            t2.id AS orderId,
+            t1.material_name AS materialName,
+            t2.order_title AS orderTitle,
+            t1.script_advise AS scriptAdvise,
+            t1.video_advise AS videoAdvise,
+            t1.plan,
+            t1.shot,
+            t1.clip,
+            t2.design,
+            t2.operator,
+            (SELECT realname from sys_user where id=t1.clip limit 1) as clipName,
+            (SELECT realname from sys_user where id=t1.shot limit 1) as shotName,
+            (SELECT realname from sys_user where id=t1.plan limit 1) as planName,
+            (SELECT realname from sys_user where id=t2.design limit 1) as designName,
+            (SELECT realname from sys_user where id=t2.create_by limit 1) as operatorName,
+            t3. NAME AS scriptName,
+            t4. NAME AS videoName
+        FROM
+            ctop_platform_material t1
+                LEFT JOIN ctop_platform_order t2 ON t1.order_code = t2.order_code
+                LEFT JOIN wps_file t3 ON t1.script_id = t3.id
+                LEFT JOIN ctop_platform_video t4 ON t1.video_id = t4.md5
+        where t1.material_code=#{materialCode}
+    </select>
+
+    <select id="queryOrderRelatePersonByMaterialCode" resultType="com.alibaba.fastjson.JSONObject">
+        SELECT
+            id AS orderId,
+            order_title AS orderTitle,
+            t1.design,
+            t1.create_by as operator,
+            (SELECT realname from sys_user where id=t1.create_by limit 1) as operatorName,
+            (SELECT realname from sys_user where id=t1.design limit 1) as designName
+        FROM
+            ctop_platform_order t1
+        WHERE
+            order_code = #{orderCode}
+    </select>
 </mapper>

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

@@ -51,8 +51,13 @@ public interface IPlatformMaterialService extends IService<PlatformMaterial> {
     Map<String,Object> videoEcho(String videoId);
 
     /**
-     *  根据
+     *  根据materialCode 查询企业微信通知人
      */
+    JSONObject getMaterialRelatePersonByMaterialCode(String materialCode);
 
+    /**
+     *  根据orderCode 查询企业微信通知人
+     */
+    JSONObject getOrderRelatePersonByMaterialCode(String orderCode);
 
 }

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

@@ -139,6 +139,16 @@ public class PlatformMaterialServiceImpl extends ServiceImpl<PlatformMaterialMap
         return result;
     }
 
+    @Override
+    public JSONObject getMaterialRelatePersonByMaterialCode(String materialCode) {
+        return platformMaterialMapper.queryMaterialRelatePersonByMaterialCode(materialCode);
+    }
+
+    @Override
+    public JSONObject getOrderRelatePersonByMaterialCode(String orderCode) {
+        return platformMaterialMapper.queryOrderRelatePersonByMaterialCode(orderCode);
+    }
+
     /**
      * 同步素材视频
      */

+ 125 - 39
jeecg-boot-module-system/src/main/java/org/jeecg/modules/orderplatform/util/ApprovalNodeNoticeHandler.java

@@ -2,6 +2,7 @@ package org.jeecg.modules.orderplatform.util;
 
 import cn.com.ctop.common.module.mapper.MailLogMapper;
 import cn.com.ctop.common.module.utils.CorpWexinUtils;
+import com.alibaba.fastjson.JSONObject;
 import lombok.extern.slf4j.Slf4j;
 import org.jeecg.modules.orderplatform.service.IPlatformMaterialService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -22,66 +23,152 @@ public class ApprovalNodeNoticeHandler {
     IPlatformMaterialService platformMaterialService;
 
     /**
-     * 审批节点发送
+     *  企业微信通知
      */
-    public void notice(String operate, Set<String> acceptor) {
+    public void NOTICE_WE_CHAT_ORDER(String operate, String orderCode){
+        Map<String, JSONObject> relatePerson=relatePerson(orderCode,null);
+        message(operate,null, relatePerson.get("orderRelatePerson"));
+    }
+
+    public void NOTICE_WE_CHAT_MATERIAL(String operate, String materialCode){
+        Map<String, JSONObject> relatePerson=relatePerson(null,materialCode);
+        message(operate,relatePerson.get("materialRelatePerson"),null);
+    }
+
+    /**
+     * 查询消息接收者
+     */
+    private Map<String, JSONObject> relatePerson(String orderCode, String materialCode) {
+        Map<String, JSONObject> result = new HashMap<>();
+        if (null==materialCode) {
+            result.put("orderRelatePerson", platformMaterialService.getOrderRelatePersonByMaterialCode(orderCode));
+        } else {
+            result.put("materialRelatePerson", platformMaterialService.getMaterialRelatePersonByMaterialCode(materialCode));
+        }
+        return result;
+    }
+
+    /**
+     * 消息模板
+     */
+    private void message(String operate, JSONObject materialRelatePerson, JSONObject orderRelatePerson) {
         switch (operate) {
-            //设计组长接单,暂时不通知
+            //运营下单,通知设计组长接单派单
+            case "PAYOUT":
+                sendWeChat(orderRelatePerson.getString("design"),
+                        String.format("您收到一条新的素材订单,请及时查看!\n订单名称:%s\n 订单ID:%s\n下单人:%s",
+                                orderRelatePerson.getString("orderTitle"),
+                                orderRelatePerson.getLong("orderId"),
+                                orderRelatePerson.getString("operatorName")));
+                break;
+
+            //设计组长接单,发送通知给
             case "ACCEPT_ORDER":
-                sendWeChat(acceptor, "您发起的订单接单成功");
+                sendWeChat(orderRelatePerson.getString("operator"),
+                        String.format("您的订单“%s”已接单,请及时查看!\n 订单ID:%s\n操作人:%s",
+                                orderRelatePerson.getString("orderTitle"),
+                                orderRelatePerson.getLong("orderId"),
+                                orderRelatePerson.getString("designName")));
                 break;
+
             //设计组长驳回订单,通知下单运营订单已被驳回
             case "REJECT_ORDER":
-                sendWeChat(acceptor, "您有订单被驳回,请前往汇创平台处理");
+                sendWeChat(orderRelatePerson.getString("operator"),
+                        String.format("您的订单“%s”被驳回,请及时查看!\n 订单ID:%s\n操作人:%s\n驳回原因:%s",
+                                orderRelatePerson.getString("orderTitle"),
+                                orderRelatePerson.getLong("orderId"),
+                                orderRelatePerson.getString("designName"),
+                                orderRelatePerson.getString("orderAdvice")));
                 break;
-            //脚本审批通过,通知剪辑上传视频
-            case "ACCEPT_SCRIPT":
-                sendWeChat(acceptor, "有物料需要您上传视频,请前往汇创平台处理");
+
+            //销毁订单
+            case "DESTROY_ORDER":
+                sendWeChat(orderRelatePerson.getString("design"),
+                        String.format("您的订单“%s”已被撤回\n 订单ID:%s\n操作人:%s",
+                                orderRelatePerson.getString("orderTitle"),
+                                orderRelatePerson.getLong("orderId"),
+                                orderRelatePerson.getString("operatorName")));
                 break;
-            //脚本被驳回,通知编导重新上传脚本
-            case "REJECT_SCRIPT":
-                sendWeChat(acceptor, "您上传的脚本被驳回,请前往汇创平台处理");
+
+            //脚本上传成功,通知运营审核
+            case "SCRIPT":
+                sendWeChat(materialRelatePerson.getString("operator"),
+                        String.format("您的订单“%s”收到一条新的脚本,请及时审核!\n 订单ID:%s\n操作人:%s",
+                                materialRelatePerson.getString("orderTitle"),
+                                materialRelatePerson.getLong("orderId"),
+                                materialRelatePerson.getString("planName")));
                 break;
+
+            //视频上传成功,通知运营审核
+            case "VIDEO":
+                sendWeChat(materialRelatePerson.getString("operator"),
+                        String.format("您的订单“%s”收到一条新的视频,请及时审核!\n 订单ID:%s\n操作人:%s",
+                                materialRelatePerson.getString("orderTitle"),
+                                materialRelatePerson.getLong("orderId"),
+                                materialRelatePerson.getString("clipName")));
+                break;
+
+            //脚本审批通过,通知上传人
+            case "ACCEPT_SCRIPT":
+                sendWeChat(materialRelatePerson.getString("plan"),
+                        String.format("您的脚本“%s”已审核通过\n 所属订单:%s\n 订单ID:%s\n审核人:%s",
+                                materialRelatePerson.getString("scriptName"),
+                                materialRelatePerson.getString("orderTitle"),
+                                materialRelatePerson.getLong("orderId"),
+                                materialRelatePerson.getString("operatorName")));
+                break;
+
             //视频通过暂不通知
             case "ACCEPT_VIDEO":
-                sendWeChat(acceptor, "审批通过了视频,请前往汇创平台处理");
+                sendWeChat(materialRelatePerson.getString("clip"),
+                        String.format("您的视频“%s”已审核通过\n 所属订单:%s\n 订单ID:%s\n审核人:%s",
+                                materialRelatePerson.getString("videoName"),
+                                materialRelatePerson.getString("orderTitle"),
+                                materialRelatePerson.getLong("orderId"),
+                                materialRelatePerson.getString("operatorName")));
                 break;
+
+            //脚本被驳回,通知编导重新上传脚本
+            case "REJECT_SCRIPT":
+                sendWeChat(materialRelatePerson.getString("plan"),
+                        String.format("您的脚本“%s”被驳回,请及时查看!\n 所属订单:%s\n 订单ID:%s\n审核人:%s",
+                                materialRelatePerson.getString("scriptName"),
+                                materialRelatePerson.getString("orderTitle"),
+                                materialRelatePerson.getLong("orderId"),
+                                materialRelatePerson.getString("operatorName")));
+                break;
+
             //视频被驳回,通知剪辑重新上传视频
             case "REJECT_VIDEO":
-                sendWeChat(acceptor, "您上传的视频被驳回,请前往汇创平台处理");
-                break;
-            //运营下单,通知设计组长接单派单
-            case "PAYOUT":
-                sendWeChat(acceptor, "有一个订单需要您审批,请前往汇创平台处理");
-                break;
-            //设计上传脚本,通知运营审核
-            case "SCRIPT":
-                sendWeChat(acceptor, "有一个脚本需要您审批,请前往汇创平台处理");
-                break;
-            //设计上传视频,通知运营审核
-            case "VIDEO":
-                sendWeChat(acceptor, "有一个视频需要您审批,请前往汇创平台处理");
-                break;
+                sendWeChat(materialRelatePerson.getString("clip"),
+                        String.format("您的视频“%s”被驳回,请及时查看!\n 所属订单:%s\n 订单ID:%s\n审核人:%s",
+                                materialRelatePerson.getString("videoName"),
+                                materialRelatePerson.getString("orderTitle"),
+                                materialRelatePerson.getLong("orderId"),
+                                materialRelatePerson.getString("operatorName")));
+
         }
     }
 
     /**
-     *  查询消息接收者
+     * 发送通知消息到多人企业微信
      */
-    private Map<String, Map<String,String>> relatePerson(String orderCode,String materialCode){
-        Map<String,Map<String,String>> result= new HashMap<>();
-        if(materialCode.isEmpty()){
-
-        }else {
-
-        }
-        return result;
+    private void sendWeChat(Set<String> users, String message) {
+        users.forEach(userId -> {
+            String weChatId = mailLogMapper.getWChatIdByUserId(userId);
+            if (weChatId.isEmpty()) {
+                log.error(String.format("User WeChat not found. userId =%s", userId));
+                //TODO 通知管理员添加邮箱
+            } else {
+                CorpWexinUtils.sendMessageByWeChatId(weChatId, message);
+            }
+        });
     }
+
     /**
-     *  发送通知消息到企业微信
+     * 发送通知消息到多人企业微信
      */
-    private void sendWeChat(Set<String> users, String message) {
-        users.forEach(userId->{
+    private void sendWeChat(String userId, String message) {
             String weChatId = mailLogMapper.getWChatIdByUserId(userId);
             if (weChatId.isEmpty()) {
                 log.error(String.format("User WeChat not found. userId =%s", userId));
@@ -89,6 +176,5 @@ public class ApprovalNodeNoticeHandler {
             } else {
                 CorpWexinUtils.sendMessageByWeChatId(weChatId, message);
             }
-        });
     }
 }

+ 35 - 0
module-job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/handler/KuaiShouDailyImageReportLoadJob.java

@@ -0,0 +1,35 @@
+package com.ctop.job.kuaishou.handler;
+
+import cn.com.ctop.common.module.entity.CtopOauthToken;
+import cn.com.ctop.common.module.service.ICtopOauthTokenService;
+import cn.com.ctop.kuaishou.modules.report.service.IKuaishouReportDailyImageService;
+import com.xxl.job.core.context.XxlJobHelper;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import org.jeecg.common.util.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+@Component
+public class KuaiShouDailyImageReportLoadJob {
+    @Autowired
+    private ICtopOauthTokenService tokenService;
+    @Autowired
+    private IKuaishouReportDailyImageService kuaishouReportDailyImageService;
+    static ExecutorService executorService = Executors.newFixedThreadPool(8);
+    @XxlJob("kuaiShouDailyImageReportLoadJob")
+    public void execute() throws Exception {
+        //增加接口的开始和结束日期
+        String nowDate = DateUtils.getNowDate("yyyy-MM-dd");
+        String yesterdayDate = DateUtils.getAnotherDay("yyyy-MM-dd", nowDate, -1);
+        //1:查询当日数据
+        List<CtopOauthToken> tokens = tokenService.selectKuaiShouToken();
+        tokens.forEach(token -> executorService.submit(() -> {
+            kuaishouReportDailyImageService.getMaterialImageReport(token.getAccountId(),token.getAccessToken(),yesterdayDate,yesterdayDate,1);
+        }));
+        XxlJobHelper.log("快手图片消耗报表同步完成");
+    }
+}