wangpengfei
2023-08-17 06c0b03df2955475fe39ff2a793a5f151f4da99f
model/client.go
@@ -1,6 +1,7 @@
package model
import (
   "aps_crm/constvar"
   "aps_crm/pkg/mysqlx"
   "gorm.io/gorm"
   "time"
@@ -9,7 +10,8 @@
type (
   Client struct {
      Id                int            `json:"id" gorm:"column:id;primaryKey;autoIncrement;not null"`
      Name              string         `json:"name" gorm:"column:name;unique;type:varchar(255);comment:客户名称"`
      Name              string         `json:"name" gorm:"column:name;uniqueIndex:name_isDeleted_idx;type:varchar(255);comment:客户名称"`
      IsDeleted         bool           `json:"-" gorm:"column:is_deleted;uniqueIndex:name_isDeleted_idx;type:tinyint(1);comment:是否删除"`
      Number            string         `json:"number" gorm:"column:number;type:varchar(255);comment:客户编号"`
      ClientStatusId    int            `json:"client_status_id" gorm:"column:client_status_id;type:int(11);comment:客户状态ID"`
      ClientStatus      ClientStatus   `json:"client_status" gorm:"foreignKey:ClientStatusId"`
@@ -21,11 +23,12 @@
      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:备注"`
      NextVisitTime     time.Time      `json:"next_visit_time" gorm:"column:next_visit_time;type:datetime;comment:下次回访时间"`
      LatestServiceTime time.Time      `json:"latest_service_time" gorm:"column:latest_service_time;type:datetime;comment:最晚服务时间"`
      NextVisitTime     *CustomTime    `json:"next_visit_time" gorm:"column:next_visit_time;type:datetime;comment:下次回访时间"`
      LatestServiceTime *CustomTime    `json:"latest_service_time" gorm:"column:latest_service_time;type:datetime;comment:最晚服务时间"`
      FollowRecord      []FollowRecord `json:"follow_record" gorm:"foreignKey:ClientId"`
      Address
      Business
@@ -91,6 +94,23 @@
               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" || key == "member_id" {
               db = db.Where(key+" = ?", v)
@@ -114,6 +134,7 @@
func (slf *ClientSearch) Delete() error {
   var db = slf.build()
   db.Update("is_deleted", 1)
   return db.Delete(&Client{}).Error
}
@@ -155,7 +176,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").Order("id desc").Find(&records).Error
   return records, total, err
}