wangfei 6 years ago
parent
commit
784649c0b7
6 changed files with 191 additions and 0 deletions
  1. 19
    0
      controllers/cases/case.go
  2. 27
    0
      controllers/cases/tag.go
  3. 21
    0
      models/cases/cases.go
  4. 60
    0
      models/cases/tag.go
  5. 20
    0
      service/cases/cases.go
  6. 44
    0
      service/cases/tag.go

+ 19
- 0
controllers/cases/case.go View File

1
+package cases
2
+
3
+import (
4
+	"spaceofcheng/services/controllers"
5
+	"spaceofcheng/services/service/cases"
6
+)
7
+
8
+// CaseController 信息
9
+type CaseController struct {
10
+	dao *cases.CaseServ
11
+	controllers.BaseController
12
+}
13
+
14
+// Constructor 初始化 Controller
15
+// @Title Constructor
16
+// @Description 初始化 Controller, 系统自动调用
17
+func (c *CaseController) Constructor() {
18
+	c.dao = cases.NewCaseServ(c.Context)
19
+}

+ 27
- 0
controllers/cases/tag.go View File

1
+package cases
2
+
3
+import "spaceofcheng/services/models/model"
4
+
5
+// GetTagList 获取标签列表
6
+func (c *CaseController) GetTagList() {
7
+	cases := c.Context.Get("cases").([]model.SysUserCase)
8
+	caseIDs := c.GetCaseIDs(cases)
9
+	page, _ := c.GetInt("page")
10
+	pageSize, _ := c.GetInt("pagesize")
11
+
12
+	list, err := c.dao.GetTagList(caseIDs, page, pageSize)
13
+	if err != nil {
14
+		c.ResponseError(err)
15
+	}
16
+	c.ResponseJSON(list)
17
+}
18
+
19
+// GetTagByID 根据ID获取标签信息
20
+func (c *CaseController) GetTagByID() {
21
+	tagid := c.GetString(":tagid")
22
+	info, err := c.dao.GetTagByID(tagid)
23
+	if err != nil {
24
+		c.ResponseError(err)
25
+	}
26
+	c.ResponseJSON(list)
27
+}

+ 21
- 0
models/cases/cases.go View File

1
+package cases
2
+
3
+import (
4
+	"spaceofcheng/services/utils"
5
+
6
+	"github.com/go-xorm/xorm"
7
+)
8
+
9
+// CaseDAO 当前数据库操作对象
10
+type CaseDAO struct {
11
+	ctx *utils.Context
12
+	db  *xorm.Session
13
+}
14
+
15
+// NewCaseDAO New Inst
16
+func NewCaseDAO(ctx *utils.Context) *CaseDAO {
17
+	return &CaseDAO{
18
+		ctx: ctx,
19
+		db:  ctx.DB,
20
+	}
21
+}

+ 60
- 0
models/cases/tag.go View File

1
+package cases
2
+
3
+import (
4
+	"jcjy/demo/models"
5
+	"spaceofcheng/services/models/model"
6
+	"strconv"
7
+	"strings"
8
+)
9
+
10
+// GetTagCount 获取标签总数
11
+func (m *CaseDAO) GetTagCount(caseids string) (int, error) {
12
+	var tags []model.SysTag
13
+	err := m.db.Where("status=?", models.STATUS_NORMAL).And("case_id in ('" + strings.Replace(caseids, ",", "','", -1) + "')").Find(&tags)
14
+	return len(tags), err
15
+}
16
+
17
+// TagInfo 标签
18
+type TagInfo struct {
19
+	model.TaCmsCase `xorm:"extends"`
20
+	CaseNames       string
21
+}
22
+
23
+// GetTagList 根据案场获取标签
24
+func (m *CaseDAO) GetTagList(caseids string, page int, pageSize int) ([]TagInfo, error) {
25
+	var tags []TagInfo
26
+	sql := `select tag.*,c.case_names from sys_tag tag inner join (
27
+	select b.tag_id,GROUP_CONCAT(a.case_name) case_names from sys_case a inner join sys_tag_case b on a.case_id=b.case_id and a.status= ` + strconv.Itoa(models.STATUS_NORMAL) + `
28
+	where b.case_id in ('` + strings.Replace(caseids, ",", "','", -1) + `') and b.tag_id not in (select tag_id from sys_tag_case where case_id not in ('` +
29
+		strings.Replace(caseids, ",", "','", -1) + `'))
30
+	group by b.tag_id ) c on tag.tag_id = c.tag_id`
31
+
32
+	err := m.db.Sql(sql).Find(tags)
33
+	return tags, err
34
+}
35
+
36
+// Tag 标签
37
+type Tag struct {
38
+	model.TaCmsCase `xorm:"extends"`
39
+	TagCases        []model.SysTagCase
40
+}
41
+
42
+// GetTagByID 根据ID获取标签
43
+func (m *CaseDAO) GetTagByID(tagid string) (*Tag, error) {
44
+	var tags []Tag
45
+	err := m.db.Table("sys_tag").Where("tag_id=?", tagid).Find(&tags)
46
+	if err != nil {
47
+		return nil, err
48
+	}
49
+	if len(tags) > 0 {
50
+		return &tags[0], err
51
+	}
52
+	return nil, nil
53
+}
54
+
55
+// GetTagCaseByTagID 根据标签ID获取标签对应案场
56
+func (m *CaseDAO) GetTagCaseByTagID(tagid string) ([]model.SysTagCase, error) {
57
+	var tagcase []model.SysTagCase
58
+	err := m.db.Where("tag_id=?", tagid).Find(&tagcase)
59
+	return tagcase, err
60
+}

+ 20
- 0
service/cases/cases.go View File

1
+package cases
2
+
3
+import (
4
+	"spaceofcheng/services/models/cases"
5
+	"spaceofcheng/services/utils"
6
+)
7
+
8
+// CaseServ 系统处理
9
+type CaseServ struct {
10
+	ctx *utils.Context
11
+	dao *cases.CaseDAO
12
+}
13
+
14
+// NewCaseServ 初始化
15
+func NewCaseServ(ctx *utils.Context) *CaseServ {
16
+	return &CaseServ{
17
+		ctx: ctx,
18
+		dao: cases.NewCaseDAO(ctx),
19
+	}
20
+}

+ 44
- 0
service/cases/tag.go View File

1
+package cases
2
+
3
+import (
4
+	"spaceofcheng/services/models/cases"
5
+	"spaceofcheng/services/service"
6
+)
7
+
8
+// GetTagList 获取tag列表
9
+func (s *CaseServ) GetTagList(caseids string, page, pageSize int) (map[string]interface{}, error) {
10
+	if pageSize == 0 {
11
+		pageSize = service.PAGENUM
12
+	}
13
+	tags, err := s.dao.GetTagList(caseids, page, pageSize)
14
+	if err != nil {
15
+		return nil, err
16
+	}
17
+	total, err := s.dao.GetTagCount(caseids)
18
+	if err != nil {
19
+		return nil, err
20
+	}
21
+
22
+	return map[string]interface{}{
23
+		"list":     tags,
24
+		"pagesize": pageSize,
25
+		"pagenum":  total,
26
+		"page":     page,
27
+	}, err
28
+}
29
+
30
+// GetTagByID 根据ID获取标签
31
+func (s *CaseServ) GetTagByID(tagid string) (*cases.Tag, error) {
32
+	tag, err := s.dao.GetTagByID(tagid)
33
+	if err != nil {
34
+		return nil, err
35
+	}
36
+	if tag != nil {
37
+		tagcases, err := s.dao.GetTagCaseByTagID(tagid)
38
+		if err != nil {
39
+			return nil, err
40
+		}
41
+		tag.TagCases = tagcases
42
+	}
43
+	return tag, err
44
+}