From f458e004312ce883c7ec2176009e9e503fa7f6f4 Mon Sep 17 00:00:00 2001 From: gjs Date: Mon, 21 Sep 2026 15:53:31 +0800 Subject: [PATCH] message --- .gitea/workflows/cd-test.yml | 1 + .gitea/workflows/ci.yml | 3 +- .../internal/logic/apiBindAddLogic.go | 104 ++++++++++++++++++ .../internal/logic/apiBindExpiryGetLogic.go | 62 +++++++++++ .../internal/logic/apiBindExpiryLogic.go | 103 +++++++++++++++++ .../internal/logic/apiBindItemsLogic.go | 35 ++++++ .../internal/logic/apiMaskAddLogic.go | 36 ++++++ .../logic/apiMaskStoreUseItemsLogic.go | 30 +++++ .../internal/logic/apiMaskStoreUseLogic.go | 30 +++++ .../internal/logic/apiMaskUseLogic.go | 30 +++++ .../internal/logic/apiMaskUsedItemsLogic.go | 30 +++++ .../internal/logic/apiUnBindLogic.go | 83 ++++++++++++++ services/message/message.go | 13 +-- 13 files changed, 547 insertions(+), 13 deletions(-) create mode 100644 services/equipment/internal/logic/apiBindAddLogic.go create mode 100644 services/equipment/internal/logic/apiBindExpiryGetLogic.go create mode 100644 services/equipment/internal/logic/apiBindExpiryLogic.go create mode 100644 services/equipment/internal/logic/apiBindItemsLogic.go create mode 100644 services/equipment/internal/logic/apiMaskAddLogic.go create mode 100644 services/equipment/internal/logic/apiMaskStoreUseItemsLogic.go create mode 100644 services/equipment/internal/logic/apiMaskStoreUseLogic.go create mode 100644 services/equipment/internal/logic/apiMaskUseLogic.go create mode 100644 services/equipment/internal/logic/apiMaskUsedItemsLogic.go create mode 100644 services/equipment/internal/logic/apiUnBindLogic.go diff --git a/.gitea/workflows/cd-test.yml b/.gitea/workflows/cd-test.yml index 9bc68c2..11b5bc4 100644 --- a/.gitea/workflows/cd-test.yml +++ b/.gitea/workflows/cd-test.yml @@ -47,4 +47,5 @@ jobs: docker pull ${{ vars.REGISTRY }}/lone/equipment:latest docker pull ${{ vars.REGISTRY }}/lone/record:latest docker pull ${{ vars.REGISTRY }}/lone/factory:latest + docker pull ${{ vars.REGISTRY }}/lone/message:latest docker compose up -d diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index bd4f9a4..4f6e19b 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -26,7 +26,7 @@ jobs: - name: Detect changes id: filter run: | - SERVICES="bff product admin user ad chore express sale wecom task equipment record payment factory" + SERVICES="bff product admin user ad chore express sale wecom task equipment record payment factory message" pattern_for() { case "$1" in @@ -95,6 +95,7 @@ jobs: - record - payment - factory + - message env: BUILD_LIST: ${{ needs.changes.outputs.build_list }} NAME: lone/${{ matrix.name }} diff --git a/services/equipment/internal/logic/apiBindAddLogic.go b/services/equipment/internal/logic/apiBindAddLogic.go new file mode 100644 index 0000000..079cc58 --- /dev/null +++ b/services/equipment/internal/logic/apiBindAddLogic.go @@ -0,0 +1,104 @@ +package logic + +import ( + "context" + "lone-services/pkg/modelbase" + "lone-services/pkg/utils" + "lone-services/services/equipment/internal/dao" + "lone-services/services/equipment/internal/model" + "lone-services/services/equipment/validator" + "strconv" + + "lone-services/rpc/equipment/pb" + "lone-services/services/equipment/internal/svc" + + "github.com/zeromicro/go-zero/core/logx" +) + +type ApiBindAddLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger + BaseLogic +} + +func NewApiBindAddLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ApiBindAddLogic { + return &ApiBindAddLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +func (l *ApiBindAddLogic) ApiBindAdd(in *equipment.ApiBindAddRequest) (*equipment.Response, error) { + var v validator.BindValidator + if fail := l.checkParams(in, &v); fail != nil { + return fail, nil + } + + adminInfo := utils.GetUserFromCtx(l.ctx) + if adminInfo.ID < utils.NumberOne { + return l.fail(utils.ErrorNoLoginInfo) + } + + w := modelbase.Params{ + Eq: map[string]string{"host_code": v.HostCode, + "status": utils.StringStatusOk}, + } + var info dao.BindCreate + modelObj := model.BindModel{}.Init() + err := modelObj.GetOne(w, &info) + if err != nil { + l.Logger.Error(err) + return l.fail(utils.Fail) + } + if info.Id > utils.NumberZero { + if info.UserId == adminInfo.ID { + return l.fail(utils.ErrorBindError) + } + + return l.fail(utils.ErrorBindOtherError) + } + w = modelbase.Params{Eq: map[string]string{ + "host_code": v.HostCode, + "user_id": strconv.FormatInt(adminInfo.ID, utils.NumberTen)}} + _ = modelObj.GetOne(w, &info) + + info.Status = utils.StatusOk + info.UserId = adminInfo.ID + info.UserNickname = adminInfo.Name + info.HostCode = v.HostCode + info.HostNickname = v.HostNickname + info.BindTime = utils.Now() + + w = modelbase.Params{ + Eq: map[string]string{"id": strconv.FormatInt(info.Id, utils.NumberTen)}, + } + + modelObj.Begin() + if info.Id < utils.NumberOne { + err = modelObj.Create(&info) + } else { + _, err = modelObj.Edit(w, &info) + } + + if err != nil { + l.Logger.Error(err) + modelObj.Rollback() + return l.fail(utils.Fail) + } + + host := dao.BindHistoryCreate{ + HostCode: v.HostCode, + UserId: adminInfo.ID, + Status: utils.StatusOk, + } + err = model.BindHistoryModel{}.Init().Create(&host) + if err != nil { + l.Logger.Error(err) + modelObj.Rollback() + return l.fail(utils.Fail) + } + modelObj.Commit() + return l.ok(utils.NumberOne) +} diff --git a/services/equipment/internal/logic/apiBindExpiryGetLogic.go b/services/equipment/internal/logic/apiBindExpiryGetLogic.go new file mode 100644 index 0000000..ea389a7 --- /dev/null +++ b/services/equipment/internal/logic/apiBindExpiryGetLogic.go @@ -0,0 +1,62 @@ +package logic + +import ( + "context" + "lone-services/pkg/modelbase" + "lone-services/pkg/utils" + "lone-services/services/equipment/internal/dao" + "lone-services/services/equipment/internal/model" + "lone-services/services/equipment/validator" + "strconv" + + "lone-services/rpc/equipment/pb" + "lone-services/services/equipment/internal/svc" + + "github.com/zeromicro/go-zero/core/logx" +) + +type ApiBindExpiryGetLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger + BaseLogic +} + +func NewApiBindExpiryGetLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ApiBindExpiryGetLogic { + return &ApiBindExpiryGetLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +func (l *ApiBindExpiryGetLogic) ApiBindExpiryGet(in *equipment.ApiBindExpiryGetRequest) (*equipment.Response, error) { + var v validator.BindGetExpiryValidator + if fail := l.checkParams(in, &v); fail != nil { + return fail, nil + } + adminInfo := utils.GetUserFromCtx(l.ctx) + if adminInfo.ID < utils.NumberOne { + return l.fail(utils.ErrorNoLoginInfo) + } + + var info dao.BindExpiry + w := modelbase.Params{ + Eq: map[string]string{ + "host_code": v.HostCode, + "user_id": strconv.Itoa(int(adminInfo.ID)), + "status": utils.StringStatusOk}, + } + + modelObj := model.BindModel{}.Init() + err := modelObj.GetOne(w, &info) + if err != nil { + l.Logger.Error(err) + return l.fail(utils.Fail) + } + if info.Id < utils.NumberOne { + return l.fail(utils.SetError(utils.ErrorNotFund, "没有找到数据或没有绑定用户")) + } + + return l.ok(info.ExpiryTime) +} diff --git a/services/equipment/internal/logic/apiBindExpiryLogic.go b/services/equipment/internal/logic/apiBindExpiryLogic.go new file mode 100644 index 0000000..6fce248 --- /dev/null +++ b/services/equipment/internal/logic/apiBindExpiryLogic.go @@ -0,0 +1,103 @@ +package logic + +import ( + "context" + "lone-services/pkg/modelbase" + "lone-services/pkg/utils" + "lone-services/services/equipment/internal/dao" + "lone-services/services/equipment/internal/model" + "lone-services/services/equipment/validator" + "strconv" + "time" + + "lone-services/rpc/equipment/pb" + "lone-services/services/equipment/internal/svc" + + "github.com/zeromicro/go-zero/core/logx" +) + +type ApiBindExpiryLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger + BaseLogic +} + +func NewApiBindExpiryLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ApiBindExpiryLogic { + return &ApiBindExpiryLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +func (l *ApiBindExpiryLogic) ApiBindExpiry(in *equipment.ApiBindExpiryRequest) (*equipment.Response, error) { + var v validator.BindExpiryValidator + if fail := l.checkParams(in, &v); fail != nil { + return fail, nil + } + adminInfo := utils.GetUserFromCtx(l.ctx) + if adminInfo.ID < utils.NumberOne { + return l.fail(utils.ErrorNoLoginInfo) + } + + var info dao.BindExpiry + w := modelbase.Params{ + Eq: map[string]string{ + "host_code": v.HostCode, + "user_id": strconv.FormatInt(adminInfo.ID, utils.NumberTen), + "status": utils.StringStatusOk}, + } + + modelObj := model.BindModel{}.Init() + err := modelObj.GetOne(w, &info) + if err != nil { + l.Logger.Error(err) + return l.fail(utils.Fail) + } + if info.Id < utils.NumberOne { + return l.fail(utils.SetError(utils.ErrorNotFund, "没有找到数据或没有绑定用户")) + } + + if len(info.ExpiryTime) > utils.NumberOne { + return l.ok(info.ExpiryTime) + } + + ww := modelbase.Params{ + Order: "id desc", + Eq: map[string]string{ + "host_code": v.HostCode, + "user_id": strconv.FormatInt(adminInfo.ID, utils.NumberTen), + "status": utils.StatusFailString}, + } + + var info2 dao.BindExpiry + err = modelObj.GetOne(ww, &info2) + if err != nil { + l.Logger.Error(err) + return l.fail(utils.Fail) + } + + if info2.Id < utils.NumberOne { + if v.Type == utils.NumberOne { + info.ExpiryTime = "9999-12-31" + } else { + now := time.Now() + oneYearLater := now.AddDate(1, 0, 0) + info.ExpiryTime = oneYearLater.Format(time.DateOnly) + } + } else { + info.ExpiryTime = info2.ExpiryTime + } + + w = modelbase.Params{ + Eq: map[string]string{"id": strconv.FormatInt(info.Id, utils.NumberTen)}, + } + _, err = modelObj.Edit(w, &info) + if err != nil { + l.Logger.Error(err) + return l.fail(utils.Fail) + } + + return l.ok(info.ExpiryTime) +} diff --git a/services/equipment/internal/logic/apiBindItemsLogic.go b/services/equipment/internal/logic/apiBindItemsLogic.go new file mode 100644 index 0000000..e631c31 --- /dev/null +++ b/services/equipment/internal/logic/apiBindItemsLogic.go @@ -0,0 +1,35 @@ +package logic + +import ( + "context" + "lone-services/pkg/utils" + + "lone-services/rpc/equipment/pb" + "lone-services/services/equipment/internal/svc" + + "github.com/zeromicro/go-zero/core/logx" +) + +type ApiBindItemsLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger + BaseLogic +} + +func NewApiBindItemsLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ApiBindItemsLogic { + return &ApiBindItemsLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +func (l *ApiBindItemsLogic) ApiBindItems(in *equipment.EmptyRequest) (*equipment.Response, error) { + adminInfo := utils.GetUserFromCtx(l.ctx) + if adminInfo.ID < utils.NumberOne { + return l.fail(utils.ErrorNoLoginInfo) + } + + return &equipment.Response{}, nil +} diff --git a/services/equipment/internal/logic/apiMaskAddLogic.go b/services/equipment/internal/logic/apiMaskAddLogic.go new file mode 100644 index 0000000..a7549b1 --- /dev/null +++ b/services/equipment/internal/logic/apiMaskAddLogic.go @@ -0,0 +1,36 @@ +package logic + +import ( + "context" + "lone-services/pkg/utils" + + "lone-services/rpc/equipment/pb" + "lone-services/services/equipment/internal/svc" + + "github.com/zeromicro/go-zero/core/logx" +) + +type ApiMaskAddLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger + BaseLogic +} + +func NewApiMaskAddLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ApiMaskAddLogic { + return &ApiMaskAddLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +// API +func (l *ApiMaskAddLogic) ApiMaskAdd(in *equipment.ApiMaskAddRequest) (*equipment.Response, error) { + adminInfo := utils.GetUserFromCtx(l.ctx) + if adminInfo.ID < utils.NumberOne { + return l.fail(utils.ErrorNoLoginInfo) + } + + return &equipment.Response{}, nil +} diff --git a/services/equipment/internal/logic/apiMaskStoreUseItemsLogic.go b/services/equipment/internal/logic/apiMaskStoreUseItemsLogic.go new file mode 100644 index 0000000..a74a747 --- /dev/null +++ b/services/equipment/internal/logic/apiMaskStoreUseItemsLogic.go @@ -0,0 +1,30 @@ +package logic + +import ( + "context" + + "lone-services/rpc/equipment/pb" + "lone-services/services/equipment/internal/svc" + + "github.com/zeromicro/go-zero/core/logx" +) + +type ApiMaskStoreUseItemsLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger +} + +func NewApiMaskStoreUseItemsLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ApiMaskStoreUseItemsLogic { + return &ApiMaskStoreUseItemsLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +func (l *ApiMaskStoreUseItemsLogic) ApiMaskStoreUseItems(in *equipment.ApiMaskUsedItemsRequest) (*equipment.Response, error) { + // todo: add your logic here and delete this line + + return &equipment.Response{}, nil +} diff --git a/services/equipment/internal/logic/apiMaskStoreUseLogic.go b/services/equipment/internal/logic/apiMaskStoreUseLogic.go new file mode 100644 index 0000000..bf11b90 --- /dev/null +++ b/services/equipment/internal/logic/apiMaskStoreUseLogic.go @@ -0,0 +1,30 @@ +package logic + +import ( + "context" + + "lone-services/rpc/equipment/pb" + "lone-services/services/equipment/internal/svc" + + "github.com/zeromicro/go-zero/core/logx" +) + +type ApiMaskStoreUseLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger +} + +func NewApiMaskStoreUseLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ApiMaskStoreUseLogic { + return &ApiMaskStoreUseLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +func (l *ApiMaskStoreUseLogic) ApiMaskStoreUse(in *equipment.ApiMaskUseRequest) (*equipment.Response, error) { + // todo: add your logic here and delete this line + + return &equipment.Response{}, nil +} diff --git a/services/equipment/internal/logic/apiMaskUseLogic.go b/services/equipment/internal/logic/apiMaskUseLogic.go new file mode 100644 index 0000000..58d3b1c --- /dev/null +++ b/services/equipment/internal/logic/apiMaskUseLogic.go @@ -0,0 +1,30 @@ +package logic + +import ( + "context" + + "lone-services/rpc/equipment/pb" + "lone-services/services/equipment/internal/svc" + + "github.com/zeromicro/go-zero/core/logx" +) + +type ApiMaskUseLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger +} + +func NewApiMaskUseLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ApiMaskUseLogic { + return &ApiMaskUseLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +func (l *ApiMaskUseLogic) ApiMaskUse(in *equipment.ApiMaskUseRequest) (*equipment.Response, error) { + // todo: add your logic here and delete this line + + return &equipment.Response{}, nil +} diff --git a/services/equipment/internal/logic/apiMaskUsedItemsLogic.go b/services/equipment/internal/logic/apiMaskUsedItemsLogic.go new file mode 100644 index 0000000..812a71a --- /dev/null +++ b/services/equipment/internal/logic/apiMaskUsedItemsLogic.go @@ -0,0 +1,30 @@ +package logic + +import ( + "context" + + "lone-services/rpc/equipment/pb" + "lone-services/services/equipment/internal/svc" + + "github.com/zeromicro/go-zero/core/logx" +) + +type ApiMaskUsedItemsLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger +} + +func NewApiMaskUsedItemsLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ApiMaskUsedItemsLogic { + return &ApiMaskUsedItemsLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +func (l *ApiMaskUsedItemsLogic) ApiMaskUsedItems(in *equipment.ApiMaskUsedItemsRequest) (*equipment.Response, error) { + // todo: add your logic here and delete this line + + return &equipment.Response{}, nil +} diff --git a/services/equipment/internal/logic/apiUnBindLogic.go b/services/equipment/internal/logic/apiUnBindLogic.go new file mode 100644 index 0000000..c7305a2 --- /dev/null +++ b/services/equipment/internal/logic/apiUnBindLogic.go @@ -0,0 +1,83 @@ +package logic + +import ( + "context" + "lone-services/pkg/modelbase" + "lone-services/pkg/utils" + "lone-services/services/equipment/internal/dao" + "lone-services/services/equipment/internal/model" + "lone-services/services/equipment/validator" + "strconv" + + "lone-services/rpc/equipment/pb" + "lone-services/services/equipment/internal/svc" + + "github.com/zeromicro/go-zero/core/logx" +) + +type ApiUnBindLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger + BaseLogic +} + +func NewApiUnBindLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ApiUnBindLogic { + return &ApiUnBindLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +func (l *ApiUnBindLogic) ApiUnBind(in *equipment.ApiUnBindRequest) (*equipment.Response, error) { + var v validator.BindUnbindValidator + if fail := l.checkParams(in, &v); fail != nil { + return fail, nil + } + + adminInfo := utils.GetUserFromCtx(l.ctx) + if adminInfo.ID < utils.NumberOne { + return l.fail(utils.ErrorNoLoginInfo) + } + + var info dao.BindInfo + w := modelbase.Params{ + Eq: map[string]string{ + "host_code": in.HostCode, + "user_id": strconv.FormatInt(adminInfo.ID, utils.NumberTen), + "status": utils.StringStatusOk}, + } + + modelObj := model.BindModel{}.Init() + err := modelObj.GetOne(w, &info) + if err != nil { + l.Logger.Error(err) + return l.fail(utils.Fail) + } + if info.Id < utils.NumberOne { + return l.fail(utils.ErrorNotFund) + } + info.Status = utils.StatusFail + host := dao.BindHistoryCreate{ + HostCode: v.HostCode, + UserId: adminInfo.ID, + Status: utils.StatusFail, + } + modelObj.Begin() + _, err = modelObj.Edit(w, &info) + if err != nil { + l.Logger.Error(err) + modelObj.Rollback() + return l.fail(utils.Fail) + } + err = model.BindHistoryModel{}.Init().Create(&host) + if err != nil { + l.Logger.Error(err) + modelObj.Rollback() + return l.fail(utils.Fail) + } + modelObj.Commit() + + return l.ok(utils.NumberOne) +} diff --git a/services/message/message.go b/services/message/message.go index dd56330..570cb9a 100644 --- a/services/message/message.go +++ b/services/message/message.go @@ -3,12 +3,12 @@ package main import ( "flag" "lone-services/pkg/discovery" - "lone-services/pkg/logRedis" "lone-services/pkg/modelbase" "lone-services/pkg/mysql" "lone-services/pkg/redis" "lone-services/pkg/utils" "lone-services/pkg/validate" + message "lone-services/rpc/message/pb" "net" "os" "strconv" @@ -16,7 +16,6 @@ import ( "lone-services/services/message/internal/config" "lone-services/services/message/internal/server" "lone-services/services/message/internal/svc" - "lone-services/services/message/message" "github.com/zeromicro/go-zero/core/conf" "github.com/zeromicro/go-zero/core/logx" @@ -126,16 +125,6 @@ func main() { os.Exit(1) } - if err := logRedis.Init(logRedis.LogRedisConfig{ - Host: utils.GetConfigString("log-redis.host"), - Port: utils.GetConfigInt("log-redis.port"), - Password: utils.GetConfigString("log-redis.password"), - DB: utils.GetConfigInt("log-redis.db"), - }); err != nil { - logx.Errorf("log redis init: %v", err) - os.Exit(1) - } - debug := utils.GetConfigBool("mysql.debug") modelbase.Init(db, modelbase.Config{Prefix: utils.GetConfigString("mysql.prefix"), Debug: debug})