diff --git a/app/common/middle/user_pkg.go b/app/common/middle/user_pkg.go new file mode 100644 index 0000000..2f68e1c --- /dev/null +++ b/app/common/middle/user_pkg.go @@ -0,0 +1,53 @@ +package middle + +import ( + "fmt" + "time" + "twin-api/app/common/dao" + "twin-api/app/common/model" + "twin-api/base/config" + + "git.u8t.cn/open/go-server/session" + "github.com/gin-gonic/gin" + "github.com/smbrave/goutil" +) + +func UserPkg(ctx *gin.Context) { + sess, ok := ctx.Keys[session.ContextSession].(*session.ApiSession) + if !ok { + panic(config.ErrInternal.New().Append("user_pkg: error user")) + } + header := sess.GetUserHeader() + if header.Package == "" || header.Version == "" { + panic(config.ErrParam.New().Append("user_pkg: error pkg")) + } + + var userPkgInfo *model.Pkg + var err error + + // 检查用户是否有新版本,如果没有则落库, + if userPkgInfo, err = dao.NewPackage().GetUserPkg(sess.GetUserId(), header.Package, header.Version); err != nil { + panic(config.ErrDb.New().Append("user_pkg: ", err)) + } + + if userPkgInfo == nil { + // 查询当前的userPkg以及version是否存在 + var pkg *model.Pkg + if pkg, err = dao.NewPackage().GetOne(header.Package, header.Version); err != nil { + panic(config.ErrDb.New().Append("user_pkg: ", err)) + } + + if pkg == nil { + panic(config.ErrParam.New().Append(fmt.Sprintf("user_pkg: error pkg: %s version %s", header.Package, header.Version))) + } + + userPkg := &model.UserPkg{} + userPkg.UserId = sess.GetUserId() + userPkg.PackageId = pkg.Id + userPkg.CreateTime = time.Now().Unix() + userPkg.Extra = goutil.EncodeJSON(pkg) + if err = dao.NewUserPkg().Create(userPkg); err != nil { + panic(config.ErrDb.New().Append("user_pkg: create error: ", err)) + } + } +}