|
|
|
@ -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 { |
|
|
|
|