From cb0f8c20017e6a411a4a4e503c6c7d252af80af5 Mon Sep 17 00:00:00 2001 From: suyl <770236076@qq.com> Date: Thu, 24 Jun 2021 16:18:07 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E4=B8=80=E4=BA=9Bmodel?= =?UTF-8?q?=E5=92=8Cdao=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/cms.go | 5 - business/jxstore/cms/user2.go | 106 ----- business/jxstore/event/event.go | 77 ---- business/jxstore/financial/bill.go | 166 -------- business/jxstore/financial/pay.go | 105 ----- business/jxutils/jxutils.go | 27 -- business/jxutils/jxutils_act.go | 41 -- business/model/api.go | 18 - business/model/dao/act.go | 499 ---------------------- business/model/dao/act_test.go | 54 --- business/model/dao/dao_order.go | 654 ----------------------------- business/model/dao/dao_user.go | 13 - 12 files changed, 1765 deletions(-) delete mode 100644 business/jxutils/jxutils_act.go delete mode 100644 business/model/dao/act.go delete mode 100644 business/model/dao/act_test.go delete mode 100644 business/model/dao/dao_order.go diff --git a/business/jxstore/cms/cms.go b/business/jxstore/cms/cms.go index c610a6e6d..3c1947341 100644 --- a/business/jxstore/cms/cms.go +++ b/business/jxstore/cms/cms.go @@ -60,13 +60,8 @@ func InitServiceInfo(version string, buildTime time.Time, gitCommit string) { "purchaseVendorInfo": model.PurchaseVendorInfo, "afsReasonTypeName": model.AfsReasonTypeName, "afsAppealTypeName": model.AfsAppealTypeName, - "actTypeName": model.ActTypeName, - "actStatusName": model.ActStatusName, - "actCreateTypeName": model.ActCreateTypeName, "configTypeName": model.ConfigTypeName, "userTypeName": model.UserTypeName, - "payStatusName": model.PayStatusName, - "refundStatusName": model.RefundStatusName, "complaintReasons": model.ComplaintReasons, "supplementType": model.SupplementTypeName, "operateType": model.OperateTypeName, diff --git a/business/jxstore/cms/user2.go b/business/jxstore/cms/user2.go index be978c26a..5bf764207 100644 --- a/business/jxstore/cms/user2.go +++ b/business/jxstore/cms/user2.go @@ -8,8 +8,6 @@ import ( "git.rosy.net.cn/jx-callback/business/jxstore/event" - "git.rosy.net.cn/jx-callback/business/jxstore/financial" - "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/auth2" "git.rosy.net.cn/jx-callback/business/jxutils" @@ -356,26 +354,6 @@ func LoadUserCart(ctx *jxcontext.Context, userID string, storeIDs []int) (cartIt return cartItems, err } -func GetSelfInfo(ctx *jxcontext.Context) (getSelfInfoResult *dao.GetSelfInfoResult, err error) { - tokenInfo, err := auth2.GetTokenInfo(ctx.GetToken()) - if err == nil { - if getSelfInfoResult, err = dao.GetUserByIDWithMembers(dao.GetDB(), "user_id", tokenInfo.GetID()); err == nil { - if userMembers, err3 := dao.GetUserMember(dao.GetDB(), getSelfInfoResult.User.UserID, 0); err3 == nil { - getSelfInfoResult.UserMembers = userMembers - } else { - err = err3 - } - if price, err := dao.GetUserAllWaitCashPrice(dao.GetDB(), getSelfInfoResult.User.UserID); err == nil { - getSelfInfoResult.WaitCashPrice = price - } - if price, err := dao.GetUserAllWaitRealCashPrice(dao.GetDB(), getSelfInfoResult.User.UserID); err == nil { - getSelfInfoResult.WaitRealCashPrice = price - } - } - } - return getSelfInfoResult, err -} - func RefreshUserMemberStatus(ctx *jxcontext.Context) (err error) { var ( db = dao.GetDB() @@ -390,90 +368,6 @@ func RefreshUserMemberStatus(ctx *jxcontext.Context) (err error) { return err } -func InvestMember(ctx *jxcontext.Context, memberID int, userID string, isFree bool) (errCode string, err error) { - var ( - db = dao.GetDB() - memberCards []*model.MemberCard - memberCard *model.MemberCard - userIDReal string - ) - if !isFree { - userIDReal = ctx.GetUserID() - } else { - userIDReal = userID - } - userMembers, err := dao.GetUserMember(db, userIDReal, model.MemberTypeNormal) - configList, err := dao.QueryConfigs(db, model.ConfigTypeName[model.ConfigTypeMemberCard], model.ConfigTypeMemberCard, "") - userBill, err := dao.GetUserBill(db, userIDReal, "") - if len(configList) <= 0 { - return "", fmt.Errorf("未找到会员卡配置!") - } - config := configList[0] - err = jxutils.Strings2Objs(config.Value, &memberCards) - if err != nil { - return "", err - } - for _, v := range memberCards { - if v.ID == memberID { - memberCard = v - } - } - if !isFree { - //验证微信绑定 - if err = auth2.CheckWeixinminiAuthBind(userIDReal); err != nil { - return "", err - } - if userBill.AccountBalance < memberCard.Price { - return model.ErrCodeAccountBalanceNotEnough, fmt.Errorf("用户余额不足,请充值!") - } - } - txDB, _ := dao.Begin(db) - defer func() { - if r := recover(); r != nil { - dao.Rollback(db, txDB) - panic(r) - } - }() - //证明已经开了会员了,相当于续费 - if len(userMembers) > 0 { - userMember := userMembers[0] - if memberID == model.MemberCardTypeMonth { - userMember.EndAt = userMember.EndAt.AddDate(0, 1, 0) - } else { - userMember.EndAt = userMember.EndAt.AddDate(1, 0, 0) - } - if _, err = dao.UpdateEntity(db, userMember, "EndAt"); err != nil { - dao.Rollback(db, txDB) - return - } - } else { - userMember2 := &model.UserMember{ - UserID: userIDReal, - MemberType: model.MemberTypeNormal, - MemberTypeID: memberID, - } - if memberID == model.MemberCardTypeMonth { - userMember2.EndAt = time.Now().AddDate(0, 1, 0) - } else { - userMember2.EndAt = time.Now().AddDate(1, 0, 0) - } - dao.WrapAddIDCULDEntity(userMember2, ctx.GetUserName()) - if err = dao.CreateEntity(db, userMember2); err != nil { - dao.Rollback(db, txDB) - return - } - } - if !isFree { - //支出明细 - if err = financial.AddExpendUpdateAccount(txDB, userBill, model.BillTypeMember, memberCard.Price, 0); err != nil { - dao.Rollback(db, txDB) - return - } - } - dao.Commit(db, txDB) - return errCode, err -} - func UpdateUser(ctx *jxcontext.Context, payload map[string]interface{}) (err error) { var ( db = dao.GetDB() diff --git a/business/jxstore/event/event.go b/business/jxstore/event/event.go index f47a6f85d..9b3932a5f 100644 --- a/business/jxstore/event/event.go +++ b/business/jxstore/event/event.go @@ -8,7 +8,6 @@ import ( "time" "git.rosy.net.cn/baseapi/utils" - "git.rosy.net.cn/jx-callback/business/jxstore/financial" "git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/model" @@ -554,82 +553,6 @@ func UpdateMessageGroup(ctx *jxcontext.Context, groupID int, payload map[string] return num, err } -func DeleteMessageGroup(ctx *jxcontext.Context, groupID int, userID string, flag bool) (errCode string, err error) { - var ( - db = dao.GetDB() - messageGroup = &model.MessageGroup{ - GroupID: groupID, - } - ) - if err = dao.GetEntity(db, messageGroup, "GroupID"); err != nil { - return errCode, err - } - //解散群 - if flag { - if messageGroup.UserID != ctx.GetUserID() { - return errCode, fmt.Errorf("只有群主才能解散群!") - } - messageGroup.DeletedAt = time.Now() - messageGroup.LastOperator = ctx.GetUserName() - dao.UpdateEntity(db, messageGroup, "DeletedAt", "LastOperator") - messageGroupMembers, _ := dao.GetMessageGroupMembers(db, groupID, 0, "") - for _, v := range messageGroupMembers { - v.DeletedAt = time.Now() - v.LastOperator = ctx.GetUserName() - dao.UpdateEntity(db, v, "DeletedAt", "LastOperator") - } - } else { - //token中用户与传入user不一致就判定为踢人 - if ctx.GetUserID() != userID { - if messageGroup.UserID != ctx.GetUserID() { - messageGroupMembers, err := dao.GetMessageGroupMembers(db, groupID, 0, ctx.GetUserID()) - if err != nil { - return errCode, err - } - if messageGroupMembers[0].Type == model.GroupMemberTypeNormal { - return errCode, fmt.Errorf("只有创建者和管理员才能踢人!") - } - } - } else { - quitPrice := messageGroup.QuitPrice - userBill, err := dao.GetUserBill(db, userID, "") - userBillGroupMaster, err := dao.GetUserBill(db, messageGroup.UserID, "") - if err != nil { - return errCode, err - } - if userBill.AccountBalance < quitPrice { - return model.ErrCodeAccountBalanceNotEnough, fmt.Errorf("用户余额不足,请充值!") - } - txDB, _ := dao.Begin(db) - defer func() { - if r := recover(); r != nil { - dao.Rollback(db, txDB) - panic(r) - } - }() - //账户支出 - if err = financial.AddExpendUpdateAccount(txDB, userBill, model.BillTypeQuitGroup, quitPrice, 0); err != nil { - dao.Rollback(db, txDB) - return errCode, err - } - //群主收到退团金额 - if err = financial.AddIncomeUpdateAccount(txDB, userBillGroupMaster, model.BillTypeQuitGroup, quitPrice, 0); err != nil { - dao.Rollback(db, txDB) - return errCode, err - } - dao.Commit(db, txDB) - } - messageGroupMembers, err := dao.GetMessageGroupMembers(db, groupID, 0, userID) - if err != nil { - return errCode, err - } - messageGroupMembers[0].DeletedAt = time.Now() - messageGroupMembers[0].LastOperator = ctx.GetUserName() - dao.UpdateEntity(db, messageGroupMembers[0], "DeletedAt", "LastOperator") - } - return errCode, err -} - func TransferMessageGroupMaster(ctx *jxcontext.Context, groupID int, userID string) (err error) { var ( db = dao.GetDB() diff --git a/business/jxstore/financial/bill.go b/business/jxstore/financial/bill.go index e5ef71dad..6ced8cbff 100644 --- a/business/jxstore/financial/bill.go +++ b/business/jxstore/financial/bill.go @@ -1,167 +1 @@ package financial - -import ( - "git.rosy.net.cn/baseapi/utils" - "git.rosy.net.cn/jx-callback/business/jxutils" - "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" - "github.com/astaxie/beego/client/orm" - "time" -) - -func AddBillIncome(txDB orm.TxOrmer, billID int64, billType, incomePrice, jobID int) (err error) { - billIncome := &model.BillIncome{ - BillID: billID, - Type: billType, - IncomePrice: incomePrice, - JobID: jobID, - } - dao.WrapAddIDCULEntity(billIncome, jxcontext.AdminCtx.GetUserName()) - return dao.CreateEntityTx(txDB, billIncome) -} - -func AddBillExpend(txDB orm.TxOrmer, billID int64, billType, expendPrice, jobID int) (err error) { - billExpend := &model.BillExpend{ - BillID: billID, - Type: billType, - ExpendPrice: expendPrice, - JobID: jobID, - } - dao.WrapAddIDCULEntity(billExpend, jxcontext.AdminCtx.GetUserName()) - return dao.CreateEntityTx(txDB, billExpend) -} -func AddUserBill(txDB orm.TxOrmer, billID int64, userID string) (err error) { - userBillInsert := &model.UserBill{ - BillID: billID, - UserID: userID, - } - dao.WrapAddIDCULDEntity(userBillInsert, jxcontext.AdminCtx.GetUserName()) - return dao.CreateEntityTx(txDB, userBillInsert) -} - -func AddUserBillDb(db *dao.DaoDB, billID int64, userID string) (err error) { - userBillInsert := &model.UserBill{ - BillID: billID, - UserID: userID, - } - dao.WrapAddIDCULDEntity(userBillInsert, jxcontext.AdminCtx.GetUserName()) - return dao.CreateEntity(db, userBillInsert) -} - -func GetUserBillDetail(ctx *jxcontext.Context, userID, fromTime, toTime string, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { - return dao.GetUserBillDetail(dao.GetDB(), userID, utils.Str2Time(fromTime), utils.Str2Time(toTime), pageSize, offset) -} - -func AddExpendUpdateAccount(txDB orm.TxOrmer, userBill *model.UserBill, billType, price, jobID int) (err error) { - //1、账户支出增加一条记录 - err = AddBillExpend(txDB, userBill.BillID, billType, price, jobID) - if err != nil { - return err - } - //2、账户表余额减少相应值 - userBill.AccountBalance -= price - _, err = dao.UpdateEntityTx(txDB, userBill, "AccountBalance") - return err -} - -func AddIncomeUpdateAccount(txDB orm.TxOrmer, userBill *model.UserBill, billType, price, jobID int) (err error) { - //2、账户收入增加一条记录 - err = AddBillIncome(txDB, userBill.BillID, billType, price, jobID) - if err != nil { - return err - } - //1、根据任务剩余数量退钱到账户余额中 - userBill.AccountBalance += price - _, err = dao.UpdateEntityTx(txDB, userBill, "AccountBalance") - return err -} - -func SettleUnionOrders(ctx *jxcontext.Context, vendorIDs []int) (err error) { - var ( - db = dao.GetDB() - unionOrderVendorMap map[int][]*model.UnionOrder //key 为平台ID - unionOrderMap map[string]map[int][]*model.UnionOrder //key为userID,整个map把每个User的不同平台的订单放一起 - settleOrders []*model.UnionOrderSettle - ) - unionOrderVendorMap = make(map[int][]*model.UnionOrder) - unionOrderMap = make(map[string]map[int][]*model.UnionOrder) - unionOrders, err := dao.GetUnionOrders(db, vendorIDs, []int{model.UnionOrderStatusFinish}, utils.ZeroTimeValue, utils.ZeroTimeValue, model.NO) - if err != nil { - return err - } - for _, v := range unionOrders { - if _, ok := unionOrderMap[v.UserID]; ok { - if _, ol := unionOrderVendorMap[v.VendorID]; ol { - unionOrderMap[v.UserID][v.VendorID] = append(unionOrderMap[v.UserID][v.VendorID], v) - } else { - unionOrderMap[v.UserID][v.VendorID] = []*model.UnionOrder{v} - } - } else { - unionOrderVendorMap[v.VendorID] = []*model.UnionOrder{v} - unionOrderMap[v.UserID] = unionOrderVendorMap - } - } - for userID, v := range unionOrderMap { - var ( - billID int64 - ) - userBill, _ := dao.GetUserBill(db, userID, "") - if userBill == nil { - billID = jxutils.GenBillID() - AddUserBillDb(db, billID, userID) - } else { - billID = userBill.BillID - } - for vendorID, vv := range v { - var ( - sumPrice, count int - ) - for _, unionOrder := range vv { - count++ - sumPrice += unionOrder.PromotionAmount - } - unionOrderSettle := &model.UnionOrderSettle{ - BillID: billID, - VendorID: vendorID, - Issue: jxutils.GetIssue(), - EarningPrice: sumPrice, - OrderCount: count, - } - dao.WrapAddIDCULEntity(unionOrderSettle, ctx.GetUserName()) - settleOrders = append(settleOrders, unionOrderSettle) - //err = dao.CreateEntity(db, unionOrderSettle) - } - } - txDB, _ := dao.Begin(db) - defer func() { - if r := recover(); r != nil { - dao.Rollback(db, txDB) - panic(r) - } - }() - for _, v := range settleOrders { - //插入结算表 - if err = dao.CreateEntityTx(txDB, v); err != nil { - dao.Rollback(db, txDB) - return err - } - //更新用户账户 - userBill, _ := dao.GetUserBill(db, "", utils.Int64ToStr(v.BillID)) - if err = AddIncomeUpdateAccount(txDB, userBill, model.BillTypeUnionShare, v.EarningPrice, 0); err != nil { - dao.Rollback(db, txDB) - return err - } - } - //修改订单结算标志 - for _, v := range unionOrders { - v.IsEarning = model.YES - v.UpdatedAt = time.Now() - if _, err = dao.UpdateEntityTx(txDB, v, "IsEarning", "UpdatedAt"); err != nil { - dao.Rollback(db, txDB) - return err - } - } - dao.Commit(db, txDB) - return err -} diff --git a/business/jxstore/financial/pay.go b/business/jxstore/financial/pay.go index c6f500c61..6ced8cbff 100644 --- a/business/jxstore/financial/pay.go +++ b/business/jxstore/financial/pay.go @@ -1,106 +1 @@ package financial - -import ( - "fmt" - - "git.rosy.net.cn/baseapi/utils" - "git.rosy.net.cn/jx-callback/globals" - - "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" -) - -type PayHandler struct { - PayType int `json:"-"` //支付方式 - Ctx *jxcontext.Context - Order *model.Order - VendorPayType string - - WxPayParam *WxPayParam `json:"wxPayParam"` -} - -type WxPayParam struct { - Prepayid string `json:"prepayid"` - Noncestr string `json:"noncestr"` - Timestamp string `json:"timestamp"` - Package string `json:"package"` - Partnerid string `json:"partnerid"` - Appid string `json:"appid"` - Sign string `json:"sign"` -} - -type PayHandlerInterface interface { - CreatePay() (err error) - CreateRefund() (err error) -} - -func OnPayFinished(order *model.Order) (err error) { - var ( - db = dao.GetDB() - ) - globals.SugarLogger.Debugf("OnPayFinished begin modify account order: %v", utils.Format4Output(order, false)) - txDB, _ := dao.Begin(db) - defer func() { - if r := recover(); r != nil { - dao.Rollback(db, txDB) - panic(r) - } - }() - //如果用户没有对应账单信息就给他生成一条 - userBill, err := dao.GetUserBill(db, order.UserID, "") - if userBill == nil { - globals.SugarLogger.Debugf("OnPayFinished 未找到该用户的账单 order: %v", utils.Format4Output(order, false)) - return fmt.Errorf("未找到该用户的账单!%v", order.UserID) - } - //根据订单类型来操作账户 - switch order.Type { - case model.OrderTypePay: - //如果是账户充值(发布任务等) - //账户收入 - if err = AddIncomeUpdateAccount(txDB, userBill, model.BillTypeInvest, order.PayPrice, 0); err != nil { - dao.Rollback(db, txDB) - } - default: - globals.SugarLogger.Debugf("OnPayFinished 暂不支持此订单类型 order: %v", utils.Format4Output(order, false)) - return fmt.Errorf("暂不支持此订单类型!") - } - dao.Commit(db, txDB) - globals.SugarLogger.Debugf("OnPayFinished end modify account ...") - return err -} - -func OnCashFinished(order *model.Order) (err error) { - var ( - db = dao.GetDB() - ) - globals.SugarLogger.Debugf("OnCashFinished begin modify account order: %v", utils.Format4Output(order, false)) - txDB, _ := dao.Begin(db) - defer func() { - if r := recover(); r != nil { - dao.Rollback(db, txDB) - panic(r) - } - }() - //如果用户没有对应账单信息就给他生成一条 - userBill, err := dao.GetUserBill(db, order.UserID, "") - if userBill == nil { - globals.SugarLogger.Debugf("OnCashFinished 未找到该用户的账单 order: %v", utils.Format4Output(order, false)) - return fmt.Errorf("未找到该用户的账单!%v", order.UserID) - } - //根据订单类型来操作账户 - switch order.Type { - case model.OrderTypeCash: - //如果是账户提现 - //账户支出 - if err = AddExpendUpdateAccount(txDB, userBill, model.BillTypeCash, order.PayPrice, 0); err != nil { - dao.Rollback(db, txDB) - } - default: - globals.SugarLogger.Debugf("OnPayFinished 暂不支持此订单类型 order: %v", utils.Format4Output(order, false)) - return fmt.Errorf("暂不支持此订单类型!") - } - dao.Commit(db, txDB) - globals.SugarLogger.Debugf("OnCashFinished end modify account ...") - return err -} diff --git a/business/jxutils/jxutils.go b/business/jxutils/jxutils.go index efae95ffc..b40d8c962 100644 --- a/business/jxutils/jxutils.go +++ b/business/jxutils/jxutils.go @@ -49,20 +49,6 @@ func init() { orderNoBeginTimestamp = utils.Str2Time("2010-01-01 00:00:00").Unix() } -func GetSaleStoreIDFromAfsOrder(order *model.AfsOrder) (retVal int) { - if order.JxStoreID > 0 { - return order.JxStoreID - } - return order.StoreID -} - -func GetSkuIDFromOrderSkuFinancial(sku *model.OrderSkuFinancial) (skuID int) { - if sku.JxSkuID > 0 { - return sku.JxSkuID - } - return sku.SkuID -} - func SplitUniversalOrderID(universalOrderID string) (orderID string, vendorID int) { index := strings.Index(universalOrderID, "|") if index != -1 { @@ -545,19 +531,6 @@ func Strings2Objs(strAndObjAddPairs ...interface{}) (err error) { return nil } -func RefreshAfsOrderSkuRelated(afsOrder *model.AfsOrder) *model.AfsOrder { - afsOrder.SkuUserMoney = 0 - afsOrder.PmSkuSubsidyMoney = 0 - for _, orderSku := range afsOrder.Skus { - if orderSku.SkuID > math.MaxInt32 { - orderSku.SkuID = orderSku.JxSkuID - } - afsOrder.SkuUserMoney += orderSku.UserMoney - afsOrder.PmSkuSubsidyMoney += orderSku.PmSkuSubsidyMoney - } - return afsOrder -} - func TaskResult2Hint(resultList []interface{}) (hint string) { strList := make([]string, len(resultList)) for k, v := range resultList { diff --git a/business/jxutils/jxutils_act.go b/business/jxutils/jxutils_act.go deleted file mode 100644 index 575e8f650..000000000 --- a/business/jxutils/jxutils_act.go +++ /dev/null @@ -1,41 +0,0 @@ -package jxutils - -import ( - "git.rosy.net.cn/jx-callback/business/model" -) - -type ActStoreSkuMap struct { - actStoreSkuMap map[int64]map[int]*model.ActStoreSku2 -} - -// isActPrice为true表示是活动,false表示是结算 -func NewActStoreSkuMap(actStoreSkuList []*model.ActStoreSku2, isActPrice bool) (actMap *ActStoreSkuMap) { - actMap = &ActStoreSkuMap{} - actStoreSkuMap := make(map[int64]map[int]*model.ActStoreSku2) - for _, v := range actStoreSkuList { - index := Combine2Int(v.StoreID, v.SkuID) - if actStoreSkuMap[index] == nil { - actStoreSkuMap[index] = make(map[int]*model.ActStoreSku2) - } - if (isActPrice && v.ActualActPrice > 0 && (actStoreSkuMap[index][v.VendorID] == nil || actStoreSkuMap[index][v.VendorID].ActualActPrice > v.ActualActPrice)) || - (!isActPrice && v.EarningPrice > 0 && (actStoreSkuMap[index][v.VendorID] == nil || actStoreSkuMap[index][v.VendorID].EarningPrice > v.EarningPrice)) { - actStoreSkuMap[index][v.VendorID] = v - } - } - actMap.actStoreSkuMap = actStoreSkuMap - return actMap -} - -func (a *ActStoreSkuMap) GetActStoreSku(storeID, skuID, vendorID int) (storeSku *model.ActStoreSku2) { - index := Combine2Int(storeID, skuID) - if a.actStoreSkuMap[index] != nil { - if vendorID < 0 { - for k := range a.actStoreSkuMap[index] { - vendorID = k - break - } - } - storeSku = a.actStoreSkuMap[index][vendorID] - } - return storeSku -} diff --git a/business/model/api.go b/business/model/api.go index 8c56f0ae1..04dc6d62e 100644 --- a/business/model/api.go +++ b/business/model/api.go @@ -2,7 +2,6 @@ package model import ( "math" - "time" ) const ( @@ -35,23 +34,6 @@ type PagedInfo struct { Data interface{} `json:"data"` } -type OrderFinancialExt struct { - OrderFinancial - VendorStoreID string `orm:"column(vendor_store_id);size(48)" json:"vendorStoreID"` // - OrderFinishedAt time.Time `orm:"type(datetime)" json:"orderFinishedAt"` // 订单妥投/完成时间 - StoreID int `orm:"column(store_id)" json:"storeID"` // 外部系统里记录的 jxstoreid - JxStoreID int `orm:"column(jx_store_id)" json:"jxStoreID"` // 根据VendorStoreID在本地系统里查询出来的 jxstoreid - StoreName string `orm:"size(64)" json:"storeName"` // - Status int `json:"status"` // 参见OrderStatus*相关的常量定义 - Skus []*OrderSkuFinancial `orm:"-" json:"skus"` // 正向订单购买商品列表 - Discounts []*OrderDiscountFinancial `orm:"-" json:"discounts"` // 正向订单享受优惠列表 -} - -type OrderFinancialSkuExt struct { - OrderSkuFinancial - Image string `json:"image"` -} - type ProductInfo struct { OriginalName string `json:"originalName"` OriginalSpec string `json:"originalSpec"` diff --git a/business/model/dao/act.go b/business/model/dao/act.go deleted file mode 100644 index ff12d6cb4..000000000 --- a/business/model/dao/act.go +++ /dev/null @@ -1,499 +0,0 @@ -package dao - -import ( - "fmt" - "time" - - "git.rosy.net.cn/baseapi/utils" - "git.rosy.net.cn/jx-callback/business/jxutils" - "git.rosy.net.cn/jx-callback/business/model" -) - -type ActMapPureInfo struct { - VendorID int `orm:"column(vendor_id)" json:"vendorID"` - VendorOrgCode string `orm:"size(32)" json:"vendorOrgCode"` // 同一平台下不同的商户代码,如果只有一个,可以为空 - VendorActID string `orm:"column(vendor_act_id);size(48)" json:"vendorActID"` - SyncStatus int `orm:"default(2)" json:"syncStatus"` - Remark string `orm:"column(map_remark)" json:"remark"` -} - -type ActVendorInfo struct { - model.Act - VendorList []*ActMapPureInfo `json:"vendorList"` -} - -type tActAndMap struct { - model.Act - MapID int `orm:"column(map_id)" json:"-"` // 内部使用,不暴露 - ActMapPureInfo -} - -type PagedActListInfo struct { - TotalCount int `json:"totalCount"` - Data []*ActVendorInfo `json:"data"` -} - -func GetActVendorInfo(db *DaoDB, actID int, vendorIDs []int) (actMap map[int]*model.Act2, err error) { - leftOrEmpty := "" - if len(vendorIDs) == 1 && vendorIDs[0] == -1 { - leftOrEmpty = "LEFT" - } - sql := fmt.Sprintf(` - SELECT t1.*, - t2.id map_id, t2.vendor_id, t2.vendor_org_code, t2.vendor_act_id, t2.sync_status - FROM act t1 - %s JOIN act_map t2 ON t2.act_id = t1.id AND t2.deleted_at = ?`, leftOrEmpty) - sqlParams := []interface{}{ - utils.DefaultTimeValue, - } - - if len(vendorIDs) > 0 { - sql += " AND t2.vendor_id IN (" + GenQuestionMarks(len(vendorIDs)) + ")" - sqlParams = append(sqlParams, vendorIDs) - } - - sql += ` - WHERE t1.deleted_at = ? AND t1.id = ?` - sqlParams = append(sqlParams, utils.DefaultTimeValue, actID) - - var actList []*model.Act2 - if err = GetRows(db, &actList, sql, sqlParams...); err == nil { - actMap = make(map[int]*model.Act2) - for _, v := range actList { - if leftOrEmpty != "" { - v.VendorID = -1 - } - actMap[v.VendorID] = v - } - } - return actMap, err -} - -func GetActStoreSkuVendorList(db *DaoDB, actID int, vendorIDs, storeIDs, skuIDs []int, keyword string, offset, pageSize int) (totalCount int, actStoreSkuList []*model.ActStoreSku2, err error) { - // globals.SugarLogger.Debugf("GetActStoreSkuVendorList actID:%d", actID) - // offset = jxutils.FormalizePageOffset(offset) - // pageSize = jxutils.FormalizePageSize(pageSize) - - // leftOrEmpty := "" - // if len(vendorIDs) == 1 && (vendorIDs[0] == -1 || vendorIDs[0] == model.VendorIDJX) { - // leftOrEmpty = "LEFT" - // } - // sql := fmt.Sprintf(` - // SELECT SQL_CALC_FOUND_ROWS - // t1.*, - // t2.id map_id, t2.vendor_id, t2.vendor_act_id, t2.sync_status, t2.actual_act_price, t2.vendor_price, t2.trend_type, t2.trend_price, - // t3.vendor_store_id, - // CASE t2.vendor_id - // WHEN 0 THEN - // t4m.vendor_thing_id - // WHEN 1 THEN - // t5.mtwm_id - // WHEN 3 THEN - // t5.ebai_id - // ELSE - // '' - // END vendor_sku_id, - // t4.comment, t4.spec_quality, t4.spec_unit, - // t6.name store_name, - // t7.name sku_name_name, t7.unit, t7.prefix, t7.ex_prefix, t7.ex_prefix_begin, t7.ex_prefix_end - // FROM act_store_sku t1 - // %s JOIN act_store_sku_map t2 ON t2.act_id = ? AND t2.bind_id = t1.id AND t2.deleted_at = ?`, leftOrEmpty) - // sqlParams := []interface{}{ - // actID, - // utils.DefaultTimeValue, - // } - - // if len(vendorIDs) > 0 { - // sql += " AND t2.vendor_id IN (" + GenQuestionMarks(len(vendorIDs)) + ")" - // sqlParams = append(sqlParams, vendorIDs) - // } - // sql += ` - // LEFT JOIN store_map t3 ON t3.store_id = t1.store_id AND t3.vendor_id = t2.vendor_id AND t3.deleted_at = ? - // JOIN sku t4 ON t4.id = t1.sku_id - // LEFT JOIN thing_map t4m ON t4m.vendor_id = ? AND t4m.thing_id = t4.id AND t4m.thing_type = ? AND t4m.vendor_id = t2.vendor_id AND t4m.vendor_org_code = t3.vendor_org_code AND t4m.deleted_at = ? - // LEFT JOIN store_sku_bind t5 ON t5.sku_id = t1.sku_id AND t5.store_id = t1.store_id AND t5.deleted_at = ? - // LEFT JOIN store t6 ON t6.id = t1.store_id - // JOIN sku_name t7 ON t7.id = t4.name_id - // WHERE t1.act_id = ? - // ` - // sqlParams = append(sqlParams, - // utils.DefaultTimeValue, - // model.VendorIDJD, model.ThingTypeSku, utils.DefaultTimeValue, - // utils.DefaultTimeValue, - // actID, - // ) - // if keyword != "" { - // keywordLike := "%" + keyword + "%" - // sql += " AND (t7.name LIKE ? OR t6.name LIKE ?" - // sqlParams = append(sqlParams, keywordLike, keywordLike) - // if intKeyword := int(utils.Str2Int64WithDefault(keyword, 0)); intKeyword > 0 { - // sql += " OR t1.sku_id = ? OR t1.store_id = ?" - // sqlParams = append(sqlParams, intKeyword, intKeyword) - // } - // sql += ")" - // } - // if leftOrEmpty != "" { - // sql += " AND t1.deleted_at = ?" - // sqlParams = append(sqlParams, utils.DefaultTimeValue) - // } - // if len(storeIDs) > 0 { - // sql += " AND t1.store_id IN (" + GenQuestionMarks(len(storeIDs)) + ")" - // sqlParams = append(sqlParams, storeIDs) - // } - // if len(skuIDs) > 0 { - // sql += " AND t1.sku_id IN (" + GenQuestionMarks(len(skuIDs)) + ")" - // sqlParams = append(sqlParams, skuIDs) - // } - // sql += " LIMIT ? OFFSET ?;" - // sqlParams = append(sqlParams, pageSize, offset) - // // globals.SugarLogger.Debug(sql) - // // globals.SugarLogger.Debug(utils.Format4Output(sqlParams, false)) - // // globals.SugarLogger.Debug(utils.Format4Output(actStoreSkuList, false)) - // Begin(db) - // defer Commit(db) - // if err = GetRows(db, &actStoreSkuList, sql, sqlParams...); err == nil { - // totalCount = GetLastTotalRowCount(db) - // } - return totalCount, actStoreSkuList, err -} - -func GetActStoreSkuVendorInfo(db *DaoDB, actID int, vendorIDs, storeIDs, skuIDs []int) (actStoreSkuMap map[int][]*model.ActStoreSku2, err error) { - leftOrEmpty := "" - if len(vendorIDs) == 1 && vendorIDs[0] == -1 { - leftOrEmpty = "LEFT" - } - _, actStoreSkuList, err := GetActStoreSkuVendorList(db, actID, vendorIDs, storeIDs, skuIDs, "", 0, -1) - if err == nil { - actStoreSkuMap = make(map[int][]*model.ActStoreSku2) - for _, v := range actStoreSkuList { - if leftOrEmpty != "" { - v.VendorID = -1 - } - actStoreSkuMap[v.VendorID] = append(actStoreSkuMap[v.VendorID], v) - } - } - return actStoreSkuMap, err -} - -func QueryActs(db *DaoDB, actID int, offset, pageSize int, syncStatus int, keyword string, vendorID int, statusList, actTypeList, createTypeList []int, - storeID int, skuIDs []int, cityCode int, beginAt, endAt, createdAtFrom, createdAtTo time.Time) (pagedInfo *PagedActListInfo, err error) { - if actID == 0 && utils.IsTimeZero(createdAtFrom) && utils.IsTimeZero(beginAt) { - return nil, fmt.Errorf("actID,createdAtFrom和beginAt中,至少要指定一个条件") - } - offset = jxutils.FormalizePageOffset(offset) - pageSize = jxutils.FormalizePageSize(pageSize) - isGetAll := offset == 0 && pageSize == model.UnlimitedPageSize - - sql := ` - SELECT SQL_CALC_FOUND_ROWS - DISTINCT t1.id - FROM act t1` - sqlParams := []interface{}{} - if isGetAll { - sql = ` - SELECT - t1.*, - t2.id map_id, t2.vendor_id, t2.vendor_act_id, t2.sync_status, t2.remark map_remark - FROM act t1` - } - sql += " LEFT JOIN act_map t2 ON t2.act_id = t1.id AND t2.deleted_at = ?" - sqlParams = append(sqlParams, utils.DefaultTimeValue) - if syncStatus >= 0 { - sql += " AND (t2.sync_status = ? OR t2.sync_status & ? <> 0)" - sqlParams = append(sqlParams, syncStatus, syncStatus) - } - sql += ` - WHERE t1.deleted_at = ?` - if syncStatus >= 0 { - sql += " AND t2.id IS NOT NULL" - } - sqlParams = append(sqlParams, utils.DefaultTimeValue) - keywordInt := int64(0) - if keyword != "" { - keywordLike := "%" + keyword + "%" - sql += " AND ( t1.name LIKE ? OR t1.advertising LIKE ? OR t1.remark LIKE ? OR t2.vendor_act_id LIKE ?" - sqlParams = append(sqlParams, keywordLike, keywordLike, keywordLike, keywordLike) - keywordInt = utils.Str2Int64WithDefault(keyword, 0) - if keywordInt > 0 { - sql += ` - OR t1.id = ?` - sqlParams = append(sqlParams, keywordInt) - } - sql += ")" - } - if storeID > 0 || len(skuIDs) > 0 || cityCode > 0 { - sql += ` AND (SELECT COUNT(*) - FROM act_store_sku t2` - if cityCode > 0 { - sql += " JOIN store t3 ON t3.id = t2.store_id AND t3.city_code = ?" - sqlParams = append(sqlParams, cityCode) - } - sql += ` - WHERE t2.act_id = t1.id AND t2.deleted_at = ?` - sqlParams = append(sqlParams, utils.DefaultTimeValue) - if storeID > 0 { - sql += " AND t2.store_id = ?" - sqlParams = append(sqlParams, storeID) - } - if len(skuIDs) > 0 { - sql += " AND t2.sku_id IN (" + GenQuestionMarks(len(skuIDs)) + ")" - sqlParams = append(sqlParams, skuIDs) - } - sql += ") > 0" - } - if actID > 0 { - sql += " AND t1.id = ?" - sqlParams = append(sqlParams, actID) - } - if vendorID >= 0 { - sql += " AND t1.vendor_mask & ? <> 0" - sqlParams = append(sqlParams, model.GetVendorMask(vendorID)) - } - if len(statusList) > 0 { - sql += " AND t1.status IN (" + GenQuestionMarks(len(statusList)) + ")" - sqlParams = append(sqlParams, statusList) - } - if len(actTypeList) > 0 { - sql += " AND t1.type IN (" + GenQuestionMarks(len(actTypeList)) + ")" - sqlParams = append(sqlParams, actTypeList) - } - if len(createTypeList) > 0 { - sql += " AND t1.create_type IN (" + GenQuestionMarks(len(createTypeList)) + ")" - sqlParams = append(sqlParams, createTypeList) - } - if !utils.IsTimeZero(beginAt) { - sql += " AND t1.begin_at <= ?" - sqlParams = append(sqlParams, beginAt) - } - if !utils.IsTimeZero(endAt) { - sql += " AND t1.end_at >= ?" - sqlParams = append(sqlParams, endAt) - } - if !utils.IsTimeZero(createdAtFrom) { - sql += " AND t1.created_at >= ?" - sqlParams = append(sqlParams, createdAtFrom) - } - if !utils.IsTimeZero(createdAtTo) { - sql += " AND t1.created_at <= ?" - sqlParams = append(sqlParams, createdAtTo) - } - - pagedInfo = &PagedActListInfo{} - if isGetAll { - sql += ` - ORDER BY t1.id DESC, t2.vendor_id` - } else { - sql += ` - ORDER BY 1 DESC - LIMIT ? OFFSET ? - ` - sqlParams = append(sqlParams, pageSize, offset) - var idList []int - - txDB, _ := Begin(db) - defer func() { - if r := recover(); r != nil { - Rollback(db, txDB) - panic(r) - } - }() - // globals.SugarLogger.Debug(sql) - if err = GetRowsTx(txDB, &idList, sql, sqlParams...); err != nil || len(idList) == 0 { - Rollback(db, txDB) - return pagedInfo, err - } - pagedInfo.TotalCount = GetLastTotalRowCountTx(txDB) - Commit(db, txDB) - - sql = ` - SELECT - t1.*, - t2.id map_id, t2.vendor_id, t2.vendor_org_code, t2.vendor_act_id, t2.sync_status, t2.remark map_remark - FROM act t1 - LEFT JOIN act_map t2 ON t2.act_id = t1.id AND t2.deleted_at = ? - WHERE t1.id IN (` + GenQuestionMarks(len(idList)) + `)` - if syncStatus >= 0 { - sql += " AND t2.id IS NOT NULL" - } - sql += ` - ORDER BY t1.id DESC, t2.vendor_id` - sqlParams = []interface{}{ - utils.DefaultTimeValue, - idList, - } - } - var actList []*tActAndMap - // globals.SugarLogger.Debug(sql) - if err = GetRows(db, &actList, sql, sqlParams...); err != nil { - return nil, err - } - actMap := make(map[int]*ActVendorInfo) - for _, v := range actList { - tmpAct := actMap[v.ID] - if tmpAct == nil { - tmpAct = &ActVendorInfo{ - Act: v.Act, - } - actMap[v.ID] = tmpAct - pagedInfo.Data = append(pagedInfo.Data, tmpAct) - } - if v.MapID > 0 { - tmpAct.VendorList = append(tmpAct.VendorList, &v.ActMapPureInfo) - } - } - if isGetAll { - pagedInfo.TotalCount = len(pagedInfo.Data) - } - return pagedInfo, err -} - -func GetExistVendorActIDs(db *DaoDB, vendorID int) (vendorActIDs []string, err error) { - // todo 不应该是全表扫描 - sql := ` - SELECT - DISTINCT t1.vendor_act_id - FROM act_store_sku_map t1 - WHERE t1.deleted_at = ? AND t1.vendor_id = ?` - sqlParams := []interface{}{ - utils.DefaultTimeValue, - vendorID, - } - err = GetRows(db, &vendorActIDs, sql, sqlParams...) - return vendorActIDs, err -} - -func UpdateActStatusByTime(db *DaoDB, refTime time.Time) (num int64, err error) { - sql := ` - UPDATE act t1 - SET t1.status = ? - WHERE t1.deleted_at = ? AND t1.status < ? AND t1.end_at < ?;` - sqlParams := []interface{}{ - model.ActStatusEnded, - utils.DefaultTimeValue, - model.ActStatusCanceled, - utils.Time2Date(refTime), - } - num, err = ExecuteSQL(db, sql, sqlParams...) - return num, err -} - -// func ActStoreSkuMap2StoreSkuAct(actStoreSkuMap *model.ActStoreSkuMap, isCanceled bool) (storeSkuAct *model.StoreSkuAct) { -// storeSkuAct = &model.StoreSkuAct{ -// StoreID: actStoreSkuMap.StoreID, -// SkuID: actStoreSkuMap.SkuID, -// VendorID: actStoreSkuMap.VendorID, -// } -// storeSkuAct.CreatedAt = actStoreSkuMap.CreatedAt -// storeSkuAct.UpdatedAt = actStoreSkuMap.UpdatedAt -// storeSkuAct.LastOperator = actStoreSkuMap.LastOperator - -// if actStoreSkuMap.ActualActPrice > 0 { -// if isCanceled || !utils.IsTimeZero(actStoreSkuMap.DeletedAt) { -// storeSkuAct.ActID = 0 -// } else { -// storeSkuAct.ActID = actStoreSkuMap.ActID -// storeSkuAct.VendorActID = actStoreSkuMap.VendorActID -// storeSkuAct.SyncStatus = actStoreSkuMap.SyncStatus -// storeSkuAct.VendorPrice = actStoreSkuMap.VendorPrice -// storeSkuAct.ActualActPrice = actStoreSkuMap.ActualActPrice -// } -// } -// if actStoreSkuMap.EarningPrice > 0 { -// if isCanceled || !utils.IsTimeZero(actStoreSkuMap.DeletedAt) { -// storeSkuAct.EarningActID = 0 -// } else { -// storeSkuAct.EarningActID = actStoreSkuMap.ActID -// storeSkuAct.EarningPrice = actStoreSkuMap.EarningPrice -// } -// } -// return storeSkuAct -// } - -func BatchUpdateActEntity(db *DaoDB, isCanceled bool, items []*KVUpdateItem) (num int64, err error) { - return BatchUpdateEntityByKV(db, items) - // if globals.IsStoreSkuAct { - // Begin(db) - // defer func() { - // if r := recover(); r != nil || err != nil { - // Rollback(db) - // if r != nil { - // panic(r) - // } - // } - // }() - - // for _, v := range items { - // if actStoreSku, ok := v.Item.(*model.ActStoreSkuMap); ok { - // for k1, v1 := range v.KVs { - // refutil.SetObjFieldByName(actStoreSku, k1, v1) - // } - // if err = CreateOrUpdateActStoreSku(db, ActStoreSkuMap2StoreSkuAct(actStoreSku, isCanceled)); err != nil { - // return 0, err - // } - // } - // } - // } - - // if _, err = BatchUpdateEntityByKV(db, items); err != nil { - // return 0, err - // } - - // if globals.IsStoreSkuAct { - // Commit(db) - // } - // return num, err -} - -func CreateOrUpdateActStoreSku(db *DaoDB, storeSkuAct *model.StoreSkuAct) (err error) { - storeSkuActCopy := *storeSkuAct - if err2 := GetEntity(db, &storeSkuActCopy, model.FieldStoreID, model.FieldSkuID, model.FieldVendorID); err2 == nil { - storeSkuAct.ID = storeSkuActCopy.ID - _, err = UpdateEntity(db, storeSkuAct) - } else if IsNoRowsError(err2) { - err = CreateEntity(db, storeSkuAct) - } else { - err = err2 - } - return err -} - -func GetStoresSkusAct(db *DaoDB, hintActID int, mustDirty bool, storeIDs, skuIDs, vendorIDs []int, mustHaveVendorActID bool, minActPercentage, maxActPercentage int) (storeSkuActList []*model.StoreSkuAct, err error) { - sql := ` - SELECT * - FROM store_sku_act t1 - WHERE 1 = 1 - ` - sqlParams := []interface{}{} - if hintActID > 0 { - sql += " AND t1.hint_act_id = ?" - sqlParams = append(sqlParams, hintActID) - } - if mustDirty { - sql += " AND (t1.sync_status <> 0 OR (t1.act_percentage = 0 AND t1.vendor_act_id <> '') OR (t1.act_percentage <> 0 AND t1.vendor_act_id = ''))" - } - if len(storeIDs) > 0 { - sql += " AND t1.store_id IN (" + GenQuestionMarks(len(storeIDs)) + ")" - sqlParams = append(sqlParams, storeIDs) - } - if len(skuIDs) > 0 { - sql += " AND t1.sku_id IN (" + GenQuestionMarks(len(skuIDs)) + ")" - sqlParams = append(sqlParams, skuIDs) - } - if len(vendorIDs) > 0 { - sql += " AND t1.vendor_id IN (" + GenQuestionMarks(len(vendorIDs)) + ")" - sqlParams = append(sqlParams, vendorIDs) - } - if mustHaveVendorActID { - sql += " AND t1.vendor_act_id <> ''" - } - if minActPercentage > 0 { - sql += " AND t1.act_percentage >= ?" - sqlParams = append(sqlParams, minActPercentage) - } - if maxActPercentage > 0 { - sql += " AND t1.act_percentage <= ?" - sqlParams = append(sqlParams, maxActPercentage) - } - err = GetRows(db, &storeSkuActList, sql, sqlParams...) - return storeSkuActList, err -} diff --git a/business/model/dao/act_test.go b/business/model/dao/act_test.go deleted file mode 100644 index be48eee2a..000000000 --- a/business/model/dao/act_test.go +++ /dev/null @@ -1,54 +0,0 @@ -package dao - -import ( - "testing" - "time" - - "git.rosy.net.cn/baseapi/utils" - "git.rosy.net.cn/jx-callback/business/model" -) - -func TestGetEffectiveActStoreSkuInfo(t *testing.T) { - type testData struct { - ResultCount int - - ActID int - VendorIDs []int - StoreIDs []int - SkuIDs []int - FromTime time.Time - ToTime time.Time - } - for _, v := range []*testData{ - &testData{ - StoreIDs: []int{100190}, - SkuIDs: []int{23847}, - ResultCount: 1, - FromTime: utils.Str2Time("2019-08-06 12:34:56"), - ToTime: utils.Str2Time("2019-08-06 12:34:56"), - }, - } { - result, err := GetEffectiveActStoreSkuInfo(GetDB(), v.ActID, v.VendorIDs, model.ActTypeAll, v.StoreIDs, v.SkuIDs, v.FromTime, v.ToTime) - if err != nil { - t.Fatal(err) - } - if len(result) != v.ResultCount { - t.Log(utils.Format4Output(result, false)) - t.Errorf("cond:%s, len(result):%d, v.ResultCount:%d", utils.Format4Output(v, false), len(result), v.ResultCount) - } - } -} - -func TestUpdateActStatusByTime(t *testing.T) { - _, err := UpdateActStatusByTime(GetDB(), time.Now().Add(-48*time.Hour)) - if err != nil { - t.Fatal(err) - } -} - -func TestGetActStoreSkuVendorList(t *testing.T) { - _, _, err := GetActStoreSkuVendorList(GetDB(), 18440, nil, nil, nil, "", 0, 0) - if err != nil { - t.Fatal(err) - } -} diff --git a/business/model/dao/dao_order.go b/business/model/dao/dao_order.go deleted file mode 100644 index dda8501e6..000000000 --- a/business/model/dao/dao_order.go +++ /dev/null @@ -1,654 +0,0 @@ -package dao - -import ( - "time" - - "git.rosy.net.cn/baseapi/utils" - - "git.rosy.net.cn/jx-callback/business/jxutils" - "git.rosy.net.cn/jx-callback/business/model" -) - -func GetDeliveryOrdersNoPage(db *DaoDB, userIDs []string, statuss []int, fromTime, toTime time.Time, isWeights []int) (dOrders []*model.DeliveryOrder, err error) { - sql := ` - SELECT a.* - FROM delivery_order a - WHERE 1 = 1 - ` - sqlParams := []interface{}{} - if len(userIDs) > 0 { - sql += ` AND a.user_id IN (` + GenQuestionMarks(len(userIDs)) + `)` - sqlParams = append(sqlParams, userIDs) - } - if len(statuss) > 0 { - sql += ` AND a.status IN (` + GenQuestionMarks(len(statuss)) + `)` - sqlParams = append(sqlParams, statuss) - } - if len(isWeights) > 0 { - sql += ` AND a.is_weight IN (` + GenQuestionMarks(len(isWeights)) + `)` - sqlParams = append(sqlParams, isWeights) - } - if fromTime != utils.ZeroTimeValue { - sql += ` AND a.created_at >= ?` - sqlParams = append(sqlParams, fromTime) - } - if toTime != utils.ZeroTimeValue { - sql += ` AND a.created_at <= ?` - sqlParams = append(sqlParams, toTime) - } - err = GetRows(db, &dOrders, sql, sqlParams) - return dOrders, err -} - -type GetDeliveryOrdersResult struct { - model.DeliveryOrder - DeliverySendInfo *UserDeliveryAddressEx `json:"deliverySendInfo"` - DeliveryReceiveInfo *UserDeliveryAddressEx `json:"deliveryReceiveInfo"` -} - -func GetDeliveryOrders(db *DaoDB, userIDs []string, statuss []int, fromTime, toTime time.Time, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { - var dOrders []*GetDeliveryOrdersResult - sql := ` - SELECT SQL_CALC_FOUND_ROWS a.* - FROM delivery_order a - WHERE 1 = 1 - ` - sqlParams := []interface{}{} - if len(userIDs) > 0 { - sql += ` AND a.user_id IN (` + GenQuestionMarks(len(userIDs)) + `)` - sqlParams = append(sqlParams, userIDs) - } - if len(statuss) > 0 { - sql += ` AND a.status IN (` + GenQuestionMarks(len(statuss)) + `)` - sqlParams = append(sqlParams, statuss) - } - if fromTime != utils.ZeroTimeValue { - sql += ` AND a.created_at >= ?` - sqlParams = append(sqlParams, fromTime) - } - if toTime != utils.ZeroTimeValue { - sql += ` AND a.created_at <= ?` - sqlParams = append(sqlParams, toTime) - } - sql += " ORDER BY a.created_at DESC" - sql += " LIMIT ? OFFSET ?" - pageSize = jxutils.FormalizePageSize(pageSize) - sqlParams = append(sqlParams, pageSize, offset) - txDB, _ := Begin(db) - defer Commit(db, txDB) - if err = GetRowsTx(txDB, &dOrders, sql, sqlParams...); err == nil { - pagedInfo = &model.PagedInfo{ - TotalCount: GetLastTotalRowCountTx(txDB), - // Data: dOrders, - } - for _, v := range dOrders { - if addressList1, _, err := QueryUserDeliveryAddress(db, int64(v.DeliverySendID), nil, 0, 0, 0); err == nil && len(addressList1) > 0 { - v.DeliverySendInfo = addressList1[0] - } else { - sendInfo := &UserDeliveryAddressEx{} - sendInfo.ConsigneeName = v.SendName - sendInfo.ConsigneeMobile = v.SendMobile - sendInfo.Address = v.SendAddress - sendInfo.AutoAddress = v.SendAutoAddress - sendInfo.CityCode = v.SendCityCode - sendInfo.DistrictCode = v.SendDistrictCode - sendInfo.DetailAddress = v.SendDetailAddress - sendInfo.Lng = v.SendLng - sendInfo.Lat = v.SendLat - v.DeliverySendInfo = sendInfo - } - if addressList2, _, err := QueryUserDeliveryAddress(db, int64(v.DeliveryReceiveID), nil, 0, 0, 0); err == nil && len(addressList2) > 0 { - v.DeliveryReceiveInfo = addressList2[0] - } else { - receiveInfo := &UserDeliveryAddressEx{} - receiveInfo.ConsigneeName = v.ReceiveName - receiveInfo.ConsigneeMobile = v.ReceiveMobile - receiveInfo.Address = v.ReceiveAddress - receiveInfo.AutoAddress = v.ReceiveAutoAddress - receiveInfo.CityCode = v.ReceiveCityCode - receiveInfo.DistrictCode = v.ReceiveDistrictCode - receiveInfo.DetailAddress = v.ReceiveDetailAddress - receiveInfo.Lng = v.ReceiveLng - receiveInfo.Lat = v.ReceiveLat - v.DeliveryReceiveInfo = receiveInfo - } - } - pagedInfo.Data = dOrders - } - return pagedInfo, err -} - -type GetOrdersResult struct { - model.Order - UserName string `json:"userName"` - Mobile string `json:"mobile"` -} - -func GetOrders(db *DaoDB, orderID, userID string, orderType int, cityCodes []int, fromTime, toTime time.Time, keyword string, offset, pageSize int) (pagedInfo *model.PagedInfo, err error) { - var orders []*GetOrdersResult - sql := ` - SELECT SQL_CALC_FOUND_ROWS a.*, b.name user_name, b.mobile - FROM ` + "`order`" + ` a - JOIN user b ON b.user_id = a.user_id AND b.deleted_at = ? - WHERE 1 = 1 - ` - - sqlParams := []interface{}{ - utils.DefaultTimeValue, - } - if orderID != "" { - sql += ` AND a.order_id = ?` - sqlParams = append(sqlParams, orderID) - } - if userID != "" { - sql += ` AND a.user_id = ?` - sqlParams = append(sqlParams, userID) - } - if orderType != 0 { - sql += ` AND a.type = ?` - sqlParams = append(sqlParams, orderType) - } - if len(cityCodes) > 0 { - sql += ` AND a.city_code IN (` + GenQuestionMarks(len(cityCodes)) + `)` - sqlParams = append(sqlParams, cityCodes) - } - if fromTime != utils.ZeroTimeValue { - sql += ` AND a.created_at >= ?` - sqlParams = append(sqlParams, fromTime) - } - if toTime != utils.ZeroTimeValue { - sql += ` AND a.created_at <= ?` - sqlParams = append(sqlParams, toTime) - } - if keyword != "" { - sql += ` AND (b.mobile LIKE ? OR b.name LIKE ?)` - sqlParams = append(sqlParams, "%"+keyword+"%", "%"+keyword+"%") - } - sql += " LIMIT ? OFFSET ?" - pageSize = jxutils.FormalizePageSize(pageSize) - sqlParams = append(sqlParams, pageSize, offset) - txDB, _ := Begin(db) - defer Commit(db, txDB) - if err = GetRowsTx(txDB, &orders, sql, sqlParams); err == nil { - pagedInfo = &model.PagedInfo{ - TotalCount: GetLastTotalRowCountTx(txDB), - Data: orders, - } - } - return pagedInfo, err -} - -type GetPayStatisticsResult struct { - TotalPay int `json:"totalPay"` //支付总额 - CanCash int `json:"canCash"` //可提现(未提现+申请提现) - AccountBalance int `json:"accountBalance"` //未提现(含保证金) - SubmitCash int `json:"submitCash"` //申请提现 - Cashed int `json:"cashed"` //已经体现 - CashIncome int `json:"cashIncome"` //提现收益 - TotalIncome int `json:"totalIncome"` //收益总额 - MemberIncome int `json:"memberIncome"` //会员收益 -} - -func getFromSql(orderType, status int, alies string, userID string, pop int, cityCodes []int, mobile string, fromTime, toTime time.Time, orderTypes []int) (sql string, sqlParams []interface{}) { - sql += ` - (SELECT SUM(IFNULL(b.pay_price,0)) total_pay - FROM user a - JOIN ` + "`order` b " + `ON b.user_id = a.user_id AND b.type = ? AND b.status = ? - ` - sqlParams = append(sqlParams, orderType, status) - if len(orderTypes) > 0 { - sql += ` AND b.order_type IN (` + GenQuestionMarks(len(orderTypes)) + `)` - sqlParams = append(sqlParams, orderTypes) - } - if fromTime != utils.ZeroTimeValue { - sql += ` AND b.created_at > ?` - sqlParams = append(sqlParams, fromTime) - } - if toTime != utils.ZeroTimeValue { - sql += ` AND b.created_at < ?` - sqlParams = append(sqlParams, toTime) - } - if mobile != "" { - if pop == 1 { - sql += " JOIN user e ON e.moblie = ? AND a.pop_user = e.user_id" - sqlParams = append(sqlParams, mobile) - } - } - sql += ` - WHERE a.status = ? AND a.deleted_at = ? - ` - sqlParams = append(sqlParams, model.UserStatusNormal, utils.DefaultTimeValue) - if userID != "" { - if pop == 1 { - sql += " AND a.pop_user = ?" - sqlParams = append(sqlParams, userID) - } else { - sql += " AND a.user_id = ?" - sqlParams = append(sqlParams, userID) - } - } - if mobile != "" { - if pop == 0 { - sql += " AND a.mobile = ?" - sqlParams = append(sqlParams, mobile) - } - } - if len(cityCodes) > 0 { - sql += ` AND a.city_code IN (` + GenQuestionMarks(len(cityCodes)) + `)` - sqlParams = append(sqlParams, cityCodes) - } - sql += `) ` + alies - return sql, sqlParams -} - -func GetPayStatistics(db *DaoDB, userID string, pop int, cityCodes []int, mobile string, fromTime, toTime time.Time, orderTypes []int) (getPayStatisticsResult *GetPayStatisticsResult, err error) { - sqlParams := []interface{}{} - sql := `SELECT t1.total_pay, t2.total_pay submit_cash, t3.total_pay cashed, t4.account_balance, t4.account_balance + t2.total_pay can_cash - FROM ` - rSQL1, rSQLParams1 := getFromSql(model.OrderTypePay, model.OrderStatusFinished, "t1", userID, pop, cityCodes, mobile, fromTime, toTime, orderTypes) - sql += rSQL1 + "," - sqlParams = append(sqlParams, rSQLParams1...) - rSQL2, rSQLParams2 := getFromSql(model.OrderTypeCash, model.OrderStatusWait4Pay, "t2", userID, pop, cityCodes, mobile, fromTime, toTime, orderTypes) - sql += rSQL2 + "," - sqlParams = append(sqlParams, rSQLParams2...) - rSQL3, rSQLParams3 := getFromSql(model.OrderTypeCash, model.OrderStatusFinished, "t3", userID, pop, cityCodes, mobile, fromTime, toTime, orderTypes) - sql += rSQL3 + "," - sqlParams = append(sqlParams, rSQLParams3...) - sql += `(SELECT SUM(IFNULL(b.account_balance,0)) account_balance - FROM user a - JOIN user_bill b ON a.user_id = b.user_id - ` - if mobile != "" { - if pop == 1 { - sql += " JOIN user e ON e.moblie = ? AND a.pop_user = e.user_id" - sqlParams = append(sqlParams, mobile) - } - } - sql += ` - WHERE 1 = 1 - ` - if userID != "" { - if pop == 1 { - sql += " AND a.pop_user = ?" - sqlParams = append(sqlParams, userID) - } else { - sql += " AND a.user_id = ?" - sqlParams = append(sqlParams, userID) - } - } - if mobile != "" { - if pop == 0 { - sql += " AND a.mobile = ?" - sqlParams = append(sqlParams, mobile) - } - } - if len(cityCodes) > 0 { - sql += ` AND a.city_code IN (` + GenQuestionMarks(len(cityCodes)) + `)` - sqlParams = append(sqlParams, cityCodes) - } - sql += ` - ) t4` - err = GetRow(db, &getPayStatisticsResult, sql, sqlParams) - sqlParams2 := []interface{}{} - getPayStatisticsResult1 := &GetPayStatisticsResult{} - sql2 := ` - SELECT SUM(IFNULL(d.expend_price,0)) member_income - FROM user a` - if mobile != "" { - if pop == 1 { - sql2 += " JOIN user e ON e.moblie = ? AND a.pop_user = e.user_id" - sqlParams2 = append(sqlParams2, mobile) - } - } - sql2 += ` - LEFT JOIN user_bill c ON c.user_id = a.user_id - LEFT JOIN bill_expend d ON d.bill_id = c.bill_id AND d.type = ? - ` - sqlParams2 = append(sqlParams2, model.BillTypeMember) - if fromTime != utils.ZeroTimeValue { - sql2 += ` AND d.created_at > ?` - sqlParams2 = append(sqlParams2, fromTime) - } - if toTime != utils.ZeroTimeValue { - sql2 += ` AND d.created_at < ?` - sqlParams2 = append(sqlParams2, toTime) - } - sql2 += ` - WHERE a.status = ? AND a.deleted_at = ? - ` - sqlParams2 = append(sqlParams2, model.UserStatusNormal, utils.DefaultTimeValue) - if len(cityCodes) > 0 { - sql2 += ` AND a.city_code IN (` + GenQuestionMarks(len(cityCodes)) + `)` - sqlParams2 = append(sqlParams2, cityCodes) - } - if mobile != "" { - if pop == 0 { - sql2 += " AND a.mobile = ?" - sqlParams2 = append(sqlParams2, mobile) - } - } - if userID != "" { - if pop == 1 { - sql2 += " AND a.pop_user = ?" - sqlParams2 = append(sqlParams2, userID) - } else { - sql2 += " AND a.user_id = ?" - sqlParams2 = append(sqlParams2, userID) - } - } - err = GetRow(db, &getPayStatisticsResult1, sql2, sqlParams2) - getPayStatisticsResult.MemberIncome = getPayStatisticsResult1.MemberIncome - getPayStatisticsResult.CashIncome = getPayStatisticsResult.Cashed / 10 - getPayStatisticsResult.TotalIncome = getPayStatisticsResult.MemberIncome + getPayStatisticsResult.CashIncome - return getPayStatisticsResult, err -} - -type GetManageStatisticsResult struct { - Date time.Time `json:"date"` //日期 - BrowseCount int `json:"browseCount"` //点击次数 - AcceptCount int `json:"acceptCount"` //接受任务数 - FinishCount int `json:"finishCount"` //完成任务数 - CancelCount int `json:"cancelCount"` //取消任务数 - TotalCash int `json:"totalCash"` //返现总额 - InversionRate float64 `json:"inversionRate"` //转化率 -} - -func getFromSqlManage(status int, alies string, cityCodes []int, jobTime, endTime time.Time, jobIDs []int) (sql string, sqlParams []interface{}) { - sql += ` - (SELECT COUNT(b.id) count - FROM job a - JOIN job_order b ON a.id = b.job_id - WHERE a.deleted_at = ? - ` - sqlParams = append(sqlParams, utils.DefaultTimeValue) - if status != 0 { - sql += " AND b.status = ?" - sqlParams = append(sqlParams, status) - } - if jobTime != utils.ZeroTimeValue { - sql += " AND a.created_at > ?" - sqlParams = append(sqlParams, jobTime) - } - if endTime != utils.ZeroTimeValue { - sql += " AND a.created_at < ?" - sqlParams = append(sqlParams, endTime) - } - if len(cityCodes) > 0 { - sql += ` AND a.job_city_code IN (` + GenQuestionMarks(len(cityCodes)) + `)` - sqlParams = append(sqlParams, cityCodes) - } - if len(jobIDs) > 0 { - sql += ` AND a.id IN (` + GenQuestionMarks(len(jobIDs)) + `)` - sqlParams = append(sqlParams, jobIDs) - } - sql += ") " + alies - return sql, sqlParams -} - -func getWhereSqlManage(cityCodes []int, jobTime, endTime time.Time, jobIDs []int) (sql string, sqlParams []interface{}) { - if jobTime != utils.ZeroTimeValue { - sql += " AND a.created_at > ?" - sqlParams = append(sqlParams, jobTime) - } - if endTime != utils.ZeroTimeValue { - sql += " AND a.created_at < ?" - sqlParams = append(sqlParams, endTime) - } - if len(cityCodes) > 0 { - sql += ` AND a.job_city_code IN (` + GenQuestionMarks(len(cityCodes)) + `)` - sqlParams = append(sqlParams, cityCodes) - } - if len(jobIDs) > 0 { - sql += ` AND a.id IN (` + GenQuestionMarks(len(jobIDs)) + `)` - sqlParams = append(sqlParams, jobIDs) - } - return sql, sqlParams -} - -func GetManageStatistics(db *DaoDB, cityCodes []int, jobTime time.Time, jobIDs []int) (getManageStatisticsResult *GetManageStatisticsResult, err error) { - endTime := jobTime.AddDate(0, 0, 1) - sqlParams := []interface{}{} - sql := ` - SELECT t1.count accept_count, t2.count finish_count, t3.count cancel_count, t4.browse_count, t6.total_cash - FROM - ` - rSQL1, rSQLparams1 := getFromSqlManage(model.JobOrderStatusAccept, "t1", cityCodes, jobTime, endTime, jobIDs) - sql += rSQL1 + "," - sqlParams = append(sqlParams, rSQLparams1...) - rSQL2, rSQLparams2 := getFromSqlManage(model.JobOrderStatusFinish, "t2", cityCodes, jobTime, endTime, jobIDs) - sql += rSQL2 + "," - sqlParams = append(sqlParams, rSQLparams2...) - rSQL3, rSQLparams3 := getFromSqlManage(model.JobOrderStatusCancel, "t3", cityCodes, jobTime, endTime, jobIDs) - sql += rSQL3 + "," - sqlParams = append(sqlParams, rSQLparams3...) - sql += ` - (SELECT SUM(a.browse_count) browse_count - FROM job a - JOIN job_order b ON a.id = b.job_id - WHERE a.deleted_at = ? - ` - sqlParams = append(sqlParams, utils.DefaultTimeValue) - rSQL4, rSQLparams4 := getWhereSqlManage(cityCodes, jobTime, endTime, jobIDs) - sql += rSQL4 - sqlParams = append(sqlParams, rSQLparams4...) - sql += ` - ) t4, - ` - sql += ` - (SELECT t5.count * a.avg_price total_cash FROM job a, - (SELECT COUNT(b.id) count, a.id - FROM job a - JOIN job_order b ON a.id = b.job_id - WHERE a.deleted_at = ? AND b.status = ? - ` - sqlParams = append(sqlParams, utils.DefaultTimeValue, model.JobOrderStatusFinish) - rSQL5, rSQLparams5 := getWhereSqlManage(cityCodes, jobTime, endTime, jobIDs) - sql += rSQL5 - sqlParams = append(sqlParams, rSQLparams5...) - sql += ` - GROUP BY 2) t5 - WHERE a.id = t5.id - )t6 - ` - GetRow(db, &getManageStatisticsResult, sql, sqlParams) - if getManageStatisticsResult == nil { - return &GetManageStatisticsResult{ - Date: jobTime, - }, err - } else { - getManageStatisticsResult.Date = jobTime - if getManageStatisticsResult.BrowseCount == 0 { - getManageStatisticsResult.InversionRate = 0 - } else { - getManageStatisticsResult.InversionRate = float64(getManageStatisticsResult.FinishCount) / float64(getManageStatisticsResult.BrowseCount) - } - return getManageStatisticsResult, err - } -} - -type GetManageStatisticsJobResult struct { - BrowseCount int `json:"browseCount"` //点击次数 - AcceptCount int `json:"acceptCount"` //接受任务数 - FinishCount int `json:"finishCount"` //完成任务数 - CancelCount int `json:"cancelCount"` //取消任务数 - TotalCash int `json:"totalCash"` //返现总额 - InversionRate float64 `json:"inversionRate"` //转化率 - Title string `json:"title"` //任务标题 -} - -func GetManageStatisticsJob(db *DaoDB, cityCodes []int, fromTime, toTime time.Time, jobIDs []int, offset, pageSize int) (pageInfo *model.PagedInfo, err error) { - var ( - sqlParams = []interface{}{} - getManageStatisticsJobResult []*GetManageStatisticsJobResult - ) - sql := ` - SELECT t1.count acceptCount, t2.count finish_count, t3.count cancel_count, a.browse_count, a.title, a.browse_count / t2.count inversion_rate, t4.total_cash - FROM job a - LEFT JOIN (SELECT job_id, COUNT(*) count FROM job_order WHERE status = ? GROUP BY 1) t1 ON t1.job_id = a.id - LEFT JOIN (SELECT job_id, COUNT(*) count FROM job_order WHERE status = ? GROUP BY 1) t2 ON t2.job_id = a.id - LEFT JOIN (SELECT job_id, COUNT(*) count FROM job_order WHERE status = ? GROUP BY 1) t3 ON t3.job_id = a.id - ` - sql += ` - LEFT JOIN (SELECT COUNT(b.id) * a.avg_price total_cash, a.id - FROM job a - JOIN job_order b ON a.id = b.job_id AND b.status = ? - GROUP BY 2) t4 ON t4.id = a.id - ` - sqlParams = append(sqlParams, model.JobOrderStatusAccept, model.JobOrderStatusFinish, model.JobOrderStatusCancel, model.JobOrderStatusFinish) - sql += " WHERE a.deleted_at = ?" - sqlParams = append(sqlParams, utils.DefaultTimeValue) - rSQL, rSQLparams := getWhereSqlManage(cityCodes, fromTime, toTime, jobIDs) - sql += rSQL - sqlParams = append(sqlParams, rSQLparams...) - sql += " LIMIT ? OFFSET ?" - pageSize = jxutils.FormalizePageSize(pageSize) - sqlParams = append(sqlParams, pageSize, offset) - txDB, _ := Begin(db) - defer Commit(db, txDB) - err = GetRowsTx(txDB, &getManageStatisticsJobResult, sql, sqlParams) - if err == nil { - pageInfo = &model.PagedInfo{ - Data: getManageStatisticsJobResult, - TotalCount: GetLastTotalRowCountTx(txDB), - } - } - return pageInfo, err -} - -func GetUnionOrders(db *DaoDB, vendorIDs, statuss []int, beginTime, endTime time.Time, isEarning int) (orders []*model.UnionOrder, err error) { - sql := ` - SELECT * - FROM union_order - WHERE 1 = 1 - ` - sqlParams := []interface{}{} - if len(vendorIDs) > 0 { - sql += ` AND vendor_id IN (` + GenQuestionMarks(len(vendorIDs)) + `)` - sqlParams = append(sqlParams, vendorIDs) - } - if len(statuss) > 0 { - sql += ` AND status IN (` + GenQuestionMarks(len(statuss)) + `)` - sqlParams = append(sqlParams, statuss) - } - if !utils.IsTimeZero(beginTime) { - sql += ` AND order_settle_at > ?` - sqlParams = append(sqlParams, beginTime) - } - if !utils.IsTimeZero(endTime) { - sql += ` AND order_settle_at < ?` - sqlParams = append(sqlParams, endTime) - } - if isEarning != -1 { - sql += ` AND is_earning = ?` - sqlParams = append(sqlParams, isEarning) - } - err = GetRows(db, &orders, sql, sqlParams) - return orders, err -} - -func GetUnionOrdersByIDs(db *DaoDB, vendorOrderIDs []string, vendorID int) (orders []*model.UnionOrder, err error) { - if len(vendorOrderIDs) == 0 { - return nil, err - } - sql := ` - SELECT * - FROM union_order - WHERE 1 = 1 - ` - sqlParams := []interface{}{} - if len(vendorOrderIDs) > 0 { - sql += ` AND vendor_order_id IN (` + GenQuestionMarks(len(vendorOrderIDs)) + `)` - sqlParams = append(sqlParams, vendorOrderIDs) - } - if vendorID != 0 { - sql += ` AND vendor_id = ?` - sqlParams = append(sqlParams, vendorID) - } - err = GetRows(db, &orders, sql, sqlParams) - return orders, err -} - -func GetMyUnionOrders(db *DaoDB, userID string, statuss []int, vendorID, offset, pageSize int) (page *model.PagedInfo, err error) { - var orders []*model.UnionOrder - sql := ` - SELECT SQL_CALC_FOUND_ROWS a.* - FROM union_order a - WHERE 1 = 1 - ` - sqlParams := []interface{}{} - if vendorID != -1 { - sql += ` AND a.vendor_id = ?` - sqlParams = append(sqlParams, vendorID) - } - if len(statuss) > 0 { - sql += ` AND a.status IN (` + GenQuestionMarks(len(statuss)) + `)` - sqlParams = append(sqlParams, statuss) - } - if userID != "" { - sql += ` AND a.user_id = ?` - sqlParams = append(sqlParams, userID) - } - sql += " ORDER BY a.created_at DESC" - sql += " LIMIT ? OFFSET ?" - pageSize = jxutils.FormalizePageSize(pageSize) - sqlParams = append(sqlParams, pageSize, offset) - txDB, _ := Begin(db) - defer Commit(db, txDB) - if err = GetRowsTx(txDB, &orders, sql, sqlParams...); err == nil { - page = &model.PagedInfo{ - TotalCount: GetLastTotalRowCountTx(txDB), - Data: orders, - } - } - return page, err -} - -type GetUnionOrdersPageResult struct { - model.UnionOrder - Name string `json:"name"` - Moble string `json:"moble"` -} - -func GetUnionOrdersPage(db *DaoDB, vendorIDs, statuss []int, beginTime, endTime time.Time, keyword string, offset, pageSize int) (page *model.PagedInfo, err error) { - var orders []*GetUnionOrdersPageResult - sql := ` - SELECT SQL_CALC_FOUND_ROWS a.*, b.name, b.mobile - FROM union_order a - LEFT JOIN user b ON a.user_id = b.user_id - WHERE 1 = 1 - ` - sqlParams := []interface{}{} - if len(vendorIDs) > 0 { - sql += ` AND a.vendor_id IN (` + GenQuestionMarks(len(vendorIDs)) + `)` - sqlParams = append(sqlParams, vendorIDs) - } - if len(statuss) > 0 { - sql += ` AND a.status IN (` + GenQuestionMarks(len(statuss)) + `)` - sqlParams = append(sqlParams, statuss) - } - if !utils.IsTimeZero(beginTime) { - sql += ` AND a.order_settle_at > ?` - sqlParams = append(sqlParams, beginTime) - } - if !utils.IsTimeZero(endTime) { - sql += ` AND a.order_settle_at < ?` - sqlParams = append(sqlParams, endTime) - } - if keyword != "" { - keywordLike := "%" + keyword + "%" - sql += ` AND (b.name LIKE ? OR b.mobile LIKE ? OR a.vendor_order_id LIKE ? OR a.goods_name LIKE ? OR a.comment LIKE ?)` - sqlParams = append(sqlParams, keywordLike, keywordLike, keywordLike, keywordLike, keywordLike) - } - sql += " LIMIT ? OFFSET ?" - pageSize = jxutils.FormalizePageSize(pageSize) - sqlParams = append(sqlParams, pageSize, offset) - txDB, _ := Begin(db) - defer Commit(db, txDB) - if err = GetRowsTx(txDB, &orders, sql, sqlParams...); err == nil { - page = &model.PagedInfo{ - TotalCount: GetLastTotalRowCountTx(txDB), - Data: orders, - } - } - return page, err -} diff --git a/business/model/dao/dao_user.go b/business/model/dao/dao_user.go index 2ac167c4b..17154ca44 100644 --- a/business/model/dao/dao_user.go +++ b/business/model/dao/dao_user.go @@ -381,19 +381,6 @@ func GetUserAllWaitCashPrice(db *DaoDB, userID string) (price int, err error) { return result.Price, err } -func GetUserAllWaitRealCashPrice(db *DaoDB, userID string) (price int, err error) { - var result = &GetUserAllWaitCashPriceResult{} - sql := ` - SELECT SUM(pay_price) price FROM ` + "`order`" + ` WHERE user_id = ? AND status = ? AND type = ? - ` - sqlParams := []interface{}{ - userID, - model.OrderStatusWait4Pay, - model.OrderTypeCash, - } - err = GetRow(db, &result, sql, sqlParams) - return result.Price, err -} func GetUserUnionBind(db *DaoDB, userID string, vendorID int, unionID string) (userBinds []*model.UserUnionBind, err error) { sql := ` SELECT * FROM user_union_bind WHERE deleted_at = ?