ferry/apis/process/process.go

245 lines
6.0 KiB
Go
Raw Permalink Normal View History

2020-07-15 01:40:56 +08:00
package process
2020-07-16 01:22:01 +08:00
import (
"errors"
"ferry/global/orm"
"ferry/models/process"
2020-07-16 01:22:01 +08:00
process2 "ferry/models/process"
"ferry/pkg/pagination"
"ferry/tools"
"ferry/tools/app"
"fmt"
"github.com/gin-gonic/gin"
)
/*
@Author : lanyulei
*/
// 流程列表
func ProcessList(c *gin.Context) {
var (
err error
processList []*struct {
process2.Info
CreateUser string `json:"create_user"`
CreateName string `json:"create_name"`
ClassifyName string `json:"classify_name"`
}
)
SearchParams := map[string]map[string]interface{}{
"like": pagination.RequestParams(c),
}
db := orm.Eloquent.Model(&process2.Info{}).
Joins("left join sys_user on sys_user.user_id = p_process_info.creator").
Joins("left join p_process_classify on p_process_classify.id = p_process_info.classify").
Select("p_process_info.id, p_process_info.create_time, p_process_info.update_time, p_process_info.name, p_process_info.creator, p_process_classify.name as classify_name, sys_user.username as create_user, sys_user.nick_name as create_name")
result, err := pagination.Paging(&pagination.Param{
C: c,
DB: db,
}, &processList, SearchParams, "p_process_info")
if err != nil {
app.Error(c, -1, err, fmt.Sprintf("查询流程模版失败,%v", err.Error()))
return
}
app.OK(c, result, "查询流程列表成功")
}
// 创建流程
func CreateProcess(c *gin.Context) {
var (
err error
processValue process2.Info
processCount int
)
err = c.ShouldBind(&processValue)
if err != nil {
app.Error(c, -1, err, fmt.Sprintf("参数绑定失败,%v", err.Error()))
return
}
// 确定流程名称是否重复
err = orm.Eloquent.Model(&processValue).
Where("name = ?", processValue.Name).
Count(&processCount).Error
if err != nil {
app.Error(c, -1, err, fmt.Sprintf("流程信息查询失败,%v", err.Error()))
return
}
if processCount > 0 {
app.Error(c, -1, errors.New("流程名称重复"), "")
return
}
processValue.Creator = tools.GetUserId(c)
err = orm.Eloquent.Create(&processValue).Error
if err != nil {
app.Error(c, -1, err, fmt.Sprintf("创建流程失败,%v", err.Error()))
return
}
app.OK(c, processValue, "流程创建成功")
}
// 更新流程
func UpdateProcess(c *gin.Context) {
var (
err error
processValue process2.Info
)
err = c.ShouldBind(&processValue)
if err != nil {
app.Error(c, -1, err, "")
return
}
err = orm.Eloquent.Model(&process2.Info{}).
Where("id = ?", processValue.Id).
Updates(map[string]interface{}{
"name": processValue.Name,
"structure": processValue.Structure,
"tpls": processValue.Tpls,
"classify": processValue.Classify,
"task": processValue.Task,
2020-07-25 14:20:15 +08:00
"notice": processValue.Notice,
"icon": processValue.Icon,
"remarks": processValue.Remarks,
2020-07-16 01:22:01 +08:00
}).Error
if err != nil {
app.Error(c, -1, err, fmt.Sprintf("更新流程信息失败,%v", err.Error()))
return
}
app.OK(c, processValue, "更新流程信息成功")
}
// 删除流程
2020-07-16 01:50:25 +08:00
func DeleteProcess(c *gin.Context) {
processId := c.DefaultQuery("processId", "")
if processId == "" {
app.Error(c, -1, errors.New("参数不正确请确定参数processId是否传递"), "")
return
}
err := orm.Eloquent.Delete(process2.Info{}, "id = ?", processId).Error
if err != nil {
app.Error(c, -1, err, fmt.Sprintf("删除流程失败, %v", err.Error()))
return
}
app.OK(c, "", "删除流程成功")
}
2020-07-16 01:22:01 +08:00
// 流程详情
func ProcessDetails(c *gin.Context) {
processId := c.DefaultQuery("processId", "")
if processId == "" {
app.Error(c, -1, errors.New("参数不正确请确定参数processId是否传递"), "")
return
}
var processValue process2.Info
err := orm.Eloquent.Model(&processValue).
Where("id = ?", processId).
Find(&processValue).Error
if err != nil {
app.Error(c, -1, err, fmt.Sprintf("查询流程详情失败, %v", err.Error()))
return
}
app.OK(c, processValue, "查询流程详情成功")
}
// 分类流程列表
2020-07-17 01:20:25 +08:00
func ClassifyProcessList(c *gin.Context) {
var (
err error
classifyIdList []int
classifyList []*struct {
process2.Classify
ProcessList []*process2.Info `json:"process_list"`
}
)
processName := c.DefaultQuery("name", "")
if processName == "" {
err = orm.Eloquent.Model(&process2.Classify{}).Find(&classifyList).Error
if err != nil {
app.Error(c, -1, err, fmt.Sprintf("获取分类列表失败,%v", err.Error()))
return
}
} else {
err = orm.Eloquent.Model(&process2.Info{}).
Where("name LIKE ?", fmt.Sprintf("%%%v%%", processName)).
Pluck("distinct classify", &classifyIdList).Error
if err != nil {
app.Error(c, -1, err, fmt.Sprintf("获取分类失败,%v", err.Error()))
return
}
err = orm.Eloquent.Model(&process2.Classify{}).
Where("id in (?)", classifyIdList).
Find(&classifyList).Error
if err != nil {
app.Error(c, -1, err, fmt.Sprintf("获取分类失败,%v", err.Error()))
return
}
}
for _, item := range classifyList {
err = orm.Eloquent.Model(&process2.Info{}).
Where("classify = ? and name LIKE ?", item.Id, fmt.Sprintf("%%%v%%", processName)).
Select("id, create_time, update_time, name, icon, remarks").
2020-07-17 01:20:25 +08:00
Find(&item.ProcessList).Error
if err != nil {
app.Error(c, -1, err, fmt.Sprintf("获取流程失败,%v", err.Error()))
return
}
}
app.OK(c, classifyList, "成功获取数据")
}
// 克隆流程
func CloneProcess(c *gin.Context) {
var (
err error
id string
info process.Info
)
id = c.Param("id")
err = orm.Eloquent.Find(&info, id).Error
if err != nil {
app.Error(c, -1, err, "查询流程数据失败")
return
}
err = orm.Eloquent.Create(&process.Info{
Name: info.Name + "-copy",
Icon: info.Icon,
Structure: info.Structure,
Classify: info.Classify,
Tpls: info.Tpls,
Task: info.Task,
SubmitCount: info.SubmitCount,
Creator: tools.GetUserId(c),
Notice: info.Notice,
Remarks: info.Remarks,
}).Error
if err != nil {
app.Error(c, -1, err, "克隆流程失败")
return
}
app.OK(c, nil, "")
}