Create & Init Project...

This commit is contained in:
2019-04-22 18:49:16 +08:00
commit fc4fa37393
25440 changed files with 4054998 additions and 0 deletions

View File

@ -0,0 +1,52 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
"go_test",
)
go_library(
name = "go_default_library",
srcs = ["server.go"],
importpath = "go-common/app/service/openplatform/ticket-sales/server/grpc",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/service/openplatform/ticket-sales/api/grpc/v1:go_default_library",
"//app/service/openplatform/ticket-sales/service:go_default_library",
"//app/service/openplatform/ticket-sales/service/mis:go_default_library",
"//library/net/rpc/warden:go_default_library",
"@org_golang_google_grpc//:go_default_library",
],
)
filegroup(
name = "package-srcs",
srcs = glob(["**"]),
tags = ["automanaged"],
visibility = ["//visibility:private"],
)
filegroup(
name = "all-srcs",
srcs = [":package-srcs"],
tags = ["automanaged"],
visibility = ["//visibility:public"],
)
go_test(
name = "go_default_test",
srcs = ["server_test.go"],
embed = [":go_default_library"],
rundir = ".",
tags = ["automanaged"],
deps = [
"//app/service/openplatform/ticket-sales/api/grpc/type:go_default_library",
"//app/service/openplatform/ticket-sales/api/grpc/v1:go_default_library",
"//app/service/openplatform/ticket-sales/conf:go_default_library",
"//app/service/openplatform/ticket-sales/service:go_default_library",
"//library/conf/paladin:go_default_library",
"//vendor/github.com/smartystreets/goconvey/convey:go_default_library",
],
)

View File

@ -0,0 +1,34 @@
package grpc
import (
"context"
rpc "go-common/app/service/openplatform/ticket-sales/api/grpc/v1"
"go-common/app/service/openplatform/ticket-sales/service"
"go-common/library/net/rpc/warden"
"go-common/app/service/openplatform/ticket-sales/service/mis"
"google.golang.org/grpc"
)
//New 生成rpc服务
func New(srv *service.Service, misSrv *mis.Mis) *warden.Server {
s := warden.NewServer(nil)
s.Use(middleware())
rpc.RegisterTradeServer(s.Server(), srv)
rpc.RegisterPromotionServer(s.Server(), srv)
rpc.RegisterPromotionMisServer(s.Server(), misSrv)
rpc.RegisterTicketServer(s.Server(), srv)
_, err := s.Start()
if err != nil {
panic("run server failed!" + err.Error())
}
return s
}
func middleware() grpc.UnaryServerInterceptor {
return func(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (resp interface{}, err error) {
//call chain
resp, err = handler(ctx, req)
return
}
}

View File

@ -0,0 +1,56 @@
package grpc
import (
"context"
"flag"
"fmt"
"path/filepath"
"testing"
sales "go-common/app/service/openplatform/ticket-sales/api/grpc/v1"
"go-common/app/service/openplatform/ticket-sales/conf"
"go-common/app/service/openplatform/ticket-sales/service"
"go-common/app/service/openplatform/ticket-sales/api/grpc/type"
"go-common/library/conf/paladin"
. "github.com/smartystreets/goconvey/convey"
)
var (
s *service.Service
)
func init() {
dir, _ := filepath.Abs("../../cmd/ticket-sales.toml")
flag.Set("conf", dir)
if err := paladin.Init(); err != nil {
panic(err)
}
if err := paladin.Watch("ticket-sales.toml", conf.Conf); err != nil {
panic(err)
}
s = service.New(conf.Conf)
}
//Test_Info
func TestInfo(t *testing.T) {
Convey("get data", t, func() {
data := &sales.UpBuyerRequest{}
data.OrderID = 10000012002571
data.Buyers = &_type.OrderBuyer{
ID: 1,
Name: "wlt",
Tel: "1388888888",
PersonalID: "360822199207227275",
}
res, err := s.UpdateBuyer(context.TODO(), data)
fmt.Println(res)
So(err, ShouldBeNil)
So(res, ShouldNotBeNil)
So(res, ShouldNotBeEmpty)
})
}

View File

@ -0,0 +1,60 @@
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
"go_test",
)
go_library(
name = "go_default_library",
srcs = [
"distrib.go",
"http.go",
"promotion.go",
"promotion_group.go",
"promotion_order.go",
"settle.go",
],
importpath = "go-common/app/service/openplatform/ticket-sales/server/http",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/service/openplatform/ticket-sales/api/grpc/v1:go_default_library",
"//app/service/openplatform/ticket-sales/conf:go_default_library",
"//app/service/openplatform/ticket-sales/model:go_default_library",
"//app/service/openplatform/ticket-sales/service:go_default_library",
"//library/ecode:go_default_library",
"//library/log:go_default_library",
"//library/net/http/blademaster:go_default_library",
"//library/net/http/blademaster/binding:go_default_library",
"//library/net/http/blademaster/render:go_default_library",
"//vendor/github.com/pkg/errors:go_default_library",
],
)
go_test(
name = "go_default_test",
srcs = ["http_test.go"],
embed = [":go_default_library"],
rundir = ".",
tags = ["automanaged"],
deps = [
"//app/service/openplatform/ticket-sales/conf:go_default_library",
"//app/service/openplatform/ticket-sales/service:go_default_library",
"//library/conf/paladin:go_default_library",
"//library/net/http/blademaster:go_default_library",
],
)
filegroup(
name = "package-srcs",
srcs = glob(["**"]),
tags = ["automanaged"],
visibility = ["//visibility:private"],
)
filegroup(
name = "all-srcs",
srcs = [":package-srcs"],
tags = ["automanaged"],
visibility = ["//visibility:public"],
)

View File

@ -0,0 +1,49 @@
package http
import (
"github.com/pkg/errors"
"go-common/app/service/openplatform/ticket-sales/model"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
)
func syncOrder(c *bm.Context) {
orderStatusMap := make(map[int64]string)
orderStatusMap[model.OrderPaid] = "已付款"
orderStatusMap[model.OrderRefunded] = "已退款"
arg := new(model.DistOrderArg)
if err := c.Bind(arg); err != nil {
errors.Wrap(err, "参数验证失败")
return
}
_, ok := orderStatusMap[arg.Stat]
if !ok {
c.JSON("stat", ecode.TicketParamInvalid)
return
}
if arg.Serial == "" {
c.JSON("serial_num is empty", ecode.TicketParamInvalid)
return
}
switch arg.Stat {
case model.OrderPaid:
arg.Stat = model.DistOrderNormal
if arg.RefStat == model.OrderRefundPartly {
arg.Stat = model.DistOrderRefunded
}
case model.OrderRefunded:
arg.Stat = model.DistOrderRefunded
}
c.JSON(svc.SyncOrder(c, arg))
}
func getOrder(c *bm.Context) {
arg := new(model.DistOrderGetArg)
if err := c.Bind(arg); err != nil {
errors.Wrap(err, "参数验证失败")
return
}
c.JSON(svc.GetOrder(c, arg.Oid))
}

View File

@ -0,0 +1,71 @@
package http
import (
"net/http"
"go-common/app/service/openplatform/ticket-sales/conf"
"go-common/app/service/openplatform/ticket-sales/service"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
)
var (
svc *service.Service
)
// Init init ticket service.
func Init(c *conf.Config, s *service.Service) {
svc = s
// init router
engine := bm.DefaultServer(c.BM)
initRouter(engine)
outerRouter(engine)
if err := engine.Start(); err != nil {
log.Error("engine.Start error(%v)", err)
panic(err)
}
}
// initRouter init inner router.
func initRouter(e *bm.Engine) {
e.Ping(ping)
// 等依赖方修改后,再删除
group := e.Group("/x/internal/ticket/sales")
{
group.POST("/distrib/syncorder", syncOrder)
group.GET("/distrib/getorder", getOrder)
}
//ticket
group = e.Group("/openplatform/internal/ticket/sales")
{
group.POST("/distrib/syncorder", syncOrder)
group.GET("/distrib/getorder", getOrder)
group.POST("/promo/order/check", checkCreatePromoOrder)
group.POST("/promo/order/create", createPromoOrder)
group.GET("/promo/order/pay", payNotify)
group.GET("/promo/order/cancel", cancelOrder)
group.GET("/promo/order/check/issue", checkIssue)
group.POST("/promo/order/finish/issue", finishIssue)
group.GET("/promo/get", getPromo)
group.POST("promo/create", createPromo)
group.POST("promo/operate", operatePromo)
group.POST("promo/edit", editPromo)
group.POST("/settle/compare", settleCompare)
group.POST("/settle/repush", settleRepush)
}
}
// outerRouter init inner router.
func outerRouter(e *bm.Engine) {
}
// ping check server ok.
func ping(c *bm.Context) {
if err := svc.Ping(c); err != nil {
log.Error("ticket http service ping error(%v)", err)
c.AbortWithStatus(http.StatusServiceUnavailable)
}
}

View File

@ -0,0 +1,59 @@
package http
import (
"context"
"encoding/json"
"fmt"
"net/http"
"net/url"
"sync"
"testing"
"go-common/app/service/openplatform/ticket-sales/conf"
"go-common/app/service/openplatform/ticket-sales/service"
"go-common/library/conf/paladin"
httpx "go-common/library/net/http/blademaster"
)
var (
once sync.Once
client *httpx.Client
syncOrderURL string
)
func startHTTP() {
if err := paladin.Init(); err != nil {
panic(err)
}
if err := paladin.Watch("ticket-sales.toml", conf.Conf); err != nil {
panic(err)
}
client = httpx.NewClient(conf.Conf.HTTPClient.Read)
Init(conf.Conf, service.New(conf.Conf))
}
func TestGetOrder(t *testing.T) {
syncOrderURL = conf.Conf.UT.DistPrefix + "/distrib/getorder"
fmt.Println(syncOrderURL)
once.Do(startHTTP)
params := url.Values{}
params.Set("oid", "100000004421700")
var err error
var req *http.Request
if req, err = client.NewRequest("GET", syncOrderURL, "127.0.0.1", params); err != nil {
t.Errorf("http.NewRequest(GET, %s) error(%v)", syncOrderURL, err)
t.FailNow()
}
reqURI := req.URL.String()
t.Logf("req uri: %s\n", reqURI)
var res struct {
Code int `json:"code"`
Data string `json:"data"`
}
if err = client.Do(context.TODO(), req, &res); err != nil {
t.Errorf("client.Do() error(%v)", err)
t.FailNow()
}
str, _ := json.Marshal(res)
t.Logf("res: %+v", string(str))
}

View File

@ -0,0 +1,46 @@
package http
import (
rpcV1 "go-common/app/service/openplatform/ticket-sales/api/grpc/v1"
bm "go-common/library/net/http/blademaster"
)
func getPromo(c *bm.Context) {
arg := new(rpcV1.PromoID)
if err := c.Bind(arg); err != nil {
return
}
c.JSON(svc.GetPromo(c, arg))
}
func createPromo(c *bm.Context) {
arg := new(rpcV1.CreatePromoRequest)
if err := c.Bind(arg); err != nil {
return
}
c.JSON(svc.CreatePromo(c, arg))
}
func operatePromo(c *bm.Context) {
arg := new(rpcV1.OperatePromoRequest)
if err := c.Bind(arg); err != nil {
return
}
c.JSON(svc.OperatePromo(c, arg))
}
func editPromo(c *bm.Context) {
arg := new(rpcV1.EditPromoRequest)
if err := c.Bind(arg); err != nil {
return
}
c.JSON(svc.EditPromo(c, arg))
}

View File

@ -0,0 +1 @@
package http

View File

@ -0,0 +1,66 @@
package http
import (
rpcV1 "go-common/app/service/openplatform/ticket-sales/api/grpc/v1"
bm "go-common/library/net/http/blademaster"
)
func checkCreatePromoOrder(c *bm.Context) {
arg := new(rpcV1.CheckCreatePromoOrderRequest)
if err := c.Bind(arg); err != nil {
return
}
c.JSON(svc.CheckCreateStatus(c, arg))
}
func createPromoOrder(c *bm.Context) {
arg := new(rpcV1.CreatePromoOrderRequest)
if err := c.Bind(arg); err != nil {
return
}
c.JSON(svc.CreatePromoOrder(c, arg))
}
func payNotify(c *bm.Context) {
arg := new(rpcV1.OrderID)
if err := c.Bind(arg); err != nil {
return
}
c.JSON(svc.PromoPayNotify(c, arg))
}
func cancelOrder(c *bm.Context) {
arg := new(rpcV1.OrderID)
if err := c.Bind(arg); err != nil {
return
}
c.JSON(svc.CancelOrder(c, arg))
}
func checkIssue(c *bm.Context) {
arg := new(rpcV1.OrderID)
if err := c.Bind(arg); err != nil {
return
}
c.JSON(svc.CheckIssue(c, arg))
}
func finishIssue(c *bm.Context) {
arg := new(rpcV1.FinishIssueRequest)
if err := c.Bind(arg); err != nil {
return
}
c.JSON(svc.FinishIssue(c, arg))
}

View File

@ -0,0 +1,59 @@
package http
import (
"encoding/json"
"go-common/app/service/openplatform/ticket-sales/model"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/http/blademaster/render"
"net/http"
"go-common/library/net/http/blademaster/binding"
)
func settleCompare(c *bm.Context) {
req := &model.GetSettleOrdersRequest{}
err := json.NewDecoder(c.Request.Body).Decode(&req)
if err != nil {
c.Status(http.StatusBadRequest)
return
}
if err = binding.Form.Bind(c.Request, req); err != nil {
c.Render(http.StatusOK, render.MapJSON{
"errno": 1,
"msg": err.Error(),
})
return
}
data, err := svc.GetSettleOrders(c, req.Date, req.Ref == 1, req.ExtParams, req.PageSize)
if err != nil {
c.Render(http.StatusOK, render.MapJSON{
"errno": 1,
"msg": err.Error(),
})
return
}
c.Render(http.StatusOK, render.MapJSON{
"errno": 0,
"data": data,
})
}
func settleRepush(c *bm.Context) {
var req interface{}
err := json.NewDecoder(c.Request.Body).Decode(&req)
if err != nil {
c.Status(http.StatusBadRequest)
return
}
err = svc.RepushSettleOrders(c, req)
if err != nil {
c.Render(http.StatusOK, render.MapJSON{
"errno": 1,
"msg": err.Error(),
})
}
c.Render(http.StatusOK, render.MapJSON{
"errno": 0,
"msg": "将在5分钟内重推",
})
}