|
@@ -14,6 +14,8 @@ const (
|
|
pageSize = 100
|
|
pageSize = 100
|
|
|
|
|
|
sql_1 = `SELECT count(1) FROM information.transaction_info WHERE buyer_id = ?`
|
|
sql_1 = `SELECT count(1) FROM information.transaction_info WHERE buyer_id = ?`
|
|
|
|
+ sql_2 = `SELECT relate_id, is_handle, is_ignore, is_create FROM crm.connection_status WHERE position_id = ? AND itype = 2`
|
|
|
|
+ sql_3 = `SELECT b.company_id, b.company_name, b.contact_name, a.relate_id, a.relate_name FROM connection_introduce a INNER JOIN connection b ON b.position_id =%d ND a.connection_id = b.idAND b.state = 1AND a.type = 1AND b.type = 4AND a.relate_Id = %s`
|
|
)
|
|
)
|
|
|
|
|
|
type ProjectData struct {
|
|
type ProjectData struct {
|
|
@@ -23,24 +25,77 @@ type ProjectData struct {
|
|
}
|
|
}
|
|
|
|
|
|
type ProjectEntry struct {
|
|
type ProjectEntry struct {
|
|
- projectName string
|
|
|
|
|
|
+ projectName string
|
|
|
|
+ buyer string
|
|
|
|
+ buyerId string
|
|
|
|
+ sWinner string
|
|
|
|
+ area string
|
|
|
|
+ city string
|
|
|
|
+ district string
|
|
|
|
+ startTime int64
|
|
|
|
+ entTime int64
|
|
|
|
+ subClass string
|
|
|
|
+ propertyForm string
|
|
|
|
+ businessType string
|
|
}
|
|
}
|
|
|
|
|
|
-func GetProjectList(req *types.ProjectListReq) (resultList *[]map[string]interface{}, hasNextPage bool, total int) {
|
|
|
|
|
|
+func GetProjectList(req *types.ProjectListReq) (resultList []map[string]interface{}, hasNextPage bool, total int) {
|
|
|
|
+ preSales := preSalesStatus(req.PositionId)
|
|
|
|
+ isSqlPage := false
|
|
|
|
+ if req.SaleStatus == 0 {
|
|
|
|
+ isSqlPage = true // 是否sql分页
|
|
|
|
+ }
|
|
|
|
+ findSql := getQuerySql(req, isSqlPage)
|
|
|
|
+ rows, err := T.ClickhouseConn.Query(context.TODO(), findSql)
|
|
|
|
+ defer rows.Close()
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, false, 0
|
|
|
|
+ }
|
|
|
|
+ i := 0
|
|
|
|
+ info := make(map[string]interface{})
|
|
|
|
+ for rows.Next() {
|
|
|
|
+ rows.Scan(&info)
|
|
|
|
+ resultList = append(resultList, info)
|
|
|
|
+ i++
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ filterData(req, resultList, preSales, isSqlPage)
|
|
|
|
+ if !isSqlPage {
|
|
|
|
+ start := (req.PageNum - 1) * req.PageSize
|
|
|
|
+ end := start + req.PageSize
|
|
|
|
+ if req.PageNum > 1 {
|
|
|
|
+ resultList = resultList[start:end]
|
|
|
|
+ } else {
|
|
|
|
+ resultList = resultList[:pageSize]
|
|
|
|
+ }
|
|
|
|
+ total = len(resultList)
|
|
|
|
+ if total > pageSize {
|
|
|
|
+ hasNextPage = true
|
|
|
|
+ } else {
|
|
|
|
+ hasNextPage = false
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
|
|
- getSql(req)
|
|
|
|
|
|
+ moreInfo(req, resultList)
|
|
|
|
|
|
- //get(req, resultList)
|
|
|
|
- //
|
|
|
|
- //total = len(resultList)
|
|
|
|
- //if total > pageSize {
|
|
|
|
- // resultList = resultList[:pageSize]
|
|
|
|
- // hasNextPage = true
|
|
|
|
- //}
|
|
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
|
|
-func getSql(req *types.ProjectListReq) (countSql, findSql string) {
|
|
|
|
|
|
+// @Author jianghan
|
|
|
|
+// @Description 销售机会线索状态
|
|
|
|
+// @Date 2024/4/18
|
|
|
|
+func preSalesStatus(posid int64) (m1 map[string]interface{}) {
|
|
|
|
+ m1 = make(map[string]interface{})
|
|
|
|
+ info := T.CrmMysql.SelectBySql(sql_2, posid)
|
|
|
|
+ if info != nil && len(*info) > 0 {
|
|
|
|
+ for _, m := range *info {
|
|
|
|
+ m1[common.ObjToString(m["relate_id"])] = m
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return m1
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+func getQuerySql(req *types.ProjectListReq, isPage bool) (findSql string) {
|
|
querys := []string{}
|
|
querys := []string{}
|
|
// 商机类型
|
|
// 商机类型
|
|
if req.BusinessType != "" {
|
|
if req.BusinessType != "" {
|
|
@@ -131,28 +186,51 @@ func getSql(req *types.ProjectListReq) (countSql, findSql string) {
|
|
querys = append(querys, fmt.Sprintf(" a.property_form in (%s) ", strings.Join(arr, ",")))
|
|
querys = append(querys, fmt.Sprintf(" a.property_form in (%s) ", strings.Join(arr, ",")))
|
|
}
|
|
}
|
|
|
|
|
|
- findSql = "select a.project_id,a.project_name,a.project_budget,a.project_money,a.business_type,a.buyer"
|
|
|
|
|
|
+ findSql = "select a.project_id,a.project_name,a.project_budget,a.project_money,a.business_type,a.buyer from"
|
|
|
|
+ findSql = fmt.Sprintf("%s from %s a where %s ", findSql, "information.transaction_info", strings.Join(querys, " and "))
|
|
|
|
+ if isPage {
|
|
|
|
+ findSql += fmt.Sprintf(" limit %d,%d", (req.PageNum-1)*pageSize, pageSize)
|
|
|
|
+ }
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
|
|
// @Author jianghan
|
|
// @Author jianghan
|
|
-// @Description 处理状态/我的人脉
|
|
|
|
-// @Date 2024/4/17
|
|
|
|
-func get(req *types.ProjectListReq, list []map[string]interface{}) (result []map[string]interface{}) {
|
|
|
|
- field := "is_handle,is_ignore,is_create"
|
|
|
|
- for _, m := range list {
|
|
|
|
- query := map[string]interface{}{
|
|
|
|
- "position_id": req.PositionId,
|
|
|
|
- "relate_id": common.ObjToString(m["project_id"]),
|
|
|
|
- "itype": 2,
|
|
|
|
- }
|
|
|
|
- info := T.CrmMysql.FindOne("connection_status", query, field, "")
|
|
|
|
- if info != nil && len(*info) > 0 {
|
|
|
|
- m["is_handle"] = (*info)["is_handle"]
|
|
|
|
- m["is_ignore"] = (*info)["is_ignore"]
|
|
|
|
- m["is_create"] = (*info)["is_create"]
|
|
|
|
|
|
+// @Description 过滤数据/补充销售机会状态信息,返回分页结果数据
|
|
|
|
+// @Date 2024/4/18
|
|
|
|
+func filterData(req *types.ProjectListReq, resultList []map[string]interface{}, preSales map[string]interface{}, isSqlPage bool) {
|
|
|
|
+ var newList []map[string]interface{}
|
|
|
|
+ f := ""
|
|
|
|
+ v := 0
|
|
|
|
+ if req.SaleStatus == 1 {
|
|
|
|
+ f = "is_handle"
|
|
|
|
+ v = 0
|
|
|
|
+ } else if req.SaleStatus == 2 {
|
|
|
|
+ f = "is_ignore"
|
|
|
|
+ v = 0
|
|
|
|
+ } else if req.SaleStatus == 3 {
|
|
|
|
+ f = "is_create"
|
|
|
|
+ v = 1
|
|
|
|
+ }
|
|
|
|
+ for _, m := range resultList {
|
|
|
|
+ if m1, ok := preSales[common.ObjToString(m["project_id"])].(map[string]interface{}); ok {
|
|
|
|
+ m["is_handle"] = m1["is_handle"]
|
|
|
|
+ m["is_ignore"] = m1["is_ignore"]
|
|
|
|
+ m["is_create"] = m1["is_create"]
|
|
|
|
+ if !isSqlPage && m1[f] == v {
|
|
|
|
+ newList = append(newList, m)
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
+ }
|
|
|
|
+ if len(newList) > 0 {
|
|
|
|
+ resultList = newList
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
|
|
|
|
+// @Author jianghan
|
|
|
|
+// @Description 补充人脉 等信息
|
|
|
|
+// @Date 2024/4/17
|
|
|
|
+func moreInfo(req *types.ProjectListReq, list []map[string]interface{}) (result []map[string]interface{}) {
|
|
|
|
+ for _, m := range list {
|
|
// 人脉、人脉所在单位项目 conn_type: 1/人脉可转介绍项目 conn_type: 2
|
|
// 人脉、人脉所在单位项目 conn_type: 1/人脉可转介绍项目 conn_type: 2
|
|
field1 := ""
|
|
field1 := ""
|
|
query1 := map[string]interface{}{
|
|
query1 := map[string]interface{}{
|
|
@@ -187,6 +265,11 @@ func get(req *types.ProjectListReq, list []map[string]interface{}) (result []map
|
|
m["high_success"] = false
|
|
m["high_success"] = false
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ // 人脉路径
|
|
|
|
+ // 有我的人脉标签时不需要查询人脉路径信息
|
|
|
|
+ if m["my_conn"] == false {
|
|
|
|
+ //ConnectionsHandle([]string{common.ObjToString(m["buyer_id"])}, req.PositionId, false)
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
return list
|
|
return list
|