Skip to content

Commit

Permalink
feat: optimize logger and response
Browse files Browse the repository at this point in the history
  • Loading branch information
ozline committed Oct 8, 2024
1 parent a4e4c3b commit 5050448
Show file tree
Hide file tree
Showing 12 changed files with 57 additions and 84 deletions.
26 changes: 18 additions & 8 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,22 @@ PERFIX = "[Makefile]"
.PHONY: help
help:
@echo "Available targets:"
@echo " $(SERVICES) : Build a specific service (e.g., make api). use BUILD_ONLY=1 to avoid auto bootstrap."
@echo " env-up : Start the docker-compose environment."
@echo " env-down : Stop the docker-compose environment."
@echo " mocks : Generate mocks for interfaces."
@echo " clean : Remove the 'output' directories and related binaries."
@echo " clean-all : Stop docker-compose services if running and remove 'output' directories and docker data."
@echo " docker : Build a Docker image named 'fzuhelper'."
@echo " {service name} : Build a specific service (e.g., make api). use BUILD_ONLY=1 to avoid auto bootstrap."
@echo " Available service list: [${SERVICES}]"
@echo " env-up : Start the docker-compose environment."
@echo " env-down : Stop the docker-compose environment."
@echo " kitex-gen-% : Generate Kitex service code for a specific service (e.g., make kitex-gen-user)."
@echo " kitex-update-% : Update Kitex generated code for a specific service (e.g., make kitex-update-user)."
@echo " hertz-gen-api : Generate Hertz scaffold based on the API IDL."
@echo " test : Run unit tests for the project."
@echo " clean : Remove the 'output' directories and related binaries."
@echo " clean-all : Stop docker-compose services if running and remove 'output' directories and docker data."
@echo " push-% : Push a specific service to the remote repository (e.g., make push-api)."
@echo " fmt : Format the codebase using gofumpt."
@echo " import : Optimize import order and structure."
@echo " vet : Check for possible errors with go vet."
@echo " lint : Run golangci-lint on the codebase."
@echo " verify : Format, optimize imports, and run linters and vet on the codebase."

## --------------------------------------
## 构建与调试
Expand Down Expand Up @@ -110,11 +119,12 @@ ifndef BUILD_ONLY
else \
echo "$(PERFIX) Window 'fzuhelper-$(service)' does not exist. Creating a new window."; \
tmux new-window -n "fzuhelper-$(service)"; \
tmux split-window -h ; \
tmux select-layout -t "fzuhelper-$(service)" even-horizontal; \
fi
@echo "$(PERFIX) Running $(service) service in tmux..."
@tmux send-keys -t fzuhelper-$(service).0 'sh entrypoint.sh $(service)' C-m
@tmux select-pane -t fzuhelper-$(service).0
@tmux select-pane -t fzuhelper-$(service).1
endif

# 推送到镜像服务中,需要提前 docker login,否则会推送失败
Expand Down
5 changes: 2 additions & 3 deletions cmd/api/biz/handler/api/class_room_service.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 2 additions & 3 deletions cmd/api/biz/handler/api/user_service.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 5 additions & 4 deletions cmd/api/biz/rpc/classroom.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@ package rpc

import (
"context"
"fmt"

"github.com/west2-online/fzuhelper-server/kitex_gen/classroom"
"github.com/west2-online/fzuhelper-server/kitex_gen/model"
"github.com/west2-online/fzuhelper-server/pkg/client"
"github.com/west2-online/fzuhelper-server/pkg/errno"
"github.com/west2-online/fzuhelper-server/pkg/logger"
"github.com/west2-online/fzuhelper-server/pkg/utils"
)
Expand All @@ -22,10 +22,11 @@ func InitClassroomRPC() {
func GetEmptyRoomRPC(ctx context.Context, req *classroom.EmptyRoomRequest) (emptyRooms []*model.Classroom, err error) {
resp, err := classroomClient.GetEmptyRoom(ctx, req)
if err != nil {
return nil, fmt.Errorf("GetEmptyRoomRPC: the rpc called failed, err: %w", err)
logger.Errorf("GetEmptyRoomRPC: RPC called failed: %v", err.Error())
return nil, errno.InternalServiceError.WithMessage(err.Error())
}
if err = utils.IsSuccess(resp.Base); err != nil {
return nil, fmt.Errorf("GetEmptyRoomRPC: the base code is not successful, err: %w", err)
if !utils.IsSuccess(resp.Base) {
return nil, errno.BizError.WithMessage(resp.Base.Msg)
}
return resp.Rooms, nil
}
9 changes: 5 additions & 4 deletions cmd/api/biz/rpc/user.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@ package rpc

import (
"context"
"fmt"

"github.com/west2-online/fzuhelper-server/kitex_gen/user"
"github.com/west2-online/fzuhelper-server/pkg/client"
"github.com/west2-online/fzuhelper-server/pkg/errno"
"github.com/west2-online/fzuhelper-server/pkg/logger"
"github.com/west2-online/fzuhelper-server/pkg/utils"
)
Expand All @@ -21,10 +21,11 @@ func InitUserRPC() {
func GetLoginDataRPC(ctx context.Context, req *user.GetLoginDataRequest) (string, []string, error) {
resp, err := userClient.GetLoginData(ctx, req)
if err != nil {
return "", nil, fmt.Errorf("GetLoginDataRPC: received rpc error %w", err)
logger.Errorf("GetLoginDataRPC: RPC called failed: %v", err.Error())
return "", nil, errno.InternalServiceError.WithError(err)
}
if err = utils.IsSuccess(resp.Base); err != nil {
return "", nil, fmt.Errorf("GetLoginDataRPC: base code is not successful %w", err)
if !utils.IsSuccess(resp.Base) {
return "", nil, errno.BizError
}
return resp.Id, resp.Cookies, nil
}
25 changes: 0 additions & 25 deletions cmd/classroom/Makefile

This file was deleted.

14 changes: 7 additions & 7 deletions cmd/classroom/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (
"github.com/west2-online/fzuhelper-server/cmd/classroom/service"
classroom "github.com/west2-online/fzuhelper-server/kitex_gen/classroom"
"github.com/west2-online/fzuhelper-server/pkg/logger"
"github.com/west2-online/fzuhelper-server/pkg/utils"
)

// ClassroomServiceImpl implements the last service interface defined in the IDL.
Expand All @@ -18,29 +19,28 @@ type ClassroomServiceImpl struct{}
func (s *ClassroomServiceImpl) GetEmptyRoom(ctx context.Context, req *classroom.EmptyRoomRequest) (resp *classroom.EmptyRoomResponse, err error) {
resp = classroom.NewEmptyRoomResponse()
// 实际上前端会给定一个月内的选择,后端为了完整性,还是要判断一下
// 判断req.date只能从今天开始的一个月内
// 判断req.date只能从今天开始的一个月内,在当前日期前或超过 30 天则报错
// 首先判断date的格式是否符合要求
requestDate, err := time.Parse("2006-01-02", req.Date)
requestDate, err := utils.TimeParse(req.Date)
if err != nil {
logger.Errorf("Classroom.GetEmptyRoom: date format error, err: %v", err)
resp.Base = pack.BuildBaseResp(err)
return resp, nil
}
// 获取当前日期,不包含时间部分
now := time.Now().Truncate(24 * time.Hour)
requestDate = requestDate.Truncate(24 * time.Hour)
// 计算日期差异
dateDiff := requestDate.Sub(now).Hours() / 24
if dateDiff < 0 || dateDiff > 30 {
err = fmt.Errorf("Classroom.GetEmptyRoom: date out of range, date: %v", req.Date)
logger.Errorf("Classroom.GetEmptyRoom: %v", err)
err = fmt.Errorf("date out of range, date: %v", req.Date)
logger.Infof("Classroom.GetEmptyRoom: %v", err)
resp.Base = pack.BuildBaseResp(err)
return resp, nil
}

l := service.NewClassroomService(ctx)
res, err := l.GetEmptyRoom(req)
if err != nil {
logger.Errorf("Classroom.GetEmptyRoom: GetEmptyRoom failed, err: %v", err)
logger.Infof("Classroom.GetEmptyRoom: GetEmptyRoom failed, err: %v", err)
resp.Base = pack.BuildBaseResp(err)
return resp, nil
}
Expand Down
2 changes: 1 addition & 1 deletion cmd/classroom/kitex_info.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
kitexinfo:
ServiceName: 'classroom'
ToolVersion: 'v0.7.1'
ToolVersion: 'v0.11.3'
8 changes: 4 additions & 4 deletions config/config.example.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@ server:
version: "1.0"
name: fzuhelper

defaultUser:
account: ""
password: ""

snowflake:
worker-id: 0
datancenter-id: 0
Expand Down Expand Up @@ -40,10 +44,6 @@ redis:
jaeger:
addr: 127.0.0.1:6831

defaultUser:
account: ""
password: ""

services:
template:
name: template
Expand Down
7 changes: 7 additions & 0 deletions pkg/errno/errno.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,18 @@ func NewErrNo(code int64, msg string) ErrNo {
}
}

// WithMessage will replace default msg to new
func (e ErrNo) WithMessage(msg string) ErrNo {
e.ErrorMsg = msg
return e
}

// WithError will add error msg after Message
func (e ErrNo) WithError(err error) ErrNo {
e.ErrorMsg = e.ErrorMsg + ", " + err.Error()
return e
}

// ConvertErr convert error to ErrNo
// in Default user ServiceErrorCode
func ConvertErr(err error) ErrNo {
Expand Down
9 changes: 2 additions & 7 deletions pkg/utils/rpc.go
Original file line number Diff line number Diff line change
@@ -1,16 +1,11 @@
package utils

import (
"errors"

"github.com/west2-online/fzuhelper-server/kitex_gen/model"
"github.com/west2-online/fzuhelper-server/pkg/errno"
)

// IsSuccess 通用的rpc结果处理
func IsSuccess(baseResp *model.BaseResp) error {
if baseResp.Code != errno.SuccessCode {
return errors.New("utils.IsSuccess: the base code is not successful")
}
return nil
func IsSuccess(baseResp *model.BaseResp) bool {
return baseResp.Code == errno.SuccessCode
}
22 changes: 4 additions & 18 deletions pkg/utils/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package utils

import (
"errors"
"mime/multipart"
"net"
"net/http"
"strconv"
Expand All @@ -12,6 +11,10 @@ import (
config "github.com/west2-online/fzuhelper-server/config"
)

func TimeParse(date string) (time.Time, error) {
return time.Parse("2006-01-02", date)
}

func GetMysqlDSN() (string, error) {
if config.Mysql == nil {
return "", errors.New("config not found")
Expand Down Expand Up @@ -43,23 +46,6 @@ func AddrCheck(addr string) bool {
return true
}

func IsVideoFile(header *multipart.FileHeader) bool {
contentType := header.Header.Get("Content-Type")
if strings.HasPrefix(contentType, "video/") {
return true
}

filename := header.Filename
extensions := []string{".mp4", ".avi", ".mkv", ".mov"} // Add more video extensions if needed
for _, ext := range extensions {
if strings.HasSuffix(strings.ToLower(filename), ext) {
return true
}
}

return false
}

// ParseCookies 将cookie字符串解析为http.Cookie
func ParseCookies(rawData []string) []*http.Cookie {
var cookies []*http.Cookie
Expand Down

0 comments on commit 5050448

Please sign in to comment.