zhangqian
2023-08-11 ff3e203423f296965472d1f09347cda5cfe3a786
model/client.go
@@ -1,6 +1,7 @@
package model
import (
   "aps_crm/constvar"
   "aps_crm/pkg/mysqlx"
   "gorm.io/gorm"
   "time"
@@ -21,6 +22,7 @@
      ClientLevel       ClientLevel    `json:"client_level" gorm:"foreignKey:ClientLevelId"`
      Contacts          []Contact      `json:"contacts" gorm:"foreignKey:ClientId"`
      MemberId          int            `json:"member_id" gorm:"column:member_id;type:int(11);comment:销售负责人ID"`
      Member            User           `json:"member" gorm:"foreignKey:MemberId"`
      ServiceMemberId   int            `json:"service_member_id" gorm:"column:service_member_id;type:int(11);comment:服务负责人ID"`
      DetailAddress     string         `json:"detail_address" gorm:"column:detail_address;type:varchar(255);comment:详细地址"`
      Remark            string         `json:"remark" gorm:"column:remark;type:varchar(255);comment:备注"`
@@ -70,11 +72,46 @@
      for key, value := range slf.SearchMap {
         switch v := value.(type) {
         case string:
            if key == "name" || key == "number" || key == "phone" || key == "detail_address" {
            if key == "name" || key == "number" || key == "detail_address" {
               db = db.Where(key+" LIKE ?", "%"+v+"%")
            }
            if key == "phone" {
               db = db.Joins("Contacts").Where("Contacts.phone LIKE ?", "%"+v+"%")
            }
            if key == "contact_name" {
               db = db.Joins("Contacts").Where("Contacts.name LIKE ?", "%"+v+"%")
            }
            if key == "next_visit_time" {
               db = db.Where(key+" = ?", v)
            }
            // 查询超出15天未联系的客户
            if key == "not_contact" {
               db = db.Joins("FollowRecord").Where("FollowRecord.follow_time < ?", time.Now().AddDate(0, 0, -15)).Group("clients.id")
            }
            // 查询公海客户
            if key == "public_sea" {
               db = db.Where("member_id = ?", constvar.UserTypeSuper)
            }
            if key == "client_status" {
               db = db.Joins("ClientStatus").Where("ClientStatus.name LIKE ?", "%"+v+"%")
            }
            if key == "client_level" {
               db = db.Joins("ClientLevel").Where("ClientLevel.name LIKE ?", "%"+v+"%")
            }
            if key == "member_name" {
               db = db.Joins("Member").Where("Member.username LIKE ?", "%"+v+"%")
            }
         case int:
            if key == "id" || key == "client_type_id" || key == "client_status_id" {
            if key == "id" || key == "client_type_id" || key == "client_status_id" || key == "member_id" {
               db = db.Where(key+" = ?", v)
            }
         }
@@ -137,7 +174,7 @@
      db = db.Limit(slf.PageSize).Offset((slf.PageNum - 1) * slf.PageSize)
   }
   err := db.Preload("ClientStatus").Preload("ClientType").Preload("ClientOrigin").Preload("ClientLevel").Preload("FollowRecord").Preload("EnterpriseNature").Preload("RegisteredCapital").Preload("Industry").Preload("EnterpriseScale").Preload("Contacts").Preload("Country").Preload("Province").Preload("City").Preload("Region").Find(&records).Error
   err := db.Preload("Member").Preload("ClientStatus").Preload("ClientType").Preload("ClientOrigin").Preload("ClientLevel").Preload("FollowRecord").Preload("EnterpriseNature").Preload("RegisteredCapital").Preload("Industry").Preload("EnterpriseScale").Preload("Contacts").Preload("Country").Preload("Province").Preload("City").Preload("Region").Find(&records).Error
   return records, total, err
}