互动
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

122 lines
3.4 KiB

package pc
import (
"fmt"
"hudongzhuanjia/controllers"
"hudongzhuanjia/models"
"hudongzhuanjia/utils/code"
"hudongzhuanjia/utils/define"
)
//活动
type ActivityCtl struct {
controllers.AuthorCtl
//controllers.BaseCtl
}
func (t *ActivityCtl) StartActivity() {
activityId := t.MustGetInt64("activity_id")
mode := t.MustGetInt("mode") // 标识彩排 mode=0正式 mode=1彩排
uid := t.MustGetUID()
limit := t.DefaultInt64("limit", 10)
activity := new(models.Activity)
exist, err := models.Get(activity, activityId)
t.CheckErr(err)
t.Assert(exist, code.MSG_ACTIVITY_NOT_EXIST, "互动不存在")
// 检测活动状态 ==》 必须为未开始
if activity.Status != define.StatusNotBegin {
t.ERROR(fmt.Sprintf("该活动状态%s", activity.Status), code.MSG_ERR)
}
// 检测彩排活动是否进行中
if activity.RehearsalId != 0 {
t.ERROR("该活动在彩排中", code.MSG_ERR)
}
if mode == 1 { // 彩排
rehearsal := models.Rehearsal{
CustomerId: uid,
ActivityId: activityId,
LimitNumber: limit,
Status: 1,
IsDelete: false,
}
_, err = models.Add(&rehearsal)
t.CheckErr(err)
activity.RehearsalId = rehearsal.Id
}
activity.Status = define.StatusRunning
_, err = models.Update(activity.Id, activity, "status", "rehearsal_id")
t.CheckErr(err)
t.JSON(map[string]interface{}{
"rehearsal_id": activity.RehearsalId,
})
}
func (t *ActivityCtl) StopActivity() {
activityId := t.MustGetInt64("activity_id")
activity := new(models.Activity)
exist, err := models.Get(activity, activityId)
t.CheckErr(err)
t.Assert(exist, code.MSG_ACTIVITY_NOT_EXIST, "互动不存在")
if activity.Status != define.StatusRunning {
t.ERROR(fmt.Sprintf("该活动%s", activity.Status), code.MSG_ERR)
}
if activity.RehearsalId != 0 { // 彩排回归最初结果
// 竞拍
_, err = models.UpdateAuctionStatusByActivityId(activityId)
t.CheckErr(err)
// 抽奖 -> 抽奖活动->抽奖规则-> 抽奖阶梯
lotteryIds, err := models.GetLDActivityIdsByActivityId(activityId)
t.CheckErr(err)
lotteryRuleIds, err := models.GetLDRuleIdsByLDActivityId(lotteryIds)
t.CheckErr(err)
_, err = models.UpdateLDLadderStatusByLDRuleIds(lotteryRuleIds)
t.CheckErr(err)
// 订单抽奖-> 订单抽奖活动->抽奖规则->抽奖阶梯
orderIds, err := models.GetODActivityIdsByActivityId(activityId)
t.CheckErr(err)
orderRuleIds, err := models.GetODRuleIdsByODActivityIds(orderIds)
t.CheckErr(err)
_, err = models.UpdateODLadderStatusByODRuleIds(orderRuleIds)
t.CheckErr(err)
// 摇红包->摇红包活动->摇红包规则
shakeRbIds, err := models.GetSREActivityIdsByActivityId(activityId)
t.CheckErr(err)
_, err = models.UpdateSRERuleStatusBySREActivityIds(shakeRbIds)
t.CheckErr(err)
// 拔河->拔河活动
_, err = models.UpdateTOWStatusByActivityId(activityId)
t.CheckErr(err)
// 投票->投票活动
_, err = models.UpdateVoteStatusByActivityId(activityId)
t.CheckErr(err)
// 卡路里->卡路里活动
_, err = models.UpdateCalorieStatusByActivityId(activityId)
t.CheckErr(err)
// 订单开启
_, err = new(models.CustomerOrderOption).Switch(activityId, 0)
t.CheckErr(err)
activity.Status = define.StatusNotBegin
} else {
activity.Status = define.StatusEnding
}
activity.RehearsalId = 0
_, err = models.Update(activity.Id, activity, "status", "rehearsal_id")
t.CheckErr(err)
t.SUCCESS("success")
}