|
@@ -2,11 +2,13 @@ package flashbuy
|
2
|
2
|
|
3
|
3
|
import (
|
4
|
4
|
"errors"
|
|
5
|
+ "spaceofcheng/services/models"
|
5
|
6
|
"spaceofcheng/services/models/flashbuy"
|
6
|
7
|
"spaceofcheng/services/models/model"
|
7
|
8
|
"spaceofcheng/services/models/verify"
|
8
|
9
|
"spaceofcheng/services/service"
|
9
|
10
|
"spaceofcheng/services/utils"
|
|
11
|
+ "time"
|
10
|
12
|
)
|
11
|
13
|
|
12
|
14
|
// FlashBuyServ 系统处理
|
|
@@ -135,3 +137,67 @@ func (s *FlashBuyServ) Verify(customerFlashBuyId string) error {
|
135
|
137
|
}
|
136
|
138
|
return nil
|
137
|
139
|
}
|
|
140
|
+
|
|
141
|
+// FlashBuy 抢购
|
|
142
|
+func (s *FlashBuyServ) FlashBuy(id string) error {
|
|
143
|
+ flashbuy, err := s.dao.GetFlashBuyById(id)
|
|
144
|
+ if err != nil {
|
|
145
|
+ utils.LogError("获取抢购活动信息失败: " + err.Error())
|
|
146
|
+ return errors.New("获取抢购活动信息失败!")
|
|
147
|
+ }
|
|
148
|
+ if flashbuy.Status == models.STATUS_NORMAL {
|
|
149
|
+ return errors.New("抢购活动状态异常!")
|
|
150
|
+ }
|
|
151
|
+ if flashbuy.FlashBuyStatus == "" || time.Now().After(flashbuy.EndDate) {
|
|
152
|
+ return errors.New("活动已结束!")
|
|
153
|
+ }
|
|
154
|
+ if flashbuy.FlashBuyStatus == models.FLASH_BUY_INACTIVE {
|
|
155
|
+ return errors.New("活动已停用!")
|
|
156
|
+ }
|
|
157
|
+ if time.Now().Before(flashbuy.StartDate) {
|
|
158
|
+ return errors.New("活动还未开始!")
|
|
159
|
+ }
|
|
160
|
+ customer := s.ctx.Get("customer").(model.TaCustomer)
|
|
161
|
+ buys, err := s.dao.GetCustomerFlashBuy(id, customer.CustomerId)
|
|
162
|
+ if err != nil {
|
|
163
|
+ utils.LogError("获取客户抢购信息失败: " + err.Error())
|
|
164
|
+ return errors.New("获取客户抢购信息失败!")
|
|
165
|
+ }
|
|
166
|
+ if len(buys) > 0 {
|
|
167
|
+ return errors.New("您已参与过该活动!")
|
|
168
|
+ }
|
|
169
|
+ if flashbuy.JoinNum >= flashbuy.FlashBuyMaxAttendant {
|
|
170
|
+ err = s.dao.UpdateFlashBuy(flashbuy.FlashBuyId, models.FLASH_BUY_OVER)
|
|
171
|
+ if err != nil {
|
|
172
|
+ utils.LogError("更新状态失败: " + err.Error())
|
|
173
|
+ }
|
|
174
|
+ return errors.New("活动已结束!")
|
|
175
|
+ }
|
|
176
|
+ var customerFlashBuy model.TaCustomerFlashBuy
|
|
177
|
+ customerFlashBuy.FlashBuyId = flashbuy.FlashBuyId
|
|
178
|
+ customerFlashBuy.CustomerId = customer.CustomerId
|
|
179
|
+ customerFlashBuy.CaseId = flashbuy.CaseId
|
|
180
|
+ customerFlashBuy.OrgId = flashbuy.OrgId
|
|
181
|
+ if flashbuy.ValidateType == "" {
|
|
182
|
+ customerFlashBuy.ValidateStart = flashbuy.StartDate
|
|
183
|
+ customerFlashBuy.ValidateEnd = flashbuy.EndDate
|
|
184
|
+ } else {
|
|
185
|
+ customerFlashBuy.ValidateStart = time.Now().Local()
|
|
186
|
+ customerFlashBuy.ValidateEnd = time.Now().Local().AddDate(0, 0, flashbuy.ValidateDays)
|
|
187
|
+ }
|
|
188
|
+
|
|
189
|
+ num, err := s.dao.UpdateFlashBuyJoin(flashbuy.FlashBuyId)
|
|
190
|
+ if err != nil {
|
|
191
|
+ utils.LogError("抢购失败: " + err.Error())
|
|
192
|
+ return errors.New("抢购失败!")
|
|
193
|
+ }
|
|
194
|
+ if num < 1 {
|
|
195
|
+ err = s.dao.UpdateFlashBuy(flashbuy.FlashBuyId, models.FLASH_BUY_OVER)
|
|
196
|
+ if err != nil {
|
|
197
|
+ utils.LogError("更新状态失败: " + err.Error())
|
|
198
|
+ }
|
|
199
|
+ return errors.New("活动已结束!")
|
|
200
|
+ }
|
|
201
|
+
|
|
202
|
+ return nil
|
|
203
|
+}
|