浏览代码

Merge branch 'dev' of http://git.ycjcjy.com/SpaceOfCheng/services into dev

zjxpcyc 6 年前
父节点
当前提交
aacb832386

+ 3
- 1
controllers/cases/caseuser.go 查看文件

@@ -5,8 +5,10 @@ import "spaceofcheng/services/models/model"
5 5
 // GetCaseUserByCase 根据案场获取用户信息
6 6
 func (c *CaseController) GetCaseUserByCase() {
7 7
 	caseid := c.GetString("caseid")
8
+	page, _ := c.GetInt("page")
9
+	pageSize, _ := c.GetInt("pagesize")
8 10
 
9
-	list, err := c.dao.GetCaseUserByCase(caseid)
11
+	list, err := c.dao.GetCaseUserByCase(caseid, page, pageSize)
10 12
 
11 13
 	if err != nil {
12 14
 		c.ResponseError(err)

+ 66
- 0
controllers/channel/channel.go 查看文件

@@ -0,0 +1,66 @@
1
+package channel
2
+
3
+import (
4
+	"spaceofcheng/services/controllers"
5
+	"spaceofcheng/services/models/model"
6
+	"spaceofcheng/services/service/channel"
7
+)
8
+
9
+// CaseController 信息
10
+type ChannelController struct {
11
+	dao *channel.ChannelServ
12
+	controllers.BaseController
13
+}
14
+
15
+// Constructor 初始化 Controller
16
+// @Title Constructor
17
+// @Description 初始化 Controller, 系统自动调用
18
+func (c *ChannelController) Constructor() {
19
+	c.dao = channel.NewChannelServ(c.Context)
20
+}
21
+
22
+// GetChannelList获取渠道列表
23
+func (c *ChannelController) GetChannelList() {
24
+	cases := c.Context.Get("cases").([]model.SysUserCase)
25
+	caseIDs := c.GetCaseIDs(cases)
26
+	page, _ := c.GetInt("page")
27
+	pageSize, _ := c.GetInt("pagesize")
28
+	list, err := c.dao.GetChannelList(caseIDs, page, pageSize)
29
+	if err != nil {
30
+		c.ResponseError(err)
31
+	}
32
+	c.ResponseJSON(list)
33
+}
34
+
35
+// GetChannelById根据id获取渠道
36
+func (c *ChannelController) GetChannelById() {
37
+	caseid := c.GetString(":channelId")
38
+	channel, err := c.dao.GetChannelById(caseid)
39
+	if err != nil {
40
+		c.ResponseError(err)
41
+	}
42
+	c.ResponseJSON(channel)
43
+}
44
+
45
+// SaveChannel 保存渠道信息
46
+func (c *ChannelController) SaveChannel() {
47
+	channel := model.TaChannel{}
48
+	if err := c.ParseForm(&channel); err != nil {
49
+		c.ResponseError(err)
50
+	}
51
+	newChannel, err := c.dao.SaveChannel(channel)
52
+	if err != nil {
53
+		c.ResponseError(err)
54
+	}
55
+	c.ResponseJSON(newChannel)
56
+}
57
+
58
+// DeleteChannel 删除渠道
59
+func (c *ChannelController) DeleteChannel() {
60
+	channelId := c.GetString(":channelId")
61
+	err := c.dao.DeleteChannel(channelId)
62
+	if err != nil {
63
+		c.ResponseError(err)
64
+	}
65
+	c.ResponseJSON("删除成功")
66
+}

+ 6
- 3
controllers/customer/customer.go 查看文件

@@ -27,8 +27,9 @@ func (c *CustomerController) Constructor() {
27 27
 func (c *CustomerController) CustWXList() {
28 28
 	phone := c.GetString("phone")
29 29
 	page, _ := c.GetInt("page")
30
+	pageSize, _ := c.GetInt("pagesize")
30 31
 
31
-	custList, total, err := c.serv.GetCustWithWXList(phone, page)
32
+	custList, total, err := c.serv.GetCustWithWXList(phone, page, pageSize)
32 33
 	if err != nil {
33 34
 		utils.LogError("获取客户列表失败: " + err.Error())
34 35
 		c.ResponseError(
@@ -38,8 +39,10 @@ func (c *CustomerController) CustWXList() {
38 39
 	}
39 40
 
40 41
 	c.ResponseJSON(map[string]interface{}{
41
-		"list":  custList,
42
-		"total": total,
42
+		"list":     custList,
43
+		"pagenum":  total,
44
+		"page":     page,
45
+		"pagesize": pageSize,
43 46
 	})
44 47
 }
45 48
 

+ 20
- 0
controllers/message/cmscase.go 查看文件

@@ -60,3 +60,23 @@ func (c *MessageController) DelCmsCase() {
60 60
 	}
61 61
 	c.ResponseJSON("删除成功!")
62 62
 }
63
+
64
+// CmsCaseShow 前台展示
65
+func (c *MessageController) CmsCaseShow() {
66
+	cmscaseid := c.GetString(":cmscaseid")
67
+	err := c.dao.CmsCaseShow(cmscaseid)
68
+	if err != nil {
69
+		c.ResponseError(err)
70
+	}
71
+	c.ResponseJSON("操作成功!")
72
+}
73
+
74
+// CmsCaseHide 前台隐藏
75
+func (c *MessageController) CmsCaseHide() {
76
+	cmscaseid := c.GetString(":cmscaseid")
77
+	err := c.dao.CmsCaseHide(cmscaseid)
78
+	if err != nil {
79
+		c.ResponseError(err)
80
+	}
81
+	c.ResponseJSON("操作成功!")
82
+}

+ 11
- 0
controllers/message/location.go 查看文件

@@ -45,3 +45,14 @@ func (c *MessageController) DelLocation() {
45 45
 	}
46 46
 	c.ResponseJSON("删除成功!")
47 47
 }
48
+
49
+// UpdateLocationSort 修改位置的排序
50
+func (c *MessageController) UpdateLocationSort() {
51
+	locations := c.GetString("locations")
52
+
53
+	err := c.dao.UpdateLocationSort(locations)
54
+	if err != nil {
55
+		c.ResponseError(err)
56
+	}
57
+	c.ResponseJSON("操作成功!")
58
+}

+ 3
- 1
controllers/message/news.go 查看文件

@@ -1,6 +1,8 @@
1 1
 package message
2 2
 
3
-import "spaceofcheng/services/models/model"
3
+import (
4
+	"spaceofcheng/services/models/model"
5
+)
4 6
 
5 7
 // GetNews 获取咨询列表
6 8
 func (c *MessageController) GetNews() {

+ 25
- 3
controllers/system/role.go 查看文件

@@ -25,8 +25,10 @@ func (c *RoleController) GetRoleList() {
25 25
 	caseIDs := c.GetCaseIDs(cases)
26 26
 	page, _ := c.GetInt("page")
27 27
 	pageSize, _ := c.GetInt("pagesize")
28
+	name := c.GetString("name")
29
+	caseid := c.GetString("caseid")
28 30
 
29
-	list, err := c.dao.GetRoleList(caseIDs, page, pageSize)
31
+	list, err := c.dao.GetRoleList(caseIDs, name, caseid, page, pageSize)
30 32
 	if err != nil {
31 33
 		c.ResponseError(err)
32 34
 	}
@@ -43,20 +45,40 @@ func (c *RoleController) GetRoleByID() {
43 45
 	c.ResponseJSON(info)
44 46
 }
45 47
 
48
+// GetRoleMenuByRole 获取角色菜单
49
+func (c *RoleController) GetRoleMenuByRole() {
50
+	roleid := c.GetString(":roleid")
51
+	menus, err := c.dao.GetRoleMeneByID(roleid)
52
+	if err != nil {
53
+		c.ResponseError(err)
54
+	}
55
+	c.ResponseJSON(menus)
56
+}
57
+
46 58
 // SaveCaseRole 保存角色
47 59
 func (c *RoleController) SaveCaseRole() {
48 60
 	role := model.SysRole{}
49 61
 	if err := c.ParseForm(&role); err != nil {
50 62
 		c.ResponseError(err)
51 63
 	}
52
-	menuids := c.GetString("menuids")
53
-	newRole, err := c.dao.SaveRole(role, menuids)
64
+	newRole, err := c.dao.SaveRole(role)
54 65
 	if err != nil {
55 66
 		c.ResponseError(err)
56 67
 	}
57 68
 	c.ResponseJSON(newRole)
58 69
 }
59 70
 
71
+// SaveRoleMenus 保存角色对应菜单
72
+func (c *RoleController) SaveRoleMenus() {
73
+	roleid := c.GetString(":roleid")
74
+	menuids := c.GetString("menuids")
75
+	err := c.dao.SaveRoleMenu(roleid, menuids)
76
+	if err != nil {
77
+		c.ResponseError(err)
78
+	}
79
+	c.ResponseJSON("保存成功!")
80
+}
81
+
60 82
 // DelCaseRole 删除角色
61 83
 func (c *RoleController) DelCaseRole() {
62 84
 	roleid := c.GetString(":roleid")

+ 24
- 0
controllers/user/user.go 查看文件

@@ -72,6 +72,17 @@ func (c *UserController) GetUserList() {
72 72
 	c.ResponseJSON(userList)
73 73
 }
74 74
 
75
+// GetUserTypes 获取用户类型
76
+func (c *UserController) GetUserTypes() {
77
+	cases := c.Context.Get("cases").([]model.SysUserCase)
78
+	caseIDs := c.GetCaseIDs(cases)
79
+	usertypes, err := c.dao.GetUserTypes(caseIDs)
80
+	if err != nil {
81
+		c.ResponseError(err)
82
+	}
83
+	c.ResponseJSON(usertypes)
84
+}
85
+
75 86
 // UserMapping 用户映射
76 87
 func (c *UserController) UserMapping() {
77 88
 	userMapping := model.TaUserMapping{}
@@ -202,3 +213,16 @@ func (c *UserController) GetEnvVars() {
202 213
 
203 214
 	c.ResponseJSON(vars)
204 215
 }
216
+
217
+// GetUserRole 获取用户角色
218
+func (c *UserController) GetUserRole() {
219
+	userid := c.GetString("userid")
220
+	roles, err := c.dao.GetUserRoles(userid)
221
+	if err != nil {
222
+		c.ResponseError(
223
+			err,
224
+			http.StatusInternalServerError,
225
+		)
226
+	}
227
+	c.ResponseJSON(roles)
228
+}

+ 2
- 1
models/cases/area.go 查看文件

@@ -34,7 +34,8 @@ type AreaInfo struct {
34 34
 // GetCaseAreaByCase 根据案场获取案场区域
35 35
 func (m *CaseDAO) GetCaseAreaByCase(caseid string) ([]AreaInfo, error) {
36 36
 	var areas []AreaInfo
37
-	err := m.db.Where("status>"+strconv.Itoa(models.STATUS_DEL)).And("case_id =?", caseid).Table("sys_case_area").Find(&areas)
37
+	sql := `select * from sys_case_area where status>` + strconv.Itoa(models.STATUS_DEL) + ` and case_id ='` + caseid + `'`
38
+	err := m.db.Sql(sql).Find(&sql)
38 39
 	return areas, err
39 40
 }
40 41
 

+ 1
- 1
models/cases/cases.go 查看文件

@@ -40,7 +40,7 @@ func (m *CaseDAO) GetCaseList(caseids, casename string, page, pageSize int) ([]C
40 40
 		sql = sql + ` and  a.case_name like '%` + casename + `%'`
41 41
 	}
42 42
 
43
-	sql = sql + " order by create_date desc limit " + strconv.Itoa((page-1)*pageSize) + ", " + strconv.Itoa((page+1)*pageSize)
43
+	sql = sql + " order by create_date desc limit " + strconv.Itoa((page-1)*pageSize) + ", " + strconv.Itoa(page*pageSize)
44 44
 
45 45
 	err := m.db.Sql(sql).Find(&cases)
46 46
 	return cases, err

+ 12
- 2
models/cases/caseuser.go 查看文件

@@ -9,12 +9,22 @@ import (
9 9
 )
10 10
 
11 11
 // GetCaseUserByCase 根据案场id获取案场相关人员
12
-func (m *CaseDAO) GetCaseUserByCase(caseid string) ([]model.SysCaseUser, error) {
12
+func (m *CaseDAO) GetCaseUserByCase(caseid string, page int, pageSize int) ([]model.SysCaseUser, error) {
13 13
 	var caseusers []model.SysCaseUser
14
-	err := m.db.Where("case_id=?", caseid).And("status>" + strconv.Itoa(models.STATUS_DEL)).Find(&caseusers)
14
+	err := m.db.Where("case_id=?", caseid).And("status>"+strconv.Itoa(models.STATUS_DEL)).Limit(pageSize, (page-1)*pageSize).Find(&caseusers)
15 15
 	return caseusers, err
16 16
 }
17 17
 
18
+// GetCaseUserCount 列表数量
19
+func (m *CaseDAO) GetCaseUserCount(caseid string) (int, error) {
20
+	var caseusers []model.SysCaseUser
21
+	err := m.db.Where("case_id=?", caseid).And("status>" + strconv.Itoa(models.STATUS_DEL)).Find(&caseusers)
22
+	if err != nil {
23
+		return 0, err
24
+	}
25
+	return len(caseusers), nil
26
+}
27
+
18 28
 // GetCaseUserByID 根据id获取相关人员
19 29
 func (m *CaseDAO) GetCaseUserByID(userid string) (*model.SysCaseUser, error) {
20 30
 	var caseusers []model.SysCaseUser

+ 10
- 4
models/cases/equipment.go 查看文件

@@ -6,6 +6,7 @@ import (
6 6
 	"spaceofcheng/services/utils"
7 7
 	"strconv"
8 8
 	"strings"
9
+	"time"
9 10
 )
10 11
 
11 12
 // GetEquipmentList 获取体检设备
@@ -25,7 +26,7 @@ func (m *CaseDAO) GetEquipmentCount(caseids string) (int, error) {
25 26
 // GetCaseEquipmentByID 根据ID获取体检设备
26 27
 func (m *CaseDAO) GetCaseEquipmentByID(equipmentid string) (*model.SysCaseEquipment, error) {
27 28
 	var caseEquipment []model.SysCaseEquipment
28
-	err := m.db.Where("status>"+strconv.Itoa(models.STATUS_DEL)).And("spec_id=?", equipmentid).Find(&caseEquipment)
29
+	err := m.db.Where("status>"+strconv.Itoa(models.STATUS_DEL)).And("equipment_id=?", equipmentid).Find(&caseEquipment)
29 30
 	if err != nil {
30 31
 		return nil, err
31 32
 	}
@@ -39,6 +40,9 @@ func (m *CaseDAO) GetCaseEquipmentByID(equipmentid string) (*model.SysCaseEquipm
39 40
 func (m *CaseDAO) AddCaseEquipment(caseEquipment *model.SysCaseEquipment) (*model.SysCaseEquipment, error) {
40 41
 	caseEquipment.EquipmentId = utils.GetGUID()
41 42
 	caseEquipment.Status = models.STATUS_NORMAL
43
+	caseEquipment.CreateDate = time.Now()
44
+	user := m.ctx.Get("user").(model.SysUser)
45
+	caseEquipment.CreateUser = user.UserId
42 46
 	_, err := m.db.Insert(caseEquipment)
43 47
 	return caseEquipment, err
44 48
 }
@@ -46,9 +50,11 @@ func (m *CaseDAO) AddCaseEquipment(caseEquipment *model.SysCaseEquipment) (*mode
46 50
 // UpdateCaseEquipment 修改体检设备
47 51
 func (m *CaseDAO) UpdateCaseEquipment(caseEquipment model.SysCaseEquipment) error {
48 52
 	var cols = []string{
49
-		"spec_name",
53
+		"name",
54
+		"equipment_code",
55
+		"case_id",
50 56
 	}
51
-	_, err := m.db.Cols(cols...).Where("spec_id=?", caseEquipment.EquipmentId).Update(caseEquipment)
57
+	_, err := m.db.Cols(cols...).Where("equipment_id=?", caseEquipment.EquipmentId).Update(caseEquipment)
52 58
 	return err
53 59
 }
54 60
 
@@ -61,6 +67,6 @@ func (m *CaseDAO) DelCaseEquipment(equipmentid string) error {
61 67
 	var cols = []string{
62 68
 		"status",
63 69
 	}
64
-	_, err := m.db.Cols(cols...).Where("spec_id=?", caseEquipment.EquipmentId).Update(caseEquipment)
70
+	_, err := m.db.Cols(cols...).Where("equipment_id=?", caseEquipment.EquipmentId).Update(caseEquipment)
65 71
 	return err
66 72
 }

+ 19
- 4
models/cases/key.go 查看文件

@@ -5,6 +5,7 @@ import (
5 5
 	"spaceofcheng/services/models/model"
6 6
 	"spaceofcheng/services/utils"
7 7
 	"strconv"
8
+	"strings"
8 9
 	"time"
9 10
 )
10 11
 
@@ -39,16 +40,20 @@ func (m *CaseDAO) GetKeysByCase(caseid, num string, page, pageSize int) ([]CaseK
39 40
 	}
40 41
 
41 42
 	offset := (page - 1) * pageSize
42
-	query += " LIMIT " + strconv.Itoa(pageSize) + " OFFSET " + strconv.Itoa(offset)
43
+	query += " order by lock_num asc LIMIT " + strconv.Itoa(pageSize) + " OFFSET " + strconv.Itoa(offset)
43 44
 
44 45
 	err := m.db.SQL(query, models.STATUS_NORMAL, caseid, models.STATUS_DEL).Find(&keys)
45 46
 	return keys, err
46 47
 }
47 48
 
48 49
 // GetKeysCountByCase 根据案场获取钥匙数量
49
-func (m *CaseDAO) GetKeysCountByCase(caseid string) (int, error) {
50
+func (m *CaseDAO) GetKeysCountByCase(caseid, num string) (int, error) {
50 51
 	var keys []model.TaCaseKey
51
-	err := m.db.Where("case_id=?", caseid).And("status>" + strconv.Itoa(models.STATUS_DEL)).Find(&keys)
52
+	dao := m.db.Where("case_id=?", caseid).And("status>" + strconv.Itoa(models.STATUS_DEL))
53
+	if num != "" {
54
+		dao.And("num like '%" + num + "%'")
55
+	}
56
+	err := dao.Find(&keys)
52 57
 	return len(keys), err
53 58
 }
54 59
 
@@ -81,7 +86,7 @@ func (m *CaseDAO) GetKeyByID(keyid string) (*model.TaCaseKey, error) {
81 86
 // AddKey 新增单个钥匙信息
82 87
 func (m *CaseDAO) AddKey(key model.TaCaseKey) (*model.TaCaseKey, error) {
83 88
 	key.KeyId = utils.GetGUID()
84
-	key.Status = models.STATUS_NORMAL
89
+	key.Status = STATUS_UNLOCK
85 90
 	key.CreateDate = time.Now()
86 91
 	_, err := m.db.Insert(key)
87 92
 	return &key, err
@@ -106,3 +111,13 @@ func (m *CaseDAO) UnLockKey(keyid string) error {
106 111
 	_, err := m.db.Exec(sql)
107 112
 	return err
108 113
 }
114
+
115
+// GetKeyByNumRange 根据区间获取钥匙
116
+func (m *CaseDAO) GetKeyByNumRange(caseid, nums string) ([]model.TaCaseKey, error) {
117
+	var keys []model.TaCaseKey
118
+	sql := `select * from ta_case_key where status>` + strconv.Itoa(models.STATUS_DEL) + `
119
+	and case_id='` + caseid + `' and lock_num in ('` + strings.Replace(nums, ",", "','", -1) + `')`
120
+
121
+	err := m.db.Sql(sql).Find(keys)
122
+	return keys, err
123
+}

+ 2
- 1
models/cases/table.go 查看文件

@@ -30,7 +30,8 @@ func (m *CaseDAO) GetCaseTable(caseids string, page int, pageSize int) ([]CaseTa
30 30
 	sql := `select a.*,b.area_name,c.case_name from sys_case_table a 
31 31
 	inner join sys_case_area b on a.area_id=b.area_id
32 32
 	inner join sys_case c on a.case_id=c.case_id
33
-	where status>` + strconv.Itoa(models.STATUS_DEL) + ` and a.case_id in ('` +
33
+	where a.status>` + strconv.Itoa(models.STATUS_DEL) + ` and b.status>` + strconv.Itoa(models.STATUS_DEL) +
34
+		` and c.status>` + strconv.Itoa(models.STATUS_DEL) + ` and a.case_id in ('` +
34 35
 		strings.Replace(caseids, ",", "','", -1) + `')`
35 36
 
36 37
 	err := m.db.Sql(sql).Find(&tables)

+ 20
- 9
models/cases/tag.go 查看文件

@@ -7,44 +7,54 @@ import (
7 7
 	"strconv"
8 8
 	"strings"
9 9
 	"time"
10
+
11
+	"github.com/astaxie/beego"
10 12
 )
11 13
 
12 14
 // GetTagCount 获取标签总数
13 15
 func (m *CaseDAO) GetTagCount(caseids string) (int, error) {
14
-	var tags []model.SysTag
15
-	err := m.db.Where("status>" + strconv.Itoa(models.STATUS_DEL)).And("case_id in ('" + strings.Replace(caseids, ",", "','", -1) + "')").Find(&tags)
16
+	var tags []TagInfo
17
+	sql := `select tag.*,c.case_names from sys_tag tag inner join (
18
+	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_DEL) + `
19
+	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 ('` +
20
+		strings.Replace(caseids, ",", "','", -1) + `'))
21
+	group by b.tag_id ) c on tag.tag_id = c.tag_id where tag.status>` + strconv.Itoa(models.STATUS_DEL)
22
+	err := m.db.Sql(sql).Find(&tags)
23
+
16 24
 	return len(tags), err
17 25
 }
18 26
 
19 27
 // TagInfo 标签
20 28
 type TagInfo struct {
21
-	model.TaCmsCase `xorm:"extends"`
22
-	CaseNames       string
29
+	model.SysTag `xorm:"extends"`
30
+	CaseNames    string
23 31
 }
24 32
 
25 33
 // GetTagList 根据案场获取标签
26 34
 func (m *CaseDAO) GetTagList(caseids string, page int, pageSize int) ([]TagInfo, error) {
27 35
 	var tags []TagInfo
36
+	offset := (page - 1) * pageSize
28 37
 	sql := `select tag.*,c.case_names from sys_tag tag inner join (
29 38
 	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_DEL) + `
30 39
 	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 ('` +
31 40
 		strings.Replace(caseids, ",", "','", -1) + `'))
32
-	group by b.tag_id ) c on tag.tag_id = c.tag_id`
41
+	group by b.tag_id ) c on tag.tag_id = c.tag_id where tag.status>` + strconv.Itoa(models.STATUS_DEL) + ` LIMIT ` + strconv.Itoa(pageSize) + ` OFFSET ` + strconv.Itoa(offset)
33 42
 
34
-	err := m.db.Sql(sql).Find(tags)
43
+	err := m.db.Sql(sql).Find(&tags)
35 44
 	return tags, err
36 45
 }
37 46
 
38 47
 // Tag 标签
39 48
 type Tag struct {
40
-	model.TaCmsCase `xorm:"extends"`
41
-	TagCases        []model.SysTagCase
49
+	model.SysTag `xorm:"extends"`
50
+	TagCases     []model.SysTagCase
42 51
 }
43 52
 
44 53
 // GetTagByID 根据ID获取标签
45 54
 func (m *CaseDAO) GetTagByID(tagid string) (*Tag, error) {
46 55
 	var tags []Tag
47
-	err := m.db.Table("sys_tag").Where("tag_id=?", tagid).Find(&tags)
56
+	sql := `select * from sys_tag where tag_id='` + tagid + `'`
57
+	err := m.db.Sql(sql).Find(&tags)
48 58
 	if err != nil {
49 59
 		return nil, err
50 60
 	}
@@ -81,6 +91,7 @@ func (m *CaseDAO) UpdateTag(tag model.SysTag) error {
81 91
 
82 92
 // DeleteTag 刪除标签
83 93
 func (m *CaseDAO) DeleteTag(tagid string) error {
94
+	beego.Error(tagid)
84 95
 	var tag = model.SysTag{
85 96
 		TagId:  tagid,
86 97
 		Status: models.STATUS_DEL,

+ 97
- 0
models/channel/channel.go 查看文件

@@ -0,0 +1,97 @@
1
+package channel
2
+
3
+import (
4
+	"spaceofcheng/services/models"
5
+	"spaceofcheng/services/models/model"
6
+	"spaceofcheng/services/utils"
7
+	"strconv"
8
+	"strings"
9
+	"time"
10
+
11
+	"github.com/go-xorm/xorm"
12
+)
13
+
14
+// ChannelDAO 当前数据库操作对象
15
+type ChannelDAO struct {
16
+	ctx *utils.Context
17
+	db  *xorm.Session
18
+}
19
+
20
+// NewChannelDAO New Inst
21
+func NewChannelDAO(ctx *utils.Context) *ChannelDAO {
22
+	return &ChannelDAO{
23
+		ctx: ctx,
24
+		db:  ctx.DB,
25
+	}
26
+}
27
+
28
+type Channel struct {
29
+	model.TaChannel `xorm:"extends"`
30
+	CaseName        string
31
+}
32
+
33
+// GetChannelsCount 获取渠道总数
34
+func (m *ChannelDAO) GetChannelsCount(caseid string) (int, error) {
35
+	var channels []model.TaChannel
36
+	dao := m.db.Where("status >" + strconv.Itoa(models.STATUS_DEL)).And("case_id in ('" + strings.Replace(caseid, ",", "','", -1) + "')")
37
+	err := dao.Find(&channels)
38
+	return len(channels), err
39
+}
40
+
41
+// GetChannels 根据案场获取渠道
42
+func (m *ChannelDAO) GetChannels(caseid string, page int, pageSize int) ([]Channel, error) {
43
+	var channels []Channel
44
+	sql := `
45
+	select a.*,b.case_name 
46
+	from ta_channel a 
47
+	inner join sys_case b on a.case_id = b.case_id 
48
+	where a.case_id in('` + strings.Replace(caseid, ",", "','", -1) + `') and b.status> ` + strconv.Itoa(models.STATUS_DEL) + ` and  a.status > ` + strconv.Itoa(models.STATUS_DEL)
49
+	err := m.db.Sql(sql).Find(&channels)
50
+	return channels, err
51
+}
52
+
53
+// GetChannelById 根据渠道id获取渠道
54
+func (m *ChannelDAO) GetChannelById(channelId string) (*model.TaChannel, error) {
55
+	var channel []model.TaChannel
56
+	err := m.db.Where("channel_id = ?", channelId).And("status > ?", models.STATUS_DEL).Find(&channel)
57
+	if err != nil {
58
+		return nil, err
59
+	}
60
+	if len(channel) > 0 {
61
+		return &channel[0], nil
62
+	}
63
+	return nil, nil
64
+}
65
+
66
+// AddNewChannel 新增渠道
67
+func (m *ChannelDAO) AddNewChannel(channel model.TaChannel) (*model.TaChannel, error) {
68
+	channel.ChannelId = utils.GetGUID()
69
+	channel.CreateDate = time.Now()
70
+	channel.Status = models.STATUS_NORMAL
71
+	_, err := m.db.Insert(channel)
72
+	return &channel, err
73
+}
74
+
75
+// UpdateChannel 修改渠道
76
+func (m *ChannelDAO) UpdateChannel(channel model.TaChannel) error {
77
+	var cols = []string{
78
+		"channel_name",
79
+		"case_id",
80
+		"org_id",
81
+	}
82
+	_, err := m.db.Cols(cols...).Where("channel_id=?", channel.ChannelId).Update(channel)
83
+	return err
84
+}
85
+
86
+// DeleteChannel 删除渠道
87
+func (m *ChannelDAO) DeleteChannel(channelId string) error {
88
+	var channel = model.TaChannel{
89
+		ChannelId: channelId,
90
+		Status:    models.STATUS_DEL,
91
+	}
92
+	var cols = []string{
93
+		"status",
94
+	}
95
+	_, err := m.db.Cols(cols...).Where("channel_id", channel.ChannelId).Update(channel)
96
+	return err
97
+}

+ 3
- 0
models/customer/customer.go 查看文件

@@ -40,6 +40,9 @@ func (m *CustomerDAO) CustWithWXList(phone string, page ...int) ([]CustWithWX, i
40 40
 	if m.ctx.Get("pageNum") != nil {
41 41
 		pageNum = m.ctx.Get("pageNum").(int)
42 42
 	}
43
+	if len(page) > 1 {
44
+		pageNum = page[1]
45
+	}
43 46
 
44 47
 	pg := 1
45 48
 	if len(page) > 0 {

+ 36
- 4
models/message/cmscase.go 查看文件

@@ -8,6 +8,8 @@ import (
8 8
 	"strings"
9 9
 	"time"
10 10
 
11
+	"github.com/astaxie/beego"
12
+
11 13
 	"github.com/go-xorm/builder"
12 14
 )
13 15
 
@@ -17,14 +19,17 @@ type CmsCaseInfo struct {
17 19
 	CaseName        string
18 20
 }
19 21
 
22
+const (
23
+	STATUS_NOSHOW = 0
24
+)
25
+
20 26
 // GetCmsCaseList 获取项目专题列表
21 27
 func (m *MessageDAO) GetCmsCaseList(name, caseids string, page int, pageSize int) ([]CmsCaseInfo, error) {
22 28
 	var cases []CmsCaseInfo
23 29
 	sql := `select a.*,b.case_name from ta_cms_case a inner join sys_case b on a.case_id = b.case_id 
24
-	where a.case_id in ('` + strings.Replace(caseids, ",", "','", -1) + `') and a.name like '%` + name + `%' and a.status > ` + strconv.Itoa(models.STATUS_DEL) + `
30
+	where a.org_id in ('` + strings.Replace(caseids, ",", "','", -1) + `') and a.name like '%` + name + `%' and a.status > ` + strconv.Itoa(models.STATUS_DEL) + `
25 31
 	and b.status > ` + strconv.Itoa(models.STATUS_DEL) + `
26
-	order by create_date desc limit ` + strconv.Itoa((page-1)*pageSize) + `, ` + strconv.Itoa((page+1)*pageSize)
27
-
32
+	order by create_date desc limit ` + strconv.Itoa((page-1)*pageSize) + `, ` + strconv.Itoa(page*pageSize)
28 33
 	err := m.db.Sql(sql).Find(&cases)
29 34
 	return cases, err
30 35
 }
@@ -33,6 +38,7 @@ func (m *MessageDAO) GetCmsCaseList(name, caseids string, page int, pageSize int
33 38
 func (m *MessageDAO) GetCmsCaseByOrg(orgid string) ([]model.TaCmsCase, error) {
34 39
 	var cases []model.TaCmsCase
35 40
 	err := m.db.Where("org_id=?", orgid).Find(&cases)
41
+	beego.Error(cases)
36 42
 	return cases, err
37 43
 }
38 44
 
@@ -60,8 +66,10 @@ type CmsCase struct {
60 66
 // GetCmsCaseByID 获取项目专题详情
61 67
 func (m *MessageDAO) GetCmsCaseByID(cmscaseid string) (*CmsCase, error) {
62 68
 	var cases []CmsCase
63
-	err := m.db.Table("ta_cms_case").Where("cms_case_id=?", cmscaseid).And("status>" + strconv.Itoa(models.STATUS_DEL)).Find(&cases)
69
+	sql := `select * from ta_cms_case where cms_case_id='` + cmscaseid + `' and status>` + strconv.Itoa(models.STATUS_DEL)
70
+	err := m.db.Sql(sql).Find(&cases)
64 71
 	if err != nil {
72
+		beego.Error(err)
65 73
 		return nil, err
66 74
 	}
67 75
 	if len(cases) > 0 {
@@ -155,3 +163,27 @@ func (m *MessageDAO) SaveCmsCaseImg(img model.TaCmsCaseImage) error {
155 163
 	_, err := m.db.Insert(img)
156 164
 	return err
157 165
 }
166
+
167
+// CmsCaseShow 前台展示
168
+func (m *MessageDAO) CmsCaseShow(cmscaseid string) error {
169
+	var cmscase = model.TaCmsCase{}
170
+	cmscase.Status = models.STATUS_NORMAL
171
+	cmscase.CmsCaseId = cmscaseid
172
+	var cols = []string{
173
+		"status",
174
+	}
175
+	_, err := m.db.Cols(cols...).Where("cms_case_id=?", cmscase.CmsCaseId).Update(cmscase)
176
+	return err
177
+}
178
+
179
+// CmsCaseHide 前台隐藏
180
+func (m *MessageDAO) CmsCaseHide(cmscaseid string) error {
181
+	var cmscase = model.TaCmsCase{}
182
+	cmscase.Status = STATUS_NOSHOW
183
+	cmscase.CmsCaseId = cmscaseid
184
+	var cols = []string{
185
+		"status",
186
+	}
187
+	_, err := m.db.Cols(cols...).Where("cms_case_id=?", cmscase.CmsCaseId).Update(cmscase)
188
+	return err
189
+}

+ 2
- 0
models/message/image.go 查看文件

@@ -66,6 +66,8 @@ func (m *MessageDAO) UpdateCmsImg(img model.TaCmsImages) error {
66 66
 		"forward_resource_id",
67 67
 		"sort",
68 68
 		"title",
69
+		"location_id",
70
+		"status",
69 71
 	}
70 72
 	_, err := m.db.Cols(cols...).Where("image_id=?", img.ImageId).Update(img)
71 73
 	return err

+ 38
- 2
models/message/location.go 查看文件

@@ -8,7 +8,7 @@ import (
8 8
 )
9 9
 
10 10
 const (
11
-	ISSYS = 1
11
+	ISSYS = 0
12 12
 )
13 13
 
14 14
 // GetLocationList 获取位置字典
@@ -18,10 +18,29 @@ func (m *MessageDAO) GetLocationList(issys, org_id string) ([]model.TdCmsImageLo
18 18
 	if issys != "" {
19 19
 		s = s.And("is_sys=?", issys)
20 20
 	}
21
-	err := s.Find(&locations)
21
+	err := s.Asc("order_no").Find(&locations)
22 22
 	return locations, err
23 23
 }
24 24
 
25
+// GetLocationMaxSort 获取最大的位置
26
+func (m *MessageDAO) GetLocationMaxSort(issys, org_id string) (int, error) {
27
+	var location []map[string][]byte
28
+	sql := `select max(order_no) as order_no from td_cms_image_location where is_sys=` + issys + ` and org_id ='` + org_id + `'`
29
+	location, err := m.db.Query(sql)
30
+	if err != nil {
31
+		return 0, err
32
+	}
33
+	if len(location) > 0 {
34
+		sort := string(location[0]["order_no"])
35
+		if sort != "" {
36
+			sortno, err := strconv.Atoi(string(location[0]["order_no"]))
37
+			return sortno, err
38
+		}
39
+		return 0, err
40
+	}
41
+	return 0, nil
42
+}
43
+
25 44
 // GetLocationById 根据ID获取明细
26 45
 func (m *MessageDAO) GetLocationById(id string) (*model.TdCmsImageLocation, error) {
27 46
 	var location []model.TdCmsImageLocation
@@ -67,3 +86,20 @@ func (m *MessageDAO) DelLocation(location_id string) error {
67 86
 	_, err := m.db.Cols(cols...).Where("location_id=?", location.LocationId).Update(location)
68 87
 	return err
69 88
 }
89
+
90
+// UpdateLocationSort 修改顺序
91
+func (m *MessageDAO) UpdateLocationSort(loc []string) error {
92
+	orderno, err := strconv.Atoi(loc[1])
93
+	if err != nil {
94
+		return err
95
+	}
96
+	var location = model.TdCmsImageLocation{
97
+		LocationId: loc[0],
98
+		OrderNo:    orderno,
99
+	}
100
+	var cols = []string{
101
+		"order_no",
102
+	}
103
+	_, err = m.db.Cols(cols...).Where("location_id=?", location.LocationId).Update(location)
104
+	return err
105
+}

+ 3
- 0
models/message/message.go 查看文件

@@ -86,6 +86,9 @@ func (m *MessageDAO) AddCmsInfo(cmsinfo model.TaCmsInfo) (*model.TaCmsInfo, erro
86 86
 func (m *MessageDAO) UpdateCmsInfo(cmsinfo model.TaCmsInfo) error {
87 87
 	var cols = []string{
88 88
 		"info_name",
89
+		"info_url",
90
+		"location_id",
91
+		"case_id",
89 92
 	}
90 93
 	_, err := m.db.Cols(cols...).Where("info_id=?", cmsinfo.InfoId).Update(cmsinfo)
91 94
 	return err

+ 7
- 7
models/message/news.go 查看文件

@@ -24,15 +24,14 @@ func (m *MessageDAO) GetNewsList(locationid, orgid string, page int, pageSize in
24 24
 	sql := `select * from ta_cms_news new left join (
25 25
 		select b.news_id,GROUP_CONCAT(a.location_name) location_names,GROUP_CONCAT(a.location_id) location_ids 
26 26
 		from td_cms_image_location a inner join ta_cms_location b on a.location_id=b.location_id and a.status>` + strconv.Itoa(models.STATUS_DEL) +
27
-		` and b.org_id='` + orgid + `' group by b.news_id
28
-		) c on new.news_id = c.news_id and new.status>` + strconv.Itoa(models.STATUS_DEL) + ` and new.org_id='` + orgid + `'`
27
+		` and a.org_id='` + orgid + `' group by b.news_id
28
+		) c on new.news_id = c.news_id WHERE new.status>` + strconv.Itoa(models.STATUS_DEL) + ` and new.org_id='` + orgid + `'`
29 29
 
30 30
 	if locationid != "" {
31 31
 		sql += ` and new.news_id in (select news_id from ta_cms_location where location_id='` + locationid + `')`
32 32
 	}
33 33
 
34
-	sql = sql + " order by new.create_date desc limit " + strconv.Itoa((page-1)*pageSize) + ", " + strconv.Itoa((page+1)*pageSize)
35
-
34
+	sql = sql + " order by new.create_date desc limit " + strconv.Itoa((page-1)*pageSize) + ", " + strconv.Itoa(page*pageSize)
36 35
 	err := m.db.Sql(sql).Find(&news)
37 36
 	return news, err
38 37
 }
@@ -67,7 +66,8 @@ type CmsNews struct {
67 66
 // GetNewsByID 获取咨询详情
68 67
 func (m *MessageDAO) GetNewsByID(newid string) (*CmsNews, error) {
69 68
 	var news []CmsNews
70
-	err := m.db.Where("news_id=?", newid).And("status>" + strconv.Itoa(models.STATUS_DEL)).Find(&news)
69
+	sql := `select * from ta_cms_news where news_id='` + newid + `' and status>` + strconv.Itoa(models.STATUS_DEL)
70
+	err := m.db.Sql(sql).Find(&news)
71 71
 	if err != nil {
72 72
 		return nil, err
73 73
 	}
@@ -103,7 +103,7 @@ func (m *MessageDAO) DelNewsLocation(newsid string) error {
103 103
 
104 104
 // SaveNewsLocation 保存咨询与位置映射
105 105
 func (m *MessageDAO) SaveNewsLocation(newsid, locationsid string) error {
106
-	sql := `insert into ta_cms_location(location_id,news_id) select '` + newsid + `', location_id from td_cms_image_location where location_id in ('` + strings.Replace(locationsid, ",", "','", -1) + `') and status > ` + strconv.Itoa(models.STATUS_DEL)
106
+	sql := `insert into ta_cms_location(news_id,location_id) select '` + newsid + `', location_id from td_cms_image_location where location_id in ('` + strings.Replace(locationsid, ",", "','", -1) + `') and status > ` + strconv.Itoa(models.STATUS_DEL)
107 107
 	_, err := m.db.Exec(sql)
108 108
 	return err
109 109
 }
@@ -131,6 +131,6 @@ func (m *MessageDAO) DelNews(newsid string) error {
131 131
 	var cols = []string{
132 132
 		"status",
133 133
 	}
134
-	_, err := m.db.Cols(cols...).Where("user_id=?", news.NewsId).Update(news)
134
+	_, err := m.db.Cols(cols...).Where("news_id=?", news.NewsId).Update(news)
135 135
 	return err
136 136
 }

+ 1
- 0
models/model/sys_menu.go 查看文件

@@ -16,4 +16,5 @@ type SysMenu struct {
16 16
 	Status     int       `xorm:"SMALLINT(6)"`
17 17
 	CreateDate time.Time `xorm:"DATETIME"`
18 18
 	OrgId      string    `xorm:"VARCHAR(64)"`
19
+	FatherIds  string    `xorm:"TEXT"`
19 20
 }

+ 44
- 11
models/system/role.go 查看文件

@@ -26,29 +26,44 @@ func NewRoleDAO(ctx *utils.Context) *RoleDAO {
26 26
 }
27 27
 
28 28
 // GetRoleCount 获取角色总数
29
-func (m *RoleDAO) GetRoleCount(caseids string) (int, error) {
29
+func (m *RoleDAO) GetRoleCount(caseids, name, caseid string) (int, error) {
30 30
 	var roles []model.SysRole
31
-	err := m.db.Where("status>" + strconv.Itoa(models.STATUS_DEL)).And("case_id in ('" + strings.Replace(caseids, ",", "','", -1) + "')").Find(&roles)
31
+	dao := m.db.Where("status>" + strconv.Itoa(models.STATUS_DEL)).And("case_id in ('" + strings.Replace(caseids, ",", "','", -1) + "')")
32
+	if name != "" {
33
+		dao.And("role_name like '%" + name + "%'")
34
+	}
35
+	if caseid != "" {
36
+		dao.And("case_id =?", caseid)
37
+	}
38
+	err := dao.Find(&roles)
32 39
 	return len(roles), err
33 40
 }
34 41
 
35 42
 // GetRoleList 根据案场获取角色
36
-func (m *RoleDAO) GetRoleList(caseids string, page int, pageSize int) ([]model.SysRole, error) {
43
+func (m *RoleDAO) GetRoleList(caseids, name, caseid string, page int, pageSize int) ([]model.SysRole, error) {
37 44
 	var roles []model.SysRole
38
-	err := m.db.Where("status>"+strconv.Itoa(models.STATUS_DEL)).And("case_id in ('"+strings.Replace(caseids, ",", "','", -1)+"')").Limit(pageSize, (page-1)*pageSize).Desc("create_date").Find(&roles)
45
+	dao := m.db.Where("status>" + strconv.Itoa(models.STATUS_DEL)).And("case_id in ('" + strings.Replace(caseids, ",", "','", -1) + "')")
46
+	if name != "" {
47
+		dao.And("role_name like '%" + name + "%'")
48
+	}
49
+	if caseid != "" {
50
+		dao.And("case_id =?", caseid)
51
+	}
52
+	err := dao.Limit(pageSize, (page-1)*pageSize).Desc("create_date").Find(&roles)
39 53
 	return roles, err
40 54
 }
41 55
 
42 56
 // Role 角色
43 57
 type Role struct {
44
-	model.TaCmsCase `xorm:"extends"`
45
-	RoleMenu        []model.SysMenu
58
+	model.SysRole `xorm:"extends"`
59
+	RoleMenu      []model.SysMenu
46 60
 }
47 61
 
48 62
 // GetRoleByID 根据ID获取角色
49
-func (m *RoleDAO) GetRoleByID(roleid string) (*Role, error) {
50
-	var roles []Role
51
-	err := m.db.Table("sys_role").Where("role_id=?", roleid).And("status>" + strconv.Itoa(models.STATUS_DEL)).Find(&roles)
63
+func (m *RoleDAO) GetRoleByID(roleid string) (*model.SysRole, error) {
64
+	var roles []model.SysRole
65
+	sql := `select * from sys_role where role_id='` + roleid + `' and status>` + strconv.Itoa(models.STATUS_DEL)
66
+	err := m.db.Sql(sql).Find(&roles)
52 67
 	if err != nil {
53 68
 		return nil, err
54 69
 	}
@@ -106,8 +121,26 @@ func (m *RoleDAO) DelRoleMenu(roleid string) error {
106 121
 }
107 122
 
108 123
 // SaveRoleMenu 保存角色对应的菜单
109
-func (m *RoleDAO) SaveRoleMenu(roleid, caseids string) error {
110
-	sql := `insert into sys_role_menu(role_id,menu_id) select '` + roleid + `', menu_id from sys_menu where case_id in ('` + strings.Replace(caseids, ",", "','", -1) + `') and status > ` + strconv.Itoa(models.STATUS_DEL)
124
+func (m *RoleDAO) SaveRoleMenu(roleid, menuids string) error {
125
+	sql := `insert into sys_role_menu(role_id,menu_id) select DISTINCT '` + roleid + `', a.menu_id from sys_menu a left join sys_menu b on find_in_set(b.menu_id,a.father_ids) where (b.menu_id in ('` + strings.Replace(menuids, ",", "','", -1) + `') or a.menu_id in ('` + strings.Replace(menuids, ",", "','", -1) + `')) and a.status> ` + strconv.Itoa(models.STATUS_DEL)
126
+	_, err := m.db.Exec(sql)
127
+	return err
128
+}
129
+
130
+// DelUserMenusByRole 批量删除处理用户对应菜单信息
131
+func (m *RoleDAO) DelUserMenusByRole(roleid string) error {
132
+	sql := "delete a from sys_user_menu a inner join sys_user_role b on a.user_id=b.user_id where b.role_id='" + roleid + "'"
133
+	_, err := m.db.Exec(sql)
134
+	return err
135
+}
136
+
137
+// SaveUserMenusByRole 批量保存用户对应菜单信息
138
+func (m *RoleDAO) SaveUserMenus(roleid string) error {
139
+	sql := `insert into sys_user_menu (user_id,menu_id)
140
+	select DISTINCT c.user_id,a.menu_id from sys_menu a 
141
+	inner join sys_role_menu b on a.menu_id = b.menu_id
142
+	inner join sys_user_role c on b.role_id = c.role_id
143
+	where c.user_id in (select user_id from sys_user_role where role_id='` + roleid + `')`
111 144
 	_, err := m.db.Exec(sql)
112 145
 	return err
113 146
 }

+ 31
- 31
models/system/user.go 查看文件

@@ -40,49 +40,30 @@ func (m *UserDAO) GetUserList(username, typeid, caseids string, page int, pageSi
40 40
 		select a.user_id,GROUP_CONCAT(b.type_name) as user_type_names from sys_user_type a
41 41
 		INNER join td_user_type b on a.type_id = b.type_id
42 42
 		group by a.user_id) c on user.user_id = c.user_id where 
43
-		(status> ` + strconv.Itoa(models.STATUS_DEL) + ` and user_name like '%` + username + `%' and user_id in 
43
+		(status> ` + strconv.Itoa(models.STATUS_DEL) + ` and user_name like '%` + username + `%' and user.user_id in 
44 44
 		(select user_id from sys_user_tag a inner join sys_tag_case b on a.tag_id=b.tag_id where b.case_id in ('` + strings.Replace(caseids, ",", "','", -1) + `')))`
45 45
 
46 46
 	if typeid != "" {
47
-		sql = sql + " and user_id in (select user_id from sys_user_type where type_id = '" + typeid + "')"
47
+		sql = sql + " and user.user_id in (select user_id from sys_user_type where type_id = '" + typeid + "')"
48 48
 	}
49 49
 
50
-	sql = sql + " order by create_date desc limit " + strconv.Itoa((page-1)*pageSize) + ", " + strconv.Itoa((page+1)*pageSize)
51
-
50
+	sql = sql + " order by create_date desc limit " + strconv.Itoa((page-1)*pageSize) + ", " + strconv.Itoa(page*pageSize)
52 51
 	err := m.db.Sql(sql).Find(&users)
53 52
 	return users, err
54
-
55
-	// var users []model.SysUser
56
-	// userDAO := m.db.Where(`(status> `+strconv.Itoa(models.STATUS_DEL)+` and user_name like '%?%' and user_id in
57
-	// 	(select user_id from sys_user_tag a inner join sys_tag_case b on a.tag_id=b.tag_id where b.case_id in ('?')))`, username, strings.Replace(caseids, ",", "','", -1))
58
-
59
-	// if typeid != "" {
60
-	// 	userDAO.In("user_id", builder.Select("user_id").From("sys_user_type").Where(builder.Eq{"type_id": typeid}))
61
-	// }
62
-	// err := userDAO.Limit(pageSize, (page-1)*pageSize).Desc("create_date").Find(&users)
63
-	// return users, err
64 53
 }
65 54
 
66 55
 // GetUserCount 用户列表count
67 56
 func (m *UserDAO) GetUserCount(username, typeid, caseids string) (int, error) {
68
-	// var users []model.SysUser
69
-	// userDAO := m.db.Where(`(status> `+strconv.Itoa(models.STATUS_DEL)+` and user_name like '%?%' and user_id in
70
-	// 	(select user_id from sys_user_tag a inner join sys_tag_case b on a.tag_id=b.tag_id where b.case_id in ('?')))`, username, strings.Replace(caseids, ",", "','", -1))
71
-
72
-	// if typeid != "" {
73
-	// 	userDAO.In("user_id", builder.Select("user_id").From("sys_user_type").Where(builder.Eq{"type_id": typeid}))
74
-	// }
75
-	// err := userDAO.Find(&users)
76 57
 	var users []UserListInfo
77 58
 	sql := `select user.*,c.user_type_names from sys_user user left join (
78 59
 		select a.user_id,GROUP_CONCAT(b.type_name) as user_type_names from sys_user_type a
79 60
 		INNER join td_user_type b on a.type_id = b.type_id
80 61
 		group by a.user_id) c on user.user_id = c.user_id where 
81
-		(status> ` + strconv.Itoa(models.STATUS_DEL) + ` and user_name like '%` + username + `%' and user_id in 
62
+		(status> ` + strconv.Itoa(models.STATUS_DEL) + ` and user_name like '%` + username + `%' and user.user_id in 
82 63
 		(select user_id from sys_user_tag a inner join sys_tag_case b on a.tag_id=b.tag_id where b.case_id in ('` + strings.Replace(caseids, ",", "','", -1) + `')))`
83 64
 
84 65
 	if typeid != "" {
85
-		sql = sql + " and user_id in (select user_id from sys_user_type where type_id = '" + typeid + "')"
66
+		sql = sql + " and user.user_id in (select user_id from sys_user_type where type_id = '" + typeid + "')"
86 67
 	}
87 68
 	err := m.db.Sql(sql).Find(&users)
88 69
 	if err != nil {
@@ -96,7 +77,7 @@ type UserInfo struct {
96 77
 	model.SysUser `xorm:"extends"`
97 78
 	UserType      []model.TdUserType
98 79
 	UserTag       []model.SysTag
99
-	UserCase      []model.SysCase
80
+	UserCase      []model.SysUserCase
100 81
 	UserRole      []model.SysRole
101 82
 	UserMenu      []model.SysMenu
102 83
 }
@@ -111,12 +92,23 @@ type SysUserForm struct {
111 92
 
112 93
 // GetUserByID 根据ID获取用户信息
113 94
 func (m *UserDAO) GetUserByID(userid string) (*UserInfo, error) {
114
-	var userinfo = UserInfo{}
115
-	_, err := m.db.Table("sys_user").Where("user_id=?", userid).And("status>" + strconv.Itoa(models.STATUS_DEL)).Get(&userinfo)
95
+	var userinfo []UserInfo
96
+	sql := `select * from sys_user where user_id='` + userid + `' and status>` + strconv.Itoa(models.STATUS_DEL)
97
+	err := m.db.Sql(sql).Find(&userinfo)
116 98
 	if err != nil {
117 99
 		return nil, err
118 100
 	}
119
-	return &userinfo, nil
101
+	if len(userinfo) > 0 {
102
+		return &userinfo[0], nil
103
+	}
104
+	return nil, nil
105
+}
106
+
107
+// GetUserTypes 获取所有的用户类型
108
+func (m *UserDAO) GetUserTypes(caseids string) ([]model.TdUserType, error) {
109
+	var usertype []model.TdUserType
110
+	err := m.db.Where("status>" + strconv.Itoa(models.STATUS_DEL)).And("case_id in ('" + strings.Replace(caseids, ",", "','", -1) + "')").Find(&usertype)
111
+	return usertype, err
120 112
 }
121 113
 
122 114
 // GetUserType 获取用户类型
@@ -134,8 +126,9 @@ func (m *UserDAO) GetUserTag(userid string) ([]model.SysTag, error) {
134 126
 }
135 127
 
136 128
 // GetUserCase 获取用户案场
137
-func (m *UserDAO) GetUserCase(userid string) ([]model.SysCase, error) {
138
-	var userCase []model.SysCase
129
+func (m *UserDAO) GetUserCase(userid string) ([]model.SysUserCase, error) {
130
+	var userCase []model.SysUserCase
131
+	// err := m.db.Where("user_id=?", userid).And("status>" + strconv.Itoa(models.STATUS_DEL)).Find(&userCase)
139 132
 	err := m.db.In("case_id", builder.Select("case_id").From("sys_user_case").Where(builder.Eq{"user_id": userid}).And(builder.Gt{"status": models.STATUS_DEL})).Find(&userCase)
140 133
 	return userCase, err
141 134
 }
@@ -220,6 +213,13 @@ func (m *UserDAO) SaveUserRole(userid, roleids string) error {
220 213
 	return err
221 214
 }
222 215
 
216
+// GetUserByRole 根据角色获取用户信息
217
+func (m *UserDAO) GetUserByRole(roleid string) ([]model.SysUserRole, error) {
218
+	var userroles []model.SysUserRole
219
+	err := m.db.Where("role_id=?", roleid).Find(&userroles)
220
+	return userroles, err
221
+}
222
+
223 223
 // DelUserMenu 删除用户对应的菜单信息
224 224
 func (m *UserDAO) DelUserMenu(userid string) error {
225 225
 	sql := "delete from sys_user_menu where user_id='" + userid + "'"
@@ -291,7 +291,7 @@ func (m *UserDAO) ValidatePassword(user *model.SysUser, password string) bool {
291 291
 func (m *UserDAO) UpdatePassword(userID, newPass string) error {
292 292
 	password := encrypt.Md5(newPass, userID)
293 293
 
294
-	sql := "update sys_user set passwd=? where user_id=?"
294
+	sql := "update sys_user set pwd=? where user_id=?"
295 295
 
296 296
 	_, err := m.db.Exec(sql, password, userID)
297 297
 	if err != nil {

+ 94
- 0
models/vipcard/vipcard.go 查看文件

@@ -0,0 +1,94 @@
1
+package vipcard
2
+
3
+import (
4
+	"spaceofcheng/services/models"
5
+	"spaceofcheng/services/models/model"
6
+	"spaceofcheng/services/utils"
7
+	"strconv"
8
+	"strings"
9
+	"time"
10
+
11
+	"github.com/go-xorm/xorm"
12
+)
13
+
14
+// ChannelDAO 当前数据库操作对象
15
+type VipcardDAO struct {
16
+	ctx *utils.Context
17
+	db  *xorm.Session
18
+}
19
+
20
+// NewVipcardDAO New Inst
21
+func NewVipcardDAO(ctx *utils.Context) *VipcardDAO {
22
+	return &VipcardDAO{
23
+		ctx: ctx,
24
+		db:  ctx.DB,
25
+	}
26
+}
27
+
28
+type VipChild struct {
29
+	model.TaVipCardChild `xorm:"extendes"`
30
+	CaesName             string
31
+	CustomerName         string
32
+}
33
+
34
+// GetVipCardList获取VIP卡列表
35
+func (m *VipcardDAO) GetVipCardList(caseid string) ([]VipChild, error) {
36
+	var vipcards []VipChild
37
+	sql := `SELECT
38
+	vcc.*,
39
+	sc.case_name,
40
+	tc.customer_name
41
+FROM
42
+	ta_vip_card_child vcc
43
+	INNER JOIN ta_vip_card vc ON vcc.vip_card_id = vc.vip_card_id
44
+	INNER JOIN sys_case sc ON vc.case_id = sc.case_id 
45
+	INNER JOIN ta_customer tc on vcc.customer_id = tc.customer_id
46
+WHERE
47
+	vcc.status > 0 ` + strconv.Itoa(models.STATUS_DEL) +
48
+		`AND sc.case_id IN(` + strings.Replace(caseid, ",", "','", -1) + `) `
49
+	err := m.db.Sql(sql).Find(&vipcards)
50
+	return vipcards, err
51
+}
52
+
53
+// AddVipCard 新增VIP卡
54
+func (m *VipcardDAO) AddVipCard(vipCard model.TaVipCard) (*model.TaVipCard, error) {
55
+	vipCard.VipCardId = utils.GetGUID()
56
+	vipCard.CreateDate = time.Now()
57
+	vipCard.Status = models.STATUS_NORMAL
58
+	_, err := m.db.Insert(vipCard)
59
+	return &vipCard, err
60
+
61
+}
62
+
63
+// AddVipChildCard 新增VIP子卡
64
+func (m *VipcardDAO) AddVipChildCard(vipChild model.TaVipCardChild) (*model.TaVipCardChild, error) {
65
+	vipChild.CreateDate = time.Now()
66
+	vipChild.VipCardChildId = utils.GetGUID()
67
+	vipChild.Status = models.STATUS_NORMAL
68
+	_, err := m.db.Insert(vipChild)
69
+	return &vipChild, err
70
+}
71
+
72
+// GetVipChildByCode 通过code获取VIP子卡
73
+func (m *VipcardDAO) GetVipChildByCode(vipCode string) (*model.TaVipCardChild, error) {
74
+	var vipChild []model.TaVipCardChild
75
+	err := m.db.Where("status>"+strconv.Itoa(models.STATUS_DEL)).And("vip_card_child_code =?", vipCode).Find(&vipChild)
76
+	if err != nil {
77
+		return nil, err
78
+	}
79
+	if len(vipChild) > 0 {
80
+		return &vipChild[0], nil
81
+	}
82
+	return nil, nil
83
+}
84
+
85
+// UpdateVipChild 更新子卡
86
+func (m *VipcardDAO) UpdateVipChild(vipChild model.TaVipCardChild) error {
87
+	var cols = []string{
88
+		"customer_id",
89
+		"customer_tel",
90
+		"active_date",
91
+	}
92
+	_, err := m.db.Cols(cols...).Where("vip_card_child_id", vipChild.VipCardChildId).Update(vipChild)
93
+	return err
94
+}

+ 31
- 0
routers/common.go 查看文件

@@ -3,6 +3,7 @@ package routers
3 3
 import (
4 4
 	"spaceofcheng/services/controllers"
5 5
 	"spaceofcheng/services/controllers/cases"
6
+	"spaceofcheng/services/controllers/channel"
6 7
 	"spaceofcheng/services/controllers/course"
7 8
 	"spaceofcheng/services/controllers/customer"
8 9
 	"spaceofcheng/services/controllers/goods"
@@ -34,10 +35,20 @@ func getCommonRoutes() beego.LinkNamespace {
34 35
 		// 系统用户
35 36
 		beego.NSRouter("/user", &user.UserController{}, "get:GetUserList"),
36 37
 		beego.NSRouter("/user/:userid", &user.UserController{}, "get:GetUserByID"),
38
+		beego.NSRouter("/user", &user.UserController{}, "post:SaveUser"),
39
+		beego.NSRouter("/user", &user.UserController{}, "put:SaveUser"),
40
+		beego.NSRouter("/user/:userid", &user.UserController{}, "delete:DelUser"),
37 41
 		beego.NSRouter("/user/:userid/password", &user.UserController{}, "put:UpdatePassword"),
38 42
 		beego.NSRouter("/user/password/reset", &user.UserController{}, "put:ResetPassword"),
39 43
 		beego.NSRouter("/signout", &user.UserController{}, "post:SignOut"),
40 44
 
45
+		// 用户类型
46
+		beego.NSRouter("/usertype", &user.UserController{}, "get:GetUserTypes"),
47
+
48
+		// 用户角色
49
+		beego.NSRouter("/userrole", &user.UserController{}, "get:GetUserRole"),
50
+		beego.NSRouter("/userrole", &user.UserController{}, "put:UserMapRole"),
51
+
41 52
 		// cms 位置
42 53
 		beego.NSRouter("/cms/location", &message.MessageController{}, "get:GetLocations"),
43 54
 		beego.NSRouter("/cms/location/:locationid", &message.MessageController{}, "get:GetLocationById"),
@@ -45,6 +56,8 @@ func getCommonRoutes() beego.LinkNamespace {
45 56
 		beego.NSRouter("/cms/location/:locationid", &message.MessageController{}, "put:SaveLocation"),
46 57
 		beego.NSRouter("/cms/location/:locationid", &message.MessageController{}, "delete:DelLocation"),
47 58
 
59
+		beego.NSRouter("/cms/location/:locationid/sort", &message.MessageController{}, "put:UpdateLocationSort"),
60
+
48 61
 		// cms
49 62
 		beego.NSRouter("/cms/info", &message.MessageController{}, "get:GetCmsInfoList"),
50 63
 		beego.NSRouter("/cms/info/:infoid", &message.MessageController{}, "get:GetCmsInfoByID"),
@@ -72,6 +85,15 @@ func getCommonRoutes() beego.LinkNamespace {
72 85
 		beego.NSRouter("/cms/case", &message.MessageController{}, "post:SaveCmsCase"),
73 86
 		beego.NSRouter("/cms/case/:cmscaseid", &message.MessageController{}, "put:SaveCmsCase"),
74 87
 		beego.NSRouter("/cms/case/:cmscaseid", &message.MessageController{}, "delete:DelCmsCase"),
88
+		beego.NSRouter("/cms/caseshow/:cmscaseid", &message.MessageController{}, "put:CmsCaseShow"),
89
+		beego.NSRouter("/cms/casehide/:cmscaseid", &message.MessageController{}, "put:CmsCaseHide"),
90
+
91
+		// tag 标签
92
+		beego.NSRouter("/case/tag", &cases.CaseController{}, "get:GetTagList"),
93
+		beego.NSRouter("/case/tag/:tagid", &cases.CaseController{}, "get:GetTagByID"),
94
+		beego.NSRouter("/case/tag", &cases.CaseController{}, "post:SaveCaseTag"),
95
+		beego.NSRouter("/case/tag", &cases.CaseController{}, "put:SaveCaseTag"),
96
+		beego.NSRouter("/case/tag/:tagid", &cases.CaseController{}, "delete:DelCaseTag"),
75 97
 
76 98
 		// caseuser 案场人员
77 99
 		beego.NSRouter("/case/user", &cases.CaseController{}, "get:GetCaseUserByCase"),
@@ -115,6 +137,12 @@ func getCommonRoutes() beego.LinkNamespace {
115 137
 		beego.NSRouter("/case/table", &cases.CaseController{}, "put:SaveCaseTable"),
116 138
 		beego.NSRouter("/case/table/:tableid", &cases.CaseController{}, "delete:DelCaseTable"),
117 139
 
140
+		beego.NSRouter("/channel", &channel.ChannelController{}, "get:GetChannelList"),
141
+		beego.NSRouter("/channel/:channelId", &channel.ChannelController{}, "get:GetChannelById"),
142
+		beego.NSRouter("/channel", &channel.ChannelController{}, "post:SaveChannel"),
143
+		beego.NSRouter("/channel", &channel.ChannelController{}, "put:SaveChannel"),
144
+		beego.NSRouter("/channel/:channelId", &channel.ChannelController{}, "delete:DeleteChannel"),
145
+
118 146
 		// role 角色
119 147
 		beego.NSRouter("/role", &system.RoleController{}, "get:GetRoleList"),
120 148
 		beego.NSRouter("/role/:roleid", &system.RoleController{}, "get:GetRoleByID"),
@@ -122,6 +150,9 @@ func getCommonRoutes() beego.LinkNamespace {
122 150
 		beego.NSRouter("/role", &system.RoleController{}, "put:SaveCaseRole"),
123 151
 		beego.NSRouter("/role/:roleid", &system.RoleController{}, "delete:DelCaseRole"),
124 152
 
153
+		beego.NSRouter("/rolemenu/:roleid", &system.RoleController{}, "get:GetRoleMenuByRole"),
154
+		beego.NSRouter("/rolemenu/:roleid", &system.RoleController{}, "put:SaveRoleMenus"),
155
+
125 156
 		// course 课程
126 157
 		beego.NSRouter("/course/taglist", &course.CourseController{}, "get:GetCourseTagsByPage"),
127 158
 		beego.NSRouter("/course/tag", &course.CourseController{}, "get:GetCourseTags"),

+ 5
- 0
service/cases/area.go 查看文件

@@ -4,6 +4,7 @@ import (
4 4
 	"spaceofcheng/services/models/cases"
5 5
 	"spaceofcheng/services/models/model"
6 6
 	"spaceofcheng/services/service"
7
+	"spaceofcheng/services/utils"
7 8
 
8 9
 	"github.com/astaxie/beego"
9 10
 )
@@ -44,6 +45,10 @@ func (s *CaseServ) GetCaseAreaByID(areaid string) (*model.SysCaseArea, error) {
44 45
 // SaveCaseArea 保存区域
45 46
 func (s *CaseServ) SaveCaseArea(area model.SysCaseArea) (*model.SysCaseArea, error) {
46 47
 	var err error
48
+	if area.AreaName == "" {
49
+		return nil, utils.LogError("区域名称不能为空!")
50
+	}
51
+
47 52
 	if area.AreaId == "" {
48 53
 		_, err = s.dao.AddCaseArea(&area)
49 54
 	} else {

+ 7
- 0
service/cases/cases.go 查看文件

@@ -63,6 +63,13 @@ func (s *CaseServ) GetCaseByID(caseid string) (*model.SysCase, error) {
63 63
 func (s *CaseServ) SaveCase(caseinfo model.SysCase) (*model.SysCase, error) {
64 64
 	var newInfo *model.SysCase
65 65
 	var err error
66
+	if caseinfo.CaseName == "" {
67
+		return nil, utils.LogError("案场名称不能为空!")
68
+	}
69
+	if caseinfo.Coordinate == "" {
70
+		return nil, utils.LogError("案场经纬度不能为空!")
71
+	}
72
+
66 73
 	if caseinfo.CaseId == "" {
67 74
 		newInfo, err = s.dao.AddCase(caseinfo)
68 75
 		if err != nil {

+ 40
- 4
service/cases/caseuser.go 查看文件

@@ -1,11 +1,38 @@
1 1
 package cases
2 2
 
3
-import "spaceofcheng/services/models/model"
3
+import (
4
+	"spaceofcheng/services/models/model"
5
+	"spaceofcheng/services/service"
6
+	"spaceofcheng/services/utils"
7
+
8
+	"github.com/astaxie/beego"
9
+)
4 10
 
5 11
 // GetCaseUserByCase 根据案场id获取案场相关人员信息
6
-func (s *CaseServ) GetCaseUserByCase(caseid string) ([]model.SysCaseUser, error) {
7
-	caseusers, err := s.dao.GetCaseUserByCase(caseid)
8
-	return caseusers, err
12
+func (s *CaseServ) GetCaseUserByCase(caseid string, page int, pageSize int) (map[string]interface{}, error) {
13
+	if pageSize == 0 {
14
+		pageSize = service.PAGENUM
15
+	}
16
+	if page == 0 {
17
+		page = 1
18
+	}
19
+	caseusers, err := s.dao.GetCaseUserByCase(caseid, page, pageSize)
20
+	if err != nil {
21
+		beego.Error(err)
22
+		return nil, err
23
+	}
24
+	total, err := s.dao.GetCaseUserCount(caseid)
25
+	if err != nil {
26
+		beego.Error(err)
27
+		return nil, err
28
+	}
29
+
30
+	return map[string]interface{}{
31
+		"list":     caseusers,
32
+		"pagesize": pageSize,
33
+		"pagenum":  total,
34
+		"page":     page,
35
+	}, err
9 36
 }
10 37
 
11 38
 // GetCaseUserByType 根据类型获取人员
@@ -24,6 +51,15 @@ func (s *CaseServ) GetCaseUserByID(userid string) (*model.SysCaseUser, error) {
24 51
 func (s *CaseServ) SaveCaseUser(caseuser model.SysCaseUser) (*model.SysCaseUser, error) {
25 52
 	var newInfo *model.SysCaseUser
26 53
 	var err error
54
+	if caseuser.UserName == "" {
55
+		return nil, utils.LogError("人员名称不能为空!")
56
+	}
57
+	if caseuser.UserType == "" {
58
+		return nil, utils.LogError("人员类型不能为空!")
59
+	}
60
+	if caseuser.Tel == "" {
61
+		return nil, utils.LogError("人员电话不能为空!")
62
+	}
27 63
 	if caseuser.CaseUserId == "" {
28 64
 		newInfo, err = s.dao.AddCaseUser(caseuser)
29 65
 	} else {

+ 4
- 0
service/cases/equipment.go 查看文件

@@ -3,6 +3,7 @@ package cases
3 3
 import (
4 4
 	"spaceofcheng/services/models/model"
5 5
 	"spaceofcheng/services/service"
6
+	"spaceofcheng/services/utils"
6 7
 
7 8
 	"github.com/astaxie/beego"
8 9
 )
@@ -43,6 +44,9 @@ func (s *CaseServ) GetCaseEquipmentByID(equipmentid string) (*model.SysCaseEquip
43 44
 // SaveCaseEquipment 保存体检设备
44 45
 func (s *CaseServ) SaveCaseEquipment(equipment model.SysCaseEquipment) (*model.SysCaseEquipment, error) {
45 46
 	var err error
47
+	if equipment.Name == "" {
48
+		return nil, utils.LogError("体检设备名称不能为空!")
49
+	}
46 50
 	if equipment.EquipmentId == "" {
47 51
 		_, err = s.dao.AddCaseEquipment(&equipment)
48 52
 	} else {

+ 14
- 6
service/cases/key.go 查看文件

@@ -1,10 +1,12 @@
1 1
 package cases
2 2
 
3 3
 import (
4
+	"spaceofcheng/services/models/cases"
4 5
 	"spaceofcheng/services/models/model"
5 6
 	"spaceofcheng/services/service"
6 7
 	"spaceofcheng/services/utils"
7 8
 	"strconv"
9
+	"time"
8 10
 
9 11
 	"github.com/astaxie/beego"
10 12
 )
@@ -18,6 +20,7 @@ func (s *CaseServ) GetKeysByCase(caseid, num string, page, pageSize int) (map[st
18 20
 			isdict = true
19 21
 		}
20 22
 	}
23
+
21 24
 	if !isdict {
22 25
 		return nil, utils.LogError("您没有该案场的权限!")
23 26
 	}
@@ -32,7 +35,7 @@ func (s *CaseServ) GetKeysByCase(caseid, num string, page, pageSize int) (map[st
32 35
 		return nil, err
33 36
 	}
34 37
 
35
-	total, err := s.dao.GetCaseCount(caseid, num)
38
+	total, err := s.dao.GetKeysCountByCase(caseid, num)
36 39
 	if err != nil {
37 40
 		beego.Error(err)
38 41
 		return nil, err
@@ -44,8 +47,10 @@ func (s *CaseServ) GetKeysByCase(caseid, num string, page, pageSize int) (map[st
44 47
 			beego.Error(err)
45 48
 			return nil, err
46 49
 		}
47
-		keys[index].CustomerId = use.CustomerId
48
-		keys[index].CustomerName = use.CustomerName
50
+		if use != nil {
51
+			keys[index].CustomerId = use.CustomerId
52
+			keys[index].CustomerName = use.CustomerName
53
+		}
49 54
 	}
50 55
 
51 56
 	return map[string]interface{}{
@@ -64,9 +69,12 @@ func (s *CaseServ) AddKeys(orgid, caseid string, beginnum, endnum int) error {
64 69
 
65 70
 	for i := beginnum; i <= endnum; i++ {
66 71
 		key := model.TaCaseKey{
67
-			OrgId:   orgid,
68
-			CaseId:  caseid,
69
-			LockNum: strconv.Itoa(i),
72
+			OrgId:      orgid,
73
+			CaseId:     caseid,
74
+			LockNum:    strconv.Itoa(i),
75
+			KeyId:      utils.GetGUID(),
76
+			Status:     cases.STATUS_UNLOCK,
77
+			CreateDate: time.Now(),
70 78
 		}
71 79
 		_, err := s.dao.AddKey(key)
72 80
 		if err != nil {

+ 4
- 0
service/cases/table.go 查看文件

@@ -3,6 +3,7 @@ package cases
3 3
 import (
4 4
 	"spaceofcheng/services/models/model"
5 5
 	"spaceofcheng/services/service"
6
+	"spaceofcheng/services/utils"
6 7
 
7 8
 	"github.com/astaxie/beego"
8 9
 )
@@ -43,6 +44,9 @@ func (s *CaseServ) GetCaseTableByID(tableid string) (*model.SysCaseTable, error)
43 44
 // SaveCaseTable 保存桌位
44 45
 func (s *CaseServ) SaveCaseTable(table model.SysCaseTable) (*model.SysCaseTable, error) {
45 46
 	var err error
47
+	if table.TableNo == "" {
48
+		return nil, utils.LogError("桌位名称不能为空")
49
+	}
46 50
 	if table.TableId == "" {
47 51
 		_, err = s.dao.AddCaseTable(&table)
48 52
 	} else {

+ 7
- 0
service/cases/tag.go 查看文件

@@ -4,6 +4,7 @@ import (
4 4
 	"spaceofcheng/services/models/cases"
5 5
 	"spaceofcheng/services/models/model"
6 6
 	"spaceofcheng/services/service"
7
+	"spaceofcheng/services/utils"
7 8
 
8 9
 	"github.com/astaxie/beego"
9 10
 )
@@ -57,6 +58,12 @@ func (s *CaseServ) GetTagByID(tagid string) (*cases.Tag, error) {
57 58
 func (s *CaseServ) SaveTag(tag model.SysTag, caseids string) (*model.SysTag, error) {
58 59
 	var newInfo *model.SysTag
59 60
 	var err error
61
+	if tag.TagName == "" {
62
+		return nil, utils.LogError("标签名称不能为空!")
63
+	}
64
+	if caseids == "" {
65
+		return nil, utils.LogError("案场不能为空!")
66
+	}
60 67
 	if tag.TagId == "" {
61 68
 		newInfo, err = s.dao.AddTag(tag)
62 69
 	} else {

+ 68
- 0
service/channel/channel.go 查看文件

@@ -0,0 +1,68 @@
1
+package channel
2
+
3
+import (
4
+	"spaceofcheng/services/models/channel"
5
+	"spaceofcheng/services/models/model"
6
+	"spaceofcheng/services/service"
7
+	"spaceofcheng/services/utils"
8
+)
9
+
10
+// ChannelServ 系统处理
11
+type ChannelServ struct {
12
+	ctx *utils.Context
13
+	dao *channel.ChannelDAO
14
+}
15
+
16
+// NewChannelServ 初始化
17
+func NewChannelServ(ctx *utils.Context) *ChannelServ {
18
+	return &ChannelServ{
19
+		ctx: ctx,
20
+		dao: channel.NewChannelDAO(ctx),
21
+	}
22
+}
23
+
24
+// GetChannelList 获取渠道列表
25
+func (s *ChannelServ) GetChannelList(caseid string, page, pageSize int) (map[string]interface{}, error) {
26
+	if pageSize == 0 {
27
+		pageSize = service.PAGENUM
28
+	}
29
+	channels, err := s.dao.GetChannels(caseid, page, pageSize)
30
+	if err != nil {
31
+		return nil, err
32
+	}
33
+	total, err := s.dao.GetChannelsCount(caseid)
34
+	if err != nil {
35
+		return nil, err
36
+	}
37
+	return map[string]interface{}{
38
+		"list":     channels,
39
+		"pageSize": pageSize,
40
+		"pagenum":  total,
41
+		"page":     page,
42
+	}, err
43
+}
44
+
45
+// GetChannelById 根据渠道id获取渠道
46
+func (s *ChannelServ) GetChannelById(channelId string) (*model.TaChannel, error) {
47
+	channel, err := s.dao.GetChannelById(channelId)
48
+	return channel, err
49
+}
50
+
51
+// SaveChannel 保存渠道
52
+func (s *ChannelServ) SaveChannel(channel model.TaChannel) (*model.TaChannel, error) {
53
+	var newChannel *model.TaChannel
54
+	var err error
55
+	if channel.ChannelId == "" {
56
+		newChannel, err = s.dao.AddNewChannel(channel)
57
+	} else {
58
+		err = s.dao.UpdateChannel(channel)
59
+		newChannel = &channel
60
+	}
61
+	return newChannel, err
62
+}
63
+
64
+// DeleteChannel 删除渠道
65
+func (s *ChannelServ) DeleteChannel(caseid string) error {
66
+	err := s.dao.DeleteChannel(caseid)
67
+	return err
68
+}

+ 49
- 24
service/message/cmscase.go 查看文件

@@ -5,6 +5,7 @@ import (
5 5
 	"spaceofcheng/services/models/message"
6 6
 	"spaceofcheng/services/models/model"
7 7
 	"spaceofcheng/services/service"
8
+	"spaceofcheng/services/utils"
8 9
 	"strings"
9 10
 
10 11
 	"github.com/astaxie/beego"
@@ -77,6 +78,14 @@ func (s *MessageServ) GetCmsCasesByID(cmscaseid string) (*message.CmsCase, error
77 78
 func (s *MessageServ) SaveCmsCase(cmscase model.TaCmsCase, courseids, imgs, detailimgs string) (*model.TaCmsCase, error) {
78 79
 	var newInfo *model.TaCmsCase
79 80
 	var err error
81
+	if cmscase.Name == "" {
82
+		return nil, utils.LogError("项目名称不能为空!")
83
+	}
84
+
85
+	if cmscase.Title == "" {
86
+		return nil, utils.LogError("项目标题不能为空!")
87
+	}
88
+
80 89
 	if cmscase.CmsCaseId == "" {
81 90
 		newInfo, err = s.dao.AddCmsCase(cmscase)
82 91
 	} else {
@@ -105,32 +114,36 @@ func (s *MessageServ) SaveCmsCase(cmscase model.TaCmsCase, courseids, imgs, deta
105 114
 		return nil, err
106 115
 	}
107 116
 
108
-	arrimg := strings.Split(imgs, ",")
109
-	for index, img := range arrimg {
110
-		CmsImg := model.TaCmsCaseImage{
111
-			ImageType:    models.IMAGETYPE_COVER,
112
-			Sort:         (index + 1),
113
-			CaseImageUrl: img,
114
-			CmsCaseId:    newInfo.CmsCaseId,
115
-		}
116
-		err = s.dao.SaveCmsCaseImg(CmsImg)
117
-		if err != nil {
118
-			beego.Error(err)
119
-			return nil, err
117
+	if imgs != "" {
118
+		arrimg := strings.Split(imgs, ",")
119
+		for index, img := range arrimg {
120
+			CmsImg := model.TaCmsCaseImage{
121
+				ImageType:    models.IMAGETYPE_COVER,
122
+				Sort:         (index + 1),
123
+				CaseImageUrl: img,
124
+				CmsCaseId:    newInfo.CmsCaseId,
125
+			}
126
+			err = s.dao.SaveCmsCaseImg(CmsImg)
127
+			if err != nil {
128
+				beego.Error(err)
129
+				return nil, err
130
+			}
120 131
 		}
121 132
 	}
122
-	arrdetailimg := strings.Split(detailimgs, ",")
123
-	for index, img := range arrdetailimg {
124
-		CmsImg := model.TaCmsCaseImage{
125
-			ImageType:    models.IMAGETYPE_DETAIL,
126
-			Sort:         (index + 1),
127
-			CaseImageUrl: img,
128
-			CmsCaseId:    newInfo.CmsCaseId,
129
-		}
130
-		err = s.dao.SaveCmsCaseImg(CmsImg)
131
-		if err != nil {
132
-			beego.Error(err)
133
-			return nil, err
133
+	if detailimgs != "" {
134
+		arrdetailimg := strings.Split(detailimgs, ",")
135
+		for index, img := range arrdetailimg {
136
+			CmsImg := model.TaCmsCaseImage{
137
+				ImageType:    models.IMAGETYPE_DETAIL,
138
+				Sort:         (index + 1),
139
+				CaseImageUrl: img,
140
+				CmsCaseId:    newInfo.CmsCaseId,
141
+			}
142
+			err = s.dao.SaveCmsCaseImg(CmsImg)
143
+			if err != nil {
144
+				beego.Error(err)
145
+				return nil, err
146
+			}
134 147
 		}
135 148
 	}
136 149
 	return newInfo, err
@@ -141,3 +154,15 @@ func (s *MessageServ) DelCmsCase(cmscaseid string) error {
141 154
 	err := s.dao.DelCmsCase(cmscaseid)
142 155
 	return err
143 156
 }
157
+
158
+// CmsCaseShow 前台展示
159
+func (s *MessageServ) CmsCaseShow(cmscaseid string) error {
160
+	err := s.dao.CmsCaseShow(cmscaseid)
161
+	return err
162
+}
163
+
164
+// CmsCaseHide 前台隐藏
165
+func (s *MessageServ) CmsCaseHide(cmscaseid string) error {
166
+	err := s.dao.CmsCaseHide(cmscaseid)
167
+	return err
168
+}

+ 32
- 1
service/message/location.go 查看文件

@@ -1,6 +1,12 @@
1 1
 package message
2 2
 
3
-import "spaceofcheng/services/models/model"
3
+import (
4
+	"spaceofcheng/services/models/model"
5
+	"spaceofcheng/services/utils"
6
+	"strings"
7
+
8
+	"github.com/astaxie/beego"
9
+)
4 10
 
5 11
 // GetLocationList 获取列表
6 12
 func (s *MessageServ) GetLocationList(issys, orgid string) ([]model.TdCmsImageLocation, error) {
@@ -17,6 +23,12 @@ func (s *MessageServ) GetLocationByID(id string) (*model.TdCmsImageLocation, err
17 23
 // SaveLocation 保存
18 24
 func (s *MessageServ) SaveLocation(location model.TdCmsImageLocation) (*model.TdCmsImageLocation, error) {
19 25
 	if location.LocationId == "" {
26
+		sort, err := s.dao.GetLocationMaxSort("0", location.OrgId)
27
+		if err != nil {
28
+			beego.Error(err)
29
+			return nil, err
30
+		}
31
+		location.OrderNo = sort + 1
20 32
 		newlocation, err := s.dao.AddLocation(location)
21 33
 		return newlocation, err
22 34
 	}
@@ -29,3 +41,22 @@ func (s *MessageServ) DelLocation(locationID string) error {
29 41
 	err := s.dao.DelLocation(locationID)
30 42
 	return err
31 43
 }
44
+
45
+// UpdateLocationSort 更新顺序
46
+func (s *MessageServ) UpdateLocationSort(locations string) error {
47
+	if locations == "" {
48
+		return utils.LogError("没有需要修改的5A信息!")
49
+	}
50
+	arrlocation := strings.Split(locations, ",")
51
+	for _, loc := range arrlocation {
52
+		loc := strings.Split(loc, ":")
53
+		if len(loc) < 2 {
54
+			return utils.LogError("修改信息不全!")
55
+		}
56
+		err := s.dao.UpdateLocationSort(loc)
57
+		if err != nil {
58
+			return err
59
+		}
60
+	}
61
+	return nil
62
+}

+ 20
- 0
service/message/news.go 查看文件

@@ -1,6 +1,7 @@
1 1
 package message
2 2
 
3 3
 import (
4
+	"errors"
4 5
 	"spaceofcheng/services/models/message"
5 6
 	"spaceofcheng/services/models/model"
6 7
 	"spaceofcheng/services/service"
@@ -61,6 +62,25 @@ func (s *MessageServ) GetNewsByID(newsid string) (*message.CmsNews, error) {
61 62
 func (s *MessageServ) SaveNews(news model.TaCmsNews, locationids string) (*model.TaCmsNews, error) {
62 63
 	var newInfo *model.TaCmsNews
63 64
 	var err error
65
+	if news.Title == "" {
66
+		return nil, errors.New("咨询标题不允许为空!")
67
+	}
68
+
69
+	if news.ImageUrl == "" {
70
+		return nil, errors.New("图片不允许为空!")
71
+	}
72
+
73
+	if news.ForwardType == "" {
74
+		return nil, errors.New("跳转类型不允许为空!")
75
+	}
76
+	if news.ForwardType == ForwardTypeUrl && news.ForwardUrl == "" {
77
+		return nil, errors.New("跳转地址不允许为空!")
78
+	}
79
+
80
+	if news.ForwardType == ForwardTypeCourse && news.CaseId == "" {
81
+		return nil, errors.New("跳转资源不允许为空!")
82
+	}
83
+
64 84
 	if news.NewsId == "" {
65 85
 		newInfo, err = s.dao.AddNews(news)
66 86
 	} else {

+ 41
- 18
service/system/role.go 查看文件

@@ -24,19 +24,19 @@ func NewRoleServ(ctx *utils.Context) *RoleServ {
24 24
 }
25 25
 
26 26
 // GetRoleList 获取Role列表
27
-func (s *RoleServ) GetRoleList(caseids string, page, pageSize int) (map[string]interface{}, error) {
27
+func (s *RoleServ) GetRoleList(caseids, name, caseid string, page, pageSize int) (map[string]interface{}, error) {
28 28
 	if pageSize == 0 {
29 29
 		pageSize = service.PAGENUM
30 30
 	}
31 31
 	if page == 0 {
32 32
 		page = 1
33 33
 	}
34
-	roles, err := s.dao.GetRoleList(caseids, page, pageSize)
34
+	roles, err := s.dao.GetRoleList(caseids, name, caseid, page, pageSize)
35 35
 	if err != nil {
36 36
 		beego.Error(err)
37 37
 		return nil, err
38 38
 	}
39
-	total, err := s.dao.GetRoleCount(caseids)
39
+	total, err := s.dao.GetRoleCount(caseids, name, caseid)
40 40
 	if err != nil {
41 41
 		beego.Error(err)
42 42
 		return nil, err
@@ -51,25 +51,35 @@ func (s *RoleServ) GetRoleList(caseids string, page, pageSize int) (map[string]i
51 51
 }
52 52
 
53 53
 // GetRoleByID 根据ID获取角色
54
-func (s *RoleServ) GetRoleByID(roleid string) (*system.Role, error) {
54
+func (s *RoleServ) GetRoleByID(roleid string) (*model.SysRole, error) {
55 55
 	role, err := s.dao.GetRoleByID(roleid)
56 56
 	if err != nil {
57 57
 		beego.Error(err)
58 58
 		return nil, err
59 59
 	}
60
-	if role != nil {
61
-		menus, err := s.dao.GetRoleMenuByRoleID(roleid)
62
-		if err != nil {
63
-			beego.Error(err)
64
-			return nil, err
65
-		}
66
-		role.RoleMenu = menus
67
-	}
60
+	// if role != nil {
61
+	// 	menus, err := s.dao.GetRoleMenuByRoleID(roleid)
62
+	// 	if err != nil {
63
+	// 		beego.Error(err)
64
+	// 		return nil, err
65
+	// 	}
66
+	// 	role.RoleMenu = menus
67
+	// }
68 68
 	return role, err
69 69
 }
70 70
 
71
+// GetRoleMeneByID 根据ID获取角色菜单
72
+func (s *RoleServ) GetRoleMeneByID(roleid string) ([]model.SysMenu, error) {
73
+	menus, err := s.dao.GetRoleMenuByRoleID(roleid)
74
+	if err != nil {
75
+		beego.Error(err)
76
+		return nil, err
77
+	}
78
+	return menus, nil
79
+}
80
+
71 81
 // SaveRole 保存角色
72
-func (s *RoleServ) SaveRole(role model.SysRole, menuids string) (*model.SysRole, error) {
82
+func (s *RoleServ) SaveRole(role model.SysRole) (*model.SysRole, error) {
73 83
 	var newInfo *model.SysRole
74 84
 	var err error
75 85
 	if role.RoleId == "" {
@@ -82,17 +92,30 @@ func (s *RoleServ) SaveRole(role model.SysRole, menuids string) (*model.SysRole,
82 92
 		beego.Error(err)
83 93
 		return nil, err
84 94
 	}
85
-	err = s.dao.DelRoleMenu(newInfo.RoleId)
95
+
96
+	return newInfo, err
97
+}
98
+
99
+// SaveRoleMenu 保存角色菜单
100
+func (s *RoleServ) SaveRoleMenu(roleid, menuids string) error {
101
+	var err error
102
+	err = s.dao.DelRoleMenu(roleid)
86 103
 	if err != nil {
87 104
 		beego.Error(err)
88
-		return nil, err
105
+		return err
89 106
 	}
90
-	err = s.dao.SaveRoleMenu(newInfo.RoleId, menuids)
107
+	err = s.dao.SaveRoleMenu(roleid, menuids)
91 108
 	if err != nil {
92 109
 		beego.Error(err)
93
-		return nil, err
110
+		return err
94 111
 	}
95
-	return newInfo, err
112
+	err = s.dao.DelUserMenusByRole(roleid)
113
+	if err != nil {
114
+		beego.Error(err)
115
+		return err
116
+	}
117
+	err = s.dao.SaveUserMenus(roleid)
118
+	return err
96 119
 }
97 120
 
98 121
 // DelRole 删除角色

+ 21
- 0
service/user.go 查看文件

@@ -264,8 +264,29 @@ func (s *UserServ) DelUser(userid string) error {
264 264
 	return err
265 265
 }
266 266
 
267
+// GetUserTypes 获取用户类型
268
+func (s *UserServ) GetUserTypes(caseids string) ([]model.TdUserType, error) {
269
+	types, err := s.dao.GetUserTypes(caseids)
270
+	return types, err
271
+}
272
+
273
+// GetUserRoles 获取用户角色
274
+func (s *UserServ) GetUserRoles(userid string) ([]model.SysRole, error) {
275
+	if userid == "" {
276
+		return nil, utils.LogError("没有对应的用户信息!")
277
+	}
278
+	userroles, err := s.dao.GetUserRole(userid)
279
+	return userroles, err
280
+}
281
+
267 282
 // SaveUserRole 保存用户对应角色
268 283
 func (s *UserServ) SaveUserRole(userid, roleids string) error {
284
+	if userid == "" {
285
+		return utils.LogError("没有对应的用户信息!")
286
+	}
287
+	if roleids == "" {
288
+		return utils.LogError("没有对应的角色信息!")
289
+	}
269 290
 	err := s.dao.DelUserRole(userid)
270 291
 	if err != nil {
271 292
 		return err

+ 20
- 0
service/vipcard/vipcard.go 查看文件

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