Просмотр исходного кода

Merge branch 'master' of http://git.hiwavo.com/Fohow/fohow_api

abiao лет назад: 4
Родитель
Сommit
a144b31066

+ 8 - 1
go/gopath/src/fohow.com/apps/controllers/order_controller/order_controller.go

@@ -124,6 +124,10 @@ func (self *OrderController) Create() {
 		self.ReturnError(403, apps.CreateOrderFail, "", nil)
 		self.ReturnError(403, apps.CreateOrderFail, "", nil)
 	}
 	}
 	order.Pv = product.Pv * count
 	order.Pv = product.Pv * count
+	specialPromotion, specialstr := sys_config.GetSpetialPromotion()
+	if specialPromotion{
+		order.Promotions = specialstr
+	}
 	order.Save()
 	order.Save()
 	//创建订单明细
 	//创建订单明细
 	new(order_model.OrderDetail).Create(order.OrderId, order.Id, product.Id, product.RelateProductId, product.Price, product.RoboBalancePrice, product.Name,
 	new(order_model.OrderDetail).Create(order.OrderId, order.Id, product.Id, product.RelateProductId, product.Price, product.RoboBalancePrice, product.Name,
@@ -258,8 +262,11 @@ func (self *OrderController) MultipleCreate() {
 	order.Pv = totalPv
 	order.Pv = totalPv
 	order.TotalPrice = totalPrice
 	order.TotalPrice = totalPrice
 	order.Freight = freight
 	order.Freight = freight
+	specialPromotion, specialstr := sys_config.GetSpetialPromotion()
+	if specialPromotion{
+		order.Promotions = specialstr
+	}
 	order.Save()
 	order.Save()
-
 	//购物册清理
 	//购物册清理
 	go ClearCart(order.WxUserId, order.OrderId)
 	go ClearCart(order.WxUserId, order.OrderId)
 	//未支付订单加入取消队列
 	//未支付订单加入取消队列

+ 2 - 2
go/gopath/src/fohow.com/apps/controllers/pay_controller/pay_controller.go

@@ -25,7 +25,7 @@ type PayUrl struct {
 func (self *PayController) Pay() {
 func (self *PayController) Pay() {
 	oId := self.GetString("order_id")
 	oId := self.GetString("order_id")
 	payWay := self.GetString("pay_way")
 	payWay := self.GetString("pay_way")
-	tradPwd := self.GetString("trad_pwd")
+	//tradPwd := self.GetString("trad_pwd")
 	remark := self.GetString("remark")
 	remark := self.GetString("remark")
 
 
 	source := self.GetString("s")
 	source := self.GetString("s")
@@ -54,7 +54,7 @@ func (self *PayController) Pay() {
 		order := order_model.GetOrderById(oId, false)
 		order := order_model.GetOrderById(oId, false)
 
 
 		if order != nil && order.OrderType != order_model.ORDER_TYPE_CENT {
 		if order != nil && order.OrderType != order_model.ORDER_TYPE_CENT {
-			self.payExchange(oId, payWay, tradPwd, returnUrl, source, remark, useCoupon)
+			self.payExchange(oId, payWay, returnUrl, source, remark, useCoupon)
 		} else {
 		} else {
 			self.payCentExchange(oId, returnUrl, source, remark)
 			self.payCentExchange(oId, returnUrl, source, remark)
 		}
 		}

+ 5 - 8
go/gopath/src/fohow.com/apps/controllers/pay_controller/pay_exchange_controller.go

@@ -32,17 +32,14 @@ var createDrawCode sync.Mutex
 var payOrder sync.Mutex
 var payOrder sync.Mutex
 
 
 //支付订单
 //支付订单
-func (self *PayController) payExchange(oId, payWay, tradPwd, returnUrl, source, remark string, useCoupon bool) {
+func (self *PayController) payExchange(oId, payWay, returnUrl, source, remark string, useCoupon bool) {
 	payOrder.Lock()
 	payOrder.Lock()
 	defer payOrder.Unlock()
 	defer payOrder.Unlock()
-	var payUrl string
+	var payUrl, tel, addr, concat string
 	var payData map[string]string
 	var payData map[string]string
+	var specialPromotion bool
 	wxUId := self.GetCurrentWxUserId()
 	wxUId := self.GetCurrentWxUserId()
 	uId := self.GetCurrentUserId()
 	uId := self.GetCurrentUserId()
-
-	var concat string
-	var tel string
-	var addr string
 	pick_dept_id, _ := self.GetInt64("pick_dept")
 	pick_dept_id, _ := self.GetInt64("pick_dept")
 	pick_way, _ := self.GetInt64("pick_way")
 	pick_way, _ := self.GetInt64("pick_way")
 	//地址
 	//地址
@@ -89,7 +86,7 @@ func (self *PayController) payExchange(oId, payWay, tradPwd, returnUrl, source,
 	}
 	}
 	SaleNumsMap := make(map[int64]int64)
 	SaleNumsMap := make(map[int64]int64)
 	storeMap := make(map[int64]int64)
 	storeMap := make(map[int64]int64)
-
+	specialPromotion=order.SpecialPro
 	//支付方式判断
 	//支付方式判断
 	if order.OrderType == order_model.ORDER_TYPE_SHOP && payWay == pay_model.PAYWAY_BALANCE {
 	if order.OrderType == order_model.ORDER_TYPE_SHOP && payWay == pay_model.PAYWAY_BALANCE {
 		self.ReturnError(403, apps.NotRightPayWay, "", nil)
 		self.ReturnError(403, apps.NotRightPayWay, "", nil)
@@ -137,7 +134,7 @@ func (self *PayController) payExchange(oId, payWay, tradPwd, returnUrl, source,
 			}
 			}
 		}
 		}
 		//微信支付金额统计
 		//微信支付金额统计
-		if product.Pv >= product.Price {
+		if product.Pv >= product.Price || specialPromotion {
 			total_quan += product.Price * item.Count
 			total_quan += product.Price * item.Count
 		}
 		}
 		total_price += product.Price * item.Count
 		total_price += product.Price * item.Count

+ 0 - 93
go/gopath/src/fohow.com/apps/helper/ip.go

@@ -1,93 +0,0 @@
-package helper
-
-import (
-	"github.com/kayon/iploc"
-	ip2 "lianjia/app/helper/ip"
-	"net"
-)
-
-//返回IP位置
-func GetIPCNInfo(ip string) (address string) {
-	IP := net.ParseIP(ip)
-	if IsPublicIP(IP) {
-		if IP.To4() != nil {
-			db, err := iploc.OpenWithoutIndexes("config/ip/qqwry.dat")
-			if err == nil {
-				defer db.Close()
-				address = db.Find(IP.String()).String()
-			}
-		}
-	} else {
-		address = "局域网"
-	}
-
-	return
-}
-
-//返回IP所在国家
-func GetIPCountry(ip string) (country string) {
-	IP := net.ParseIP(ip)
-	if IsPublicIP(IP) {
-		if IP.To4() != nil {
-			country = GetIP4Country(IP.String())
-		}
-		if IP.To16() != nil {
-			country = GetIP6Country(IP.String())
-		}
-	}
-	return
-}
-
-//返回IP4所在国家
-func GetIP4Country(ip string) (country string) {
-	db, err := ip2.OpenDB("config/ip/IP2LOCATION-LITE-DB1.BIN")
-	if err == nil {
-		defer db.Close()
-		results, err := db.Get_country_short(ip)
-		if err == nil {
-			country = results.Country_short
-		}
-	}
-	return
-}
-
-//返回IP6所在国家
-func GetIP6Country(ip string) (country string) {
-	db, err := ip2.OpenDB("config/ip/IP2LOCATION-LITE-DB1.IPV6.BIN")
-	if err == nil {
-		defer db.Close()
-		results, err := db.Get_country_short(ip)
-		if err == nil {
-			country = results.Country_short
-		}
-	}
-	return
-}
-
-func IsCNIp(ip string) bool {
-	IP := net.ParseIP(ip)
-	if IsPublicIP(IP) {
-		if GetIPCountry(IP.String()) != "CN" {
-			return false
-		}
-	}
-	return true
-}
-func IsPublicIP(IP net.IP) bool {
-	if IP.IsLoopback() || IP.IsLinkLocalMulticast() || IP.IsLinkLocalUnicast() {
-		return false
-	}
-	if ip4 := IP.To4(); ip4 != nil {
-		switch true {
-		case ip4[0] == 10:
-			return false
-		case ip4[0] == 172 && ip4[1] >= 16 && ip4[1] <= 31:
-			return false
-		case ip4[0] == 192 && ip4[1] == 168:
-			return false
-		default:
-			return true
-		}
-	}
-	return false
-}

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

@@ -4,6 +4,8 @@ import (
 	"crypto/md5"
 	"crypto/md5"
 	"encoding/hex"
 	"encoding/hex"
 	"fmt"
 	"fmt"
+	"fohow.com/apps/helper"
+	"fohow.com/apps/models/sys_config"
 	"strconv"
 	"strconv"
 	"strings"
 	"strings"
 	"time"
 	"time"
@@ -122,9 +124,10 @@ type Order struct {
 	HasCommission  bool               `orm:"has_commission"                                      json:"-"`
 	HasCommission  bool               `orm:"has_commission"                                      json:"-"`
 	CreatedAt      time.Time          `orm:"column(created_at);null;auto_now_add;type(datetime)" json:"-"` // datetime
 	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
 	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)
 	WxUser         *user_model.WxUser `orm:"-"                                 json:"wx_user"`
 	WxUser         *user_model.WxUser `orm:"-"                                 json:"wx_user"`
 	ProductList    []*OrderDetail     `orm:"-"                                 json:"product_list"` // varchar(255)
 	ProductList    []*OrderDetail     `orm:"-"                                 json:"product_list"` // varchar(255)
-
 }
 }
 
 
 func (self *Order) TableName() string {
 func (self *Order) TableName() string {
@@ -198,6 +201,11 @@ func GetOrderById(oId string, useCache bool) (order *Order) {
 		item.CTime = item.CreatedAt.Unix()
 		item.CTime = item.CreatedAt.Unix()
 		item.DTime = item.DispatchTime.Unix()
 		item.DTime = item.DispatchTime.Unix()
 	}
 	}
+	item.SpecialPro = false
+	pro := helper.NewStr(item.Promotions).Strrpos(sys_config.SPECIAL_PROMOTION, 0)
+	if pro >= 0 {
+		item.SpecialPro = true
+	}
 	cache.Cache.Put(k, item, 5*time.Minute)
 	cache.Cache.Put(k, item, 5*time.Minute)
 	return item
 	return item
 
 

+ 1 - 1
go/gopath/src/fohow.com/apps/models/promotion_model/order_promotion.go

@@ -65,7 +65,7 @@ func GetEffetivePromotions(queryDate time.Time, orderType, depart int64, useCach
 	sql := `
 	sql := `
 		select a.* from
 		select a.* from
 		promotions a left join depart_records_promotions b on a.id=b.promotion_id
 		promotions a left join depart_records_promotions b on a.id=b.promotion_id
-		where DATE_ADD(a.begin_time,INTERVAL 8 HOUR) <= ? and DATE_ADD(a.end_time,INTERVAL 8 HOUR) >= ? and a.order_type = ? and (b.depart_record_id=?)  and a.is_enable = 1 ;
+		where DATE_ADD(a.begin_time,INTERVAL 8 HOUR) <= ? and DATE_ADD(a.end_time,INTERVAL 8 HOUR) >= ? and a.order_type = ? and (b.depart_record_id=? or b.depart_record_id is null ) and a.is_enable = 1 ;
 		`
 		`
 
 
 	_, err := orm.NewOrm().Raw(sql, queryDate.Format("2006-01-02 15:04:05"), queryDate.Format("2006-01-02 15:04:05"), orderType, depart).QueryRows(&list)
 	_, err := orm.NewOrm().Raw(sql, queryDate.Format("2006-01-02 15:04:05"), queryDate.Format("2006-01-02 15:04:05"), orderType, depart).QueryRows(&list)

+ 23 - 1
go/gopath/src/fohow.com/apps/models/sys_config/sys_config.go

@@ -2,6 +2,7 @@ package sys_config
 
 
 import (
 import (
 	"fmt"
 	"fmt"
+	"fohow.com/apps/helper"
 	"fohow.com/cache"
 	"fohow.com/cache"
 	"github.com/astaxie/beego"
 	"github.com/astaxie/beego"
 	"github.com/astaxie/beego/orm"
 	"github.com/astaxie/beego/orm"
@@ -21,6 +22,7 @@ const (
 	CODE_AGENT_SHOP_APPLY = "AGENT_SHOP_APPLY"
 	CODE_AGENT_SHOP_APPLY = "AGENT_SHOP_APPLY"
 	CODE_AGENT_APPLY_RET  = "AGENT_APPLY_RET"
 	CODE_AGENT_APPLY_RET  = "AGENT_APPLY_RET"
 	CODE_AGENT_APPLY_QUAN = "AGENT_APPLY_QUAN"
 	CODE_AGENT_APPLY_QUAN = "AGENT_APPLY_QUAN"
+	SPECIAL_PROMOTION     = "SPECIAL_PROMOTION"
 	CODE_FOHOW_OUBIAO     = "oubiao"
 	CODE_FOHOW_OUBIAO     = "oubiao"
 	CODE_FOHOW            = "fohow"
 	CODE_FOHOW            = "fohow"
 	sys_configs_tablename = "sys_configs"
 	sys_configs_tablename = "sys_configs"
@@ -209,7 +211,6 @@ func GetAgentAward() int64 {
 	SysConfig := &SysConfig{}
 	SysConfig := &SysConfig{}
 	if err := orm.NewOrm().QueryTable(SysConfig).Filter("code", CODE_AGENT_APPLY_RET).Limit(1).One(SysConfig); err != nil {
 	if err := orm.NewOrm().QueryTable(SysConfig).Filter("code", CODE_AGENT_APPLY_RET).Limit(1).One(SysConfig); err != nil {
 		beego.BeeLogger.Error("get SysConfig by  err=%s", err)
 		beego.BeeLogger.Error("get SysConfig by  err=%s", err)
-		SysConfig = nil
 		return int64(0)
 		return int64(0)
 	}
 	}
 	value, err := strconv.ParseInt(SysConfig.CodeValue, 10, 64)
 	value, err := strconv.ParseInt(SysConfig.CodeValue, 10, 64)
@@ -241,3 +242,24 @@ func GetPayConfigByDepart(depart int64, useCache bool) string {
 	}
 	}
 	return item.PayCode
 	return item.PayCode
 }
 }
+
+//获取特殊促销时间段配置
+func GetSpetialPromotion() (bool, string) {
+	sysConfig := SysConfig{}
+	if err := orm.NewOrm().QueryTable(sysConfig).Filter("code", SPECIAL_PROMOTION).Limit(1).One(&sysConfig); err != nil {
+		beego.BeeLogger.Error("get sysConfig by  err=%s", err)
+		return false, ""
+	}
+	promotionArr := helper.NewStr(sysConfig.CodeValue).Explode("_")
+
+	if len(promotionArr) == 2 {
+		beginTime := helper.NewStr(promotionArr[0]).ToInt64()
+		endTime := helper.NewStr(promotionArr[1]).ToInt64()
+		nowTime := time.Now().Unix()
+		if nowTime >= beginTime && nowTime <= endTime {
+			beego.BeeLogger.Warn("promotionArr2----%v", promotionArr)
+			return true, sysConfig.Code
+		}
+	}
+	return false, ""
+}