abiao лет назад: 3
Родитель
Сommit
1e12daad8e

+ 7 - 0
go/gopath/src/fohow.com/apps/controllers/pay_controller/pay_exchange_controller.go

@@ -142,6 +142,13 @@ func (self *PayController) payExchange(oId, payWay, returnUrl, source, remark st
 					}
 				}
 			}
+			//不发货地区省,市判断
+			if len(product.NoDeliveryArea) > 0 {
+				if product_model.GetNoDeliveryPrd(product.Id, allowPro, true) == nil && helper.NewStr(product.NoDeliveryArea).Strpos(allowAddr, 0) < 0 {
+					self.ReturnError(403, []string{apps.OnlyDeliveryArea[0], fmt.Sprintf("%s商品该区域不支持配送", product.Name)}, "", nil)
+				}
+			}
+
 			//仅发货地区省,市判断
 			if len(product.OnlyDeliveryArea) > 0 {
 				if product_model.GetProductByIdAndProvince(product.Id, allowPro, true) == nil && helper.NewStr(product.OnlyDeliveryArea).Strpos(allowAddr, 0) < 0 {

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

@@ -234,6 +234,30 @@ func GetProductByIdAndProvince(id int64, province string, useCache bool) *Produc
 	return item
 }
 
+//判断商品是否在当前省受限
+func GetNoDeliveryPrd(id int64, province string, useCache bool) *Product {
+	//k := fmt.Sprintf("product_model.GetProductById[%d]", id)
+	k := cache.GetKey(cache.GetNoDeliveryPrd, id, province)
+	if useCache {
+		if v, ok := cache.Cache.Get(k).(*Product); ok {
+			return v
+		}
+	}
+	item := new(Product)
+	sql := `
+		select id from
+		products
+		where id = ? and find_in_set(?,no_delivery_area);
+		`
+	err := orm.NewOrm().Raw(sql, id, province).QueryRow(&item)
+	if err != nil {
+		beego.BeeLogger.Warn("product_model.GetNoDeliveryPrd(%d) err=%s", id, province, err)
+		return nil
+	}
+	cache.Cache.Put(k, item, 5*time.Minute)
+	return item
+}
+
 func GetProductsByCatId(cId, page, perPage, priceSort, saleSort int64, words string, useCache bool) (products []*Product) {
 	k := fmt.Sprintf("product_model.GetProductsByCatId(%d).page(%d).perPage(%d).words(%d)", cId, page, perPage, words)
 	if useCache {

+ 1 - 0
go/gopath/src/fohow.com/cache/init.go

@@ -55,6 +55,7 @@ const (
 	GetProductPackagetByPId    = "product_model.GetPackageList"
 	GetProductByPId            = "product_model.GetProductById"
 	GetProductByPIdAndProvince = "product_model.GetProductByPIdAndProvince"
+	GetNoDeliveryPrd           = "product_model.GetNoDeliveryPrd"
 
 	//项目
 	GetProjectById = "project_model.GetProjectById"