Files
jx-callback/business/partner/purchase/jd/jd.go
苏尹岚 868488acae aa
2021-04-07 14:52:19 +08:00

182 lines
5.4 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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,
}
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
}
voc := &model.VendorOrgCode{}
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, voc.VendorOrgCode, 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但是库里没这个账号")
}
}
}
}