aa
This commit is contained in:
@@ -649,6 +649,7 @@ func (c *OrderManager) updateOrderOtherInfo(order *model.GoodsOrder, db *dao.Dao
|
|||||||
order.EarningType = model.EarningTypeQuote
|
order.EarningType = model.EarningTypeQuote
|
||||||
}
|
}
|
||||||
order.OrderPayPercentage = payPercentage
|
order.OrderPayPercentage = payPercentage
|
||||||
|
order.CreateDeliveryType = storeDetail.CreateDeliveryType
|
||||||
}
|
}
|
||||||
if err = c.updateOrderSkuOtherInfo(order, db, payPercentage, changePriceType); err == nil {
|
if err = c.updateOrderSkuOtherInfo(order, db, payPercentage, changePriceType); err == nil {
|
||||||
jxutils.RefreshOrderSkuRelated(order)
|
jxutils.RefreshOrderSkuRelated(order)
|
||||||
|
|||||||
@@ -155,6 +155,18 @@ func (s *DefScheduler) CreateWaybillOnProvidersEx(ctx *jxcontext.Context, vendor
|
|||||||
if order.DeliveryType == model.OrderDeliveryTypeSelfTake {
|
if order.DeliveryType == model.OrderDeliveryTypeSelfTake {
|
||||||
return nil, fmt.Errorf("订单:%s是自提单", vendorOrderID)
|
return nil, fmt.Errorf("订单:%s是自提单", vendorOrderID)
|
||||||
}
|
}
|
||||||
|
//1表示为门店发单,需要验证门店账户余额情况
|
||||||
|
if order.CreateDeliveryType == model.YES {
|
||||||
|
//暂时这么认为,len courierVendorIDs 为1表示是老板或者运营从小程序上点的立即发单,因为小程序上是点哪个发哪个
|
||||||
|
//京西后台则是点一下发3个,len courierVendorIDs 是0
|
||||||
|
//如果是小程序上点哪个扣哪个平台的钱
|
||||||
|
//如果是后台,则选最高的那个扣
|
||||||
|
if len(courierVendorIDs) == 1 {
|
||||||
|
|
||||||
|
} else if len(courierVendorIDs) == 0 {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
if !forceCreate {
|
if !forceCreate {
|
||||||
err = s.isPossibleSwitch2SelfDelivery(order)
|
err = s.isPossibleSwitch2SelfDelivery(order)
|
||||||
}
|
}
|
||||||
|
|||||||
107
business/jxstore/cms/store_acct.go
Normal file
107
business/jxstore/cms/store_acct.go
Normal file
@@ -0,0 +1,107 @@
|
|||||||
|
package cms
|
||||||
|
|
||||||
|
import (
|
||||||
|
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/partner"
|
||||||
|
)
|
||||||
|
|
||||||
|
type StoreAcctManager struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
FixedStoreAcctManager *StoreAcctManager
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
FixedStoreAcctManager = &StoreAcctManager{}
|
||||||
|
partner.InitStoreAcctManager(FixedStoreAcctManager)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *StoreAcctManager) InsertStoreAcctIncome(ctx *jxcontext.Context, db *dao.DaoDB, storeID, price, acctType int) (err error) {
|
||||||
|
storeAcctIncome := &model.StoreAcctIncome{
|
||||||
|
StoreID: storeID,
|
||||||
|
IncomePrice: price,
|
||||||
|
Type: acctType,
|
||||||
|
UserID: ctx.GetUserID(),
|
||||||
|
}
|
||||||
|
dao.WrapAddIDCULEntity(storeAcctIncome, ctx.GetUserName())
|
||||||
|
err = dao.CreateEntity(db, storeAcctIncome)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *StoreAcctManager) InsertStoreAcctExpend(ctx *jxcontext.Context, db *dao.DaoDB, storeID, price, acctType int, vendorOrderID string) (err error) {
|
||||||
|
storeAcctExpend := &model.StoreAcctExpend{
|
||||||
|
StoreID: storeID,
|
||||||
|
ExpendPrice: price,
|
||||||
|
Type: acctType,
|
||||||
|
UserID: ctx.GetUserID(),
|
||||||
|
VendorOrderID: vendorOrderID,
|
||||||
|
}
|
||||||
|
dao.WrapAddIDCULEntity(storeAcctExpend, ctx.GetUserName())
|
||||||
|
err = dao.CreateEntity(db, storeAcctExpend)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *StoreAcctManager) UpdateStoreAcctBalance(ctx *jxcontext.Context, storeID, price int, isIncome bool) (err error) {
|
||||||
|
var (
|
||||||
|
db = dao.GetDB()
|
||||||
|
)
|
||||||
|
storeAcct := &model.StoreAcct{
|
||||||
|
StoreID: storeID,
|
||||||
|
}
|
||||||
|
if isIncome {
|
||||||
|
storeAcct.AccountBalance += price
|
||||||
|
} else {
|
||||||
|
storeAcct.AccountBalance -= price
|
||||||
|
}
|
||||||
|
dao.Begin(db)
|
||||||
|
defer func() {
|
||||||
|
if r := recover(); r != nil || err != nil {
|
||||||
|
dao.Rollback(db)
|
||||||
|
if r != nil {
|
||||||
|
panic(r)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
if err = dao.GetEntity(db, storeAcct, "StoreID"); err != nil && dao.IsNoRowsError(err) {
|
||||||
|
//新增门店账单
|
||||||
|
dao.WrapAddIDCULEntity(storeAcct, ctx.GetUserName())
|
||||||
|
if err = dao.CreateEntity(db, storeAcct); err != nil {
|
||||||
|
dao.Rollback(db)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if _, err = dao.UpdateEntity(db, storeAcct, "AccountBalance"); err != nil {
|
||||||
|
dao.Rollback(db)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dao.Commit(db)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *StoreAcctManager) InsertStoreAcctExpendAndUpdateStoreAcctBalance(ctx *jxcontext.Context, storeID, price, acctType int, vendorOrderID string) (err error) {
|
||||||
|
var (
|
||||||
|
db = dao.GetDB()
|
||||||
|
)
|
||||||
|
if err = s.InsertStoreAcctExpend(ctx, db, storeID, price, acctType, vendorOrderID); err == nil {
|
||||||
|
s.UpdateStoreAcctBalance(ctx, storeID, price, false)
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *StoreAcctManager) InsertStoreAcctIncomeAndUpdateStoreAcctBalance(ctx *jxcontext.Context, storeID, price, acctType int) (err error) {
|
||||||
|
var (
|
||||||
|
db = dao.GetDB()
|
||||||
|
)
|
||||||
|
if err = s.InsertStoreAcctIncome(ctx, db, storeID, price, acctType); err == nil {
|
||||||
|
s.UpdateStoreAcctBalance(ctx, storeID, price, true)
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *StoreAcctManager) CheckStoreAcctExpendExist(storeID int, vendorOrderID string) (result bool, err error) {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
@@ -27,6 +27,7 @@ type StoreDetail struct {
|
|||||||
PricePercentage int16 `orm:"default(100)" json:"pricePercentage"` // todo 厂商价格相对于本地价格的百分比,这个字段的修改会比较特殊,因为可能需要刷新厂商价格
|
PricePercentage int16 `orm:"default(100)" json:"pricePercentage"` // todo 厂商价格相对于本地价格的百分比,这个字段的修改会比较特殊,因为可能需要刷新厂商价格
|
||||||
PricePercentagePackStr string `orm:"size(4096)" json:"-"` //
|
PricePercentagePackStr string `orm:"size(4096)" json:"-"` //
|
||||||
PricePercentagePackObj model.PricePercentagePack `orm:"-" json:"-"`
|
PricePercentagePackObj model.PricePercentagePack `orm:"-" json:"-"`
|
||||||
|
CreateDeliveryType int `orm:"default(0)" json:"createDeliveryType"` //默认0系统发单,1为门店发单
|
||||||
|
|
||||||
FreightDeductionPackStr string `orm:"size(4096)" json:"-"` //
|
FreightDeductionPackStr string `orm:"size(4096)" json:"-"` //
|
||||||
FreightDeductionPackObj *model.FreightDeductionPack `orm:"-" json:"-"`
|
FreightDeductionPackObj *model.FreightDeductionPack `orm:"-" json:"-"`
|
||||||
@@ -110,7 +111,7 @@ func getStoreDetail(db *DaoDB, storeID, vendorID int, vendorStoreID, vendorOrgCo
|
|||||||
SELECT t1.*,
|
SELECT t1.*,
|
||||||
t2.vendor_store_id, t2.status vendor_status, t2.delivery_fee_deduction_sill, t2.delivery_fee_deduction_fee, t2.sync_status, t2.vendor_org_code,
|
t2.vendor_store_id, t2.status vendor_status, t2.delivery_fee_deduction_sill, t2.delivery_fee_deduction_fee, t2.sync_status, t2.vendor_org_code,
|
||||||
t2.price_percentage, t2.auto_pickup, t2.delivery_type, t2.delivery_competition, t2.is_sync, t2.vendor_store_name, t2.is_order, t2.yb_app_id, t2.yb_app_key, t2.yb_store_prefix,
|
t2.price_percentage, t2.auto_pickup, t2.delivery_type, t2.delivery_competition, t2.is_sync, t2.vendor_store_name, t2.is_order, t2.yb_app_id, t2.yb_app_key, t2.yb_store_prefix,
|
||||||
t2.jds_street_code, t2.jds_street_name, t2.is_supply_goods, t2.vendor_pay_percentage, t2.mtwm_token, t2.ebai_supplier_id,
|
t2.jds_street_code, t2.jds_street_name, t2.is_supply_goods, t2.vendor_pay_percentage, t2.mtwm_token, t2.ebai_supplier_id, t2.create_delivery_type,
|
||||||
t3.value price_percentage_pack_str,
|
t3.value price_percentage_pack_str,
|
||||||
t4.value freight_deduction_pack_str,
|
t4.value freight_deduction_pack_str,
|
||||||
province.name province_name,
|
province.name province_name,
|
||||||
|
|||||||
@@ -824,6 +824,7 @@ type StoreAcctExpend struct {
|
|||||||
ModelIDCUL
|
ModelIDCUL
|
||||||
|
|
||||||
StoreID int `orm:"column(store_id)" json:"storeID"` //门店ID
|
StoreID int `orm:"column(store_id)" json:"storeID"` //门店ID
|
||||||
|
VendorOrderID string `orm:"column(vendor_order_id);size(48)" json:"vendorOrderID"`
|
||||||
UserID string `orm:"column(user_id)" json:"userID"` //用户ID (谁消费的)
|
UserID string `orm:"column(user_id)" json:"userID"` //用户ID (谁消费的)
|
||||||
Type int `json:"type"` //支出类型
|
Type int `json:"type"` //支出类型
|
||||||
ExpendPrice int `json:"expendPrice"` //支出金额
|
ExpendPrice int `json:"expendPrice"` //支出金额
|
||||||
|
|||||||
30
business/partner/partner_store_acct.go
Normal file
30
business/partner/partner_store_acct.go
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
package partner
|
||||||
|
|
||||||
|
import (
|
||||||
|
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
StoreAcctType1 = 1 //主动充值
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
CurStoreAcctManager IStoreAcctManager
|
||||||
|
)
|
||||||
|
|
||||||
|
func InitStoreAcctManager(curStoreManager IStoreAcctManager) {
|
||||||
|
CurStoreAcctManager = curStoreManager
|
||||||
|
}
|
||||||
|
|
||||||
|
type IStoreAcctManager interface {
|
||||||
|
//增加一条收入流水
|
||||||
|
InsertStoreAcctIncome(ctx *jxcontext.Context, db *dao.DaoDB, storeID, price, acctType int) (err error)
|
||||||
|
//增加一条支出流水
|
||||||
|
InsertStoreAcctExpend(ctx *jxcontext.Context, db *dao.DaoDB, storeID, price, acctType int, vendorOrderID string) (err error)
|
||||||
|
//更新门店账户
|
||||||
|
UpdateStoreAcctBalance(ctx *jxcontext.Context, storeID, price int, isIncome bool) (err error)
|
||||||
|
InsertStoreAcctExpendAndUpdateStoreAcctBalance(ctx *jxcontext.Context, storeID, price, acctType int, vendorOrderID string) (err error)
|
||||||
|
InsertStoreAcctIncomeAndUpdateStoreAcctBalance(ctx *jxcontext.Context, storeID, price, acctType int) (err error)
|
||||||
|
CheckStoreAcctExpendExist(storeID int, vendorOrderID string) (result bool, err error)
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user