feat:解决冲突
This commit is contained in:
commit
e5d4e80e19
@ -115,10 +115,28 @@ func UpdateValueAddServiceLang(tx *gorm.DB, columns map[string]interface{}) (err
|
|||||||
// 增值套餐列表
|
// 增值套餐列表
|
||||||
func ValueAddServiceList(req *bundle.ValueAddServiceListRequest) (res []*model.ValueAddService, total int64, err error) {
|
func ValueAddServiceList(req *bundle.ValueAddServiceListRequest) (res []*model.ValueAddService, total int64, err error) {
|
||||||
query := app.ModuleClients.BundleDB.Model(&model.ValueAddService{}).
|
query := app.ModuleClients.BundleDB.Model(&model.ValueAddService{}).
|
||||||
Where("deleted_at = 0").
|
Where("deleted_at = 0")
|
||||||
Preload("ValueAddServiceLang", func(db *gorm.DB) *gorm.DB {
|
|
||||||
return db.Select("uuid,service_name,service_type,price_mode,original_price,unit,language,price_type,options,created_at,updated_at")
|
// 使用子查询筛选符合条件的UUID
|
||||||
})
|
if req.Name != "" || req.ServiceType != 0 {
|
||||||
|
subQuery := app.ModuleClients.BundleDB.Model(&model.ValueAddServiceLang{}).
|
||||||
|
Select("uuid").
|
||||||
|
Where("deleted_at = 0")
|
||||||
|
|
||||||
|
if req.Name != "" {
|
||||||
|
subQuery = subQuery.Where("service_name LIKE ?", "%"+req.Name+"%")
|
||||||
|
}
|
||||||
|
if req.ServiceType != 0 {
|
||||||
|
subQuery = subQuery.Where("service_type = ?", req.ServiceType)
|
||||||
|
}
|
||||||
|
|
||||||
|
query = query.Where("uuid IN (?)", subQuery)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 预加载语言表数据
|
||||||
|
query = query.Preload("ValueAddServiceLang", func(db *gorm.DB) *gorm.DB {
|
||||||
|
return db.Select("uuid,service_name,service_type,price_mode,original_price,unit,language,price_type,options,created_at,updated_at,quota_type,quota_value,is_expired")
|
||||||
|
})
|
||||||
|
|
||||||
count := *query
|
count := *query
|
||||||
if req.PageSize != 0 && req.Page != 0 {
|
if req.PageSize != 0 && req.Page != 0 {
|
||||||
|
@ -198,6 +198,9 @@ func SaveValueAddService(in *bundle.ValueAddServiceLang) (res *bundle.SaveRespon
|
|||||||
Language: in.Language,
|
Language: in.Language,
|
||||||
PriceType: in.PriceType,
|
PriceType: in.PriceType,
|
||||||
Options: options,
|
Options: options,
|
||||||
|
QuotaType: in.QuotaType,
|
||||||
|
QuotaValue: in.QuotaValue,
|
||||||
|
IsExpired: in.IsExpired,
|
||||||
}
|
}
|
||||||
if in.Uuid == "" && in.Language != msg.ZH_CN {
|
if in.Uuid == "" && in.Language != msg.ZH_CN {
|
||||||
return res, errors.New("请先创建中文版本增值服务")
|
return res, errors.New("请先创建中文版本增值服务")
|
||||||
@ -259,6 +262,9 @@ func SaveValueAddService(in *bundle.ValueAddServiceLang) (res *bundle.SaveRespon
|
|||||||
Language: lang,
|
Language: lang,
|
||||||
PriceType: valueAddServiceLang.PriceType,
|
PriceType: valueAddServiceLang.PriceType,
|
||||||
Options: valueAddServiceLang.Options,
|
Options: valueAddServiceLang.Options,
|
||||||
|
QuotaType: valueAddServiceLang.QuotaType,
|
||||||
|
QuotaValue: valueAddServiceLang.QuotaValue,
|
||||||
|
IsExpired: valueAddServiceLang.IsExpired,
|
||||||
}
|
}
|
||||||
otherLang.Language = lang
|
otherLang.Language = lang
|
||||||
if err = dao.CreateValueAddServiceLang(tx, &otherLang); err != nil {
|
if err = dao.CreateValueAddServiceLang(tx, &otherLang); err != nil {
|
||||||
@ -297,6 +303,9 @@ func SaveValueAddService(in *bundle.ValueAddServiceLang) (res *bundle.SaveRespon
|
|||||||
"price_type": in.PriceType,
|
"price_type": in.PriceType,
|
||||||
"options": options,
|
"options": options,
|
||||||
"language": in.Language,
|
"language": in.Language,
|
||||||
|
"quota_type": in.QuotaType,
|
||||||
|
"quota_value": in.QuotaValue,
|
||||||
|
"is_expired": in.IsExpired,
|
||||||
}
|
}
|
||||||
if err := dao.UpdateValueAddServiceLang(tx, updateLangService); err != nil {
|
if err := dao.UpdateValueAddServiceLang(tx, updateLangService); err != nil {
|
||||||
return res, errors.New("更新增值服务失败")
|
return res, errors.New("更新增值服务失败")
|
||||||
@ -331,6 +340,8 @@ func ValueAddServiceList(req *bundle.ValueAddServiceListRequest) (res *bundle.Va
|
|||||||
return res, errors.New("查询增值服务列表失败")
|
return res, errors.New("查询增值服务列表失败")
|
||||||
}
|
}
|
||||||
for _, valueAddService := range list {
|
for _, valueAddService := range list {
|
||||||
|
var quotaInfo string
|
||||||
|
var isExpired bool
|
||||||
serviceInfo := &bundle.ValueAddService{
|
serviceInfo := &bundle.ValueAddService{
|
||||||
Uuid: valueAddService.UUID,
|
Uuid: valueAddService.UUID,
|
||||||
ServiceName: valueAddService.ServiceName,
|
ServiceName: valueAddService.ServiceName,
|
||||||
@ -348,6 +359,28 @@ func ValueAddServiceList(req *bundle.ValueAddServiceListRequest) (res *bundle.Va
|
|||||||
Language: serviceLang.Language,
|
Language: serviceLang.Language,
|
||||||
CreatedAt: time.Unix(serviceLang.CreatedAt, 0).Format("2006-01-02 15:04:05"),
|
CreatedAt: time.Unix(serviceLang.CreatedAt, 0).Format("2006-01-02 15:04:05"),
|
||||||
UpdatedAt: time.Unix(serviceLang.UpdatedAt, 0).Format("2006-01-02 15:04:05"),
|
UpdatedAt: time.Unix(serviceLang.UpdatedAt, 0).Format("2006-01-02 15:04:05"),
|
||||||
|
QuotaType: serviceLang.QuotaType,
|
||||||
|
QuotaValue: serviceLang.QuotaValue,
|
||||||
|
IsExpired: serviceLang.IsExpired,
|
||||||
|
}
|
||||||
|
if serviceLangInfo.Language == "zh-CN" {
|
||||||
|
switch serviceLangInfo.QuotaType {
|
||||||
|
case 0:
|
||||||
|
quotaInfo = "不限额度"
|
||||||
|
case 1:
|
||||||
|
quotaInfo = fmt.Sprintf("每天%d个", serviceLangInfo.QuotaValue)
|
||||||
|
case 2:
|
||||||
|
quotaInfo = fmt.Sprintf("每月%d个", serviceLangInfo.QuotaValue)
|
||||||
|
case 3:
|
||||||
|
quotaInfo = fmt.Sprintf("每季度%d个", serviceLangInfo.QuotaValue)
|
||||||
|
case 4:
|
||||||
|
quotaInfo = fmt.Sprintf("每半年%d个", serviceLangInfo.QuotaValue)
|
||||||
|
case 5:
|
||||||
|
quotaInfo = fmt.Sprintf("每年%d个", serviceLangInfo.QuotaValue)
|
||||||
|
default:
|
||||||
|
quotaInfo = "不限额度"
|
||||||
|
}
|
||||||
|
isExpired = serviceLangInfo.IsExpired
|
||||||
}
|
}
|
||||||
if len(serviceLang.Options) > 0 {
|
if len(serviceLang.Options) > 0 {
|
||||||
var options []*bundle.ValueAddPriceOptions
|
var options []*bundle.ValueAddPriceOptions
|
||||||
@ -377,6 +410,12 @@ func ValueAddServiceList(req *bundle.ValueAddServiceListRequest) (res *bundle.Va
|
|||||||
serviceLangInfo.Options = options
|
serviceLangInfo.Options = options
|
||||||
}
|
}
|
||||||
serviceInfo.ServiceLang = append(serviceInfo.ServiceLang, serviceLangInfo)
|
serviceInfo.ServiceLang = append(serviceInfo.ServiceLang, serviceLangInfo)
|
||||||
|
if quotaInfo != "" && serviceInfo.ServiceType != 5 {
|
||||||
|
serviceInfo.ServiceQuota = quotaInfo
|
||||||
|
serviceInfo.IsExpired = isExpired
|
||||||
|
} else {
|
||||||
|
return res, errors.New("额度信息获取错误")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
res.ValueAddServiceList = append(res.ValueAddServiceList, serviceInfo)
|
res.ValueAddServiceList = append(res.ValueAddServiceList, serviceInfo)
|
||||||
}
|
}
|
||||||
@ -445,6 +484,9 @@ func ValueAddServiceDetail(req *bundle.ValueAddServiceDetailRequest) (res *bundl
|
|||||||
Options: langOptions,
|
Options: langOptions,
|
||||||
CreatedAt: time.Unix(serviceLang.CreatedAt, 0).Format("2006-01-02 15:04:05"),
|
CreatedAt: time.Unix(serviceLang.CreatedAt, 0).Format("2006-01-02 15:04:05"),
|
||||||
UpdatedAt: time.Unix(serviceLang.UpdatedAt, 0).Format("2006-01-02 15:04:05"),
|
UpdatedAt: time.Unix(serviceLang.UpdatedAt, 0).Format("2006-01-02 15:04:05"),
|
||||||
|
QuotaType: serviceLang.QuotaType,
|
||||||
|
QuotaValue: serviceLang.QuotaValue,
|
||||||
|
IsExpired: serviceLang.IsExpired,
|
||||||
}
|
}
|
||||||
serviceLangs = append(serviceLangs, serviceLangInfo)
|
serviceLangs = append(serviceLangs, serviceLangInfo)
|
||||||
}
|
}
|
||||||
|
@ -52,13 +52,16 @@ type ValueAddServiceLang struct {
|
|||||||
PriceMode int32 `json:"priceMode" gorm:"column:price_mode;type:int;comment:套餐价格类型 1:单价 2:总价"`
|
PriceMode int32 `json:"priceMode" gorm:"column:price_mode;type:int;comment:套餐价格类型 1:单价 2:总价"`
|
||||||
OriginalPrice float32 `json:"originalPrice" gorm:"column:original_price;type:decimal(12,2);comment:原单价"`
|
OriginalPrice float32 `json:"originalPrice" gorm:"column:original_price;type:decimal(12,2);comment:原单价"`
|
||||||
TotalPrice float32 `json:"totalPrice" gorm:"column:total_price;type:decimal(12,2);comment:增值服务总价"`
|
TotalPrice float32 `json:"totalPrice" gorm:"column:total_price;type:decimal(12,2);comment:增值服务总价"`
|
||||||
Unit string `json:"unit" gorm:"column:unit;type:varchar(50);comment:单位 1:个 2:条 3:天 4:月 5:年"`
|
Unit string `json:"unit" gorm:"column:unit;type:varchar(50);comment:单位 1:个 2:条 3:天 4:月 5:年 6:自然月 7:自然季度 8:半年 9:自然年"`
|
||||||
Language string `json:"language" gorm:"column:language;type:varchar(32);comment:套餐语言 zh-CN zh-TW EN de-DE ja-JP(中繁英德日)"`
|
Language string `json:"language" gorm:"column:language;type:varchar(32);comment:套餐语言 zh-CN zh-TW EN de-DE ja-JP(中繁英德日)"`
|
||||||
PriceType int64 `json:"priceType" gorm:"column:price_type;type:int;comment:币种 1:人民币 2:美元 3:日元 4:欧元"`
|
PriceType int64 `json:"priceType" gorm:"column:price_type;type:int;comment:币种 1:人民币 2:美元 3:日元 4:欧元"`
|
||||||
Options PriceOptions `gorm:"column:options;type:json" json:"options"`
|
Options PriceOptions `gorm:"column:options;type:json" json:"options"`
|
||||||
CreatedAt int64 `gorm:"column:created_at;autoCreateTime"`
|
CreatedAt int64 `gorm:"column:created_at;autoCreateTime"`
|
||||||
UpdatedAt int64 `gorm:"column:updated_at;autoCreateTime"`
|
UpdatedAt int64 `gorm:"column:updated_at;autoCreateTime"`
|
||||||
DeletedAt soft_delete.DeletedAt
|
DeletedAt soft_delete.DeletedAt
|
||||||
|
QuotaType int32 `json:"quotaType" gorm:"column:quota_type;type:int;comment:额度类型 0:不限额度 1:每天限额度 2:每月限额度 3:每季度限额度 4:每半年限额度 5:每年限额度"`
|
||||||
|
QuotaValue int32 `json:"quotaValue" gorm:"column:quota_value;type:int;comment:额度值"`
|
||||||
|
IsExpired bool `json:"isExpired" gorm:"column:is_expired;default:false;comment:是否过期作废 false:不作废 true:作废"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type ValueAddServiceHistory struct {
|
type ValueAddServiceHistory struct {
|
||||||
|
@ -512,21 +512,26 @@ message FinancialConfirmationRequest {
|
|||||||
message ValueAddService {
|
message ValueAddService {
|
||||||
string uuid = 1 [json_name = "uuid"];
|
string uuid = 1 [json_name = "uuid"];
|
||||||
string serviceName = 2 [json_name = "serviceName"]; //服务名称
|
string serviceName = 2 [json_name = "serviceName"]; //服务名称
|
||||||
int32 serviceType = 3 [json_name = "serviceType"];
|
int32 serviceType = 3 [json_name = "serviceType"]; //服务类型
|
||||||
repeated ValueAddServiceLang serviceLang = 4 [json_name = "serviceLang"];
|
repeated ValueAddServiceLang serviceLang = 4 [json_name = "serviceLang"]; //不太语言的服务详细
|
||||||
|
string serviceQuota = 5 [json_name = "serviceQuota"];//服务额度
|
||||||
|
bool isExpired = 6 [json_name = "isExpired"];//是否过期作废
|
||||||
}
|
}
|
||||||
message ValueAddServiceLang {
|
message ValueAddServiceLang {
|
||||||
string uuid = 1 [json_name = "uuid"];
|
string uuid = 1 [json_name = "uuid"];
|
||||||
string serviceName = 2 [json_name = "serviceName"]; //服务名称
|
string serviceName = 2 [json_name = "serviceName"]; //服务名称
|
||||||
int32 serviceType = 3 [json_name = "serviceType"];
|
int32 serviceType = 3 [json_name = "serviceType"]; //服务类型 1:视频 2:图文 3:数据报表 4:账号数 5:可用时长
|
||||||
int32 priceMode = 4 [json_name = "priceMode"];
|
int32 priceMode = 4 [json_name = "priceMode"]; //套餐价格类型 1:单价 2:总价
|
||||||
string originalPrice = 5 [json_name = "originalPrice"];
|
string originalPrice = 5 [json_name = "originalPrice"];//原单价
|
||||||
string unit = 6 [json_name = "unit"];
|
string unit = 6 [json_name = "unit"];//单位 1:个 2:条 3:天 4:月 5:年 6:自然月 7:自然季度 8:半年 9:自然年
|
||||||
int64 priceType = 7 [json_name = "priceType"];
|
int64 priceType = 7 [json_name = "priceType"];//币种 1:人民币 2:美元 3:日元 4:欧元
|
||||||
string language = 8 [json_name = "language"];
|
string language = 8 [json_name = "language"];//套餐语言 zh-CN zh-TW EN de-DE ja-JP(中繁英德日)
|
||||||
string createdAt = 9 [json_name = "createdAt"];
|
string createdAt = 9 [json_name = "createdAt"];
|
||||||
string updatedAt = 10 [json_name = "updatedAt"];
|
string updatedAt = 10 [json_name = "updatedAt"];
|
||||||
repeated ValueAddPriceOptions options = 12 [json_name = "options"];
|
repeated ValueAddPriceOptions options = 11 [json_name = "options"];
|
||||||
|
int32 quotaType = 12 [json_name = "quotaType"]; //额度类型 0;不限额度 1:每天限额度 2:每月限额度 3:每季度限额度 4:每半年限额度 5:每年限额度
|
||||||
|
int32 quotaValue = 13 [json_name = "quotaValue"]; //额度值
|
||||||
|
bool isExpired = 14 [json_name = "isExpired"]; //是否过期作废 false:不作废 true:作废
|
||||||
}
|
}
|
||||||
//增值服务价格选项
|
//增值服务价格选项
|
||||||
message ValueAddPriceOptions {
|
message ValueAddPriceOptions {
|
||||||
@ -541,8 +546,9 @@ message ValueAddPriceOptions {
|
|||||||
message ValueAddServiceListRequest {
|
message ValueAddServiceListRequest {
|
||||||
int32 page = 1 [json_name = "page"];
|
int32 page = 1 [json_name = "page"];
|
||||||
int32 pageSize = 2 [json_name = "pageSize"];
|
int32 pageSize = 2 [json_name = "pageSize"];
|
||||||
string name = 3 [json_name = "name"];
|
string name = 3 [json_name = "name"]; // 服务名称
|
||||||
string language = 4 [json_name = "language"];
|
int32 serviceType = 4 [json_name = "serviceType"]; // 服务类型
|
||||||
|
string language = 5 [json_name = "language"]; // 语言(历史遗留,暂未使用)
|
||||||
}
|
}
|
||||||
message ValueAddServiceListResponse {
|
message ValueAddServiceListResponse {
|
||||||
int32 total = 1 [json_name = "total"];
|
int32 total = 1 [json_name = "total"];
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -7,8 +7,8 @@ import (
|
|||||||
fmt "fmt"
|
fmt "fmt"
|
||||||
math "math"
|
math "math"
|
||||||
proto "github.com/golang/protobuf/proto"
|
proto "github.com/golang/protobuf/proto"
|
||||||
_ "google.golang.org/protobuf/types/descriptorpb"
|
|
||||||
_ "github.com/mwitkow/go-proto-validators"
|
_ "github.com/mwitkow/go-proto-validators"
|
||||||
|
_ "google.golang.org/protobuf/types/descriptorpb"
|
||||||
github_com_mwitkow_go_proto_validators "github.com/mwitkow/go-proto-validators"
|
github_com_mwitkow_go_proto_validators "github.com/mwitkow/go-proto-validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Code generated by protoc-gen-go-triple. DO NOT EDIT.
|
// Code generated by protoc-gen-go-triple. DO NOT EDIT.
|
||||||
// versions:
|
// versions:
|
||||||
// - protoc-gen-go-triple v1.0.8
|
// - protoc-gen-go-triple v1.0.5
|
||||||
// - protoc v3.21.1
|
// - protoc v5.26.0
|
||||||
// source: pb/bundle.proto
|
// source: pb/bundle.proto
|
||||||
|
|
||||||
package bundle
|
package bundle
|
||||||
|
3
protocBundle.bat
Normal file
3
protocBundle.bat
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
@echo off
|
||||||
|
protoc -I . -I ./pb --proto_path=./pb --go_out=./pb --go-triple_out=./pb --govalidators_out=./pb ./pb/bundle.proto
|
||||||
|
.\clear.sh
|
Loading…
Reference in New Issue
Block a user