正在显示
6 个修改的文件
包含
119 行增加
和
10 行删除
| @@ -29,6 +29,10 @@ service Core { | @@ -29,6 +29,10 @@ service Core { | ||
| 29 | @doc "部门-更新" | 29 | @doc "部门-更新" |
| 30 | @handler systemUpdate | 30 | @handler systemUpdate |
| 31 | put /system/department/:id (DepartmentUpdateRequest) returns (DepartmentGetResponse) | 31 | put /system/department/:id (DepartmentUpdateRequest) returns (DepartmentGetResponse) |
| 32 | + | ||
| 33 | + @doc "部门-删除" | ||
| 34 | + @handler systemDelete | ||
| 35 | + delete /system/department/:id (DepartmentGetRequest) returns (DepartmentGetResponse) | ||
| 32 | } | 36 | } |
| 33 | 37 | ||
| 34 | type ( | 38 | type ( |
| 1 | +package department | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/pkg/result" | ||
| 5 | + "net/http" | ||
| 6 | + | ||
| 7 | + "github.com/zeromicro/go-zero/rest/httpx" | ||
| 8 | + "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/logic/department" | ||
| 9 | + "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/svc" | ||
| 10 | + "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/types" | ||
| 11 | +) | ||
| 12 | + | ||
| 13 | +func SystemDeleteHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { | ||
| 14 | + return func(w http.ResponseWriter, r *http.Request) { | ||
| 15 | + var req types.DepartmentGetRequest | ||
| 16 | + if err := httpx.Parse(r, &req); err != nil { | ||
| 17 | + httpx.ErrorCtx(r.Context(), w, err) | ||
| 18 | + return | ||
| 19 | + } | ||
| 20 | + | ||
| 21 | + l := department.NewSystemDeleteLogic(r.Context(), svcCtx) | ||
| 22 | + resp, err := l.SystemDelete(&req) | ||
| 23 | + result.HttpResult(r, w, resp, err) | ||
| 24 | + } | ||
| 25 | +} |
| @@ -407,6 +407,11 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) { | @@ -407,6 +407,11 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) { | ||
| 407 | Path: "/system/department/:id", | 407 | Path: "/system/department/:id", |
| 408 | Handler: department.SystemUpdateHandler(serverCtx), | 408 | Handler: department.SystemUpdateHandler(serverCtx), |
| 409 | }, | 409 | }, |
| 410 | + { | ||
| 411 | + Method: http.MethodDelete, | ||
| 412 | + Path: "/system/department/:id", | ||
| 413 | + Handler: department.SystemDeleteHandler(serverCtx), | ||
| 414 | + }, | ||
| 410 | }, | 415 | }, |
| 411 | rest.WithJwt(serverCtx.Config.SystemAuth.AccessSecret), | 416 | rest.WithJwt(serverCtx.Config.SystemAuth.AccessSecret), |
| 412 | rest.WithPrefix("/v1"), | 417 | rest.WithPrefix("/v1"), |
| @@ -48,7 +48,7 @@ func (l *SystemAddLogic) SystemAdd(req *types.DepartmentAddRequest) (resp *types | @@ -48,7 +48,7 @@ func (l *SystemAddLogic) SystemAdd(req *types.DepartmentAddRequest) (resp *types | ||
| 48 | CompanyId: userToken.CompanyId, | 48 | CompanyId: userToken.CompanyId, |
| 49 | Name: req.Name, | 49 | Name: req.Name, |
| 50 | } | 50 | } |
| 51 | - err = transaction.UseTrans(l.ctx, conn.DB(), func(ctx context.Context, c transaction.Conn) error { | 51 | + err = transaction.UseTrans(l.ctx, conn.DB(), func(ctx context.Context, conn transaction.Conn) error { |
| 52 | _, err = l.svcCtx.DepartmentRepository.Insert(l.ctx, conn, insert) | 52 | _, err = l.svcCtx.DepartmentRepository.Insert(l.ctx, conn, insert) |
| 53 | if err != nil { | 53 | if err != nil { |
| 54 | return err | 54 | return err |
| 1 | +package department | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "context" | ||
| 5 | + "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/svc" | ||
| 6 | + "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/types" | ||
| 7 | + "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/interanl/pkg/db/transaction" | ||
| 8 | + "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/interanl/pkg/domain" | ||
| 9 | + | ||
| 10 | + "github.com/zeromicro/go-zero/core/logx" | ||
| 11 | +) | ||
| 12 | + | ||
| 13 | +type SystemDeleteLogic struct { | ||
| 14 | + logx.Logger | ||
| 15 | + ctx context.Context | ||
| 16 | + svcCtx *svc.ServiceContext | ||
| 17 | +} | ||
| 18 | + | ||
| 19 | +func NewSystemDeleteLogic(ctx context.Context, svcCtx *svc.ServiceContext) *SystemDeleteLogic { | ||
| 20 | + return &SystemDeleteLogic{ | ||
| 21 | + Logger: logx.WithContext(ctx), | ||
| 22 | + ctx: ctx, | ||
| 23 | + svcCtx: svcCtx, | ||
| 24 | + } | ||
| 25 | +} | ||
| 26 | + | ||
| 27 | +func (l *SystemDeleteLogic) SystemDelete(req *types.DepartmentGetRequest) (resp *types.DepartmentGetResponse, err error) { | ||
| 28 | + var conn = l.svcCtx.DefaultDBConn() | ||
| 29 | + | ||
| 30 | + one, err := l.svcCtx.DepartmentRepository.FindOne(l.ctx, conn, req.Id) | ||
| 31 | + if err != nil { | ||
| 32 | + return nil, err | ||
| 33 | + } | ||
| 34 | + | ||
| 35 | + // 获取公司下的所有用户 | ||
| 36 | + _, users, err := l.svcCtx.UserRepository.Find(l.ctx, conn, domain.NewQueryOptions(). | ||
| 37 | + WithFindOnly(). | ||
| 38 | + WithKV(" companyId", one.CompanyId)) | ||
| 39 | + if err != nil { | ||
| 40 | + return nil, err | ||
| 41 | + } | ||
| 42 | + | ||
| 43 | + err = transaction.UseTrans(l.ctx, conn.DB(), func(ctx context.Context, conn transaction.Conn) error { | ||
| 44 | + _, err = l.svcCtx.DepartmentRepository.Delete(l.ctx, conn, one) | ||
| 45 | + if err != nil { | ||
| 46 | + return err | ||
| 47 | + } | ||
| 48 | + | ||
| 49 | + // 移除用户中关联的分组 | ||
| 50 | + if len(users) > 0 { | ||
| 51 | + var findIndex = func(ids []int64, id int64) int { | ||
| 52 | + for i, _ := range ids { | ||
| 53 | + if ids[i] == id { | ||
| 54 | + return i | ||
| 55 | + } | ||
| 56 | + } | ||
| 57 | + return -1 | ||
| 58 | + } | ||
| 59 | + for i := range users { | ||
| 60 | + user := users[i] | ||
| 61 | + var targetIndex = findIndex(user.Departments, req.Id) | ||
| 62 | + if targetIndex != -1 { // 归属分组存在,则移除 | ||
| 63 | + user.Departments = append(user.Departments[:targetIndex], user.Departments[targetIndex+1:]...) // 移除分组ID | ||
| 64 | + _, err = l.svcCtx.UserRepository.UpdateWithVersion(l.ctx, conn, user) | ||
| 65 | + if err != nil { | ||
| 66 | + return err | ||
| 67 | + } | ||
| 68 | + } | ||
| 69 | + } | ||
| 70 | + } | ||
| 71 | + return nil | ||
| 72 | + }, true) | ||
| 73 | + | ||
| 74 | + return | ||
| 75 | +} |
| @@ -55,21 +55,21 @@ func (l *SystemUpdateLogic) SystemUpdate(req *types.DepartmentUpdateRequest) (re | @@ -55,21 +55,21 @@ func (l *SystemUpdateLogic) SystemUpdate(req *types.DepartmentUpdateRequest) (re | ||
| 55 | newIdMap[req.Ids[i]] = 0 | 55 | newIdMap[req.Ids[i]] = 0 |
| 56 | } | 56 | } |
| 57 | 57 | ||
| 58 | + // 获取公司下的所有用户 | ||
| 59 | + _, users, err := l.svcCtx.UserRepository.Find(l.ctx, conn, domain.NewQueryOptions(). | ||
| 60 | + WithFindOnly(). | ||
| 61 | + WithKV(" companyId", one.CompanyId)) | ||
| 62 | + if err != nil { | ||
| 63 | + return nil, err | ||
| 64 | + } | ||
| 65 | + | ||
| 58 | // 更新 | 66 | // 更新 |
| 59 | - err = transaction.UseTrans(l.ctx, conn.DB(), func(ctx context.Context, c transaction.Conn) error { | 67 | + err = transaction.UseTrans(l.ctx, conn.DB(), func(ctx context.Context, conn transaction.Conn) error { |
| 60 | _, err = l.svcCtx.DepartmentRepository.UpdateWithVersion(l.ctx, conn, one) | 68 | _, err = l.svcCtx.DepartmentRepository.UpdateWithVersion(l.ctx, conn, one) |
| 61 | if err != nil { | 69 | if err != nil { |
| 62 | return err | 70 | return err |
| 63 | } | 71 | } |
| 64 | 72 | ||
| 65 | - // 获取公司下的所有用户 | ||
| 66 | - _, users, err := l.svcCtx.UserRepository.Find(l.ctx, conn, domain.NewQueryOptions(). | ||
| 67 | - WithFindOnly(). | ||
| 68 | - WithKV(" companyId", one.CompanyId)) | ||
| 69 | - if err != nil { | ||
| 70 | - return err | ||
| 71 | - } | ||
| 72 | - | ||
| 73 | var findIndex = func(ids []int64, id int64) int { | 73 | var findIndex = func(ids []int64, id int64) int { |
| 74 | for i, _ := range ids { | 74 | for i, _ := range ids { |
| 75 | if ids[i] == id { | 75 | if ids[i] == id { |
-
请 注册 或 登录 后发表评论