|
@@ -5,6 +5,8 @@ import (
|
5
|
5
|
"SCRM/enums"
|
6
|
6
|
"SCRM/models"
|
7
|
7
|
"SCRM/service/marketing_tool_service"
|
|
8
|
+ "SCRM/utils"
|
|
9
|
+ "encoding/json"
|
8
|
10
|
"time"
|
9
|
11
|
|
10
|
12
|
"github.com/astaxie/beego"
|
|
@@ -13,6 +15,7 @@ import (
|
13
|
15
|
func ActivityCtlRegistRouters() {
|
14
|
16
|
beego.Router("/api/activities", &ActivityAPIController{}, "get:Activities")
|
15
|
17
|
beego.Router("/api/activity", &ActivityAPIController{}, "get:GetActivity")
|
|
18
|
+ beego.Router("/api/activity/submit", &ActivityAPIController{}, "post:ActivitySubmit")
|
16
|
19
|
}
|
17
|
20
|
|
18
|
21
|
type ActivityAPIController struct {
|
|
@@ -143,11 +146,9 @@ func (this *ActivityAPIController) GetActivity() {
|
143
|
146
|
return
|
144
|
147
|
}
|
145
|
148
|
|
146
|
|
- paragraphID := int64(0)
|
147
|
149
|
paragraphTitle := ""
|
148
|
150
|
paragraphContent := ""
|
149
|
151
|
if paragraph != nil {
|
150
|
|
- paragraphID = paragraph.Id
|
151
|
152
|
paragraphTitle = paragraph.Title
|
152
|
153
|
paragraphContent = paragraph.Text
|
153
|
154
|
}
|
|
@@ -155,7 +156,6 @@ func (this *ActivityAPIController) GetActivity() {
|
155
|
156
|
this.ServeSuccessJSON(map[string]interface{}{
|
156
|
157
|
"activity": activity,
|
157
|
158
|
"paragraph": map[string]interface{}{
|
158
|
|
- "id": paragraphID,
|
159
|
159
|
"title": paragraphTitle,
|
160
|
160
|
"content": paragraphContent,
|
161
|
161
|
},
|
|
@@ -164,9 +164,9 @@ func (this *ActivityAPIController) GetActivity() {
|
164
|
164
|
|
165
|
165
|
// /api/activity/submit [post]
|
166
|
166
|
// @param publish:bool 是否发布
|
167
|
|
-// @data activity:json
|
|
167
|
+// @data 如下格式
|
168
|
168
|
/*
|
169
|
|
-activity: {
|
|
169
|
+{
|
170
|
170
|
id?:int
|
171
|
171
|
title:string
|
172
|
172
|
subtitle:string
|
|
@@ -184,3 +184,148 @@ activity: {
|
184
|
184
|
}
|
185
|
185
|
}
|
186
|
186
|
*/
|
|
187
|
+func (this *ActivityAPIController) ActivitySubmit() {
|
|
188
|
+ publish, _ := this.GetBool("publish")
|
|
189
|
+
|
|
190
|
+ var activityForm ActivityForm
|
|
191
|
+ parseErr := json.Unmarshal(this.Ctx.Input.RequestBody, &activityForm)
|
|
192
|
+ if parseErr != nil {
|
|
193
|
+ this.ErrorLog("解析 activity form 失败:%v", parseErr)
|
|
194
|
+ this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamFormatWrong)
|
|
195
|
+ return
|
|
196
|
+ }
|
|
197
|
+
|
|
198
|
+ adminUserInfo := this.GetAdminUserInfo()
|
|
199
|
+ var activity *models.Activity
|
|
200
|
+ if activityForm.ID > 0 {
|
|
201
|
+ var getActivityErr error
|
|
202
|
+ activity, getActivityErr = marketing_tool_service.GetActivityWithID(adminUserInfo.CurrentOrgId, activityForm.ID)
|
|
203
|
+ if getActivityErr != nil {
|
|
204
|
+ this.ErrorLog("获取活动失败:%v", getActivityErr)
|
|
205
|
+ this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
|
|
206
|
+ return
|
|
207
|
+ } else if activity == nil || activity.Status == 9 {
|
|
208
|
+ this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeActivityNotExist)
|
|
209
|
+ return
|
|
210
|
+ }
|
|
211
|
+ }
|
|
212
|
+ if len(activityForm.Title) == 0 || len(activityForm.Subtitle) == 0 || len(activityForm.PosterPhoto) == 0 || len(activityForm.Address) == 0 || len(activityForm.SignUpDeadline) == 0 || len(activityForm.StartTime) == 0 {
|
|
213
|
+ this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
|
|
214
|
+ return
|
|
215
|
+ }
|
|
216
|
+ timeFmt := "2006-01-02 15:04"
|
|
217
|
+ signUpDeadlineTime, parseSUDErr := utils.ParseTimeStringToTime(timeFmt, activityForm.SignUpDeadline)
|
|
218
|
+ if parseSUDErr != nil {
|
|
219
|
+ this.ErrorLog("解析报名截止时间失败:%v", parseSUDErr)
|
|
220
|
+ this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamFormatWrong)
|
|
221
|
+ return
|
|
222
|
+ }
|
|
223
|
+ activityTime, parseActivityTimeErr := utils.ParseTimeStringToTime(timeFmt, activityForm.StartTime)
|
|
224
|
+ if parseActivityTimeErr != nil {
|
|
225
|
+ this.ErrorLog("解析活动开始时间失败:%v", parseActivityTimeErr)
|
|
226
|
+ this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamFormatWrong)
|
|
227
|
+ return
|
|
228
|
+ }
|
|
229
|
+
|
|
230
|
+ if len(activityForm.PhoneNumber) > 0 {
|
|
231
|
+ if utils.PhoneRegexp().MatchString(activityForm.PhoneNumber) == false {
|
|
232
|
+ this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamFormatWrong)
|
|
233
|
+ return
|
|
234
|
+ }
|
|
235
|
+ }
|
|
236
|
+ if activityForm.LimitNum < 0 {
|
|
237
|
+ activityForm.LimitNum = 0
|
|
238
|
+ }
|
|
239
|
+
|
|
240
|
+ if activity == nil {
|
|
241
|
+ activity = &models.Activity{
|
|
242
|
+ UserOrgId: adminUserInfo.CurrentOrgId,
|
|
243
|
+ UserAppId: adminUserInfo.CurrentAppId,
|
|
244
|
+ Title: activityForm.Title,
|
|
245
|
+ Subtitle: activityForm.Subtitle,
|
|
246
|
+ Address: activityForm.Address,
|
|
247
|
+ SignUpDeadline: signUpDeadlineTime.Unix(),
|
|
248
|
+ SignUpNotice: activityForm.SignUpNotice,
|
|
249
|
+ StartTime: activityTime.Unix(),
|
|
250
|
+ PosterPhoto: activityForm.PosterPhoto,
|
|
251
|
+ PosterPhotoThumb: activityForm.PosterPhoto,
|
|
252
|
+ LimitNum: activityForm.LimitNum,
|
|
253
|
+ PhoneNumber: activityForm.PhoneNumber,
|
|
254
|
+ CreateTime: time.Now().Unix(),
|
|
255
|
+ }
|
|
256
|
+ } else {
|
|
257
|
+ activity.Title = activityForm.Title
|
|
258
|
+ activity.Subtitle = activityForm.Subtitle
|
|
259
|
+ activity.Address = activityForm.Address
|
|
260
|
+ activity.SignUpDeadline = signUpDeadlineTime.Unix()
|
|
261
|
+ activity.SignUpNotice = activityForm.SignUpNotice
|
|
262
|
+ activity.StartTime = activityTime.Unix()
|
|
263
|
+ activity.PosterPhoto = activityForm.PosterPhoto
|
|
264
|
+ activity.PosterPhotoThumb = activityForm.PosterPhoto
|
|
265
|
+ activity.LimitNum = activityForm.LimitNum
|
|
266
|
+ activity.PhoneNumber = activityForm.PhoneNumber
|
|
267
|
+ }
|
|
268
|
+ activity.ModifyTime = time.Now().Unix()
|
|
269
|
+ if publish {
|
|
270
|
+ activity.Status = 1
|
|
271
|
+ } else {
|
|
272
|
+ activity.Status = 4
|
|
273
|
+ }
|
|
274
|
+
|
|
275
|
+ var paragraph *models.ActivityParagraph
|
|
276
|
+ if activity.Id > 0 {
|
|
277
|
+ var getPErr error
|
|
278
|
+ paragraph, getPErr = marketing_tool_service.GetActivityParagraphByActivityID(activity.Id)
|
|
279
|
+ if getPErr != nil {
|
|
280
|
+ this.ErrorLog("获取活动段落失败:%v", getPErr)
|
|
281
|
+ this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
|
|
282
|
+ return
|
|
283
|
+ }
|
|
284
|
+ }
|
|
285
|
+ if len(activityForm.Paragraph.Title) > 0 {
|
|
286
|
+ if paragraph == nil {
|
|
287
|
+ paragraph = &models.ActivityParagraph{
|
|
288
|
+ Title: activityForm.Paragraph.Title,
|
|
289
|
+ Text: activityForm.Paragraph.Content,
|
|
290
|
+ Status: 1,
|
|
291
|
+ CreateTime: time.Now().Unix(),
|
|
292
|
+ ModifyTime: time.Now().Unix(),
|
|
293
|
+ }
|
|
294
|
+ } else {
|
|
295
|
+ paragraph.Title = activityForm.Paragraph.Title
|
|
296
|
+ paragraph.Text = activityForm.Paragraph.Content
|
|
297
|
+ paragraph.ModifyTime = time.Now().Unix()
|
|
298
|
+ }
|
|
299
|
+ } else {
|
|
300
|
+ if paragraph != nil {
|
|
301
|
+ paragraph.Status = 0
|
|
302
|
+ paragraph.ModifyTime = time.Now().Unix()
|
|
303
|
+ }
|
|
304
|
+ }
|
|
305
|
+
|
|
306
|
+ saveErr := marketing_tool_service.SaveActivityAndParagraph(activity, paragraph)
|
|
307
|
+ if saveErr != nil {
|
|
308
|
+ this.ErrorLog("保存活动失败:%v", saveErr)
|
|
309
|
+ this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
|
|
310
|
+ return
|
|
311
|
+ }
|
|
312
|
+
|
|
313
|
+ wxShareModel, getWxShareErr := marketing_tool_service.GetActivityWxShareByActivityID(activity.Id)
|
|
314
|
+ if getWxShareErr != nil {
|
|
315
|
+ this.ErrorLog("获取活动微信分享信息失败:%v", getWxShareErr)
|
|
316
|
+ } else if wxShareModel != nil {
|
|
317
|
+ wxShareModel.ModifyTime = time.Now().Unix()
|
|
318
|
+ wxShareModel.Status = 1
|
|
319
|
+ wxShareModel.Title = activity.Title
|
|
320
|
+ wxShareModel.Subtitle = activity.Subtitle
|
|
321
|
+ wxShareModel.Image = activity.PosterPhoto
|
|
322
|
+ saveWxShareErr := marketing_tool_service.SaveActivityWxShare(wxShareModel)
|
|
323
|
+ if saveWxShareErr != nil {
|
|
324
|
+ this.ErrorLog("更新活动微信分享信息失败:%v", saveWxShareErr)
|
|
325
|
+ }
|
|
326
|
+ }
|
|
327
|
+
|
|
328
|
+ this.ServeSuccessJSON(map[string]interface{}{
|
|
329
|
+ "activity_id": activity.Id,
|
|
330
|
+ })
|
|
331
|
+}
|