Browse Source

feat:运营商数据定制及分析

wangchuanjin 1 year ago
parent
commit
f652345411
7 changed files with 103 additions and 42 deletions
  1. 52 0
      entity/entity.go
  2. 1 0
      go.mod
  3. 2 0
      go.sum
  4. 1 7
      rpc/entmanageapplication.go
  5. 7 18
      rpc/etc/entmanageapplication.yaml
  6. 6 5
      rpc/internal/config/config.go
  7. 34 12
      service/service.go

+ 52 - 0
entity/entity.go

@@ -1,12 +1,17 @@
 package entity
 
 import (
+	"log"
+
 	"app.yhyue.com/moapp/jyResourcesCenter/rpc/resourcesCenterclient"
 	"app.yhyue.com/moapp/jybase/mongodb"
 	"app.yhyue.com/moapp/jybase/mysql"
 	"bp.jydev.jianyu360.cn/BaseService/powerCheckCenter/rpc/powercheck"
+	"bp.jydev.jianyu360.cn/BaseService/resourceCenter/rpc/resource"
 	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/usercenter"
+	"github.com/zeromicro/go-zero/core/discov"
 	"github.com/zeromicro/go-zero/core/logx"
+	"github.com/zeromicro/go-zero/zrpc"
 )
 
 const (
@@ -62,6 +67,7 @@ var (
 	UserCenterRpc       usercenter.UserCenter
 	PowerCheckCenterRpc powercheck.PowerCheck
 	ResourceCenterRpc   resourcesCenterclient.ResourcesCenter
+	ResourceRpc         resource.Resource
 )
 
 func InitMysql(n *MysqlDb) {
@@ -80,3 +86,49 @@ func InitMysql(n *MysqlDb) {
 func InitMongo(addr, db string, size int) {
 	Mgo = mongodb.NewMgo(addr, db, size)
 }
+
+func InitRpc(hosts []string, userCenterRpc, powerCheckRpc, resourceCenterRpc, resourceRpc string) {
+	uc, err := zrpc.NewClient(zrpc.RpcClientConf{
+		Etcd: discov.EtcdConf{
+			Hosts: hosts,
+			Key:   userCenterRpc,
+		},
+	})
+	if err != nil {
+		log.Fatalln(err)
+	}
+	UserCenterRpc = usercenter.NewUserCenter(uc)
+	//
+	pc, err := zrpc.NewClient(zrpc.RpcClientConf{
+		Etcd: discov.EtcdConf{
+			Hosts: hosts,
+			Key:   powerCheckRpc,
+		},
+	})
+	if err != nil {
+		log.Fatalln(err)
+	}
+	PowerCheckCenterRpc = powercheck.NewPowerCheck(pc)
+	//
+	rc, err := zrpc.NewClient(zrpc.RpcClientConf{
+		Etcd: discov.EtcdConf{
+			Hosts: hosts,
+			Key:   resourceCenterRpc,
+		},
+	})
+	if err != nil {
+		log.Fatalln(err)
+	}
+	ResourceCenterRpc = resourcesCenterclient.NewResourcesCenter(rc)
+	//
+	r, err := zrpc.NewClient(zrpc.RpcClientConf{
+		Etcd: discov.EtcdConf{
+			Hosts: hosts,
+			Key:   resourceRpc,
+		},
+	})
+	if err != nil {
+		log.Fatalln(err)
+	}
+	ResourceRpc = resource.NewResource(r)
+}

+ 1 - 0
go.mod

@@ -7,6 +7,7 @@ require (
 	app.yhyue.com/moapp/jybase v0.0.0-20230117032034-ad7c00ffe11a
 	bp.jydev.jianyu360.cn/BaseService/gateway v1.3.4
 	bp.jydev.jianyu360.cn/BaseService/powerCheckCenter v0.0.0-20230221025500-c75817e849ea
+	bp.jydev.jianyu360.cn/BaseService/resourceCenter v0.0.8
 	bp.jydev.jianyu360.cn/BaseService/userCenter v0.0.0-20230220120914-987d2f396c82
 	github.com/zeromicro/go-zero v1.5.5
 	google.golang.org/grpc v1.57.0

+ 2 - 0
go.sum

@@ -16,6 +16,8 @@ bp.jydev.jianyu360.cn/BaseService/powerCheckCenter v0.0.0-20230221025500-c75817e
 bp.jydev.jianyu360.cn/BaseService/resourceCenter v0.0.0-20220418005748-8ba5d936dd53/go.mod h1:E5lcDI3k4FESLxiAetCfWQTq8qfpy9cv0yN1oKoEO34=
 bp.jydev.jianyu360.cn/BaseService/resourceCenter v0.0.0-20220419023723-0b32d4a41751/go.mod h1:6KL5LMEku83uRbre0W/bj5kXG2I6pJGBFtktmtp51yM=
 bp.jydev.jianyu360.cn/BaseService/resourceCenter v0.0.0-20220420075831-0b59892e9982/go.mod h1:wsHNO91h37H+xE4ZNny0yd7mtpODeDJxbVYhIRMR+qw=
+bp.jydev.jianyu360.cn/BaseService/resourceCenter v0.0.8 h1:14Yxzutsej7LQe3jnN61wuRX9qjAZ4FtdWMA27ewQ3w=
+bp.jydev.jianyu360.cn/BaseService/resourceCenter v0.0.8/go.mod h1:rRiGzKG4F/fmkNxXQCxrkxNWc8yf1SmW8qWCKfGIQSM=
 bp.jydev.jianyu360.cn/BaseService/userCenter v0.0.0-20220418072311-2062bed1e700/go.mod h1:KjcrxTzM96tBc6G4B8tlLBn1lrVy5UJYF8+eTdP4xAE=
 bp.jydev.jianyu360.cn/BaseService/userCenter v0.0.0-20220421015128-4a36f3eac5c5/go.mod h1:GT0QC4aaKDuXxAvaU4G02XjCc31TU1ctqBGqxQYOfC4=
 bp.jydev.jianyu360.cn/BaseService/userCenter v0.0.0-20230220120914-987d2f396c82 h1:Kf1OfnnX9/Oa22JcdZPP5Yhpg4T4jIPuJat3LI7jqUI=

+ 1 - 7
rpc/entmanageapplication.go

@@ -4,7 +4,6 @@
 package main
 
 import (
-	"app.yhyue.com/moapp/jyResourcesCenter/rpc/resourcesCenterclient"
 	"flag"
 	"fmt"
 
@@ -14,8 +13,6 @@ import (
 	"bp.jydev.jianyu360.cn/BaseService/entManageApplication/rpc/internal/server"
 	"bp.jydev.jianyu360.cn/BaseService/entManageApplication/rpc/internal/svc"
 	"bp.jydev.jianyu360.cn/BaseService/entManageApplication/rpc/pb"
-	"bp.jydev.jianyu360.cn/BaseService/powerCheckCenter/rpc/powercheck"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/usercenter"
 	"github.com/zeromicro/go-zero/core/conf"
 	"github.com/zeromicro/go-zero/zrpc"
 	"google.golang.org/grpc"
@@ -25,7 +22,6 @@ var configFile = flag.String("f", "etc/entmanageapplication.yaml", "the config f
 
 func main() {
 	flag.Parse()
-
 	var c config.Config
 	conf.MustLoad(*configFile, &c)
 	ctx := svc.NewServiceContext(c)
@@ -33,9 +29,7 @@ func main() {
 	entity.InitMysql(c.Mysql.JianYu)
 	entity.InitMongo(c.Mongo.Qfw.MongodbAddr, c.Mongo.Qfw.DbName, c.Mongo.Qfw.Size)
 	redis.InitRedisBySize(c.RedisAddrs, 100, 30, 300)
-	entity.UserCenterRpc = usercenter.NewUserCenter(zrpc.MustNewClient(c.UserCenterRpc))
-	entity.PowerCheckCenterRpc = powercheck.NewPowerCheck(zrpc.MustNewClient(c.PowerCheckRpc))
-	entity.ResourceCenterRpc = resourcesCenterclient.NewResourcesCenter(zrpc.MustNewClient(c.ResourceRpc))
+	entity.InitRpc(c.Etcd.Hosts, c.UserCenterRpc, c.PowerCheckRpc, c.ResourceCenterRpc, c.ResourceRpc)
 	s := zrpc.MustNewServer(c.RpcServerConf, func(grpcServer *grpc.Server) {
 		pb.RegisterEntManageApplicationServer(grpcServer, srv)
 	})

+ 7 - 18
rpc/etc/entmanageapplication.yaml

@@ -2,32 +2,21 @@ Name: entmanageapplication.rpc
 ListenOn: 0.0.0.0:9998
 Etcd:
   Hosts:
-  - 192.168.3.149:2379
+  - 192.168.3.206:2379
   Key: entmanageapplication.rpc
 Timeout: 5000
-UserCenterRpc:
-  Etcd:
-    Hosts:
-    - 192.168.3.149:2379
-    Key: usercenter.rpc
-PowerCheckRpc:
-  Etcd:
-    Hosts:
-    - 192.168.3.149:2379
-    Key: powercheck.rpc
-ResourceRpc:
-  Etcd:
-    Hosts:
-      - 192.168.3.149:2379
-    Key: resourcescenter.rpc
+UserCenterRpc: usercenter.rpc
+PowerCheckRpc: powercheck.rpc
+ResourceCenterRpc: resourcescenter.rpc
+ResourceRpc: resource.rpc
 Mode: test
 RedisAddrs: newother=192.168.3.206:1712
 Mysql:
   JianYu:
     DBName: jianyu
-    Address: 192.168.3.11:3366
+    Address: 192.168.3.14:4000
     UserName: root
-    PassWord: Topnet123
+    PassWord: =PDT49#80Z!RVv52_z
     MaxOpenConns: 5
     MaxIdleConns: 5
 Mongo:

+ 6 - 5
rpc/internal/config/config.go

@@ -8,11 +8,12 @@ import (
 
 type Config struct {
 	zrpc.RpcServerConf
-	UserCenterRpc zrpc.RpcClientConf
-	PowerCheckRpc zrpc.RpcClientConf
-	ResourceRpc   zrpc.RpcClientConf
-	Logx          logx.LogConf
-	Mysql         struct {
+	UserCenterRpc     string
+	PowerCheckRpc     string
+	ResourceCenterRpc string
+	ResourceRpc       string
+	Logx              logx.LogConf
+	Mysql             struct {
 		JianYu *entity.MysqlDb
 	}
 	Mongo struct {

+ 34 - 12
service/service.go

@@ -1,7 +1,6 @@
 package service
 
 import (
-	"app.yhyue.com/moapp/jyResourcesCenter/rpc/resourcesCenterclient"
 	"encoding/json"
 	"fmt"
 	"log"
@@ -9,6 +8,10 @@ import (
 	"strings"
 	"time"
 
+	"bp.jydev.jianyu360.cn/BaseService/entManageApplication/entity"
+
+	"app.yhyue.com/moapp/jyResourcesCenter/rpc/resourcesCenterclient"
+
 	"context"
 
 	. "app.yhyue.com/moapp/jybase/date"
@@ -16,6 +19,7 @@ import (
 	. "bp.jydev.jianyu360.cn/BaseService/entManageApplication/entity"
 	"bp.jydev.jianyu360.cn/BaseService/entManageApplication/rpc/entmanageapplication"
 	"bp.jydev.jianyu360.cn/BaseService/powerCheckCenter/rpc/powercheck"
+	"bp.jydev.jianyu360.cn/BaseService/resourceCenter/rpc/pb"
 	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/usercenter"
 
 	// "github.com/zeromicro/go-zero/core/logx"
@@ -190,19 +194,20 @@ func BuyProductList(this *entmanageapplication.BuyProductListReq) *entmanageappl
 }
 
 func addPower(waitEmpowerId int64, entUserId int, entId int64) {
+	identity := getPositionId(entUserId)
+	ResourcePowerHandle(identity, waitEmpowerId, 1)
 	data := JyMysql.FindOne(EntnicheOrder, map[string]interface{}{"wait_empower_id": waitEmpowerId}, "", "")
 	if data != nil && len(*data) > 0 {
 		orderId := common.Int64All((*data)["order_id"])
 		orderData := JyMysql.FindOne(Order, map[string]interface{}{"id": orderId}, "", "")
 		if orderData != nil && len(*orderData) > 0 {
 			productType := common.ObjToString((*orderData)["product_type"])
-			posititonId := getPositionId(entUserId)
 			if productType == "VIP订阅" {
-				log.Println("开通超级订阅", posititonId)
-				setRule(1, int64(entUserId), entId, *orderData, posititonId)
+				log.Println("开通超级订阅", identity.PositionId)
+				setRule(1, int64(entUserId), entId, *orderData, identity.PositionId)
 			} else if productType == "大会员" {
-				log.Println("开通大会员", posititonId)
-				setRule(2, int64(entUserId), entId, *orderData, posititonId)
+				log.Println("开通大会员", identity.PositionId)
+				setRule(2, int64(entUserId), entId, *orderData, identity.PositionId)
 			}
 		}
 	}
@@ -251,6 +256,8 @@ func delPower(id int64) {
 	if data != nil && len(*data) > 0 {
 		waitEmpowerId := common.Int64All((*data)["wait_empower_id"])
 		entUserId := common.IntAll((*data)["ent_user_id"])
+		identity := getPositionId(entUserId)
+		ResourcePowerHandle(identity, waitEmpowerId, -1)
 		JyMysql.UpdateOrDeleteBySql(`update `+EntnicheWaitEmpower+` set use_count = use_count - 1 where id = ? and use_count > 0`, waitEmpowerId)
 		eOData := JyMysql.FindOne(EntnicheOrder, map[string]interface{}{"wait_empower_id": waitEmpowerId}, "", "")
 		if eOData != nil && len(*eOData) > 0 {
@@ -258,7 +265,6 @@ func delPower(id int64) {
 			orderData := JyMysql.FindOne(Order, map[string]interface{}{"id": orderId}, "", "")
 			set := map[string]interface{}{}
 			if orderData != nil && len(*orderData) > 0 {
-				posititonId := getPositionId(entUserId)
 				productType := common.ObjToString((*orderData)["product_type"])
 				entId := common.Int64All((*orderData)["ent_id"])
 				if productType == "VIP订阅" {
@@ -267,7 +273,7 @@ func delPower(id int64) {
 				} else if productType == "大会员" {
 					set["i_member_endtime"] = time.Now().Unix()
 					set["i_member_status"] = 0
-					JyMysql.Update(BigServiceUser, map[string]interface{}{"s_userid": common.InterfaceToStr(posititonId)}, map[string]interface{}{"i_status": -1})
+					JyMysql.Update(BigServiceUser, map[string]interface{}{"s_userid": common.InterfaceToStr(identity.PositionId)}, map[string]interface{}{"i_status": -1})
 				}
 
 				Mgo.Update("ent_user", map[string]interface{}{
@@ -277,7 +283,7 @@ func delPower(id int64) {
 					"$set": set,
 				}, true, false)
 
-				posititonIdStr := strconv.Itoa(int(posititonId))
+				posititonIdStr := strconv.Itoa(int(identity.PositionId))
 				RedisDel(posititonIdStr)
 			}
 		}
@@ -286,13 +292,12 @@ func delPower(id int64) {
 
 // 获取用户信息
 // return 职位id
-func getPositionId(entUserId int) int64 {
+func getPositionId(entUserId int) *usercenter.Identity {
 	ctx, _ := context.WithTimeout(context.Background(), 2*time.Second)
 	res, _ := UserCenterRpc.IdentityByEntUserId(ctx, &usercenter.IdentityReq{
 		Id: int64(entUserId),
 	})
-	log.Println(res)
-	return res.PositionId
+	return res
 }
 
 // 订阅设置
@@ -589,3 +594,20 @@ func delRedisByPowerCheck(positionId string) bool {
 	}
 	return true
 }
+
+//
+func ResourcePowerHandle(identity *usercenter.Identity, waitEmpowerId, t int64) {
+	//如果是运营商数据定制及分析产品,调用资源中台,取消对应菜单权限
+	if JyMysql.CountBySql(`select count(1) as count from `+EntnicheWaitEmpower+` where id=? and product_type='运营商数据定制及分析'`, waitEmpowerId) > 0 {
+		entity.ResourceRpc.PowerHandle(context.Background(), &pb.PowerReq{
+			Appid:        "10000",
+			GoodsCode:    "special_nosale_goods",
+			GoodsSpecId:  31,
+			BuyNum:       1,
+			Type:         t,
+			AccountId:    identity.AccountId,
+			EntAccountId: identity.EntAccountId,
+			EntId:        identity.EntId,
+		})
+	}
+}