WH01243 2 gadi atpakaļ
vecāks
revīzija
af0ca66d14
1 mainītis faili ar 18 papildinājumiem un 81 dzēšanām
  1. 18 81
      ent/entity/customer.go

+ 18 - 81
ent/entity/customer.go

@@ -335,49 +335,18 @@ func (this *Customer) GetDeptCustomerList(dept_id, ent_id int, name, alloc, staf
 			}
 		}
 		searchValues = append(searchValues, (pageIndex-1)*pageSize, pageSize)
-		log.Println(`SELECT GROUP_CONCAT(c.name) as staff_names,a.industry,a.createtime,a.name as customer_name,a.id as customer_id,
-				(SELECT b.time  FROM entniche_project ep INNER JOIN entniche_project_track b ON ep.id = b.project_id WHERE ep.customer_id = a.id  ORDER BY b.time desc LIMIT 0,1 ) AS updatetime from 
-				(select a.name,a.id,a.createtime,a.area,a.industry FROM entniche_customer a
-				INNER JOIN (SELECT
-				id
-				FROM
-				(
-				SELECT
-					t1.id,
-					t1.NAME,
-					IF( find_in_set( pid, @pids ) > 0, @pids := concat( @pids, ",", id ), 0 ) AS ischild 
-					FROM( 
-						SELECT id, pid, NAME 
-						FROM 
-						entniche_department t 
-						ORDER BY pid, id ) t1,
-						(SELECT @pids := ?) t2 ) t3 
-					where ischild != 0 
-							or  id=?
-				) b on (a.dept_id=b.id)
-				WHERE `+searchSql+` order by updatetime desc limit 100000) as a
-				LEFT JOIN entniche_user_customer b on (a.id=b.customer_id)
-				LEFT JOIN entniche_user c on (b.user_id=c.id)
-				GROUP BY  a.id  `+allocSql+` order by updatetime desc,	a.createtime  desc  limit ?,?`, searchValues)
 		customersql = `SELECT GROUP_CONCAT(c.name) as staff_names,a.industry,a.createtime,a.name as customer_name,a.id as customer_id,
 				(SELECT b.time  FROM entniche_project ep INNER JOIN entniche_project_track b ON ep.id = b.project_id WHERE ep.customer_id = a.id  ORDER BY b.time desc LIMIT 0,1 ) AS updatetime from 
 				(select a.name,a.id,a.createtime,a.area,a.industry FROM entniche_customer a
-				INNER JOIN (SELECT
-				id
-				FROM
-				(
-				SELECT
-					t1.id,
-					t1.NAME,
-					IF( find_in_set( pid, @pids ) > 0, @pids := concat( @pids, ",", id ), 0 ) AS ischild 
-					FROM( 
-						SELECT id, pid, NAME 
-						FROM 
-						entniche_department t 
-						ORDER BY pid, id ) t1,
-						(SELECT @pids := ?) t2 ) t3 
-					where ischild != 0 
-							or  id=?
+				INNER JOIN (
+							SELECT DISTINCT
+								c.id
+							FROM
+								entniche_department_parent a
+								INNER JOIN entniche_department_user b ON (
+									b.dept_id = ? 
+								OR ( a.pid = ? AND a.id = b.dept_id ))
+								INNER JOIN entniche_user c ON ( c.ent_id = ? AND b.user_id = c.id ) 
 				) b on (a.dept_id=b.id)
 				WHERE ` + searchSql + ` order by updatetime desc limit 100000) as a
 				LEFT JOIN entniche_user_customer b on (a.id=b.customer_id)
@@ -387,51 +356,19 @@ func (this *Customer) GetDeptCustomerList(dept_id, ent_id int, name, alloc, staf
 		countValue = searchValues[:len(searchValues)-2]
 	} else {
 		searchValues = append(searchValues, (pageIndex-1)*pageSize, pageSize)
-		log.Println(`SELECT GROUP_CONCAT(c.name) as staff_names,a.industry,a.createtime,a.name as customer_name,a.id as customer_id,
-				(SELECT b.time  FROM  entniche_project_track b WHERE b.customer_id = a.id  ORDER BY b.time desc LIMIT 0,1 ) AS updatetime
-				 from
-				(select a.name,a.id,a.createtime,a.area,a.industry FROM entniche_customer a
-				INNER JOIN (SELECT
-				id
-				FROM
-				(
-				SELECT
-					t1.id,
-					t1.NAME,
-					IF( find_in_set( pid, @pids ) > 0, @pids := concat( @pids, ",", id ), 0 ) AS ischild 
-					FROM( 
-						SELECT id, pid, NAME 
-						FROM 
-						entniche_department t 
-						ORDER BY pid, id ) t1,
-						(SELECT @pids := ?) t2 ) t3 
-					where ischild != 0 
-							or  id=?
-				) b on (a.dept_id=b.id)
-				WHERE `+searchSql+` order by updatetime desc limit ?,?) as a
-				LEFT JOIN entniche_user_customer b on (a.id=b.customer_id)
-				LEFT JOIN entniche_user c on (b.user_id=c.id)
-				GROUP BY  a.id  order by updatetime desc,	a.createtime  desc`, searchValues)
 		customersql = `SELECT GROUP_CONCAT(c.name) as staff_names,a.industry,a.createtime,a.name as customer_name,a.id as customer_id,
 				(SELECT b.time  FROM  entniche_project_track b WHERE b.customer_id = a.id  ORDER BY b.time desc LIMIT 0,1 ) AS updatetime
 				 from
 				(select a.name,a.id,a.createtime,a.area,a.industry FROM entniche_customer a
-				INNER JOIN (SELECT
-				id
-				FROM
-				(
-				SELECT
-					t1.id,
-					t1.NAME,
-					IF( find_in_set( pid, @pids ) > 0, @pids := concat( @pids, ",", id ), 0 ) AS ischild 
-					FROM( 
-						SELECT id, pid, NAME 
-						FROM 
-						entniche_department t 
-						ORDER BY pid, id ) t1,
-						(SELECT @pids := ?) t2 ) t3 
-					where ischild != 0 
-							or  id=?
+				INNER JOIN (
+							SELECT DISTINCT
+								c.id
+							FROM
+								entniche_department_parent a
+								INNER JOIN entniche_department_user b ON (
+									b.dept_id = ? 
+								OR ( a.pid = ? AND a.id = b.dept_id ))
+								INNER JOIN entniche_user c ON ( c.ent_id = ? AND b.user_id = c.id ) 
 				) b on (a.dept_id=b.id)
 				WHERE ` + searchSql + ` order by updatetime desc limit ?,?) as a
 				LEFT JOIN entniche_user_customer b on (a.id=b.customer_id)