package GovAreaDao import ( "dsBaseRpc/Const/ErrorConst" "dsBaseRpc/RpcService/GovArea/GovAreaProto" "dsBaseRpc/Utils/SqlKit" "dsBaseRpc/Utils/DbUtil" "dsBaseRpc/Utils/LogUtil" "dsBaseRpc/models" "github.com/xormplus/builder" ) var db = DbUtil.Engine //增加 func AddGovArea(model models.TGovArea) (int64, error) { return db.Insert(model) } //修改 func UpdateGovArea(model models.TGovArea) (int64, error) { //1、清除Redis缓存 var ids = []string{model.AreaCode} var selector = SqlKit.GetBean("t_gov_area") SqlKit.DeleteCacheByIds(ids, selector) //2、通过添加Cols函数指定需要更新结构体中的哪些值,未指定的将不更新,指定了的即使为0也会更新。 count, err := db.Where("area_code = ?", model.AreaCode).Cols("area_level_id", "area_name", "area_type_id").Update(model) return count, err } //分页查询 //注意,不能使用*Reply入侵这一层,因为Reply是有rpc的概念在里面的,不能把List-->string这个限制传送到这里来! func PageGovArea(in *GovAreaProto.QueryArg) (bool, string, int32, []map[string]interface{}, error) { //接收传入参数 var limit = int(in.Limit) var offset = int((in.Page - 1) * in.Limit) var myBuilder = builder.Dialect(builder.MYSQL).Select("area_code").From("t_gov_area") myBuilder.Where(builder.Eq{"master_code": in.AreaCode}) //获取拼接完成的SQL语句 sql, _ := myBuilder.OrderBy("area_code asc").Limit(limit,offset).ToBoundSQL() list, count, err := SqlKit.Query(sql) if err != nil { //记录到错误日志 LogUtil.Error(ErrorConst.SqlQueryError, "执行PageGovArea时发生严重错误:"+err.Error()) return false, "数据库查询失败,请检查原因!", 0, nil, err } return true, "查询成功!", count, list, err } //功能:检查指定的AreaCode是否存在 func ExistAreaCode(areaCode string) (bool, error) { model := new(models.TGovArea) return db.Where("area_code=?", areaCode).Get(model) }