diff --git a/business/jxstore/cms/job.go b/business/jxstore/cms/job.go index 5d6fffb4c..4a1ff2871 100644 --- a/business/jxstore/cms/job.go +++ b/business/jxstore/cms/job.go @@ -197,8 +197,28 @@ func CancelPublishJob(ctx *jxcontext.Context, jobID int) (err error) { return err } -func GetJobs(ctx *jxcontext.Context, userIDs []string, categoryIDs, statuss, vendorIDs []int, includeStep bool, fromTime, toTime string, lng, lat float64, sortType, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { - return dao.GetJobs(dao.GetDB(), userIDs, categoryIDs, statuss, vendorIDs, []int{model.JobTypeNormal}, includeStep, utils.Str2Time(fromTime), utils.Str2Time(toTime), lng, lat, sortType, pageSize, offset) +func GetJobs(ctx *jxcontext.Context, userIDs []string, categoryIDs, statuss, vendorIDs []int, includeStep bool, fromTime, toTime string, lng, lat float64, keyword string, sortType, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { + var ( + db = dao.GetDB() + userID = ctx.GetUserID() + ) + pagedInfo, err = dao.GetJobs(db, userIDs, categoryIDs, statuss, vendorIDs, []int{model.JobTypeNormal}, includeStep, utils.Str2Time(fromTime), utils.Str2Time(toTime), lng, lat, keyword, sortType, pageSize, offset) + //插入用户搜索关键词 + if keyword != "" { + if userSearchs, _ := dao.GetUserSearch(db, userID, keyword); len(userSearchs) > 0 { + userSearchs[0].Count++ + userSearchs[0].UpdatedAt = time.Now() + dao.UpdateEntity(db, userSearchs[0], "Count", "UpdatedAt") + } else { + userSearch := &model.UserSearch{ + UserID: userID, + Key: keyword, + } + dao.WrapAddIDCULEntity(userSearch, ctx.GetUserName()) + dao.CreateEntity(db, userSearch) + } + } + return pagedInfo, err } func GetJobDetail(ctx *jxcontext.Context, jobID int, lng, lat float64) (job *dao.GetJobsResult, err error) { diff --git a/business/jxstore/cms/user2.go b/business/jxstore/cms/user2.go index f77b2744d..ed0d9571f 100644 --- a/business/jxstore/cms/user2.go +++ b/business/jxstore/cms/user2.go @@ -735,3 +735,19 @@ func AcceptAddGroup(ctx *jxcontext.Context, flag int) (err error) { dao.UpdateEntity(db, user, "PopedFlag") return err } + +type GetUserSerachKeywordResult struct { + AllSpan []*model.UserSearch `json:"allSpan"` + UserSpan []*model.UserSearch `json:"userSpan"` +} + +func GetUserSerachKeyword(ctx *jxcontext.Context) (err error) { + var ( + db = dao.GetDB() + userID = ctx.GetUserID() + ) + sql := ` + SELECT * FROM user_search WHERE + ` + return err +} diff --git a/business/model/dao/dao_job.go b/business/model/dao/dao_job.go index df2678689..956eacd21 100644 --- a/business/model/dao/dao_job.go +++ b/business/model/dao/dao_job.go @@ -58,7 +58,7 @@ func GetJobImgs(db *DaoDB, jobID int) (jobImgs []*model.JobImg, err error) { return jobImgs, err } -func GetJobs(db *DaoDB, userIDs []string, categoryIDs, statuss, vendorIDs, types []int, includeStep bool, fromTime, toTime time.Time, lng, lat float64, sortType, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { +func GetJobs(db *DaoDB, userIDs []string, categoryIDs, statuss, vendorIDs, types []int, includeStep bool, fromTime, toTime time.Time, lng, lat float64, keyword string, sortType, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { var ( jobs []*GetJobsResult distanceFlag bool @@ -107,6 +107,10 @@ func GetJobs(db *DaoDB, userIDs []string, categoryIDs, statuss, vendorIDs, types sql += ` AND a.created_at <= ?` sqlParams = append(sqlParams, toTime) } + if keyword != "" { + sql += ` AND (a.title LIKE ? OR a.content LIKE ? OR a.address LIKE ? OR b.name LIKE ?)` + sqlParams = append(sqlParams, "%"+keyword+"%", "%"+keyword+"%", "%"+keyword+"%", "%"+keyword+"%") + } if sortType != 0 { if sortType == sortTypeDistance { sql += ` ORDER BY distance` @@ -389,3 +393,22 @@ func GetMtMembers(db *DaoDB) (num int, err error) { num = len(mtMembers) return num, err } + +func GetUserSearch(db *DaoDB, userID, keyword string) (userSearchs []*model.UserSearch, err error) { + sql := ` + SELECT * + FROM user_search + WHERE 1 = 1 + ` + sqlParams := []interface{}{} + if userID != "" { + sql += ` AND user_id = ?` + sqlParams = append(sqlParams, userID) + } + if keyword != "" { + sql += ` AND keyword = ?` + sqlParams = append(sqlParams, keyword) + } + err = GetRows(db, &userSearchs, sql, sqlParams) + return userSearchs, err +} diff --git a/business/model/user.go b/business/model/user.go index 8fc5d889a..703e1cbe0 100644 --- a/business/model/user.go +++ b/business/model/user.go @@ -260,3 +260,18 @@ type GetUserResult struct { AcceptOrderCount int `json:"acceptOrderCount"` FinishedOrderCount int `json:"finishedOrderCount"` } + +type UserSearch struct { + ModelIDCUL + + UserID string `orm:"column(user_id)" json:"userID"` //用户ID + Key string `json:"key"` //搜索关键字 + Count int `json:"count"` //搜索次数 +} + +func (v *UserSearch) TableIndex() [][]string { + return [][]string{ + []string{"UserID"}, + []string{"Key"}, + } +} diff --git a/controllers/job_controller.go b/controllers/job_controller.go index aafed210e..46b36c72e 100644 --- a/controllers/job_controller.go +++ b/controllers/job_controller.go @@ -70,6 +70,7 @@ func (c *JobController) GetJobCategories() { // @Param toTime query string false "结束时间" // @Param lng query float64 false "经度" // @Param lat query float64 false "维度" +// @Param keyword query string false "关键字" // @Param sortType query int false "排序类型, 1距离,2新店优先,3今日热门,4奖励高低" // @Param offset query int false "门店列表起始序号(以0开始,缺省为0)" // @Param pageSize query int false "门店列表页大小(缺省为50,-1表示全部)" @@ -83,7 +84,7 @@ func (c *JobController) GetJobs() { categoryIDs, statuss, vendorIDs []int ) if err = jxutils.Strings2Objs(params.UserIDs, &userIDs, params.CategoryIDs, &categoryIDs, params.Statuss, &statuss, params.VendorIDs, &vendorIDs); err == nil { - retVal, err = cms.GetJobs(params.Ctx, userIDs, categoryIDs, statuss, vendorIDs, params.IncludeStep, params.FromTime, params.ToTime, params.Lng, params.Lat, params.SortType, params.PageSize, params.Offset) + retVal, err = cms.GetJobs(params.Ctx, userIDs, categoryIDs, statuss, vendorIDs, params.IncludeStep, params.FromTime, params.ToTime, params.Lng, params.Lat, params.Keyword, params.SortType, params.PageSize, params.Offset) } return retVal, "", err }) diff --git a/controllers/user2_controller.go b/controllers/user2_controller.go index 4140ff5a5..133a7448d 100644 --- a/controllers/user2_controller.go +++ b/controllers/user2_controller.go @@ -413,3 +413,16 @@ func (c *User2Controller) DeleteUserCityManager() { return retVal, "", err }) } + +// @Title 得到搜索关键词 +// @Description 得到搜索关键词 +// @Param token header string true "认证token" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /GetUserSerachKeyword [get] +func (c *User2Controller) GetUserSerachKeyword() { + c.callGetUserSerachKeyword(func(params *tUser2GetUserSerachKeywordParams) (retVal interface{}, errCode string, err error) { + + return retVal, "", err + }) +} diff --git a/globals/beegodb/beegodb.go b/globals/beegodb/beegodb.go index 9ffb81be5..c9a4863ec 100644 --- a/globals/beegodb/beegodb.go +++ b/globals/beegodb/beegodb.go @@ -16,6 +16,7 @@ func Init() { orm.RegisterModel(&model.UserMember{}) orm.RegisterModel(&model.UserDeliveryAddress{}) orm.RegisterModel(&model.UserCityManager{}) + orm.RegisterModel(&model.UserSearch{}) //账单 orm.RegisterModel(&model.UserBill{}, &model.BillIncome{}, &model.BillExpend{}) //支付订单