소스 검색

controller

胡轶钦 6 년 전
부모
커밋
fefc3e907f

+ 1
- 0
controllers/menu/menu.go 파일 보기

@@ -17,6 +17,7 @@ type MenuController struct {
17 17
 // @Description 初始化 Controller, 系统自动调用
18 18
 func (c *MenuController) Constructor() {
19 19
 	c.dao = menu.NewMenuServ(c.Context)
20
+
20 21
 }
21 22
 
22 23
 func (c *MenuController) GetMenuList() {

+ 121
- 0
controllers/wechatimg/wechatimt.go 파일 보기

@@ -0,0 +1,121 @@
1
+package wechatimg
2
+
3
+import (
4
+	"mime/multipart"
5
+	"strconv"
6
+	"time"
7
+	"unsafe"
8
+	"wechat-conf/controllers"
9
+	"wechat-conf/models/model"
10
+	"wechat-conf/service/sysuser"
11
+	"wechat-conf/service/wechatimg"
12
+	"wechat-conf/utils"
13
+)
14
+
15
+// WechatImgController 信息
16
+type WechatImgController struct {
17
+	dao  *wechatimg.WechatImgServ
18
+	sdao *sysuser.SysuserServ
19
+	controllers.BaseController
20
+}
21
+
22
+// Constructor 初始化 Controller
23
+// @Title Constructor
24
+// @Description 初始化 Controller, 系统自动调用
25
+func (c *WechatImgController) Constructor() {
26
+	c.dao = wechatimg.NewWechatImgServ(c.Context)
27
+	c.sdao = sysuser.NewSysuserServ(c.Context)
28
+}
29
+
30
+func (c *WechatImgController) GetWechatImgList() {
31
+	user := c.Context.Get("user").(*model.SysUser)
32
+	appId, err := c.sdao.GetAppIdByOrgId(user.OrgId)
33
+	if err != nil {
34
+		c.ResponseError(err)
35
+	}
36
+	client, err := utils.Component.GetWxClient(appId)
37
+	if err != nil {
38
+		c.ResponseError(err)
39
+	}
40
+	page, _ := c.GetInt("page")
41
+	pageSize, _ := c.GetInt("pagesize")
42
+	count, _ := c.GetInt("count")
43
+	offset := page * (pageSize - 1)
44
+	var data map[string]string
45
+	data["offset"] = strconv.Itoa(offset)
46
+	data["type"] = "image"
47
+	data["count"] = strconv.Itoa(count)
48
+	wechatImg, err := client.GetMaterialList(data)
49
+	if err != nil {
50
+		c.ResponseError(err)
51
+	}
52
+	c.ResponseJSON(wechatImg)
53
+}
54
+func (c *WechatImgController) SyncWechatImg() {
55
+	user := c.Context.Get("user").(*model.SysUser)
56
+	appId, err := c.sdao.GetAppIdByOrgId(user.OrgId)
57
+	if err != nil {
58
+		c.ResponseError(err)
59
+	}
60
+	client, err := utils.Component.GetWxClient(appId)
61
+	if err != nil {
62
+		c.ResponseError(err)
63
+	}
64
+	for i := 0; i < 200; i++ {
65
+		var data map[string]string
66
+		offset := i * 20
67
+		data["offset"] = strconv.Itoa(offset)
68
+		data["type"] = "image"
69
+		data["count"] = strconv.Itoa(20)
70
+		wechatImg, err := client.GetMaterialList(data)
71
+		if err != nil {
72
+			c.ResponseError(err)
73
+		}
74
+		if wechatImg == nil {
75
+			break
76
+		}
77
+		err = c.dao.SyncWechatImg(wechatImg, user.OrgId)
78
+
79
+		if err != nil {
80
+			c.ResponseError(err)
81
+		}
82
+	}
83
+	c.ResponseJSON("同步成功")
84
+}
85
+func (c *WechatImgController) AddNewImg() {
86
+	user := c.Context.Get("user").(*model.SysUser)
87
+	fromFront := c.GetString("fromFront")
88
+	req := c.Ctx.Request
89
+	file, fh, err := req.FormFile(fromFront)
90
+	appId, err := c.sdao.GetAppIdByOrgId(user.OrgId)
91
+	if err != nil {
92
+		c.ResponseError(err)
93
+	}
94
+	client, err := utils.Component.GetWxClient(appId)
95
+	if err != nil {
96
+		c.ResponseError(err)
97
+	}
98
+	token := utils.Component.GetToken()
99
+	type wechatMatrial struct {
100
+		access_token string
101
+		media        multipart.File
102
+	}
103
+	var media = wechatMatrial{
104
+		access_token: token,
105
+		media:        file,
106
+	}
107
+	byteDate := *(*[]byte)(unsafe.Pointer(&media))
108
+	data, err := client.AddMaterial(byteDate, "image")
109
+	var img = model.TaWechatImg{
110
+		MediaId:    data["media_id"].(string),
111
+		Url:        data["url"].(string),
112
+		Name:       fh.Filename,
113
+		UpdateTime: time.Now(),
114
+	}
115
+	err = c.dao.AddWechatImg(img)
116
+	if err != nil {
117
+		c.ResponseError(err)
118
+	}
119
+	c.ResponseJSON("上传成功")
120
+
121
+}

+ 51
- 0
controllers/wechatmenu/wechatmenu.go 파일 보기

@@ -0,0 +1,51 @@
1
+package wechatmenu
2
+
3
+import (
4
+	"wechat-conf/controllers"
5
+	"wechat-conf/models/model"
6
+	"wechat-conf/service/sysuser"
7
+	"wechat-conf/service/wechatmenu"
8
+	"wechat-conf/utils"
9
+)
10
+
11
+// MenuController 信息
12
+type MenuController struct {
13
+	dao  *wechatmenu.WechatmenuServ
14
+	sdao *sysuser.SysuserServ
15
+	controllers.BaseController
16
+}
17
+
18
+// Constructor 初始化 Controller
19
+// @Title Constructor
20
+// @Description 初始化 Controller, 系统自动调用
21
+func (c *MenuController) Constructor() {
22
+	c.dao = wechatmenu.NewWechatmenuServ(c.Context)
23
+	c.sdao = sysuser.NewSysuserServ(c.Context)
24
+}
25
+
26
+func (c *MenuController) GetMenuList() {
27
+	user := c.Context.Get("user").(*model.SysUser)
28
+	appId, err := c.sdao.GetAppIdByOrgId(user.OrgId)
29
+	if err != nil {
30
+		c.ResponseError(err)
31
+	}
32
+	client, err := utils.Component.GetWxClient(appId)
33
+	if err != nil {
34
+		c.ResponseError(err)
35
+	}
36
+	menu, err := client.GetMenu()
37
+	c.ResponseJSON(menu)
38
+}
39
+
40
+// func (c *MenuController) RefreshMenu() {
41
+// 	user := c.Context.Get("user").(*model.SysUser)
42
+// 	appId, err := c.sdao.GetAppIdByOrgId(user.OrgId)
43
+// 	if err != nil {
44
+// 		c.ResponseError(err)
45
+// 	}
46
+// 	client, err := utils.Component.GetWxClient(appId)
47
+// 	if err != nil {
48
+// 		c.ResponseError(err)
49
+// 	}
50
+// 	err = client.RefreshMenu()
51
+// }

+ 16
- 0
models/sysuser/sysuser.go 파일 보기

@@ -89,3 +89,19 @@ func (m *SysuserDAO) BindUserToOrg(userId, orgId string) error {
89 89
 	_, err := m.db.Cols(cols...).Where("user_id=?", user.UserId).Update(user)
90 90
 	return err
91 91
 }
92
+
93
+func (m *SysuserDAO) GetAppIdByOrgId(orgId string) (string, error) {
94
+	var config []model.SysWechatConf
95
+	sql := `SELECT
96
+	* 
97
+FROM
98
+	sys_wechat_conf a
99
+	INNER JOIN sys_org b ON b.wechat_id = a.conf_id 
100
+WHERE
101
+	org_id = '` + orgId + `'`
102
+	err := m.db.Sql(sql).Find(&config)
103
+	if len(config) > 0 {
104
+		return config[0].Appid, err
105
+	}
106
+	return "", err
107
+}

+ 4
- 0
models/wechatimg/wechatimg.go 파일 보기

@@ -65,3 +65,7 @@ func (m *WechatImgDAO) DeleteWechatImg(mediaId string) error {
65 65
 	_, err := m.db.Cols(cols...).Where("media_id = ?", img.MediaId).Update(img)
66 66
 	return err
67 67
 }
68
+func (m *WechatImgDAO) DeleteBatchByOrgId(orgId string) error {
69
+	_, err := m.db.Delete(&model.TaWechatImg{OrgId: orgId})
70
+	return err
71
+}

+ 8
- 0
service/sysuser/sysuser.go 파일 보기

@@ -74,3 +74,11 @@ func (s *SysuserServ) DeleteUser(userId string) error {
74 74
 	}
75 75
 	return nil
76 76
 }
77
+func (s *SysuserServ) GetAppIdByOrgId(orgId string) (string, error) {
78
+	appId, err := s.dao.GetAppIdByOrgId(orgId)
79
+	if err != nil {
80
+		utils.LogError("获取APPID失败: " + err.Error())
81
+		return "", errors.New("获取APPID失败")
82
+	}
83
+	return appId, nil
84
+}

+ 64
- 0
service/wechatimg/wechatimg.go 파일 보기

@@ -0,0 +1,64 @@
1
+package wechatimg
2
+
3
+import (
4
+	"errors"
5
+	"time"
6
+	"wechat-conf/models/model"
7
+	"wechat-conf/models/wechatimg"
8
+	"wechat-conf/utils"
9
+
10
+	"github.com/astaxie/beego"
11
+)
12
+
13
+// WechatImgServ 用户
14
+type WechatImgServ struct {
15
+	ctx *utils.Context
16
+	dao *wechatimg.WechatImgDAO
17
+}
18
+
19
+// NewWechatImgServ 初始化
20
+func NewWechatImgServ(ctx *utils.Context) *WechatImgServ {
21
+	return &WechatImgServ{
22
+		ctx: ctx,
23
+		dao: wechatimg.NewWechatImgDAO(ctx),
24
+	}
25
+}
26
+
27
+func (s *WechatImgServ) AddWechatImg(img model.TaWechatImg) error {
28
+	err := s.dao.AddWechatImg(img)
29
+	if err != nil {
30
+		utils.LogError("新增图片失败: " + err.Error())
31
+		return errors.New("新增图片失败")
32
+	}
33
+	return nil
34
+}
35
+
36
+func (s *WechatImgServ) SyncWechatImg(data interface{}, orgId string) error {
37
+	err := s.dao.DeleteBatchByOrgId(orgId)
38
+	if err != nil {
39
+		utils.LogError("同步图片失败: " + err.Error())
40
+		return errors.New("同步图片失败")
41
+	}
42
+	type wechatimg struct {
43
+		media_id    string
44
+		name        string
45
+		update_time time.Time
46
+		url         string
47
+	}
48
+	img := data.([]wechatimg)
49
+	for _, val := range img {
50
+		beego.Error(val)
51
+		var wechat model.TaWechatImg
52
+		wechat.MediaId = val.media_id
53
+		wechat.Name = val.name
54
+		wechat.OrgId = orgId
55
+		wechat.Url = val.url
56
+		wechat.UpdateTime = val.update_time
57
+		err := s.dao.AddWechatImg(wechat)
58
+		if err != nil {
59
+			utils.LogError("同步图片失败: " + err.Error())
60
+			return errors.New("同步图片失败")
61
+		}
62
+	}
63
+	return nil
64
+}

+ 20
- 0
service/wechatmenu/wechatmenu.go 파일 보기

@@ -0,0 +1,20 @@
1
+package wechatmenu
2
+
3
+import (
4
+	"wechat-conf/models/wechatmenu"
5
+	"wechat-conf/utils"
6
+)
7
+
8
+// WechatmenuServ 用户
9
+type WechatmenuServ struct {
10
+	ctx *utils.Context
11
+	dao *wechatmenu.WechatMenuDAO
12
+}
13
+
14
+// NewWechatmenuServ 初始化
15
+func NewWechatmenuServ(ctx *utils.Context) *WechatmenuServ {
16
+	return &WechatmenuServ{
17
+		ctx: ctx,
18
+		dao: wechatmenu.NewWechatMenuDAO(ctx),
19
+	}
20
+}