WH01243 3 gadi atpakaļ
vecāks
revīzija
cdf769c1c5

+ 11 - 0
entity/user.go

@@ -2,6 +2,7 @@ package entity
 
 import (
 	"github.com/go-xorm/xorm"
+	"strings"
 )
 
 //定义orm引擎
@@ -24,3 +25,13 @@ type Dedup struct {
 		NewCount   int64
 	}
 }
+
+func GetInForComma(data map[string]interface{}) (string, string) {
+	args := []string{}
+	ws := []string{}
+	for key, _ := range data {
+		args = append(args, key)
+		ws = append(ws, "?")
+	}
+	return strings.Join(args, ","), strings.Join(ws, ",")
+}

+ 2 - 2
rpc/etc/resourcescenter.yaml

@@ -11,6 +11,6 @@ FileSystemConf:
       - 127.0.0.1:2379
     Key: resourcescenter.rpc
 CalleeId: resourcescenter.rpc
-
 Node: 1
-DedupUrl: http://192.168.3.204:8888
+DedupUrl: http://192.168.3.206:8888
+ProductStr: "附件下载包,采购单位画像包"

+ 2 - 0
rpc/internal/config/config.go

@@ -9,6 +9,8 @@ type Config struct {
 	CalleeId       string // 服务名字
 	DedupUrl       string
 	FileSystemConf zrpc.RpcClientConf
+	ProductMap     map[string]interface{}
+	ProductStr     string
 }
 
 var ConfigJson Config

+ 2 - 1
rpc/internal/logic/findaccountbalancelogic.go

@@ -1,6 +1,7 @@
 package logic
 
 import (
+	"app.yhyue.com/moapp/jyResourcesCenter/rpc/internal/config"
 	"context"
 	"errors"
 
@@ -27,7 +28,7 @@ func NewFindAccountBalanceLogic(ctx context.Context, svcCtx *svc.ServiceContext)
 func (l *FindAccountBalanceLogic) FindAccountBalance(in *resourcesCenter.ResourcesReq) (*resourcesCenter.AccountBalanceRes, error) {
 	// todo: add your logic here and delete this line
 	if in.AccountId != "" {
-		dataList, err := resourceManageService.FindAccountBalance(in)
+		dataList, err := resourceManageService.FindAccountBalance(in, config.ConfigJson.ProductMap)
 
 		if len(dataList) == 0 && err != nil {
 			return &resourcesCenter.AccountBalanceRes{

+ 2 - 1
rpc/internal/logic/purchaseuserbalancelogic.go

@@ -1,6 +1,7 @@
 package logic
 
 import (
+	"app.yhyue.com/moapp/jyResourcesCenter/rpc/internal/config"
 	"app.yhyue.com/moapp/jyResourcesCenter/service"
 	"context"
 
@@ -52,7 +53,7 @@ func (l *PurchaseUserBalanceLogic) PurchaseUserBalance(in *resourcesCenter.Resou
 		UserType:     in.Model,
 		Remarks:      in.Remarks,
 	}
-	code, msg := balanceService.PurchaseUserBalance(balance, detailed)
+	code, msg := balanceService.PurchaseUserBalance(balance, detailed, config.ConfigJson.ProductMap)
 	return &resourcesCenter.Response{
 		Code:    code,
 		Message: msg,

+ 2 - 1
rpc/internal/logic/updateviptimelogic.go

@@ -1,6 +1,7 @@
 package logic
 
 import (
+	"app.yhyue.com/moapp/jyResourcesCenter/rpc/internal/config"
 	"context"
 
 	"app.yhyue.com/moapp/jyResourcesCenter/rpc/internal/svc"
@@ -26,7 +27,7 @@ func NewUpdateVipTimeLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Upd
 // 超级订阅时间修改
 func (l *UpdateVipTimeLogic) UpdateVipTime(in *resourcesCenter.VipReq) (*resourcesCenter.Response, error) {
 	// todo: add your logic here and delete this line
-	code, msg := balanceService.UpdateVipTime(in)
+	code, msg := balanceService.UpdateVipTime(in, config.ConfigJson.ProductMap)
 	return &resourcesCenter.Response{
 		Code:    code,
 		Message: msg,

+ 2 - 1
rpc/internal/logic/usermergelogic.go

@@ -1,6 +1,7 @@
 package logic
 
 import (
+	"app.yhyue.com/moapp/jyResourcesCenter/rpc/internal/config"
 	"context"
 
 	"app.yhyue.com/moapp/jyResourcesCenter/rpc/internal/svc"
@@ -26,7 +27,7 @@ func NewUserMergeLogic(ctx context.Context, svcCtx *svc.ServiceContext) *UserMer
 // 合并账号
 func (l *UserMergeLogic) UserMerge(in *resourcesCenter.MergeInfo) (*resourcesCenter.Response, error) {
 	// todo: add your logic here and delete this line
-	code, msg := balanceService.UserMerge(in.MergeUser,in.MergedUser,in.AppId)
+	code, msg := balanceService.UserMerge(in.MergeUser, in.MergedUser, in.AppId, config.ConfigJson.ProductMap)
 	return &resourcesCenter.Response{
 		Code:    code,
 		Message: msg,

+ 1 - 1
rpc/internal/logic/useuserdetailedlogic.go

@@ -51,7 +51,7 @@ func (l *UseUserDetailedLogic) UseUserDetailed(in *resourcesCenter.Resources) (*
 		Remarks:      in.Remarks,
 		RuleId:       in.RuleId,
 	}
-	code, msg, deductionNumb := balanceService.UseUserDetailed(in.DuplicateRemoval, balance, detailed, in.InfoId, config.ConfigJson.DedupUrl)
+	code, msg, deductionNumb := balanceService.UseUserDetailed(in.DuplicateRemoval, balance, detailed, in.InfoId, config.ConfigJson.DedupUrl, config.ConfigJson.ProductMap)
 	return &resourcesCenter.UseUserResponse{
 		Code:          code,
 		Message:       msg,

+ 6 - 2
rpc/resourcesCenter.go

@@ -8,6 +8,7 @@ import (
 	_ "github.com/go-sql-driver/mysql"
 	"github.com/go-xorm/xorm"
 	"log"
+	"strings"
 
 	"app.yhyue.com/moapp/jyResourcesCenter/rpc/internal/config"
 	"app.yhyue.com/moapp/jyResourcesCenter/rpc/internal/server"
@@ -23,6 +24,9 @@ var configFile = flag.String("f", "etc/resourcescenter.yaml", "the config file")
 func main() {
 	flag.Parse()
 	conf.MustLoad(*configFile, &config.ConfigJson)
+	for key, value := range strings.Split(config.ConfigJson.ProductStr, ",") {
+		config.ConfigJson.ProductMap[value] = key
+	}
 	ctx := svc.NewServiceContext(config.ConfigJson)
 	srv := server.NewResourcesCenterServer(ctx)
 	s := zrpc.MustNewServer(config.ConfigJson.RpcServerConf, func(grpcServer *grpc.Server) {
@@ -30,7 +34,7 @@ func main() {
 	})
 
 	defer s.Stop()
-	fmt.Printf("Starting rpc server at %s...\n",  config.ConfigJson.ListenOn)
+	fmt.Printf("Starting rpc server at %s...\n", config.ConfigJson.ListenOn)
 	s.Start()
 }
 
@@ -43,5 +47,5 @@ func init() {
 	if err != nil {
 		log.Fatal("数据库连接失败:", err)
 	}
-	fmt.Println(config.ConfigJson.DataSource+"链接成功")
+	fmt.Println(config.ConfigJson.DataSource + "链接成功")
 }

+ 44 - 41
service/balanceService.go

@@ -21,12 +21,11 @@ const (
 )
 
 //根据账户标识新增资源
-func (service *BalanceService) PurchaseUserBalance(balanceData *resourcesCenter.Balance, detailedData *resourcesCenter.Detailed) (int64, string) {
+func (service *BalanceService) PurchaseUserBalance(balanceData *resourcesCenter.Balance, detailedData *resourcesCenter.Detailed, producMap map[string]interface{}) (int64, string) {
 	orm := entity.Engine.NewSession()
 	err := orm.Begin()
 	balance := entity.Balance{}
-	log.Println(balance.ResourceType, "附件下载包", balance.ResourceType == "附件下载包")
-	if balanceData.ResourceType == "附件下载包" {
+	if producMap[balanceData.ResourceType] != nil {
 		fool, err := orm.Table(AccountResources).
 			Select("*").
 			Where("accountId=? and  companyId=? and  departmentId=? and  ResourceType=? and  endTime=? and vipTime=?", balanceData.AccountId, balanceData.CompanyId, balanceData.DepartmentId, balanceData.ResourceType, balanceData.EndTime, balanceData.VipTime).
@@ -105,7 +104,7 @@ func (service *BalanceService) PurchaseUserBalance(balanceData *resourcesCenter.
 }
 
 //根据账户标识使用资源
-func (service *BalanceService) UseUserDetailed(duplicateRemoval int64, balanceData *resourcesCenter.Balance, detailedData *resourcesCenter.Detailed, infoId, url string) (int64, string, int64) {
+func (service *BalanceService) UseUserDetailed(duplicateRemoval int64, balanceData *resourcesCenter.Balance, detailedData *resourcesCenter.Detailed, infoId, url string, producMap map[string]interface{}) (int64, string, int64) {
 	orm := entity.Engine.NewSession()
 	err := orm.Begin()
 	//去重
@@ -118,8 +117,8 @@ func (service *BalanceService) UseUserDetailed(duplicateRemoval int64, balanceDa
 		} else if detailedData.ResourceType == "高级字段包" {
 			dataDesc = 1
 		}
-		url = url + "/data/dedupAndSave/"+fmt.Sprint(time.Now().Unix())+"?dataDesc=" + fmt.Sprint(dataDesc) + "&personId=" + detailedData.UserId + "&infoId=" + infoId + "&accountId=" + detailedData.AccountId
-		log.Println( url)
+		url = url + "/data/dedupAndSave/" + fmt.Sprint(time.Now().Unix()) + "?dataDesc=" + fmt.Sprint(dataDesc) + "&personId=" + detailedData.UserId + "&infoId=" + infoId + "&accountId=" + detailedData.AccountId
+		log.Println(url)
 		res, urlerr := http.PostForm(url, nil)
 		if urlerr != nil {
 			return entity.ErrorCode, "去重失败", 0
@@ -133,30 +132,32 @@ func (service *BalanceService) UseUserDetailed(duplicateRemoval int64, balanceDa
 		if dat.Code == 0 {
 			deductionNumb = dat.Data.NewCount
 			deductionNumbs = dat.Data.NewCount
-		var appheader = "application/x-www-form-urlencoded"
-		param := "dataDesc=" + fmt.Sprint(dataDesc) + "&personId=" + detailedData.UserId + "&infoId=" + infoId + "&accountId=" + detailedData.AccountId
-		resp, status, _ := HttpPost_M(url+"/data/dedupAndSave/"+fmt.Sprint(time.Now().Unix()), appheader, param, 20)
-		log.Println(resp, status)
-		if status != 200 && (resp == nil || len(resp) <= 0) {
-			return entity.ErrorCode, "请求去重接口出错", 0
-		}
-		data := resp["data"].(map[string]interface{})
-		if fmt.Sprint(resp["code"]) == "0" {
-			deductionNumb, _ = strconv.ParseInt(fmt.Sprint(data["newCount"]), 10, 64)
-			deductionNumbs, _ = strconv.ParseInt(fmt.Sprint(data["newCount"]), 10, 64)
-			if fmt.Sprint(data["totalCount"]) == "0" {
-				return entity.ErrorCode, "去重失败", 0
+			var appheader = "application/x-www-form-urlencoded"
+			param := "dataDesc=" + fmt.Sprint(dataDesc) + "&personId=" + detailedData.UserId + "&infoId=" + infoId + "&accountId=" + detailedData.AccountId
+			resp, status, _ := HttpPost_M(url+"/data/dedupAndSave/"+fmt.Sprint(time.Now().Unix()), appheader, param, 20)
+			log.Println(resp, status)
+			if status != 200 && (resp == nil || len(resp) <= 0) {
+				return entity.ErrorCode, "请求去重接口出错", 0
 			}
-		} else {
+			data := resp["data"].(map[string]interface{})
+			if fmt.Sprint(resp["code"]) == "0" {
+				deductionNumb, _ = strconv.ParseInt(fmt.Sprint(data["newCount"]), 10, 64)
+				deductionNumbs, _ = strconv.ParseInt(fmt.Sprint(data["newCount"]), 10, 64)
+				if fmt.Sprint(data["totalCount"]) == "0" {
+					return entity.ErrorCode, "去重失败", 0
+				}
+			} else {
 				return entity.ErrorCode, "去重失败", 0
+			}
 		}
 	}
+
 	//查询结存是否够用
 	type SumStruct struct {
 		Age int `xorm:"age"`
 	}
 	sumStruct := "0"
-	if balanceData.ResourceType == "附件下载包" {
+	if producMap[balanceData.ResourceType] != nil {
 		now1 := time.Now()
 		currentYear, currentMonth, _ := now1.Date()
 		currentLocation := now1.Location()
@@ -209,7 +210,7 @@ func (service *BalanceService) UseUserDetailed(duplicateRemoval int64, balanceDa
 	}
 	//修改结存
 	balanceList := []entity.Balance{}
-	if balanceData.ResourceType == "附件下载包" {
+	if producMap[balanceData.ResourceType] != nil {
 		now1 := time.Now()
 		currentYear, currentMonth, _ := now1.Date()
 		currentLocation := now1.Location()
@@ -312,7 +313,7 @@ func HttpPost_M(href, contentType, param string, timeout int) (map[string]interf
 }
 
 //账号合并
-func (service *BalanceService) UserMerge(mergeUser, mergedUser, appId string) (int64, string) {
+func (service *BalanceService) UserMerge(mergeUser, mergedUser, appId string, producMap map[string]interface{}) (int64, string) {
 	orm := entity.Engine.NewSession()
 	err := orm.Begin()
 	if err != nil {
@@ -367,19 +368,18 @@ func (service *BalanceService) UserMerge(mergeUser, mergedUser, appId string) (i
 		}
 		filter, _ := json.Marshal(filter_map)
 		mergeDetailed := entity.Detailed{
-			AccountId:    mergeUser,
-			CompanyId:    int64(0),
-			DepartmentId: int64(0),
-			ResourceType: value.ResourceType + "(合并)",
-			Number:       value.Number,
-			RuleId:       "",
-			CreateTime:   time.Now().Local(),
-			UserType:     1,
-			UserId:       mergeUser,
-			Remarks:      string(filter),
-			DeductionNumb:
-			int64(0),
-			Name: value.Name + "(合并)",
+			AccountId:     mergeUser,
+			CompanyId:     int64(0),
+			DepartmentId:  int64(0),
+			ResourceType:  value.ResourceType + "(合并)",
+			Number:        value.Number,
+			RuleId:        "",
+			CreateTime:    time.Now().Local(),
+			UserType:      1,
+			UserId:        mergeUser,
+			Remarks:       string(filter),
+			DeductionNumb: int64(0),
+			Name:          value.Name + "(合并)",
 		}
 		insertNumb, err = orm.Table(ConsumeRecord).Insert(&mergeDetailed)
 		if err != nil || insertNumb <= 0 {
@@ -389,7 +389,7 @@ func (service *BalanceService) UserMerge(mergeUser, mergedUser, appId string) (i
 		}
 		//结存操作
 		balance := entity.Balance{}
-		if value.ResourceType == "附件下载包" {
+		if producMap[value.ResourceType] != nil {
 			_, err = orm.Table(AccountResources).
 				Select("*").
 				Where("accountId=? and resourceType=?  endTime=? and vipTime=?", mergeUser, value.ResourceType, value.EndTime, value.VipTime).
@@ -452,8 +452,8 @@ func (service *BalanceService) UserMerge(mergeUser, mergedUser, appId string) (i
 
 }
 
-//根据账户标识使用资源
-func (service *BalanceService) UpdateVipTime(data *resourcesCenter.VipReq) (int64, string) {
+//超级订阅时间修改
+func (service *BalanceService) UpdateVipTime(data *resourcesCenter.VipReq, producMap map[string]interface{}) (int64, string) {
 	orm := entity.Engine.NewSession()
 	err := orm.Begin()
 	defer orm.Close()
@@ -465,10 +465,13 @@ func (service *BalanceService) UpdateVipTime(data *resourcesCenter.VipReq) (int6
 	lastOfMonth := firstOfMonth.AddDate(0, 1, -1)
 	endTime := lastOfMonth.Format("2006-01-02")
 	dataMap := map[string]interface{}{
-		"vipTime":     data.VipTime,
+		"vipTime": data.VipTime,
 	}
+	productValue, _ := entity.GetInForComma(producMap)
+	resourceTypeStr := `FIND_IN_SET(resourceType,%s)`
+	resourceTypeStr = fmt.Sprintf(` FIND_IN_SET(resourceType,"%s")`, productValue)
 	updateNumb, err = orm.Table(AccountResources).
-		Cols("vipTime").Where("endTime = ? and  accountId=? and resourceType=?",endTime,data.AccountId,"附件下载包").
+		Cols("vipTime").Where("endTime = ? and  accountId=? and  "+resourceTypeStr, endTime, data.AccountId).
 		Update(&dataMap)
 	if err != nil || updateNumb < 0 {
 		fmt.Println("结存修改失败:", err)

+ 10 - 13
service/resourceManageService.go

@@ -32,7 +32,7 @@ func (service *ResourceManageService) FindResourcesAuth(data *resourcesCenter.Re
 }
 
 //查询账户资源余额
-func (service *ResourceManageService) FindAccountBalance(in *resourcesCenter.ResourcesReq) ([]*resourcesCenter.ResourceBalance, error) {
+func (service *ResourceManageService) FindAccountBalance(in *resourcesCenter.ResourcesReq, producMap map[string]interface{}) ([]*resourcesCenter.ResourceBalance, error) {
 	now := time.Now().Format("2006-01-02")
 	now1 := time.Now()
 	currentYear, currentMonth, _ := now1.Date()
@@ -44,7 +44,7 @@ func (service *ResourceManageService) FindAccountBalance(in *resourcesCenter.Res
 	var accountBalanceArr []*entity.AccountBalance
 	dataList := make([]*resourcesCenter.ResourceBalance, 0)
 	var err error
-	if in.ResourceType == "附件下载包" {
+	if producMap[in.ResourceType] != nil {
 		err = orm.Table("account_resources").Select("ANY_VALUE(id) as id,ANY_VALUE(name) as name,resourceType,ANY_VALUE(spec)").
 			Where("accountId = ? and endTime =? and  vipTime>?", in.AccountId, endTime, time.Now().Unix()).GroupBy("resourceType").Find(&accountBalanceArr)
 	} else {
@@ -68,8 +68,8 @@ func (service *ResourceManageService) FindAccountBalance(in *resourcesCenter.Res
 		var number int64
 		c := int64(0)
 		//统计总数量
-		isOk := false;
-		if v.ResourceType == "附件下载包" {
+		isOk := false
+		if producMap[v.ResourceType] != nil {
 			isOk, err = orm.Table("account_resources").Select("sum(number) as number").
 				Where("accountId = ? and resourceType = ? and endTime = ? and  vipTime>=?", in.AccountId, v.ResourceType, endTime, time.Now().Unix()).Get(&number)
 		} else {
@@ -104,16 +104,14 @@ func (service *ResourceManageService) FindConsumeRecord(in *resourcesCenter.Reco
 	var err error
 	if in.ResourceType == "" {
 		in.ResourceType = "字段包"
-	} else {
-		in.ResourceType = "附件下载包"
 	}
 	if in.State == 0 {
-		if  in.QueryTime!=""{
+		if in.QueryTime != "" {
 			count, err = orm.Table("consume_record").
-				Where("accountId = ? and userId = ? and userType = 0  and resourceType like  ?  and DATE_FORMAT( createTime, '%Y-%m' ) = ?", in.AccountId, in.UserId, "%"+in.ResourceType+"%",in.QueryTime).
+				Where("accountId = ? and userId = ? and userType = 0  and resourceType like  ?  and DATE_FORMAT( createTime, '%Y-%m' ) = ?", in.AccountId, in.UserId, "%"+in.ResourceType+"%", in.QueryTime).
 				Limit(int(in.PageSize), (int(in.Page)-1)*int(in.PageSize)).OrderBy("id desc").FindAndCount(&recordArr)
 
-		}else{
+		} else {
 			count, err = orm.Table("consume_record").
 				Where("accountId = ? and userId = ? and userType = 0  and resourceType like  ? ", in.AccountId, in.UserId, "%"+in.ResourceType+"%").
 				Limit(int(in.PageSize), (int(in.Page)-1)*int(in.PageSize)).OrderBy("id desc").FindAndCount(&recordArr)
@@ -124,17 +122,16 @@ func (service *ResourceManageService) FindConsumeRecord(in *resourcesCenter.Reco
 			return dataList, 0, err
 		}
 	} else {
-		if  in.QueryTime!=""{
+		if in.QueryTime != "" {
 			count, err = orm.Table("consume_record").
-				Where("accountId = ? and userType = 1 and   resourceType like ? and DATE_FORMAT( createTime, '%Y-%m' ) = ?", in.AccountId, "%"+in.ResourceType+"%",in.QueryTime).
+				Where("accountId = ? and userType = 1 and   resourceType like ? and DATE_FORMAT( createTime, '%Y-%m' ) = ?", in.AccountId, "%"+in.ResourceType+"%", in.QueryTime).
 				Limit(int(in.PageSize), (int(in.Page)-1)*int(in.PageSize)).OrderBy("id desc").FindAndCount(&recordArr)
-		}else{
+		} else {
 			count, err = orm.Table("consume_record").
 				Where("accountId = ? and userType = 1 and   resourceType like ? ", in.AccountId, "%"+in.ResourceType+"%").
 				Limit(int(in.PageSize), (int(in.Page)-1)*int(in.PageSize)).OrderBy("id desc").FindAndCount(&recordArr)
 		}
 
-
 		if err != nil && count == 0 {
 			return dataList, 0, err
 		}