// ========================================================================== // GFast自动生成logic操作代码。 // 生成日期:2024-05-14 14:55:52 // 生成路径: internal/app/system/logic/reminders.go // 生成人:gfast // desc:App-消息-提醒 // company:云南奇讯科技有限公司 // ========================================================================== package logic import ( "context" "strconv" "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/util/gconv" "github.com/jinzhu/copier" "github.com/tiger1103/gfast/v3/api/v1/system" "github.com/tiger1103/gfast/v3/internal/app/system/consts" "github.com/tiger1103/gfast/v3/internal/app/system/dao" "github.com/tiger1103/gfast/v3/internal/app/system/model" "github.com/tiger1103/gfast/v3/internal/app/system/model/do" "github.com/tiger1103/gfast/v3/internal/app/system/service" "github.com/tiger1103/gfast/v3/library/liberr" ct "github.com/tiger1103/gfast/v3/internal/app/system/logic/context" ) func init() { service.RegisterReminders(New()) } func New() *sReminders { return &sReminders{} } type sReminders struct{} func (s *sReminders) List(ctx context.Context, req *system.RemindersSearchReq) (listRes *system.RemindersSearchRes, err error) { // 获取 user_id userID := ct.New().GetUserId(ctx) listRes = new(system.RemindersSearchRes) err = g.Try(ctx, func(ctx context.Context) { m := dao.Reminders.Ctx(ctx).WithAll().As("rs") // if req.Id != "" { // m = m.Where("rs."+dao.Reminders.Columns().Id+" = ?", req.Id) // } iid := "" if req.OpenId != "" { m = m.Where("rs."+dao.Reminders.Columns().UserId+" = ?", req.OpenId) iid = req.OpenId } else { m = m.Where("rs."+dao.Reminders.Columns().UserId+" = ?", userID) iid = strconv.FormatUint(userID, 10) } //if req.UserId != "" { // m = m.Where("rs."+dao.Reminders.Columns().UserId+" = ?", gconv.Int(req.UserId)) //} if req.ReminderType != "" { m = m.Where("rs."+dao.Reminders.Columns().ReminderType+" = ?", gconv.Int(req.ReminderType)) } if req.Title != "" { m = m.Where("rs."+dao.Reminders.Columns().Title+" = ?", req.Title) } if req.ViolationType != "" { m = m.Where("rs."+dao.Reminders.Columns().ViolationType+" = ?", req.ViolationType) } if req.ProjectId != "" { m = m.Where("rs."+dao.Reminders.Columns().ProjectId+" = ?", gconv.Int(req.ProjectId)). LeftJoin("sys_project as sp", "rs.project_id = sp.id") } if len(req.DateRange) != 0 { m = m.Where("rs."+dao.Reminders.Columns().CreatedAt+" >=? AND "+dao.Reminders.Columns().CreatedAt+" <=?", req.DateRange[0], req.DateRange[1]) } listRes.Total, err = m.Count() liberr.ErrIsNil(ctx, err, "获取总行数失败") if req.PageNum == 0 { req.PageNum = 1 } listRes.CurrentPage = req.PageNum if req.PageSize == 0 { req.PageSize = consts.PageSize } order := "id" if req.OrderBy != "" { order = req.OrderBy } var res []*model.RemindersInfoRes m = m.LeftJoin("sys_user as su", "rs.user_id = su.id") fields := "rs.id,rs.user_id,rs.reminder_type,rs.title,rs.violation_type,rs.project_id,rs.created_at,sp.project_name,rs.status,rs.order_id,su.user_nickname" err = m.Fields(fields).Page(req.PageNum, req.PageSize).OrderDesc(order).Scan(&res) liberr.ErrIsNil(ctx, err, "获取数据失败") listRes.List = make([]*model.RemindersListRes, len(res)) _, err = dao.Reminders.Ctx(ctx). Where(dao.Reminders.Columns().ProjectId, req.ProjectId). Where("user_id = '" + req.UserId + "'"). Data( g.Map{ dao.Reminders.Columns().IsRead: 1, }, ).Update() liberr.ErrIsNil(ctx, err, "修改已读状态失败") // 根据 openID 已读状态 _, err = dao.Reminders.Ctx(ctx). Where(dao.Reminders.Columns().ProjectId, req.ProjectId). Where("user_id = '" + iid + "'"). Data( g.Map{ dao.Reminders.Columns().IsRead: 1, }, ).Update() liberr.ErrIsNil(ctx, err, "修改已读状态失败") copier.Copy(&listRes.List, &res) }) return } func (s *sReminders) GetById(ctx context.Context, id uint) (res *model.RemindersInfoRes, err error) { err = g.Try(ctx, func(ctx context.Context) { err = dao.Reminders.Ctx(ctx).WithAll().Where(dao.Reminders.Columns().Id, id).Scan(&res) liberr.ErrIsNil(ctx, err, "获取信息失败") }) return } func (s *sReminders) Add(ctx context.Context, req *system.RemindersAddReq) (err error) { err = g.Try(ctx, func(ctx context.Context) { _, err = dao.Reminders.Ctx(ctx).Insert(do.Reminders{ UserId: req.UserId, ReminderType: req.ReminderType, Title: req.Title, ViolationType: req.ViolationType, ProjectId: req.ProjectId, }) liberr.ErrIsNil(ctx, err, "添加失败") }) return } func (s *sReminders) Edit(ctx context.Context, req *system.RemindersEditReq) (err error) { err = g.Try(ctx, func(ctx context.Context) { _, err = dao.Reminders.Ctx(ctx).WherePri(req.Id).Update(do.Reminders{ UserId: req.UserId, ReminderType: req.ReminderType, Title: req.Title, ViolationType: req.ViolationType, ProjectId: req.ProjectId, }) liberr.ErrIsNil(ctx, err, "修改失败") }) return } func (s *sReminders) Delete(ctx context.Context, ids []uint) (err error) { err = g.Try(ctx, func(ctx context.Context) { _, err = dao.Reminders.Ctx(ctx).Delete(dao.Reminders.Columns().Id+" in (?)", ids) liberr.ErrIsNil(ctx, err, "删除失败") }) return }