go一个UiSimpleQR的应用案例
·
UiSimpleQR 本文介绍了两个Go语言结构体UiStudentTrainFlow和UiStudentTrainFlowcancel,用于处理学生训练流转和取消的相关操作。UiStudentTrainFlow包含查询转训历史的功能,通过TrainFlowQuery结构体定义查询条件,使用TransDto存储转训状态、教练信息等数据。UiStudentTrainFlowcancel则处理取消训练流程,通过CancelDto存储取消相关信息。两个结构体都实现了分页查询功能,支持按学生ID和训练类型筛选,并默认按创建时间降序排序。
type UiStudentTrainFlow struct {
basedto.BaseEntity `json:"-"`
uiframe.UiSimpleQR[trainflow.TrainFlowQuery, *uitraintype.StudentTrainFlow, *trainflow.TransDto]
}
type TrainFlowQuery struct {
basedto.BaseEntitySingle
// 学生ID
StudentId int64 `json:"studentId,string"`
// 试训类型
TrialTrainType apitype.TrainType `json:"trialTrainType"`
User *model.User `json:"-"`
}
type StudentTrainFlowDto struct {
// basedto.BaseEntity
StudentTrainFlow
}
type TransDto struct {
basedto.BaseEntity
// 试训状态
TrialStatus int `json:"trialStatus"`
// 提交时间
CommitAt time.Time `json:"commitAt"`
// 审核时间
ReviewAt time.Time `json:"reviewAt"`
// 转出教练ID
TrialCoachFrom int64 `json:"fromId,string"`
// 转收教练ID
TrialCoachAccept int64 `json:"toId,string"`
// 试训类型
TrialTrainType int `json:"trialTrainType"`
//转出教练姓名
FromName string `json:"fromName"`
//转收教练姓名
ToName string `json:"toName"`
// 提交意见
CommitOpinion string `json:"commitOpinion"`
// 审核意见
ReviewOpinion string `json:"reviewOpinion"`
}
表结构
type TrialTrain struct {
TrialReservation
// 转训类型(请求)
TransOption string `json:"transOption,omitempty" gorm:"-"` //all new self
// 转训状态
TransStatus int32 `json:"transStatus" gorm:"column:trans_status;type:integer"`
// 试训转出 0 未转 >0 已转
TrialCoachFrom int64 `json:"trialCoachFrom,string" gorm:"default:0"`
// 转出方姓名
TrialCoachFromName string `json:"trialCoachFromName" gorm:"-"`
// 转移接收者
TrialCoachAccept int64 `json:"trialCoachAccept,string" gorm:"default:0"`
// 转出接收方同意
TrialCoachAgree bool `json:"trialCoachAgree"`
// 试训状态 T 100 //未训 200 //已训 201 取消
TrialStatus int32 `json:"trialStatus" gorm:"column:trial_status;type:integer"`
// 试训状态名称
TrialStatusName string `json:"trialStatusName" gorm:"-"`
// 训练状态
TrialPassed bool `json:"trialPassed" gorm:"column:trial_passed;type:boolean;default:false;not null"`
// 通过时间
PassedAt time.Time `json:"passedAt" gorm:"column:passed_at;type:timestamp with time zone"`
// 是否来自转训
FromOther bool `json:"fromOther" gorm:"column:from_other;type:boolean;default:false;"`
// 提交时间
SubmitAt time.Time `json:"submitAt" gorm:"column:submit_at;type:timestamp with time zone"`
// 提交意见
SubmitOpinion string `json:"submitOpinion" gorm:"column:submit_opinion;type:character varying;default:'';"`
//审核时间
ReviewAt time.Time `json:"reviewAt" gorm:"column:review_at;type:timestamp with time zone"`
// 审核意见
ReviewOpinion string `json:"reviewOpinion" gorm:"column:review_opinion;type:character varying;default:'';"`
// 训练计划名称
TrainPlanName string `json:"trainPlanName"`
// 训练号
TrainPlanNo string `json:"trainPlanNo"`
}

type UiStudentTrainFlow struct {
basedto.BaseEntity `json:"-"`
uiframe.UiSimpleQR[trainflow.TrainFlowQuery, *uitraintype.StudentTrainFlow, *trainflow.TransDto]
}
func NewUiStudentTrainFlow() *UiStudentTrainFlow {
var req = &UiStudentTrainFlow{}
req.InitDao()
req.initQuery()
return req
}
func (self *UiStudentTrainFlow) initQuery() *UiStudentTrainFlow {
self.SetBeforeQuery(func() {
self.BuildGeneralParams(self.PageDbRequest)
if self.Query.StudentId > 0 {
self.DbEq("student_id", self.Query.StudentId)
}
if self.Query.TrialTrainType > 0 {
self.DbEq("trial_train_type", self.Query.TrialTrainType)
}
self.DbEq("flow_type", apiconst.TransTransFlowType)
})
return self
}
func (self *UiStudentTrainFlow) UiQueryTransFlow() *pagemodel.PageResult[*trainflow.TransDto] {
var uiret = self.List()
if uiret.ExistRecord() {
for _, item := range uiret.Data {
userservice.FindBeanUserService().CacheFillName(&item.FromName, item.TrialCoachFrom)
userservice.FindBeanUserService().CacheFillName(&item.ToName, item.TrialCoachAccept)
}
}
return uiret
}
// 查询Query
func (self *UiStudentTrainFlow) List() *pagemodel.PageResult[*trainflow.TransDto] {
self.BuildRequest().BeforeQuery()()
if self.OrderBys == "" {
self.OrderByDesc("created_at")
}
return self.QueryModelR()
}
func (self *UiSimpleR[E, R]) QueryModelR(pagesize ...int) *pagemodel.PageResult[R] {
var ret = self.QueryModel(pagesize...)
return self.PageTo(ret)
}
以上查询转训历史
下面是取消的流水
package traintype
import (
"gitea.super-study.com/ys-study/gotrain/beapi/db/apiconst"
"gitea.super-study.com/ys-study/gotrain/beapi/db/dbentity/stuentity/uitraintype"
"gitea.super-study.com/ys-study/gotrain/beapi/dbopc/opcdto/trainflow"
"gitea.super-study.com/ys-study/gotrain/beapi/gotool/dbframe/uiframe"
"gitee.com/gowebframe3/webframe.git/goconfig/base/basedto"
"gitee.com/gowebframe3/webframe.git/goweb/pagemodel"
)
type UiStudentTrainFlowcancel struct {
basedto.BaseEntity `json:"-"`
uiframe.UiSimpleQR[trainflow.TrainFlowQuery, *uitraintype.StudentTrainFlow, *trainflow.CancelDto]
}
func NewUiStudentTrainFlowcancel() *UiStudentTrainFlowcancel {
var req = &UiStudentTrainFlowcancel{}
req.InitDao()
req.initQuery()
return req
}
func (self *UiStudentTrainFlowcancel) initQuery() *UiStudentTrainFlowcancel {
self.SetBeforeQuery(func() {
self.BuildGeneralParams(self.PageDbRequest)
if self.Query.StudentId > 0 {
self.DbEq("student_id", self.Query.StudentId)
}
if self.Query.TrialTrainType > 0 {
self.DbEq("trial_train_type", self.Query.TrialTrainType)
}
self.DbIn("flow_type", apiconst.TransCancelFlowType, apiconst.TransCancelPlanType)
})
return self
}
func (self *UiStudentTrainFlowcancel) UiQueryCancelFlow() *pagemodel.PageResult[*trainflow.CancelDto] {
return self.List()
}
// 查询Query
func (self *UiStudentTrainFlowcancel) List() *pagemodel.PageResult[*trainflow.CancelDto] {
self.BuildRequest().BeforeQuery()()
if self.OrderBys == "" {
self.OrderByDesc("created_at")
}
return self.QueryModelR()
}
代码通用整洁!
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)