Browse Source

fix:bug

token_replace
黄梓健 5 years ago
parent
commit
6e944a1251
  1. 2
      controllers/client/order_entry.go
  2. 112
      controllers/pc/order_draw.go
  3. 2
      controllers/pc/order_draw_special.go
  4. 4
      models/customer_order.go
  5. 6
      services/lottery/order.go

2
controllers/client/order_entry.go

@ -507,7 +507,7 @@ func (t *OrderEntryCtl) EntryOrders() {
list[i].Extra = data
list[i].EntryName = entry.Name
}
} else {
} else if customer.IsSpecial == 2 {
err = core.GetXormAuto().Table(&models.CustomerOrder{}).Alias("o").Select("o.id as order_id, "+
" o.receiver as receiver, o.phone as phone, o.address as address, o.buyer_id as user_id, o.order_entry_person_name as entry_name, "+
" o.total_amount as order_money, DATE_FORMAT(o.created_at, '%Y-%m-%d %H:%i:%S') AS order_time").

112
controllers/pc/order_draw.go

@ -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,6 +300,7 @@ 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, "模块服务不存在")
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)
@ -347,6 +343,70 @@ func (t *OrderDrawCtl) Draw() {
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.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)
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.ERROR("客户信息异常", code.MSG_CUSTOMER_NOT_EXIST)
}
type WinnerResult struct {
@ -402,6 +462,16 @@ func (t *OrderDrawCtl) Orders() {
t.CheckErr(err)
t.Assert(exist, code.MSG_ACTIVITY_NOT_EXIST, "互动不存在")
customer := models.Customer{}
exist, err = models.Get(&customer, activity.CustomerId)
t.CheckErr(err)
t.Assert(exist, code.MSG_CUSTOMER_NOT_EXIST, "客户不存在")
// 下订单人数
buyerCount, err := (&models.CustomerOrder{}).CountCustomerOrder(activity.Id, activity.RehearsalId, activity.ArchId)
t.CheckErr(err)
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").
@ -420,16 +490,42 @@ func (t *OrderDrawCtl) Orders() {
t.CheckErr(err)
orders[i].Extra = data
}
// 下订单人数
buyerCount, err := (&models.CustomerOrder{}).CountCustomerOrder(activity.Id, activity.RehearsalId, activity.ArchId)
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)
}
// 录入人员排行榜

2
controllers/pc/order_draw_special.go

@ -202,8 +202,6 @@ func (t *OrderDrawSpecialCtl) List() {
func (t *OrderDrawSpecialCtl) 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)

4
models/customer_order.go

@ -98,8 +98,8 @@ func (t *CustomerOrder) CountCustomerOrder(activityId, rehearsalId, archId inter
return buyerCount, err
}
func (t *CustomerOrder) SumCustomerOrder(activityId, rehearsalId, archId interface{}, limit int) ([]map[string]string, error) {
res := make([]map[string]string, 0)
func (t *CustomerOrder) SumCustomerOrder(activityId, rehearsalId, archId interface{}, limit int) ([]map[string]interface{}, error) {
res := make([]map[string]interface{}, 0)
err := core.GetXormAuto().Table(t).Select("order_entry_person_id, order_entry_person_name, SUM(goods_num) as num").
NoAutoCondition().Where("is_delete=0 and activity_id=? and rehearsal_id=? and arch_id=?",
activityId, rehearsalId, archId).Limit(limit).Desc("num").Find(&res)

6
services/lottery/order.go

@ -44,12 +44,14 @@ type OrderWinnersResult struct {
UserPhone string `json:"user_phone"`
Avatar string `json:"avatar"`
PrizeName string `json:"prize_name"`
EntryPersonName string `json:"entry_person_name"`
}
func GetOrderWinnersResult(ruleId, rehearsalId, archId interface{}) (result []*OrderWinnersResult, err error) {
err = core.GetXormAuto().Table(&models.OrderDrawRecord{}).Alias("r").
Select("r.user_id, u.nickname as username, u.phone as user_phone, u.avatar, r.prize_name").
Join("LEFT", (&models.User{}).Alias("u"), "u.id=r.user_id and u.is_delete=0").
Select("r.order_entry_person_name as entry_person_name, r.user_id, u.nickname as username, "+
" u.phone as user_phone, u.avatar, r.prize_name").Join("LEFT",
(&models.User{}).Alias("u"), "u.id=r.user_id and u.is_delete=0").
Where("r.is_delete=0 and r.order_draw_rule_id=? and r.rehearsal_id=? and r.arch_id=?",
ruleId, rehearsalId, archId).Find(&result)
return

Loading…
Cancel
Save