作者 yangfu

init

正在显示 95 个修改的文件 包含 4627 行增加0 行删除

要显示太多修改。

为保证性能只显示 95 of 95+ 个文件。

  1 +# Compiled Object codefiles, Static and Dynamic libs (Shared Objects)
  2 +*.o
  3 +*.a
  4 +*.so
  5 +
  6 +# Folders
  7 +_obj
  8 +_test
  9 +
  10 +# Architecture specific extensions/prefixes
  11 +*.[568vq]
  12 +[568vq].out
  13 +
  14 +*.cgo1.go
  15 +*.cgo2.c
  16 +_cgo_defun.c
  17 +_cgo_gotypes.go
  18 +_cgo_export.*
  19 +
  20 +_testmain.go
  21 +
  22 +*.exe
  23 +*.test
  24 +.log
  25 +.idea
  26 +*.tmp
  1 +FROM golang:latest
  2 +MAINTAINER mmm-go-pp <>
  3 +ENV APP_DIR $GOPATH/src/partner01
  4 +RUN mkdir -p $APP_DIR
  5 +WORKDIR $APP_DIR/
  6 +COPY ./pkg pkg
  7 +COPY ./conf conf
  8 +COPY ./go.mod go.mod
  9 +COPY ./go.sum go.sum
  10 +COPY ./main.go main.go
  11 +RUN ["ln","-sf","/usr/share/zoneinfo/Asia/Shanghai","/etc/localtime"]
  12 +ENV GO111MODULE on
  13 +ENV GOPROXY https://goproxy.io
  14 +RUN ["go","mod","tidy"]
  15 +RUN ["ls"]
  16 +RUN ["go","build"]
  17 +ENTRYPOINT ["./partner01"]
  1 +#!/bin/bash
  2 +export PATH=/root/local/bin:$PATH
  3 +kubectl -n <replace-your-k8s-namespace> get pods | grep -q partner01
  4 +if [ "$?" == "1" ];then
  5 + kubectl create -f /tmp/dev/partner01/partner01.yaml --record
  6 + kubectl -n <replace-your-k8s-namespace> get svc | grep -q partner01
  7 + if [ "$?" == "0" ];then
  8 + echo "partner01 service install success!"
  9 + else
  10 + echo "partner01 service install fail!"
  11 + fi
  12 + kubectl -n <replace-your-k8s-namespace> get pods | grep -q partner01
  13 + if [ "$?" == "0" ];then
  14 + echo "partner01 deployment install success!"
  15 + else
  16 + echo "partner01 deployment install fail!"
  17 + fi
  18 +else
  19 + kubectl delete -f /tmp/dev/partner01/partner01.yaml
  20 + kubectl -n <replace-your-k8s-namespace> get svc | grep -q partner01
  21 + while [ "$?" == "0" ]
  22 + do
  23 + kubectl -n <replace-your-k8s-namespace> get svc | grep -q partner01
  24 + done
  25 + kubectl -n <replace-your-k8s-namespace> get pods | grep -q partner01
  26 + while [ "$?" == "0" ]
  27 + do
  28 + kubectl -n <replace-your-k8s-namespace> get pods | grep -q partner01
  29 + done
  30 + kubectl create -f /tmp/dev/partner01/partner01.yaml --record
  31 + kubectl -n <replace-your-k8s-namespace> get svc | grep -q partner01
  32 + if [ "$?" == "0" ];then
  33 + echo "partner01 service update success!"
  34 + else
  35 + echo "partner01 service update fail!"
  36 + fi
  37 + kubectl -n <replace-your-k8s-namespace> get pods | grep -q partner01
  38 + if [ "$?" == "0" ];then
  39 + echo "partner01 deployment update success!"
  40 + else
  41 + echo "partner01 deployment update fail!"
  42 + fi
  43 +fi
  1 +apiVersion: v1
  2 +kind: Service
  3 +metadata:
  4 + name: partner01
  5 + namespace: <replace-your-k8s-namespace>
  6 + labels:
  7 + k8s-app: partner01
  8 +spec:
  9 + ports:
  10 + - name: "http"
  11 + port: 80
  12 + targetPort: 8082
  13 + selector:
  14 + k8s-app: partner01
  15 +---
  16 +apiVersion: extensions/v1beta1
  17 +kind: Deployment
  18 +metadata:
  19 + name: partner01
  20 + namespace: <replace-your-k8s-namespace>
  21 + labels:
  22 + k8s-app: partner01
  23 +spec:
  24 + replicas: 1
  25 + template:
  26 + metadata:
  27 + labels:
  28 + k8s-app: partner01
  29 + spec:
  30 + affinity:
  31 + nodeAffinity:
  32 + preferredDuringSchedulingIgnoredDuringExecution:
  33 + - preference: {}
  34 + weight: 100
  35 + requiredDuringSchedulingIgnoredDuringExecution:
  36 + nodeSelectorTerms:
  37 + - matchExpressions:
  38 + - key: kubernetes.io/hostname
  39 + operator: In
  40 + values:
  41 + - cn-hangzhou.i-bp1djh1xn7taumbue1ze
  42 + - cn-hangzhou.i-bp1djh1xn7taumbue1zd
  43 + - cn-hangzhou.i-bp1euf5u1ph9kbhtndhb
  44 + - cn-hangzhou.i-bp1hyp5oips9cdwxxgxy
  45 + containers:
  46 + - name: partner01
  47 + image: 192.168.0.243:5000/mmm/partner01:dev
  48 + imagePullPolicy: Always
  49 + ports:
  50 + - containerPort: 8082
  51 + volumeMounts:
  52 + - mountPath: /opt/logs
  53 + name: accesslogs
  54 + env:
  55 + - name: LOG_LEVEL
  56 + value: "debug"
  57 + - name: ERROR_BASE_CODE
  58 + value: "1"
  59 + - name: ERROR_BASE_CODE_MULTIPLE
  60 + value: "1000"
  61 + volumes:
  62 + - name: accesslogs
  63 + emptyDir: {}
  1 +module gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway
  2 +
  3 +go 1.16
  4 +
  5 +require (
  6 + github.com/ajg/form v1.5.1 // indirect
  7 + github.com/beego/beego/v2 v2.0.1
  8 + github.com/dgrijalva/jwt-go v3.2.0+incompatible
  9 + github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072 // indirect
  10 + github.com/fatih/structs v1.1.0 // indirect
  11 + github.com/gavv/httpexpect v2.0.0+incompatible
  12 + github.com/go-pg/pg/v10 v10.9.0
  13 + github.com/google/go-querystring v1.1.0 // indirect
  14 + github.com/imkira/go-interpol v1.1.0 // indirect
  15 + github.com/linmadan/egglib-go v0.0.0-20210313060205-8b5e456b11f7
  16 + github.com/mattn/go-colorable v0.1.8 // indirect
  17 + github.com/moul/http2curl v1.0.0 // indirect
  18 + github.com/onsi/ginkgo v1.15.2
  19 + github.com/onsi/gomega v1.11.0
  20 + github.com/sergi/go-diff v1.2.0 // indirect
  21 + github.com/smartystreets/goconvey v1.6.4 // indirect
  22 + github.com/tiptok/gocomm v1.0.12
  23 + github.com/valyala/fasthttp v1.23.0 // indirect
  24 + github.com/xeipuuv/gojsonschema v1.2.0 // indirect
  25 + github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0 // indirect
  26 + github.com/yudai/gojsondiff v1.0.0 // indirect
  27 + github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 // indirect
  28 + github.com/yudai/pp v2.0.1+incompatible // indirect
  29 +)
  30 +
  31 +//replace github.com/tiptok/gocomm v1.0.11 => F:\go\src\learn_project\gocomm
此 diff 太大无法显示。
  1 +package main
  2 +
  3 +import (
  4 + "github.com/beego/beego/v2/server/web"
  5 + "github.com/tiptok/gocomm/pkg/log"
  6 + _ "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/infrastructure/gateway"
  7 + _ "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/infrastructure/pg"
  8 + _ "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/port/beego"
  9 +)
  10 +
  11 +func main() {
  12 + log.Info("start...")
  13 + web.Run()
  14 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 +
  6 + "github.com/beego/beego/v2/core/validation"
  7 +)
  8 +
  9 +type AccessTokenCommand struct {
  10 + // Attribute描述
  11 + AuthCode string `json:"authCode,omitempty"`
  12 +}
  13 +
  14 +func (accessTokenCommand *AccessTokenCommand) Valid(validation *validation.Validation) {
  15 +
  16 +}
  17 +
  18 +func (accessTokenCommand *AccessTokenCommand) ValidateCommand() error {
  19 + valid := validation.Validation{}
  20 + b, err := valid.Valid(accessTokenCommand)
  21 + if err != nil {
  22 + return err
  23 + }
  24 + if !b {
  25 + for _, validErr := range valid.Errors {
  26 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  27 + }
  28 + }
  29 + return nil
  30 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 +
  6 + "github.com/beego/beego/v2/core/validation"
  7 +)
  8 +
  9 +type ChangePasswordCommand struct {
  10 + // 旧密码
  11 + OldPwd string `json:"oldPwd,omitempty"`
  12 + // 新密码
  13 + NewPwd string `json:"newPwd,omitempty"`
  14 + // 确认密码
  15 + ConfirmPwd string `json:"confirmPwd,omitempty"`
  16 + // 手机号
  17 + Phone string `json:"phone,omitempty"`
  18 +}
  19 +
  20 +func (changePasswordCommand *ChangePasswordCommand) Valid(validation *validation.Validation) {
  21 +
  22 +}
  23 +
  24 +func (changePasswordCommand *ChangePasswordCommand) ValidateCommand() error {
  25 + valid := validation.Validation{}
  26 + b, err := valid.Valid(changePasswordCommand)
  27 + if err != nil {
  28 + return err
  29 + }
  30 + if !b {
  31 + for _, validErr := range valid.Errors {
  32 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  33 + }
  34 + }
  35 + return nil
  36 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 +
  6 + "github.com/beego/beego/v2/core/validation"
  7 +)
  8 +
  9 +type LoginByCompanyCommand struct {
  10 + // 1.高管 2.合伙人 4:游客
  11 + UserType int `json:"userType" valid:"Required"`
  12 + // 凭证
  13 + Credentials string `json:"credentials" valid:"Required"`
  14 + // 用户id
  15 + UserId int64 `json:"userId" valid:"Required"`
  16 +}
  17 +
  18 +func (loginByCompanyCommand *LoginByCompanyCommand) Valid(validation *validation.Validation) {
  19 +
  20 +}
  21 +
  22 +func (loginByCompanyCommand *LoginByCompanyCommand) ValidateCommand() error {
  23 + valid := validation.Validation{}
  24 + b, err := valid.Valid(loginByCompanyCommand)
  25 + if err != nil {
  26 + return err
  27 + }
  28 + if !b {
  29 + for _, validErr := range valid.Errors {
  30 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  31 + }
  32 + }
  33 + return nil
  34 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 +
  6 + "github.com/beego/beego/v2/core/validation"
  7 +)
  8 +
  9 +type RefreshTokenCommand struct {
  10 + // refreshToken
  11 + RefreshToken string `json:"refreshToken,omitempty"`
  12 +}
  13 +
  14 +func (refreshTokenCommand *RefreshTokenCommand) Valid(validation *validation.Validation) {
  15 +
  16 +}
  17 +
  18 +func (refreshTokenCommand *RefreshTokenCommand) ValidateCommand() error {
  19 + valid := validation.Validation{}
  20 + b, err := valid.Valid(refreshTokenCommand)
  21 + if err != nil {
  22 + return err
  23 + }
  24 + if !b {
  25 + for _, validErr := range valid.Errors {
  26 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  27 + }
  28 + }
  29 + return nil
  30 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 +
  6 + "github.com/beego/beego/v2/core/validation"
  7 +)
  8 +
  9 +type RevokeCommand struct {
  10 +}
  11 +
  12 +func (revokeCommand *RevokeCommand) Valid(validation *validation.Validation) {
  13 + validation.SetError("CustomValid", "未实现的自定义认证")
  14 +}
  15 +
  16 +func (revokeCommand *RevokeCommand) ValidateCommand() error {
  17 + valid := validation.Validation{}
  18 + b, err := valid.Valid(revokeCommand)
  19 + if err != nil {
  20 + return err
  21 + }
  22 + if !b {
  23 + for _, validErr := range valid.Errors {
  24 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  25 + }
  26 + }
  27 + return nil
  28 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 +
  6 + "github.com/beego/beego/v2/core/validation"
  7 +)
  8 +
  9 +type SendSmsCodeCommand struct {
  10 + // 手机号
  11 + Phone string `json:"phone,omitempty"`
  12 +}
  13 +
  14 +func (sendSmsCodeCommand *SendSmsCodeCommand) Valid(validation *validation.Validation) {
  15 + validation.SetError("CustomValid", "未实现的自定义认证")
  16 +}
  17 +
  18 +func (sendSmsCodeCommand *SendSmsCodeCommand) ValidateCommand() error {
  19 + valid := validation.Validation{}
  20 + b, err := valid.Valid(sendSmsCodeCommand)
  21 + if err != nil {
  22 + return err
  23 + }
  24 + if !b {
  25 + for _, validErr := range valid.Errors {
  26 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  27 + }
  28 + }
  29 + return nil
  30 +}
  1 +package query
  2 +
  3 +import (
  4 + "fmt"
  5 +
  6 + "github.com/beego/beego/v2/core/validation"
  7 +)
  8 +
  9 +type LoginQuery struct {
  10 + // 手机号
  11 + Phone string `json:"phone,omitempty"`
  12 + // signInPassword(密码登录) 或 signInCaptcha(验证码登录)或signInCredentials(凭证登录)
  13 + GrantType string `json:"grantType,omitempty"`
  14 + // 密码(grantType = signInPassword)
  15 + Password string `json:"password,omitempty"`
  16 + // 验证码(grantType = signInCaptcha)
  17 + Captcha string `json:"captcha,omitempty"`
  18 + // 凭证(grantType = signInCredentials)
  19 + Credentials string `json:"credentials,omitempty"`
  20 +}
  21 +
  22 +func (loginQuery *LoginQuery) Valid(validation *validation.Validation) {
  23 +
  24 +}
  25 +
  26 +func (loginQuery *LoginQuery) ValidateQuery() error {
  27 + valid := validation.Validation{}
  28 + b, err := valid.Valid(loginQuery)
  29 + if err != nil {
  30 + return err
  31 + }
  32 + if !b {
  33 + for _, validErr := range valid.Errors {
  34 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  35 + }
  36 + }
  37 + return nil
  38 +}
  1 +package service
  2 +
  3 +import (
  4 + "github.com/linmadan/egglib-go/core/application"
  5 + "github.com/tiptok/gocomm/gs"
  6 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/application/auth/command"
  7 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/application/auth/query"
  8 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/infrastructure/gateway"
  9 +)
  10 +
  11 +// 认证服务
  12 +type AuthService struct {
  13 +}
  14 +
  15 +// 用户按公司登录
  16 +func (authService *AuthService) AccessToken(accessTokenCommand *command.AccessTokenCommand) (interface{}, error) {
  17 + if err := accessTokenCommand.ValidateCommand(); err != nil {
  18 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  19 + }
  20 + data, err := gateway.Partner01Service.Invoke(gateway.AuthsAccessToken, gs.WithJsonObject(accessTokenCommand))
  21 + if err != nil {
  22 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  23 + }
  24 + return data.Data, nil
  25 +}
  26 +
  27 +// 修改手机号密码
  28 +func (authService *AuthService) ChangePassword(changePasswordCommand *command.ChangePasswordCommand) (interface{}, error) {
  29 + if err := changePasswordCommand.ValidateCommand(); err != nil {
  30 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  31 + }
  32 + data, err := gateway.Partner01Service.Invoke(gateway.AuthsChangePhonePassword, gs.WithJsonObject(changePasswordCommand))
  33 + if err != nil {
  34 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  35 + }
  36 + return data.Data, nil
  37 +}
  38 +
  39 +// 用户登录 返回有权限的公司列表
  40 +func (authService *AuthService) Login(loginQuery *query.LoginQuery) (interface{}, error) {
  41 + if err := loginQuery.ValidateQuery(); err != nil {
  42 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  43 + }
  44 + data, err := gateway.Partner01Service.Invoke(gateway.AuthsLogin, gs.WithJsonObject(loginQuery))
  45 + if err != nil {
  46 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  47 + }
  48 + return data.Data, nil
  49 +}
  50 +
  51 +// 用户按公司登录
  52 +func (authService *AuthService) LoginByCompany(loginByCompanyCommand *command.LoginByCompanyCommand) (interface{}, error) {
  53 + if err := loginByCompanyCommand.ValidateCommand(); err != nil {
  54 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  55 + }
  56 + data, err := gateway.Partner01Service.Invoke(gateway.AuthsLoginByCompany, gs.WithJsonObject(loginByCompanyCommand))
  57 + if err != nil {
  58 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  59 + }
  60 + return data.Data, nil
  61 +}
  62 +
  63 +// 更新授权令牌accessToken
  64 +func (authService *AuthService) RefreshToken(refreshTokenCommand *command.RefreshTokenCommand) (interface{}, error) {
  65 + if err := refreshTokenCommand.ValidateCommand(); err != nil {
  66 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  67 + }
  68 + data, err := gateway.Partner01Service.Invoke(gateway.AuthsRefreshToken, gs.WithJsonObject(refreshTokenCommand))
  69 + if err != nil {
  70 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  71 + }
  72 + return data.Data, nil
  73 +}
  74 +
  75 +// 注销登录
  76 +func (authService *AuthService) Revoke(revokeCommand *command.RevokeCommand) (interface{}, error) {
  77 + if err := revokeCommand.ValidateCommand(); err != nil {
  78 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  79 + }
  80 + data, err := gateway.Partner01Service.Invoke(gateway.AuthsRevoke, gs.WithJsonObject(revokeCommand))
  81 + if err != nil {
  82 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  83 + }
  84 + return data.Data, nil
  85 +}
  86 +
  87 +// 发送验证码
  88 +func (authService *AuthService) SendSmsCode(sendSmsCodeCommand *command.SendSmsCodeCommand) (interface{}, error) {
  89 + if err := sendSmsCodeCommand.ValidateCommand(); err != nil {
  90 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  91 + }
  92 + data, err := gateway.Partner01Service.Invoke(gateway.AuthsSendSmsCode, gs.WithJsonObject(sendSmsCodeCommand))
  93 + if err != nil {
  94 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  95 + }
  96 + return data.Data, nil
  97 +}
  98 +
  99 +func NewAuthService(options map[string]interface{}) *AuthService {
  100 + newAuthService := &AuthService{}
  101 + return newAuthService
  102 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 +
  6 + "github.com/beego/beego/v2/core/validation"
  7 +)
  8 +
  9 +type ConvertCompanyStatusCommand struct {
  10 + // 公司Id
  11 + CompanyId int64 `json:"companyId" valid:"Required"`
  12 + // 状态 1正常 2禁用
  13 + Status int64 `json:"status" valid:"Required"`
  14 +}
  15 +
  16 +func (convertCompanyStatusCommand *ConvertCompanyStatusCommand) Valid(validation *validation.Validation) {
  17 + // _ = validation.SetError("CustomValid", "未实现的自定义认证")
  18 +}
  19 +
  20 +func (convertCompanyStatusCommand *ConvertCompanyStatusCommand) ValidateCommand() error {
  21 + valid := validation.Validation{}
  22 + b, err := valid.Valid(convertCompanyStatusCommand)
  23 + if err != nil {
  24 + return err
  25 + }
  26 + if !b {
  27 + for _, validErr := range valid.Errors {
  28 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  29 + }
  30 + }
  31 + return nil
  32 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 +
  6 + "github.com/beego/beego/v2/core/validation"
  7 +)
  8 +
  9 +type CreateCompanyCommand struct {
  10 + // 公司名称
  11 + Name string `json:"name" valid:"Required"`
  12 + // 公司简称
  13 + Abbreviation string `json:"abbreviation" valid:"Required"`
  14 + // 状态 1正常 2禁用
  15 + Status int64 `json:"status" valid:"Required"`
  16 + // 备注
  17 + Remarks string `json:"remarks,omitempty"`
  18 + // 公司主管理员账号
  19 + UserAccount string `json:"userAccount" valid:"Required"`
  20 + // 公司主管理员姓名
  21 + UserName string `json:"userName" valid:"Required"`
  22 +}
  23 +
  24 +func (createCompanyCommand *CreateCompanyCommand) Valid(validation *validation.Validation) {
  25 + // _ = validation.SetError("CustomValid", "未实现的自定义认证")
  26 +}
  27 +
  28 +func (createCompanyCommand *CreateCompanyCommand) ValidateCommand() error {
  29 + valid := validation.Validation{}
  30 + b, err := valid.Valid(createCompanyCommand)
  31 + if err != nil {
  32 + return err
  33 + }
  34 + if !b {
  35 + for _, validErr := range valid.Errors {
  36 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  37 + }
  38 + }
  39 + return nil
  40 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 +
  6 + "github.com/beego/beego/v2/core/validation"
  7 +)
  8 +
  9 +type RemoveCompanyCommand struct {
  10 + // 公司Id
  11 + CompanyId int64 `json:"companyId" valid:"Required"`
  12 +}
  13 +
  14 +func (removeCompanyCommand *RemoveCompanyCommand) Valid(validation *validation.Validation) {
  15 + // _ = validation.SetError("CustomValid", "未实现的自定义认证")
  16 +}
  17 +
  18 +func (removeCompanyCommand *RemoveCompanyCommand) ValidateCommand() error {
  19 + valid := validation.Validation{}
  20 + b, err := valid.Valid(removeCompanyCommand)
  21 + if err != nil {
  22 + return err
  23 + }
  24 + if !b {
  25 + for _, validErr := range valid.Errors {
  26 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  27 + }
  28 + }
  29 + return nil
  30 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 +
  6 + "github.com/beego/beego/v2/core/validation"
  7 +)
  8 +
  9 +type SetCompanyAdminCommand struct {
  10 + // 公司Id
  11 + CompanyId int64 `json:"companyId" valid:"Required"`
  12 + // 公司主管理员账号
  13 + UserAccount string `json:"userAccount" valid:"Required"`
  14 + // 公司主管理员姓名
  15 + UserName string `json:"userName" valid:"Required"`
  16 +}
  17 +
  18 +func (setCompanyAdminCommand *SetCompanyAdminCommand) Valid(validation *validation.Validation) {
  19 + // _ = validation.SetError("CustomValid", "未实现的自定义认证")
  20 +}
  21 +
  22 +func (setCompanyAdminCommand *SetCompanyAdminCommand) ValidateCommand() error {
  23 + valid := validation.Validation{}
  24 + b, err := valid.Valid(setCompanyAdminCommand)
  25 + if err != nil {
  26 + return err
  27 + }
  28 + if !b {
  29 + for _, validErr := range valid.Errors {
  30 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  31 + }
  32 + }
  33 + return nil
  34 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 +
  6 + "github.com/beego/beego/v2/core/validation"
  7 +)
  8 +
  9 +type UpdateCompanyCommand struct {
  10 + // 公司Id
  11 + CompanyId int64 `json:"companyId" valid:"Required"`
  12 + // 公司名称
  13 + Name string `json:"name,omitempty"`
  14 + // 公司简称
  15 + Abbreviation string `json:"abbreviation,omitempty"`
  16 + // 状态 1正常 2禁用
  17 + Status int64 `json:"status,omitempty"`
  18 + // 备注
  19 + Remarks string `json:"remarks,omitempty"`
  20 + // 公司主管理员账号
  21 + UserAccount string `json:"userAccount,omitempty"`
  22 + // 公司主管理员姓名
  23 + UserName string `json:"userName,omitempty"`
  24 +}
  25 +
  26 +func (updateCompanyCommand *UpdateCompanyCommand) Valid(validation *validation.Validation) {
  27 + // _ = validation.SetError("CustomValid", "未实现的自定义认证")
  28 +}
  29 +
  30 +func (updateCompanyCommand *UpdateCompanyCommand) ValidateCommand() error {
  31 + valid := validation.Validation{}
  32 + b, err := valid.Valid(updateCompanyCommand)
  33 + if err != nil {
  34 + return err
  35 + }
  36 + if !b {
  37 + for _, validErr := range valid.Errors {
  38 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  39 + }
  40 + }
  41 + return nil
  42 +}
  1 +package query
  2 +
  3 +import (
  4 + "fmt"
  5 +
  6 + "github.com/beego/beego/v2/core/validation"
  7 +)
  8 +
  9 +type GetCompanyQuery struct {
  10 + // 公司Id
  11 + CompanyId int64 `json:"companyId" valid:"Required"`
  12 +}
  13 +
  14 +func (getCompanyQuery *GetCompanyQuery) Valid(validation *validation.Validation) {
  15 + // _ = validation.SetError("CustomValid", "未实现的自定义认证")
  16 +}
  17 +
  18 +func (getCompanyQuery *GetCompanyQuery) ValidateQuery() error {
  19 + valid := validation.Validation{}
  20 + b, err := valid.Valid(getCompanyQuery)
  21 + if err != nil {
  22 + return err
  23 + }
  24 + if !b {
  25 + for _, validErr := range valid.Errors {
  26 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  27 + }
  28 + }
  29 + return nil
  30 +}
  1 +package query
  2 +
  3 +import (
  4 + "fmt"
  5 +
  6 + "github.com/beego/beego/v2/core/validation"
  7 +)
  8 +
  9 +type ListCompanyQuery struct {
  10 + // 查询偏离量
  11 + Offset int `json:"offset" valid:"Required"`
  12 + // 查询限制
  13 + Limit int `json:"limit" valid:"Required"`
  14 +}
  15 +
  16 +func (listCompanyQuery *ListCompanyQuery) Valid(validation *validation.Validation) {
  17 + // _ = validation.SetError("CustomValid", "未实现的自定义认证")
  18 +}
  19 +
  20 +func (listCompanyQuery *ListCompanyQuery) ValidateQuery() error {
  21 + valid := validation.Validation{}
  22 + b, err := valid.Valid(listCompanyQuery)
  23 + if err != nil {
  24 + return err
  25 + }
  26 + if !b {
  27 + for _, validErr := range valid.Errors {
  28 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  29 + }
  30 + }
  31 + return nil
  32 +}
  1 +package service
  2 +
  3 +import (
  4 + "fmt"
  5 + "github.com/linmadan/egglib-go/core/application"
  6 + "github.com/linmadan/egglib-go/utils/tool_funs"
  7 + "github.com/tiptok/gocomm/common"
  8 + "github.com/tiptok/gocomm/gs"
  9 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/application/company/command"
  10 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/application/company/query"
  11 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/application/factory"
  12 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/domain"
  13 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/infrastructure/gateway"
  14 +)
  15 +
  16 +// 公司服务
  17 +type CompanyService struct {
  18 +}
  19 +
  20 +// 公司状态转换 禁用、启用
  21 +func (companyService *CompanyService) ConvertCompanyStatus(convertCompanyStatusCommand *command.ConvertCompanyStatusCommand) (interface{}, error) {
  22 + if err := convertCompanyStatusCommand.ValidateCommand(); err != nil {
  23 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  24 + }
  25 + transactionContext, err := factory.CreateTransactionContext(nil)
  26 + if err != nil {
  27 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  28 + }
  29 + if err := transactionContext.StartTransaction(); err != nil {
  30 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  31 + }
  32 + defer func() {
  33 + transactionContext.RollbackTransaction()
  34 + }()
  35 + var companyRepository domain.CompanyRepository
  36 + if value, err := factory.CreateCompanyRepository(map[string]interface{}{
  37 + "transactionContext": transactionContext,
  38 + }); err != nil {
  39 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  40 + } else {
  41 + companyRepository = value
  42 + }
  43 + company, err := companyRepository.FindOne(map[string]interface{}{"companyId": convertCompanyStatusCommand.CompanyId})
  44 + if err != nil {
  45 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  46 + }
  47 + if company == nil {
  48 + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(convertCompanyStatusCommand.CompanyId)))
  49 + }
  50 + if err := company.Update(tool_funs.SimpleStructToMap(convertCompanyStatusCommand)); err != nil {
  51 + return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error())
  52 + }
  53 + if company, err := companyRepository.Save(company); err != nil {
  54 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  55 + } else {
  56 + if err := transactionContext.CommitTransaction(); err != nil {
  57 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  58 + }
  59 + return company, nil
  60 + }
  61 +}
  62 +
  63 +// 创建
  64 +func (companyService *CompanyService) CreateCompany(createCompanyCommand *command.CreateCompanyCommand) (interface{}, error) {
  65 + if err := createCompanyCommand.ValidateCommand(); err != nil {
  66 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  67 + }
  68 + return gateway.Partner01Service.CompanyCreate(createCompanyCommand)
  69 +}
  70 +
  71 +// 返回
  72 +func (companyService *CompanyService) GetCompany(getCompanyQuery *query.GetCompanyQuery) (interface{}, error) {
  73 + if err := getCompanyQuery.ValidateQuery(); err != nil {
  74 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  75 + }
  76 + return gateway.Partner01Service.CompanyGet(common.LoadCustomFieldToMap(getCompanyQuery, "CompanyId"))
  77 +}
  78 +
  79 +// 返回列表
  80 +func (companyService *CompanyService) ListCompany(listCompanyQuery *query.ListCompanyQuery) (interface{}, error) {
  81 + if err := listCompanyQuery.ValidateQuery(); err != nil {
  82 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  83 + }
  84 + data, err := gateway.Partner01Service.Invoke(gateway.CompanyList, gs.WithPathQuery(common.ObjectToMap(listCompanyQuery)))
  85 + if err != nil {
  86 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  87 + }
  88 + return data.Data, nil
  89 +}
  90 +
  91 +// 移除
  92 +func (companyService *CompanyService) RemoveCompany(removeCompanyCommand *command.RemoveCompanyCommand) (interface{}, error) {
  93 + if err := removeCompanyCommand.ValidateCommand(); err != nil {
  94 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  95 + }
  96 + data, err := gateway.Partner01Service.Invoke(gateway.CompanyRemove, gs.WithPathParam(common.ObjectToMap(removeCompanyCommand)))
  97 + if err != nil {
  98 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  99 + }
  100 + return data.Data, nil
  101 +}
  102 +
  103 +// 设置公司管理员
  104 +func (companyService *CompanyService) SetCompanyAdmin(setCompanyAdminCommand *command.SetCompanyAdminCommand) (interface{}, error) {
  105 + if err := setCompanyAdminCommand.ValidateCommand(); err != nil {
  106 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  107 + }
  108 + transactionContext, err := factory.CreateTransactionContext(nil)
  109 + if err != nil {
  110 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  111 + }
  112 + if err := transactionContext.StartTransaction(); err != nil {
  113 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  114 + }
  115 + defer func() {
  116 + transactionContext.RollbackTransaction()
  117 + }()
  118 + var companyRepository domain.CompanyRepository
  119 + if value, err := factory.CreateCompanyRepository(map[string]interface{}{
  120 + "transactionContext": transactionContext,
  121 + }); err != nil {
  122 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  123 + } else {
  124 + companyRepository = value
  125 + }
  126 + company, err := companyRepository.FindOne(map[string]interface{}{"companyId": setCompanyAdminCommand.CompanyId})
  127 + if err != nil {
  128 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  129 + }
  130 + if company == nil {
  131 + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(setCompanyAdminCommand.CompanyId)))
  132 + }
  133 +
  134 + newCompanyAdmin := &domain.CompanyAdmin{
  135 + UserAccount: setCompanyAdminCommand.UserAccount, // 用户手机号
  136 + UserName: setCompanyAdminCommand.UserName, // 用户名称
  137 + }
  138 + // 更改公司管理员信息
  139 + if err := company.SetCompanyAdmin(newCompanyAdmin); err != nil {
  140 + return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error())
  141 + }
  142 +
  143 + if company, err := companyRepository.Save(company); err != nil {
  144 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  145 + } else {
  146 + // todo 更改公司管理员
  147 +
  148 + if err := transactionContext.CommitTransaction(); err != nil {
  149 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  150 + }
  151 + return company, nil
  152 + }
  153 +}
  154 +
  155 +// 更新
  156 +func (companyService *CompanyService) UpdateCompany(updateCompanyCommand *command.UpdateCompanyCommand) (interface{}, error) {
  157 + if err := updateCompanyCommand.ValidateCommand(); err != nil {
  158 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  159 + }
  160 + data, err := gateway.Partner01Service.Invoke(gateway.CompanyGet, gs.WithPathParam(common.ObjectToMap(updateCompanyCommand)))
  161 + if err != nil {
  162 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  163 + }
  164 + return data.Data, nil
  165 +}
  166 +
  167 +func NewCompanyService(options map[string]interface{}) *CompanyService {
  168 + newCompanyService := &CompanyService{}
  169 + return newCompanyService
  170 +}
  1 +package factory
  2 +
  3 +import (
  4 + pgTransaction "github.com/linmadan/egglib-go/transaction/pg"
  5 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/domain/service"
  6 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/infrastructure/domainService"
  7 +)
  8 +
  9 +func CreateShippingService(options map[string]interface{}) (service.ShippingGoodsService, error) {
  10 + var transactionContext *pgTransaction.TransactionContext
  11 + if value, ok := options["transactionContext"]; ok {
  12 + transactionContext = value.(*pgTransaction.TransactionContext)
  13 + }
  14 + return domainService.NewShippingGoodsService(transactionContext)
  15 +}
  16 +
  17 +func CreateReceivingService(options map[string]interface{}) (service.ReceivingGoodsService, error) {
  18 + var transactionContext *pgTransaction.TransactionContext
  19 + if value, ok := options["transactionContext"]; ok {
  20 + transactionContext = value.(*pgTransaction.TransactionContext)
  21 + }
  22 + return domainService.NewReceivingGoodsService(transactionContext)
  23 +}
  24 +
  25 +func CreateCancelOrderService(options map[string]interface{}) (service.CancelOrderService, error) {
  26 + var transactionContext *pgTransaction.TransactionContext
  27 + if value, ok := options["transactionContext"]; ok {
  28 + transactionContext = value.(*pgTransaction.TransactionContext)
  29 + }
  30 + return domainService.NewCancelOrderService(transactionContext)
  31 +}
  32 +
  33 +func CreateReturnGoodsService(options map[string]interface{}) (service.ReturnGoodsService, error) {
  34 + var transactionContext *pgTransaction.TransactionContext
  35 + if value, ok := options["transactionContext"]; ok {
  36 + transactionContext = value.(*pgTransaction.TransactionContext)
  37 + }
  38 + return domainService.NewReturnGoodsService(transactionContext)
  39 +}
  1 +package factory
  2 +
  3 +import (
  4 + "github.com/linmadan/egglib-go/transaction/pg"
  5 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/domain"
  6 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/infrastructure/repository"
  7 +)
  8 +
  9 +func CreatePartnerCategoryRepository(options map[string]interface{}) (domain.PartnerCategoryRepository, error) {
  10 + var transactionContext *pg.TransactionContext
  11 + if value, ok := options["transactionContext"]; ok {
  12 + transactionContext = value.(*pg.TransactionContext)
  13 + }
  14 + return repository.NewPartnerCategoryRepository(transactionContext)
  15 +}
  16 +
  17 +func CreatePermissionRepository(options map[string]interface{}) (domain.PermissionRepository, error) {
  18 + var transactionContext *pg.TransactionContext
  19 + if value, ok := options["transactionContext"]; ok {
  20 + transactionContext = value.(*pg.TransactionContext)
  21 + }
  22 + return repository.NewPermissionRepository(transactionContext)
  23 +}
  24 +
  25 +func CreateUserAuthRepository(options map[string]interface{}) (domain.UserAuthRepository, error) {
  26 + var transactionContext *pg.TransactionContext
  27 + if value, ok := options["transactionContext"]; ok {
  28 + transactionContext = value.(*pg.TransactionContext)
  29 + }
  30 + return repository.NewUserAuthRepository(transactionContext)
  31 +}
  32 +
  33 +func CreateOrderRepository(options map[string]interface{}) (domain.OrderRepository, error) {
  34 + var transactionContext *pg.TransactionContext
  35 + if value, ok := options["transactionContext"]; ok {
  36 + transactionContext = value.(*pg.TransactionContext)
  37 + }
  38 + return repository.NewOrderRepository(transactionContext)
  39 +}
  40 +
  41 +func CreateGoodsRepository(options map[string]interface{}) (domain.GoodsRepository, error) {
  42 + var transactionContext *pg.TransactionContext
  43 + if value, ok := options["transactionContext"]; ok {
  44 + transactionContext = value.(*pg.TransactionContext)
  45 + }
  46 + return repository.NewGoodsRepository(transactionContext)
  47 +}
  48 +
  49 +func CreateUserRepository(options map[string]interface{}) (domain.UserRepository, error) {
  50 + var transactionContext *pg.TransactionContext
  51 + if value, ok := options["transactionContext"]; ok {
  52 + transactionContext = value.(*pg.TransactionContext)
  53 + }
  54 + return repository.NewUserRepository(transactionContext)
  55 +}
  56 +
  57 +func CreateCompanyRepository(options map[string]interface{}) (domain.CompanyRepository, error) {
  58 + var transactionContext *pg.TransactionContext
  59 + if value, ok := options["transactionContext"]; ok {
  60 + transactionContext = value.(*pg.TransactionContext)
  61 + }
  62 + return repository.NewCompanyRepository(transactionContext)
  63 +}
  1 +package factory
  2 +
  3 +import (
  4 + "github.com/linmadan/egglib-go/core/application"
  5 + pG "github.com/linmadan/egglib-go/transaction/pg"
  6 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/infrastructure/pg"
  7 +)
  8 +
  9 +func CreateTransactionContext(options map[string]interface{}) (application.TransactionContext, error) {
  10 + return pG.NewPGTransactionContext(pg.DB), nil
  11 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 + "time"
  6 +
  7 + "github.com/beego/beego/v2/core/validation"
  8 +)
  9 +
  10 +type CancelOrderCommand struct {
  11 + // 订单ID
  12 + OrderId int64 `json:"orderId" valid:"Required"`
  13 + // 订单编号
  14 + OrderNo string `json:"orderNo" valid:"Required"`
  15 + // 公司id
  16 + CompanyId int64 `json:"companyId" valid:"Required"`
  17 + // 是否是公司负责人
  18 + IsPrincipal bool `json:"isPrincipal" valid:"Required"`
  19 + // 统一用户id
  20 + Uid int64 `json:"uid" valid:"Required"`
  21 + // 用户账号
  22 + UserAccount string `json:"userAccount" valid:"Required"`
  23 + // 用户头像URL
  24 + UserAvatarUrl string `json:"userAvatarUrl" valid:"Required"`
  25 + // 用户名称
  26 + UserName string `json:"userName" valid:"Required"`
  27 + // 邮件地址
  28 + Email string `json:"email" valid:"Required"`
  29 + // 性别
  30 + Gender int `json:"gender" valid:"Required"`
  31 + // 入职时间
  32 + EntryTime time.Time `json:"entryTime" valid:"Required"`
  33 + // 分机
  34 + Extension string `json:"extension" valid:"Required"`
  35 + // 工作地
  36 + Workplace string `json:"workplace" valid:"Required"`
  37 + // 私人电话
  38 + PrivateNumber string `json:"privateNumber" valid:"Required"`
  39 + // 工号
  40 + JobNumber string `json:"jobNumber" valid:"Required"`
  41 +}
  42 +
  43 +func (cancelOrderCommand *CancelOrderCommand) Valid(validation *validation.Validation) {
  44 + //validation.SetError("CustomValid", "未实现的自定义认证")
  45 +}
  46 +
  47 +func (cancelOrderCommand *CancelOrderCommand) ValidateCommand() error {
  48 + valid := validation.Validation{}
  49 + b, err := valid.Valid(cancelOrderCommand)
  50 + if err != nil {
  51 + return err
  52 + }
  53 + if !b {
  54 + for _, validErr := range valid.Errors {
  55 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  56 + }
  57 + }
  58 + return nil
  59 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 +
  6 + "github.com/beego/beego/v2/core/validation"
  7 +)
  8 +
  9 +type CreateOrderCommand struct {
  10 + // 订单编号
  11 + OrderNo string `json:"orderNo" valid:"Required"`
  12 + // 公司Id
  13 + CompanyId int64 `json:"companyId" valid:"Required"`
  14 + // 买家名称
  15 + BuyerName string `json:"buyerName,omitempty"`
  16 + // 联系信息
  17 + ContactInfo string `json:"contactInfo,omitempty"`
  18 + // 发货地址
  19 + ShippingAddress string `json:"shippingAddress,omitempty"`
  20 + // 订单商品总数
  21 + OrderNum int64 `json:"orderNum" valid:"Required"`
  22 + // 订单总价
  23 + TotalPrice float64 `json:"totalPrice" valid:"Required"`
  24 +}
  25 +
  26 +func (createOrderCommand *CreateOrderCommand) Valid(validation *validation.Validation) {
  27 + validation.SetError("CustomValid", "未实现的自定义认证")
  28 +}
  29 +
  30 +func (createOrderCommand *CreateOrderCommand) ValidateCommand() error {
  31 + valid := validation.Validation{}
  32 + b, err := valid.Valid(createOrderCommand)
  33 + if err != nil {
  34 + return err
  35 + }
  36 + if !b {
  37 + for _, validErr := range valid.Errors {
  38 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  39 + }
  40 + }
  41 + return nil
  42 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 +
  6 + "github.com/beego/beego/v2/core/validation"
  7 +)
  8 +
  9 +type DrawDividendsCommand struct {
  10 + // 参与分红的合伙人
  11 + PartnerId int64 `json:"partnerId" valid:"Required"`
  12 + // 进行分红的订单编号
  13 + OrderNo string `json:"orderNo" valid:"Required"`
  14 +}
  15 +
  16 +func (drawDividendsCommand *DrawDividendsCommand) Valid(validation *validation.Validation) {
  17 + validation.SetError("CustomValid", "未实现的自定义认证")
  18 +}
  19 +
  20 +func (drawDividendsCommand *DrawDividendsCommand) ValidateCommand() error {
  21 + valid := validation.Validation{}
  22 + b, err := valid.Valid(drawDividendsCommand)
  23 + if err != nil {
  24 + return err
  25 + }
  26 + if !b {
  27 + for _, validErr := range valid.Errors {
  28 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  29 + }
  30 + }
  31 + return nil
  32 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 + "time"
  6 +
  7 + "github.com/beego/beego/v2/core/validation"
  8 +)
  9 +
  10 +type ReceiveGoodsCommand struct {
  11 + // 订单号
  12 + OrderNo string `json:"orderNo" valid:"Required"`
  13 + // 是否是公司负责人
  14 + IsPrincipal bool `json:"isPrincipal" valid:"Required"`
  15 + // 统一用户id
  16 + Uid int64 `json:"uid" valid:"Required"`
  17 + // 用户账号
  18 + UserAccount string `json:"userAccount" valid:"Required"`
  19 + // 用户头像URL
  20 + UserAvatarUrl string `json:"userAvatarUrl" valid:"Required"`
  21 + // 用户名称
  22 + UserName string `json:"userName" valid:"Required"`
  23 + // 邮件地址
  24 + Email string `json:"email" valid:"Required"`
  25 + // 性别
  26 + Gender int `json:"gender" valid:"Required"`
  27 + // 入职时间
  28 + EntryTime time.Time `json:"entryTime" valid:"Required"`
  29 + // 分机
  30 + Extension string `json:"extension" valid:"Required"`
  31 + // 工作地
  32 + Workplace string `json:"workplace" valid:"Required"`
  33 + // 私人电话
  34 + PrivateNumber string `json:"privateNumber" valid:"Required"`
  35 + // 工号
  36 + JobNumber string `json:"jobNumber" valid:"Required"`
  37 + // 公司id
  38 + CompanyId int64 `json:"companyId" valid:"Required"`
  39 +}
  40 +
  41 +func (receiveGoodsCommand *ReceiveGoodsCommand) Valid(validation *validation.Validation) {
  42 + //validation.SetError("CustomValid", "未实现的自定义认证")
  43 +}
  44 +
  45 +func (receiveGoodsCommand *ReceiveGoodsCommand) ValidateCommand() error {
  46 + valid := validation.Validation{}
  47 + b, err := valid.Valid(receiveGoodsCommand)
  48 + if err != nil {
  49 + return err
  50 + }
  51 + if !b {
  52 + for _, validErr := range valid.Errors {
  53 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  54 + }
  55 + }
  56 + return nil
  57 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 +
  6 + "github.com/beego/beego/v2/core/validation"
  7 +)
  8 +
  9 +type RemoveOrderCommand struct {
  10 + // 订单id
  11 + OrderId int64 `json:"orderId" valid:"Required"`
  12 +}
  13 +
  14 +func (removeOrderCommand *RemoveOrderCommand) Valid(validation *validation.Validation) {
  15 + validation.SetError("CustomValid", "未实现的自定义认证")
  16 +}
  17 +
  18 +func (removeOrderCommand *RemoveOrderCommand) ValidateCommand() error {
  19 + valid := validation.Validation{}
  20 + b, err := valid.Valid(removeOrderCommand)
  21 + if err != nil {
  22 + return err
  23 + }
  24 + if !b {
  25 + for _, validErr := range valid.Errors {
  26 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  27 + }
  28 + }
  29 + return nil
  30 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 + "time"
  6 +
  7 + "github.com/beego/beego/v2/core/validation"
  8 +)
  9 +
  10 +type ReturnGoodsCommand struct {
  11 + // 订单号
  12 + OrderNo string `json:"orderNo" valid:"Required"`
  13 + // 是否是公司负责人
  14 + IsPrincipal bool `json:"isPrincipal" valid:"Required"`
  15 + // 统一用户id
  16 + Uid int64 `json:"uid" valid:"Required"`
  17 + // 用户账号
  18 + UserAccount string `json:"userAccount" valid:"Required"`
  19 + // 用户头像URL
  20 + UserAvatarUrl string `json:"userAvatarUrl" valid:"Required"`
  21 + // 用户名称
  22 + UserName string `json:"userName" valid:"Required"`
  23 + // 邮件地址
  24 + Email string `json:"email" valid:"Required"`
  25 + // 性别
  26 + Gender int `json:"gender" valid:"Required"`
  27 + // 入职时间
  28 + EntryTime time.Time `json:"entryTime" valid:"Required"`
  29 + // 分机
  30 + Extension string `json:"extension" valid:"Required"`
  31 + // 工作地
  32 + Workplace string `json:"workplace" valid:"Required"`
  33 + // 私人电话
  34 + PrivateNumber string `json:"privateNumber" valid:"Required"`
  35 + // 工号
  36 + JobNumber string `json:"jobNumber" valid:"Required"`
  37 + // 公司id
  38 + CompanyId int64 `json:"companyId" valid:"Required"`
  39 +}
  40 +
  41 +func (returnGoodsCommand *ReturnGoodsCommand) Valid(validation *validation.Validation) {
  42 + //validation.SetError("CustomValid", "未实现的自定义认证")
  43 +}
  44 +
  45 +func (returnGoodsCommand *ReturnGoodsCommand) ValidateCommand() error {
  46 + valid := validation.Validation{}
  47 + b, err := valid.Valid(returnGoodsCommand)
  48 + if err != nil {
  49 + return err
  50 + }
  51 + if !b {
  52 + for _, validErr := range valid.Errors {
  53 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  54 + }
  55 + }
  56 + return nil
  57 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 +
  6 + "github.com/beego/beego/v2/core/validation"
  7 +)
  8 +
  9 +type ShippingGoodsCommand struct {
  10 + // 订单ID
  11 + OrderId int `json:"orderId" valid:"Required"`
  12 + // 发货单号
  13 + DeliveryCode string `json:"deliveryCode" valid:"Required"`
  14 + // 订单编号
  15 + OrderNo string `json:"orderNo" valid:"Required"`
  16 + // 订单数量
  17 + OrderNum int64 `json:"orderNum" valid:"Required"`
  18 +}
  19 +
  20 +func (shippingGoodsCommand *ShippingGoodsCommand) Valid(validation *validation.Validation) {
  21 + //_ = validation.SetError("CustomValid", "未实现的自定义认证")
  22 +}
  23 +
  24 +func (shippingGoodsCommand *ShippingGoodsCommand) ValidateCommand() error {
  25 + valid := validation.Validation{}
  26 + b, err := valid.Valid(shippingGoodsCommand)
  27 + if err != nil {
  28 + return err
  29 + }
  30 + if !b {
  31 + for _, validErr := range valid.Errors {
  32 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  33 + }
  34 + }
  35 + return nil
  36 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 +
  6 + "github.com/beego/beego/v2/core/validation"
  7 +)
  8 +
  9 +type UpdateOrderCommand struct {
  10 + // 订单id
  11 + OrderId int64 `json:"orderId" valid:"Required"`
  12 +}
  13 +
  14 +func (updateOrderCommand *UpdateOrderCommand) Valid(validation *validation.Validation) {
  15 + validation.SetError("CustomValid", "未实现的自定义认证")
  16 +}
  17 +
  18 +func (updateOrderCommand *UpdateOrderCommand) ValidateCommand() error {
  19 + valid := validation.Validation{}
  20 + b, err := valid.Valid(updateOrderCommand)
  21 + if err != nil {
  22 + return err
  23 + }
  24 + if !b {
  25 + for _, validErr := range valid.Errors {
  26 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  27 + }
  28 + }
  29 + return nil
  30 +}
  1 +package query
  2 +
  3 +import (
  4 + "fmt"
  5 +
  6 + "github.com/beego/beego/v2/core/validation"
  7 +)
  8 +
  9 +type GetOrderQuery struct {
  10 + // 订单id
  11 + OrderId int64 `json:"orderId" valid:"Required"`
  12 +}
  13 +
  14 +func (getOrderQuery *GetOrderQuery) Valid(validation *validation.Validation) {
  15 + validation.SetError("CustomValid", "未实现的自定义认证")
  16 +}
  17 +
  18 +func (getOrderQuery *GetOrderQuery) ValidateQuery() error {
  19 + valid := validation.Validation{}
  20 + b, err := valid.Valid(getOrderQuery)
  21 + if err != nil {
  22 + return err
  23 + }
  24 + if !b {
  25 + for _, validErr := range valid.Errors {
  26 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  27 + }
  28 + }
  29 + return nil
  30 +}
  1 +package query
  2 +
  3 +import (
  4 + "fmt"
  5 +
  6 + "github.com/beego/beego/v2/core/validation"
  7 +)
  8 +
  9 +type ListOrderQuery struct {
  10 + // 查询偏离量
  11 + Offset int `json:"offset" valid:"Required"`
  12 + // 查询限制
  13 + Limit int `json:"limit" valid:"Required"`
  14 +}
  15 +
  16 +func (listOrderQuery *ListOrderQuery) Valid(validation *validation.Validation) {
  17 + validation.SetError("CustomValid", "未实现的自定义认证")
  18 +}
  19 +
  20 +func (listOrderQuery *ListOrderQuery) ValidateQuery() error {
  21 + valid := validation.Validation{}
  22 + b, err := valid.Valid(listOrderQuery)
  23 + if err != nil {
  24 + return err
  25 + }
  26 + if !b {
  27 + for _, validErr := range valid.Errors {
  28 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  29 + }
  30 + }
  31 + return nil
  32 +}
  1 +package service
  2 +
  3 +import (
  4 + "fmt"
  5 + "github.com/linmadan/egglib-go/core/application"
  6 + "github.com/linmadan/egglib-go/utils/tool_funs"
  7 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/application/factory"
  8 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/application/order/command"
  9 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/application/order/query"
  10 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/domain"
  11 + "strconv"
  12 +)
  13 +
  14 +// 订单基础服务
  15 +type OrderService struct {
  16 +}
  17 +
  18 +// 取消订单
  19 +func (orderService *OrderService) CancelOrder(cancelCommand *command.CancelOrderCommand) (interface{}, error) {
  20 + if err := cancelCommand.ValidateCommand(); err != nil {
  21 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  22 + }
  23 + transactionContext, err := factory.CreateTransactionContext(nil)
  24 + if err != nil {
  25 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  26 + }
  27 + if err := transactionContext.StartTransaction(); err != nil {
  28 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  29 + }
  30 + defer func() {
  31 + _ = transactionContext.RollbackTransaction()
  32 + }()
  33 + if err := transactionContext.CommitTransaction(); err != nil {
  34 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  35 + }
  36 + return nil, nil
  37 +}
  38 +
  39 +// 创建订单增删改查
  40 +func (orderService *OrderService) CreateOrder(createOrderCommand *command.CreateOrderCommand) (interface{}, error) {
  41 + if err := createOrderCommand.ValidateCommand(); err != nil {
  42 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  43 + }
  44 + transactionContext, err := factory.CreateTransactionContext(nil)
  45 + if err != nil {
  46 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  47 + }
  48 + if err := transactionContext.StartTransaction(); err != nil {
  49 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  50 + }
  51 + defer func() {
  52 + _ = transactionContext.RollbackTransaction()
  53 + }()
  54 + newOrder := &domain.Order{
  55 + OrderNo: createOrderCommand.OrderNo,
  56 + CompanyId: createOrderCommand.CompanyId,
  57 + Buyer: &domain.BuyerInfo{
  58 + BuyerName: createOrderCommand.BuyerName,
  59 + },
  60 + TotalPrice: createOrderCommand.TotalPrice,
  61 + }
  62 + var orderRepository domain.OrderRepository
  63 + if value, err := factory.CreateOrderRepository(map[string]interface{}{
  64 + "transactionContext": transactionContext,
  65 + }); err != nil {
  66 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  67 + } else {
  68 + orderRepository = value
  69 + }
  70 + if order, err := orderRepository.Save(newOrder); err != nil {
  71 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  72 + } else {
  73 + if err := transactionContext.CommitTransaction(); err != nil {
  74 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  75 + }
  76 + return order, nil
  77 + }
  78 +}
  79 +
  80 +// 订单分红服务
  81 +func (orderService *OrderService) DrawDividends(drawDividendsCommand *command.DrawDividendsCommand) (interface{}, error) {
  82 + if err := drawDividendsCommand.ValidateCommand(); err != nil {
  83 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  84 + }
  85 + transactionContext, err := factory.CreateTransactionContext(nil)
  86 + if err != nil {
  87 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  88 + }
  89 + if err := transactionContext.StartTransaction(); err != nil {
  90 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  91 + }
  92 + defer func() {
  93 + _ = transactionContext.RollbackTransaction()
  94 + }()
  95 + if err := transactionContext.CommitTransaction(); err != nil {
  96 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  97 + }
  98 + return nil, nil
  99 +}
  100 +
  101 +// 返回订单增删改查
  102 +func (orderService *OrderService) GetOrder(getOrderQuery *query.GetOrderQuery) (interface{}, error) {
  103 + if err := getOrderQuery.ValidateQuery(); err != nil {
  104 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  105 + }
  106 + transactionContext, err := factory.CreateTransactionContext(nil)
  107 + if err != nil {
  108 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  109 + }
  110 + if err := transactionContext.StartTransaction(); err != nil {
  111 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  112 + }
  113 + defer func() {
  114 + _ = transactionContext.RollbackTransaction()
  115 + }()
  116 + var orderRepository domain.OrderRepository
  117 + if value, err := factory.CreateOrderRepository(map[string]interface{}{
  118 + "transactionContext": transactionContext,
  119 + }); err != nil {
  120 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  121 + } else {
  122 + orderRepository = value
  123 + }
  124 + order, err := orderRepository.FindOne(map[string]interface{}{"orderId": getOrderQuery.OrderId})
  125 + if err != nil {
  126 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  127 + }
  128 + if order == nil {
  129 + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", strconv.FormatInt(getOrderQuery.OrderId, 10)))
  130 + } else {
  131 + if err := transactionContext.CommitTransaction(); err != nil {
  132 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  133 + }
  134 + return order, nil
  135 + }
  136 +}
  137 +
  138 +// 返回订单增删改查列表
  139 +func (orderService *OrderService) ListOrder(listOrderQuery *query.ListOrderQuery) (interface{}, error) {
  140 + if err := listOrderQuery.ValidateQuery(); err != nil {
  141 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  142 + }
  143 + transactionContext, err := factory.CreateTransactionContext(nil)
  144 + if err != nil {
  145 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  146 + }
  147 + if err := transactionContext.StartTransaction(); err != nil {
  148 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  149 + }
  150 + defer func() {
  151 + _ = transactionContext.RollbackTransaction()
  152 + }()
  153 + var orderRepository domain.OrderRepository
  154 + if value, err := factory.CreateOrderRepository(map[string]interface{}{
  155 + "transactionContext": transactionContext,
  156 + }); err != nil {
  157 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  158 + } else {
  159 + orderRepository = value
  160 + }
  161 + if count, orders, err := orderRepository.Find(tool_funs.SimpleStructToMap(listOrderQuery)); err != nil {
  162 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  163 + } else {
  164 + if err := transactionContext.CommitTransaction(); err != nil {
  165 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  166 + }
  167 + return map[string]interface{}{
  168 + "count": count,
  169 + "orders": orders,
  170 + }, nil
  171 + }
  172 +}
  173 +
  174 +// 订单收货服务
  175 +func (orderService *OrderService) ReceiveGoods(receivingCommand *command.ReceiveGoodsCommand) (interface{}, error) {
  176 + if err := receivingCommand.ValidateCommand(); err != nil {
  177 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  178 + }
  179 + transactionContext, err := factory.CreateTransactionContext(nil)
  180 + if err != nil {
  181 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  182 + }
  183 + if err := transactionContext.StartTransaction(); err != nil {
  184 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  185 + }
  186 + defer func() {
  187 + _ = transactionContext.RollbackTransaction()
  188 + }()
  189 + if err := transactionContext.CommitTransaction(); err != nil {
  190 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  191 + }
  192 + return nil, nil
  193 +}
  194 +
  195 +// 移除订单增删改查
  196 +func (orderService *OrderService) RemoveOrder(removeOrderCommand *command.RemoveOrderCommand) (interface{}, error) {
  197 + if err := removeOrderCommand.ValidateCommand(); err != nil {
  198 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  199 + }
  200 + transactionContext, err := factory.CreateTransactionContext(nil)
  201 + if err != nil {
  202 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  203 + }
  204 + if err := transactionContext.StartTransaction(); err != nil {
  205 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  206 + }
  207 + defer func() {
  208 + _ = transactionContext.RollbackTransaction()
  209 + }()
  210 + var orderRepository domain.OrderRepository
  211 + if value, err := factory.CreateOrderRepository(map[string]interface{}{
  212 + "transactionContext": transactionContext,
  213 + }); err != nil {
  214 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  215 + } else {
  216 + orderRepository = value
  217 + }
  218 + order, err := orderRepository.FindOne(map[string]interface{}{"orderId": removeOrderCommand.OrderId})
  219 + if err != nil {
  220 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  221 + }
  222 + if order == nil {
  223 + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", strconv.FormatInt(removeOrderCommand.OrderId, 10)))
  224 + }
  225 + if order, err := orderRepository.Remove(order); err != nil {
  226 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  227 + } else {
  228 + if err := transactionContext.CommitTransaction(); err != nil {
  229 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  230 + }
  231 + return order, nil
  232 + }
  233 +}
  234 +
  235 +// 订单退货服务
  236 +func (orderService *OrderService) ReturnGoods(returnGoodsCommand *command.ReturnGoodsCommand) (interface{}, error) {
  237 + if err := returnGoodsCommand.ValidateCommand(); err != nil {
  238 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  239 + }
  240 + transactionContext, err := factory.CreateTransactionContext(nil)
  241 + if err != nil {
  242 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  243 + }
  244 + if err := transactionContext.StartTransaction(); err != nil {
  245 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  246 + }
  247 + defer func() {
  248 + _ = transactionContext.RollbackTransaction()
  249 + }()
  250 + if err := transactionContext.CommitTransaction(); err != nil {
  251 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  252 + }
  253 + return nil, nil
  254 +}
  255 +
  256 +// 订单发货服务
  257 +func (orderService *OrderService) ShippingGoods(shippingGoodsCommand *command.ShippingGoodsCommand) (interface{}, error) {
  258 + if err := shippingGoodsCommand.ValidateCommand(); err != nil {
  259 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  260 + }
  261 + transactionContext, err := factory.CreateTransactionContext(nil)
  262 + if err != nil {
  263 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  264 + }
  265 + if err := transactionContext.StartTransaction(); err != nil {
  266 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  267 + }
  268 + defer func() {
  269 + _ = transactionContext.RollbackTransaction()
  270 + }()
  271 + if err := transactionContext.CommitTransaction(); err != nil {
  272 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  273 + }
  274 + return nil, nil
  275 +}
  276 +
  277 +// 更新订单增删改查
  278 +func (orderService *OrderService) UpdateOrder(updateOrderCommand *command.UpdateOrderCommand) (interface{}, error) {
  279 + if err := updateOrderCommand.ValidateCommand(); err != nil {
  280 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  281 + }
  282 + transactionContext, err := factory.CreateTransactionContext(nil)
  283 + if err != nil {
  284 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  285 + }
  286 + if err := transactionContext.StartTransaction(); err != nil {
  287 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  288 + }
  289 + defer func() {
  290 + _ = transactionContext.RollbackTransaction()
  291 + }()
  292 + var orderRepository domain.OrderRepository
  293 + if value, err := factory.CreateOrderRepository(map[string]interface{}{
  294 + "transactionContext": transactionContext,
  295 + }); err != nil {
  296 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  297 + } else {
  298 + orderRepository = value
  299 + }
  300 + order, err := orderRepository.FindOne(map[string]interface{}{"orderId": updateOrderCommand.OrderId})
  301 + if err != nil {
  302 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  303 + }
  304 + if order == nil {
  305 + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", strconv.FormatInt(updateOrderCommand.OrderId, 10)))
  306 + }
  307 + if err := order.Update(tool_funs.SimpleStructToMap(updateOrderCommand)); err != nil {
  308 + return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error())
  309 + }
  310 + if order, err := orderRepository.Save(order); err != nil {
  311 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  312 + } else {
  313 + if err := transactionContext.CommitTransaction(); err != nil {
  314 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  315 + }
  316 + return order, nil
  317 + }
  318 +}
  319 +
  320 +func NewOrderService(options map[string]interface{}) *OrderService {
  321 + newOrderService := &OrderService{}
  322 + return newOrderService
  323 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 +
  6 + "github.com/beego/beego/v2/core/validation"
  7 +)
  8 +
  9 +type CreatePartnerCommand struct {
  10 +}
  11 +
  12 +func (createPartnerCommand *CreatePartnerCommand) Valid(validation *validation.Validation) {
  13 + validation.SetError("CustomValid", "未实现的自定义认证")
  14 +}
  15 +
  16 +func (createPartnerCommand *CreatePartnerCommand) ValidateCommand() error {
  17 + valid := validation.Validation{}
  18 + b, err := valid.Valid(createPartnerCommand)
  19 + if err != nil {
  20 + return err
  21 + }
  22 + if !b {
  23 + for _, validErr := range valid.Errors {
  24 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  25 + }
  26 + }
  27 + return nil
  28 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 +
  6 + "github.com/beego/beego/v2/core/validation"
  7 +)
  8 +
  9 +type RemovePartnerCommand struct {
  10 + // 合伙人id
  11 + PartnerId int64 `json:"partnerId" valid:"Required"`
  12 +}
  13 +
  14 +func (removePartnerCommand *RemovePartnerCommand) Valid(validation *validation.Validation) {
  15 + validation.SetError("CustomValid", "未实现的自定义认证")
  16 +}
  17 +
  18 +func (removePartnerCommand *RemovePartnerCommand) ValidateCommand() error {
  19 + valid := validation.Validation{}
  20 + b, err := valid.Valid(removePartnerCommand)
  21 + if err != nil {
  22 + return err
  23 + }
  24 + if !b {
  25 + for _, validErr := range valid.Errors {
  26 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  27 + }
  28 + }
  29 + return nil
  30 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 +
  6 + "github.com/beego/beego/v2/core/validation"
  7 +)
  8 +
  9 +type UpdatePartnerCommand struct {
  10 + // 合伙人id
  11 + PartnerId int64 `json:"partnerId" valid:"Required"`
  12 +}
  13 +
  14 +func (updatePartnerCommand *UpdatePartnerCommand) Valid(validation *validation.Validation) {
  15 + validation.SetError("CustomValid", "未实现的自定义认证")
  16 +}
  17 +
  18 +func (updatePartnerCommand *UpdatePartnerCommand) ValidateCommand() error {
  19 + valid := validation.Validation{}
  20 + b, err := valid.Valid(updatePartnerCommand)
  21 + if err != nil {
  22 + return err
  23 + }
  24 + if !b {
  25 + for _, validErr := range valid.Errors {
  26 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  27 + }
  28 + }
  29 + return nil
  30 +}
  1 +package query
  2 +
  3 +import (
  4 + "fmt"
  5 +
  6 + "github.com/beego/beego/v2/core/validation"
  7 +)
  8 +
  9 +type GetPartnerQuery struct {
  10 + // 合伙人id
  11 + PartnerId int64 `json:"partnerId" valid:"Required"`
  12 +}
  13 +
  14 +func (getPartnerQuery *GetPartnerQuery) Valid(validation *validation.Validation) {
  15 + validation.SetError("CustomValid", "未实现的自定义认证")
  16 +}
  17 +
  18 +func (getPartnerQuery *GetPartnerQuery) ValidateQuery() error {
  19 + valid := validation.Validation{}
  20 + b, err := valid.Valid(getPartnerQuery)
  21 + if err != nil {
  22 + return err
  23 + }
  24 + if !b {
  25 + for _, validErr := range valid.Errors {
  26 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  27 + }
  28 + }
  29 + return nil
  30 +}
  1 +package query
  2 +
  3 +import (
  4 + "fmt"
  5 +
  6 + "github.com/beego/beego/v2/core/validation"
  7 +)
  8 +
  9 +type ListPartnerQuery struct {
  10 + // 查询偏离量
  11 + Offset int `json:"offset" valid:"Required"`
  12 + // 查询限制
  13 + Limit int `json:"limit" valid:"Required"`
  14 +}
  15 +
  16 +func (listPartnerQuery *ListPartnerQuery) Valid(validation *validation.Validation) {
  17 + validation.SetError("CustomValid", "未实现的自定义认证")
  18 +}
  19 +
  20 +func (listPartnerQuery *ListPartnerQuery) ValidateQuery() error {
  21 + valid := validation.Validation{}
  22 + b, err := valid.Valid(listPartnerQuery)
  23 + if err != nil {
  24 + return err
  25 + }
  26 + if !b {
  27 + for _, validErr := range valid.Errors {
  28 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  29 + }
  30 + }
  31 + return nil
  32 +}
  1 +package query
  2 +
  3 +import (
  4 + "fmt"
  5 +
  6 + "github.com/beego/beego/v2/core/validation"
  7 +)
  8 +
  9 +type PartnerCategoriesQuery struct {
  10 +}
  11 +
  12 +func (partnerCategoriesQuery *PartnerCategoriesQuery) Valid(validation *validation.Validation) {
  13 +
  14 +}
  15 +
  16 +func (partnerCategoriesQuery *PartnerCategoriesQuery) ValidateQuery() error {
  17 + valid := validation.Validation{}
  18 + b, err := valid.Valid(partnerCategoriesQuery)
  19 + if err != nil {
  20 + return err
  21 + }
  22 + if !b {
  23 + for _, validErr := range valid.Errors {
  24 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  25 + }
  26 + }
  27 + return nil
  28 +}
  1 +package service
  2 +
  3 +import (
  4 + "github.com/linmadan/egglib-go/core/application"
  5 + //"github.com/linmadan/egglib-go/utils/tool_funs"
  6 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/application/factory"
  7 + //"gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/application/partner/command"
  8 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/application/partner/query"
  9 + //"gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/domain"
  10 +)
  11 +
  12 +// 合伙人服务
  13 +type PartnerService struct {
  14 +}
  15 +
  16 +//// 创建合伙人增删改查
  17 +//func (partnerService *PartnerService) CreatePartner(createPartnerCommand *command.CreatePartnerCommand) (interface{}, error) {
  18 +// if err := createPartnerCommand.ValidateCommand(); err != nil {
  19 +// return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  20 +// }
  21 +// transactionContext, err := factory.CreateTransactionContext(nil)
  22 +// if err != nil {
  23 +// return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  24 +// }
  25 +// if err := transactionContext.StartTransaction(); err != nil {
  26 +// return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  27 +// }
  28 +// defer func() {
  29 +// transactionContext.RollbackTransaction()
  30 +// }()
  31 +// newPartner := &domain.Partner{}
  32 +// var partnerRepository partner.PartnerRepository
  33 +// if value, err := factory.CreatePartnerRepository(map[string]interface{}{
  34 +// "transactionContext": transactionContext,
  35 +// }); err != nil {
  36 +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  37 +// } else {
  38 +// partnerRepository = value
  39 +// }
  40 +// if partner, err := partnerRepository.Save(newPartner); err != nil {
  41 +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  42 +// } else {
  43 +// if err := transactionContext.CommitTransaction(); err != nil {
  44 +// return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  45 +// }
  46 +// return partner, nil
  47 +// }
  48 +//}
  49 +//
  50 +//// 返回合伙人增删改查
  51 +//func (partnerService *PartnerService) GetPartner(getPartnerQuery *query.GetPartnerQuery) (interface{}, error) {
  52 +// if err := getPartnerQuery.ValidateQuery(); err != nil {
  53 +// return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  54 +// }
  55 +// transactionContext, err := factory.CreateTransactionContext(nil)
  56 +// if err != nil {
  57 +// return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  58 +// }
  59 +// if err := transactionContext.StartTransaction(); err != nil {
  60 +// return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  61 +// }
  62 +// defer func() {
  63 +// transactionContext.RollbackTransaction()
  64 +// }()
  65 +// var partnerRepository partner.PartnerRepository
  66 +// if value, err := factory.CreatePartnerRepository(map[string]interface{}{
  67 +// "transactionContext": transactionContext,
  68 +// }); err != nil {
  69 +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  70 +// } else {
  71 +// partnerRepository = value
  72 +// }
  73 +// partner, err := partnerRepository.FindOne(map[string]interface{}{"partnerId": getPartnerQuery.PartnerId})
  74 +// if err != nil {
  75 +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  76 +// }
  77 +// if partner == nil {
  78 +// return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(getPartnerQuery.PartnerId)))
  79 +// } else {
  80 +// if err := transactionContext.CommitTransaction(); err != nil {
  81 +// return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  82 +// }
  83 +// return partner, nil
  84 +// }
  85 +//}
  86 +//
  87 +//// 返回合伙人增删改查列表
  88 +//func (partnerService *PartnerService) ListPartner(listPartnerQuery *query.ListPartnerQuery) (interface{}, error) {
  89 +// if err := listPartnerQuery.ValidateQuery(); err != nil {
  90 +// return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  91 +// }
  92 +// transactionContext, err := factory.CreateTransactionContext(nil)
  93 +// if err != nil {
  94 +// return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  95 +// }
  96 +// if err := transactionContext.StartTransaction(); err != nil {
  97 +// return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  98 +// }
  99 +// defer func() {
  100 +// transactionContext.RollbackTransaction()
  101 +// }()
  102 +// var partnerRepository partner.PartnerRepository
  103 +// if value, err := factory.CreatePartnerRepository(map[string]interface{}{
  104 +// "transactionContext": transactionContext,
  105 +// }); err != nil {
  106 +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  107 +// } else {
  108 +// partnerRepository = value
  109 +// }
  110 +// if count, partners, err := partnerRepository.Find(tool_funs.SimpleStructToMap(listPartnerQuery)); err != nil {
  111 +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  112 +// } else {
  113 +// if err := transactionContext.CommitTransaction(); err != nil {
  114 +// return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  115 +// }
  116 +// return map[string]interface{}{
  117 +// "count": count,
  118 +// "partners": partners,
  119 +// }, nil
  120 +// }
  121 +//}
  122 +
  123 +// 合伙人分类列表
  124 +func (partnerService *PartnerService) PartnerCategories(partnerCategoriesQuery *query.PartnerCategoriesQuery) (interface{}, error) {
  125 + if err := partnerCategoriesQuery.ValidateQuery(); err != nil {
  126 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  127 + }
  128 + transactionContext, err := factory.CreateTransactionContext(nil)
  129 + if err != nil {
  130 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  131 + }
  132 + if err := transactionContext.StartTransaction(); err != nil {
  133 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  134 + }
  135 + defer func() {
  136 + transactionContext.RollbackTransaction()
  137 + }()
  138 + PartnerCategoryRepository, err := factory.CreatePartnerCategoryRepository(map[string]interface{}{"transactionContext": transactionContext})
  139 + if err != nil {
  140 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  141 + }
  142 + total, categories, err := PartnerCategoryRepository.Find(map[string]interface{}{})
  143 + if err != nil {
  144 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  145 + }
  146 + if err := transactionContext.CommitTransaction(); err != nil {
  147 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  148 + }
  149 + return map[string]interface{}{"total": total, "categories": categories}, nil
  150 +}
  151 +
  152 +//// 移除合伙人增删改查
  153 +//func (partnerService *PartnerService) RemovePartner(removePartnerCommand *command.RemovePartnerCommand) (interface{}, error) {
  154 +// if err := removePartnerCommand.ValidateCommand(); err != nil {
  155 +// return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  156 +// }
  157 +// transactionContext, err := factory.CreateTransactionContext(nil)
  158 +// if err != nil {
  159 +// return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  160 +// }
  161 +// if err := transactionContext.StartTransaction(); err != nil {
  162 +// return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  163 +// }
  164 +// defer func() {
  165 +// transactionContext.RollbackTransaction()
  166 +// }()
  167 +// var partnerRepository partner.PartnerRepository
  168 +// if value, err := factory.CreatePartnerRepository(map[string]interface{}{
  169 +// "transactionContext": transactionContext,
  170 +// }); err != nil {
  171 +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  172 +// } else {
  173 +// partnerRepository = value
  174 +// }
  175 +// partner, err := partnerRepository.FindOne(map[string]interface{}{"partnerId": removePartnerCommand.PartnerId})
  176 +// if err != nil {
  177 +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  178 +// }
  179 +// if partner == nil {
  180 +// return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(removePartnerCommand.PartnerId)))
  181 +// }
  182 +// if partner, err := partnerRepository.Remove(partner); err != nil {
  183 +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  184 +// } else {
  185 +// if err := transactionContext.CommitTransaction(); err != nil {
  186 +// return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  187 +// }
  188 +// return partner, nil
  189 +// }
  190 +//}
  191 +//
  192 +//// 更新合伙人增删改查
  193 +//func (partnerService *PartnerService) UpdatePartner(updatePartnerCommand *command.UpdatePartnerCommand) (interface{}, error) {
  194 +// if err := updatePartnerCommand.ValidateCommand(); err != nil {
  195 +// return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  196 +// }
  197 +// transactionContext, err := factory.CreateTransactionContext(nil)
  198 +// if err != nil {
  199 +// return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  200 +// }
  201 +// if err := transactionContext.StartTransaction(); err != nil {
  202 +// return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  203 +// }
  204 +// defer func() {
  205 +// transactionContext.RollbackTransaction()
  206 +// }()
  207 +// var partnerRepository partner.PartnerRepository
  208 +// if value, err := factory.CreatePartnerRepository(map[string]interface{}{
  209 +// "transactionContext": transactionContext,
  210 +// }); err != nil {
  211 +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  212 +// } else {
  213 +// partnerRepository = value
  214 +// }
  215 +// partner, err := partnerRepository.FindOne(map[string]interface{}{"partnerId": updatePartnerCommand.PartnerId})
  216 +// if err != nil {
  217 +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  218 +// }
  219 +// if partner == nil {
  220 +// return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(updatePartnerCommand.PartnerId)))
  221 +// }
  222 +// if err := partner.Update(tool_funs.SimpleStructToMap(updatePartnerCommand)); err != nil {
  223 +// return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error())
  224 +// }
  225 +// if partner, err := partnerRepository.Save(partner); err != nil {
  226 +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  227 +// } else {
  228 +// if err := transactionContext.CommitTransaction(); err != nil {
  229 +// return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  230 +// }
  231 +// return partner, nil
  232 +// }
  233 +//}
  234 +
  235 +func NewPartnerService(options map[string]interface{}) *PartnerService {
  236 + newPartnerService := &PartnerService{}
  237 + return newPartnerService
  238 +}
  1 +package query
  2 +
  3 +import (
  4 + "fmt"
  5 +
  6 + "github.com/beego/beego/v2/core/validation"
  7 +)
  8 +
  9 +type MenusQuery struct {
  10 + // 用户id
  11 + UserId int64 `json:"userId"`
  12 +}
  13 +
  14 +func (menusQuery *MenusQuery) Valid(validation *validation.Validation) {
  15 +
  16 +}
  17 +
  18 +func (menusQuery *MenusQuery) ValidateQuery() error {
  19 + valid := validation.Validation{}
  20 + b, err := valid.Valid(menusQuery)
  21 + if err != nil {
  22 + return err
  23 + }
  24 + if !b {
  25 + for _, validErr := range valid.Errors {
  26 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  27 + }
  28 + }
  29 + return nil
  30 +}
  1 +package service
  2 +
  3 +import (
  4 + "github.com/linmadan/egglib-go/core/application"
  5 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/application/factory"
  6 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/application/permission/query"
  7 +)
  8 +
  9 +// 权限服务
  10 +type PermissionService struct {
  11 +}
  12 +
  13 +// 根据当前用户返回权限列表
  14 +func (permissionService *PermissionService) Menus(menusQuery *query.MenusQuery) (interface{}, error) {
  15 + if err := menusQuery.ValidateQuery(); err != nil {
  16 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  17 + }
  18 + transactionContext, err := factory.CreateTransactionContext(nil)
  19 + if err != nil {
  20 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  21 + }
  22 + if err := transactionContext.StartTransaction(); err != nil {
  23 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  24 + }
  25 + defer func() {
  26 + transactionContext.RollbackTransaction()
  27 + }()
  28 +
  29 + PermissionRepository, err := factory.CreatePermissionRepository(map[string]interface{}{"transactionContext": transactionContext})
  30 + if err != nil {
  31 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  32 + }
  33 + total, permissions, err := PermissionRepository.Find(map[string]interface{}{})
  34 + if err != nil {
  35 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  36 + }
  37 + if err := transactionContext.CommitTransaction(); err != nil {
  38 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  39 + }
  40 + return map[string]interface{}{"total": total, "permissions": permissions}, nil
  41 +}
  42 +
  43 +func NewPermissionService(options map[string]interface{}) *PermissionService {
  44 + newPermissionService := &PermissionService{}
  45 + return newPermissionService
  46 +}
  1 +package constant
  2 +
  3 +import "os"
  4 +
  5 +const SERVICE_NAME = "partner01"
  6 +
  7 +var LOG_LEVEL = "debug"
  8 +
  9 +func init() {
  10 + if os.Getenv("LOG_LEVEL") != "" {
  11 + LOG_LEVEL = os.Getenv("LOG_LEVEL")
  12 + }
  13 +}
  1 +package constant
  2 +
  3 +import "os"
  4 +
  5 +var (
  6 + PARTER01_GATEWAY_ADDRESS = "http://127.0.0.1:8080"
  7 +)
  8 +
  9 +func init() {
  10 + if os.Getenv("PARTER01_GATEWAY_ADDRESS") != "" {
  11 + PARTER01_GATEWAY_ADDRESS = os.Getenv("PARTER01_GATEWAY_ADDRESS")
  12 + }
  13 +}
  1 +package constant
  2 +
  3 +import "os"
  4 +
  5 +var POSTGRESQL_DB_NAME = "partner01"
  6 +var POSTGRESQL_USER = "postgres"
  7 +var POSTGRESQL_PASSWORD = "eagle1010"
  8 +var POSTGRESQL_HOST = "114.55.200.59"
  9 +var POSTGRESQL_PORT = "31543"
  10 +var DISABLE_CREATE_TABLE = false
  11 +var DISABLE_SQL_GENERATE_PRINT = false
  12 +
  13 +func init() {
  14 + if os.Getenv("POSTGRESQL_DB_NAME") != "" {
  15 + POSTGRESQL_DB_NAME = os.Getenv("POSTGRESQL_DB_NAME")
  16 + }
  17 + if os.Getenv("POSTGRESQL_USER") != "" {
  18 + POSTGRESQL_USER = os.Getenv("POSTGRESQL_USER")
  19 + }
  20 + if os.Getenv("POSTGRESQL_PASSWORD") != "" {
  21 + POSTGRESQL_PASSWORD = os.Getenv("POSTGRESQL_PASSWORD")
  22 + }
  23 + if os.Getenv("POSTGRESQL_HOST") != "" {
  24 + POSTGRESQL_HOST = os.Getenv("POSTGRESQL_HOST")
  25 + }
  26 + if os.Getenv("POSTGRESQL_PORT") != "" {
  27 + POSTGRESQL_PORT = os.Getenv("POSTGRESQL_PORT")
  28 + }
  29 + if os.Getenv("DISABLE_CREATE_TABLE") != "" {
  30 + DISABLE_CREATE_TABLE = true
  31 + }
  32 + if os.Getenv("DISABLE_SQL_GENERATE_PRINT") != "" {
  33 + DISABLE_SQL_GENERATE_PRINT = true
  34 + }
  35 +}
  1 +package domain
  2 +
  3 +import (
  4 + "github.com/dgrijalva/jwt-go"
  5 + eggJwt "github.com/linmadan/egglib-go/utils/jwt"
  6 + "time"
  7 +)
  8 +
  9 +const (
  10 + secret = "$^%$Rdefault&*^(*&"
  11 +)
  12 +
  13 +const (
  14 + AccessTokenExpire = 3600
  15 +)
  16 +
  17 +type UserTokenClaim struct {
  18 + jwt.StandardClaims
  19 + UserId int64 `json:"userId"`
  20 + CompanyId int64 `json:"companyId"`
  21 +}
  22 +
  23 +func NewUserTokenClaim(userId, companyId int64, expire int64) UserTokenClaim {
  24 + return UserTokenClaim{
  25 + UserId: userId,
  26 + CompanyId: companyId,
  27 + StandardClaims: jwt.StandardClaims{ExpiresAt: expire},
  28 + }
  29 +}
  30 +
  31 +func SignToken(userId int64, companyId int64) string {
  32 + claim := NewUserTokenClaim(int64(userId), companyId, time.Now().Add(time.Second*AccessTokenExpire).Unix())
  33 + token, _ := eggJwt.Sign(claim, secret, "")
  34 + return token
  35 +}
  36 +
  37 +func ValidToken(token string, claims *UserTokenClaim) (bool, error) {
  38 + result, c, err := eggJwt.Valid(token, claims, secret)
  39 + claims = c.Claims.(*UserTokenClaim)
  40 + return result, err
  41 +}
  1 +package domain
  2 +
  3 +// 买家信息值对象
  4 +type BuyerInfo struct {
  5 + // 买家名称
  6 + BuyerName string `json:"buyerName"`
  7 + // 联系信息
  8 + ContactInfo string `json:"contactInfo"`
  9 + // 发货地址
  10 + ShippingAddress string `json:"shippingAddress"`
  11 +}
  1 +package domain
  2 +
  3 +import "time"
  4 +
  5 +// 公司信息
  6 +type Company struct {
  7 + // 公司Id
  8 + CompanyId int64 `json:"companyId"`
  9 + // 公司信息
  10 + CompanyInfo *CompanyInfo `json:"companyInfo"`
  11 + // 创建时间
  12 + CreateAt time.Time `json:"createAt"`
  13 + // 更新时间
  14 + UpdateAt time.Time `json:"updateAt"`
  15 + // 删除时间
  16 + DeleteAt time.Time `json:"deleteAt"`
  17 +}
  18 +
  19 +type CompanyRepository interface {
  20 + Save(company *Company) (*Company, error)
  21 + Remove(company *Company) (*Company, error)
  22 + FindOne(queryOptions map[string]interface{}) (*Company, error)
  23 + Find(queryOptions map[string]interface{}) (int64, []*Company, error)
  24 +}
  25 +
  26 +func (company *Company) Identify() interface{} {
  27 + if company.CompanyId == 0 {
  28 + return nil
  29 + }
  30 + return company.CompanyId
  31 +}
  32 +
  33 +func (company *Company) Update(data map[string]interface{}) error {
  34 + if companyId, ok := data["companyId"]; ok {
  35 + company.CompanyId = companyId.(int64)
  36 + }
  37 + if name, ok := data["name"]; ok {
  38 + company.CompanyInfo.Name = name.(string)
  39 + }
  40 + if abbreviation, ok := data["abbreviation"]; ok {
  41 + company.CompanyInfo.Abbreviation = abbreviation.(string)
  42 + }
  43 + if logo, ok := data["logo"]; ok {
  44 + company.CompanyInfo.Logo = logo.(string)
  45 + }
  46 + if phone, ok := data["phone"]; ok {
  47 + company.CompanyInfo.Phone = phone.(string)
  48 + }
  49 + if status, ok := data["status"]; ok {
  50 + company.CompanyInfo.Status = status.(int64)
  51 + }
  52 + if remarks, ok := data["remarks"]; ok {
  53 + company.CompanyInfo.Remarks = remarks.(string)
  54 + }
  55 + if enable, ok := data["enable"]; ok {
  56 + company.CompanyInfo.Enable = enable.(int64)
  57 + }
  58 + if userAccount, ok := data["userAccount"]; ok {
  59 + company.CompanyInfo.Admin.UserAccount = userAccount.(string)
  60 + }
  61 + if userName, ok := data["userName"]; ok {
  62 + company.CompanyInfo.Admin.UserName = userName.(string)
  63 + }
  64 +
  65 + if createAt, ok := data["createAt"]; ok {
  66 + company.CreateAt = createAt.(time.Time)
  67 + }
  68 + if updateAt, ok := data["updateAt"]; ok {
  69 + company.UpdateAt = updateAt.(time.Time)
  70 + }
  71 + if deleteAt, ok := data["deleteAt"]; ok {
  72 + company.DeleteAt = deleteAt.(time.Time)
  73 + }
  74 +
  75 + return nil
  76 +}
  77 +
  78 +// 更改公司管理员信息
  79 +func (company *Company) SetCompanyAdmin(admin *CompanyAdmin) error {
  80 + company.CompanyInfo.Admin = admin
  81 + return nil
  82 +}
  1 +package domain
  2 +
  3 +// 公司信息
  4 +type CompanyInfo struct {
  5 + Name string `json:"name"` // 公司名称
  6 + Abbreviation string `json:"abbreviation"` // 公司简称
  7 + Logo string `json:"logo"` // 公司logo
  8 + Phone string `json:"phone"` // 公司联系电话
  9 + Status int64 `json:"status"` // 状态 1正常 2禁用
  10 + Remarks string `json:"remarks"` // 备注
  11 + Enable int64 `json:"enable"` // 是否有效【1:有效】【2:无效】
  12 + Admin *CompanyAdmin `json:"admin"` // 公司主管理员
  13 +}
  14 +
  15 +// 公司管理员信息值对象
  16 +type CompanyAdmin struct {
  17 + UserAccount string `json:"userPhone"` // 用户手机号
  18 + UserName string `json:"userName"` // 用户名称
  19 +}
  1 +package domain
  2 +
  3 +// 分红值对象
  4 +type Dividend struct {
  5 + // 计划分红
  6 + PlanBonus float64 `json:"planBonus"`
  7 + // 调整后分红
  8 + UseBonus float64 `json:"useBonus"`
  9 + // 已收分红
  10 + BonusHas float64 `json:"bonusHas"`
  11 + // 未收分红
  12 + BonusNot float64 `json:"bonusNot"`
  13 + // 分红支出
  14 + BonusExpense float64 `json:"bonusExpense"`
  15 + // 分红状态(1:待支付 2:已支付)
  16 + BonusStatus int `json:"bonusStatus"`
  17 + // 合伙人分红比例
  18 + PartnerBonusPercent float64 `json:"partnerBonusPercent"`
  19 + // 业务员抽成比例
  20 + SalesmanBonusPercent float64 `json:"salesmanBonusPercent"`
  21 + // 业务员抽成
  22 + SalesmanBonus float64 `json:"salesmanBonus"`
  23 +}
  1 +package domain
  2 +
  3 +import "time"
  4 +
  5 +// 订单商品实体
  6 +type Goods struct {
  7 + // 商品id
  8 + GoodsId int64 `json:"goodsId"`
  9 + // 预定的货品数量
  10 + GoodsNum int `json:"goodsNum"`
  11 + // 商品分红支付信息
  12 + GoodsDividend *Dividend `json:"goodsDividend"`
  13 + // 商品分红支付状态
  14 + GoodsDividendStatus int `json:"goodsDividendStatus"`
  15 + // 商品名称
  16 + GoodsName string `json:"goodsName"`
  17 + // 商品单价
  18 + GoodsTotalPrice float64 `json:"goodsTotalPrice"`
  19 + // 备注
  20 + Remarks string `json:"remarks"`
  21 + // 订单编号
  22 + OrderNo string `json:"orderNo"`
  23 + GoodsDetail string `json:"goodsDetail"`
  24 + // 创建时间
  25 + CreateAt time.Time `json:"createAt"`
  26 + // 更新时间
  27 + UpdateAt time.Time `json:"updateAt"`
  28 + // 删除时间
  29 + DeleteAt time.Time `json:"deleteAt"`
  30 +}
  31 +
  32 +type GoodsRepository interface {
  33 + Save(goods *Goods) (*Goods, error)
  34 + Remove(goods *Goods) (*Goods, error)
  35 + FindOne(queryOptions map[string]interface{}) (*Goods, error)
  36 + Find(queryOptions map[string]interface{}) (int64, []*Goods, error)
  37 +}
  38 +
  39 +func (goods *Goods) Identify() interface{} {
  40 + if goods.GoodsId == 0 {
  41 + return nil
  42 + }
  43 + return goods.GoodsId
  44 +}
  45 +
  46 +func (goods *Goods) Update(data map[string]interface{}) error {
  47 + if goodsId, ok := data["goodsId"]; ok {
  48 + goods.GoodsId = goodsId.(int64)
  49 + }
  50 + if goodsNum, ok := data["goodsNum"]; ok {
  51 + goods.GoodsNum = goodsNum.(int)
  52 + }
  53 + if planBonus, ok := data["planBonus"]; ok {
  54 + goods.GoodsDividend.PlanBonus = planBonus.(float64)
  55 + }
  56 + if useBonus, ok := data["useBonus"]; ok {
  57 + goods.GoodsDividend.UseBonus = useBonus.(float64)
  58 + }
  59 + if bonusHas, ok := data["bonusHas"]; ok {
  60 + goods.GoodsDividend.BonusHas = bonusHas.(float64)
  61 + }
  62 + if bonusNot, ok := data["bonusNot"]; ok {
  63 + goods.GoodsDividend.BonusNot = bonusNot.(float64)
  64 + }
  65 + if bonusExpense, ok := data["bonusExpense"]; ok {
  66 + goods.GoodsDividend.BonusExpense = bonusExpense.(float64)
  67 + }
  68 + if bonusStatus, ok := data["bonusStatus"]; ok {
  69 + goods.GoodsDividend.BonusStatus = bonusStatus.(int)
  70 + }
  71 + if partnerBonusPercent, ok := data["partnerBonusPercent"]; ok {
  72 + goods.GoodsDividend.PartnerBonusPercent = partnerBonusPercent.(float64)
  73 + }
  74 + if salesmanBonusPercent, ok := data["salesmanBonusPercent"]; ok {
  75 + goods.GoodsDividend.SalesmanBonusPercent = salesmanBonusPercent.(float64)
  76 + }
  77 + if salesmanBonus, ok := data["salesmanBonus"]; ok {
  78 + goods.GoodsDividend.SalesmanBonus = salesmanBonus.(float64)
  79 + }
  80 + if goodsDividendStatus, ok := data["goodsDividendStatus"]; ok {
  81 + goods.GoodsDividendStatus = goodsDividendStatus.(int)
  82 + }
  83 + if goodsName, ok := data["goodsName"]; ok {
  84 + goods.GoodsName = goodsName.(string)
  85 + }
  86 + if goodsTotalPrice, ok := data["goodsTotalPrice"]; ok {
  87 + goods.GoodsTotalPrice = goodsTotalPrice.(float64)
  88 + }
  89 + if remarks, ok := data["remarks"]; ok {
  90 + goods.Remarks = remarks.(string)
  91 + }
  92 + if orderNo, ok := data["orderNo"]; ok {
  93 + goods.OrderNo = orderNo.(string)
  94 + }
  95 + if goodsDetail, ok := data["goodsDetail"]; ok {
  96 + goods.GoodsDetail = goodsDetail.(string)
  97 + }
  98 + if createAt, ok := data["createAt"]; ok {
  99 + goods.CreateAt = createAt.(time.Time)
  100 + }
  101 + if updateAt, ok := data["updateAt"]; ok {
  102 + goods.UpdateAt = updateAt.(time.Time)
  103 + }
  104 + if deleteAt, ok := data["deleteAt"]; ok {
  105 + goods.DeleteAt = deleteAt.(time.Time)
  106 + }
  107 + return nil
  108 +}
  1 +package domain
  2 +
  3 +import (
  4 + "fmt"
  5 + "time"
  6 +)
  7 +
  8 +// 订单类型
  9 +const (
  10 + ORDER_TYPE_ACTUAL = iota + 1 //实际订单
  11 + ORDER_TYPE_INTENTION // 意向订单
  12 +)
  13 +
  14 +// 订单状态
  15 +const (
  16 + ORDER_STATUS_UNSHIPPED = iota + 1 // 待发货
  17 + ORDER_STATUS_TRANSIT // 待收货(运输中)
  18 + ORDER_STATUS_RECEIVED // 已收货
  19 + ORDER_STATUS_RETURN // 退换货
  20 + ORDER_STATUS_CANCELED // 已取消(关闭)
  21 + ORDER_STATUS_COMPLETED // 已完成
  22 +)
  23 +
  24 +// 订单实体
  25 +type Order struct {
  26 + // 订单id
  27 + OrderId int64 `json:"orderId"`
  28 + // 买家信息
  29 + Buyer *BuyerInfo `json:"buyer"`
  30 + // 公司Id
  31 + CompanyId int64 `json:"companyId"`
  32 + // 合伙人id
  33 + PartnerId int64 `json:"partnerId"`
  34 + // 发货单号
  35 + DeliveryCode string `json:"deliveryCode"`
  36 + // 是否关闭订单标志
  37 + IsDisable int `json:"isDisable"`
  38 + // 订单编号
  39 + OrderNo string `json:"orderNo"`
  40 + // 订单详情
  41 + OrderDetail *OrderDetail `json:"orderDetail"`
  42 + // 订单分红信息
  43 + OrderDividend *Dividend `json:"orderDividend"`
  44 + // 订单分红支付状态
  45 + OrderDividendStatus int `json:"orderDividendStatus"`
  46 + // 订单货品
  47 + OrderGoods []*Goods `json:"orderGoods"`
  48 + // 订单数据来源
  49 + OrderSource *OrderSource `json:"orderSource"`
  50 + // 订单类型(1.实际订单;2.意向订单)
  51 + OrderType int `json:"orderType"`
  52 + // 订单状态(1.发货;2.收货;3.退货;4.取消;5.完成)
  53 + OrderStatus int `json:"orderStatus"`
  54 + // 订单总价
  55 + TotalPrice float64 `json:"totalPrice"`
  56 + // 订单区域信息
  57 + RegionInfo *RegionInfo `json:"regionInfo"`
  58 + // 备注
  59 + Remarks string `json:"remarks"`
  60 + // 创建时间
  61 + CreateAt time.Time `json:"createAt"`
  62 + // 更新时间
  63 + UpdateAt time.Time `json:"updateAt"`
  64 + // 软删
  65 + DeleteAt time.Time `json:"deleteAt"`
  66 + // 当前状态
  67 + CurrentStatus OrderStatus `json:"-"`
  68 +}
  69 +
  70 +// 订单状态机
  71 +type OrderStatus interface {
  72 + Update(order *Order, data map[string]interface{}) error // 更新订单
  73 + Checkout(order *Order) error // 下单
  74 + Return(order *Order) error // 退换货
  75 + Cancel(order *Order) error // 取消订单
  76 + Receive(order *Order) error // 收货
  77 +}
  78 +
  79 +// 代发货状态
  80 +type UnShippedStatus struct{}
  81 +
  82 +// 编辑待发货订单
  83 +func (status *UnShippedStatus) Update(order *Order, data map[string]interface{}) error {
  84 + if orderId, ok := data["orderId"]; ok {
  85 + order.OrderId = orderId.(int64)
  86 + }
  87 + if buyerName, ok := data["buyerName"]; ok {
  88 + order.Buyer.BuyerName = buyerName.(string)
  89 + }
  90 + if contactInfo, ok := data["contactInfo"]; ok {
  91 + order.Buyer.ContactInfo = contactInfo.(string)
  92 + }
  93 + if shippingAddress, ok := data["shippingAddress"]; ok {
  94 + order.Buyer.ShippingAddress = shippingAddress.(string)
  95 + }
  96 + if companyId, ok := data["companyId"]; ok {
  97 + order.CompanyId = companyId.(int64)
  98 + }
  99 + if partnerId, ok := data["partnerId"]; ok {
  100 + order.PartnerId = partnerId.(int64)
  101 + }
  102 + if deliveryCode, ok := data["deliveryCode"]; ok {
  103 + order.DeliveryCode = deliveryCode.(string)
  104 + }
  105 + if isDisable, ok := data["isDisable"]; ok {
  106 + order.IsDisable = isDisable.(int)
  107 + }
  108 + if orderNo, ok := data["orderNo"]; ok {
  109 + order.OrderNo = orderNo.(string)
  110 + }
  111 + if orderDetailId, ok := data["orderDetailId"]; ok {
  112 + order.OrderDetail.OrderDetailId = orderDetailId.(int64)
  113 + }
  114 + if orderNo, ok := data["orderNo"]; ok {
  115 + order.OrderDetail.OrderNo = orderNo.(string)
  116 + }
  117 + if orderNum, ok := data["orderNum"]; ok {
  118 + order.OrderDetail.OrderNum = orderNum.(int)
  119 + }
  120 + if totalPrice, ok := data["totalPrice"]; ok {
  121 + order.OrderDetail.TotalPrice = totalPrice.(float64)
  122 + }
  123 + if adjustedNum, ok := data["adjustedNum"]; ok {
  124 + order.OrderDetail.AdjustedNum = adjustedNum.(int)
  125 + }
  126 + if adjustedTotalPrice, ok := data["adjustedTotalPrice"]; ok {
  127 + order.OrderDetail.AdjustedTotalPrice = adjustedTotalPrice.(float64)
  128 + }
  129 + if planBonus, ok := data["planBonus"]; ok {
  130 + order.OrderDividend.PlanBonus = planBonus.(float64)
  131 + }
  132 + if useBonus, ok := data["useBonus"]; ok {
  133 + order.OrderDividend.UseBonus = useBonus.(float64)
  134 + }
  135 + if bonusHas, ok := data["bonusHas"]; ok {
  136 + order.OrderDividend.BonusHas = bonusHas.(float64)
  137 + }
  138 + if bonusNot, ok := data["bonusNot"]; ok {
  139 + order.OrderDividend.BonusNot = bonusNot.(float64)
  140 + }
  141 + if bonusExpense, ok := data["bonusExpense"]; ok {
  142 + order.OrderDividend.BonusExpense = bonusExpense.(float64)
  143 + }
  144 + if bonusStatus, ok := data["bonusStatus"]; ok {
  145 + order.OrderDividend.BonusStatus = bonusStatus.(int)
  146 + }
  147 + if partnerBonusPercent, ok := data["partnerBonusPercent"]; ok {
  148 + order.OrderDividend.PartnerBonusPercent = partnerBonusPercent.(float64)
  149 + }
  150 + if salesmanBonusPercent, ok := data["salesmanBonusPercent"]; ok {
  151 + order.OrderDividend.SalesmanBonusPercent = salesmanBonusPercent.(float64)
  152 + }
  153 + if salesmanBonus, ok := data["salesmanBonus"]; ok {
  154 + order.OrderDividend.SalesmanBonus = salesmanBonus.(float64)
  155 + }
  156 + if orderDividendStatus, ok := data["orderDividendStatus"]; ok {
  157 + order.OrderDividendStatus = orderDividendStatus.(int)
  158 + }
  159 + if orderGoods, ok := data["orderGoods"]; ok {
  160 + order.OrderGoods = orderGoods.([]*Goods)
  161 + }
  162 + if dataSourceId, ok := data["dataSourceId"]; ok {
  163 + order.OrderSource.DataSourceId = dataSourceId.(int64)
  164 + }
  165 + if platform, ok := data["platform"]; ok {
  166 + order.OrderSource.Platform = platform.(string)
  167 + }
  168 + if createAt, ok := data["createAt"]; ok {
  169 + order.OrderSource.CreateAt = createAt.(time.Time)
  170 + }
  171 + if orderType, ok := data["orderType"]; ok {
  172 + order.OrderType = orderType.(int)
  173 + }
  174 + if orderStatus, ok := data["orderStatus"]; ok {
  175 + order.OrderStatus = orderStatus.(int)
  176 + }
  177 + if totalPrice, ok := data["totalPrice"]; ok {
  178 + order.TotalPrice = totalPrice.(float64)
  179 + }
  180 + if regionName, ok := data["regionName"]; ok {
  181 + order.RegionInfo.RegionName = regionName.(string)
  182 + }
  183 + if remarks, ok := data["remarks"]; ok {
  184 + order.Remarks = remarks.(string)
  185 + }
  186 + if createAt, ok := data["createAt"]; ok {
  187 + order.CreateAt = createAt.(time.Time)
  188 + }
  189 + if updateAt, ok := data["updateAt"]; ok {
  190 + order.UpdateAt = updateAt.(time.Time)
  191 + }
  192 + if deleteAt, ok := data["deleteAt"]; ok {
  193 + order.DeleteAt = deleteAt.(time.Time)
  194 + }
  195 + return nil
  196 +}
  197 +
  198 +func (status *UnShippedStatus) Checkout(order *Order) error {
  199 + return nil
  200 +}
  201 +
  202 +func (status *UnShippedStatus) Return(order *Order) error {
  203 + return fmt.Errorf("待发货订单不能退货")
  204 +}
  205 +
  206 +func (status *UnShippedStatus) Cancel(order *Order) error {
  207 + return nil
  208 +}
  209 +
  210 +func (status *UnShippedStatus) Receive(order *Order) error {
  211 + return fmt.Errorf("待发货订单不能收货")
  212 +}
  213 +
  214 +// 待收货状态
  215 +type TransitStatus struct{}
  216 +
  217 +// 待收货订单不允许编辑
  218 +func (status *TransitStatus) Update(order *Order, data map[string]interface{}) error {
  219 + return fmt.Errorf("已发货订单不允许编辑")
  220 +}
  221 +
  222 +func (status *TransitStatus) Checkout(order *Order) error {
  223 + return fmt.Errorf("待收货订单不能重复发货")
  224 +}
  225 +
  226 +func (status *TransitStatus) Return(order *Order) error {
  227 + return nil
  228 +}
  229 +
  230 +func (status *TransitStatus) Cancel(order *Order) error {
  231 + return fmt.Errorf("待收货订单不能取消")
  232 +}
  233 +
  234 +func (status *TransitStatus) Receive(order *Order) error {
  235 + return nil
  236 +}
  237 +
  238 +// 收货状态
  239 +type ReceivedStatus struct{}
  240 +
  241 +func (status *ReceivedStatus) Update(order *Order, data map[string]interface{}) error {
  242 + return fmt.Errorf("已收货订单不能编辑")
  243 +}
  244 +
  245 +func (status *ReceivedStatus) Checkout(order *Order) error {
  246 + return fmt.Errorf("已收货订单不能重复发货")
  247 +}
  248 +
  249 +func (status *ReceivedStatus) Return(order *Order) error {
  250 + return nil
  251 +}
  252 +
  253 +func (status *ReceivedStatus) Cancel(order *Order) error {
  254 + return fmt.Errorf("已收货订单不能取消")
  255 +}
  256 +
  257 +func (status *ReceivedStatus) Receive(order *Order) error {
  258 + return fmt.Errorf("已收货订单不能重复收货")
  259 +}
  260 +
  261 +// 退货状态
  262 +type ReturnedStatus struct{}
  263 +
  264 +func (status *ReturnedStatus) Update(order *Order, data map[string]interface{}) error {
  265 + return fmt.Errorf("已退货订单不允许编辑")
  266 +}
  267 +
  268 +func (status *ReturnedStatus) Checkout(order *Order) error {
  269 + return fmt.Errorf("已退货订单不允许发货")
  270 +}
  271 +
  272 +func (status *ReturnedStatus) Return(order *Order) error {
  273 + return fmt.Errorf("已退货订单不允许再次退货")
  274 +}
  275 +
  276 +func (status *ReturnedStatus) Cancel(order *Order) error {
  277 + return fmt.Errorf("已退货订单不能取消")
  278 +}
  279 +
  280 +func (status *ReturnedStatus) Receive(order *Order) error {
  281 + return fmt.Errorf("已退货订单不能收货")
  282 +}
  283 +
  284 +// 取消状态
  285 +type CanceledStatus struct{}
  286 +
  287 +func (status *CanceledStatus) Update(order *Order, dat map[string]interface{}) error {
  288 + return fmt.Errorf("已取消订单不能编辑")
  289 +}
  290 +
  291 +func (status *CanceledStatus) Checkout(order *Order) error {
  292 + return fmt.Errorf("已取消订单不能发货")
  293 +}
  294 +
  295 +func (status *CanceledStatus) Return(order *Order) error {
  296 + return fmt.Errorf("已取消订单不能退货")
  297 +}
  298 +
  299 +func (status *CanceledStatus) Cancel(order *Order) error {
  300 + return fmt.Errorf("已取消订单不能再次取消")
  301 +}
  302 +
  303 +func (status *CanceledStatus) Receive(order *Order) error {
  304 + return fmt.Errorf("已取消订单不能进行收货")
  305 +}
  306 +
  307 +// 已完成状态
  308 +type CompletedStatus struct{}
  309 +
  310 +func (status *CompletedStatus) Update(order *Order, data map[string]interface{}) error {
  311 + return nil
  312 +}
  313 +
  314 +func (status *CompletedStatus) Checkout(order *Order) error {
  315 + return fmt.Errorf("已完成订单不能发货")
  316 +}
  317 +
  318 +func (status *CompletedStatus) Return(order *Order) error {
  319 + return fmt.Errorf("已完成订单不能退货")
  320 +}
  321 +
  322 +func (status *CompletedStatus) Cancel(order *Order) error {
  323 + return fmt.Errorf("已完成订单不能取消")
  324 +}
  325 +
  326 +func (status *CompletedStatus) Receive(order *Order) error {
  327 + return fmt.Errorf("已完成订单不能收货")
  328 +}
  329 +
  330 +// 订单仓储
  331 +type OrderRepository interface {
  332 + Save(order *Order) (*Order, error)
  333 + Remove(order *Order) (*Order, error)
  334 + FindOne(queryOptions map[string]interface{}) (*Order, error)
  335 + Find(queryOptions map[string]interface{}) (int64, []*Order, error)
  336 +}
  337 +
  338 +func (order *Order) Identify() interface{} {
  339 + if order.OrderId == 0 {
  340 + return nil
  341 + }
  342 + return order.OrderId
  343 +}
  344 +
  345 +// 更新订单
  346 +func (order *Order) Update(data map[string]interface{}) error {
  347 + return order.CurrentStatus.Update(order, data)
  348 +}
  349 +
  350 +// 发货
  351 +func (order *Order) Checkout() error {
  352 + return order.CurrentStatus.Checkout(order)
  353 +}
  354 +
  355 +// 退货
  356 +func (order *Order) Return() error {
  357 + return order.CurrentStatus.Return(order)
  358 +}
  359 +
  360 +// 收货
  361 +func (order *Order) Receive() error {
  362 + return order.CurrentStatus.Receive(order)
  363 +}
  364 +
  365 +// 取消订单
  366 +func (order *Order) Cancel() error {
  367 + return order.CurrentStatus.Cancel(order)
  368 +}
  1 +package domain
  2 +
  3 +// 订单详情实体
  4 +type OrderDetail struct {
  5 + // 订单详情id
  6 + OrderDetailId int64 `json:"orderDetailId"`
  7 + // 订单编号
  8 + OrderNo string `json:"orderNo"`
  9 + // 订单数量
  10 + OrderNum int `json:"orderNum"`
  11 + // 订单总金额
  12 + TotalPrice float64 `json:"totalPrice"`
  13 + // 调整后订单数量
  14 + AdjustedNum int `json:"adjustedNum"`
  15 + // 调整后订单总金额
  16 + AdjustedTotalPrice float64 `json:"adjustedTotalPrice"`
  17 +}
  1 +package domain
  2 +
  3 +import "time"
  4 +
  5 +// 订单数据来源值对象
  6 +type OrderSource struct {
  7 + // 订单数据来源id
  8 + DataSourceId int64 `json:"dataSourceId"`
  9 + // 订单数据来源平台
  10 + Platform string `json:"platform"`
  11 + // 创建时间
  12 + CreateAt time.Time `json:"createAt"`
  13 +}
  1 +package domain
  2 +
  3 +// 合伙人类别 (实体)
  4 +type PartnerCategory struct {
  5 + // 合伙人类别id
  6 + PartnerCategoryId int `json:"partnerCategoryId"`
  7 + // 合伙人类别编码
  8 + PartnerCategoryCode string `json:"partnerCategoryCode"`
  9 + // 合伙人类别名称
  10 + PartnerCategoryName string `json:"partnerCategoryName"`
  11 +}
  12 +
  13 +type PartnerCategoryRepository interface {
  14 + Save(partnerCategory *PartnerCategory) (*PartnerCategory, error)
  15 + Remove(partnerCategory *PartnerCategory) (*PartnerCategory, error)
  16 + FindOne(queryOptions map[string]interface{}) (*PartnerCategory, error)
  17 + Find(queryOptions map[string]interface{}) (int64, []*PartnerCategory, error)
  18 +}
  19 +
  20 +func (partnerCategory *PartnerCategory) Identify() interface{} {
  21 + if partnerCategory.PartnerCategoryId == 0 {
  22 + return nil
  23 + }
  24 + return partnerCategory.PartnerCategoryId
  25 +}
  26 +
  27 +func (partnerCategory *PartnerCategory) Update(data map[string]interface{}) error {
  28 + if partnerCategoryId, ok := data["partnerCategoryId"]; ok {
  29 + partnerCategory.PartnerCategoryId = partnerCategoryId.(int)
  30 + }
  31 + if partnerCategoryCode, ok := data["partnerCategoryCode"]; ok {
  32 + partnerCategory.PartnerCategoryCode = partnerCategoryCode.(string)
  33 + }
  34 + if partnerCategoryName, ok := data["partnerCategoryName"]; ok {
  35 + partnerCategory.PartnerCategoryName = partnerCategoryName.(string)
  36 + }
  37 + return nil
  38 +}
  1 +package domain
  2 +
  3 +import "time"
  4 +
  5 +// 合伙人信息
  6 +type PartnerInfo struct {
  7 + // 合伙人账号
  8 + PartnerAccount string `json:"partnerAccount"`
  9 + // 合伙人姓名
  10 + PartnerName string `json:"partnerName"`
  11 + // 订单区域信息
  12 + RegionInfo *RegionInfo `json:"regionInfo"`
  13 + // 状态 1正常 2禁用
  14 + Status int64 `json:"status"`
  15 + // 合伙时间
  16 + CooperateTime time.Time `json:"cooperateTime"`
  17 + // 业务员
  18 + Salesmans []*Salesman `json:"salesmans"`
  19 + // 合伙人类型
  20 + PartnerCategorys []*PartnerCategory `json:"partnerCategorys"`
  21 +}
  1 +package domain
  2 +
  3 +// 权限
  4 +type Permission struct {
  5 + // 权限id
  6 + PermissionId int `json:"permissionId"`
  7 + // 公司名称
  8 + Name string `json:"name"`
  9 + // 权限编码
  10 + Code string `json:"code"`
  11 + // 父级id
  12 + ParentId int `json:"parentId"`
  13 + // 排序
  14 + Sort int `json:"sort"`
  15 + // 图标
  16 + Icon string `json:"icon"`
  17 +}
  18 +
  19 +type PermissionRepository interface {
  20 + Save(permission *Permission) (*Permission, error)
  21 + Remove(permission *Permission) (*Permission, error)
  22 + FindOne(queryOptions map[string]interface{}) (*Permission, error)
  23 + Find(queryOptions map[string]interface{}) (int64, []*Permission, error)
  24 +}
  25 +
  26 +func (permission *Permission) Identify() interface{} {
  27 + if permission.PermissionId == 0 {
  28 + return nil
  29 + }
  30 + return permission.PermissionId
  31 +}
  32 +
  33 +func (permission *Permission) Update(data map[string]interface{}) error {
  34 + if permissionId, ok := data["permissionId"]; ok {
  35 + permission.PermissionId = permissionId.(int)
  36 + }
  37 + if name, ok := data["name"]; ok {
  38 + permission.Name = name.(string)
  39 + }
  40 + if code, ok := data["code"]; ok {
  41 + permission.Code = code.(string)
  42 + }
  43 + if parentId, ok := data["parentId"]; ok {
  44 + permission.ParentId = parentId.(int)
  45 + }
  46 + if sort, ok := data["sort"]; ok {
  47 + permission.Sort = sort.(int)
  48 + }
  49 + if icon, ok := data["icon"]; ok {
  50 + permission.Icon = icon.(string)
  51 + }
  52 + return nil
  53 +}
  1 +package domain
  2 +
  3 +// 手机认证
  4 +type PhoneAuth struct {
  5 + // 手机号
  6 + Phone string `json:"phone"`
  7 + // 密码
  8 + Password string `json:"password"`
  9 +}
  1 +package domain
  2 +
  3 +// 区域信息
  4 +type RegionInfo struct {
  5 + // 区域名称 eg:华南地区
  6 + RegionName string `json:"regionName"`
  7 +}
  1 +package domain
  2 +
  3 +// 业务员
  4 +type Salesman struct {
  5 + // 名称
  6 + Name string `json:"name"`
  7 + // 手机号码
  8 + Telephone string `json:"telephone"`
  9 +}
  1 +package service
  2 +
  3 +import (
  4 + coreDomain "github.com/linmadan/egglib-go/core/domain"
  5 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/domain"
  6 +)
  7 +
  8 +type CancelOrderService interface {
  9 + coreDomain.DomainEventPublisher
  10 + Cancel(orderId int64) (*domain.Order, error)
  11 +}
  1 +package service
  2 +
  3 +import (
  4 + coreDomain "github.com/linmadan/egglib-go/core/domain"
  5 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/domain"
  6 +)
  7 +
  8 +type ReceivingGoodsService interface {
  9 + coreDomain.DomainEventPublisher
  10 + Receiving(orderId int64) (*domain.Order, error)
  11 +}
  1 +package service
  2 +
  3 +import (
  4 + coreDomain "github.com/linmadan/egglib-go/core/domain"
  5 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/domain"
  6 +)
  7 +
  8 +type ReturnGoodsService interface {
  9 + coreDomain.DomainEventPublisher
  10 + Return(orderId int64) (*domain.Order, error)
  11 +}
  1 +package service
  2 +
  3 +import (
  4 + coreDomain "github.com/linmadan/egglib-go/core/domain"
  5 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/domain"
  6 +)
  7 +
  8 +type ShippingGoodsService interface {
  9 + coreDomain.DomainEventPublisher
  10 + Shipping(orderId int64) (*domain.Order, error)
  11 +}
  1 +package domain
  2 +
  3 +import "time"
  4 +
  5 +const (
  6 + StatusEnable int64 = 1
  7 + StatusDisable int64 = 2
  8 +)
  9 +const (
  10 + SuperAdministrator = 1
  11 + EnterpriseAdministrator = 10
  12 + NormalUser = 100
  13 +)
  14 +
  15 +// UserType
  16 +const (
  17 + Manager = 1
  18 + Partner = 2
  19 + Guest = 3
  20 +)
  21 +
  22 +// 用户实体
  23 +type User struct {
  24 + // 用户id
  25 + UserId int64 `json:"userId"`
  26 + // 1.高管 2.合伙人 4:游客
  27 + UserType int `json:"userType"`
  28 + // 用户权限
  29 + Permissions []int `json:"permissions"`
  30 + // 公司Id
  31 + CompanyId int64 `json:"companyId"`
  32 + // 用户信息
  33 + UserInfo *UserInfo `json:"userInfo"`
  34 + // 合伙人信息
  35 + PartnerInfo *PartnerInfo `json:"partnerInfo"`
  36 + // 状态 1正常 2禁用
  37 + Status int64 `json:"status"`
  38 + // 管理员类型 1.超级管理员 10:企业管理员 100:普通用户
  39 + AdminType int `json:"adminType"`
  40 + // 合伙人列表 用户类型为高管时有效
  41 + AccessPartners []int64 `json:"accessPartners"`
  42 + // 创建时间
  43 + CreateAt time.Time `json:"createAt"`
  44 + // 更新时间
  45 + UpdateAt time.Time `json:"updateAt"`
  46 + // 删除时间
  47 + DeleteAt time.Time `json:"deleteAt"`
  48 +}
  49 +
  50 +type UserRepository interface {
  51 + Save(user *User) (*User, error)
  52 + Remove(user *User) (*User, error)
  53 + FindOne(queryOptions map[string]interface{}) (*User, error)
  54 + Find(queryOptions map[string]interface{}) (int64, []*User, error)
  55 +}
  56 +
  57 +func (user *User) Identify() interface{} {
  58 + if user.UserId == 0 {
  59 + return nil
  60 + }
  61 + return user.UserId
  62 +}
  63 +
  64 +func (user *User) Update(data map[string]interface{}) error {
  65 + if userId, ok := data["userId"]; ok {
  66 + user.UserId = userId.(int64)
  67 + }
  68 + if userType, ok := data["userType"]; ok {
  69 + user.UserType = userType.(int)
  70 + }
  71 + if permissions, ok := data["permissions"]; ok {
  72 + user.Permissions = permissions.([]int)
  73 + }
  74 + if companyId, ok := data["companyId"]; ok {
  75 + user.CompanyId = companyId.(int64)
  76 + }
  77 + if isPrincipal, ok := data["isPrincipal"]; ok {
  78 + user.UserInfo.IsPrincipal = isPrincipal.(bool)
  79 + }
  80 + if uid, ok := data["uid"]; ok {
  81 + user.UserInfo.Uid = uid.(int64)
  82 + }
  83 + if userAccount, ok := data["userAccount"]; ok {
  84 + user.UserInfo.UserAccount = userAccount.(string)
  85 + }
  86 + if userAvatarUrl, ok := data["userAvatarUrl"]; ok {
  87 + user.UserInfo.UserAvatarUrl = userAvatarUrl.(string)
  88 + }
  89 + if userName, ok := data["userName"]; ok {
  90 + user.UserInfo.UserName = userName.(string)
  91 + }
  92 + if email, ok := data["email"]; ok {
  93 + user.UserInfo.Email = email.(string)
  94 + }
  95 + if gender, ok := data["gender"]; ok {
  96 + user.UserInfo.Gender = gender.(int)
  97 + }
  98 + if entryTime, ok := data["entryTime"]; ok {
  99 + user.UserInfo.EntryTime = entryTime.(time.Time)
  100 + }
  101 + if extension, ok := data["extension"]; ok {
  102 + user.UserInfo.Extension = extension.(string)
  103 + }
  104 + if workplace, ok := data["workplace"]; ok {
  105 + user.UserInfo.Workplace = workplace.(string)
  106 + }
  107 + if privateNumber, ok := data["privateNumber"]; ok {
  108 + user.UserInfo.PrivateNumber = privateNumber.(string)
  109 + }
  110 + if jobNumber, ok := data["jobNumber"]; ok {
  111 + user.UserInfo.JobNumber = jobNumber.(string)
  112 + }
  113 + if partnerAccount, ok := data["partnerAccount"]; ok {
  114 + user.PartnerInfo.PartnerAccount = partnerAccount.(string)
  115 + }
  116 + if partnerName, ok := data["partnerName"]; ok {
  117 + user.PartnerInfo.PartnerName = partnerName.(string)
  118 + }
  119 + if regionName, ok := data["regionName"]; ok {
  120 + user.PartnerInfo.RegionInfo.RegionName = regionName.(string)
  121 + }
  122 + if status, ok := data["status"]; ok {
  123 + user.PartnerInfo.Status = status.(int64)
  124 + }
  125 + return nil
  126 +}
  1 +package domain
  2 +
  3 +import "time"
  4 +
  5 +// 用户认证实体
  6 +type UserAuth struct {
  7 + // 用户认证编号
  8 + UserAuthId int64 `json:"userAuthId"`
  9 + // 用户id列表
  10 + Users []int64 `json:"users"`
  11 + // 手机认证
  12 + PhoneAuth *PhoneAuth `json:"phoneAuth"`
  13 + // 创建时间
  14 + CreateAt time.Time `json:"createAt"`
  15 + // 更新时间
  16 + UpdateAt time.Time `json:"updateAt"`
  17 +}
  18 +
  19 +type UserAuthRepository interface {
  20 + Save(userAuth *UserAuth) (*UserAuth, error)
  21 + Remove(userAuth *UserAuth) (*UserAuth, error)
  22 + FindOne(queryOptions map[string]interface{}) (*UserAuth, error)
  23 + Find(queryOptions map[string]interface{}) (int64, []*UserAuth, error)
  24 +}
  25 +
  26 +func (userAuth *UserAuth) Identify() interface{} {
  27 + if userAuth.UserAuthId == 0 {
  28 + return nil
  29 + }
  30 + return userAuth.UserAuthId
  31 +}
  32 +
  33 +func (userAuth *UserAuth) Update(data map[string]interface{}) error {
  34 + if userAuthId, ok := data["userAuthId"]; ok {
  35 + userAuth.UserAuthId = userAuthId.(int64)
  36 + }
  37 + if users, ok := data["users"]; ok {
  38 + userAuth.Users = users.([]int64)
  39 + }
  40 + if phone, ok := data["phone"]; ok {
  41 + userAuth.PhoneAuth.Phone = phone.(string)
  42 + }
  43 + if password, ok := data["password"]; ok {
  44 + userAuth.PhoneAuth.Password = password.(string)
  45 + }
  46 + if createAt, ok := data["createAt"]; ok {
  47 + userAuth.CreateAt = createAt.(time.Time)
  48 + }
  49 + if updateAt, ok := data["updateAt"]; ok {
  50 + userAuth.UpdateAt = updateAt.(time.Time)
  51 + }
  52 + return nil
  53 +}
  1 +package domain
  2 +
  3 +import "time"
  4 +
  5 +// 用户信息值对象
  6 +type UserInfo struct {
  7 + // 是否是公司负责人
  8 + IsPrincipal bool `json:"isPrincipal"`
  9 + // 统一用户id
  10 + Uid int64 `json:"uid"`
  11 + // 用户账号
  12 + UserAccount string `json:"userAccount"`
  13 + // 用户头像URL
  14 + UserAvatarUrl string `json:"userAvatarUrl"`
  15 + // 用户名称
  16 + UserName string `json:"userName"`
  17 + // 邮件地址
  18 + Email string `json:"email"`
  19 + // 性别
  20 + Gender int `json:"gender"`
  21 + // 入职时间
  22 + EntryTime time.Time `json:"entryTime"`
  23 + // 分机
  24 + Extension string `json:"extension"`
  25 + // 工作地
  26 + Workplace string `json:"workplace"`
  27 + // 私人电话
  28 + PrivateNumber string `json:"privateNumber"`
  29 + // 工号
  30 + JobNumber string `json:"jobNumber"`
  31 +}
  1 +package domainService
  2 +
  3 +import (
  4 + "fmt"
  5 + coreDomain "github.com/linmadan/egglib-go/core/domain"
  6 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/domain"
  7 +
  8 + pgTransaction "github.com/linmadan/egglib-go/transaction/pg"
  9 +)
  10 +
  11 +type CancelOrderService struct {
  12 + coreDomain.BaseEventPublisher
  13 + transactionContext *pgTransaction.TransactionContext
  14 +}
  15 +
  16 +func (service *CancelOrderService) Cancel(orderId int64) (*domain.Order, error) {
  17 + return nil, nil
  18 +}
  19 +
  20 +func NewCancelOrderService(transactionContext *pgTransaction.TransactionContext) (*CancelOrderService, error) {
  21 + if transactionContext == nil {
  22 + return nil, fmt.Errorf("transactionContext参数不能为nil")
  23 + } else {
  24 + return &CancelOrderService{
  25 + transactionContext: transactionContext,
  26 + }, nil
  27 + }
  28 +}
  1 +package domainService
  2 +
  3 +import (
  4 + "fmt"
  5 + coreDomain "github.com/linmadan/egglib-go/core/domain"
  6 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/domain"
  7 +
  8 + pgTransaction "github.com/linmadan/egglib-go/transaction/pg"
  9 +)
  10 +
  11 +type ReceivingGoodsService struct {
  12 + coreDomain.BaseEventPublisher
  13 + transactionContext *pgTransaction.TransactionContext
  14 +}
  15 +
  16 +func (service *ReceivingGoodsService) Receiving(orderId int64) (*domain.Order, error) {
  17 + return nil, nil
  18 +}
  19 +
  20 +func NewReceivingGoodsService(transactionContext *pgTransaction.TransactionContext) (*ReceivingGoodsService, error) {
  21 + if transactionContext == nil {
  22 + return nil, fmt.Errorf("transactionContext参数不能为nil")
  23 + } else {
  24 + return &ReceivingGoodsService{
  25 + transactionContext: transactionContext,
  26 + }, nil
  27 + }
  28 +}
  1 +package domainService
  2 +
  3 +import (
  4 + "fmt"
  5 + coreDomain "github.com/linmadan/egglib-go/core/domain"
  6 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/domain"
  7 +
  8 + pgTransaction "github.com/linmadan/egglib-go/transaction/pg"
  9 +)
  10 +
  11 +type ReturnGoodsService struct {
  12 + coreDomain.BaseEventPublisher
  13 + transactionContext *pgTransaction.TransactionContext
  14 +}
  15 +
  16 +func (service *ReturnGoodsService) Return(orderId int64) (*domain.Order, error) {
  17 + panic("implement me")
  18 +}
  19 +
  20 +func NewReturnGoodsService(transactionContext *pgTransaction.TransactionContext) (*ReturnGoodsService, error) {
  21 + if transactionContext == nil {
  22 + return nil, fmt.Errorf("transactionContext参数不能为nil")
  23 + } else {
  24 + return &ReturnGoodsService{
  25 + transactionContext: transactionContext,
  26 + }, nil
  27 + }
  28 +}
  1 +package domainService
  2 +
  3 +import (
  4 + "fmt"
  5 + coreDomain "github.com/linmadan/egglib-go/core/domain"
  6 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/domain"
  7 +
  8 + pgTransaction "github.com/linmadan/egglib-go/transaction/pg"
  9 +)
  10 +
  11 +type ShippingGoodsService struct {
  12 + coreDomain.BaseEventPublisher
  13 + transactionContext *pgTransaction.TransactionContext
  14 +}
  15 +
  16 +func (service *ShippingGoodsService) Shipping(orderId int64) (*domain.Order, error) {
  17 + return nil, nil
  18 +}
  19 +
  20 +func NewShippingGoodsService(transactionContext *pgTransaction.TransactionContext) (*ShippingGoodsService, error) {
  21 + if transactionContext == nil {
  22 + return nil, fmt.Errorf("transactionContext参数不能为nil")
  23 + } else {
  24 + return &ShippingGoodsService{
  25 + transactionContext: transactionContext,
  26 + }, nil
  27 + }
  28 +}
  1 +package gateway
  2 +
  3 +import (
  4 + "github.com/linmadan/egglib-go/core/application"
  5 + "github.com/tiptok/gocomm/gs"
  6 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/constant"
  7 + "net/http"
  8 +)
  9 +
  10 +const (
  11 + AuthsLogin = "AuthsLogin"
  12 + AuthsLoginByCompany = "loginByCompany"
  13 + AuthsAccessToken = "AuthsAccessToken"
  14 + AuthsRefreshToken = "AuthsRefreshToken"
  15 + AuthsSendSmsCode = "AuthsSendSmsCode"
  16 + AuthsRevoke = "AuthsRevoke"
  17 + AuthsChangePhonePassword = "AuthsChangePhonePassword"
  18 +)
  19 +
  20 +const (
  21 + CompanyGet = "CompanyGet"
  22 + CompanyCreate = "CompanyCreate"
  23 + CompanyRemove = "CompanyRemove"
  24 + CompanyList = "CompanyList"
  25 + CompanyUpdate = "CompanyUpdate"
  26 +)
  27 +
  28 +var Partner01Service *HttpPartner01ServiceGateway
  29 +
  30 +func init() {
  31 + Partner01Service = &HttpPartner01ServiceGateway{gs.NewManagerService(constant.PARTER01_GATEWAY_ADDRESS, Routers())}
  32 + Partner01Service.WithDebugModel(true)
  33 +}
  34 +
  35 +type HttpPartner01ServiceGateway struct {
  36 + *gs.GatewayService
  37 +}
  38 +
  39 +func Routers() []gs.Router {
  40 + routers := []gs.Router{
  41 + {AuthsLogin, "/auths/login", http.MethodPost},
  42 + {AuthsLoginByCompany, "/auths/loginByCompany", http.MethodPost},
  43 + {AuthsAccessToken, "/auths/accessToken", http.MethodPost},
  44 + {AuthsRefreshToken, "/auths/refreshToken", http.MethodPost},
  45 + {AuthsSendSmsCode, "/auths/sendSmsCode", http.MethodPost},
  46 + {AuthsRevoke, "/auths/revoke", http.MethodPost},
  47 + {AuthsChangePhonePassword, "/auths/changePhonePassword", http.MethodPost},
  48 +
  49 + {CompanyGet, "/companies/:companyId", http.MethodGet},
  50 + {CompanyRemove, "/companies/:companyId", http.MethodDelete},
  51 + {CompanyUpdate, "/companies/:companyId", http.MethodPut},
  52 + {CompanyCreate, "/companies/", http.MethodPost},
  53 + {CompanyList, "/companies/", http.MethodGet},
  54 + }
  55 + return routers
  56 +}
  57 +
  58 +func (service *HttpPartner01ServiceGateway) CompanyCreate(jsonObject interface{}) (interface{}, error) {
  59 + data, err := service.Invoke(CompanyCreate, gs.WithJsonObject(jsonObject))
  60 + if err != nil {
  61 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  62 + }
  63 + return data.Data, nil
  64 +}
  65 +
  66 +func (service *HttpPartner01ServiceGateway) CompanyGet(pathParam interface{}) (interface{}, error) {
  67 + data, err := service.Invoke(CompanyGet, gs.WithPathParam(pathParam))
  68 + if err != nil {
  69 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  70 + }
  71 + return data.Data, nil
  72 +}
  1 +package pg
  2 +
  3 +import (
  4 + "fmt"
  5 + "github.com/go-pg/pg/v10"
  6 + "github.com/go-pg/pg/v10/orm"
  7 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/constant"
  8 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/infrastructure/pg/models"
  9 +
  10 + "github.com/linmadan/egglib-go/persistent/pg/hooks"
  11 +)
  12 +
  13 +var DB *pg.DB
  14 +
  15 +func init() {
  16 + DB = pg.Connect(&pg.Options{
  17 + User: constant.POSTGRESQL_USER,
  18 + Password: constant.POSTGRESQL_PASSWORD,
  19 + Database: constant.POSTGRESQL_DB_NAME,
  20 + Addr: fmt.Sprintf("%s:%s", constant.POSTGRESQL_HOST, constant.POSTGRESQL_PORT),
  21 + })
  22 + if !constant.DISABLE_SQL_GENERATE_PRINT {
  23 + DB.AddQueryHook(hooks.SqlGeneratePrintHook{})
  24 + }
  25 + if !constant.DISABLE_CREATE_TABLE {
  26 + for _, model := range []interface{}{
  27 + &models.Permission{},
  28 + &models.PartnerCategory{},
  29 + &models.UserAuth{},
  30 + &models.Goods{},
  31 + &models.Order{},
  32 + &models.User{},
  33 + &models.Company{},
  34 + } {
  35 + err := DB.Model(model).CreateTable(&orm.CreateTableOptions{
  36 + Temp: false,
  37 + IfNotExists: true,
  38 + FKConstraints: true,
  39 + })
  40 + if err != nil {
  41 + panic(err)
  42 + }
  43 + }
  44 + }
  45 +}
  1 +package models
  2 +
  3 +import (
  4 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/domain"
  5 + "time"
  6 +)
  7 +
  8 +type Company struct {
  9 + tableName string `pg:"companies,alias:company"`
  10 + // 公司Id
  11 + CompanyId int64 `pg:",pk"`
  12 + // 公司信息
  13 + CompanyInfo *domain.CompanyInfo
  14 + // 创建时间
  15 + CreateAt time.Time
  16 + // 更新时间
  17 + UpdateAt time.Time
  18 + // 删除时间
  19 + DeleteAt time.Time `pg:",soft_delete"`
  20 +}
  1 +package models
  2 +
  3 +import (
  4 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/domain"
  5 + "time"
  6 +)
  7 +
  8 +type Goods struct {
  9 + tableName string `pg:"goodss,alias:goods"`
  10 + // 商品id
  11 + GoodsId int64
  12 + // 预定的货品数量
  13 + GoodsNum int
  14 + // 商品分红支付信息
  15 + GoodsDividend *domain.Dividend
  16 + // 商品分红支付状态
  17 + GoodsDividendStatus int
  18 + // 商品名称
  19 + GoodsName string
  20 + // 商品单价
  21 + GoodsTotalPrice float64
  22 + // 备注
  23 + Remarks string
  24 + // 订单编号
  25 + OrderNo string
  26 + // 商品详情
  27 + GoodsDetail string
  28 + // 创建时间
  29 + CreateAt time.Time
  30 + // 更新时间
  31 + UpdateAt time.Time
  32 + // 删除时间
  33 + DeleteAt time.Time
  34 +}
  1 +package models
  2 +
  3 +import (
  4 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/domain"
  5 + "time"
  6 +)
  7 +
  8 +type Order struct {
  9 + tableName string `pg:"orders,alias:order"`
  10 + // 订单id
  11 + OrderId int64
  12 + // 买家信息
  13 + Buyer *domain.BuyerInfo
  14 + // 公司Id
  15 + CompanyId int64
  16 + // 合伙人id
  17 + PartnerId int64
  18 + // 发货单号
  19 + DeliveryCode string
  20 + // 是否关闭订单标志
  21 + IsDisable int
  22 + // 订单编号
  23 + OrderNo string
  24 + // 订单详情
  25 + OrderDetail *domain.OrderDetail
  26 + // 订单分红信息
  27 + OrderDividend *domain.Dividend
  28 + // 订单分红支付状态
  29 + OrderDividendStatus int
  30 + // 订单货品
  31 + OrderGoods []*domain.Goods
  32 + // 订单数据来源
  33 + OrderSource *domain.OrderSource
  34 + // 订单类型(1.实际订单;2.意向订单)
  35 + OrderType int
  36 + // 订单状态(1.发货;2.收货;3.退货;4.取消;5.完成)
  37 + OrderStatus int
  38 + // 订单总价
  39 + TotalPrice float64
  40 + // 订单区域信息
  41 + RegionInfo *domain.RegionInfo
  42 + // 备注
  43 + Remarks string
  44 + // 创建时间
  45 + CreateAt time.Time
  46 + // 更新时间
  47 + UpdateAt time.Time
  48 + // 软删
  49 + DeleteAt time.Time
  50 +}
  1 +package models
  2 +
  3 +type PartnerCategory struct {
  4 + tableName string `pg:"partner_category"`
  5 + // 合伙人类别id
  6 + PartnerCategoryId int `pg:",pk"`
  7 + // 合伙人类别编码
  8 + PartnerCategoryCode string
  9 + // 合伙人类别名称
  10 + PartnerCategoryName string
  11 +}
  1 +package models
  2 +
  3 +type Permission struct {
  4 + tableName string `pg:"permissions,alias:permission"`
  5 + // 权限id
  6 + PermissionId int `pg:",pk"`
  7 + // 公司名称
  8 + Name string
  9 + // 权限编码
  10 + Code string
  11 + // 父级id
  12 + ParentId int
  13 + // 排序
  14 + Sort int
  15 + // 图标
  16 + Icon string
  17 +}
  1 +package models
  2 +
  3 +import (
  4 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/domain"
  5 + "time"
  6 +)
  7 +
  8 +type User struct {
  9 + tableName string `pg:"users,alias:users"`
  10 + // 用户id
  11 + UserId int64 `pg:",pk"`
  12 + // 1.高管 2.合伙人 4:游客
  13 + UserType int
  14 + // 用户权限
  15 + Permissions []int `pg:",array"`
  16 + // 公司Id
  17 + CompanyId int64
  18 + // 用户信息
  19 + UserInfo *domain.UserInfo
  20 + // 合伙人信息
  21 + PartnerInfo *domain.PartnerInfo
  22 + // 状态 1正常 2禁用
  23 + Status int64
  24 + // 管理员类型 1.超级管理员 10:企业管理员 100:普通用户
  25 + AdminType int
  26 + // 合伙人列表 用户类型为高管时有效
  27 + AccessPartners []int64 `pg:",array"`
  28 + // 创建时间
  29 + CreateAt time.Time
  30 + // 更新时间
  31 + UpdateAt time.Time
  32 + // 删除时间
  33 + DeleteAt time.Time
  34 +}
  1 +package models
  2 +
  3 +import (
  4 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/domain"
  5 + "time"
  6 +)
  7 +
  8 +type UserAuth struct {
  9 + tableName string `pg:"user_auth,alias:user_auth"`
  10 + // 用户认证编号
  11 + UserAuthId int64 `pg:",pk"`
  12 + // 用户id列表
  13 + Users []int64 `pg:",array"`
  14 + // 手机认证
  15 + PhoneAuth *domain.PhoneAuth
  16 + // 创建时间
  17 + CreateAt time.Time
  18 + // 更新时间
  19 + UpdateAt time.Time
  20 +}
  1 +package transform
  2 +
  3 +import (
  4 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/domain"
  5 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/infrastructure/pg/models"
  6 +)
  7 +
  8 +func TransformToCompanyDomainModelFromPgModels(companyModel *models.Company) (*domain.Company, error) {
  9 + return &domain.Company{
  10 + CompanyId: companyModel.CompanyId,
  11 + CompanyInfo: companyModel.CompanyInfo,
  12 + CreateAt: companyModel.CreateAt,
  13 + UpdateAt: companyModel.UpdateAt,
  14 + DeleteAt: companyModel.DeleteAt,
  15 + }, nil
  16 +}
  1 +package transform
  2 +
  3 +import (
  4 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/domain"
  5 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/infrastructure/pg/models"
  6 +)
  7 +
  8 +func TransformToGoodsDomainModelFromPgModels(goodsModel *models.Goods) (*domain.Goods, error) {
  9 + return &domain.Goods{
  10 + GoodsId: goodsModel.GoodsId,
  11 + GoodsNum: goodsModel.GoodsNum,
  12 + GoodsDividend: goodsModel.GoodsDividend,
  13 + GoodsDividendStatus: goodsModel.GoodsDividendStatus,
  14 + GoodsName: goodsModel.GoodsName,
  15 + GoodsTotalPrice: goodsModel.GoodsTotalPrice,
  16 + Remarks: goodsModel.Remarks,
  17 + OrderNo: goodsModel.OrderNo,
  18 + GoodsDetail: goodsModel.GoodsDetail,
  19 + CreateAt: goodsModel.CreateAt,
  20 + UpdateAt: goodsModel.UpdateAt,
  21 + DeleteAt: goodsModel.DeleteAt,
  22 + }, nil
  23 +}
  1 +package transform
  2 +
  3 +import (
  4 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/domain"
  5 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/infrastructure/pg/models"
  6 +)
  7 +
  8 +func TransformToOrderDomainModelFromPgModels(orderModel *models.Order) (*domain.Order, error) {
  9 + return &domain.Order{
  10 + OrderId: orderModel.OrderId,
  11 + Buyer: orderModel.Buyer,
  12 + CompanyId: orderModel.CompanyId,
  13 + PartnerId: orderModel.PartnerId,
  14 + DeliveryCode: orderModel.DeliveryCode,
  15 + IsDisable: orderModel.IsDisable,
  16 + OrderNo: orderModel.OrderNo,
  17 + OrderDetail: orderModel.OrderDetail,
  18 + OrderDividend: orderModel.OrderDividend,
  19 + OrderDividendStatus: orderModel.OrderDividendStatus,
  20 + OrderGoods: orderModel.OrderGoods,
  21 + OrderSource: orderModel.OrderSource,
  22 + OrderType: orderModel.OrderType,
  23 + OrderStatus: orderModel.OrderStatus,
  24 + TotalPrice: orderModel.TotalPrice,
  25 + RegionInfo: orderModel.RegionInfo,
  26 + Remarks: orderModel.Remarks,
  27 + CreateAt: orderModel.CreateAt,
  28 + UpdateAt: orderModel.UpdateAt,
  29 + DeleteAt: orderModel.DeleteAt,
  30 + }, nil
  31 +}
  1 +package transform
  2 +
  3 +import (
  4 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/domain"
  5 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/infrastructure/pg/models"
  6 +)
  7 +
  8 +func TransformToPartnerCategoryDomainModelFromPgModels(partnerCategoryModel *models.PartnerCategory) (*domain.PartnerCategory, error) {
  9 + return &domain.PartnerCategory{
  10 + PartnerCategoryId: partnerCategoryModel.PartnerCategoryId,
  11 + PartnerCategoryCode: partnerCategoryModel.PartnerCategoryCode,
  12 + PartnerCategoryName: partnerCategoryModel.PartnerCategoryName,
  13 + }, nil
  14 +}
  1 +package transform
  2 +
  3 +import (
  4 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/domain"
  5 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/infrastructure/pg/models"
  6 +)
  7 +
  8 +func TransformToPermissionDomainModelFromPgModels(permissionModel *models.Permission) (*domain.Permission, error) {
  9 + return &domain.Permission{
  10 + PermissionId: permissionModel.PermissionId,
  11 + Name: permissionModel.Name,
  12 + Code: permissionModel.Code,
  13 + ParentId: permissionModel.ParentId,
  14 + Sort: permissionModel.Sort,
  15 + Icon: permissionModel.Icon,
  16 + }, nil
  17 +}
  1 +package transform
  2 +
  3 +import (
  4 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/domain"
  5 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/infrastructure/pg/models"
  6 +)
  7 +
  8 +func TransformToUserDomainModelFromPgModels(userModel *models.User) (*domain.User, error) {
  9 + return &domain.User{
  10 + UserId: userModel.UserId,
  11 + UserType: userModel.UserType,
  12 + Permissions: userModel.Permissions,
  13 + CompanyId: userModel.CompanyId,
  14 + UserInfo: userModel.UserInfo,
  15 + PartnerInfo: userModel.PartnerInfo,
  16 + Status: userModel.Status,
  17 + AdminType: userModel.AdminType,
  18 + AccessPartners: userModel.AccessPartners,
  19 + CreateAt: userModel.CreateAt,
  20 + UpdateAt: userModel.UpdateAt,
  21 + DeleteAt: userModel.DeleteAt,
  22 + }, nil
  23 +}
  1 +package transform
  2 +
  3 +import (
  4 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/domain"
  5 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/infrastructure/pg/models"
  6 +)
  7 +
  8 +func TransformToUserAuthDomainModelFromPgModels(userAuthModel *models.UserAuth) (*domain.UserAuth, error) {
  9 + return &domain.UserAuth{
  10 + UserAuthId: userAuthModel.UserAuthId,
  11 + Users: userAuthModel.Users,
  12 + PhoneAuth: userAuthModel.PhoneAuth,
  13 + CreateAt: userAuthModel.CreateAt,
  14 + UpdateAt: userAuthModel.UpdateAt,
  15 + }, nil
  16 +}
  1 +package repository
  2 +
  3 +import (
  4 + "fmt"
  5 + "github.com/go-pg/pg/v10"
  6 +
  7 + "github.com/linmadan/egglib-go/persistent/pg/sqlbuilder"
  8 + pgTransaction "github.com/linmadan/egglib-go/transaction/pg"
  9 + "github.com/linmadan/egglib-go/utils/snowflake"
  10 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/domain"
  11 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/infrastructure/pg/models"
  12 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/infrastructure/pg/transform"
  13 +)
  14 +
  15 +type CompanyRepository struct {
  16 + transactionContext *pgTransaction.TransactionContext
  17 +}
  18 +
  19 +func (repository *CompanyRepository) nextIdentify() (int64, error) {
  20 + IdWorker, err := snowflake.NewIdWorker(1)
  21 + if err != nil {
  22 + return 0, err
  23 + }
  24 + id, err := IdWorker.NextId()
  25 + return id, err
  26 +}
  27 +func (repository *CompanyRepository) Save(company *domain.Company) (*domain.Company, error) {
  28 + sqlBuildFields := []string{
  29 + "company_id",
  30 + "company_info",
  31 + "create_at",
  32 + "update_at",
  33 + }
  34 + insertFieldsSnippet := sqlbuilder.SqlFieldsSnippet(sqlBuildFields)
  35 + insertPlaceHoldersSnippet := sqlbuilder.SqlPlaceHoldersSnippet(sqlBuildFields)
  36 + returningFieldsSnippet := sqlbuilder.SqlFieldsSnippet(sqlBuildFields)
  37 + updateFields := sqlbuilder.RemoveSqlFields(sqlBuildFields, "company_id")
  38 + updateFieldsSnippet := sqlbuilder.SqlUpdateFieldsSnippet(updateFields)
  39 + tx := repository.transactionContext.PgTx
  40 + if company.Identify() == nil {
  41 + companyId, err := repository.nextIdentify()
  42 + if err != nil {
  43 + return company, err
  44 + } else {
  45 + company.CompanyId = companyId
  46 + }
  47 + if _, err := tx.QueryOne(
  48 + pg.Scan(
  49 + &company.CompanyId,
  50 + &company.CompanyInfo,
  51 + &company.CreateAt,
  52 + &company.UpdateAt,
  53 + &company.DeleteAt,
  54 + ),
  55 +
  56 + fmt.Sprintf("INSERT INTO companies (%s) VALUES (%s) RETURNING %s", insertFieldsSnippet, insertPlaceHoldersSnippet, returningFieldsSnippet),
  57 +
  58 + company.CompanyId,
  59 + company.CompanyInfo,
  60 + company.CreateAt,
  61 + company.UpdateAt,
  62 + company.DeleteAt,
  63 + ); err != nil {
  64 + return company, err
  65 + }
  66 + } else {
  67 + if _, err := tx.QueryOne(
  68 + pg.Scan(
  69 + &company.CompanyId,
  70 + &company.CompanyInfo,
  71 + &company.CreateAt,
  72 + &company.UpdateAt,
  73 + &company.DeleteAt,
  74 + ),
  75 +
  76 + fmt.Sprintf("UPDATE companies SET %s WHERE company_id=? RETURNING %s", updateFieldsSnippet, returningFieldsSnippet),
  77 +
  78 + company.CompanyInfo,
  79 + company.CreateAt,
  80 + company.UpdateAt,
  81 + company.DeleteAt,
  82 + company.Identify(),
  83 + ); err != nil {
  84 + return company, err
  85 + }
  86 + }
  87 + return company, nil
  88 +}
  89 +func (repository *CompanyRepository) Remove(company *domain.Company) (*domain.Company, error) {
  90 + tx := repository.transactionContext.PgTx
  91 + companyModel := new(models.Company)
  92 + companyModel.CompanyId = company.Identify().(int64)
  93 + if _, err := tx.Model(companyModel).WherePK().Delete(); err != nil {
  94 + return company, err
  95 + }
  96 + return company, nil
  97 +}
  98 +func (repository *CompanyRepository) FindOne(queryOptions map[string]interface{}) (*domain.Company, error) {
  99 + tx := repository.transactionContext.PgTx
  100 + companyModel := new(models.Company)
  101 + query := sqlbuilder.BuildQuery(tx.Model(companyModel), queryOptions)
  102 + query.SetWhereByQueryOption("company.company_id = ?", "companyId")
  103 + query.SetWhereByQueryOption(`company.company_info @>'{"status":?}'`, "status")
  104 + if err := query.First(); err != nil {
  105 + if err.Error() == "pg: no rows in result set" {
  106 + return nil, fmt.Errorf("没有此资源")
  107 + } else {
  108 + return nil, err
  109 + }
  110 + }
  111 + if companyModel.CompanyId == 0 {
  112 + return nil, nil
  113 + } else {
  114 + return transform.TransformToCompanyDomainModelFromPgModels(companyModel)
  115 + }
  116 +}
  117 +func (repository *CompanyRepository) Find(queryOptions map[string]interface{}) (int64, []*domain.Company, error) {
  118 + tx := repository.transactionContext.PgTx
  119 + var companyModels []*models.Company
  120 +
  121 + companies := make([]*domain.Company, 0)
  122 +
  123 + query := sqlbuilder.BuildQuery(tx.Model(&companyModels), queryOptions)
  124 + query.SetOffsetAndLimit(20)
  125 + query.SetOrderDirect("company_id", "DESC")
  126 + if count, err := query.SelectAndCount(); err != nil {
  127 + return 0, companies, err
  128 + } else {
  129 + for _, companyModel := range companyModels {
  130 + if company, err := transform.TransformToCompanyDomainModelFromPgModels(companyModel); err != nil {
  131 + return 0, companies, err
  132 + } else {
  133 + companies = append(companies, company)
  134 + }
  135 + }
  136 + return int64(count), companies, nil
  137 + }
  138 +}
  139 +func NewCompanyRepository(transactionContext *pgTransaction.TransactionContext) (*CompanyRepository, error) {
  140 + if transactionContext == nil {
  141 + return nil, fmt.Errorf("transactionContext参数不能为nil")
  142 + } else {
  143 + return &CompanyRepository{
  144 + transactionContext: transactionContext,
  145 + }, nil
  146 + }
  147 +}
  1 +package repository
  2 +
  3 +import (
  4 + "fmt"
  5 + "github.com/go-pg/pg/v10"
  6 +
  7 + "github.com/linmadan/egglib-go/persistent/pg/sqlbuilder"
  8 + pgTransaction "github.com/linmadan/egglib-go/transaction/pg"
  9 + "github.com/linmadan/egglib-go/utils/snowflake"
  10 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/domain"
  11 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/infrastructure/pg/models"
  12 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/infrastructure/pg/transform"
  13 +)
  14 +
  15 +type GoodsRepository struct {
  16 + transactionContext *pgTransaction.TransactionContext
  17 +}
  18 +
  19 +func (repository *GoodsRepository) nextIdentify() (int64, error) {
  20 + IdWorker, err := snowflake.NewIdWorker(1)
  21 + if err != nil {
  22 + return 0, err
  23 + }
  24 + id, err := IdWorker.NextId()
  25 + return id, err
  26 +}
  27 +func (repository *GoodsRepository) Save(goods *domain.Goods) (*domain.Goods, error) {
  28 + sqlBuildFields := []string{
  29 + "goods_id",
  30 + "goods_num",
  31 + "goods_dividend",
  32 + "goods_dividend_status",
  33 + "goods_name",
  34 + "goods_total_price",
  35 + "remarks",
  36 + "order_no",
  37 + "goods_detail",
  38 + "create_at",
  39 + "update_at",
  40 + "delete_at",
  41 + }
  42 + insertFieldsSnippet := sqlbuilder.SqlFieldsSnippet(sqlBuildFields)
  43 + insertPlaceHoldersSnippet := sqlbuilder.SqlPlaceHoldersSnippet(sqlBuildFields)
  44 + returningFieldsSnippet := sqlbuilder.SqlFieldsSnippet(sqlBuildFields)
  45 + updateFields := sqlbuilder.RemoveSqlFields(sqlBuildFields, "goods_id")
  46 + updateFieldsSnippet := sqlbuilder.SqlUpdateFieldsSnippet(updateFields)
  47 + tx := repository.transactionContext.PgTx
  48 + if goods.Identify() == nil {
  49 + goodsId, err := repository.nextIdentify()
  50 + if err != nil {
  51 + return goods, err
  52 + } else {
  53 + goods.GoodsId = goodsId
  54 + }
  55 + if _, err := tx.QueryOne(
  56 + pg.Scan(
  57 + &goods.GoodsId,
  58 + &goods.GoodsNum,
  59 + &goods.GoodsDividend,
  60 + &goods.GoodsDividendStatus,
  61 + &goods.GoodsName,
  62 + &goods.GoodsTotalPrice,
  63 + &goods.Remarks,
  64 + &goods.OrderNo,
  65 + &goods.GoodsDetail,
  66 + &goods.CreateAt,
  67 + &goods.UpdateAt,
  68 + &goods.DeleteAt,
  69 + ),
  70 + fmt.Sprintf("INSERT INTO goodss (%s) VALUES (%s) RETURNING %s", insertFieldsSnippet, insertPlaceHoldersSnippet, returningFieldsSnippet),
  71 + goods.GoodsId,
  72 + goods.GoodsNum,
  73 + goods.GoodsDividend,
  74 + goods.GoodsDividendStatus,
  75 + goods.GoodsName,
  76 + goods.GoodsTotalPrice,
  77 + goods.Remarks,
  78 + goods.OrderNo,
  79 + goods.GoodsDetail,
  80 + goods.CreateAt,
  81 + goods.UpdateAt,
  82 + goods.DeleteAt,
  83 + ); err != nil {
  84 + return goods, err
  85 + }
  86 + } else {
  87 + if _, err := tx.QueryOne(
  88 + pg.Scan(
  89 + &goods.GoodsId,
  90 + &goods.GoodsNum,
  91 + &goods.GoodsDividend,
  92 + &goods.GoodsDividendStatus,
  93 + &goods.GoodsName,
  94 + &goods.GoodsTotalPrice,
  95 + &goods.Remarks,
  96 + &goods.OrderNo,
  97 + &goods.GoodsDetail,
  98 + &goods.CreateAt,
  99 + &goods.UpdateAt,
  100 + &goods.DeleteAt,
  101 + ),
  102 + fmt.Sprintf("UPDATE goodss SET %s WHERE goods_id=? RETURNING %s", updateFieldsSnippet, returningFieldsSnippet),
  103 + goods.GoodsId,
  104 + goods.GoodsNum,
  105 + goods.GoodsDividend,
  106 + goods.GoodsDividendStatus,
  107 + goods.GoodsName,
  108 + goods.GoodsTotalPrice,
  109 + goods.Remarks,
  110 + goods.OrderNo,
  111 + goods.GoodsDetail,
  112 + goods.CreateAt,
  113 + goods.UpdateAt,
  114 + goods.DeleteAt,
  115 + goods.Identify(),
  116 + ); err != nil {
  117 + return goods, err
  118 + }
  119 + }
  120 + return goods, nil
  121 +}
  122 +func (repository *GoodsRepository) Remove(goods *domain.Goods) (*domain.Goods, error) {
  123 + tx := repository.transactionContext.PgTx
  124 + goodsModel := new(models.Goods)
  125 + goodsModel.GoodsId = goods.Identify().(int64)
  126 + if _, err := tx.Model(goodsModel).WherePK().Delete(); err != nil {
  127 + return goods, err
  128 + }
  129 + return goods, nil
  130 +}
  131 +func (repository *GoodsRepository) FindOne(queryOptions map[string]interface{}) (*domain.Goods, error) {
  132 + tx := repository.transactionContext.PgTx
  133 + goodsModel := new(models.Goods)
  134 + query := sqlbuilder.BuildQuery(tx.Model(goodsModel), queryOptions)
  135 + query.SetWhereByQueryOption("goods.goods_id = ?", "goodsId")
  136 + if err := query.First(); err != nil {
  137 + if err.Error() == "pg: no rows in result set" {
  138 + return nil, fmt.Errorf("没有此资源")
  139 + } else {
  140 + return nil, err
  141 + }
  142 + }
  143 + if goodsModel.GoodsId == 0 {
  144 + return nil, nil
  145 + } else {
  146 + return transform.TransformToGoodsDomainModelFromPgModels(goodsModel)
  147 + }
  148 +}
  149 +func (repository *GoodsRepository) Find(queryOptions map[string]interface{}) (int64, []*domain.Goods, error) {
  150 + tx := repository.transactionContext.PgTx
  151 + var goodsModels []*models.Goods
  152 + goodss := make([]*domain.Goods, 0)
  153 + query := sqlbuilder.BuildQuery(tx.Model(&goodsModels), queryOptions)
  154 + query.SetOffsetAndLimit(20)
  155 + query.SetOrderDirect("goods_id", "DESC")
  156 + if count, err := query.SelectAndCount(); err != nil {
  157 + return 0, goodss, err
  158 + } else {
  159 + for _, goodsModel := range goodsModels {
  160 + if goods, err := transform.TransformToGoodsDomainModelFromPgModels(goodsModel); err != nil {
  161 + return 0, goodss, err
  162 + } else {
  163 + goodss = append(goodss, goods)
  164 + }
  165 + }
  166 + return int64(count), goodss, nil
  167 + }
  168 +}
  169 +func NewGoodsRepository(transactionContext *pgTransaction.TransactionContext) (*GoodsRepository, error) {
  170 + if transactionContext == nil {
  171 + return nil, fmt.Errorf("transactionContext参数不能为nil")
  172 + } else {
  173 + return &GoodsRepository{
  174 + transactionContext: transactionContext,
  175 + }, nil
  176 + }
  177 +}
  1 +package repository
  2 +
  3 +import (
  4 + "fmt"
  5 + "github.com/go-pg/pg/v10"
  6 +
  7 + "github.com/linmadan/egglib-go/persistent/pg/sqlbuilder"
  8 + pgTransaction "github.com/linmadan/egglib-go/transaction/pg"
  9 + "github.com/linmadan/egglib-go/utils/snowflake"
  10 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/domain"
  11 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/infrastructure/pg/models"
  12 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/infrastructure/pg/transform"
  13 +)
  14 +
  15 +type OrderRepository struct {
  16 + transactionContext *pgTransaction.TransactionContext
  17 +}
  18 +
  19 +func (repository *OrderRepository) nextIdentify() (int64, error) {
  20 + IdWorker, err := snowflake.NewIdWorker(1)
  21 + if err != nil {
  22 + return 0, err
  23 + }
  24 + id, err := IdWorker.NextId()
  25 + return id, err
  26 +}
  27 +func (repository *OrderRepository) Save(order *domain.Order) (*domain.Order, error) {
  28 + sqlBuildFields := []string{
  29 + "order_id",
  30 + "buyer",
  31 + "company_id",
  32 + "partner_id",
  33 + "delivery_code",
  34 + "is_disable",
  35 + "order_no",
  36 + "order_detail",
  37 + "order_dividend",
  38 + "order_dividend_status",
  39 + "order_goods",
  40 + "order_source",
  41 + "order_type",
  42 + "order_status",
  43 + "total_price",
  44 + "region_info",
  45 + "remarks",
  46 + "create_at",
  47 + "update_at",
  48 + "delete_at",
  49 + }
  50 + insertFieldsSnippet := sqlbuilder.SqlFieldsSnippet(sqlBuildFields)
  51 + insertPlaceHoldersSnippet := sqlbuilder.SqlPlaceHoldersSnippet(sqlBuildFields)
  52 + returningFieldsSnippet := sqlbuilder.SqlFieldsSnippet(sqlBuildFields)
  53 + updateFields := sqlbuilder.RemoveSqlFields(sqlBuildFields, "order_id")
  54 + updateFieldsSnippet := sqlbuilder.SqlUpdateFieldsSnippet(updateFields)
  55 + tx := repository.transactionContext.PgTx
  56 + if order.Identify() == nil {
  57 + orderId, err := repository.nextIdentify()
  58 + if err != nil {
  59 + return order, err
  60 + } else {
  61 + order.OrderId = orderId
  62 + }
  63 + if _, err := tx.QueryOne(
  64 + pg.Scan(
  65 + &order.OrderId,
  66 + &order.Buyer,
  67 + &order.CompanyId,
  68 + &order.PartnerId,
  69 + &order.DeliveryCode,
  70 + &order.IsDisable,
  71 + &order.OrderNo,
  72 + &order.OrderDetail,
  73 + &order.OrderDividend,
  74 + &order.OrderDividendStatus,
  75 + pg.Array(&order.OrderGoods),
  76 + &order.OrderSource,
  77 + &order.OrderType,
  78 + &order.OrderStatus,
  79 + &order.TotalPrice,
  80 + &order.RegionInfo,
  81 + &order.Remarks,
  82 + &order.CreateAt,
  83 + &order.UpdateAt,
  84 + &order.DeleteAt,
  85 + ),
  86 + fmt.Sprintf("INSERT INTO orders (%s) VALUES (%s) RETURNING %s", insertFieldsSnippet, insertPlaceHoldersSnippet, returningFieldsSnippet),
  87 + order.OrderId,
  88 + order.Buyer,
  89 + order.CompanyId,
  90 + order.PartnerId,
  91 + order.DeliveryCode,
  92 + order.IsDisable,
  93 + order.OrderNo,
  94 + order.OrderDetail,
  95 + order.OrderDividend,
  96 + order.OrderDividendStatus,
  97 + pg.Array(order.OrderGoods),
  98 + order.OrderSource,
  99 + order.OrderType,
  100 + order.OrderStatus,
  101 + order.TotalPrice,
  102 + order.RegionInfo,
  103 + order.Remarks,
  104 + order.CreateAt,
  105 + order.UpdateAt,
  106 + order.DeleteAt,
  107 + ); err != nil {
  108 + return order, err
  109 + }
  110 + } else {
  111 + if _, err := tx.QueryOne(
  112 + pg.Scan(
  113 + &order.OrderId,
  114 + &order.Buyer,
  115 + &order.CompanyId,
  116 + &order.PartnerId,
  117 + &order.DeliveryCode,
  118 + &order.IsDisable,
  119 + &order.OrderNo,
  120 + &order.OrderDetail,
  121 + &order.OrderDividend,
  122 + &order.OrderDividendStatus,
  123 + pg.Array(&order.OrderGoods),
  124 + &order.OrderSource,
  125 + &order.OrderType,
  126 + &order.OrderStatus,
  127 + &order.TotalPrice,
  128 + &order.RegionInfo,
  129 + &order.Remarks,
  130 + &order.CreateAt,
  131 + &order.UpdateAt,
  132 + &order.DeleteAt,
  133 + ),
  134 + fmt.Sprintf("UPDATE orders SET %s WHERE order_id=? RETURNING %s", updateFieldsSnippet, returningFieldsSnippet),
  135 + order.OrderId,
  136 + order.Buyer,
  137 + order.CompanyId,
  138 + order.PartnerId,
  139 + order.DeliveryCode,
  140 + order.IsDisable,
  141 + order.OrderNo,
  142 + order.OrderDetail,
  143 + order.OrderDividend,
  144 + order.OrderDividendStatus,
  145 + pg.Array(order.OrderGoods),
  146 + order.OrderSource,
  147 + order.OrderType,
  148 + order.OrderStatus,
  149 + order.TotalPrice,
  150 + order.RegionInfo,
  151 + order.Remarks,
  152 + order.CreateAt,
  153 + order.UpdateAt,
  154 + order.DeleteAt,
  155 + order.Identify(),
  156 + ); err != nil {
  157 + return order, err
  158 + }
  159 + }
  160 + return order, nil
  161 +}
  162 +func (repository *OrderRepository) Remove(order *domain.Order) (*domain.Order, error) {
  163 + tx := repository.transactionContext.PgTx
  164 + orderModel := new(models.Order)
  165 + orderModel.OrderId = order.Identify().(int64)
  166 + if _, err := tx.Model(orderModel).WherePK().Delete(); err != nil {
  167 + return order, err
  168 + }
  169 + return order, nil
  170 +}
  171 +func (repository *OrderRepository) FindOne(queryOptions map[string]interface{}) (*domain.Order, error) {
  172 + tx := repository.transactionContext.PgTx
  173 + orderModel := new(models.Order)
  174 + query := sqlbuilder.BuildQuery(tx.Model(orderModel), queryOptions)
  175 + query.SetWhereByQueryOption("order.order_id = ?", "orderId")
  176 + if err := query.First(); err != nil {
  177 + if err.Error() == "pg: no rows in result set" {
  178 + return nil, fmt.Errorf("没有此资源")
  179 + } else {
  180 + return nil, err
  181 + }
  182 + }
  183 + if orderModel.OrderId == 0 {
  184 + return nil, nil
  185 + } else {
  186 + return transform.TransformToOrderDomainModelFromPgModels(orderModel)
  187 + }
  188 +}
  189 +func (repository *OrderRepository) Find(queryOptions map[string]interface{}) (int64, []*domain.Order, error) {
  190 + tx := repository.transactionContext.PgTx
  191 + var orderModels []*models.Order
  192 + orders := make([]*domain.Order, 0)
  193 + query := sqlbuilder.BuildQuery(tx.Model(&orderModels), queryOptions)
  194 + query.SetOffsetAndLimit(20)
  195 + query.SetOrderDirect("order_id", "DESC")
  196 + if count, err := query.SelectAndCount(); err != nil {
  197 + return 0, orders, err
  198 + } else {
  199 + for _, orderModel := range orderModels {
  200 + if order, err := transform.TransformToOrderDomainModelFromPgModels(orderModel); err != nil {
  201 + return 0, orders, err
  202 + } else {
  203 + orders = append(orders, order)
  204 + }
  205 + }
  206 + return int64(count), orders, nil
  207 + }
  208 +}
  209 +func NewOrderRepository(transactionContext *pgTransaction.TransactionContext) (*OrderRepository, error) {
  210 + if transactionContext == nil {
  211 + return nil, fmt.Errorf("transactionContext参数不能为nil")
  212 + } else {
  213 + return &OrderRepository{
  214 + transactionContext: transactionContext,
  215 + }, nil
  216 + }
  217 +}
  1 +package repository
  2 +
  3 +import (
  4 + "fmt"
  5 + "github.com/go-pg/pg/v10"
  6 +
  7 + "github.com/linmadan/egglib-go/persistent/pg/sqlbuilder"
  8 + pgTransaction "github.com/linmadan/egglib-go/transaction/pg"
  9 + "github.com/linmadan/egglib-go/utils/snowflake"
  10 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/domain"
  11 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/infrastructure/pg/models"
  12 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01-gateway/pkg/infrastructure/pg/transform"
  13 +)
  14 +
  15 +type PartnerCategoryRepository struct {
  16 + transactionContext *pgTransaction.TransactionContext
  17 +}
  18 +
  19 +func (repository *PartnerCategoryRepository) nextIdentify() (int64, error) {
  20 + IdWorker, err := snowflake.NewIdWorker(1)
  21 + if err != nil {
  22 + return 0, err
  23 + }
  24 + id, err := IdWorker.NextId()
  25 + return id, err
  26 +}
  27 +func (repository *PartnerCategoryRepository) Save(partnerCategory *domain.PartnerCategory) (*domain.PartnerCategory, error) {
  28 + sqlBuildFields := []string{
  29 + "partner_category_id",
  30 + "partner_category_code",
  31 + "partner_category_name",
  32 + }
  33 + insertFieldsSnippet := sqlbuilder.SqlFieldsSnippet(sqlBuildFields)
  34 + insertPlaceHoldersSnippet := sqlbuilder.SqlPlaceHoldersSnippet(sqlBuildFields)
  35 + returningFieldsSnippet := sqlbuilder.SqlFieldsSnippet(sqlBuildFields)
  36 + updateFields := sqlbuilder.RemoveSqlFields(sqlBuildFields, "partnerCategory_id")
  37 + updateFieldsSnippet := sqlbuilder.SqlUpdateFieldsSnippet(updateFields)
  38 + tx := repository.transactionContext.PgTx
  39 + if partnerCategory.Identify() == nil {
  40 + partnerCategoryId, err := repository.nextIdentify()
  41 + if err != nil {
  42 + return partnerCategory, err
  43 + } else {
  44 + partnerCategory.PartnerCategoryId = int(partnerCategoryId)
  45 + }
  46 + if _, err := tx.QueryOne(
  47 + pg.Scan(
  48 + &partnerCategory.PartnerCategoryId,
  49 + &partnerCategory.PartnerCategoryCode,
  50 + &partnerCategory.PartnerCategoryName,
  51 + ),
  52 + fmt.Sprintf("INSERT INTO partner_categorys (%s) VALUES (%s) RETURNING %s", insertFieldsSnippet, insertPlaceHoldersSnippet, returningFieldsSnippet),
  53 + partnerCategory.PartnerCategoryId,
  54 + partnerCategory.PartnerCategoryCode,
  55 + partnerCategory.PartnerCategoryName,
  56 + ); err != nil {
  57 + return partnerCategory, err
  58 + }
  59 + } else {
  60 + if _, err := tx.QueryOne(
  61 + pg.Scan(
  62 + &partnerCategory.PartnerCategoryId,
  63 + &partnerCategory.PartnerCategoryCode,
  64 + &partnerCategory.PartnerCategoryName,
  65 + ),
  66 + fmt.Sprintf("UPDATE partner_categorys SET %s WHERE partner_category_id=? RETURNING %s", updateFieldsSnippet, returningFieldsSnippet),
  67 + partnerCategory.PartnerCategoryId,
  68 + partnerCategory.PartnerCategoryCode,
  69 + partnerCategory.PartnerCategoryName,
  70 + partnerCategory.Identify(),
  71 + ); err != nil {
  72 + return partnerCategory, err
  73 + }
  74 + }
  75 + return partnerCategory, nil
  76 +}
  77 +func (repository *PartnerCategoryRepository) Remove(partnerCategory *domain.PartnerCategory) (*domain.PartnerCategory, error) {
  78 + tx := repository.transactionContext.PgTx
  79 + partnerCategoryModel := new(models.PartnerCategory)
  80 + partnerCategoryModel.PartnerCategoryId = partnerCategory.Identify().(int)
  81 + if _, err := tx.Model(partnerCategoryModel).WherePK().Delete(); err != nil {
  82 + return partnerCategory, err
  83 + }
  84 + return partnerCategory, nil
  85 +}
  86 +func (repository *PartnerCategoryRepository) FindOne(queryOptions map[string]interface{}) (*domain.PartnerCategory, error) {
  87 + tx := repository.transactionContext.PgTx
  88 + partnerCategoryModel := new(models.PartnerCategory)
  89 + query := sqlbuilder.BuildQuery(tx.Model(partnerCategoryModel), queryOptions)
  90 + query.SetWhereByQueryOption("partner_category.partner_category_id = ?", "partnerCategoryId")
  91 + if err := query.First(); err != nil {
  92 + if err.Error() == "pg: no rows in result set" {
  93 + return nil, fmt.Errorf("没有此资源")
  94 + } else {
  95 + return nil, err
  96 + }
  97 + }
  98 + if partnerCategoryModel.PartnerCategoryId == 0 {
  99 + return nil, nil
  100 + } else {
  101 + return transform.TransformToPartnerCategoryDomainModelFromPgModels(partnerCategoryModel)
  102 + }
  103 +}
  104 +func (repository *PartnerCategoryRepository) Find(queryOptions map[string]interface{}) (int64, []*domain.PartnerCategory, error) {
  105 + tx := repository.transactionContext.PgTx
  106 + var partnerCategoryModels []*models.PartnerCategory
  107 + partnerCategorys := make([]*domain.PartnerCategory, 0)
  108 + query := sqlbuilder.BuildQuery(tx.Model(&partnerCategoryModels), queryOptions)
  109 + query.SetOffsetAndLimit(20)
  110 + query.SetOrderDirect("partner_category_id", "DESC")
  111 + if count, err := query.SelectAndCount(); err != nil {
  112 + return 0, partnerCategorys, err
  113 + } else {
  114 + for _, partnerCategoryModel := range partnerCategoryModels {
  115 + if partnerCategory, err := transform.TransformToPartnerCategoryDomainModelFromPgModels(partnerCategoryModel); err != nil {
  116 + return 0, partnerCategorys, err
  117 + } else {
  118 + partnerCategorys = append(partnerCategorys, partnerCategory)
  119 + }
  120 + }
  121 + return int64(count), partnerCategorys, nil
  122 + }
  123 +}
  124 +func NewPartnerCategoryRepository(transactionContext *pgTransaction.TransactionContext) (*PartnerCategoryRepository, error) {
  125 + if transactionContext == nil {
  126 + return nil, fmt.Errorf("transactionContext参数不能为nil")
  127 + } else {
  128 + return &PartnerCategoryRepository{
  129 + transactionContext: transactionContext,
  130 + }, nil
  131 + }
  132 +}