You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

58 lines
1.9 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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)
}