增加支持模糊搜索

master
dlcios 10 months ago
parent 903868d4ed
commit ac9e974332
  1. 15
      api/v1/req.go
  2. 17
      api/v1/visitor.go
  3. 8
      internal/controller/visitor.go
  4. 56
      internal/service/visitor.go

@ -0,0 +1,15 @@
package v1
// PageReq 公共请求参数
type PageReq struct {
DateRange []string `p:"date_range"` //日期范围
PageNum int `p:"page_num" v:"min:0#分页号码错误"` //当前页码
PageSize int `p:"page_size" v:"max:50#分页数量最大50条"` //每页数
OrderBy string //排序方式
}
// ListRes 列表公共返回
type ListRes struct {
CurrentPage int `json:"current_page"`
Total int `json:"total"`
}

@ -2,6 +2,7 @@ package v1
import (
"github.com/gogf/gf/v2/frame/g"
"vistor/internal/model/entity"
)
type VisitorAccessReq struct {
@ -40,3 +41,19 @@ type VisitorStatisticRes struct {
XAxis g.SliceStr `p:"x_axis"`
YAxis g.SliceStr `p:"y_axis"`
}
type VisitorListReq struct {
g.Meta `path:"/list" tags:"visitor list" method:"post" summary:"visitor list"`
VisitorName string `p:"visitor_name"`
VisitorIdentity string `p:"visitor_identity"`
VisitorPhone string `p:"visitor_phone" v:"phone#请填写正确手机号"`
StartDate int `p:"start_date" v:"required-with:end_date|max-length:10#请选择起始日期|请选择正确的起始日期"`
EndDate int `p:"end_date" v:"required-with:start_date|max-length:10#请选择截止日期|请选择正确的截止日期"`
PageReq
}
type VisitorListRes struct {
g.Meta `mime:"text/html" example:"string"`
List []*entity.VisitorRecord `json:"list"`
Total int `json:"total"`
}

@ -36,3 +36,11 @@ func (c *cVisitor) VisitorStatistic(ctx context.Context, req *v1.VisitorStatisti
}
return
}
func (c *cVisitor) VisitorList(ctx context.Context, req *v1.VisitorListReq) (res *v1.VisitorListRes, err error) {
res, err = service.Visitor.VisitorList(ctx, req)
if err != nil {
return nil, gerror.Newf("系统繁忙,请稍后再试")
}
return
}

@ -12,6 +12,7 @@ import (
"vistor/internal/consts"
"vistor/internal/dao"
"vistor/internal/model"
"vistor/internal/model/entity"
)
type visitorService struct{}
@ -26,6 +27,55 @@ type IVisitor interface {
VisitorAccess(ctx context.Context, req *v1.VisitorAccessReq) error
VisitorStatistic(ctx context.Context, req *v1.VisitorAccessReq) (res *v1.VisitorAccessRes, err error)
GetDiffDays(t1, t2 time.Time) int
VisitorList(ctx context.Context, req *v1.VisitorListReq) (res *v1.VisitorListRes, err error)
}
func (s *visitorService) VisitorList(ctx context.Context, req *v1.VisitorListReq) (res *v1.VisitorListRes, err error) {
condition := g.Map{}
var records []*entity.VisitorRecord
if req.PageNum == 0 {
req.PageNum = 1
}
if req.PageSize == 0 {
req.PageSize = 15
}
if req.VisitorName != "" {
condition["visitor_name like ?"] = "%" + req.VisitorName + "%"
}
if req.VisitorIdentity != "" {
condition["visitor_identity like ?"] = "%" + req.VisitorIdentity + "%"
}
if req.VisitorPhone != "" {
condition["visitor_phone like ?"] = "%" + req.VisitorPhone + "%"
}
query := dao.VisitorRecord.Ctx(ctx).Where(condition)
if req.StartDate != 0 || req.EndDate != 0 {
query = query.WhereBetween(dao.VisitorRecord.Columns().VisitAt, req.StartDate, req.EndDate)
}
total, err := query.Count()
if err != nil {
return nil, err
}
err = query.Page(req.PageNum, req.PageSize).Order("id desc").Scan(&records)
if err != nil {
return nil, err
}
res = &v1.VisitorListRes{
List: records,
Total: total,
}
return
}
func (s *visitorService) VisitorAccess(ctx context.Context, req *v1.VisitorAccessReq) error {
@ -53,15 +103,15 @@ func (s *visitorService) VisitorStatistic(ctx context.Context, req *v1.VisitorSt
condition := g.Map{}
if req.VisitorName != "" {
condition["vr.visitor_name"] = req.VisitorName
condition["vr.visitor_name like ?"] = "%" + req.VisitorName + "%"
}
if req.VisitorIdentity != "" {
condition["vr.visitor_identity"] = req.VisitorIdentity
condition["vr.visitor_identity like ?"] = "%" + req.VisitorIdentity + "%"
}
if req.VisitorPhone != "" {
condition["vr.visitor_phone"] = req.VisitorPhone
condition["vr.visitor_phone like ?"] = "%" + req.VisitorPhone + "%"
}
if req.StatisticType == consts.StatisticTypeDay {

Loading…
Cancel
Save