12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- package service
- import (
- "dy-admin/internal/pcmserver/common"
- "dy-admin/internal/pcmserver/global"
- "dy-admin/internal/pcmserver/pkg/code"
- "dy-admin/internal/pcmserver/sys/model"
- "dy-admin/internal/pcmserver/sys/model/request"
- "dy-admin/internal/pcmserver/utils"
- "dy-admin/pkg/rescode"
- "github.com/gin-gonic/gin"
- "github.com/mssola/user_agent"
- "gorm.io/gorm"
- "time"
- )
- type LoginRecordService struct{}
- func (lr *LoginRecordService) CreateLoginRecord(c *gin.Context, username string, loginErr error) (err error) {
- var msg = "登录成功"
- if loginErr != nil {
- errCode := rescode.ParseCode(loginErr)
- msg = errCode.Message()
- }
- ua := user_agent.New(c.Request.UserAgent())
- browserName, browserVersion := ua.Browser()
- logRecord := model.LoginLog{
- UserName: username,
- Status: "1",
- Ipaddr: utils.GetClientIP(c),
- LoginLocation: "",
- Browser: browserName + " " + browserVersion,
- Os: ua.OS(),
- Platform: ua.Platform(),
- LoginTime: time.Now(),
- Remark: c.Request.UserAgent(),
- Msg: msg,
- CreatedAt: time.Time{},
- UpdatedAt: time.Time{},
- }
- err = global.DB.Create(&logRecord).Error
- if err != nil {
- return rescode.RegisterErrorWithCause(err, code.ErrCodeMap[code.ErrDatabaseCode])
- }
- return
- }
- func (lr *LoginRecordService) DeleteLoginRecordByIDs(ids common.IdsReq) (err error) {
- if err = global.DB.Delete(&[]model.LoginLog{}, "id in (?)", ids.IDs).Error; err != nil {
- return rescode.RegisterErrorWithCause(err, code.ErrCodeMap[code.ErrDatabaseCode])
- }
- return
- }
- func (lr *LoginRecordService) GetLoginRecord(id int) (*model.LoginLog, error) {
- var record model.LoginLog
- err := global.DB.Where("id = ?", id).First(&record).Error
- if err != nil {
- if err != gorm.ErrRecordNotFound {
- return nil, rescode.RegisterErrorWithCause(err, code.ErrCodeMap[code.ErrDatabaseCode])
- } else {
- return nil, nil
- }
- }
- return &record, nil
- }
- func (lr *LoginRecordService) GetLoginRecordList(info request.LoginRecordSearch) (logRecords []model.LoginLog, total int64, err error) {
- limit := info.PageSize
- offset := info.PageSize * (info.Page - 1)
- db := global.DB.Model(&model.LoginLog{})
- if info.UserName != "" {
- db = db.Where("user_name LIKE ?", "%"+info.UserName+"%")
- }
- if info.Ipaddr != "" {
- db = db.Where("ipaddr LIKE ?", "%"+info.Ipaddr+"%")
- }
- err = db.Count(&total).Error
- if err != nil {
- return
- }
- if err = db.Order("id desc").Limit(limit).Offset(offset).Find(&logRecords).Error; err != nil {
- return logRecords, total, rescode.RegisterErrorWithCause(err, code.ErrCodeMap[code.ErrDatabaseCode])
- }
- return
- }
|