520 lines
18 KiB
Go
520 lines
18 KiB
Go
package cms
|
||
|
||
import (
|
||
"errors"
|
||
"fmt"
|
||
"git.rosy.net.cn/baseapi/platformapi/recharge_phone_bill"
|
||
"git.rosy.net.cn/baseapi/platformapi/tonglianpayapi"
|
||
"git.rosy.net.cn/jx-callback/business/jxstore/event"
|
||
"git.rosy.net.cn/jx-callback/business/q_bida"
|
||
"regexp"
|
||
"strings"
|
||
"time"
|
||
|
||
"git.rosy.net.cn/jx-callback/business/auth2"
|
||
|
||
"git.rosy.net.cn/jx-callback/globals"
|
||
|
||
"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/model/dao"
|
||
|
||
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
||
|
||
"git.rosy.net.cn/jx-callback/business/model"
|
||
)
|
||
|
||
func CreateOrder(ctx *jxcontext.Context, type1, orderType int, way string, price int, lng, lat float64, mobile, flowCode string) (orderID, errCode string, err error) {
|
||
var (
|
||
db = dao.GetDB()
|
||
order *model.Order
|
||
DayTimeBegin, DayTimeEnd = jxutils.GetDayTime()
|
||
)
|
||
if err = auth2.CheckWeixinminiAuthBind(ctx.GetUserID()); err != nil {
|
||
return "", errCode, err
|
||
}
|
||
txDB, _ := dao.Begin(db)
|
||
defer func() {
|
||
if r := recover(); r != nil {
|
||
dao.Rollback(db, txDB)
|
||
panic(r)
|
||
}
|
||
}()
|
||
if type1 == model.OrderTypeCash {
|
||
//如果用户没有对应账单信息就给他生成一条
|
||
userBill, err := dao.GetUserBill(db, ctx.GetUserID(), "")
|
||
if userBill == nil {
|
||
err = financial.AddUserBill(txDB, jxutils.GenBillID(), ctx.GetUserID())
|
||
}
|
||
if userBill.AccountBalance < price {
|
||
return "", model.ErrCodeAccountBalanceNotEnough, fmt.Errorf("用户余额不足!")
|
||
}
|
||
//用户一天只能提现一次
|
||
billExpends, err := dao.GetBillExpend(db, ctx.GetUserID(), model.BillTypeCash, DayTimeBegin, DayTimeEnd)
|
||
if err != nil {
|
||
return "", "", err
|
||
}
|
||
if len(billExpends) > 0 {
|
||
return "", "", fmt.Errorf("抱歉,一天只能提现一次!")
|
||
}
|
||
}
|
||
address, dCode, cCode, err := getAddressInfoFromCoord(db, lng, lat)
|
||
order = &model.Order{
|
||
OrderID: utils.Int64ToStr(jxutils.GenOrderNo()),
|
||
UserID: ctx.GetUserID(),
|
||
Type: type1,
|
||
OrderType: orderType,
|
||
Way: way,
|
||
Status: model.OrderStatusWait4Pay,
|
||
PayPrice: price,
|
||
Lng: lng,
|
||
Lat: lat,
|
||
Address: address,
|
||
DistrictCode: dCode,
|
||
CityCode: cCode,
|
||
}
|
||
|
||
// 话费充值
|
||
if order.OrderType == 7 {
|
||
// 校验充值编号
|
||
have, err := CheckMobileAndFlowCode(mobile, flowCode)
|
||
if err != nil {
|
||
return "", "", err
|
||
}
|
||
if !have {
|
||
return "", "", errors.New("充值模板错误")
|
||
}
|
||
order.Mobile = mobile
|
||
order.FlowCode = flowCode
|
||
order.RechargeStatus = 3 // 当前系统待充值
|
||
}
|
||
|
||
dao.WrapAddIDCULEntity(order, ctx.GetUserName())
|
||
if err = dao.CreateEntityTx(txDB, order); err != nil {
|
||
dao.Rollback(db, txDB)
|
||
}
|
||
dao.Commit(db, txDB)
|
||
return order.OrderID, errCode, err
|
||
}
|
||
|
||
func CheckMobileAndFlowCode(mobile, flowCode string) (bool, error) {
|
||
// 校验业务电话和充值号码是否正确
|
||
if mobile == "" || flowCode == "" {
|
||
return false, errors.New("充值电话费用号码/业务代码不能为空")
|
||
}
|
||
regRuler := "^1[3456789]{1}\\d{9}$"
|
||
if !regexp.MustCompile(regRuler).MatchString(mobile) {
|
||
return false, errors.New("电话号码格式校验错误")
|
||
}
|
||
|
||
switch mobile[0:4] {
|
||
case "1703", "1705", "1706": // 中国移动
|
||
if flowCode == recharge_phone_bill.FlowCodeY10Y100 || flowCode == recharge_phone_bill.FlowCodeY10Y200 {
|
||
return true, nil
|
||
}
|
||
case "1704", "1707", "1708", "1709": // 中国联通
|
||
if flowCode == recharge_phone_bill.FlowCodeL10Y50 || flowCode == recharge_phone_bill.FlowCodeL10Y100 || flowCode == recharge_phone_bill.FlowCodeL10Y200 {
|
||
return true, nil
|
||
}
|
||
case "1700", "1701", "1702 ": // 中国电信
|
||
if flowCode == recharge_phone_bill.FlowCodeD10Y50 || flowCode == recharge_phone_bill.FlowCodeD10Y100 || flowCode == recharge_phone_bill.FlowCodeD10Y200 {
|
||
return true, nil
|
||
}
|
||
}
|
||
|
||
switch mobile[0:3] {
|
||
case "139", "138", "137", "136", "135", "134", "150", "151", "152", "157", "158", "159 182", "183", "184", "187", "188", "147", "198", "178 ", "165": // 中国移动
|
||
if flowCode == recharge_phone_bill.FlowCodeY10Y100 || flowCode == recharge_phone_bill.FlowCodeY10Y200 {
|
||
return true, nil
|
||
}
|
||
case "130", "131", "132", "155", "156", "185", "186", "175", "176", "166", "171", "167": // 中国联通
|
||
if flowCode == recharge_phone_bill.FlowCodeL10Y50 || flowCode == recharge_phone_bill.FlowCodeL10Y100 || flowCode == recharge_phone_bill.FlowCodeL10Y200 {
|
||
return true, nil
|
||
}
|
||
case "133", "153", "173", "177", "180", "181", "189", "191", "199": // 中国电信
|
||
if flowCode == recharge_phone_bill.FlowCodeD10Y50 || flowCode == recharge_phone_bill.FlowCodeD10Y100 || flowCode == recharge_phone_bill.FlowCodeD10Y200 {
|
||
return true, nil
|
||
}
|
||
}
|
||
return false, errors.New("运营商查询错误/充值编码错误")
|
||
}
|
||
|
||
func Pay(ctx *jxcontext.Context, orderID string, payType int, vendorPayType, appId string, isChoose int) (result *financial.WxPayParam, err error) {
|
||
var (
|
||
tempPayprice int
|
||
tempPaymethod int
|
||
db = dao.GetDB()
|
||
tdb, _ = dao.Begin(db)
|
||
)
|
||
orderInfo, err := dao.GetOrderByID(db, orderID)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
var (
|
||
payHandler = &financial.PayHandler{
|
||
PayType: payType,
|
||
Ctx: ctx,
|
||
VendorPayType: vendorPayType,
|
||
}
|
||
)
|
||
if orderInfo.OrderType == 6 {
|
||
return nil, errors.New("不能余额充值余额")
|
||
}
|
||
|
||
// 用户是否使用余额抵消
|
||
if isChoose == 1 { // 余额抵消
|
||
// 查询用户余额
|
||
userBill, err := dao.GetUserBill(db, ctx.GetUserID(), "")
|
||
if err != nil || userBill == nil { // 出现错误或异常直接使用金钱支付
|
||
tempPayprice = orderInfo.PayPrice
|
||
tempPaymethod = model.OrderPayMethodWX
|
||
} else {
|
||
if userBill.AccountBalance-orderInfo.PayPrice >= 0 { // 余额大于支付金额,使用余额支付
|
||
switch orderInfo.OrderType { // 1-发任务,2-会员月卡,3-发快递,4-提现,5-会员年卡,6-使用充值到余额方式的订单,7-话费
|
||
case model.OrderTypeMember, model.OrderTypeMemberYear:
|
||
if err := financial.OnWXPayFinished(orderInfo); err != nil {
|
||
return nil, err
|
||
}
|
||
case model.OrderTypeDelivery:
|
||
call := &tonglianpayapi.CallBackResult{}
|
||
call.TrxID = "ziDingYi_" + utils.Int64ToStr(time.Now().Unix())
|
||
call.TrxStatus = tonglianpayapi.TrxStatusSuccess
|
||
if err := financial.OnWxPaySendPage(dao.GetDB(), orderInfo, call, 4); err != nil {
|
||
return nil, err
|
||
}
|
||
case model.OrderTypeMobile:
|
||
if err := financial.OnWxPayTelephone(orderInfo); err != nil {
|
||
return nil, err
|
||
}
|
||
default:
|
||
return nil, errors.New("其他待处理信息,联系管理员")
|
||
}
|
||
//账户支出
|
||
if err = financial.AddExpendUpdateAccount(tdb, userBill, model.BillTypePayByAccountBalance, orderInfo.PayPrice, 1); err != nil {
|
||
dao.Rollback(db, tdb)
|
||
return nil, err
|
||
}
|
||
return nil, nil
|
||
} else {
|
||
// 混合支付
|
||
tempPayprice = orderInfo.PayPrice - userBill.AccountBalance
|
||
tempPaymethod = model.OrderPayMethodMix
|
||
//账户支出
|
||
if err = financial.AddExpendUpdateAccount(tdb, userBill, model.BillTypePayByAccountBalance, userBill.AccountBalance, 1); err != nil {
|
||
dao.Rollback(db, tdb)
|
||
return nil, err
|
||
}
|
||
}
|
||
|
||
}
|
||
} else { // 原价给
|
||
tempPayprice = orderInfo.PayPrice
|
||
tempPaymethod = model.OrderPayMethodWX
|
||
}
|
||
|
||
orderInfo.PayPrice = tempPayprice
|
||
orderInfo.PayMethod = tempPaymethod
|
||
dao.UpdateEntity(dao.GetDB(), orderInfo, "PayPrice", "PayMethod")
|
||
payHandler.Order = orderInfo
|
||
//如果用户没有对应账单信息就给他生成一条
|
||
// 给用户创建一个银行卡账户
|
||
userBill, err := dao.GetUserBill(db, orderInfo.UserID, "")
|
||
if userBill == nil {
|
||
err = financial.AddUserBill(tdb, jxutils.GenBillID(), orderInfo.UserID)
|
||
}
|
||
err = payHandler.CreatePay(tdb, appId)
|
||
return payHandler.WxPayParam, err
|
||
}
|
||
|
||
//余额支付 微信补差值
|
||
func PayByBalance(ctx *jxcontext.Context, orderID string, isChoose, payType int, vendorPayType, appID string) (*financial.WxPayParam, string, error) {
|
||
var (
|
||
db = dao.GetDB()
|
||
)
|
||
//获取订单信息
|
||
orderInfo, err := dao.GetOrderByID(db, orderID)
|
||
if err != nil {
|
||
return nil, "获取订单信息失败", err
|
||
}
|
||
//获取用户 会员账户信息
|
||
userBill, err := dao.GetUserBill(db, orderInfo.UserID, "")
|
||
if err != nil {
|
||
return nil, "获取用户会员账户余额失败", err
|
||
}
|
||
if orderInfo.Status == model.OrderNotPay {
|
||
//需要充值余额支付的方式//todo 后续添加
|
||
//if orderInfo.OrderType == 6 {
|
||
// WxPayParam, err := Pay(ctx, orderInfo.OrderID, payType, vendorPayType, appID, orderInfo.PayPrice)
|
||
// if err != nil {
|
||
// return nil, "微信支付失败:", err
|
||
// }
|
||
// return WxPayParam, "", err
|
||
//}
|
||
//快递混合支付
|
||
if orderInfo.OrderType == model.OrderTypeDelivery {
|
||
if isChoose == model.PayChooseBalance {
|
||
// (1)使用余额且 余额大于支付金额
|
||
if userBill.AccountBalance > orderInfo.PayPrice {
|
||
globals.SugarLogger.Debug("进入余额支付部分")
|
||
txDB, _ := dao.Begin(db)
|
||
defer func() {
|
||
if r := recover(); r != nil {
|
||
panic(r)
|
||
}
|
||
}()
|
||
//增加账单 余额减去相应金额
|
||
money := userBill.AccountBalance - orderInfo.PayPrice
|
||
if err = dao.UpdateUserBill(userBill.UserID, money); err != nil {
|
||
return nil, "余额支付失败", err
|
||
}
|
||
//更新订单状态
|
||
orderInfo.PayMethod = 1
|
||
orderInfo.Status = 110
|
||
if _, err := dao.UpdateEntityTx(txDB, orderInfo, "PayMethod"); err != nil {
|
||
dao.Rollback(db, txDB)
|
||
return nil, "更新order.PayMethod状态失败", err
|
||
}
|
||
if _, err := dao.UpdateEntityTx(txDB, orderInfo, "Status"); err != nil {
|
||
dao.Rollback(db, txDB)
|
||
return nil, "更新order.Status状态失败", err
|
||
}
|
||
//todo 后续需增加其他订单类型
|
||
//更新快递 订单状态
|
||
temp_vendor_status := 4
|
||
if _, err := dao.SetUserVendorOrderStatus(txDB, orderInfo.OrderID, temp_vendor_status); err != nil {
|
||
dao.Rollback(db, txDB)
|
||
return nil, "更新user_vendor_order状态失败", err
|
||
}
|
||
dao.Commit(db, txDB)
|
||
//再次从数据库获取order、userOrder
|
||
orderNew, err := dao.GetOrderByID(db, orderID)
|
||
if err != nil {
|
||
return nil, "获取orderNew失败", err
|
||
}
|
||
userOrder, err := dao.GetUserVendorOrder(db, orderNew.UserID, orderNew.OrderID)
|
||
if err != nil {
|
||
return nil, "获取userOrder失败", err
|
||
}
|
||
//快递单 同步到qbd
|
||
if orderNew.Status == 110 && userOrder.OrderStatus == 4 {
|
||
if err := q_bida.CreateOrder2QBiDa(userOrder, orderInfo.OrderID); err != nil {
|
||
return nil, "", err
|
||
}
|
||
} else {
|
||
return nil, "order/user_vendor_order更新状态出错", nil
|
||
}
|
||
} else {
|
||
//(2)用户选中余额 但余额<订单总价 需混合微信支付
|
||
if userBill.AccountBalance == 0 {
|
||
WxPayParam, err := Pay(ctx, orderInfo.OrderID, payType, vendorPayType, appID, orderInfo.PayPrice)
|
||
if err != nil {
|
||
return nil, "微信支付失败:", err
|
||
}
|
||
return WxPayParam, "", err
|
||
} else if userBill.AccountBalance > 0 {
|
||
//(2)用户使用余额,剩余微信支付
|
||
totalPrice := orderInfo.PayPrice //订单原价
|
||
needPay := totalPrice - userBill.AccountBalance //需支付金额
|
||
WxPayParam, err := Pay(ctx, orderInfo.OrderID, payType, vendorPayType, appID, needPay)
|
||
if err != nil {
|
||
return nil, "微信支付失败:", err
|
||
}
|
||
return WxPayParam, "", err
|
||
}
|
||
}
|
||
}
|
||
if isChoose == model.PayNotChooseBalance {
|
||
//(3)不选中余额支付 即直接微信支付
|
||
WxPayParam, err := Pay(ctx, orderInfo.OrderID, payType, vendorPayType, appID, orderInfo.PayPrice)
|
||
if err != nil {
|
||
return nil, "微信支付失败:", err
|
||
}
|
||
return WxPayParam, "", err
|
||
}
|
||
}
|
||
}
|
||
return nil, "", err
|
||
}
|
||
|
||
func Cash(ctx *jxcontext.Context, orderID string, payType int, vendorPayType string) (errCode string, err error) {
|
||
var (
|
||
db = dao.GetDB()
|
||
order = &model.Order{
|
||
OrderID: orderID,
|
||
}
|
||
payHandler = &financial.PayHandler{
|
||
PayType: payType,
|
||
Ctx: ctx,
|
||
VendorPayType: vendorPayType,
|
||
}
|
||
)
|
||
err = dao.GetEntity(db, order, "OrderID")
|
||
if err != nil {
|
||
return errCode, err
|
||
}
|
||
if order.ID == 0 {
|
||
return errCode, fmt.Errorf("未找到此订单!")
|
||
}
|
||
payHandler.Order = order
|
||
err = payHandler.CreateRefund()
|
||
return errCode, err
|
||
}
|
||
|
||
func GetOrders(ctx *jxcontext.Context, orderID, userID string, orderType int, cityCodes []int, fromTime, toTime, keyword string, offset, pageSize int) (pageInfo *model.PagedInfo, err error) {
|
||
return dao.GetOrders(dao.GetDB(), orderID, userID, orderType, cityCodes, utils.Str2Time(fromTime), utils.Str2Time(toTime), keyword, offset, pageSize)
|
||
}
|
||
|
||
//id获取订单详情(单条查询)
|
||
//func GetOrderByID(ctx *jxcontext.Context, orderID int) (errMsg string, err error) {
|
||
// //var db = dao.GetDB()
|
||
// if _, err := dao.GetOrderByID(dao.GetDB(), orderID); err != nil {
|
||
// return "id获取订单详情失败", err
|
||
// }
|
||
// return "", err
|
||
//}
|
||
|
||
func FinishedCashOrders(ctx *jxcontext.Context, orderIDs []string) (err error) {
|
||
var (
|
||
db = dao.GetDB()
|
||
)
|
||
for _, orderID := range orderIDs {
|
||
order := &model.Order{
|
||
OrderID: orderID,
|
||
}
|
||
dao.GetEntity(db, order, "OrderID")
|
||
if order.ID != 0 && order.Status == model.OrderStatusWait4Pay {
|
||
order.PayFinishedAt = time.Now()
|
||
order.Comment = "手动转账"
|
||
order.Status = model.OrderStatusFinished
|
||
dao.UpdateEntity(db, order, "PayFinishedAt", "Comment", "Status")
|
||
}
|
||
}
|
||
return err
|
||
}
|
||
|
||
func GetPayStatistics(ctx *jxcontext.Context, userID string, pop int, cityCodes []int, mobile, fromTime, toTime string, consumeTypes []int) (getPayStatisticsResult *dao.GetPayStatisticsResult, err error) {
|
||
var (
|
||
db = dao.GetDB()
|
||
)
|
||
return dao.GetPayStatistics(db, userID, pop, cityCodes, mobile, utils.Str2Time(fromTime), utils.Str2Time(toTime), consumeTypes)
|
||
}
|
||
|
||
func GetManageStatisticsImg(ctx *jxcontext.Context, cityCodes []int, fromTime, toTime string, jobIDs []int) (getManageStatistics []*dao.GetManageStatisticsResult, err error) {
|
||
var (
|
||
db = dao.GetDB()
|
||
fromTimeT = utils.Str2Time(fromTime)
|
||
toTimeT = utils.Str2Time(toTime)
|
||
)
|
||
for i := 1; i < utils.Float64TwoInt(toTimeT.Sub(fromTimeT).Hours()/24)+1; i++ {
|
||
getManageStatisticsResult, _ := dao.GetManageStatistics(db, cityCodes, fromTimeT.AddDate(0, 0, i-1), jobIDs)
|
||
getManageStatistics = append(getManageStatistics, getManageStatisticsResult)
|
||
}
|
||
return getManageStatistics, err
|
||
}
|
||
|
||
func GetManageStatisticsJob(ctx *jxcontext.Context, cityCodes []int, fromTime, toTime string, jobIDs []int, offset, pageSize int) (paged *model.PagedInfo, err error) {
|
||
var (
|
||
db = dao.GetDB()
|
||
)
|
||
return dao.GetManageStatisticsJob(db, cityCodes, utils.Str2Time(fromTime), utils.Str2Time(toTime), jobIDs, offset, pageSize)
|
||
}
|
||
|
||
func NewUnionOrder(unionOrder *model.UnionOrder, orderStatus *model.UnionOrderStatus) (err error) {
|
||
var (
|
||
db = dao.GetDB()
|
||
userID string
|
||
)
|
||
txDB, _ := dao.Begin(db)
|
||
defer func() {
|
||
if r := recover(); r != nil {
|
||
dao.Rollback(db, txDB)
|
||
panic(r)
|
||
}
|
||
}()
|
||
userBinds, err := dao.GetUserUnionBind(db, "", unionOrder.VendorID, unionOrder.PID)
|
||
if err != nil {
|
||
dao.Rollback(db, txDB)
|
||
return err
|
||
}
|
||
if len(userBinds) == 0 {
|
||
userID = unionOrder.PID
|
||
} else {
|
||
userID = userBinds[0].UserID
|
||
}
|
||
unionOrder.UserID = userID
|
||
dao.WrapAddIDCULEntity(unionOrder, jxcontext.AdminCtx.GetUserName())
|
||
if err = dao.CreateEntityTx(txDB, unionOrder); err != nil {
|
||
dao.Rollback(db, txDB)
|
||
return err
|
||
}
|
||
dao.WrapAddIDCULEntity(orderStatus, jxcontext.AdminCtx.GetUserName())
|
||
if err = dao.CreateEntityTx(txDB, orderStatus); err != nil {
|
||
dao.Rollback(db, txDB)
|
||
return err
|
||
}
|
||
dao.Commit(db, txDB)
|
||
//发消息
|
||
if err == nil {
|
||
orderMessage(unionOrder)
|
||
}
|
||
return err
|
||
}
|
||
|
||
func ChangeUnionOrder(unionOrder *model.UnionOrder, orderStatus *model.UnionOrderStatus) (err error) {
|
||
var (
|
||
db = dao.GetDB()
|
||
)
|
||
globals.SugarLogger.Debugf("ChangeUnionOrder1, unionorder: %v", utils.Format4Output(unionOrder, true))
|
||
txDB, _ := dao.Begin(db)
|
||
defer func() {
|
||
if r := recover(); r != nil {
|
||
dao.Rollback(db, txDB)
|
||
panic(r)
|
||
}
|
||
}()
|
||
unionOrder.Status = orderStatus.Status
|
||
globals.SugarLogger.Debugf("ChangeUnionOrder2, unionorder: %v", utils.Format4Output(unionOrder, true))
|
||
if _, err = dao.UpdateEntityTx(txDB, unionOrder, "Status"); err != nil {
|
||
dao.Rollback(db, txDB)
|
||
fmt.Println("err1", err)
|
||
return err
|
||
}
|
||
dao.WrapAddIDCULEntity(orderStatus, jxcontext.AdminCtx.GetUserName())
|
||
if err = dao.CreateEntityTx(txDB, orderStatus); err != nil {
|
||
dao.Rollback(db, txDB)
|
||
fmt.Println("err2", err)
|
||
return err
|
||
}
|
||
dao.Commit(db, txDB)
|
||
//发消息
|
||
if err == nil {
|
||
orderMessage(unionOrder)
|
||
}
|
||
return err
|
||
}
|
||
|
||
func orderMessage(unionOrder *model.UnionOrder) {
|
||
content := new(strings.Builder)
|
||
content.WriteString("您有[")
|
||
content.WriteString(model.VendorChineseNames[unionOrder.VendorID])
|
||
content.WriteString("]平台的推广订单:")
|
||
content.WriteString(unionOrder.VendorOrderID)
|
||
content.WriteString("。")
|
||
content.WriteString(model.UnionOrderStatusName[unionOrder.Status])
|
||
content.WriteString("。预计返佣:")
|
||
content.WriteString(jxutils.IntPrice2StandardString(int64(unionOrder.PromotionAmount)))
|
||
content.WriteString("元。")
|
||
event.SendSysMessageSimple(content.String(), unionOrder.UserID)
|
||
}
|
||
|
||
func GetMyUnionOrders(ctx *jxcontext.Context, statuss []int, vendorID, offset, pageSize int) (page *model.PagedInfo, err error) {
|
||
return dao.GetMyUnionOrders(dao.GetDB(), ctx.GetUserID(), statuss, vendorID, offset, pageSize)
|
||
}
|
||
|
||
func GetUnionOrders(ctx *jxcontext.Context, vendorIDs, statuss []int, beginTime, endTime, keyword string, offset, pageSize int) (page *model.PagedInfo, err error) {
|
||
return dao.GetUnionOrdersPage(dao.GetDB(), vendorIDs, statuss, utils.Str2Time(beginTime), utils.Str2Time(endTime), keyword, offset, pageSize)
|
||
}
|