wangfei 6 年 前
コミット
2ff23977f4
共有9 個のファイルを変更した382 個の追加1 個の削除を含む
  1. 118
    0
      controllers/goods/goods.go
  2. 21
    0
      models/goods/goods.go
  3. 57
    0
      models/goods/spec.go
  4. 59
    0
      models/goods/type.go
  5. 1
    1
      models/system/user.go
  6. 20
    0
      service/goods/goods.go
  7. 51
    0
      service/goods/spec.go
  8. 51
    0
      service/goods/type.go
  9. 4
    0
      service/sys.go

+ 118
- 0
controllers/goods/goods.go ファイルの表示

@@ -0,0 +1,118 @@
1
+package goods
2
+
3
+import (
4
+	"spaceofcheng/services/controllers"
5
+	"spaceofcheng/services/models/model"
6
+	"spaceofcheng/services/service/goods"
7
+)
8
+
9
+// GoodsController 商品
10
+type GoodsController struct {
11
+	dao *goods.GoodsServ
12
+	controllers.BaseController
13
+}
14
+
15
+// Constructor 初始化 Controller
16
+// @Title Constructor
17
+// @Description 初始化 Controller, 系统自动调用
18
+func (c *GoodsController) Constructor() {
19
+	c.dao = goods.NewGoodsServ(c.Context)
20
+}
21
+
22
+// GetGoodsType 获取商品分类列表
23
+func (c *GoodsController) GetGoodsType() {
24
+	caseids := c.GetString("caseid")
25
+	if caseids == "" {
26
+		cases := c.Context.Get("cases").([]model.SysUserCase)
27
+		caseids = c.GetCaseIDs(cases)
28
+	}
29
+	page, _ := c.GetInt("page")
30
+	pageSize, _ := c.GetInt("pagesize")
31
+	goodstype, err := c.dao.GetGoodsType(caseids, page, pageSize)
32
+	if err != nil {
33
+		c.ResponseError(err)
34
+	}
35
+	c.ResponseJSON(goodstype)
36
+}
37
+
38
+// GetGoodsTypeByID 根据ID获取商品分类
39
+func (c *GoodsController) GetGoodsTypeByID() {
40
+	typeid := c.GetString(":typeid")
41
+	goodsType, err := c.dao.GetGoodsTypeByID(typeid)
42
+	if err != nil {
43
+		c.ResponseError(err)
44
+	}
45
+	c.ResponseJSON(goodsType)
46
+}
47
+
48
+// SaveGoodsType 保存商品分类
49
+func (c *GoodsController) SaveGoodsType() {
50
+	goodsType := model.TdGoodsType{}
51
+	if err := c.ParseForm(&goodsType); err != nil {
52
+		c.ResponseError(err)
53
+	}
54
+	newtype, err := c.dao.SaveGoodsType(goodsType)
55
+	if err != nil {
56
+		c.ResponseError(err)
57
+	}
58
+	c.ResponseJSON(newtype)
59
+}
60
+
61
+// DelGoodsType 删除商品分类
62
+func (c *GoodsController) DelGoodsType() {
63
+	typeid := c.GetString(":typeid")
64
+	err := c.dao.DelGoodsType(typeid)
65
+	if err != nil {
66
+		c.ResponseError(err)
67
+	}
68
+	c.ResponseJSON("删除成功!")
69
+}
70
+
71
+// GetGoodsSpec 获取商品规格列表
72
+func (c *GoodsController) GetGoodsSpec() {
73
+	caseids := c.GetString("caseid")
74
+	if caseids == "" {
75
+		cases := c.Context.Get("cases").([]model.SysUserCase)
76
+		caseids = c.GetCaseIDs(cases)
77
+	}
78
+	page, _ := c.GetInt("page")
79
+	pageSize, _ := c.GetInt("pagesize")
80
+	goodsSpec, err := c.dao.GetGoodsSpec(caseids, page, pageSize)
81
+	if err != nil {
82
+		c.ResponseError(err)
83
+	}
84
+	c.ResponseJSON(goodsSpec)
85
+}
86
+
87
+// GetGoodsSpecByID 根据ID获取商品分类
88
+func (c *GoodsController) GetGoodsSpecByID() {
89
+	specid := c.GetString(":specid")
90
+	goodsSpec, err := c.dao.GetGoodsSpecByID(specid)
91
+	if err != nil {
92
+		c.ResponseError(err)
93
+	}
94
+	c.ResponseJSON(goodsSpec)
95
+}
96
+
97
+// SaveGoodsSpec 保存商品分类
98
+func (c *GoodsController) SaveGoodsSpec() {
99
+	goodsSpec := model.TdSpec{}
100
+	if err := c.ParseForm(&goodsSpec); err != nil {
101
+		c.ResponseError(err)
102
+	}
103
+	newSpec, err := c.dao.SaveGoodsSpec(goodsSpec)
104
+	if err != nil {
105
+		c.ResponseError(err)
106
+	}
107
+	c.ResponseJSON(newSpec)
108
+}
109
+
110
+// DelGoodsSpec 删除商品分类
111
+func (c *GoodsController) DelGoodsSpec() {
112
+	specid := c.GetString(":specid")
113
+	err := c.dao.DelGoodsSpec(specid)
114
+	if err != nil {
115
+		c.ResponseError(err)
116
+	}
117
+	c.ResponseJSON("删除成功!")
118
+}

+ 21
- 0
models/goods/goods.go ファイルの表示

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

+ 57
- 0
models/goods/spec.go ファイルの表示

@@ -0,0 +1,57 @@
1
+package goods
2
+
3
+import (
4
+	"spaceofcheng/services/models"
5
+	"spaceofcheng/services/models/model"
6
+	"spaceofcheng/services/utils"
7
+	"strings"
8
+)
9
+
10
+// GetGoodsSpecCount 获取商品规格总数
11
+func (m *GoodsDAO) GetGoodsSpecCount(caseids string) (int64, error) {
12
+	total, err := m.db.Where("status>?", models.STATUS_DEL).Count()
13
+	return total, err
14
+}
15
+
16
+// GetGoodsSpec 根据案场获取商品规格
17
+func (m *GoodsDAO) GetGoodsSpec(caseids string, page int, pageSize int) ([]model.TdSpec, error) {
18
+	var goodsSpec []model.TdSpec
19
+	err := m.db.Where("status>?", models.STATUS_DEL).And("case_id in ('"+strings.Replace(caseids, ",", "','", -1)+"')").Limit(pageSize, page*pageSize).Find(&goodsSpec)
20
+	return goodsSpec, err
21
+}
22
+
23
+// GetGoodsSpecByID 根据ID获取商品规格
24
+func (m *GoodsDAO) GetGoodsSpecByID(specid string) (*model.TdSpec, error) {
25
+	var goodsSpec = model.TdSpec{}
26
+	_, err := m.db.Where("status>?", models.STATUS_DEL).And("spec_id=?", specid).Get(&goodsSpec)
27
+	return &goodsSpec, err
28
+}
29
+
30
+// AddGoodsSpec 新增商品规格
31
+func (m *GoodsDAO) AddGoodsSpec(goodsSpec *model.TdSpec) (*model.TdSpec, error) {
32
+	goodsSpec.SpecId = utils.GetGUID()
33
+	_, err := m.db.Insert(goodsSpec)
34
+	return goodsSpec, err
35
+}
36
+
37
+// UpdateGoodsSpec 修改商品规格
38
+func (m *GoodsDAO) UpdateGoodsSpec(goodsSpec model.TdSpec) error {
39
+	var cols = []string{
40
+		"spec_name",
41
+	}
42
+	_, err := m.db.Update(goodsSpec, cols, "spec_id=?", goodsSpec.SpecId)
43
+	return err
44
+}
45
+
46
+// DelGoodsSpec 刪除商品规格
47
+func (m *GoodsDAO) DelGoodsSpec(specid string) error {
48
+	var goodsSpec = model.TdSpec{
49
+		SpecId: specid,
50
+		Status: models.STATUS_DEL,
51
+	}
52
+	var cols = []string{
53
+		"status",
54
+	}
55
+	_, err := m.db.Update(goodsSpec, cols, "spec_id=?", goodsSpec.SpecId)
56
+	return err
57
+}

+ 59
- 0
models/goods/type.go ファイルの表示

@@ -0,0 +1,59 @@
1
+package goods
2
+
3
+import (
4
+	"spaceofcheng/services/models"
5
+	"spaceofcheng/services/models/model"
6
+	"spaceofcheng/services/utils"
7
+	"strings"
8
+	"time"
9
+)
10
+
11
+// GetGoodsTypeCount 获取商品类型总数
12
+func (m *GoodsDAO) GetGoodsTypeCount(caseids string) (int64, error) {
13
+	total, err := m.db.Where("status>?", models.STATUS_DEL).Count()
14
+	return total, err
15
+}
16
+
17
+// GetGoodsType 根据案场获取商品类型
18
+func (m *GoodsDAO) GetGoodsType(caseids string, page int, pageSize int) ([]model.TdGoodsType, error) {
19
+	var goodstype []model.TdGoodsType
20
+	err := m.db.Where("status>?", models.STATUS_DEL).And("case_id in ('"+strings.Replace(caseids, ",", "','", -1)+"')").Limit(pageSize, page*pageSize).Desc("create_date").Find(&goodstype)
21
+	return goodstype, err
22
+}
23
+
24
+// GetGoodsTypeByID 根据ID获取商品类型
25
+func (m *GoodsDAO) GetGoodsTypeByID(typeid string) (*model.TdGoodsType, error) {
26
+	var goodstype = model.TdGoodsType{}
27
+	_, err := m.db.Where("status>?", models.STATUS_DEL).And("type_id=?", typeid).Get(&goodstype)
28
+	return &goodstype, err
29
+}
30
+
31
+// AddGoodsType 新增商品类型
32
+func (m *GoodsDAO) AddGoodsType(goodsType *model.TdGoodsType) (*model.TdGoodsType, error) {
33
+	goodsType.TypeId = utils.GetGUID()
34
+	goodsType.CreateDate = time.Now()
35
+	_, err := m.db.Insert(goodsType)
36
+	return goodsType, err
37
+}
38
+
39
+// UpdateGoodsType 修改商品类型
40
+func (m *GoodsDAO) UpdateGoodsType(goodsType model.TdGoodsType) error {
41
+	var cols = []string{
42
+		"type_name",
43
+	}
44
+	_, err := m.db.Update(goodsType, cols, "type_id=?", goodsType.TypeId)
45
+	return err
46
+}
47
+
48
+// DelGoodsType 刪除商品类型
49
+func (m *GoodsDAO) DelGoodsType(typeid string) error {
50
+	var goodsType = model.TdGoodsType{
51
+		TypeId: typeid,
52
+		Status: models.STATUS_DEL,
53
+	}
54
+	var cols = []string{
55
+		"status",
56
+	}
57
+	_, err := m.db.Update(goodsType, cols, "type_id=?", goodsType.TypeId)
58
+	return err
59
+}

+ 1
- 1
models/system/user.go ファイルの表示

@@ -31,7 +31,7 @@ func NewUserDAO(ctx *utils.Context) *UserDAO {
31 31
 func (m *UserDAO) GetUserList(username, typeid, caseids string) ([]model.SysUser, error) {
32 32
 	var users []model.SysUser
33 33
 	userDAO := m.db.Where(`(status>? and user_name like '%?%' and user_id in 
34
-		(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 ('?')))`, models.STATUS_DEL, username, caseids)
34
+		(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 ('?')))`, models.STATUS_DEL, username, strings.Replace(caseids, ",", "','", -1))
35 35
 
36 36
 	if typeid != "" {
37 37
 		userDAO.In("user_id", builder.Select("user_id").From("sys_user_type").Where(builder.Eq{"type_id": typeid}))

+ 20
- 0
service/goods/goods.go ファイルの表示

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

+ 51
- 0
service/goods/spec.go ファイルの表示

@@ -0,0 +1,51 @@
1
+package goods
2
+
3
+import (
4
+	"spaceofcheng/services/models/model"
5
+	"spaceofcheng/services/service"
6
+)
7
+
8
+// GetGoodsSpec 获取商品规格
9
+func (s *GoodsServ) GetGoodsSpec(caseids string, page int, pageSize int) (map[string]interface{}, error) {
10
+	if pageSize == 0 {
11
+		pageSize = service.PAGENUM
12
+	}
13
+	specs, err := s.dao.GetGoodsSpec(caseids, page, pageSize)
14
+	if err != nil {
15
+		return nil, err
16
+	}
17
+	total, err := s.dao.GetGoodsSpecCount(caseids)
18
+	if err != nil {
19
+		return nil, err
20
+	}
21
+
22
+	return map[string]interface{}{
23
+		"list":     specs,
24
+		"pagesize": pageSize,
25
+		"pagenum":  total,
26
+		"page":     page + 1,
27
+	}, err
28
+}
29
+
30
+// GetGoodsSpecByID 根据商品类型ID获取商品类型
31
+func (s *GoodsServ) GetGoodsSpecByID(specid string) (*model.TdSpec, error) {
32
+	goodsSpec, err := s.dao.GetGoodsSpecByID(specid)
33
+	return goodsSpec, err
34
+}
35
+
36
+// SaveGoodsSpec 保存商品类型
37
+func (s *GoodsServ) SaveGoodsSpec(goodsSpec model.TdSpec) (*model.TdSpec, error) {
38
+	var err error
39
+	if goodsSpec.SpecId == "" {
40
+		_, err = s.dao.AddGoodsSpec(&goodsSpec)
41
+	} else {
42
+		err = s.dao.UpdateGoodsSpec(goodsSpec)
43
+	}
44
+	return &goodsSpec, err
45
+}
46
+
47
+// DelGoodsSpec 删除商品类型
48
+func (s *GoodsServ) DelGoodsSpec(specid string) error {
49
+	err := s.DelGoodsSpec(specid)
50
+	return err
51
+}

+ 51
- 0
service/goods/type.go ファイルの表示

@@ -0,0 +1,51 @@
1
+package goods
2
+
3
+import (
4
+	"spaceofcheng/services/models/model"
5
+	"spaceofcheng/services/service"
6
+)
7
+
8
+// GetGoodsType 获取商品类型
9
+func (s *GoodsServ) GetGoodsType(caseids string, page int, pageSize int) (map[string]interface{}, error) {
10
+	if pageSize == 0 {
11
+		pageSize = service.PAGENUM
12
+	}
13
+	types, err := s.dao.GetGoodsType(caseids, page, pageSize)
14
+	if err != nil {
15
+		return nil, err
16
+	}
17
+	total, err := s.dao.GetGoodsTypeCount(caseids)
18
+	if err != nil {
19
+		return nil, err
20
+	}
21
+
22
+	return map[string]interface{}{
23
+		"list":     types,
24
+		"pagesize": pageSize,
25
+		"pagenum":  total,
26
+		"page":     page + 1,
27
+	}, err
28
+}
29
+
30
+// GetGoodsTypeByID 根据商品类型ID获取商品类型
31
+func (s *GoodsServ) GetGoodsTypeByID(typeid string) (*model.TdGoodsType, error) {
32
+	goodsType, err := s.dao.GetGoodsTypeByID(typeid)
33
+	return goodsType, err
34
+}
35
+
36
+// SaveGoodsType 保存商品类型
37
+func (s *GoodsServ) SaveGoodsType(goodsType model.TdGoodsType) (*model.TdGoodsType, error) {
38
+	var err error
39
+	if goodsType.TypeId == "" {
40
+		_, err = s.dao.AddGoodsType(&goodsType)
41
+	} else {
42
+		err = s.dao.UpdateGoodsType(goodsType)
43
+	}
44
+	return &goodsType, err
45
+}
46
+
47
+// DelGoodsType 删除商品类型
48
+func (s *GoodsServ) DelGoodsType(typeid string) error {
49
+	err := s.DelGoodsType(typeid)
50
+	return err
51
+}

+ 4
- 0
service/sys.go ファイルの表示

@@ -5,6 +5,10 @@ import (
5 5
 	"spaceofcheng/services/utils"
6 6
 )
7 7
 
8
+const (
9
+	PAGENUM = 10
10
+)
11
+
8 12
 // SysServ 系统处理
9 13
 type SysServ struct {
10 14
 	ctx *utils.Context