|
|
@ -59,11 +59,6 @@ func (t *OrderEntryCtl) Order() { |
|
|
|
t.CheckErr(err) |
|
|
|
t.Assert(exist, code.MSG_AREASTORE_NOT_EXIST, "地区不存在") |
|
|
|
|
|
|
|
good := models.CustomerGoods{} |
|
|
|
exist, err = models.Get(&good, goodId) |
|
|
|
t.CheckErr(err) |
|
|
|
t.Assert(exist, code.MSG_DATA_NOT_EXIST, "商品不存在") |
|
|
|
|
|
|
|
s := core.GetXormAuto().NewSession() |
|
|
|
defer s.Close() |
|
|
|
err = s.Begin() |
|
|
@ -71,7 +66,32 @@ func (t *OrderEntryCtl) Order() { |
|
|
|
s.Rollback() |
|
|
|
t.CheckErr(err) |
|
|
|
} |
|
|
|
|
|
|
|
good := models.CustomerGoods{} |
|
|
|
exist, err = s.Where("is_delete=0 and id=?", goodId).Get(&good) |
|
|
|
if err != nil || !exist { |
|
|
|
s.Rollback() |
|
|
|
t.ERROR("商品信息异常", code.MSG_ERR_Param) |
|
|
|
return |
|
|
|
} |
|
|
|
// 找出商品库存
|
|
|
|
ms := make([]map[string]int, 0) |
|
|
|
err = s.Table(&models.CustomerOrderSub{}).Select("goods_id, sum(goods_num) as goods_num"). |
|
|
|
Where("goods_id=?", good.Id).GroupBy("goods_id").Find(&ms) |
|
|
|
if err != nil { |
|
|
|
s.Rollback() |
|
|
|
t.CheckErr(err) |
|
|
|
} |
|
|
|
for _, m := range ms { |
|
|
|
if m["goods_id"] == int(good.Id) && m["goods_num"] >= good.Stock { |
|
|
|
s.Rollback() |
|
|
|
t.ERROR(good.Name+"商品库存不足", code.MSG_CUSTOMER_GOOD_NOT_ENOUGH) |
|
|
|
return |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
order := models.CustomerOrder{} |
|
|
|
// 查询库存
|
|
|
|
total, err := s.Where("is_delete=0").Count(&order) // 订单总数
|
|
|
|
if err != nil { |
|
|
|
s.Rollback() |
|
|
@ -86,6 +106,7 @@ func (t *OrderEntryCtl) Order() { |
|
|
|
order.ActivityId = activity.Id |
|
|
|
order.RehearsalId = activity.RehearsalId |
|
|
|
order.OrderEntryPersonId = entryPerson.Id |
|
|
|
order.OrderEntryPersonName = entryPerson.Name |
|
|
|
order.TotalAmount = good.Price |
|
|
|
order.OutTradeNo = utils.RandomStr(32) |
|
|
|
order.OrderNo = fmt.Sprint(define.DefaultOrderNo + int(total)) |
|
|
@ -201,20 +222,9 @@ func (t *OrderEntryCtl) ManualOrder() { |
|
|
|
t.CheckErr(err) |
|
|
|
t.Assert(exist, code.MSG_AREASTORE_NOT_EXIST, "地区不存在") |
|
|
|
|
|
|
|
subs := make([]*models.CustomerOrderSub, 0) |
|
|
|
totalAmount := 0.00 |
|
|
|
goodIds := make([]int, 0) |
|
|
|
for _, g := range param.Goods { |
|
|
|
good := models.CustomerGoods{} |
|
|
|
exist, err = models.Get(&good, g.GoodId) |
|
|
|
t.CheckErr(err) |
|
|
|
t.Assert(exist, code.MSG_DATA_NOT_EXIST, "商品不存在") |
|
|
|
subs = append(subs, &models.CustomerOrderSub{ |
|
|
|
GoodsId: good.Id, |
|
|
|
GoodsNum: g.GoodNum, |
|
|
|
GoodName: good.Name, |
|
|
|
GoodPrice: good.Price, |
|
|
|
}) |
|
|
|
totalAmount += good.Price * float64(g.GoodNum) |
|
|
|
goodIds = append(goodIds, g.GoodId) |
|
|
|
} |
|
|
|
|
|
|
|
s := core.GetXormAuto().NewSession() |
|
|
@ -229,12 +239,58 @@ func (t *OrderEntryCtl) ManualOrder() { |
|
|
|
Nickname: param.Name, |
|
|
|
Password: utils.RandomStr(6), |
|
|
|
} |
|
|
|
_, err = models.Add(&user) |
|
|
|
_, err = s.InsertOne(&user) |
|
|
|
if err != nil { |
|
|
|
s.Rollback() |
|
|
|
t.CheckErr(err) |
|
|
|
} |
|
|
|
// 校验库存
|
|
|
|
goods := make([]*models.CustomerGoods, 0) |
|
|
|
err = s.Where("is_delete=0").In("id", goodIds).Find(&goods) |
|
|
|
if err != nil { |
|
|
|
s.Rollback() |
|
|
|
t.CheckErr(err) |
|
|
|
} |
|
|
|
if len(goods) != len(param.Goods) { |
|
|
|
s.Rollback() |
|
|
|
t.ERROR("商品信息异常", code.MSG_ERR_Param) |
|
|
|
return |
|
|
|
} |
|
|
|
subs := make([]*models.CustomerOrderSub, 0) |
|
|
|
totalAmount := 0.00 |
|
|
|
for _, g := range param.Goods { |
|
|
|
for _, good := range goods { |
|
|
|
if g.GoodId == int(good.Id) { |
|
|
|
subs = append(subs, &models.CustomerOrderSub{ |
|
|
|
GoodsId: good.Id, |
|
|
|
GoodsNum: g.GoodNum, |
|
|
|
GoodName: good.Name, |
|
|
|
GoodPrice: good.Price, |
|
|
|
}) |
|
|
|
totalAmount += good.Price * float64(g.GoodNum) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
ms := make([]map[string]int, 0) |
|
|
|
err = s.Table(&models.CustomerOrderSub{}).Select("goods_id, sum(goods_num) as goods_num"). |
|
|
|
In("goods_id", goodIds).GroupBy("goods_id").Find(&ms) |
|
|
|
if err != nil { |
|
|
|
s.Rollback() |
|
|
|
t.CheckErr(err) |
|
|
|
} |
|
|
|
for _, m := range ms { |
|
|
|
for _, g := range goods { |
|
|
|
if g.Stock == -1 { // 无上限
|
|
|
|
break |
|
|
|
} |
|
|
|
if m["goods_id"] == int(g.Id) && m["goods_num"] >= g.Stock { |
|
|
|
s.Rollback() |
|
|
|
t.ERROR(g.Name+"商品库存不足", code.MSG_CUSTOMER_GOOD_NOT_ENOUGH) |
|
|
|
return |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
order := models.CustomerOrder{} |
|
|
|
count, err := s.Where("is_delete=0").Count(&order) // 查看订单所在
|
|
|
|
if err != nil { |
|
|
@ -249,6 +305,7 @@ func (t *OrderEntryCtl) ManualOrder() { |
|
|
|
order.ActivityId = activity.Id |
|
|
|
order.RehearsalId = activity.RehearsalId |
|
|
|
order.OrderEntryPersonId = entryPerson.Id |
|
|
|
order.OrderEntryPersonName = entryPerson.Name |
|
|
|
order.TotalAmount = totalAmount |
|
|
|
order.OutTradeNo = utils.RandomStr(32) |
|
|
|
order.OrderNo = fmt.Sprint(define.DefaultOrderNo + int(count)) |
|
|
@ -322,6 +379,7 @@ func (t *OrderEntryCtl) ManualOrder() { |
|
|
|
} |
|
|
|
t.SUCCESS("成功录入订单") |
|
|
|
} |
|
|
|
|
|
|
|
func (t *OrderEntryCtl) DeleteOrder() { |
|
|
|
orderId := t.MustGetInt64("order_id") |
|
|
|
order := new(models.CustomerOrder) |
|
|
|