diff --git a/business/auth2/auth2.go b/business/auth2/auth2.go index 5eb6d7101..e0ebc5783 100644 --- a/business/auth2/auth2.go +++ b/business/auth2/auth2.go @@ -435,5 +435,5 @@ func DisableUser(userID, operatorUserName string) (err error) { } func GetUserBindAuthInfo(userID string) (authList []*model.AuthBind, err error) { - return dao.GetUserBindAuthInfo(dao.GetDB(), userID, model.AuthBindTypeAuth, "", nil) + return dao.GetUserBindAuthInfo(dao.GetDB(), userID, model.AuthBindTypeAuth, nil, "", "") } diff --git a/business/auth2/authprovider/defauther.go b/business/auth2/authprovider/defauther.go index d2d108e08..fd6b056f2 100644 --- a/business/auth2/authprovider/defauther.go +++ b/business/auth2/authprovider/defauther.go @@ -61,7 +61,7 @@ func (a *DefAuther) GetUserType() (userType int8) { func (a *DefAuther) UnionFindAuthBind(curAuthType string, unionAuthTypeList []string, openID, unionID string, authDetail interface{}) (authBindEx *auth2.AuthBindEx, err error) { db := dao.GetDB() var authBind *model.AuthBind - if authBind, err = dao.GetAuthBind(db, "", model.AuthBindTypeAuth, curAuthType, openID); err == nil { // 直接找到了 + if authBind, err = dao.GetAuthBind(db, model.AuthBindTypeAuth, curAuthType, openID); err == nil { // 直接找到了 authBindEx = &auth2.AuthBindEx{ AuthBind: *authBind, } @@ -71,7 +71,7 @@ func (a *DefAuther) UnionFindAuthBind(curAuthType string, unionAuthTypeList []st } else if dao.IsNoRowsError(err) { // 直接找不到,尝试unionID if unionID != "" { // 且有unionID var authBindList []*model.AuthBind - if authBindList, err = dao.GetUserBindAuthInfo(db, "", model.AuthBindTypeAuth, unionID, unionAuthTypeList); err == nil && len(authBindList) > 0 { // 通过unionID找到至少一个认证方式 + if authBindList, err = dao.GetUserBindAuthInfo(db, "", model.AuthBindTypeAuth, unionAuthTypeList, "", unionID); err == nil && len(authBindList) > 0 { // 通过unionID找到至少一个认证方式 authBind = authBindList[0] authBind.Type = curAuthType authBind.AuthID = openID diff --git a/business/auth2/authprovider/password/password.go b/business/auth2/authprovider/password/password.go index 26f26732d..06c472a6d 100644 --- a/business/auth2/authprovider/password/password.go +++ b/business/auth2/authprovider/password/password.go @@ -37,7 +37,7 @@ func init() { func (a *Auther) VerifySecret(userID, passMD5 string) (authBindEx *auth2.AuthBindEx, err error) { globals.SugarLogger.Debugf("localpass VerifySecret userID:%s", userID) var authBind *model.AuthBind - if authBind, err = dao.GetAuthBind(dao.GetDB(), "", model.AuthBindTypeAuth, AuthType, userID); err == nil { + if authBind, err = dao.GetAuthBind(dao.GetDB(), model.AuthBindTypeAuth, AuthType, userID); err == nil { if err = a.checkPassword(authBind, passMD5); err == nil { authBindEx = &auth2.AuthBindEx{ AuthBind: *authBind, @@ -55,7 +55,7 @@ func (a *Auther) ChangePassword(userID, oldPassMD5, newPassMD5 string) (err erro db := dao.GetDB() salt := utils.GetUUID() encryptPwd := a.encryptPassword(newPassMD5, salt) - if authBind, err = dao.GetAuthBind(db, "", model.AuthBindTypeAuth, AuthType, userID); err == nil { + if authBind, err = dao.GetAuthBind(db, model.AuthBindTypeAuth, AuthType, userID); err == nil { if err = a.checkPassword(authBind, oldPassMD5); err == nil || authBind.AuthSecret == "" { // 如果原密码为空,不判断原密码,代表重置密码 _, err = dao.UpdateEntityLogically(db, authBind, map[string]interface{}{ "AuthSecret": encryptPwd, diff --git a/business/authz/autils/authz_utils.go b/business/authz/autils/authz_utils.go index fdd1da447..cb75f0149 100644 --- a/business/authz/autils/authz_utils.go +++ b/business/authz/autils/authz_utils.go @@ -37,6 +37,10 @@ func NewRole(name string, storeID int) (r *authz.RoleInfo) { return r } +func NewStoreBossRole(storeID int) (r *authz.RoleInfo) { + return NewRole(authz.StoreRoleBoss, storeID) +} + func NewRoleByModel(conf *model.NewConfig) (r *authz.RoleInfo) { if conf.Type != model.ConfigTypeRole { r = NewRole(conf.Key, 0) diff --git a/business/jxcallback/orderman/order.go b/business/jxcallback/orderman/order.go index 4d8da0cde..3973c1abf 100644 --- a/business/jxcallback/orderman/order.go +++ b/business/jxcallback/orderman/order.go @@ -110,13 +110,28 @@ func (c *OrderManager) OnOrderAdjust(order *model.GoodsOrder, orderStatus *model if err != nil { return err } - err = utils.CallFuncLogError(func() error { - _, err = db.Db.Raw("DELETE FROM goods_order WHERE vendor_order_id = ? AND vendor_id = ?", order.VendorOrderID, order.VendorID).Exec() - return err - }, "OnAdjustOrder delete order_sku, orderID:%s", order.VendorOrderID) - if err != nil { + previousOrder := &model.GoodsOrder{ + VendorOrderID: order.VendorOrderID, + VendorID: order.VendorID, + } + if err = dao.GetEntity(db, previousOrder, model.FieldVendorOrderID, model.FieldVendorID); err != nil && !dao.IsNoRowsError(err) { + globals.SugarLogger.Warnf("OnOrderAdjust, order:%s GetEntity failed with error:%v", order.VendorOrderID, err) return err } + adjustCount := int8(0) + if err == nil { + adjustCount = previousOrder.AdjustCount + if _, err = dao.DeleteEntity(db, previousOrder); err != nil { + return err + } + } else { + globals.SugarLogger.Warnf("OnOrderAdjust, but previous order:%s doesn't exist", order.VendorOrderID) + } + // err = utils.CallFuncLogError(func() error { + // _, err = db.Db.Raw("DELETE FROM goods_order WHERE vendor_order_id = ? AND vendor_id = ?", order.VendorOrderID, order.VendorID).Exec() + // return err + // }, "OnAdjustOrder delete order_sku, orderID:%s", order.VendorOrderID) + order.AdjustCount = adjustCount + 1 isDuplicated, err = c.SaveOrder(order, true, db) } if err == nil { @@ -346,16 +361,21 @@ func (c *OrderManager) updateOrderOtherInfo(order *model.GoodsOrder, db *dao.Dao globals.SugarLogger.Debugf("updateOrderOtherInfo orderID:%s, VendorStoreID:%s", order.VendorOrderID, order.VendorStoreID) payPercentage := 0 - storeDetail, err := dao.GetStoreDetailByVendorStoreID(db, order.VendorStoreID, order.VendorID) - if err != nil { - globals.SugarLogger.Warnf("updateOrderOtherInfo GetStoreDetailByVendorStoreID orderID:%s, VendorStoreID:%s, error:%v", order.VendorOrderID, order.VendorStoreID, err) - if !dao.IsNoRowsError(err) { - return err + if order.VendorID != model.VendorIDJX { + storeDetail, err := dao.GetStoreDetailByVendorStoreID(db, order.VendorStoreID, order.VendorID) + if err != nil { + globals.SugarLogger.Warnf("updateOrderOtherInfo GetStoreDetailByVendorStoreID orderID:%s, VendorStoreID:%s, error:%v", order.VendorOrderID, order.VendorStoreID, err) + if !dao.IsNoRowsError(err) { + return err + } + err = nil + } else { + order.JxStoreID = storeDetail.Store.ID + payPercentage = storeDetail.PayPercentage } - err = nil } else { - order.JxStoreID = storeDetail.Store.ID - payPercentage = storeDetail.PayPercentage + order.JxStoreID = order.StoreID + payPercentage = 100 } if err = c.updateOrderSkuOtherInfo(order, db, payPercentage); err == nil { jxutils.RefreshOrderSkuRelated(order) diff --git a/business/jxstore/cms/authz.go b/business/jxstore/cms/authz.go index e8cd10646..6e938398f 100644 --- a/business/jxstore/cms/authz.go +++ b/business/jxstore/cms/authz.go @@ -3,7 +3,6 @@ package cms import ( "git.rosy.net.cn/jx-callback/business/auth2" "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/model" "git.rosy.net.cn/jx-callback/business/model/dao" @@ -111,7 +110,7 @@ func TransferLegacyWeixins(mobile string) (err error) { } if v.JxStoreID > 0 { // 运营就不加到门店老板组里了 if user.Type&model.UserTypeOperator == 0 { - api2.RoleMan.AddRole4User(user.GetID(), autils.NewRole(authz.StoreRoleBoss, v.JxStoreID)) + api2.RoleMan.AddRole4User(user.GetID(), autils.NewStoreBossRole(v.JxStoreID)) } } else { if mobile != "" { @@ -119,7 +118,7 @@ func TransferLegacyWeixins(mobile string) (err error) { if err = err2; err == nil { for _, role := range rList { if role.StoreID > 0 { - api2.RoleMan.DeleteRole4User(user.GetID(), autils.NewRole(authz.StoreRoleBoss, role.StoreID)) + api2.RoleMan.DeleteRole4User(user.GetID(), autils.NewStoreBossRole(role.StoreID)) } } } diff --git a/business/jxstore/cms/authz_test.go b/business/jxstore/cms/authz_test.go index 31d78f708..34868dd56 100644 --- a/business/jxstore/cms/authz_test.go +++ b/business/jxstore/cms/authz_test.go @@ -6,7 +6,6 @@ import ( "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/globals/api2" - "git.rosy.net.cn/jx-callback/business/authz" "git.rosy.net.cn/jx-callback/business/authz/autils" _ "git.rosy.net.cn/jx-callback/business/partner/purchase/ebai" _ "git.rosy.net.cn/jx-callback/business/partner/purchase/elm" @@ -23,7 +22,7 @@ func TestTransferLegacyWeixins(t *testing.T) { } func TestCasbin(t *testing.T) { - userList, err := api2.RoleMan.GetRoleUserList(autils.NewRole(authz.StoreRoleBoss, 100324)) + userList, err := api2.RoleMan.GetRoleUserList(autils.NewStoreBossRole(100324)) t.Log(utils.Format4Output(userList, false)) if err != nil { t.Fatal(err) diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index c29fe6ade..d84319f03 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -1585,6 +1585,27 @@ func SendAlarmVendorSnapshot(ctx *jxcontext.Context, parentTask tasksch.ITask, p storeDetail, _ := dao.GetStoreDetail(db, storeID, list[0].VendorID) if storeDetail != nil { storeDetailMap[storeID] = storeDetail + + // userList, _ := GetRoleUserList(ctx, autils.NewStoreBossRole(storeID)) + // for _, mobile := range []string{storeDetail.Tel1, storeDetail.MarketManPhone, storeDetail.OperatorPhone} { + // if mobile != "" { + // if user, err2 := dao.GetUserByID(db, "mobile", mobile); err2 == nil { + // userList = append(userList, user.GetID()) + // } + // } + // } + // for _, userID := range userList { + // if userID != "" { + // if userMap[userID] == nil { + // userMap[userID] = make(map[int]int) + // } + // userMap[userID][storeID] = 1 + // if txtAlarmSnapshotMap[storeID] != nil { + // userMapTxt[userID] = append(userMapTxt[userID], txtAlarmSnapshotMap[storeID]...) + // } + // } + // } + for _, mobile := range []string{storeDetail.Tel1, storeDetail.MarketManPhone, storeDetail.OperatorPhone} { if mobile != "" { if userMap[mobile] == nil { diff --git a/business/jxstore/cms/user2.go b/business/jxstore/cms/user2.go index 5baf7b9b4..23ea882df 100644 --- a/business/jxstore/cms/user2.go +++ b/business/jxstore/cms/user2.go @@ -132,7 +132,7 @@ func TryAddStoreBossRole4User(ctx *jxcontext.Context, user *model.User) (err err if storeList, err := dao.GetStoreList(dao.GetDB(), nil, []string{userMobile}, ""); err == nil && len(storeList) > 0 { roleList := make([]*authz.RoleInfo, len(storeList)) for k, v := range storeList { - roleList[k] = autils.NewRole(authz.StoreRoleBoss, v.ID) + roleList[k] = autils.NewStoreBossRole(v.ID) } err = AddRoles4User(ctx, user.GetID(), roleList) } @@ -152,7 +152,7 @@ func TryAddStoreBossRole4StoreByMobile(ctx *jxcontext.Context, storeID int, mobi } } if len(userIDs) > 0 { - role := autils.NewRole(authz.StoreRoleBoss, storeID) + role := autils.NewStoreBossRole(storeID) err = AddUsers4Role(ctx, role, userIDs) } } @@ -161,6 +161,10 @@ func TryAddStoreBossRole4StoreByMobile(ctx *jxcontext.Context, storeID int, mobi func HandleOrder4Consignee(order *model.GoodsOrder) (err error) { var user *model.User + mobileNumber := jxutils.GetRealMobile4Order(order) + if mobileNumber == "" && order.VendorUserID == "" { + return fmt.Errorf("订单:%s手机号与平台用户标识都是空", order.VendorOrderID) + } authType := jxutils.GetAuthType4Vendor(order.VendorID) if authType == "" { msg := fmt.Sprintf("平台ID:%d当前不被支持,请联系开发", order.VendorID) @@ -169,7 +173,6 @@ func HandleOrder4Consignee(order *model.GoodsOrder) (err error) { } oeratorName := order.VendorOrderID - mobileNumber := jxutils.GetRealMobile4Order(order) db := dao.GetDB() if mobileNumber != "" { userList, _, err2 := dao.GetUsers(db, 0, "", nil, "", mobileNumber, 0, 0) @@ -182,15 +185,15 @@ func HandleOrder4Consignee(order *model.GoodsOrder) (err error) { } vendorUserID := order.VendorUserID - if err == nil && vendorUserID != "" { - authInfo, err2 := dao.GetAuthBind(db, "", model.AuthBindTypeID, authType, vendorUserID) + if vendorUserID != "" { + authInfo, err2 := dao.GetAuthBind(db, model.AuthBindTypeID, authType, vendorUserID) if err = err2; err != nil && !dao.IsNoRowsError(err) { return err } if err == nil { vendorUserID = "" if user == nil { - if user, err = dao.GetUserByID(db, "UserID", authInfo.UserID); err != nil { + if user, err = dao.GetUserByID(db, "user_id", authInfo.UserID); err != nil { return err } } @@ -199,6 +202,7 @@ func HandleOrder4Consignee(order *model.GoodsOrder) (err error) { } } + const Remark = "fromOrder" if user == nil { user = &model.User{ UserID2: mobileNumber, @@ -206,20 +210,19 @@ func HandleOrder4Consignee(order *model.GoodsOrder) (err error) { Mobile: &mobileNumber, Type: model.UserTypeConsumer, Address: order.ConsigneeAddress, - Remark: order.VendorOrderID, + Remark: Remark, } setUserAddress(db, user, order) if user.GetID2() == "" { - user.UserID2 = vendorUserID + user.UserID2 = order.VendorUserID } if user.GetID2() == "" { - user.UserID2 = order.VendorUserID + user.UserID2 = order.VendorOrderID } user.Type = model.UserTypeConsumer err = CreateUser(user, oeratorName) - globals.SugarLogger.Debug(err) } else { if user.GetMobile() == "" && mobileNumber != "" { user.Mobile = &mobileNumber @@ -234,6 +237,7 @@ func HandleOrder4Consignee(order *model.GoodsOrder) (err error) { BindType: model.AuthBindTypeID, AuthID: vendorUserID, Type: authType, + Remark: Remark, } dao.WrapAddIDCULDEntity(authBind, oeratorName) authBind.Status = model.AuthBindStatusNormal @@ -310,7 +314,7 @@ func OnDingDingMsg(msg map[string]interface{}) (callbackResponse *dingdingapi.Ca for _, userID := range msg[dingdingapi.KeyUserID].([]interface{}) { userIDStr := utils.Interface2String(userID) globals.SugarLogger.Debugf("OnDingDingMsg dingding user:%s left company", userIDStr) - if authBind, err = dao.GetAuthBind(db, "", model.AuthBindTypeAuth, dingding.AuthTypeStaff, userIDStr); err == nil { // 直接找到了 + if authBind, err = dao.GetAuthBind(db, model.AuthBindTypeAuth, dingding.AuthTypeStaff, userIDStr); err == nil { // 直接找到了 globals.SugarLogger.Debugf("OnDingDingMsg dingding user:%s, userID:%s left company", userIDStr, authBind.UserID) if err = DisableUser(jxcontext.AdminCtx, authBind.UserID); err != nil { globals.SugarLogger.Errorf("OnDingDingMsg failed with error:%v", err) diff --git a/business/jxstore/tempop/tempop.go b/business/jxstore/tempop/tempop.go index 621eac7c3..42ad92e47 100644 --- a/business/jxstore/tempop/tempop.go +++ b/business/jxstore/tempop/tempop.go @@ -999,3 +999,108 @@ func RefreshMtpsWaybillFee(ctx *jxcontext.Context, isAsync, isContinueWhenError } return hint, err } + +func CreateConsumerFromOrders(ctx *jxcontext.Context, vendorIDs []int, fromDate, toDate time.Time, isForce, isAsync, isContinueWhenError bool) (hint string, err error) { + if utils.IsTimeZero(fromDate) { + return "", fmt.Errorf("fromDate必须指定") + } + if utils.IsTimeZero(toDate) { + toDate = time.Now() + } + fromDate = utils.Time2Date(fromDate) + toDate = utils.Time2Date(toDate) + if len(vendorIDs) == 0 { + vendorIDs = partner.GetPurchasePlatformVendorIDs() + } + var dateList []time.Time + curDate := fromDate + for { + if toDate.Sub(curDate) < 0 { + break + } + dateList = append(dateList, curDate) + curDate = curDate.Add(24 * time.Hour) + } + + type GoodsOrderWithOriginal struct { + model.GoodsOrder + OriginalData string `orm:"type(text)" json:"-"` + } + + db := dao.GetDB() + rootTask := tasksch.NewParallelTask("从订单中创建消费者账户", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(isContinueWhenError), ctx, + func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { + curDate := batchItemList[0].(time.Time) + sql := ` + SELECT t1.*, t2.original_data + FROM goods_order t1 + LEFT JOIN goods_order_original t2 ON t2.vendor_order_id = t1.vendor_order_id AND t2.vendor_id = t1.vendor_id + WHERE t1.order_created_at >= ? AND t1.order_created_at < ?` + sqlParams := []interface{}{ + curDate, + curDate.Add(24 * time.Hour), + } + if len(vendorIDs) > 0 { + sql += " AND t1.vendor_id IN (" + dao.GenQuestionMarks(len(vendorIDs)) + ")" + sqlParams = append(sqlParams, vendorIDs) + } + if !isForce { + sql += " AND t1.user_id = ''" + } + var orderList []*GoodsOrderWithOriginal + if err = dao.GetRows(db, &orderList, sql, sqlParams...); err == nil { + if len(orderList) > 0 { + // 并发必须是1,否则在HandleOrder4Consignee中可能导致主键重,错误 + subTask := tasksch.NewParallelTask(fmt.Sprintf("处理日期:%s的订单", utils.Time2DateStr(curDate)), tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(isContinueWhenError), ctx, + func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { + order := batchItemList[0].(*GoodsOrderWithOriginal) + if isForce || order.UserID == "" { + if handler := partner.GetPurchasePlatformFromVendorID(order.VendorID); handler != nil { + var updateFields []string + if isForce || order.VendorUserID == "" { + var order2 *model.GoodsOrder + if order.OriginalData != "" { + var orderData map[string]interface{} + if utils.UnmarshalUseNumber([]byte(order.OriginalData), &orderData) == nil { + order2 = handler.Map2Order(orderData) + if order2.VendorUserID == "" { + order2 = nil + } + } + } + if order2 == nil && order.VendorID == model.VendorIDMTWM && time.Now().Sub(curDate) < 60*24*time.Hour { + order2, err = handler.GetOrder(order.VendorOrderID) + } + if order2 != nil { + if order2.VendorUserID != "" && order.VendorUserID != order2.VendorUserID { + updateFields = append(updateFields, "VendorUserID") + order.VendorUserID = order2.VendorUserID + } + } + } + /* + if err = cms.HandleOrder4Consignee(&order.GoodsOrder); err == nil { + updateFields = append(updateFields, "UserID") + } + */ + if len(updateFields) > 0 { + dao.UpdateEntity(db, &order.GoodsOrder, updateFields...) + } + } + } + return nil, err + }, orderList) + tasksch.HandleTask(subTask, task, true).Run() + _, err = subTask.GetResult(0) + } + } + return nil, err + }, dateList) + tasksch.HandleTask(rootTask, nil, true).Run() + if !isAsync { + _, err = rootTask.GetResult(0) + } else { + hint = rootTask.ID + } + return hint, err +} diff --git a/business/jxutils/cache/redis/redis_test.go b/business/jxutils/cache/redis/redis_test.go index 789ece200..0a314b783 100644 --- a/business/jxutils/cache/redis/redis_test.go +++ b/business/jxutils/cache/redis/redis_test.go @@ -16,7 +16,7 @@ func init() { cacher = New("localhost", 6379, "") } -type FuckYou struct { +type TestType struct { Key string `json:"key"` } @@ -35,7 +35,7 @@ func TestIt(t *testing.T) { t.Fatal("should not get nothing") } - result := new(FuckYou) + result := new(TestType) cacher.GetAs("key", result) if result.Key != "value" { t.Fatal("should get value") diff --git a/business/jxutils/jxutils.go b/business/jxutils/jxutils.go index eb96e823d..ef91ef5ef 100644 --- a/business/jxutils/jxutils.go +++ b/business/jxutils/jxutils.go @@ -427,14 +427,14 @@ func HandleUserWXRemark(db *dao.DaoDB, mobile string, mobileIsUerID bool) (err e if db == nil { db = dao.GetDB() } - openID := "" + openIDs := []string{} storeID := 0 remark := "" if !globals.DisableWXAuth1 { wxinfo, err := dao.GetUserStoreInfo(db, "tel", mobile) if err == nil { - openID = wxinfo.OpenID + openIDs = []string{wxinfo.OpenID} storeID = wxinfo.JxStoreID } } @@ -449,9 +449,11 @@ func HandleUserWXRemark(db *dao.DaoDB, mobile string, mobileIsUerID bool) (err e } } if userID != "" { - authBind, err2 := dao.GetAuthBind(db, userID, model.AuthBindTypeAuth, weixin.AuthTypeMP, "") + authBindList, err2 := dao.GetUserBindAuthInfo(db, userID, model.AuthBindTypeAuth, []string{weixin.AuthTypeMP}, "", "") if err = err2; err == nil { - openID = authBind.AuthID + for _, v := range authBindList { + openIDs = append(openIDs, v.AuthID) + } } roleList, err2 := api2.RoleMan.GetUserRoleList(userID) if err = err2; err == nil && len(roleList) > 0 { @@ -460,7 +462,7 @@ func HandleUserWXRemark(db *dao.DaoDB, mobile string, mobileIsUerID bool) (err e } } - if openID != "" { + if len(openIDs) > 0 { if storeID > 0 { store := &model.Store{} store.ID = storeID @@ -475,7 +477,9 @@ func HandleUserWXRemark(db *dao.DaoDB, mobile string, mobileIsUerID bool) (err e } if err == nil { if globals.EnableStoreWrite { - err = api.WeixinAPI.CBUpdateRemark(openID, remark) + for _, openID := range openIDs { + err = api.WeixinAPI.CBUpdateRemark(openID, remark) + } } } } @@ -678,7 +682,7 @@ func GetRealMobile4Order(order *model.GoodsOrder) (mobileNumber string) { } func GetAuthType4Vendor(vendorID int) (authType string) { - authType = model.VendorNames[vendorID] + authType = dao.ConvertJsonFieldPrefix(model.VendorNames[vendorID]) if authType != "" { authType = "vendor." + authType } diff --git a/business/jxutils/smsmsg/smsmsg.go b/business/jxutils/smsmsg/smsmsg.go index d08109ad7..275215c8c 100644 --- a/business/jxutils/smsmsg/smsmsg.go +++ b/business/jxutils/smsmsg/smsmsg.go @@ -25,6 +25,7 @@ var ( func SendSMSMsg(mobileList []string, signName, templateCode string, templateParam map[string]interface{}) (err error) { errList := errlist.New() + mobileList = jxutils.StringMap2List(jxutils.StringList2Map(mobileList)) for _, mobileNum := range mobileList { if mobileNum != "" { globals.SugarLogger.Debugf("SendSMSMsg mobileNum:%s, templateCode:%s", mobileNum, templateCode) diff --git a/business/jxutils/weixinmsg/weixinmsg.go b/business/jxutils/weixinmsg/weixinmsg.go index 23b766383..db21bc1db 100644 --- a/business/jxutils/weixinmsg/weixinmsg.go +++ b/business/jxutils/weixinmsg/weixinmsg.go @@ -6,7 +6,6 @@ import ( "time" "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/jxcontext" "git.rosy.net.cn/jx-callback/business/jxutils/netprinter" @@ -116,11 +115,13 @@ func GetWeixinOpenIDsFromStoreID(storeID int) (retVal []string) { } } if globals.EnableWXAuth2 { - if userIDList, err2 := api2.RoleMan.GetRoleUserList(autils.NewRole(authz.StoreRoleBoss, storeID)); err2 == nil { + if userIDList, err2 := api2.RoleMan.GetRoleUserList(autils.NewStoreBossRole(storeID)); err2 == nil { for _, v := range userIDList { - if authInfo, err2 := dao.GetAuthBind(db, v, model.AuthBindTypeAuth, weixin.AuthTypeMP, ""); err2 == nil { - retVal = append(retVal, authInfo.AuthID) - openIDMap[authInfo.AuthID] = 1 + if authList, err2 := dao.GetUserBindAuthInfo(db, v, model.AuthBindTypeAuth, []string{weixin.AuthTypeMP}, "", ""); err2 == nil { + for _, v := range authList { + retVal = append(retVal, v.AuthID) + openIDMap[v.AuthID] = 1 + } } } } diff --git a/business/model/auth2.go b/business/model/auth2.go index 7ac38b378..2eaefd61e 100644 --- a/business/model/auth2.go +++ b/business/model/auth2.go @@ -16,12 +16,12 @@ const ( type AuthBind struct { ModelIDCULD - UserID string `orm:"size(48);column(user_id)" json:"userID"` + AuthID string `orm:"size(48);column(auth_id)" json:"authID"` BindType int8 `json:"bindType"` Type string `orm:"size(16)" json:"type"` - Status int8 `json:"status"` - AuthID string `orm:"size(48);column(auth_id)" json:"authID"` + UserID string `orm:"size(48);column(user_id);index" json:"userID"` + Status int8 `json:"status"` AuthID2 string `orm:"size(48);column(auth_id2);index" json:"authID2"` AuthSecret string `orm:"size(48)" json:"-"` AuthSecret2 string `orm:"size(48)" json:"-"` @@ -31,7 +31,7 @@ type AuthBind struct { func (*AuthBind) TableUnique() [][]string { return [][]string{ - []string{"UserID", "Type", "DeletedAt"}, - []string{"AuthID", "Type", "DeletedAt"}, + // []string{"UserID", "Type", "DeletedAt"}, // 这个其实UserID是属性,而不是key + []string{"AuthID", "Type", "BindType", "DeletedAt"}, } } diff --git a/business/model/dao/dao_auth2.go b/business/model/dao/dao_auth2.go index dd1b5d6b4..e3e9c441b 100644 --- a/business/model/dao/dao_auth2.go +++ b/business/model/dao/dao_auth2.go @@ -7,41 +7,27 @@ import ( "git.rosy.net.cn/jx-callback/business/model" ) -func GetAuthBind(db *DaoDB, userID string, bindType int, authType, authID string) (authBind *model.AuthBind, err error) { - if userID == "" && authID == "" { - return nil, errors.New("userID, authID, authID2不能全为空") +func GetAuthBind(db *DaoDB, bindType int, authType, authID string) (authBind *model.AuthBind, err error) { + if bindType == model.AuthBindTypeAll || authType == "" || authID == "" { + return nil, errors.New("bindType不是能all, authType和authID都要有值") } sql := ` SELECT * FROM auth_bind t1 - WHERE t1.deleted_at = ? AND t1.status = ? - ` + WHERE t1.deleted_at = ? AND t1.status = ? AND t1.bind_type = ? AND t1.type = ? AND t1.auth_id = ?` sqlParams := []interface{}{ utils.DefaultTimeValue, model.AuthBindStatusNormal, - } - if userID != "" { - sql += " AND t1.user_id = ?" - sqlParams = append(sqlParams, userID) - } - if bindType != model.AuthBindTypeAll { - sql += " AND t1.bind_type = ?" - sqlParams = append(sqlParams, bindType) - } - if authType != "" { - sql += " AND t1.type = ?" - sqlParams = append(sqlParams, authType) - } - if authID != "" { - sql += " AND t1.auth_id = ?" - sqlParams = append(sqlParams, authID) + bindType, + authType, + authID, } // globals.SugarLogger.Debugf("GetAuthBind sql:%s, sqlParams:%s", sql, utils.Format4Output(sqlParams, false)) err = GetRow(db, &authBind, sql, sqlParams...) return authBind, err } -func GetUserBindAuthInfo(db *DaoDB, userID string, bindType int, authID2 string, typeList []string) (authList []*model.AuthBind, err error) { +func GetUserBindAuthInfo(db *DaoDB, userID string, bindType int, typeList []string, authID, authID2 string) (authList []*model.AuthBind, err error) { sql := ` SELECT * FROM auth_bind t1 @@ -58,14 +44,18 @@ func GetUserBindAuthInfo(db *DaoDB, userID string, bindType int, authID2 string, sql += " AND t1.bind_type = ?" sqlParams = append(sqlParams, bindType) } - if authID2 != "" { - sql += " AND t1.auth_id2 = ?" - sqlParams = append(sqlParams, authID2) - } if len(typeList) > 0 { sql += " AND t1.type IN (" + GenQuestionMarks(len(typeList)) + ")" sqlParams = append(sqlParams, typeList) } + if authID != "" { + sql += " AND t1.auth_id = ?" + sqlParams = append(sqlParams, authID) + } + if authID2 != "" { + sql += " AND t1.auth_id2 = ?" + sqlParams = append(sqlParams, authID2) + } err = GetRows(db, &authList, sql, sqlParams...) return authList, err diff --git a/business/model/order.go b/business/model/order.go index 53b2fa605..33b999a1f 100644 --- a/business/model/order.go +++ b/business/model/order.go @@ -27,6 +27,7 @@ type GoodsOrder struct { SalePrice int64 `json:"salePrice"` // 售卖价 ActualPayPrice int64 `json:"actualPayPrice"` // 单位为分 顾客实际支付 TotalShopMoney int64 `json:"totalShopMoney"` // 应结金额-第三方平台结算给京西的金额(包括了所有的补贴,扣除) + DiscountMoney int64 `json:"discountMoney"` // 订单总优惠金额 PmSubsidyMoney int64 `json:"pmSubsidyMoney"` // 平台活动补贴(订单主体活动补贴+订单单条sku补贴)1+ DistanceFreightMoney int64 `json:"distanceFreightMoney"` // 商户承担的远距离配送费(当前只有京东到家有值) WaybillTipMoney int64 `json:"waybillTipMoney"` // 京西加的平台配送小费 @@ -55,6 +56,7 @@ type GoodsOrder struct { DeliveryType string `orm:"size(32)" json:"deliveryType"` // 订单配送方式,缺省是平台配送 VendorWaybillID string `orm:"column(vendor_waybill_id);size(48)" json:"vendorWaybillID"` WaybillVendorID int `orm:"column(waybill_vendor_id)" json:"waybillVendorID"` // 表示当前承运商,-1表示还没有安排 + AdjustCount int8 `json:"adjustCount"` // 调整单(次数) DeliveryFlag int8 `json:"deliveryFlag"` // 第1位为1表示禁止调度器调度三方配送 DuplicatedCount int `json:"-"` // 重复新订单消息数,这个一般不是由于消息重发造成的(消息重发由OrderStatus过滤),一般是业务逻辑造成的 OrderCreatedAt time.Time `orm:"type(datetime);index" json:"orderCreatedAt"` // 这里记录的是订单生效时间,即用户支付完成(货到付款即为下单时间) diff --git a/business/partner/purchase/ebai/order.go b/business/partner/purchase/ebai/order.go index a20cf98ed..51bd72f22 100644 --- a/business/partner/purchase/ebai/order.go +++ b/business/partner/purchase/ebai/order.go @@ -100,7 +100,9 @@ func (p *PurchaseHandler) GetOrder4PartRefund(vendorOrderID string) (order *mode order = p.Map2Order(result1) if err2 == nil { order.Skus = p.partRefund2OrderDetailSkuList(utils.Interface2String(result2["order_id"]), result2["order_detail"]) - order.Skus = append(order.Skus, getZengSkus(vendorOrderID, result1)...) + giftSkus, discountMoney := getZengSkus(vendorOrderID, result1) + order.DiscountMoney = discountMoney + order.Skus = append(order.Skus, giftSkus...) order.ActualPayPrice = utils.MustInterface2Int64(result2["user_fee"]) jxutils.RefreshOrderSkuRelated(order) } else if err2Ext, ok := err2.(*utils.ErrorWithCode); !ok || err2Ext.IntCode() != ebaiapi.ErrOrderIsNotPartRefund { @@ -112,11 +114,12 @@ func (p *PurchaseHandler) GetOrder4PartRefund(vendorOrderID string) (order *mode return order, err } -func getZengSkus(orderID string, orderMan map[string]interface{}) (skus []*model.OrderSku) { +func getZengSkus(orderID string, orderMan map[string]interface{}) (skus []*model.OrderSku, discountMoney int64) { discounts, _ := orderMan["discount"].([]interface{}) for _, v := range discounts { discount := v.(map[string]interface{}) - if utils.Interface2String(discount["type"]) == ebaiapi.OrderSkuDiscountTypeZeng { + discountType := utils.Interface2String(discount["type"]) + if discountType == ebaiapi.OrderSkuDiscountTypeZeng { sku := &model.OrderSku{ VendorOrderID: orderID, VendorID: model.VendorIDEBAI, @@ -128,8 +131,9 @@ func getZengSkus(orderID string, orderMan map[string]interface{}) (skus []*model } skus = append(skus, sku) } + discountMoney += utils.Interface2Int64WithDefault(discount["fee"], 0) } - return skus + return skus, discountMoney } func (p *PurchaseHandler) partRefund2OrderDetailSkuList(orderID string, orderDetail2 interface{}) (skuList []*model.OrderSku) { @@ -247,7 +251,9 @@ func (p *PurchaseHandler) Map2Order(orderData map[string]interface{}) (order *mo // } order.Skus = append(order.Skus, sku) } - order.Skus = append(order.Skus, getZengSkus(vendorOrderID, orderData)...) + giftSkus, discountMoney := getZengSkus(vendorOrderID, orderData) + order.DiscountMoney = discountMoney + order.Skus = append(order.Skus, giftSkus...) jxutils.RefreshOrderSkuRelated(order) return order } @@ -319,7 +325,7 @@ func (p *PurchaseHandler) Swtich2SelfDeliver(order *model.GoodsOrder, userName s if err = api.EbaiAPI.OrderSwitchselfdelivery(order.VendorOrderID); err != nil { if utils.IsErrMatch(err, "301251", nil) { if deliveryStatus, err2 := api.EbaiAPI.OrderDeliveryGet(order.VendorOrderID); err2 == nil { - if utils.Interface2String(deliveryStatus["status"]) == ebaiapi.WaybillStatusSelfDelivery { + if utils.Int64ToStr(utils.MustInterface2Int64(deliveryStatus["status"])) == ebaiapi.WaybillStatusSelfDelivery { err = nil } } diff --git a/business/partner/purchase/ebai/store.go b/business/partner/purchase/ebai/store.go index b78d81846..63e74d57c 100644 --- a/business/partner/purchase/ebai/store.go +++ b/business/partner/purchase/ebai/store.go @@ -83,7 +83,7 @@ func (p *PurchaseHandler) ReadStore(ctx *jxcontext.Context, vendorStoreID string baiduShopID := utils.Str2Int64(vendorStoreID) result, err := api.EbaiAPI.ShopGet("", baiduShopID) if err == nil { - globals.SugarLogger.Debug(utils.Format4Output(result, false)) + // globals.SugarLogger.Debug(utils.Format4Output(result, false)) retVal := &dao.StoreDetail{ Store: model.Store{ Address: utils.Interface2String(result["address"]), @@ -370,21 +370,25 @@ func ebaiOpTime2Jx(businessTime interface{}) (opTimeList []int16) { func genStoreMapFromStore(store *tEbaiStoreInfo) map[string]interface{} { params := fillOpTimeParams(nil, store.GetOpTimeList()) - // if store.Tel2 != "" { - // params["ivr_phone"] = store.Tel2 - // } - // params["phone"] = store.Tel1 + tel := store.Tel1 + if tel == "" { + tel = store.Tel2 + } + if tel != "" { + params["phone"] = tel + params["ivr_phone"] = tel + } if store.VendorStoreID != "" { params["baidu_shop_id"] = store.VendorStoreID } if store.SyncStatus&(model.SyncFlagNewMask /*|model.SyncFlagStoreName*/) != 0 { params["name"] = jxutils.ComposeStoreName(store.Name, model.VendorIDEBAI) } + params["address"] = store.Address // todo 饿百 开店审核通过后不允许修改商户信息 if store.SyncStatus&(model.SyncFlagNewMask /*|model.SyncFlagStoreAddress*/) != 0 { params["longitude"] = jxutils.IntCoordinate2Standard(store.Lng) params["latitude"] = jxutils.IntCoordinate2Standard(store.Lat) - params["address"] = store.Address params["coord_type"] = ebaiapi.CoordTypeAutonavi if deliveryRegion := JxDeliveryRegion2Ebai(&store.Store); deliveryRegion != nil { params["delivery_region"] = deliveryRegion diff --git a/business/partner/purchase/ebai/store_sku2.go b/business/partner/purchase/ebai/store_sku2.go index 7c1046bd5..d08d63e93 100644 --- a/business/partner/purchase/ebai/store_sku2.go +++ b/business/partner/purchase/ebai/store_sku2.go @@ -83,6 +83,14 @@ func (p *PurchaseHandler) CreateStoreCategory(ctx *jxcontext.Context, storeID in func (p *PurchaseHandler) UpdateStoreCategory(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeCat *dao.SkuStoreCatInfo) (err error) { if globals.EnableEbaiStoreWrite { err = api.EbaiAPI.ShopCategoryUpdate(utils.Int2Str(storeID), utils.Str2Int64WithDefault(storeCat.VendorCatID, 0), formatCatName(storeCat.Name), jxCatSeq2Ebai(storeCat.Seq)) + // todo, 饿百将一个分类重复改名,也会报分类名重复错,特殊处理一下,不过因为GetStoreCategory其实会拉取所有的门店分类,是比较耗时的操作 + if utils.IsErrMatch(err, "1", []string{"分类名称已经存在"}) { + if cat, err2 := p.GetStoreCategory(ctx, storeID, vendorStoreID, storeCat.Name); err2 == nil { + if cat.VendorCatID == storeCat.VendorCatID { + err = nil + } + } + } } return err } diff --git a/business/partner/purchase/jd/order.go b/business/partner/purchase/jd/order.go index 8829b8aae..a3a09cf4a 100644 --- a/business/partner/purchase/jd/order.go +++ b/business/partner/purchase/jd/order.go @@ -201,7 +201,11 @@ func (c *PurchaseHandler) Map2Order(orderData map[string]interface{}) (order *mo } order.ConsigneeLng = jxutils.StandardCoordinate2Int(originalLng) order.ConsigneeLat = jxutils.StandardCoordinate2Int(originalLat) - // discounts := result["discount"].(map[string]interface{}) + discounts, _ := result["discount"].([]interface{}) + for _, v := range discounts { + discount := v.(map[string]interface{}) + order.DiscountMoney += utils.Interface2Int64WithDefault(discount["discountPrice"], 0) + } for _, product2 := range result["product"].([]interface{}) { product := product2.(map[string]interface{}) sku := &model.OrderSku{ diff --git a/business/partner/purchase/mtwm/order.go b/business/partner/purchase/mtwm/order.go index 442bd2245..c5d78e98e 100644 --- a/business/partner/purchase/mtwm/order.go +++ b/business/partner/purchase/mtwm/order.go @@ -153,6 +153,7 @@ func (p *PurchaseHandler) Map2Order(orderData map[string]interface{}) (order *mo panic(fmt.Sprintf("mtwm Map2Order vendorID:%s failed with error:%v", vendorOrderID, err)) } for _, extra := range extraList { + order.DiscountMoney += jxutils.StandardPrice2Int(extra.ReduceFee) if extra.Type == mtwmapi.ExtrasPromotionTypeTaoCanZeng || extra.Type == mtwmapi.ExtrasPromotionTypeManZeng { sku := &model.OrderSku{ VendorOrderID: order.VendorOrderID, diff --git a/business/partner/purchase/mtwm/store.go b/business/partner/purchase/mtwm/store.go index 64e34366d..7b3da6399 100644 --- a/business/partner/purchase/mtwm/store.go +++ b/business/partner/purchase/mtwm/store.go @@ -107,31 +107,32 @@ func (p *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName strin return err } errList := errlist.New() - // remoteStoreInfo, err := api.MtwmAPI.PoiGet(storeDetail.VendorStoreID) - // if err != nil { - // return err - // } - // params := map[string]interface{}{ - // "name": utils.Interface2String(remoteStoreInfo["name"]), //jxutils.ComposeStoreName(storeDetail.Store.Name, model.VendorIDMTWM), - // "phone": storeDetail.Tel1, - // "shipping_fee": jxutils.IntPrice2Standard(int64(storeDetail.DeliveryFee)), - // "shipping_time": openTimeJX2Mtwm(openTime), - // "third_tag_name": "蔬菜", - // } - // if true { //storeDetail.SyncStatus&(model.SyncFlagNewMask|model.SyncFlagStoreAddress) != 0 { - // params["address"] = storeDetail.Address - // params["longitude"] = jxutils.IntCoordinate2Standard(storeDetail.Lng) - // params["latitude"] = jxutils.IntCoordinate2Standard(storeDetail.Lat) - // } - // params["open_level"] = openLevel - // params["is_online"] = isOnline - // globals.SugarLogger.Debug(utils.Format4Output(params, false)) - // if globals.EnableMtwmStoreWrite { - // err = api.MtwmAPI.PoiSave(storeDetail.VendorStoreID, params) - // } - if storeDetail.SyncStatus&(model.SyncFlagNewMask|model.SyncFlagStoreStatus) != 0 { - errList.AddErr(p.UpdateStoreStatus(jxcontext.AdminCtx, storeID, storeDetail.VendorStoreID, jxutils.MergeStoreStatus(storeDetail.Status, storeDetail.VendorStatus))) + + remoteStoreInfo, err := api.MtwmAPI.PoiGet(storeDetail.VendorStoreID) + if err != nil { + return err } + openLevel, isOnline := bizStatusJX2Mtwm(storeDetail.Status) + params := map[string]interface{}{ + "name": remoteStoreInfo.Name, //jxutils.ComposeStoreName(storeDetail.Store.Name, model.VendorIDMTWM), + "address": storeDetail.Address, + "longitude": jxutils.IntCoordinate2Standard(int(remoteStoreInfo.Longitude)), + "latitude": jxutils.IntCoordinate2Standard(int(remoteStoreInfo.Latitude)), + "phone": storeDetail.Tel1, + "shipping_fee": remoteStoreInfo.ShippingFee, + "shipping_time": remoteStoreInfo.ShippingTime, + "open_level": openLevel, + "is_online": isOnline, + "third_tag_name": remoteStoreInfo.ThirdTagName, + } + // globals.SugarLogger.Debug(utils.Format4Output(params, false)) + if globals.EnableMtwmStoreWrite { + errList.AddErr(api.MtwmAPI.PoiSave(storeDetail.VendorStoreID, params)) + } + + // if storeDetail.SyncStatus&(model.SyncFlagNewMask|model.SyncFlagStoreStatus) != 0 { + // errList.AddErr(p.UpdateStoreStatus(jxcontext.AdminCtx, storeID, storeDetail.VendorStoreID, jxutils.MergeStoreStatus(storeDetail.Status, storeDetail.VendorStatus))) + // } errList.AddErr(p.UpdateStoreOpTime(jxcontext.AdminCtx, storeID, storeDetail.VendorStoreID, storeDetail.GetOpTimeList())) return errList.GetErrListAsOne() } diff --git a/controllers/cms_sync.go b/controllers/cms_sync.go index e14381286..079ae7e04 100644 --- a/controllers/cms_sync.go +++ b/controllers/cms_sync.go @@ -36,8 +36,8 @@ func (c *SyncController) SyncStoresSkus() { }) } -// @Title 同步商家商品信息 -// @Description 同步商家商品信息 +// @Title 同步商家分类信息 +// @Description 同步商家分类信息 // @Param token header string true "认证token" // @Param storeIDs formData string true "门店ID列表" // @Param vendorIDs formData string true "厂商ID列表" diff --git a/controllers/temp_op.go b/controllers/temp_op.go index ca73868e1..bc3ea66ff 100644 --- a/controllers/temp_op.go +++ b/controllers/temp_op.go @@ -316,3 +316,28 @@ func (c *TempOpController) CheckSkuDiffBetweenJxAndVendor() { return retVal, "", err }) } + +// @Title 通过订单创建消费者用户 +// @Description 通过订单创建消费者用户 +// @Param token header string true "认证token" +// @Param fromDate formData string true "开始日期" +// @Param vendorIDs formData string false "运营商ID列表(京东0 美团1 饿百3)" +// @Param toDate formData string false "结束日期(缺省不限制)" +// @Param isForce formData bool false "是否强制" +// @Param isAsync formData bool false "是否异步操作" +// @Param isContinueWhenError formData bool false "单个同步失败是否继续,缺省false" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /CreateConsumerFromOrders [post] +func (c *TempOpController) CreateConsumerFromOrders() { + c.callCreateConsumerFromOrders(func(params *tTempopCreateConsumerFromOrdersParams) (retVal interface{}, errCode string, err error) { + var vendorIDs []int + timeList, err := jxutils.BatchStr2Time(params.FromDate, params.ToDate) + if err == nil { + if err = jxutils.Strings2Objs(params.VendorIDs, &vendorIDs); err == nil { + retVal, err = tempop.CreateConsumerFromOrders(params.Ctx, vendorIDs, timeList[0], timeList[1], params.IsForce, params.IsAsync, params.IsContinueWhenError) + } + } + return retVal, "", err + }) +} diff --git a/main.go b/main.go index ab9db37e4..5d61ec564 100644 --- a/main.go +++ b/main.go @@ -118,14 +118,14 @@ func main() { globals.SugarLogger.Errorf("RefreshWeixinToken failed with error:%s", err) return } - if err := tasks.RefreshElmToken(); err != nil { - globals.SugarLogger.Errorf("RefreshElmToken failed with error:%s", err) - return - } - if err := tasks.RefreshWeimobToken(); err != nil { - globals.SugarLogger.Errorf("RefreshWeimobToken failed with error:%s", err) - return - } + // if err := tasks.RefreshElmToken(); err != nil { + // globals.SugarLogger.Errorf("RefreshElmToken failed with error:%s", err) + // return + // } + // if err := tasks.RefreshWeimobToken(); err != nil { + // globals.SugarLogger.Errorf("RefreshWeimobToken failed with error:%s", err) + // return + // } if err := tasks.RefreshYilianyunToken(); err != nil { globals.SugarLogger.Errorf("RefreshYilianyunToken failed with error:%s", err) return diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index cca5b44b8..cd94660eb 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -1665,6 +1665,15 @@ func init() { Filters: nil, Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:TempOpController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:TempOpController"], + beego.ControllerComments{ + Method: "CreateConsumerFromOrders", + Router: `/CreateConsumerFromOrders`, + AllowHTTPMethods: []string{"post"}, + MethodParams: param.Make(), + Filters: nil, + Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:TempOpController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:TempOpController"], beego.ControllerComments{ Method: "PrintMsg",