182 lines
5.4 KiB
Go
182 lines
5.4 KiB
Go
package jd
|
||
|
||
import (
|
||
"encoding/json"
|
||
"net/url"
|
||
|
||
"git.rosy.net.cn/jx-callback/globals/api"
|
||
|
||
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||
|
||
"git.rosy.net.cn/baseapi/platformapi/jdapi"
|
||
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
||
"git.rosy.net.cn/jx-callback/business/model"
|
||
"git.rosy.net.cn/jx-callback/business/partner"
|
||
"git.rosy.net.cn/jx-callback/globals"
|
||
)
|
||
|
||
type PurchaseHandler struct {
|
||
partner.BasePurchasePlatform
|
||
}
|
||
|
||
var (
|
||
CurPurchaseHandler *PurchaseHandler
|
||
)
|
||
|
||
func init() {
|
||
globals.SugarLogger.Debug("init jd")
|
||
CurPurchaseHandler = new(PurchaseHandler)
|
||
partner.RegisterPurchasePlatform(CurPurchaseHandler)
|
||
}
|
||
|
||
func getAPI(appOrgCode string) (apiObj *jdapi.API) {
|
||
if appOrgCode == "" {
|
||
globals.SugarLogger.Warnf("getAPI appOrgCode is empty")
|
||
}
|
||
return partner.CurAPIManager.GetAPI(model.VendorIDJD, appOrgCode).(*jdapi.API)
|
||
}
|
||
|
||
func GetAPI(appOrgCode string) (apiObj *jdapi.API) {
|
||
return getAPI(appOrgCode)
|
||
}
|
||
|
||
func GetAPIbyKey(appKey string) (apiObj *jdapi.API) {
|
||
if code, err := dao.GetVendorOrgCodeByKey(dao.GetDB(), model.VendorIDJD, appKey); err == nil && code != nil {
|
||
return jdapi.New(code.Token, code.AppKey, code.AppSecret)
|
||
}
|
||
globals.SugarLogger.Warnf("GetAPIbyKey appKey:%s get empty vendorOrgCode", appKey)
|
||
return nil
|
||
}
|
||
|
||
func AppKey2OrgCode(appKey string) (vendorOrgCode string) {
|
||
// apiList := partner.CurAPIManager.GetAppOrgCodeList(model.VendorIDJD)
|
||
// for _, v := range apiList {
|
||
// jdAPI := partner.CurAPIManager.GetAPI(model.VendorIDJD, v).(*jdapi.API)
|
||
// if jdAPI.GetAppKey() == appKey {
|
||
// vendorOrgCode = v
|
||
// break
|
||
// }
|
||
// }
|
||
if code, err := dao.GetVendorOrgCodeByKey(dao.GetDB(), model.VendorIDJD, appKey); err == nil && code != nil {
|
||
vendorOrgCode = code.VendorOrgCode
|
||
}
|
||
if vendorOrgCode == "" {
|
||
globals.SugarLogger.Warnf("AppKey2OrgCode appKey:%s get empty vendorOrgCode", appKey)
|
||
}
|
||
return vendorOrgCode
|
||
}
|
||
|
||
func (c *PurchaseHandler) GetVendorID() int {
|
||
return model.VendorIDJD
|
||
}
|
||
|
||
func JdOperationTime2JxOperationTime(value1 int) int16 {
|
||
value := int16(value1)
|
||
return (value/2)*100 + (value%2)*30
|
||
}
|
||
|
||
func JxOperationTime2JdOperationTime(value int16) int16 {
|
||
return (value/100)*2 + (value%100)/30
|
||
}
|
||
|
||
func JdStoreStatus2JxStatus(yn, closeStatus int) int {
|
||
if yn == 1 {
|
||
return model.StoreStatusDisabled
|
||
} else if closeStatus == 1 {
|
||
return model.StoreStatusClosed
|
||
}
|
||
return model.StoreStatusOpened
|
||
}
|
||
|
||
func JxStoreStatus2JdStatus(status int) (yn, closeStatus int) {
|
||
switch status {
|
||
case model.StoreStatusDisabled:
|
||
return 1, 1
|
||
case model.StoreStatusHaveRest, model.StoreStatusClosed:
|
||
return 0, 1
|
||
default:
|
||
return 0, 0
|
||
}
|
||
}
|
||
|
||
func (p *PurchaseHandler) UploadImg(ctx *jxcontext.Context, vendorOrgCode, imgURL string, imgData []byte, imgName string, imgType int) (imgHint string, err error) {
|
||
return imgHint, err
|
||
}
|
||
|
||
type JdCode struct {
|
||
Code string `json:"code"`
|
||
VenderID string `json:"venderId"`
|
||
}
|
||
|
||
type JdToken struct {
|
||
Token string `json:"token"`
|
||
VenderID string `json:"venderId"`
|
||
}
|
||
|
||
func OnTokenChange(values url.Values) {
|
||
db := dao.GetDB()
|
||
codeInfo := &JdCode{}
|
||
if dataStr := values.Get("code"); dataStr != "" {
|
||
json.Unmarshal([]byte(dataStr), &codeInfo)
|
||
}
|
||
if codeInfo.Code != "" {
|
||
voc := &model.VendorOrgCode{}
|
||
//sql := `
|
||
// SELECT * FROM tmp_jd WHERE vendor_org_code = ?
|
||
//`
|
||
//sqlParams := []interface{}{codeInfo.VenderID}
|
||
//if err := dao.GetRow(db, &voc, sql, sqlParams); err == nil && voc != nil {
|
||
if result, _ := dao.GetVendorOrgCode(db, model.VendorIDJD, codeInfo.VenderID, model.VendorOrgTypePlatform); len(result) == 0 {
|
||
voc2 := &model.VendorOrgCode{
|
||
Comment: voc.Comment,
|
||
VendorOrgCode: codeInfo.VenderID,
|
||
VendorType: model.VendorOrgTypePlatform,
|
||
IsJxCat: 1,
|
||
}
|
||
dao.WrapAddIDCULDEntity(voc2, "jxadmin")
|
||
if err := dao.CreateEntity(db, voc2); err == nil {
|
||
//添加成功后去开发者后台填验证码
|
||
if configs, err := dao.QueryConfigs(dao.GetDB(), "jdConfigCookie", model.ConfigTypeCookie, ""); err == nil {
|
||
api.JdAPI.SetCookieWithStr(configs[0].Value)
|
||
if appID, err := api.JdAPI.GetJdNoAuthAppID(codeInfo.VenderID); err == nil {
|
||
api.JdAPI.SetCode(codeInfo.Code, appID)
|
||
}
|
||
}
|
||
}
|
||
} else {
|
||
globals.SugarLogger.Debugf("OnTokenChange, 发验证码,但是库里有这个账号了")
|
||
}
|
||
//}
|
||
} else {
|
||
tokenInfo := &JdToken{}
|
||
if dataStr := values.Get("token"); dataStr != "" {
|
||
json.Unmarshal([]byte(dataStr), &tokenInfo)
|
||
}
|
||
if tokenInfo == nil {
|
||
return
|
||
}
|
||
//sql := `
|
||
// SELECT * FROM tmp_jd WHERE vendor_org_code = ?
|
||
//`
|
||
//sqlParams := []interface{}{tokenInfo.VenderID}
|
||
//if err := dao.GetRow(db, &voc, sql, sqlParams); err == nil && voc != nil {
|
||
if result, _ := dao.GetVendorOrgCode(db, model.VendorIDJD, tokenInfo.VenderID, model.VendorOrgTypePlatform); len(result) > 0 {
|
||
result[0].Token = tokenInfo.Token
|
||
if _, err := dao.UpdateEntity(db, result[0], "Token"); err == nil {
|
||
//添加成功后去开发者后台填验证码
|
||
// if configs, err := dao.QueryConfigs(dao.GetDB(), "jdConfigCookie", model.ConfigTypeCookie, ""); err == nil {
|
||
// api.JdAPI.SetCookieWithStr(configs[0].Value)
|
||
// result2, _ := api.JdAPI.GetJdAppInfo()
|
||
// result[0].AppKey = result2.AppKey
|
||
// result[0].AppSecret = result2.AppSecret
|
||
// dao.UpdateEntity(db, result[0], "AppKey", "AppSecret")
|
||
// }
|
||
}
|
||
} else {
|
||
globals.SugarLogger.Debugf("OnTokenChange, 发token,但是库里没这个账号")
|
||
}
|
||
//}
|
||
}
|
||
|
||
}
|