package service import ( "crm/common" "crm/global" "crm/models" "crm/response" "strconv" "time" ) type CustomerService struct { } // 创建客户 func (c *CustomerService) Create(param *models.CustomerCreateParam) int { customer := models.Customer{ Name: param.Name, Source: param.Source, Phone: param.Phone, Email: param.Email, Industry: param.Industry, Level: param.Level, Remarks: param.Remarks, Region: param.Region, Address: param.Address, Status: 1, Creator: param.Creator, Created: time.Now().Unix(), } if err := global.Db.Create(&customer).Error; err != nil { return response.ErrCodeFailed } return response.ErrCodeSuccess } // 更新客户 func (c *CustomerService) Update(param *models.CustomerUpdateParam) int { customer := models.Customer{ Id: param.Id, Name: param.Name, Source: param.Source, Phone: param.Phone, Email: param.Email, Industry: param.Industry, Level: param.Level, Remarks: param.Remarks, Region: param.Region, Address: param.Address, Status: param.Status, Updated: time.Now().Unix(), } db := global.Db.Model(&customer).Select("*").Omit("id", "creator", "created") if err := db.Updates(&customer).Error; err != nil { return response.ErrCodeFailed } return response.ErrCodeSuccess } // 删除客户 func (c *CustomerService) Delete(param *models.CustomerDeleteParam) int { if err := global.Db.Delete(&models.Customer{}, param.Ids).Error; err != nil { return response.ErrCodeFailed } return response.ErrCodeSuccess } // 查询客户列表 func (c *CustomerService) QueryList(param *models.CustomerQueryParam) ([]*models.CustomerList, int64, int) { customer := models.Customer{ Name: param.Name, Creator: param.Creator, } customerList := make([]*models.CustomerList, 0) rows, err := restPage(param.Page, CUSTOMER, customer, &customerList, &[]*models.CustomerList{}) if err != nil { return nil, 0, response.ErrCodeFailed } return customerList, rows, response.ErrCodeSuccess } // 查询客户信息 func (c *CustomerService) QueryInfo(param *models.CustomerQueryParam) (*models.CustomerInfo, int) { customer := models.Customer{ Id: param.Id, } customerInfo := models.CustomerInfo{} err := global.Db.Table(CUSTOMER).Where(&customer).First(&customerInfo).Error if err != nil { return nil, response.ErrCodeFailed } return &customerInfo, response.ErrCodeSuccess } // 查询客户选项 func (c *CustomerService) QueryOption(uid int64) ([]*models.CustomerOption, int) { customer := models.Customer{ Creator: uid, } option := make([]*models.CustomerOption, 0) err := global.Db.Table(CUSTOMER).Where(&customer).Find(&option).Error if err != nil { return nil, response.ErrCodeFailed } return option, response.ErrCodeSuccess } // 导出Excel文件 func (c *CustomerService) Export(uid int64) (string, int) { customers := make([]models.Customer, 0) err := global.Db.Where("creator = ?", uid).Find(&customers).Error if err != nil { return StringNull, response.ErrCodeFailed } excelRows := make([]models.CustomerExcelRow, 0) var row models.CustomerExcelRow for _, c := range customers { row.Name = c.Name row.Source = c.Source row.Phone = c.Phone row.Email = c.Email row.Industry = c.Industry row.Level = c.Level row.Remarks = c.Remarks row.Region = c.Region row.Address = c.Address if c.Status == 1 { row.Status = "已签约" } if c.Status == 2 { row.Status = "未签约" } row.Created = time.Unix(c.Created, 0).Format("2006-01-02") if c.Updated != 0 { row.Updated = time.Unix(c.Updated, 0).Format("2006-01-02") } excelRows = append(excelRows, row) } sheet := "客户信息" columns := []string{"名称", "客户来源", "手机号", "邮箱", "客户行业", "客户级别", "备注", "地区", "详细地址", "成交状态", "创建时间", "更新时间"} fileName := "customer_" + strconv.FormatInt(uid, 10) file, err := common.GenExcelFile(sheet, columns, excelRows, fileName) if err != nil { return StringNull, response.ErrCodeFailed } return file, response.ErrCodeSuccess }