浏览代码

temp commit

hsun 2 周之前
父节点
当前提交
637cc6c562

+ 173 - 0
controllers/assessment_researcher/assessment_researcher.go

@@ -0,0 +1,173 @@
+package assessment_researcher
+
+import (
+	"encoding/json"
+	"eta/eta_api/controllers"
+	"eta/eta_api/models"
+	"eta/eta_api/models/system"
+	"eta/eta_api/utils"
+	"fmt"
+	"time"
+)
+
+// AssessmentResearcherController 考核研究员
+type AssessmentResearcherController struct {
+	controllers.BaseAuthController
+}
+
+// Add
+// @Title 新增研究员
+// @Description 新增研究员
+// @Param	request	body models.AssessmentResearcherAddReq true "type json string"
+// @Success 200 string "操作成功"
+// @router /add [post]
+func (this *AssessmentResearcherController) Add() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		if br.ErrMsg == "" {
+			br.IsSendEmail = false
+		}
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+	var req models.AssessmentResearcherAddReq
+	if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
+		br.Msg = "参数有误"
+		br.ErrMsg = fmt.Sprintf("参数解析失败, %v", e)
+		return
+	}
+	if req.AdminId <= 0 {
+		br.Msg = "请选择研究员"
+		return
+	}
+
+	// 检验是否已添加过
+	researcherOb := new(models.AssessmentResearcher)
+	{
+		cond := fmt.Sprintf(` AND %s = ?`, researcherOb.Cols().AdminId)
+		pars := make([]interface{}, 0)
+		pars = append(pars, req.AdminId)
+		exists, e := researcherOb.GetItemByCondition(cond, pars, "")
+		if e != nil && !utils.IsErrNoRow(e) {
+			br.Msg = "操作失败"
+			br.ErrMsg = fmt.Sprintf("获取研究员失败, %v", e)
+			return
+		}
+		if exists != nil && exists.AssessmentResearcherId > 0 {
+			br.Msg = "该研究员已添加,请勿重复添加"
+			return
+		}
+	}
+
+	sysAdmin, e := system.GetSysAdminById(req.AdminId)
+	if e != nil {
+		if utils.IsErrNoRow(e) {
+			br.Msg = "该用户不存在,请重新选择"
+			return
+		}
+		br.Msg = "操作失败"
+		br.ErrMsg = fmt.Sprintf("获取系统用户失败, %v", e)
+		return
+	}
+	if sysAdmin.Enabled != 1 {
+		br.Msg = "该用户被禁用,请重新选择"
+		return
+	}
+	newResearcher := new(models.AssessmentResearcher)
+	newResearcher.AdminId = req.AdminId
+	newResearcher.RealName = sysUser.RealName
+	newResearcher.Enabled = sysUser.Enabled
+	newResearcher.CreateTime = time.Now().Local()
+	newResearcher.ModifyTime = time.Now().Local()
+	if e = newResearcher.Create(); e != nil {
+		br.Msg = "操作失败"
+		br.ErrMsg = fmt.Sprintf("新增研究员失败, %v", e)
+		return
+	}
+
+	// 查看/统计权限
+	mappings := make([]*models.AssessmentResearcherAdminMapping, 0)
+	if len(req.ViewAdminIds) > 0 {
+		for _, v := range req.ViewAdminIds {
+			m := new(models.AssessmentResearcherAdminMapping)
+			m.AdminId = req.AdminId
+			m.AuthAdminId = v
+			m.AuthType = models.AssessmentResearcherAdminAuthTypeView
+			mappings = append(mappings, m)
+		}
+	}
+	if len(req.AssessmentAdminIds) > 0 {
+		for _, v := range req.AssessmentAdminIds {
+			m := new(models.AssessmentResearcherAdminMapping)
+			m.AdminId = req.AdminId
+			m.AuthAdminId = v
+			m.AuthType = models.AssessmentResearcherAdminAuthTypeStatistics
+			mappings = append(mappings, m)
+		}
+	}
+	mappingOb := new(models.AssessmentResearcherAdminMapping)
+	if e = mappingOb.CreateMulti(mappings); e != nil {
+		br.Msg = "操作失败"
+		br.ErrMsg = fmt.Sprintf("批量新增权限失败, %v", e)
+		return
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "操作成功"
+}
+
+// Detail
+// @Title 新增研究员
+// @Description 新增研究员
+// @Param	request	body models.AssessmentResearcherAddReq true "type json string"
+// @Success 200 string "操作成功"
+// @router /add [post]
+func (this *AssessmentResearcherController) Detail() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		if br.ErrMsg == "" {
+			br.IsSendEmail = false
+		}
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+	researcherId, _ := this.GetInt("ResearcherId")
+	if researcherId <= 0 {
+		br.Msg = "参数有误"
+		br.ErrMsg = fmt.Sprintf("参数有误, ResearcherId: %d", researcherId)
+		return
+	}
+
+	researcherOb := new(models.AssessmentResearcher)
+	researcher, e := researcherOb.GetItemById(researcherId)
+	if e != nil {
+		if utils.IsErrNoRow(e) {
+			br.Msg = "研究员不存在,请重新页面"
+			return
+		}
+		br.Msg = "获取失败"
+		br.ErrMsg = fmt.Sprintf("获取研究员失败, %v", e)
+		return
+	}
+
+	mappingOb := new(models.AssessmentResearcherAdminMapping)
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+}

+ 1 - 0
controllers/assessment_researcher/assessment_variety.go

@@ -0,0 +1 @@
+package assessment_researcher

+ 133 - 0
models/assessment_researcher.go

@@ -0,0 +1,133 @@
+package models
+
+import (
+	"eta/eta_api/global"
+	"eta/eta_api/utils"
+	"fmt"
+	"strings"
+	"time"
+)
+
+// AssessmentResearcher 考核研究员表
+type AssessmentResearcher struct {
+	AssessmentResearcherId int       `gorm:"column:assessment_researcher_id;primaryKey;autoIncrement"`
+	AdminId                int       `description:"系统用户ID"`
+	RealName               string    `description:"用户姓名"`
+	Enabled                int       `description:"状态:0-禁用;1-正常"`
+	CreateTime             time.Time `description:"创建时间"`
+	ModifyTime             time.Time `description:"修改时间"`
+}
+
+func (m *AssessmentResearcher) TableName() string {
+	return "assessment_researcher"
+}
+
+type AssessmentResearcherCols struct {
+	PrimaryId  string
+	AdminId    string
+	RealName   string
+	Enabled    string
+	CreateTime string
+	ModifyTime string
+}
+
+func (m *AssessmentResearcher) Cols() AssessmentResearcherCols {
+	return AssessmentResearcherCols{
+		PrimaryId:  "assessment_researcher_id",
+		AdminId:    "admin_id",
+		RealName:   "real_name",
+		Enabled:    "enabled",
+		CreateTime: "create_time",
+		ModifyTime: "modify_time",
+	}
+}
+
+func (m *AssessmentResearcher) Create() (err error) {
+	err = global.DEFAULT_DB.Create(m).Error
+	return
+}
+
+func (m *AssessmentResearcher) CreateMulti(items []*AssessmentResearcher) (err error) {
+	if len(items) == 0 {
+		return
+	}
+	err = global.DEFAULT_DB.CreateInBatches(items, utils.MultiAddNum).Error
+	return
+}
+
+func (m *AssessmentResearcher) Update(cols []string) (err error) {
+	err = global.DEFAULT_DB.Select(cols).Updates(m).Error
+	return
+}
+
+func (m *AssessmentResearcher) Remove() (err error) {
+	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
+	err = global.DEFAULT_DB.Exec(sql, m.AssessmentResearcherId).Error
+	return
+}
+
+func (m *AssessmentResearcher) MultiRemove(ids []int) (err error) {
+	if len(ids) == 0 {
+		return
+	}
+	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s IN (%s)`, m.TableName(), m.Cols().PrimaryId, utils.GetOrmInReplace(len(ids)))
+	err = global.DEFAULT_DB.Exec(sql, ids).Error
+	return
+}
+
+func (m *AssessmentResearcher) RemoveByCondition(condition string, pars []interface{}) (err error) {
+	if condition == "" {
+		return
+	}
+	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s`, m.TableName(), condition)
+	err = global.DEFAULT_DB.Exec(sql, pars).Error
+	return
+}
+
+func (m *AssessmentResearcher) GetItemById(primaryId int) (item *AssessmentResearcher, err error) {
+	sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
+	err = global.DEFAULT_DB.Raw(sql, primaryId).First(&item).Error
+	return
+}
+
+func (m *AssessmentResearcher) GetItemByCondition(condition string, pars []interface{}, orderRule string) (item *AssessmentResearcher, err error) {
+	order := ``
+	if orderRule != "" {
+		order = ` ORDER BY ` + orderRule
+	}
+	sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s %s LIMIT 1`, m.TableName(), condition, order)
+	err = global.DEFAULT_DB.Raw(sql, pars).First(&item).Error
+	return
+}
+
+func (m *AssessmentResearcher) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*AssessmentResearcher, err error) {
+	fields := strings.Join(fieldArr, ",")
+	if len(fieldArr) == 0 {
+		fields = `*`
+	}
+	order := ``
+	if orderRule != "" {
+		order = ` ORDER BY ` + orderRule
+	}
+	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&items).Error
+	return
+}
+
+// AssessmentResearcherAddReq 新增研究员请求
+type AssessmentResearcherAddReq struct {
+	AdminId            int   `description:"用户ID"`
+	ViewAdminIds       []int `description:"查看权限用户IDs"`
+	AssessmentAdminIds []int `description:"统计权限用户IDs"`
+}
+
+// AssessmentResearcherEditReq 编辑研究员请求
+type AssessmentResearcherEditReq struct {
+	AssessmentResearcherId int `description:"研究员ID"`
+	AssessmentResearcherAddReq
+}
+
+// AssessmentResearcherRemoveReq 删除研究员请求
+type AssessmentResearcherRemoveReq struct {
+	AssessmentResearcherId int `description:"研究员ID"`
+}

+ 113 - 0
models/assessment_researcher_admin_mapping.go

@@ -0,0 +1,113 @@
+package models
+
+import (
+	"eta/eta_api/global"
+	"eta/eta_api/utils"
+	"fmt"
+	"strings"
+)
+
+const (
+	AssessmentResearcherAdminAuthTypeView       = 1
+	AssessmentResearcherAdminAuthTypeStatistics = 2
+)
+
+// AssessmentResearcherAdminMapping 研究员考核-用户权限关系表
+type AssessmentResearcherAdminMapping struct {
+	Id          int `gorm:"column:id;primaryKey;autoIncrement"`
+	AdminId     int `description:"系统用户ID"`
+	AuthAdminId int `description:"被授权的用户ID"`
+	AuthType    int `description:"权限类型:1-查看;2-统计"`
+}
+
+func (m *AssessmentResearcherAdminMapping) TableName() string {
+	return "assessment_researcher_admin_mapping"
+}
+
+type AssessmentResearcherAdminMappingCols struct {
+	PrimaryId   string
+	AdminId     string
+	AuthAdminId string
+	AuthType    string
+}
+
+func (m *AssessmentResearcherAdminMapping) Cols() AssessmentResearcherAdminMappingCols {
+	return AssessmentResearcherAdminMappingCols{
+		PrimaryId:   "id",
+		AdminId:     "admin_id",
+		AuthAdminId: "auth_admin_id",
+		AuthType:    "auth_type",
+	}
+}
+
+func (m *AssessmentResearcherAdminMapping) Create() (err error) {
+	err = global.DEFAULT_DB.Create(m).Error
+	return
+}
+
+func (m *AssessmentResearcherAdminMapping) CreateMulti(items []*AssessmentResearcherAdminMapping) (err error) {
+	if len(items) == 0 {
+		return
+	}
+	err = global.DEFAULT_DB.CreateInBatches(items, utils.MultiAddNum).Error
+	return
+}
+
+func (m *AssessmentResearcherAdminMapping) Update(cols []string) (err error) {
+	err = global.DEFAULT_DB.Select(cols).Updates(m).Error
+	return
+}
+
+func (m *AssessmentResearcherAdminMapping) Remove() (err error) {
+	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
+	err = global.DEFAULT_DB.Exec(sql, m.Id).Error
+	return
+}
+
+func (m *AssessmentResearcherAdminMapping) MultiRemove(ids []int) (err error) {
+	if len(ids) == 0 {
+		return
+	}
+	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s IN (%s)`, m.TableName(), m.Cols().PrimaryId, utils.GetOrmInReplace(len(ids)))
+	err = global.DEFAULT_DB.Exec(sql, ids).Error
+	return
+}
+
+func (m *AssessmentResearcherAdminMapping) RemoveByCondition(condition string, pars []interface{}) (err error) {
+	if condition == "" {
+		return
+	}
+	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s`, m.TableName(), condition)
+	err = global.DEFAULT_DB.Exec(sql, pars).Error
+	return
+}
+
+func (m *AssessmentResearcherAdminMapping) GetItemById(primaryId int) (err error) {
+	sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
+	err = global.DEFAULT_DB.Raw(sql, primaryId).First(&m).Error
+	return
+}
+
+func (m *AssessmentResearcherAdminMapping) GetItemByCondition(condition string, pars []interface{}, orderRule string) (err error) {
+	order := ``
+	if orderRule != "" {
+		order = ` ORDER BY ` + orderRule
+	}
+	sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s %s LIMIT 1`, m.TableName(), condition, order)
+	err = global.DEFAULT_DB.Raw(sql, pars).First(&m).Error
+	return
+}
+
+func (m *AssessmentResearcherAdminMapping) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*AssessmentResearcherAdminMapping, err error) {
+	fields := strings.Join(fieldArr, ",")
+	if len(fieldArr) == 0 {
+		fields = `*`
+	}
+	order := ``
+	if orderRule != "" {
+		order = ` ORDER BY ` + orderRule
+	}
+	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&items).Error
+	return
+}

+ 105 - 0
models/assessment_researcher_variety_mapping.go

@@ -0,0 +1,105 @@
+package models
+
+import (
+	"eta/eta_api/global"
+	"eta/eta_api/utils"
+	"fmt"
+	"strings"
+)
+
+// AssessmentResearcherVarietyMapping 研究员考核-用户权限关系表
+type AssessmentResearcherVarietyMapping struct {
+	Id        int `gorm:"column:id;primaryKey;autoIncrement"`
+	AdminId   int `description:"系统用户ID"`
+	VarietyId int `description:"品种ID"`
+}
+
+func (m *AssessmentResearcherVarietyMapping) TableName() string {
+	return "assessment_research_variety_mapping"
+}
+
+type AssessmentResearcherVarietyMappingCols struct {
+	PrimaryId string
+	AdminId   string
+	VarietyId string
+}
+
+func (m *AssessmentResearcherVarietyMapping) Cols() AssessmentResearcherVarietyMappingCols {
+	return AssessmentResearcherVarietyMappingCols{
+		PrimaryId: "id",
+		AdminId:   "admin_id",
+		VarietyId: "variety_id",
+	}
+}
+
+func (m *AssessmentResearcherVarietyMapping) Create() (err error) {
+	err = global.DEFAULT_DB.Create(m).Error
+	return
+}
+
+func (m *AssessmentResearcherVarietyMapping) CreateMulti(items []*AssessmentResearcherVarietyMapping) (err error) {
+	if len(items) == 0 {
+		return
+	}
+	err = global.DEFAULT_DB.CreateInBatches(items, utils.MultiAddNum).Error
+	return
+}
+
+func (m *AssessmentResearcherVarietyMapping) Update(cols []string) (err error) {
+	err = global.DEFAULT_DB.Select(cols).Updates(m).Error
+	return
+}
+
+func (m *AssessmentResearcherVarietyMapping) Remove() (err error) {
+	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
+	err = global.DEFAULT_DB.Exec(sql, m.Id).Error
+	return
+}
+
+func (m *AssessmentResearcherVarietyMapping) MultiRemove(ids []int) (err error) {
+	if len(ids) == 0 {
+		return
+	}
+	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s IN (%s)`, m.TableName(), m.Cols().PrimaryId, utils.GetOrmInReplace(len(ids)))
+	err = global.DEFAULT_DB.Exec(sql, ids).Error
+	return
+}
+
+func (m *AssessmentResearcherVarietyMapping) RemoveByCondition(condition string, pars []interface{}) (err error) {
+	if condition == "" {
+		return
+	}
+	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s`, m.TableName(), condition)
+	err = global.DEFAULT_DB.Exec(sql, pars).Error
+	return
+}
+
+func (m *AssessmentResearcherVarietyMapping) GetItemById(primaryId int) (err error) {
+	sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
+	err = global.DEFAULT_DB.Raw(sql, primaryId).First(&m).Error
+	return
+}
+
+func (m *AssessmentResearcherVarietyMapping) GetItemByCondition(condition string, pars []interface{}, orderRule string) (err error) {
+	order := ``
+	if orderRule != "" {
+		order = ` ORDER BY ` + orderRule
+	}
+	sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s %s LIMIT 1`, m.TableName(), condition, order)
+	err = global.DEFAULT_DB.Raw(sql, pars).First(&m).Error
+	return
+}
+
+func (m *AssessmentResearcherVarietyMapping) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*AssessmentResearcherVarietyMapping, err error) {
+	fields := strings.Join(fieldArr, ",")
+	if len(fieldArr) == 0 {
+		fields = `*`
+	}
+	order := ``
+	if orderRule != "" {
+		order = ` ORDER BY ` + orderRule
+	}
+	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&items).Error
+	return
+}

+ 118 - 0
models/assessment_variety.go

@@ -0,0 +1,118 @@
+package models
+
+import (
+	"eta/eta_api/global"
+	"eta/eta_api/utils"
+	"fmt"
+	"strings"
+	"time"
+)
+
+// AssessmentVariety 研究员考核品种表
+type AssessmentVariety struct {
+	AssessmentVarietyId         int       `gorm:"column:assessment_variety_id;primaryKey;autoIncrement"`
+	VarietyName                 string    `description:"品种名称"`
+	VarietyCode                 string    `description:"品种编码"`
+	MonthlyFluctuationThreshold string    `description:"月度波动阈值"`
+	WeeklyFluctuationThreshold  string    `description:"周度波动阈值"`
+	CreateTime                  time.Time `description:"创建时间"`
+	ModifyTime                  time.Time `description:"修改时间"`
+}
+
+func (m *AssessmentVariety) TableName() string {
+	return "assessment_variety"
+}
+
+type AssessmentVarietyCols struct {
+	PrimaryId                   string
+	VarietyName                 string
+	VarietyCode                 string
+	MonthlyFluctuationThreshold string
+	WeeklyFluctuationThreshold  string
+	CreateTime                  string
+	ModifyTime                  string
+}
+
+func (m *AssessmentVariety) Cols() AssessmentVarietyCols {
+	return AssessmentVarietyCols{
+		PrimaryId:                   "assessment_variety_id",
+		VarietyName:                 "variety_name",
+		VarietyCode:                 "variety_code",
+		MonthlyFluctuationThreshold: "monthly_fluctuation_threshold",
+		WeeklyFluctuationThreshold:  "weekly_fluctuation_threshold",
+		CreateTime:                  "create_time",
+		ModifyTime:                  "modify_time",
+	}
+}
+
+func (m *AssessmentVariety) Create() (err error) {
+	err = global.DEFAULT_DB.Create(m).Error
+	return
+}
+
+func (m *AssessmentVariety) CreateMulti(items []*AssessmentVariety) (err error) {
+	if len(items) == 0 {
+		return
+	}
+	err = global.DEFAULT_DB.CreateInBatches(items, utils.MultiAddNum).Error
+	return
+}
+
+func (m *AssessmentVariety) Update(cols []string) (err error) {
+	err = global.DEFAULT_DB.Select(cols).Updates(m).Error
+	return
+}
+
+func (m *AssessmentVariety) Remove() (err error) {
+	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
+	err = global.DEFAULT_DB.Exec(sql, m.AssessmentVarietyId).Error
+	return
+}
+
+func (m *AssessmentVariety) MultiRemove(ids []int) (err error) {
+	if len(ids) == 0 {
+		return
+	}
+	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s IN (%s)`, m.TableName(), m.Cols().PrimaryId, utils.GetOrmInReplace(len(ids)))
+	err = global.DEFAULT_DB.Exec(sql, ids).Error
+	return
+}
+
+func (m *AssessmentVariety) RemoveByCondition(condition string, pars []interface{}) (err error) {
+	if condition == "" {
+		return
+	}
+	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s`, m.TableName(), condition)
+	err = global.DEFAULT_DB.Exec(sql, pars).Error
+	return
+}
+
+func (m *AssessmentVariety) GetItemById(primaryId int) (err error) {
+	sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
+	err = global.DEFAULT_DB.Raw(sql, primaryId).First(&m).Error
+	return
+}
+
+func (m *AssessmentVariety) GetItemByCondition(condition string, pars []interface{}, orderRule string) (err error) {
+	order := ``
+	if orderRule != "" {
+		order = ` ORDER BY ` + orderRule
+	}
+	sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s %s LIMIT 1`, m.TableName(), condition, order)
+	err = global.DEFAULT_DB.Raw(sql, pars).First(&m).Error
+	return
+}
+
+func (m *AssessmentVariety) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*AssessmentVariety, err error) {
+	fields := strings.Join(fieldArr, ",")
+	if len(fieldArr) == 0 {
+		fields = `*`
+	}
+	order := ``
+	if orderRule != "" {
+		order = ` ORDER BY ` + orderRule
+	}
+	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&items).Error
+	return
+}