فهرست منبع

fix:门禁任务添加用户前先删除用户、清除时段设置

liuyaqi 2 سال پیش
والد
کامیت
0ce98a2813
2فایلهای تغییر یافته به همراه34 افزوده شده و 18 حذف شده
  1. 32 18
      service/access/lock_device_task.go
  2. 2 0
      sql/pass.sql

+ 32 - 18
service/access/lock_device_task.go

@@ -22,6 +22,25 @@ func SendLockTaskPersonUpdate(tenant string, personid int, del, add []model.Devi
 		return err
 	}
 
+	for _, l := range mergeDeviceLockRelate(add, del) {
+		err := SendLockTask(DeviceTask{
+			Tenant: tenant,
+			DeviceTask: model.DeviceTask{
+				TaskType:      0,
+				DeviceId:      l.DeviceId,
+				EquipmentName: "",
+				PersonId:      user.Id,
+				PersonName:    user.Realname,
+				TaskSequence:  0,
+				CreatedAt:     gtime.Now(),
+				UpdatedAt:     gtime.Now(),
+			},
+		})
+		if err != nil {
+			return err
+		}
+	}
+
 	for _, l := range add {
 		// 人员注册
 		err = SendLockTask(DeviceTask{
@@ -60,24 +79,6 @@ func SendLockTaskPersonUpdate(tenant string, personid int, del, add []model.Devi
 			return err
 		}
 	}
-	for _, l := range del {
-		err := SendLockTask(DeviceTask{
-			Tenant: tenant,
-			DeviceTask: model.DeviceTask{
-				TaskType:      0,
-				DeviceId:      l.DeviceId,
-				EquipmentName: "",
-				PersonId:      user.Id,
-				PersonName:    user.Realname,
-				TaskSequence:  0,
-				CreatedAt:     gtime.Now(),
-				UpdatedAt:     gtime.Now(),
-			},
-		})
-		if err != nil {
-			return err
-		}
-	}
 	return nil
 }
 
@@ -99,6 +100,19 @@ func SendLockTask(task DeviceTask) error {
 	return nil
 }
 
+func mergeDeviceLockRelate(s ...[]model.DeviceLockRelate) []model.DeviceLockRelate {
+	ret := []model.DeviceLockRelate{}
+	exist := map[string]bool{}
+	for _, i := range s {
+		for _, l := range i {
+			if !exist[l.DeviceId] {
+				ret = append(ret, l)
+			}
+		}
+	}
+	return ret
+}
+
 type DeviceTask struct {
 	Tenant string `json:"tenant"`
 	model.DeviceTask

+ 2 - 0
sql/pass.sql

@@ -46,6 +46,8 @@ CREATE TABLE `device_task` (
     `Url` varchar(255) NOT NULL COMMENT '人脸照片URL',
     `AccessDate` datetime COMMENT '访问权限设置执行日期,只更新当天的访问时段限制',
     `AccessTime` varchar(255) NOT NULL COMMENT '访问权限时段 年月日时分秒-年月日年月日时分秒',
+    `AccessTimeStart` datetime COMMENT '访问权限开始时段',
+    `AccessTimeEnd` datetime COMMENT '访问权限结束时段',
     `TaskSequence` int(11) NOT NULL COMMENT '任务顺序,某些任务会有执行顺序,需按顺序执行',
     `ExecuteStatus` int(11) NOT NULL COMMENT '执行状态 0未执行,1已执行',
     `ExecuteResult` int(11) NOT NULL COMMENT '执行结果 0失败,1成功',