|
|
@ -203,14 +203,9 @@ func (t *OrderDrawCtl) List() { |
|
|
|
func (t *OrderDrawCtl) Prize() { |
|
|
|
ruleId := t.MustGetInt("order_draw_rule_id") |
|
|
|
|
|
|
|
//list := make([]*models.OrderDrawRuleLadder, 0)
|
|
|
|
//err := core.GetXormAuto().Where("is_delete=0 and order_draw_rule_id=?", ruleId).Find(&list)
|
|
|
|
list, err := models.GetOrderDrawRuleLaddersByRuleId(ruleId) |
|
|
|
t.CheckErr(err) |
|
|
|
|
|
|
|
for index := range list { |
|
|
|
list[index].Des = "在该活动的所有订单用户中随机抽奖品数量的用户" |
|
|
|
} |
|
|
|
t.JSON(map[string]interface{}{ |
|
|
|
"total": len(list), |
|
|
|
"lise": list, |
|
|
@ -305,48 +300,113 @@ func (t *OrderDrawCtl) Draw() { |
|
|
|
module, exist, err := activity_service.GetModuleService(define.MODULE_ORDERLY, activity.Id) |
|
|
|
t.CheckErr(err) |
|
|
|
t.Assert(exist, code.MSG_MODULE_NOT_EXIST, "模块服务不存在") |
|
|
|
userIds, err := lottery_service.GetOrderLotteryUserIds(module.BesideRepeat, activity.Id, rule.Id, ladder.Id, activity.RehearsalId, area.Id, activity.ArchId) |
|
|
|
if len(userIds) < number { |
|
|
|
t.ERROR("订单抽奖人数不足", code.MSG_LOTTERY_PEOPLE_NOT_ENOUGH) |
|
|
|
} |
|
|
|
if customer.IsSpecial == 0 { |
|
|
|
userIds, err := lottery_service.GetOrderLotteryUserIds(module.BesideRepeat, activity.Id, rule.Id, ladder.Id, activity.RehearsalId, area.Id, activity.ArchId) |
|
|
|
if len(userIds) < number { |
|
|
|
t.ERROR("订单抽奖人数不足", code.MSG_LOTTERY_PEOPLE_NOT_ENOUGH) |
|
|
|
} |
|
|
|
|
|
|
|
lottery_service.RandLotteryUserIds(userIds) |
|
|
|
winnerIds := userIds[:number] |
|
|
|
|
|
|
|
winners, err := lottery_service.GetLotteryUsers(winnerIds) |
|
|
|
t.CheckErr(err) |
|
|
|
for i := range winners { |
|
|
|
winners[i].LadderId = ladder.Id |
|
|
|
winners[i].PrizeImg = ladder.PrizeImg |
|
|
|
winners[i].PrizeName = ladder.PrizeName |
|
|
|
prize := models.UserPrize{} |
|
|
|
prize.ActivityId = activityId |
|
|
|
prize.RehearsalId = activity.RehearsalId |
|
|
|
prize.ActivityName = activity.Name |
|
|
|
prize.UserId = winners[i].UserId |
|
|
|
prize.PrizeImg = ladder.PrizeImg |
|
|
|
prize.PrizeName = ladder.PrizeName |
|
|
|
prize.ArchId = activity.ArchId |
|
|
|
prize.PrizeType = 2 |
|
|
|
_, err = models.Add(&prize) |
|
|
|
t.CheckErr(err) |
|
|
|
|
|
|
|
record := models.OrderDrawRecord{} |
|
|
|
record.UserPrizeId = prize.Id |
|
|
|
record.ActivityId = activityId |
|
|
|
record.RehearsalId = activity.RehearsalId |
|
|
|
record.ArchId = activity.ArchId |
|
|
|
record.OrderDrawActivityId = rule.OrderDrawActivityId |
|
|
|
record.OrderDrawRuleId = rule.Id |
|
|
|
record.UserId = winners[i].UserId |
|
|
|
record.OrderDrawRuleLadderId = ladder.Id |
|
|
|
record.PrizeName = ladder.PrizeName |
|
|
|
record.AreaId = area.Id |
|
|
|
record.AreaName = area.Name |
|
|
|
_, err = models.Add(&record) |
|
|
|
t.CheckErr(err) |
|
|
|
} |
|
|
|
t.JSON(winners) |
|
|
|
} else if customer.IsSpecial == 2 { |
|
|
|
orders, err := lottery_service.GetSpecialOrderLottery(module.BesideRepeat, activity.Id, rule.Id, ladder.Id, activity.RehearsalId, area.Id, activity.ArchId) |
|
|
|
if len(orders) < number { |
|
|
|
t.ERROR("抽奖订单数量不足", code.MSG_LOTTERY_PEOPLE_NOT_ENOUGH) |
|
|
|
} |
|
|
|
|
|
|
|
lottery_service.RandLotteryUserIds(userIds) |
|
|
|
winnerIds := userIds[:number] |
|
|
|
|
|
|
|
winners, err := lottery_service.GetLotteryUsers(winnerIds) |
|
|
|
t.CheckErr(err) |
|
|
|
for i := range winners { |
|
|
|
winners[i].LadderId = ladder.Id |
|
|
|
winners[i].PrizeImg = ladder.PrizeImg |
|
|
|
winners[i].PrizeName = ladder.PrizeName |
|
|
|
prize := models.UserPrize{} |
|
|
|
prize.ActivityId = activityId |
|
|
|
prize.RehearsalId = activity.RehearsalId |
|
|
|
prize.ActivityName = activity.Name |
|
|
|
prize.UserId = winners[i].UserId |
|
|
|
prize.PrizeImg = ladder.PrizeImg |
|
|
|
prize.PrizeName = ladder.PrizeName |
|
|
|
prize.ArchId = activity.ArchId |
|
|
|
prize.PrizeType = 2 |
|
|
|
_, err = models.Add(&prize) |
|
|
|
lottery_service.RandSpecialOrderLottery(orders) |
|
|
|
winnerOrders := orders[:number] |
|
|
|
userIds := make([]int, 0) |
|
|
|
for _, v := range winnerOrders { |
|
|
|
userIds = append(userIds, v.BuyerId) |
|
|
|
} |
|
|
|
users, err := models.GetUsersByIds(userIds) |
|
|
|
t.CheckErr(err) |
|
|
|
|
|
|
|
record := models.OrderDrawRecord{} |
|
|
|
record.UserPrizeId = prize.Id |
|
|
|
record.ActivityId = activityId |
|
|
|
record.RehearsalId = activity.RehearsalId |
|
|
|
record.ArchId = activity.ArchId |
|
|
|
record.OrderDrawActivityId = rule.OrderDrawActivityId |
|
|
|
record.OrderDrawRuleId = rule.Id |
|
|
|
record.UserId = winners[i].UserId |
|
|
|
record.OrderDrawRuleLadderId = ladder.Id |
|
|
|
record.PrizeName = ladder.PrizeName |
|
|
|
record.AreaId = area.Id |
|
|
|
record.AreaName = area.Name |
|
|
|
_, err = models.Add(&record) |
|
|
|
winners := make([]*lottery_service.SpecialOrderLotteryUser, 0) |
|
|
|
t.CheckErr(err) |
|
|
|
for _, o := range winnerOrders { |
|
|
|
for _, u := range users { |
|
|
|
if u.Id == o.BuyerId { |
|
|
|
winners = append(winners, &lottery_service.SpecialOrderLotteryUser{ |
|
|
|
UserId: u.Id, |
|
|
|
Username: o.Receiver, |
|
|
|
UserPhone: o.Phone, |
|
|
|
Avatar: u.Avatar, |
|
|
|
PrizeName: ladder.PrizeName, |
|
|
|
LadderId: ladder.Id, |
|
|
|
PrizeImg: ladder.PrizeImg, |
|
|
|
EntryPersonName: o.OrderEntryPersonName, |
|
|
|
}) |
|
|
|
} |
|
|
|
} |
|
|
|
prize := models.UserPrize{} |
|
|
|
prize.ActivityId = activityId |
|
|
|
prize.RehearsalId = activity.RehearsalId |
|
|
|
prize.ActivityName = activity.Name |
|
|
|
prize.UserId = o.BuyerId |
|
|
|
prize.CustomerOrderId = o.Id |
|
|
|
prize.PrizeImg = ladder.PrizeImg |
|
|
|
prize.PrizeName = ladder.PrizeName |
|
|
|
prize.ArchId = activity.ArchId |
|
|
|
prize.PrizeType = 2 |
|
|
|
_, err = models.Add(&prize) |
|
|
|
t.CheckErr(err) |
|
|
|
|
|
|
|
record := models.OrderDrawRecord{} |
|
|
|
record.UserPrizeId = prize.Id |
|
|
|
record.ActivityId = activityId |
|
|
|
record.RehearsalId = activity.RehearsalId |
|
|
|
record.ArchId = activity.ArchId |
|
|
|
record.OrderDrawActivityId = rule.OrderDrawActivityId |
|
|
|
record.OrderDrawRuleId = rule.Id |
|
|
|
record.UserId = o.BuyerId |
|
|
|
record.CustomerOrderId = o.BuyerId |
|
|
|
record.OrderDrawRuleLadderId = ladder.Id |
|
|
|
record.PrizeName = ladder.PrizeName |
|
|
|
record.AreaId = area.Id |
|
|
|
record.AreaName = area.Name |
|
|
|
_, err = models.Add(&record) |
|
|
|
t.CheckErr(err) |
|
|
|
} |
|
|
|
t.JSON(winners) |
|
|
|
} |
|
|
|
t.JSON(winners) |
|
|
|
t.ERROR("客户信息异常", code.MSG_CUSTOMER_NOT_EXIST) |
|
|
|
} |
|
|
|
|
|
|
|
type WinnerResult struct { |
|
|
@ -402,34 +462,70 @@ func (t *OrderDrawCtl) Orders() { |
|
|
|
t.CheckErr(err) |
|
|
|
t.Assert(exist, code.MSG_ACTIVITY_NOT_EXIST, "互动不存在") |
|
|
|
|
|
|
|
orders := make([]*OrdersResult, 0) |
|
|
|
err = core.GetXormAuto().Table(&models.CustomerOrder{}).Alias("o"). |
|
|
|
Select("o.area_name, o.goods_name, o.buyer_id as user_id, u.nickname, l.extra_data as extra_data, o.created_at"). |
|
|
|
Distinct("o.id").Join("LEFT", (&models.InvitationLetter{}).Alias("l"), |
|
|
|
"o.buyer_id=l.user_id and o.activity_id=l.activity_id and l.arch_id=o.arch_id"). |
|
|
|
Join("LEFT", (&models.User{}).Alias("u"), "u.id=o.buyer_id"). |
|
|
|
Where("o.is_delete=0 and o.activity_id=? and o.rehearsal_id=? and o.arch_id=?", |
|
|
|
activityId, activity.RehearsalId, activity.ArchId). |
|
|
|
Asc("o.created_at").Find(&orders) |
|
|
|
t.CheckErr(err) |
|
|
|
|
|
|
|
items, err := invitation_service.GetOptionItem(activityId) |
|
|
|
customer := models.Customer{} |
|
|
|
exist, err = models.Get(&customer, activity.CustomerId) |
|
|
|
t.CheckErr(err) |
|
|
|
for i := range orders { |
|
|
|
data, err := invitation_service.GetOptionValue(items, orders[i].ExtraData) |
|
|
|
t.CheckErr(err) |
|
|
|
orders[i].Extra = data |
|
|
|
} |
|
|
|
t.Assert(exist, code.MSG_CUSTOMER_NOT_EXIST, "客户不存在") |
|
|
|
|
|
|
|
// 下订单人数
|
|
|
|
buyerCount, err := (&models.CustomerOrder{}).CountCustomerOrder(activity.Id, activity.RehearsalId, activity.ArchId) |
|
|
|
t.CheckErr(err) |
|
|
|
|
|
|
|
t.JSON(map[string]interface{}{ |
|
|
|
"orders": orders, |
|
|
|
"total": len(orders), |
|
|
|
"buyer_count": buyerCount, |
|
|
|
}) |
|
|
|
if customer.IsSpecial == 0 { |
|
|
|
orders := make([]*OrdersResult, 0) |
|
|
|
err = core.GetXormAuto().Table(&models.CustomerOrder{}).Alias("o"). |
|
|
|
Select("o.area_name, o.goods_name, o.buyer_id as user_id, u.nickname, l.extra_data as extra_data, o.created_at"). |
|
|
|
Distinct("o.id").Join("LEFT", (&models.InvitationLetter{}).Alias("l"), |
|
|
|
"o.buyer_id=l.user_id and o.activity_id=l.activity_id and l.arch_id=o.arch_id"). |
|
|
|
Join("LEFT", (&models.User{}).Alias("u"), "u.id=o.buyer_id"). |
|
|
|
Where("o.is_delete=0 and o.activity_id=? and o.rehearsal_id=? and o.arch_id=?", |
|
|
|
activityId, activity.RehearsalId, activity.ArchId). |
|
|
|
Asc("o.created_at").Find(&orders) |
|
|
|
t.CheckErr(err) |
|
|
|
|
|
|
|
items, err := invitation_service.GetOptionItem(activityId) |
|
|
|
t.CheckErr(err) |
|
|
|
for i := range orders { |
|
|
|
data, err := invitation_service.GetOptionValue(items, orders[i].ExtraData) |
|
|
|
t.CheckErr(err) |
|
|
|
orders[i].Extra = data |
|
|
|
} |
|
|
|
t.JSON(map[string]interface{}{ |
|
|
|
"orders": orders, |
|
|
|
"total": len(orders), |
|
|
|
"buyer_count": buyerCount, |
|
|
|
}) |
|
|
|
return |
|
|
|
} else if customer.IsSpecial == 2 { |
|
|
|
orders := make([]*SpecialOrdersResult, 0) |
|
|
|
err = core.GetXormAuto().Table(&models.CustomerOrder{}).Alias("o").Select("o.id as id, "+ |
|
|
|
" o.area_name as area_name, o.order_entry_person_name as entry_person_name, o.buyer_id as user_id, "+ |
|
|
|
" o.receiver as username, o.phone as phone, o.address as address, o.created_at"). |
|
|
|
Where("o.is_delete=0 and o.activity_id=? and o.rehearsal_id=? and o.arch_id=?", |
|
|
|
activityId, activity.RehearsalId, activity.ArchId).Asc("o.created_at").Find(&orders) |
|
|
|
t.CheckErr(err) |
|
|
|
|
|
|
|
orderIds := make([]int, 0) |
|
|
|
for _, o := range orders { |
|
|
|
orderIds = append(orderIds, o.Id) |
|
|
|
} |
|
|
|
subs, err := models.GetCustomerOrderSubsByOrderIds(orderIds) |
|
|
|
t.CheckErr(err) |
|
|
|
for i := range orders { |
|
|
|
for j := range subs { |
|
|
|
if fmt.Sprint(orders[i].Id) == subs[j]["order_id"] { |
|
|
|
orders[i].Goods = append(orders[i].Goods, subs[j]) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
t.JSON(map[string]interface{}{ |
|
|
|
"orders": orders, |
|
|
|
"total": len(orders), |
|
|
|
"buyer_count": buyerCount, |
|
|
|
}) |
|
|
|
return |
|
|
|
} |
|
|
|
t.ERROR("客户信息异常", code.MSG_CUSTOMER_NOT_EXIST) |
|
|
|
} |
|
|
|
|
|
|
|
// 录入人员排行榜
|
|
|
|