wangfei 6 年前
父节点
当前提交
3f0f1bd941
共有 2 个文件被更改,包括 79 次插入5 次删除
  1. 13
    5
      models/flashbuy/flashbuy.go
  2. 66
    0
      service/flashbuy/flashbuy.go

+ 13
- 5
models/flashbuy/flashbuy.go 查看文件

@@ -204,9 +204,17 @@ WHERE
204 204
 	return nil, nil
205 205
 }
206 206
 
207
-// Update
208
-
209
-// FlashBuy 抢购
210
-// func (m *FlashbuyDAO) FlashBuy() error {
207
+// GetCustomerFlashBuy 获取用户抢购信息
208
+func (m *FlashbuyDAO) GetCustomerFlashBuy(id, customerid string) ([]model.TaCustomerFlashBuy, error) {
209
+	var buys []model.TaCustomerFlashBuy
210
+	err := m.db.Where("flash_buy_id=?").And("customer_id=?").And("status>?", models.STATUS_DEL).Find(&buys)
211
+	return buys, err
212
+}
211 213
 
212
-// }
214
+// UpdateFlashBuyJoin 更新抢购参与人数
215
+func (m *FlashbuyDAO) UpdateFlashBuyJoin(id string) (int64, error) {
216
+	sql := `update ta_flash_buy set join_num = join_num + 1 where flash_buy_id=? and join_num < flash_buy_max_attendant`
217
+	result, err := m.db.Exec(sql, id)
218
+	rowCount, err := result.RowsAffected()
219
+	return rowCount, err
220
+}

+ 66
- 0
service/flashbuy/flashbuy.go 查看文件

@@ -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
+}