作者 郑周

1.模板导入数据

2.优化内容
@@ -2,7 +2,7 @@ package main @@ -2,7 +2,7 @@ package main
2 2
3 import ( 3 import (
4 "github.com/beego/beego/v2/server/web" 4 "github.com/beego/beego/v2/server/web"
5 - service "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/node_task" 5 + serviceTask "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/node_task"
6 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/log" 6 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/log"
7 _ "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/port/beego" 7 _ "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/port/beego"
8 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/port/consumer" 8 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/port/consumer"
@@ -24,7 +24,7 @@ func main() { @@ -24,7 +24,7 @@ func main() {
24 // 定时任务-间隔发送评估环节 24 // 定时任务-间隔发送评估环节
25 func startNodeTask() { 25 func startNodeTask() {
26 go func() { 26 go func() {
27 - nodeTaskService := service.NewNodeTaskService() 27 + nodeTaskService := serviceTask.NewNodeTaskService()
28 for { 28 for {
29 timer := time.NewTimer(time.Second * 60) 29 timer := time.NewTimer(time.Second * 60)
30 <-timer.C 30 <-timer.C
@@ -328,7 +328,7 @@ func (rs *EvaluationCycleService) Remove(in *command.DeleteCycleCommand) (interf @@ -328,7 +328,7 @@ func (rs *EvaluationCycleService) Remove(in *command.DeleteCycleCommand) (interf
328 } 328 }
329 329
330 func (rs *EvaluationCycleService) List(in *command.QueryCycleCommand) (interface{}, error) { 330 func (rs *EvaluationCycleService) List(in *command.QueryCycleCommand) (interface{}, error) {
331 - transactionContext, err := factory.StartTransaction() 331 + transactionContext, err := factory.ValidateStartTransaction(in)
332 if err != nil { 332 if err != nil {
333 return nil, err 333 return nil, err
334 } 334 }
@@ -301,7 +301,7 @@ func (rs *EvaluationProjectService) Remove(in *command.DeleteProjectCommand) (in @@ -301,7 +301,7 @@ func (rs *EvaluationProjectService) Remove(in *command.DeleteProjectCommand) (in
301 } 301 }
302 302
303 func (rs *EvaluationProjectService) List(in *command.QueryProjectCommand) (interface{}, error) { 303 func (rs *EvaluationProjectService) List(in *command.QueryProjectCommand) (interface{}, error) {
304 - transactionContext, err := factory.StartTransaction() 304 + transactionContext, err := factory.ValidateStartTransaction(in)
305 if err != nil { 305 if err != nil {
306 return nil, err 306 return nil, err
307 } 307 }
@@ -51,6 +51,7 @@ func (rs *EvaluationRuleService) Create(in *command.CreateRuleCommand) (interfac @@ -51,6 +51,7 @@ func (rs *EvaluationRuleService) Create(in *command.CreateRuleCommand) (interfac
51 CompanyId: in.CompanyId, 51 CompanyId: in.CompanyId,
52 CreatorId: in.CreatorId, 52 CreatorId: in.CreatorId,
53 Type: in.Type, 53 Type: in.Type,
  54 + SysType: domain.EvaluationSysTypeCommon,
54 Rating: in.Rating, 55 Rating: in.Rating,
55 Score: in.Score, 56 Score: in.Score,
56 } 57 }
@@ -147,6 +148,10 @@ func (rs *EvaluationRuleService) Remove(in *command.DeleteRuleCommand) (interfac @@ -147,6 +148,10 @@ func (rs *EvaluationRuleService) Remove(in *command.DeleteRuleCommand) (interfac
147 if err != nil { 148 if err != nil {
148 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 149 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
149 } 150 }
  151 + if rule.SysType == domain.EvaluationSysTypeSystem {
  152 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "系统默认规则不可删除")
  153 + }
  154 +
150 if _, err := ruleRepository.Remove(rule); err != nil { 155 if _, err := ruleRepository.Remove(rule); err != nil {
151 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 156 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
152 } 157 }
@@ -175,7 +180,7 @@ func (rs *EvaluationRuleService) Remove(in *command.DeleteRuleCommand) (interfac @@ -175,7 +180,7 @@ func (rs *EvaluationRuleService) Remove(in *command.DeleteRuleCommand) (interfac
175 //} 180 //}
176 181
177 func (rs *EvaluationRuleService) ListRelCreator(in *command.QueryRuleCommand) (interface{}, error) { 182 func (rs *EvaluationRuleService) ListRelCreator(in *command.QueryRuleCommand) (interface{}, error) {
178 - transactionContext, err := factory.StartTransaction() 183 + transactionContext, err := factory.ValidateStartTransaction(in)
179 if err != nil { 184 if err != nil {
180 return nil, err 185 return nil, err
181 } 186 }
@@ -192,12 +197,31 @@ func (rs *EvaluationRuleService) ListRelCreator(in *command.QueryRuleCommand) (i @@ -192,12 +197,31 @@ func (rs *EvaluationRuleService) ListRelCreator(in *command.QueryRuleCommand) (i
192 197
193 ras := make([]*adapter.RuleAdapter, 0) 198 ras := make([]*adapter.RuleAdapter, 0)
194 creatorIds := make([]int64, 0) 199 creatorIds := make([]int64, 0)
  200 + var havaSystemType = false
195 for i := range rules { 201 for i := range rules {
196 ra := &adapter.RuleAdapter{} 202 ra := &adapter.RuleAdapter{}
197 ra.EvaluationRule = rules[i] 203 ra.EvaluationRule = rules[i]
198 ras = append(ras, ra) 204 ras = append(ras, ra)
199 creatorIds = append(creatorIds, rules[i].CreatorId) 205 creatorIds = append(creatorIds, rules[i].CreatorId)
  206 +
  207 + if rules[i].SysType == domain.EvaluationSysTypeSystem {
  208 + havaSystemType = true
  209 + break
200 } 210 }
  211 + }
  212 +
  213 + // 如果不存在系统默认就生成一个
  214 + if !havaSystemType {
  215 + newRule := domain.GenerateSysRule(in.CompanyId)
  216 + rule, err := ruleRepository.Insert(newRule)
  217 + if err != nil {
  218 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  219 + }
  220 + ra := &adapter.RuleAdapter{}
  221 + ra.EvaluationRule = rule
  222 + ras = append(ras, ra)
  223 + }
  224 +
201 _, users, _ := userRepository.Find(map[string]interface{}{"ids": creatorIds, "limit": len(creatorIds)}) 225 _, users, _ := userRepository.Find(map[string]interface{}{"ids": creatorIds, "limit": len(creatorIds)})
202 userNameMap := map[int64]string{} 226 userNameMap := map[int64]string{}
203 if users != nil { 227 if users != nil {
@@ -214,7 +238,7 @@ func (rs *EvaluationRuleService) ListRelCreator(in *command.QueryRuleCommand) (i @@ -214,7 +238,7 @@ func (rs *EvaluationRuleService) ListRelCreator(in *command.QueryRuleCommand) (i
214 } 238 }
215 239
216 func (rs *EvaluationRuleService) ListCreator(in *command.QueryCreatorCommand) (interface{}, error) { 240 func (rs *EvaluationRuleService) ListCreator(in *command.QueryCreatorCommand) (interface{}, error) {
217 - transactionContext, err := factory.StartTransaction() 241 + transactionContext, err := factory.ValidateStartTransaction(in)
218 if err != nil { 242 if err != nil {
219 return nil, err 243 return nil, err
220 } 244 }
@@ -186,7 +186,7 @@ func (rs *EvaluationTemplateService) Remove(in *command.DeleteTemplateCommand) ( @@ -186,7 +186,7 @@ func (rs *EvaluationTemplateService) Remove(in *command.DeleteTemplateCommand) (
186 } 186 }
187 187
188 func (rs *EvaluationTemplateService) List(in *command.QueryTemplateCommand) (interface{}, error) { 188 func (rs *EvaluationTemplateService) List(in *command.QueryTemplateCommand) (interface{}, error) {
189 - transactionContext, err := factory.StartTransaction() 189 + transactionContext, err := factory.ValidateStartTransaction(in)
190 if err != nil { 190 if err != nil {
191 return nil, err 191 return nil, err
192 } 192 }
@@ -141,7 +141,7 @@ func (rs *RoleService) Remove(in *command.DeleteRoleCommand) (interface{}, error @@ -141,7 +141,7 @@ func (rs *RoleService) Remove(in *command.DeleteRoleCommand) (interface{}, error
141 } 141 }
142 142
143 func (rs *RoleService) ListForUser(in *command.QueryRoleUserCommand) (interface{}, error) { 143 func (rs *RoleService) ListForUser(in *command.QueryRoleUserCommand) (interface{}, error) {
144 - transactionContext, err := factory.StartTransaction() 144 + transactionContext, err := factory.ValidateStartTransaction(in)
145 if err != nil { 145 if err != nil {
146 return nil, err 146 return nil, err
147 } 147 }
@@ -95,7 +95,7 @@ func (rs *RoleUserService) Remove(in *command.UserRoleDeleteCommand) (interface{ @@ -95,7 +95,7 @@ func (rs *RoleUserService) Remove(in *command.UserRoleDeleteCommand) (interface{
95 } 95 }
96 96
97 func (rs *RoleUserService) ListRole(in *command.UserRoleQueryCommand) (interface{}, error) { 97 func (rs *RoleUserService) ListRole(in *command.UserRoleQueryCommand) (interface{}, error) {
98 - transactionContext, err := factory.StartTransaction() 98 + transactionContext, err := factory.ValidateStartTransaction(in)
99 if err != nil { 99 if err != nil {
100 return nil, err 100 return nil, err
101 } 101 }
@@ -9,6 +9,11 @@ const ( @@ -9,6 +9,11 @@ const (
9 EvaluationTypeScore int = 1 // 评估方式-评分 9 EvaluationTypeScore int = 1 // 评估方式-评分
10 ) 10 )
11 11
  12 +const (
  13 + EvaluationSysTypeCommon int = 0 // 系统类型-系统添加
  14 + EvaluationSysTypeSystem int = 1 // 系统类型-系统预制(不可删除、编辑)
  15 +)
  16 +
12 type Rating struct { 17 type Rating struct {
13 Levels []*RatingLevel `json:"levels" comment:"配置等级"` 18 Levels []*RatingLevel `json:"levels" comment:"配置等级"`
14 } 19 }
@@ -42,6 +47,7 @@ type EvaluationRule struct { @@ -42,6 +47,7 @@ type EvaluationRule struct {
42 CompanyId int64 `json:"companyId,string" comment:"公司ID"` 47 CompanyId int64 `json:"companyId,string" comment:"公司ID"`
43 CreatorId int64 `json:"creatorId,string" comment:"创建人ID"` 48 CreatorId int64 `json:"creatorId,string" comment:"创建人ID"`
44 Type int `json:"type" comment:"评估方式(0评级、1评分)"` 49 Type int `json:"type" comment:"评估方式(0评级、1评分)"`
  50 + SysType int `json:"sysType" comment:"系统类型(0普通、1系统固定)" pg:",use_zero"`
45 Rating Rating `json:"rating" comment:"评级"` 51 Rating Rating `json:"rating" comment:"评级"`
46 Score Score `json:"score" comment:"评分"` 52 Score Score `json:"score" comment:"评分"`
47 CreatedAt time.Time `json:"createdAt" comment:"创建时间"` 53 CreatedAt time.Time `json:"createdAt" comment:"创建时间"`
@@ -49,6 +55,58 @@ type EvaluationRule struct { @@ -49,6 +55,58 @@ type EvaluationRule struct {
49 DeletedAt *time.Time `json:"deletedAt" comment:"删除时间"` 55 DeletedAt *time.Time `json:"deletedAt" comment:"删除时间"`
50 } 56 }
51 57
  58 +// GenerateSysRule 当前公司下的生成默认规则
  59 +func GenerateSysRule(companyId int64) *EvaluationRule {
  60 + levels := make([]*RatingLevel, 0)
  61 + levels = append(levels, &RatingLevel{
  62 + Code: "S",
  63 + Name: "SS",
  64 + Color: 1,
  65 + QuantizedValue: 90,
  66 + })
  67 + levels = append(levels, &RatingLevel{
  68 + Code: "A",
  69 + Name: "AA",
  70 + Color: 2,
  71 + QuantizedValue: 80,
  72 + })
  73 + levels = append(levels, &RatingLevel{
  74 + Code: "B",
  75 + Name: "BB",
  76 + Color: 3,
  77 + QuantizedValue: 70,
  78 + })
  79 +
  80 + levels = append(levels, &RatingLevel{
  81 + Code: "C",
  82 + Name: "CC",
  83 + Color: 4,
  84 + QuantizedValue: 60,
  85 + })
  86 +
  87 + levels = append(levels, &RatingLevel{
  88 + Code: "D",
  89 + Name: "DD",
  90 + Color: 5,
  91 + QuantizedValue: 50,
  92 + })
  93 +
  94 + newRule := &EvaluationRule{
  95 + Id: 0,
  96 + Name: "评级(默认)",
  97 + Remark: "",
  98 + CompanyId: companyId,
  99 + CreatorId: 0,
  100 + Type: EvaluationTypeRating,
  101 + SysType: EvaluationSysTypeSystem,
  102 + Rating: Rating{
  103 + Levels: levels,
  104 + },
  105 + Score: Score{},
  106 + }
  107 + return newRule
  108 +}
  109 +
52 type EvaluationRuleRepository interface { 110 type EvaluationRuleRepository interface {
53 Insert(rule *EvaluationRule) (*EvaluationRule, error) 111 Insert(rule *EvaluationRule) (*EvaluationRule, error)
54 Remove(rule *EvaluationRule) (*EvaluationRule, error) 112 Remove(rule *EvaluationRule) (*EvaluationRule, error)
@@ -13,6 +13,7 @@ type EvaluationRule struct { @@ -13,6 +13,7 @@ type EvaluationRule struct {
13 CompanyId int64 `comment:"公司ID"` 13 CompanyId int64 `comment:"公司ID"`
14 CreatorId int64 `comment:"创建人ID"` 14 CreatorId int64 `comment:"创建人ID"`
15 Type int `comment:"评估方式(0评级、1评分)" pg:",use_zero"` 15 Type int `comment:"评估方式(0评级、1评分)" pg:",use_zero"`
  16 + SysType int `comment:"系统类型(0普通、1系统固定)" pg:",use_zero"`
16 Rating domain.Rating `comment:"评级"` 17 Rating domain.Rating `comment:"评级"`
17 Score domain.Score `comment:"评分"` 18 Score domain.Score `comment:"评分"`
18 CreatedAt time.Time `comment:"创建时间"` 19 CreatedAt time.Time `comment:"创建时间"`
@@ -28,6 +28,7 @@ func (repo *EvaluationRuleRepository) TransformToDomain(m *models.EvaluationRule @@ -28,6 +28,7 @@ func (repo *EvaluationRuleRepository) TransformToDomain(m *models.EvaluationRule
28 CompanyId: m.CompanyId, 28 CompanyId: m.CompanyId,
29 CreatorId: m.CreatorId, 29 CreatorId: m.CreatorId,
30 Type: m.Type, 30 Type: m.Type,
  31 + SysType: m.SysType,
31 Rating: m.Rating, 32 Rating: m.Rating,
32 Score: m.Score, 33 Score: m.Score,
33 CreatedAt: m.CreatedAt, 34 CreatedAt: m.CreatedAt,
@@ -44,6 +45,7 @@ func (repo *EvaluationRuleRepository) TransformToModel(d *domain.EvaluationRule) @@ -44,6 +45,7 @@ func (repo *EvaluationRuleRepository) TransformToModel(d *domain.EvaluationRule)
44 CompanyId: d.CompanyId, 45 CompanyId: d.CompanyId,
45 CreatorId: d.CreatorId, 46 CreatorId: d.CreatorId,
46 Type: d.Type, 47 Type: d.Type,
  48 + SysType: d.SysType,
47 Rating: d.Rating, 49 Rating: d.Rating,
48 Score: d.Score, 50 Score: d.Score,
49 CreatedAt: d.CreatedAt, 51 CreatedAt: d.CreatedAt,
@@ -143,6 +145,10 @@ func (repo *EvaluationRuleRepository) Find(queryOptions map[string]interface{}) @@ -143,6 +145,10 @@ func (repo *EvaluationRuleRepository) Find(queryOptions map[string]interface{})
143 query.Where("type = ?", v) 145 query.Where("type = ?", v)
144 } 146 }
145 147
  148 + if v, ok := queryOptions["sysType"]; ok && v.(int) >= 0 {
  149 + query.Where("sys_type = ?", v)
  150 + }
  151 +
146 if v, ok := queryOptions["limit"].(int64); ok { 152 if v, ok := queryOptions["limit"].(int64); ok {
147 query.Limit(int(v)) 153 query.Limit(int(v))
148 } 154 }
@@ -2,9 +2,14 @@ package controllers @@ -2,9 +2,14 @@ package controllers
2 2
3 import ( 3 import (
4 "github.com/linmadan/egglib-go/core/application" 4 "github.com/linmadan/egglib-go/core/application"
  5 + "github.com/linmadan/egglib-go/utils/tool_funs"
5 "github.com/linmadan/egglib-go/web/beego" 6 "github.com/linmadan/egglib-go/web/beego"
6 "github.com/xuri/excelize/v2" 7 "github.com/xuri/excelize/v2"
  8 + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/factory"
7 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain" 9 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain"
  10 + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/port/beego/middlewares"
  11 + "strconv"
  12 + "strings"
8 ) 13 )
9 14
10 type ImportController struct { 15 type ImportController struct {
@@ -37,8 +42,82 @@ func (controller *ImportController) Import() { @@ -37,8 +42,82 @@ func (controller *ImportController) Import() {
37 switch formType { 42 switch formType {
38 case "PerformanceDimension": 43 case "PerformanceDimension":
39 dimensions, _ := domain.LoadPerformanceDimensions(rows) 44 dimensions, _ := domain.LoadPerformanceDimensions(rows)
40 - controller.Response(dimensions, nil) 45 + list := controller.parseTemplateNodeContent(dimensions)
  46 + controller.Response(tool_funs.SimpleWrapGridMap(int64(len(list)), list), nil)
41 default: 47 default:
42 controller.Response(nil, application.ThrowError(application.ARG_ERROR, "请确认您导入的表单类型")) 48 controller.Response(nil, application.ThrowError(application.ARG_ERROR, "请确认您导入的表单类型"))
43 } 49 }
44 } 50 }
  51 +
  52 +func (controller *ImportController) parseTemplateNodeContent(data []*domain.PerformanceDimension) []*domain.NodeContent {
  53 + nodeContents := make([]*domain.NodeContent, 0)
  54 +
  55 + transactionContext, err := factory.StartTransaction()
  56 + if err != nil {
  57 + return nodeContents
  58 + }
  59 + defer func() {
  60 + transactionContext.RollbackTransaction()
  61 + }()
  62 + // 获取当前公司下的默认规则
  63 + ua := middlewares.GetUser(controller.Ctx)
  64 + ruleRepository := factory.CreateEvaluationRuleRepository(map[string]interface{}{"transactionContext": transactionContext})
  65 + _, rules, err := ruleRepository.Find(map[string]interface{}{"companyId": ua.CompanyId, "sysType": domain.EvaluationSysTypeSystem, "limit": 1})
  66 + if err != nil {
  67 + return nodeContents
  68 + }
  69 + var ruleId = int64(0)
  70 + if len(rules) == 0 {
  71 + newRule := domain.GenerateSysRule(ua.CompanyId) // 生成一个系统默认规则
  72 + if rule, err := ruleRepository.Insert(newRule); err != nil {
  73 + return nodeContents
  74 + } else {
  75 + ruleId = rule.Id
  76 + }
  77 + if err := transactionContext.CommitTransaction(); err != nil {
  78 + return nodeContents
  79 + }
  80 + } else {
  81 + ruleId = rules[0].Id
  82 + }
  83 +
  84 + for i := range data {
  85 + dimension := data[i]
  86 + for i2 := range dimension.PerformanceModule {
  87 + nc := &domain.NodeContent{}
  88 + nc.Category = dimension.Name // 类别
  89 +
  90 + module := dimension.PerformanceModule[i2]
  91 + nc.Name = module.ModuleName // 名称
  92 + nc.RuleId = ruleId // 规则ID
  93 + sIndex := strings.Index(module.Weight, "%") // 权重
  94 + if sIndex != -1 {
  95 + iWeight, _ := strconv.Atoi(module.Weight[:sIndex])
  96 + nc.Weight = iWeight
  97 + } else {
  98 + nc.Weight = 0
  99 + }
  100 + nc.PromptTitle = "" // 提示项标题
  101 + nc.PromptText = module.Standard // 提示项内容
  102 + nc.EntryItems = make([]*domain.EntryItem, 0) // 输入项
  103 + for i3 := range module.Target {
  104 + target := module.Target[i3]
  105 + nc.EntryItems = append(nc.EntryItems, &domain.EntryItem{
  106 + Title: target.Task, // 输入型标题
  107 + HintText: "", // 输入项提示文本
  108 + })
  109 + }
  110 + // 没有任何输入项时,默认1个
  111 + if len(nc.EntryItems) == 0 {
  112 + nc.EntryItems = append(nc.EntryItems, &domain.EntryItem{
  113 + Title: "填写反馈",
  114 + HintText: "",
  115 + })
  116 + }
  117 +
  118 + nodeContents = append(nodeContents, nc)
  119 + }
  120 + }
  121 +
  122 + return nodeContents
  123 +}
  1 +package controllers
  2 +
  3 +import (
  4 + "io/ioutil"
  5 +
  6 + "github.com/linmadan/egglib-go/core/application"
  7 + "github.com/linmadan/egglib-go/web/beego"
  8 +)
  9 +
  10 +type TemplateImplController struct {
  11 + beego.BaseController
  12 +}
  13 +
  14 +func (controller *TemplateImplController) TemplateQuestion() {
  15 + fileBytes, err := ioutil.ReadFile("./templates/tpl_template_question.xlsx")
  16 + if err != nil {
  17 + controller.Response(nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "未读取到模板文件"))
  18 + return
  19 + }
  20 + controller.WriteExcel(fileBytes, "评估导入模板.xlsx")
  21 +}
  22 +
  23 +func (controller *TemplateImplController) WriteExcel(fileBytes []byte, fileName string) {
  24 + controller.Ctx.Output.Header("Content-Disposition", "attachment;filename="+fileName)
  25 + controller.Ctx.Output.Header("Content-Description", "FileTransfer")
  26 + controller.Ctx.Output.Header("Content-Type", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
  27 + controller.Ctx.Output.Header("Content-Transfer-Encoding", "binary")
  28 + controller.Ctx.Output.Header("Expires", "0")
  29 + _, _ = controller.Ctx.ResponseWriter.Write(fileBytes)
  30 +}
  31 +
  32 +func (controller *TemplateImplController) WriteBinary(fileBytes []byte, fileName string) {
  33 + controller.Ctx.Output.Header("Content-Disposition", "attachment;filename="+fileName)
  34 + controller.Ctx.Output.Header("Content-Description", "FileTransfer")
  35 + controller.Ctx.Output.Header("Content-Type", "application/octet-stream")
  36 + controller.Ctx.Output.Header("Content-Transfer-Encoding", "binary")
  37 + controller.Ctx.Output.Header("Expires", "0")
  38 + _, _ = controller.Ctx.ResponseWriter.Write(fileBytes)
  39 +}
  1 +package routers
  2 +
  3 +import (
  4 + "github.com/beego/beego/v2/server/web"
  5 + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/port/beego/controllers"
  6 +)
  7 +
  8 +func init() {
  9 + web.Router("/templates/tpl_template_question.xlsx", &controllers.TemplateImplController{}, "Get:TemplateQuestion")
  10 +}
不能预览此文件类型