+ SyncStoresQualify
This commit is contained in:
@@ -1707,3 +1707,35 @@ func SaveAndSendAlarmVendorSnapshot(ctx *jxcontext.Context, vendorIDs, storeIDs
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
func SyncStoresQualify(ctx *jxcontext.Context, storeIDs []int, isAsync, isContinueWhenError bool) (hint string, err error) {
|
||||
if len(storeIDs) > 0 {
|
||||
db := dao.GetDB()
|
||||
task := tasksch.NewParallelTask("上传门店资质", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(isContinueWhenError), ctx,
|
||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
vendorID := model.VendorIDJD
|
||||
if handler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.IStoreSyncQualifyHandler); handler != nil {
|
||||
storeID := batchItemList[0].(int)
|
||||
storeDetail, err := dao.GetStoreDetail(db, storeID, vendorID)
|
||||
if err == nil {
|
||||
if err = handler.SyncQualify(ctx, storeDetail); err == nil {
|
||||
retVal = []int{1}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
err = fmt.Errorf("平台%s不支持此操作", model.VendorChineseNames[vendorID])
|
||||
}
|
||||
return retVal, err
|
||||
}, storeIDs)
|
||||
tasksch.HandleTask(task, nil, true).Run()
|
||||
if isAsync {
|
||||
hint = task.GetID()
|
||||
} else {
|
||||
resultList, err2 := task.GetResult(0)
|
||||
if err = err2; err == nil {
|
||||
hint = utils.Int2Str(len(resultList))
|
||||
}
|
||||
}
|
||||
}
|
||||
return hint, err
|
||||
}
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
package partner
|
||||
|
||||
import "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
||||
import (
|
||||
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
||||
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||||
)
|
||||
|
||||
type IStoreHandler interface {
|
||||
GetAllStoresVendorID(ctx *jxcontext.Context) (vendorStoreIDs []string, err error)
|
||||
@@ -9,3 +12,8 @@ type IStoreHandler interface {
|
||||
// opTime格式为整数1130代表11:30
|
||||
UpdateStoreOpTime(ctx *jxcontext.Context, storeID int, vendorStoreID string, opTimeList []int16) (err error)
|
||||
}
|
||||
|
||||
// 同步资质信息至平台
|
||||
type IStoreSyncQualifyHandler interface {
|
||||
SyncQualify(ctx *jxcontext.Context, storeDetail *dao.StoreDetail) (err error)
|
||||
}
|
||||
|
||||
@@ -357,3 +357,90 @@ func (c *PurchaseHandler) GetAllStoresVendorID(ctx *jxcontext.Context) (vendorSt
|
||||
vendorStoreIDs, err = api.JdAPI.GetStationsByVenderId()
|
||||
return vendorStoreIDs, err
|
||||
}
|
||||
|
||||
func (c *PurchaseHandler) storeUploadImgByURL(inImgURL string) (imgURL string, err error) {
|
||||
if globals.EnableJdStoreWrite {
|
||||
imgURL, err = api.JdPageAPI.StoreUploadImgByURL(inImgURL)
|
||||
} else {
|
||||
imgURL = utils.GetUUID()
|
||||
}
|
||||
return imgURL, err
|
||||
}
|
||||
|
||||
func (c *PurchaseHandler) SyncQualify(ctx *jxcontext.Context, storeDetail *dao.StoreDetail) (err error) {
|
||||
if storeDetail.LicenceCode == "" || storeDetail.Licence == "" {
|
||||
return fmt.Errorf("营业执照信息不全")
|
||||
}
|
||||
if storeDetail.IDCode == "" || storeDetail.IDCardFront == "" || storeDetail.IDCardBack == "" || storeDetail.IDValid == "" {
|
||||
return fmt.Errorf("个人信息不全")
|
||||
}
|
||||
var qualifyList []*jdapi.QualifyItem
|
||||
licenceDetail, err := api.JdPageAPI.GetCorporationInfo(storeDetail.VendorStoreID, storeDetail.LicenceCode)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
licenceURL, err := c.storeUploadImgByURL(storeDetail.Licence)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
qualifyList = append(qualifyList, &jdapi.QualifyItem{
|
||||
QualifyType: jdapi.QualifyTypeCompany,
|
||||
QualifyURL: licenceURL,
|
||||
QualifyExpireStart: licenceDetail.StartDate,
|
||||
QualifyExpireForever: 0,
|
||||
QualifyName: licenceDetail.OperName,
|
||||
LicenceType: "-1",
|
||||
QualifyNumber: storeDetail.LicenceCode,
|
||||
QualifyAddress: licenceDetail.Address,
|
||||
LicenceName: licenceDetail.Name,
|
||||
EconKind: licenceDetail.EconKind,
|
||||
Scope: licenceDetail.Scope,
|
||||
})
|
||||
if licenceDetail.EconKind == jdapi.LincenceEconKindPerson { // 个人
|
||||
idFrondURL, err := c.storeUploadImgByURL(storeDetail.IDCardFront)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
personQualify := &jdapi.QualifyItem{
|
||||
QualifyType: jdapi.QualifyTypePerson,
|
||||
QualifyURL: idFrondURL,
|
||||
QualifyExpireStart: storeDetail.IDValid,
|
||||
QualifyNumber: storeDetail.IDCode,
|
||||
QualifyOwner: storeDetail.LicenceOwnerName,
|
||||
}
|
||||
if storeDetail.IDExpire == "" {
|
||||
personQualify.QualifyExpireForever = 0
|
||||
} else {
|
||||
personQualify.QualifyExpireForever = 1
|
||||
personQualify.QualifyExpireEnd = storeDetail.IDExpire
|
||||
}
|
||||
qualifyList = append(qualifyList, personQualify)
|
||||
} else {
|
||||
idFrondURL, err := c.storeUploadImgByURL(storeDetail.IDCardFront)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
qualifyList = append(qualifyList, &jdapi.QualifyItem{
|
||||
QualifyType: jdapi.QualifyTypeAddInfo,
|
||||
QualifyURL: idFrondURL,
|
||||
QualifyExpireForever: 1,
|
||||
})
|
||||
}
|
||||
if storeDetail.IDExpire == "" {
|
||||
idBackURL, err := c.storeUploadImgByURL(storeDetail.IDCardBack)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
qualifyList = append(qualifyList, &jdapi.QualifyItem{
|
||||
QualifyType: jdapi.QualifyTypeAddInfo,
|
||||
QualifyURL: idBackURL,
|
||||
QualifyExpireForever: 1,
|
||||
})
|
||||
}
|
||||
globals.SugarLogger.Debug(utils.Format4Output(qualifyList, false))
|
||||
if globals.EnableJdStoreWrite {
|
||||
// err = api.JdPageAPI.SaveQualify(storeDetail.VendorStoreID, jdapi.SaveQualifyActionTypeCommit, qualifyList)
|
||||
err = api.JdPageAPI.SaveQualify(storeDetail.VendorStoreID, jdapi.SaveQualifyActionTypeSave, qualifyList)
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import (
|
||||
"testing"
|
||||
|
||||
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
||||
"git.rosy.net.cn/jx-callback/business/model"
|
||||
|
||||
"git.rosy.net.cn/baseapi/utils"
|
||||
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||||
@@ -81,3 +82,14 @@ func TestUpdateStore2(t *testing.T) {
|
||||
// t.Fatal("result doesn't match")
|
||||
// }
|
||||
// }
|
||||
|
||||
func TestSyncQualify(t *testing.T) {
|
||||
storeDetail, err := dao.GetStoreDetail(dao.GetDB(), 102610, model.VendorIDJD)
|
||||
if err != nil {
|
||||
t.Fatal(err.Error())
|
||||
}
|
||||
err = curPurchaseHandler.SyncQualify(jxcontext.AdminCtx, storeDetail)
|
||||
if err != nil {
|
||||
t.Fatal(err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -400,3 +400,23 @@ func (c *StoreController) BindPrinter() {
|
||||
return retVal, "", err
|
||||
})
|
||||
}
|
||||
|
||||
// @Title 同步门店资质信息至平台(当前只支持京东)
|
||||
// @Description 同步门店资质信息至平台(当前只支持京东)
|
||||
// @Param token header string true "认证token"
|
||||
// @Param storeIDs formData string true "京西门店ID列表,必须非空值"
|
||||
// @Param isAsync formData bool true "是否异步操作"
|
||||
// @Param isContinueWhenError formData bool false "单个同步失败是否继续,缺省false"
|
||||
// @Success 200 {object} controllers.CallResult
|
||||
// @Failure 200 {object} controllers.CallResult
|
||||
// @router /SyncStoresQualify [post]
|
||||
func (c *StoreController) SyncStoresQualify() {
|
||||
c.callSyncStoresQualify(func(params *tStoreSyncStoresQualifyParams) (retVal interface{}, errCode string, err error) {
|
||||
var storeIDs []int
|
||||
err = jxutils.Strings2Objs(params.StoreIDs, &storeIDs)
|
||||
if err == nil {
|
||||
retVal, err = cms.SyncStoresQualify(params.Ctx, storeIDs, params.IsAsync, params.IsContinueWhenError)
|
||||
}
|
||||
return retVal, "", err
|
||||
})
|
||||
}
|
||||
|
||||
@@ -1258,6 +1258,15 @@ func init() {
|
||||
Filters: nil,
|
||||
Params: nil})
|
||||
|
||||
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"],
|
||||
beego.ControllerComments{
|
||||
Method: "SyncStoresQualify",
|
||||
Router: `/SyncStoresQualify`,
|
||||
AllowHTTPMethods: []string{"post"},
|
||||
MethodParams: param.Make(),
|
||||
Filters: nil,
|
||||
Params: nil})
|
||||
|
||||
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"],
|
||||
beego.ControllerComments{
|
||||
Method: "TmpGetJxBadComments",
|
||||
|
||||
Reference in New Issue
Block a user