Преглед на файлове

新增海外客户列表

hongze преди 1 година
родител
ревизия
ff15760919
променени са 2 файла, в които са добавени 240 реда и са изтрити 0 реда
  1. 102 0
      controllers/overseas_custom/custom.go
  2. 138 0
      models/overseas_custom/custom.go

+ 102 - 0
controllers/overseas_custom/custom.go

@@ -2,6 +2,7 @@ package overseas_custom
 
 import (
 	"fmt"
+	"github.com/rdlucklib/rdluck_tools/paging"
 	"hongze/hz_crm_api/models"
 	"hongze/hz_crm_api/models/overseas_custom"
 	"hongze/hz_crm_api/utils"
@@ -74,3 +75,104 @@ func (this *OverseasCustomController) CustomStatistics() {
 	br.Msg = "获取成功"
 	br.Data = list
 }
+
+// @Title 获取海外客户列表数据
+// @Description 获取海外客户列表数据
+// @Param   PageSize   query   int  true       "每页数据条数"
+// @Param   CurrentIndex   query   int  true       "当前页页码,从1开始"
+// @Param   Keywords	query	string	false	"关键词:客户名称/社会信用码/联系人手机号/邮箱"
+// @Param   CompanyStatus	query	string	false	"状态:全部,正式,试用,关闭"
+// @Param   SellerId	query	int		false	"销售ID"
+// @Param   CustomType	query	int		false	"1:海外客户,2:隐藏客户"
+// @Param   SortField	query	string		false	"排序字段:ViewTotal,RoadShowTotal,CreateTime"
+// @Param   SortDesc	query	int		false	"1:降序,默认,2:升序"
+// @Success 200 {object} models.EnglishCompanyPageListResp
+// @router /custom/list [get]
+func (this *OverseasCustomController) CustomList() {
+	br := new(models.BaseResponse).Init()
+	br.IsSendEmail = false
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+
+	pageSize, _ := this.GetInt("PageSize")
+	currentIndex, _ := this.GetInt("CurrentIndex")
+	keywords := this.GetString("Keywords", "")
+	sellerId, _ := this.GetInt("SellerId", 0)
+	companyStatus := this.GetString("CompanyStatus")
+	sortField := this.GetString("SortField")
+	sortDesc, _ := this.GetInt("SortDesc")
+
+	var startSize int
+	if pageSize <= 0 {
+		pageSize = utils.PageSize20
+	}
+	if currentIndex <= 0 {
+		currentIndex = 1
+	}
+	startSize = paging.StartIndex(currentIndex, pageSize)
+
+	obj := new(overseas_custom.Custom)
+
+	var condition string
+	var pars []interface{}
+	if keywords != "" {
+		k := "%" + keywords + "%"
+		enCompanyIds, e := models.GetEnCompanyIdsByKeyword(k)
+		if e != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "关键词获取英文客户IDs失败, Err: " + e.Error()
+			return
+		}
+
+		//获取中文客户
+
+		companyIds, err := obj.GetCompanyIdsByKeyword(k)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "关键词获取客户IDs失败, Err: " + err.Error()
+			return
+		}
+
+		companyIds = append(companyIds, enCompanyIds...)
+
+		condition += fmt.Sprintf(` AND c.company_id IN (%s) `, utils.GetOrmInReplace(len(companyIds)))
+		pars = append(pars, companyIds)
+	}
+	if sellerId > 0 {
+		condition = ` AND m.seller_id=? `
+		pars = append(pars, sellerId)
+	}
+
+	total, err := obj.GetCustomListCount(condition, pars, companyStatus)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取数据总数失败, Err: " + err.Error()
+		return
+	}
+
+	list, err := obj.GetCustomList(condition, pars, companyStatus, sortField, startSize, pageSize, sortDesc)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取数据失败, Err: " + err.Error()
+		return
+	}
+	page := paging.GetPaging(currentIndex, pageSize, total)
+
+	resp := new(overseas_custom.CustomListResp)
+	resp.Paging = page
+	resp.List = list
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}

+ 138 - 0
models/overseas_custom/custom.go

@@ -3,6 +3,7 @@ package overseas_custom
 import (
 	"fmt"
 	"github.com/beego/beego/v2/client/orm"
+	"github.com/rdlucklib/rdluck_tools/paging"
 	"hongze/hz_crm_api/utils"
 )
 
@@ -79,3 +80,140 @@ WHERE 1=1 AND (a.email LIKE ? OR a.mobile LIKE ? OR b.company_name LIKE ? OR b.c
 	_, err = o.Raw(sql, keyword, keyword, keyword, keyword).QueryRows(&companyIds)
 	return
 }
+
+func (obj *Custom) GetCustomListCount(condition string, pars []interface{}, companyStatus string) (count int, err error) {
+	o := orm.NewOrm()
+	sql := ``
+	var databaseName string
+	if utils.RunMode == "debug" {
+		databaseName = "test_v2_hongze_rddp"
+	} else {
+		databaseName = "hongze_rddp"
+	}
+
+	sql = `SELECT COUNT(1) AS count FROM (
+				SELECT a.company_id,a.company_name,a.nation,b.seller_id,b.seller_name,
+				CASE b.status 
+				WHEN '正式' THEN '正式'
+				WHEN '永续' THEN '正式'
+				WHEN '试用' THEN '试用'
+				ELSE '关闭' END AS company_status,
+				b.view_total,b.road_show_total,a.created_time AS create_time,b.last_view_time
+				FROM company AS a
+				INNER JOIN company_product AS b ON a.company_id=b.company_id
+				INNER JOIN overseas_custom_seller AS c ON b.seller_id=c.seller_id
+				WHERE b.is_overseas = 0`
+	if companyStatus == "正式" {
+		sql += ` AND b.status IN('正式','永续') `
+	} else if companyStatus == "试用" {
+		sql += ` AND b.status='试用' `
+	} else if companyStatus == "关闭" {
+		sql += ` AND b.status IN('冻结','流失','关闭') `
+	}
+	sql += `
+				UNION ALL
+				SELECT t.company_id+10000000,t.company_name,t.nation,t.seller_id,t.seller_name,
+				CASE t.enabled
+				WHEN 0 THEN '关闭'
+				ELSE '试用' END AS company_status,
+				t.view_total,0 AS road_show_total,t.create_time,'' AS last_view_time
+				FROM %s.english_company AS t
+				INNER JOIN overseas_custom_seller AS n ON t.seller_id=n.seller_id
+             WHERE 1=1 `
+	if companyStatus == "试用" {
+		sql += ` AND t.enabled IN(1,2)`
+	} else if companyStatus == "禁用" {
+		sql += ` AND t.enabled = 0 `
+	}
+
+	sql += `		)AS m
+		WHERE 1=1 `
+
+	if condition != "" {
+		sql += condition
+	}
+	sql = fmt.Sprintf(sql, databaseName)
+	err = o.Raw(sql, pars).QueryRow(&count)
+	return
+}
+
+func (obj *Custom) GetCustomList(condition string, pars []interface{}, companyStatus, sortField string, startSize, pageSize, sortDesc int) (list []*Custom, err error) {
+	o := orm.NewOrm()
+	sql := ``
+	var databaseName string
+	if utils.RunMode == "debug" {
+		databaseName = "test_v2_hongze_rddp"
+	} else {
+		databaseName = "hongze_rddp"
+	}
+
+	sql = `SELECT * FROM (
+				SELECT a.company_id,a.company_name,a.nation,b.seller_id,b.seller_name,
+				CASE b.status 
+				WHEN '正式' THEN '正式'
+				WHEN '永续' THEN '正式'
+				WHEN '试用' THEN '试用'
+				ELSE '关闭' END AS company_status,
+				b.view_total,b.road_show_total,a.created_time AS create_time,b.last_view_time
+				FROM company AS a
+				INNER JOIN company_product AS b ON a.company_id=b.company_id
+				INNER JOIN overseas_custom_seller AS c ON b.seller_id=c.seller_id
+				WHERE b.is_overseas = 0`
+	if companyStatus == "正式" {
+		sql += ` AND b.status IN('正式','永续') `
+	} else if companyStatus == "试用" {
+		sql += ` AND b.status='试用' `
+	} else if companyStatus == "关闭" {
+		sql += ` AND b.status IN('冻结','流失','关闭') `
+	}
+	sql += `
+				UNION ALL
+				SELECT t.company_id+10000000,t.company_name,t.nation,t.seller_id,t.seller_name,
+				CASE t.enabled
+				WHEN 0 THEN '关闭'
+				ELSE '试用' END AS company_status,
+				t.view_total,0 AS road_show_total,t.create_time,'' AS last_view_time
+				FROM %s.english_company AS t
+				INNER JOIN overseas_custom_seller AS n ON t.seller_id=n.seller_id
+             WHERE 1=1 `
+	if companyStatus == "试用" {
+		sql += ` AND t.enabled IN(1,2)`
+	} else if companyStatus == "禁用" {
+		sql += ` AND t.enabled = 0 `
+	}
+
+	sql += `		)AS m WHERE 1=1 `
+
+	if condition != "" {
+		sql += condition
+	}
+
+	var sortFieldStr, sortDescStr string
+	if sortField != "" {
+		if sortField == "ViewTotal" {
+			sortFieldStr = "view_total"
+		} else if sortField == "RoadShowTotal" {
+			sortFieldStr = "road_show_total"
+		} else if sortField == "CreateTime" {
+			sortFieldStr = "create_time"
+		}
+	}
+
+	if sortDesc == 1 {
+		sortDescStr = "DESC"
+	} else {
+		sortDescStr = "ASC"
+	}
+
+	sql += ` ORDER BY %s `
+	sql = fmt.Sprintf(sql, sortFieldStr, sortDescStr)
+	sql += ` LIMIT ?,? `
+	sql = fmt.Sprintf(sql, databaseName)
+	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&list)
+	return
+}
+
+type CustomListResp struct {
+	Paging *paging.PagingItem
+	List   []*Custom
+}