| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- package utils
- import (
- "crypto/hmac"
- "crypto/sha1"
- "encoding/hex"
- "git.qianqiusoft.com/qianqiusoft/go-uuid/uuid"
- "git.qianqiusoft.com/qianqiusoft/light-apiengine/logs"
- "git.qianqiusoft.com/qianqiusoft/light-apiengine/models"
- "github.com/xormplus/xorm"
- "net/url"
- "strings"
- )
- const (
- hmac_key = "hmac_key_"
- )
- func NewUUID() string {
- //return uuid.NewV4().String()
- return uuid.New()
- }
- func GenerateToken(plain string) string {
- hash := hmac.New(sha1.New, []byte(hmac_key))
- hash.Write([]byte(plain))
- return hex.EncodeToString(hash.Sum(nil))
- }
- func TotalPage(record, size int) int {
- tp := record / size
- if tp < 0 {
- return 1
- }
- if record%size == 0 {
- return tp
- }
- return tp + 1
- }
- func FormatForBrowse(agent, val string) string {
- if strings.Contains(strings.ToLower(agent), "safari/") && !strings.Contains(strings.ToLower(agent), "chrome/") {
- logs.Debug("Safari浏览器编码")
- } else if strings.Contains(strings.ToLower(agent), "firefox/") {
- logs.Debug("Firefox浏览器编码")
- } else if strings.Contains(strings.ToLower(agent), "chrome/") && strings.Contains(strings.ToLower(agent), "safari/") && !strings.Contains(strings.ToLower(agent), "edge/") {
- logs.Debug("Chrome浏览器编码")
- } else {
- logs.Debug("IE浏览器编码")
- val = url.QueryEscape(val)
- val = strings.Replace(val, "+", "%20", -1)
- }
- return val
- }
- func PageQuery(db *xorm.Engine, param models.PageQueryParam, rowsSlicePtr interface{})(*models.PageResult, error){
- pageResult := models.PageResult{}
- dbSession := db.Table(param.TableName)
- if len(param.SelectFields) > 0{
- dbSession = dbSession.Select(param.TableName + ".*")
- }else{
- dbSession = dbSession.Select(strings.Join(param.SelectFields, ","))
- }
- count := 0
- countSession := db.Table(param.TableName)
- countSession.Select("count(*) as records")
- for _, join := range param.JoinTables {
- dbSession = dbSession.Join(join.JoinOperator, join.TabelName, join.Condition)
- }
- whereStr, datas, err := param.PageInfo.Filter.Parse("")
- if err != nil {
- return nil, err
- }
- dbSession = dbSession.Where(whereStr, datas...)
- countSession = countSession.Where(whereStr, datas...)
- sidx := strings.Split(param.PageInfo.Sidx, ",")
- for _, order := range sidx {
- order = strings.TrimSpace(order)
- if len(order) == 0 {
- continue
- }
- if strings.ToLower(param.PageInfo.Sord) == "desc" {
- dbSession = dbSession.OrderBy(order + " desc")
- } else {
- dbSession = dbSession.OrderBy(order + " asc")
- }
- }
- err = dbSession.Limit(param.PageInfo.PageSize, (param.PageInfo.PageNum-1)*param.PageInfo.PageSize).Find(rowsSlicePtr)
- _, err = countSession.Get(&count)
- pageResult.Content = rowsSlicePtr
- pageResult.TotalSize = count
- pageResult.PageNum = param.PageInfo.PageNum
- pageResult.PageSize = param.PageInfo.PageSize
- return &pageResult, nil
- }
|