// Copyright 2019 getensh.com. All rights reserved. // Use of this source code is governed by getensh.com. package cpackage import ( "context" "encoding/json" "fmt" dbmodel "property-common/model" pb_v1 "property-common/pb/v1" "time" "git.getensh.com/common/gopkgs/database" "git.getensh.com/common/gopkgs/logger" "go.uber.org/zap" "google.golang.org/grpc/status" "property-common/errors" ) func checkPackageApplicationSetParam(req *pb_v1.PackageApplicationSetRequest) error { switch { case req.Id == 0: return status.Error(10003, "id不能为空") } return nil } // func PackageApplicationSet(ctx context.Context, req *pb_v1.PackageApplicationSetRequest) (reply *pb_v1.PackageApplicationSetReply, err error) { reply = &pb_v1.PackageApplicationSetReply{} // 捕获各个task中的异常并返回给调用者 defer func() { if r := recover(); r != nil { err = fmt.Errorf("%+v", r) e := &status.Status{} if er := json.Unmarshal([]byte(err.Error()), e); er != nil { logger.Error("err", zap.String("system_err", err.Error()), zap.Stack("stacktrace")) } } }() // 参数检查 err = checkPackageApplicationSetParam(req) if err != nil { return nil, err } now := time.Now() where := map[string]interface{}{ "package_id": req.Id, } array := make([]dbmodel.TPackageApplication, len(req.ApplicationIds)) for i, v := range req.ApplicationIds { array[i].PackageId = req.Id array[i].ApplicationId = v array[i].CreatedAt = now array[i].UpdatedAt = now } db := database.DB().Begin() p := dbmodel.TPackageApplication{} err = p.Delete(db, where) if err != nil { db.Rollback() return nil, errors.DataBaseError } if len(array) > 0 { err = p.InsertMulti(db, &array) if err != nil { db.Rollback() return nil, errors.DataBaseError } } db.Commit() return reply, nil }