浏览代码

删除公众号菜单;自动回复:关键词,关注;

zhengchengwu 5 年前
父节点
当前提交
3070775cee

+ 2 - 2
controllers/global/open_wechat_controller.go 查看文件

@@ -37,7 +37,7 @@ func (c *OpenWechatAPIController) Prepare() {
37 37
 //OpenWechatCtlRegistRouters 微信开放平台注册路由
38 38
 func OpenWechatCtlRegistRouters() {
39 39
 	beego.Router("/openwechat/authorizationevents", &OpenWechatAPIController{}, "*:AuthorizationEvents")
40
-	beego.Router("/openwechat/mp/notice", &OpenWechatAPIController{}, "Post:MpWechatNotice")
40
+	beego.Router("/openwechat/mp/notice/:appid", &OpenWechatAPIController{}, "Post:MpWechatNotice")
41 41
 	beego.Router("/openwechat/mp/authorization", &OpenWechatAPIController{}, "Get:Authorization")
42 42
 	beego.Router("/openwechat/mp/authorizerinfo/:id/:vtime/:vcode", &OpenWechatAPIController{}, "*:AuthorizerInfo")
43 43
 }
@@ -132,7 +132,7 @@ func (c *OpenWechatAPIController) AuthorizationEvents() {
132 132
 
133 133
 //MpWechatNotice 授权后公众号消息与事件接收URL
134 134
 func (c *OpenWechatAPIController) MpWechatNotice() {
135
-	appid := c.GetString("appid")
135
+	appid := c.Ctx.Input.Param(":appid")
136 136
 	if len(appid) == 0 {
137 137
 		utils.ErrorLog("appid not found")
138 138
 		c.Ctx.WriteString("success")

+ 116 - 0
controllers/mpwechat/material_controller.go 查看文件

@@ -0,0 +1,116 @@
1
+package mpwechat
2
+
3
+import (
4
+	base_ctl "SCRM/controllers"
5
+	"SCRM/enums"
6
+	"SCRM/service/wechat_service"
7
+	"SCRM/utils"
8
+	"bytes"
9
+	"mime/multipart"
10
+	"sync"
11
+
12
+	"io"
13
+
14
+	"github.com/astaxie/beego"
15
+	"github.com/astaxie/beego/httplib"
16
+)
17
+
18
+func MpMaterialCtlRegistRouters() {
19
+	beego.Router("/api/mpwechat/media/add_material", &MpMaterialAPIController{}, "Post:AddMaterial")
20
+}
21
+
22
+type MpMaterialAPIController struct {
23
+	base_ctl.BaseAuthAPIController
24
+}
25
+
26
+type MultipartFormField struct {
27
+	IsFile   bool
28
+	Name     string
29
+	FileName string
30
+	Value    io.Reader
31
+}
32
+
33
+var mediaBufferPool = sync.Pool{
34
+	New: func() interface{} {
35
+		return bytes.NewBuffer(make([]byte, 0, 10<<20)) // 10MB
36
+	},
37
+}
38
+
39
+func (c MpMaterialAPIController) AddMaterial() {
40
+
41
+	adminUserInfo := c.GetAdminUserInfo()
42
+
43
+	authorization, err := wechat_service.GetAuthorizationByOrgID(adminUserInfo.CurrentOrgId)
44
+	if err != nil {
45
+		c.ServeFailJsonSend(enums.ErrorCodeDataException, "上传失败:("+err.Error()+")")
46
+		return
47
+	}
48
+	if authorization == nil || authorization.AuthorizerStatus != 1 {
49
+		c.ServeFailJsonSend(enums.ErrorCodeDBUpdate, "上传失败:(公众号未授权)")
50
+		return
51
+	}
52
+
53
+	file, head, err := c.GetFile("file")
54
+	if err != nil {
55
+		c.ServeFailJsonSend(enums.ErrorCodeDBUpdate, "上传失败:("+err.Error()+")")
56
+		return
57
+	}
58
+	defer file.Close()
59
+
60
+	var fields = []MultipartFormField{
61
+		{
62
+			IsFile:   true,
63
+			Name:     "media",
64
+			FileName: head.Filename,
65
+			Value:    file,
66
+		},
67
+	}
68
+
69
+	buffer := mediaBufferPool.Get().(*bytes.Buffer)
70
+	buffer.Reset()
71
+	defer mediaBufferPool.Put(buffer)
72
+
73
+	multipartWriter := multipart.NewWriter(buffer)
74
+	for i := 0; i < len(fields); i++ {
75
+		if field := &fields[i]; field.IsFile {
76
+			partWriter, err3 := multipartWriter.CreateFormFile(field.Name, field.FileName)
77
+			if err3 != nil {
78
+				c.ServeFailJsonSend(enums.ErrorCodeDBUpdate, "上传失败:("+err3.Error()+")")
79
+				return
80
+			}
81
+			if _, err3 = io.Copy(partWriter, field.Value); err3 != nil {
82
+				c.ServeFailJsonSend(enums.ErrorCodeDBUpdate, "上传失败:("+err3.Error()+")")
83
+				return
84
+			}
85
+		} else {
86
+			partWriter, err3 := multipartWriter.CreateFormField(field.Name)
87
+			if err3 != nil {
88
+				c.ServeFailJsonSend(enums.ErrorCodeDBUpdate, "上传失败:("+err3.Error()+")")
89
+				return
90
+			}
91
+			if _, err3 = io.Copy(partWriter, field.Value); err3 != nil {
92
+				c.ServeFailJsonSend(enums.ErrorCodeDBUpdate, "上传失败:("+err3.Error()+")")
93
+				return
94
+			}
95
+		}
96
+	}
97
+
98
+	if err = multipartWriter.Close(); err != nil {
99
+		c.ServeFailJsonSend(enums.ErrorCodeDBUpdate, "上传失败:("+err.Error()+")")
100
+		return
101
+	}
102
+	requestBodyBytes := buffer.Bytes()
103
+	requestBodyType := multipartWriter.FormDataContentType()
104
+	url := "https://api.weixin.qq.com/cgi-bin/material/add_material?type=image&access_token=" + authorization.AuthorizerAccessToken
105
+	res := httplib.Post(url)
106
+	res.Header("Content-Type", requestBodyType)
107
+	res.Body(requestBodyBytes)
108
+	response := make(map[string]interface{}, 0)
109
+	res.ToJSON(&response)
110
+	utils.InfoLog("%v", response)
111
+
112
+	returnData := make(map[string]interface{}, 0)
113
+	returnData["ok"] = "msg"
114
+	c.ServeSuccessJSON(returnData)
115
+	return
116
+}

+ 50 - 0
controllers/mpwechat/menu_controller.go 查看文件

@@ -15,6 +15,7 @@ import (
15 15
 func MpMenusCtlRegistRouters() {
16 16
 	beego.Router("/api/mpwechat/menus", &MpMenusAPIController{}, "Get:GetMenus")
17 17
 	beego.Router("/api/mpwechat/savemenus", &MpMenusAPIController{}, "Put:SaveMenus")
18
+	beego.Router("/api/mpwechat/deletemenus", &MpMenusAPIController{}, "Post:DeleteMenu")
18 19
 }
19 20
 
20 21
 type MpMenusAPIController struct {
@@ -188,3 +189,52 @@ func (c *MpMenusAPIController) SaveMenus() {
188 189
 	c.ServeSuccessJSON(returnData)
189 190
 	return
190 191
 }
192
+
193
+func (c *MpMenusAPIController) DeleteMenu() {
194
+
195
+	adminUserInfo := c.GetAdminUserInfo()
196
+	authorization, err := wechat_service.GetAuthorizationByOrgID(adminUserInfo.CurrentOrgId)
197
+	if err != nil {
198
+		c.ServeFailJsonSend(enums.ErrorCodeDataException, "删除菜单失败:("+err.Error()+")")
199
+		return
200
+	}
201
+	if authorization == nil || authorization.AuthorizerStatus != 1 {
202
+		c.ServeFailJsonSend(enums.ErrorCodeDBUpdate, "删除菜单失败:(未授权)")
203
+		return
204
+	}
205
+
206
+	// 授权方公众号类型,0代表订阅号,1代表由历史老帐号升级后的订阅号,2代表服务号
207
+	// 授权方认证类型,-1代表未认证,0代表微信认证,1代表新浪微博认证,2代表腾讯微博认证,3代表已资质认证通过但还未通过名称认证,4代表已资质认证通过、还未通过名称认证,但通过了新浪微博认证,5代表已资质认证通过、还未通过名称认证,但通过了腾讯微博认证
208
+	if (authorization.AuthorizerServiceTypeInfo == 0 || authorization.AuthorizerServiceTypeInfo == 1) && authorization.AuthorizerVerifyTypeInfo == -1 {
209
+		c.ServeFailJsonSend(enums.ErrorCodeDBUpdate, "删除菜单失败:(未认证的订阅号没有自定义菜单相关接口的权限)")
210
+		return
211
+	}
212
+
213
+	button, err := wechat_service.GetMenusByOrgID(adminUserInfo.CurrentOrgId)
214
+	if err != nil {
215
+		c.ServeFailJsonSend(enums.ErrorCodeDataException, "删除菜单失败:("+err.Error()+")")
216
+		return
217
+	}
218
+	if button == nil || button.ButtonStatus != 1 {
219
+		c.ServeFailJsonSend(enums.ErrorCodeDataException, "删除菜单失败:(未设置菜单)")
220
+		return
221
+	}
222
+
223
+	err = wechat_service.DeleteMpWechatMenus(authorization.AuthorizerAccessToken)
224
+	if err != nil {
225
+		c.ServeFailJsonSend(enums.ErrorCodeDataException, "删除菜单失败:("+err.Error()+")")
226
+		return
227
+	}
228
+
229
+	err = wechat_service.DeleteButton(adminUserInfo.CurrentOrgId, button.ID)
230
+	if err != nil {
231
+		c.ServeFailJsonSend(enums.ErrorCodeDataException, "删除菜单失败:("+err.Error()+")")
232
+		return
233
+	}
234
+
235
+	returnData := make(map[string]interface{}, 0)
236
+	returnData["msg"] = "ok"
237
+	c.ServeSuccessJSON(returnData)
238
+	return
239
+
240
+}

+ 318 - 0
controllers/mpwechat/reply_controller.go 查看文件

@@ -0,0 +1,318 @@
1
+package mpwechat
2
+
3
+import (
4
+	base_ctl "SCRM/controllers"
5
+	"SCRM/enums"
6
+	"SCRM/models"
7
+	"SCRM/service/wechat_service"
8
+	"encoding/json"
9
+	"reflect"
10
+
11
+	"SCRM/utils"
12
+	"time"
13
+
14
+	"github.com/astaxie/beego"
15
+)
16
+
17
+func MpReplyCtlRegistRouters() {
18
+	beego.Router("/api/mpwechat/reply/subscribe", &MpReplyAPIController{}, "Get:GetSubscribe")
19
+	beego.Router("/api/mpwechat/reply/subscribe", &MpReplyAPIController{}, "Put:SaveSubscribe")
20
+	beego.Router("/api/mpwechat/reply/kewords", &MpReplyAPIController{}, "Get:GetKeyWordReplys")
21
+	beego.Router("/api/mpwechat/reply/keword", &MpReplyAPIController{}, "Post:CreateKeyWordReply")
22
+	beego.Router("/api/mpwechat/reply/keword", &MpReplyAPIController{}, "Put:EditKeyWordReply")
23
+	beego.Router("/api/mpwechat/replys", &MpReplyAPIController{}, "Delete:DeleteReplys")
24
+}
25
+
26
+type MpReplyAPIController struct {
27
+	base_ctl.BaseAuthAPIController
28
+}
29
+
30
+func (c *MpReplyAPIController) GetSubscribe() {
31
+
32
+	adminUserInfo := c.GetAdminUserInfo()
33
+
34
+	message, err := wechat_service.GetOrgSubscribeReplyMessages(adminUserInfo.CurrentOrgId)
35
+	if err != nil {
36
+		c.ServeFailJsonSend(enums.ErrorCodeDataException, "读取关注回复数据失败:("+err.Error()+")")
37
+		return
38
+	}
39
+
40
+	returnData := make(map[string]interface{}, 0)
41
+	returnData["message"] = message
42
+	c.ServeSuccessJSON(returnData)
43
+	return
44
+}
45
+
46
+func (c *MpReplyAPIController) SaveSubscribe() {
47
+	adminUserInfo := c.GetAdminUserInfo()
48
+	timeNow := time.Now().Unix()
49
+
50
+	dataBody := make(map[string]interface{}, 0)
51
+	err := json.Unmarshal(c.Ctx.Input.RequestBody, &dataBody)
52
+	if err != nil {
53
+		utils.ErrorLog(err.Error())
54
+		c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "参数错误")
55
+		return
56
+	}
57
+
58
+	var saveMessage models.AuthorizationMessageManagements
59
+	message, err := wechat_service.GetOrgSubscribeReplyMessages(adminUserInfo.CurrentOrgId)
60
+	if err != nil {
61
+		c.ServeFailJsonSend(enums.ErrorCodeDataException, "保存失败:("+err.Error()+")")
62
+		return
63
+	}
64
+	if message != nil {
65
+		saveMessage = *message
66
+	} else {
67
+		saveMessage.CreatedTime = timeNow
68
+		saveMessage.MessageMsgType = "event"
69
+		saveMessage.MessageMsgEvent = "subscribe"
70
+		saveMessage.MessageStatus = 1
71
+		saveMessage.UserOrgId = adminUserInfo.CurrentOrgId
72
+	}
73
+
74
+	if dataBody["message_content"] == nil || reflect.TypeOf(dataBody["message_content"]).String() != "string" {
75
+		c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "缺少参数:message_content")
76
+		return
77
+	}
78
+	messageContent, _ := dataBody["message_content"].(string)
79
+	saveMessage.MessageContent = messageContent
80
+	saveMessage.UpdatedTime = timeNow
81
+
82
+	err = wechat_service.SaveMessage(&saveMessage)
83
+	if err != nil {
84
+		c.ServeFailJsonSend(enums.ErrorCodeDBUpdate, "保存失败:("+err.Error()+")")
85
+		return
86
+	}
87
+
88
+	returnData := make(map[string]interface{}, 0)
89
+	returnData["message"] = saveMessage
90
+	c.ServeSuccessJSON(returnData)
91
+	return
92
+
93
+}
94
+
95
+func (c *MpReplyAPIController) GetKeyWordReplys() {
96
+	page, _ := c.GetInt64("page", 1)
97
+	limit, _ := c.GetInt64("limit", 10)
98
+	searchKey := c.GetString("search", "")
99
+	if page <= 0 {
100
+		page = 1
101
+	}
102
+	if limit <= 0 {
103
+		limit = 10
104
+	}
105
+
106
+	adminUserInfo := c.GetAdminUserInfo()
107
+	messages, total, err := wechat_service.GetPageKeyWordMessages(adminUserInfo.CurrentOrgId, page, limit, searchKey)
108
+	if err != nil {
109
+		c.ServeFailJsonSend(enums.ErrorCodeDBUpdate, "拉取失败:("+err.Error()+")")
110
+		return
111
+	}
112
+
113
+	returnData := make(map[string]interface{}, 0)
114
+	returnData["messages"] = messages
115
+	returnData["total"] = total
116
+	c.ServeSuccessJSON(returnData)
117
+	return
118
+}
119
+
120
+func (c *MpReplyAPIController) CreateKeyWordReply() {
121
+	adminUserInfo := c.GetAdminUserInfo()
122
+	timeNow := time.Now().Unix()
123
+
124
+	dataBody := make(map[string]interface{}, 0)
125
+	err := json.Unmarshal(c.Ctx.Input.RequestBody, &dataBody)
126
+	if err != nil {
127
+		utils.ErrorLog(err.Error())
128
+		c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "参数错误")
129
+		return
130
+	}
131
+
132
+	var message models.AuthorizationMessageManagements
133
+
134
+	if dataBody["message_regular_name"] == nil || reflect.TypeOf(dataBody["message_regular_name"]).String() != "string" {
135
+		c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "缺少参数:message_regular_name")
136
+		return
137
+	}
138
+	messageRegularName, _ := dataBody["message_regular_name"].(string)
139
+	if len(messageRegularName) == 0 {
140
+		c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "规则名称不能为空")
141
+		return
142
+	}
143
+	message.MessageRegularName = messageRegularName
144
+
145
+	if dataBody["message_key_type"] == nil || reflect.TypeOf(dataBody["message_key_type"]).String() != "float64" {
146
+		c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "缺少参数:message_key_type")
147
+		return
148
+	}
149
+	messageKeyType := int64(dataBody["message_key_type"].(float64))
150
+	if messageKeyType != 1 && messageKeyType != 2 {
151
+		c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "模式选择不正确")
152
+		return
153
+	}
154
+	message.MessageKeyType = messageKeyType
155
+
156
+	if dataBody["message_key_name"] == nil || reflect.TypeOf(dataBody["message_key_name"]).String() != "string" {
157
+		c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "缺少参数:message_key_name")
158
+		return
159
+	}
160
+	messageKeyName, _ := dataBody["message_key_name"].(string)
161
+	if len(messageKeyName) == 0 {
162
+		c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "关键字不能为空")
163
+		return
164
+	}
165
+	message.MessageKeyName = messageKeyName
166
+
167
+	if dataBody["message_content"] == nil || reflect.TypeOf(dataBody["message_content"]).String() != "string" {
168
+		c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "缺少参数:message_content")
169
+		return
170
+	}
171
+	messageContent, _ := dataBody["message_content"].(string)
172
+	if len(messageKeyName) == 0 {
173
+		c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "回复内容不能为空")
174
+		return
175
+	}
176
+	message.MessageContent = messageContent
177
+
178
+	message.MessageMsgType = "text"
179
+	message.UpdatedTime = timeNow
180
+	message.CreatedTime = timeNow
181
+	message.MessageStatus = 1
182
+	message.UserOrgId = adminUserInfo.CurrentOrgId
183
+
184
+	err = wechat_service.SaveMessage(&message)
185
+	if err != nil {
186
+		c.ServeFailJsonSend(enums.ErrorCodeDBCreate, "添加回复失败:("+err.Error()+")")
187
+		return
188
+	}
189
+
190
+	returnData := make(map[string]interface{}, 0)
191
+	returnData["message"] = message
192
+	c.ServeSuccessJSON(returnData)
193
+	return
194
+}
195
+
196
+func (c *MpReplyAPIController) EditKeyWordReply() {
197
+	id, _ := c.GetInt64("id", 0)
198
+	if id <= 0 {
199
+		c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "参数错误:id")
200
+		return
201
+	}
202
+
203
+	adminUserInfo := c.GetAdminUserInfo()
204
+	timeNow := time.Now().Unix()
205
+
206
+	dataBody := make(map[string]interface{}, 0)
207
+	err := json.Unmarshal(c.Ctx.Input.RequestBody, &dataBody)
208
+	if err != nil {
209
+		utils.ErrorLog(err.Error())
210
+		c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "参数错误")
211
+		return
212
+	}
213
+
214
+	message, err := wechat_service.GetMessageByID(adminUserInfo.CurrentOrgId, id)
215
+	if err != nil {
216
+		c.ServeFailJsonSend(enums.ErrorCodeDataException, "保存失败:("+err.Error()+")")
217
+		return
218
+	}
219
+	if message == nil {
220
+		c.ServeFailJsonSend(enums.ErrorCodeDBUpdate, "保存失败:(回复不存在)")
221
+		return
222
+	}
223
+
224
+	if dataBody["message_regular_name"] == nil || reflect.TypeOf(dataBody["message_regular_name"]).String() != "string" {
225
+		c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "缺少参数:message_regular_name")
226
+		return
227
+	}
228
+	messageRegularName, _ := dataBody["message_regular_name"].(string)
229
+	if len(messageRegularName) == 0 {
230
+		c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "规则名称不能为空")
231
+		return
232
+	}
233
+	message.MessageRegularName = messageRegularName
234
+
235
+	if dataBody["message_key_type"] == nil || reflect.TypeOf(dataBody["message_key_type"]).String() != "float64" {
236
+		c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "缺少参数:message_key_type")
237
+		return
238
+	}
239
+	messageKeyType := int64(dataBody["message_key_type"].(float64))
240
+	if messageKeyType != 1 && messageKeyType != 2 {
241
+		c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "模式选择不正确")
242
+		return
243
+	}
244
+	message.MessageKeyType = messageKeyType
245
+
246
+	if dataBody["message_key_name"] == nil || reflect.TypeOf(dataBody["message_key_name"]).String() != "string" {
247
+		c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "缺少参数:message_key_name")
248
+		return
249
+	}
250
+	messageKeyName, _ := dataBody["message_key_name"].(string)
251
+	if len(messageKeyName) == 0 {
252
+		c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "关键字不能为空")
253
+		return
254
+	}
255
+	message.MessageKeyName = messageKeyName
256
+
257
+	if dataBody["message_content"] == nil || reflect.TypeOf(dataBody["message_content"]).String() != "string" {
258
+		c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "缺少参数:message_content")
259
+		return
260
+	}
261
+	messageContent, _ := dataBody["message_content"].(string)
262
+	if len(messageKeyName) == 0 {
263
+		c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "回复内容不能为空")
264
+		return
265
+	}
266
+	message.MessageContent = messageContent
267
+
268
+	message.UpdatedTime = timeNow
269
+
270
+	err = wechat_service.SaveMessage(message)
271
+	if err != nil {
272
+		c.ServeFailJsonSend(enums.ErrorCodeDBCreate, "编辑回复失败:("+err.Error()+")")
273
+		return
274
+	}
275
+
276
+	returnData := make(map[string]interface{}, 0)
277
+	returnData["message"] = message
278
+	c.ServeSuccessJSON(returnData)
279
+	return
280
+}
281
+
282
+func (c *MpReplyAPIController) DeleteReplys() {
283
+	adminUserInfo := c.GetAdminUserInfo()
284
+
285
+	dataBody := make(map[string]interface{}, 0)
286
+	err := json.Unmarshal(c.Ctx.Input.RequestBody, &dataBody)
287
+	if err != nil {
288
+		utils.ErrorLog(err.Error())
289
+		c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "参数错误")
290
+		return
291
+	}
292
+
293
+	idsInters := dataBody["ids"].([]interface{})
294
+	if len(idsInters) == 0 {
295
+		if err != nil {
296
+			c.ServeFailJsonSend(enums.ErrorCodeDBDelete, "删除失败:(没有选择回复)")
297
+			return
298
+		}
299
+	}
300
+
301
+	ids := make([]int64, 0)
302
+	for _, idsInter := range idsInters {
303
+		id := int64(idsInter.(float64))
304
+		ids = append(ids, id)
305
+	}
306
+
307
+	err = wechat_service.DeleteMessages(adminUserInfo.CurrentOrgId, ids)
308
+	if err != nil {
309
+		c.ServeFailJsonSend(enums.ErrorCodeDBDelete, "删除失败:("+err.Error()+")")
310
+		return
311
+	}
312
+
313
+	returnData := make(map[string]interface{}, 0)
314
+	returnData["msg"] = "ok"
315
+
316
+	c.ServeSuccessJSON(returnData)
317
+	return
318
+}

+ 2 - 0
controllers/mpwechat/router_controller.go 查看文件

@@ -3,4 +3,6 @@ package mpwechat
3 3
 func RegisterRouters() {
4 4
 	MpWechatCtlRegistRouters()
5 5
 	MpMenusCtlRegistRouters()
6
+	MpReplyCtlRegistRouters()
7
+	MpMaterialCtlRegistRouters()
6 8
 }

+ 3 - 3
jobcron/open_wechat_job.go 查看文件

@@ -156,19 +156,19 @@ func RequestMpWechatAccessToken() {
156 156
 		responseBytes, err = util.PostJSON(uri, ReqRefreshToken)
157 157
 		if err != nil {
158 158
 			utils.ErrorLog(" error: %s", err)
159
-			return
159
+			continue
160 160
 		}
161 161
 
162 162
 		var res wechat_service.MPResult
163 163
 		err = json.Unmarshal(responseBytes, &res)
164 164
 		if err != nil {
165 165
 			utils.ErrorLog(" error: %s", err)
166
-			return
166
+			continue
167 167
 		}
168 168
 
169 169
 		if res.ErrCode > 0 {
170 170
 			utils.ErrorLog(" error: %s", res.ErrMsg)
171
-			return
171
+			continue
172 172
 		}
173 173
 
174 174
 		var accessToken wechat_service.RefreshToken

+ 2 - 2
main.go 查看文件

@@ -18,8 +18,8 @@ func main() {
18 18
 
19 19
 	//微信开放平台
20 20
 	go func() {
21
-		// jobcron.RequestComponentAccessToken()
22
-		// jobcron.RequestMpWechatAccessToken()
21
+		jobcron.RequestComponentAccessToken()
22
+		jobcron.RequestMpWechatAccessToken()
23 23
 		// jobcron.ReqJsapiTicket()
24 24
 	}()
25 25
 	jobcron.StartOpenWechatCron()

+ 4 - 0
service/wechat_service/menu_service.go 查看文件

@@ -61,3 +61,7 @@ func SaveButtons(menu *Buttons) (err error) {
61 61
 	tx.Commit()
62 62
 	return
63 63
 }
64
+func DeleteButton(orgID, id int64) (err error) {
65
+	err = service.PatientWriteDB().Model(&models.AuthorizationButtons{}).Where("id=? and user_org_id=?", id, orgID).Update(map[string]interface{}{"ButtonStatus": 2, "UpdatedTime": time.Now().Unix()}).Error
66
+	return
67
+}

+ 44 - 2
service/wechat_service/messages_service.go 查看文件

@@ -3,6 +3,7 @@ package wechat_service
3 3
 import (
4 4
 	"SCRM/models"
5 5
 	"SCRM/service"
6
+	"time"
6 7
 
7 8
 	"github.com/jinzhu/gorm"
8 9
 )
@@ -18,8 +19,8 @@ func GetTextReplyMessagesByKey(userOrgID int64, keywrods string) (messages []*mo
18 19
 	return
19 20
 }
20 21
 
21
-//GetSubscribeReplyMessagesByOrgID 通过user_org_id(机构ID)取信息
22
-func GetSubscribeReplyMessagesByOrgID(orgID int64) (*models.AuthorizationMessageManagements, error) {
22
+//GetOrgSubscribeReplyMessages 通过user_org_id(机构ID)取信息
23
+func GetOrgSubscribeReplyMessages(orgID int64) (*models.AuthorizationMessageManagements, error) {
23 24
 
24 25
 	var message models.AuthorizationMessageManagements
25 26
 
@@ -51,3 +52,44 @@ func GetOrgAllClickMessages(orgID int64) (messages []*models.AuthorizationMessag
51 52
 	err = service.PatientReadDB().Where("user_org_id=? AND message_msg_type='event' AND message_msg_event='click'", orgID).Find(&messages).Error
52 53
 	return
53 54
 }
55
+
56
+func SaveMessage(m *models.AuthorizationMessageManagements) (err error) {
57
+	err = service.PatientWriteDB().Save(m).Error
58
+	return
59
+}
60
+
61
+func GetPageKeyWordMessages(orgID, page, limit int64, search string) (messages []*models.AuthorizationMessageManagements, total int64, err error) {
62
+	db := service.PatientReadDB().Model(&models.AuthorizationMessageManagements{}).Where("user_org_id=? and message_msg_type='text' and message_status=1", orgID)
63
+
64
+	if len(search) > 0 {
65
+		searchKey := "%" + search + "%"
66
+		db = db.Where("message_key_name LIKE ?", searchKey)
67
+	}
68
+	offset := (page - 1) * limit
69
+
70
+	err = db.Count(&total).Order("id desc").Offset(offset).Limit(limit).Find(&messages).Error
71
+
72
+	return
73
+}
74
+
75
+//GetMessageByID 通过ID取信息
76
+func GetMessageByID(orgID, id int64) (*models.AuthorizationMessageManagements, error) {
77
+	var message models.AuthorizationMessageManagements
78
+	err := service.PatientReadDB().Where("id=? and user_org_id=? and message_status=1", id, orgID).First(&message).Error
79
+	if err == gorm.ErrRecordNotFound {
80
+		return nil, nil
81
+	}
82
+	if err != nil {
83
+		return nil, err
84
+	}
85
+	return &message, nil
86
+}
87
+
88
+func DeleteMessages(orgID int64, ids []int64) (err error) {
89
+	if len(ids) == 1 {
90
+		err = service.PatientWriteDB().Model(&models.AuthorizationMessageManagements{}).Where("id =? and user_org_id =?", ids[0], orgID).Update(map[string]interface{}{"MessageStatus": 2, "UpdatedTime": time.Now().Unix()}).Error
91
+	} else {
92
+		err = service.PatientWriteDB().Model(&models.AuthorizationMessageManagements{}).Where("id IN (?) and user_org_id =?", ids, orgID).Update(map[string]interface{}{"MessageStatus": 2, "UpdatedTime": time.Now().Unix()}).Error
93
+	}
94
+	return
95
+}

+ 7 - 6
service/wechat_service/open_wechat_service.go 查看文件

@@ -260,7 +260,7 @@ func SendSubscribeTextMessage(appid string, ToUserName string, FromUserName stri
260 260
 		return
261 261
 	}
262 262
 
263
-	message, err := GetSubscribeReplyMessagesByOrgID(arthorizer.UserOrgId)
263
+	message, err := GetOrgSubscribeReplyMessages(arthorizer.UserOrgId)
264 264
 	if err != nil {
265 265
 		utils.ErrorLog("SendSubscribeTextMessage error:%s", err)
266 266
 		Ctx.WriteString("success")
@@ -479,17 +479,18 @@ func SendMpWechatMenus(AuthorizerAccessToken string, jsonData []byte) (err error
479 479
 
480 480
 }
481 481
 
482
-func DeleteMpWechatMenus(AuthorizerAccessToken string) (bool, error) {
482
+func DeleteMpWechatMenus(AuthorizerAccessToken string) (err error) {
483 483
 	uri := fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=%s", AuthorizerAccessToken)
484 484
 
485 485
 	b := httplib.Get(uri)
486 486
 	var result MPResult
487
-	err := b.ToJSON(&result)
487
+	err = b.ToJSON(&result)
488 488
 	if err != nil {
489
-		return false, err
489
+		return
490 490
 	}
491 491
 	if result.ErrCode > 0 {
492
-		return false, errors.New(result.ErrMsg)
492
+		err = errors.New(result.ErrMsg)
493
+		return
493 494
 	}
494
-	return true, nil
495
+	return
495 496
 }