Merge remote-tracking branch 'origin/mark' into don

This commit is contained in:
Rosy-zhudan
2019-09-06 11:29:17 +08:00
22 changed files with 347 additions and 119 deletions

View File

@@ -534,8 +534,8 @@ func (a *ActManager) IsVendorActExist(ctx *jxcontext.Context, vendorActID string
return isExist
}
func QueryActs(ctx *jxcontext.Context, actID int, offset, pageSize int, keyword string, vendorID int, statusList, actTypeList, createTypeList []int, storeID, skuID, cityCode int, beginAt, endAt, createdAtFrom, createdAtTo time.Time) (pagedInfo *dao.PagedActListInfo, err error) {
return dao.QueryActs(dao.GetDB(), actID, offset, pageSize, keyword, vendorID, statusList, actTypeList, createTypeList, storeID, skuID, cityCode, beginAt, endAt, createdAtFrom, createdAtTo)
func QueryActs(ctx *jxcontext.Context, actID int, offset, pageSize int, syncStatus int, keyword string, vendorID int, statusList, actTypeList, createTypeList []int, storeID, skuID, cityCode int, beginAt, endAt, createdAtFrom, createdAtTo time.Time) (pagedInfo *dao.PagedActListInfo, err error) {
return dao.QueryActs(dao.GetDB(), actID, offset, pageSize, syncStatus, keyword, vendorID, statusList, actTypeList, createTypeList, storeID, skuID, cityCode, beginAt, endAt, createdAtFrom, createdAtTo)
}
func GetActStoreSkuInfo(ctx *jxcontext.Context, actID int, vendorIDs []int, keyword string, offset, pageSize int) (retVal interface{}, err error) {
@@ -733,7 +733,7 @@ func RefreshPageActs(ctx *jxcontext.Context, vendorIDs []int, createdFrom time.T
if err = err2; err != nil {
return nil, err
}
// actInfo, err2 := dao.QueryActs(db, 0, 0, -1, "", vendorID, nil, []int{model.ActCreateTypeSpider},
// actInfo, err2 := dao.QueryActs(db, 0, 0, -1, -1, "", vendorID, nil, []int{model.ActCreateTypeSpider},
// nil, 0, 0, 0, utils.DefaultTimeValue, utils.DefaultTimeValue, createdFrom, utils.DefaultTimeValue)
vendorActIDs, err2 := dao.GetExistVendorActIDs(db, vendorID)
if err = err2; err != nil {
@@ -821,7 +821,7 @@ func DeleteSkusFromAct(ctx *jxcontext.Context, vendorID int, skuIDs []int, isAsy
db := dao.GetDB()
actMap := make(map[int]*model.Act)
for _, skuID := range skuIDs {
pagedInfo, err2 := dao.QueryActs(db, 0, 0, -1, "", vendorID, []int{model.ActStatusCreated}, []int{model.ActSkuDirectDown, model.ActSkuSecKill}, nil, 0, skuID, 0,
pagedInfo, err2 := dao.QueryActs(db, 0, 0, -1, -1, "", vendorID, []int{model.ActStatusCreated}, []int{model.ActSkuDirectDown, model.ActSkuSecKill}, nil, 0, skuID, 0,
utils.DefaultTimeValue, utils.DefaultTimeValue, time.Now().Add(-24*30*3*time.Hour), utils.DefaultTimeValue)
if err = err2; err != nil {
return "", err

View File

@@ -273,7 +273,7 @@ func DeleteConfig(ctx *jxcontext.Context, key, configType string) (err error) {
}
}
errList.AddErr(err)
storeList, err2 := dao.GetStoreList4Role(db, key)
storeList, err2 := dao.GetStoreList(db, nil, nil, key)
if err = err2; err == nil && len(storeList) > 0 {
storeIDs := make([]int, len(storeList))
for k, v := range storeList {

View File

@@ -8,10 +8,7 @@ import (
"strings"
"time"
"git.rosy.net.cn/jx-callback/business/authz/autils"
"git.rosy.net.cn/jx-callback/business/auth2"
"git.rosy.net.cn/jx-callback/business/authz"
"git.rosy.net.cn/baseapi/platformapi/autonavi"
"git.rosy.net.cn/baseapi/platformapi/baidunavi"
@@ -137,6 +134,8 @@ func GetStores(ctx *jxcontext.Context, keyword string, params map[string]interfa
t1.delivery_range,
t1.status,
t1.change_price_type,
t1.sms_notify,
t1.id_card_front,
t1.id_card_back,
t1.id_card_hand,
@@ -333,7 +332,8 @@ func GetStores(ctx *jxcontext.Context, keyword string, params map[string]interfa
}
sql += sqlWhere + `
GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, 32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64
GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,
41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65
ORDER BY t1.id DESC
/*LIMIT ? OFFSET ?*/`
pageSize = jxutils.FormalizePageSize(pageSize)
@@ -700,8 +700,8 @@ func UpdateStore(ctx *jxcontext.Context, storeID int, payload map[string]interfa
dao.Commit(db)
globals.SugarLogger.Debugf("UpdateStore track:%s, before call SyncStore", ctx.GetTrackInfo())
_, err = CurVendorSync.SyncStore(ctx, db, -1, store.ID, false, userName)
if valid["tel1"] != nil {
AddStoreBossByMoble(ctx, utils.Interface2String(valid["tel1"]), storeID)
if valid["tel1"] != nil || valid["tel2"] != nil {
TryAddStoreBossRole4StoreByMobile(ctx, store.ID, []string{utils.Interface2String(valid["tel1"]), utils.Interface2String(valid["tel2"])})
}
if syncStatus&model.SyncFlagStoreAddress != 0 || valid["tel1"] != nil || valid["payeeName"] != nil {
updateCourierStores(ctx, storeID)
@@ -797,7 +797,7 @@ func CreateStore(ctx *jxcontext.Context, storeExt *StoreExt, userName string) (i
store.ID = existingID
if err = dao.CreateEntity(db, store); err == nil {
UpdateOrCreateCourierStores(ctx, store.ID, false, false, false)
AddStoreBossByMoble(ctx, storeExt.Tel1, storeExt.ID)
TryAddStoreBossRole4StoreByMobile(ctx, storeExt.ID, []string{storeExt.Tel1, storeExt.Tel2})
return store.ID, err
}
return 0, err
@@ -1791,24 +1791,3 @@ func SyncStoresQualify(ctx *jxcontext.Context, storeIDs []int, isAsync, isContin
}
return hint, err
}
func AddStoreBossByMoble(ctx *jxcontext.Context, mobile string, storeID int) (num int64, err error) {
if mobile != "" {
if globals.EnableWXAuth2 {
db := dao.GetDB()
userList, _, err2 := dao.GetUsers(db, 0, "", nil, "", mobile, 0, 0)
globals.SugarLogger.Debugf("AddStoreBossByMoble mobile:%s, userList:%s", mobile, utils.Format4Output(userList, true))
if err = err2; err == nil && len(userList) > 0 {
if err = AddRoles4User(ctx, userList[0].GetID(), []*authz.RoleInfo{
autils.NewRole(authz.StoreRoleBoss, storeID),
}); err == nil {
num = 1
}
}
}
if !globals.DisableWXAuth1 {
num, err = BindMobile2Store(ctx, mobile, storeID)
}
}
return num, err
}

View File

@@ -23,7 +23,7 @@ import (
)
var (
ErrUserIDAndNameMustGiven = errors.New("用户ID2用户名及手机号必须不为空")
ErrUserIDAndNameMustGiven = errors.New("用户ID2用户名必须不为空")
)
var (
@@ -114,6 +114,7 @@ func RegisterUserWithMobile(ctx *jxcontext.Context, user *model.User, mobileVeri
user.Type |= model.UserTypeStoreBoss
}
if err = CreateUser(user, utils.LimitUTF8StringLen(ctx.GetRealRemoteIP()+","+inAuthInfo.GetAuthID(), 32)); err == nil {
TryAddStoreBossRole4User(ctx, user)
if outAuthInfo, err = auth2.BindUser(mobileAuth, user); err == nil && inAuthInfo != nil {
err = auth2.AddAuthBind(&outAuthInfo.UserBasic, inAuthInfo)
}
@@ -124,11 +125,45 @@ func RegisterUserWithMobile(ctx *jxcontext.Context, user *model.User, mobileVeri
return outAuthInfo, err
}
func TryAddStoreBossRole4User(ctx *jxcontext.Context, user *model.User) (err error) {
if user.Type&model.UserTypeStoreBoss != 0 {
userMobile := user.GetMobile()
if userMobile != "" {
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)
}
err = AddRoles4User(ctx, user.GetID(), roleList)
}
}
}
return err
}
func TryAddStoreBossRole4StoreByMobile(ctx *jxcontext.Context, storeID int, mobileList []string) (err error) {
if storeID > 0 {
var userIDs []string
for _, v := range mobileList {
if v != "" {
if userList, _, err := dao.GetUsers(dao.GetDB(), model.UserTypeStoreBoss, "", nil, "", v, 0, -1); err == nil && len(userList) > 0 {
userIDs = append(userIDs, userList[0].GetID())
}
}
}
if len(userIDs) > 0 {
role := autils.NewRole(authz.StoreRoleBoss, storeID)
err = AddUsers4Role(ctx, role, userIDs)
}
}
return err
}
func HandleOrder4Consignee(order *model.GoodsOrder) (err error) {
var user *model.User
authType := jxutils.GetAuthType4Vendor(order.VendorID)
if authType == "" {
msg := fmt.Sprintf("平台ID:%d当前不支持", order.VendorID)
msg := fmt.Sprintf("平台ID:%d当前不支持,请联系开发", order.VendorID)
globals.SugarLogger.Warn(msg)
return fmt.Errorf(msg)
}
@@ -147,42 +182,85 @@ func HandleOrder4Consignee(order *model.GoodsOrder) (err error) {
}
vendorUserID := order.VendorUserID
if err == nil {
authList, err2 := dao.GetUserBindAuthInfo(db, "", model.AuthBindTypeID, "", []string{authType})
if err = err2; err != nil {
if err == nil && vendorUserID != "" {
authInfo, err2 := dao.GetAuthBind(db, "", model.AuthBindTypeID, authType, vendorUserID)
if err = err2; err != nil && !dao.IsNoRowsError(err) {
return err
}
if len(authList) > 0 {
if user, err = dao.GetUserByID(db, "UserID", authList[0].UserID); err != nil {
return err
if err == nil {
vendorUserID = ""
if user == nil {
if user, err = dao.GetUserByID(db, "UserID", authInfo.UserID); err != nil {
return err
}
}
} else {
err = nil
}
}
if user == nil {
user = &model.User{
UserID2: mobileNumber,
Name: order.ConsigneeName,
Mobile: &mobileNumber,
Type: model.UserTypeConsumer,
Address: order.ConsigneeAddress,
Remark: order.VendorOrderID,
}
setUserAddress(db, user, order)
if user.GetID2() == "" {
user.UserID2 = vendorUserID
}
if user.GetID2() == "" {
user.UserID2 = order.VendorUserID
}
user.Type = model.UserTypeConsumer
err = CreateUser(user, oeratorName)
}
if err == nil && vendorUserID != "" {
authBind := &model.AuthBind{
UserID: user.GetID(),
BindType: model.AuthBindTypeID,
AuthID: vendorUserID,
Type: authType,
globals.SugarLogger.Debug(err)
} else {
if user.GetMobile() == "" && mobileNumber != "" {
user.Mobile = &mobileNumber
dao.UpdateEntity(db, user, "Mobile")
}
}
if err == nil {
order.UserID = user.GetID()
if vendorUserID != "" {
authBind := &model.AuthBind{
UserID: user.GetID(),
BindType: model.AuthBindTypeID,
AuthID: vendorUserID,
Type: authType,
}
dao.WrapAddIDCULDEntity(authBind, oeratorName)
authBind.Status = model.AuthBindStatusNormal
err = dao.CreateEntity(nil, authBind)
}
dao.WrapAddIDCULDEntity(authBind, oeratorName)
authBind.Status = model.AuthBindStatusNormal
err = dao.CreateEntity(nil, authBind)
}
return err
}
func setUserAddress(db *dao.DaoDB, user *model.User, order *model.GoodsOrder) {
user.Address = order.ConsigneeAddress
store := &model.Store{}
store.ID = jxutils.GetSaleStoreIDFromOrder(order)
if err := dao.GetEntity(db, store); err == nil {
user.CityCode = store.CityCode
user.DistrictCode = store.DistrictCode
} else if dao.IsNoRowsError(err) {
if order.ConsigneeLng != 0 && order.ConsigneeLat != 0 {
if user.DistrictCode = api.AutonaviAPI.GetCoordinateDistrictCode(jxutils.IntCoordinate2Standard(order.ConsigneeLng), jxutils.IntCoordinate2Standard(order.ConsigneeLat)); user.DistrictCode > 0 {
if placeInfo, err := dao.GetPlaceByCode(db, user.DistrictCode); err == nil {
user.CityCode = placeInfo.ParentCode
}
}
}
}
}
func GetUserBindAuthInfo(ctx *jxcontext.Context) (authList []*model.AuthBind, err error) {
authInfo, err := ctx.GetV2AuthInfo()
if err == nil {
@@ -192,9 +270,17 @@ func GetUserBindAuthInfo(ctx *jxcontext.Context) (authList []*model.AuthBind, er
}
func CreateUser(user *model.User, creatorName string) (err error) {
if user == nil || user.UserID2 == "" || user.Name == "" || user.GetMobile() == "" {
globals.SugarLogger.Debugf("CreateUser user:%s, creatorName:%s", utils.Format4Output(user, true), creatorName)
if user == nil || user.UserID2 == "" || user.Name == "" {
return ErrUserIDAndNameMustGiven
}
if user.GetMobile() == "" {
user.Mobile = nil
}
if user.GetEmail() == "" {
user.Email = nil
}
dao.WrapAddIDCULDEntity(user, creatorName)
user.UserID = utils.GetUUID()
user.Status = model.UserStatusNormal

View File

@@ -0,0 +1,23 @@
package cms
import (
"testing"
"git.rosy.net.cn/baseapi/utils"
_ "git.rosy.net.cn/jx-callback/globals/api/apimanager"
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
"git.rosy.net.cn/jx-callback/business/model"
)
func TestTryAddStoreBossRole4User(t *testing.T) {
err := TryAddStoreBossRole4User(jxcontext.AdminCtx, &model.User{
Type: model.UserTypeStoreBoss,
UserID: "24058800CD3711E991B2525400E86DC0",
Mobile: utils.String2Pointer("91112345678"),
})
if err != nil {
t.Fatal(err)
}
}