From 55f74a4ebad5affb6085734fd2f90f823572020e Mon Sep 17 00:00:00 2001
From: simontigers <47096077+simontigers@users.noreply.github.com>
Date: Wed, 27 Sep 2023 09:54:30 +0800
Subject: [PATCH] feat: add api get_notice_by_ids (#184)

---
 cmdb-api/api/lib/common_setting/employee.py   | 23 +++++++++++++++++++
 cmdb-api/api/views/common_setting/employee.py | 11 +++++++++
 2 files changed, 34 insertions(+)

diff --git a/cmdb-api/api/lib/common_setting/employee.py b/cmdb-api/api/lib/common_setting/employee.py
index 72898f7..bbd3cb6 100644
--- a/cmdb-api/api/lib/common_setting/employee.py
+++ b/cmdb-api/api/lib/common_setting/employee.py
@@ -474,6 +474,29 @@ class EmployeeCRUD(object):
 
         return [r.to_dict() for r in results]
 
+    @staticmethod
+    def get_employee_notice_by_ids(employee_ids):
+        criterion = [
+            Employee.employee_id.in_(employee_ids),
+            Employee.deleted == 0,
+        ]
+        direct_columns = ['email', 'mobile']
+        employees = Employee.query.filter(
+            *criterion
+        ).all()
+        results = []
+        for employee in employees:
+            d = employee.to_dict()
+            tmp = dict(
+                employee_id=employee.employee_id,
+            )
+            for column in direct_columns:
+                tmp[column] = d.get(column, '')
+            notice_info = d.get('notice_info', {})
+            tmp.update(**notice_info)
+            results.append(tmp)
+        return results
+
 
 def get_user_map(key='uid', acl=None):
     """
diff --git a/cmdb-api/api/views/common_setting/employee.py b/cmdb-api/api/views/common_setting/employee.py
index 56adf8b..ce5578b 100644
--- a/cmdb-api/api/views/common_setting/employee.py
+++ b/cmdb-api/api/views/common_setting/employee.py
@@ -145,3 +145,14 @@ class EmployeePositionView(APIView):
         result = EmployeeCRUD.get_all_position()
         return self.jsonify(result)
 
+
+class GetEmployeeNoticeByIds(APIView):
+    url_prefix = (f'{prefix}/get_notice_by_ids',)
+
+    def post(self):
+        employee_ids = request.json.get('employee_ids', [])
+        if not employee_ids:
+            result = []
+        else:
+            result = EmployeeCRUD.get_employee_notice_by_ids(employee_ids)
+        return self.jsonify(result)