1.小程序调用erp登录接口不判断验证码; 2.修改原接口的翻页相关字段; 3.修复float64转int32精度丢失的缺陷; 4.注释库存导入时采购价需大于0的校验; 5.相关域名改成生产环境域名;
475 lines
14 KiB
Go
475 lines
14 KiB
Go
package system
|
||
|
||
import (
|
||
"encoding/json"
|
||
"github.com/gin-gonic/gin"
|
||
"github.com/gin-gonic/gin/binding"
|
||
"github.com/google/uuid"
|
||
"go-admin/app/admin/models"
|
||
orm "go-admin/common/global"
|
||
"go-admin/logger"
|
||
"go-admin/tools"
|
||
"go-admin/tools/app"
|
||
"net/http"
|
||
)
|
||
|
||
// GetSysUserList
|
||
// @Summary 列表用户信息数据(update)
|
||
// @Description 获取JSON
|
||
// @Tags system/用户
|
||
// @Param username query string false "用户名称"
|
||
// @Param status query int false "状态:0-正常,1-停用"
|
||
// @Param phone query string false "手机号"
|
||
// @Param pageIndex query string false "页码"
|
||
// @Param pageSize query string false "页面条数"
|
||
// @Param roleId query string false "角色id"
|
||
// @Param nickName query string false "昵称"
|
||
// @Param storeId query string false "门店id"
|
||
// @Success 200 {object} models.SysUserListResp
|
||
// @Router /api/v1/sysUserList [get]
|
||
// @Security Bearer
|
||
func GetSysUserList(c *gin.Context) {
|
||
var data models.SysUser
|
||
var err error
|
||
var pageSize = 10
|
||
var pageIndex = 1
|
||
|
||
size := c.Request.FormValue("pageSize")
|
||
if size != "" {
|
||
pageSize, err = tools.StringToInt(size)
|
||
}
|
||
|
||
index := c.Request.FormValue("pageIndex")
|
||
if index != "" {
|
||
pageIndex, err = tools.StringToInt(index)
|
||
}
|
||
|
||
data.Username = c.Request.FormValue("username") // 用户名称
|
||
data.Status = c.Request.FormValue("status") // 状态
|
||
data.Phone = c.Request.FormValue("phone") // 手机号
|
||
|
||
strRoleId := c.Request.FormValue("roleId") // 用户角色
|
||
data.RoleId, _ = tools.StringToInt(strRoleId)
|
||
|
||
data.NickName = c.Request.FormValue("nickName") // 用户昵称
|
||
|
||
strStoreId := c.Request.FormValue("storeId") // 门店id
|
||
nStoreId, _ := tools.StringToInt(strStoreId)
|
||
data.StoreId = uint32(nStoreId)
|
||
|
||
postId := c.Request.FormValue("postId")
|
||
data.PostId, _ = tools.StringToInt(postId)
|
||
|
||
deptId := c.Request.FormValue("deptId")
|
||
data.DeptId, _ = tools.StringToInt(deptId)
|
||
|
||
data.DataScope = tools.GetUserIdStr(c)
|
||
result, count, err := data.GetPage(pageSize, pageIndex)
|
||
tools.HasError(err, "", -1)
|
||
|
||
app.PageOK(c, result, count, pageIndex, pageSize, "")
|
||
}
|
||
|
||
// GetSysUser
|
||
// @Summary 获取用户
|
||
// @Description 获取JSON
|
||
// @Tags system/用户
|
||
// @Param userId path int true "用户编码"
|
||
// @Success 200 {object} app.Response "{"code": 200, "data": [...]}"
|
||
// @Router /api/v1/sysUser/{userId} [get]
|
||
// @Security Bearer
|
||
func GetSysUser(c *gin.Context) {
|
||
var SysUser models.SysUser
|
||
SysUser.UserId, _ = tools.StringToInt(c.Param("userId"))
|
||
result, err := SysUser.Get()
|
||
tools.HasError(err, "抱歉未找到相关信息", -1)
|
||
var SysRole models.SysRole
|
||
var Post models.Post
|
||
roles, err := SysRole.GetList()
|
||
posts, err := Post.GetList()
|
||
|
||
postIds := make([]int, 0)
|
||
postIds = append(postIds, result.PostId)
|
||
|
||
roleIds := make([]int, 0)
|
||
roleIds = append(roleIds, result.RoleId)
|
||
app.Custum(c, gin.H{
|
||
"code": 200,
|
||
"data": result,
|
||
"postIds": postIds,
|
||
"roleIds": roleIds,
|
||
"roles": roles,
|
||
"posts": posts,
|
||
})
|
||
}
|
||
|
||
// @Summary 获取个人中心用户
|
||
// @Description 获取JSON
|
||
// @Tags system/用户
|
||
// @Success 200 {object} app.Response "{"code": 200, "data": [...]}"
|
||
// @Router /api/v1/user/profile [get]
|
||
// @Security Bearer
|
||
func GetSysUserProfile(c *gin.Context) {
|
||
var SysUser models.SysUser
|
||
userId := tools.GetUserIdStr(c)
|
||
SysUser.UserId, _ = tools.StringToInt(userId)
|
||
result, err := SysUser.Get()
|
||
tools.HasError(err, "抱歉未找到相关信息", -1)
|
||
var SysRole models.SysRole
|
||
var Post models.Post
|
||
var Dept models.SysDept
|
||
//获取角色列表
|
||
roles, err := SysRole.GetList()
|
||
//获取职位列表
|
||
posts, err := Post.GetList()
|
||
//获取部门列表
|
||
Dept.DeptId = result.DeptId
|
||
dept, err := Dept.Get()
|
||
|
||
postIds := make([]int, 0)
|
||
postIds = append(postIds, result.PostId)
|
||
|
||
roleIds := make([]int, 0)
|
||
roleIds = append(roleIds, result.RoleId)
|
||
|
||
app.Custum(c, gin.H{
|
||
"code": 200,
|
||
"data": result,
|
||
"postIds": postIds,
|
||
"roleIds": roleIds,
|
||
"roles": roles,
|
||
"posts": posts,
|
||
"dept": dept,
|
||
})
|
||
}
|
||
|
||
// @Summary 获取用户角色和职位
|
||
// @Description 获取JSON
|
||
// @Tags system/用户
|
||
// @Success 200 {object} app.Response "{"code": 200, "data": [...]}"
|
||
// @Router /api/v1/sysUser [get]
|
||
// @Security Bearer
|
||
func GetSysUserInit(c *gin.Context) {
|
||
var SysRole models.SysRole
|
||
var Post models.Post
|
||
roles, err := SysRole.GetList()
|
||
posts, err := Post.GetList()
|
||
tools.HasError(err, "抱歉未找到相关信息", -1)
|
||
mp := make(map[string]interface{}, 2)
|
||
mp["roles"] = roles
|
||
mp["posts"] = posts
|
||
app.OK(c, mp, "")
|
||
}
|
||
|
||
// InsertSysUser
|
||
// @Summary 创建用户(update)
|
||
// @Description 获取JSON
|
||
// @Tags system/用户
|
||
// @Accept application/json
|
||
// @Product application/json
|
||
// @Param data body models.InsertSysUserReq true "用户数据"
|
||
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
|
||
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
|
||
// @Router /api/v1/sysUser [post]
|
||
func InsertSysUser(c *gin.Context) {
|
||
var req models.InsertSysUserReq
|
||
err := c.BindWith(&req, binding.JSON)
|
||
tools.HasError(err, "非法数据格式", 500)
|
||
|
||
SalesCommRateFloat, err := models.StringToFloat(req.SalesCommRate)
|
||
if err != nil {
|
||
//logger.Error("brokerage1 err:", err)
|
||
tools.HasError(err, "数据解析失败", 500)
|
||
}
|
||
|
||
// 判断小程序账号ID是否正常
|
||
if req.Uid != 0 {
|
||
userInfo, err := models.GetUserInfoByUid(req.Uid)
|
||
if err != nil {
|
||
logger.Error("get user info err:", logger.Field("err", err))
|
||
app.Error(c, http.StatusInternalServerError, err, "小程序账号ID有误,请检查")
|
||
return
|
||
}
|
||
// 是否是真实id
|
||
if userInfo.Uid != req.Uid {
|
||
app.Error(c, http.StatusInternalServerError, err, "小程序账号ID有误,请检查")
|
||
return
|
||
}
|
||
// 是否已经绑定过账号
|
||
if userInfo.UserType == models.UserTypeShopAssistant {
|
||
app.Error(c, http.StatusInternalServerError, err, "小程序账号ID重复,请检查")
|
||
return
|
||
}
|
||
}
|
||
|
||
sysUser := models.SysUser{
|
||
SysUserId: req.SysUserId,
|
||
LoginM: req.LoginM,
|
||
SysUserB: models.SysUserB{
|
||
NickName: req.NickName,
|
||
Phone: req.Phone,
|
||
RoleId: req.RoleId,
|
||
Salt: req.Salt,
|
||
Avatar: req.Avatar,
|
||
Sex: req.Sex,
|
||
Email: req.Email,
|
||
DeptId: req.DeptId,
|
||
PostId: req.PostId,
|
||
Remark: req.Remark,
|
||
Status: req.Status,
|
||
AccountType: req.AccountType,
|
||
CooperativeBusinessId: req.CooperativeBusinessId,
|
||
CooperativeName: req.CooperativeName,
|
||
SalesCommRate: SalesCommRateFloat,
|
||
},
|
||
}
|
||
|
||
if req.Uid != 0 {
|
||
sysUser.Uid = req.Uid
|
||
}
|
||
|
||
if len(req.StoreList) != 0 {
|
||
// 将 StoreData 转换为 JSON 字符串
|
||
storeDataJSON, err := json.Marshal(req.StoreList)
|
||
if err != nil {
|
||
tools.HasError(err, "数据解析失败", 500)
|
||
}
|
||
sysUser.StoreData = string(storeDataJSON)
|
||
} else {
|
||
sysUser.StoreData = ""
|
||
}
|
||
begin := orm.Eloquent.Begin()
|
||
sysUser.CreateBy = tools.GetUserIdStr(c)
|
||
id, err := sysUser.Insert(begin)
|
||
if err != nil {
|
||
begin.Rollback()
|
||
logger.Error("Insert err:", logger.Field("err", err))
|
||
app.Error(c, http.StatusInternalServerError, err, "添加失败")
|
||
return
|
||
}
|
||
|
||
// 如果添加了小程序id,则需要更新user表的user_type字段为2-店员
|
||
if req.Uid != 0 {
|
||
err = models.UpdateUserType(begin, req.Uid, models.UserTypeShopAssistant, uint32(req.RoleId))
|
||
if err != nil {
|
||
begin.Rollback()
|
||
logger.Error("UpdateUserType err:", logger.Field("err", err))
|
||
app.Error(c, http.StatusInternalServerError, err, "添加失败")
|
||
return
|
||
}
|
||
}
|
||
|
||
err = begin.Commit().Error
|
||
if err != nil {
|
||
begin.Rollback()
|
||
logger.Error("commit err:", logger.Field("err", err))
|
||
app.Error(c, http.StatusInternalServerError, err, "添加失败")
|
||
return
|
||
}
|
||
|
||
tools.HasError(err, "添加失败", 500)
|
||
app.OK(c, id, "添加成功")
|
||
}
|
||
|
||
// UpdateSysUser
|
||
// @Summary 修改用户数据(update)
|
||
// @Description 获取JSON
|
||
// @Tags system/用户
|
||
// @Accept application/json
|
||
// @Product application/json
|
||
// @Param data body models.InsertSysUserReq true "body"
|
||
// @Success 200 {string} string "{"code": 200, "message": "修改成功"}"
|
||
// @Success 200 {string} string "{"code": -1, "message": "修改失败"}"
|
||
// @Router /api/v1/sysuser/{userId} [put]
|
||
func UpdateSysUser(c *gin.Context) {
|
||
var req models.InsertSysUserReq
|
||
err := c.BindWith(&req, binding.JSON)
|
||
tools.HasError(err, "非法数据格式", 500)
|
||
|
||
SalesCommRateFloat, err := models.StringToFloat(req.SalesCommRate)
|
||
if err != nil {
|
||
//logger.Error("brokerage1 err:", err)
|
||
tools.HasError(err, "数据解析失败", 500)
|
||
}
|
||
|
||
sysInfo := models.GetUserById(uint32(req.UserId))
|
||
// 判断小程序账号ID是否正常
|
||
if req.Uid != 0 && sysInfo.Uid != req.Uid {
|
||
userInfo, err := models.GetUserInfoByUid(req.Uid)
|
||
if err != nil {
|
||
logger.Error("get user info err:", logger.Field("err", err))
|
||
app.Error(c, http.StatusInternalServerError, err, "小程序账号ID有误,请检查")
|
||
return
|
||
}
|
||
// 是否是真实id
|
||
if userInfo.Uid != req.Uid {
|
||
app.Error(c, http.StatusInternalServerError, err, "小程序账号ID有误,请检查")
|
||
return
|
||
}
|
||
// 是否已经绑定过账号
|
||
if userInfo.UserType == models.UserTypeShopAssistant {
|
||
app.Error(c, http.StatusInternalServerError, err, "小程序账号ID重复,请检查")
|
||
return
|
||
}
|
||
}
|
||
|
||
data := models.SysUser{
|
||
SysUserId: req.SysUserId,
|
||
LoginM: req.LoginM,
|
||
SysUserB: models.SysUserB{
|
||
NickName: req.NickName,
|
||
Phone: req.Phone,
|
||
RoleId: req.RoleId,
|
||
Salt: req.Salt,
|
||
Avatar: req.Avatar,
|
||
Sex: req.Sex,
|
||
Email: req.Email,
|
||
DeptId: req.DeptId,
|
||
PostId: req.PostId,
|
||
Remark: req.Remark,
|
||
Status: req.Status,
|
||
AccountType: req.AccountType,
|
||
CooperativeBusinessId: req.CooperativeBusinessId,
|
||
CooperativeName: req.CooperativeName,
|
||
SalesCommRate: SalesCommRateFloat,
|
||
Uid: req.Uid,
|
||
},
|
||
}
|
||
|
||
if len(req.StoreList) != 0 {
|
||
// 将 StoreData 转换为 JSON 字符串
|
||
storeDataJSON, err := json.Marshal(req.StoreList)
|
||
if err != nil {
|
||
tools.HasError(err, "数据解析失败", 500)
|
||
}
|
||
data.StoreData = string(storeDataJSON)
|
||
} else {
|
||
data.StoreData = ""
|
||
}
|
||
|
||
begin := orm.Eloquent.Begin()
|
||
data.UpdateBy = tools.GetUserIdStr(c)
|
||
result, err := data.Update(begin, data.UserId)
|
||
tools.HasError(err, "修改失败", 500)
|
||
|
||
// 判断是否修改了uid
|
||
if sysInfo.Uid == 0 && req.Uid != 0 { // 新增uid,直接更新为2即可
|
||
err = models.UpdateUserType(begin, req.Uid, models.UserTypeShopAssistant, uint32(req.RoleId))
|
||
} else if sysInfo.Uid != 0 {
|
||
if sysInfo.Uid != req.Uid {
|
||
// 原uid的状态更新为1
|
||
err = models.UpdateUserType(begin, sysInfo.Uid, models.UserTypeConsumer, 0)
|
||
if err != nil {
|
||
begin.Rollback()
|
||
logger.Error("UpdateUserType err:", logger.Field("err", err))
|
||
app.Error(c, http.StatusInternalServerError, err, "修改失败")
|
||
return
|
||
}
|
||
|
||
if req.Uid != 0 {
|
||
// 新uid状态更新为2
|
||
err = models.UpdateUserType(begin, req.Uid, models.UserTypeShopAssistant, uint32(req.RoleId))
|
||
}
|
||
} else if sysInfo.Uid == req.Uid && sysInfo.RoleId != req.RoleId { // 更改了用户角色
|
||
err = models.UpdateUserType(begin, sysInfo.Uid, models.UserTypeShopAssistant, uint32(req.RoleId))
|
||
}
|
||
}
|
||
if err != nil {
|
||
begin.Rollback()
|
||
logger.Error("UpdateUserType err:", logger.Field("err", err))
|
||
app.Error(c, http.StatusInternalServerError, err, "修改失败")
|
||
return
|
||
}
|
||
|
||
err = begin.Commit().Error
|
||
if err != nil {
|
||
begin.Rollback()
|
||
logger.Error("commit err:", logger.Field("err", err))
|
||
app.Error(c, http.StatusInternalServerError, err, "修改失败")
|
||
return
|
||
}
|
||
|
||
app.OK(c, result, "修改成功")
|
||
}
|
||
|
||
// DeleteSysUser
|
||
// @Summary 删除用户数据
|
||
// @Description 删除数据
|
||
// @Tags system/用户
|
||
// @Param userId path int true "userId"
|
||
// @Success 200 {string} string "{"code": 200, "message": "删除成功"}"
|
||
// @Success 200 {string} string "{"code": -1, "message": "删除失败"}"
|
||
// @Router /api/v1/sysuser/{userId} [delete]
|
||
func DeleteSysUser(c *gin.Context) {
|
||
var data models.SysUser
|
||
data.UpdateBy = tools.GetUserIdStr(c)
|
||
IDS := tools.IdsStrToIdsIntGroup("userId", c)
|
||
|
||
begin := orm.Eloquent.Begin()
|
||
for _, item := range IDS {
|
||
data.UserId = item
|
||
result, err := data.Get()
|
||
if err != nil {
|
||
tools.HasError(err, "删除失败", 500)
|
||
}
|
||
err = models.UpdateUserType(begin, result.Uid, models.UserTypeConsumer, 0)
|
||
if err != nil {
|
||
begin.Rollback()
|
||
logger.Error("DeleteSysUser UpdateUserType err:", logger.Field("err", err))
|
||
tools.HasError(err, "删除失败", 500)
|
||
}
|
||
}
|
||
|
||
result, err := data.BatchDelete(begin, IDS)
|
||
if err != nil {
|
||
begin.Rollback()
|
||
logger.Error("DeleteSysUser BatchDelete err:", logger.Field("err", err))
|
||
tools.HasError(err, "删除失败", 500)
|
||
}
|
||
|
||
err = begin.Commit().Error
|
||
if err != nil {
|
||
begin.Rollback()
|
||
logger.Error("DeleteSysUser commit err:", logger.Field("err", err))
|
||
tools.HasError(err, "删除失败", 500)
|
||
}
|
||
|
||
app.OK(c, result, "删除成功")
|
||
}
|
||
|
||
// @Summary 修改头像
|
||
// @Description 获取JSON
|
||
// @Tags system/用户
|
||
// @Accept multipart/form-data
|
||
// @Param file formData file true "file"
|
||
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
|
||
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
|
||
// @Router /api/v1/user/profileAvatar [post]
|
||
func InsetSysUserAvatar(c *gin.Context) {
|
||
form, _ := c.MultipartForm()
|
||
files := form.File["upload[]"]
|
||
guid := uuid.New().String()
|
||
filPath := "static/uploadfile/" + guid + ".jpg"
|
||
for _, file := range files {
|
||
logger.Debug(file.Filename)
|
||
// 上传文件至指定目录
|
||
_ = c.SaveUploadedFile(file, filPath)
|
||
}
|
||
sysuser := models.SysUser{}
|
||
sysuser.UserId = tools.GetUserId(c)
|
||
sysuser.Avatar = "/" + filPath
|
||
sysuser.UpdateBy = tools.GetUserIdStr(c)
|
||
sysuser.Update(nil, sysuser.UserId)
|
||
app.OK(c, filPath, "修改成功")
|
||
}
|
||
|
||
func SysUserUpdatePwd(c *gin.Context) {
|
||
var pwd models.SysUserPwd
|
||
err := c.Bind(&pwd)
|
||
tools.HasError(err, "数据解析失败", 500)
|
||
sysuser := models.SysUser{}
|
||
sysuser.UserId = tools.GetUserId(c)
|
||
sysuser.SetPwd(pwd)
|
||
app.OK(c, "", "密码修改成功")
|
||
}
|