| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- package db
- import (
- "dashoo.cn/opms_libary/myerrors"
- "errors"
- )
- // 新增页面请求参数
- type DictEntity struct {
- Id string `json:"id"`
- Name string `json:"name"`
- }
- // DictReq 字典返回项的请求参数
- // v:"name @required|length:6,30#请输入用户名称|用户名称长度非法"`
- type DictReq struct {
- TableName string `json:"table_name" v:"table_name@required#表名称为必填项"` // 表名称
- DisplayField []string `json:"display_field" v:"display_field@required#显示字段必填"` // 显示字段
- SortFields string `json:"sort_fields"` // 排序字段
- Where interface{} `json:"where"` // 条件
- Args []interface{} `json:"args"` // 参数
- }
- // Dict 字典项
- type Dict struct {
- Label string `json:"label"`
- Val string `json:"val"`
- }
- // GetDictList 获取字典项列表(有效的) FileldParams可选,第一个为IdField,第二个为SortField,第三个为EnabledField
- func (s *ServiceBase) GetDictList(tableName string, NameField string, FileldParams ...string) ([]DictEntity, error) {
- idField := "Id"
- sortField := "SortCode"
- enabledField := "Enabled"
- if len(FileldParams) > 0 {
- for index, param := range FileldParams {
- if param == "" {
- continue
- }
- if index == 0 {
- idField = param
- } else if index == 1 {
- sortField = param
- } else if index == 2 {
- enabledField = param
- }
- }
- }
- var entity []DictEntity
- err := s.DB.Model(tableName).
- Fields(idField+" as Id", NameField+" as Name").
- Where(enabledField, 1).
- Order(sortField + " ASC").
- Structs(&entity)
- if err != nil {
- return nil, myerrors.NewDbError(err)
- }
- return entity, nil
- }
- // GetDictListForWhere 根据条件返回字典项 (tableName:表名称, displayField 显示字段, where, args 条件参数)
- // 如果 displayField 字段只有一个,默认加 Id是key
- func (s *ServiceBase) GetDictListForWhere(req DictReq) ([]Dict, error) {
- if len(req.DisplayField) == 0 {
- return nil, errors.New("显示字段参数不能为空")
- }
- defaultField := "Id"
- model := s.DB.Model(req.TableName)
- if len(req.DisplayField) == 1 {
- model = model.Fields(defaultField+" AS Label", req.DisplayField[0]+" AS Val")
- } else {
- model = model.Fields(req.DisplayField[0]+" AS Label", req.DisplayField[1]+" AS Val")
- }
- // 排序
- if req.SortFields != "" {
- model = model.OrderAsc(req.SortFields)
- }
- dictList := make([]Dict, 0)
- if req.Where != nil {
- if len(req.Args) > 0 {
- model = model.Where(req.Where, req.Args)
- } else {
- model = model.Where(req.Where)
- }
- }
- err := model.Scan(&dictList)
- if err != nil {
- return nil, err
- }
- return dictList, nil
- }
|