141 lines
4.0 KiB
Go
141 lines
4.0 KiB
Go
package cms
|
||
|
||
import (
|
||
"crypto/md5"
|
||
"fmt"
|
||
"math"
|
||
"strconv"
|
||
"time"
|
||
|
||
"git.rosy.net.cn/baseapi/utils"
|
||
"git.rosy.net.cn/jx-callback/business/jxcallback/scheduler/basesch"
|
||
"git.rosy.net.cn/jx-callback/business/model"
|
||
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||
"git.rosy.net.cn/jx-callback/business/partner"
|
||
"git.rosy.net.cn/jx-callback/globals"
|
||
"git.rosy.net.cn/jx-callback/globals/api"
|
||
"github.com/qiniu/api.v7/storage"
|
||
)
|
||
|
||
const (
|
||
qiniuTokenExpires = 300 // 七牛TOKEN有效时间,5分钟
|
||
)
|
||
|
||
var (
|
||
CurVendorSync VendorSync
|
||
serviceInfo map[string]interface{}
|
||
)
|
||
|
||
func InitServiceInfo(version, buildDate, gitCommit string) {
|
||
serviceInfo = map[string]interface{}{
|
||
"version": version,
|
||
"buildDate": buildDate,
|
||
"gitCommit": gitCommit,
|
||
"metaData": map[string]interface{}{
|
||
"skuNamePrefix": model.SkuNamePrefixNames,
|
||
"skuNameUnit": model.UnitNames,
|
||
"skuSpecUnit": model.SpecUnitNames,
|
||
"skuStatus": model.SkuStatusName,
|
||
"storeDeliveryRangeType": model.DeliveryRangeTypeName,
|
||
"storeDeliveryType": model.DeliveryTypeName,
|
||
"storeStatus": model.StoreStatusName,
|
||
"categoryType": model.CategoryTypeName,
|
||
"vendorName": model.VendorChineseNames,
|
||
"orderStatus": model.OrderStatusName,
|
||
"waybillStatus": model.WaybillStatusName,
|
||
"bankName": model.BankName,
|
||
},
|
||
}
|
||
Init()
|
||
}
|
||
|
||
func GetPurchaseHandler(vendorID int) partner.IPurchasePlatformHandler {
|
||
return basesch.FixedBaseScheduler.GetPurchasePlatformFromVendorID(vendorID)
|
||
}
|
||
|
||
func GetServiceInfo() interface{} {
|
||
return serviceInfo
|
||
}
|
||
|
||
func GetQiniuUploadToken(suffix string) (upTokenInfo map[string]interface{}, err error) {
|
||
putPolicy := storage.PutPolicy{
|
||
Scope: globals.QiniuBucket,
|
||
Expires: qiniuTokenExpires,
|
||
}
|
||
upTokenInfo = map[string]interface{}{
|
||
"token": putPolicy.UploadToken(api.QiniuAPI),
|
||
"expires": putPolicy.Expires,
|
||
"fileName": genPicFileName(suffix),
|
||
}
|
||
return upTokenInfo, err
|
||
}
|
||
|
||
func GetPlaces(keyword string, includeDisabled bool, params map[string]interface{}) ([]*model.Place, error) {
|
||
sql := `
|
||
SELECT *
|
||
FROM place t1
|
||
WHERE 1 = 1
|
||
`
|
||
if !includeDisabled {
|
||
sql += " AND enabled = 1"
|
||
}
|
||
sqlParams := make([]interface{}, 0)
|
||
if keyword != "" {
|
||
sql += " AND (t1.name LIKE ?"
|
||
sqlParams = append(sqlParams, "%"+keyword+"%")
|
||
if keywordInt64, err2 := strconv.ParseInt(keyword, 10, 64); err2 == nil {
|
||
sql += " OR t1.code = ?"
|
||
sqlParams = append(sqlParams, keywordInt64)
|
||
}
|
||
sql += ")"
|
||
}
|
||
if params["parentCode"] != nil {
|
||
sql += " AND t1.parent_code = ?"
|
||
sqlParams = append(sqlParams, params["parentCode"])
|
||
}
|
||
if params["level"] != nil {
|
||
sql += " AND t1.level = ?"
|
||
sqlParams = append(sqlParams, params["level"])
|
||
}
|
||
sql += " ORDER BY t1.level, t1.name"
|
||
globals.SugarLogger.Debug(sql)
|
||
places := []*model.Place{}
|
||
return places, dao.GetRows(nil, &places, sql, sqlParams)
|
||
}
|
||
|
||
func UpdatePlaces(places []map[string]interface{}, userName string) (num int64, err error) {
|
||
if len(places) == 0 {
|
||
return 0, ErrMissingInput
|
||
}
|
||
for _, place := range places {
|
||
if place["code"] == nil {
|
||
return 0, ErrMissingInput
|
||
}
|
||
placeid := &model.Place{}
|
||
valid := dao.NormalMakeMapByFieldList(place, []string{"jdCode", "enabled", "mtpsPrice"}, userName)
|
||
if num, err = dao.UpdateEntityLogically(nil, placeid, valid, userName, utils.Params2Map("Code", place["code"])); err != nil {
|
||
return num, err
|
||
}
|
||
}
|
||
return num, err
|
||
}
|
||
|
||
func UpdatePlace(placeCode int, payload map[string]interface{}, userName string) (num int64, err error) {
|
||
payload["code"] = placeCode
|
||
return UpdatePlaces([]map[string]interface{}{payload}, userName)
|
||
}
|
||
|
||
/////
|
||
func genPicFileName(suffix string) string {
|
||
return fmt.Sprintf("%x%s", md5.Sum([]byte(utils.GetUUID()+suffix)), suffix)
|
||
}
|
||
|
||
// 生成一个不重复的临时ID
|
||
func genTmpID() int64 {
|
||
return time.Now().UnixNano() / 1000000
|
||
}
|
||
|
||
func isFakeVendorThingID(id int64) bool {
|
||
return id == 0 || (int(math.Log10(float64(id))) == int(math.Log10(float64(genTmpID()))))
|
||
}
|