feat/member #1
			
				
			
		
		
		
	|  | @ -95,6 +95,8 @@ message UpdateUserInfoReq { | |||
|   optional int64 birthday = 6; | ||||
|   optional VerifyType verify_type = 7; | ||||
|   optional AlarmType alarm_type = 8; | ||||
|   optional string role_id = 9; | ||||
|   optional MemberStatus status = 10; | ||||
| } | ||||
| 
 | ||||
| message GetUIDByAccountReq { | ||||
|  |  | |||
|  | @ -2,8 +2,9 @@ package logic | |||
| 
 | ||||
| import ( | ||||
| 	"context" | ||||
| 
 | ||||
| 	"member/gen_result/pb/member" | ||||
| 	"member/internal/domain" | ||||
| 	ers "member/internal/lib/error" | ||||
| 	"member/internal/svc" | ||||
| 
 | ||||
| 	"github.com/zeromicro/go-zero/core/logx" | ||||
|  | @ -25,7 +26,16 @@ func NewUpdateUserInfoLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Up | |||
| 
 | ||||
| // UpdateUserInfo 更新 User Info
 | ||||
| func (l *UpdateUserInfoLogic) UpdateUserInfo(in *member.UpdateUserInfoReq) (*member.Response, error) { | ||||
| 	// todo: add your logic here and delete this line
 | ||||
| 	err := l.svcCtx.UserModel.UpdateSome(l.ctx, in) | ||||
| 	if err != nil { | ||||
| 		return nil, ers.DBError(err.Error()) | ||||
| 	} | ||||
| 
 | ||||
| 	return &member.Response{}, nil | ||||
| 	return &member.Response{ | ||||
| 		Status: &member.BaseResp{ | ||||
| 			Code:    domain.CodeOk.ToString(), | ||||
| 			Message: "success", | ||||
| 			Error:   "", | ||||
| 		}, | ||||
| 	}, nil | ||||
| } | ||||
|  |  | |||
|  | @ -4,6 +4,7 @@ import ( | |||
| 	"context" | ||||
| 	"database/sql" | ||||
| 	"fmt" | ||||
| 
 | ||||
| 	"github.com/zeromicro/go-zero/core/stores/cache" | ||||
| 	"github.com/zeromicro/go-zero/core/stores/sqlx" | ||||
| ) | ||||
|  | @ -32,7 +33,7 @@ func (m *defaultAccountModel) UpdateTokenByLoginID(ctx context.Context, account | |||
| 	accountAccountKey := fmt.Sprintf("%s%v", cacheAccountAccountPrefix, data.Account) | ||||
| 	accountIdKey := fmt.Sprintf("%s%v", cacheAccountIdPrefix, data.Id) | ||||
| 	_, err = m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) { | ||||
| 		query := fmt.Sprintf("update %s set `token` = ? where `id` = ?", m.table, accountRowsWithPlaceHolder) | ||||
| 		query := fmt.Sprintf("update %s set `token` = ? where `id` = ?", m.table) | ||||
| 		return conn.ExecCtx(ctx, query, token, data.Id) | ||||
| 	}, accountAccountKey, accountIdKey) | ||||
| 	return err | ||||
|  |  | |||
|  | @ -7,7 +7,9 @@ import ( | |||
| 	"github.com/zeromicro/go-zero/core/stores/cache" | ||||
| 	"github.com/zeromicro/go-zero/core/stores/sqlc" | ||||
| 	"github.com/zeromicro/go-zero/core/stores/sqlx" | ||||
| 	"member/gen_result/pb/member" | ||||
| 	"strings" | ||||
| 	"time" | ||||
| ) | ||||
| 
 | ||||
| var _ UserTableModel = (*customUserTableModel)(nil) | ||||
|  | @ -21,6 +23,7 @@ type ( | |||
| 		ListMembers(ctx context.Context, params *UserQueryParams) ([]*UserTable, error) | ||||
| 		Count(ctx context.Context) (int64, error) | ||||
| 		UpdateStatus(ctx context.Context, uid string, status int32) error | ||||
| 		UpdateSome(ctx context.Context, newData *member.UpdateUserInfoReq) error | ||||
| 	} | ||||
| 
 | ||||
| 	customUserTableModel struct { | ||||
|  | @ -146,3 +149,72 @@ func (m *defaultUserTableModel) UpdateStatus(ctx context.Context, uid string, st | |||
| 	}, userTableIdKey, userTableUidKey) | ||||
| 	return err | ||||
| } | ||||
| 
 | ||||
| func (m *defaultUserTableModel) UpdateSome(ctx context.Context, newData *member.UpdateUserInfoReq) error { | ||||
| 	data, err := m.FindOneByUid(ctx, newData.Uid) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 
 | ||||
| 	// 初始化缓存键
 | ||||
| 	userTableIdKey := fmt.Sprintf("%s%v", cacheUserTableIdPrefix, data.Id) | ||||
| 	userTableUidKey := fmt.Sprintf("%s%v", cacheUserTableUidPrefix, data.Uid) | ||||
| 
 | ||||
| 	query := fmt.Sprintf("update %s set ", m.table) | ||||
| 	var args []interface{} | ||||
| 	var updates []string | ||||
| 
 | ||||
| 	if newData.VerifyType != nil { | ||||
| 		updates = append(updates, "verify_type = ?") | ||||
| 		args = append(args, *newData.VerifyType) | ||||
| 	} | ||||
| 	if newData.AlarmType != nil { | ||||
| 		updates = append(updates, "alarm_type = ?") | ||||
| 		args = append(args, *newData.AlarmType) | ||||
| 	} | ||||
| 	if newData.Status != nil { | ||||
| 		updates = append(updates, "status = ?") | ||||
| 		args = append(args, *newData.Status) | ||||
| 	} | ||||
| 	if newData.RoleId != nil { | ||||
| 		updates = append(updates, "role_id = ?") | ||||
| 		args = append(args, *newData.RoleId) | ||||
| 	} | ||||
| 	if newData.Language != nil { | ||||
| 		updates = append(updates, "language = ?") | ||||
| 		args = append(args, *newData.Language) | ||||
| 	} | ||||
| 	if newData.Currency != nil { | ||||
| 		updates = append(updates, "currency = ?") | ||||
| 		args = append(args, *newData.Currency) | ||||
| 	} | ||||
| 	if newData.NickName != nil { | ||||
| 		updates = append(updates, "nick_name = ?") | ||||
| 		args = append(args, *newData.NickName) | ||||
| 	} | ||||
| 	if newData.Gender != nil { | ||||
| 		updates = append(updates, "gender = ?") | ||||
| 		args = append(args, *newData.Gender) | ||||
| 	} | ||||
| 	if newData.Birthday != nil { | ||||
| 		updates = append(updates, "birthday = ?") | ||||
| 		args = append(args, *newData.Birthday) | ||||
| 	} | ||||
| 
 | ||||
| 	if len(updates) == 0 { | ||||
| 		return nil | ||||
| 	} | ||||
| 
 | ||||
| 	update := time.Now().UTC().Unix() | ||||
| 	updates = append(updates, "update_time = ?") | ||||
| 	args = append(args, &update) | ||||
| 
 | ||||
| 	query += strings.Join(updates, ", ") + " where `id` = ?" | ||||
| 	args = append(args, data.Id) | ||||
| 
 | ||||
| 	_, err = m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) { | ||||
| 		return conn.ExecCtx(ctx, query, args...) | ||||
| 	}, userTableIdKey, userTableUidKey) | ||||
| 
 | ||||
| 	return err | ||||
| } | ||||
|  |  | |||
|  | @ -1,12 +1,13 @@ | |||
| package svc | ||||
| 
 | ||||
| import ( | ||||
| 	"github.com/zeromicro/go-zero/core/stores/redis" | ||||
| 	"member/internal/config" | ||||
| 	"member/internal/domain" | ||||
| 	"member/internal/lib/required" | ||||
| 	"member/internal/model" | ||||
| 
 | ||||
| 	"github.com/zeromicro/go-zero/core/stores/redis" | ||||
| 
 | ||||
| 	"github.com/bwmarrin/snowflake" | ||||
| 
 | ||||
| 	ers "member/internal/lib/error" | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue