|
@@ -1,6 +1,7 @@
|
|
|
package services
|
|
|
|
|
|
import (
|
|
|
+ "encoding/json"
|
|
|
"fmt"
|
|
|
"hongze/hz_crm_eta/models/crm"
|
|
|
"hongze/hz_crm_eta/models/eta"
|
|
@@ -9,38 +10,43 @@ import (
|
|
|
"time"
|
|
|
)
|
|
|
|
|
|
-// HandleSyncSysRole 同步系统角色
|
|
|
-func HandleSyncSysRole(source int, roleName string) (err error) {
|
|
|
- // 角色名称唯一, 所以用角色名称做同步
|
|
|
- if roleName == "" {
|
|
|
+// SyncRoleData 同步角色数据
|
|
|
+type SyncRoleData struct {
|
|
|
+ Source int `description:"来源: 1-CRM; 2-ETA"`
|
|
|
+ RoleId int `description:"角色ID"`
|
|
|
+}
|
|
|
+
|
|
|
+// HandleSyncRole 同步系统角色
|
|
|
+func HandleSyncRole(data SyncRoleData) (err error) {
|
|
|
+ if data.RoleId <= 0 {
|
|
|
return
|
|
|
}
|
|
|
- if source != utils.SOURCE_CRM_FLAG && source != utils.SOURCE_ETA_FLAG {
|
|
|
+ if data.Source != utils.SOURCE_CRM_FLAG && data.Source != utils.SOURCE_ETA_FLAG {
|
|
|
return
|
|
|
}
|
|
|
defer func() {
|
|
|
if err != nil {
|
|
|
- tips := fmt.Sprintf("CRM-ETA同步系统角色失败, source: %d, roleName: %s, errMsg: %s", source, roleName, err.Error())
|
|
|
- fmt.Println(tips)
|
|
|
+ j, _ := json.Marshal(data)
|
|
|
+ tips := fmt.Sprintf("CRM-ETA同步系统角色失败, errMsg: %s\ndata: %s", err.Error(), string(j))
|
|
|
go alarm_msg.SendAlarmMsg(tips, 3)
|
|
|
}
|
|
|
}()
|
|
|
|
|
|
// CRM
|
|
|
- if source == utils.SOURCE_CRM_FLAG {
|
|
|
+ if data.Source == utils.SOURCE_CRM_FLAG {
|
|
|
// 获取角色不存在, 则表示CRM删除了该角色, 需删除对应ETA角色
|
|
|
- crmRole, e := crm.GetSysRoleByName(roleName)
|
|
|
+ crmRole, e := crm.GetSysRoleById(data.RoleId)
|
|
|
if e != nil {
|
|
|
if e != utils.ErrNoRow {
|
|
|
err = fmt.Errorf("获取CRM角色信息失败, Err: " + e.Error())
|
|
|
return
|
|
|
}
|
|
|
- _ = eta.DeleteRoleByName(roleName)
|
|
|
+ _ = eta.DeleteRoleById(data.RoleId)
|
|
|
return
|
|
|
}
|
|
|
|
|
|
// 获取ETA对应角色, 存在则更新, 否则新增
|
|
|
- etaRole, e := eta.GetSysRoleByName(roleName)
|
|
|
+ etaRole, e := eta.GetSysRoleById(data.RoleId)
|
|
|
if e != nil {
|
|
|
if e != utils.ErrNoRow {
|
|
|
err = fmt.Errorf("获取ETA对应角色信息失败, Err: " + e.Error())
|
|
@@ -48,6 +54,7 @@ func HandleSyncSysRole(source int, roleName string) (err error) {
|
|
|
}
|
|
|
// 新增
|
|
|
newRole := new(eta.SysRole)
|
|
|
+ newRole.RoleId = crmRole.RoleId
|
|
|
newRole.RoleName = crmRole.RoleName
|
|
|
newRole.RoleType = crmRole.RoleType
|
|
|
newRole.RoleTypeCode = crmRole.RoleTypeCode
|
|
@@ -75,17 +82,17 @@ func HandleSyncSysRole(source int, roleName string) (err error) {
|
|
|
}
|
|
|
|
|
|
// ETA
|
|
|
- etaRole, e := eta.GetSysRoleByName(roleName)
|
|
|
+ etaRole, e := eta.GetSysRoleById(data.RoleId)
|
|
|
if e != nil {
|
|
|
if e != utils.ErrNoRow {
|
|
|
err = fmt.Errorf("获取ETA角色信息失败, Err: " + e.Error())
|
|
|
return
|
|
|
}
|
|
|
- _ = crm.DeleteRoleByName(roleName)
|
|
|
+ _ = crm.DeleteRoleById(data.RoleId)
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- crmRole, e := crm.GetSysRoleByName(roleName)
|
|
|
+ crmRole, e := crm.GetSysRoleById(data.RoleId)
|
|
|
if e != nil {
|
|
|
if e != utils.ErrNoRow {
|
|
|
err = fmt.Errorf("获取CRM对应角色信息失败, Err: " + e.Error())
|
|
@@ -93,6 +100,7 @@ func HandleSyncSysRole(source int, roleName string) (err error) {
|
|
|
}
|
|
|
// 新增
|
|
|
newRole := new(crm.SysRole)
|
|
|
+ newRole.RoleId = etaRole.RoleId
|
|
|
newRole.RoleName = etaRole.RoleName
|
|
|
newRole.RoleType = etaRole.RoleType
|
|
|
newRole.RoleTypeCode = etaRole.RoleTypeCode
|
|
@@ -119,37 +127,43 @@ func HandleSyncSysRole(source int, roleName string) (err error) {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
-// HandleSyncAdminFromCrm 同步系统用户
|
|
|
-func HandleSyncAdminFromCrm(source int, adminName string) (err error) {
|
|
|
- if adminName == "" {
|
|
|
+// SyncAdminData 同步用户数据
|
|
|
+type SyncAdminData struct {
|
|
|
+ Source int `description:"来源: 1-CRM; 2-ETA"`
|
|
|
+ AdminName string `description:"用户名"`
|
|
|
+}
|
|
|
+
|
|
|
+// HandleSyncAdmin 同步系统用户
|
|
|
+func HandleSyncAdmin(data SyncAdminData) (err error) {
|
|
|
+ if data.AdminName == "" {
|
|
|
return
|
|
|
}
|
|
|
- if source != utils.SOURCE_CRM_FLAG && source != utils.SOURCE_ETA_FLAG {
|
|
|
+ if data.Source != utils.SOURCE_CRM_FLAG && data.Source != utils.SOURCE_ETA_FLAG {
|
|
|
return
|
|
|
}
|
|
|
defer func() {
|
|
|
if err != nil {
|
|
|
- tips := fmt.Sprintf("CRM-ETA同步系统用户失败, source: %d, adminName: %s, errMsg: %s", source, adminName, err.Error())
|
|
|
- fmt.Println(tips)
|
|
|
+ j, _ := json.Marshal(data)
|
|
|
+ tips := fmt.Sprintf("CRM-ETA同步系统用户失败, errMsg: %s\ndata: %s", err.Error(), string(j))
|
|
|
go alarm_msg.SendAlarmMsg(tips, 3)
|
|
|
}
|
|
|
}()
|
|
|
|
|
|
// CRM
|
|
|
- if source == utils.SOURCE_CRM_FLAG {
|
|
|
+ if data.Source == utils.SOURCE_CRM_FLAG {
|
|
|
// 获取用户不存在, 则表示CRM删除了该用户, 需删除对应ETA用户
|
|
|
- crmUser, e := crm.GetSysUserByAdminName(adminName)
|
|
|
+ crmUser, e := crm.GetSysUserByAdminName(data.AdminName)
|
|
|
if e != nil {
|
|
|
if e != utils.ErrNoRow {
|
|
|
err = fmt.Errorf("获取CRM用户信息失败, Err: " + e.Error())
|
|
|
return
|
|
|
}
|
|
|
- _ = eta.DeleteSysUserByName(adminName)
|
|
|
+ _ = eta.DeleteSysUserByName(data.AdminName)
|
|
|
return
|
|
|
}
|
|
|
|
|
|
// 获取ETA对应用户, 存在则更新, 否则新增
|
|
|
- etaUser, e := eta.GetSysUserByAdminName(adminName)
|
|
|
+ etaUser, e := eta.GetSysUserByAdminName(data.AdminName)
|
|
|
if e != nil {
|
|
|
if e != utils.ErrNoRow {
|
|
|
err = fmt.Errorf("获取ETA对应用户信息失败, Err: " + e.Error())
|
|
@@ -244,17 +258,17 @@ func HandleSyncAdminFromCrm(source int, adminName string) (err error) {
|
|
|
}
|
|
|
|
|
|
// ETA
|
|
|
- etaUser, e := crm.GetSysUserByAdminName(adminName)
|
|
|
+ etaUser, e := eta.GetSysUserByAdminName(data.AdminName)
|
|
|
if e != nil {
|
|
|
if e != utils.ErrNoRow {
|
|
|
err = fmt.Errorf("获取ETA用户信息失败, Err: " + e.Error())
|
|
|
return
|
|
|
}
|
|
|
- _ = eta.DeleteSysUserByName(adminName)
|
|
|
+ _ = crm.DeleteSysUserByName(data.AdminName)
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- crmUser, e := eta.GetSysUserByAdminName(adminName)
|
|
|
+ crmUser, e := crm.GetSysUserByAdminName(data.AdminName)
|
|
|
if e != nil {
|
|
|
if e != utils.ErrNoRow {
|
|
|
err = fmt.Errorf("获取ETA对应用户信息失败, Err: " + e.Error())
|
|
@@ -349,3 +363,221 @@ func HandleSyncAdminFromCrm(source int, adminName string) (err error) {
|
|
|
}
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
+// SyncDepartmentData 同步部门数据
|
|
|
+type SyncDepartmentData struct {
|
|
|
+ Source int `description:"来源: 1-CRM; 2-ETA"`
|
|
|
+ DepartmentId int `description:"部门ID"`
|
|
|
+}
|
|
|
+
|
|
|
+// HandleSyncDepartment 同步部门
|
|
|
+func HandleSyncDepartment(data SyncDepartmentData) (err error) {
|
|
|
+ if data.DepartmentId <= 0 {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if data.Source != utils.SOURCE_CRM_FLAG && data.Source != utils.SOURCE_ETA_FLAG {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ j, _ := json.Marshal(data)
|
|
|
+ tips := fmt.Sprintf("CRM-ETA同步部门失败, errMsg: %s\ndata: %s", err.Error(), string(j))
|
|
|
+ go alarm_msg.SendAlarmMsg(tips, 3)
|
|
|
+ }
|
|
|
+ }()
|
|
|
+
|
|
|
+ // CRM
|
|
|
+ if data.Source == utils.SOURCE_CRM_FLAG {
|
|
|
+ // 获取部门不存在, 则表示CRM删除了该部门, 需删除对应ETA部门
|
|
|
+ crmDepartment, e := crm.GetDepartmentById(data.DepartmentId)
|
|
|
+ if e != nil {
|
|
|
+ if e != utils.ErrNoRow {
|
|
|
+ err = fmt.Errorf("获取CRM部门信息失败, Err: " + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ _ = eta.DeleteDepartmentById(data.DepartmentId)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取ETA对应部门, 存在则更新, 否则新增
|
|
|
+ etaDepartment, e := eta.GetDepartmentById(data.DepartmentId)
|
|
|
+ if e != nil {
|
|
|
+ if e != utils.ErrNoRow {
|
|
|
+ err = fmt.Errorf("获取ETA对应部门信息失败, Err: " + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 新增
|
|
|
+ newDepartment := new(eta.SysDepartment)
|
|
|
+ newDepartment.DepartmentId = crmDepartment.DepartmentId
|
|
|
+ newDepartment.DepartmentName = crmDepartment.DepartmentName
|
|
|
+ newDepartment.Sort = crmDepartment.Sort
|
|
|
+ newDepartment.CreateTime = time.Now().Local()
|
|
|
+ e = newDepartment.Create()
|
|
|
+ if e != nil {
|
|
|
+ err = fmt.Errorf("新增ETA对应部门失败, Err: " + e.Error())
|
|
|
+ }
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 更新
|
|
|
+ etaDepartment.DepartmentName = crmDepartment.DepartmentName
|
|
|
+ etaDepartment.Sort = crmDepartment.Sort
|
|
|
+ cols := []string{"DepartmentName", "Sort"}
|
|
|
+ e = etaDepartment.Update(cols)
|
|
|
+ if e != nil {
|
|
|
+ err = fmt.Errorf("更新ETA对应部门失败, Err: " + e.Error())
|
|
|
+ }
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // ETA
|
|
|
+ etaDepartment, e := eta.GetDepartmentById(data.DepartmentId)
|
|
|
+ if e != nil {
|
|
|
+ if e != utils.ErrNoRow {
|
|
|
+ err = fmt.Errorf("获取ETA部门信息失败, Err: " + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ _ = crm.DeleteDepartmentById(data.DepartmentId)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ crmDepartment, e := crm.GetDepartmentById(data.DepartmentId)
|
|
|
+ if e != nil {
|
|
|
+ if e != utils.ErrNoRow {
|
|
|
+ err = fmt.Errorf("获取CRM对应部门信息失败, Err: " + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 新增
|
|
|
+ newDepartment := new(eta.SysDepartment)
|
|
|
+ newDepartment.DepartmentId = etaDepartment.DepartmentId
|
|
|
+ newDepartment.DepartmentName = etaDepartment.DepartmentName
|
|
|
+ newDepartment.Sort = etaDepartment.Sort
|
|
|
+ newDepartment.CreateTime = time.Now().Local()
|
|
|
+ e = newDepartment.Create()
|
|
|
+ if e != nil {
|
|
|
+ err = fmt.Errorf("新增CRM对应部门失败, Err: " + e.Error())
|
|
|
+ }
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 更新
|
|
|
+ crmDepartment.DepartmentName = etaDepartment.DepartmentName
|
|
|
+ crmDepartment.Sort = etaDepartment.Sort
|
|
|
+ cols := []string{"DepartmentName", "Sort"}
|
|
|
+ e = crmDepartment.Update(cols)
|
|
|
+ if e != nil {
|
|
|
+ err = fmt.Errorf("更新CRM对应部门失败, Err: " + e.Error())
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// SyncGroupData 同步分组数据
|
|
|
+type SyncGroupData struct {
|
|
|
+ Source int `description:"来源: 1-CRM; 2-ETA"`
|
|
|
+ GroupId int `description:"分组ID"`
|
|
|
+}
|
|
|
+
|
|
|
+// HandleSyncGroup 同步分组
|
|
|
+func HandleSyncGroup(data SyncGroupData) (err error) {
|
|
|
+ if data.GroupId <= 0 {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if data.Source != utils.SOURCE_CRM_FLAG && data.Source != utils.SOURCE_ETA_FLAG {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ j, _ := json.Marshal(data)
|
|
|
+ tips := fmt.Sprintf("CRM-ETA同步分组失败, errMsg: %s\ndata: %s", err.Error(), string(j))
|
|
|
+ go alarm_msg.SendAlarmMsg(tips, 3)
|
|
|
+ }
|
|
|
+ }()
|
|
|
+
|
|
|
+ // CRM
|
|
|
+ if data.Source == utils.SOURCE_CRM_FLAG {
|
|
|
+ // 获取分组不存在, 则表示CRM删除了该分组, 需删除对应ETA分组
|
|
|
+ crmGroup, e := crm.GetSysGroupByGroupId(data.GroupId)
|
|
|
+ if e != nil {
|
|
|
+ if e != utils.ErrNoRow {
|
|
|
+ err = fmt.Errorf("获取CRM分组信息失败, Err: " + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ _ = eta.DeleteGroupByGroupId(data.GroupId)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取ETA对应分组, 存在则更新, 否则新增
|
|
|
+ etaGroup, e := eta.GetSysGroupByGroupId(data.GroupId)
|
|
|
+ if e != nil {
|
|
|
+ if e != utils.ErrNoRow {
|
|
|
+ err = fmt.Errorf("获取ETA对应分组信息失败, Err: " + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 新增
|
|
|
+ newGroup := new(eta.SysGroup)
|
|
|
+ newGroup.GroupId = crmGroup.GroupId
|
|
|
+ newGroup.DepartmentId = crmGroup.DepartmentId
|
|
|
+ newGroup.GroupName = crmGroup.GroupName
|
|
|
+ newGroup.ParentId = crmGroup.ParentId
|
|
|
+ newGroup.Sort = crmGroup.Sort
|
|
|
+ newGroup.CreateTime = time.Now().Local()
|
|
|
+ e = newGroup.Create()
|
|
|
+ if e != nil {
|
|
|
+ err = fmt.Errorf("新增ETA对应分组失败, Err: " + e.Error())
|
|
|
+ }
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 更新
|
|
|
+ etaGroup.DepartmentId = crmGroup.DepartmentId
|
|
|
+ etaGroup.GroupName = crmGroup.GroupName
|
|
|
+ etaGroup.ParentId = crmGroup.ParentId
|
|
|
+ etaGroup.Sort = crmGroup.Sort
|
|
|
+ cols := []string{"DepartmentId", "GroupName", "ParentId", "Sort"}
|
|
|
+ e = etaGroup.Update(cols)
|
|
|
+ if e != nil {
|
|
|
+ err = fmt.Errorf("更新ETA对应分组失败, Err: " + e.Error())
|
|
|
+ }
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // ETA
|
|
|
+ etaGroup, e := eta.GetSysGroupByGroupId(data.GroupId)
|
|
|
+ if e != nil {
|
|
|
+ if e != utils.ErrNoRow {
|
|
|
+ err = fmt.Errorf("获取ETA分组信息失败, Err: " + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ _ = crm.DeleteGroupByGroupId(data.GroupId)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ crmGroup, e := crm.GetSysGroupByGroupId(data.GroupId)
|
|
|
+ if e != nil {
|
|
|
+ if e != utils.ErrNoRow {
|
|
|
+ err = fmt.Errorf("获取CRM对应分组信息失败, Err: " + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 新增
|
|
|
+ newGroup := new(eta.SysGroup)
|
|
|
+ newGroup.GroupId = etaGroup.GroupId
|
|
|
+ newGroup.DepartmentId = etaGroup.DepartmentId
|
|
|
+ newGroup.GroupName = etaGroup.GroupName
|
|
|
+ newGroup.ParentId = etaGroup.ParentId
|
|
|
+ newGroup.Sort = etaGroup.Sort
|
|
|
+ newGroup.CreateTime = time.Now().Local()
|
|
|
+ e = newGroup.Create()
|
|
|
+ if e != nil {
|
|
|
+ err = fmt.Errorf("新增CRM对应分组失败, Err: " + e.Error())
|
|
|
+ }
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 更新
|
|
|
+ crmGroup.DepartmentId = etaGroup.DepartmentId
|
|
|
+ crmGroup.GroupName = etaGroup.GroupName
|
|
|
+ crmGroup.ParentId = etaGroup.ParentId
|
|
|
+ crmGroup.Sort = etaGroup.Sort
|
|
|
+ cols := []string{"DepartmentId", "GroupName", "ParentId", "Sort"}
|
|
|
+ e = crmGroup.Update(cols)
|
|
|
+ if e != nil {
|
|
|
+ err = fmt.Errorf("更新CRM对应分组失败, Err: " + e.Error())
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|