Просмотр исходного кода

Merge pull request #415 from dalefengs/fix_group

fix: 渠道多分组,优化分组 like 查询
Calcium-Ion 1 год назад
Родитель
Сommit
43076c2f33
2 измененных файлов с 11 добавлено и 4 удалено
  1. 9 3
      model/channel.go
  2. 2 1
      web/src/components/ChannelsTable.js

+ 9 - 3
model/channel.go

@@ -106,9 +106,15 @@ func SearchChannels(keyword string, group string, model string) ([]*Channel, err
 	// 构造WHERE子句
 	var whereClause string
 	var args []interface{}
-	if group != "" {
-		whereClause = "(id = ? OR name LIKE ? OR " + keyCol + " = ?) AND " + groupCol + " = ? AND " + modelsCol + " LIKE ?"
-		args = append(args, common.String2Int(keyword), "%"+keyword+"%", keyword, group, "%"+model+"%")
+	if group != "" && group != "null" {
+		var groupCondition string
+		if common.UsingPostgreSQL {
+			groupCondition = `(',' || ` + groupCol + ` || ',') LIKE ?`
+		} else {
+			groupCondition = `CONCAT(',', ` + groupCol + `, ',') LIKE ?`
+		}
+		whereClause = "(id = ? OR name LIKE ? OR " + keyCol + " = ?) AND " + modelsCol + ` LIKE ? AND ` + groupCondition
+		args = append(args, common.String2Int(keyword), "%"+keyword+"%", keyword, "%"+model+"%", "%,"+group+",%")
 	} else {
 		whereClause = "(id = ? OR name LIKE ? OR " + keyCol + " = ?) AND " + modelsCol + " LIKE ?"
 		args = append(args, common.String2Int(keyword), "%"+keyword+"%", keyword, "%"+model+"%")

+ 2 - 1
web/src/components/ChannelsTable.js

@@ -745,7 +745,8 @@ const ChannelsTable = () => {
             <Form.Select
               field='group'
               label='分组'
-              optionList={groupOptions}
+              optionList={[{ label: '选择分组', value: null}, ...groupOptions]}
+              initValue={null}
               onChange={(v) => {
                 setSearchGroup(v);
                 searchChannels(searchKeyword, v, searchModel);