Browse Source

获取orm的in查询替换?的方法

xingzai 2 years ago
parent
commit
ea8546fc4d
4 changed files with 59 additions and 6 deletions
  1. 31 2
      controllers/user.go
  2. 3 3
      models/chart_permission.go
  3. 15 0
      models/user.go
  4. 10 1
      utils/common.go

+ 31 - 2
controllers/user.go

@@ -35,16 +35,38 @@ func (this *UserController) ChooseDetail() {
 		return
 	}
 	resp := new(models.CygxXzsChooseSendResp)
+	var condition string
+	var pars []interface{}
 	mobile := user.Mobile
+	if mobile == "" {
+		br.Ret = 200
+		br.Success = true
+		br.Msg = "获取成功"
+		br.Data = resp
+	}
+	permissionId, err := models.GetCompanyPermissionId(user.CompanyId)
+	if err != nil {
+		br.Msg = "获取信息失败"
+		br.ErrMsg = "GetCompanyPermissionId,Err:" + err.Error()
+		return
+	}
+	if permissionId == "" {
+		br.Ret = 200
+		br.Success = true
+		br.Msg = "获取成功"
+		br.Data = resp
+	}
 	mapIndustrial := make(map[int][]*models.IndustrialManagementRep)
 	mapFllow := make(map[int]int)
 	ampCheckList := make(map[int][]int, 0)
+	permissionIdList := make([]string, 0)
 	fllowList, err := models.GetCygxIndustryFllowList(mobile)
 	if err != nil && err.Error() != utils.ErrNoRow() {
 		br.Msg = "获取信息失败"
 		br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
 		return
 	}
+
 	for _, v := range fllowList {
 		mapFllow[v.IndustrialManagementId] = v.IndustrialManagementId
 	}
@@ -62,7 +84,15 @@ func (this *UserController) ChooseDetail() {
 		}
 		mapIndustrial[v.ChartPermissionId] = append(mapIndustrial[v.ChartPermissionId], v)
 	}
-	permissionList, err := models.GetChartPermissionAll("")
+	slicepermissionId := strings.Split(permissionId, ",")
+	if len(slicepermissionId) > 0 {
+		for _, v := range slicepermissionId {
+			permissionIdList = append(permissionIdList, v)
+		}
+		condition += ` AND chart_permission_id IN (` + utils.GetOrmInReplace(len(slicepermissionId)) + ` )  `
+		pars = append(pars, permissionIdList)
+	}
+	permissionList, err := models.GetChartPermissionAll(condition, pars)
 	if err != nil {
 		br.Msg = "获取信息失败"
 		br.ErrMsg = "获取产业信息失败,Err:" + err.Error()
@@ -83,7 +113,6 @@ func (this *UserController) ChooseDetail() {
 		br.ErrMsg = "GetXzsChooseSendCountByMobile,Err:" + err.Error()
 		return
 	}
-
 	if count == 0 {
 		resp.IsObjective = 1
 		resp.IsSubjective = 1

+ 3 - 3
models/chart_permission.go

@@ -12,9 +12,9 @@ type ChartPermissionResp struct {
 	CheckList         []int
 }
 
-func GetChartPermissionAll(condition string) (items []*ChartPermissionResp, err error) {
+func GetChartPermissionAll(condition string, pars []interface{}) (items []*ChartPermissionResp, err error) {
 	o := orm.NewOrm()
-	sql := `SELECT * FROM chart_permission WHERE product_id=2 AND show_type=1  AND permission_type!=2  ` + condition + ` ORDER BY sort ASC `
-	_, err = o.Raw(sql).QueryRows(&items)
+	sql := `SELECT * FROM chart_permission WHERE product_id=2 AND is_report=1  AND permission_type!=2  ` + condition + ` ORDER BY sort ASC `
+	_, err = o.Raw(sql, pars).QueryRows(&items)
 	return
 }

+ 15 - 0
models/user.go

@@ -198,3 +198,18 @@ func GetCompanyPermission(companyId int) (permission string, err error) {
 	err = o.Raw(sql, companyId).QueryRow(&permission)
 	return
 }
+
+func GetCompanyPermissionId(companyId int) (permissionId string, err error) {
+	sql := ` SELECT GROUP_CONCAT(DISTINCT b.chart_permission_id  ORDER BY b.sort ASC SEPARATOR ',') AS permissionId
+			FROM company_report_permission AS a
+			INNER JOIN chart_permission AS b ON a.chart_permission_id=b.chart_permission_id
+			INNER JOIN company_product AS c ON a.company_id=c.company_id AND a.product_id=c.product_id
+			WHERE  a.company_id=?
+			AND c.is_suspend=0
+            AND b.cygx_auth=1
+			AND c.status IN('正式','试用','永续')
+			AND a.status IN('正式','试用','永续') `
+	o := orm.NewOrm()
+	err = o.Raw(sql, companyId).QueryRow(&permissionId)
+	return
+}

+ 10 - 1
utils/common.go

@@ -641,4 +641,13 @@ func GetLocalIP() (ip string, err error) {
 		return ipAddr.IP.String(), nil
 	}
 	return
-}
+}
+
+// GetOrmInReplace 获取orm的in查询替换?的方法
+func GetOrmInReplace(num int) string {
+	template := make([]string, num)
+	for i := 0; i < num; i++ {
+		template[i] = "?"
+	}
+	return strings.Join(template, ",")
+}