fuwencai 4 years ago
parent
commit
3fce76a27e

+ 34 - 32
manage/user/user.go

@@ -2,18 +2,16 @@ package user
 
 import (
 	"encoding/json"
-	"log"
-	"sfbase/global"
-
 	"github.com/gin-gonic/gin"
 	"go.uber.org/zap"
-
+	"io/ioutil"
+	"log"
+	"sfbase/global"
 	sutils "sfbase/utils"
 	"sfis/model"
 	"sfis/model/response"
 	"sfis/service"
 	"sfis/utils"
-	"strconv"
 	"time"
 )
 
@@ -52,34 +50,38 @@ func userCreate(c *gin.Context) {
 }
 
 func userProductChoose(c *gin.Context) {
-	appId := c.PostForm("appId")
-	productIds := c.PostForm("productIds")
-	startTime := c.PostForm("startTime") //时间格式2021-01-11 16:50:06
-	endTime := c.PostForm("endTime")
-	leftNum, _ := strconv.Atoi(c.PostForm("leftNum"))
-	costModel, _ := strconv.Atoi(c.PostForm("costModel"))
-	interfaceStatus, _ := strconv.Atoi(c.PostForm("interfaceStatus"))
-	callTimesLimitDay, _ := strconv.Atoi(c.PostForm("callTimesLimitDay"))
-	dataNumOneTimes, _ := strconv.Atoi(c.PostForm("dataNumOneTimes"))
-	tradeMoney, _ := strconv.Atoi(c.PostForm("tradeMoney"))
-	tradeMoney = tradeMoney * 100
-	buyType, _ := strconv.Atoi(c.PostForm("buyType"))
-	log.Println("tradeMoney", tradeMoney)
-	p := gin.H{
-		"appId":             appId,
-		"ProductIds":        productIds,
-		"startTime":         startTime,
-		"endTime":           endTime,
-		"leftNum":           leftNum,
-		"costModel":         costModel,
-		"interfaceStatus":   interfaceStatus,
-		"callTimesLimitDay": callTimesLimitDay,
-		"dataNumOneTimes":   dataNumOneTimes,
+	bs, err := ioutil.ReadAll(c.Request.Body)
+	if err != nil {
+		panic(err)
+		response.FailWithMessage("读取参数出错", c)
+		return
+	}
+	var dataMap map[string]interface{}
+	json.Unmarshal([]byte(bs), &dataMap)
+	log.Println("获取前端参数:", dataMap)
+	appId := sutils.ObjToString(dataMap["appId"])
+	buyType := sutils.IntAll(dataMap["buyType"])
+	products := dataMap["products"]
+	productArr := make([]map[string]interface{}, 0)
+	if _products, ok := products.([]interface{}); ok {
+		productArr = sutils.ObjArrToMapArr(_products)
+		log.Println(productArr)
+	}
+	//log.Println(len(productArr), appId)
+	if appId != "" && len(productArr) > 0 {
+		status, haveProductId, err := service.CreateUserProduct(appId, productArr, buyType)
+		if status == 1 && err == nil {
+			if haveProductId != "" {
+				response.OkWithMessage("用户已购买过"+haveProductId+"产品,请去充值", c)
+			} else {
+				response.Ok(c)
+			}
+		} else {
+			response.Fail(c)
+		}
+	} else {
+		response.FailWithMessage("缺少参数", c)
 	}
-	bs, _ := json.Marshal(p)
-	param := string(bs)
-	global.Logger.Info("api userProductChoose参数:", zap.Any("param", param))
-	service.UserProduct(productIds, appId, startTime, endTime, leftNum, costModel, interfaceStatus, callTimesLimitDay, dataNumOneTimes, tradeMoney, buyType, c)
 }
 
 func userProductList(c *gin.Context) {

+ 2 - 0
manage/user/userRecharge.go

@@ -16,6 +16,7 @@ func moneyRecharge(c *gin.Context) {
 	money, err := strconv.Atoi(c.PostForm("money"))
 	if err != nil {
 		response.FailWithDetailed(response.ParamError, nil, "参数错误", c)
+		return
 	}
 	p := gin.H{
 		"appid": appid,
@@ -39,6 +40,7 @@ func productRecharge(c *gin.Context) {
 	endTime := c.PostForm("endTime")
 	if err != nil || errs != nil {
 		response.FailWithDetailed(response.ParamError, nil, "参数错误", c)
+		return
 	}
 	p := gin.H{
 		"appid":       appid,

+ 6 - 0
router/pageRouter.go

@@ -10,12 +10,18 @@ func pageRouterRegister(router *gin.Engine) {
 	{
 		pageRouterGroup.GET("/main", mainPage)
 		pageRouterGroup.GET("/createUser", createUser)
+		pageRouterGroup.GET("/userRecharge", userRechargePage)
 	}
 }
 
 func mainPage(context *gin.Context) {
 	context.HTML(200, "login.html", nil)
 }
+
 func createUser(context *gin.Context) {
 	context.HTML(200, "create_user.html", nil)
 }
+
+func userRechargePage(context *gin.Context) {
+	context.HTML(200, "userRecharge.html", nil)
+}

+ 91 - 144
service/user.go

@@ -7,181 +7,128 @@ import (
 	"gorm.io/gorm"
 	"log"
 	"sfbase/global"
+	"sfbase/utils"
 	"sfis/db"
 	"sfis/lock"
 	"sfis/model"
 	"sfis/model/response"
 	"strconv"
-	"strings"
 	"sync"
 	"time"
 )
 
-func UserProduct(productIds, appId, startTime, endTime string, leftNum, costModel, interfaceStatus, callTimesLimitDay, dataNumOneTimes, tradeMoney, buyType int, c *gin.Context) {
+func CreateUserProduct(appId string, productArr []map[string]interface{}, buyType int) (status int, haveProductId string, err error) {
 	//取出用户锁
 	lock.MainLock.Lock()
 	userLock := lock.UserLockMap[appId]
 	lock.MainLock.Unlock()
 	userLock.Lock()
 	defer userLock.Unlock()
-	productIdsArr := strings.Split(productIds, ",")
-	if len(productIdsArr) > 0 {
-		var errs error
-		for _, v := range productIdsArr {
-			productId, _ := strconv.Atoi(v)
-			userProduct := &model.UserProduct{}
-			userProduct.AppID = appId
-			userProduct.StartAt, _ = time.ParseInLocation("2006-01-02 15:04:05", startTime, time.Local)
-			userProduct.EndAt, _ = time.ParseInLocation("2006-01-02 15:04:05", endTime, time.Local)
-			userProduct.LeftNum = leftNum
-			userProduct.CostModel = costModel
-			userProduct.InterfaceStatus = interfaceStatus
-			userProduct.CallTimesLimitDay = callTimesLimitDay
-			userProduct.DataNumLimitOneTimes = dataNumOneTimes
-			userProduct.ProductID = productId
-			userProductInfo := model.UserProduct{}
-			product := model.Product{}
-			//查询产品信息,获取购买时候产品单价、试用次数
-			err := db.GetSFISDB().Where("id = ?", productId).Find(&product).Error
-			if err != nil {
-				response.FailWithMessage("查询产品信息出错", c)
-				return
-			}
-			historyUnitPrice := product.UnitPrice
-			err = db.GetSFISDB().Where("product_id = ? and app_id = ?", productId, appId).Find(&userProductInfo).Error
-			if err != nil {
-				response.FailWithMessage("查询用户产品信息出错", c)
-				return
-			}
-			//已选择过该产品--更新用户产品信息
-			if userProductInfo.ID != 0 {
-				before := userProductInfo.LeftNum
-				after := userProductInfo.LeftNum + leftNum
-				userProductId := userProductInfo.ID
-				errs = db.GetSFISDB().Transaction(func(tx *gorm.DB) error {
-					//更新用户产品信息
-					userProduct.LeftNum = userProductInfo.LeftNum + leftNum
-					userProduct.UpdateAt = time.Now()
-					log.Println(userProduct.UpdateAt, "++++++++++++++++++++")
-					err := tx.Exec("update user_product set left_num = ?, start_at = ?,end_at = ?,cost_model = ?,interface_status = ?,call_times_limit_day=?,data_num_limit_one_times=? where product_id = ? and app_id = ?", after, startTime, endTime, costModel, interfaceStatus, callTimesLimitDay, dataNumOneTimes, productId, appId).Error
+	var errs error
+	haveProductId = "" //已经购买过的产品id
+	for _, val := range productArr {
+		productId := utils.IntAll(val["productId"])
+		costModel := utils.IntAll(val["costModel"])
+		leftNum := utils.IntAll(val["leftNum"])
+		tradeMoney := utils.IntAll(val["tradeMoney"]) * 100
+		userProduct := &model.UserProduct{}
+		userProduct.AppID = appId
+		userProduct.StartAt, _ = time.ParseInLocation("2006-01-02 15:04:05", utils.ObjToString(val["startTime"]), time.Local)
+		userProduct.EndAt, _ = time.ParseInLocation("2006-01-02 15:04:05", utils.ObjToString(val["endTime"]), time.Local)
+		userProduct.LeftNum = leftNum
+		userProduct.CostModel = costModel
+		userProduct.InterfaceStatus = utils.IntAll(val["interfaceStatus"])
+		userProduct.CallTimesLimitDay = utils.IntAll(val["callTimesLimitDay"])
+		userProduct.DataNumLimitOneTimes = utils.IntAll(val["dataNumOneTimes"])
+		userProduct.ProductID = productId
+		userProductInfo := model.UserProduct{}
+		product := model.Product{}
+		//查询产品信息,获取购买时候产品单价、试用次数
+		err := db.GetSFISDB().Where("id = ?", productId).Find(&product).Error
+		if err != nil {
+			global.Logger.Error("CreateUserProduct查询product表出错:", zap.Any("err:", err))
+			return 0, haveProductId, err
+		}
+		historyUnitPrice := product.UnitPrice
+		err = db.GetSFISDB().Where("product_id = ? and app_id = ?", productId, appId).Find(&userProductInfo).Error
+		if err != nil {
+			global.Logger.Error("CreateUserProduct查询user_product表出错:", zap.Any("err:", err))
+			return 0, haveProductId, err
+		}
+		//用户第一次购买产品
+		if userProductInfo.ID == 0 {
+			errs = db.GetSFISDB().Transaction(func(tx *gorm.DB) error {
+				rechargeAmount := 0
+				remark := ""
+				//第一次购买产品赠送试用量
+				testNum := product.TestNum
+				//扣费类型为扣余额,user_buy_record中tradeMoney金额为0
+				if costModel == 0 {
+					rechargeAmount = tradeMoney
+					leftNum += testNum
+				} else if costModel == 1 {
+					leftNum = 0
+					//扣余额,把赠送量转化成金额
+					freeMoney := testNum * product.UnitPrice
+					log.Println(freeMoney, "freeMoney")
+					remark = "充值金额为:" + strconv.Itoa(tradeMoney) + ",赠送金额为:" + strconv.Itoa(freeMoney)
+					tradeMoney += freeMoney
+				}
+				userProduct.LeftNum = leftNum
+				//生用户产品
+				err := tx.Create(userProduct).Error
+				if err != nil {
+					log.Printf("appID:[%s],productId:[%d] execute insert user_product error:[%v]", appId, productId, err)
+					tx.Rollback()
+					return err
+				}
+				userProductId := userProduct.ID
+				//生成购买产品记录
+				err = tx.Exec("insert into user_buy_record (`app_id`,`product_id`,`user_product_id`,`before`,`after`,`trade_money`,`buy_type`,`history_unit_price`) values (?,?,?,?,?,?,?,?)", appId, productId, userProductId, 0, leftNum, rechargeAmount, buyType, historyUnitPrice).Error
+				if err != nil {
+					log.Printf("appID:[%s],productId[%d],trade_money:[%d] execute insert into user_buy_record error:[%v]", appId, productId, tradeMoney, err)
+					tx.Rollback()
+					return err
+				}
+				//扣费类型是扣余额,充值用户余额
+				if costModel == 1 {
+					userAccount := model.UserAccount{}
+					err = tx.First(&userAccount, model.UserAccount{AppID: appId}).Error
 					if err != nil {
-						log.Printf("appID:[%s],productId:[%d] update user_product error:[%v]", appId, productId, err)
+						log.Printf("appID:[%s],productId[%d],trade_money:[%d] execute find user_account error:[%v]", appId, productId, tradeMoney, err)
 						tx.Rollback()
 						return err
 					}
-					//生成购买产品记录
-					//扣费类型为扣余额,user_buy_record中tradeMoney金额为0
-					rechargeAmount := 0
-					if costModel == 0 {
-						rechargeAmount = tradeMoney
-					}
-					err = tx.Exec("insert into user_buy_record (`app_id`,`product_id`,`user_product_id`,`before`,`after`,`trade_money`,`buy_type`,`history_unit_price`) values (?,?,?,?,?,?,?,?)", appId, productId, userProductId, before, after, rechargeAmount, buyType, historyUnitPrice).Error
+					moneyBefore := userAccount.Money
+					moneyAfter := userAccount.Money + tradeMoney
+					//充值
+					err := tx.Exec("update user_account set money = ? WHERE `app_id` = ?", moneyAfter, appId).Error
 					if err != nil {
-						log.Printf("appID:[%s],productId[%d],trade_money:[%d] execute insert into user_buy_record error:[%v]", appId, productId, tradeMoney, err)
+						log.Printf("appID:[%s],money:[%d] execute update user_account error:[%v]", appId, moneyAfter, err)
 						tx.Rollback()
 						return err
 					}
-					//扣费类型是扣余额,充值用户余额
-					if costModel == 1 {
-						userAccount := model.UserAccount{}
-						err = tx.First(&userAccount, model.UserAccount{AppID: appId}).Error
-						if err != nil {
-							log.Printf("appID:[%s],productId[%d],trade_money:[%d] execute find user_account error:[%v]", appId, productId, tradeMoney, err)
-							tx.Rollback()
-							return err
-						}
-						moneyBefore := userAccount.Money
-						moneyAfter := userAccount.Money + tradeMoney
-						//充值
-						err := tx.Exec("update user_account set money = ? WHERE `app_id` = ?", moneyAfter, appId).Error
-						if err != nil {
-							log.Printf("appID:[%s],money:[%d] execute cost user_account error:[%v]", appId, moneyAfter, err)
-							tx.Rollback()
-							return err
-						}
-						//生充值记录
-						err = tx.Exec("insert into user_money_record (app_id,`before`,`after`,trade_money) values (?,?,?,?)", appId, moneyBefore, moneyAfter, tradeMoney).Error
-						if err != nil {
-							log.Printf("appID:[%s],trade_money:[%d] execute insert into user_money_record error:[%v]", appId, tradeMoney, err)
-							tx.Rollback()
-							return err
-						}
-					}
-					return nil
-				})
-			} else { //用户没有购买过改产品
-				errs = db.GetSFISDB().Transaction(func(tx *gorm.DB) error {
-					//扣费类型为扣余额,user_buy_record中tradeMoney金额为0
-					rechargeAmount := 0
-					//第一次购买产品赠送试用量
-					testNum := product.TestNum
-					remark := ""
-					if costModel == 0 {
-						rechargeAmount = tradeMoney
-						leftNum += testNum
-					} else if costModel == 1 {
-						//扣余额,把赠送量转化成金额
-						freeMoney := testNum * product.UnitPrice
-						tradeMoney += freeMoney
-						remark = "充值金额为:" + strconv.Itoa(tradeMoney) + "赠送金额为:" + strconv.Itoa(freeMoney)
-					}
-					userProduct.LeftNum = leftNum
-					//生用户产品
-					err := tx.Create(userProduct).Error
-					if err != nil {
-						log.Printf("appID:[%s],productId:[%d] insert user_product error:[%v]", appId, productId, err)
-						tx.Rollback()
-						return tx.Error
-					}
-					userProductId := userProduct.ID
-					//生成购买产品记录
-					err = tx.Exec("insert into user_buy_record (`app_id`,`product_id`,`user_product_id`,`before`,`after`,`trade_money`,`buy_type`,`history_unit_price`) values (?,?,?,?,?,?,?,?)", appId, productId, userProductId, 0, leftNum, rechargeAmount, buyType, historyUnitPrice).Error
+					//生充值记录
+					err = tx.Exec("insert into user_money_record (app_id,`before`,`after`,trade_money,remark) values (?,?,?,?,?)", appId, moneyBefore, moneyAfter, tradeMoney, remark).Error
 					if err != nil {
-						log.Printf("appID:[%s],productId[%d],trade_money:[%d] execute insert into user_buy_record error:[%v]", appId, productId, tradeMoney, err)
+						log.Printf("appID:[%s],trade_money:[%d] execute insert into user_money_record error:[%v]", appId, tradeMoney, err)
 						tx.Rollback()
 						return err
 					}
-					//扣费类型是扣余额,充值用户余额
-					if costModel == 1 {
-						//第一次购买产品赠送免费次数
-						userAccount := model.UserAccount{}
-						err = tx.First(&userAccount, model.UserAccount{AppID: appId}).Error
-						if err != nil {
-							log.Printf("appID:[%s],productId[%d],trade_money:[%d] execute find user_account error:[%v]", appId, productId, tradeMoney, err)
-							tx.Rollback()
-							return err
-						}
-						moneyBefore := userAccount.Money
-						moneyAfter := userAccount.Money + tradeMoney
-						//充值
-						err := tx.Exec("update user_account set money = ? WHERE `app_id` = ?", moneyAfter, appId).Error
-						if err != nil {
-							log.Printf("appID:[%s],money:[%d] execute cost user_account error:[%v]", appId, moneyAfter, err)
-							tx.Rollback()
-							return err
-						}
-						//生充值记录
-						err = tx.Exec("insert into user_money_record (app_id,`before`,`after`,trade_money,remark) values (?,?,?,?,?)", appId, moneyBefore, moneyAfter, tradeMoney, remark).Error
-						if err != nil {
-							log.Printf("appID:[%s],trade_money:[%d] execute insert into user_money_record error:[%v]", appId, tradeMoney, err)
-							tx.Rollback()
-							return err
-						}
-					}
-					return nil
-				})
+				}
+				return nil
+			})
+			if errs == nil {
+				global.Logger.Info("用户已购买产品失败:", zap.Any("appId:", appId), zap.Any("productId:", productId))
+				continue
 			}
-		}
-		if errs == nil {
-			response.Ok(c)
-			return
 		} else {
-			response.FailWithMessage("购买产品失败", c)
-			return
+			haveProductId += "[" + strconv.Itoa(productId) + "]"
+			global.Logger.Info("用户已购买过该产品", zap.Any("appId:", appId), zap.Any("productId:", productId))
+			continue
 		}
-
 	}
-	response.FailWithMessage("缺少参数", c)
+	return 1, haveProductId, nil
 }
 
 func UserProductList(appId string, c *gin.Context) {

+ 8 - 10
static/templates/login.html

@@ -4,6 +4,7 @@
     <head>
         <meta charset="UTF-8">
         <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
+        <script src="https://cdn.bootcss.com/blueimp-md5/2.10.0/js/md5.js"></script>
         <title>接口服务平台后台管理系统</title>
     </head>
     <style>
@@ -17,11 +18,7 @@
                 <a>2.项目详情</a>
                 <a>3.项目列表及详情</a>
             </dev>
-            <h1>充值接口</h1>
-            <dev>
-                <a>1.余额充值</a>
-                <a>2.产品充值</a>
-            </dev>
+             <h1><a href="/page/userRecharge">充值接口</a></h1>
             <h1>内部接口</h1>
             <dev>
                 <a href="/page/createUser">1.创建用户</a>
@@ -52,7 +49,7 @@
                     }
                 })
             }
-            
+            console.log(md5(appid+"1610611965"+key))
             $("#projectListBtn").on("click", function(){
                 var param = {
                     "app_id": appid,
@@ -62,12 +59,13 @@
                 };
                 var url = "/sfis/api/v1/projectList";
                 var rType = "post";
-                // var token = $.md5(appid+new Date().getTime() / 1000+key);
-                var token = "6f6d4434cc424a44360ce1b27939500e";
+                var now = new Date().getTime();
+                var token = md5(appid+Math.round(now/1000)+key);
+                // var token = "6f6d4434cc424a44360ce1b27939500e";
                 console.log(token)
                 var hearders = {
-                    // "timestamp": ""+Math.round(new Date().getTime()/1000),
-                    "timestamp": "1610610260",
+                    "timestamp": ""+Math.round(now/1000),
+                    // "timestamp": "1610610260",
                     "token": token
                 }
                 submit(param,rType,url,hearders);

+ 72 - 0
static/templates/userRecharge.html

@@ -0,0 +1,72 @@
+{{define "userRecharge.html"}}
+    <!DOCTYPE html>
+    <html lang="en">
+    <head>
+        <meta charset="UTF-8">
+        <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
+        <title>接口服务平台后台管理系统</title>
+    </head>
+    <style>
+      
+    </style>
+    <body>
+        <dev id="main">
+            <h1>充值接口</h1>
+            <dev>
+                <a onclick="$('#money').show();$('#main').hide();">1.余额充值</a>
+                <a onclick="$('#product').show();$('#main').hide();">2.剩余量充值</a>
+            </dev>
+        </dev>
+        <dev id="money" style="display: none;">
+            <input type="number" id="moneys" placeholder="请输入充值金额">
+            <button type="button" id="moneyBtn">提交</button>
+        </dev>
+        <dev id="product" style="display: none;">
+            <input type="number" id="productId" placeholder="请输入产品id">
+            <input type="number" id="rechargeNum" placeholder="请输入充值次数">
+            <input type="text" id="endTime" placeholder="请输入结束时间">
+            <button type="button" id="productBtn">提交</button>
+        </dev>
+        <dev id="resultContent"></dev>
+        <script>
+            var appid = "sfGSVYRQMAAgkGBAUBJg4f";
+            function submit(param,rType,url,hearders){
+                $.ajax({
+                    url: url,
+                    type: rType,
+                    headers: hearders,
+                    data: param,
+                    success:function(r){
+                    	if(r.code === 1000){
+                            $("#resultContent").text(r.msg);
+                    	}else{
+                    		$("#resultContent").text(r.msg);
+                    	}
+                    }
+                })
+            }
+            $("#moneyBtn").on("click", function(){
+                var param = {
+                    "appid": appid,
+                    "money": $("#moneys").val(),
+                };
+                var url = "/manage/user/moneyRecharge";
+                var rType = "post";
+                submit(param,rType,url);
+            })
+            
+            $("#productBtn").on("click", function(){
+                var param = {
+                    "appid": appid,
+                    "rechargeNum": $("#rechargeNum").val(),
+                    "productId": $("#productId").val(),
+                    "endTime": $("#endTime").val()
+                };
+                var url = "/manage/user/productRecharge";
+                var rType = "post";
+                submit(param,rType,url);
+            })
+        </script>
+    </body>
+    </html>
+{{end}}

+ 47 - 0
sword_base/utils/stringutil.go

@@ -6,7 +6,9 @@ import (
 	"encoding/hex"
 	"fmt"
 	"io"
+	"math/big"
 	"math/rand"
+	"strconv"
 	"strings"
 	"time"
 
@@ -149,6 +151,51 @@ func ObjToString(old interface{}) string {
 	}
 }
 
+func IntAll(num interface{}) int {
+	return IntAllDef(num, 0)
+}
+
+func IntAllDef(num interface{}, defaultNum int) int {
+	if i, ok := num.(int); ok {
+		return int(i)
+	} else if i0, ok0 := num.(int32); ok0 {
+		return int(i0)
+	} else if i1, ok1 := num.(float64); ok1 {
+		return int(i1)
+	} else if i2, ok2 := num.(int64); ok2 {
+		return int(i2)
+	} else if i3, ok3 := num.(float32); ok3 {
+		return int(i3)
+	} else if i4, ok4 := num.(string); ok4 {
+		in, _ := strconv.Atoi(i4)
+		return int(in)
+	} else if i5, ok5 := num.(int16); ok5 {
+		return int(i5)
+	} else if i6, ok6 := num.(int8); ok6 {
+		return int(i6)
+	} else if i7, ok7 := num.(*big.Int); ok7 {
+		in, _ := strconv.Atoi(fmt.Sprint(i7))
+		return int(in)
+	} else if i8, ok8 := num.(*big.Float); ok8 {
+		in, _ := strconv.Atoi(fmt.Sprint(i8))
+		return int(in)
+	} else {
+		return defaultNum
+	}
+}
+
+func ObjArrToMapArr(old []interface{}) []map[string]interface{} {
+	if old != nil {
+		new := make([]map[string]interface{}, len(old))
+		for i, v := range old {
+			new[i], _ = v.(map[string]interface{})
+		}
+		return new
+	} else {
+		return nil
+	}
+}
+
 /**
 产生一般订单编号方法
 */

+ 37 - 4
test/manage/user_test.go

@@ -61,7 +61,7 @@ func Test_CreateUser(t *testing.T) {
 	//tradeMoney := 1 * 100 * 10000 //充值1万块钱
 }
 func Test_UserProductChoose(t *testing.T) {
-	appId := "sfGSRYRQMABwMAAgcBHjQt"
+	/*appId := "sfGSRYRQMABwMAAgcBHjQt"
 	productIds := "1000"
 	startTime := "2022-01-11 00:00:00"
 	endTime := "2024-01-11 00:00:00"
@@ -81,11 +81,44 @@ func Test_UserProductChoose(t *testing.T) {
 	data["callTimesLimitDay"] = []string{callTimesLimitDay}
 	data["dataNumOneTimes"] = []string{dataNumOneTimes}
 	data["tradeMoney"] = []string{"10000"}
-	data["buyType"] = []string{"1"}
+	data["buyType"] = []string{"1"}*/
 	//data["historyUnitPrice"] = []string{"18"}
+	appId := "sfGSRYRQMABwMAAgcBHjQt"
+	buyType := 1
+	products := make([]map[string]interface{}, 0)
+	p := map[string]interface{}{
+		"productId":         1001,
+		"costModel":         1,
+		"leftNum":           1000,
+		"tradeMoney":        100,
+		"startTime":         "2022-01-11 00:00:00",
+		"endTime":           "2023-01-11 00:00:00",
+		"interfaceStatus":   0,
+		"callTimesLimitDay": 100,
+		"dataNumOneTimes":   1000,
+	}
+	p2 := map[string]interface{}{
+		"productId":         1002,
+		"costModel":         1,
+		"leftNum":           1000,
+		"tradeMoney":        100,
+		"startTime":         "2022-01-11 00:00:00",
+		"endTime":           "2023-01-11 00:00:00",
+		"interfaceStatus":   0,
+		"callTimesLimitDay": 100,
+		"dataNumOneTimes":   1000,
+	}
+	products = append(products, p, p2)
+	data := map[string]interface{}{}
+	data["appId"] = appId
+	data["buyType"] = buyType
+	data["products"] = products
+	buf, _ := json.MarshalIndent(data, "", "")
 
-	bs, _ := sutil.HttpPostForm("http://localhost:8080/manage/user/userProductChoose", map[string]string{}, data)
-	log.Print(string(bs))
+	bs, _ := sutil.HttpPostJson("http://localhost:8080/manage/user/userProductChoose", string(buf))
+	dataMap := map[string]interface{}{}
+	json.Unmarshal(bs, &dataMap)
+	log.Print("结果:", dataMap)
 }
 
 func Test_UserProductList(t *testing.T) {