Compare commits
1 Commits
Author | SHA1 | Date | |
---|---|---|---|
868c51ddcf |
12
go.mod
12
go.mod
@ -22,17 +22,14 @@ require (
|
||||
github.com/uber/jaeger-client-go v2.30.0+incompatible
|
||||
go.uber.org/zap v1.24.0
|
||||
google.golang.org/protobuf v1.29.1
|
||||
gorm.io/datatypes v1.2.5
|
||||
gorm.io/driver/mysql v1.5.6
|
||||
gorm.io/driver/mysql v1.4.7
|
||||
gorm.io/gorm v1.25.12
|
||||
gorm.io/plugin/soft_delete v1.2.1
|
||||
)
|
||||
|
||||
require (
|
||||
cloud.google.com/go/compute v1.15.1 // indirect
|
||||
cloud.google.com/go/compute/metadata v0.2.3 // indirect
|
||||
contrib.go.opencensus.io/exporter/prometheus v0.4.1 // indirect
|
||||
filippo.io/edwards25519 v1.1.0 // indirect
|
||||
github.com/RoaringBitmap/roaring v1.2.3 // indirect
|
||||
github.com/Workiva/go-datastructures v1.0.52 // indirect
|
||||
github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5 // indirect
|
||||
@ -71,7 +68,7 @@ require (
|
||||
github.com/go-playground/universal-translator v0.18.1 // indirect
|
||||
github.com/go-playground/validator/v10 v10.11.2 // indirect
|
||||
github.com/go-resty/resty/v2 v2.7.0 // indirect
|
||||
github.com/go-sql-driver/mysql v1.8.1 // indirect
|
||||
github.com/go-sql-driver/mysql v1.7.0 // indirect
|
||||
github.com/goccy/go-json v0.10.0 // indirect
|
||||
github.com/gogo/protobuf v1.3.2 // indirect
|
||||
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
|
||||
@ -142,11 +139,11 @@ require (
|
||||
go.uber.org/atomic v1.9.0 // indirect
|
||||
go.uber.org/multierr v1.8.0 // indirect
|
||||
golang.org/x/arch v0.0.0-20210923205945-b76863e36670 // indirect
|
||||
golang.org/x/crypto v0.22.0 // indirect
|
||||
golang.org/x/crypto v0.19.0 // indirect
|
||||
golang.org/x/net v0.21.0 // indirect
|
||||
golang.org/x/oauth2 v0.4.0 // indirect
|
||||
golang.org/x/sync v0.6.0 // indirect
|
||||
golang.org/x/sys v0.19.0 // indirect
|
||||
golang.org/x/sys v0.18.0 // indirect
|
||||
golang.org/x/text v0.14.0 // indirect
|
||||
google.golang.org/appengine v1.6.7 // indirect
|
||||
google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f // indirect
|
||||
@ -155,4 +152,5 @@ require (
|
||||
gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
|
||||
gopkg.in/yaml.v2 v2.4.0 // indirect
|
||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||
gorm.io/plugin/soft_delete v1.2.1 // indirect
|
||||
)
|
||||
|
32
go.sum
32
go.sum
@ -45,8 +45,6 @@ contrib.go.opencensus.io/exporter/prometheus v0.4.1/go.mod h1:t9wvfitlUjGXG2IXAZ
|
||||
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
|
||||
dubbo.apache.org/dubbo-go/v3 v3.0.2 h1:+WuMFN6RSjXHT41QS1Xi5tFfaPuczIVoeQuKq7pISYI=
|
||||
dubbo.apache.org/dubbo-go/v3 v3.0.2/go.mod h1:bODgByAf72kzG/5YIfZIODXx81pY3gaAdIQ8B4mN/Yk=
|
||||
filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
|
||||
filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
|
||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||
github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak=
|
||||
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
|
||||
@ -306,9 +304,8 @@ github.com/go-redis/redis v6.15.9+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8w
|
||||
github.com/go-resty/resty/v2 v2.7.0 h1:me+K9p3uhSmXtrBZ4k9jcEAfJmuC8IivWHwaLZwPrFY=
|
||||
github.com/go-resty/resty/v2 v2.7.0/go.mod h1:9PWDzw47qPphMRFfhsyk0NnSgvluHcljSMVIq3w7q0I=
|
||||
github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
|
||||
github.com/go-sql-driver/mysql v1.7.0 h1:ueSltNNllEqE3qcWBTD0iQd3IpL/6U+mJxLkazJ7YPc=
|
||||
github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
|
||||
github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y=
|
||||
github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg=
|
||||
github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk=
|
||||
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
|
||||
github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA=
|
||||
@ -326,8 +323,6 @@ github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXP
|
||||
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
|
||||
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
|
||||
github.com/goji/httpauth v0.0.0-20160601135302-2da839ab0f4d/go.mod h1:nnjvkQ9ptGaCkuDUx6wNykzzlUixGxvkme+H/lnzb+A=
|
||||
github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 h1:au07oEsX2xN0ktxqI+Sida1w446QrXBRJ0nee3SNZlA=
|
||||
github.com/golang-sql/sqlexp v0.1.0 h1:ZCD6MBpcuOVfGVqsEmY5/4FtYiKz6tSyUv9LPEDei6A=
|
||||
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k=
|
||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
||||
github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4=
|
||||
@ -519,10 +514,6 @@ github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:
|
||||
github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
|
||||
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
|
||||
github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo=
|
||||
github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM=
|
||||
github.com/jackc/pgservicefile v0.0.0-20231201235250-de7065d80cb9 h1:L0QtFUgDarD7Fpv9jeVMgy/+Ec0mtnmYuImjTz6dtDA=
|
||||
github.com/jackc/pgx/v5 v5.5.5 h1:amBjrZVmksIdNjxGW/IiIMzxMKZFelXbUoPNb+8sjQw=
|
||||
github.com/jackc/puddle/v2 v2.2.1 h1:RhxXJtFG022u4ibrCSMSiu5aOq1i77R3OHKNJj77OAk=
|
||||
github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869/go.mod h1:cJ6Cj7dQo+O6GJNiMx+Pa94qKj+TG8ONdKHgMNIyyag=
|
||||
github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
|
||||
github.com/jhump/protoreflect v1.6.0/go.mod h1:eaTn3RZAmMBcV0fifFvlm6VHNz3wSkYyXYWUh7ymB74=
|
||||
@ -622,11 +613,9 @@ github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWE
|
||||
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
||||
github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
|
||||
github.com/mattn/go-sqlite3 v1.14.3/go.mod h1:WVKg1VTActs4Qso6iwGbiFih2UIHo0ENGwNd0Lj+XmI=
|
||||
github.com/mattn/go-sqlite3 v1.14.15 h1:vfoHhTN1af61xCRSWzFIWzx2YskyMTwHLrExkBOjvxI=
|
||||
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
|
||||
github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo=
|
||||
github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
|
||||
github.com/microsoft/go-mssqldb v1.7.2 h1:CHkFJiObW7ItKTJfHo1QX7QBBD1iV+mn1eOyRP3b/PA=
|
||||
github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
|
||||
github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso=
|
||||
github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI=
|
||||
@ -988,8 +977,8 @@ golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5y
|
||||
golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
||||
golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc=
|
||||
golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg=
|
||||
golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30=
|
||||
golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M=
|
||||
golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo=
|
||||
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
|
||||
golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
@ -1213,8 +1202,8 @@ golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o=
|
||||
golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4=
|
||||
golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
|
||||
@ -1490,17 +1479,12 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C
|
||||
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
gorm.io/datatypes v1.2.5 h1:9UogU3jkydFVW1bIVVeoYsTpLRgwDVW3rHfJG6/Ek9I=
|
||||
gorm.io/datatypes v1.2.5/go.mod h1:I5FUdlKpLb5PMqeMQhm30CQ6jXP8Rj89xkTeCSAaAD4=
|
||||
gorm.io/driver/mysql v1.5.6 h1:Ld4mkIickM+EliaQZQx3uOJDJHtrd70MxAUqWqlx3Y8=
|
||||
gorm.io/driver/mysql v1.5.6/go.mod h1:sEtPWMiqiN1N1cMXoXmBbd8C6/l+TESwriotuRRpkDM=
|
||||
gorm.io/driver/postgres v1.5.0 h1:u2FXTy14l45qc3UeCJ7QaAXZmZfDDv0YrthvmRq1l0U=
|
||||
gorm.io/driver/mysql v1.4.7 h1:rY46lkCspzGHn7+IYsNpSfEv9tA+SU4SkkB+GFX125Y=
|
||||
gorm.io/driver/mysql v1.4.7/go.mod h1:SxzItlnT1cb6e1e4ZRpgJN2VYtcqJgqnHxWr4wsP8oc=
|
||||
gorm.io/driver/sqlite v1.1.3/go.mod h1:AKDgRWk8lcSQSw+9kxCJnX/yySj8G3rdwYlU57cB45c=
|
||||
gorm.io/driver/sqlite v1.4.3 h1:HBBcZSDnWi5BW3B3rwvVTc510KGkBkexlOg0QrmLUuU=
|
||||
gorm.io/driver/sqlserver v1.5.4 h1:xA+Y1KDNspv79q43bPyjDMUgHoYHLhXYmdFcYPobg8g=
|
||||
gorm.io/gorm v1.20.1/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw=
|
||||
gorm.io/gorm v1.23.0/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk=
|
||||
gorm.io/gorm v1.25.7/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8=
|
||||
gorm.io/gorm v1.23.8/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk=
|
||||
gorm.io/gorm v1.25.12 h1:I0u8i2hWQItBq1WfE0o2+WuL9+8L21K9e2HHSTE/0f8=
|
||||
gorm.io/gorm v1.25.12/go.mod h1:xh7N7RHfYlNc5EmcI/El95gXusucDrQnHXe0+CgWcLQ=
|
||||
gorm.io/plugin/soft_delete v1.2.1 h1:qx9D/c4Xu6w5KT8LviX8DgLcB9hkKl6JC9f44Tj7cGU=
|
||||
|
@ -1,35 +0,0 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"context"
|
||||
"micro-bundle/internal/logic"
|
||||
"micro-bundle/pb/bundle"
|
||||
)
|
||||
|
||||
func (b *BundleProvider) SaveBundle(_ context.Context, req *bundle.BundleProfile) (res *bundle.SaveResponse, err error) {
|
||||
return logic.SaveBundle(req)
|
||||
}
|
||||
|
||||
// 上下架状态更新
|
||||
func (b *BundleProvider) HandShelf(_ context.Context, req *bundle.HandShelfRequest) (res *bundle.CommonResponse, err error) {
|
||||
// shelfStatus: 1-上架,2-下架
|
||||
return logic.HandleShelf(req)
|
||||
}
|
||||
func (b *BundleProvider) BundleListV2(_ context.Context, req *bundle.BundleListRequest) (res *bundle.BundleListResponse, err error) {
|
||||
return logic.BundleListV2(req)
|
||||
}
|
||||
|
||||
func (b *BundleProvider) BundleDetailV2(_ context.Context, req *bundle.BundleDetailRequest) (res *bundle.BundleDetailResponseV2, err error) {
|
||||
return logic.BundleDetailV2(req)
|
||||
}
|
||||
|
||||
// ***************************************************新增值服务***********************
|
||||
func (b *BundleProvider) SaveValueAddService(_ context.Context, req *bundle.ValueAddServiceLang) (res *bundle.SaveResponse, err error) {
|
||||
return logic.SaveValueAddService(req)
|
||||
}
|
||||
func (b *BundleProvider) ValueAddServiceList(_ context.Context, req *bundle.ValueAddServiceListRequest) (res *bundle.ValueAddServiceListResponse, err error) {
|
||||
return logic.ValueAddServiceList(req)
|
||||
}
|
||||
func (b *BundleProvider) ValueAddServiceDetail(_ context.Context, req *bundle.ValueAddServiceDetailRequest) (res *bundle.ValueAddServiceDetailResponse, err error) {
|
||||
return logic.ValueAddServiceDetail(req)
|
||||
}
|
@ -6,9 +6,6 @@ import (
|
||||
"micro-bundle/pkg/app"
|
||||
commonErr "micro-bundle/pkg/err"
|
||||
"micro-bundle/pkg/msg"
|
||||
"time"
|
||||
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
func CreateBundle(req *model.BundleProfile) (res *bundle.CommonResponse, err error) {
|
||||
@ -24,7 +21,7 @@ func CreateBundle(req *model.BundleProfile) (res *bundle.CommonResponse, err err
|
||||
|
||||
func UpdateBundle(req *model.BundleProfile) (res *bundle.CommonResponse, err error) {
|
||||
res = new(bundle.CommonResponse)
|
||||
err = app.ModuleClients.BundleDB.Model(&model.BundleProfile{}).Where("uuid = ? and language= ?", req.UUID, req.Language).Updates(req).Error
|
||||
err = app.ModuleClients.BundleDB.Model(&model.BundleProfile{}).Where("uuid = ?", req.UUID).Updates(req).Error
|
||||
if err != nil {
|
||||
res.Msg = msg.ErrorUpdateBundleInfo
|
||||
return res, commonErr.ReturnError(err, msg.ErrorUpdateBundleInfo, "更新套餐信息失败: ")
|
||||
@ -129,206 +126,3 @@ func BundleDetail(uuid string) (res *bundle.BundleProfile, err error) {
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func BundleListV2(req *bundle.BundleListRequest) (res *bundle.BundleListResponse, err error) {
|
||||
res = new(bundle.BundleListResponse)
|
||||
res.Bundles = make([]*bundle.BundleProfile, 0)
|
||||
bundles := make([]*model.BundleProfile, 0)
|
||||
|
||||
query := app.ModuleClients.BundleDB.Model(&model.BundleProfile{}).Preload("BundleProfileLang")
|
||||
//query = query.Where("shelf_status = ?", 1) //上架的
|
||||
|
||||
if req.Name != "" {
|
||||
query = query.Where("name like ?", "%"+req.Name+"%")
|
||||
}
|
||||
|
||||
if req.Content != "" {
|
||||
query = query.Where("content like ?", "%"+req.Content+"%")
|
||||
}
|
||||
|
||||
if req.Language != "" {
|
||||
query = query.Where("language like ?", req.Language)
|
||||
}
|
||||
|
||||
count := *query
|
||||
|
||||
// 排序:sort 升序,相同 sort 按 created_at 倒序
|
||||
query = query.Order("sort ASC").Order("created_at DESC")
|
||||
if req.PageSize != 0 && req.Page != 0 {
|
||||
query = query.Limit(int(req.PageSize)).Offset(int(req.Page-1) * int(req.PageSize))
|
||||
}
|
||||
|
||||
if err = query.Find(&bundles).Error; err != nil {
|
||||
return res, commonErr.ReturnError(err, msg.ErrorGetBundleList, "获取套餐列表失败: ")
|
||||
}
|
||||
if bundles != nil && len(bundles) > 0 {
|
||||
for _, bundleProfile := range bundles {
|
||||
selectValueAddService := make([]*bundle.SelectValueAddService, 0)
|
||||
// 通过中间表拼接增值服务数据
|
||||
if bundleProfile.UUID != "" {
|
||||
bundleToValueAddServices, err := GetBundleToValueAddServiceByBundleUuid(bundleProfile.UUID)
|
||||
if err != nil {
|
||||
return res, commonErr.ReturnError(err, msg.ErrorGetBundleInfo, "获取增值服务信息失败: ")
|
||||
}
|
||||
for _, v := range bundleToValueAddServices {
|
||||
valueAddDetail, _ := ValueAddServiceDetail(v.ValueUid)
|
||||
selectValueAddService = append(selectValueAddService, &bundle.SelectValueAddService{
|
||||
ValueAddUuid: v.ValueUid,
|
||||
IsDisplay: v.IsDisplay,
|
||||
ServiceName: valueAddDetail.ServiceName,
|
||||
})
|
||||
}
|
||||
}
|
||||
bundleProfileLang := []*bundle.BundleProfileLang{}
|
||||
if bundleProfile.BundleProfileLang != nil && len(bundleProfile.BundleProfileLang) > 0 {
|
||||
for _, lang := range bundleProfile.BundleProfileLang {
|
||||
bpl := &bundle.BundleProfileLang{
|
||||
Uuid: lang.UUID,
|
||||
Name: lang.Name,
|
||||
Price: lang.Price,
|
||||
PriceType: lang.PriceType,
|
||||
Content: lang.Content,
|
||||
Language: lang.Language,
|
||||
CreatedAt: time.Unix(lang.CreatedAt, 0).Format("2006-01-02 15:04:05"),
|
||||
UpdatedAt: time.Unix(int64(lang.UpdatedAt), 0).Format("2006-01-02 15:04:05"),
|
||||
}
|
||||
bundleProfileLang = append(bundleProfileLang, bpl)
|
||||
}
|
||||
}
|
||||
res.Bundles = append(res.Bundles, &bundle.BundleProfile{
|
||||
Uuid: bundleProfile.UUID,
|
||||
Name: bundleProfile.Name,
|
||||
Content: bundleProfile.Content,
|
||||
Price: bundleProfile.Price,
|
||||
PriceType: bundleProfile.PriceType,
|
||||
Contract: bundleProfile.Contract,
|
||||
Language: bundleProfile.Language,
|
||||
CreatedAt: bundleProfile.CreatedAt.Format("2006-01-02 15:04:05"),
|
||||
UpdatedAt: bundleProfile.UpdatedAt.Format("2006-01-02 15:04:05"),
|
||||
CompanySign: bundleProfile.CompanySign,
|
||||
ContractDuration: int64(bundleProfile.ContractDuration),
|
||||
Sort: bundleProfile.Sort,
|
||||
BgImg1: bundleProfile.BgImg1,
|
||||
BgImg2: bundleProfile.BgImg2,
|
||||
SelectValueAddService: selectValueAddService,
|
||||
BundleProfileLang: bundleProfileLang,
|
||||
ShelfStatus: int64(bundleProfile.ShelfStatus),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
var total int64
|
||||
|
||||
count.Count(&total)
|
||||
|
||||
res.Total = int32(total)
|
||||
|
||||
return
|
||||
|
||||
}
|
||||
|
||||
func BundleDetailV2(req *bundle.BundleDetailRequest) (res *model.BundleProfile, err error) {
|
||||
var data model.BundleProfile
|
||||
err = app.ModuleClients.BundleDB.Model(&model.BundleProfile{}).Where("uuid = ?", req.Uuid).
|
||||
Preload("BundleProfileLang").
|
||||
Preload("BundleToValueAddService").
|
||||
First(&data).Error
|
||||
if err != nil {
|
||||
return res, commonErr.ReturnError(err, msg.ErrorGetBundleInfo, "获取套餐信息失败: ")
|
||||
}
|
||||
return &data, nil
|
||||
}
|
||||
|
||||
// 套餐上下架
|
||||
func HandShelf(uuid string, shelfStatus int64) (res *bundle.CommonResponse, err error) {
|
||||
res = new(bundle.CommonResponse)
|
||||
err = app.ModuleClients.BundleDB.Model(&model.BundleProfile{}).Where("uuid = ?", uuid).Update("shelf_status", shelfStatus).Error
|
||||
if err != nil {
|
||||
res.Msg = "套餐上下架操作失败"
|
||||
return res, err
|
||||
}
|
||||
res.Msg = "套餐上下架操作成功"
|
||||
return res, nil
|
||||
}
|
||||
|
||||
// 通过uuid和language查询套餐语言表
|
||||
func BundleDetailByUuidAndLanguage(uuid string, language string) (bundleProfileLang *model.BundleProfileLang, err error) {
|
||||
err = app.ModuleClients.BundleDB.Where("uuid = ? AND language = ?", uuid, language).First(&bundleProfileLang).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// 套餐主表创建
|
||||
func TxCreateBundle(tx *gorm.DB, req *model.BundleProfile) (err error) {
|
||||
err = tx.Model(&model.BundleProfile{}).Create(&req).Error
|
||||
if err != nil {
|
||||
return commonErr.ReturnError(err, msg.ErrorCreateBundleInfo, "创建套餐信息失败: ")
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// 套餐语言表创建
|
||||
func TxCreateBundleLang(tx *gorm.DB, req *model.BundleProfileLang) (err error) {
|
||||
err = tx.Model(&model.BundleProfileLang{}).Create(&req).Error
|
||||
if err != nil {
|
||||
return commonErr.ReturnError(err, msg.ErrorCreateBundleInfo, "创建套餐信息失败: ")
|
||||
}
|
||||
return
|
||||
}
|
||||
func TxUpdateBundle(tx *gorm.DB, uuid string, columns map[string]interface{}) (err error) {
|
||||
err = tx.Model(&model.BundleProfile{}).Where("uuid =?", uuid).Updates(columns).Error
|
||||
if err != nil {
|
||||
return commonErr.ReturnError(err, msg.ErrorUpdateBundleInfo, "更新套餐信息失败: ")
|
||||
}
|
||||
return
|
||||
}
|
||||
func TxUpdateBundleLang(tx *gorm.DB, uuid string, language string, columns map[string]interface{}) (err error) {
|
||||
err = tx.Model(&model.BundleProfileLang{}).Where("uuid =? and language=?", uuid, language).Updates(columns).Error
|
||||
if err != nil {
|
||||
return commonErr.ReturnError(err, msg.ErrorUpdateBundleInfo, "更新套餐信息失败: ")
|
||||
}
|
||||
return
|
||||
}
|
||||
func CreateBundleToValueAddService(tx *gorm.DB, records []*model.BundleToValueAddService) error {
|
||||
return tx.Model(&model.BundleToValueAddService{}).Create(&records).Error
|
||||
}
|
||||
|
||||
func DeleteBundleToValueAddService(tx *gorm.DB, bundleUuid, valueUid string) error {
|
||||
return tx.Where("bundle_uuid = ? AND value_uid = ?", bundleUuid, valueUid).Delete(&model.BundleToValueAddService{}).Error
|
||||
}
|
||||
func GetValueAddServiceUuidsByBundleUuid(bundleUuid string) ([]string, error) {
|
||||
var uuids []string
|
||||
err := app.ModuleClients.BundleDB.Model(&model.BundleToValueAddService{}).Where("bundle_uuid = ?", bundleUuid).Pluck("value_uid", &uuids).Error
|
||||
return uuids, err
|
||||
}
|
||||
|
||||
// GetBundleToValueAddServiceByBundleUuid 根据套餐UUID获取所有关联的增值服务uuid
|
||||
func GetBundleToValueAddServiceByBundleUuid(bundleUuid string) ([]*model.BundleToValueAddService, error) {
|
||||
var result []*model.BundleToValueAddService
|
||||
err := app.ModuleClients.BundleDB.Model(&model.BundleToValueAddService{}).
|
||||
Where("bundle_uuid = ?", bundleUuid).
|
||||
Find(&result).Error
|
||||
return result, err
|
||||
}
|
||||
|
||||
func GetBundleLangsByUuid(uuid string) ([]*model.BundleProfileLang, error) {
|
||||
var result []*model.BundleProfileLang
|
||||
err := app.ModuleClients.BundleDB.Model(&model.BundleProfileLang{}).
|
||||
Where("uuid =?", uuid).
|
||||
Find(&result).Error
|
||||
return result, err
|
||||
}
|
||||
func GetBundleDetailByUuid(uuid string) (*model.BundleProfile, error) {
|
||||
result := &model.BundleProfile{}
|
||||
err := app.ModuleClients.BundleDB.Model(&model.BundleProfile{}).
|
||||
Preload("BundleToValueAddService", "deleted_at = 0").
|
||||
Preload("BundleProfileLang", "deleted_at = 0").
|
||||
Where("uuid =?", uuid).
|
||||
First(&result).Error
|
||||
return result, err
|
||||
}
|
||||
func CreateBunldeHistory(tx *gorm.DB, req *model.BundleProfileHistory) error {
|
||||
return tx.Model(&model.BundleProfileHistory{}).Create(req).Error
|
||||
}
|
||||
|
@ -99,7 +99,7 @@ func OrderRecordsList(req *bundle.OrderRecordsRequest) (res *bundle.OrderRecords
|
||||
}
|
||||
|
||||
if req.Status != 0 {
|
||||
query = query.Where("status = ?", req.Status)
|
||||
query = query.Where("`bundle_order_records`.status = ?", req.Status)
|
||||
}
|
||||
|
||||
if req.StartSignedTime != "" {
|
||||
|
@ -2,10 +2,7 @@ package dao
|
||||
|
||||
import (
|
||||
"micro-bundle/internal/model"
|
||||
"micro-bundle/pb/bundle"
|
||||
"micro-bundle/pkg/app"
|
||||
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
// 增值套餐创建
|
||||
@ -76,95 +73,3 @@ func GetBundleOrderRecordsByCommonUidAndUserId(commonUid string, userId int32) (
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// ***************************************新增值服务*****************************
|
||||
// 增值套餐主表创建
|
||||
func CreateValueAddService(tx *gorm.DB, req *model.ValueAddService) (err error) {
|
||||
if err := tx.Model(&model.ValueAddService{}).Create(req).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// 增值套餐语言表创建
|
||||
func CreateValueAddServiceLang(tx *gorm.DB, req *model.ValueAddServiceLang) (err error) {
|
||||
if err := tx.Model(&model.ValueAddServiceLang{}).Create(req).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// 增值套餐主表更新
|
||||
func UpdateValueAddService(tx *gorm.DB, columns map[string]interface{}) (err error) {
|
||||
err = tx.Model(&model.ValueAddService{}).Where("uuid = ?", columns["uuid"]).Updates(columns).Error
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
func UpdateValueAddServiceLang(tx *gorm.DB, columns map[string]interface{}) (err error) {
|
||||
err = tx.Model(&model.ValueAddServiceLang{}).Where("uuid =?", columns["uuid"]).
|
||||
Where("language", columns["language"]).Updates(columns).Error
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// 增值套餐列表
|
||||
func ValueAddServiceList(req *bundle.ValueAddServiceListRequest) (res []*model.ValueAddService, total int64, err error) {
|
||||
query := app.ModuleClients.BundleDB.Model(&model.ValueAddService{}).
|
||||
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")
|
||||
})
|
||||
|
||||
count := *query
|
||||
if req.PageSize != 0 && req.Page != 0 {
|
||||
query = query.Limit(int(req.PageSize)).Offset(int(req.Page-1) * int(req.PageSize))
|
||||
}
|
||||
if err = query.Find(&res).Error; err != nil {
|
||||
return
|
||||
}
|
||||
// 统计不同uuid的数量
|
||||
err = count.Select("uuid").Group("uuid").Count(&total).Error
|
||||
return
|
||||
}
|
||||
|
||||
// 增值套餐详情
|
||||
func ValueAddServiceDetail(uuid string) (valueAddServiceDetail *model.ValueAddService, err error) {
|
||||
var data model.ValueAddService
|
||||
err = app.ModuleClients.BundleDB.Where("uuid = ?", uuid).Preload("ValueAddServiceLang").First(&data).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &data, nil
|
||||
}
|
||||
|
||||
// 通过uuid和language查询增值套餐
|
||||
func ValueAddServiceDetailByUuidAndLanguage(uuid string, language string) (valueAddServiceLang *model.ValueAddServiceLang, err error) {
|
||||
err = app.ModuleClients.BundleDB.Where("uuid = ? AND language = ?", uuid, language).First(&valueAddServiceLang).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// 通过增值服务UUID查询所有关联套餐
|
||||
func GetBundleToValueAddServiceByValueUid(valueUid string) ([]model.BundleToValueAddService, error) {
|
||||
var rels []model.BundleToValueAddService
|
||||
err := app.ModuleClients.BundleDB.Model(&model.BundleToValueAddService{}).
|
||||
Where("value_uid = ?", valueUid).
|
||||
Find(&rels).Error
|
||||
return rels, err
|
||||
}
|
||||
func GetValueAddServiceDetailByUuid(uuid string) (*model.ValueAddService, error) {
|
||||
result := &model.ValueAddService{}
|
||||
err := app.ModuleClients.BundleDB.Model(&model.ValueAddService{}).
|
||||
Preload("ValueAddServiceLang", "deleted_at = 0").
|
||||
Where("uuid =? and deleted_at=0", uuid).
|
||||
First(&result).Error
|
||||
return result, err
|
||||
}
|
||||
func CreateValueAddServiceHistory(tx *gorm.DB, req *model.ValueAddServiceHistory) error {
|
||||
return tx.Model(&model.ValueAddServiceHistory{}).Create(req).Error
|
||||
}
|
||||
|
@ -1,18 +1,9 @@
|
||||
package logic
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"micro-bundle/internal/dao"
|
||||
"micro-bundle/pkg/app"
|
||||
"micro-bundle/pkg/msg"
|
||||
"time"
|
||||
|
||||
"github.com/aliyun/alibaba-cloud-sdk-go/sdk/utils"
|
||||
"github.com/jinzhu/copier"
|
||||
"gorm.io/datatypes"
|
||||
"gorm.io/gorm"
|
||||
"micro-bundle/internal/dao"
|
||||
|
||||
"micro-bundle/internal/model"
|
||||
"micro-bundle/pb/bundle"
|
||||
@ -56,407 +47,3 @@ func BundleDetail(req *bundle.BundleDetailRequest) (res *bundle.BundleDetailResp
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func SaveBundle(req *bundle.BundleProfile) (res *bundle.SaveResponse, err error) {
|
||||
res = &bundle.SaveResponse{}
|
||||
if req.Language == "" {
|
||||
return res, errors.New("语言参数不能为空")
|
||||
}
|
||||
if req.Sort <= 0 {
|
||||
return res, errors.New("排序参数需为正整数")
|
||||
}
|
||||
bundleProfile := &model.BundleProfile{
|
||||
Name: req.Name,
|
||||
Sort: req.Sort,
|
||||
Content: req.Content,
|
||||
Price: req.Price,
|
||||
PriceType: req.PriceType,
|
||||
BgImg1: req.BgImg1,
|
||||
BgImg2: req.BgImg2,
|
||||
ShelfStatus: 2, //默认初始状态为2-下架
|
||||
}
|
||||
bundleLang := &model.BundleProfileLang{
|
||||
Name: req.Name,
|
||||
Content: req.Content,
|
||||
Price: req.Price,
|
||||
PriceType: req.PriceType,
|
||||
Language: req.Language,
|
||||
}
|
||||
if req.Uuid == "" && req.Language != msg.ZH_CN {
|
||||
return res, errors.New("请先创建中文版本套餐")
|
||||
}
|
||||
var existValueService = make(map[string]string)
|
||||
if req.Uuid != "" {
|
||||
valueService, existErr := dao.GetValueAddServiceUuidsByBundleUuid(req.Uuid)
|
||||
if existErr != nil {
|
||||
return res, existErr
|
||||
}
|
||||
if valueService != nil && len(valueService) > 0 {
|
||||
for _, v := range valueService {
|
||||
existValueService[v] = v
|
||||
}
|
||||
}
|
||||
}
|
||||
var cancelValueAddService = make(map[string]string)
|
||||
selectService := make([]*model.BundleToValueAddService, 0)
|
||||
var selectValueAddServiceCount = make(map[int]struct{})
|
||||
if req.Language == msg.ZH_CN && req.SelectValueAddService != nil && len(req.SelectValueAddService) > 0 {
|
||||
for _, v := range req.SelectValueAddService {
|
||||
detail, checkErr := dao.ValueAddServiceDetailByUuidAndLanguage(v.ValueAddUuid, req.Language)
|
||||
if checkErr != nil {
|
||||
if checkErr == gorm.ErrRecordNotFound {
|
||||
return res, errors.New(fmt.Sprintf("所选增值服务[%s]%s版不存在,请先创建对应增值套餐", v.ServiceName, req.Language))
|
||||
} else {
|
||||
return res, checkErr
|
||||
}
|
||||
}
|
||||
if detail.PriceType != req.PriceType {
|
||||
if req.Uuid == "" {
|
||||
//中文套餐创建时,币种不一致直接返回错误
|
||||
return res, errors.New(fmt.Sprintf("所选增值服务[%s]%s币种与套餐币种不一致", detail.ServiceName, req.Language))
|
||||
} else {
|
||||
//更新时,判断是否已存在,存在则取消关联
|
||||
_, ok := existValueService[v.ValueAddUuid]
|
||||
if ok {
|
||||
cancelValueAddService[v.ValueAddUuid] = detail.ServiceName
|
||||
continue
|
||||
} else {
|
||||
//币种不一致,新加币种时返回错误
|
||||
return res, errors.New(fmt.Sprintf("所选增值服务[%s]%s币种与套餐币种不一致", detail.ServiceName, req.Language))
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
if _, exists := selectValueAddServiceCount[int(detail.ServiceType)]; exists {
|
||||
return res, errors.New(fmt.Sprintf("所选增值服务[%s]类型存在多个", detail.ServiceName))
|
||||
}
|
||||
selectValueAddServiceCount[int(detail.ServiceType)] = struct{}{}
|
||||
selectService = append(selectService, &model.BundleToValueAddService{
|
||||
ValueUid: v.ValueAddUuid,
|
||||
IsDisplay: v.IsDisplay,
|
||||
})
|
||||
}
|
||||
}
|
||||
tx := app.ModuleClients.BundleDB.Begin()
|
||||
defer func() {
|
||||
if err != nil {
|
||||
tx.Rollback()
|
||||
} else {
|
||||
tx.Commit()
|
||||
}
|
||||
}()
|
||||
_, err = dao.BundleDetailByUuidAndLanguage(req.Uuid, req.Language)
|
||||
if err != nil {
|
||||
if err == gorm.ErrRecordNotFound {
|
||||
if req.Uuid != "" {
|
||||
return res, errors.New("套餐不存在")
|
||||
}
|
||||
if req.Language != msg.ZH_CN {
|
||||
_, err = dao.BundleDetailByUuidAndLanguage(req.Uuid, msg.ZH_CN)
|
||||
if err != nil {
|
||||
if err == gorm.ErrRecordNotFound {
|
||||
res.Msg = "请先创建中文版本套餐"
|
||||
return res, errors.New("请先创建中文版本套餐")
|
||||
} else {
|
||||
return res, err
|
||||
}
|
||||
}
|
||||
}
|
||||
if req.Language == msg.ZH_CN {
|
||||
bundleProfile.UUID = utils.GetUUID()
|
||||
if err = dao.TxCreateBundle(tx, bundleProfile); err != nil {
|
||||
return res, errors.New("保存中文语言套餐失败: " + err.Error())
|
||||
}
|
||||
bundleLang.UUID = bundleProfile.UUID
|
||||
res.Uuid = bundleProfile.UUID
|
||||
// 新建套餐时插入中间表
|
||||
for _, s := range selectService {
|
||||
s.BundleUuid = bundleProfile.UUID
|
||||
}
|
||||
if len(selectService) > 0 {
|
||||
if err = dao.CreateBundleToValueAddService(tx, selectService); err != nil {
|
||||
return res, errors.New("保存套餐与增值服务关联失败: " + err.Error())
|
||||
}
|
||||
}
|
||||
} else {
|
||||
bundleLang.UUID = req.Uuid
|
||||
res.Uuid = req.Uuid
|
||||
valueUuid, err1 := dao.GetValueAddServiceUuidsByBundleUuid(bundleLang.UUID)
|
||||
if err1 != nil {
|
||||
return res, err1
|
||||
}
|
||||
count := 0
|
||||
if valueUuid != nil && len(valueUuid) > 0 {
|
||||
for _, v := range valueUuid {
|
||||
//可以改成批量获取
|
||||
valueDetail, err2 := dao.ValueAddServiceDetailByUuidAndLanguage(v, req.Language)
|
||||
if err2 != nil {
|
||||
return res, err2
|
||||
}
|
||||
if valueDetail.PriceType != req.PriceType {
|
||||
if err = tx.Where("bundle_uuid =? AND value_uid =?", bundleLang.UUID, v).Delete(&model.BundleToValueAddService{}).Error; err != nil {
|
||||
return res, errors.New("删除套餐与增值服务关联失败: " + err.Error())
|
||||
}
|
||||
count++
|
||||
}
|
||||
}
|
||||
}
|
||||
res.CancelNum = int64(count)
|
||||
}
|
||||
if err = dao.TxCreateBundleLang(tx, bundleLang); err != nil {
|
||||
return res, errors.New("保存语言套餐失败: " + err.Error())
|
||||
}
|
||||
res.Msg = "保存成功"
|
||||
return res, nil
|
||||
} else {
|
||||
return
|
||||
}
|
||||
} else { // 已存在,进行更新
|
||||
|
||||
// 更新前保存历史记录
|
||||
if saveErr := saveBundleHistory(tx, req.Uuid, "", 0); err != nil {
|
||||
return res, saveErr
|
||||
}
|
||||
|
||||
if req.Language == msg.ZH_CN {
|
||||
if len(cancelValueAddService) > 0 {
|
||||
cancel := "以下增值服务:"
|
||||
for _, v := range cancelValueAddService {
|
||||
cancel += fmt.Sprintf("[%s]%s", v, req.Language)
|
||||
if err = tx.Where("bundle_uuid = ? AND value_uid = ?", req.Uuid, v).Delete(&model.BundleToValueAddService{}).Error; err != nil {
|
||||
return res, errors.New("删除套餐与增值服务关联失败: " + err.Error())
|
||||
}
|
||||
}
|
||||
cancel += "版币种与套餐币种不一致"
|
||||
res.Msg = "保存cn成功 " + cancel
|
||||
}
|
||||
res.CancelNum = int64(len(cancelValueAddService))
|
||||
updateBundle := map[string]interface{}{
|
||||
"name": req.Name,
|
||||
"sort": req.Sort,
|
||||
"content": req.Content,
|
||||
"price": req.Price,
|
||||
"price_type": req.PriceType,
|
||||
"bg_img1": req.BgImg1,
|
||||
"bg_img2": req.BgImg2,
|
||||
}
|
||||
if err = dao.TxUpdateBundle(tx, req.Uuid, updateBundle); err != nil {
|
||||
return res, err
|
||||
}
|
||||
// 更新中间表函数
|
||||
if err = diffUpdateBundleToValueAddService(tx, req.Uuid, selectService); err != nil {
|
||||
tx.Rollback()
|
||||
return res, err
|
||||
}
|
||||
} else {
|
||||
//更新其他语言时 先获取所有关联增值服务,判断币种是否一致,不一致则取消关联
|
||||
valueAddService, err := dao.GetBundleToValueAddServiceByBundleUuid(req.Uuid)
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
cancelValueService := make(map[string]string)
|
||||
for _, v := range valueAddService {
|
||||
detail, checkErr := dao.ValueAddServiceDetailByUuidAndLanguage(v.ValueUid, req.Language)
|
||||
if checkErr != nil {
|
||||
if checkErr == gorm.ErrRecordNotFound {
|
||||
continue
|
||||
} else {
|
||||
return res, checkErr
|
||||
}
|
||||
}
|
||||
if detail.PriceType != req.PriceType {
|
||||
cancelValueService[v.ValueUid] = detail.ServiceName
|
||||
continue
|
||||
}
|
||||
}
|
||||
if int64(len(cancelValueService)) > 0 {
|
||||
cancel := "以下增值服务:"
|
||||
for k, v := range cancelValueService {
|
||||
cancel += fmt.Sprintf("[%s]%s", v, req.Language)
|
||||
if err = tx.Where("bundle_uuid = ? AND value_uid = ?", req.Uuid, k).Delete(&model.BundleToValueAddService{}).Error; err != nil {
|
||||
return res, errors.New("删除套餐与增值服务关联失败: " + err.Error())
|
||||
}
|
||||
}
|
||||
cancel += "版币种与套餐币种不一致,已取消相关关联"
|
||||
res.Msg = "保存成功 " + cancel
|
||||
res.CancelNum = int64(len(cancelValueService))
|
||||
}
|
||||
}
|
||||
updateBundleLang := map[string]interface{}{
|
||||
"name": req.Name,
|
||||
"content": req.Content,
|
||||
"price": req.Price,
|
||||
"price_type": req.PriceType,
|
||||
}
|
||||
if err = dao.TxUpdateBundleLang(tx, req.Uuid, req.Language, updateBundleLang); err != nil {
|
||||
return res, err
|
||||
}
|
||||
|
||||
res.Uuid = req.Uuid
|
||||
if res.Msg == "" {
|
||||
res.Msg = "保存成功"
|
||||
}
|
||||
}
|
||||
return res, nil
|
||||
}
|
||||
|
||||
func BundleListV2(req *bundle.BundleListRequest) (res *bundle.BundleListResponse, err error) {
|
||||
res = new(bundle.BundleListResponse)
|
||||
res, err = dao.BundleListV2(req)
|
||||
return
|
||||
}
|
||||
func BundleDetailV2(req *bundle.BundleDetailRequest) (res *bundle.BundleDetailResponseV2, err error) {
|
||||
res = new(bundle.BundleDetailResponseV2)
|
||||
bundleProfile := &bundle.BundleProfile{}
|
||||
bundleProfileLangs := make([]*bundle.BundleProfileLang, 0)
|
||||
selectValueAddService := make([]*bundle.SelectValueAddService, 0) //已选增值服务
|
||||
if req.Uuid == "" {
|
||||
return res, errors.New("uuid不能为空")
|
||||
}
|
||||
// if req.Language == "" {
|
||||
// return res, errors.New("language不能为空")
|
||||
// }
|
||||
detail, err := dao.BundleDetailV2(req)
|
||||
if err != nil {
|
||||
res.Msg = err.Error()
|
||||
}
|
||||
if detail != nil && detail.BundleProfileLang != nil && len(detail.BundleProfileLang) > 0 {
|
||||
bundleProfile.Uuid = detail.UUID
|
||||
bundleProfile.Name = detail.Name
|
||||
bundleProfile.Content = detail.Content
|
||||
bundleProfile.Price = detail.Price
|
||||
bundleProfile.PriceType = detail.PriceType
|
||||
bundleProfile.BgImg1 = detail.BgImg1
|
||||
bundleProfile.BgImg2 = detail.BgImg2
|
||||
bundleProfile.Sort = detail.Sort
|
||||
for _, lang := range detail.BundleProfileLang {
|
||||
bundleProfileLang := &bundle.BundleProfileLang{
|
||||
Uuid: lang.UUID,
|
||||
Name: lang.Name,
|
||||
Price: lang.Price,
|
||||
PriceType: lang.PriceType,
|
||||
Content: lang.Content,
|
||||
Language: lang.Language,
|
||||
CreatedAt: time.Unix(lang.CreatedAt, 0).Format("2006-01-02 15:04:05"),
|
||||
UpdatedAt: time.Unix(int64(lang.UpdatedAt), 0).Format("2006-01-02 15:04:05"),
|
||||
}
|
||||
// 通过中间表拼接增值服务数据
|
||||
if detail.BundleToValueAddService != nil && len(detail.BundleToValueAddService) > 0 {
|
||||
for _, valueAddService := range detail.BundleToValueAddService {
|
||||
valueAddDeatilData, err := dao.ValueAddServiceDetailByUuidAndLanguage(valueAddService.ValueUid, bundleProfileLang.Language)
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
//if valueAddService.IsDisplay{}
|
||||
ValueAddServiceLang := &bundle.ValueAddServiceLang{
|
||||
Uuid: valueAddDeatilData.UUID,
|
||||
ServiceName: valueAddDeatilData.ServiceName,
|
||||
ServiceType: int32(valueAddDeatilData.ServiceType),
|
||||
PriceMode: int32(valueAddDeatilData.PriceMode),
|
||||
PriceType: int64(valueAddDeatilData.PriceType),
|
||||
OriginalPrice: fmt.Sprintf("%.2f", float32(valueAddDeatilData.OriginalPrice)),
|
||||
Unit: string(valueAddDeatilData.Unit),
|
||||
Language: valueAddDeatilData.Language,
|
||||
CreatedAt: time.Unix(valueAddDeatilData.CreatedAt, 0).Format("2006-01-02 15:04:05"),
|
||||
UpdatedAt: time.Unix(valueAddDeatilData.UpdatedAt, 0).Format("2006-01-02 15:04:05"),
|
||||
}
|
||||
bundleProfileLang.ValueAddServiceLang = append(bundleProfileLang.ValueAddServiceLang, ValueAddServiceLang)
|
||||
selectValueAddService = append(selectValueAddService, &bundle.SelectValueAddService{
|
||||
ValueAddUuid: valueAddService.ValueUid,
|
||||
ServiceName: valueAddDeatilData.ServiceName,
|
||||
IsDisplay: valueAddService.IsDisplay,
|
||||
})
|
||||
}
|
||||
}
|
||||
bundleProfileLangs = append(bundleProfileLangs, bundleProfileLang)
|
||||
}
|
||||
}
|
||||
|
||||
if selectValueAddService != nil && len(selectValueAddService) > 0 {
|
||||
bundleProfile.SelectValueAddService = selectValueAddService
|
||||
}
|
||||
bundleProfile.BundleProfileLang = bundleProfileLangs
|
||||
res.Bundle = bundleProfile
|
||||
return
|
||||
}
|
||||
func HandleShelf(req *bundle.HandShelfRequest) (res *bundle.CommonResponse, err error) {
|
||||
res = new(bundle.CommonResponse)
|
||||
if req.Uuid == "" {
|
||||
return res, errors.New("uuid不能为空")
|
||||
}
|
||||
if req.ShelfStatus != 1 && req.ShelfStatus != 2 {
|
||||
return res, errors.New("Invalid shelf status")
|
||||
}
|
||||
|
||||
res, err = dao.HandShelf(req.Uuid, req.ShelfStatus)
|
||||
if err != nil {
|
||||
res.Msg = err.Error()
|
||||
return res, err
|
||||
}
|
||||
|
||||
res.Msg = "Operation success"
|
||||
return res, nil
|
||||
}
|
||||
|
||||
// 差异更新套餐与增值服务中间表
|
||||
func diffUpdateBundleToValueAddService(tx *gorm.DB, bundleUuid string, selectService []*model.BundleToValueAddService) error {
|
||||
oldUuids, err := dao.GetValueAddServiceUuidsByBundleUuid(bundleUuid)
|
||||
if err != nil {
|
||||
return errors.New("查询旧套餐与增值服务关联失败: " + err.Error())
|
||||
}
|
||||
newUuids := make(map[string]*model.BundleToValueAddService)
|
||||
for _, s := range selectService {
|
||||
newUuids[s.ValueUid] = s
|
||||
}
|
||||
oldSet := make(map[string]struct{})
|
||||
for _, uid := range oldUuids {
|
||||
oldSet[uid] = struct{}{}
|
||||
}
|
||||
// 需要新增的
|
||||
toAdd := make([]*model.BundleToValueAddService, 0)
|
||||
for uid, s := range newUuids {
|
||||
if _, exist := oldSet[uid]; !exist {
|
||||
s.BundleUuid = bundleUuid
|
||||
toAdd = append(toAdd, s)
|
||||
}
|
||||
}
|
||||
// 需要删除的
|
||||
toDel := make([]string, 0)
|
||||
for _, uid := range oldUuids {
|
||||
if _, exist := newUuids[uid]; !exist {
|
||||
toDel = append(toDel, uid)
|
||||
}
|
||||
}
|
||||
if len(toDel) > 0 {
|
||||
if err = tx.Where("bundle_uuid = ? AND value_uid IN ?", bundleUuid, toDel).Delete(&model.BundleToValueAddService{}).Error; err != nil {
|
||||
return errors.New("删除套餐与增值服务关联失败: " + err.Error())
|
||||
}
|
||||
}
|
||||
if len(toAdd) > 0 {
|
||||
if err = dao.CreateBundleToValueAddService(tx, toAdd); err != nil {
|
||||
return errors.New("保存套餐与增值服务关联失败: " + err.Error())
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func saveBundleHistory(tx *gorm.DB, bundleUuid string, operator string, operatorId uint64) error {
|
||||
// 保存历史记录
|
||||
data, err := dao.GetBundleDetailByUuid(bundleUuid)
|
||||
if err != nil {
|
||||
return errors.New("查询套餐详情失败: " + err.Error())
|
||||
}
|
||||
j, err := json.MarshalIndent(data, "", " ")
|
||||
if err != nil {
|
||||
return errors.New("json转换失败: " + err.Error())
|
||||
}
|
||||
history := &model.BundleProfileHistory{
|
||||
Uuid: bundleUuid,
|
||||
BundleProfile: datatypes.JSON(j),
|
||||
Operator: operator,
|
||||
OperatorId: operatorId,
|
||||
}
|
||||
if err := tx.Create(history).Error; err != nil {
|
||||
return errors.New("保存套餐历史记录失败: " + err.Error())
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
@ -1,20 +1,12 @@
|
||||
package logic
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"micro-bundle/internal/dao"
|
||||
"micro-bundle/internal/model"
|
||||
"micro-bundle/pb/bundle"
|
||||
"micro-bundle/pkg/app"
|
||||
"micro-bundle/pkg/msg"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"github.com/aliyun/alibaba-cloud-sdk-go/sdk/utils"
|
||||
"gorm.io/datatypes"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
// 增值套餐创建
|
||||
@ -139,295 +131,3 @@ func ValueAddBundleDetail(req *bundle.ValueAddBundleDetailRequest) (res *bundle.
|
||||
res.Msg = "SUCCESS"
|
||||
return
|
||||
}
|
||||
|
||||
//*******************************************************************新增值服务***********************
|
||||
|
||||
// 增值套餐保存(无则新增,有则更新)
|
||||
func SaveValueAddService(in *bundle.ValueAddServiceLang) (res *bundle.SaveResponse, err error) {
|
||||
res = &bundle.SaveResponse{}
|
||||
if in.Language == "" {
|
||||
return res, errors.New("语言参数不能为空")
|
||||
}
|
||||
var options model.PriceOptions
|
||||
index := 1
|
||||
for _, option := range in.Options {
|
||||
price, parseErr := strconv.ParseFloat(option.Price, 32)
|
||||
if parseErr != nil {
|
||||
return res, parseErr
|
||||
}
|
||||
options = append(options, &model.PriceOption{
|
||||
Id: int32(index),
|
||||
Num: option.Num,
|
||||
Symbol: option.Symbol,
|
||||
Price: float32(price),
|
||||
})
|
||||
index++
|
||||
}
|
||||
ok, err := model.ValidateOptions(options)
|
||||
if !ok {
|
||||
return res, err
|
||||
}
|
||||
valueAddService := &model.ValueAddService{
|
||||
ServiceName: in.ServiceName,
|
||||
ServiceType: in.ServiceType,
|
||||
}
|
||||
originalPrice, err := strconv.ParseFloat(in.OriginalPrice, 32)
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
valueAddServiceLang := &model.ValueAddServiceLang{
|
||||
ServiceName: in.ServiceName,
|
||||
ServiceType: in.ServiceType,
|
||||
PriceMode: int32(in.PriceMode),
|
||||
OriginalPrice: float32(originalPrice),
|
||||
Unit: in.Unit,
|
||||
Language: in.Language,
|
||||
PriceType: in.PriceType,
|
||||
Options: options,
|
||||
}
|
||||
if in.Uuid == "" && in.Language != msg.ZH_CN {
|
||||
return res, errors.New("请先新增简体中文套餐,再添加其他语言版本")
|
||||
}
|
||||
tx := app.ModuleClients.BundleDB.Begin()
|
||||
defer func() {
|
||||
if err != nil {
|
||||
tx.Rollback()
|
||||
} else {
|
||||
tx.Commit()
|
||||
}
|
||||
}()
|
||||
// 检查当前语言套餐是否存在
|
||||
_, err = dao.ValueAddServiceDetailByUuidAndLanguage(in.Uuid, in.Language)
|
||||
if err != nil {
|
||||
if err == gorm.ErrRecordNotFound { // 当前语言套餐不存在
|
||||
if in.Language != msg.ZH_CN {
|
||||
_, err = dao.ValueAddServiceDetailByUuidAndLanguage(in.Uuid, msg.ZH_CN)
|
||||
if err != nil {
|
||||
if err != gorm.ErrRecordNotFound {
|
||||
return res, errors.New("请先创建中文套餐")
|
||||
} else {
|
||||
// // 新语言补充:只要UUID存在即可直接插入新语言
|
||||
// if in.Uuid != "" {
|
||||
// valueAddServiceLang.UUID = in.Uuid
|
||||
// if err = dao.CreateValueAddServiceLang(tx, valueAddServiceLang); err != nil {
|
||||
// return res, errors.New("补充新语言套餐失败: " + err.Error())
|
||||
// }
|
||||
// res.Uuid = in.Uuid
|
||||
// res.Msg = "补充新语言套餐成功"
|
||||
// return
|
||||
// }
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
if in.Language == msg.ZH_CN {
|
||||
valueAddService.UUID = utils.GetUUID()
|
||||
err = dao.CreateValueAddService(tx, valueAddService)
|
||||
if err != nil {
|
||||
return res, errors.New("保存中文语言套餐失败: " + err.Error())
|
||||
}
|
||||
valueAddServiceLang.UUID = valueAddService.UUID
|
||||
res.Uuid = valueAddService.UUID
|
||||
if err = dao.CreateValueAddServiceLang(tx, valueAddServiceLang); err != nil {
|
||||
return res, errors.New("保存语言套餐失败: " + err.Error())
|
||||
}
|
||||
}
|
||||
langList := []string{msg.ZH_TW, msg.EN, msg.DE_DE, msg.JS_JP}
|
||||
for _, lang := range langList {
|
||||
otherLang := model.ValueAddServiceLang{
|
||||
UUID: valueAddServiceLang.UUID,
|
||||
ServiceName: valueAddServiceLang.ServiceName,
|
||||
ServiceType: valueAddServiceLang.ServiceType,
|
||||
PriceMode: valueAddServiceLang.PriceMode,
|
||||
OriginalPrice: valueAddServiceLang.OriginalPrice,
|
||||
TotalPrice: valueAddServiceLang.TotalPrice,
|
||||
Unit: valueAddServiceLang.Unit,
|
||||
Language: lang,
|
||||
PriceType: valueAddServiceLang.PriceType,
|
||||
Options: valueAddServiceLang.Options,
|
||||
}
|
||||
otherLang.Language = lang
|
||||
if err = dao.CreateValueAddServiceLang(tx, &otherLang); err != nil {
|
||||
return res, errors.New(fmt.Sprintf("保存%s语言套餐失败: ", lang) + err.Error())
|
||||
}
|
||||
}
|
||||
res.Msg = "保存成功"
|
||||
return
|
||||
} else {
|
||||
return
|
||||
}
|
||||
} else {
|
||||
// 已存在,进行更新
|
||||
//中文状态下,更新主表和语言表
|
||||
if in.Language == msg.ZH_CN {
|
||||
updateService := map[string]interface{}{
|
||||
"uuid": in.Uuid,
|
||||
"service_name": in.ServiceName,
|
||||
"service_type": in.ServiceType,
|
||||
}
|
||||
if err = dao.UpdateValueAddService(tx, updateService); err != nil {
|
||||
return res, err
|
||||
}
|
||||
}
|
||||
// 查找所有与该增值服务关联的套餐,若币种不一致则取消关联并统计
|
||||
var cancelNum int64 = 0
|
||||
bundleToValueAddList, _ := dao.GetBundleToValueAddServiceByValueUid(in.Uuid)
|
||||
for _, rel := range bundleToValueAddList {
|
||||
bundleProfile, _ := dao.BundleDetailByUuidAndLanguage(rel.BundleUuid, in.Language)
|
||||
if bundleProfile != nil && bundleProfile.PriceType != in.PriceType {
|
||||
dao.DeleteBundleToValueAddService(tx, rel.BundleUuid, in.Uuid)
|
||||
cancelNum++
|
||||
}
|
||||
}
|
||||
//更新语言表
|
||||
updateLangService := map[string]interface{}{
|
||||
"uuid": in.Uuid,
|
||||
"service_name": in.ServiceName,
|
||||
"service_type": in.ServiceType,
|
||||
"price_mode": in.PriceMode,
|
||||
"original_price": in.OriginalPrice,
|
||||
"unit": in.Unit,
|
||||
"price_type": in.PriceType,
|
||||
"options": options,
|
||||
"language": in.Language,
|
||||
}
|
||||
if err := dao.UpdateValueAddServiceLang(tx, updateLangService); err != nil {
|
||||
return res, err
|
||||
}
|
||||
if err := saveValueAddServiceHistory(tx, in.Uuid); err != nil {
|
||||
return res, err
|
||||
}
|
||||
res.Uuid = in.Uuid
|
||||
res.Msg = "保存成功"
|
||||
res.CancelNum = cancelNum
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// 增值套餐列表
|
||||
func ValueAddServiceList(req *bundle.ValueAddServiceListRequest) (res *bundle.ValueAddServiceListResponse, err error) {
|
||||
res = &bundle.ValueAddServiceListResponse{}
|
||||
list, total, err := dao.ValueAddServiceList(req)
|
||||
if err != nil {
|
||||
res.Msg = msg.ErrorValueAddServiceList
|
||||
return res, err
|
||||
}
|
||||
for _, valueAddService := range list {
|
||||
serviceInfo := &bundle.ValueAddService{
|
||||
Uuid: valueAddService.UUID,
|
||||
ServiceName: valueAddService.ServiceName,
|
||||
ServiceType: valueAddService.ServiceType,
|
||||
}
|
||||
for _, serviceLang := range valueAddService.ValueAddServiceLang {
|
||||
serviceLangInfo := &bundle.ValueAddServiceLang{
|
||||
Uuid: valueAddService.UUID,
|
||||
ServiceName: serviceLang.ServiceName,
|
||||
ServiceType: serviceLang.ServiceType,
|
||||
PriceMode: serviceLang.PriceMode,
|
||||
OriginalPrice: fmt.Sprintf("%.2f", serviceLang.OriginalPrice),
|
||||
Unit: serviceLang.Unit,
|
||||
PriceType: int64(serviceLang.PriceType),
|
||||
Language: serviceLang.Language,
|
||||
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"),
|
||||
}
|
||||
if serviceLang.Options != nil && len(serviceLang.Options) > 0 {
|
||||
var options []*bundle.ValueAddPriceOptions
|
||||
for _, option := range serviceLang.Options {
|
||||
options = append(options, &bundle.ValueAddPriceOptions{
|
||||
Id: int64(option.Id),
|
||||
Num: option.Num,
|
||||
Symbol: option.Symbol,
|
||||
Price: fmt.Sprintf("%.2f", option.Price),
|
||||
})
|
||||
}
|
||||
serviceLangInfo.Options = options
|
||||
}
|
||||
serviceInfo.ServiceLang = append(serviceInfo.ServiceLang, serviceLangInfo)
|
||||
}
|
||||
res.ValueAddServiceList = append(res.ValueAddServiceList, serviceInfo)
|
||||
}
|
||||
res.Total = int32(total)
|
||||
res.Msg = msg.SuccessValueAddServiceList
|
||||
return
|
||||
|
||||
}
|
||||
|
||||
// 增值套餐详情
|
||||
func ValueAddServiceDetail(req *bundle.ValueAddServiceDetailRequest) (res *bundle.ValueAddServiceDetailResponse, err error) {
|
||||
res = &bundle.ValueAddServiceDetailResponse{}
|
||||
valueAddService := &bundle.ValueAddService{}
|
||||
serviceLangs := []*bundle.ValueAddServiceLang{}
|
||||
if req.Uuid == "" {
|
||||
res.Msg = msg.ErrorValueAddServiceInfo
|
||||
return res, errors.New("uuid不能为空")
|
||||
}
|
||||
// if req.Language == "" {
|
||||
// res.Msg = msg.ErrorValueAddServiceInfo
|
||||
// return res, errors.New("语言选项不能为空")
|
||||
// }
|
||||
detail, err := dao.ValueAddServiceDetail(req.Uuid)
|
||||
if err != nil {
|
||||
res.Msg = msg.ErrorValueAddServiceInfo
|
||||
return res, err
|
||||
}
|
||||
if detail != nil && len(detail.ValueAddServiceLang) > 0 {
|
||||
valueAddService.Uuid = detail.UUID
|
||||
valueAddService.ServiceName = detail.ServiceName
|
||||
valueAddService.ServiceType = detail.ServiceType
|
||||
for _, serviceLang := range detail.ValueAddServiceLang {
|
||||
langOptions := []*bundle.ValueAddPriceOptions{}
|
||||
if serviceLang.Options != nil && len(serviceLang.Options) > 0 {
|
||||
for _, opt := range serviceLang.Options {
|
||||
langOptions = append(langOptions, &bundle.ValueAddPriceOptions{
|
||||
Id: int64(opt.Id),
|
||||
Num: opt.Num,
|
||||
Symbol: opt.Symbol,
|
||||
Price: fmt.Sprintf("%.2f", opt.Price),
|
||||
})
|
||||
}
|
||||
}
|
||||
serviceLangInfo := &bundle.ValueAddServiceLang{
|
||||
Uuid: serviceLang.UUID,
|
||||
ServiceName: serviceLang.ServiceName,
|
||||
ServiceType: serviceLang.ServiceType,
|
||||
Language: serviceLang.Language,
|
||||
PriceMode: serviceLang.PriceMode,
|
||||
OriginalPrice: fmt.Sprintf("%.2f", serviceLang.OriginalPrice),
|
||||
Unit: serviceLang.Unit,
|
||||
PriceType: int64(serviceLang.PriceType),
|
||||
Options: langOptions,
|
||||
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"),
|
||||
}
|
||||
serviceLangs = append(serviceLangs, serviceLangInfo)
|
||||
}
|
||||
}
|
||||
valueAddService.ServiceLang = serviceLangs
|
||||
|
||||
res.ValueAddService = valueAddService
|
||||
res.Msg = msg.SuccessValueAddServiceInfo
|
||||
return
|
||||
}
|
||||
|
||||
func saveValueAddServiceHistory(tx *gorm.DB, uuid string) (err error) {
|
||||
// 保存历史记录
|
||||
data, err := dao.GetBundleDetailByUuid(uuid)
|
||||
if err != nil {
|
||||
return errors.New("查询增值服务详情失败: " + err.Error())
|
||||
}
|
||||
j, err := json.MarshalIndent(data, "", " ")
|
||||
if err != nil {
|
||||
return errors.New("json转换失败: " + err.Error())
|
||||
}
|
||||
history := &model.ValueAddServiceHistory{
|
||||
Uuid: uuid,
|
||||
ValueAddService: datatypes.JSON(j),
|
||||
//Operator: operator,
|
||||
//OperatorId: operatorId,
|
||||
}
|
||||
if err := tx.Create(history).Error; err != nil {
|
||||
return errors.New("保存增值服务历史记录失败: " + err.Error())
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
@ -1,76 +1,18 @@
|
||||
package model
|
||||
|
||||
import (
|
||||
"gorm.io/datatypes"
|
||||
"gorm.io/gorm"
|
||||
"gorm.io/plugin/soft_delete"
|
||||
)
|
||||
import "gorm.io/gorm"
|
||||
|
||||
type BundleProfile struct {
|
||||
gorm.Model
|
||||
UUID string `json:"uuid" gorm:"column:uuid;type:varchar(1024);comment:套餐UUID"`
|
||||
Name string `json:"name" gorm:"column:name;type:varchar(2048);comment:套餐名称"`
|
||||
Price float32 `json:"price" gorm:"column:price;type:decimal(12,2);comment:套餐价格"`
|
||||
PriceType int64 `json:"priceType" gorm:"column:price_type;type:int;comment:套餐类型 1:人民币 2:美元"`
|
||||
Contract string `json:"contract" gorm:"type:varchar(1024);comment:合同"`
|
||||
ContractDuration int `json:"contractDuration" gorm:"column:contract_duration;type:int;comment:合同有效时长"`
|
||||
Content string `json:"content" gorm:"column:content;type:text;comment:套餐内容"`
|
||||
CompanySign string `json:"companySign" gorm:"column:company_sign;type:varchar(1024);comment:公司签名"`
|
||||
Language string `json:"language" gorm:"column:language;type:varchar(32);comment:套餐语言 zh-CN EN"`
|
||||
BundleCommonUid string `json:"bundleCommonUid" gorm:"column:bundle_common_uid;type:varchar(1024);comment:套餐公共ID"`
|
||||
|
||||
Sort int64 `json:"sort" gorm:"column:sort;type:int;comment:套餐排序"` //数字越小越靠前,同大小后创建优先
|
||||
ShelfStatus int64 `json:"shelfStatus" gorm:"column:shelf_status;type:int;default:2;comment:上架状态 1:上架 2:下架"`
|
||||
BgImg1 string `json:"bgImg1" gorm:"column:bg_img1;type:varchar(1024);comment:背景图-首页"`
|
||||
BgImg2 string `json:"bgImg2" gorm:"column:bg_img2;type:varchar(1024);comment:背景图-我的"`
|
||||
BundleToValueAddService []BundleToValueAddService `gorm:"foreignKey:BundleUuid;references:UUID" json:"bundleToValueAddService"`
|
||||
BundleProfileLang []BundleProfileLang `gorm:"foreignKey:UUID;references:UUID" json:"bundleProfileLang"`
|
||||
}
|
||||
type BundleProfileLang struct {
|
||||
Id int32 `gorm:"column:id;type:int(11);primary_key;AUTO_INCREMENT" json:"id"`
|
||||
UUID string `json:"uuid" gorm:"column:uuid;type:varchar(1024);comment:套餐UUID"`
|
||||
Name string `json:"name" gorm:"column:name;type:varchar(2048);comment:套餐名称"`
|
||||
Price float32 `json:"price" gorm:"column:price;type:decimal(12,2);comment:套餐价格"`
|
||||
PriceType int64 `json:"priceType" gorm:"column:price_type;type:int;comment:套餐类型 1:人民币 2:美元"`
|
||||
Content string `json:"content" gorm:"column:content;type:text;comment:套餐内容"`
|
||||
Language string `json:"language" gorm:"column:language;type:varchar(32);comment:套餐语言 zh-CN zh-TW EN de-DE js-JP(中繁英德日)"`
|
||||
CreatedAt int64 `gorm:"column:created_at;autoCreateTime"`
|
||||
UpdatedAt int64 `gorm:"column:updated_at;autoCreateTime"`
|
||||
DeletedAt soft_delete.DeletedAt
|
||||
}
|
||||
type BundleToValueAddService struct {
|
||||
Id int32 `gorm:"column:id;type:int(11);primary_key;AUTO_INCREMENT" json:"id"`
|
||||
BundleUuid string `json:"bundleUuid" gorm:"column:bundle_uuid;type:varchar(1024);comment:套餐UUID"`
|
||||
BundleProfile BundleProfile `gorm:"foreignKey:BundleUuid;references:UUID" json:"bundleProfile"`
|
||||
ValueUid string `json:"valueUid" gorm:"column:value_uid;type:varchar(1024);comment:增值服务UUID"`
|
||||
ValueAddService ValueAddService `gorm:"foreignKey:ValueUid;references:UUID" json:"valueAddService"`
|
||||
IsDisplay bool `json:"isDisplay" gorm:"column:is_display;type:tinyint(1);comment:是否显示"`
|
||||
CreatedAt int64 `gorm:"column:created_at;autoCreateTime"`
|
||||
UpdatedAt int64 `gorm:"column:updated_at;autoCreateTime"`
|
||||
DeletedAt soft_delete.DeletedAt
|
||||
}
|
||||
|
||||
// todo套餐修改历史
|
||||
type BundleProfileHistory struct {
|
||||
Id int32 `gorm:"column:id;type:int(11);primary_key;AUTO_INCREMENT" json:"id"`
|
||||
Uuid string `json:"uuid" gorm:"column:uuid;type:varchar(1024);comment:UUID"`
|
||||
BundleProfile datatypes.JSON `json:"bundleProfile" gorm:"column:bundle_profile;type:json;comment:套餐信息"`
|
||||
Operator string `json:"operator" gorm:"column:operator;type:varchar(1024);comment:操作人"`
|
||||
OperatorId uint64 `json:"operatorId" gorm:"column:operator_id;type:int;comment:操作人ID"`
|
||||
CreatedAt int64 `gorm:"column:created_at;autoCreateTime"`
|
||||
UpdatedAt int64 `gorm:"column:updated_at;autoCreateTime"`
|
||||
DeletedAt soft_delete.DeletedAt
|
||||
}
|
||||
|
||||
func (m *BundleProfile) TableName() string {
|
||||
return "bundle_profile"
|
||||
}
|
||||
func (m *BundleProfileLang) TableName() string {
|
||||
return "bundle_profile_lang"
|
||||
}
|
||||
func (m *BundleToValueAddService) TableName() string {
|
||||
return "bundle_to_value_add_service"
|
||||
}
|
||||
func (m *BundleProfileHistory) TableName() string {
|
||||
return "bundle_profile_history"
|
||||
PriceType int64 `json:"priceType" gorm:"column:price_type;type:int;comment:套餐价格类型 1:人民币 2:美元"`
|
||||
Contract string `json:"contract" gorm:"type:varchar(1024);comment:合同"`
|
||||
// 合同有效时长
|
||||
ContractDuration int `json:"contractDuration" gorm:"column:contract_duration;type:int;comment:合同有效时长"`
|
||||
Content string `json:"content" gorm:"column:content;type:text;comment:套餐内容"`
|
||||
CompanySign string `json:"companySign" gorm:"column:company_sign;type:varchar(1024);comment:公司签名"`
|
||||
Language string `json:"language" gorm:"column:language;type:varchar(32);comment:套餐语言 zh-CN EN"`
|
||||
BundleCommonUid string `json:"bundleCommonUid" gorm:"column:bundle_common_uid;type:varchar(1024);comment:套餐公共ID"`
|
||||
}
|
||||
|
@ -1,11 +1,6 @@
|
||||
package model
|
||||
|
||||
import (
|
||||
"database/sql/driver"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
|
||||
"gorm.io/datatypes"
|
||||
"gorm.io/plugin/soft_delete"
|
||||
)
|
||||
|
||||
@ -29,120 +24,16 @@ type ValueAddBundleProfile struct {
|
||||
DeletedAt soft_delete.DeletedAt
|
||||
}
|
||||
|
||||
// 新增值套餐主表
|
||||
type ValueAddService struct {
|
||||
Id int32 `gorm:"column:id;type:int(11);primary_key;AUTO_INCREMENT" json:"id"`
|
||||
UUID string `json:"uuid" gorm:"column:uuid;type:varchar(1024);comment:增值套餐UUID"`
|
||||
ServiceName string `json:"serviceName" gorm:"column:service_name;type:varchar(1024);comment:增值服务名称"`
|
||||
ServiceType int32 `json:"serviceType" gorm:"column:service_type;type:int;comment:服务类型 1:视频 2:图文 3:数据报表 4:账号数 5:可用时长"`
|
||||
ValueAddServiceLang []ValueAddServiceLang `gorm:"foreignKey:UUID;references:UUID"`
|
||||
BundleToValueAddService []BundleToValueAddService `gorm:"foreignKey:ValueUid;references:UUID"`
|
||||
CreatedAt int64 `gorm:"column:created_at;autoCreateTime"`
|
||||
UpdatedAt int64 `gorm:"column:updated_at;autoCreateTime"`
|
||||
DeletedAt soft_delete.DeletedAt
|
||||
}
|
||||
//func (ValueAddBundleProfile) TableName() string {
|
||||
// return "value_add_bundle_profile2"
|
||||
//}
|
||||
|
||||
// 新增值套餐语言表
|
||||
type ValueAddServiceLang struct {
|
||||
Id int32 `gorm:"column:id;type:int(11);primary_key;AUTO_INCREMENT" json:"id"`
|
||||
UUID string `json:"uuid" gorm:"column:uuid;type:varchar(1024);comment:增值套餐UUID"`
|
||||
ServiceName string `json:"serviceName" gorm:"column:service_name;type:varchar(1024);comment:增值服务名称"`
|
||||
ServiceType int32 `json:"serviceType" gorm:"column:service_type;type:int;comment:服务类型 1:视频 2:图文 3:数据报表 4:账号数 5:可用时长"`
|
||||
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:原单价"`
|
||||
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:年"`
|
||||
Language string `json:"language" gorm:"column:language;type:varchar(32);comment:套餐语言 zh-CN zh-TW EN de-DE js-JP(中繁英德日)"`
|
||||
PriceType int64 `json:"priceType" gorm:"column:price_type;type:int;comment:币种 1:人民币 2:美元 3:日元 4:欧元"`
|
||||
Options PriceOptions `gorm:"column:options;type:json" json:"options"`
|
||||
CreatedAt int64 `gorm:"column:created_at;autoCreateTime"`
|
||||
UpdatedAt int64 `gorm:"column:updated_at;autoCreateTime"`
|
||||
DeletedAt soft_delete.DeletedAt
|
||||
}
|
||||
|
||||
type ValueAddServiceHistory struct {
|
||||
Id int32 `gorm:"column:id;type:int(11);primary_key;AUTO_INCREMENT" json:"id"`
|
||||
Uuid string `json:"uuid" gorm:"column:uuid;type:varchar(1024);comment:UUID"`
|
||||
ValueAddService datatypes.JSON `json:"valueAddService" gorm:"column:value_add_service;type:json;comment:增值服务"`
|
||||
Operator string `json:"operator" gorm:"column:operator;type:varchar(1024);comment:操作人"`
|
||||
OperatorId uint64 `json:"operatorId" gorm:"column:operator_id;type:int;comment:操作人ID"`
|
||||
CreatedAt int64 `gorm:"column:created_at;autoCreateTime"`
|
||||
UpdatedAt int64 `gorm:"column:updated_at;autoCreateTime"`
|
||||
DeletedAt soft_delete.DeletedAt
|
||||
}
|
||||
|
||||
type PriceOptions []*PriceOption
|
||||
type PriceOption struct {
|
||||
Id int32 `json:"id"`
|
||||
Num int32 `json:"num"`
|
||||
Symbol string `json:"symbol"` // 符号> < = <= =>
|
||||
Price float32 `json:"price"` // 价格(根据priceMode决定是单价还是总价)
|
||||
}
|
||||
|
||||
// 实现 driver.Valuer 接口
|
||||
func (o PriceOptions) Value() (driver.Value, error) {
|
||||
return json.Marshal(o)
|
||||
}
|
||||
|
||||
// 实现 sql.Scanner 接口
|
||||
func (o *PriceOptions) Scan(value interface{}) error {
|
||||
bytes, ok := value.([]byte)
|
||||
if !ok {
|
||||
return errors.New("实现 sql.Scanner 接口 failed: type assertion to []byte failed")
|
||||
}
|
||||
return json.Unmarshal(bytes, o)
|
||||
}
|
||||
|
||||
// 校验Options是否合法,避免同一数字被多个规则覆盖
|
||||
func ValidateOptions(options PriceOptions) (bool, error) {
|
||||
symbolSet := map[string]struct{}{">": {}, "<": {}, ">=": {}, "<=": {}, "=": {}}
|
||||
cover := make(map[int]struct{})
|
||||
for _, opt := range options {
|
||||
if opt.Num < 0 || opt.Num > 100 {
|
||||
return false, errors.New("数字范围错误")
|
||||
|
||||
}
|
||||
if _, ok := symbolSet[opt.Symbol]; !ok {
|
||||
return false, errors.New("符号错误")
|
||||
|
||||
}
|
||||
var nums []int
|
||||
switch opt.Symbol {
|
||||
case "=":
|
||||
nums = []int{int(opt.Num)}
|
||||
case ">":
|
||||
for i := int(opt.Num) + 1; i <= 100; i++ {
|
||||
nums = append(nums, i)
|
||||
}
|
||||
case ">=":
|
||||
for i := int(opt.Num); i <= 100; i++ {
|
||||
nums = append(nums, i)
|
||||
}
|
||||
case "<":
|
||||
for i := 1; i < int(opt.Num); i++ {
|
||||
nums = append(nums, i)
|
||||
}
|
||||
case "<=":
|
||||
for i := 1; i <= int(opt.Num); i++ {
|
||||
nums = append(nums, i)
|
||||
}
|
||||
}
|
||||
for _, n := range nums {
|
||||
if _, exist := cover[n]; exist {
|
||||
return false, errors.New("逻辑存在冲突,请重新设置")
|
||||
|
||||
}
|
||||
cover[n] = struct{}{}
|
||||
}
|
||||
}
|
||||
return true, nil
|
||||
}
|
||||
func (m *ValueAddService) TableName() string {
|
||||
return "value_add_service"
|
||||
}
|
||||
func (m *ValueAddServiceLang) TableName() string {
|
||||
return "value_add_service_lang"
|
||||
}
|
||||
func (m *ValueAddServiceHistory) TableName() string {
|
||||
return "value_add_service_history"
|
||||
}
|
||||
//type ValueAddBundleRecord struct {
|
||||
// gorm.Model
|
||||
// UUID string `json:"uuid" gorm:"column:uuid;type:varchar(1024);comment:增值套餐UUID"`
|
||||
// OriginalPrice float32 `json:"originalPrice" gorm:"column:original_price;type:decimal(12,2);comment:原单价"`
|
||||
// ValueAddBundleNum int `json:"valueAddBundleNum" gorm:"column:value_add_bundle_num;type:int;comment:增值套餐数量"`
|
||||
// DiscountPrice float32 `json:"discountPrice" gorm:"column:discount_price;type:decimal(12,2);comment:优惠单价"`
|
||||
// SavedAmount float32 `json:"savedAmount" gorm:"column:saved_amount;type:decimal(12,2);comment:节省金额"`
|
||||
// TotalPrice float32 `json:"totalPrice" gorm:"column:total_price;type:decimal(12,2);comment:增值套餐总价"`
|
||||
//}
|
||||
|
171
pb/bundle.proto
171
pb/bundle.proto
@ -11,13 +11,6 @@ service Bundle {
|
||||
rpc CreateBundle(BundleProfile) returns (CommonResponse) {}
|
||||
rpc UpdateBundle(BundleProfile) returns (CommonResponse) {}
|
||||
rpc DeleteBundle(DelBundleRequest) returns (CommonResponse) {}
|
||||
rpc HandShelf(HandShelfRequest) returns(CommonResponse) {} //更新套餐上下架状态
|
||||
rpc SaveBundle(BundleProfile)returns (SaveResponse) {}
|
||||
|
||||
|
||||
rpc BundleListV2(BundleListRequest) returns(BundleListResponse) {}
|
||||
rpc BundleDetailV2(BundleDetailRequest) returns(BundleDetailResponseV2) {}
|
||||
|
||||
|
||||
rpc BundleList(BundleListRequest) returns (BundleListResponse) {}
|
||||
rpc BundleDetail(BundleDetailRequest) returns (BundleDetailResponse) {}
|
||||
@ -33,15 +26,6 @@ service Bundle {
|
||||
rpc CreateValueAddBundle(CreateValueAddBundleRequest) returns (CreateValueAddBundleResponse) {}
|
||||
rpc ValueAddBundleList(ValueAddBundleListRequest) returns (ValueAddBundleListResponse) {}
|
||||
rpc ValueAddBundleDetail(ValueAddBundleDetailRequest) returns (ValueAddBundleDetailResponse) {}
|
||||
|
||||
//新增值服务
|
||||
rpc SaveValueAddService(ValueAddServiceLang) returns (SaveResponse) {}
|
||||
rpc ValueAddServiceList(ValueAddServiceListRequest) returns (ValueAddServiceListResponse) {}
|
||||
rpc ValueAddServiceDetail(ValueAddServiceDetailRequest) returns (ValueAddServiceDetailResponse) {}
|
||||
|
||||
// 余量管理
|
||||
rpc BundleExtend(BundleExtendRequest) returns (BundleExtendResponse) {} // 套餐扩展
|
||||
rpc BundleExtendRecordsList(BundleExtendRecordsListRequest) returns (BundleExtendRecordsListResponse) {} // 套餐扩展记录查询
|
||||
}
|
||||
|
||||
message CommonResponse {
|
||||
@ -63,37 +47,8 @@ message BundleProfile {
|
||||
string companySign = 10 [json_name = "companySign"];
|
||||
int64 contractDuration = 11 [json_name = "contractDuration"];
|
||||
string bundleCommonUid = 12 [json_name = "bundleCommonUid"];
|
||||
int64 sort = 13 [json_name = "sort"];
|
||||
string bgImg1 = 14 [json_name = "bgImg1"];
|
||||
string bgImg2 = 15 [json_name = "bgImg2"];
|
||||
int64 shelfStatus = 16 [json_name = "shelfStatus"]; // 1 上架 2 下架
|
||||
repeated SelectValueAddService selectValueAddService = 17 [json_name = "SelectValueAddService"];
|
||||
repeated BundleProfileLang bundleProfileLang = 18 [json_name = "bundleProfileLang"];
|
||||
}
|
||||
message BundleProfileLang {
|
||||
string uuid = 1 [json_name = "uuid"];
|
||||
string name = 2 [json_name = "name"];
|
||||
float price = 3 [json_name = "price"];
|
||||
int64 priceType = 4 [json_name = "priceType"];
|
||||
string content = 5 [json_name = "content"];
|
||||
string language = 6 [json_name = "language"];
|
||||
string createdAt = 7 [json_name = "createdAt"];
|
||||
string updatedAt = 8 [json_name = "updatedAt"];
|
||||
string bgImg1 = 9 [json_name = "bgImg1"];
|
||||
string bgImg2 = 10 [json_name = "bgImg2"];
|
||||
int64 sort = 11 [json_name = "sort"];
|
||||
repeated ValueAddServiceLang valueAddServiceLang = 12 [json_name = "ValueAddServiceLang"];
|
||||
}
|
||||
message SaveResponse {
|
||||
string msg = 1 [json_name = "msg"];
|
||||
string uuid = 2 [json_name = "uuid"];
|
||||
int64 cancelNum = 3 [json_name = "cancelNum"];
|
||||
}
|
||||
message SelectValueAddService {
|
||||
string valueAddUuid = 1 [json_name = "valueAddUuid"];
|
||||
string serviceName= 2 [json_name = "serviceName"];
|
||||
bool isDisplay = 3 [json_name = "isDisplay"];
|
||||
}
|
||||
|
||||
message DelBundleRequest {
|
||||
string uuid = 1 [json_name = "uuid"];
|
||||
}
|
||||
@ -113,20 +68,13 @@ message BundleListResponse {
|
||||
|
||||
message BundleDetailRequest {
|
||||
string uuid = 1 [json_name = "uuid"];
|
||||
string language = 2 [json_name = "language"]; //语言 默认zh-CN, zh-CN zh-TW EN de-DE js-JP
|
||||
}
|
||||
message HandShelfRequest {
|
||||
string uuid = 1 [json_name = "uuid"];
|
||||
int64 shelfStatus = 2 [json_name = "shelfStatus"]; // 1 上架 2 下架
|
||||
}
|
||||
|
||||
message BundleDetailResponse {
|
||||
BundleProfile bundle = 1 [json_name = "bundle"];
|
||||
string msg = 2 [json_name = "msg"];
|
||||
}
|
||||
message BundleDetailResponseV2{
|
||||
BundleProfile bundle = 1 [json_name = "bundle"];
|
||||
string msg =2 [json_name = "msg"];
|
||||
}
|
||||
|
||||
message OrderRecord {
|
||||
string uuid = 1 [json_name = "uuid"];
|
||||
string bundleUuid = 2 [json_name = "bundleUuid"];
|
||||
@ -256,117 +204,4 @@ message ValueAddBundleDetailResponse {
|
||||
|
||||
message FinancialConfirmationRequest {
|
||||
string orderNo = 1 [json_name = "orderNo"];
|
||||
}
|
||||
|
||||
// ****************************************************新增值服务***********************
|
||||
//增值服务
|
||||
message ValueAddService {
|
||||
string uuid = 1 [json_name = "uuid"];
|
||||
string serviceName = 2 [json_name = "serviceName"]; //服务名称
|
||||
int32 serviceType = 3 [json_name = "serviceType"];
|
||||
repeated ValueAddServiceLang serviceLang = 4 [json_name = "serviceLang"];
|
||||
}
|
||||
message ValueAddServiceLang {
|
||||
string uuid = 1 [json_name = "uuid"];
|
||||
string serviceName = 2 [json_name = "serviceName"]; //服务名称
|
||||
int32 serviceType = 3 [json_name = "serviceType"];
|
||||
int32 priceMode = 4 [json_name = "priceMode"];
|
||||
string originalPrice = 5 [json_name = "originalPrice"];
|
||||
string unit = 6 [json_name = "unit"];
|
||||
int64 priceType = 7 [json_name = "priceType"];
|
||||
string language = 8 [json_name = "language"];
|
||||
string createdAt = 9 [json_name = "createdAt"];
|
||||
string updatedAt = 10 [json_name = "updatedAt"];
|
||||
repeated ValueAddPriceOptions options = 12 [json_name = "options"];
|
||||
}
|
||||
//增值服务价格选项
|
||||
message ValueAddPriceOptions {
|
||||
int64 id = 1 [json_name = "id"];
|
||||
int32 num = 2 [json_name = "num"];
|
||||
string symbol = 3 [json_name = "symbol"];
|
||||
string price = 4 [json_name = "price"];
|
||||
}
|
||||
//增值服务列表
|
||||
message ValueAddServiceListRequest {
|
||||
int32 page = 1 [json_name = "page"];
|
||||
int32 pageSize = 2 [json_name = "pageSize"];
|
||||
string name = 3 [json_name = "name"];
|
||||
string language = 4 [json_name = "language"];
|
||||
}
|
||||
message ValueAddServiceListResponse {
|
||||
int32 total = 1 [json_name = "total"];
|
||||
string msg = 2 [json_name = "msg"];
|
||||
repeated ValueAddService valueAddServiceList = 3 [json_name = "valueAddServiceList"];
|
||||
}
|
||||
//增值服务详情
|
||||
message ValueAddServiceDetailRequest {
|
||||
string uuid = 1 [json_name = "uuid"];
|
||||
string language = 2 [json_name = "language"]; //语言 默认zh-CN, zh-CN zh-TW EN de-DE js-JP
|
||||
}
|
||||
message ValueAddServiceDetailResponse {
|
||||
string msg = 1 [json_name = "msg"];
|
||||
ValueAddService valueAddService = 2 [json_name = "valueAddService"];
|
||||
}
|
||||
//*********************************新增值服务-over******************************************
|
||||
|
||||
message BundleExtendRequest{
|
||||
int64 userId = 1;
|
||||
uint32 accountAdditional = 2;
|
||||
uint32 videoAdditional = 3;
|
||||
uint32 imagesAdditional = 4;
|
||||
uint32 dataAdditional = 5;
|
||||
uint32 availableDurationAdditional = 6;
|
||||
string remark = 7;
|
||||
string associatedorderNumber = 8;
|
||||
int64 operatorId = 9;
|
||||
}
|
||||
|
||||
message BundleExtendResponse{
|
||||
}
|
||||
|
||||
message BundleExtendRecordsListRequest{
|
||||
int32 page = 1;
|
||||
int32 pageSize = 2;
|
||||
string user = 3;
|
||||
string operator = 4;
|
||||
uint64 startTime = 5;
|
||||
uint64 endTime = 6;
|
||||
uint32 type = 7;
|
||||
string associatedOrderNumber = 8;
|
||||
}
|
||||
|
||||
message BundleExtendRecordsListResponse{
|
||||
int64 total = 1;
|
||||
repeated BundleExtendRecordItem data = 2;
|
||||
}
|
||||
|
||||
message BundleExtendRecordItem{
|
||||
string userName = 1;
|
||||
string userPhoneNumber = 2;
|
||||
uint32 accountAdditional = 3;
|
||||
uint32 videoAdditional = 4;
|
||||
uint32 imagesAdditional = 5;
|
||||
uint32 dataAdditional = 6;
|
||||
uint32 availableDurationAdditional = 7;
|
||||
int32 type = 8;
|
||||
uint64 createdAt = 9;
|
||||
string remark = 10;
|
||||
string associatedOrderNumber = 11;
|
||||
string operatorName = 12;
|
||||
string operatorPhoneNumber = 13;
|
||||
}
|
||||
|
||||
message SetBundleBalanceRequest {
|
||||
int32 userId = 1;
|
||||
int64 expirationTime = 2;
|
||||
string bundleName = 3;
|
||||
int32 accountNumber = 4;
|
||||
int32 videoNumber = 5;
|
||||
int32 imageNumber = 6;
|
||||
int32 dataAnalysisNumber = 7;
|
||||
int32 expansionPacksNumber = 8;
|
||||
}
|
||||
|
||||
message SetBundleBalanceResponse {
|
||||
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@ -7,8 +7,8 @@ import (
|
||||
fmt "fmt"
|
||||
math "math"
|
||||
proto "github.com/golang/protobuf/proto"
|
||||
_ "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"
|
||||
)
|
||||
|
||||
@ -21,36 +21,6 @@ func (this *CommonResponse) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *BundleProfile) Validate() error {
|
||||
for _, item := range this.SelectValueAddService {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("SelectValueAddService", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
for _, item := range this.BundleProfileLang {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("BundleProfileLang", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *BundleProfileLang) Validate() error {
|
||||
for _, item := range this.ValueAddServiceLang {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("ValueAddServiceLang", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *SaveResponse) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *SelectValueAddService) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *DelBundleRequest) Validate() error {
|
||||
@ -72,9 +42,6 @@ func (this *BundleListResponse) Validate() error {
|
||||
func (this *BundleDetailRequest) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *HandShelfRequest) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *BundleDetailResponse) Validate() error {
|
||||
if this.Bundle != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Bundle); err != nil {
|
||||
@ -83,14 +50,6 @@ func (this *BundleDetailResponse) Validate() error {
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *BundleDetailResponseV2) Validate() error {
|
||||
if this.Bundle != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Bundle); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("Bundle", err)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *OrderRecord) Validate() error {
|
||||
return nil
|
||||
}
|
||||
@ -160,78 +119,3 @@ func (this *ValueAddBundleDetailResponse) Validate() error {
|
||||
func (this *FinancialConfirmationRequest) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *ValueAddService) Validate() error {
|
||||
for _, item := range this.ServiceLang {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("ServiceLang", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *ValueAddServiceLang) Validate() error {
|
||||
for _, item := range this.Options {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("Options", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *ValueAddPriceOptions) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *ValueAddServiceListRequest) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *ValueAddServiceListResponse) Validate() error {
|
||||
for _, item := range this.ValueAddServiceList {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("ValueAddServiceList", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *ValueAddServiceDetailRequest) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *ValueAddServiceDetailResponse) Validate() error {
|
||||
if this.ValueAddService != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.ValueAddService); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("ValueAddService", err)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *BundleExtendRequest) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *BundleExtendResponse) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *BundleExtendRecordsListRequest) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *BundleExtendRecordsListResponse) Validate() error {
|
||||
for _, item := range this.Data {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("Data", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *BundleExtendRecordItem) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *SetBundleBalanceRequest) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *SetBundleBalanceResponse) Validate() error {
|
||||
return nil
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
// Code generated by protoc-gen-go-triple. DO NOT EDIT.
|
||||
// versions:
|
||||
// - protoc-gen-go-triple v1.0.8
|
||||
// - protoc v5.29.2
|
||||
// - protoc v3.10.1
|
||||
// source: pb/bundle.proto
|
||||
|
||||
package bundle
|
||||
@ -31,10 +31,6 @@ type BundleClient interface {
|
||||
CreateBundle(ctx context.Context, in *BundleProfile, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment)
|
||||
UpdateBundle(ctx context.Context, in *BundleProfile, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment)
|
||||
DeleteBundle(ctx context.Context, in *DelBundleRequest, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment)
|
||||
HandShelf(ctx context.Context, in *HandShelfRequest, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment)
|
||||
SaveBundle(ctx context.Context, in *BundleProfile, opts ...grpc_go.CallOption) (*SaveResponse, common.ErrorWithAttachment)
|
||||
BundleListV2(ctx context.Context, in *BundleListRequest, opts ...grpc_go.CallOption) (*BundleListResponse, common.ErrorWithAttachment)
|
||||
BundleDetailV2(ctx context.Context, in *BundleDetailRequest, opts ...grpc_go.CallOption) (*BundleDetailResponseV2, common.ErrorWithAttachment)
|
||||
BundleList(ctx context.Context, in *BundleListRequest, opts ...grpc_go.CallOption) (*BundleListResponse, common.ErrorWithAttachment)
|
||||
BundleDetail(ctx context.Context, in *BundleDetailRequest, opts ...grpc_go.CallOption) (*BundleDetailResponse, common.ErrorWithAttachment)
|
||||
CreateOrderRecord(ctx context.Context, in *OrderRecord, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment)
|
||||
@ -47,13 +43,6 @@ type BundleClient interface {
|
||||
CreateValueAddBundle(ctx context.Context, in *CreateValueAddBundleRequest, opts ...grpc_go.CallOption) (*CreateValueAddBundleResponse, common.ErrorWithAttachment)
|
||||
ValueAddBundleList(ctx context.Context, in *ValueAddBundleListRequest, opts ...grpc_go.CallOption) (*ValueAddBundleListResponse, common.ErrorWithAttachment)
|
||||
ValueAddBundleDetail(ctx context.Context, in *ValueAddBundleDetailRequest, opts ...grpc_go.CallOption) (*ValueAddBundleDetailResponse, common.ErrorWithAttachment)
|
||||
//新增值服务
|
||||
SaveValueAddService(ctx context.Context, in *ValueAddServiceLang, opts ...grpc_go.CallOption) (*SaveResponse, common.ErrorWithAttachment)
|
||||
ValueAddServiceList(ctx context.Context, in *ValueAddServiceListRequest, opts ...grpc_go.CallOption) (*ValueAddServiceListResponse, common.ErrorWithAttachment)
|
||||
ValueAddServiceDetail(ctx context.Context, in *ValueAddServiceDetailRequest, opts ...grpc_go.CallOption) (*ValueAddServiceDetailResponse, common.ErrorWithAttachment)
|
||||
// 余量管理
|
||||
BundleExtend(ctx context.Context, in *BundleExtendRequest, opts ...grpc_go.CallOption) (*BundleExtendResponse, common.ErrorWithAttachment)
|
||||
BundleExtendRecordsList(ctx context.Context, in *BundleExtendRecordsListRequest, opts ...grpc_go.CallOption) (*BundleExtendRecordsListResponse, common.ErrorWithAttachment)
|
||||
}
|
||||
|
||||
type bundleClient struct {
|
||||
@ -64,10 +53,6 @@ type BundleClientImpl struct {
|
||||
CreateBundle func(ctx context.Context, in *BundleProfile) (*CommonResponse, error)
|
||||
UpdateBundle func(ctx context.Context, in *BundleProfile) (*CommonResponse, error)
|
||||
DeleteBundle func(ctx context.Context, in *DelBundleRequest) (*CommonResponse, error)
|
||||
HandShelf func(ctx context.Context, in *HandShelfRequest) (*CommonResponse, error)
|
||||
SaveBundle func(ctx context.Context, in *BundleProfile) (*SaveResponse, error)
|
||||
BundleListV2 func(ctx context.Context, in *BundleListRequest) (*BundleListResponse, error)
|
||||
BundleDetailV2 func(ctx context.Context, in *BundleDetailRequest) (*BundleDetailResponseV2, error)
|
||||
BundleList func(ctx context.Context, in *BundleListRequest) (*BundleListResponse, error)
|
||||
BundleDetail func(ctx context.Context, in *BundleDetailRequest) (*BundleDetailResponse, error)
|
||||
CreateOrderRecord func(ctx context.Context, in *OrderRecord) (*CommonResponse, error)
|
||||
@ -79,11 +64,6 @@ type BundleClientImpl struct {
|
||||
CreateValueAddBundle func(ctx context.Context, in *CreateValueAddBundleRequest) (*CreateValueAddBundleResponse, error)
|
||||
ValueAddBundleList func(ctx context.Context, in *ValueAddBundleListRequest) (*ValueAddBundleListResponse, error)
|
||||
ValueAddBundleDetail func(ctx context.Context, in *ValueAddBundleDetailRequest) (*ValueAddBundleDetailResponse, error)
|
||||
SaveValueAddService func(ctx context.Context, in *ValueAddServiceLang) (*SaveResponse, error)
|
||||
ValueAddServiceList func(ctx context.Context, in *ValueAddServiceListRequest) (*ValueAddServiceListResponse, error)
|
||||
ValueAddServiceDetail func(ctx context.Context, in *ValueAddServiceDetailRequest) (*ValueAddServiceDetailResponse, error)
|
||||
BundleExtend func(ctx context.Context, in *BundleExtendRequest) (*BundleExtendResponse, error)
|
||||
BundleExtendRecordsList func(ctx context.Context, in *BundleExtendRecordsListRequest) (*BundleExtendRecordsListResponse, error)
|
||||
}
|
||||
|
||||
func (c *BundleClientImpl) GetDubboStub(cc *triple.TripleConn) BundleClient {
|
||||
@ -116,30 +96,6 @@ func (c *bundleClient) DeleteBundle(ctx context.Context, in *DelBundleRequest, o
|
||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/DeleteBundle", in, out)
|
||||
}
|
||||
|
||||
func (c *bundleClient) HandShelf(ctx context.Context, in *HandShelfRequest, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment) {
|
||||
out := new(CommonResponse)
|
||||
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/HandShelf", in, out)
|
||||
}
|
||||
|
||||
func (c *bundleClient) SaveBundle(ctx context.Context, in *BundleProfile, opts ...grpc_go.CallOption) (*SaveResponse, common.ErrorWithAttachment) {
|
||||
out := new(SaveResponse)
|
||||
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/SaveBundle", in, out)
|
||||
}
|
||||
|
||||
func (c *bundleClient) BundleListV2(ctx context.Context, in *BundleListRequest, opts ...grpc_go.CallOption) (*BundleListResponse, common.ErrorWithAttachment) {
|
||||
out := new(BundleListResponse)
|
||||
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/BundleListV2", in, out)
|
||||
}
|
||||
|
||||
func (c *bundleClient) BundleDetailV2(ctx context.Context, in *BundleDetailRequest, opts ...grpc_go.CallOption) (*BundleDetailResponseV2, common.ErrorWithAttachment) {
|
||||
out := new(BundleDetailResponseV2)
|
||||
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/BundleDetailV2", in, out)
|
||||
}
|
||||
|
||||
func (c *bundleClient) BundleList(ctx context.Context, in *BundleListRequest, opts ...grpc_go.CallOption) (*BundleListResponse, common.ErrorWithAttachment) {
|
||||
out := new(BundleListResponse)
|
||||
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||
@ -206,36 +162,6 @@ func (c *bundleClient) ValueAddBundleDetail(ctx context.Context, in *ValueAddBun
|
||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/ValueAddBundleDetail", in, out)
|
||||
}
|
||||
|
||||
func (c *bundleClient) SaveValueAddService(ctx context.Context, in *ValueAddServiceLang, opts ...grpc_go.CallOption) (*SaveResponse, common.ErrorWithAttachment) {
|
||||
out := new(SaveResponse)
|
||||
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/SaveValueAddService", in, out)
|
||||
}
|
||||
|
||||
func (c *bundleClient) ValueAddServiceList(ctx context.Context, in *ValueAddServiceListRequest, opts ...grpc_go.CallOption) (*ValueAddServiceListResponse, common.ErrorWithAttachment) {
|
||||
out := new(ValueAddServiceListResponse)
|
||||
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/ValueAddServiceList", in, out)
|
||||
}
|
||||
|
||||
func (c *bundleClient) ValueAddServiceDetail(ctx context.Context, in *ValueAddServiceDetailRequest, opts ...grpc_go.CallOption) (*ValueAddServiceDetailResponse, common.ErrorWithAttachment) {
|
||||
out := new(ValueAddServiceDetailResponse)
|
||||
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/ValueAddServiceDetail", in, out)
|
||||
}
|
||||
|
||||
func (c *bundleClient) BundleExtend(ctx context.Context, in *BundleExtendRequest, opts ...grpc_go.CallOption) (*BundleExtendResponse, common.ErrorWithAttachment) {
|
||||
out := new(BundleExtendResponse)
|
||||
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/BundleExtend", in, out)
|
||||
}
|
||||
|
||||
func (c *bundleClient) BundleExtendRecordsList(ctx context.Context, in *BundleExtendRecordsListRequest, opts ...grpc_go.CallOption) (*BundleExtendRecordsListResponse, common.ErrorWithAttachment) {
|
||||
out := new(BundleExtendRecordsListResponse)
|
||||
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/BundleExtendRecordsList", in, out)
|
||||
}
|
||||
|
||||
// BundleServer is the server API for Bundle service.
|
||||
// All implementations must embed UnimplementedBundleServer
|
||||
// for forward compatibility
|
||||
@ -243,10 +169,6 @@ type BundleServer interface {
|
||||
CreateBundle(context.Context, *BundleProfile) (*CommonResponse, error)
|
||||
UpdateBundle(context.Context, *BundleProfile) (*CommonResponse, error)
|
||||
DeleteBundle(context.Context, *DelBundleRequest) (*CommonResponse, error)
|
||||
HandShelf(context.Context, *HandShelfRequest) (*CommonResponse, error)
|
||||
SaveBundle(context.Context, *BundleProfile) (*SaveResponse, error)
|
||||
BundleListV2(context.Context, *BundleListRequest) (*BundleListResponse, error)
|
||||
BundleDetailV2(context.Context, *BundleDetailRequest) (*BundleDetailResponseV2, error)
|
||||
BundleList(context.Context, *BundleListRequest) (*BundleListResponse, error)
|
||||
BundleDetail(context.Context, *BundleDetailRequest) (*BundleDetailResponse, error)
|
||||
CreateOrderRecord(context.Context, *OrderRecord) (*CommonResponse, error)
|
||||
@ -259,13 +181,6 @@ type BundleServer interface {
|
||||
CreateValueAddBundle(context.Context, *CreateValueAddBundleRequest) (*CreateValueAddBundleResponse, error)
|
||||
ValueAddBundleList(context.Context, *ValueAddBundleListRequest) (*ValueAddBundleListResponse, error)
|
||||
ValueAddBundleDetail(context.Context, *ValueAddBundleDetailRequest) (*ValueAddBundleDetailResponse, error)
|
||||
//新增值服务
|
||||
SaveValueAddService(context.Context, *ValueAddServiceLang) (*SaveResponse, error)
|
||||
ValueAddServiceList(context.Context, *ValueAddServiceListRequest) (*ValueAddServiceListResponse, error)
|
||||
ValueAddServiceDetail(context.Context, *ValueAddServiceDetailRequest) (*ValueAddServiceDetailResponse, error)
|
||||
// 余量管理
|
||||
BundleExtend(context.Context, *BundleExtendRequest) (*BundleExtendResponse, error)
|
||||
BundleExtendRecordsList(context.Context, *BundleExtendRecordsListRequest) (*BundleExtendRecordsListResponse, error)
|
||||
mustEmbedUnimplementedBundleServer()
|
||||
}
|
||||
|
||||
@ -283,18 +198,6 @@ func (UnimplementedBundleServer) UpdateBundle(context.Context, *BundleProfile) (
|
||||
func (UnimplementedBundleServer) DeleteBundle(context.Context, *DelBundleRequest) (*CommonResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method DeleteBundle not implemented")
|
||||
}
|
||||
func (UnimplementedBundleServer) HandShelf(context.Context, *HandShelfRequest) (*CommonResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method HandShelf not implemented")
|
||||
}
|
||||
func (UnimplementedBundleServer) SaveBundle(context.Context, *BundleProfile) (*SaveResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method SaveBundle not implemented")
|
||||
}
|
||||
func (UnimplementedBundleServer) BundleListV2(context.Context, *BundleListRequest) (*BundleListResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method BundleListV2 not implemented")
|
||||
}
|
||||
func (UnimplementedBundleServer) BundleDetailV2(context.Context, *BundleDetailRequest) (*BundleDetailResponseV2, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method BundleDetailV2 not implemented")
|
||||
}
|
||||
func (UnimplementedBundleServer) BundleList(context.Context, *BundleListRequest) (*BundleListResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method BundleList not implemented")
|
||||
}
|
||||
@ -328,21 +231,6 @@ func (UnimplementedBundleServer) ValueAddBundleList(context.Context, *ValueAddBu
|
||||
func (UnimplementedBundleServer) ValueAddBundleDetail(context.Context, *ValueAddBundleDetailRequest) (*ValueAddBundleDetailResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method ValueAddBundleDetail not implemented")
|
||||
}
|
||||
func (UnimplementedBundleServer) SaveValueAddService(context.Context, *ValueAddServiceLang) (*SaveResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method SaveValueAddService not implemented")
|
||||
}
|
||||
func (UnimplementedBundleServer) ValueAddServiceList(context.Context, *ValueAddServiceListRequest) (*ValueAddServiceListResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method ValueAddServiceList not implemented")
|
||||
}
|
||||
func (UnimplementedBundleServer) ValueAddServiceDetail(context.Context, *ValueAddServiceDetailRequest) (*ValueAddServiceDetailResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method ValueAddServiceDetail not implemented")
|
||||
}
|
||||
func (UnimplementedBundleServer) BundleExtend(context.Context, *BundleExtendRequest) (*BundleExtendResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method BundleExtend not implemented")
|
||||
}
|
||||
func (UnimplementedBundleServer) BundleExtendRecordsList(context.Context, *BundleExtendRecordsListRequest) (*BundleExtendRecordsListResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method BundleExtendRecordsList not implemented")
|
||||
}
|
||||
func (s *UnimplementedBundleServer) XXX_SetProxyImpl(impl protocol.Invoker) {
|
||||
s.proxyImpl = impl
|
||||
}
|
||||
@ -458,122 +346,6 @@ func _Bundle_DeleteBundle_Handler(srv interface{}, ctx context.Context, dec func
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Bundle_HandShelf_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(HandShelfRequest)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
base := srv.(dubbo3.Dubbo3GrpcService)
|
||||
args := []interface{}{}
|
||||
args = append(args, in)
|
||||
md, _ := metadata.FromIncomingContext(ctx)
|
||||
invAttachment := make(map[string]interface{}, len(md))
|
||||
for k, v := range md {
|
||||
invAttachment[k] = v
|
||||
}
|
||||
invo := invocation.NewRPCInvocation("HandShelf", args, invAttachment)
|
||||
if interceptor == nil {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
info := &grpc_go.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Bundle_SaveBundle_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(BundleProfile)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
base := srv.(dubbo3.Dubbo3GrpcService)
|
||||
args := []interface{}{}
|
||||
args = append(args, in)
|
||||
md, _ := metadata.FromIncomingContext(ctx)
|
||||
invAttachment := make(map[string]interface{}, len(md))
|
||||
for k, v := range md {
|
||||
invAttachment[k] = v
|
||||
}
|
||||
invo := invocation.NewRPCInvocation("SaveBundle", args, invAttachment)
|
||||
if interceptor == nil {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
info := &grpc_go.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Bundle_BundleListV2_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(BundleListRequest)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
base := srv.(dubbo3.Dubbo3GrpcService)
|
||||
args := []interface{}{}
|
||||
args = append(args, in)
|
||||
md, _ := metadata.FromIncomingContext(ctx)
|
||||
invAttachment := make(map[string]interface{}, len(md))
|
||||
for k, v := range md {
|
||||
invAttachment[k] = v
|
||||
}
|
||||
invo := invocation.NewRPCInvocation("BundleListV2", args, invAttachment)
|
||||
if interceptor == nil {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
info := &grpc_go.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Bundle_BundleDetailV2_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(BundleDetailRequest)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
base := srv.(dubbo3.Dubbo3GrpcService)
|
||||
args := []interface{}{}
|
||||
args = append(args, in)
|
||||
md, _ := metadata.FromIncomingContext(ctx)
|
||||
invAttachment := make(map[string]interface{}, len(md))
|
||||
for k, v := range md {
|
||||
invAttachment[k] = v
|
||||
}
|
||||
invo := invocation.NewRPCInvocation("BundleDetailV2", args, invAttachment)
|
||||
if interceptor == nil {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
info := &grpc_go.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Bundle_BundleList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(BundleListRequest)
|
||||
if err := dec(in); err != nil {
|
||||
@ -893,151 +665,6 @@ func _Bundle_ValueAddBundleDetail_Handler(srv interface{}, ctx context.Context,
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Bundle_SaveValueAddService_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(ValueAddServiceLang)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
base := srv.(dubbo3.Dubbo3GrpcService)
|
||||
args := []interface{}{}
|
||||
args = append(args, in)
|
||||
md, _ := metadata.FromIncomingContext(ctx)
|
||||
invAttachment := make(map[string]interface{}, len(md))
|
||||
for k, v := range md {
|
||||
invAttachment[k] = v
|
||||
}
|
||||
invo := invocation.NewRPCInvocation("SaveValueAddService", args, invAttachment)
|
||||
if interceptor == nil {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
info := &grpc_go.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Bundle_ValueAddServiceList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(ValueAddServiceListRequest)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
base := srv.(dubbo3.Dubbo3GrpcService)
|
||||
args := []interface{}{}
|
||||
args = append(args, in)
|
||||
md, _ := metadata.FromIncomingContext(ctx)
|
||||
invAttachment := make(map[string]interface{}, len(md))
|
||||
for k, v := range md {
|
||||
invAttachment[k] = v
|
||||
}
|
||||
invo := invocation.NewRPCInvocation("ValueAddServiceList", args, invAttachment)
|
||||
if interceptor == nil {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
info := &grpc_go.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Bundle_ValueAddServiceDetail_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(ValueAddServiceDetailRequest)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
base := srv.(dubbo3.Dubbo3GrpcService)
|
||||
args := []interface{}{}
|
||||
args = append(args, in)
|
||||
md, _ := metadata.FromIncomingContext(ctx)
|
||||
invAttachment := make(map[string]interface{}, len(md))
|
||||
for k, v := range md {
|
||||
invAttachment[k] = v
|
||||
}
|
||||
invo := invocation.NewRPCInvocation("ValueAddServiceDetail", args, invAttachment)
|
||||
if interceptor == nil {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
info := &grpc_go.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Bundle_BundleExtend_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(BundleExtendRequest)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
base := srv.(dubbo3.Dubbo3GrpcService)
|
||||
args := []interface{}{}
|
||||
args = append(args, in)
|
||||
md, _ := metadata.FromIncomingContext(ctx)
|
||||
invAttachment := make(map[string]interface{}, len(md))
|
||||
for k, v := range md {
|
||||
invAttachment[k] = v
|
||||
}
|
||||
invo := invocation.NewRPCInvocation("BundleExtend", args, invAttachment)
|
||||
if interceptor == nil {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
info := &grpc_go.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Bundle_BundleExtendRecordsList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(BundleExtendRecordsListRequest)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
base := srv.(dubbo3.Dubbo3GrpcService)
|
||||
args := []interface{}{}
|
||||
args = append(args, in)
|
||||
md, _ := metadata.FromIncomingContext(ctx)
|
||||
invAttachment := make(map[string]interface{}, len(md))
|
||||
for k, v := range md {
|
||||
invAttachment[k] = v
|
||||
}
|
||||
invo := invocation.NewRPCInvocation("BundleExtendRecordsList", args, invAttachment)
|
||||
if interceptor == nil {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
info := &grpc_go.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
// Bundle_ServiceDesc is the grpc_go.ServiceDesc for Bundle service.
|
||||
// It's only intended for direct use with grpc_go.RegisterService,
|
||||
// and not to be introspected or modified (even as a copy)
|
||||
@ -1057,22 +684,6 @@ var Bundle_ServiceDesc = grpc_go.ServiceDesc{
|
||||
MethodName: "DeleteBundle",
|
||||
Handler: _Bundle_DeleteBundle_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "HandShelf",
|
||||
Handler: _Bundle_HandShelf_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "SaveBundle",
|
||||
Handler: _Bundle_SaveBundle_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "BundleListV2",
|
||||
Handler: _Bundle_BundleListV2_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "BundleDetailV2",
|
||||
Handler: _Bundle_BundleDetailV2_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "BundleList",
|
||||
Handler: _Bundle_BundleList_Handler,
|
||||
@ -1117,26 +728,6 @@ var Bundle_ServiceDesc = grpc_go.ServiceDesc{
|
||||
MethodName: "ValueAddBundleDetail",
|
||||
Handler: _Bundle_ValueAddBundleDetail_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "SaveValueAddService",
|
||||
Handler: _Bundle_SaveValueAddService_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "ValueAddServiceList",
|
||||
Handler: _Bundle_ValueAddServiceList_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "ValueAddServiceDetail",
|
||||
Handler: _Bundle_ValueAddServiceDetail_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "BundleExtend",
|
||||
Handler: _Bundle_BundleExtend_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "BundleExtendRecordsList",
|
||||
Handler: _Bundle_BundleExtendRecordsList_Handler,
|
||||
},
|
||||
},
|
||||
Streams: []grpc_go.StreamDesc{},
|
||||
Metadata: "pb/bundle.proto",
|
||||
|
@ -1,11 +1,10 @@
|
||||
package db
|
||||
|
||||
import (
|
||||
bundleConfig "micro-bundle/config"
|
||||
"strings"
|
||||
|
||||
"github.com/google/wire"
|
||||
"gorm.io/gorm"
|
||||
bundleConfig "micro-bundle/config"
|
||||
"strings"
|
||||
)
|
||||
|
||||
var Provider = wire.NewSet(NewBundleDB)
|
||||
|
@ -45,14 +45,8 @@ func loadMysqlConn(conn string) *gorm.DB {
|
||||
&model.BundleOrderRecords{},
|
||||
&model.ValueAddBundleProfile{},
|
||||
//&model.ValueAddBundleRecord{}
|
||||
&model.BundleProfileLang{},
|
||||
&model.ValueAddService{},
|
||||
&model.ValueAddServiceLang{},
|
||||
&model.BundleToValueAddService{},
|
||||
&model.BundleProfileHistory{},
|
||||
&model.ValueAddServiceHistory{},
|
||||
)
|
||||
|
||||
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
|
@ -10,13 +10,6 @@ const (
|
||||
Success = "操作成功"
|
||||
Failed = "操作失败"
|
||||
)
|
||||
const (
|
||||
ZH_CN = "zh-CN" //简体中文
|
||||
ZH_TW = "zh-TW" //繁体中文
|
||||
EN = "EN" //英文
|
||||
DE_DE = "de-DE" //德语
|
||||
JS_JP = "js-JP" //日语
|
||||
)
|
||||
|
||||
const (
|
||||
Http = 200
|
||||
@ -79,20 +72,3 @@ const (
|
||||
ErrorTransaction = "事务失败"
|
||||
ErrorCommitTransaction = "提交事务失败"
|
||||
)
|
||||
|
||||
// 增值服务信息
|
||||
const (
|
||||
ErrorCreateValueAddServiceInfo = "创建增值服务信息失败"
|
||||
SuccessCreateValueAddServiceInfo = "创建增值服务信息成功"
|
||||
ErrorUpdateValueAddServiceInfo = "更新增值服务信息失败"
|
||||
SuccessUpdateValueAddServiceInfo = "更新增值服务信息成功"
|
||||
ErrorValueAddServiceList = "获取增值服务列表失败"
|
||||
SuccessValueAddServiceList = "获取增值服务列表成功"
|
||||
ErrorValueAddServiceInfo = "获取增值服务详情失败"
|
||||
SuccessValueAddServiceInfo = "获取增值服务详情成功"
|
||||
//校验
|
||||
ErrorValueServiceNameEmpty = "增值服务名称不能为空"
|
||||
ErrorValueServiceTypeEmpty = "增值服务类型不能为空"
|
||||
ErrorValueServicePriceModeEmpty = "增值服务价格模式不能为空"
|
||||
ErrorValueServiceOptionsEmpty = "增值服务选项不能为空"
|
||||
)
|
||||
|
Loading…
Reference in New Issue
Block a user