提交 a5c63129 编写于 作者: P peterq

optimize something

上级 14f7452f
......@@ -213,3 +213,10 @@ func (v JsonValue) Array() []JsonValue {
}
panic(NewError(fmt.Sprintf("%s needs to be array, %T given", v.name, v.data), -1, nil))
}
var App *iris.Application
func NewApp() *iris.Application {
App = iris.New()
return App
}
......@@ -4,6 +4,7 @@ import (
"github.com/peterq/pan-light/server/artisan/cache"
"github.com/peterq/pan-light/server/conf"
"gopkg.in/mgo.v2"
"math"
"time"
)
......@@ -46,17 +47,20 @@ func (d *fileShareDao) List(count, offset int, order string) (data []gson, err e
"expire_at": gson{
"$gt": time.Now().Unix(),
},
"share_at": gson{
"$gt": offset,
},
}
if order == "official" {
condition["official"] = true
}
if offset == 0 {
offset = math.MaxInt32
}
collection := d.collection(s)
err = collection.Pipe([]gson{
{"$match": condition},
{"$sort": sort},
{"$match": gson{"share_at": gson{
"$lt": offset,
}}},
{"$limit": count},
{
"$lookup": gson{
......
......@@ -10,7 +10,7 @@ import (
func main() {
log.SetFlags(log.LstdFlags | log.Lshortfile)
app := iris.New()
app := artisan.NewApp()
app.Get("/", func(ctx context.Context) {
ctx.Write([]byte("Hello pan-light"))
})
......
......@@ -4,7 +4,7 @@ import (
"encoding/base64"
"encoding/json"
"fmt"
"github.com/kataras/iris"
"github.com/peterq/pan-light/server/artisan"
"github.com/peterq/pan-light/server/dao"
"github.com/pkg/errors"
"io/ioutil"
......@@ -42,6 +42,7 @@ type loginSession struct {
Timestamp string
Bdstoken string
Bduss string
createAt time.Time
}
type Vip struct {
......@@ -71,10 +72,14 @@ func (v *Vip) Username() string {
func (v *Vip) CreateSession() (err error) {
defer func() {
if err != nil {
(&iris.Application{}).Logger().Error(v.username, "vip创建session错误", err)
artisan.App.Logger().Error(v.username, "vip创建session错误", err)
go v.CreateSession()
}
}()
old := v.loginSession()
if old != nil && time.Now().Sub(old.createAt) < time.Second {
return
}
v.loginSessionLock.Lock()
defer v.loginSessionLock.Unlock()
// 高并发下防止重复更新session
......@@ -116,6 +121,7 @@ func (v *Vip) CreateSession() (err error) {
s.Timestamp = fmt.Sprint(int(raw["timestamp"].(float64)))
s.Bdstoken = raw["bdstoken"].(string)
s.Bduss = v.bduss
s.createAt = time.Now()
v._loginSession = &s
log.Println(v.username, "完成loginSession")
return
......
......@@ -165,13 +165,13 @@ func handleShareToSquare(ctx context.Context, param artisan.JsonMap) (result int
}
func handleShareList(ctx context.Context, param artisan.JsonMap) (result interface{}, err error) {
offset := param.Get("offset").Int()
offset := param.Get("offset").Int64()
pageSize := param.Get("pageSize").Int()
listType := param.Get("type").String()
if pageSize < 1 || pageSize > 20 || offset < 0 {
return nil, errors.New("param invalid")
}
if offset > 300 {
if offset != 0 && offset < time.Now().Add(-time.Hour*24*365).Unix() {
return []gson{}, nil
}
if _, ok := map[string]bool{
......@@ -181,6 +181,9 @@ func handleShareList(ctx context.Context, param artisan.JsonMap) (result interfa
}[listType]; !ok {
return nil, errors.New("type invalid")
}
result, err = dao.FileShareDao.List(pageSize, offset, listType)
result, err = dao.FileShareDao.List(pageSize, int(offset), listType)
if result.([]gson) == nil {
result = []gson{}
}
return
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册