Merge remote-tracking branch 'origin/jdshop' into jxact
This commit is contained in:
@@ -275,9 +275,9 @@ func LoginInternal(ctx *Context, authType, authID, authIDType, authSecret string
|
|||||||
userProvider.UpdateLastLogin(user.GetID(), authType, ctx.GetRealRemoteIP())
|
userProvider.UpdateLastLogin(user.GetID(), authType, ctx.GetRealRemoteIP())
|
||||||
}
|
}
|
||||||
//如果是小程序
|
//如果是小程序
|
||||||
if authType == "weixinmini" {
|
if authType == "weixinmini" || authType == "weixinapp" {
|
||||||
appID := strings.Split(authSecret, ",")[0]
|
appID := strings.Split(authSecret, ",")[0]
|
||||||
if appID == "wx08a5c2a8581414ff" || appID == "wx2d6949f724b2541d" { //菜市或者果园
|
if appID == "wx08a5c2a8581414ff" || appID == "wx2d6949f724b2541d" || appID == "wx18111a41fd17f24f" { //菜市或者果园
|
||||||
if user != nil {
|
if user != nil {
|
||||||
binds, err := dao.GetUserBindAuthInfo(dao.GetDB(), user.GetID(), 0, nil, "", "", "wx2bb99eb5d2c9b82c")
|
binds, err := dao.GetUserBindAuthInfo(dao.GetDB(), user.GetID(), 0, nil, "", "", "wx2bb99eb5d2c9b82c")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ const (
|
|||||||
AuthTypeWeixin = "wxqrcode" // 微信扫码
|
AuthTypeWeixin = "wxqrcode" // 微信扫码
|
||||||
AuthTypeMP = "weixinsns" // 公众号
|
AuthTypeMP = "weixinsns" // 公众号
|
||||||
AuthTypeWXNative = "wxnative" // 微信APP
|
AuthTypeWXNative = "wxnative" // 微信APP
|
||||||
|
AuthTypeWxApp = "weixinapp" //app微信登录
|
||||||
)
|
)
|
||||||
|
|
||||||
type Auther struct {
|
type Auther struct {
|
||||||
@@ -26,6 +27,7 @@ var (
|
|||||||
AutherObjWX *Auther
|
AutherObjWX *Auther
|
||||||
AutherObjMP *Auther
|
AutherObjMP *Auther
|
||||||
AutherObjNative *Auther
|
AutherObjNative *Auther
|
||||||
|
AutherObjApp *Auther
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@@ -47,6 +49,11 @@ func init() {
|
|||||||
authType: AuthTypeWXNative,
|
authType: AuthTypeWXNative,
|
||||||
}
|
}
|
||||||
auth2.RegisterAuther(AuthTypeWXNative, AutherObjNative)
|
auth2.RegisterAuther(AuthTypeWXNative, AutherObjNative)
|
||||||
|
|
||||||
|
AutherObjApp = &Auther{
|
||||||
|
authType: AuthTypeWxApp,
|
||||||
|
}
|
||||||
|
auth2.RegisterAuther(AuthTypeWxApp, AutherObjApp)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *Auther) VerifySecret(id, secret string) (authBindEx *auth2.AuthBindEx, err error) {
|
func (a *Auther) VerifySecret(id, secret string) (authBindEx *auth2.AuthBindEx, err error) {
|
||||||
@@ -71,7 +78,7 @@ func (a *Auther) VerifySecret(id, secret string) (authBindEx *auth2.AuthBindEx,
|
|||||||
if err == nil {
|
if err == nil {
|
||||||
wxUserinfo, err2 := a.getAPI().SNSGetUserInfo(accessToken, openID)
|
wxUserinfo, err2 := a.getAPI().SNSGetUserInfo(accessToken, openID)
|
||||||
if err = err2; err == nil {
|
if err = err2; err == nil {
|
||||||
if authBindEx, err = a.UnionFindAuthBind(a.authType, a.getAPI().GetAppID(), []string{AuthTypeWeixin, AuthTypeMP, AuthTypeMini, AuthTypeWXNative}, wxUserinfo.OpenID, wxUserinfo.UnionID, wxUserinfo); err == nil {
|
if authBindEx, err = a.UnionFindAuthBind(a.authType, a.getAPI().GetAppID(), []string{AuthTypeWeixin, AuthTypeMP, AuthTypeMini, AuthTypeWXNative, AuthTypeWxApp}, wxUserinfo.OpenID, wxUserinfo.UnionID, wxUserinfo); err == nil {
|
||||||
authBindEx.UserHint = &auth2.UserBasic{
|
authBindEx.UserHint = &auth2.UserBasic{
|
||||||
Name: wxUserinfo.NickName,
|
Name: wxUserinfo.NickName,
|
||||||
Avatar: wxUserinfo.HeadImgURL,
|
Avatar: wxUserinfo.HeadImgURL,
|
||||||
@@ -86,6 +93,9 @@ func (a *Auther) getAPI() *weixinapi.API {
|
|||||||
if a.authType == AuthTypeWeixin {
|
if a.authType == AuthTypeWeixin {
|
||||||
return api.WeixinPageAPI
|
return api.WeixinPageAPI
|
||||||
}
|
}
|
||||||
|
if a.authType == AuthTypeWxApp {
|
||||||
|
return api.WeixinApp
|
||||||
|
}
|
||||||
return api.WeixinAPI
|
return api.WeixinAPI
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -92,9 +92,6 @@ func getWxApp(appID string) (miniApi *weixinapi.API) {
|
|||||||
if len(appID) > 0 && appID == api.WeixinMiniAppID2 {
|
if len(appID) > 0 && appID == api.WeixinMiniAppID2 {
|
||||||
miniApi = api.WeixinMiniAPI2
|
miniApi = api.WeixinMiniAPI2
|
||||||
}
|
}
|
||||||
if len(appID) > 0 && appID == api.WeixinMiniAppID3 {
|
|
||||||
miniApi = api.WeixinMiniAPI3
|
|
||||||
}
|
|
||||||
return miniApi
|
return miniApi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -215,7 +215,7 @@ func (c *OrderManager) OnOrderStatusChanged(vendorOrgCode string, orderStatus *m
|
|||||||
// }
|
// }
|
||||||
// } else {
|
// } else {
|
||||||
if order.NewEarningPrice == 0 || order.NewEarningPrice != (order.TotalShopMoney-waybill.DesiredFee)*int64(100-store.PayPercentage/2)/int64(100) {
|
if order.NewEarningPrice == 0 || order.NewEarningPrice != (order.TotalShopMoney-waybill.DesiredFee)*int64(100-store.PayPercentage/2)/int64(100) {
|
||||||
order.NewEarningPrice = (order.TotalShopMoney - waybill.DesiredFee) * int64(100-store.PayPercentage/2) / int64(100)
|
order.NewEarningPrice = order.TotalShopMoney*int64(100-store.PayPercentage/2)/int64(100) - waybill.DesiredFee
|
||||||
}
|
}
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
@@ -361,12 +361,16 @@ func ModifyOrderSkusStock(db *dao.DaoDB, order *model.GoodsOrder, isAdd bool) (e
|
|||||||
for _, sku := range skus {
|
for _, sku := range skus {
|
||||||
storeSkus, _ := dao.GetStoresSkusInfo(db, []int{jxutils.GetSaleStoreIDFromOrder(order)}, []int{sku.SkuID})
|
storeSkus, _ := dao.GetStoresSkusInfo(db, []int{jxutils.GetSaleStoreIDFromOrder(order)}, []int{sku.SkuID})
|
||||||
if len(storeSkus) == 0 {
|
if len(storeSkus) == 0 {
|
||||||
globals.SugarLogger.Warnf("此订单商品没得storsku,%v,%v", order.VendorOrderID, sku.SkuID)
|
if !isAdd {
|
||||||
|
globals.SugarLogger.Warnf("此订单商品没得storsku,%v,%v", order.VendorOrderID, sku.SkuID)
|
||||||
|
}
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
storeSku, stock := storeSkus[0], 0
|
storeSku, stock := storeSkus[0], 0
|
||||||
if storeSku.Stock == 0 {
|
if storeSku.Stock == 0 {
|
||||||
globals.SugarLogger.Warnf("此订单商品库存为0,%v,%v", order.VendorOrderID, sku.SkuID)
|
if !isAdd {
|
||||||
|
globals.SugarLogger.Warnf("此订单商品库存为0,%v,%v", order.VendorOrderID, sku.SkuID)
|
||||||
|
}
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if isAdd {
|
if isAdd {
|
||||||
@@ -1486,8 +1490,9 @@ func SendJdwlForJdsOrder(ctx *jxcontext.Context, vendorOrderID string) (err erro
|
|||||||
waybill = v
|
waybill = v
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
handler := partner.DeliveryPlatformHandlers[waybill.WaybillVendorID]
|
if handler := partner.GetDeliveryPlatformFromVendorID(model.VendorIDJDWL); handler != nil {
|
||||||
err = handler.Handler.CancelWaybill(waybill, 0, "订单已发送其他物流")
|
err = handler.Handler.CancelWaybill(waybill, 0, "订单已发送其他物流")
|
||||||
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -1543,12 +1548,13 @@ func SendJdwlForJdsOrder(ctx *jxcontext.Context, vendorOrderID string) (err erro
|
|||||||
dao.UpdateEntity(db, order, "EclpOutID")
|
dao.UpdateEntity(db, order, "EclpOutID")
|
||||||
vendorWaybillID = eclpSoNo
|
vendorWaybillID = eclpSoNo
|
||||||
} else {
|
} else {
|
||||||
handler := partner.DeliveryPlatformHandlers[model.VendorIDJDWL]
|
if handler := partner.GetDeliveryPlatformFromVendorID(model.VendorIDJDWL); handler != nil {
|
||||||
waybill2, err := handler.Handler.CreateWaybill(order, 0)
|
waybill2, err := handler.Handler.CreateWaybill(order, 0)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
}
|
||||||
|
vendorWaybillID = waybill2.VendorWaybillID
|
||||||
}
|
}
|
||||||
vendorWaybillID = waybill2.VendorWaybillID
|
|
||||||
}
|
}
|
||||||
jdshop.CurPurchaseHandler.OrderExport(ctx, vendorOrderID, vendorWaybillID, false)
|
jdshop.CurPurchaseHandler.OrderExport(ctx, vendorOrderID, vendorWaybillID, false)
|
||||||
return err
|
return err
|
||||||
|
|||||||
@@ -736,8 +736,31 @@ func (s *DefScheduler) createWaybillOn3rdProviders(savedOrderInfo *WatchOrderInf
|
|||||||
// if order.VendorID == model.VendorIDJX {
|
// if order.VendorID == model.VendorIDJX {
|
||||||
// excludeVendorIDs = append(excludeVendorIDs, model.VendorIDMTPS)
|
// excludeVendorIDs = append(excludeVendorIDs, model.VendorIDMTPS)
|
||||||
// }
|
// }
|
||||||
if _, err = s.CreateWaybillOnProviders4SavedOrder(jxcontext.AdminCtx, savedOrderInfo, nil, excludeVendorIDs, false, maxDeliveryFee); err == nil {
|
if savedOrderInfo != nil {
|
||||||
savedOrderInfo.retryCount++
|
//TODO 2020-07-21 发单时间要在门店的营业时间内
|
||||||
|
if savedOrderInfo.storeDetail != nil {
|
||||||
|
if savedOrderInfo.storeDetail.OpenTime1 != 0 && savedOrderInfo.storeDetail.CloseTime1 != 0 {
|
||||||
|
time1 := jxutils.JxOperationTime2TimeByDate(savedOrderInfo.storeDetail.OpenTime1, time.Now())
|
||||||
|
time2 := jxutils.JxOperationTime2TimeByDate(savedOrderInfo.storeDetail.CloseTime1, time.Now())
|
||||||
|
if time.Now().Sub(time1) < 0 || time.Now().Sub(time2) > 0 {
|
||||||
|
if savedOrderInfo.storeDetail.OpenTime2 != 0 && savedOrderInfo.storeDetail.CloseTime2 != 0 {
|
||||||
|
time3 := jxutils.JxOperationTime2TimeByDate(savedOrderInfo.storeDetail.OpenTime2, time.Now())
|
||||||
|
time4 := jxutils.JxOperationTime2TimeByDate(savedOrderInfo.storeDetail.CloseTime2, time.Now())
|
||||||
|
if time.Now().Sub(time3) < 0 || time.Now().Sub(time4) > 0 {
|
||||||
|
err = fmt.Errorf("不在门店营业时间范围内!")
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
err = fmt.Errorf("不在门店营业时间范围内!")
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if err == nil {
|
||||||
|
if _, err = s.CreateWaybillOnProviders4SavedOrder(jxcontext.AdminCtx, savedOrderInfo, nil, excludeVendorIDs, false, maxDeliveryFee); err == nil {
|
||||||
|
savedOrderInfo.retryCount++
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
errMsg := fmt.Sprintf("订单:%s已经自动创建过了%d次运单,仍然无法配送,请关注!", order.VendorOrderID, savedOrderInfo.retryCount)
|
errMsg := fmt.Sprintf("订单:%s已经自动创建过了%d次运单,仍然无法配送,请关注!", order.VendorOrderID, savedOrderInfo.retryCount)
|
||||||
|
|||||||
@@ -87,28 +87,6 @@ func (s *DefScheduler) canOrderCreateWaybillNormally(order *model.GoodsOrder, sa
|
|||||||
} else if model.IsOrderHaveWaybill(order) {
|
} else if model.IsOrderHaveWaybill(order) {
|
||||||
err = fmt.Errorf("当前订单%s已经有了有效的承运人%s了", order.VendorOrderID, jxutils.GetVendorName(order.WaybillVendorID))
|
err = fmt.Errorf("当前订单%s已经有了有效的承运人%s了", order.VendorOrderID, jxutils.GetVendorName(order.WaybillVendorID))
|
||||||
}
|
}
|
||||||
if savedOrderInfo != nil {
|
|
||||||
//TODO 2020-07-21 发单时间要在门店的营业时间内
|
|
||||||
if savedOrderInfo.storeDetail != nil {
|
|
||||||
if savedOrderInfo.storeDetail.OpenTime1 != 0 && savedOrderInfo.storeDetail.CloseTime1 != 0 {
|
|
||||||
time1 := jxutils.JxOperationTime2TimeByDate(savedOrderInfo.storeDetail.OpenTime1, time.Now())
|
|
||||||
time2 := jxutils.JxOperationTime2TimeByDate(savedOrderInfo.storeDetail.CloseTime1, time.Now())
|
|
||||||
if time.Now().Sub(time1) < 0 || time.Now().Sub(time2) > 0 {
|
|
||||||
if savedOrderInfo.storeDetail.OpenTime2 != 0 && savedOrderInfo.storeDetail.CloseTime2 != 0 {
|
|
||||||
time3 := jxutils.JxOperationTime2TimeByDate(savedOrderInfo.storeDetail.OpenTime2, time.Now())
|
|
||||||
time4 := jxutils.JxOperationTime2TimeByDate(savedOrderInfo.storeDetail.CloseTime2, time.Now())
|
|
||||||
if time.Now().Sub(time3) < 0 || time.Now().Sub(time4) > 0 {
|
|
||||||
// globals.SugarLogger.Warnf("createWaybillOn3rdProviders return orderID: %s,不在门店营业时间范围内1!", order.VendorOrderID)
|
|
||||||
err = fmt.Errorf("不在门店营业时间范围内!")
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// globals.SugarLogger.Warnf("createWaybillOn3rdProviders return orderID: %s,不在门店营业时间范围内2!", order.VendorOrderID)
|
|
||||||
err = fmt.Errorf("不在门店营业时间范围内!")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1070,7 +1070,7 @@ func RefreshPageActs(ctx *jxcontext.Context, vendorIDs []int, createdFrom time.T
|
|||||||
|
|
||||||
func DeleteStoresFromAct(ctx *jxcontext.Context, vendorID int, actTypes, storeIDs []int, isAsync, isContinueWhenError bool) (hint string, err error) {
|
func DeleteStoresFromAct(ctx *jxcontext.Context, vendorID int, actTypes, storeIDs []int, isAsync, isContinueWhenError bool) (hint string, err error) {
|
||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
task := tasksch.NewParallelTask("将SKU从所有活动中删除", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(isContinueWhenError), ctx,
|
task := tasksch.NewParallelTask("将门店从所有活动中删除", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(isContinueWhenError), ctx,
|
||||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||||
storeID := batchItemList[0].(int)
|
storeID := batchItemList[0].(int)
|
||||||
acts, _ := dao.QueryActs(db, 0, 0, 50, 0, "", vendorID, []int{1}, actTypes, nil, storeID, nil, 0, utils.ZeroTimeValue, utils.ZeroTimeValue, time.Now().AddDate(0, -3, 0), time.Now())
|
acts, _ := dao.QueryActs(db, 0, 0, 50, 0, "", vendorID, []int{1}, actTypes, nil, storeID, nil, 0, utils.ZeroTimeValue, utils.ZeroTimeValue, time.Now().AddDate(0, -3, 0), time.Now())
|
||||||
@@ -1094,7 +1094,6 @@ func DeleteStoresFromAct(ctx *jxcontext.Context, vendorID int, actTypes, storeID
|
|||||||
_, err = SyncAct(ctx, nil, v.ID, nil, true)
|
_, err = SyncAct(ctx, nil, v.ID, nil, true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return retVal, err
|
return retVal, err
|
||||||
}, storeIDs)
|
}, storeIDs)
|
||||||
tasksch.HandleTask(task, nil, true).Run()
|
tasksch.HandleTask(task, nil, true).Run()
|
||||||
|
|||||||
@@ -1224,6 +1224,7 @@ func AddStoreVendorMap(ctx *jxcontext.Context, db *dao.DaoDB, vendorID int, vend
|
|||||||
if globals.IsAddEvent {
|
if globals.IsAddEvent {
|
||||||
err = AddEventDetail(db, ctx, model.OperateAdd, vendorID, model.ThingTypeStore, storeID, "", `{"VendorID":`+utils.Int2Str(vendorID)+`}`)
|
err = AddEventDetail(db, ctx, model.OperateAdd, vendorID, model.ThingTypeStore, storeID, "", `{"VendorID":`+utils.Int2Str(vendorID)+`}`)
|
||||||
}
|
}
|
||||||
|
_, err = CurVendorSync.FullSyncStoresSkus(ctx, db, []int{vendorID}, []int{storeID}, true, nil, true, true)
|
||||||
return outStoreMap, err
|
return outStoreMap, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1684,7 +1684,8 @@ func CopyStoreSkus(ctx *jxcontext.Context, fromStoreID int, toStoreIDs []int, co
|
|||||||
t1.status = IF(? = 0, t1.status, t0.status),
|
t1.status = IF(? = 0, t1.status, t0.status),
|
||||||
t1.jd_sync_status = t1.jd_sync_status | ?,
|
t1.jd_sync_status = t1.jd_sync_status | ?,
|
||||||
t1.mtwm_sync_status = t1.mtwm_sync_status | ?,
|
t1.mtwm_sync_status = t1.mtwm_sync_status | ?,
|
||||||
t1.ebai_sync_status = t1.ebai_sync_status | ?
|
t1.ebai_sync_status = t1.ebai_sync_status | ?,
|
||||||
|
t1.stock = t0.stock
|
||||||
WHERE t1.store_id = ? AND t1.deleted_at = ? AND t0.id IS NOT NULL
|
WHERE t1.store_id = ? AND t1.deleted_at = ? AND t0.id IS NOT NULL
|
||||||
`
|
`
|
||||||
sqlParams := []interface{}{
|
sqlParams := []interface{}{
|
||||||
@@ -1725,13 +1726,13 @@ func CopyStoreSkus(ctx *jxcontext.Context, fromStoreID int, toStoreIDs []int, co
|
|||||||
// 添加toStore中不存在,但fromStore存在的
|
// 添加toStore中不存在,但fromStore存在的
|
||||||
sql = `
|
sql = `
|
||||||
INSERT INTO store_sku_bind(created_at, updated_at, last_operator, deleted_at, store_id, sku_id, sub_store_id, price, jx_price, unit_price, status,
|
INSERT INTO store_sku_bind(created_at, updated_at, last_operator, deleted_at, store_id, sku_id, sub_store_id, price, jx_price, unit_price, status,
|
||||||
jd_sync_status, ebai_sync_status, mtwm_sync_status)
|
jd_sync_status, ebai_sync_status, mtwm_sync_status, stock)
|
||||||
SELECT ?, ?, ?, ?, ?,
|
SELECT ?, ?, ?, ?, ?,
|
||||||
t1.sku_id, 0,
|
t1.sku_id, 0,
|
||||||
IF(t1.price * ? / 100 > 0, t1.price * ? / 100, 1) * ?,
|
IF(t1.price * ? / 100 > 0, t1.price * ? / 100, 1) * ?,
|
||||||
IF(t1.jx_price * ? / 100 > 0, t1.jx_price * ? / 100, 1) * ?,
|
IF(t1.jx_price * ? / 100 > 0, t1.jx_price * ? / 100, 1) * ?,
|
||||||
IF(t1.unit_price * ? / 100 > 0, t1.unit_price * ? / 100, 1) * ?,
|
IF(t1.unit_price * ? / 100 > 0, t1.unit_price * ? / 100, 1) * ?,
|
||||||
IF(? = 0, ?, t1.status), ?, ?, ?
|
IF(? = 0, ?, t1.status), ?, ?, ?, t1.stock
|
||||||
FROM store_sku_bind t1
|
FROM store_sku_bind t1
|
||||||
JOIN sku t2 ON t1.sku_id = t2.id AND t2.deleted_at = ?
|
JOIN sku t2 ON t1.sku_id = t2.id AND t2.deleted_at = ?
|
||||||
JOIN sku_name t3 ON t2.name_id = t3.id AND t3.deleted_at = ?
|
JOIN sku_name t3 ON t2.name_id = t3.id AND t3.deleted_at = ?
|
||||||
@@ -3332,7 +3333,7 @@ func FocusStoreSkusBySku(ctx *jxcontext.Context, skuBindInfos []*StoreSkuBindInf
|
|||||||
} else {
|
} else {
|
||||||
payPercentage = store.PayPercentage
|
payPercentage = store.PayPercentage
|
||||||
}
|
}
|
||||||
priceReferList, _ := dao.GetPriceReferSnapshotNoPage(db, []int{store.CityCode}, nil, []int{skuList[0].NameID}, utils.Time2Date(time.Now().AddDate(0, 0, -1)))
|
priceReferList, _ := dao.GetPriceReferSnapshotNoPage(db, []int{0}, nil, []int{skuList[0].NameID}, utils.Time2Date(time.Now().AddDate(0, 0, -1)))
|
||||||
if len(priceReferList) > 0 {
|
if len(priceReferList) > 0 {
|
||||||
price = priceReferList[0].MidUnitPrice / payPercentage * 100
|
price = priceReferList[0].MidUnitPrice / payPercentage * 100
|
||||||
}
|
}
|
||||||
@@ -4796,3 +4797,103 @@ func StoreSkuPriceAudit(ctx *jxcontext.Context, storeSkuAudits []*model.StoreSku
|
|||||||
}
|
}
|
||||||
return nil, hint, err
|
return nil, hint, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetSpecialtyStoreSkus(ctx *jxcontext.Context, storeIDs, vendorIDs []int) (err error) {
|
||||||
|
type SpecialtyStoreSkus struct {
|
||||||
|
StoreID int `json:"门店ID"`
|
||||||
|
StoreName string `json:"门店名"`
|
||||||
|
SkuID int `json:"SkuID"`
|
||||||
|
SkuName string `json:"商品名"`
|
||||||
|
Price float64 `json:"平台价"`
|
||||||
|
VendorName string `json:"平台名"`
|
||||||
|
}
|
||||||
|
var (
|
||||||
|
db = dao.GetDB()
|
||||||
|
specialtyStoreSkus []*SpecialtyStoreSkus
|
||||||
|
excelTitle = []string{
|
||||||
|
"门店ID",
|
||||||
|
"门店名",
|
||||||
|
"SkuID",
|
||||||
|
"商品名",
|
||||||
|
"平台价",
|
||||||
|
"平台名",
|
||||||
|
}
|
||||||
|
sheetList []*excel.Obj2ExcelSheetConfig
|
||||||
|
downloadURL, fileName string
|
||||||
|
)
|
||||||
|
for _, v := range vendorIDs {
|
||||||
|
for _, vv := range storeIDs {
|
||||||
|
storeDetail, err := dao.GetStoreDetail(db, vv, v)
|
||||||
|
if err != nil || storeDetail == nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if partner.IsMultiStore(v) {
|
||||||
|
var (
|
||||||
|
page = 1
|
||||||
|
vendorSkuIDs []string
|
||||||
|
)
|
||||||
|
_, totalCount, _ := api.JdPageAPI.GetJdTopSkus(storeDetail.VendorStoreID, page)
|
||||||
|
for ; page < totalCount/10+1; page++ {
|
||||||
|
result, _, _ := api.JdPageAPI.GetJdTopSkus(storeDetail.VendorStoreID, page)
|
||||||
|
vendorSkuIDs = append(vendorSkuIDs, result...)
|
||||||
|
}
|
||||||
|
for _, vvv := range vendorSkuIDs {
|
||||||
|
thingMap := &model.ThingMap{}
|
||||||
|
sql := `
|
||||||
|
SELECT * FROM thing_map WHERE thing_type = 3 AND vendor_thing_id = ? AND vendor_org_code = 320406
|
||||||
|
AND deleted_at = ?
|
||||||
|
`
|
||||||
|
sqlParams := []interface{}{
|
||||||
|
vvv, utils.DefaultTimeValue,
|
||||||
|
}
|
||||||
|
dao.GetRow(db, &thingMap, sql, sqlParams)
|
||||||
|
skus, _ := dao.GetSkus(db, []int{int(thingMap.ThingID)}, nil, nil, nil, nil)
|
||||||
|
specialtyStoreSku := &SpecialtyStoreSkus{
|
||||||
|
StoreID: vv,
|
||||||
|
StoreName: storeDetail.Name,
|
||||||
|
SkuID: int(thingMap.ThingID),
|
||||||
|
SkuName: skus[0].Name,
|
||||||
|
Price: 0,
|
||||||
|
VendorName: model.VendorNames[v],
|
||||||
|
}
|
||||||
|
specialtyStoreSkus = append(specialtyStoreSkus, specialtyStoreSku)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
handler := partner.GetPurchasePlatformFromVendorID(v).(partner.ISingleStoreStoreSkuHandler)
|
||||||
|
skuList, _ := handler.GetStoreSkusFullInfo(ctx, nil, vv, storeDetail.VendorStoreID, nil)
|
||||||
|
for _, sku := range skuList {
|
||||||
|
if sku.SkuList[0].IsSpecialty == model.YES {
|
||||||
|
specialtyStoreSku := &SpecialtyStoreSkus{
|
||||||
|
StoreID: vv,
|
||||||
|
StoreName: storeDetail.Name,
|
||||||
|
SkuID: sku.SkuList[0].SkuID,
|
||||||
|
SkuName: sku.Name,
|
||||||
|
Price: float64(sku.SkuList[0].VendorPrice) / 100,
|
||||||
|
VendorName: model.VendorNames[v],
|
||||||
|
}
|
||||||
|
specialtyStoreSkus = append(specialtyStoreSkus, specialtyStoreSku)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
excelConf := &excel.Obj2ExcelSheetConfig{
|
||||||
|
Title: "sheet1",
|
||||||
|
Data: specialtyStoreSkus,
|
||||||
|
CaptionList: excelTitle,
|
||||||
|
}
|
||||||
|
sheetList = append(sheetList, excelConf)
|
||||||
|
if excelConf != nil {
|
||||||
|
downloadURL, fileName, err = jxutils.UploadExeclAndPushMsg(sheetList, "力荐或置顶商品")
|
||||||
|
} else {
|
||||||
|
baseapi.SugarLogger.Debug("WriteToExcel: dataSuccess is nil!")
|
||||||
|
}
|
||||||
|
if err != nil {
|
||||||
|
baseapi.SugarLogger.Errorf("WriteToExcel:upload %s , %s failed error:%v", fileName, err)
|
||||||
|
} else {
|
||||||
|
noticeMsg := fmt.Sprintf("[详情点我]%s/billshow/?normal=true&path=%s \n", globals.BackstageHost, downloadURL)
|
||||||
|
ddmsg.SendUserMessage(dingdingapi.MsgTyeText, ctx.GetUserID(), "异步任务完成", noticeMsg)
|
||||||
|
baseapi.SugarLogger.Debug("WriteToExcel: dataSuccess downloadURL: [%v]", downloadURL)
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ import (
|
|||||||
"github.com/360EntSecGroup-Skylar/excelize"
|
"github.com/360EntSecGroup-Skylar/excelize"
|
||||||
"github.com/qiniu/api.v7/storage"
|
"github.com/qiniu/api.v7/storage"
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/platformapi/dadaapi"
|
|
||||||
"git.rosy.net.cn/baseapi/platformapi/jdapi"
|
"git.rosy.net.cn/baseapi/platformapi/jdapi"
|
||||||
"git.rosy.net.cn/baseapi/platformapi/mtwmapi"
|
"git.rosy.net.cn/baseapi/platformapi/mtwmapi"
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
@@ -1585,18 +1584,34 @@ func UploadJdsImage(ctx *jxcontext.Context) (err error) {
|
|||||||
// fmt.Println("updateList2", utils.Format4Output(updateList, false))
|
// fmt.Println("updateList2", utils.Format4Output(updateList, false))
|
||||||
// fmt.Println("deleteList2", deleteList)
|
// fmt.Println("deleteList2", deleteList)
|
||||||
var (
|
var (
|
||||||
db = dao.GetDB()
|
db = dao.GetDB()
|
||||||
|
storeSkus []*model.StoreSkuBind
|
||||||
)
|
)
|
||||||
list, err := dao.GetStoreCourierList(db, nil, []int{model.VendorIDDada}, model.StoreStatusAll, model.StoreAuditStatusAll)
|
sql := `
|
||||||
for _, v := range list {
|
SELECT a.* FROM store_sku_bind a,store b
|
||||||
sd, _ := api.DadaAPI.ShopDetail(v.VendorStoreID)
|
WHERE a.store_id = b.id AND b.deleted_at = '1970-01-01 00:00:00' AND a.unit_price = 100
|
||||||
if !strings.Contains(sd.StationName, globals.StoreName) {
|
AND a.deleted_at = '1970-01-01 00:00:00'
|
||||||
shopInfo := &dadaapi.ShopInfo{
|
AND a.sku_id NOT IN (34268,6045545,29401,6039481,29285,29286,29287,6040945,6040963,31737,33465,6045629,34989,6043733,6039661,25917,29569)
|
||||||
OriginShopID: v.VendorStoreID,
|
`
|
||||||
StationName: globals.StoreName + "-" + sd.StationName,
|
err = dao.GetRows(db, &storeSkus, sql, nil)
|
||||||
}
|
for _, v := range storeSkus {
|
||||||
api.DadaAPI.ShopUpdate(shopInfo)
|
var unitPrice = 0
|
||||||
|
his, _ := dao.GetStoreSkuHistory(db, []int{v.StoreID}, []int{v.SkuID}, model.StoreAuditStatusAll, utils.Time2Date(utils.Str2Time("2020-08-09 00:00:00")))
|
||||||
|
if len(his) == 0 {
|
||||||
|
p, _ := dao.GetPriceReferSnapshotNoPage(db, []int{0}, []int{v.SkuID}, nil, utils.Time2Date(time.Now().AddDate(0, 0, -1)))
|
||||||
|
unitPrice = p[0].MidUnitPrice
|
||||||
|
} else {
|
||||||
|
unitPrice = his[0].UnitPrice
|
||||||
}
|
}
|
||||||
|
skus, _ := dao.GetSkus(db, []int{v.SkuID}, nil, nil, nil, nil)
|
||||||
|
var skuBindInfos []*cms.StoreSkuBindInfo
|
||||||
|
skuBindInfo := &cms.StoreSkuBindInfo{
|
||||||
|
StoreID: v.StoreID,
|
||||||
|
NameID: skus[0].NameID,
|
||||||
|
UnitPrice: unitPrice,
|
||||||
|
}
|
||||||
|
skuBindInfos = append(skuBindInfos, skuBindInfo)
|
||||||
|
cms.UpdateStoresSkusByBind(ctx, nil, skuBindInfos, true, true, false)
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -606,7 +606,7 @@ func RefreshOrderEarningPrice3(order *model.GoodsOrder, payPercentage int, bill
|
|||||||
// if order.VendorID == model.VendorIDJDShop || order.VendorID == model.VendorIDJX {
|
// if order.VendorID == model.VendorIDJDShop || order.VendorID == model.VendorIDJX {
|
||||||
// order.NewEarningPrice = (order.TotalShopMoney - bill.DesiredFee) * int64((100 - payPercentage)) / 100
|
// order.NewEarningPrice = (order.TotalShopMoney - bill.DesiredFee) * int64((100 - payPercentage)) / 100
|
||||||
// } else {
|
// } else {
|
||||||
order.NewEarningPrice = (order.TotalShopMoney - bill.DesiredFee) * int64((100 - payPercentage/2)) / 100
|
order.NewEarningPrice = order.TotalShopMoney*int64((100-payPercentage/2))/100 - bill.DesiredFee
|
||||||
// }
|
// }
|
||||||
} else {
|
} else {
|
||||||
order.NewEarningPrice = order.EarningPrice
|
order.NewEarningPrice = order.EarningPrice
|
||||||
|
|||||||
@@ -166,29 +166,29 @@ func RefreshWeixin2Token() (err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func RefreshWeixin3Token() (err error) {
|
func RefreshWeixin3Token() (err error) {
|
||||||
if api.WeixinMiniAPI3 != nil {
|
// if api.WeixinMiniAPI3 != nil {
|
||||||
err = RefreshConfig("wechat3", weixinTokenExpires, func() (token string, expireTimeStr string) {
|
// err = RefreshConfig("wechat3", weixinTokenExpires, func() (token string, expireTimeStr string) {
|
||||||
globals.SugarLogger.Debugf("RefreshWeixin3Token RunMode:%s", beego.BConfig.RunMode)
|
// globals.SugarLogger.Debugf("RefreshWeixin3Token RunMode:%s", beego.BConfig.RunMode)
|
||||||
if globals.IsMainProductEnv() {
|
// if globals.IsMainProductEnv() {
|
||||||
if tokenInfo, err := api.WeixinMiniAPI3.CBRetrieveToken(); err == nil {
|
// if tokenInfo, err := api.WeixinMiniAPI3.CBRetrieveToken(); err == nil {
|
||||||
globals.SugarLogger.Debugf("RefreshWeixin3Token tokenInfo:%s", utils.Format4Output(tokenInfo, true))
|
// globals.SugarLogger.Debugf("RefreshWeixin3Token tokenInfo:%s", utils.Format4Output(tokenInfo, true))
|
||||||
token = tokenInfo.AccessToken
|
// token = tokenInfo.AccessToken
|
||||||
} else {
|
// } else {
|
||||||
globals.SugarLogger.Errorf("RefreshWeixin3Token RefreshToken failed with error:%v", err)
|
// globals.SugarLogger.Errorf("RefreshWeixin3Token RefreshToken failed with error:%v", err)
|
||||||
}
|
// }
|
||||||
} else {
|
// } else {
|
||||||
if tokenInfo := getWX3TokenFromRemote(api.WeixinMiniAPI3.CBGetToken()); tokenInfo != nil {
|
// if tokenInfo := getWX3TokenFromRemote(api.WeixinMiniAPI3.CBGetToken()); tokenInfo != nil {
|
||||||
expireTimeStr = utils.Time2Str(time.Now().Add(-weixinTokenExpires))
|
// expireTimeStr = utils.Time2Str(time.Now().Add(-weixinTokenExpires))
|
||||||
token = tokenInfo.Token
|
// token = tokenInfo.Token
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
return token, expireTimeStr
|
// return token, expireTimeStr
|
||||||
}, func(value string) {
|
// }, func(value string) {
|
||||||
globals.SugarLogger.Debugf("RefreshWeixinToken setter value:%s", value)
|
// globals.SugarLogger.Debugf("RefreshWeixinToken setter value:%s", value)
|
||||||
syseventhub.SysEventHub.OnNewWX3Token(value)
|
// syseventhub.SysEventHub.OnNewWX3Token(value)
|
||||||
api.WeixinMiniAPI3.CBSetToken(value)
|
// api.WeixinMiniAPI3.CBSetToken(value)
|
||||||
})
|
// })
|
||||||
}
|
// }
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -565,7 +565,7 @@ func GetFullStoreSkus(db *DaoDB, vendorID, storeID int) (skus []*StoreSkuSyncInf
|
|||||||
sm.vendor_id, sm.vendor_org_code, sm.yb_app_id, sm.yb_app_key,
|
sm.vendor_id, sm.vendor_org_code, sm.yb_app_id, sm.yb_app_key,
|
||||||
t1.id bind_id, t1.price, t1.unit_price, t1.status store_sku_status,
|
t1.id bind_id, t1.price, t1.unit_price, t1.status store_sku_status,
|
||||||
t1.%s_sync_status sku_sync_status, t1.%s_price vendor_price, t1.%s_lock_time lock_time,
|
t1.%s_sync_status sku_sync_status, t1.%s_price vendor_price, t1.%s_lock_time lock_time,
|
||||||
t1.store_id, t1.deleted_at bind_deleted_at,
|
t1.store_id, t1.deleted_at bind_deleted_at, t1.stock,
|
||||||
t2.*, t2.id sku_id, t2m.vendor_thing_id vendor_sku_id,
|
t2.*, t2.id sku_id, t2m.vendor_thing_id vendor_sku_id,
|
||||||
t3.id name_id, t3.prefix, t3.name, t3.unit, t3.upc, t3.status name_status, t3.ex_prefix, t3.ex_prefix_begin, t3.ex_prefix_end, t3.category_id name_category_id,
|
t3.id name_id, t3.prefix, t3.name, t3.unit, t3.upc, t3.status name_status, t3.ex_prefix, t3.ex_prefix_begin, t3.ex_prefix_end, t3.category_id name_category_id,
|
||||||
IF(t11.%s <> '', t11.%s, t3.img) img,
|
IF(t11.%s <> '', t11.%s, t3.img) img,
|
||||||
@@ -1455,14 +1455,12 @@ func GetStoreSkuBindByNameID(db *DaoDB, storeID, nameID, status int) (storeSkuBi
|
|||||||
AND a.name_id = ?
|
AND a.name_id = ?
|
||||||
AND c.deleted_at = ?
|
AND c.deleted_at = ?
|
||||||
AND a.deleted_at = ?
|
AND a.deleted_at = ?
|
||||||
AND c.status = ?
|
|
||||||
`
|
`
|
||||||
sqlParams := []interface{}{
|
sqlParams := []interface{}{
|
||||||
storeID,
|
storeID,
|
||||||
nameID,
|
nameID,
|
||||||
utils.DefaultTimeValue,
|
utils.DefaultTimeValue,
|
||||||
utils.DefaultTimeValue,
|
utils.DefaultTimeValue,
|
||||||
status,
|
|
||||||
}
|
}
|
||||||
err = GetRows(db, &storeSkuBind, sql, sqlParams...)
|
err = GetRows(db, &storeSkuBind, sql, sqlParams...)
|
||||||
return storeSkuBind, err
|
return storeSkuBind, err
|
||||||
|
|||||||
@@ -92,7 +92,7 @@ const (
|
|||||||
SyncFlagSeqMask = 64 // 门店商家分类下的排序顺序
|
SyncFlagSeqMask = 64 // 门店商家分类下的排序顺序
|
||||||
|
|
||||||
// combine
|
// combine
|
||||||
SyncFlagStoreSkuOnlyMask = SyncFlagSaleMask | SyncFlagPriceMask
|
SyncFlagStoreSkuOnlyMask = SyncFlagSaleMask | SyncFlagPriceMask | SyncFlagStockMask
|
||||||
SyncFlagStoreSkuModifiedMask = SyncFlagStoreSkuOnlyMask | SyncFlagModifiedMask
|
SyncFlagStoreSkuModifiedMask = SyncFlagStoreSkuOnlyMask | SyncFlagModifiedMask
|
||||||
SyncFlagChangedMask = SyncFlagSpecMask | SyncFlagNewMask | SyncFlagDeletedMask | SyncFlagStoreSkuModifiedMask
|
SyncFlagChangedMask = SyncFlagSpecMask | SyncFlagNewMask | SyncFlagDeletedMask | SyncFlagStoreSkuModifiedMask
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -127,6 +127,13 @@ func result2Orders(msg *jdshopapi.CallBackResult) (order *model.GoodsOrder, err
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if msg.IDSopShipmenttype == jdshopapi.IdSopShipmenttypeTC {
|
||||||
|
if time, err := api.JdShopAPI.GetOrderExtInfoByOrderId(order.VendorOrderID2); err == nil {
|
||||||
|
order.BusinessType = model.BusinessTypeDingshida
|
||||||
|
order.ExpectedDeliveredTime = utils.Str2Time(time)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//结算类型
|
//结算类型
|
||||||
storeDetail, _ := dao.GetStoreDetail(dao.GetDB(), order.StoreID, model.VendorIDJDShop)
|
storeDetail, _ := dao.GetStoreDetail(dao.GetDB(), order.StoreID, model.VendorIDJDShop)
|
||||||
if storeDetail != nil {
|
if storeDetail != nil {
|
||||||
|
|||||||
@@ -1527,14 +1527,17 @@ func GetMatterOrderStatus(ctx *jxcontext.Context, vendorOrderID string) (result
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
for _, v := range queryOrderStatus.OrderStatusList {
|
if len(queryOrderStatus.OrderStatusList) > 0 {
|
||||||
matter := &MatterOrderStatus{}
|
for _, v := range queryOrderStatus.OrderStatusList {
|
||||||
matter.Time = utils.Str2Time(v.OperateTime)
|
matter := &MatterOrderStatus{}
|
||||||
matter.Status = v.SoStatusName
|
matter.Time = utils.Str2Time(v.OperateTime)
|
||||||
matter.Name = v.SoStatusName
|
matter.Status = v.SoStatusName
|
||||||
matter.Sign = 1
|
matter.Name = v.SoStatusName
|
||||||
result = append(result, matter)
|
matter.Sign = 1
|
||||||
|
result = append(result, matter)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(getTrackMessagePlusByOrderResult.ResultData) > 0 {
|
if len(getTrackMessagePlusByOrderResult.ResultData) > 0 {
|
||||||
for _, vv := range getTrackMessagePlusByOrderResult.ResultData {
|
for _, vv := range getTrackMessagePlusByOrderResult.ResultData {
|
||||||
matter := &MatterOrderStatus{}
|
matter := &MatterOrderStatus{}
|
||||||
|
|||||||
@@ -896,3 +896,24 @@ func (c *StoreSkuController) StoreSkuPriceAudit() {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// @Title 查看美团力荐或京东置顶商品
|
||||||
|
// @Description 查看美团力荐或京东置顶商品
|
||||||
|
// @Param token header string true "认证token"
|
||||||
|
// @Param vendorIDs formData string true "平台ids"
|
||||||
|
// @Param storeIDs formData string true "门店IDs"
|
||||||
|
// @Success 200 {object} controllers.CallResult
|
||||||
|
// @Failure 200 {object} controllers.CallResult
|
||||||
|
// @router /GetSpecialtyStoreSkus [post]
|
||||||
|
func (c *StoreSkuController) GetSpecialtyStoreSkus() {
|
||||||
|
c.callGetSpecialtyStoreSkus(func(params *tStoreSkuGetSpecialtyStoreSkusParams) (retVal interface{}, errCode string, err error) {
|
||||||
|
var (
|
||||||
|
storeIDs, vendorIDs []int
|
||||||
|
)
|
||||||
|
if err = jxutils.Strings2Objs(params.StoreIDs, &storeIDs, params.VendorIDs, &vendorIDs); err != nil {
|
||||||
|
return retVal, "", err
|
||||||
|
}
|
||||||
|
err = cms.GetSpecialtyStoreSkus(params.Ctx, storeIDs, vendorIDs)
|
||||||
|
return retVal, "", err
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ var (
|
|||||||
WeixinAPI *weixinapi.API // 微信公众号
|
WeixinAPI *weixinapi.API // 微信公众号
|
||||||
WeixinMiniAPI *weixinapi.API // 小程序
|
WeixinMiniAPI *weixinapi.API // 小程序
|
||||||
WeixinMiniAPI2 *weixinapi.API // 小程序2
|
WeixinMiniAPI2 *weixinapi.API // 小程序2
|
||||||
WeixinMiniAPI3 *weixinapi.API // 小程序3
|
WeixinApp *weixinapi.API // app微信登录
|
||||||
WeixinMiniAppID2 string
|
WeixinMiniAppID2 string
|
||||||
WeixinMiniAppID3 string
|
WeixinMiniAppID3 string
|
||||||
WxpayAPI *wxpayapi.API // 微信支付API
|
WxpayAPI *wxpayapi.API // 微信支付API
|
||||||
@@ -213,7 +213,7 @@ func Init() {
|
|||||||
}
|
}
|
||||||
WeixinPageAPI = weixinapi.New(beego.AppConfig.String("weixinPageAppID"), beego.AppConfig.String("weixinPageSecret"))
|
WeixinPageAPI = weixinapi.New(beego.AppConfig.String("weixinPageAppID"), beego.AppConfig.String("weixinPageSecret"))
|
||||||
if WeixinMiniAppID3 = beego.AppConfig.String("weixinMiniAppID3"); WeixinMiniAppID3 != "" {
|
if WeixinMiniAppID3 = beego.AppConfig.String("weixinMiniAppID3"); WeixinMiniAppID3 != "" {
|
||||||
WeixinMiniAPI3 = weixinapi.New(WeixinMiniAppID3, beego.AppConfig.String("weixinMiniSecret3"))
|
WeixinApp = weixinapi.New(WeixinMiniAppID3, beego.AppConfig.String("weixinMiniSecret3"))
|
||||||
}
|
}
|
||||||
if globals.WxpayNotifyURL != "" {
|
if globals.WxpayNotifyURL != "" {
|
||||||
// WxpayAPI = wxpayapi.New(beego.AppConfig.String("wxpayAppID"), beego.AppConfig.String("wxpayAppKey"), beego.AppConfig.String("wxpayAppMchID"))
|
// WxpayAPI = wxpayapi.New(beego.AppConfig.String("wxpayAppID"), beego.AppConfig.String("wxpayAppKey"), beego.AppConfig.String("wxpayAppMchID"))
|
||||||
|
|||||||
@@ -2088,6 +2088,15 @@ func init() {
|
|||||||
Filters: nil,
|
Filters: nil,
|
||||||
Params: nil})
|
Params: nil})
|
||||||
|
|
||||||
|
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"],
|
||||||
|
beego.ControllerComments{
|
||||||
|
Method: "GetSpecialtyStoreSkus",
|
||||||
|
Router: `/GetSpecialtyStoreSkus`,
|
||||||
|
AllowHTTPMethods: []string{"post"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Filters: nil,
|
||||||
|
Params: nil})
|
||||||
|
|
||||||
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"],
|
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"],
|
||||||
beego.ControllerComments{
|
beego.ControllerComments{
|
||||||
Method: "GetStoreAbnormalSkuCount",
|
Method: "GetStoreAbnormalSkuCount",
|
||||||
|
|||||||
Reference in New Issue
Block a user