api/v1/followRecord.go | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
api/v1/salesLeads.go | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
model/client.go | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
model/followRecord.go | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
model/request/followRecord.go | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
pkg/ecode/code.go | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
service/client.go | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
service/followRecord.go | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
api/v1/followRecord.go
@@ -1,224 +1,224 @@ package v1 import ( "aps_crm/model" "aps_crm/model/request" "aps_crm/model/response" "aps_crm/pkg/contextx" "aps_crm/pkg/ecode" "github.com/gin-gonic/gin" "strconv" "time" ) type FollowRecordApi struct{} // Add // // @Tags FollowRecord // @Summary 添加跟进记录 // @Produce application/json // @Param object body request.AddFollowRecord true "查询参数" // @Success 200 {object} contextx.Response{} // @Router /api/followRecord/add [post] func (fr *FollowRecordApi) Add(c *gin.Context) { var params request.AddFollowRecord ctx, ok := contextx.NewContext(c, ¶ms) if !ok { return } errCode, followRecord := checkFollowRecordParams(params.FollowRecord) if errCode != ecode.OK { ctx.Fail(errCode) return } errCode = followRecordService.AddFollowRecord(followRecord) if errCode != ecode.OK { ctx.Fail(errCode) return } ctx.Ok() } // Delete // // @Tags FollowRecord // @Summary 删除跟进记录 // @Produce application/json // @Param id path string true "跟进记录id" // @Success 200 {object} contextx.Response{} // @Router /api/followRecord/delete/{id} [delete] func (fr *FollowRecordApi) Delete(c *gin.Context) { ctx, ok := contextx.NewContext(c, nil) if !ok { return } id, _ := strconv.Atoi(c.Param("id")) errCode := followRecordService.DeleteFollowRecord(id) if errCode != ecode.OK { ctx.Fail(errCode) return } ctx.Ok() } // Update // // @Tags FollowRecord // @Summary 更新跟进记录 // @Produce application/json // @Param object body request.UpdateFollowRecord true "查询参数" // @Success 200 {object} contextx.Response{} // @Router /api/followRecord/update [put] func (fr *FollowRecordApi) Update(c *gin.Context) { var params request.UpdateFollowRecord ctx, ok := contextx.NewContext(c, ¶ms) if !ok { return } errCode, followRecord := checkFollowRecordParams(params.FollowRecord) if errCode != ecode.OK { ctx.Fail(errCode) return } followRecord.Id = params.Id errCode = followRecordService.UpdateFollowRecord(followRecord) if errCode != ecode.OK { ctx.Fail(errCode) return } ctx.Ok() } // checkFollowRecordParams // 检查跟进记录参数 func checkFollowRecordParams(followRecord request.FollowRecord) (int, *model.FollowRecord) { var followRecordModel model.FollowRecord //if followRecord.ClientId != 0 { // // check client exist // if service.CheckClientExist(followRecord.ClientId) != ecode.OK { // return ecode.ClientNotExist, &followRecordModel // } //} // //if followRecord.ContactId != 0 { // // check contact exist // if service.CheckContactExist(followRecord.ContactId) != ecode.OK { // return ecode.ContactNotExist, &followRecordModel // } //} // //if followRecord.SalesLeadsId != 0 { // // check sales leads exist // if service.CheckSalesLeadsExist(followRecord.SalesLeadsId) != ecode.OK { // return ecode.SalesLeadsNotExist, &followRecordModel // } //} // //// check member id //if followRecord.MemberId == 0 { // // todo check member exist // return ecode.InvalidParams, &followRecordModel //} // //// check number //if followRecord.Number == "" { // return ecode.InvalidParams, &followRecordModel //} // //// check follow content //if followRecord.Content == "" { // return ecode.InvalidParams, &followRecordModel //} // check follow time t, err := checkTimeFormat(followRecord.FollowTime) if err != nil { return ecode.InvalidParams, &followRecordModel } followRecordModel.FollowTime = t t, err = checkTimeFormat(followRecord.NextFollowTime) if err != nil { return ecode.InvalidParams, &followRecordModel } followRecordModel.NextFollowTime = t followRecordModel.ClientId = followRecord.ClientId followRecordModel.Content = followRecord.Content followRecordModel.MemberId = followRecord.MemberId followRecordModel.Number = followRecord.Number followRecordModel.ClientStatusId = followRecord.ClientStatusId followRecordModel.ContactId = followRecord.ContactId followRecordModel.Topic = followRecord.Topic followRecordModel.SalesLeadsId = followRecord.SalesLeadsId followRecordModel.SaleChanceId = followRecord.SaleChanceId followRecordModel.ContactInformationId = followRecord.ContactInformationId followRecordModel.Purpose = followRecord.Purpose followRecordModel.Content = followRecord.Content followRecordModel.Record = followRecord.Record return ecode.OK, &followRecordModel } // checkTimeFormat // 检查时间格式 func checkTimeFormat(t string) (time.Time, error) { if t == "" { t = "1900-01-01T00:00:00+08:00" } location, err := time.LoadLocation("Asia/Shanghai") if err != nil { return time.Time{}, err } tt, err := time.Parse("2006-01-02T15:04:05.000Z", t) if err == nil { return tt.In(location), nil } tt, err = time.Parse("2006-01-02T15:04:05-07:00", t) if err == nil { return tt.In(location), nil } return time.Time{}, err } // List // // @Tags FollowRecord // @Summary 回访记录列表 // @Produce application/json // @Param object body request.GetFollowRecordList true "参数" // @Success 200 {object} contextx.Response{data=response.FollowRecordResponse} // @Router /api/followRecord/list [post] func (fr *FollowRecordApi) List(c *gin.Context) { var params request.GetFollowRecordList ctx, ok := contextx.NewContext(c, ¶ms) if !ok { return } followRecords, total, errCode := followRecordService.GetFollowRecordList(params.Page, params.PageSize, params.Keyword) if errCode != ecode.OK { ctx.Fail(errCode) return } ctx.OkWithDetailed(response.FollowRecordResponse{ List: followRecords, Count: int(total), }) package v1 import ( "aps_crm/model" "aps_crm/model/request" "aps_crm/model/response" "aps_crm/pkg/contextx" "aps_crm/pkg/ecode" "github.com/gin-gonic/gin" "strconv" "time" ) type FollowRecordApi struct{} // Add // // @Tags FollowRecord // @Summary 添加跟进记录 // @Produce application/json // @Param object body request.AddFollowRecord true "查询参数" // @Success 200 {object} contextx.Response{} // @Router /api/followRecord/add [post] func (fr *FollowRecordApi) Add(c *gin.Context) { var params request.AddFollowRecord ctx, ok := contextx.NewContext(c, ¶ms) if !ok { return } errCode, followRecord := checkFollowRecordParams(params.FollowRecord) if errCode != ecode.OK { ctx.Fail(errCode) return } errCode = followRecordService.AddFollowRecord(followRecord) if errCode != ecode.OK { ctx.Fail(errCode) return } ctx.Ok() } // Delete // // @Tags FollowRecord // @Summary 删除跟进记录 // @Produce application/json // @Param id path string true "跟进记录id" // @Success 200 {object} contextx.Response{} // @Router /api/followRecord/delete/{id} [delete] func (fr *FollowRecordApi) Delete(c *gin.Context) { ctx, ok := contextx.NewContext(c, nil) if !ok { return } id, _ := strconv.Atoi(c.Param("id")) errCode := followRecordService.DeleteFollowRecord(id) if errCode != ecode.OK { ctx.Fail(errCode) return } ctx.Ok() } // Update // // @Tags FollowRecord // @Summary 更新跟进记录 // @Produce application/json // @Param object body request.UpdateFollowRecord true "查询参数" // @Success 200 {object} contextx.Response{} // @Router /api/followRecord/update [put] func (fr *FollowRecordApi) Update(c *gin.Context) { var params request.UpdateFollowRecord ctx, ok := contextx.NewContext(c, ¶ms) if !ok { return } errCode, followRecord := checkFollowRecordParams(params.FollowRecord) if errCode != ecode.OK { ctx.Fail(errCode) return } followRecord.Id = params.Id errCode = followRecordService.UpdateFollowRecord(followRecord) if errCode != ecode.OK { ctx.Fail(errCode) return } ctx.Ok() } // checkFollowRecordParams // 检查跟进记录参数 func checkFollowRecordParams(followRecord request.FollowRecord) (int, *model.FollowRecord) { var followRecordModel model.FollowRecord //if followRecord.ClientId != 0 { // // check client exist // if service.CheckClientExist(followRecord.ClientId) != ecode.OK { // return ecode.ClientNotExist, &followRecordModel // } //} // //if followRecord.ContactId != 0 { // // check contact exist // if service.CheckContactExist(followRecord.ContactId) != ecode.OK { // return ecode.ContactNotExist, &followRecordModel // } //} // //if followRecord.SalesLeadsId != 0 { // // check sales leads exist // if service.CheckSalesLeadsExist(followRecord.SalesLeadsId) != ecode.OK { // return ecode.SalesLeadsNotExist, &followRecordModel // } //} // //// check member id //if followRecord.MemberId == 0 { // // todo check member exist // return ecode.InvalidParams, &followRecordModel //} // //// check number //if followRecord.Number == "" { // return ecode.InvalidParams, &followRecordModel //} // //// check follow content //if followRecord.Content == "" { // return ecode.InvalidParams, &followRecordModel //} // check follow time t, err := checkTimeFormat(followRecord.FollowTime) if err != nil { return ecode.InvalidParams, &followRecordModel } followRecordModel.FollowTime = t t, err = checkTimeFormat(followRecord.NextFollowTime) if err != nil { return ecode.InvalidParams, &followRecordModel } followRecordModel.NextFollowTime = t followRecordModel.ClientId = followRecord.ClientId followRecordModel.Content = followRecord.Content followRecordModel.MemberId = followRecord.MemberId followRecordModel.Number = followRecord.Number followRecordModel.ClientStatusId = followRecord.ClientStatusId followRecordModel.ContactId = followRecord.ContactId followRecordModel.Topic = followRecord.Topic followRecordModel.SalesLeadsId = followRecord.SalesLeadsId followRecordModel.SaleChanceId = followRecord.SaleChanceId followRecordModel.ContactInformationId = followRecord.ContactInformationId followRecordModel.Purpose = followRecord.Purpose followRecordModel.Content = followRecord.Content followRecordModel.Record = followRecord.Record return ecode.OK, &followRecordModel } // checkTimeFormat // 检查时间格式 func checkTimeFormat(t string) (time.Time, error) { if t == "" { t = "1900-01-01T00:00:00+08:00" } location, err := time.LoadLocation("Asia/Shanghai") if err != nil { return time.Time{}, err } tt, err := time.Parse("2006-01-02T15:04:05.000Z", t) if err == nil { return tt.In(location), nil } tt, err = time.Parse("2006-01-02T15:04:05-07:00", t) if err == nil { return tt.In(location), nil } return time.Time{}, err } // List // // @Tags FollowRecord // @Summary 回访记录列表 // @Produce application/json // @Param object body request.GetFollowRecordList true "参数" // @Success 200 {object} contextx.Response{data=response.FollowRecordResponse} // @Router /api/followRecord/list [post] func (fr *FollowRecordApi) List(c *gin.Context) { var params request.GetFollowRecordList ctx, ok := contextx.NewContext(c, ¶ms) if !ok { return } followRecords, total, errCode := followRecordService.GetFollowRecordList(params.Page, params.PageSize, params.Keyword) if errCode != ecode.OK { ctx.Fail(errCode) return } ctx.OkWithDetailed(response.FollowRecordResponse{ List: followRecords, Count: int(total), }) } api/v1/salesLeads.go
@@ -145,7 +145,7 @@ // @Param object body request.GetSalesLeadsList true "参数" // @Success 200 {object} contextx.Response{data=response.SalesLeadsResponse} // @Router /api/salesLeads/list [post] func (con *SalesLeadsApi) List(c *gin.Context) { func (s *SalesLeadsApi) List(c *gin.Context) { var params request.GetSalesLeadsList ctx, ok := contextx.NewContext(c, ¶ms) if !ok { @@ -159,7 +159,7 @@ } ctx.OkWithDetailed(response.SalesLeadsResponse{ List: salesLeadss, List: salesLeadss, Count: int(total), }) } } model/client.go
@@ -1,149 +1,149 @@ package model import ( "aps_crm/pkg/mysqlx" "gorm.io/gorm" "time" ) 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:客户名称"` 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"` ClientTypeId int `json:"client_type_id" gorm:"column:client_type_id;type:int(11);comment:客户类型ID"` ClientType ClientType `json:"client_type" gorm:"foreignKey:ClientTypeId"` ClientOriginId int `json:"client_origin_id" gorm:"column:client_origin_id;type:int(11);comment:客户来源ID"` ClientOrigin ClientOrigin `json:"client_origin" gorm:"foreignKey:ClientOriginId"` ClientLevelId int `json:"client_level_id" gorm:"column:client_level_id;type:int(11);comment:客户等级ID"` 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"` 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:最晚服务时间"` FollowRecord []FollowRecord `json:"follow_record" gorm:"foreignKey:ClientId"` Address Business gorm.Model `json:"-"` } ClientSearch struct { Client Orm *gorm.DB Keyword string OrderBy string PageNum int PageSize int } ) func (Client) TableName() string { return "clients" } func NewClientSearch(db *gorm.DB) *ClientSearch { if db == nil { db = mysqlx.GetDB() } return &ClientSearch{ Orm: db, } } func (slf *ClientSearch) build() *gorm.DB { var db = slf.Orm.Model(&Client{}) if slf.Keyword != "" { db = db.Where("name LIKE ?", "%"+slf.Keyword+"%") } if slf.Id != 0 { db.Where("id = ?", slf.Id) } if slf.Name != "" { db.Where("name = ?", slf.Name) } return db } func (slf *ClientSearch) Create(record *Client) error { var db = slf.build() return db.Create(record).Error } func (slf *ClientSearch) Update(record *Client) error { var db = slf.build() return db.Updates(record).Error } func (slf *ClientSearch) Delete() error { var db = slf.build() return db.Delete(&Client{}).Error } func (slf *ClientSearch) SetId(id int) *ClientSearch { slf.Id = id return slf } func (slf *ClientSearch) SetName(name string) *ClientSearch { slf.Name = name return slf } func (slf *ClientSearch) SetNumber(number string) *ClientSearch { slf.Number = number return slf } func (slf *ClientSearch) First() (*Client, error) { var db = slf.build() var record = &Client{} err := db.First(record).Error return record, err } func (slf *ClientSearch) Find() ([]*Client, int64, error) { var db = slf.build() var records = make([]*Client, 0) var total int64 if err := db.Count(&total).Error; err != nil { return records, total, err } if slf.PageNum > 0 && slf.PageSize > 0 { 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 return records, total, err } func (slf *ClientSearch) UpdateByMap(data map[string]interface{}) error { var db = slf.build() return db.Updates(data).Error } func (slf *ClientSearch) SetKeyword(keyword string) *ClientSearch { slf.Keyword = keyword return slf } func (slf *ClientSearch) SetPage(page, size int) *ClientSearch { slf.PageNum, slf.PageSize = page, size return slf } func (slf *ClientSearch) SetOrder(order string) *ClientSearch { slf.OrderBy = order return slf } func (slf *ClientSearch) SetIds(ids []int) *ClientSearch { slf.Orm = slf.Orm.Where("id in (?)", ids) return slf } package model import ( "aps_crm/pkg/mysqlx" "gorm.io/gorm" "time" ) 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:客户名称"` 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"` ClientTypeId int `json:"client_type_id" gorm:"column:client_type_id;type:int(11);comment:客户类型ID"` ClientType ClientType `json:"client_type" gorm:"foreignKey:ClientTypeId"` ClientOriginId int `json:"client_origin_id" gorm:"column:client_origin_id;type:int(11);comment:客户来源ID"` ClientOrigin ClientOrigin `json:"client_origin" gorm:"foreignKey:ClientOriginId"` ClientLevelId int `json:"client_level_id" gorm:"column:client_level_id;type:int(11);comment:客户等级ID"` 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"` 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:最晚服务时间"` FollowRecord []FollowRecord `json:"follow_record" gorm:"foreignKey:ClientId"` Address Business gorm.Model `json:"-"` } ClientSearch struct { Client Orm *gorm.DB Keyword string OrderBy string PageNum int PageSize int } ) func (Client) TableName() string { return "clients" } func NewClientSearch(db *gorm.DB) *ClientSearch { if db == nil { db = mysqlx.GetDB() } return &ClientSearch{ Orm: db, } } func (slf *ClientSearch) build() *gorm.DB { var db = slf.Orm.Model(&Client{}) if slf.Keyword != "" { db = db.Where("name LIKE ?", "%"+slf.Keyword+"%") } if slf.Id != 0 { db.Where("id = ?", slf.Id) } if slf.Name != "" { db.Where("name = ?", slf.Name) } return db } func (slf *ClientSearch) Create(record *Client) error { var db = slf.build() return db.Create(record).Error } func (slf *ClientSearch) Update(record *Client) error { var db = slf.build() return db.Updates(record).Error } func (slf *ClientSearch) Delete() error { var db = slf.build() return db.Delete(&Client{}).Error } func (slf *ClientSearch) SetId(id int) *ClientSearch { slf.Id = id return slf } func (slf *ClientSearch) SetName(name string) *ClientSearch { slf.Name = name return slf } func (slf *ClientSearch) SetNumber(number string) *ClientSearch { slf.Number = number return slf } func (slf *ClientSearch) First() (*Client, error) { var db = slf.build() var record = &Client{} err := db.First(record).Error return record, err } func (slf *ClientSearch) Find() ([]*Client, int64, error) { var db = slf.build() var records = make([]*Client, 0) var total int64 if err := db.Count(&total).Error; err != nil { return records, total, err } if slf.PageNum > 0 && slf.PageSize > 0 { 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 return records, total, err } func (slf *ClientSearch) UpdateByMap(data map[string]interface{}) error { var db = slf.build() return db.Updates(data).Error } func (slf *ClientSearch) SetKeyword(keyword string) *ClientSearch { slf.Keyword = keyword return slf } func (slf *ClientSearch) SetPage(page, size int) *ClientSearch { slf.PageNum, slf.PageSize = page, size return slf } func (slf *ClientSearch) SetOrder(order string) *ClientSearch { slf.OrderBy = order return slf } func (slf *ClientSearch) SetIds(ids []int) *ClientSearch { slf.Orm = slf.Orm.Where("id in (?)", ids) return slf } model/followRecord.go
@@ -1,185 +1,185 @@ package model import ( "aps_crm/pkg/mysqlx" "gorm.io/gorm" "time" ) type ( FollowRecord struct { Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"` ClientId int `json:"client_id" gorm:"column:client_id;type:int(11);comment:客户id"` ClientStatusId int `json:"client_status_id" gorm:"column:client_status_id;type:int(11);comment:客户状态id"` MemberId int `json:"member_id" gorm:"column:member_id;type:int(11);comment:跟进人id"` Number string `json:"number" gorm:"column:number;type:varchar(255);comment:跟进编号"` ContactId int `json:"contact_id" gorm:"column:contact_id;type:int(11);comment:联系人id"` Topic string `json:"topic" gorm:"column:topic;type:varchar(255);comment:跟进主题"` Record string `json:"record" gorm:"column:record;type:MEDIUMTEXT;comment:跟进记录"` SaleChanceId int `json:"sale_chance_id" gorm:"column:sale_chance_id;type:int(11);comment:销售机会id"` SalesLeadsId int `json:"sales_leads_id" gorm:"column:sales_leads_id;type:int(11);comment:销售线索id"` ContactInformationId int `json:"contact_information_id" gorm:"column:contact_information_id;type:int(11);comment:联系方式id"` FollowTime time.Time `json:"follow_time" gorm:"column:follow_time;type:datetime;comment:跟进时间"` NextFollowTime time.Time `json:"next_follow_time" gorm:"column:next_follow_time;type:datetime;comment:下次跟进时间"` Purpose string `json:"purpose" gorm:"column:purpose;type:varchar(255);comment:跟进目的"` Content string `json:"content" gorm:"column:content;type:MEDIUMTEXT;comment:跟进内容"` Client Client `json:"client" gorm:"foreignKey:ClientId"` Contact Contact `json:"contact" gorm:"foreignKey:ContactId"` gorm.Model `json:"-"` } FollowRecordSearch struct { FollowRecord Orm *gorm.DB Keyword string OrderBy string PageNum int PageSize int } ) func (FollowRecord) TableName() string { return "follow_records" } func NewFollowRecordSearch() *FollowRecordSearch { return &FollowRecordSearch{ Orm: mysqlx.GetDB(), } } func (slf *FollowRecordSearch) build() *gorm.DB { var db = slf.Orm.Model(&FollowRecord{}) if slf.Keyword != "" { db = db.Where("name LIKE ?", "%"+slf.Keyword+"%") } if slf.Keyword != "" { db = db.Where("topic LIKE ?", "%"+slf.Keyword+"%") } if slf.Id != 0 { db = db.Where("id = ?", slf.Id) } if slf.ClientId != 0 { db = db.Where("client_id = ?", slf.ClientId) } if slf.ClientStatusId != 0 { db = db.Where("client_status_id = ?", slf.ClientStatusId) } if slf.MemberId != 0 { db = db.Where("member_id = ?", slf.MemberId) } if slf.Number != "" { db = db.Where("number = ?", slf.Number) } if slf.ContactId != 0 { db = db.Where("contact_id = ?", slf.ContactId) } if slf.Topic != "" { db = db.Where("topic = ?", slf.Topic) } if slf.Record != "" { db = db.Where("record = ?", slf.Record) } if slf.SaleChanceId != 0 { db = db.Where("sale_chance_id = ?", slf.SaleChanceId) } if slf.SalesLeadsId != 0 { db = db.Where("sales_leads_id = ?", slf.SalesLeadsId) } if slf.ContactInformationId != 0 { db = db.Where("contact_information_id = ?", slf.ContactInformationId) } if !slf.FollowTime.IsZero() { db = db.Where("follow_time = ?", slf.FollowTime) } if !slf.NextFollowTime.IsZero() { db = db.Where("next_follow_time = ?", slf.NextFollowTime) } if slf.Purpose != "" { db = db.Where("purpose = ?", slf.Purpose) } if slf.Content != "" { db = db.Where("content = ?", slf.Content) } return db } func (slf *FollowRecordSearch) First() (*FollowRecord, error) { var record = new(FollowRecord) err := slf.build().First(record).Error return record, err } func (slf *FollowRecordSearch) FindAll() ([]*FollowRecord, int64, error) { var db = slf.build() var records = make([]*FollowRecord, 0) var total int64 if err := db.Count(&total).Error; err != nil { return records, total, err } if slf.PageNum > 0 && slf.PageSize > 0 { db = db.Limit(slf.PageSize).Offset((slf.PageNum - 1) * slf.PageSize) } err := db.Preload("Client").Preload("Contact").Find(&records).Error return records, total, err } func (slf *FollowRecordSearch) Count() (int64, error) { var count int64 err := slf.build().Count(&count).Error return count, err } func (slf *FollowRecordSearch) Page(page, pageSize int) ([]*FollowRecord, int64, error) { var records = make([]*FollowRecord, 0) var count int64 err := slf.build().Count(&count).Error if err != nil { return records, count, err } err = slf.build().Offset((page - 1) * pageSize).Limit(pageSize).Find(&records).Error return records, count, err } func (slf *FollowRecordSearch) Create(record *FollowRecord) error { var db = slf.build() return db.Create(record).Error } func (slf *FollowRecordSearch) Update(record *FollowRecord) error { var db = slf.build() return db.Updates(record).Error } func (slf *FollowRecordSearch) Delete() error { var db = slf.build() return db.Delete(&slf.FollowRecord).Error } func (slf *FollowRecordSearch) SetId(id int) *FollowRecordSearch { slf.Id = id return slf } func (slf *FollowRecordSearch) SetClientId(clientId int) *FollowRecordSearch { slf.ClientId = clientId return slf } func (slf *FollowRecordSearch) SetKeyword(keyword string) *FollowRecordSearch { slf.Keyword = keyword return slf } func (slf *FollowRecordSearch) SetPage(page, size int) *FollowRecordSearch { slf.PageNum, slf.PageSize = page, size return slf } func (slf *FollowRecordSearch) SetOrder(order string) *FollowRecordSearch { slf.OrderBy = order return slf } package model import ( "aps_crm/pkg/mysqlx" "gorm.io/gorm" "time" ) type ( FollowRecord struct { Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"` ClientId int `json:"client_id" gorm:"column:client_id;type:int(11);comment:客户id"` ClientStatusId int `json:"client_status_id" gorm:"column:client_status_id;type:int(11);comment:客户状态id"` MemberId int `json:"member_id" gorm:"column:member_id;type:int(11);comment:跟进人id"` Number string `json:"number" gorm:"column:number;type:varchar(255);comment:跟进编号"` ContactId int `json:"contact_id" gorm:"column:contact_id;type:int(11);comment:联系人id"` Topic string `json:"topic" gorm:"column:topic;type:varchar(255);comment:跟进主题"` Record string `json:"record" gorm:"column:record;type:MEDIUMTEXT;comment:跟进记录"` SaleChanceId int `json:"sale_chance_id" gorm:"column:sale_chance_id;type:int(11);comment:销售机会id"` SalesLeadsId int `json:"sales_leads_id" gorm:"column:sales_leads_id;type:int(11);comment:销售线索id"` ContactInformationId int `json:"contact_information_id" gorm:"column:contact_information_id;type:int(11);comment:联系方式id"` FollowTime time.Time `json:"follow_time" gorm:"column:follow_time;type:datetime;comment:跟进时间"` NextFollowTime time.Time `json:"next_follow_time" gorm:"column:next_follow_time;type:datetime;comment:下次跟进时间"` Purpose string `json:"purpose" gorm:"column:purpose;type:varchar(255);comment:跟进目的"` Content string `json:"content" gorm:"column:content;type:MEDIUMTEXT;comment:跟进内容"` Client Client `json:"client" gorm:"foreignKey:ClientId"` Contact Contact `json:"contact" gorm:"foreignKey:ContactId"` gorm.Model `json:"-"` } FollowRecordSearch struct { FollowRecord Orm *gorm.DB Keyword string OrderBy string PageNum int PageSize int } ) func (FollowRecord) TableName() string { return "follow_records" } func NewFollowRecordSearch() *FollowRecordSearch { return &FollowRecordSearch{ Orm: mysqlx.GetDB(), } } func (slf *FollowRecordSearch) build() *gorm.DB { var db = slf.Orm.Model(&FollowRecord{}) if slf.Keyword != "" { db = db.Where("name LIKE ?", "%"+slf.Keyword+"%") } if slf.Keyword != "" { db = db.Where("topic LIKE ?", "%"+slf.Keyword+"%") } if slf.Id != 0 { db = db.Where("id = ?", slf.Id) } if slf.ClientId != 0 { db = db.Where("client_id = ?", slf.ClientId) } if slf.ClientStatusId != 0 { db = db.Where("client_status_id = ?", slf.ClientStatusId) } if slf.MemberId != 0 { db = db.Where("member_id = ?", slf.MemberId) } if slf.Number != "" { db = db.Where("number = ?", slf.Number) } if slf.ContactId != 0 { db = db.Where("contact_id = ?", slf.ContactId) } if slf.Topic != "" { db = db.Where("topic = ?", slf.Topic) } if slf.Record != "" { db = db.Where("record = ?", slf.Record) } if slf.SaleChanceId != 0 { db = db.Where("sale_chance_id = ?", slf.SaleChanceId) } if slf.SalesLeadsId != 0 { db = db.Where("sales_leads_id = ?", slf.SalesLeadsId) } if slf.ContactInformationId != 0 { db = db.Where("contact_information_id = ?", slf.ContactInformationId) } if !slf.FollowTime.IsZero() { db = db.Where("follow_time = ?", slf.FollowTime) } if !slf.NextFollowTime.IsZero() { db = db.Where("next_follow_time = ?", slf.NextFollowTime) } if slf.Purpose != "" { db = db.Where("purpose = ?", slf.Purpose) } if slf.Content != "" { db = db.Where("content = ?", slf.Content) } return db } func (slf *FollowRecordSearch) First() (*FollowRecord, error) { var record = new(FollowRecord) err := slf.build().First(record).Error return record, err } func (slf *FollowRecordSearch) FindAll() ([]*FollowRecord, int64, error) { var db = slf.build() var records = make([]*FollowRecord, 0) var total int64 if err := db.Count(&total).Error; err != nil { return records, total, err } if slf.PageNum > 0 && slf.PageSize > 0 { db = db.Limit(slf.PageSize).Offset((slf.PageNum - 1) * slf.PageSize) } err := db.Preload("Client").Preload("Contact").Find(&records).Error return records, total, err } func (slf *FollowRecordSearch) Count() (int64, error) { var count int64 err := slf.build().Count(&count).Error return count, err } func (slf *FollowRecordSearch) Page(page, pageSize int) ([]*FollowRecord, int64, error) { var records = make([]*FollowRecord, 0) var count int64 err := slf.build().Count(&count).Error if err != nil { return records, count, err } err = slf.build().Offset((page - 1) * pageSize).Limit(pageSize).Find(&records).Error return records, count, err } func (slf *FollowRecordSearch) Create(record *FollowRecord) error { var db = slf.build() return db.Create(record).Error } func (slf *FollowRecordSearch) Update(record *FollowRecord) error { var db = slf.build() return db.Updates(record).Error } func (slf *FollowRecordSearch) Delete() error { var db = slf.build() return db.Delete(&slf.FollowRecord).Error } func (slf *FollowRecordSearch) SetId(id int) *FollowRecordSearch { slf.Id = id return slf } func (slf *FollowRecordSearch) SetClientId(clientId int) *FollowRecordSearch { slf.ClientId = clientId return slf } func (slf *FollowRecordSearch) SetKeyword(keyword string) *FollowRecordSearch { slf.Keyword = keyword return slf } func (slf *FollowRecordSearch) SetPage(page, size int) *FollowRecordSearch { slf.PageNum, slf.PageSize = page, size return slf } func (slf *FollowRecordSearch) SetOrder(order string) *FollowRecordSearch { slf.OrderBy = order return slf } model/request/followRecord.go
@@ -1,32 +1,32 @@ package request type AddFollowRecord struct { FollowRecord FollowRecord `json:"follow_record" binding:"required"` } type FollowRecord struct { ClientId int `json:"client_id" gorm:"column:client_id;type:int(11);comment:客户id"` ClientStatusId int `json:"client_status_id" gorm:"column:client_status_id;type:int(11);comment:客户状态id"` MemberId int `json:"member_id" gorm:"column:member_id;type:int(11);comment:跟进人id"` Number string `json:"number" gorm:"column:number;type:varchar(255);comment:跟进编号"` ContactId int `json:"contact_id" gorm:"column:contact_id;type:int(11);comment:联系人id"` Topic string `json:"topic" gorm:"column:topic;type:varchar(255);comment:跟进主题"` Record string `json:"record" gorm:"column:record;type:MEDIUMTEXT;comment:跟进记录"` SaleChanceId int `json:"sale_chance_id" gorm:"column:sale_chance_id;type:int(11);comment:销售机会id"` SalesLeadsId int `json:"sales_leads_id" gorm:"column:sales_leads_id;type:int(11);comment:销售线索id"` ContactInformationId int `json:"contact_information_id" gorm:"column:contact_information_id;type:int(11);comment:联系方式id"` FollowTime string `json:"follow_time" gorm:"column:follow_time;type:datetime;comment:跟进时间"` NextFollowTime string `json:"next_follow_time" gorm:"column:next_follow_time;type:datetime;comment:下次跟进时间"` Purpose string `json:"purpose" gorm:"column:purpose;type:varchar(255);comment:跟进目的"` Content string `json:"content" gorm:"column:content;type:varchar(255);comment:跟进内容"` } type UpdateFollowRecord struct { Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"` FollowRecord FollowRecord `json:"follow_record" binding:"required"` } type GetFollowRecordList struct { PageInfo Keyword string `json:"keyword"` } package request type AddFollowRecord struct { FollowRecord FollowRecord `json:"follow_record" binding:"required"` } type FollowRecord struct { ClientId int `json:"client_id" gorm:"column:client_id;type:int(11);comment:客户id"` ClientStatusId int `json:"client_status_id" gorm:"column:client_status_id;type:int(11);comment:客户状态id"` MemberId int `json:"member_id" gorm:"column:member_id;type:int(11);comment:跟进人id"` Number string `json:"number" gorm:"column:number;type:varchar(255);comment:跟进编号"` ContactId int `json:"contact_id" gorm:"column:contact_id;type:int(11);comment:联系人id"` Topic string `json:"topic" gorm:"column:topic;type:varchar(255);comment:跟进主题"` Record string `json:"record" gorm:"column:record;type:MEDIUMTEXT;comment:跟进记录"` SaleChanceId int `json:"sale_chance_id" gorm:"column:sale_chance_id;type:int(11);comment:销售机会id"` SalesLeadsId int `json:"sales_leads_id" gorm:"column:sales_leads_id;type:int(11);comment:销售线索id"` ContactInformationId int `json:"contact_information_id" gorm:"column:contact_information_id;type:int(11);comment:联系方式id"` FollowTime string `json:"follow_time" gorm:"column:follow_time;type:datetime;comment:跟进时间"` NextFollowTime string `json:"next_follow_time" gorm:"column:next_follow_time;type:datetime;comment:下次跟进时间"` Purpose string `json:"purpose" gorm:"column:purpose;type:varchar(255);comment:跟进目的"` Content string `json:"content" gorm:"column:content;type:varchar(255);comment:跟进内容"` } type UpdateFollowRecord struct { Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"` FollowRecord FollowRecord `json:"follow_record" binding:"required"` } type GetFollowRecordList struct { PageInfo Keyword string `json:"keyword"` } pkg/ecode/code.go
@@ -1,391 +1,391 @@ package ecode const ( OK = 200 UnknownErr = 2001 // 未知错误 DBErr = 2002 // db错误 RedisErr = 2003 // redis错误 ParamsErr = 2004 // 请求参数错误 UserNotExist = 2005 // 用户不存在 PasswordErr = 2006 // 密码错误 UserForbidden = 2007 // 用户被禁用 CaptchaGenerateFailed = 2008 // 验证码生成失败 CaptchaErr = 2009 // 验证码错误 CreateTokenErr = 2010 // 创建token失败 JWTInBlackList = 2011 // JWT在白名单 JWTDisabled = 2012 // JWT失效 JWTEmpty = 2013 // JWT为空 JWTExpire = 2014 // JWT过期 JWTParseErr = 2015 // JWT解析失败 UserNameExistErr = 2016 // 用户名已存在 ChildrenExistErr = 2017 // 存在子菜单 MenuNotExist = 2018 // 菜单不存在 MenuNameExistErr = 2019 // 菜单名已存在 DeviceIPExistErr = 2020 // 该设备IP已存在 DeviceInstallRancherErr = 2021 // 安装rancher失败 ClusterNameExistErr = 2022 // 該集群已經存在 CreateDatabaseErr = 2023 // 创建数据库错误 CreateDatabaseUserErr = 2024 // 创建数据库用户错误 CreateClusterErr = 2025 // 创建集群失败 GetClusterErr = 2026 // 获取集群失败 GetClusterKubeConfigErr = 2027 // 获取kube config失败 ClusterInstallDockerErr = 2028 // 安装docker失败 ClusterInstallKubectlErr = 2029 // 安装kubectl失败 ClusterDeployKubernetesRolesErr = 2030 // 部署kubernetes角色失败 ClusterGetNodeCommandErr = 2031 // 获取node command失败 UserHasCluster = 2032 // 删除用户失败,该用户下存在集群 NoPowerErr = 2033 // 没有权限 UploadImageErr = 2034 // 上传图像失败 InvalidParams = 100001 // 请求参数错误 CountryExist = 200001 // 国家已存在 CountryNotExist = 200002 // 国家不存在 CountryGetListErr = 200003 // 获取国家列表失败 ProvinceExist = 300001 // 省份已存在 ProvinceNotExist = 300002 // 省份不存在 ProvinceGetListErr = 300003 // 获取省份列表失败 ProvinceSetErr = 300004 // 设置省份失败 CityExist = 400001 // 城市已存在 CityNotExist = 400002 // 城市不存在 CityListErr = 400003 // 获取城市列表失败 CitySetErr = 400004 // 设置城市失败 CityDeleteErr = 400005 // 删除城市失败 RegionExist = 500001 // 区县已存在 RegionNotExist = 500002 // 区县不存在 RegionListErr = 500003 // 获取区县列表失败 RegionSetErr = 500004 // 设置区县失败 ContactExist = 600001 // 联系人已存在 ContactNotExist = 600002 // 联系人不存在 ContactListErr = 600003 // 获取联系人列表失败 ContactDeleteErr = 600004 // 删除联系人失败 ContactUpdateErr = 600005 // 更新联系人失败 ClientExist = 700001 // 客户已存在 ClientNotExist = 700002 // 客户不存在 ClientListErr = 700003 // 获取客户列表失败 ClientDeleteErr = 700004 // 删除客户失败 ClientUpdateErr = 700005 // 更新客户失败 ClientStatusExist = 800001 // 客户状态已存在 ClientStatusNotExist = 800002 // 客户状态不存在 ClientStatusListErr = 800003 // 获取客户状态列表失败 ClientStatusSetErr = 800004 // 设置客户状态失败 ClientTypeExist = 900001 // 客户类型已存在 ClientTypeNotExist = 900002 // 客户类型不存在 ClientTypeListErr = 900003 // 获取客户类型列表失败 ClientTypeSetErr = 900004 // 设置客户类型失败 ClientOriginExist = 1000001 // 客户来源已存在 ClientOriginNotExist = 1000002 // 客户来源不存在 ClientOriginListErr = 1000003 // 获取客户来源列表失败 ClientOriginSetErr = 1000004 // 设置客户来源失败 ClientLevelExist = 1100001 // 客户级别已存在 ClientLevelNotExist = 1100002 // 客户级别不存在 ClientLevelListErr = 1100003 // 获取客户级别列表失败 ClientLevelSetErr = 1100004 // 设置客户级别失败 ClientLevelUpdateErr = 1100005 // 更新客户级别失败 IndustryExist = 1200001 // 行业已存在 IndustryNotExist = 1200002 // 行业不存在 IndustryListErr = 1200003 // 获取行业列表失败 IndustrySetErr = 1200004 // 设置行业失败 IndustryUpdateErr = 1200005 // 更新行业失败 EnterpriseNatureExist = 1300001 // 企业性质已存在 EnterpriseNatureNotExist = 1300002 // 企业性质不存在 EnterpriseNatureListErr = 1300003 // 获取企业性质列表失败 EnterpriseNatureSetErr = 1300004 // 设置企业性质失败 EnterpriseNatureUpdateErr = 1300005 // 更新企业性质失败 RegisteredCapitalExist = 1400001 // 注册资本已存在 RegisteredCapitalNotExist = 1400002 // 注册资本不存在 RegisteredCapitalListErr = 1400003 // 获取注册资本列表失败 RegisteredCapitalSetErr = 1400004 // 设置注册资本失败 RegisteredCapitalUpdateErr = 1400005 // 更新注册资本失败 EnterpriseScaleExist = 1500001 // 企业规模已存在 EnterpriseScaleNotExist = 1500002 // 企业规模不存在 EnterpriseScaleListErr = 1500003 // 获取企业规模列表失败 EnterpriseScaleSetErr = 1500004 // 设置企业规模失败 EnterpriseScaleUpdateErr = 1500005 // 更新企业规模失败 SalesLeadsExist = 1600001 // 销售线索已存在 SalesLeadsNotExist = 1600002 // 销售线索不存在 SalesLeadsListErr = 1600003 // 获取销售线索列表失败 SalesLeadsSetErr = 1600004 // 设置销售线索失败 SalesLeadsUpdateErr = 1600005 // 更新销售线索失败 SalesLeadsDeleteErr = 1600006 // 删除销售线索失败 SalesSourceExist = 1700001 // 销售线索来源已存在 SalesSourceNotExist = 1700002 // 销售线索来源不存在 SalesSourceListErr = 1700003 // 获取销售线索来源列表失败 SalesSourceSetErr = 1700004 // 设置销售线索来源失败 SalesSourceUpdateErr = 1700005 // 更新销售线索来源失败 FollowRecordExist = 1800001 // 跟进记录已存在 FollowRecordNotExist = 1800002 // 跟进记录不存在 FollowRecordListErr = 1800003 // 获取跟进记录列表失败 FollowRecordSetErr = 1800004 // 设置跟进记录失败 FollowRecordUpdateErr = 1800005 // 更新跟进记录失败 FollowRecordDeleteErr = 1800006 // 删除跟进记录失败 SaleChanceExist = 1900001 // 销售机会已存在 SaleChanceNotExist = 1900002 // 销售机会不存在 SaleChanceListErr = 1900003 // 获取销售机会列表失败 SaleChanceSetErr = 1900004 // 设置销售机会失败 SaleChanceUpdateErr = 1900005 // 更新销售机会失败 SaleChanceDeleteErr = 1900006 // 删除销售机会失败 SaleStageExist = 2000001 // 销售阶段已存在 SaleStageNotExist = 2000002 // 销售阶段不存在 SaleStageListErr = 2000003 // 获取销售阶段列表失败 SaleStageSetErr = 2000004 // 设置销售阶段失败 SaleTypeExist = 2100001 // 销售类型已存在 SaleTypeNotExist = 2100002 // 销售类型不存在 SaleTypeListErr = 2100003 // 获取销售类型列表失败 SaleTypeSetErr = 2100004 // 设置销售类型失败 SaleTypeUpdateErr = 2100005 // 更新销售类型失败 SaleTypeDeleteErr = 2100006 // 删除销售类型失败 RegularCustomersExist = 2200001 // 固定客户已存在 RegularCustomersNotExist = 2200002 // 固定客户不存在 RegularCustomersListErr = 2200003 // 获取固定客户列表失败 RegularCustomersSetErr = 2200004 // 设置固定客户失败 RegularCustomersUpdateErr = 2200005 // 更新固定客户失败 RegularCustomersDeleteErr = 2200006 // 删除固定客户失败 PossibilityExist = 2300001 // 销售机会可能性已存在 PossibilityNotExist = 2300002 // 销售机会可能性不存在 PossibilityListErr = 2300003 // 获取销售机会可能性列表失败 PossibilitySetErr = 2300004 // 设置销售机会可能性失败 PossibilityUpdateErr = 2300005 // 更新销售机会可能性失败 PossibilityDeleteErr = 2300006 // 删除销售机会可能性失败 StatusExist = 2400001 // 销售机会状态已存在 StatusNotExist = 2400002 // 销售机会状态不存在 StatusListErr = 2400003 // 获取销售机会状态列表失败 StatusSetErr = 2400004 // 设置销售机会状态失败 StatusUpdateErr = 2400005 // 更新销售机会状态失败 StatusDeleteErr = 2400006 // 删除销售机会状态失败 QuotationExist = 2500001 // 报价单已存在 QuotationNotExist = 2500002 // 报价单不存在 QuotationListErr = 2500003 // 获取报价单列表失败 QuotationSetErr = 2500004 // 设置报价单失败 QuotationUpdateErr = 2500005 // 更新报价单失败 QuotationDeleteErr = 2500006 // 删除报价单失败 MasterOrderExist = 2600001 // 主订单已存在 MasterOrderNotExist = 2600002 // 主订单不存在 MasterOrderListErr = 2600003 // 获取主订单列表失败 MasterOrderSetErr = 2600004 // 设置主订单失败 MasterOrderUpdateErr = 2600005 // 更新主订单失败 MasterOrderDeleteErr = 2600006 // 删除主订单失败 SubOrderExist = 2700001 // 子订单已存在 SubOrderNotExist = 2700002 // 子订单不存在 SubOrderListErr = 2700003 // 获取子订单列表失败 SubOrderSetErr = 2700004 // 设置子订单失败 SubOrderUpdateErr = 2700005 // 更新子订单失败 SubOrderDeleteErr = 2700006 // 删除子订单失败 SalesDetailsExist = 2800001 // 销售明细已存在 SalesDetailsNotExist = 2800002 // 销售明细不存在 SalesDetailsListErr = 2800003 // 获取销售明细列表失败 SalesDetailsSetErr = 2800004 // 设置销售明细失败 SalesDetailsUpdateErr = 2800005 // 更新销售明细失败 SalesDetailsDeleteErr = 2800006 // 删除销售明细失败 SalesReturnExist = 2900001 // 销售退货单已存在 SalesReturnNotExist = 2900002 // 销售退货单不存在 SalesReturnListErr = 2900003 // 获取销售退货单列表失败 SalesReturnSetErr = 2900004 // 设置销售退货单失败 SalesReturnUpdateErr = 2900005 // 更新销售退货单失败 SalesReturnDeleteErr = 2900006 // 删除销售退货单失败 SalesRefundExist = 3000001 // 销售退款单已存在 SalesRefundNotExist = 3000002 // 销售退款单不存在 SalesRefundListErr = 3000003 // 获取销售退款单列表失败 SalesRefundSetErr = 3000004 // 设置销售退款单失败 SalesRefundUpdateErr = 3000005 // 更新销售退款单失败 SalesRefundDeleteErr = 3000006 // 删除销售退款单失败 ContractExist = 3100001 // 合同已存在 ContractNotExist = 3100002 // 合同不存在 ContractListErr = 3100003 // 获取合同列表失败 ContractSetErr = 3100004 // 设置合同失败 ContractUpdateErr = 3100005 // 更新合同失败 ContractDeleteErr = 3100006 // 删除合同失败 PlanExist = 3200001 // 计划已存在 PlanNotExist = 3200002 // 计划不存在 PlanListErr = 3200003 // 获取计划列表失败 PlanSetErr = 3200004 // 设置计划失败 PlanUpdateErr = 3200005 // 更新计划失败 PlanDeleteErr = 3200006 // 删除计划失败 SContractExist = 3300001 // 服务合同已存在 SContractNotExist = 3300002 // 服务合同不存在 SContractListErr = 3300003 // 获取服务合同列表失败 SContractSetErr = 3300004 // 设置服务合同失败 SContractUpdateErr = 3300005 // 更新服务合同失败 SContractDeleteErr = 3300006 // 删除服务合同失败 OrderManageExist = 3400001 // 订单管理已存在 OrderManageNotExist = 3400002 // 订单管理不存在 OrderManageListErr = 3400003 // 获取订单管理列表失败 OrderManageSetErr = 3400004 // 设置订单管理失败 OrderManageUpdateErr = 3400005 // 更新订单管理失败 OrderManageDeleteErr = 3400006 // 删除订单管理失败 ServiceFollowupExist = 3500001 // 服务跟进已存在 ServiceFollowupNotExist = 3500002 // 服务跟进不存在 ServiceFollowupListErr = 3500003 // 获取服务跟进列表失败 ServiceFollowupSetErr = 3500004 // 设置服务跟进失败 ServiceFollowupUpdateErr = 3500005 // 更新服务跟进失败 ServiceFollowupDeleteErr = 3500006 // 删除服务跟进失败 CustomerServiceSheetExist = 3600001 // 客服单已存在 CustomerServiceSheetNotExist = 3600002 // 客服单不存在 CustomerServiceSheetListErr = 3600003 // 获取客服单列表失败 CustomerServiceSheetSetErr = 3600004 // 设置客服单失败 CustomerServiceSheetUpdateErr = 3600005 // 更新客服单失败 CustomerServiceSheetDeleteErr = 3600006 // 删除客服单失败 ServiceFeeManageExist = 3700001 // 服务费管理已存在 ServiceFeeManageNotExist = 3700002 // 服务费管理不存在 ServiceFeeManageListErr = 3700003 // 获取服务费管理列表失败 ServiceFeeManageSetErr = 3700004 // 设置服务费管理失败 ServiceFeeManageUpdateErr = 3700005 // 更新服务费管理失败 ServiceFeeManageDeleteErr = 3700006 // 删除服务费管理失败 RoleExist = 3800001 // 角色已存在 RoleNotExist = 3800002 // 角色不存在 RoleListErr = 3800003 // 获取角色列表失败 RoleSetErr = 3800004 // 设置角色失败 RoleUpdateErr = 3800005 // 更新角色失败 RoleDeleteErr = 3800006 // 删除角色失败 RoleDeleteErr1 = 3800007 // 该角色下存在用户,无法删除 MenuListErr = 3900001 // 获取菜单列表失败 SetMenuAuthorityErr = 3900002 // 设置菜单权限失败 DepartmentExist = 4000001 // 部门已存在 DepartmentNotExist = 4000002 // 部门不存在 DepartmentListErr = 4000003 // 获取部门列表失败 DepartmentSetErr = 4000004 // 设置部门失败 DepartmentUpdateErr = 4000005 // 更新部门失败 DepartmentDeleteErr = 4000006 // 删除部门失败 DepartmentDeleteErr1 = 4000007 // 该部门下存在用户,无法删除 VettingExist = 4100001 // 审批已存在 VettingNotExist = 4100002 // 审批不存在 VettingListErr = 4100003 // 获取审批列表失败 VettingSetErr = 4100004 // 设置审批失败 VettingNotBelongToUser = 4100005 // 审批不属于当前用户 SatisfactionExist = 4200001 // 满意度已存在 SatisfactionNotExist = 4200002 // 满意度不存在 SatisfactionListErr = 4200003 // 获取满意度列表失败 SatisfactionSetErr = 4200004 // 设置满意度失败 SatisfactionUpdateErr = 4200005 // 更新满意度失败 TimelyRateExist = 4300001 // 及时率已存在 TimelyRateNotExist = 4300002 // 及时率不存在 TimelyRateListErr = 4300003 // 获取及时率列表失败 TimelyRateSetErr = 4300004 // 设置及时率失败 TimelyRateUpdateErr = 4300005 // 更新及时率失败 SolveRateExist = 4400001 // 解决率已存在 SolveRateNotExist = 4400002 // 解决率不存在 SolveRateListErr = 4400003 // 获取解决率列表失败 SolveRateSetErr = 4400004 // 设置解决率失败 SolveRateUpdateErr = 4400005 // 更新解决率失败 IsVisitExist = 4500001 // 服务人员是否来过已存在 IsVisitNotExist = 4500002 // 服务人员是否来过不存在 IsVisitListErr = 4500003 // 获取服务人员是否来过列表失败 IsVisitSetErr = 4500004 // 设置服务人员是否来过失败 IsVisitUpdateErr = 4500005 // 更新服务人员是否来过失败 ReportSourceExist = 4600001 // 报表来源已存在 ReportSourceNotExist = 4600002 // 报表来源不存在 ReportSourceListErr = 4600003 // 获取报表来源列表失败 ReportSourceSetErr = 4600004 // 设置报表来源失败 ReportSourceUpdateErr = 4600005 // 更新报表来源失败 OrderTypeExist = 4700001 // 工单类型已存在 OrderTypeNotExist = 4700002 // 工单类型不存在 OrderTypeListErr = 4700003 // 获取工单类型列表失败 OrderTypeSetErr = 4700004 // 设置工单类型失败 OrderTypeUpdateErr = 4700005 // 更新工单类型失败 ServiceContractStatusExist = 4800001 // 服务合同状态已存在 ServiceContractStatusNotExist = 4400002 // 服务合同状态不存在 ServiceContractStatusListErr = 4800003 // 获取服务合同状态列表失败 ServiceContractStatusSetErr = 4800004 // 设置服务合同状态失败 ServiceContractStatusUpdateErr = 4800005 // 更新服务合同状态失败 ServiceContractTypeExist = 4900001 // 服务合同类型已存在 ServiceContractTypeNotExist = 4900002 // 服务合同类型不存在 ServiceContractTypeListErr = 4900003 // 获取服务合同类型列表失败 ServiceContractTypeSetErr = 4900004 // 设置服务合同类型失败 ServiceContractTypeUpdateErr = 4900005 // 更新服务合同类型失败 RefundMethodExist = 5000001 // 退款方式已存在 RefundMethodNotExist = 5000002 // 退款方式不存在 RefundMethodListErr = 5000003 // 获取退款方式列表失败 RefundMethodSetErr = 5000004 // 设置退款方式失败 RefundMethodUpdateErr = 5000005 // 更新退款方式失败 IsInvoiceExist = 5100001 // 是否开票已存在 IsInvoiceNotExist = 5100002 // 是否开票不存在 IsInvoiceListErr = 5100003 // 获取是否开票列表失败 IsInvoiceSetErr = 5100004 // 设置是否开票失败 IsInvoiceUpdateErr = 5100005 // 更新是否开票失败 AccountIdExist = 5200001 // 账户已存在 AccountIdNotExist = 5200002 // 账户不存在 AccountIdListErr = 5200003 // 获取账户列表失败 AccountIdSetErr = 5200004 // 设置账户失败 AccountIdUpdateErr = 5200005 // 更新账户失败 SalesReturnStatusExist = 5300001 // 退货单状态已存在 SalesReturnStatusNotExist = 5300002 // 退货单状态不存在 SalesReturnStatusListErr = 5300003 // 获取退货单状态列表失败 SalesReturnStatusSetErr = 5300004 // 设置退货单状态失败 SalesReturnStatusUpdateErr = 5300005 // 更新退货单状态失败 RepositoryExist = 5400001 // 退货仓库已存在 RepositoryNotExist = 5400002 // 退货仓库不存在 RepositoryListErr = 5400003 // 获取退货仓库列表失败 RepositorySetErr = 5400004 // 设置退货仓库失败 RepositoryUpdateErr = 5400005 // 更新退货仓库失败 QuotationStatusExist = 5500001 // 报价单状态已存在 QuotationStatusNotExist = 5500002 // 报价单状态不存在 QuotationStatusListErr = 5500003 // 获取报价单状态列表失败 QuotationStatusSetErr = 5500004 // 设置报价单状态失败 QuotationStatusUpdateErr = 5500005 // 更新报价单状态失败 CurrencyExist = 5600001 // 币种已存在 CurrencyNotExist = 5600002 // 币种不存在 CurrencyListErr = 5600003 // 获取币种列表失败 CurrencySetErr = 5600004 // 设置币种失败 CurrencyUpdateErr = 5600005 // 更新币种失败 AssignErr = 5700001 // 分配失败 AssignWrongMemberId = 5700002 // 分配失败,分配人为空 AssignWrongId = 5700003 // 分配失败,分配对象为空 AssignWrongModelType = 5700004 // 分配失败,分配对象类型为空 ) package ecode const ( OK = 200 UnknownErr = 2001 // 未知错误 DBErr = 2002 // db错误 RedisErr = 2003 // redis错误 ParamsErr = 2004 // 请求参数错误 UserNotExist = 2005 // 用户不存在 PasswordErr = 2006 // 密码错误 UserForbidden = 2007 // 用户被禁用 CaptchaGenerateFailed = 2008 // 验证码生成失败 CaptchaErr = 2009 // 验证码错误 CreateTokenErr = 2010 // 创建token失败 JWTInBlackList = 2011 // JWT在白名单 JWTDisabled = 2012 // JWT失效 JWTEmpty = 2013 // JWT为空 JWTExpire = 2014 // JWT过期 JWTParseErr = 2015 // JWT解析失败 UserNameExistErr = 2016 // 用户名已存在 ChildrenExistErr = 2017 // 存在子菜单 MenuNotExist = 2018 // 菜单不存在 MenuNameExistErr = 2019 // 菜单名已存在 DeviceIPExistErr = 2020 // 该设备IP已存在 DeviceInstallRancherErr = 2021 // 安装rancher失败 ClusterNameExistErr = 2022 // 該集群已經存在 CreateDatabaseErr = 2023 // 创建数据库错误 CreateDatabaseUserErr = 2024 // 创建数据库用户错误 CreateClusterErr = 2025 // 创建集群失败 GetClusterErr = 2026 // 获取集群失败 GetClusterKubeConfigErr = 2027 // 获取kube config失败 ClusterInstallDockerErr = 2028 // 安装docker失败 ClusterInstallKubectlErr = 2029 // 安装kubectl失败 ClusterDeployKubernetesRolesErr = 2030 // 部署kubernetes角色失败 ClusterGetNodeCommandErr = 2031 // 获取node command失败 UserHasCluster = 2032 // 删除用户失败,该用户下存在集群 NoPowerErr = 2033 // 没有权限 UploadImageErr = 2034 // 上传图像失败 InvalidParams = 100001 // 请求参数错误 CountryExist = 200001 // 国家已存在 CountryNotExist = 200002 // 国家不存在 CountryGetListErr = 200003 // 获取国家列表失败 ProvinceExist = 300001 // 省份已存在 ProvinceNotExist = 300002 // 省份不存在 ProvinceGetListErr = 300003 // 获取省份列表失败 ProvinceSetErr = 300004 // 设置省份失败 CityExist = 400001 // 城市已存在 CityNotExist = 400002 // 城市不存在 CityListErr = 400003 // 获取城市列表失败 CitySetErr = 400004 // 设置城市失败 CityDeleteErr = 400005 // 删除城市失败 RegionExist = 500001 // 区县已存在 RegionNotExist = 500002 // 区县不存在 RegionListErr = 500003 // 获取区县列表失败 RegionSetErr = 500004 // 设置区县失败 ContactExist = 600001 // 联系人已存在 ContactNotExist = 600002 // 联系人不存在 ContactListErr = 600003 // 获取联系人列表失败 ContactDeleteErr = 600004 // 删除联系人失败 ContactUpdateErr = 600005 // 更新联系人失败 ClientExist = 700001 // 客户已存在 ClientNotExist = 700002 // 客户不存在 ClientListErr = 700003 // 获取客户列表失败 ClientDeleteErr = 700004 // 删除客户失败 ClientUpdateErr = 700005 // 更新客户失败 ClientStatusExist = 800001 // 客户状态已存在 ClientStatusNotExist = 800002 // 客户状态不存在 ClientStatusListErr = 800003 // 获取客户状态列表失败 ClientStatusSetErr = 800004 // 设置客户状态失败 ClientTypeExist = 900001 // 客户类型已存在 ClientTypeNotExist = 900002 // 客户类型不存在 ClientTypeListErr = 900003 // 获取客户类型列表失败 ClientTypeSetErr = 900004 // 设置客户类型失败 ClientOriginExist = 1000001 // 客户来源已存在 ClientOriginNotExist = 1000002 // 客户来源不存在 ClientOriginListErr = 1000003 // 获取客户来源列表失败 ClientOriginSetErr = 1000004 // 设置客户来源失败 ClientLevelExist = 1100001 // 客户级别已存在 ClientLevelNotExist = 1100002 // 客户级别不存在 ClientLevelListErr = 1100003 // 获取客户级别列表失败 ClientLevelSetErr = 1100004 // 设置客户级别失败 ClientLevelUpdateErr = 1100005 // 更新客户级别失败 IndustryExist = 1200001 // 行业已存在 IndustryNotExist = 1200002 // 行业不存在 IndustryListErr = 1200003 // 获取行业列表失败 IndustrySetErr = 1200004 // 设置行业失败 IndustryUpdateErr = 1200005 // 更新行业失败 EnterpriseNatureExist = 1300001 // 企业性质已存在 EnterpriseNatureNotExist = 1300002 // 企业性质不存在 EnterpriseNatureListErr = 1300003 // 获取企业性质列表失败 EnterpriseNatureSetErr = 1300004 // 设置企业性质失败 EnterpriseNatureUpdateErr = 1300005 // 更新企业性质失败 RegisteredCapitalExist = 1400001 // 注册资本已存在 RegisteredCapitalNotExist = 1400002 // 注册资本不存在 RegisteredCapitalListErr = 1400003 // 获取注册资本列表失败 RegisteredCapitalSetErr = 1400004 // 设置注册资本失败 RegisteredCapitalUpdateErr = 1400005 // 更新注册资本失败 EnterpriseScaleExist = 1500001 // 企业规模已存在 EnterpriseScaleNotExist = 1500002 // 企业规模不存在 EnterpriseScaleListErr = 1500003 // 获取企业规模列表失败 EnterpriseScaleSetErr = 1500004 // 设置企业规模失败 EnterpriseScaleUpdateErr = 1500005 // 更新企业规模失败 SalesLeadsExist = 1600001 // 销售线索已存在 SalesLeadsNotExist = 1600002 // 销售线索不存在 SalesLeadsListErr = 1600003 // 获取销售线索列表失败 SalesLeadsSetErr = 1600004 // 设置销售线索失败 SalesLeadsUpdateErr = 1600005 // 更新销售线索失败 SalesLeadsDeleteErr = 1600006 // 删除销售线索失败 SalesSourceExist = 1700001 // 销售线索来源已存在 SalesSourceNotExist = 1700002 // 销售线索来源不存在 SalesSourceListErr = 1700003 // 获取销售线索来源列表失败 SalesSourceSetErr = 1700004 // 设置销售线索来源失败 SalesSourceUpdateErr = 1700005 // 更新销售线索来源失败 FollowRecordExist = 1800001 // 跟进记录已存在 FollowRecordNotExist = 1800002 // 跟进记录不存在 FollowRecordListErr = 1800003 // 获取跟进记录列表失败 FollowRecordSetErr = 1800004 // 设置跟进记录失败 FollowRecordUpdateErr = 1800005 // 更新跟进记录失败 FollowRecordDeleteErr = 1800006 // 删除跟进记录失败 SaleChanceExist = 1900001 // 销售机会已存在 SaleChanceNotExist = 1900002 // 销售机会不存在 SaleChanceListErr = 1900003 // 获取销售机会列表失败 SaleChanceSetErr = 1900004 // 设置销售机会失败 SaleChanceUpdateErr = 1900005 // 更新销售机会失败 SaleChanceDeleteErr = 1900006 // 删除销售机会失败 SaleStageExist = 2000001 // 销售阶段已存在 SaleStageNotExist = 2000002 // 销售阶段不存在 SaleStageListErr = 2000003 // 获取销售阶段列表失败 SaleStageSetErr = 2000004 // 设置销售阶段失败 SaleTypeExist = 2100001 // 销售类型已存在 SaleTypeNotExist = 2100002 // 销售类型不存在 SaleTypeListErr = 2100003 // 获取销售类型列表失败 SaleTypeSetErr = 2100004 // 设置销售类型失败 SaleTypeUpdateErr = 2100005 // 更新销售类型失败 SaleTypeDeleteErr = 2100006 // 删除销售类型失败 RegularCustomersExist = 2200001 // 固定客户已存在 RegularCustomersNotExist = 2200002 // 固定客户不存在 RegularCustomersListErr = 2200003 // 获取固定客户列表失败 RegularCustomersSetErr = 2200004 // 设置固定客户失败 RegularCustomersUpdateErr = 2200005 // 更新固定客户失败 RegularCustomersDeleteErr = 2200006 // 删除固定客户失败 PossibilityExist = 2300001 // 销售机会可能性已存在 PossibilityNotExist = 2300002 // 销售机会可能性不存在 PossibilityListErr = 2300003 // 获取销售机会可能性列表失败 PossibilitySetErr = 2300004 // 设置销售机会可能性失败 PossibilityUpdateErr = 2300005 // 更新销售机会可能性失败 PossibilityDeleteErr = 2300006 // 删除销售机会可能性失败 StatusExist = 2400001 // 销售机会状态已存在 StatusNotExist = 2400002 // 销售机会状态不存在 StatusListErr = 2400003 // 获取销售机会状态列表失败 StatusSetErr = 2400004 // 设置销售机会状态失败 StatusUpdateErr = 2400005 // 更新销售机会状态失败 StatusDeleteErr = 2400006 // 删除销售机会状态失败 QuotationExist = 2500001 // 报价单已存在 QuotationNotExist = 2500002 // 报价单不存在 QuotationListErr = 2500003 // 获取报价单列表失败 QuotationSetErr = 2500004 // 设置报价单失败 QuotationUpdateErr = 2500005 // 更新报价单失败 QuotationDeleteErr = 2500006 // 删除报价单失败 MasterOrderExist = 2600001 // 主订单已存在 MasterOrderNotExist = 2600002 // 主订单不存在 MasterOrderListErr = 2600003 // 获取主订单列表失败 MasterOrderSetErr = 2600004 // 设置主订单失败 MasterOrderUpdateErr = 2600005 // 更新主订单失败 MasterOrderDeleteErr = 2600006 // 删除主订单失败 SubOrderExist = 2700001 // 子订单已存在 SubOrderNotExist = 2700002 // 子订单不存在 SubOrderListErr = 2700003 // 获取子订单列表失败 SubOrderSetErr = 2700004 // 设置子订单失败 SubOrderUpdateErr = 2700005 // 更新子订单失败 SubOrderDeleteErr = 2700006 // 删除子订单失败 SalesDetailsExist = 2800001 // 销售明细已存在 SalesDetailsNotExist = 2800002 // 销售明细不存在 SalesDetailsListErr = 2800003 // 获取销售明细列表失败 SalesDetailsSetErr = 2800004 // 设置销售明细失败 SalesDetailsUpdateErr = 2800005 // 更新销售明细失败 SalesDetailsDeleteErr = 2800006 // 删除销售明细失败 SalesReturnExist = 2900001 // 销售退货单已存在 SalesReturnNotExist = 2900002 // 销售退货单不存在 SalesReturnListErr = 2900003 // 获取销售退货单列表失败 SalesReturnSetErr = 2900004 // 设置销售退货单失败 SalesReturnUpdateErr = 2900005 // 更新销售退货单失败 SalesReturnDeleteErr = 2900006 // 删除销售退货单失败 SalesRefundExist = 3000001 // 销售退款单已存在 SalesRefundNotExist = 3000002 // 销售退款单不存在 SalesRefundListErr = 3000003 // 获取销售退款单列表失败 SalesRefundSetErr = 3000004 // 设置销售退款单失败 SalesRefundUpdateErr = 3000005 // 更新销售退款单失败 SalesRefundDeleteErr = 3000006 // 删除销售退款单失败 ContractExist = 3100001 // 合同已存在 ContractNotExist = 3100002 // 合同不存在 ContractListErr = 3100003 // 获取合同列表失败 ContractSetErr = 3100004 // 设置合同失败 ContractUpdateErr = 3100005 // 更新合同失败 ContractDeleteErr = 3100006 // 删除合同失败 PlanExist = 3200001 // 计划已存在 PlanNotExist = 3200002 // 计划不存在 PlanListErr = 3200003 // 获取计划列表失败 PlanSetErr = 3200004 // 设置计划失败 PlanUpdateErr = 3200005 // 更新计划失败 PlanDeleteErr = 3200006 // 删除计划失败 SContractExist = 3300001 // 服务合同已存在 SContractNotExist = 3300002 // 服务合同不存在 SContractListErr = 3300003 // 获取服务合同列表失败 SContractSetErr = 3300004 // 设置服务合同失败 SContractUpdateErr = 3300005 // 更新服务合同失败 SContractDeleteErr = 3300006 // 删除服务合同失败 OrderManageExist = 3400001 // 订单管理已存在 OrderManageNotExist = 3400002 // 订单管理不存在 OrderManageListErr = 3400003 // 获取订单管理列表失败 OrderManageSetErr = 3400004 // 设置订单管理失败 OrderManageUpdateErr = 3400005 // 更新订单管理失败 OrderManageDeleteErr = 3400006 // 删除订单管理失败 ServiceFollowupExist = 3500001 // 服务跟进已存在 ServiceFollowupNotExist = 3500002 // 服务跟进不存在 ServiceFollowupListErr = 3500003 // 获取服务跟进列表失败 ServiceFollowupSetErr = 3500004 // 设置服务跟进失败 ServiceFollowupUpdateErr = 3500005 // 更新服务跟进失败 ServiceFollowupDeleteErr = 3500006 // 删除服务跟进失败 CustomerServiceSheetExist = 3600001 // 客服单已存在 CustomerServiceSheetNotExist = 3600002 // 客服单不存在 CustomerServiceSheetListErr = 3600003 // 获取客服单列表失败 CustomerServiceSheetSetErr = 3600004 // 设置客服单失败 CustomerServiceSheetUpdateErr = 3600005 // 更新客服单失败 CustomerServiceSheetDeleteErr = 3600006 // 删除客服单失败 ServiceFeeManageExist = 3700001 // 服务费管理已存在 ServiceFeeManageNotExist = 3700002 // 服务费管理不存在 ServiceFeeManageListErr = 3700003 // 获取服务费管理列表失败 ServiceFeeManageSetErr = 3700004 // 设置服务费管理失败 ServiceFeeManageUpdateErr = 3700005 // 更新服务费管理失败 ServiceFeeManageDeleteErr = 3700006 // 删除服务费管理失败 RoleExist = 3800001 // 角色已存在 RoleNotExist = 3800002 // 角色不存在 RoleListErr = 3800003 // 获取角色列表失败 RoleSetErr = 3800004 // 设置角色失败 RoleUpdateErr = 3800005 // 更新角色失败 RoleDeleteErr = 3800006 // 删除角色失败 RoleDeleteErr1 = 3800007 // 该角色下存在用户,无法删除 MenuListErr = 3900001 // 获取菜单列表失败 SetMenuAuthorityErr = 3900002 // 设置菜单权限失败 DepartmentExist = 4000001 // 部门已存在 DepartmentNotExist = 4000002 // 部门不存在 DepartmentListErr = 4000003 // 获取部门列表失败 DepartmentSetErr = 4000004 // 设置部门失败 DepartmentUpdateErr = 4000005 // 更新部门失败 DepartmentDeleteErr = 4000006 // 删除部门失败 DepartmentDeleteErr1 = 4000007 // 该部门下存在用户,无法删除 VettingExist = 4100001 // 审批已存在 VettingNotExist = 4100002 // 审批不存在 VettingListErr = 4100003 // 获取审批列表失败 VettingSetErr = 4100004 // 设置审批失败 VettingNotBelongToUser = 4100005 // 审批不属于当前用户 SatisfactionExist = 4200001 // 满意度已存在 SatisfactionNotExist = 4200002 // 满意度不存在 SatisfactionListErr = 4200003 // 获取满意度列表失败 SatisfactionSetErr = 4200004 // 设置满意度失败 SatisfactionUpdateErr = 4200005 // 更新满意度失败 TimelyRateExist = 4300001 // 及时率已存在 TimelyRateNotExist = 4300002 // 及时率不存在 TimelyRateListErr = 4300003 // 获取及时率列表失败 TimelyRateSetErr = 4300004 // 设置及时率失败 TimelyRateUpdateErr = 4300005 // 更新及时率失败 SolveRateExist = 4400001 // 解决率已存在 SolveRateNotExist = 4400002 // 解决率不存在 SolveRateListErr = 4400003 // 获取解决率列表失败 SolveRateSetErr = 4400004 // 设置解决率失败 SolveRateUpdateErr = 4400005 // 更新解决率失败 IsVisitExist = 4500001 // 服务人员是否来过已存在 IsVisitNotExist = 4500002 // 服务人员是否来过不存在 IsVisitListErr = 4500003 // 获取服务人员是否来过列表失败 IsVisitSetErr = 4500004 // 设置服务人员是否来过失败 IsVisitUpdateErr = 4500005 // 更新服务人员是否来过失败 ReportSourceExist = 4600001 // 报表来源已存在 ReportSourceNotExist = 4600002 // 报表来源不存在 ReportSourceListErr = 4600003 // 获取报表来源列表失败 ReportSourceSetErr = 4600004 // 设置报表来源失败 ReportSourceUpdateErr = 4600005 // 更新报表来源失败 OrderTypeExist = 4700001 // 工单类型已存在 OrderTypeNotExist = 4700002 // 工单类型不存在 OrderTypeListErr = 4700003 // 获取工单类型列表失败 OrderTypeSetErr = 4700004 // 设置工单类型失败 OrderTypeUpdateErr = 4700005 // 更新工单类型失败 ServiceContractStatusExist = 4800001 // 服务合同状态已存在 ServiceContractStatusNotExist = 4400002 // 服务合同状态不存在 ServiceContractStatusListErr = 4800003 // 获取服务合同状态列表失败 ServiceContractStatusSetErr = 4800004 // 设置服务合同状态失败 ServiceContractStatusUpdateErr = 4800005 // 更新服务合同状态失败 ServiceContractTypeExist = 4900001 // 服务合同类型已存在 ServiceContractTypeNotExist = 4900002 // 服务合同类型不存在 ServiceContractTypeListErr = 4900003 // 获取服务合同类型列表失败 ServiceContractTypeSetErr = 4900004 // 设置服务合同类型失败 ServiceContractTypeUpdateErr = 4900005 // 更新服务合同类型失败 RefundMethodExist = 5000001 // 退款方式已存在 RefundMethodNotExist = 5000002 // 退款方式不存在 RefundMethodListErr = 5000003 // 获取退款方式列表失败 RefundMethodSetErr = 5000004 // 设置退款方式失败 RefundMethodUpdateErr = 5000005 // 更新退款方式失败 IsInvoiceExist = 5100001 // 是否开票已存在 IsInvoiceNotExist = 5100002 // 是否开票不存在 IsInvoiceListErr = 5100003 // 获取是否开票列表失败 IsInvoiceSetErr = 5100004 // 设置是否开票失败 IsInvoiceUpdateErr = 5100005 // 更新是否开票失败 AccountIdExist = 5200001 // 账户已存在 AccountIdNotExist = 5200002 // 账户不存在 AccountIdListErr = 5200003 // 获取账户列表失败 AccountIdSetErr = 5200004 // 设置账户失败 AccountIdUpdateErr = 5200005 // 更新账户失败 SalesReturnStatusExist = 5300001 // 退货单状态已存在 SalesReturnStatusNotExist = 5300002 // 退货单状态不存在 SalesReturnStatusListErr = 5300003 // 获取退货单状态列表失败 SalesReturnStatusSetErr = 5300004 // 设置退货单状态失败 SalesReturnStatusUpdateErr = 5300005 // 更新退货单状态失败 RepositoryExist = 5400001 // 退货仓库已存在 RepositoryNotExist = 5400002 // 退货仓库不存在 RepositoryListErr = 5400003 // 获取退货仓库列表失败 RepositorySetErr = 5400004 // 设置退货仓库失败 RepositoryUpdateErr = 5400005 // 更新退货仓库失败 QuotationStatusExist = 5500001 // 报价单状态已存在 QuotationStatusNotExist = 5500002 // 报价单状态不存在 QuotationStatusListErr = 5500003 // 获取报价单状态列表失败 QuotationStatusSetErr = 5500004 // 设置报价单状态失败 QuotationStatusUpdateErr = 5500005 // 更新报价单状态失败 CurrencyExist = 5600001 // 币种已存在 CurrencyNotExist = 5600002 // 币种不存在 CurrencyListErr = 5600003 // 获取币种列表失败 CurrencySetErr = 5600004 // 设置币种失败 CurrencyUpdateErr = 5600005 // 更新币种失败 AssignErr = 5700001 // 分配失败 AssignWrongMemberId = 5700002 // 分配失败,分配人为空 AssignWrongId = 5700003 // 分配失败,分配对象为空 AssignWrongModelType = 5700004 // 分配失败,分配对象类型为空 ) service/client.go
@@ -1,79 +1,79 @@ package service import ( "aps_crm/model" "aps_crm/pkg/ecode" ) type ClientService struct{} func (ClientService) AddClient(client *model.Client) int { err := model.NewClientSearch(nil).Create(client) if err != nil { return ecode.ClientExist } return ecode.OK } // CheckClientExist check client exist func CheckClientExist(id int) int { _, err := model.NewClientSearch(nil).SetId(id).First() if err != nil { return ecode.ClientNotExist } return ecode.OK } func (ClientService) UpdateClient(client *model.Client) int { // check client exist errCode := CheckClientExist(client.Id) if errCode != ecode.OK { return errCode } // update client err := model.NewClientSearch(nil).SetId(client.Id).Update(client) if err != nil { return ecode.ClientUpdateErr } return ecode.OK } func (ClientService) GetClientList(page, pageSize int, keyword string) ([]*model.Client, int64, int) { // get contact list contacts, total, err := model.NewClientSearch(nil).SetKeyword(keyword).SetPage(page, pageSize).Find() if err != nil { return nil, 0, ecode.ClientListErr } return contacts, total, ecode.OK } func (ClientService) Assign(id, memberId int) int { // check client exist errCode := CheckClientExist(id) if errCode != ecode.OK { return errCode } // assign client err := model.NewClientSearch(nil).SetId(id).UpdateByMap(map[string]interface{}{ "member_id": memberId, }) if err != nil { return ecode.AssignErr } return ecode.OK } func (ClientService) DeleteClient (ids []int) int { // delete client err := model.NewClientSearch(nil).SetIds(ids).Delete() if err != nil { return ecode.ClientDeleteErr } return ecode.OK package service import ( "aps_crm/model" "aps_crm/pkg/ecode" ) type ClientService struct{} func (ClientService) AddClient(client *model.Client) int { err := model.NewClientSearch(nil).Create(client) if err != nil { return ecode.ClientExist } return ecode.OK } // CheckClientExist check client exist func CheckClientExist(id int) int { _, err := model.NewClientSearch(nil).SetId(id).First() if err != nil { return ecode.ClientNotExist } return ecode.OK } func (ClientService) UpdateClient(client *model.Client) int { // check client exist errCode := CheckClientExist(client.Id) if errCode != ecode.OK { return errCode } // update client err := model.NewClientSearch(nil).SetId(client.Id).Update(client) if err != nil { return ecode.ClientUpdateErr } return ecode.OK } func (ClientService) GetClientList(page, pageSize int, keyword string) ([]*model.Client, int64, int) { // get contact list contacts, total, err := model.NewClientSearch(nil).SetKeyword(keyword).SetPage(page, pageSize).Find() if err != nil { return nil, 0, ecode.ClientListErr } return contacts, total, ecode.OK } func (ClientService) Assign(id, memberId int) int { // check client exist errCode := CheckClientExist(id) if errCode != ecode.OK { return errCode } // assign client err := model.NewClientSearch(nil).SetId(id).UpdateByMap(map[string]interface{}{ "member_id": memberId, }) if err != nil { return ecode.AssignErr } return ecode.OK } func (ClientService) DeleteClient (ids []int) int { // delete client err := model.NewClientSearch(nil).SetIds(ids).Delete() if err != nil { return ecode.ClientDeleteErr } return ecode.OK } service/followRecord.go
@@ -1,65 +1,65 @@ package service import ( "aps_crm/model" "aps_crm/pkg/ecode" ) type FollowRecordService struct{} func (FollowRecordService) AddFollowRecord(followRecord *model.FollowRecord) int { err := model.NewFollowRecordSearch().Create(followRecord) if err != nil { return ecode.FollowRecordExist } return ecode.OK } func (FollowRecordService) DeleteFollowRecord(id int) int { // check followRecord exist _, err := model.NewFollowRecordSearch().SetId(id).First() if err != nil { return ecode.FollowRecordNotExist } // delete followRecord err = model.NewFollowRecordSearch().SetId(id).Delete() if err != nil { return ecode.FollowRecordDeleteErr } return ecode.OK } // check followRecord exist func checkFollowRecordExist(id int) int { _, err := model.NewFollowRecordSearch().SetId(id).First() if err != nil { return ecode.FollowRecordNotExist } return ecode.OK } func (FollowRecordService) UpdateFollowRecord(followRecord *model.FollowRecord) int { // check followRecord exist errCode := checkFollowRecordExist(followRecord.Id) if errCode != ecode.OK { return errCode } // update followRecord err := model.NewFollowRecordSearch().SetId(followRecord.Id).Update(followRecord) if err != nil { return ecode.FollowRecordUpdateErr } return ecode.OK } func (FollowRecordService) GetFollowRecordList(page, pageSize int, keyword string) ([]*model.FollowRecord, int64, int) { // get contact list contacts, total, err := model.NewFollowRecordSearch().SetKeyword(keyword).SetPage(page, pageSize).FindAll() if err != nil { return nil, 0, ecode.FollowRecordListErr } return contacts, total, ecode.OK package service import ( "aps_crm/model" "aps_crm/pkg/ecode" ) type FollowRecordService struct{} func (FollowRecordService) AddFollowRecord(followRecord *model.FollowRecord) int { err := model.NewFollowRecordSearch().Create(followRecord) if err != nil { return ecode.FollowRecordExist } return ecode.OK } func (FollowRecordService) DeleteFollowRecord(id int) int { // check followRecord exist _, err := model.NewFollowRecordSearch().SetId(id).First() if err != nil { return ecode.FollowRecordNotExist } // delete followRecord err = model.NewFollowRecordSearch().SetId(id).Delete() if err != nil { return ecode.FollowRecordDeleteErr } return ecode.OK } // check followRecord exist func checkFollowRecordExist(id int) int { _, err := model.NewFollowRecordSearch().SetId(id).First() if err != nil { return ecode.FollowRecordNotExist } return ecode.OK } func (FollowRecordService) UpdateFollowRecord(followRecord *model.FollowRecord) int { // check followRecord exist errCode := checkFollowRecordExist(followRecord.Id) if errCode != ecode.OK { return errCode } // update followRecord err := model.NewFollowRecordSearch().SetId(followRecord.Id).Update(followRecord) if err != nil { return ecode.FollowRecordUpdateErr } return ecode.OK } func (FollowRecordService) GetFollowRecordList(page, pageSize int, keyword string) ([]*model.FollowRecord, int64, int) { // get contact list contacts, total, err := model.NewFollowRecordSearch().SetKeyword(keyword).SetPage(page, pageSize).FindAll() if err != nil { return nil, 0, ecode.FollowRecordListErr } return contacts, total, ecode.OK }