// 将购物车转换为订单 func (this *Shopping) ParseShoppingCart(memberId int) (shopping.IOrder, member.IMember, shopping.ICart, error) { var order shopping.IOrder var val shopping.ValueOrder var cart shopping.ICart var m member.IMember var err error m = this._memberRep.GetMember(memberId) if m == nil { return nil, m, nil, member.ErrSessionTimeout } cart, err = this.GetCurrentCart(memberId) if err != nil || cart == nil || len(cart.GetValue().Items) == 0 { return nil, m, cart, shopping.ErrEmptyShoppingCart } val.MemberId = memberId val.PartnerId = this._partnerId tf, of := cart.GetFee() val.TotalFee = tf //总金额 val.Fee = of //实际金额 val.PayFee = of val.DiscountFee = tf - of //优惠金额 val.PartnerId = this._partnerId val.Status = 1 order = this.CreateOrder(&val, cart) return order, m, cart, nil }
func (this *shoppingRep) SaveOrder(partnerId int, v *shopping.ValueOrder) (int, error) { var err error d := this.Connector v.PartnerId = partnerId if v.Id > 0 { _, _, err = d.GetOrm().Save(v.Id, v) } else { //验证Partner和Member是否有绑定关系 var num int if d.ExecScalar(`SELECT COUNT(0) FROM mm_relation WHERE member_id=? AND reg_partner_id=?`, &num, v.MemberId, v.PartnerId); num != 1 { return v.Id, errors.New("error partner and member.") } _, _, err = d.GetOrm().Save(nil, v) if err == nil { err = d.ExecScalar(`SELECT MAX(id) FROM pt_order WHERE partner_id=? AND member_id=?`, &v.Id, partnerId, v.MemberId) } } // 保存订单项 if err == nil && v.Items != nil { orm := d.GetOrm() for _, v1 := range v.Items { if v1.Id > 0 { orm.Save(v1.Id, v1) } else { orm.Save(nil, v1) } } } return v.Id, err }
func (this *shoppingRep) SaveOrder(partnerId int, v *shopping.ValueOrder) (int, error) { var err error d := this.Connector v.PartnerId = partnerId if v.Id > 0 { _, _, err = d.GetOrm().Save(v.Id, v) if v.Status == enum.ORDER_COMPLETED { gof.CurrentApp.Storage().Set(variable.KvHaveNewCompletedOrder, enum.TRUE) } } else { //验证Partner和Member是否有绑定关系 var num int if d.ExecScalar(`SELECT COUNT(0) FROM mm_relation WHERE member_id=? AND reg_partner_id=?`, &num, v.MemberId, v.PartnerId); num != 1 { return v.Id, errors.New("error partner and member.") } _, _, err = d.GetOrm().Save(nil, v) if err == nil { err = d.ExecScalar(`SELECT MAX(id) FROM pt_order WHERE partner_id=? AND member_id=?`, &v.Id, partnerId, v.MemberId) } // Sign new order gof.CurrentApp.Storage().Set(variable.KvHaveNewCreatedOrder, enum.TRUE) } // 保存订单项 unix := time.Now().Unix() if err == nil && v.Items != nil { orm := d.GetOrm() for _, v1 := range v.Items { v1.OrderId = v.Id v1.UpdateTime = unix if v1.Id > 0 { orm.Save(v1.Id, v1) } else { orm.Save(nil, v1) } } } return v.Id, err }