abiao лет назад: 5
Родитель
Сommit
222b6a39c5

+ 3 - 3
go/gopath/src/fohow.com/apps/controllers/balance_controller/balance_controller.go

@@ -2,7 +2,7 @@ package balance_controller
 
 import (
 	"fmt"
-	"fohow.com/apps/helpers"
+	"fohow.com/libs/lib_redis"
 	"github.com/astaxie/beego"
 
 	// "crypto/md5"
@@ -185,9 +185,9 @@ func (self *BalanceController) TakeCash() {
 		o.Save()
 	}
 	//提现成功加入提现处理队列
-	cashKey := helpers.GetAutoTakeCashList()
+	cashKey := lib_redis.GetAutoTakeCashList()
 	takeId := fmt.Sprintf("%d", o.Id)
-	helpers.ThrowInRedisList(cashKey, takeId)
+	lib_redis.ThrowInRedisList(cashKey, takeId)
 
 	self.Data["json"] = o
 	self.ServeJSON()

+ 4 - 4
go/gopath/src/fohow.com/apps/controllers/cron_controller/sync_balance.go

@@ -3,7 +3,7 @@ package cron_controller
 import (
 	"crypto/md5"
 	"fmt"
-	"fohow.com/apps/helpers"
+	"fohow.com/libs/lib_redis"
 	"github.com/go-redis/redis"
 	"io"
 	"strconv"
@@ -90,7 +90,7 @@ func autoTakeCash() {
 	})
 	beego.BeeLogger.Info("take Cash Connect redis name (%s), pwd=%s", beego.AppConfig.String("AliRedisHost"), beego.AppConfig.String("AliRedisPwd"))
 	defer client.Close() //最后关闭
-	cashKey := helpers.GetAutoTakeCashList()
+	cashKey := lib_redis.GetAutoTakeCashList()
 	list, _ := client.LRange(cashKey, -1000, -1).Result()
 	for _, takeId := range list {
 		id, err := strconv.ParseInt(takeId, 10, 64)
@@ -101,7 +101,7 @@ func autoTakeCash() {
 		cashRecord := balance_model.GetTakeCashOrderById(id, false)
 		//已支付或记录不存在,剔除队列
 		if cashRecord == nil || cashRecord.State == 1 {
-			helpers.ThrowOutRedisList(cashKey, takeId)
+			lib_redis.ThrowOutRedisList(cashKey, takeId)
 			continue
 		}
 		//未审批或者不达处理时间不提现,则下次处理
@@ -130,7 +130,7 @@ func autoTakeCash() {
 			cashRecord.PaiedAt = time.Now().Unix()
 			cashRecord.Save()
 			//提现成功,剔除队列
-			helpers.ThrowOutRedisList(cashKey, takeId)
+			lib_redis.ThrowOutRedisList(cashKey, takeId)
 		} else {
 			cashRecord.State = 2
 			cashRecord.Remark = ret["err_code_des"]

+ 7 - 6
go/gopath/src/fohow.com/apps/controllers/order_controller/order_controller.go

@@ -3,6 +3,7 @@ package order_controller
 import (
 	"fmt"
 	"fohow.com/apps/helpers"
+	"fohow.com/libs/lib_redis"
 
 	// "fmt"
 	"strconv"
@@ -96,8 +97,8 @@ func (self *OrderController) Create() {
 	go new(order_model.OrderDetail).Create(order.OrderId, order.Id, product.Id, product.Price, product.RoboBalancePrice, product.Name,
 		sizeName, colorName, count)
 	//未支付订单加入取消队列
-	cancelKey := helpers.GetOrderCancelList()
-	helpers.ThrowInRedisList(cancelKey, order.OrderId)
+	cancelKey := lib_redis.GetOrderCancelList()
+	lib_redis.ThrowInRedisList(cancelKey, order.OrderId)
 	type Order struct {
 		OrderId string `json:"order_id"`
 	}
@@ -188,8 +189,8 @@ func (self *OrderController) MultipleCreate() {
 	order.Save()
 	go ClearCart(order.UserId, order.OrderId)
 	//未支付订单加入取消队列
-	cancelKey := helpers.GetOrderCancelList()
-	helpers.ThrowInRedisList(cancelKey, order.OrderId)
+	cancelKey := lib_redis.GetOrderCancelList()
+	lib_redis.ThrowInRedisList(cancelKey, order.OrderId)
 	type Order struct {
 		OrderId string `json:"order_id"`
 	}
@@ -261,8 +262,8 @@ func (self *OrderController) MultShopCreate() {
 	order.Save()
 
 	//未支付订单加入取消队列
-	cancelKey := helpers.GetOrderCancelList()
-	helpers.ThrowInRedisList(cancelKey, order.OrderId)
+	cancelKey := lib_redis.GetOrderCancelList()
+	lib_redis.ThrowInRedisList(cancelKey, order.OrderId)
 	type Order struct {
 		OrderId string `json:"order_id"`
 	}

+ 3 - 3
go/gopath/src/fohow.com/apps/controllers/test_controller/test_controller.go

@@ -2,9 +2,9 @@ package test_controller
 
 import (
 	"fmt"
-	"fohow.com/apps/helpers"
 	"fohow.com/apps/models/order_model"
 	"fohow.com/apps/models/user_model"
+	"fohow.com/libs/lib_redis"
 )
 
 type LabiReturn struct {
@@ -48,11 +48,11 @@ func (self *TestController) GetUserInfoFromRedis() {
 	userId := int64(1388)
 	key := fmt.Sprintf("userinfo_%d", userId)
 	var user user_model.User
-	ok, resp := helpers.GetRedisValue(key, user)
+	ok, resp := lib_redis.GetRedisValue(key, user)
 	if !ok {
 		//发送请求
 		resp = user_model.GetUserById(userId, false)
-		helpers.SetJsonEx(key, resp, 90*60)
+		lib_redis.SetJsonEx(key, resp, 90*60)
 
 	}
 	type Ret struct {

+ 3 - 3
go/gopath/src/fohow.com/apps/controllers/tool_controller/express_controller.go

@@ -6,8 +6,8 @@ import (
 	"encoding/json"
 	"fmt"
 	"fohow.com/apps"
-	"fohow.com/apps/helpers"
 	"fohow.com/apps/models/express_model"
+	"fohow.com/libs/lib_redis"
 	"github.com/astaxie/beego"
 	"io/ioutil"
 	"net/http"
@@ -95,7 +95,7 @@ func (self *ToolController) GetExpressInfo() {
 	ret := &Ret{}
 	//将数据存入 redis
 	key := fmt.Sprintf("express.GetExpressInfo%s%s", expressNo, expressCode)
-	ok, resp := helpers.GetRedisValue(key, netReturn)
+	ok, resp := lib_redis.GetRedisValue(key, netReturn)
 	beego.BeeLogger.Info("返回字符:\r\n%v%s", resp)
 
 	if !ok {
@@ -104,7 +104,7 @@ func (self *ToolController) GetExpressInfo() {
 		if err != nil {
 			fmt.Errorf("请求失败,错误信息:\r\n%v", err)
 		} else {
-			helpers.SetRedisValue(key, string(data), time.Duration(90*60)*time.Second)
+			lib_redis.SetRedisValue(key, string(data), time.Duration(90*60)*time.Second)
 			json.Unmarshal(data, &resp)
 		}
 		//cache.Cache.Put(k, ret, 90*time.Minute)

+ 0 - 135
go/gopath/src/fohow.com/apps/helpers/redis_helper.go

@@ -1,135 +0,0 @@
-package helpers
-
-import (
-	"encoding/json"
-	"fmt"
-	"github.com/astaxie/beego"
-	"github.com/go-redis/redis"
-	"time"
-)
-
-// SetJsonEx set Json and second
-func SetJsonEx(key string, data interface{}, seconds int) error {
-	jsonData, err := json.Marshal(data)
-	if err != nil {
-		return nil
-	}
-	return SetRedisValue(key, string(jsonData), time.Duration(seconds)*time.Second)
-}
-
-//保存keyValue
-func SetRedisValue(key, value string, expiration time.Duration) error {
-	db, err := beego.AppConfig.Int("AliRedisDb")
-	if err != nil {
-		beego.BeeLogger.Error("%s", err)
-		return err
-	}
-	client := redis.NewClient(&redis.Options{
-		Addr:     beego.AppConfig.String("AliRedisHost"),
-		Password: beego.AppConfig.String("AliRedisPwd"), //默认空密码
-		DB:       db,                                    //使用默认数据库
-	})
-	beego.BeeLogger.Info("Connect redis name (%s), pwd=%s", beego.AppConfig.String("AliRedisHost"), beego.AppConfig.String("AliRedisPwd"))
-	defer client.Close() //最后关闭
-	_, err = client.Ping().Result()
-	if err != nil {
-		beego.BeeLogger.Error("%s", err)
-		return err
-	}
-
-	client.Set(key, value, expiration) //忽略错误
-	return nil
-}
-
-//获取keyValue
-func GetRedisValue(key string, resp interface{}) (bool, interface{}) {
-	db, err := beego.AppConfig.Int("AliRedisDb")
-	if err != nil {
-		beego.BeeLogger.Error("%s", err)
-		return false, ""
-	}
-	client := redis.NewClient(&redis.Options{
-		Addr:     beego.AppConfig.String("AliRedisHost"),
-		Password: beego.AppConfig.String("AliRedisPwd"), //默认空密码
-		DB:       db,                                    //使用默认数据库
-	})
-	defer client.Close() //最后关闭
-	_, err = client.Ping().Result()
-	if err != nil {
-		beego.BeeLogger.Error("%s", err)
-		return false, ""
-	}
-	val, err := client.Get(key).Result()
-	if err != nil {
-		return false, ""
-	}
-	//beego.BeeLogger.Info("result 返回字符:%s", val)
-	err = json.Unmarshal([]byte(val), &resp)
-	if err != nil {
-		return false, ""
-	}
-	return true, resp
-}
-
-//保存redis队列
-func ThrowInRedisList(key, value string) {
-	db, err := beego.AppConfig.Int("AliRedisDb")
-	if err != nil {
-		beego.BeeLogger.Error("%s", err)
-		return
-	}
-	client := redis.NewClient(&redis.Options{
-		Addr:     beego.AppConfig.String("AliRedisHost"),
-		Password: beego.AppConfig.String("AliRedisPwd"), //默认空密码
-		DB:       db,                                    //使用默认数据库
-	})
-	beego.BeeLogger.Info("Connect redis name (%s), pwd=%s", beego.AppConfig.String("AliRedisHost"), beego.AppConfig.String("AliRedisPwd"))
-	defer client.Close() //最后关闭
-	_, err = client.Ping().Result()
-	if err != nil {
-		beego.BeeLogger.Error("%s", err)
-		return
-	}
-	beego.BeeLogger.Info("throwin redis key (%s), value=%s", key, value)
-
-	client.LPush(key, value) //rpush则在尾部插入
-	return
-}
-
-//从redis队列剔除
-func ThrowOutRedisList(key, value string) {
-	db, err := beego.AppConfig.Int("AliRedisDb")
-	if err != nil {
-		beego.BeeLogger.Error("%s", err)
-		return
-	}
-	client := redis.NewClient(&redis.Options{
-		Addr:     beego.AppConfig.String("AliRedisHost"),
-		Password: beego.AppConfig.String("AliRedisPwd"), //默认空密码
-		DB:       db,                                    //使用默认数据库
-	})
-	beego.BeeLogger.Info("Connect redis name (%s), pwd=%s", beego.AppConfig.String("AliRedisHost"), beego.AppConfig.String("AliRedisPwd"))
-	defer client.Close() //最后关闭
-	_, err = client.Ping().Result()
-	if err != nil {
-		beego.BeeLogger.Error("%s", err)
-		return
-	}
-	client.LRem(key, 0, value)
-	beego.BeeLogger.Info("throwout redis key (%s), value=%s", key, value)
-	return
-}
-
-func GetKeyByOrderId(orderId string) string {
-	return fmt.Sprintf("mall:order:info:%s", orderId)
-}
-
-//所有未支付普通订单加入队列,用作倒计到时取消
-func GetOrderCancelList() string {
-	return fmt.Sprintf("mall:cancelorder")
-}
-
-//所有自动提现订单加入队列,自动提现
-func GetAutoTakeCashList() string {
-	return fmt.Sprintf("mall:takecash")
-}

+ 68 - 0
go/gopath/src/fohow.com/apps/models/order_model/promotion.go

@@ -0,0 +1,68 @@
+package order_model
+
+import (
+	"fmt"
+	"fohow.com/cache"
+	"github.com/astaxie/beego"
+	"github.com/astaxie/beego/orm"
+	"time"
+)
+
+const (
+	promotions_tablename = "promotions"
+)
+
+type Promotion struct {
+	Id        int64     `orm:"column(id);pk"                           json:"id"`   // int(11)
+	Name      string    `orm:"column(name)"                            json:"name"` // varchar(64)
+	BeginTime time.Time `orm:"column(begin_time)"                      json:"-"`
+	EndTime   time.Time `orm:"column(end_time)"                        json:"-"`
+	IsEnable  bool      `orm:"column(is_enable)"                        json:"is_enable"`    // int(11)
+	IsFirst   bool      `orm:"column(is_first)"                        json:"is_first"`      // int(11)
+	IsMore    bool      `orm:"column(is_more)"                         json:"-"`             // int(11)
+	OrderType int64     `orm:"column(order_type)"                      json:"order_type"`    // varchar(64)
+	MinTotal  int64     `orm:"column(min_total)"                       json:"min_total"`     // int(11)
+	MaxTotal  int64     `orm:"column(max_total)"                       json:"-"`             // datetime
+	Prod1     int64     `orm:"column(prod1)"                           json:"prod1"`         // int(11)
+	Nums1     int64     `orm:"column(nums1)"                           json:"nums1"`         // int(11)
+	Prod2     int64     `orm:"column(prod2)"                           json:"prod2"`         // int(11)
+	Nums2     int64     `orm:"column(nums2)"                           json:"nums2"`         // int(11)
+	Prod3     int64     `orm:"column(prod3)"                           json:"prod3"`         // int(11)
+	Nums3     int64     `orm:"column(nums3)"                           json:"nums3"`         // int(11)
+	SendProd1 int64     `orm:"column(send_prod1)"                      json:"send_prod1"`    // int(11)
+	SendNums1 int64     `orm:"column(send_nums1)"                      json:"send_nums1"`    // int(11)
+	SendProd2 int64     `orm:"column(send_prod2)"                      json:"send_prod2"`    // int(11)
+	SendNums2 int64     `orm:"column(send_nums2)"                      json:"send_nums2"`    // int(11)
+	SendProd3 int64     `orm:"column(send_prod3)"                      json:"send_prod3"`    // int(11)
+	SendNums3 int64     `orm:"column(send_nums3)"                      json:"send_nums3"`    // 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
+}
+
+func (self *Promotion) TableName() string {
+	return promotions_tablename
+}
+
+func GetEffetivePromotions(queryDate time.Time, orderType int64, useCache bool) (list []*Promotion) {
+	k := fmt.Sprintf("product_model.GetEffetivePromotions(%s)", queryDate.Format("2006-01-02"))
+	if useCache {
+		if ret, ok := cache.Cache.Get(k).([]*Promotion); ok {
+			return ret
+		}
+	}
+
+	sql := `
+		select * from
+		promotions
+		where DATE_FORMAT(DATE_ADD(begin_time,INTERVAL 8 HOUR),'%Y-%m-%d') <= ? and DATE_FORMAT(DATE_ADD(end_time,INTERVAL 8 HOUR),'%Y-%m-%d') >= ? and order_type = ? and is_enable = 1 ;
+		`
+
+	_, err := orm.NewOrm().Raw(sql, queryDate.Format("2006-01-02"), queryDate.Format("2006-01-02"), orderType).QueryRows(&list)
+	if err != nil {
+		beego.BeeLogger.Warn("product_model.GetSeckillPromotions(%s) err=%s", queryDate.Format("2006-01-02"), err)
+		return nil
+	}
+
+	cache.Cache.Put(k, list, 10*time.Minute)
+	return list
+}

+ 0 - 3
go/gopath/src/fohow.com/libs/lib_redis/redis.go

@@ -8,9 +8,6 @@ import (
 	"time"
 )
 
-type RedisClient struct {
-}
-
 func Del(key string) error {
 	db, err := beego.AppConfig.Int("AliRedisDb")
 	if err != nil {