diff --git a/business/jxcallback/orderman/order_afs.go b/business/jxcallback/orderman/order_afs.go index 942271fb2..f550d9555 100644 --- a/business/jxcallback/orderman/order_afs.go +++ b/business/jxcallback/orderman/order_afs.go @@ -38,7 +38,7 @@ func (c *OrderManager) OnAfsOrderNew(afsOrder *model.AfsOrder, orderStatus *mode func (c *OrderManager) onAfsOrderNew(afsOrder *model.AfsOrder, orderStatus *model.OrderStatus, isAdjust bool) (err error) { db := dao.GetDB() - // globals.SugarLogger.Debugf("onAfsOrderNew1 afsOrder:%s", utils.Format4Output(afsOrder, true)) + globals.SugarLogger.Debugf("onAfsOrderNew1 orderID:%s", afsOrder.VendorOrderID) c.setAfsOrderID(db, orderStatus) if afsOrder.AfsOrderID == "" { afsOrder.AfsOrderID = orderStatus.VendorOrderID @@ -49,7 +49,7 @@ func (c *OrderManager) onAfsOrderNew(afsOrder *model.AfsOrder, orderStatus *mode if afsOrder.Status == model.OrderStatusUnknown { afsOrder.Status = orderStatus.Status } - // globals.SugarLogger.Debugf("onAfsOrderNew2 afsOrder:%s", utils.Format4Output(afsOrder, true)) + globals.SugarLogger.Debugf("onAfsOrderNew2 orderID:%s", afsOrder.VendorOrderID) dao.Begin(db) defer func() { if r := recover(); r != nil || err != nil { @@ -374,3 +374,44 @@ func composeAfsOrderID(vendorOrderID string, index int) (afsOrderID string) { utils.Int2Str(index), }, "-") } + +func (c *OrderManager) CreateAfsOrderFromOrder(vendorOrderID string, vendorID int) (afsOrder *model.AfsOrder, err error) { + order, err := c.LoadOrder(vendorOrderID, vendorID) + // globals.SugarLogger.Debug(utils.Format4Output(order, false)) + if err == nil { + afsOrder = &model.AfsOrder{ + VendorID: vendorID, + VendorOrderID: vendorOrderID, + JxStoreID: order.JxStoreID, + VendorStoreID: order.VendorStoreID, + StoreID: order.StoreID, + } + } else { + globals.SugarLogger.Warnf("CreateAfsOrderFromOrder, orderID:%s is not found from partner.CurOrderManager.LoadOrder", vendorOrderID) + return nil, err + } + + for _, sku := range order.Skus { + orderSkuFinancial := &model.OrderSkuFinancial{ + VendorID: sku.VendorID, + VendorOrderID: sku.VendorOrderID, + // OrderFinancialID: sku.VendorOrderID, + // ConfirmTime: afsOrder.AfsCreateAt, + VendorStoreID: afsOrder.VendorStoreID, + StoreID: afsOrder.StoreID, + JxStoreID: afsOrder.JxStoreID, + VendorSkuID: sku.VendorSkuID, + SkuID: sku.SkuID, + PromotionType: sku.PromotionType, + Name: sku.SkuName, + ShopPrice: sku.ShopPrice, + SalePrice: sku.SalePrice, + Count: sku.Count, + // UserMoney: sku.UserMoney, + // PmSubsidyMoney: sku.PmSubsidyMoney, + IsAfsOrder: 1, + } + afsOrder.Skus = append(afsOrder.Skus, orderSkuFinancial) + } + return afsOrder, nil +} diff --git a/business/jxcallback/orderman/orderman_ext.go b/business/jxcallback/orderman/orderman_ext.go index 89a7d3d31..50018eb38 100644 --- a/business/jxcallback/orderman/orderman_ext.go +++ b/business/jxcallback/orderman/orderman_ext.go @@ -227,226 +227,9 @@ func (c *OrderManager) ExportMTWaybills(ctx *jxcontext.Context, fromDateStr, toD return nil, err } -func (c *OrderManager) getOrders(ctx *jxcontext.Context, isIncludeSku, isIncludeFake bool, fromDateStr, toDateStr string, isDateFinish bool, skuIDs []int, isJxFirst bool, params map[string]interface{}, offset, pageSize int) (orders []*model.GoodsOrderExt, totalCount int, err error) { - globals.SugarLogger.Debugf("getOrders from:%s to:%s", fromDateStr, toDateStr) - isPurchase, _ := params["isPurchase"].(bool) - userID := "" - if !isPurchase { - if user := ctx.GetFullUser(); user != nil { - userID = user.GetID() - if user.Type&model.UserTypeNonConsumer == 0 { - isPurchase = true - } - } - } - pageSize = jxutils.FormalizePageSize(pageSize) - if offset < 0 { - offset = 0 - } - sql := fmt.Sprintf(` - SELECT SQL_CALC_FOUND_ROWS t1.*, - CAST(IF(t1.earning_price <> 0, t1.earning_price, IF(t1.shop_price <> 0 && t1.shop_price < t1.sale_price, t1.shop_price, t1.sale_price) * IF(t5.pay_percentage > 0, t5.pay_percentage, %d) / 100) AS SIGNED) earning_price, - t2.status waybill_status, t2.courier_name, t2.courier_mobile, - t2.actual_fee, t2.desired_fee, t2.waybill_created_at, t2.waybill_finished_at, - city.name city_name, district.name district_name`, model.DefaultEarningPricePercentage) - if isIncludeSku { - sql += `, - IF(t3.jx_sku_id > 0, t3.jx_sku_id, t3.sku_id) sku_id, - t3.count sku_count2, - t3.shop_price sku_shop_price, - t3.earning_price sku_earning_price, - t3.sale_price sku_sale_price` - } - sql += ` - FROM goods_order t1 - LEFT JOIN waybill t2 ON t1.vendor_waybill_id = t2.vendor_waybill_id AND t1.waybill_vendor_id = t2.waybill_vendor_id - LEFT JOIN store t5 ON t5.id = IF(t1.jx_store_id <> 0, t1.jx_store_id, t1.store_id) - LEFT JOIN place city ON city.code = t5.city_code - LEFT JOIN place district ON district.code = t5.district_code` - if isIncludeSku { - sql += ` - JOIN order_sku t3 ON t3.vendor_order_id = t1.vendor_order_id AND t3.vendor_id = t1.vendor_id` - } - var ( - sqlWhere string - sqlParams []interface{} - ) - // 如果搜索关键字可能为订单号,则当成订单号查询 - if params["keyword"] != nil { - if jxutils.GetPossibleVendorIDFromVendorOrderID(params["keyword"].(string)) > model.VendorIDUnknown { - params["vendorOrderID"] = params["keyword"] - } - } - if params["orderID"] != nil || params["vendorOrderID"] != nil { - sqlWhere = " WHERE (t1.vendor_order_id = ? OR t1.vendor_order_id2 = ?)" - vendorOrderID := params["vendorOrderID"] - if vendorOrderID == nil { - vendorOrderID = params["orderID"] - } - sqlParams = []interface{}{ - vendorOrderID, - vendorOrderID, - } - } else { - timeList, err2 := jxutils.BatchStr2Time(fromDateStr, toDateStr) - if err = err2; err != nil { - return nil, 0, err - } - if utils.IsTimeZero(timeList[0]) { - return nil, 0, fmt.Errorf("在没有指定订单号时,必须指定查询日期范围") - } - if utils.IsTimeZero(timeList[1]) { - timeList[1] = timeList[0] - } - timeList[1] = timeList[1].Add(24 * time.Hour) - if isDateFinish { - sqlWhere = ` - WHERE t1.order_finished_at >= ? AND t1.order_finished_at < ?` - } else { - sqlWhere = ` - WHERE t1.order_created_at >= ? AND t1.order_created_at < ?` - } - sqlParams = []interface{}{ - timeList[0], - timeList[1], - } - if params["keyword"] != nil { - keyword := params["keyword"].(string) - keywordLike := "%" + keyword + "%" - sqlWhere += ` - AND (t1.store_name LIKE ? OR t1.vendor_order_id LIKE ? OR t1.vendor_order_id2 LIKE ? OR t1.vendor_store_id LIKE ? - OR t1.consignee_name LIKE ? OR t1.consignee_mobile LIKE ? OR t1.consignee_mobile2 LIKE ? OR t1.consignee_address LIKE ? - OR t2.vendor_waybill_id LIKE ? OR t2.courier_name LIKE ? OR t2.courier_mobile LIKE ? - ` - sqlParams = append(sqlParams, keywordLike, keywordLike, keywordLike, keywordLike, keywordLike, keywordLike, keywordLike, keywordLike, keywordLike, keywordLike, keywordLike) - if keywordInt64, err2 := strconv.ParseInt(keyword, 10, 64); err2 == nil { - sqlWhere += " OR t1.store_id = ? OR t1.jx_store_id = ?" - sqlParams = append(sqlParams, keywordInt64, keywordInt64) - } - sqlWhere += ")" - } - if params["waybillVendorIDs"] != nil { - var waybillVendorIDs []int - if err = utils.UnmarshalUseNumber([]byte(params["waybillVendorIDs"].(string)), &waybillVendorIDs); err != nil { - return nil, 0, err - } - if len(waybillVendorIDs) > 0 { - sqlWhere += " AND t1.waybill_vendor_id IN (" + dao.GenQuestionMarks(len(waybillVendorIDs)) + ")" - sqlParams = append(sqlParams, waybillVendorIDs) - } - } - if params["storeIDs"] != nil { - var storeIDs []int - if err = utils.UnmarshalUseNumber([]byte(params["storeIDs"].(string)), &storeIDs); err != nil { - return nil, 0, err - } - if len(storeIDs) > 0 { - if storeIDs[0] == 0 { // 容错 - sqlWhere += " AND 1 = 0" - } else { - sqlWhere += " AND IF(t1.jx_store_id != 0, t1.jx_store_id, t1.store_id) IN (" + dao.GenQuestionMarks(len(storeIDs)) + ")" - sqlParams = append(sqlParams, storeIDs) - } - } - } - if params["statuss"] != nil { - var statuss []int - if err = utils.UnmarshalUseNumber([]byte(params["statuss"].(string)), &statuss); err != nil { - return nil, 0, err - } - if len(statuss) > 0 { - sqlWhere += " AND t1.status IN (" + dao.GenQuestionMarks(len(statuss)) + ")" - sqlParams = append(sqlParams, statuss) - } - } - if params["lockStatuss"] != nil { - var lockStatuss []int - if err = utils.UnmarshalUseNumber([]byte(params["lockStatuss"].(string)), &lockStatuss); err != nil { - return nil, 0, err - } - if len(lockStatuss) > 0 { - sqlWhere += " AND t1.lock_status IN (" + dao.GenQuestionMarks(len(lockStatuss)) + ")" - sqlParams = append(sqlParams, lockStatuss) - } - } - if params["cities"] != nil { - var cities []int - if err = utils.UnmarshalUseNumber([]byte(params["cities"].(string)), &cities); err != nil { - return nil, 0, err - } - if len(cities) > 0 { - sqlWhere += " AND t5.city_code IN (" + dao.GenQuestionMarks(len(cities)) + ") AND t5.id IS NOT NULL" - sqlParams = append(sqlParams, cities) - } - } - if !isIncludeFake { - sqlWhere += " AND (t1.flag & ?) = 0" - sqlParams = append(sqlParams, model.OrderFlagMaskFake) - } - if len(skuIDs) > 0 { - sqlWhere += " AND (SELECT COUNT(*) FROM order_sku t11 WHERE t11.vendor_order_id = t1.vendor_order_id AND t11.vendor_id = t1.vendor_id AND t11.jx_sku_id IN (" + dao.GenQuestionMarks(len(skuIDs)) + ")) > 0" - sqlParams = append(sqlParams, skuIDs) - } - if params["adjustCount"] != nil { - sqlWhere += " AND t1.adjust_count >= ?" - sqlParams = append(sqlParams, params["adjustCount"]) - } - if mustInvoice, ok := params["mustInvoice"].(bool); ok && mustInvoice { - sqlWhere += " AND t1.invoice_taxer_id <> ''" - } - } - if params["vendorIDs"] != nil { - var vendorIDs []int - if err = utils.UnmarshalUseNumber([]byte(params["vendorIDs"].(string)), &vendorIDs); err != nil { - return nil, 0, err - } - if len(vendorIDs) > 0 { - sqlWhere += " AND t1.vendor_id IN (" + dao.GenQuestionMarks(len(vendorIDs)) + ")" - sqlParams = append(sqlParams, vendorIDs) - } - } - if isPurchase { - sqlWhere += " AND t1.user_id = ?" - sqlParams = append(sqlParams, userID) - } - db := dao.GetDB() - sql += sqlWhere - if isIncludeSku { - sql += ` - ORDER BY t1.id` - } else { - if isJxFirst { - sql += ` - ORDER BY IF(t1.status < ?, IF(t1.vendor_id = ?, 0, 1), 0), t1.order_created_at DESC` - sqlParams = append(sqlParams, model.OrderStatusEndBegin, model.VendorIDJX) - } else { - sql += ` - ORDER BY t1.order_created_at DESC` - } - sql += ` - LIMIT ? OFFSET ?` - sqlParams = append(sqlParams, pageSize, offset) - - dao.Begin(db) - defer func() { - if r := recover(); r != nil { - dao.Rollback(db) - panic(r) - } - }() - } - if err = dao.GetRows(db, &orders, sql, sqlParams...); err == nil { - totalCount = dao.GetLastTotalRowCount(db) - } - if !isIncludeSku { - dao.Commit(db) - } - return orders, totalCount, err -} - func (c *OrderManager) GetOrders(ctx *jxcontext.Context, isIncludeFake bool, fromDateStr, toDateStr string, isDateFinish bool, skuIDs []int, isJxFirst bool, params map[string]interface{}, offset, pageSize int) (pagedInfo *model.PagedInfo, err error) { globals.SugarLogger.Debugf("GetOrders from:%s to:%s", fromDateStr, toDateStr) - orders, totalCount, err := c.getOrders(ctx, false, isIncludeFake, fromDateStr, toDateStr, isDateFinish, skuIDs, isJxFirst, params, offset, pageSize) + orders, totalCount, err := dao.GetOrders(dao.GetDB(), nil, false, isIncludeFake, fromDateStr, toDateStr, isDateFinish, skuIDs, isJxFirst, "", params, offset, pageSize) if err == nil { pagedInfo = &model.PagedInfo{ TotalCount: totalCount, @@ -468,7 +251,7 @@ func (c *OrderManager) ExportOrders(ctx *jxcontext.Context, fromDateStr, toDateS func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) { switch step { case 0: - orders, _, err = c.getOrders(ctx, true, true, fromDateStr, toDateStr, true, nil, false, mapParams, 0, -1) + orders, _, err = dao.GetOrders(dao.GetDB(), nil, true, true, fromDateStr, toDateStr, true, nil, false, "", mapParams, 0, model.UnlimitedPageSize) case 1: afsSkuMap, err = c.getAfsOrderSkuInfo4ExportOrders(ctx, fromDateStr, toDateStr) case 2: @@ -584,9 +367,7 @@ func (c *OrderManager) GetWaybills(ctx *jxcontext.Context, fromDateStr, toDateSt } toDate = toDate.Add(24 * time.Hour) pageSize = jxutils.FormalizePageSize(pageSize) - if offset < 0 { - offset = 0 - } + offset = jxutils.FormalizePageOffset(offset) sql := ` SELECT SQL_CALC_FOUND_ROWS t1.*, t2.store_name, IF(t1.jx_store_id != 0, t1.jx_store_id, t1.store_id) store_id @@ -683,9 +464,7 @@ func (c *OrderManager) GetOrderStatusList(ctx *jxcontext.Context, vendorOrderID func (c *OrderManager) GetOrdersFinancial(ctx *jxcontext.Context, fromDateStr, toDateStr string, params map[string]interface{}, offset, pageSize int) (pagedInfo *model.PagedInfo, err error) { globals.SugarLogger.Debugf("GetOrdersFinancial from:%s to:%s", fromDateStr, toDateStr) pageSize = jxutils.FormalizePageSize(pageSize) - if offset < 0 { - offset = 0 - } + offset = jxutils.FormalizePageOffset(offset) sql := ` SELECT SQL_CALC_FOUND_ROWS t1.*, t2.store_name,t2.vendor_store_id,t2.store_id,t2.jx_store_id,t2.status,t2.order_finished_at @@ -925,9 +704,7 @@ func (c *OrderManager) GetAfsOrders(ctx *jxcontext.Context, keyword, afsOrderID, globals.SugarLogger.Debugf("GetAfsOrders") pageSize = jxutils.FormalizePageSize(pageSize) - if offset < 0 { - offset = 0 - } + offset = jxutils.FormalizePageOffset(offset) sql := ` SELECT SQL_CALC_FOUND_ROWS t1.* diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index 9ede205ee..fe5dd272f 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -1207,9 +1207,7 @@ func TmpGetJxBadCommentsByStoreId(ctx *jxcontext.Context, keyword string, storeI } sql += " ORDER BY t1.createtime DESC" pageSize = jxutils.FormalizePageSize(pageSize) - if offset < 0 { - offset = 0 - } + offset = jxutils.FormalizePageOffset(offset) sql += " LIMIT ? OFFSET ?" sqlParams = append(sqlParams, pageSize, offset) var commentList []*JxBadCommentsExt diff --git a/business/jxstore/cms/user2.go b/business/jxstore/cms/user2.go index 4f54b5b91..1eb096103 100644 --- a/business/jxstore/cms/user2.go +++ b/business/jxstore/cms/user2.go @@ -11,6 +11,7 @@ import ( "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/auth2" "git.rosy.net.cn/jx-callback/business/auth2/authprovider/dingding" + "git.rosy.net.cn/jx-callback/business/auth2/authprovider/weixin" "git.rosy.net.cn/jx-callback/business/authz" "git.rosy.net.cn/jx-callback/business/authz/autils" "git.rosy.net.cn/jx-callback/business/jxutils" @@ -201,7 +202,7 @@ func HandleOrder4Consignee(order *model.GoodsOrder) (err error) { if mobileNumber == "" && order.VendorUserID == "" { return fmt.Errorf("订单:%s手机号与平台用户标识都是空", order.VendorOrderID) } - authType := jxutils.GetAuthType4Vendor(order.VendorID) + authType := dao.GetAuthType4Vendor(order.VendorID) if authType == "" { msg := fmt.Sprintf("平台ID:%d当前不被支持,请联系开发", order.VendorID) globals.SugarLogger.Warn(msg) @@ -470,7 +471,7 @@ func AddRoles4User(ctx *jxcontext.Context, userID string, rList []*authz.RoleInf if err = api2.RoleMan.AddRole4User(userID, v); err != nil { errList.AddErr(err) } else if v.StoreID > 0 { - jxutils.HandleUserWXRemark(dao.GetDB(), userID, true) + HandleUserWXRemark(dao.GetDB(), userID, true) } } else { errList.AddErr(err) @@ -485,7 +486,7 @@ func DeleteRoles4User(ctx *jxcontext.Context, userID string, rList []*authz.Role if err = api2.RoleMan.DeleteRole4User(userID, v); err != nil { errList.AddErr(err) } else if v.StoreID > 0 { - jxutils.HandleUserWXRemark(dao.GetDB(), userID, true) + HandleUserWXRemark(dao.GetDB(), userID, true) } } return errList.GetErrListAsOne() @@ -504,7 +505,7 @@ func AddUsers4Role(ctx *jxcontext.Context, r *authz.RoleInfo, userIDList []strin if err = api2.RoleMan.AddRole4User(v, r); err != nil { errList.AddErr(err) } else if r.StoreID > 0 { - jxutils.HandleUserWXRemark(dao.GetDB(), v, true) + HandleUserWXRemark(dao.GetDB(), v, true) } } return errList.GetErrListAsOne() @@ -516,7 +517,7 @@ func DeleteUsers4Role(ctx *jxcontext.Context, r *authz.RoleInfo, userIDList []st if err = api2.RoleMan.DeleteRole4User(v, r); err != nil { errList.AddErr(err) } else if r.StoreID > 0 { - jxutils.HandleUserWXRemark(dao.GetDB(), v, true) + HandleUserWXRemark(dao.GetDB(), v, true) } } return errList.GetErrListAsOne() @@ -713,3 +714,66 @@ func GetSelfInfo(ctx *jxcontext.Context) (user *model.User, err error) { } return user, err } + +func HandleUserWXRemark(db *dao.DaoDB, mobile string, mobileIsUerID bool) (err error) { + if db == nil { + db = dao.GetDB() + } + openIDs := []string{} + storeID := 0 + remark := "" + + // if !globals.DisableWXAuth1 { + // wxinfo, err := dao.GetUserStoreInfo(db, "tel", mobile) + // if err == nil { + // openIDs = []string{wxinfo.OpenID} + // storeID = wxinfo.JxStoreID + // } + // } + if globals.EnableWXAuth2 { + userID := "" + if mobileIsUerID { + userID = mobile + } else { + userList, _, err2 := dao.GetUsers(db, model.UserTypeStoreBoss, "", nil, "", mobile, 0, -1) + if err = err2; len(userList) > 0 { + userID = userList[0].GetID() + } + } + if userID != "" { + authBindList, err2 := dao.GetUserBindAuthInfo(db, userID, model.AuthBindTypeAuth, []string{weixin.AuthTypeMP}, "", "") + if err = err2; err == nil { + for _, v := range authBindList { + openIDs = append(openIDs, v.AuthID) + } + } + roleList, err2 := api2.RoleMan.GetUserRoleList(userID) + if err = err2; err == nil && len(roleList) > 0 { + storeID = roleList[0].StoreID + } + } + } + + if len(openIDs) > 0 { + if storeID > 0 { + store := &model.Store{} + store.ID = storeID + if err = dao.GetEntity(db, store); err == nil { + city := &model.Place{ + Code: store.CityCode, + } + if err = dao.GetEntity(db, city, "Code"); err == nil { + remark = city.Name + "-" + store.Name + } + } + } + if err == nil { + if globals.EnableStoreWrite { + for _, openID := range openIDs { + err = api.WeixinAPI.CBUpdateRemark(openID, remark) + } + } + } + } + return err +} diff --git a/business/jxstore/tempop/tempop.go b/business/jxstore/tempop/tempop.go index 90d0776cb..6a3fd16b5 100644 --- a/business/jxstore/tempop/tempop.go +++ b/business/jxstore/tempop/tempop.go @@ -954,7 +954,7 @@ func UpdateAllWeiXinRemark(ctx *jxcontext.Context, isAsync, isContinueWhenError rootTask := tasksch.NewParallelTask("刷新微信备注", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx, func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { tel := batchItemList[0].(string) - err = jxutils.HandleUserWXRemark(dao.GetDB(), tel, false) + err = cms.HandleUserWXRemark(dao.GetDB(), tel, false) return nil, err }, mobileList) tasksch.ManageTask(rootTask).Run() diff --git a/business/jxutils/jxutils.go b/business/jxutils/jxutils.go index 0de80c472..0761ffea0 100644 --- a/business/jxutils/jxutils.go +++ b/business/jxutils/jxutils.go @@ -15,12 +15,9 @@ import ( "git.rosy.net.cn/baseapi/platformapi/autonavi" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/baseapi/utils/routinepool" - "git.rosy.net.cn/jx-callback/business/auth2/authprovider/weixin" "git.rosy.net.cn/jx-callback/business/model" - "git.rosy.net.cn/jx-callback/business/model/dao" "git.rosy.net.cn/jx-callback/globals" "git.rosy.net.cn/jx-callback/globals/api" - "git.rosy.net.cn/jx-callback/globals/api2" "github.com/qiniu/api.v7/storage" ) @@ -457,69 +454,6 @@ func Strings2Objs(strAndObjAddPairs ...interface{}) (err error) { return nil } -func HandleUserWXRemark(db *dao.DaoDB, mobile string, mobileIsUerID bool) (err error) { - if db == nil { - db = dao.GetDB() - } - openIDs := []string{} - storeID := 0 - remark := "" - - // if !globals.DisableWXAuth1 { - // wxinfo, err := dao.GetUserStoreInfo(db, "tel", mobile) - // if err == nil { - // openIDs = []string{wxinfo.OpenID} - // storeID = wxinfo.JxStoreID - // } - // } - if globals.EnableWXAuth2 { - userID := "" - if mobileIsUerID { - userID = mobile - } else { - userList, _, err2 := dao.GetUsers(db, model.UserTypeStoreBoss, "", nil, "", mobile, 0, -1) - if err = err2; len(userList) > 0 { - userID = userList[0].GetID() - } - } - if userID != "" { - authBindList, err2 := dao.GetUserBindAuthInfo(db, userID, model.AuthBindTypeAuth, []string{weixin.AuthTypeMP}, "", "") - if err = err2; err == nil { - for _, v := range authBindList { - openIDs = append(openIDs, v.AuthID) - } - } - roleList, err2 := api2.RoleMan.GetUserRoleList(userID) - if err = err2; err == nil && len(roleList) > 0 { - storeID = roleList[0].StoreID - } - } - } - - if len(openIDs) > 0 { - if storeID > 0 { - store := &model.Store{} - store.ID = storeID - if err = dao.GetEntity(db, store); err == nil { - city := &model.Place{ - Code: store.CityCode, - } - if err = dao.GetEntity(db, city, "Code"); err == nil { - remark = city.Name + "-" + store.Name - } - } - } - if err == nil { - if globals.EnableStoreWrite { - for _, openID := range openIDs { - err = api.WeixinAPI.CBUpdateRemark(openID, remark) - } - } - } - } - return err -} - func RefreshOrderSkuRelated(order *model.GoodsOrder) *model.GoodsOrder { order.SkuCount = 0 order.GoodsCount = 0 @@ -723,14 +657,6 @@ func GetRealMobile4Order(order *model.GoodsOrder) (mobileNumber string) { return mobileNumber } -func GetAuthType4Vendor(vendorID int) (authType string) { - authType = dao.ConvertJsonFieldPrefix(model.VendorNames[vendorID]) - if authType != "" { - authType = "vendor." + authType - } - return authType -} - func GuessDataResourceVendor(resourceURL string) (vendorID int) { vendorID = -1 for tmpVendorID, urlList := range resourceTypeMap { diff --git a/business/jxutils/jxutils_cms.go b/business/jxutils/jxutils_cms.go index 8d6265932..11449a847 100644 --- a/business/jxutils/jxutils_cms.go +++ b/business/jxutils/jxutils_cms.go @@ -20,7 +20,6 @@ import ( "git.rosy.net.cn/baseapi/platformapi" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/model" - "git.rosy.net.cn/jx-callback/business/model/dao" "git.rosy.net.cn/jx-callback/globals" "github.com/boombuler/barcode" "github.com/boombuler/barcode/code128" @@ -370,11 +369,19 @@ func IsEmptyID(id int64) bool { } func FormalizePageSize(pageSize int) int { - return dao.FormalizePageSize(pageSize) + if pageSize == 0 { + return model.DefPageSize + } else if pageSize < 0 { + return model.UnlimitedPageSize + } + return pageSize } -func FormalizePageOffset(pageSize int) int { - return dao.FormalizePageOffset(pageSize) +func FormalizePageOffset(offset int) int { + if offset < 0 { + offset = 0 + } + return offset } func FormalizeName(name string) string { diff --git a/business/model/api.go b/business/model/api.go index 8f803127c..ce2596003 100644 --- a/business/model/api.go +++ b/business/model/api.go @@ -10,6 +10,15 @@ const ( UnlimitedPageSize = math.MaxInt32 ) +type ShortSkuInfo struct { + SkuID int `orm:"column(sku_id)" json:"skuID,omitempty"` + SkuShopPrice int `json:"skuShopPrice,omitempty"` + SkuSalePrice int `json:"skuSalePrice,omitempty"` + SkuEarningPrice int `json:"skuEarningPrice,omitempty"` + SkuCount2 int `json:"skuCount2,omitempty"` + SkuName string `orm:"size(255)" json:"skuName"` +} + type GoodsOrderExt struct { GoodsOrder EarningPrice int64 `json:"earningPrice"` // 预估结算给门店老板的钱 @@ -29,12 +38,9 @@ type GoodsOrderExt struct { DistrictName string `json:"districtName"` CityName string `json:"cityName"` - SkuID int `orm:"column(sku_id)" json:"skuID,omitempty"` - SkuShopPrice int `json:"skuShopPrice,omitempty"` - SkuSalePrice int `json:"skuSalePrice,omitempty"` - SkuEarningPrice int `json:"skuEarningPrice,omitempty"` - SkuCount2 int `json:"skuCount2,omitempty"` - SkuInfo string `json:"skuInfo,omitempty"` + SkuInfo string `json:"skuInfo,omitempty"` + ShortSkuInfo `json:"-"` + SkuList []*ShortSkuInfo `json:"skuList,omitempty"` } type OrderSkuExt struct { diff --git a/business/model/dao/act.go b/business/model/dao/act.go index a599d8d43..4b524e839 100644 --- a/business/model/dao/act.go +++ b/business/model/dao/act.go @@ -7,6 +7,7 @@ import ( "git.rosy.net.cn/jx-callback/globals" "git.rosy.net.cn/baseapi/utils" + "git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/model" ) @@ -71,8 +72,8 @@ func GetActVendorInfo(db *DaoDB, actID int, vendorIDs []int) (actMap map[int]*mo 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 = FormalizePageOffset(offset) - pageSize = FormalizePageSize(pageSize) + offset = jxutils.FormalizePageOffset(offset) + pageSize = jxutils.FormalizePageSize(pageSize) leftOrEmpty := "" if len(vendorIDs) == 1 && (vendorIDs[0] == -1 || vendorIDs[0] == model.VendorIDJX) { @@ -178,8 +179,8 @@ func QueryActs(db *DaoDB, actID int, offset, pageSize int, syncStatus int, keywo if actID == 0 && utils.IsTimeZero(createdAtFrom) && utils.IsTimeZero(beginAt) { return nil, fmt.Errorf("actID,createdAtFrom和beginAt中,至少要指定一个条件") } - offset = FormalizePageOffset(offset) - pageSize = FormalizePageSize(pageSize) + offset = jxutils.FormalizePageOffset(offset) + pageSize = jxutils.FormalizePageSize(pageSize) isGetAll := offset == 0 && pageSize == model.UnlimitedPageSize sql := ` diff --git a/business/model/dao/dao_order.go b/business/model/dao/dao_order.go index 0e798884e..2d5c62775 100644 --- a/business/model/dao/dao_order.go +++ b/business/model/dao/dao_order.go @@ -2,10 +2,13 @@ package dao import ( "fmt" + "strconv" "time" "git.rosy.net.cn/baseapi/utils" + "git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/model" + "git.rosy.net.cn/jx-callback/globals" ) const ( @@ -711,3 +714,207 @@ func GetOrderPayList(db *DaoDB, vendorOrderID string, vendorID int) (payList []* } return payList, GetRows(db, &payList, sql, sqlParams) } + +func GetOrders(db *DaoDB, ids []int64, isIncludeSku, isIncludeFake bool, fromDateStr, toDateStr string, isDateFinish bool, skuIDs []int, isJxFirst bool, userID string, params map[string]interface{}, offset, pageSize int) (orders []*model.GoodsOrderExt, totalCount int, err error) { + globals.SugarLogger.Debugf("dao GetOrders ids:%v from:%s to:%s", ids, fromDateStr, toDateStr) + pageSize = jxutils.FormalizePageSize(pageSize) + offset = jxutils.FormalizePageOffset(offset) + + sql := fmt.Sprintf(` + SELECT SQL_CALC_FOUND_ROWS + t1.*, + CAST(IF(t1.earning_price <> 0, t1.earning_price, IF(t1.shop_price <> 0 && t1.shop_price < t1.sale_price, t1.shop_price, t1.sale_price) * IF(t5.pay_percentage > 0, t5.pay_percentage, %d) / 100) AS SIGNED) earning_price, + t2.status waybill_status, t2.courier_name, t2.courier_mobile, + t2.actual_fee, t2.desired_fee, t2.waybill_created_at, t2.waybill_finished_at, + city.name city_name, district.name district_name`, model.DefaultEarningPricePercentage) + if isIncludeSku { + sql += `, + IF(t3.jx_sku_id > 0, t3.jx_sku_id, t3.sku_id) sku_id, + t3.count sku_count2, + t3.shop_price sku_shop_price, + t3.earning_price sku_earning_price, + t3.sale_price sku_sale_price, + t3.sku_name` + } + sql += ` + FROM goods_order t1 + LEFT JOIN waybill t2 ON t1.vendor_waybill_id = t2.vendor_waybill_id AND t1.waybill_vendor_id = t2.waybill_vendor_id + LEFT JOIN store t5 ON t5.id = IF(t1.jx_store_id <> 0, t1.jx_store_id, t1.store_id) + LEFT JOIN place city ON city.code = t5.city_code + LEFT JOIN place district ON district.code = t5.district_code` + if isIncludeSku { + sql += ` + JOIN order_sku t3 ON t3.vendor_order_id = t1.vendor_order_id AND t3.vendor_id = t1.vendor_id` + } + sqlWhere := " WHERE 1 = 1" + var ( + sqlParams []interface{} + ) + if len(ids) > 0 { // 如果给定了ids,忽略其它所有条件 + sqlWhere += " AND t1.id IN (" + GenQuestionMarks(len(ids)) + ")" + sqlParams = append(sqlParams, ids) + } else { + // 如果搜索关键字可能为订单号,则当成订单号查询 + if params["keyword"] != nil { + if jxutils.GetPossibleVendorIDFromVendorOrderID(params["keyword"].(string)) > model.VendorIDUnknown { + params["vendorOrderID"] = params["keyword"] + } + } + if params["orderID"] != nil || params["vendorOrderID"] != nil { + sqlWhere += " AND (t1.vendor_order_id = ? OR t1.vendor_order_id2 = ?)" + vendorOrderID := params["vendorOrderID"] + if vendorOrderID == nil { + vendorOrderID = params["orderID"] + } + sqlParams = []interface{}{ + vendorOrderID, + vendorOrderID, + } + } else { + timeList, err2 := jxutils.BatchStr2Time(fromDateStr, toDateStr) + if err = err2; err != nil { + return nil, 0, err + } + if utils.IsTimeZero(timeList[0]) { + return nil, 0, fmt.Errorf("在没有指定订单号时,必须指定查询日期范围") + } + if utils.IsTimeZero(timeList[1]) { + timeList[1] = timeList[0] + } + timeList[1] = timeList[1].Add(24 * time.Hour) + if isDateFinish { + sqlWhere += ` + AND t1.order_finished_at >= ? AND t1.order_finished_at < ?` + } else { + sqlWhere += ` + AND t1.order_created_at >= ? AND t1.order_created_at < ?` + } + sqlParams = []interface{}{ + timeList[0], + timeList[1], + } + if params["keyword"] != nil { + keyword := params["keyword"].(string) + keywordLike := "%" + keyword + "%" + sqlWhere += ` + AND (t1.store_name LIKE ? OR t1.vendor_order_id LIKE ? OR t1.vendor_order_id2 LIKE ? OR t1.vendor_store_id LIKE ? + OR t1.consignee_name LIKE ? OR t1.consignee_mobile LIKE ? OR t1.consignee_mobile2 LIKE ? OR t1.consignee_address LIKE ? + OR t2.vendor_waybill_id LIKE ? OR t2.courier_name LIKE ? OR t2.courier_mobile LIKE ? + ` + sqlParams = append(sqlParams, keywordLike, keywordLike, keywordLike, keywordLike, keywordLike, keywordLike, keywordLike, keywordLike, keywordLike, keywordLike, keywordLike) + if keywordInt64, err2 := strconv.ParseInt(keyword, 10, 64); err2 == nil { + sqlWhere += " OR t1.store_id = ? OR t1.jx_store_id = ?" + sqlParams = append(sqlParams, keywordInt64, keywordInt64) + } + sqlWhere += ")" + } + if params["waybillVendorIDs"] != nil { + var waybillVendorIDs []int + if err = utils.UnmarshalUseNumber([]byte(params["waybillVendorIDs"].(string)), &waybillVendorIDs); err != nil { + return nil, 0, err + } + if len(waybillVendorIDs) > 0 { + sqlWhere += " AND t1.waybill_vendor_id IN (" + GenQuestionMarks(len(waybillVendorIDs)) + ")" + sqlParams = append(sqlParams, waybillVendorIDs) + } + } + if params["storeIDs"] != nil { + var storeIDs []int + if err = utils.UnmarshalUseNumber([]byte(params["storeIDs"].(string)), &storeIDs); err != nil { + return nil, 0, err + } + if len(storeIDs) > 0 { + if storeIDs[0] == 0 { // 容错 + sqlWhere += " AND 1 = 0" + } else { + sqlWhere += " AND IF(t1.jx_store_id != 0, t1.jx_store_id, t1.store_id) IN (" + GenQuestionMarks(len(storeIDs)) + ")" + sqlParams = append(sqlParams, storeIDs) + } + } + } + if params["statuss"] != nil { + var statuss []int + if err = utils.UnmarshalUseNumber([]byte(params["statuss"].(string)), &statuss); err != nil { + return nil, 0, err + } + if len(statuss) > 0 { + sqlWhere += " AND t1.status IN (" + GenQuestionMarks(len(statuss)) + ")" + sqlParams = append(sqlParams, statuss) + } + } + if params["lockStatuss"] != nil { + var lockStatuss []int + if err = utils.UnmarshalUseNumber([]byte(params["lockStatuss"].(string)), &lockStatuss); err != nil { + return nil, 0, err + } + if len(lockStatuss) > 0 { + sqlWhere += " AND t1.lock_status IN (" + GenQuestionMarks(len(lockStatuss)) + ")" + sqlParams = append(sqlParams, lockStatuss) + } + } + if params["cities"] != nil { + var cities []int + if err = utils.UnmarshalUseNumber([]byte(params["cities"].(string)), &cities); err != nil { + return nil, 0, err + } + if len(cities) > 0 { + sqlWhere += " AND t5.city_code IN (" + GenQuestionMarks(len(cities)) + ") AND t5.id IS NOT NULL" + sqlParams = append(sqlParams, cities) + } + } + if !isIncludeFake { + sqlWhere += " AND (t1.flag & ?) = 0" + sqlParams = append(sqlParams, model.OrderFlagMaskFake) + } + if len(skuIDs) > 0 { + sqlWhere += " AND (SELECT COUNT(*) FROM order_sku t11 WHERE t11.vendor_order_id = t1.vendor_order_id AND t11.vendor_id = t1.vendor_id AND t11.jx_sku_id IN (" + GenQuestionMarks(len(skuIDs)) + ")) > 0" + sqlParams = append(sqlParams, skuIDs) + } + if params["adjustCount"] != nil { + sqlWhere += " AND t1.adjust_count >= ?" + sqlParams = append(sqlParams, params["adjustCount"]) + } + if mustInvoice, ok := params["mustInvoice"].(bool); ok && mustInvoice { + sqlWhere += " AND t1.invoice_taxer_id <> ''" + } + } + if params["vendorIDs"] != nil { + var vendorIDs []int + if err = utils.UnmarshalUseNumber([]byte(params["vendorIDs"].(string)), &vendorIDs); err != nil { + return nil, 0, err + } + if len(vendorIDs) > 0 { + sqlWhere += " AND t1.vendor_id IN (" + GenQuestionMarks(len(vendorIDs)) + ")" + sqlParams = append(sqlParams, vendorIDs) + } + } + if userID != "" { + sqlWhere += " AND t1.user_id = ?" + sqlParams = append(sqlParams, userID) + } + } + sql += sqlWhere + if isJxFirst { + sql += ` + ORDER BY IF(t1.status < ?, IF(t1.vendor_id = ?, 0, 1), 0), t1.order_created_at DESC` + sqlParams = append(sqlParams, model.OrderStatusEndBegin, model.VendorIDJX) + } else { + if isIncludeSku { + sql += ` + ORDER BY t1.id` + } else { + sql += ` + ORDER BY t1.order_created_at DESC` + } + } + sql += ` + LIMIT ? OFFSET ?` + sqlParams = append(sqlParams, pageSize, offset) + + Begin(db) + defer Commit(db) + if err = GetRows(db, &orders, sql, sqlParams...); err == nil { + totalCount = GetLastTotalRowCount(db) + } + return orders, totalCount, err +} diff --git a/business/model/dao/dao_user2.go b/business/model/dao/dao_user2.go index 08e497ec7..51572c40d 100644 --- a/business/model/dao/dao_user2.go +++ b/business/model/dao/dao_user2.go @@ -5,6 +5,7 @@ import ( "time" "git.rosy.net.cn/baseapi/utils" + "git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/model" ) @@ -38,8 +39,8 @@ func GetUserByID(db *DaoDB, fieldName, fieldValue string) (user *model.User, err } func GetUsers(db *DaoDB, userType int, keyword string, userIDs []string, userID2, mobile string, offset, pageSize int) (userList []*model.User, totalCount int, err error) { - offset = FormalizePageOffset(offset) - pageSize = FormalizePageSize(pageSize) + offset = jxutils.FormalizePageOffset(offset) + pageSize = jxutils.FormalizePageSize(pageSize) if userType == 0 { userType = 255 } @@ -182,8 +183,8 @@ func QueryUserDeliveryAddress(db *DaoDB, addressID int64, userIDs []string, offs sql += " AND t1.user_id IN (" + GenQuestionMarks(len(userIDs)) + ")" sqlParams = append(sqlParams, userIDs) } - offset = FormalizePageOffset(offset) - pageSize = FormalizePageSize(pageSize) + offset = jxutils.FormalizePageOffset(offset) + pageSize = jxutils.FormalizePageSize(pageSize) sql += ` ORDER BY t1.is_default DESC, t1.consignee_name LIMIT ? OFFSET ?` diff --git a/business/model/dao/dao_utils.go b/business/model/dao/dao_utils.go index 736a463c7..8a36c2adc 100644 --- a/business/model/dao/dao_utils.go +++ b/business/model/dao/dao_utils.go @@ -201,18 +201,10 @@ func IsVendorThingIDEmpty(vendorThingID string) bool { return vendorThingID == "" || vendorThingID == "0" } -func FormalizePageSize(pageSize int) int { - if pageSize == 0 { - return model.DefPageSize - } else if pageSize < 0 { - return model.UnlimitedPageSize +func GetAuthType4Vendor(vendorID int) (authType string) { + authType = ConvertJsonFieldPrefix(model.VendorNames[vendorID]) + if authType != "" { + authType = "vendor." + authType } - return pageSize -} - -func FormalizePageOffset(offset int) int { - if offset < 0 { - offset = 0 - } - return offset + return authType } diff --git a/business/model/dao/food_recipe.go b/business/model/dao/food_recipe.go index 5228c87c3..f2b1854d9 100644 --- a/business/model/dao/food_recipe.go +++ b/business/model/dao/food_recipe.go @@ -2,6 +2,7 @@ package dao import ( "git.rosy.net.cn/baseapi/utils" + "git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/model" ) @@ -72,8 +73,8 @@ func QueryFoodRecipes(db *DaoDB, keyword string, recipeID int, authorID, userID ) > 0` sqlParams = append(sqlParams, skuIDs) } - offset = FormalizePageOffset(offset) - pageSize = FormalizePageSize(pageSize) + offset = jxutils.FormalizePageOffset(offset) + pageSize = jxutils.FormalizePageSize(pageSize) sql += ` ORDER BY t1.created_at DESC LIMIT ? OFFSET ?` diff --git a/business/model/dao/food_recipe_test.go b/business/model/dao/food_recipe_test.go index 471c44e8a..b3b064046 100644 --- a/business/model/dao/food_recipe_test.go +++ b/business/model/dao/food_recipe_test.go @@ -6,7 +6,7 @@ import ( func TestQueryRecipes(t *testing.T) { db := GetDB() - recipeList, _, err := QueryFoodRecipes(db, "", 0, "", "", 0, 0) + recipeList, _, err := QueryFoodRecipes(db, "", 0, "", "", nil, 0, 0) if err != nil { t.Fatal(err) } diff --git a/business/model/dao/page_store.go b/business/model/dao/page_store.go index 676f6d68b..fe413e2f6 100644 --- a/business/model/dao/page_store.go +++ b/business/model/dao/page_store.go @@ -1,6 +1,7 @@ package dao import ( + "git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/model" ) @@ -76,8 +77,8 @@ func QueryPageStores(db *DaoDB, pageSize, offset int, keyword string, vendorStor ORDER BY t1.recent_order_num DESC LIMIT ? OFFSET ? ` - pageSize = FormalizePageSize(pageSize) - offset = FormalizePageOffset(offset) + pageSize = jxutils.FormalizePageSize(pageSize) + offset = jxutils.FormalizePageOffset(offset) sqlParams = append(sqlParams, pageSize, offset) var shopList []*PageShopWithPlaceName Begin(db) diff --git a/business/partner/partner.go b/business/partner/partner.go index b78cb21e8..7327885f9 100644 --- a/business/partner/partner.go +++ b/business/partner/partner.go @@ -93,6 +93,7 @@ type IOrderManager interface { OnWaybillStatusChanged(bill *model.Waybill) (err error) + CreateAfsOrderFromOrder(vendorOrderID string, vendorID int) (afsOrder *model.AfsOrder, err error) LoadOrder(vendorOrderID string, vendorID int) (order *model.GoodsOrder, err error) LoadOrder2(vendorOrderID2 string, vendorID int) (order *model.GoodsOrder, err error) diff --git a/business/partner/purchase/ebai/order_afs.go b/business/partner/purchase/ebai/order_afs.go index 05da43af4..eb499879e 100644 --- a/business/partner/purchase/ebai/order_afs.go +++ b/business/partner/purchase/ebai/order_afs.go @@ -101,8 +101,9 @@ func (c *PurchaseHandler) onAfsOrderMsg(msg *ebaiapi.CallbackMsg) (retVal *ebaia afsOrder.Skus = append(afsOrder.Skus, orderSku) } } else if msg.Cmd == ebaiapi.CmdOrderUserCancel { - if orderFinancial, err2 := partner.CurOrderManager.LoadOrderFinancial(orderStatus.RefVendorOrderID, model.VendorIDEBAI); err2 == nil { - afsOrder = c.OrderFinancialDetail2Refund(orderFinancial, msg) + if afsOrder := c.createAfsOrder(msg); afsOrder != nil { + // if orderFinancial, err2 := partner.CurOrderManager.LoadOrderFinancial(orderStatus.RefVendorOrderID, model.VendorIDEBAI); err2 == nil { + // afsOrder = c.OrderFinancialDetail2Refund(orderFinancial, msg) cancelData := msg.Data.(*ebaiapi.CBUserCancelInfo) afsOrder.AfsOrderID = orderStatus.VendorOrderID afsOrder.RefundType = model.AfsTypeFullRefund @@ -124,6 +125,18 @@ func (c *PurchaseHandler) onAfsOrderMsg(msg *ebaiapi.CallbackMsg) (retVal *ebaia return retVal } +func (p *PurchaseHandler) createAfsOrder(msg *ebaiapi.CallbackMsg) (afsOrder *model.AfsOrder) { + cancelData := msg.Data.(*ebaiapi.CBUserCancelInfo) + afsOrder, err := partner.CurOrderManager.CreateAfsOrderFromOrder(utils.Int64ToStr(cancelData.OrderID), model.VendorIDEBAI) + if err == nil { + afsOrder.AfsOrderID = afsOrder.VendorOrderID + afsOrder.AfsCreatedAt = utils.Timestamp2Time(msg.Timestamp) + } else { + afsOrder = nil + } + return afsOrder +} + func (c *PurchaseHandler) convertAfsReasonType(vendorReasonType string) int8 { return model.AfsReasonNotOthers } diff --git a/business/partner/purchase/jx/localjx/order.go b/business/partner/purchase/jx/localjx/order.go index dd31afc09..3bd71af27 100644 --- a/business/partner/purchase/jx/localjx/order.go +++ b/business/partner/purchase/jx/localjx/order.go @@ -100,6 +100,39 @@ func init() { orderNoBeginTimestamp = utils.Str2Time("2010-01-01 00:00:00").Unix() } +func GetMyOrders(ctx *jxcontext.Context, fromDateStr, toDateStr string, params map[string]interface{}, offset, pageSize int) (pagedInfo *model.PagedInfo, err error) { + db := dao.GetDB() + tmpOrderList, totalCount, err := dao.GetOrders(db, nil, false, false, fromDateStr, toDateStr, false, nil, false, ctx.GetUserID(), params, offset, pageSize) + if err == nil { + pagedInfo = &model.PagedInfo{ + TotalCount: totalCount, + } + if totalCount > 0 { + var ids []int64 + for _, v := range tmpOrderList { + ids = append(ids, v.ID) + } + orderSkuList, _, err2 := dao.GetOrders(db, ids, true, false, "", "", false, nil, false, "", nil, 0, model.UnlimitedPageSize) + if err = err2; err == nil { + orderMap := make(map[string]*model.GoodsOrderExt) + var orderList []*model.GoodsOrderExt + for _, v := range orderSkuList { + universalOrderID := jxutils.ComposeUniversalOrderID(v.VendorOrderID, v.VendorID) + if orderMap[universalOrderID] == nil { + orderMap[universalOrderID] = v + orderList = append(orderList, v) + } + orderMap[universalOrderID].SkuList = append(orderMap[universalOrderID].SkuList, &v.ShortSkuInfo) + } + pagedInfo.Data = orderList + } else { + pagedInfo = nil + } + } + } + return pagedInfo, err +} + func CreateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64, createType int) (outJxOrder *JxOrderInfo, err error) { outJxOrder, deliveryAddress, err := generateOrder(ctx, jxOrder, addressID) if err != nil { diff --git a/business/partner/purchase/mtwm/order_afs.go b/business/partner/purchase/mtwm/order_afs.go index 7928e33bc..70a4a65d9 100644 --- a/business/partner/purchase/mtwm/order_afs.go +++ b/business/partner/purchase/mtwm/order_afs.go @@ -142,47 +142,15 @@ func (c *PurchaseHandler) onAfsOrderMsg(msg *mtwmapi.CallbackMsg) (retVal *mtwma } func (p *PurchaseHandler) createAfsOrder(orderData url.Values) (afsOrder *model.AfsOrder) { - afsOrder = &model.AfsOrder{ - VendorID: model.VendorIDMTWM, - AfsOrderID: orderData.Get("refund_id"), - VendorOrderID: orderData.Get("order_id"), - AfsCreatedAt: utils.Timestamp2Time(utils.Str2Int64(orderData.Get("timestamp"))), - } - if afsOrder.AfsOrderID == "" { - afsOrder.AfsOrderID = afsOrder.VendorOrderID - } - order, err := partner.CurOrderManager.LoadOrder(afsOrder.VendorOrderID, afsOrder.VendorID) - globals.SugarLogger.Debug(utils.Format4Output(order, false)) + afsOrder, err := partner.CurOrderManager.CreateAfsOrderFromOrder(orderData.Get("refund_id"), model.VendorIDMTWM) if err == nil { - afsOrder.JxStoreID = order.JxStoreID - afsOrder.VendorStoreID = order.VendorStoreID - afsOrder.StoreID = order.StoreID - } else { - globals.SugarLogger.Warnf("mtwm AfsOrderDetail2Financial, afsOrderID:%s is not found from partner.CurOrderManager.LoadOrder", afsOrder.VendorOrderID) - return nil - } - - for _, sku := range order.Skus { - orderSkuFinancial := &model.OrderSkuFinancial{ - VendorID: sku.VendorID, - VendorOrderID: sku.VendorOrderID, - // OrderFinancialID: sku.VendorOrderID, - // ConfirmTime: afsOrder.AfsCreateAt, - VendorStoreID: afsOrder.VendorStoreID, - StoreID: afsOrder.StoreID, - JxStoreID: afsOrder.JxStoreID, - VendorSkuID: sku.VendorSkuID, - SkuID: sku.SkuID, - PromotionType: sku.PromotionType, - Name: sku.SkuName, - ShopPrice: sku.ShopPrice, - SalePrice: sku.SalePrice, - Count: sku.Count, - // UserMoney: sku.UserMoney, - // PmSubsidyMoney: sku.PmSubsidyMoney, - IsAfsOrder: 1, + afsOrder.AfsOrderID = orderData.Get("refund_id") + afsOrder.AfsCreatedAt = utils.Timestamp2Time(utils.Str2Int64(orderData.Get("timestamp"))) + if afsOrder.AfsOrderID == "" { + afsOrder.AfsOrderID = afsOrder.VendorOrderID } - afsOrder.Skus = append(afsOrder.Skus, orderSkuFinancial) + } else { + afsOrder = nil } return afsOrder } diff --git a/conf/app.conf b/conf/app.conf index 3dbee43ff..d72c21a23 100644 --- a/conf/app.conf +++ b/conf/app.conf @@ -229,6 +229,66 @@ getYLYTokenURL = "http://www.jxc4.com/v2/sys/GetYLYToken" storeName = "京西果园" +[jd] +httpport = 8089 +EnableDocs = false + +dbConnectStr = "root:WebServer@1@tcp(127.0.0.1:3306)/jd?charset=utf8mb4&loc=Local&parseTime=true" + +jdToken = "84541069-fbe2-424b-b625-9b2ba1d4c9e6" +jdAppKey = "5d5577a2506f41b8b4ec520ba83490f5" +jdSecret = "0b01b9eeb15b41dab1c3d05d95c17a26" +jdStorePageCookie = "YDYCWYUGKSROMV3MKJQIFINJ5CLPYH6IRVFUMFJD3JI6VQKHX3YPHTWDIDBNMCBUKSY3P7SKAHHKR7PHQDSFRXZEWXA4XOUTALIQDGDYIEUCMDPWSYGDVT42DJ27CD27QKCR3UN7KF7EPIHGPR7GCRTBD6NFNB5MFIV6EPYE6RGXH6K2VN6O67WVPV5PLGYFIAKGHFCQNCPB4GL5IIBN4ARWFQ23OEMGXQRC77UCFGE7JOWTZG2KLEWZL5JBAVSZUYFDYFEFHXZNSJPWMFCADAJTUQ" + +disableEbai = true +# ebaiSource = "35957" +# ebaiSecret = "10013fbb7c2ddad7" +# ebaiStorePageCookieWMUSS = "YBAABKPRplPSpTCX4YSUAvSg8dSjYpIwF3FzBsGEw7agNbNT90GnwfbAYdBU5cjRX%7EjwAAMxhrUGEheAUicBtSXDIeGB0hclFgZ2tcBlhhIlwwfRBHaV8pClctLEhIfSR6HDwXPC5nHBVTeBsrWjwHCjoXUCN1eS1NBKLzB9E9WREwhfALlGMDAJsPmAwAAO" +# ebaiStorePageCookieWMSTOKEN = "gAAA4OkFSZBsOayRIAnRqd24YRRVvWgRFE2w2CGtjKlAIsYg1sNHEIQlwsBKLzB5sulw9nVQAA0tyyFu-F2xVbAQAAi6OrHIFNnBwgJlQdmb8AAHssrx9_zgABBgAABQ" + +disableMtwm = true +# mtwmAppID = "4123" +# mtwmSecret = "df2c88338b85f830cebce2a9eab56628" +# mtwmCallbackURL = "http://callback-jxgy.jxc4.com" + +enableStoreWrite = true +enableJdStoreWrite = true +# enableEbaiStoreWrite = true +# enableMtwmStoreWrite = true + +disableMtps = true +# mtpsAppKey = "3c0a05d464c247c19d7ec13accc78605" +# mtpsSecret = "b1M}9?:sTbsB[OF2gNORnN(|(iy9rB8(`7]|[wGLnbmt`evfM>E:A90DjHAW:UPE" + +dadaIsProd = true +dadaCallbackURL = "http://callback-jd.jxc4.com/dadadelivery/msg" +dadaSourceID = "6660" + +weixinAppID = "wx2bb99eb5d2c9b82c" +weixinSecret = "6bbbed1443cc062c20a015a64c07a531" + +weixinMiniAppID = "wx2d6949f724b2541d" +weixinMiniSecret = "11f3c380551c4683c149990b004d6df9" + +wxpayNotifyURL = "http://callback-jd.jxc4.com/wxpay/msg/" + +backstageHost = "http://www-jd.jxc4.com" +wxBackstageHost = "http://wx-jd.jxc4.com" + +# dingdingAgentID = 258707199 +# dingdingAppKey = "dingtozhutfr98qgwc7d" +# dingdingSecret = "7EJ0HDbkxQri-O2RSaYUu7_ZwvvMKtRVHT8cpyfvIvK6A9n9HRwPNCNRJFuEDeT_" + +# dingdingQRCodeAppKey = "dingoaw990o1jm9jswvwib" +# dingdingQRCodeSecret = "N9dyC9qB84sauQPs4_JYrILMsG5Krqm9-PSSVJ8t9hb87rrHiFUirISxGF5G57RV" + +dingdingCallbackURL = "http://callback-jd.jxc4.com/dingding/msg" + +getWeixinTokenURL = "http://www.jxc4.com/v2/sys/GetWXToken" +getYLYTokenURL = "http://www.jxc4.com/v2/sys/GetYLYToken" + +storeName = "京西京东" + [test] jdToken = "df97f334-f7d8-4b36-9664-5784d8ae0baf" jdAppKey = "06692746f7224695ad4788ce340bc854" diff --git a/controllers/jx_order.go b/controllers/jx_order.go index 80a424c8c..4fe21002f 100644 --- a/controllers/jx_order.go +++ b/controllers/jx_order.go @@ -279,7 +279,6 @@ func (c *OrderController) ExportMTWaybills() { // @Param isJxFirst query bool false "排序是否京西订单优先(缺省为否)" // @Param adjustCount query int false "最小调整次数" // @Param mustInvoice query bool false "是否必须要求开发票" -// @Param isPurchase query bool false "是否是用户自已的订单,如果角色只有consumer,会被强制设为true" // @Param offset query int false "结果起始序号(以0开始,缺省为0)" // @Param pageSize query int false "结果页大小(缺省为50,-1表示全部)" // @Success 200 {object} controllers.CallResult diff --git a/controllers/jx_order2.go b/controllers/jx_order2.go index f59c01de5..8135d1a02 100644 --- a/controllers/jx_order2.go +++ b/controllers/jx_order2.go @@ -72,3 +72,23 @@ func (c *JxOrderController) GetOrderPay() { return retVal, "", err }) } + +// @Title 查询自己的订单 +// @Description 查询自己的订单 +// @Param token header string true "认证token" +// @Param vendorOrderID query string false "订单号,如果此项不为空,忽略其它所有查询条件" +// @Param keyword query string false "查询关键字" +// @Param fromDate query string false "开始日期(包含),格式(2006-01-02),如果订单号为空此项必须要求" +// @Param toDate query string false "结束日期(包含),格式(2006-01-02),如果订单号为空此项必须要求" +// @Param statuss query string false "订单状态列表[1,2,3],缺省不限制" +// @Param offset query int false "结果起始序号(以0开始,缺省为0)" +// @Param pageSize query int false "结果页大小(缺省为50,-1表示全部)" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /GetMyOrders [get] +func (c *JxOrderController) GetMyOrders() { + c.callGetMyOrders(func(params *tJxorderGetMyOrdersParams) (retVal interface{}, errCode string, err error) { + retVal, err = localjx.GetMyOrders(params.Ctx, params.FromDate, params.ToDate, params.MapData, params.Offset, params.PageSize) + return retVal, "", err + }) +} diff --git a/controllers/net_spider.go b/controllers/net_spider.go index d94268a10..8b2979ddb 100644 --- a/controllers/net_spider.go +++ b/controllers/net_spider.go @@ -66,8 +66,8 @@ func (c *NetSpiderController) QueryPageStores() { params.VendorID = -1 } var lng, lat, lng1, lat1, lng2, lat2 float64 - params.Offset = dao.FormalizePageOffset(params.Offset) - params.PageSize = dao.FormalizePageSize(params.PageSize) + params.Offset = jxutils.FormalizePageOffset(params.Offset) + params.PageSize = jxutils.FormalizePageSize(params.PageSize) offset := params.Offset pageSize := params.PageSize if params.Radius > 0 { diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index 85fd512be..ed1770ced 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -610,6 +610,15 @@ func init() { Filters: nil, Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:JxOrderController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:JxOrderController"], + beego.ControllerComments{ + Method: "GetMyOrders", + Router: `/GetMyOrders`, + AllowHTTPMethods: []string{"get"}, + MethodParams: param.Make(), + Filters: nil, + Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:JxOrderController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:JxOrderController"], beego.ControllerComments{ Method: "GetOrderPay",