mirror of
				https://gitee.com/dromara/mayfly-go
				synced 2025-11-04 08:20:25 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			125 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			125 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package api
 | 
						|
 | 
						|
import (
 | 
						|
	"mayfly-go/internal/flow/api/form"
 | 
						|
	"mayfly-go/internal/flow/api/vo"
 | 
						|
	"mayfly-go/internal/flow/application"
 | 
						|
	"mayfly-go/internal/flow/application/dto"
 | 
						|
	"mayfly-go/internal/flow/domain/entity"
 | 
						|
	"mayfly-go/internal/flow/imsg"
 | 
						|
	msgapp "mayfly-go/internal/msg/application"
 | 
						|
	msgentity "mayfly-go/internal/msg/domain/entity"
 | 
						|
	tagapp "mayfly-go/internal/tag/application"
 | 
						|
	tagentity "mayfly-go/internal/tag/domain/entity"
 | 
						|
	"mayfly-go/pkg/biz"
 | 
						|
	"mayfly-go/pkg/model"
 | 
						|
	"mayfly-go/pkg/req"
 | 
						|
	"mayfly-go/pkg/utils/collx"
 | 
						|
	"mayfly-go/pkg/utils/structx"
 | 
						|
	"strings"
 | 
						|
 | 
						|
	"github.com/spf13/cast"
 | 
						|
)
 | 
						|
 | 
						|
type Procdef struct {
 | 
						|
	procdefApp       application.Procdef  `inject:"T"`
 | 
						|
	tagTreeRelateApp tagapp.TagTreeRelate `inject:"T"`
 | 
						|
	msgTmplBizApp    msgapp.MsgTmplBiz    `inject:"T"`
 | 
						|
}
 | 
						|
 | 
						|
func (p *Procdef) ReqConfs() *req.Confs {
 | 
						|
	reqs := [...]*req.Conf{
 | 
						|
		req.NewGet("", p.GetProcdefPage),
 | 
						|
 | 
						|
		req.NewGet("/detail/:id", p.GetProcdefDetail),
 | 
						|
 | 
						|
		req.NewGet("/:resourceType/:resourceCode", p.GetProcdef),
 | 
						|
 | 
						|
		req.NewPost("", p.Save).Log(req.NewLogSaveI(imsg.LogProcdefSave)).RequiredPermissionCode("flow:procdef:save"),
 | 
						|
 | 
						|
		req.NewPost("/flowdef", p.SaveFlowDef).Log(req.NewLogSaveI(imsg.LogProcdefSave)).RequiredPermissionCode("flow:procdef:save"),
 | 
						|
 | 
						|
		req.NewGet("/flowdef/:id", p.GetFlowDef),
 | 
						|
 | 
						|
		req.NewDelete(":id", p.Delete).Log(req.NewLogSaveI(imsg.LogProcdefDelete)).RequiredPermissionCode("flow:procdef:del"),
 | 
						|
	}
 | 
						|
 | 
						|
	return req.NewConfs("/flow/procdefs", reqs[:]...)
 | 
						|
}
 | 
						|
 | 
						|
func (p *Procdef) GetProcdefPage(rc *req.Ctx) {
 | 
						|
	cond, page := req.BindQueryAndPage[*entity.Procdef](rc)
 | 
						|
 | 
						|
	res, err := p.procdefApp.GetPageList(cond, page)
 | 
						|
	biz.ErrIsNil(err)
 | 
						|
	resVo := model.PageResultConv[*entity.ProcdefPagePO, *vo.Procdef](res)
 | 
						|
 | 
						|
	p.tagTreeRelateApp.FillTagInfo(tagentity.TagRelateTypeFlowDef, collx.ArrayMap(resVo.List, func(mvo *vo.Procdef) tagentity.IRelateTag {
 | 
						|
		return mvo
 | 
						|
	})...)
 | 
						|
 | 
						|
	rc.ResData = resVo
 | 
						|
}
 | 
						|
 | 
						|
func (p *Procdef) GetProcdefDetail(rc *req.Ctx) {
 | 
						|
	def, err := p.procdefApp.GetById(cast.ToUint64(rc.PathParamInt("id")))
 | 
						|
	biz.ErrIsNil(err)
 | 
						|
	res := new(vo.Procdef)
 | 
						|
	biz.ErrIsNil(structx.Copy(res, def))
 | 
						|
 | 
						|
	p.tagTreeRelateApp.FillTagInfo(tagentity.TagRelateTypeFlowDef, res)
 | 
						|
 | 
						|
	bizMsgTmpl := &msgentity.MsgTmplBiz{
 | 
						|
		BizId:   res.Id,
 | 
						|
		BizType: application.FlowTaskNotifyBizKey,
 | 
						|
	}
 | 
						|
	if p.msgTmplBizApp.GetByCond(bizMsgTmpl) == nil {
 | 
						|
		res.MsgTmplId = &bizMsgTmpl.TmplId
 | 
						|
	}
 | 
						|
 | 
						|
	rc.ResData = res
 | 
						|
}
 | 
						|
 | 
						|
func (p *Procdef) GetProcdef(rc *req.Ctx) {
 | 
						|
	resourceType := rc.PathParamInt("resourceType")
 | 
						|
	resourceCode := rc.PathParam("resourceCode")
 | 
						|
	rc.ResData = p.procdefApp.GetProcdefByResource(rc.MetaCtx, int8(resourceType), resourceCode)
 | 
						|
}
 | 
						|
 | 
						|
func (a *Procdef) Save(rc *req.Ctx) {
 | 
						|
	form, procdef := req.BindJsonAndCopyTo[*form.Procdef, *entity.Procdef](rc)
 | 
						|
	rc.ReqParam = form
 | 
						|
	biz.ErrIsNil(a.procdefApp.SaveProcdef(rc.MetaCtx, &dto.SaveProcdef{
 | 
						|
		Procdef:   procdef,
 | 
						|
		MsgTmplId: form.MsgTmplId,
 | 
						|
		CodePaths: form.CodePaths,
 | 
						|
	}))
 | 
						|
}
 | 
						|
 | 
						|
func (a *Procdef) SaveFlowDef(rc *req.Ctx) {
 | 
						|
	form := req.BindJson[*form.ProcdefFlow](rc)
 | 
						|
	rc.ReqParam = form
 | 
						|
 | 
						|
	biz.ErrIsNil(a.procdefApp.SaveFlowDef(rc.MetaCtx, &dto.SaveFlowDef{
 | 
						|
		Id:      form.Id,
 | 
						|
		FlowDef: form.Flow,
 | 
						|
	}))
 | 
						|
}
 | 
						|
 | 
						|
func (a *Procdef) GetFlowDef(rc *req.Ctx) {
 | 
						|
	defId := rc.PathParamInt("id")
 | 
						|
	procdef, err := a.procdefApp.GetById(uint64(defId))
 | 
						|
	biz.ErrIsNil(err)
 | 
						|
	rc.ResData = procdef.GetFlowDef()
 | 
						|
}
 | 
						|
 | 
						|
func (p *Procdef) Delete(rc *req.Ctx) {
 | 
						|
	idsStr := rc.PathParam("id")
 | 
						|
	rc.ReqParam = idsStr
 | 
						|
	ids := strings.Split(idsStr, ",")
 | 
						|
 | 
						|
	for _, v := range ids {
 | 
						|
		biz.ErrIsNilAppendErr(p.procdefApp.DeleteProcdef(rc.MetaCtx, cast.ToUint64(v)), "delete error: %s")
 | 
						|
	}
 | 
						|
}
 |