【Go实战 | 电商平台】(6) 用户信息修改

article/2025/9/11 13:52:40

文章目录

  • 写在前面
  • 1. 路由注册
  • 2. 函数编写
    • 2.1 service层
    • 2.2 api层
  • 3. 服务编写
  • 4. 验证

写在前面

由于用户的登录涉及到了身份这一方面的认证,所以我们就可以通过JWT进行用户的鉴权,以确认用户的身份。

1. 路由注册

  • 编写用户更新的请求路由
authed.PUT("user", api.UserUpdate) 

2. 函数编写

2.1 service层

  • 定义一个用户修改的结构体
    只能修改用户名或是昵称,修改密码后续再说。
//用户修改信息的服务
type UserUpdateService struct {NickName string `form:"nickname" json:"nickname" binding:"required,min=5,max=10"`UserName string `form:"user_name" json:"user_name" binding:"required,min=5,max=15"`
}
  • 定义用户信息修改函数
func (service UserUpdateService) Update(id uint) serializer.Response {...}

2.2 api层

  • 定义一个用户更新服务
var userUpdateService service.UserUpdateService
  • 读取请求头中Authorization的值
claims,_ := util.ParseToken(c.GetHeader("Authorization"))
  • 绑定这个服务
c.ShouldBind(&userUpdateService)
  • 调用这个服务的update方法
res := userUpdateService.Update(claims.ID)
  • 上下文返回
c.JSON(200, res)
  • api层完整代码
func UserUpdate(c *gin.Context) {var userUpdateService service.UserUpdateServiceclaims,_ := util.ParseToken(c.GetHeader("Authorization"))if err := c.ShouldBind(&userUpdateService); err == nil {res := userUpdateService.Update(claims.ID)c.JSON(200, res)} else {c.JSON(200, ErrorResponse(err))logging.Info(err)}
}

3. 服务编写

  • 根据Authorization解析出来的id找到该用户
	var user model.Usercode := e.SUCCESS//找到用户err := model.DB.First(&user, id).Errorif err != nil {logging.Info(err)code = e.ErrorDatabasereturn serializer.Response{Status: code,Msg:    e.GetMsg(code),Error:  err.Error(),}}
  • 根据传送来的信息对用户的原本信息进行修改
	user.Nickname = service.NickNameuser.UserName = service.UserName
  • 保存到数据库中
err = model.DB.Save(&user).Error
  • 返回用户的信息
	return serializer.Response{Status: code,Data:   serializer.BuildUser(user),Msg:    e.GetMsg(code),}
  • 服务层完整代码
func (service UserUpdateService) Update(id uint) serializer.Response {var user model.Usercode := e.SUCCESS//找到用户err := model.DB.First(&user, id).Errorif err != nil {logging.Info(err)code = e.ErrorDatabasereturn serializer.Response{Status: code,Msg:    e.GetMsg(code),Error:  err.Error(),}}user.Nickname = service.NickNameuser.UserName = service.UserNameerr = model.DB.Save(&user).Errorif err != nil {logging.Info(err)code = e.ErrorDatabasereturn serializer.Response{Status: code,Msg:    e.GetMsg(code),Error:  err.Error(),}}return serializer.Response{Status: code,Data:   serializer.BuildUser(user),Msg:    e.GetMsg(code),}
}

4. 验证

在这里插入图片描述


http://chatgpt.dhexx.cn/article/i9YslTBL.shtml

相关文章

github使用教程(二)【保姆级】{github desktop教程,github desktop的安装和配置}

下载github desktop 下载github desktop(不选择Git,因为这个对于我这个初学者还有点复杂) 官方下载地址:GitHub Desktop | Simple collaboration from your desktop github desktop setup 点击这个程序,登录你的gi…

使用github仓库

使用github仓库 一 创建仓库 1.注册github账户,登录后,点击"New respository " 2.在新页面中,输入项目的名称,勾选’readme.md’,点击’create repository’ 3.添加成功后,转到文件列表页面.…

GitHub使用指南——建立仓库、建立文件夹、上传图片详细教程

点击上方“小白学视觉”,选择加"星标"或“置顶” 重磅干货,第一时间送达 记录笔记,不能少了图片的解释,不知你是否是这样,反正我是比价喜欢有图片的说明,图片能够使得内容更加详细。 这篇博文就来…

gitHub使用记录

前言 之前一直用的都是Bitbucket,虽然gitHub很早就开通了,但是一直没有用它,今天算是第一次用吧。在配置上遇到了一些问题,在这里记录下来和大家一起分享。 什么是gitHub github是一个基于git的代码托管平台,付费用…

Linux使用GitHub

一、GitHub GitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名GitHub 我们一直用GitHub作为免费的远程仓库,如果是个人的开源项目,放到GitHub上是完全没有问题的。其实GitHub还是…

MATLAB绘图颜色、线型设置

Matlab画图线型、符号及颜色汇总 Matlab基础之plot、plotyy的格式设置(坐标,刻度,坐标值,不均匀的坐标轴显示) Matlab画图常用的符号和颜色

Matlab plot画图线型、符号及颜色

一、画图线型、标记符、颜色的说明 来个简单的例子 figure,plot(Seg1,SS1_QJ1,k);hold on plot(Seg1,SS1_QJ1,ks) plot(Seg1,Q1*ones(length(Seg1)),r) xlabel(\bf{安装角}(),FontSize,10.508) %\bf是加粗的意思 %xlabel(\fontsize{10.508}\fontname{黑体}安装角\fontname{…

MATLAB 线型图

MATLAB 线型图 基本设置 线形 - Solid line (default) -- Dashed line : Dotted line -. Dash-dot line颜色 r Red g Green b Blue c Cyan m Magenta y Yellow k Black w White数据点的形状 Plus sign o Circle * Asterisk . Point x Cross s…

matlab画图(线条颜色以及线型)

类型表示含义颜色r红色y黄色k黑色w白色m品红c青蓝g绿色b蓝色线型-实线-.点划线--虚线:点线 例如: x0:pi/100:2*pi; ysin(x); plot(x,y) 运行结果如下图所示 : x0:pi/100:2*pi; y1sin(x); y2cos(x); figure; %%打开图窗命令 plot(x,y1,-.g);%%…

Matlab画图时的线型、标记以及颜色简记

文章目录 背景线型标记颜色例说 背景 使用Matlab画图的时候经常由于需要画图,但是总是忘了曲线颜色、线型以及标记,这里在这里记录下,方便查阅。 效果预览: LineSpec —线型,标记和颜色。 线型,标记和颜…

C语言中的递归

递归就是一个函数在它的函数体内调用它自身。执行递归函数将反复调用其自身&#xff0c;每调用一次就进入新的一层。直到某一条件跳出&#xff01; 例1、计算5的阶乘 例2、 #include <stdio.h> /* 定义获取单词数量的函数 */ int getWordNumber(int n) { if(n 1){r…

【C语言】函数与递归

目录&#x1f60a; 1. 函数是什么&#x1f43e; 2. 库函数&#x1f43e; 3. 自定义函数&#x1f43e; 4. 函数参数&#x1f43e; 5. 函数调用&#x1f43e; 6. 函数的嵌套调用和链式访问&#x1f43e; 7. 函数的声明和定义&#x1f43e; 8. 函数递归&#x1f43e; 1. 函…

理解C语言递归函数的逐级返回(return)

递归函数&#xff0c;也即调用自身的函数。 C Primer Plus中有个例子很棒&#xff1a; /*理解C语言递归函数*/ #include<stdio.h> void up_and_down(int); int main(void) { up_and_down(1); return 0; } void up_and_down(int n) { printf("level %d: n loaca…

什么是递归函数?

文章目录 递归函数递归例题特点效率优点 递归函数 递归 递归就是一个函数在它的函数体内调用它自身。执行递归函数将反复调用其自身&#xff0c;每调用一次就进入新的一层。递归函数必须有结束条件。 当函数在一直递推&#xff0c;直到遇到墙后返回&#xff0c;这个墙就是结束…

关于C语言中的递归函数

递归实例&#xff1a; #include <stdio.h>void up_and_down(int);int main(void) { up_and_down(1);return 0;} void up_and_down(int n) {printf("Level %d: n location %p\n", n, &n); // #1if (n < 4)up_and_down(n 1);printf("LEVEL %d: n …

C语言递归函数求n!的两种写法---详细讲解

递归函数&#xff1a;在调用一个函数的过程中又出现直接或间接地调用该函数本身&#xff0c;称为函数的递归调用。 题目&#xff1a;求n!的阶乘,n需要手动输入一个数。 解题思路&#xff1a;假设我们是求5的阶乘5&#xff01;&#xff0c;那么我就要知道4&#xff01;等于多少…

C语言——函数的递归

函数的声明和定义 函数声明&#xff1a; 1.告诉编译器有一个函数叫什么&#xff0c;参数是什么&#xff0c;返回类型是什么&#xff0c;但是具体是不是存在&#xff0c;并不重要。 2.函数的声明一般出现在函数的使用之前&#xff0c;要满足先声明后使用。 3.函数的声明一般要…

【C语言】函数递归详解

函数递归 1. 什么是函数递归2. 递归的两个必要条件2.1 练习1&#xff1a;打印一个数的每一位2.2 练习2&#xff1a;求字符串长度&#xff08;strlen 模拟实现&#xff09; 3. 递归与迭代3.1练习3&#xff1a;求 n 的阶乘&#xff08;不考虑溢出&#xff09;3.1.1 递归求 n 的阶…

C语言详解:函数递归专题

文章目录 函数递归函数递归的定义和优缺点递归的使用场景及必要条件递归的细节说明递归的习题讲解1打印整数每一位输入输出示例解题思路代码逻辑 2递归和非递归求n阶乘输入输出示例解题思路代码逻辑 3strlen函数模拟输入输出示例解题思路代码逻辑 4逆序字符串输入输出示例解题思…

2021-11-03

**"21天好习惯"第一期—12**1.递归函数&#xff08;二&#xff09; 程序在计算5的阶乘的时候&#xff0c;先执行递推&#xff0c;当n1或者n0的时候返回1&#xff0c;再回推将计算并返回。由此可以看出递归函数必须有结束条件。 递归函数特点&#xff1a; 1.每一级…