Browse Source

🎈 perf: 优化工单回复功能

Pchen. 9 months ago
parent
commit
1b5899621c
2 changed files with 21 additions and 4 deletions
  1. 10 3
      apis/Kefu/Order/Admin/ReplyOrder.js
  2. 11 1
      apis/Kefu/Order/CreateOrder.js

+ 10 - 3
apis/Kefu/Order/Admin/ReplyOrder.js

@@ -25,6 +25,13 @@ class ReplyOrder extends API {
                 ...BaseStdResponse.ACCESS_DENIED
                 ...BaseStdResponse.ACCESS_DENIED
             })
             })
 
 
+        // 检查权限
+        let permission = await AccessControl.getPermission(uuid)
+        if (!permission.includes("admin") && !permission.includes("service"))
+            return res.json({
+                ...BaseStdResponse.PERMISSION_DENIED
+            })
+
         const time = new Date().getTime()
         const time = new Date().getTime()
 
 
         let msg = []
         let msg = []
@@ -47,7 +54,7 @@ class ReplyOrder extends API {
         msg = selectRows[0].msg
         msg = selectRows[0].msg
         msg.push(message)
         msg.push(message)
 
 
-        let sql = 'UPDATE work_order SET msg = ?, update_time = ?, state = 0 WHERE id = ?'
+        let sql = 'UPDATE work_order SET msg = ?, update_time = ?, state = 1 WHERE id = ?'
         let r = await db.query(sql, [msg, time, id])
         let r = await db.query(sql, [msg, time, id])
 
 
         try {
         try {
@@ -57,8 +64,8 @@ class ReplyOrder extends API {
                     data: r.insertId
                     data: r.insertId
                 })
                 })
 
 
-                if(selectRows[0].email) {
-                    await EmailTemplate.orderNewReply(selectRows[0].email, {id, content, files})
+                if (selectRows[0].email) {
+                    await EmailTemplate.orderNewReply(selectRows[0].email, { id, content, files })
                 }
                 }
             } else {
             } else {
                 return res.json({ ...BaseStdResponse.ERR, msg: '回复工单失败!数据库错误' })
                 return res.json({ ...BaseStdResponse.ERR, msg: '回复工单失败!数据库错误' })

+ 11 - 1
apis/Kefu/Order/CreateOrder.js

@@ -2,6 +2,7 @@ const API = require("../../../lib/API.js");
 const db = require("../../../plugin/DataBase/db.js");
 const db = require("../../../plugin/DataBase/db.js");
 const { BaseStdResponse } = require("../../../BaseStdResponse.js");
 const { BaseStdResponse } = require("../../../BaseStdResponse.js");
 const AccessControl = require("../../../lib/AccessControl.js");
 const AccessControl = require("../../../lib/AccessControl.js");
+const EmailTemplate = require('../../../../plugin/Email/emailTemplate')
 
 
 class CreateOrder extends API {
 class CreateOrder extends API {
     constructor() {
     constructor() {
@@ -77,9 +78,18 @@ class CreateOrder extends API {
                     data: r.insertId
                     data: r.insertId
                 })
                 })
 
 
-                // 完善功能:发送提醒邮件
+                let kefuSql = `
+                    SELECT email FROM users
+                    WHERE JSON_CONTAINS(permission, '"admin"') OR JSON_CONTAINS(permission, '"service"')
+                `
 
 
+                let kefuRows = await db.query(kefuSql);
 
 
+                let emails = [...new Set(kefuRows.map(row => row.email))]
+
+                for (const email of emails) {
+                    await EmailTemplate.orderNewReply(email, { id, content, files })
+                }
             } else {
             } else {
                 return res.json({ ...BaseStdResponse.ERR, msg: '提交工单失败!数据库错误' })
                 return res.json({ ...BaseStdResponse.ERR, msg: '提交工单失败!数据库错误' })
             }
             }