update_sop_node_logic.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package sop_node
  2. import (
  3. "context"
  4. "wechat-api/ent"
  5. "wechat-api/ent/custom_types"
  6. "wechat-api/ent/sopnode"
  7. "wechat-api/internal/svc"
  8. "wechat-api/internal/types"
  9. "wechat-api/internal/utils/dberrorhandler"
  10. "github.com/suyuan32/simple-admin-common/msg/errormsg"
  11. "github.com/zeromicro/go-zero/core/logx"
  12. )
  13. type UpdateSopNodeLogic struct {
  14. ctx context.Context
  15. svcCtx *svc.ServiceContext
  16. logx.Logger
  17. }
  18. func NewUpdateSopNodeLogic(ctx context.Context, svcCtx *svc.ServiceContext) *UpdateSopNodeLogic {
  19. return &UpdateSopNodeLogic{
  20. ctx: ctx,
  21. svcCtx: svcCtx,
  22. Logger: logx.WithContext(ctx),
  23. }
  24. }
  25. func (l *UpdateSopNodeLogic) UpdateSopNode(req *types.SopNodeInfo) (*types.BaseMsgResp, error) {
  26. // 根据 id 关联查询处 task 信息,并判断 status 是否为 1
  27. data, err := l.svcCtx.DB.SopNode.Query().
  28. Where(sopnode.ID(*req.Id)).
  29. WithSopStage(func(query *ent.SopStageQuery) {
  30. query.WithSopTask()
  31. }).
  32. Only(l.ctx)
  33. if err != nil {
  34. return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)
  35. }
  36. task := data.Edges.SopStage.Edges.SopTask
  37. if task.Status != 1 {
  38. return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)
  39. }
  40. var actionMessage []custom_types.Action
  41. if len(req.ActionMessage) > 0 {
  42. actionMessage = make([]custom_types.Action, len(req.ActionMessage))
  43. for i, condition := range req.ActionMessage {
  44. actionMessage[i] = custom_types.Action{
  45. Type: condition.Type,
  46. Content: condition.Content,
  47. }
  48. }
  49. }
  50. err = l.svcCtx.DB.SopNode.UpdateOneID(*req.Id).
  51. SetNotNilStatus(req.Status).
  52. SetNotNilStageID(req.StageId).
  53. SetNotNilParentID(req.ParentId).
  54. SetNotNilName(req.Name).
  55. SetNotNilConditionType(req.ConditionType).
  56. SetNotNilConditionList(req.ConditionList).
  57. SetNotNilActionMessage(actionMessage).
  58. SetNotNilActionLabel(req.ActionLabel).
  59. Exec(l.ctx)
  60. if err != nil {
  61. return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)
  62. }
  63. return &types.BaseMsgResp{Msg: errormsg.UpdateSuccess}, nil
  64. }