- don't check weixin exist after login in.
This commit is contained in:
@@ -67,13 +67,13 @@ func GetUserInfo(code string, state string) (token *UserInfoExt, err error) {
|
||||
func (a *Auther) Login(openid, password string) (err error) {
|
||||
if value := globals.Cacher.Get(openid); value != nil {
|
||||
if password == value.(string) {
|
||||
wxUser := &model.WeiXins{
|
||||
OpenID: openid,
|
||||
}
|
||||
if err = dao.GetEntity(nil, wxUser, "OpenID"); err == nil {
|
||||
globals.Cacher.Del(openid)
|
||||
return nil
|
||||
}
|
||||
// wxUser := &model.WeiXins{
|
||||
// OpenID: openid,
|
||||
// }
|
||||
// if err = dao.GetEntity(nil, wxUser, "OpenID"); err == nil {
|
||||
globals.Cacher.Del(openid)
|
||||
return nil
|
||||
// }
|
||||
}
|
||||
} else {
|
||||
err = ErrLoginFailed
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
package cms
|
||||
|
||||
import (
|
||||
"math"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"git.rosy.net.cn/baseapi/utils"
|
||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||
@@ -274,7 +272,7 @@ func UpdateStoreSkus(storeID int, skuBindInfos []*StoreSkuBindInfo, userName str
|
||||
SkuID: v.RealSkuID,
|
||||
SubStoreID: skuBindInfo.SubStoreID, // todo 这个应该从用户信息中自动获得
|
||||
UnitPrice: unitPrice,
|
||||
Price: calStoreSkuPrice(unitPrice, v.SpecQuality, v.SpecUnit),
|
||||
Price: jxutils.CaculateSkuPrice(unitPrice, v.SpecQuality, v.SpecUnit),
|
||||
Status: model.StoreSkuBindStatusDontSale, // 缺省不可售?
|
||||
}
|
||||
if inSkuBind != nil && inSkuBind.IsSale == 1 {
|
||||
@@ -319,7 +317,7 @@ func UpdateStoreSkus(storeID int, skuBindInfos []*StoreSkuBindInfo, userName str
|
||||
}
|
||||
if skuBindInfo.UnitPrice != 0 { // 这里是否需要加此条件限制
|
||||
skuBind.UnitPrice = unitPrice
|
||||
skuBind.Price = calStoreSkuPrice(unitPrice, v.SpecQuality, v.SpecUnit)
|
||||
skuBind.Price = jxutils.CaculateSkuPrice(unitPrice, v.SpecQuality, v.SpecUnit)
|
||||
setStoreSkuBindStatus(skuBind, model.SyncFlagPriceMask)
|
||||
needUpdate = true
|
||||
}
|
||||
@@ -356,14 +354,6 @@ func UpdateStoreSkus(storeID int, skuBindInfos []*StoreSkuBindInfo, userName str
|
||||
return int64(len(skuIDs)), err
|
||||
}
|
||||
|
||||
// 计算SKU价格,unitPrice为一斤的单价,specQuality为质量,单位为克
|
||||
func calStoreSkuPrice(unitPrice int, specQuality float32, specUnit string) int {
|
||||
if strings.ToLower(specUnit) == "kg" {
|
||||
specQuality *= 1000
|
||||
}
|
||||
return int(math.Round(float64(float32(unitPrice) * specQuality / 500)))
|
||||
}
|
||||
|
||||
func setStoreSkuBindStatus(skuBind *model.StoreSkuBind, status int8) {
|
||||
skuBind.JdSyncStatus |= status
|
||||
skuBind.ElmSyncStatus |= status
|
||||
|
||||
@@ -3,6 +3,7 @@ package cms
|
||||
import (
|
||||
"errors"
|
||||
|
||||
"git.rosy.net.cn/baseapi/utils"
|
||||
"git.rosy.net.cn/jx-callback/business/jxcallback/scheduler/basesch"
|
||||
"git.rosy.net.cn/jx-callback/business/jxutils/tasksch"
|
||||
"git.rosy.net.cn/jx-callback/business/model"
|
||||
@@ -47,10 +48,12 @@ func (v *VendorSync) SyncCategory(db *dao.DaoDB, categoryID int, isForce bool, u
|
||||
if err = dao.GetEntitiesByKV(db, &cats, cond, true); err == nil {
|
||||
tasksch.RunTask("", func(batchItemList []interface{}, params ...interface{}) (interface{}, error) {
|
||||
cat := batchItemList[0].(*model.SkuCategory)
|
||||
updateFields := []string{model.FieldJdSyncStatus}
|
||||
if (cat.JdSyncStatus & model.SyncFlagDeletedMask) != 0 { //删除
|
||||
err = multiStoresHandler.DeleteCategory(db, cat, userName)
|
||||
} else if (cat.JdSyncStatus&model.SyncFlagNewMask) != 0 || isForce { // 新增
|
||||
err = multiStoresHandler.CreateCategory(db, cat, userName)
|
||||
updateFields = append(updateFields, model.FieldJdID)
|
||||
} else if (cat.JdSyncStatus & model.SyncFlagModifiedMask) != 0 { // 修改
|
||||
err = multiStoresHandler.UpdateCategory(db, cat, userName)
|
||||
}
|
||||
@@ -92,6 +95,7 @@ func (v *VendorSync) SyncStore(db *dao.DaoDB, vendorID, storeID int, isForce boo
|
||||
}
|
||||
|
||||
func (v *VendorSync) SyncSku(db *dao.DaoDB, nameID, skuID int, isForce bool, userName string) (err error) {
|
||||
globals.SugarLogger.Debugf("SyncSku, nameID:%d, skuID:%d, isForce:%t, userName:%s", nameID, skuID, isForce, userName)
|
||||
err = v.LoopMultiStoresVendors(db, func(batchItemList []interface{}, params ...interface{}) (interface{}, error) {
|
||||
multiStoresHandler := batchItemList[0].(partner.IMultipleStoresHandler)
|
||||
var skuList []*model.Sku
|
||||
@@ -102,16 +106,17 @@ func (v *VendorSync) SyncSku(db *dao.DaoDB, nameID, skuID int, isForce bool, use
|
||||
if skuID != -1 {
|
||||
cond[model.FieldID] = skuID
|
||||
}
|
||||
if err = dao.GetEntitiesByKV(db, &skuList, cond, true); err == nil {
|
||||
tasksch.RunTask("", func(batchItemList []interface{}, params ...interface{}) (interface{}, error) {
|
||||
if err := dao.GetEntitiesByKV(db, &skuList, cond, true); err == nil {
|
||||
globals.SugarLogger.Debug(utils.Format4Output(skuList, false))
|
||||
task := tasksch.RunTask("SyncSku", func(batchItemList []interface{}, params ...interface{}) (interface{}, error) {
|
||||
sku := batchItemList[0].(*model.Sku)
|
||||
if (skuID == -1 || skuID == sku.ID) && (isForce || sku.JdSyncStatus != 0) {
|
||||
updateFields := []string{model.FieldJdSyncStatus}
|
||||
if sku.JdSyncStatus&model.SyncFlagDeletedMask != 0 { // 删除
|
||||
err = multiStoresHandler.DeleteSku(db, sku, userName)
|
||||
} else if sku.JdSyncStatus&model.SyncFlagNewMask != 0 { // 新增
|
||||
err = multiStoresHandler.CreateSku(db, sku, userName)
|
||||
updateFields = append(updateFields, model.FieldJdID)
|
||||
} else if sku.JdSyncStatus&model.SyncFlagNewMask != 0 { // 新增
|
||||
err = multiStoresHandler.DeleteSku(db, sku, userName)
|
||||
} else if sku.JdSyncStatus&model.SyncFlagModifiedMask != 0 { // 修改
|
||||
err = multiStoresHandler.UpdateSku(db, sku, userName)
|
||||
}
|
||||
@@ -122,6 +127,7 @@ func (v *VendorSync) SyncSku(db *dao.DaoDB, nameID, skuID int, isForce bool, use
|
||||
}
|
||||
return nil, err
|
||||
}, nil, len(skuList), 1, "", skuList)
|
||||
_, err = task.GetResult(0)
|
||||
}
|
||||
return nil, err
|
||||
})
|
||||
@@ -151,12 +157,15 @@ func (v *VendorSync) LoopStoreMap(db *dao.DaoDB, storeID int, handler tasksch.Wo
|
||||
}
|
||||
|
||||
func (v *VendorSync) LoopMultiStoresVendors(db *dao.DaoDB, handler tasksch.WorkFunc) (err error) {
|
||||
task := tasksch.RunTask("", handler, nil, len(MultiStoresVendorHandlers), 1, "", MultiStoresVendorHandlers)
|
||||
task := tasksch.RunTask("LoopMultiStoresVendors", handler, nil, len(MultiStoresVendorHandlers), 1, "", MultiStoresVendorHandlers)
|
||||
_, err = task.GetResult(0)
|
||||
return err
|
||||
}
|
||||
|
||||
func (v *VendorSync) LoopSingleStoreVendors(db *dao.DaoDB, taskName, userName string, handler tasksch.WorkFunc) (err error) {
|
||||
if taskName == "" {
|
||||
taskName = "LoopSingleStoreVendors"
|
||||
}
|
||||
var storeMaps []*model.StoreMap
|
||||
if err = dao.GetRows(db, &storeMaps, `
|
||||
SELECT *
|
||||
|
||||
@@ -99,3 +99,11 @@ func IntMap2List(intMap map[int]int) []int {
|
||||
}
|
||||
return retVal
|
||||
}
|
||||
|
||||
// 计算SKU价格,unitPrice为一斤的单价,specQuality为质量,单位为克
|
||||
func CaculateSkuPrice(unitPrice int, specQuality float32, specUnit string) int {
|
||||
if strings.ToLower(specUnit) == "kg" {
|
||||
specQuality *= 1000
|
||||
}
|
||||
return int(math.Round(float64(float32(unitPrice) * specQuality / 500)))
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ import (
|
||||
|
||||
"git.rosy.net.cn/baseapi/utils"
|
||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||
"git.rosy.net.cn/jx-callback/globals"
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -91,6 +92,7 @@ func RunTask(taskName string, worker WorkFunc, resultHandler ResultHandlerFunc,
|
||||
}
|
||||
task.C = task.finishChan
|
||||
go func() {
|
||||
globals.SugarLogger.Debugf("RunTask %s", taskName)
|
||||
for i := 0; i < parallelCount; i++ {
|
||||
go func() {
|
||||
var chanRetVal interface{}
|
||||
@@ -104,19 +106,25 @@ func RunTask(taskName string, worker WorkFunc, resultHandler ResultHandlerFunc,
|
||||
chanRetVal = retVal
|
||||
goto end
|
||||
} else {
|
||||
if result, err := worker(job, params...); err == nil {
|
||||
result, err := worker(job, params...)
|
||||
globals.SugarLogger.Debugf("RunTask %s, after call worker result:%v, err:%v", taskName, result, err)
|
||||
if err == nil {
|
||||
task.finishedOneJob(len(job))
|
||||
if result != nil {
|
||||
retVal = append(retVal, utils.Interface2Slice(result)...)
|
||||
}
|
||||
} else {
|
||||
chanRetVal = err
|
||||
task.Cancel()
|
||||
go func() {
|
||||
task.Cancel()
|
||||
}()
|
||||
goto end
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
end:
|
||||
// globals.SugarLogger.Debugf("RunTask %s, put to chann chanRetVal:%v", taskName, chanRetVal)
|
||||
task.subFinishChan <- chanRetVal
|
||||
}()
|
||||
}
|
||||
@@ -157,6 +165,7 @@ func RunTask(taskName string, worker WorkFunc, resultHandler ResultHandlerFunc,
|
||||
task.TerminatedAt = time.Now()
|
||||
|
||||
task.locker.Unlock()
|
||||
globals.SugarLogger.Debugf("RunTask %s, result:%v, err:%v", taskName, taskResult, taskErr)
|
||||
|
||||
close(task.finishChan)
|
||||
close(task.subFinishChan)
|
||||
|
||||
@@ -17,7 +17,7 @@ const (
|
||||
DefJdCategoryID = 20362
|
||||
)
|
||||
|
||||
type skuInfoExt struct {
|
||||
type tSkuInfoExt struct {
|
||||
model.SkuName
|
||||
Img string
|
||||
JdID int64 `orm:"column(jd_id)"` // 商家类别
|
||||
@@ -102,9 +102,9 @@ func (p *PurchaseHandler) ReorderCategories(db *dao.DaoDB, parentCatID int, user
|
||||
return err
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) cuSku(db *dao.DaoDB, sku *model.Sku, handler func(skuExt *skuInfoExt, skuName string, shopCategories []int64, addParams map[string]interface{}) (string, error)) (err error) {
|
||||
var otherInfo skuInfoExt
|
||||
err = dao.GetRow(nil, &otherInfo, `
|
||||
func (p *PurchaseHandler) cuSku(db *dao.DaoDB, sku *model.Sku, handler func(skuExt *tSkuInfoExt, price int, skuName string, shopCategories []int64, addParams map[string]interface{}) (string, error)) (err error) {
|
||||
var skuInfoExt tSkuInfoExt
|
||||
err = dao.GetRow(nil, &skuInfoExt, `
|
||||
SELECT t2.*, t3.jd_id, t3.jd_category_id, t4.jd_id sku_cat_id
|
||||
FROM sku t1
|
||||
JOIN sku_name t2 ON t1.name_id = t2.id
|
||||
@@ -113,20 +113,20 @@ func (p *PurchaseHandler) cuSku(db *dao.DaoDB, sku *model.Sku, handler func(skuE
|
||||
WHERE t1.id = ?
|
||||
`, sku.ID)
|
||||
if err == nil {
|
||||
shopCategories := []int64{otherInfo.JdID}
|
||||
if otherInfo.SkuCatID != 0 {
|
||||
shopCategories = append(shopCategories, otherInfo.SkuCatID)
|
||||
shopCategories := []int64{skuInfoExt.JdID}
|
||||
if skuInfoExt.SkuCatID != 0 {
|
||||
shopCategories = append(shopCategories, skuInfoExt.SkuCatID)
|
||||
}
|
||||
if otherInfo.JdCategoryID == 0 {
|
||||
otherInfo.JdCategoryID = DefJdCategoryID
|
||||
if skuInfoExt.JdCategoryID == 0 {
|
||||
skuInfoExt.JdCategoryID = DefJdCategoryID
|
||||
}
|
||||
if otherInfo.BrandID == 0 {
|
||||
otherInfo.BrandID = DefBrandID
|
||||
if skuInfoExt.BrandID == 0 {
|
||||
skuInfoExt.BrandID = DefBrandID
|
||||
}
|
||||
addParams := map[string]interface{}{}
|
||||
|
||||
if otherInfo.IsGlobal == 0 { //如果不是全国可售,要查可售区域
|
||||
sellPlaces, err2 := dao.GetSellCities(db, otherInfo.ID, model.VendorIDJD)
|
||||
if skuInfoExt.IsGlobal == 0 { //如果不是全国可售,要查可售区域
|
||||
sellPlaces, err2 := dao.GetSellCities(db, skuInfoExt.ID, model.VendorIDJD)
|
||||
if err = err2; err == nil && len(sellPlaces) > 0 {
|
||||
sellCites := make([]int, len(sellPlaces))
|
||||
for k, v := range sellPlaces {
|
||||
@@ -136,9 +136,10 @@ func (p *PurchaseHandler) cuSku(db *dao.DaoDB, sku *model.Sku, handler func(skuE
|
||||
}
|
||||
}
|
||||
if err == nil {
|
||||
skuName := jxutils.ComposeSkuName(otherInfo.Prefix, otherInfo.Name, otherInfo.Comment, otherInfo.Unit, sku.SpecQuality, sku.SpecUnit, 0)
|
||||
globals.SugarLogger.Debug(skuName)
|
||||
result, err2 := handler(&otherInfo, skuName, shopCategories, addParams)
|
||||
skuName := jxutils.ComposeSkuName(skuInfoExt.Prefix, skuInfoExt.Name, skuInfoExt.Comment, skuInfoExt.Unit, sku.SpecQuality, sku.SpecUnit, 0)
|
||||
globals.SugarLogger.Debug(utils.Format4Output(skuInfoExt, false), utils.Format4Output(sku, false))
|
||||
skuPrice := jxutils.CaculateSkuPrice(skuInfoExt.Price, sku.SpecQuality, sku.SpecUnit)
|
||||
result, err2 := handler(&skuInfoExt, skuPrice, skuName, shopCategories, addParams)
|
||||
if err = err2; err == nil {
|
||||
if jdID := utils.Str2Int64WithDefault(result, 0); jdID != 0 {
|
||||
sku.JdID = jdID
|
||||
@@ -150,9 +151,9 @@ func (p *PurchaseHandler) cuSku(db *dao.DaoDB, sku *model.Sku, handler func(skuE
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) CreateSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error) {
|
||||
return p.cuSku(db, sku, func(skuExt *skuInfoExt, skuName string, shopCategories []int64, addParams map[string]interface{}) (vendorSkuID string, err error) {
|
||||
return p.cuSku(db, sku, func(skuExt *tSkuInfoExt, price int, skuName string, shopCategories []int64, addParams map[string]interface{}) (vendorSkuID string, err error) {
|
||||
if globals.EnableStoreWrite {
|
||||
vendorSkuID, err = api.JdAPI.AddSku(utils.Int2Str(sku.ID), skuExt.JdCategoryID, shopCategories, skuExt.BrandID, skuName, skuExt.Price, jxutils.IntWeight2Float(sku.Weight), []string{skuExt.Img}, 1, true, addParams)
|
||||
vendorSkuID, err = api.JdAPI.AddSku(utils.Int2Str(sku.ID), skuExt.JdCategoryID, shopCategories, skuExt.BrandID, skuName, price, jxutils.IntWeight2Float(sku.Weight), []string{skuExt.Img}, 1, true, addParams)
|
||||
}
|
||||
return vendorSkuID, err
|
||||
})
|
||||
@@ -225,7 +226,7 @@ func (p *PurchaseHandler) ReadSku(vendorSkuID string) (skuNameExt *model.SkuName
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) UpdateSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error) {
|
||||
return p.cuSku(db, sku, func(skuExt *skuInfoExt, skuName string, shopCategories []int64, addParams map[string]interface{}) (vendorSkuID string, err error) {
|
||||
return p.cuSku(db, sku, func(skuExt *tSkuInfoExt, price int, skuName string, shopCategories []int64, addParams map[string]interface{}) (vendorSkuID string, err error) {
|
||||
params := utils.MergeMaps(addParams)
|
||||
params["categoryId"] = skuExt.JdCategoryID
|
||||
params["shopCategories"] = shopCategories
|
||||
|
||||
@@ -23,12 +23,13 @@ func TestCreateSku(t *testing.T) {
|
||||
|
||||
func TestUpdateSku(t *testing.T) {
|
||||
// t.Log(beego.BConfig.RunMode)
|
||||
db := dao.GetDB()
|
||||
skuID := 21741
|
||||
sku := &model.Sku{}
|
||||
sku.ID = skuID
|
||||
dao.GetEntity(nil, sku)
|
||||
dao.GetEntity(db, sku)
|
||||
|
||||
err := new(PurchaseHandler).UpdateSku(sku, "autotest")
|
||||
err := new(PurchaseHandler).UpdateSku(db, sku, "autotest")
|
||||
if err != nil {
|
||||
t.Fatal(err.Error())
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import (
|
||||
"testing"
|
||||
|
||||
"git.rosy.net.cn/baseapi/utils"
|
||||
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -27,13 +28,13 @@ func TestUpdateStore(t *testing.T) {
|
||||
// result := &model.Store{}
|
||||
// result.ID = 100164
|
||||
// err := dao.GetEntity(nil, result)
|
||||
|
||||
db := dao.GetDB()
|
||||
if err != nil {
|
||||
t.Fatal(err.Error())
|
||||
}
|
||||
result.Name += "h"
|
||||
newName := result.Name
|
||||
err = handler.UpdateStore(TestStoreNo, "autotest")
|
||||
err = handler.UpdateStore(db, TestStoreNo, "autotest")
|
||||
if err != nil {
|
||||
t.Fatal(err.Error())
|
||||
}
|
||||
@@ -46,7 +47,7 @@ func TestUpdateStore(t *testing.T) {
|
||||
|
||||
// restore
|
||||
result.Name = strings.Trim(result.Name, "h")
|
||||
err = handler.UpdateStore(TestStoreNo, "autotest")
|
||||
err = handler.UpdateStore(db, TestStoreNo, "autotest")
|
||||
if err != nil {
|
||||
t.Fatal(err.Error())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user