Accept Merge Request #185: (su -> mark)

Merge Request: 分账修改
Created By: @苏尹岚
Accepted By: @苏尹岚
URL: https://rosydev.coding.net/p/jx-callback/d/jx-callback/git/merge/185
This commit is contained in:
苏尹岚
2020-02-13 16:27:12 +08:00
19 changed files with 417 additions and 211 deletions

View File

@@ -1443,3 +1443,58 @@ func DeleteSkuNameExPrefixOverdue(db *dao.DaoDB) (err error) {
_, err = dao.DeleteSkuNameExPrefixOverdue(db)
return err
}
func SumExianDaDepot(ctx *jxcontext.Context) (err error) {
db := dao.GetDB()
result, err := api.EbaiAPI.GetExianDaSkuDepot()
for _, v := range result {
skus, err := api.EbaiAPI.GetExianDaSku(utils.Str2Int64(v.ElemeGoodsID))
if err != nil {
return err
}
dao.Begin(db)
defer func() {
if r := recover(); r != nil {
dao.Rollback(db)
panic(r)
}
}()
prefix, _, _, specUnit, unit, specQuality := jxutils.SplitSkuName(v.GoodsName)
skuName := &model.SkuName{
Prefix: prefix,
Name: v.GoodsName,
CategoryID: skus.CategoryIDThird,
IsGlobal: 1,
Unit: unit,
SpecQuality: specQuality,
SpecUnit: specUnit,
Price: 100,
Img: v.ImageURL,
Upc: &v.UpcID,
Status: model.SkuStatusNormal,
}
dao.WrapAddIDCULDEntity(skuName, ctx.GetUserName())
err = dao.CreateEntity(db, skuName)
if err != nil {
dao.Rollback(db)
return err
}
sku := &model.Sku{
NameID: skuName.ID,
SpecQuality: specQuality,
SpecUnit: specUnit,
Weight: int(utils.Str2Int64(skus.Weight)),
Status: model.SkuStatusNormal,
ExdSkuID: v.ElemeGoodsID,
ExdCategoryThirdID: skus.CategoryIDThird,
}
dao.WrapAddIDCULDEntity(sku, ctx.GetUserName())
err = dao.CreateEntity(db, sku)
if err != nil {
dao.Rollback(db)
return err
}
dao.Commit(db)
}
return err
}

View File

@@ -1204,7 +1204,9 @@ func getSkuSaleStatus(inSkuBind *StoreSkuBindSkuInfo, skuNameBindInfo *StoreSkuB
}
func AddEventDetail(db *dao.DaoDB, ctx *jxcontext.Context, operateType, thingID, thingType, storeID int, beforeData, afterData string) (err error) {
if ctx.GetUserName() == "jxadmin" {
url := ctx.GetRequest().URL.Path
apiFunction := url[strings.LastIndex(url, "/")+1 : len(url)]
if ctx.GetUserName() == "jxadmin" && !strings.Contains(apiFunction, "AutoPayForPopluarMan") {
return err
}
operateEventDetail := &model.OperateEventDetail{
@@ -3539,7 +3541,7 @@ func SendSeckillSkusCountMsg(ctx *jxcontext.Context, vendorIDs []int, isAsync, i
return hint, err
}
func RefreshJxPriceByVendor(ctx *jxcontext.Context, jdStoreSkus []*JdStoreSkus, isAsync, isContinueWhenError bool) (hint string, err error) {
func RefreshJxPriceByVendor(ctx *jxcontext.Context, jdStoreSkus []*JdStoreSkus, vendorID int, isAsync, isContinueWhenError bool) (hint string, err error) {
var (
db = dao.GetDB()
jdMap = make(map[int][]*JdStoreSkus)
@@ -3549,67 +3551,111 @@ func RefreshJxPriceByVendor(ctx *jxcontext.Context, jdStoreSkus []*JdStoreSkus,
taskSeqFunc := func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
switch step {
case 0:
for _, v := range jdStoreSkus {
var (
pricePercentagePack []*model.PricePercentageItem
cats []*model.ThingMap
skus []*model.SkuAndName
)
sql := `
SELECT t1.*
FROM thing_map t1
WHERE t1.deleted_at = ? AND t1.thing_type = ?
AND t1.vendor_thing_id = ?
`
sqlParams := []interface{}{
utils.DefaultTimeValue,
model.ThingTypeSku,
v.JdSkuID,
}
err = dao.GetRows(db, &cats, sql, sqlParams...)
if len(cats) > 0 {
skus, err = dao.GetSkus(db, []int{int(cats[0].ThingID)}, nil, nil, nil)
if err != nil || len(skus) == 0 {
return result, fmt.Errorf("没有找到该京西skuID,京西skuID :[%v]", cats[0].ThingID)
if vendorID == model.VendorIDJD {
for _, v := range jdStoreSkus {
var (
pricePercentagePack []*model.PricePercentageItem
cats []*model.ThingMap
skus []*model.SkuAndName
)
sql := `
SELECT t1.*
FROM thing_map t1
WHERE t1.deleted_at = ? AND t1.thing_type = ?
AND t1.vendor_thing_id = ?
`
sqlParams := []interface{}{
utils.DefaultTimeValue,
model.ThingTypeSku,
v.JdSkuID,
}
} else {
return result, fmt.Errorf("没有找到该京东skuID对应的京西skuID,京东skuID :[%v]", v.JdSkuID)
}
store, err := dao.GetStoreDetailByVendorStoreID(db, utils.Int2Str(v.JdStoreID), model.VendorIDJD)
if err != nil || store == nil {
return result, fmt.Errorf("没有找到该京东门店对应的京西门店!,京东门店ID :[%v]", v.JdStoreID)
}
err = jxutils.Strings2Objs(store.PricePercentagePackStr, &pricePercentagePack)
jxPrice := jxutils.CaculateJxPriceByPricePack(pricePercentagePack, 0, v.Price)
jdMap[store.ID] = append(jdMap[store.ID], &JdStoreSkus{
JdSkuID: skus[0].NameID,
Price: jxPrice,
})
}
for k, v := range jdMap {
var skuNameMap = make(map[int]int)
for _, vv := range v {
if skuNameMap[vv.JdSkuID] != 0 {
if skuNameMap[vv.JdSkuID] > vv.Price {
skuNameMap[vv.JdSkuID] = vv.Price
err = dao.GetRows(db, &cats, sql, sqlParams...)
if len(cats) > 0 {
skus, err = dao.GetSkus(db, []int{int(cats[0].ThingID)}, nil, nil, nil)
if err != nil || len(skus) == 0 {
return result, fmt.Errorf("没有找到该京西skuID,京西skuID :[%v]", cats[0].ThingID)
}
} else {
skuNameMap[vv.JdSkuID] = vv.Price
return result, fmt.Errorf("没有找到该京东skuID对应的京西skuID,京东skuID :[%v]", v.JdSkuID)
}
store, err := dao.GetStoreDetailByVendorStoreID(db, utils.Int2Str(v.JdStoreID), vendorID)
if err != nil || store == nil {
return result, fmt.Errorf("没有找到该京东门店对应的京西门店!,京东门店ID :[%v]", v.JdStoreID)
}
err = jxutils.Strings2Objs(store.PricePercentagePackStr, &pricePercentagePack)
jxPrice := jxutils.CaculateJxPriceByPricePack(pricePercentagePack, 0, v.Price)
jdMap[store.ID] = append(jdMap[store.ID], &JdStoreSkus{
JdSkuID: skus[0].NameID,
Price: jxPrice,
})
}
for k, v := range jdMap {
var skuNameMap = make(map[int]int)
for _, vv := range v {
if skuNameMap[vv.JdSkuID] != 0 {
if skuNameMap[vv.JdSkuID] > vv.Price {
skuNameMap[vv.JdSkuID] = vv.Price
}
} else {
skuNameMap[vv.JdSkuID] = vv.Price
}
}
jxMap[k] = skuNameMap
}
for k, v := range jxMap {
for kk, vv := range v {
result, err := dao.GetStoreSkuBindByNameID(db, k, kk, model.SkuStatusNormal)
if len(result) > 0 && err == nil {
if result[0].UnitPrice > vv {
storeSkuBindInfo := &StoreSkuBindInfo{
StoreID: k,
NameID: kk,
UnitPrice: vv,
}
param = append(param, storeSkuBindInfo)
}
}
}
}
jxMap[k] = skuNameMap
}
for k, v := range jxMap {
for kk, vv := range v {
result, err := dao.GetStoreSkuBindByNameID(db, k, kk, model.SkuStatusNormal)
if len(result) > 0 && err == nil {
if result[0].UnitPrice > vv {
storeSkuBindInfo := &StoreSkuBindInfo{
StoreID: k,
NameID: kk,
UnitPrice: vv,
} else if vendorID == model.VendorIDMTWM {
for _, v := range jdStoreSkus {
var (
pricePercentagePack []*model.PricePercentageItem
)
skus, _ := dao.GetSkus(db, []int{v.JdSkuID}, nil, nil, nil)
store, _ := dao.GetStoreDetail(db, v.JdStoreID, vendorID)
err = jxutils.Strings2Objs(store.PricePercentagePackStr, &pricePercentagePack)
jxPrice := jxutils.CaculateJxPriceByPricePack(pricePercentagePack, 0, v.Price)
jdMap[v.JdStoreID] = append(jdMap[v.JdStoreID], &JdStoreSkus{
JdSkuID: skus[0].NameID,
Price: jxPrice,
})
}
for k, v := range jdMap {
var skuNameMap = make(map[int]int)
for _, vv := range v {
if skuNameMap[vv.JdSkuID] != 0 {
if skuNameMap[vv.JdSkuID] > vv.Price {
skuNameMap[vv.JdSkuID] = vv.Price
}
} else {
skuNameMap[vv.JdSkuID] = vv.Price
}
}
jxMap[k] = skuNameMap
}
for k, v := range jxMap {
for kk, vv := range v {
result, err := dao.GetStoreSkuBindByNameID(db, k, kk, model.SkuStatusNormal)
if len(result) > 0 && err == nil {
if result[0].UnitPrice > vv {
storeSkuBindInfo := &StoreSkuBindInfo{
StoreID: k,
NameID: kk,
UnitPrice: vv,
}
param = append(param, storeSkuBindInfo)
}
param = append(param, storeSkuBindInfo)
}
}
}

View File

@@ -414,7 +414,7 @@ func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, causeFlag
}
} else {
if sku.MergedStatus == model.SkuStatusNormal {
if dao.IsVendorThingIDEmpty(sku.VendorCatID) {
if dao.IsVendorThingIDEmpty(sku.VendorCatID) && !strings.Contains(sku.StoreName, model.ExdStoreName) {
globals.SugarLogger.Warnf("syncStoreSkuNew 创建门店:%d商品:%d但没有平台分类ID", storeID, sku.SkuID)
} else {
createList = append(createList, sku)

View File

@@ -8,8 +8,6 @@ import (
"sync"
"time"
"git.rosy.net.cn/baseapi/platformapi/wxpayapi"
"git.rosy.net.cn/jx-callback/business/partner/purchase/jd"
"git.rosy.net.cn/jx-callback/globals/api/apimanager"
@@ -380,6 +378,7 @@ func CreateUser(user *model.User, creatorName string) (err error) {
dao.WrapAddIDCULDEntity(user, creatorName)
user.UserID = utils.GetUUID()
user.Status = model.UserStatusNormal
user.DividePercentage = 5
return dao.CreateEntity(nil, user)
}
@@ -993,61 +992,61 @@ func UpdateUserWxNoAndPercent(user *model.User, isReceiver bool) (num int64, err
dao.Rollback(db)
}
if isReceiver {
param := &wxpayapi.ProfitSharingReceiverParam{
Receiver: wxpayapi.CData(`{
"type":"` + wxpayapi.AccountTypeOpen + `",
"account":"` + auth[0].AuthID + `",
"relation_type":" ` + wxpayapi.Relation + `"
}`),
}
_, err := api.WxpayAPI.AddProfitSharingReceiver(param)
if err != nil {
return 0, err
} else {
user2.IsReceiver = 1
num3, err := dao.UpdateEntity(db, user2, "IsReceiver")
num += num3
if err != nil {
dao.Rollback(db)
}
}
// param := &wxpayapi.ProfitSharingReceiverParam{
// Receiver: wxpayapi.CData(`{
// "type":"` + wxpayapi.AccountTypeOpen + `",
// "account":"` + auth[0].AuthID + `",
// "relation_type":" ` + wxpayapi.Relation + `"
// }`),
// }
// _, err := api.WxpayAPI.AddProfitSharingReceiver(param)
// if err != nil {
// return 0, err
// } else {
// user2.IsReceiver = 1
// num3, err := dao.UpdateEntity(db, user2, "IsReceiver")
// num += num3
// if err != nil {
// dao.Rollback(db)
// }
// }
}
dao.Commit(db)
return num, err
}
func DeleteProfitSharingReceiver(ctx *jxcontext.Context, userID string) (err error) {
db := dao.GetDB()
auth, err := dao.GetUserBindAuthInfo(db, userID, model.AuthBindTypeAuth, []string{"weixinmini"}, "", "")
if len(auth) == 0 {
return fmt.Errorf("未找到此用户的微信验证方式用户ID[%v]\n", userID)
}
dao.Begin(db)
defer func() {
if r := recover(); r != nil || err != nil {
dao.Rollback(db)
if r != nil {
panic(r)
}
}
}()
param := &wxpayapi.ProfitSharingReceiverParam{
Receiver: wxpayapi.CData(`{
"type":"` + wxpayapi.AccountTypeOpen + `",
"account":"` + auth[0].AuthID + `"
}`),
}
_, err = api.WxpayAPI.DeleteProfitSharingReceiver(param)
if err != nil {
return err
} else {
user2, err := dao.GetUserByID(db, "user_id", userID)
user2.IsReceiver = 0
_, err = dao.UpdateEntity(db, user2, "IsReceiver")
if err != nil {
dao.Rollback(db)
}
}
dao.Commit(db)
// db := dao.GetDB()
// auth, err := dao.GetUserBindAuthInfo(db, userID, model.AuthBindTypeAuth, []string{"weixinmini"}, "", "")
// if len(auth) == 0 {
// return fmt.Errorf("未找到此用户的微信验证方式用户ID[%v]\n", userID)
// }
// dao.Begin(db)
// defer func() {
// if r := recover(); r != nil || err != nil {
// dao.Rollback(db)
// if r != nil {
// panic(r)
// }
// }
// }()
// param := &wxpayapi.ProfitSharingReceiverParam{
// Receiver: wxpayapi.CData(`{
// "type":"` + wxpayapi.AccountTypeOpen + `",
// "account":"` + auth[0].AuthID + `"
// }`),
// }
// _, err = api.WxpayAPI.DeleteProfitSharingReceiver(param)
// if err != nil {
// return err
// } else {
// user2, err := dao.GetUserByID(db, "user_id", userID)
// user2.IsReceiver = 0
// _, err = dao.UpdateEntity(db, user2, "IsReceiver")
// if err != nil {
// dao.Rollback(db)
// }
// }
// dao.Commit(db)
return err
}