Update template

This commit is contained in:
aditya.siregar
2025-05-06 15:21:12 +07:00
parent 5111fedfa8
commit 4be9c7d73c
7 changed files with 139 additions and 68 deletions
+14
View File
@@ -21,6 +21,10 @@ type Repository interface {
FindByPhone(ctx mycontext.Context, phone string) (*entity.Customer, error)
FindByEmail(ctx mycontext.Context, email string) (*entity.Customer, error)
AddPoints(ctx mycontext.Context, id int64, points int, reference string) error
GetPointsByCustomerID(
ctx mycontext.Context,
customerID int64,
) (*entity.CustomerPoints, error)
FindSequence(ctx mycontext.Context, partnerID int64) (int64, error)
GetAllCustomers(ctx mycontext.Context, req entity.MemberSearch) (entity.MemberList, int, error)
VerifyOTP(ctx mycontext.Context, verificationHash string, otpCode string) (int64, error)
@@ -29,6 +33,7 @@ type Repository interface {
type Service interface {
ResolveCustomer(ctx mycontext.Context, req *entity.CustomerResolutionRequest) (int64, error)
AddPoints(ctx mycontext.Context, customerID int64, points int, reference string) error
GetCustomerPoints(ctx mycontext.Context, customerID int64) (*entity.CustomerPoints, error)
GetCustomer(ctx mycontext.Context, id int64) (*entity.Customer, error)
CustomerCheck(ctx mycontext.Context, req *entity.CustomerResolutionRequest) (*entity.CustomerCheckResponse, error)
GetAllCustomers(ctx mycontext.Context, req *entity.MemberSearch) (*entity.MemberList, int, error)
@@ -188,6 +193,15 @@ func (s *customerSvc) AddPoints(ctx mycontext.Context, customerID int64, points
return nil
}
func (s *customerSvc) GetCustomerPoints(ctx mycontext.Context, customerID int64) (*entity.CustomerPoints, error) {
cp, err := s.repo.GetPointsByCustomerID(ctx, customerID)
if err != nil {
return nil, errors.Wrap(err, "failed to add points to customer")
}
return cp, nil
}
func (s *customerSvc) GetCustomer(ctx mycontext.Context, id int64) (*entity.Customer, error) {
customer, err := s.repo.FindByID(ctx, id)
if err != nil {
+20 -6
View File
@@ -52,7 +52,7 @@ func (s *orderSvc) processPostOrderActions(
}
if order.CustomerID != nil && *order.CustomerID > 0 {
err = s.addCustomerPoints(ctx, *order.CustomerID, int(order.Total/1000), fmt.Sprintf("TRX #%s", trx.ID))
err = s.addCustomerPoints(ctx, *order.CustomerID, int(order.Total/50000), fmt.Sprintf("TRX #%s", trx.ID))
if err != nil {
logger.ContextLogger(ctx).Error("error when adding points", zap.Error(err))
}
@@ -84,10 +84,21 @@ func (s *orderSvc) addCustomerPoints(ctx mycontext.Context, customerID int64, po
}
func (s *orderSvc) sendTransactionReceipt(ctx mycontext.Context, order *entity.Order, transaction *entity.Transaction, paymentMethod string) error {
newPoint := int(order.Total / 50000)
if newPoint <= 0 {
return nil
}
if order.CustomerID == nil || *order.CustomerID == 0 {
return nil
}
customerPoint, err := s.customer.GetCustomerPoints(ctx, *order.CustomerID)
if err != nil {
return nil
}
customer, err := s.customer.GetCustomer(ctx, *order.CustomerID)
if err != nil {
logger.ContextLogger(ctx).Error("error getting customer details", zap.Error(err))
@@ -133,14 +144,15 @@ func (s *orderSvc) sendTransactionReceipt(ctx mycontext.Context, order *entity.O
}
transactionDate := transaction.CreatedAt.Format("02 January 2006 15:04")
viewTransactionLink := fmt.Sprintf("https://enaklo.co.id/transaction/%s", transaction.ID)
viewTransactionLink := "https://web.enaklo.co.id"
emailData := map[string]interface{}{
"UserName": customer.Name,
"PointsName": "ELP",
"PointsBalance": int(order.Total / 1000),
"NewPoints": int(order.Total / 1000),
"RedeemLink": "enaklo.co.id",
"PointsName": "Point",
"PointsBalance": newPoint,
"NewPoints": newPoint,
"TotalPoints": customerPoint.TotalPoints,
"RedeemLink": "web.enaklo.co.id",
"BranchName": branchName,
"TransactionNumber": order.ID,
"TransactionDate": transactionDate,
@@ -149,6 +161,8 @@ func (s *orderSvc) sendTransactionReceipt(ctx mycontext.Context, order *entity.O
"TotalPayment": fmt.Sprintf("Rp %s", formatCurrency(order.Total)),
"ViewTransactionLink": viewTransactionLink,
"ExpiryDate": order.CreatedAt.Format("02 January 2006"),
"UndianDate": "17 Mei 2025",
"WebURL": "https://web.enaklo.co.id/undian",
}
return s.notification.SendEmailTransactional(ctx, entity.SendEmailNotificationParam{
+1
View File
@@ -44,6 +44,7 @@ type CustomerService interface {
ResolveCustomer(ctx mycontext.Context, req *entity.CustomerResolutionRequest) (int64, error)
AddPoints(ctx mycontext.Context, customerID int64, points int, reference string) error
GetCustomer(ctx mycontext.Context, id int64) (*entity.Customer, error)
GetCustomerPoints(ctx mycontext.Context, customerID int64) (*entity.CustomerPoints, error)
}
type TransactionService interface {