forked from ebhomengo/niki
				
			minor change
This commit is contained in:
		
							parent
							
								
									430bd9a95c
								
							
						
					
					
						commit
						bc9a625c03
					
				| 
						 | 
					@ -58,5 +58,5 @@ func InitAdminKindBoxService(db *mysql.DB) adminkindboxservice.Service {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func InitAdminKindBoxReqService(db *mysql.DB) adminkindboxreqservice.Service {
 | 
					func InitAdminKindBoxReqService(db *mysql.DB) adminkindboxreqservice.Service {
 | 
				
			||||||
	return adminkindboxreqservice.New(InitBenefactorKindBoxReqDB(db), InitAdminKindBoxService(db))
 | 
						return adminkindboxreqservice.New(InitBenefactorKindBoxReqDB(db))
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,12 +1 @@
 | 
				
			||||||
package adminkindboxparam
 | 
					package adminkindboxparam
 | 
				
			||||||
 | 
					 | 
				
			||||||
import entity "git.gocasts.ir/ebhomengo/niki/entity"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
type KindBoxAddAfterAcceptingReqRequest struct {
 | 
					 | 
				
			||||||
	BenefactorID uint
 | 
					 | 
				
			||||||
	KindBoxReqID uint
 | 
					 | 
				
			||||||
	Type         entity.KindBoxType
 | 
					 | 
				
			||||||
	Count        uint
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
type KindBoxAddAfterAcceptingReqResponse struct{}
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,8 @@
 | 
				
			||||||
package mysqlkindboxreq
 | 
					package mysqlkindboxreq
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
 | 
						"database/sql"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"git.gocasts.ir/ebhomengo/niki/entity"
 | 
						"git.gocasts.ir/ebhomengo/niki/entity"
 | 
				
			||||||
	"git.gocasts.ir/ebhomengo/niki/repository/mysql"
 | 
						"git.gocasts.ir/ebhomengo/niki/repository/mysql"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
| 
						 | 
					@ -9,10 +11,18 @@ func scanKindBoxReq(scanner mysql.Scanner) (entity.KindBoxReq, error) {
 | 
				
			||||||
	var kindBoxReq entity.KindBoxReq
 | 
						var kindBoxReq entity.KindBoxReq
 | 
				
			||||||
	var kindBoxStatus string
 | 
						var kindBoxStatus string
 | 
				
			||||||
	var kindBoxType string
 | 
						var kindBoxType string
 | 
				
			||||||
	err := scanner.Scan(&kindBoxReq.ID, &kindBoxReq.BenefactorID, &kindBoxType, &kindBoxReq.AddressID, &kindBoxReq.CountRequested, &kindBoxReq.CountAccepted,
 | 
						var countAccept sql.NullInt64
 | 
				
			||||||
		&kindBoxReq.Description,
 | 
						var desc sql.NullString
 | 
				
			||||||
 | 
						err := scanner.Scan(&kindBoxReq.ID, &kindBoxReq.BenefactorID, &kindBoxType, &kindBoxReq.AddressID, &kindBoxReq.CountRequested, &countAccept,
 | 
				
			||||||
 | 
							&desc,
 | 
				
			||||||
		&kindBoxReq.ReferDate, &kindBoxStatus, &kindBoxReq.CreatedAt)
 | 
							&kindBoxReq.ReferDate, &kindBoxStatus, &kindBoxReq.CreatedAt)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if countAccept.Valid {
 | 
				
			||||||
 | 
							kindBoxReq.CountAccepted = uint(countAccept.Int64)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if desc.Valid {
 | 
				
			||||||
 | 
							kindBoxReq.Description = desc.String
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	kindBoxReq.Status = entity.MapToKindBoxReqStatus(kindBoxStatus)
 | 
						kindBoxReq.Status = entity.MapToKindBoxReqStatus(kindBoxStatus)
 | 
				
			||||||
	kindBoxReq.KindBoxType = entity.MapToKindBoxType(kindBoxType)
 | 
						kindBoxReq.KindBoxType = entity.MapToKindBoxType(kindBoxType)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,31 +1 @@
 | 
				
			||||||
package adminkindboxservice
 | 
					package adminkindboxservice
 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	"context"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	entity "git.gocasts.ir/ebhomengo/niki/entity"
 | 
					 | 
				
			||||||
	param "git.gocasts.ir/ebhomengo/niki/param/admin/kind_box"
 | 
					 | 
				
			||||||
	richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error"
 | 
					 | 
				
			||||||
	"github.com/oklog/ulid/v2"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (s Service) AddKindBoxAfterAcceptingRequest(ctx context.Context, req param.KindBoxAddAfterAcceptingReqRequest) (param.KindBoxAddAfterAcceptingReqResponse, error) {
 | 
					 | 
				
			||||||
	const op = "adminkindboxservice.AddKindBoxAfterAcceptingRequest"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	var kindBoxes []entity.KindBox
 | 
					 | 
				
			||||||
	for i := 0; i < int(req.Count); i++ {
 | 
					 | 
				
			||||||
		kindBoxes = append(kindBoxes, entity.KindBox{
 | 
					 | 
				
			||||||
			KindBoxReqID: req.KindBoxReqID,
 | 
					 | 
				
			||||||
			BenefactorID: req.BenefactorID,
 | 
					 | 
				
			||||||
			Type:         req.Type,
 | 
					 | 
				
			||||||
			Status:       entity.KindBoxPendingSendStatus,
 | 
					 | 
				
			||||||
			SerialNumber: ulid.Make().String(),
 | 
					 | 
				
			||||||
		})
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	err := s.repo.AddBatchKindBox(ctx, kindBoxes)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return param.KindBoxAddAfterAcceptingReqResponse{}, richerror.New(op).WithErr(err).WithKind(richerror.KindUnexpected)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return param.KindBoxAddAfterAcceptingReqResponse{}, nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,8 +3,6 @@ package adminkindboxreqservice
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"context"
 | 
						"context"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"git.gocasts.ir/ebhomengo/niki/logger"
 | 
					 | 
				
			||||||
	adminkindboxparam "git.gocasts.ir/ebhomengo/niki/param/admin/kind_box"
 | 
					 | 
				
			||||||
	param "git.gocasts.ir/ebhomengo/niki/param/admin/kind_box_req"
 | 
						param "git.gocasts.ir/ebhomengo/niki/param/admin/kind_box_req"
 | 
				
			||||||
	richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error"
 | 
						richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
| 
						 | 
					@ -26,23 +24,6 @@ func (s Service) Accept(ctx context.Context, req param.KindBoxReqAcceptRequest)
 | 
				
			||||||
		return param.KindBoxReqAcceptResponse{}, richerror.New(op).WithErr(gErr)
 | 
							return param.KindBoxReqAcceptResponse{}, richerror.New(op).WithErr(gErr)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	_, aErr := s.kindBoxClient.AddKindBoxAfterAcceptingRequest(ctx, adminkindboxparam.KindBoxAddAfterAcceptingReqRequest{
 | 
					 | 
				
			||||||
		BenefactorID: kindBoxReq.BenefactorID,
 | 
					 | 
				
			||||||
		KindBoxReqID: kindBoxReq.ID,
 | 
					 | 
				
			||||||
		Type:         kindBoxReq.KindBoxType,
 | 
					 | 
				
			||||||
		Count:        kindBoxReq.CountAccepted,
 | 
					 | 
				
			||||||
	})
 | 
					 | 
				
			||||||
	if aErr != nil {
 | 
					 | 
				
			||||||
		// rollback kind box request status
 | 
					 | 
				
			||||||
		rErr := s.repo.RollbackKindBoxRequestStatus(ctx, req.ID)
 | 
					 | 
				
			||||||
		if rErr != nil {
 | 
					 | 
				
			||||||
			// log error
 | 
					 | 
				
			||||||
			logger.L().Error(rErr.Error())
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		return param.KindBoxReqAcceptResponse{}, richerror.New(op).WithErr(aErr)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return param.KindBoxReqAcceptResponse{
 | 
						return param.KindBoxReqAcceptResponse{
 | 
				
			||||||
		KindBoxReqID:     kindBoxReq.ID,
 | 
							KindBoxReqID:     kindBoxReq.ID,
 | 
				
			||||||
		KindBoxReqStatus: kindBoxReq.Status,
 | 
							KindBoxReqStatus: kindBoxReq.Status,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,7 +4,6 @@ import (
 | 
				
			||||||
	"context"
 | 
						"context"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"git.gocasts.ir/ebhomengo/niki/entity"
 | 
						"git.gocasts.ir/ebhomengo/niki/entity"
 | 
				
			||||||
	adminkindboxparam "git.gocasts.ir/ebhomengo/niki/param/admin/kind_box"
 | 
					 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Repository interface {
 | 
					type Repository interface {
 | 
				
			||||||
| 
						 | 
					@ -15,24 +14,12 @@ type Repository interface {
 | 
				
			||||||
	GetAllKindBoxReq(ctx context.Context) ([]entity.KindBoxReq, error)
 | 
						GetAllKindBoxReq(ctx context.Context) ([]entity.KindBoxReq, error)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type KindBoxClient interface {
 | 
					 | 
				
			||||||
	AddKindBoxAfterAcceptingRequest(ctx context.Context, param adminkindboxparam.KindBoxAddAfterAcceptingReqRequest) (adminkindboxparam.KindBoxAddAfterAcceptingReqResponse, error)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// TODO: check validation.
 | 
					 | 
				
			||||||
// type BenefactorService interface {
 | 
					 | 
				
			||||||
// 	IsBenefactorExist(ctx context.Context, benefactorID uint) (bool, error)
 | 
					 | 
				
			||||||
// }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
type Service struct {
 | 
					type Service struct {
 | 
				
			||||||
	repo Repository
 | 
						repo Repository
 | 
				
			||||||
	// benefactorService BenefactorService
 | 
					 | 
				
			||||||
	kindBoxClient KindBoxClient
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func New(repository Repository, kindBoxClient KindBoxClient) Service {
 | 
					func New(repository Repository) Service {
 | 
				
			||||||
	return Service{
 | 
						return Service{
 | 
				
			||||||
		repo: repository,
 | 
							repo: repository,
 | 
				
			||||||
		kindBoxClient: kindBoxClient,
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue