123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- package services
- import (
- "errors"
- "eta/eta_api/models"
- "eta/eta_api/models/system"
- "eta/eta_api/utils"
- "strconv"
- "time"
- )
- const (
- TodoButtonColorDoing = "red"
- TodoButtonColorDefault = "gray"
- TodoButtonColorCompleted = "green"
- )
- func GetEnglishCompanyTodoAuthRole() []string {
- return []string{
- utils.ROLE_TYPE_CODE_ADMIN,
- utils.ROLE_TYPE_CODE_FICC_ADMIN,
- utils.ROLE_TYPE_CODE_FICC_DEPARTMENT,
- utils.ROLE_TYPE_CODE_FICC_GROUP,
- utils.ROLE_TYPE_CODE_FICC_TEAM,
- utils.ROLE_TYPE_CODE_FICC_SELLER,
- utils.ROLE_TYPE_CODE_FICC_RESEARCHR,
- }
- }
- func CheckEnglishCompanyTodoAuth(sysUser *system.Admin, sellerInfo *system.Admin) (ok bool, errMsg string, err error) {
-
- roleCode := sysUser.RoleTypeCode
- authList := GetEnglishCompanyTodoAuthRole()
- if !utils.InArrayByStr(authList, roleCode) {
- errMsg = "账号角色异常,不允许操作"
- return
- }
-
- if roleCode == utils.ROLE_TYPE_CODE_FICC_SELLER && sellerInfo.AdminId != sysUser.AdminId {
- errMsg = "该客户不是当前账号所属,不允许操作"
- return
- }
-
- switch roleCode {
- case utils.ROLE_TYPE_CODE_FICC_GROUP:
- same, e := CheckAdminIsSameBigGroup(sysUser, sellerInfo)
- if e != nil {
- errMsg = "保存失败"
- err = errors.New("判断主管与客户所属销售是否属于同一大组失败, Err: " + e.Error())
- return
- }
- if !same {
- errMsg = "该客户销售不是当前账号所属组员,不允许操作"
- return
- }
- case utils.ROLE_TYPE_CODE_FICC_TEAM:
- if sellerInfo.GroupId != sysUser.GroupId {
- errMsg = "该客户销售不是当前账号所属组员,不允许操作"
- return
- }
- }
- ok = true
- return
- }
- func GetEnglishCompanyListTodoMap(companyList []*models.EnglishCompanyListItem, sysUser *system.Admin) (todoMap map[int]*models.EnglishCompanyListTodo) {
- todoMap = make(map[int]*models.EnglishCompanyListTodo, 0)
- if len(companyList) == 0 || sysUser == nil {
- return
- }
- nowTime := time.Now().Local()
- todayTime := time.Date(nowTime.Year(), nowTime.Month(), nowTime.Day(), 0, 0, 0, 0, time.Local)
- for i := range companyList {
- c := companyList[i]
- v := new(models.EnglishCompanyListTodo)
- v.TodoButtonColor = TodoButtonColorDefault
- v.HiddenConfirm = true
- if c.TodoStatusStr != models.EnglishCompanyTodoStatusNull {
-
- if c.TodoStatusStr == models.EnglishCompanyTodoStatusCompleted {
- v.TodoButtonColor = TodoButtonColorCompleted
- }
-
- if c.TodoStatusStr == models.EnglishCompanyTodoStatusDoing {
- v.TodoStatus = true
- v.TodoButtonColor = TodoButtonColorDoing
-
- v.TodoEndTimeStr = c.TodoEndTime.Format(utils.FormatDate)
-
- todoEndTime := time.Date(c.TodoEndTime.Year(), c.TodoEndTime.Month(), c.TodoEndTime.Day(), 0, 0, 0, 0, time.Local)
- deadline := int(todoEndTime.Sub(todayTime).Hours() / 24)
- v.Deadline = strconv.Itoa(deadline)
- }
-
- switch sysUser.RoleTypeCode {
- case utils.ROLE_TYPE_CODE_ADMIN, utils.ROLE_TYPE_CODE_FICC_ADMIN, utils.ROLE_TYPE_CODE_FICC_DEPARTMENT, utils.ROLE_TYPE_CODE_FICC_GROUP, utils.ROLE_TYPE_CODE_FICC_RESEARCHR:
- v.HiddenConfirm = false
- if c.TodoStatusStr == models.EnglishCompanyTodoStatusDoing {
- v.CanConfirm = true
- }
- case utils.ROLE_TYPE_CODE_FICC_TEAM:
-
- if c.SellerId != sysUser.AdminId {
- v.HiddenConfirm = false
- }
- if c.TodoStatusStr == models.EnglishCompanyTodoStatusDoing {
- v.CanConfirm = true
- }
- }
- }
- todoMap[c.CompanyId] = v
- }
- return
- }
|