package dao import ( "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/model" ) type FoodRecipeWithAction struct { model.FoodRecipe ActionType int8 `json:"actionType"` } func QueryFoodRecipes(db *DaoDB, keyword string, recipeID int, authorID, userID string) (recipeList []*FoodRecipeWithAction, err error) { var sql string var sqlParams []interface{} if userID != "" { sql = ` SELECT t1.*, t2.action_type FROM food_recipe t1 LEFT JOIN food_recipe_user t2 ON t2.recipe_id = t1.id AND t2.user_id = ? AND t2.deleted_at = ? WHERE t1.deleted_at = ?` sqlParams = []interface{}{ userID, utils.DefaultTimeValue, utils.DefaultTimeValue, } } else { sql = ` SELECT t1.* FROM food_recipe t1 WHERE t1.deleted_at = ?` sqlParams = []interface{}{ utils.DefaultTimeValue, } } if keyword != "" { keywordLike := "%" + keyword + "%" sql += " AND (t1.name LIKE ?" sqlParams = append(sqlParams, keywordLike) sql += ")" } if recipeID > 0 { sql += " AND t1.id = ?" sqlParams = append(sqlParams, recipeID) } if authorID != "" { sql += " AND t1.author_id = ?" sqlParams = append(sqlParams, authorID) } err = GetRows(db, &recipeList, sql, sqlParams...) return recipeList, err } func GetRecommendFoodRecipes(db *DaoDB, keyword, userID string) (recipeList []*model.FoodRecipe, err error) { if list, err := QueryFoodRecipes(db, keyword, 0, userID, ""); err == nil { recipeList = FoodRecipeWithActionList2Recipe(list) } return recipeList, err } func FoodRecipeWithActionList2Recipe(recipeList []*FoodRecipeWithAction) (outRecipeList []*model.FoodRecipe) { for _, v := range recipeList { outRecipeList = append(outRecipeList, &v.FoodRecipe) } return outRecipeList } func QueryFoodRecipesItems(db *DaoDB, recipeID int) (recipeItemList []*model.FoodRecipeItem, err error) { sql := ` SELECT t1.* FROM food_recipe_item t1 WHERE t1.deleted_at = ? AND t1.recipe_id = ?` sqlParams := []interface{}{ utils.DefaultTimeValue, recipeID, } sql += " ORDER BY t1.index" err = GetRows(db, &recipeItemList, sql, sqlParams...) return recipeItemList, err } func QueryFoodRecipesItemChoices(db *DaoDB, recipeID int) (recipeItemChoiceList []*model.FoodRecipeItemChoice, err error) { sql := ` SELECT t1.* FROM food_recipe_item_choice t1 WHERE t1.deleted_at = ? AND t1.recipe_id = ?` sqlParams := []interface{}{ utils.DefaultTimeValue, recipeID, } sql += " ORDER BY t1.index, t1.choice_index" err = GetRows(db, &recipeItemChoiceList, sql, sqlParams...) return recipeItemChoiceList, err } func QueryFoodRecipesSteps(db *DaoDB, recipeID int) (recipeStepList []*model.FoodRecipeStep, err error) { sql := ` SELECT t1.* FROM food_recipe_step t1 WHERE t1.deleted_at = ? AND t1.recipe_id = ?` sqlParams := []interface{}{ utils.DefaultTimeValue, recipeID, } sql += " ORDER BY t1.index" err = GetRows(db, &recipeStepList, sql, sqlParams...) return recipeStepList, err }