abiao преди 3 години
родител
ревизия
5b516aa008

+ 71 - 0
go/gopath/src/fohow.com/apps/controllers/balance_controller/silver_controller.go

@@ -0,0 +1,71 @@
+package balance_controller
+
+import (
+	"fohow.com/apps"
+	"fohow.com/apps/models/balance_model"
+	"fohow.com/apps/models/user_model"
+	"strconv"
+)
+
+//银豆和银豆余额
+func (self *BalanceController) GetSilverInfo() {
+	type BalanceInfo struct {
+		Total int64 `orm:"-" json:"total"` //余额,单位分
+	}
+	//user := self.GetCurrentUser(true)
+	wxUId := self.GetCurrentWxUserIdByToken()
+	wxUser := user_model.GetWxUserById(wxUId, true)
+	if wxUser == nil {
+		self.ReturnError(403, apps.UserNeedLogin, "", nil)
+	}
+	info := new(BalanceInfo)
+	info.Total = balance_model.GetUserTotalBalance(wxUId)
+	self.Data["json"] = info
+	self.ServeJSON()
+}
+
+//银豆变动列表
+func (self *BalanceController) GetSilverList() {
+	page, _ := self.GetInt64("page", 1)
+	perPage, _ := self.GetInt64("per_page", 20)
+	if perPage <= 0 || perPage > 100 {
+		perPage = 20
+	}
+	cache, _ := self.GetBool("cache", false)
+
+	//user := self.GetCurrentUser(cache)
+	wxUId := self.GetCurrentWxUserIdByToken()
+
+	list := balance_model.GetSilverListByWxUId(wxUId, page, perPage, cache)
+	count := balance_model.GetSilverCountByWxUId(wxUId)
+	type BalanceInfo struct {
+		BalanceList  []*balance_model.Silver `orm:"-" json:"balance_list"`
+		BalanceCount int64                   `orm:"-" json:"balance_count"`
+	}
+	for _, item := range list {
+		item.SourceName = item.GetSourceName()
+		item.CTime = item.CreatedAt.Unix()
+	}
+
+	self.Data["json"] = &BalanceInfo{BalanceList: list, BalanceCount: count}
+	self.ServeJSON()
+}
+
+//资金详情
+func (self *BalanceController) GetSilverDetail() {
+	_id := self.Ctx.Input.Param(":id")
+	id, _ := strconv.ParseInt(_id, 10, 64)
+	//uId := self.GetCurrentUserId()
+	wxUId := self.GetCurrentWxUserIdByToken()
+	item := balance_model.GetSilverById(id)
+	if item == nil {
+		self.ReturnError(403, apps.NoExist, "", nil)
+	}
+	if item.WxUserId != wxUId {
+		self.ReturnError(403, apps.BalanceNotExist, "", nil)
+	}
+	item.CTime = item.CreatedAt.Unix()
+	item.SourceName = item.GetSourceName()
+	self.Data["json"] = item
+	self.ServeJSON()
+}

+ 93 - 3
go/gopath/src/fohow.com/apps/controllers/pay_controller/pay_exchange_controller.go

@@ -6,6 +6,8 @@ import (
 	"fohow.com/apps/models/cent_model"
 	"fohow.com/apps/models/sys_config"
 	"fohow.com/libs/lib_redis"
+	"math"
+
 	// "net/url"
 	// "strings"
 	"time"
@@ -102,6 +104,9 @@ func (self *PayController) payExchange(oId, payWay, returnUrl, source, remark st
 	total_price := int64(0)
 	total_quan := int64(0)
 	total_weixin := int64(0)
+	total_silver := int64(0)
+	dis_amount := int64(0)
+
 	list := order_model.GetAllDetailsOrderId(order.OrderId, false)
 	for _, item := range list {
 		//商品状态
@@ -125,6 +130,7 @@ func (self *PayController) payExchange(oId, payWay, returnUrl, source, remark st
 					self.ReturnError(403, []string{apps.SeckillIsEnd[0], fmt.Sprintf("%s秒杀活动已经结束", product.Name)}, "", nil)
 				}
 			}
+
 			//限购逻辑
 			if product.PurchaseLimitCount > 0 {
 				if product.PurchaseLimitCount < item.Count {
@@ -158,10 +164,11 @@ func (self *PayController) payExchange(oId, payWay, returnUrl, source, remark st
 			}
 
 			//微信支付金额统计
-			if product.Pv >= product.Price || specialPromotion {
+			if product.UseQuan || specialPromotion {
 				total_quan += product.Price * item.Count
 			}
 			total_price += product.Price * item.Count
+			total_silver += product.Silver * item.Count
 
 		}
 
@@ -206,11 +213,26 @@ func (self *PayController) payExchange(oId, payWay, returnUrl, source, remark st
 		if order.Status != order_model.STATUS_UNPAY {
 			self.ReturnError(403, apps.NotUnPay, "", nil)
 		}
-		//若账户有提货券则优先抵扣提货券
+
+		tp := order.TotalPrice
+
 		needWx := false
+		//抵扣银豆
+		paiedSilver := int64(0)
+		userLeftSilver := balance_model.GetUserTotalSilver(wxUId)
+		if userLeftSilver < total_silver {
+			paiedSilver = userLeftSilver
+		} else {
+			paiedSilver = total_silver
+		}
+		if paiedSilver > tp {
+			paiedSilver = tp
+		}
+		tp -= paiedSilver
+
+		//若账户有提货券则优先抵扣提货券
 		totalCoupon := int64(0)
 		userLeftBalanceCount := balance_model.GetUserTotalBalance(wxUId)
-		tp := order.TotalPrice
 		freight := sys_config.GetFreight()
 		if tp >= sys_config.GetOrderLimit() || pick_way == order_model.PICK_SHOP {
 			freight = int64(0)
@@ -229,6 +251,53 @@ func (self *PayController) payExchange(oId, payWay, returnUrl, source, remark st
 		}
 		total_weixin = tp - totalCoupon
 
+		//统计折扣
+		if totalCoupon > int64(0) {
+			dis_amount = int64(0)
+		} else {
+			if paiedSilver == int64(0) || total_silver == int64(0) {
+				for _, item := range list {
+					//商品
+					product := product_model.GetProductById(item.ProductId, true)
+					dis_amount += product.Pv * item.Count
+				}
+			} else {
+				totalDis := float64(0)
+				for _, item := range list {
+					//商品
+					product := product_model.GetProductById(item.ProductId, true)
+
+					//非赠品计入价格
+					if !item.Send {
+						singleDis := (float64(product.Price) - float64(product.Pv)*(float64(paiedSilver)/float64(total_silver))) / float64(product.Price)
+						totalDis += float64(product.Pv) * float64(singleDis) * float64(item.Count)
+					}
+					dis_amount += int64(math.Floor(totalDis + 0.5))
+				}
+			}
+		}
+
+		//店长先抵扣折扣
+		paiedDis := int64(0)
+		if wxUser.Rank >= user_model.WX_USER_RANK_ONE && dis_amount > int64(0) {
+			if dis_amount < total_weixin {
+				paiedDis = dis_amount
+			} else {
+				paiedDis = total_weixin
+			}
+
+		}
+		total_weixin = tp - paiedDis
+
+		//抵扣佣金
+		paiedCash := int64(0)
+		userLeftBalanceCash := balance_model.GetUserTotalBalance(wxUId)
+		if userLeftBalanceCash < total_weixin && total_weixin > 0 && userLeftBalanceCash > 0 {
+			paiedCash = userLeftBalanceCash
+		} else {
+			paiedCash = total_weixin
+		}
+
 		//特殊促销期间券不够不允许支付
 		if sys_config.GetShutWechatPromotion() && total_weixin > 0 {
 			if quanLittle {
@@ -249,7 +318,27 @@ func (self *PayController) payExchange(oId, payWay, returnUrl, source, remark st
 			remark := fmt.Sprintf("提货券兑换商品")
 			new(balance_model.Balance).Create(wxUId, uId, -totalCoupon, source, oId, remark)
 		}
+
+		//扣减银豆
+		if paiedSilver > 0 {
+			source := balance_model.BALANCE_SOURCE_EXCHANGE_PRODUCT
+			remark := fmt.Sprintf("银豆兑换商品")
+			new(balance_model.Silver).Create(wxUId, uId, -paiedSilver, source, oId, remark)
+		}
+
+		//先扣减佣金
+		if paiedCash > 0 {
+			source := balance_model.BALANCE_SOURCE_EXCHANGE_PRODUCT
+			remark := fmt.Sprintf("佣金兑换商品")
+			new(balance_model.CashBalance).Create(wxUId, -paiedCash, source, oId, remark)
+		}
+
 		order.CouponPrice = totalCoupon
+		order.PaiedSilver = paiedSilver
+		order.TotalSilver = total_silver
+		order.PaiedCash = paiedCash
+		order.DisAmount = dis_amount
+
 		switch needWx { // 1.true需要微信支付,2.false不需要微信支付
 		case false: // 提货券抵扣完毕
 			//更新订单状态
@@ -259,6 +348,7 @@ func (self *PayController) payExchange(oId, payWay, returnUrl, source, remark st
 			order.PaiedPrice = 0
 			order.PayWay = pay_model.PAYWAY_BALANCE
 			order.Source = source
+
 			order.Save()
 			//发放赠品
 			//go helpers.SetOrderPromotionPro(order.OrderId, wxUser.Id)

+ 5 - 21
go/gopath/src/fohow.com/apps/helpers/benefit_helper.go

@@ -11,15 +11,10 @@ import (
 
 func NewSendInviterBenefit(wxUser *user_model.WxUser, orderId, source string) {
 
-	//三部代理--佣金计入本人账户 0317
-	//specialDepartStr := beego.AppConfig.String("SpecialDepart")
-	//specialDeparts := strings.Split(specialDepartStr, ",")
-	//departUser := fmt.Sprintf("%d", wxUser.Depart)
-	//contain := tool.StringsContains(specialDeparts, departUser) //是否结算给
-
 	var benefitWxUser *user_model.WxUser
-	if wxUser.ShowInviteMode == int64(1) {
-		benefitWxUser = wxUser
+	//店长不再计算佣金
+	if wxUser.Rank >= user_model.WX_USER_RANK_ONE {
+		return
 	} else {
 		//20.12.01 新规--(微信支付金额-运费)>0,按(微信支付金额-运费)*20%给上级代理返佣金(代理本人下订单,也是返给上级代理)
 		benefitWxUser = FindInviter(wxUser)
@@ -35,19 +30,8 @@ func NewSendInviterBenefit(wxUser *user_model.WxUser, orderId, source string) {
 		}
 
 		if benefitWxUser != nil {
-			//发放群主收益,(微信支付金额-运费)>0,按(微信支付金额-运费)*20%给上级代理返佣金
-			//val := []int64{productOrder.Pv - productOrder.Freight, productOrder.Pv}
-			//计算佣金的业绩=max(pv-max(扣提货券-运费,0),0)
-			award_cash := productOrder.Pv
-			couponFee := productOrder.CouponPrice - productOrder.Freight
-			if couponFee > 0 {
-				award_cash = productOrder.Pv - couponFee
-			}
-			if award_cash <= 0 {
-				return
-			}
-			be_total := float64(award_cash) * (float64(sys_config.GetCashAward()) / float64(100))
-			count := int64(math.Floor(be_total + 0.5))
+			//直接按pv折扣发放店长收益
+			count := productOrder.DisAmount
 			//beego.BeeLogger.Warn("count %d", count)
 			remark := fmt.Sprintf("%s%s", wxUser.Nickname, "购物")
 			if count > 0 {

+ 1 - 1
go/gopath/src/fohow.com/apps/models/balance_model/init.go

@@ -6,5 +6,5 @@ import (
 
 func init() {
 	orm.RegisterModel(new(Balance),
-		new(BalanceOrder), new(CashBalance), new(TakeCashOrder), new(RechargeCashOrder))
+		new(Silver), new(BalanceOrder), new(CashBalance), new(TakeCashOrder), new(RechargeCashOrder))
 }

+ 251 - 0
go/gopath/src/fohow.com/apps/models/balance_model/silver.go

@@ -0,0 +1,251 @@
+package balance_model
+
+import (
+	"fmt"
+	"fohow.com/cache"
+	"github.com/astaxie/beego"
+	"github.com/astaxie/beego/orm"
+	"time"
+)
+
+const (
+	silvers_tablename = "silvers"
+)
+
+type Silver struct {
+	Id         int64     `orm:"column(id);pk"                                  json:"id"`          // int(11)
+	UserId     int64     `orm:"column(user_id);null"                           json:"user_id"`     // int(11)
+	WxUserId   int64     `orm:"column(wx_user_id);null"                        json:"wx_user_id"`  // int(11)
+	Count      int64     `orm:"column(count);null"                             json:"count"`       // int(11)
+	Source     string    `orm:"column(source);null"                            json:"source"`      // varchar(20)
+	SourceName string    `orm:"-"                                              json:"source_name"` // varchar(20)
+	RelateId   string    `orm:"column(relate_id);null"                         json:"relate_id"`   // varchar(255)
+	Remark     string    `orm:"column(remark);null"                            json:"remark"`      // varchar(255)
+	CreatedAt  time.Time `orm:"column(created_at);auto_now_add;type(datetime)" json:"-"`           // datetime
+	CTime      int64     `orm:"-"                                              json:"ctime"`       // datetime
+	UpdatedAt  time.Time `orm:"column(updated_at);auto_now;type(datetime)"     json:"-"`           // datetime
+}
+
+func (self *Silver) TableName() string {
+	return silvers_tablename
+}
+
+func (self *Silver) Create(wxUId, uId, c int64, s, rId, remark string) (item *Silver) {
+	item = &Silver{
+		Count:    c,
+		WxUserId: wxUId,
+		UserId:   uId,
+		Source:   s,
+		RelateId: rId,
+		Remark:   remark,
+	}
+	id, err := orm.NewOrm().Insert(item)
+	if err != nil {
+		beego.BeeLogger.Error("Create Silver err=[%s]", err)
+		return nil
+	}
+	item.Id = id
+	return item
+}
+
+func GetSilverById(id int64) *Silver {
+	item := &Silver{}
+	if err := orm.NewOrm().QueryTable(item).
+		Filter("id", id).Limit(1).
+		One(item); err != nil {
+		beego.BeeLogger.Debug("GetSilverById(%s), err=%s",
+			id, err)
+		return nil
+	}
+	return item
+}
+
+//获取某人的银豆流列表
+func GetSilverListByWxUId(wxUId, page, perPage int64, useCache bool) (list []*Silver) {
+	k := fmt.Sprintf("silver_model.GetSilverList.wxUId(%d).page(%d).perPage(%d)", wxUId, page, perPage)
+	if useCache {
+		if s, ok := cache.Cache.Get(k).([]*Silver); ok {
+			return s
+		}
+	}
+
+	silver := new(Silver)
+	qs := orm.NewOrm().QueryTable(silver)
+	qs = qs.Filter("wx_user_id", wxUId)
+
+	if _, err := qs.OrderBy("-created_at", "-id").
+		Limit(perPage, (page-1)*perPage).All(&list); err != nil {
+		beego.BeeLogger.Debug("get silver with wxUId=%d, err=[%s]", wxUId, err)
+		return nil
+	}
+
+	cache.Cache.Put(k, list, 10*time.Minute)
+	return list
+}
+
+//获取某人的银豆流列表总条数
+func GetSilverCountByWxUId(wxUId int64) int64 {
+	item := new(Silver)
+	o := orm.NewOrm()
+	count, _ := o.QueryTable(item).Filter("wx_user_id", wxUId).Count()
+	return count
+}
+
+//获取某个用户的余额
+func GetUserTotalSilver(wxUId int64) int64 {
+	type Ret struct {
+		Count int64
+	}
+	ret := &Ret{}
+	o := orm.NewOrm()
+	tbn := new(Silver).TableName()
+	sql := fmt.Sprintf("SELECT sum(`count`) as count FROM `%s` WHERE wx_user_id=?;", tbn)
+	err := o.Raw(sql, wxUId).QueryRow(ret)
+	if err != nil {
+		beego.BeeLogger.Error("get user=[%d] total silver err=[%s]", wxUId, err)
+		return 0
+	}
+	if ret.Count < 0 {
+		return 0
+	}
+	return ret.Count
+}
+
+//获取某个source累计余额
+func GetSilverCountBySource(wxUId int64, source string) int64 {
+	type Ret struct {
+		Count int64
+	}
+	ret := &Ret{}
+	o := orm.NewOrm()
+	tbn := new(Silver).TableName()
+	sql := fmt.Sprintf("SELECT sum(`count`) as count FROM `%s` WHERE wx_user_id=? and source=?", tbn)
+	err := o.Raw(sql, wxUId, source).QueryRow(ret)
+	if err != nil {
+		beego.BeeLogger.Error("get user=[%d] total silver err=[%s]", wxUId, err)
+		return 0
+	}
+	if ret.Count < 0 {
+		return 0
+	}
+	return ret.Count
+}
+
+func GetSilverBySourceAndRId(source, rId string) *Silver {
+	item := &Silver{}
+	if err := orm.NewOrm().QueryTable(item).
+		Filter("source", source).
+		Filter("relate_id", rId).Limit(1).
+		One(item); err != nil {
+		beego.BeeLogger.Info("GetSilverBySourceAndRId(%s,%s), err=%s",
+			source, rId, err)
+		return nil
+	}
+	return item
+}
+
+func GetSilverByUIdAndRIdAndSource(uId int64, rId, source string) *Silver {
+	item := &Silver{}
+	if err := orm.NewOrm().QueryTable(item).
+		Filter("user_id", uId).
+		Filter("source", source).
+		Filter("relate_id", rId).OrderBy("-created_at").Limit(1).
+		One(item); err != nil {
+		beego.BeeLogger.Info("GetSilverByUIdAndRIdAndSource(%d,%s,%s), err=%s",
+			uId, rId, source, err)
+		return nil
+	}
+	return item
+}
+
+func GetBuySilverByRelateId(rId string, useCache bool) *Silver {
+	k := fmt.Sprintf("silver_model.GetBuySilverByRelateId[%s]", rId)
+	if useCache {
+		if order, ok := cache.Cache.Get(k).(*Silver); ok {
+			return order
+		}
+	}
+	//lt < 0
+	item := &Silver{}
+	if err := orm.NewOrm().QueryTable(item).Filter("relate_id", rId).Filter("count__lt", 0).Limit(1).
+		One(item); err != nil {
+		beego.BeeLogger.Info("GetBuySilverByRelateId(%s), err=%s", rId, err)
+		return nil
+	}
+	cache.Cache.Put(k, item, 5*time.Minute)
+	return item
+}
+
+func GetRefundSilverByRelateId(rId string, useCache bool) *Silver {
+	k := fmt.Sprintf("silver_model.GetRefundSilverByRelateId[%s]", rId)
+	if useCache {
+		if order, ok := cache.Cache.Get(k).(*Silver); ok {
+			return order
+		}
+	}
+	//gt > 0
+	item := &Silver{}
+	if err := orm.NewOrm().QueryTable(item).Filter("relate_id", rId).Filter("count__gt", 0).Limit(1).
+		One(item); err != nil {
+		beego.BeeLogger.Info("GetRefundSilverByRelateId(%s), err=%s", rId, err)
+		return nil
+	}
+	cache.Cache.Put(k, item, 5*time.Minute)
+	return item
+}
+
+//返回source名称
+func (self *Silver) GetSourceName() string {
+	sourceName := ""
+	switch self.Source {
+	case CASH_SOURCE_SHOP_BENEFIT:
+		sourceName = CASH_SOURCE_SHOP_BENEFIT_NAME
+	case CASH_SOURCE_PRODUCT_BENEFIT:
+		sourceName = CASH_SOURCE_PRODUCT_BENEFIT_NAME
+	case CASH_SOURCE_PROJECT_BENEFIT:
+		sourceName = CASH_SOURCE_PROJECT_BENEFIT_NAME
+	case CASH_SOURCE_TAKE_CASH:
+		sourceName = CASH_SOURCE_TAKE_CASH_NAME
+	case CASH_TO_BALANCE:
+		sourceName = CASH_TO_BALANCE_NAME
+	case CASH_SOURCE_PRODUCT_SALE:
+		sourceName = CASH_SOURCE_PRODUCT_SALE_NAME
+	case CASH_SOURCE_SALE_REWARD:
+		sourceName = CASH_SOURCE_SALE_REWARD_NAME
+	case CASH_SOURCE_PROJECT_INVEST:
+		sourceName = CASH_SOURCE_PROJECT_INVEST_NAME
+	case CASH_SOURCE_RESERVE_ACT_RETURN:
+		sourceName = CASH_SOURCE_RESERVE_ACT_RETURN_NAME
+	case CASH_SOURCE_EXTRACT_REJECT:
+		sourceName = CASH_SOURCE_EXTRACT_REJECT_NAME
+	case CASH_SOURCE_RECHARGE_CASH:
+		sourceName = CASH_SOURCE_RECHARGE_CASH_NAME
+	case CASH_SOURCE_RECEIVE_BUYBACK:
+		sourceName = CASH_SOURCE_RECEIVE_BUYBACK_NAME
+	case CASH_SOURCE_DEDUCT:
+		sourceName = CASH_SOURCE_DEDUCT_NAME
+	case CASH_SOURCE_LOAN:
+		sourceName = CASH_SOURCE_LOAN_NAME
+	case CASH_SOURCE_PROJECT_REFUND:
+		sourceName = CASH_SOURCE_PROJECT_REFUND
+	case CASH_SOURCE_PRODUCT_REFUND:
+		sourceName = CASH_SOURCE_PRODUCT_REFUND_NAME
+	case CASH_SOURCE_PRODUCT_PART_REFUND:
+		sourceName = CASH_SOURCE_PRODUCT_PART_REFUND_NAME
+	case CASH_SOURCE_CORRECT:
+		sourceName = CASH_SOURCE_CORRECT_NAME
+	case CASH_SOURCE_PROJECT_LOAN:
+		sourceName = CASH_SOURCE_PROJECT_LOAN_NAME
+	case CASH_SOURCE_GOOD_PAYMENT:
+		sourceName = CASH_SOURCE_GOOD_PAYMENT_NAME
+	case CASH_SOURCE_DOLLAR_WIN:
+		sourceName = CASH_SOURCE_DOLLAR_WIN_NAME
+	case CASH_SOURCE_DOLLAR_WIN_RETURN:
+		sourceName = CASH_SOURCE_DOLLAR_WIN_RETURN_NAME
+	case FX_CASH_SOURCE_PRODUCT_BENEFIT:
+		sourceName = FX_CASH_SOURCE_PRODUCT_BENEFIT_NAME
+		// case BALANCE_SOURCE_PART_REFUNDED:
+		// 	sourceName = BALANCE_SOURCE_PART_REFUNDED_NAME
+	}
+	return sourceName
+}

+ 9 - 5
go/gopath/src/fohow.com/apps/models/order_model/order.go

@@ -122,11 +122,15 @@ type Order struct {
 	ReceiveTime    time.Time          `orm:"column(receive_time);null;type(datetime)"            json:"receive_time"`
 	PaiedTime      time.Time          `orm:"column(paied_time);null;type(datetime)"              json:"paied_time"` // int(11)
 	HasCommission  bool               `orm:"has_commission"                                      json:"-"`
-	CreatedAt      time.Time          `orm:"column(created_at);null;auto_now_add;type(datetime)" json:"-"` // datetime
-	UpdatedAt      time.Time          `orm:"column(updated_at);null;auto_now;type(datetime)"     json:"-"` // datetime
-	Promotions     string             `orm:"column(promotions);null"                           json:"-"`   // varchar(255)
-	SpecialPro     bool               `orm:"-"                                 json:"special_promotion"`   // int(11)
-	ShutWechat     bool               `orm:"-"                                 json:"shut_wechat"`         // int(11)
+	CreatedAt      time.Time          `orm:"column(created_at);null;auto_now_add;type(datetime)" json:"-"`            // datetime
+	UpdatedAt      time.Time          `orm:"column(updated_at);null;auto_now;type(datetime)"     json:"-"`            // datetime
+	Promotions     string             `orm:"column(promotions);null"                           json:"-"`              // varchar(255)
+	SpecialPro     bool               `orm:"-"                                 json:"special_promotion"`              // int(11)
+	ShutWechat     bool               `orm:"-"                                 json:"shut_wechat"`                    // int(11)
+	PaiedSilver    int64              `orm:"column(paied_silver)"                                json:"paied_silver"` // int(11)
+	TotalSilver    int64              `orm:"column(total_silver)"                                json:"total_silver"` // int(11)
+	DisAmount      int64              `orm:"column(dis_amount)"                                  json:"dis_amount"`   // 折扣
+	PaiedCash      int64              `orm:"column(paied_cash);null"                      json:"paied_cash"`          // int(11)
 	WxUser         *user_model.WxUser `orm:"-"                                 json:"wx_user"`
 	ProductList    []*OrderDetail     `orm:"-"                                 json:"product_list"` // varchar(255)
 }

+ 3 - 0
go/gopath/src/fohow.com/apps/models/product_model/product.go

@@ -120,6 +120,9 @@ type Product struct {
 	PackageList      []*ProductItem  `orm:"-"                           json:"package_list"`         // varchar(255)
 	Size             *ProductAttrKey `orm:"-"                            json:"size_list"`           // varchar(255)
 	Color            *ProductAttrKey `orm:"-"                           json:"color_list"`           // varchar(255)
+
+	UseQuan bool  `orm:"column(use_quan)"               json:"use_quan"` // varchar(255)
+	Silver  int64 `orm:"column(silver)"                 json:"silver"`   // varchar(255)
 }
 
 //获取最新推荐商品

+ 6 - 0
go/gopath/src/fohow.com/routers/routes.go

@@ -373,4 +373,10 @@ func init() {
 	beego.Router("/v1/pick_address/:id([0-9]+)", &pick_address_controller.PickAddressController{}, "delete:DeletePickAddress")
 	beego.Router("/v1/pick_departs", &pick_address_controller.PickAddressController{}, "get:PickDepartList")
 
+	//----------- 银豆账户相关-----------
+	//银豆账户变更列表
+	beego.Router("/v1/user/silvers", &balance_controller.BalanceController{}, "get:GetSilverList")
+	//银豆账户变更详情
+	beego.Router("/v1/user/silver/:id([0-9]+)", &balance_controller.BalanceController{}, "get:GetSilverDetail")
+
 }