(1)门店管理功能迭代;(2)日志模块优化;

This commit is contained in:
chenlin 2023-12-02 23:27:24 +08:00
parent ad53a26ce3
commit 36d955cfad
10 changed files with 462 additions and 10 deletions

View File

@ -63,6 +63,14 @@ func StoreDel(c *gin.Context) {
app.OK(c, nil, "删除成功") app.OK(c, nil, "删除成功")
} }
// StoreAdd 新增门店
// @Summary 新增门店
// @Tags 门店管理
// @Produce json
// @Accept json
// @Param request body models.Store true "新增门店模型"
// @Success 200 {object} app.Response
// @Router /api/v1/store/add [post]
func StoreAdd(c *gin.Context) { func StoreAdd(c *gin.Context) {
store := &models.Store{} store := &models.Store{}
if c.ShouldBindJSON(store) != nil { if c.ShouldBindJSON(store) != nil {

View File

@ -22,6 +22,8 @@ type Store struct {
IsOnline uint32 `json:"is_online"` // 在线 IsOnline uint32 `json:"is_online"` // 在线
CooperativeBusinessId uint32 `json:"cooperative_business_id" gorm:"index"` // 合作商id CooperativeBusinessId uint32 `json:"cooperative_business_id" gorm:"index"` // 合作商id
CooperativeName string `json:"cooperative_name"` // 合作商名称 CooperativeName string `json:"cooperative_name"` // 合作商名称
MemberService uint32 `json:"member_service"` // 会员服务1 开启 2 不开启
SalesCommRate float64 `json:"sales_comm_rate"` // 门店销售提成比例
//GameCardGoods //GameCardGoods
CooperativeAssistantMemberDeduct *CooperativeAssistantMemberDeduct `json:"cooperative_assistant_member_deduct" gorm:"-"` CooperativeAssistantMemberDeduct *CooperativeAssistantMemberDeduct `json:"cooperative_assistant_member_deduct" gorm:"-"`
} }

View File

@ -40,7 +40,7 @@ settings:
# 数据库类型 mysqlsqlite3 postgres # 数据库类型 mysqlsqlite3 postgres
driver: mysql driver: mysql
# 数据库连接字符串 mysql 缺省信息 charset=utf8&parseTime=True&loc=Local&timeout=1000ms # 数据库连接字符串 mysql 缺省信息 charset=utf8&parseTime=True&loc=Local&timeout=1000ms
source: mh_dev:m5h4parZsXjbeiFh@tcp(39.108.188.218:3306)/mh_dev?charset=utf8&parseTime=True&loc=Local&timeout=1000ms source: mh_dev:d9qy46ONI0ZTF9eH@tcp(39.108.188.218:3306)/mh_dev?charset=utf8&parseTime=True&loc=Local&timeout=1000ms
# source: mh_pro:fLeytnBFCRB553ab@tcp(39.108.188.218:3306)/mh_pro?charset=utf8&parseTime=True&loc=Local&timeout=1000ms # source: mh_pro:fLeytnBFCRB553ab@tcp(39.108.188.218:3306)/mh_pro?charset=utf8&parseTime=True&loc=Local&timeout=1000ms
gen: gen:

View File

@ -2745,6 +2745,39 @@ const docTemplate = `{
} }
} }
}, },
"/api/v1/store/add": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"门店管理"
],
"summary": "新增门店",
"parameters": [
{
"description": "新增门店模型",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/models.Store"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/app.Response"
}
}
}
}
},
"/api/v1/supplier/create": { "/api/v1/supplier/create": {
"post": { "post": {
"consumes": [ "consumes": [
@ -4249,6 +4282,49 @@ const docTemplate = `{
} }
} }
}, },
"models.CooperativeAssistantMemberDeduct": {
"type": "object",
"properties": {
"black_gold_deduct": {
"description": "黑金金会员提成",
"type": "integer"
},
"cooperative_business_id": {
"type": "integer"
},
"createdAt": {
"description": "创建时间",
"type": "string"
},
"gold_deduct": {
"description": "黄金会员提成",
"type": "integer"
},
"id": {
"description": "数据库记录编号",
"type": "integer"
},
"platinum_deduct": {
"description": "白金会员提成",
"type": "integer"
},
"renewal_black_gold_deduct": {
"description": "续费黑金金会员提成",
"type": "integer"
},
"renewal_gold_deduct": {
"description": "续费黄金会员提成",
"type": "integer"
},
"renewal_platinum_deduct": {
"description": "续费白金会员提成",
"type": "integer"
},
"store_id": {
"type": "integer"
}
}
},
"models.DictType": { "models.DictType": {
"type": "object", "type": "object",
"properties": { "properties": {
@ -5296,6 +5372,83 @@ const docTemplate = `{
} }
} }
}, },
"models.Store": {
"type": "object",
"properties": {
"address": {
"description": "详细地址",
"type": "string"
},
"city": {
"description": "市",
"type": "string"
},
"cooperative_assistant_member_deduct": {
"description": "GameCardGoods",
"allOf": [
{
"$ref": "#/definitions/models.CooperativeAssistantMemberDeduct"
}
]
},
"cooperative_business_id": {
"description": "合作商id",
"type": "integer"
},
"cooperative_name": {
"description": "合作商名称",
"type": "string"
},
"createdAt": {
"description": "创建时间",
"type": "string"
},
"district": {
"description": "区",
"type": "string"
},
"id": {
"description": "数据库记录编号",
"type": "integer"
},
"img": {
"description": "门面图",
"type": "string"
},
"is_online": {
"description": "在线",
"type": "integer"
},
"latitude": {
"description": "纬度",
"type": "number"
},
"longitude": {
"description": "经度",
"type": "number"
},
"member_service": {
"description": "会员服务1 开启 2 不开启",
"type": "integer"
},
"name": {
"description": "门店名称",
"type": "string"
},
"province": {
"description": "省",
"type": "string"
},
"sales_comm_rate": {
"description": "门店销售提成比例",
"type": "number"
},
"tel": {
"description": "电话",
"type": "string"
}
}
},
"models.StoreInfo": { "models.StoreInfo": {
"type": "object", "type": "object",
"properties": { "properties": {

View File

@ -2734,6 +2734,39 @@
} }
} }
}, },
"/api/v1/store/add": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"门店管理"
],
"summary": "新增门店",
"parameters": [
{
"description": "新增门店模型",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/models.Store"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/app.Response"
}
}
}
}
},
"/api/v1/supplier/create": { "/api/v1/supplier/create": {
"post": { "post": {
"consumes": [ "consumes": [
@ -4238,6 +4271,49 @@
} }
} }
}, },
"models.CooperativeAssistantMemberDeduct": {
"type": "object",
"properties": {
"black_gold_deduct": {
"description": "黑金金会员提成",
"type": "integer"
},
"cooperative_business_id": {
"type": "integer"
},
"createdAt": {
"description": "创建时间",
"type": "string"
},
"gold_deduct": {
"description": "黄金会员提成",
"type": "integer"
},
"id": {
"description": "数据库记录编号",
"type": "integer"
},
"platinum_deduct": {
"description": "白金会员提成",
"type": "integer"
},
"renewal_black_gold_deduct": {
"description": "续费黑金金会员提成",
"type": "integer"
},
"renewal_gold_deduct": {
"description": "续费黄金会员提成",
"type": "integer"
},
"renewal_platinum_deduct": {
"description": "续费白金会员提成",
"type": "integer"
},
"store_id": {
"type": "integer"
}
}
},
"models.DictType": { "models.DictType": {
"type": "object", "type": "object",
"properties": { "properties": {
@ -5285,6 +5361,83 @@
} }
} }
}, },
"models.Store": {
"type": "object",
"properties": {
"address": {
"description": "详细地址",
"type": "string"
},
"city": {
"description": "市",
"type": "string"
},
"cooperative_assistant_member_deduct": {
"description": "GameCardGoods",
"allOf": [
{
"$ref": "#/definitions/models.CooperativeAssistantMemberDeduct"
}
]
},
"cooperative_business_id": {
"description": "合作商id",
"type": "integer"
},
"cooperative_name": {
"description": "合作商名称",
"type": "string"
},
"createdAt": {
"description": "创建时间",
"type": "string"
},
"district": {
"description": "区",
"type": "string"
},
"id": {
"description": "数据库记录编号",
"type": "integer"
},
"img": {
"description": "门面图",
"type": "string"
},
"is_online": {
"description": "在线",
"type": "integer"
},
"latitude": {
"description": "纬度",
"type": "number"
},
"longitude": {
"description": "经度",
"type": "number"
},
"member_service": {
"description": "会员服务1 开启 2 不开启",
"type": "integer"
},
"name": {
"description": "门店名称",
"type": "string"
},
"province": {
"description": "省",
"type": "string"
},
"sales_comm_rate": {
"description": "门店销售提成比例",
"type": "number"
},
"tel": {
"description": "电话",
"type": "string"
}
}
},
"models.StoreInfo": { "models.StoreInfo": {
"type": "object", "type": "object",
"properties": { "properties": {

View File

@ -579,6 +579,37 @@ definitions:
- sys_generate - sys_generate
- wholesale_price - wholesale_price
type: object type: object
models.CooperativeAssistantMemberDeduct:
properties:
black_gold_deduct:
description: 黑金金会员提成
type: integer
cooperative_business_id:
type: integer
createdAt:
description: 创建时间
type: string
gold_deduct:
description: 黄金会员提成
type: integer
id:
description: 数据库记录编号
type: integer
platinum_deduct:
description: 白金会员提成
type: integer
renewal_black_gold_deduct:
description: 续费黑金金会员提成
type: integer
renewal_gold_deduct:
description: 续费黄金会员提成
type: integer
renewal_platinum_deduct:
description: 续费白金会员提成
type: integer
store_id:
type: integer
type: object
models.DictType: models.DictType:
properties: properties:
createBy: createBy:
@ -1336,6 +1367,61 @@ definitions:
description: 更新时间 description: 更新时间
type: string type: string
type: object type: object
models.Store:
properties:
address:
description: 详细地址
type: string
city:
description:
type: string
cooperative_assistant_member_deduct:
allOf:
- $ref: '#/definitions/models.CooperativeAssistantMemberDeduct'
description: GameCardGoods
cooperative_business_id:
description: 合作商id
type: integer
cooperative_name:
description: 合作商名称
type: string
createdAt:
description: 创建时间
type: string
district:
description:
type: string
id:
description: 数据库记录编号
type: integer
img:
description: 门面图
type: string
is_online:
description: 在线
type: integer
latitude:
description: 纬度
type: number
longitude:
description: 经度
type: number
member_service:
description: 会员服务1 开启 2 不开启
type: integer
name:
description: 门店名称
type: string
province:
description:
type: string
sales_comm_rate:
description: 门店销售提成比例
type: number
tel:
description: 电话
type: string
type: object
models.StoreInfo: models.StoreInfo:
properties: properties:
expireTime: expireTime:
@ -3739,6 +3825,27 @@ paths:
summary: 系统信息 summary: 系统信息
tags: tags:
- system/系统信息 - system/系统信息
/api/v1/store/add:
post:
consumes:
- application/json
parameters:
- description: 新增门店模型
in: body
name: request
required: true
schema:
$ref: '#/definitions/models.Store'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/app.Response'
summary: 新增门店
tags:
- 门店管理
/api/v1/supplier/create: /api/v1/supplier/create:
post: post:
consumes: consumes:

1
go.mod
View File

@ -57,6 +57,7 @@ require (
golang.org/x/sync v0.4.0 golang.org/x/sync v0.4.0
golang.org/x/tools v0.14.0 // indirect golang.org/x/tools v0.14.0 // indirect
google.golang.org/protobuf v1.31.0 // indirect google.golang.org/protobuf v1.31.0 // indirect
gopkg.in/natefinch/lumberjack.v2 v2.2.1
gorm.io/driver/mysql v0.3.2 gorm.io/driver/mysql v0.3.2
gorm.io/driver/postgres v0.2.9 gorm.io/driver/postgres v0.2.9
gorm.io/driver/sqlite v1.0.9 gorm.io/driver/sqlite v1.0.9

2
go.sum
View File

@ -843,6 +843,8 @@ gopkg.in/ini.v1 v1.51.0 h1:AQvPpx3LzTDM0AjnIRlVFwFFGC+npRopjZxLJj6gdno=
gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/kyokomi/emoji.v1 v1.5.1 h1:beetH5mWDMzFznJ+Qzd5KVHp79YKhVUMcdO8LpRLeGw= gopkg.in/kyokomi/emoji.v1 v1.5.1 h1:beetH5mWDMzFznJ+Qzd5KVHp79YKhVUMcdO8LpRLeGw=
gopkg.in/kyokomi/emoji.v1 v1.5.1/go.mod h1:N9AZ6hi1jHOPn34PsbpufQZUcKftSD7WgS2pgpmH4Lg= gopkg.in/kyokomi/emoji.v1 v1.5.1/go.mod h1:N9AZ6hi1jHOPn34PsbpufQZUcKftSD7WgS2pgpmH4Lg=
gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc=
gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc=
gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=

View File

@ -2,8 +2,14 @@ package logger
import ( import (
"context" "context"
"fmt"
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
"go-admin/tools/config"
"gopkg.in/natefinch/lumberjack.v2"
"io"
"os" "os"
"path/filepath"
"time"
) )
var l *Logx var l *Logx
@ -27,14 +33,34 @@ func init() {
ctx: &ctx, ctx: &ctx,
} }
// 设置json格式
l.SetFormatter(&logrus.JSONFormatter{TimestampFormat: "2006-01-02 15:04:05"}) l.SetFormatter(&logrus.JSONFormatter{TimestampFormat: "2006-01-02 15:04:05"})
// 设置输出
l.SetOutput(os.Stdout)
// 设置最低loglevel // 设置最低loglevel
l.SetLevel(logrus.DebugLevel) l.SetLevel(logrus.InfoLevel)
l.SetReportCaller(true) // 设置输出到文件
logFileName := getLogFileName()
fileLogger := &lumberjack.Logger{
Filename: logFileName,
MaxSize: 100, // 每个日志文件的最大尺寸,单位为 MB
MaxBackups: 5, // 保留旧日志文件的最大个数
MaxAge: 60, // 保留旧日志文件的最大天数
Compress: true, // 是否压缩旧日志文件
}
defer fileLogger.Close()
// 将日志同时输出到文件和控制台
l.SetOutput(io.MultiWriter(os.Stdout, fileLogger))
}
// 获取日志文件名,按照 server-2023-12-01.log 的格式
func getLogFileName() string {
currentTime := time.Now().Format("2006-01-02")
logFileName := fmt.Sprintf("server-%s.log", currentTime)
// 可以指定日志文件存储的路径
logFilePath := config.LoggerConfig.Path
return filepath.Join(logFilePath, logFileName)
} }
func WithContext(ctx context.Context) { func WithContext(ctx context.Context) {

View File

@ -337,7 +337,7 @@ func TestKuaiDiStatePush(t *testing.T) {
unescape, err := url.ParseQuery(body) unescape, err := url.ParseQuery(body)
if err != nil { if err != nil {
logger.Error("err:", err) logger.Error("err:", logger.Field("err", err))
} }
//unescapeJson, _ := json.Marshal(unescape) //unescapeJson, _ := json.Marshal(unescape)
@ -380,7 +380,7 @@ func TestTimeZeroData(t *testing.T) {
"receipt_time": time.Time{}, "receipt_time": time.Time{},
}).Error }).Error
if err != nil { if err != nil {
logger.Error("err:", err) logger.Error("err:", logger.Field("err", err))
} }
//NewShareCardRetrieveCardQuerySet(DB).IDEq(189).GetUpdater().SetStoreId() //NewShareCardRetrieveCardQuerySet(DB).IDEq(189).GetUpdater().SetStoreId()
@ -444,7 +444,7 @@ func TestUpdateStorePassWd(t *testing.T) {
var sysUsers models.SysUser var sysUsers models.SysUser
err := orm.Eloquent.Table("sys_user").Where("username=?", list[i]).Find(&sysUsers).Error err := orm.Eloquent.Table("sys_user").Where("username=?", list[i]).Find(&sysUsers).Error
if err != nil { if err != nil {
logger.Error("find sys users err:", err) logger.Error("find sys users err:", logger.Field("err", err))
} }
fmt.Println("list:", list[i], " ", passes[i]) fmt.Println("list:", list[i], " ", passes[i])
@ -468,7 +468,7 @@ func TestUpdateStorePassWdTest(t *testing.T) {
var sysUsers []models.SysUser var sysUsers []models.SysUser
err := orm.Eloquent.Debug().Table("sys_user").Where("username IN (?)", []string{"wxjm"}).Find(&sysUsers).Error err := orm.Eloquent.Debug().Table("sys_user").Where("username IN (?)", []string{"wxjm"}).Find(&sysUsers).Error
if err != nil { if err != nil {
logger.Error("find sys users err:", err) logger.Error("find sys users err:", logger.Field("err", err))
} }
passes := []string{"JlPP2ZnAT1"} passes := []string{"JlPP2ZnAT1"}
for i, _ := range sysUsers { for i, _ := range sysUsers {
@ -490,7 +490,7 @@ func TestUpdateStorePassWdTest(t *testing.T) {
err = orm.Eloquent.Table("sys_user").Where("user_id=?", sysUsers[i].UserId).Update("password", string(hash)).Error err = orm.Eloquent.Table("sys_user").Where("user_id=?", sysUsers[i].UserId).Update("password", string(hash)).Error
if err != nil { if err != nil {
logger.Error("update err:", err) logger.Error("update err:", logger.Field("err", err))
} }
} }
} }