Merge remote-tracking branch 'origin/mark' into yonghui
This commit is contained in:
@@ -157,7 +157,7 @@ func getFixedTokenName(token string) *AuthInfo {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func createAuthInfo(user IUser, authBindInfo *AuthBindEx) (authInfo *AuthInfo) {
|
func createAuthInfo(user IUser, authBindInfo *AuthBindEx) (authInfo *AuthInfo) {
|
||||||
token, tokenType := createToken(user)
|
token, tokenType := createToken(user, authBindInfo)
|
||||||
expireDuration := DefTokenDuration
|
expireDuration := DefTokenDuration
|
||||||
authInfo = &AuthInfo{
|
authInfo = &AuthInfo{
|
||||||
AuthBindInfo: authBindInfo,
|
AuthBindInfo: authBindInfo,
|
||||||
@@ -378,9 +378,9 @@ func ClearUserToken(userID string) {
|
|||||||
|
|
||||||
/////////////
|
/////////////
|
||||||
|
|
||||||
func createToken(user IUser) (token string, tokenType int) {
|
func createToken(user IUser, authBindInfo *AuthBindEx) (token string, tokenType int) {
|
||||||
userID := TokenUserEmpty
|
userID := TokenUserEmpty
|
||||||
userName := TokenUserEmpty
|
userName := authBindInfo.AuthID
|
||||||
tokenType = TokenTypeOnlyAuth
|
tokenType = TokenTypeOnlyAuth
|
||||||
if user != nil {
|
if user != nil {
|
||||||
userID = user.GetID()
|
userID = user.GetID()
|
||||||
@@ -392,8 +392,9 @@ func createToken(user IUser) (token string, tokenType int) {
|
|||||||
TokenVer,
|
TokenVer,
|
||||||
userID,
|
userID,
|
||||||
time.Now().Format("20060102-150405"),
|
time.Now().Format("20060102-150405"),
|
||||||
userName,
|
authBindInfo.Type,
|
||||||
utils.GetUUID(),
|
utils.GetUUID(),
|
||||||
|
userName,
|
||||||
}, TokenTypeSep), tokenType
|
}, TokenTypeSep), tokenType
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -404,7 +405,7 @@ func GetTokenType(token string) (tokenType int) {
|
|||||||
tokenType = TokenTypeNone
|
tokenType = TokenTypeNone
|
||||||
if token != "" {
|
if token != "" {
|
||||||
tokenPartList := strings.Split(token, TokenTypeSep)
|
tokenPartList := strings.Split(token, TokenTypeSep)
|
||||||
if (len(tokenPartList) == 1) || (len(tokenPartList) == 6 && tokenPartList[2] != TokenUserEmpty) {
|
if (len(tokenPartList) == 1) || (len(tokenPartList) >= 6 && tokenPartList[2] != TokenUserEmpty) {
|
||||||
tokenType = TokenTypeNormal
|
tokenType = TokenTypeNormal
|
||||||
} else {
|
} else {
|
||||||
tokenType = TokenTypeOnlyAuth
|
tokenType = TokenTypeOnlyAuth
|
||||||
|
|||||||
43
business/auth2/authprovider/alipay/alipay.go
Normal file
43
business/auth2/authprovider/alipay/alipay.go
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
package alipay
|
||||||
|
|
||||||
|
import (
|
||||||
|
"git.rosy.net.cn/baseapi/platformapi/alipayapi"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/auth2"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/auth2/authprovider"
|
||||||
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
|
"git.rosy.net.cn/jx-callback/globals/api"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
AuthType = "alipaycode"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Auther struct {
|
||||||
|
authprovider.DefAuther
|
||||||
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
AutherObj *Auther
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
AutherObj = new(Auther)
|
||||||
|
auth2.RegisterAuther(AuthType, AutherObj)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *Auther) VerifySecret(dummy, code string) (authBindEx *auth2.AuthBindEx, err error) {
|
||||||
|
globals.SugarLogger.Debugf("VerifySecret dummy:%s, code:%s", dummy, code)
|
||||||
|
tokenInfo, err := api.AliPayAPI.SystemAuthToken(alipayapi.GrantTypeCode, code, "")
|
||||||
|
if err == nil {
|
||||||
|
userInfo, err2 := api.AliPayAPI.UserInfoShare(tokenInfo.AccessToken)
|
||||||
|
if err = err2; err == nil {
|
||||||
|
if authBindEx, err = a.UnionFindAuthBind(AuthType, nil, userInfo.UserID, "", userInfo); err == nil {
|
||||||
|
authBindEx.UserHint = &auth2.UserBasic{
|
||||||
|
Name: userInfo.NickName,
|
||||||
|
Avatar: userInfo.Avatar,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return authBindEx, err
|
||||||
|
}
|
||||||
@@ -655,6 +655,9 @@ func (c *OrderManager) GetStoresOrderSaleInfoNew(ctx *jxcontext.Context, storeID
|
|||||||
}
|
}
|
||||||
saleInfo.ActualPayPrice += v.ActualPayPrice
|
saleInfo.ActualPayPrice += v.ActualPayPrice
|
||||||
saleInfo.Count++
|
saleInfo.Count++
|
||||||
|
|
||||||
|
saleInfo.DistanceFreightMoney += v.DistanceFreightMoney
|
||||||
|
saleInfo.WaybillTipMoney += v.WaybillTipMoney
|
||||||
}
|
}
|
||||||
orderMap[universalOrderID].SkuCount += v.Count
|
orderMap[universalOrderID].SkuCount += v.Count
|
||||||
|
|
||||||
|
|||||||
@@ -406,8 +406,15 @@ func (s *DefScheduler) OnOrderStatusChanged(order *model.GoodsOrder, status *mod
|
|||||||
}
|
}
|
||||||
if !isPending {
|
if !isPending {
|
||||||
if status.Status == model.OrderStatusAgreeFailedGetGoods || status.Status == model.OrderStatusDeliverFailed {
|
if status.Status == model.OrderStatusAgreeFailedGetGoods || status.Status == model.OrderStatusDeliverFailed {
|
||||||
s.updateOrderByBill(order, nil, status.Status != model.OrderStatusAgreeFailedGetGoods)
|
s.updateOrderByBill(order, nil, false) //status.Status != model.OrderStatusAgreeFailedGetGoods)
|
||||||
s.removeWaybillFromMap(savedOrderInfo, order.VendorID)
|
s.removeWaybillFromMap(savedOrderInfo, order.VendorID)
|
||||||
|
clearFlag := 0
|
||||||
|
if status.Status == model.OrderStatusAgreeFailedGetGoods {
|
||||||
|
clearFlag = model.OrderFlagMaskFailedGetGoods
|
||||||
|
} else if status.Status == model.OrderFlagMaskFailedDeliver {
|
||||||
|
clearFlag = model.OrderFlagMaskFailedDeliver
|
||||||
|
}
|
||||||
|
dao.ClearOrderFlag(dao.GetDB(), model.AdminName, order.VendorOrderID, order.VendorID, clearFlag)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -427,7 +434,7 @@ func (s *DefScheduler) OnOrderStatusChanged(order *model.GoodsOrder, status *mod
|
|||||||
status.Status == model.OrderStatusAgreeFailedGetGoods ||
|
status.Status == model.OrderStatusAgreeFailedGetGoods ||
|
||||||
status.Status == model.OrderStatusDeliverFailed {
|
status.Status == model.OrderStatusDeliverFailed {
|
||||||
if status.Status == model.OrderStatusApplyFailedGetGoods {
|
if status.Status == model.OrderStatusApplyFailedGetGoods {
|
||||||
dao.ClearOrderFlag(dao.GetDB(), model.AdminName, order.VendorOrderID, order.VendorID, ^(model.OrderFlagMaskFailedGetGoods | model.OrderFlagMaskCallPMCourier))
|
dao.ClearOrderFlag(dao.GetDB(), model.AdminName, order.VendorOrderID, order.VendorID, model.OrderFlagMaskFailedGetGoods|model.OrderFlagMaskCallPMCourier)
|
||||||
}
|
}
|
||||||
if status.Status == model.OrderStatusApplyCancel {
|
if status.Status == model.OrderStatusApplyCancel {
|
||||||
s.notifyUserApplyCancel(savedOrderInfo.order, status.Remark)
|
s.notifyUserApplyCancel(savedOrderInfo.order, status.Remark)
|
||||||
@@ -1166,7 +1173,8 @@ func isNeedWatchWaybillTip(order *model.GoodsOrder) bool {
|
|||||||
func isNeedWatch3rdWaybill(order *model.GoodsOrder) bool {
|
func isNeedWatch3rdWaybill(order *model.GoodsOrder) bool {
|
||||||
return (order.Status >= model.OrderStatusFinishedPickup && order.Status < model.OrderStatusDelivering) && // 订单状态
|
return (order.Status >= model.OrderStatusFinishedPickup && order.Status < model.OrderStatusDelivering) && // 订单状态
|
||||||
order.DeliveryFlag&model.OrderDeliveryFlagMaskScheduleDisabled == 0 && // 没有禁止调度
|
order.DeliveryFlag&model.OrderDeliveryFlagMaskScheduleDisabled == 0 && // 没有禁止调度
|
||||||
!model.IsOrderHaveWaybill(order) // 没有有效运单
|
!model.IsOrderHaveWaybill(order) && // 没有有效运单
|
||||||
|
order.LockStatus == model.OrderStatusUnknown
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *DefScheduler) setWatchOrderWaybills(savedOrderInfo *WatchOrderInfo, duration time.Duration) {
|
func (s *DefScheduler) setWatchOrderWaybills(savedOrderInfo *WatchOrderInfo, duration time.Duration) {
|
||||||
@@ -1219,27 +1227,28 @@ func (s *DefScheduler) watchOrderWaybills(savedOrderInfo *WatchOrderInfo) {
|
|||||||
// }
|
// }
|
||||||
// partner.CurOrderManager.OnOrderMsg(order, vendorStatus, remark)
|
// partner.CurOrderManager.OnOrderMsg(order, vendorStatus, remark)
|
||||||
// }
|
// }
|
||||||
if handler, ok := partner.GetPurchaseOrderHandlerFromVendorID(order.VendorID).(partner.IAddWaybillTip); ok && handler != nil {
|
|
||||||
var remark string
|
// if handler, ok := partner.GetPurchaseOrderHandlerFromVendorID(order.VendorID).(partner.IAddWaybillTip); ok && handler != nil {
|
||||||
tipFee := getWaybillTip(order)
|
// var remark string
|
||||||
vendorStatus := fmt.Sprintf("设置小费:%s", jxutils.IntPrice2StandardCurrencyString(tipFee))
|
// tipFee := getWaybillTip(order)
|
||||||
tipFee2Add := tipFee - order.WaybillTipMoney
|
// vendorStatus := fmt.Sprintf("设置小费:%s", jxutils.IntPrice2StandardCurrencyString(tipFee))
|
||||||
vendorStatus += fmt.Sprintf(", 本次添加:%s", jxutils.IntPrice2StandardCurrencyString(tipFee2Add))
|
// tipFee2Add := tipFee - order.WaybillTipMoney
|
||||||
if false { //tipFee2Add > 0 {
|
// vendorStatus += fmt.Sprintf(", 本次添加:%s", jxutils.IntPrice2StandardCurrencyString(tipFee2Add))
|
||||||
err := handler.UpdateWaybillTip(jxcontext.AdminCtx, order.VendorOrgCode, order.VendorStoreID, order.VendorOrderID, order.VendorOrderID, "", "", tipFee)
|
// if false { //tipFee2Add > 0 {
|
||||||
if err == nil {
|
// err := handler.UpdateWaybillTip(jxcontext.AdminCtx, order.VendorOrgCode, order.VendorStoreID, order.VendorOrderID, order.VendorOrderID, "", "", tipFee)
|
||||||
vendorStatus += "成功"
|
// if err == nil {
|
||||||
order.WaybillTipMoney = tipFee
|
// vendorStatus += "成功"
|
||||||
partner.CurOrderManager.UpdateOrderFields(order, []string{"WaybillTipMoney"})
|
// order.WaybillTipMoney = tipFee
|
||||||
} else {
|
// partner.CurOrderManager.UpdateOrderFields(order, []string{"WaybillTipMoney"})
|
||||||
vendorStatus += "失败"
|
// } else {
|
||||||
remark = fmt.Sprint(err)
|
// vendorStatus += "失败"
|
||||||
}
|
// remark = fmt.Sprint(err)
|
||||||
} else {
|
// }
|
||||||
vendorStatus += "空操作"
|
// } else {
|
||||||
}
|
// vendorStatus += "空操作"
|
||||||
partner.CurOrderManager.OnOrderMsg(order, vendorStatus, remark)
|
// }
|
||||||
}
|
// partner.CurOrderManager.OnOrderMsg(order, vendorStatus, remark)
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
if savedOrderInfo.isNeedCreate3rdWaybill {
|
if savedOrderInfo.isNeedCreate3rdWaybill {
|
||||||
s.createWaybillOn3rdProviders(savedOrderInfo, 0, nil)
|
s.createWaybillOn3rdProviders(savedOrderInfo, 0, nil)
|
||||||
|
|||||||
@@ -1042,7 +1042,7 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs
|
|||||||
err = AddEventDetail(model.OperateAdd, v.RealSkuID, model.ThingTypeSku, storeID, ctx.GetTrackInfo(), "", "")
|
err = AddEventDetail(model.OperateAdd, v.RealSkuID, model.ThingTypeSku, storeID, ctx.GetTrackInfo(), "", "")
|
||||||
setStoreSkuBindStatus(skuBind, model.SyncFlagNewMask)
|
setStoreSkuBindStatus(skuBind, model.SyncFlagNewMask)
|
||||||
dao.WrapAddIDCULDEntity(skuBind, userName)
|
dao.WrapAddIDCULDEntity(skuBind, userName)
|
||||||
globals.SugarLogger.Debug(utils.Format4Output(skuBind, false))
|
// globals.SugarLogger.Debug(utils.Format4Output(skuBind, false))
|
||||||
if deletedSku := dao.GetDeletedStoreSkuBind(db, skuBind.StoreID, skuBind.SkuID); deletedSku == nil {
|
if deletedSku := dao.GetDeletedStoreSkuBind(db, skuBind.StoreID, skuBind.SkuID); deletedSku == nil {
|
||||||
if err = dao.CreateEntity(db, skuBind); err != nil {
|
if err = dao.CreateEntity(db, skuBind); err != nil {
|
||||||
dao.Rollback(db)
|
dao.Rollback(db)
|
||||||
@@ -1094,7 +1094,7 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs
|
|||||||
setStoreSkuBindStatus(skuBind, model.SyncFlagSaleMask)
|
setStoreSkuBindStatus(skuBind, model.SyncFlagSaleMask)
|
||||||
updateFieldMap[model.FieldStatus] = 1
|
updateFieldMap[model.FieldStatus] = 1
|
||||||
}
|
}
|
||||||
if skuBindInfo.UnitPrice != 0 && isCanChangePrice { // 这里是否需要加此条件限制
|
if skuBindInfo.UnitPrice != 0 && skuBind.UnitPrice != unitPrice && isCanChangePrice { // 这里是否需要加此条件限制
|
||||||
skuBind.UnitPrice = unitPrice
|
skuBind.UnitPrice = unitPrice
|
||||||
skuBind.Price = jxutils.CaculateSkuPrice(unitPrice, v.SpecQuality, v.SpecUnit, v.SkuNameUnit)
|
skuBind.Price = jxutils.CaculateSkuPrice(unitPrice, v.SpecQuality, v.SpecUnit, v.SkuNameUnit)
|
||||||
skuBind.JxPrice = jxutils.CaculatePriceByPricePack(storeDetail.PricePercentagePackObj, int(storeDetail.PricePercentage), skuBind.Price)
|
skuBind.JxPrice = jxutils.CaculatePriceByPricePack(storeDetail.PricePercentagePackObj, int(storeDetail.PricePercentage), skuBind.Price)
|
||||||
|
|||||||
@@ -195,7 +195,9 @@ func FullSyncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, vendo
|
|||||||
}
|
}
|
||||||
|
|
||||||
func isStoreSkuSyncNeedDelete(storeSku *dao.StoreSkuSyncInfo) bool {
|
func isStoreSkuSyncNeedDelete(storeSku *dao.StoreSkuSyncInfo) bool {
|
||||||
return model.IsSyncStatusDelete(storeSku.SkuSyncStatus) || storeSku.BindDeletedAt != utils.DefaultTimeValue || storeSku.BindID == 0 || storeSku.NameID == 0
|
return model.IsSyncStatusDelete(storeSku.SkuSyncStatus) ||
|
||||||
|
storeSku.BindDeletedAt != utils.DefaultTimeValue || storeSku.BindID == 0 ||
|
||||||
|
storeSku.NameID == 0 || storeSku.NameStatus != model.SkuStatusNormal || storeSku.Status != model.SkuStatusNormal
|
||||||
}
|
}
|
||||||
|
|
||||||
func storeSkuSyncInfo2Bare(inSku *dao.StoreSkuSyncInfo) (outSku *partner.StoreSkuInfo) {
|
func storeSkuSyncInfo2Bare(inSku *dao.StoreSkuSyncInfo) (outSku *partner.StoreSkuInfo) {
|
||||||
@@ -239,7 +241,7 @@ func formalizeStoreSkuList(inSkuList []*dao.StoreSkuSyncInfo) []*dao.StoreSkuSyn
|
|||||||
if skuItem.VendorPrice > skuItem.BoxFee {
|
if skuItem.VendorPrice > skuItem.BoxFee {
|
||||||
skuItem.BoxFee = boxFee
|
skuItem.BoxFee = boxFee
|
||||||
}
|
}
|
||||||
skuItem.MergedStatus = jxutils.MergeSkuStatus(skuItem.Status, skuItem.StoreSkuStatus)
|
skuItem.MergedStatus = jxutils.MergeSkuStatus(jxutils.MergeSkuStatus(skuItem.NameStatus, skuItem.Status), skuItem.StoreSkuStatus)
|
||||||
skuItem.SkuName = jxutils.ComposeSkuNameSync(skuItem.Prefix, skuItem.Name, skuItem.Comment, skuItem.Unit, skuItem.SpecQuality, skuItem.SpecUnit, 0, skuItem.ExPrefix, skuItem.ExPrefixBegin, skuItem.ExPrefixEnd)
|
skuItem.SkuName = jxutils.ComposeSkuNameSync(skuItem.Prefix, skuItem.Name, skuItem.Comment, skuItem.Unit, skuItem.SpecQuality, skuItem.SpecUnit, 0, skuItem.ExPrefix, skuItem.ExPrefixBegin, skuItem.ExPrefixEnd)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,22 +16,27 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type StoresOrderSaleInfo struct {
|
type StoresOrderSaleInfo struct {
|
||||||
StoreID int `orm:"column(store_id)" json:"storeID"`
|
StoreID int `orm:"column(store_id)" json:"storeID"`
|
||||||
VendorID int `orm:"column(vendor_id)" json:"vendorID"`
|
VendorID int `orm:"column(vendor_id)" json:"vendorID"`
|
||||||
Status int `json:"status"`
|
Status int `json:"status"`
|
||||||
|
|
||||||
Count int `json:"count"`
|
Count int `json:"count"`
|
||||||
ShopPrice int64 `json:"shopPrice"`
|
ShopPrice int64 `json:"shopPrice"`
|
||||||
VendorPrice int64 `json:"vendorPrice"`
|
VendorPrice int64 `json:"vendorPrice"`
|
||||||
SalePrice int64 `json:"salePrice"`
|
SalePrice int64 `json:"salePrice"`
|
||||||
ActualPayPrice int64 `json:"actualPayPrice"`
|
ActualPayPrice int64 `json:"actualPayPrice"`
|
||||||
|
|
||||||
EarningPrice int64 `json:"earningPrice"` // 预估结算给门店老板的钱
|
EarningPrice int64 `json:"earningPrice"` // 预估结算给门店老板的钱
|
||||||
|
DistanceFreightMoney int64 `json:"distanceFreightMoney"` // 商户承担的远距离配送费(当前只有京东到家有值)
|
||||||
|
WaybillTipMoney int64 `json:"waybillTipMoney"` // 京西加的平台配送小费
|
||||||
}
|
}
|
||||||
|
|
||||||
type OrderSkuWithActualPayPrice struct {
|
type OrderSkuWithActualPayPrice struct {
|
||||||
model.OrderSku
|
model.OrderSku
|
||||||
|
|
||||||
ActualPayPrice int64 `json:"actualPayPrice"` // 单位为分 顾客实际支付
|
ActualPayPrice int64 `json:"actualPayPrice"` // 单位为分 顾客实际支付
|
||||||
|
DistanceFreightMoney int64 `json:"distanceFreightMoney"` // 商户承担的远距离配送费(当前只有京东到家有值)
|
||||||
|
WaybillTipMoney int64 `json:"waybillTipMoney"` // 京西加的平台配送小费
|
||||||
|
|
||||||
StoreID int `orm:"column(store_id)" json:"storeID"` // 外部系统里记录的 jxstoreid
|
StoreID int `orm:"column(store_id)" json:"storeID"` // 外部系统里记录的 jxstoreid
|
||||||
Status int `json:"status"` // 参见OrderStatus*相关的常量定义
|
Status int `json:"status"` // 参见OrderStatus*相关的常量定义
|
||||||
@@ -215,7 +220,7 @@ func ClearOrderFlag(db *DaoDB, userName string, vendorOrderID string, vendorID i
|
|||||||
UPDATE goods_order
|
UPDATE goods_order
|
||||||
SET flag = flag & ?
|
SET flag = flag & ?
|
||||||
WHERE vendor_order_id = ? AND vendor_id = ?
|
WHERE vendor_order_id = ? AND vendor_id = ?
|
||||||
`, flag, vendorOrderID, vendorID)
|
`, ^flag, vendorOrderID, vendorID)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -345,7 +350,7 @@ func GetStoreOrderSkuList(db *DaoDB, storeIDs []int, finishedAtBegin, finishedAt
|
|||||||
// order_finished_at
|
// order_finished_at
|
||||||
sql := `
|
sql := `
|
||||||
SELECT t1.*,
|
SELECT t1.*,
|
||||||
t2.actual_pay_price, t2.status, IF(t2.jx_store_id > 0, t2.jx_store_id, t2.store_id) store_id,
|
IF(t2.jx_store_id > 0, t2.jx_store_id, t2.store_id) store_id, t2.status, t2.actual_pay_price, t2.distance_freight_money, t2.waybill_tip_money,
|
||||||
t3.pay_percentage
|
t3.pay_percentage
|
||||||
FROM order_sku t1
|
FROM order_sku t1
|
||||||
JOIN goods_order t2 ON t2.vendor_order_id = t1.vendor_order_id AND t2.vendor_id = t1.vendor_id
|
JOIN goods_order t2 ON t2.vendor_order_id = t1.vendor_order_id AND t2.vendor_id = t1.vendor_id
|
||||||
|
|||||||
@@ -342,7 +342,7 @@ func newGetStoreSkus2(db *DaoDB, vendorID, storeID int, skuIDs []int, mustDirty
|
|||||||
%s vendor_sku_id, t1.%s_sync_status sku_sync_status, t1.%s_price vendor_price, t1.%s_lock_time lock_time,
|
%s vendor_sku_id, 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.status_sale_begin,t1.status_sale_end,
|
t1.store_id, t1.deleted_at bind_deleted_at,t1.status_sale_begin,t1.status_sale_end,
|
||||||
t2.*,
|
t2.*,
|
||||||
t3.id name_id, t3.prefix, t3.name, t3.unit, t3.upc, t3.ex_prefix, t3.ex_prefix_begin, t3.ex_prefix_end,
|
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,
|
||||||
IF(t11.%s <> '', t11.%s, t3.img) img,
|
IF(t11.%s <> '', t11.%s, t3.img) img,
|
||||||
IF(t12.%s <> '', t12.%s, t3.img2) img2,
|
IF(t12.%s <> '', t12.%s, t3.img2) img2,
|
||||||
t13.%s desc_img,
|
t13.%s desc_img,
|
||||||
@@ -367,8 +367,8 @@ func newGetStoreSkus2(db *DaoDB, vendorID, storeID int, skuIDs []int, mustDirty
|
|||||||
sql += `
|
sql += `
|
||||||
FROM store_sku_bind t1
|
FROM store_sku_bind t1
|
||||||
JOIN store_map t14 ON t14.store_id = t1.store_id AND t14.vendor_id = ? AND t14.deleted_at = ?
|
JOIN store_map t14 ON t14.store_id = t1.store_id AND t14.vendor_id = ? AND t14.deleted_at = ?
|
||||||
LEFT JOIN sku t2 ON t1.sku_id = t2.id AND t2.deleted_at = ? AND t2.status = ?
|
LEFT JOIN sku t2 ON t1.sku_id = t2.id AND t2.deleted_at = ?/* AND t2.status = ?*/
|
||||||
LEFT JOIN sku_name t3 ON t2.name_id = t3.id AND t3.deleted_at = ? AND t3.status = ?
|
LEFT JOIN sku_name t3 ON t2.name_id = t3.id AND t3.deleted_at = ?/* AND t3.status = ?*/
|
||||||
LEFT JOIN sku_category t4 ON t3.category_id = t4.id AND t4.deleted_at = ?
|
LEFT JOIN sku_category t4 ON t3.category_id = t4.id AND t4.deleted_at = ?
|
||||||
LEFT JOIN data_resource t11 ON t11.main_url = t3.img
|
LEFT JOIN data_resource t11 ON t11.main_url = t3.img
|
||||||
LEFT JOIN data_resource t12 ON t12.main_url = t3.img2
|
LEFT JOIN data_resource t12 ON t12.main_url = t3.img2
|
||||||
@@ -376,8 +376,8 @@ func newGetStoreSkus2(db *DaoDB, vendorID, storeID int, skuIDs []int, mustDirty
|
|||||||
`
|
`
|
||||||
sqlParams := []interface{}{
|
sqlParams := []interface{}{
|
||||||
vendorID, utils.DefaultTimeValue,
|
vendorID, utils.DefaultTimeValue,
|
||||||
utils.DefaultTimeValue, model.SkuStatusNormal,
|
utils.DefaultTimeValue, // model.SkuStatusNormal,
|
||||||
utils.DefaultTimeValue, model.SkuStatusNormal,
|
utils.DefaultTimeValue, // model.SkuStatusNormal,
|
||||||
utils.DefaultTimeValue,
|
utils.DefaultTimeValue,
|
||||||
}
|
}
|
||||||
if isSingleStorePF {
|
if isSingleStorePF {
|
||||||
@@ -549,7 +549,7 @@ func newGetFullStoreSkus(db *DaoDB, vendorID, storeID int) (skus []*StoreSkuSync
|
|||||||
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,
|
||||||
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.ex_prefix, t3.ex_prefix_begin, t3.ex_prefix_end,
|
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,
|
||||||
IF(t11.%s <> '', t11.%s, t3.img) img,
|
IF(t11.%s <> '', t11.%s, t3.img) img,
|
||||||
IF(t12.%s <> '', t12.%s, t3.img2) img2,
|
IF(t12.%s <> '', t12.%s, t3.img2) img2,
|
||||||
t13.%s desc_img,
|
t13.%s desc_img,
|
||||||
@@ -557,7 +557,7 @@ func newGetFullStoreSkus(db *DaoDB, vendorID, storeID int) (skus []*StoreSkuSync
|
|||||||
t4m.sync_status cat_sync_status, t4m.vendor_thing_id vendor_cat_id,
|
t4m.sync_status cat_sync_status, t4m.vendor_thing_id vendor_cat_id,
|
||||||
t5skum.sync_status sku_cat_sync_status, t5skum.vendor_thing_id sku_vendor_cat_id
|
t5skum.sync_status sku_cat_sync_status, t5skum.vendor_thing_id sku_vendor_cat_id
|
||||||
FROM sku t2
|
FROM sku t2
|
||||||
JOIN sku_name t3 ON t2.name_id = t3.id AND t3.deleted_at = ? AND t3.status = ?
|
JOIN sku_name t3 ON t2.name_id = t3.id AND t3.deleted_at = ?/* AND t3.status = ?*/
|
||||||
JOIN sku_category t4 ON t3.category_id = t4.id AND t4.deleted_at = ?
|
JOIN sku_category t4 ON t3.category_id = t4.id AND t4.deleted_at = ?
|
||||||
JOIN store_map sm ON sm.vendor_id = ? AND sm.store_id = ? AND sm.deleted_at = ?
|
JOIN store_map sm ON sm.vendor_id = ? AND sm.store_id = ? AND sm.deleted_at = ?
|
||||||
JOIN thing_map t2m ON t2m.thing_id = t2.id AND t2m.vendor_org_code = sm.vendor_org_code AND t2m.thing_type = ? AND t2m.vendor_id = ? AND t2m.deleted_at = ?
|
JOIN thing_map t2m ON t2m.thing_id = t2.id AND t2m.vendor_org_code = sm.vendor_org_code AND t2m.thing_type = ? AND t2m.vendor_id = ? AND t2m.deleted_at = ?
|
||||||
@@ -568,17 +568,17 @@ func newGetFullStoreSkus(db *DaoDB, vendorID, storeID int) (skus []*StoreSkuSync
|
|||||||
LEFT JOIN data_resource t11 ON t11.main_url = t3.img
|
LEFT JOIN data_resource t11 ON t11.main_url = t3.img
|
||||||
LEFT JOIN data_resource t12 ON t12.main_url = t3.img2
|
LEFT JOIN data_resource t12 ON t12.main_url = t3.img2
|
||||||
LEFT JOIN data_resource t13 ON t13.main_url = t3.desc_img
|
LEFT JOIN data_resource t13 ON t13.main_url = t3.desc_img
|
||||||
WHERE t2.deleted_at = ? AND t2.status = ? AND t2m.vendor_thing_id <> ''
|
WHERE t2.deleted_at = ?/* AND t2.status = ?*/ AND t2m.vendor_thing_id <> ''
|
||||||
ORDER BY t1.price DESC`
|
ORDER BY t1.price DESC`
|
||||||
sqlParams := []interface{}{
|
sqlParams := []interface{}{
|
||||||
utils.DefaultTimeValue, model.SkuStatusNormal,
|
utils.DefaultTimeValue, // model.SkuStatusNormal,
|
||||||
utils.DefaultTimeValue,
|
utils.DefaultTimeValue,
|
||||||
vendorID, storeID, utils.DefaultTimeValue,
|
vendorID, storeID, utils.DefaultTimeValue,
|
||||||
model.ThingTypeSku, vendorID, utils.DefaultTimeValue,
|
model.ThingTypeSku, vendorID, utils.DefaultTimeValue,
|
||||||
model.ThingTypeCategory, vendorID, utils.DefaultTimeValue,
|
model.ThingTypeCategory, vendorID, utils.DefaultTimeValue,
|
||||||
utils.DefaultTimeValue,
|
utils.DefaultTimeValue,
|
||||||
model.ThingTypeCategory, vendorID, utils.DefaultTimeValue,
|
model.ThingTypeCategory, vendorID, utils.DefaultTimeValue,
|
||||||
utils.DefaultTimeValue, model.SkuStatusNormal,
|
utils.DefaultTimeValue, // model.SkuStatusNormal,
|
||||||
}
|
}
|
||||||
fieldPrefix := ConvertDBFieldPrefix(model.VendorNames[vendorID])
|
fieldPrefix := ConvertDBFieldPrefix(model.VendorNames[vendorID])
|
||||||
sql = fmt.Sprintf(sql,
|
sql = fmt.Sprintf(sql,
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ var (
|
|||||||
skuActTypeMap = map[string]int{
|
skuActTypeMap = map[string]int{
|
||||||
ebaiapi.OrderSkuDiscountTypeZhe: 1,
|
ebaiapi.OrderSkuDiscountTypeZhe: 1,
|
||||||
ebaiapi.OrderSkuDiscountTypeReduce: 1,
|
ebaiapi.OrderSkuDiscountTypeReduce: 1,
|
||||||
|
ebaiapi.OrderSkuDiscountTypeTe: 1,
|
||||||
}
|
}
|
||||||
deliveryTypeMap = map[int]string{
|
deliveryTypeMap = map[int]string{
|
||||||
ebaiapi.DeliveryPartyFengElmSelf: model.OrderDeliveryTypeStoreSelf,
|
ebaiapi.DeliveryPartyFengElmSelf: model.OrderDeliveryTypeStoreSelf,
|
||||||
|
|||||||
@@ -83,6 +83,9 @@ dingdingCallbackToken = "j9JMGyaZs&vxqt&S"
|
|||||||
dingdingCallbackURL = "http://callback.test.jxc4.com/dingding/msg"
|
dingdingCallbackURL = "http://callback.test.jxc4.com/dingding/msg"
|
||||||
dingdingCorpID = "ding7ab5687f3784a8db"
|
dingdingCorpID = "ding7ab5687f3784a8db"
|
||||||
|
|
||||||
|
alipayAppID = "2019110769024042"
|
||||||
|
alipayPrivateKey = "MIIEpAIBAAKCAQEAnsbBe0lrK5c4/xhb7ZLDWjGRWmIaj7HyV4LQ9X4EcTV5I5IKLezH1YaNLXytD/VXc5NsJp9IDTFLyOYdXee8lJxAeSQbuBBy1+xLd6qK2JQdVUGP3RZ0pAwVZSc9m0JKj5pYEeA2lvgh4NhSfGEw4BdZacpiDjFWkrQYl+RZkl/eIH2w7sA4wXs/hLSnPiG0VRtLtyYzfGCQdEJNjP5PA6V6CJTd68qTytLnpuaTuVxIYHGGSNd08694b1wOuGpFv6YK+mZkfaGkFoEpp3gUhEQ05duKjNBY71f0ez/Fym7GQYdHNXlsIvCmGQzklkfvQkHj7+MvPpsME4PkqQjRgwIDAQABAoIBAHLzwzDXPtgYbBOEN0oRb43lRS8Cx+gxFRt2goK58c1kwYeXO/dz7loRSDUehs1++wmaOjrcJvYmMpAIykoqdMXDOop6MfdZMUxSr3C78DpNQc9v4BBZKal7diH9/wRhQkolnI2UnvE+RIjdFRsn4pLbVMja1ZMg9WTRLt0JXjAyQZus9pADWADK12OSEIHBvz7/+kiFpq0aM+KPMElQG/mSDg1ESmzfYEbXYmPoiMwU+9frtnprrNdG9h143pb7mdzbXTt/8DbmpFgCfKL7ItpsC3VcZFDsj1Sd3gewrU+FLifH6oPGHTiwEoHNIn5m0RdPVEFoQnQxZnqxzDVBVYECgYEA5zCnBZBLotumxVdIRwncAXKEV5nMHJV2NKVmAc20vHJTsmI4/kA9B2Bjx9jzwwctBzFp1pIadccSbFO48Z5Hn0NdwYOnqba9W50n6R7wO3SnqQuCaoyTAvfkcjrZjZqq88Opa9tKGjD69MFFa+mnK7O7s8B7X6hCa/h80s0zDmkCgYEAr9C5yACb0haAp1WkuYf0B2TyPIofhYOXsjHcJqref+mDHgXSqPntYsXl/RVpJJSAGXJ/CnPd+jHQ0Fis2LuNpZ6ntYzcGoTQtnXx8BdQsnyEjyAvzxWv2JJV12zoSTEW7HL078qqEgbzmort6A8edRiv0kIoNf054QAtv/C9OwsCgYBPATVSlWkDkoR/U8CDZj8kz3miZhB2hC0M+KjPXPiynW80upQ3bsRsTOhMVzuWHlGo7533kZ4xOYJ2OnYtO6XGK0NS6ibVvHkhYadN5yC5cLgK8L/0oW1rykLrNmk6FuzsuKShEyNTqAFauuF6azKRoK44U0LWAa4RL62YbD9SYQKBgQCD0Qp5WXt6WES9MQj/0V607IpxuV1IzRC/GYLlutZ3MKyNpe/7oObKV3XH+nWKZ4xjh+SYAac8Hn1guBtfo77fncQ/6gxcFZgmNOfgCpsGNzVr2cX+jVP6HD0f9xdxSMzXGplp75jzSyL5i5AznKJJSOkJy3A6ilEK0Qd8ERLPYQKBgQC/QSV0c71x3nYz3koOQv7s36i5R0jeHnadSMyGUlrYmn/TaXj0KaUaEYRcgJyWB/dxy3cde8EKlqg0q80Zc6ExkZKhpO6k1lj9Bta+l+KAyVFroYDIy/b0Wukr2qV1mkMK0FQ0X2hVbv6TJBq5RMNeYAy1shOeWIwaS5muSYm4Ig=="
|
||||||
|
|
||||||
feieUser = "jianhua.xu@rosy.net.cn"
|
feieUser = "jianhua.xu@rosy.net.cn"
|
||||||
feieKey = "2JfKh8TyheQ9mwss"
|
feieKey = "2JfKh8TyheQ9mwss"
|
||||||
|
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ func (c *Auth2Controller) SendVerifyCode() {
|
|||||||
|
|
||||||
// @Title 登录接口
|
// @Title 登录接口
|
||||||
// @Description 登录接口(微信与公众号登录不能直接调用此接口)
|
// @Description 登录接口(微信与公众号登录不能直接调用此接口)
|
||||||
// @Param authType formData string true "登录类型,当前支持[localpass:本地账号密码,mobile:手机短信,wxqrcode:微信登录,weixinsns:微信公众号,weixinmini;小程序,ddstaff:钉钉企业,ddqrcode:钉钉扫码]"
|
// @Param authType formData string true "登录类型,当前支持[localpass:本地账号密码,mobile:手机短信,wxqrcode:微信登录,weixinsns:微信公众号,weixinmini;小程序,ddstaff:钉钉企业,ddqrcode:钉钉扫码,alipaycode:支付宝小程序]"
|
||||||
// @Param authSecret formData string true "不同登录类型的登录秘密,如果是localpass登录类型,是md5后的值(空串不要md5)"
|
// @Param authSecret formData string true "不同登录类型的登录秘密,如果是localpass登录类型,是md5后的值(空串不要md5)"
|
||||||
// @Param authID formData string false "登录ID,登录类型为localpass时依赖于authIDType,其它为相应登录类型的id"
|
// @Param authID formData string false "登录ID,登录类型为localpass时依赖于authIDType,其它为相应登录类型的id"
|
||||||
// @Param authIDType formData string false "只有在登录类型为localpass时,才有意义,分别为:userid2:用户名,email,mobile"
|
// @Param authIDType formData string false "只有在登录类型为localpass时,才有意义,分别为:userid2:用户名,email,mobile"
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import (
|
|||||||
aliyunsmsclient "github.com/KenmyZhang/aliyun-communicate"
|
aliyunsmsclient "github.com/KenmyZhang/aliyun-communicate"
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/platformapi"
|
"git.rosy.net.cn/baseapi/platformapi"
|
||||||
|
"git.rosy.net.cn/baseapi/platformapi/alipayapi"
|
||||||
"git.rosy.net.cn/baseapi/platformapi/autonavi"
|
"git.rosy.net.cn/baseapi/platformapi/autonavi"
|
||||||
"git.rosy.net.cn/baseapi/platformapi/baidunavi"
|
"git.rosy.net.cn/baseapi/platformapi/baidunavi"
|
||||||
"git.rosy.net.cn/baseapi/platformapi/dadaapi"
|
"git.rosy.net.cn/baseapi/platformapi/dadaapi"
|
||||||
@@ -50,6 +51,8 @@ var (
|
|||||||
|
|
||||||
WeixinPageAPI *weixinapi.API // 用户微信扫码登录
|
WeixinPageAPI *weixinapi.API // 用户微信扫码登录
|
||||||
|
|
||||||
|
AliPayAPI *alipayapi.API
|
||||||
|
|
||||||
AutonaviAPI *autonavi.API
|
AutonaviAPI *autonavi.API
|
||||||
BaiDuNaviAPI *baidunavi.API
|
BaiDuNaviAPI *baidunavi.API
|
||||||
QiniuAPI *qbox.Mac
|
QiniuAPI *qbox.Mac
|
||||||
@@ -168,6 +171,10 @@ func Init() {
|
|||||||
DingDingAPI = dingdingapi.NewWithAgentID(beego.AppConfig.DefaultInt64("dingdingAgentID", 0), beego.AppConfig.DefaultString("dingdingCorpID", ""), beego.AppConfig.DefaultString("dingdingAppKey", ""), beego.AppConfig.DefaultString("dingdingSecret", ""))
|
DingDingAPI = dingdingapi.NewWithAgentID(beego.AppConfig.DefaultInt64("dingdingAgentID", 0), beego.AppConfig.DefaultString("dingdingCorpID", ""), beego.AppConfig.DefaultString("dingdingAppKey", ""), beego.AppConfig.DefaultString("dingdingSecret", ""))
|
||||||
DingDingQRCodeAPI = dingdingapi.New(beego.AppConfig.DefaultString("dingdingCorpID", ""), beego.AppConfig.DefaultString("dingdingQRCodeAppKey", ""), beego.AppConfig.DefaultString("dingdingQRCodeSecret", ""))
|
DingDingQRCodeAPI = dingdingapi.New(beego.AppConfig.DefaultString("dingdingCorpID", ""), beego.AppConfig.DefaultString("dingdingQRCodeAppKey", ""), beego.AppConfig.DefaultString("dingdingQRCodeSecret", ""))
|
||||||
|
|
||||||
|
if alipayAppID := beego.AppConfig.DefaultString("alipayAppID", ""); alipayAppID != "" {
|
||||||
|
AliPayAPI = alipayapi.New(alipayAppID, []byte(beego.AppConfig.String("alipayPrivateKey")))
|
||||||
|
}
|
||||||
|
|
||||||
FeieAPI = feieapi.New(beego.AppConfig.DefaultString("feieUser", ""), beego.AppConfig.DefaultString("feieKey", ""))
|
FeieAPI = feieapi.New(beego.AppConfig.DefaultString("feieUser", ""), beego.AppConfig.DefaultString("feieKey", ""))
|
||||||
XiaoWMAPI = xiaowmapi.New(beego.AppConfig.DefaultInt("xiaoWMAppID", 0), beego.AppConfig.DefaultString("xiaoWMAppKey", ""))
|
XiaoWMAPI = xiaowmapi.New(beego.AppConfig.DefaultInt("xiaoWMAppID", 0), beego.AppConfig.DefaultString("xiaoWMAppKey", ""))
|
||||||
YilianyunAPI = yilianyunapi.New(beego.AppConfig.DefaultString("yilianyunClientID", ""), beego.AppConfig.DefaultString("yilianyunClientSecret", ""))
|
YilianyunAPI = yilianyunapi.New(beego.AppConfig.DefaultString("yilianyunClientID", ""), beego.AppConfig.DefaultString("yilianyunClientSecret", ""))
|
||||||
|
|||||||
8
main.go
8
main.go
@@ -33,11 +33,17 @@ import (
|
|||||||
_ "git.rosy.net.cn/jx-callback/business/partner/printer/zhongwu"
|
_ "git.rosy.net.cn/jx-callback/business/partner/printer/zhongwu"
|
||||||
|
|
||||||
_ "git.rosy.net.cn/jx-callback/business/partner/purchase/ebai"
|
_ "git.rosy.net.cn/jx-callback/business/partner/purchase/ebai"
|
||||||
_ "git.rosy.net.cn/jx-callback/business/partner/purchase/jx"
|
|
||||||
_ "git.rosy.net.cn/jx-callback/business/partner/purchase/jd"
|
_ "git.rosy.net.cn/jx-callback/business/partner/purchase/jd"
|
||||||
|
_ "git.rosy.net.cn/jx-callback/business/partner/purchase/jx"
|
||||||
_ "git.rosy.net.cn/jx-callback/business/partner/purchase/mtwm"
|
_ "git.rosy.net.cn/jx-callback/business/partner/purchase/mtwm"
|
||||||
_ "git.rosy.net.cn/jx-callback/business/partner/purchase/weimob/wsc"
|
_ "git.rosy.net.cn/jx-callback/business/partner/purchase/weimob/wsc"
|
||||||
|
|
||||||
|
_ "git.rosy.net.cn/jx-callback/business/auth2/authprovider/alipay"
|
||||||
|
_ "git.rosy.net.cn/jx-callback/business/auth2/authprovider/dingding"
|
||||||
|
_ "git.rosy.net.cn/jx-callback/business/auth2/authprovider/mobile"
|
||||||
|
_ "git.rosy.net.cn/jx-callback/business/auth2/authprovider/password"
|
||||||
|
_ "git.rosy.net.cn/jx-callback/business/auth2/authprovider/weixin"
|
||||||
|
|
||||||
_ "git.rosy.net.cn/jx-callback/business/jxstore/act"
|
_ "git.rosy.net.cn/jx-callback/business/jxstore/act"
|
||||||
|
|
||||||
_ "git.rosy.net.cn/jx-callback/routers"
|
_ "git.rosy.net.cn/jx-callback/routers"
|
||||||
|
|||||||
Reference in New Issue
Block a user