- don't check weixin exist after login in.

This commit is contained in:
gazebo
2018-09-21 15:35:02 +08:00
parent edd5bfed26
commit 4192e9c635
8 changed files with 69 additions and 50 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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 *

View File

@@ -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)))
}

View File

@@ -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)

View File

@@ -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

View File

@@ -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())
}

View File

@@ -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())
}