Browse Source

order

master
黄梓健 5 years ago
parent
commit
851767ad0d
  1. 10
      controllers/base.go
  2. 70
      controllers/client/good.go
  3. 1
      log/hdzj.log
  4. 28
      models/customer_order.go
  5. 12
      models/customer_order_sub.go

10
controllers/base.go

@ -17,7 +17,6 @@ type BaseCtl struct {
core.Controller
Page int
PageSize int
Limit int // page * pagesize
}
func (t *BaseCtl) Prepare() {
@ -33,8 +32,15 @@ func (t *BaseCtl) Prepare() {
return
}
t.Page, _ = t.GetInt("page")
if t.Page <= 0 {
t.Page = 0
} else {
t.Page = t.Page - 1
}
t.PageSize, _ = t.GetInt("page_size")
t.Limit = t.Page * t.PageSize
if t.PageSize == 0 {
t.PageSize = 10
}
}
type M map[string]interface{}

70
controllers/client/good.go

@ -66,7 +66,8 @@ func (t *GoodCtl) ListOrder() {
t.CheckErr(err)
t.Assert(exist, code.MSG_ACTIVITY_NOT_EXIST, "互动不存在")
orders, err := models.GetCustomerOrdersByActivityId(uid, activity.Id, activity.RehearsalId, areaId, status)
orders, err := models.GetCustomerOrdersByActivityId(uid, activity.Id, activity.RehearsalId,
areaId, status, t.Page, t.PageSize)
t.CheckErr(err)
outTradeNos := make([]string, 0)
for _, order := range orders {
@ -76,7 +77,7 @@ func (t *GoodCtl) ListOrder() {
t.CheckErr(err)
for index, order := range orders {
for _, sub := range subs {
if order.OutTradeNo == sub.OutTradeNo {
if order.OutTradeNo == sub["out_trade_no"] {
orders[index].SubOrders = append(orders[index].SubOrders, sub)
}
}
@ -85,12 +86,12 @@ func (t *GoodCtl) ListOrder() {
}
type OrderParam struct {
ActivityId int64 `json:"activity_id"`
AreaId int64 `json:"area_id"`
Name string `json:"name"`
Phone string `json:"phone"`
Address string `json:"address"`
Goods interface{} `json:"goods"`
ActivityId int64 `json:"activity_id"`
AreaId int64 `json:"area_id"`
Name string `json:"name"`
Phone string `json:"phone"`
Address string `json:"address"`
Goods []map[string]int `json:"goods"`
}
// 下订单
@ -141,7 +142,7 @@ func (t *GoodCtl) Order() {
subOrders := make([]*models.CustomerOrderSub, 0)
var price = 0
for _, g := range goods {
for _, g := range param.Goods {
good := new(models.CustomerGoods)
exist, err = session.Where("is_delete=0 and id=?", g["id"]).Get(good)
if err != nil || !exist {
@ -181,23 +182,40 @@ func (t *GoodCtl) Order() {
t.CheckErr(err)
}
order := new(models.CustomerOrder)
order.AreaId = param.AreaId
order.AreaName = area.Name
order.RehearsalId = activity.RehearsalId
order.BuyerId = userId
order.ActivityId = activity.Id
order.TotalAmount = float64(price)/100 + option.PostFee
order.PayAmount = order.TotalAmount
order.OutTradeNo = res["out_trade_no"].(string)
order.Address = param.Address
order.Receiver = param.Name
order.Phone = param.Phone
order.Postage = option.PostFee
order.Status = 0
order.IsDelete = false
order.CreatedAt = time.Now()
order.UpdatedAt = time.Now()
order := &models.CustomerOrder{
IsDelete: false,
CreatedAt: time.Now(),
UpdatedAt: time.Now(),
//UserPrizeId: , // 奖品
ActivityId: activity.Id,
AreaId: area.Id,
AreaName: area.Name,
RehearsalId: activity.RehearsalId,
OutTradeNo: res["out_trade_no"].(string),
//OrderEntryPersonId: ,
BuyerId: user.Id,
//GoodsId: ,
//GoodsName: "",
//GoodsNum: 0,
TotalAmount: float64(price)/100 + option.PostFee,
PayAmount: float64(price)/100 + option.PostFee,
Status: 0,
Receiver: param.Name,
Address: param.Address,
Phone: param.Phone,
IsDrawCash: 0,
Postage: option.PostFee,
//ExpressId: 0,
//ExpressName: "",
//ExpressNo: "",
//CancelTime: time.Time{},
AutoReceiveTime: time.Now().AddDate(0, 0, 15),
//OrderTime: time.Now(),
//Good: nil,
//User: nil,
//OrderEntryPersonName: "",
//SubOrders: nil,
}
_, err = session.InsertOne(order)
if err != nil {
session.Rollback()

1
log/hdzj.log

@ -24,3 +24,4 @@
2020-04-23 16:34:10.928 ERROR logger/logger.go:92 check err {"error": "<xml><return_code>FAIL</return_code><return_msg>invalid total_fee</return_msg></xml>"}
2020-04-23 16:37:49.184 ERROR logger/logger.go:92 check err {"error": "<xml><return_code>FAIL</return_code><return_msg>invalid total_fee</return_msg></xml>"}
2020-04-23 19:00:16.688 ERROR logger/logger.go:92 check err {"error": "json: cannot unmarshal string into Go struct field OrderParam.activity_id of type int64"}
2020-04-23 19:33:15.206 ERROR logger/logger.go:92 check err {"error": "Error 1052: Column 'is_delete' in where clause is ambiguous"}

28
models/customer_order.go

@ -30,16 +30,24 @@ type CustomerOrder struct {
Postage float64 `json:"postage" xorm:"not null default 0.00 comment('邮费[0免邮]') DECIMAL(18)"`
Status int `json:"status" xorm:"not null default 0 comment('订单状态[0未支付1已支付2待发货3已发货4确认收货5申请退款6已退款]')"`
// 快递信息
Receiver string `json:"receiver" xorm:"not null default '' comment('收件人') VARCHAR(128)"`
Address string `json:"address" xorm:"not null default '' comment('收件人地址') VARCHAR(255)"`
Phone string `json:"phone" xorm:"not null default '' comment('收件人电话') VARCHAR(128)"`
Receiver string `json:"receiver" xorm:"not null default '' comment('收件人') VARCHAR(128)"`
Address string `json:"address" xorm:"not null default '' comment('收件人地址') VARCHAR(255)"`
Phone string `json:"phone" xorm:"not null default '' comment('收件人电话') VARCHAR(128)"`
IsDrawCash int `json:"is_draw_cash" xorm:"not null default 0 comment('订单是否提取贷款0否1是') TINYINT(1)"`
ExpressId int `json:"express_id" xorm:"not null default '0' comment('快递公司名字') INT(11)"`
ExpressName string `json:"express_name" xorm:"not null default '' comment('快递名字') VARCHAR(128)"`
ExpressNo string `json:"express_no" xorm:"not null default '' comment('快递单号') VARCHAR(128)"`
CancelTime time.Time `json:"cancel_time" xorm:"not null default '1970-01-01 08:00:00' comment('取消时间') TIMESTAMP"`
AutoReceiveTime time.Time `json:"auto_receive_time" xorm:"not null default '1970-01-01 08:00:00' comment('自动收货时间') TIMESTAMP"`
// 无关变量
OrderTime string `json:"order_time,omitempty" xorm:"-"`
Good *CustomerGoods `json:"good,omitempty" xorm:"-"`
User *User `json:"user,omitempty" xorm:"-"`
OrderEntryPersonName string `json:"order_entry_person_name,omitempty" xorm:"-"`
SubOrders []*CustomerOrderSub `json:"sub_orders,omitempty" xorm:"-"`
OrderTime string `json:"order_time,omitempty" xorm:"-"`
Good *CustomerGoods `json:"good,omitempty" xorm:"-"`
User *User `json:"user,omitempty" xorm:"-"`
OrderEntryPersonName string `json:"order_entry_person_name,omitempty" xorm:"-"`
// 无关变量
SubOrders []map[string]string `json:"sub_orders,omitempty" xorm:"-"`
}
func (t *CustomerOrder) TableName() string {
@ -64,11 +72,11 @@ func (t *CustomerOrder) Count(activityId, rehearsalId int64, limitTime time.Time
limitTime, activityId, rehearsalId).Count(t)
}
func GetCustomerOrdersByActivityId(userId, activityId, rehearsalId, areaId int64, status int) ([]*CustomerOrder, error) {
func GetCustomerOrdersByActivityId(userId, activityId, rehearsalId, areaId int64, status, page, pageSize int) ([]*CustomerOrder, error) {
orders := make([]*CustomerOrder, 0)
err := core.GetXormAuto().Where("is_delete=0 and buyer_id=? and activity_id=? and "+
"rehearsal_id=? and area_id=? and status=?", userId, activityId, rehearsalId, areaId, status).
Asc("created_at").Find(&orders)
Asc("created_at").Limit(pageSize, page*pageSize).Find(&orders)
return orders, err
}

12
models/customer_order_sub.go

@ -19,6 +19,9 @@ type CustomerOrderSub struct {
GoodsNum int `json:"goods_num" xorm:"not null default 0 comment('商品数量') INT(11)"`
GoodName string `json:"good_name" xorm:"not null default '' comment('商品名字') VARCHAR(128)"`
GoodPrice float64 `json:"good_price" xorm:"not null default 0.00 comment('商品价格') DECIMAL(18)"`
// 无关变量
GoodsPicUrl string `json:"goods_pic_url" xorm:"-"`
}
func (t *CustomerOrderSub) TableName() string {
@ -29,8 +32,11 @@ func (t *CustomerOrderSub) Alias(n string) string {
return fmt.Sprintf("%s as %s", t.TableName(), n)
}
func GetCustomerOrderSubByOutTradeNos(outTradeNos []string) (subs []*CustomerOrderSub, err error) {
err = core.GetXormAuto().Where("is_delete=0").In("out_trade_no", outTradeNos).
Asc("created_at").Find(&subs)
func GetCustomerOrderSubByOutTradeNos(outTradeNos []string) (subs []map[string]string, err error) {
err = core.GetXormAuto().Table(new(CustomerOrderSub)).Alias("s").
Select("s.out_trade_no, s.goods_id, s.goods_num, s.good_name, s.good_price, g.goods_pic_url").Join("left",
new(CustomerGoods).Alias("g"), "g.id=s.goods_id").
Where("s.is_delete=0").In("s.out_trade_no", outTradeNos).
Asc("s.created_at").Find(&subs)
return
}
Loading…
Cancel
Save