Browse Source

Merge branch 'master' of http://192.168.3.207:10080/group3/SwordFish_Interface_Service

xuzhiheng 4 years ago
parent
commit
5e672dd0c4

+ 30 - 0
manage/user/user.go

@@ -6,12 +6,14 @@ import (
 	"go.uber.org/zap"
 	"io/ioutil"
 	"log"
+	"net/http"
 	"sfbase/global"
 	sutils "sfbase/utils"
 	"sfis/model"
 	"sfis/model/response"
 	"sfis/service"
 	"sfis/utils"
+	"strconv"
 	"time"
 )
 
@@ -20,6 +22,7 @@ func DevUserManageRegister(router *gin.Engine) {
 	userGroup.Use()
 	{
 		userGroup.POST("/create", userCreate)
+		userGroup.POST("/list", userList)
 		userGroup.POST("/userProductChoose", userProductChoose)
 		userGroup.POST("/userProductList", userProductList)
 		userGroup.POST("/moneyRecharge", moneyRecharge)
@@ -49,6 +52,33 @@ func userCreate(c *gin.Context) {
 	}
 }
 
+// 用户列表
+func userList(c *gin.Context) {
+	page, _ := strconv.Atoi(c.PostForm("page"))
+	limit, _ := strconv.Atoi(c.PostForm("limit"))
+	appId := c.PostForm("app_id")
+	name := c.PostForm("name")
+	phone := c.PostForm("phone")
+
+	condMap := map[string]interface{}{
+		"app_id": appId,
+		"name":   name,
+		"phone":  phone,
+	}
+	userList, totalCount, err := service.ListUser(condMap, page, limit)
+	if err != nil {
+		response.FailWithMessage(err.Error(), c)
+	} else {
+		c.JSON(http.StatusOK, gin.H{
+			"code":       response.SUCCESS,
+			"data":       userList,
+			"msg":        "查询成功",
+			"totalCount": totalCount,
+		})
+	}
+
+}
+
 func userProductChoose(c *gin.Context) {
 	bs, err := ioutil.ReadAll(c.Request.Body)
 	if err != nil {

+ 13 - 3
router/pageRouter.go

@@ -12,7 +12,9 @@ func pageRouterRegister(router *gin.Engine) {
 		pageRouterGroup.GET("/chooseProductPage", chooseProductPage)
 		pageRouterGroup.GET("/createUser", createUser)
 		pageRouterGroup.GET("/userRecharge", userRechargePage)
-		pageRouterGroup.GET("/productDetailsPage", productDetailsPage)
+		pageRouterGroup.GET("/projectDetailsPage", projectDetailsPage)
+		pageRouterGroup.GET("/projectListPage", projectListPage)
+		pageRouterGroup.GET("/interfaceListPage", interfaceListPage)
 	}
 }
 
@@ -31,6 +33,14 @@ func userRechargePage(context *gin.Context) {
 	context.HTML(200, "userRecharge.html", nil)
 }
 
-func productDetailsPage(context *gin.Context) {
-	context.HTML(200, "productDetails.html", nil)
+func projectDetailsPage(context *gin.Context) {
+	context.HTML(200, "projectDetails.html", nil)
+}
+
+func projectListPage(context *gin.Context) {
+	context.HTML(200, "projectList.html", nil)
+}
+
+func interfaceListPage(context *gin.Context) {
+	context.HTML(200, "interfaceList.html", nil)
 }

+ 43 - 1
service/user.go

@@ -2,6 +2,7 @@ package service
 
 import (
 	"errors"
+	"fmt"
 	"github.com/gin-gonic/gin"
 	"go.uber.org/zap"
 	"gorm.io/gorm"
@@ -13,6 +14,7 @@ import (
 	"sfis/model"
 	"sfis/model/response"
 	"strconv"
+	"strings"
 	"sync"
 	"time"
 )
@@ -118,7 +120,7 @@ func CreateUserProduct(appId string, productArr []map[string]interface{}, buyTyp
 				}
 				return nil
 			})
-			if errs == nil {
+			if errs != nil {
 				global.Logger.Info("用户已购买产品失败:", zap.Any("appId:", appId), zap.Any("productId:", productId))
 				continue
 			}
@@ -189,3 +191,43 @@ func CreateUser(user model.User) (model.User, error) {
 	}
 
 }
+
+// 查询用户
+func ListUser(condMap map[string]interface{}, page int, limit int) ([]map[string]interface{}, int64, error) {
+	// 拼查询sql
+	var key []string
+	var param []interface{}
+	for k, v := range condMap {
+		if v == "" {
+			continue
+		}
+		var kStr string
+		kStr = fmt.Sprintf("%s like ?", k)
+		v = "%" + v.(string) + "%"
+		key = append(key, kStr)
+		param = append(param, v)
+	}
+	whereSql := strings.Join(key, " and ")
+	var totalCount int64
+	var userInfo []map[string]interface{}
+	err := db.GetSFISDB().Table("user").Where(whereSql, param...).Where("delete_at is null").Count(&totalCount).Error
+	if err != nil {
+		return nil, 0, errors.New("查询失败")
+	}
+	if totalCount == 0 {
+		return userInfo, 0, nil
+	}
+	if whereSql != ""{
+		whereSql = " and " + whereSql
+	}
+	sql := "select user.app_id,user.name,user.phone,user.secret_key,user.ip_white_list,user.create_at,money from user LEFT JOIN  user_account on user.app_id=user_account.app_id where user.delete_at is Null " + whereSql
+	if limit != 0 && page > 0 {
+		sql += fmt.Sprintf(" limit %d ,%d", (page-1)*limit, limit)
+	}
+	result := db.GetSFISDB().Raw(sql, param...).Scan(&userInfo)
+
+	if result.Error != nil {
+		return nil, 0, errors.New("查询失败")
+	}
+	return userInfo, totalCount, nil
+}

+ 1 - 1
static/templates/chooseProduct.html

@@ -71,7 +71,7 @@
                         var str = ""
                         for (var i = 0; i < r.data.length; i++) {
                             var item = r.data[i];
-                            str += '<tr>';
+                            str += '<tr style="">';
                             str += '<td style="width: 20px"><input id=' + item["id"] + ' value=' + item["id"] + ' type="radio" name="item"></td>';
                             str += '<td style="width: 50px">' + (i + 1) + '</td>';
                             str += '<td style="width: 100px">' + item.name + '</td>';

+ 22 - 0
static/templates/interfaceList.html

@@ -0,0 +1,22 @@
+{{define "interfaceList.html"}}
+
+    <!DOCTYPE html>
+    <html lang="en">
+    <head>
+        <meta charset="UTF-8">
+        <title>接口列表</title>
+    </head>
+    <style>
+        .list a {
+            text-decoration: none;
+        }
+    </style>
+    <body>
+    <div class="list">
+        <a href="/page/projectListPage">项目列表接口</a><br>
+        <a href="">项目列表详情接口</a>
+    </div>
+
+    </body>
+    </html>
+{{end}}

+ 97 - 92
static/templates/login.html

@@ -11,101 +11,106 @@
 
     </style>
     <body>
-        <dev id="main">
-            <h1>对外接口</h1>
-            <dev>
-                <a onclick="$('#projectList').show();$('#main').hide();">1.项目列表</a>
-                <a onclick="$('#projectListDetail').show();$('#main').hide();">2.项目列表及详情</a>
-            </dev>
-             <h1><a href="/page/userRecharge">充值接口</a></h1>
-            <h1>内部接口</h1>
-            <dev>
-                <a href="/page/createUser">1.创建用户</a>
-            </dev>
-            <h1>产品接口</h1>
-            <dev>
-                <a href="/page/chooseProductPage">1.选择产品</a>
-                <a>2.余额充值</a>
-                <a>3.产品充值</a>
-            </dev>
-        </dev>
-        <dev id="projectList" style="display: none;">
-            <input type="text" id="projectName" placeholder="请输入项目名">
-            <input type="text" id="winner" placeholder="请输入中标企业名">
-            <input type="text" id="bidTime" placeholder="请输入中标日期">
-            <button type="button" id="projectListBtn">提交</button>
-        </dev>
-        <dev id="projectListDetail" style="display: none;">
-            <input type="text" id="winners" placeholder="请输入中标企业名">
-            <button type="button" id="projectListDetailBtn">提交</button>
-        </dev>
-        <dev id="resultContent"></dev>
-        <script>
-            var appid = "sfGSVYRQMAAgkGBAUBJg4f";
-            var key = "364xw909";
-            function submit(param,rType,url,hearders,str){
-                $.ajax({
-                    url: url,
-                    type: rType,
-                    headers: hearders,
-                    data: param,
-                    success:function(r){
-                    	if(r.data){
-                            $("#resultContent").text("");
-                            for (var i in r.data){
-                                var html = `
-                                    <div>
-                                        <p>序号: ${i+1}</p>
-                                        <p>项目标识: ${r.data[i]["project_id"]}</p>
-                                        <p>项目名称: ${r.data[i]["projectname"]}</p>
-                                        <p>采购单位: ${r.data[i]["buyer"]}</p>
-                                        <p>采购单位行业: ${r.data[i]["buyerclass"]}</p>
-                                        <p>招标日期: ${r.data[i]["zbtime"]}</p>
-                                        <p>中标日期: ${r.data[i]["jgtime"]}</p>
-                                    </div>
-                                `
-                                $("#resultContent").append(html);
-                            } 
-                    	}else{
-                    		$("#resultContent").text(r.msg);
-                    	}
+    <style>
+        .title {
+            text-align: center;
+        }
+
+        .tableDiv {
+            margin-top: 20px;
+        }
+
+        .box tr td {
+            text-align: center;
+        }
+
+        .handle a {
+            text-decoration: none;
+            margin-right: 5px;
+        }
+
+    </style>
+    <div>
+        <h1 class="title">接口服务平台测试系统</h1>
+    </div>
+    <div>
+        <button style="width: 80px;height: 35px"><a style="text-decoration:none;" href="/page/createUser">创建用户</a>
+        </button>
+    </div>
+    <div class="tableDiv">
+        <table border="0" id="tableId" hidden>
+            <thead>
+            <tr class="tableTitle">
+                <th style="width: 5%">序号</th>
+                <th style="width: 25%">客户名称</th>
+                <th style="width: 20%">APPID</th>
+                <th style="width: 10%">密钥</th>
+                <th style="width: 10%">客户电话</th>
+                <th style="width: 10%">余额</th>
+                <th style="width: 20%">操作</th>
+            </tr>
+            </thead>
+            <tbody class="box">
+
+            </tbody>
+        </table>
+    </div>
+
+    <script>
+        userList()
+
+        function userList() {
+            $.ajax({
+                url: "/manage/user/list",
+                type: "POST",
+                dataType: "json",
+                async: false,
+                success: function (r) {
+                    if (r.code === 0) {
+                        var str = ""
+                        if (r.data.length != 0) {
+                            $("#tableId").show();
+                            for (var i = 0; i < r.data.length; i++) {
+                                var item = r.data[i];
+                                str += '<tr style="">';
+                                str += '<td style="width: 50px">' + (i + 1) + '</td>';
+                                str += '<td style="width: 100px">' + item.name + '</td>';
+                                str += '<td style="width: 200px">' + item.app_id + '</td>';
+                                str += '<td style="width: 100px">' + item.secret_key + '</td>';
+                                str += '<td style="width: 100px">' + item.phone + '</td>';
+
+                                str += '<td style="width: 100px">' + item.money + '</td>';
+                                str += '<td class="handle" style="width: 100px"><a href="/page/userRecharge">充值</a><a href="/page/chooseProductPage">购买产品</a><a href="/page/interfaceListPage">测试接口</a></td>';
+                                str += '</tr>';
+                            }
+                            $('.box').html(str);
+                        } else {
+                            $("#tableDiv").html("还没有客户,请添加客户信息");
+                        }
+
+                    } else {
+                        $("#tableDiv").html(r.msg);
                     }
-                })
-            }
-            
-            $("#projectListBtn").on("click", function(){
-                var param = {
-                    "app_id": appid,
-                    "project_name": $("#projectName").val(),
-                    "winner": $("#winner").val(),
-                    "bid_time": $("#bidTime").val()
-                };
-                var url = "/sfis/api/v1/projectList";
-                var rType = "post";
-                var now = new Date().getTime();
-                var token = md5(appid+Math.round(now/1000)+key);
-                var hearders = {
-                    "timestamp": ""+Math.round(now/1000),
-                    "token": token
-                }
-                submit(param,rType,url,hearders,"list");
-            })
-            
-            $("#projectListDetailBtn").on("click", function(){
-                var param = {
-                    "app_id": appid,
-                    "winner": $("#winners").val()
-                };
-                var url = "/sfis/api/v1/projectListDetail";
-                var rType = "post";
-                var now = new Date().getTime();
-                var token = md5(appid+Math.round(now/1000)+key);
-                var hearders = {
-                    "timestamp": ""+Math.round(now/1000),
-                    "token": token
                 }
-                submit(param,rType,url,hearders,"listDetail");
             })
+        }
+
+
+        /*$("#projectListDetailBtn").on("click", function(){
+            var param = {
+                "app_id": appid,
+                "winner": $("#winners").val()
+            };
+            var url = "/sfis/api/v1/projectListDetail";
+            var rType = "post";
+            var now = new Date().getTime();
+            var token = md5(appid+Math.round(now/1000)+key);
+            var hearders = {
+                "timestamp": ""+Math.round(now/1000),
+                "token": token
+            }
+            submit(param,rType,url,hearders,"listDetail");
+        })*/
     </script>
     </body>
     </html>

+ 0 - 18
static/templates/productDetails.html

@@ -1,18 +0,0 @@
-{{define "productDetails.html"}}
-    <!DOCTYPE html>
-    <html lang="en">
-    <head>
-        <meta charset="UTF-8">
-        <title>项目详情</title>
-        <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>
-    </head>
-    <body>
-    <div>
-        <input type="text">
-        <button onclick="" id="search">搜索</button>
-    </div>
-
-    </body>
-    </html>
-{{end}}

+ 87 - 0
static/templates/projectDetails.html

@@ -0,0 +1,87 @@
+{{define "projectDetails.html"}}
+    <!DOCTYPE html>
+    <html lang="en">
+    <head>
+        <meta charset="UTF-8">
+        <title>项目详情</title>
+        <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>
+    </head>
+    <body>
+    <div id="resultContent">
+
+
+    </div>
+
+    </body>
+    </html>
+    <script>
+        var LocString = String(window.document.location.href);
+
+        // 获取页面跳转传过来的参数
+        function GetQueryString(name) {
+            var rs = new RegExp("(^|)" + name + "=([^&]*)(&|$)", "gi").exec(LocString);
+            var tmp;
+            if (tmp = rs) {
+                return decodeURI(tmp[2])
+            }
+            return "";
+        }
+
+        var appid = "sfGSVYRQMAAgkGBAUBJg4f";
+        var key = "364xw909";
+
+        function details() {
+            var projectId = GetQueryString("projectId")
+            var param = {
+                "app_id": appid,
+                "project_id": projectId,
+            };
+            var url = "/sfis/api/v1/projectDetail";
+            var rType = "post";
+            var now = new Date().getTime();
+            var token = md5(appid + Math.round(now / 1000) + key);
+            var hearders = {
+                "timestamp": "" + Math.round(now / 1000),
+                "token": token
+            }
+            $.ajax({
+                url: url,
+                type: rType,
+                headers: hearders,
+                data: param,
+                success: function (r) {
+                    if (r.code == 0) {
+                        $("#resultContent").text("");
+                        var str = "";
+                        console.log(r.data[0]);
+                        var html = `
+                        <div>
+                            <p>项目标识: ${r.data[0]["project_id"]}</p>
+                            <p>项目名称: ${r.data[0]["projectname"]}</p>
+                            <p>项目代码: ${r.data[0]["projectcode"]}</p>
+                            <p>中标单位: ${r.data[0]["s_winner"]}</p>
+                            <p>采购单位: ${r.data[0]["buyer"]}</p>
+                            <p>采购单位电话: ${r.data[0]["buyertel"]}</p>
+                            <p>采购单位联系人: ${r.data[0]["buyerperson"]}</p>
+                            <p>采购单位行业: ${r.data[0]["buyerclass"]}</p>
+                            <p>招标日期: ${r.data[0]["zbtime"]}</p>
+                            <p>中标日期: ${r.data[0]["jgtime"]}</p>
+                            <p>中标金额(元): ${r.data[0]["bidamount"]}</p>
+                            <p>预算金额(元): ${r.data[0]["budget"]}</p>
+                            <p>省份: ${r.data[0]["area"]}</p>
+                            <p>城市: ${r.data[0]["city"]}</p>
+                            <p>原链接: ${r.data[0]["sourceinfourl"]}</p>
+                        </div>
+                        `
+                        $("#resultContent").append(html);
+                    } else {
+                        $("#resultContent").text(r.msg);
+                    }
+                }
+            })
+        }
+
+        details()
+    </script>
+{{end}}

+ 112 - 0
static/templates/projectList.html

@@ -0,0 +1,112 @@
+{{define "projectList.html"}}
+    <!DOCTYPE html>
+    <html lang="en">
+    <head>
+        <meta charset="UTF-8">
+        <title>项目列表页面</title>
+        <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>
+    </head>
+    <body>
+    <div id="projectList">
+        <input type="text" id="projectName" placeholder="请输入项目名">
+        <input type="text" id="winner" placeholder="请输入中标企业名">
+        <input type="text" id="bidTime" placeholder="请输入中标日期">
+        <button type="button" id="projectListBtn">提交</button>
+    </div>
+    <div id="tableDiv" hidden>
+        <table border="0" id="tableId">
+            <thead>
+            <tr class="tableTitle">
+                {{/*                <th style="width: 20px"><input type="checkbox" name="item"></td></th>*/}}
+                <th style="width: 5%;">序号</th>
+                <th style="width: 20%">项目标识</th>
+                <th style="width: 36%">项目名称</th>
+                <th style="width: 15%">采购单位</th>
+                <th style="width: 8%">采购单位行业</th>
+                <th style="width: 8%">招标日期</th>
+                <th style="width: 8%">中标日期</th>
+            </tr>
+            </thead>
+            <tbody class="box">
+
+            </tbody>
+        </table>
+    </div>
+
+    </body>
+    <style>
+        .box tr .td {
+            text-align: center;
+        }
+    </style>
+    <script>
+        var appid = "sfGSVYRQMAAgkGBAUBJg4f";
+        var key = "364xw909";
+
+        function submit(param, rType, url, hearders, str) {
+            $.ajax({
+                url: url,
+                type: rType,
+                headers: hearders,
+                data: param,
+                success: function (r) {
+                    if (r.data) {
+                        $("#tableDiv").show();
+                        $("#resultContent").text("");
+                        var str = "";
+                        for (var i = 0; i < r.data.length; i++) {
+                            var item = r.data[i]
+                            str += '<tr onclick="projectDetails(this)">';
+                            // str += '<td style="width: 20px"></td>';
+                            str += '<td class="td">' + (i + 1) + '</td>';
+                            str += '<td class="td">' + item.project_id + '</td>';
+                            str += '<td>' + item.projectname + '</td>';
+                            str += '<td>' + item.buyer + '</td>';
+                            str += '<td class="td">' + item.buyerclass + '</td>';
+                            if (item.zbtime == undefined || item.zbtime == "") {
+                                str += '<td class="td"></td>';
+                            } else {
+                                str += '<td class="td">' + item.zbtime + '</td>';
+                            }
+                            if (item.jgtime == undefined || item.jgtime == "") {
+                                str += '<td></td>';
+                            } else {
+                                str += '<td class="td">' + item.jgtime + '</td>';
+                            }
+                            str += '</tr>';
+                        }
+                        $(".box").html(str);
+                    } else {
+                        $("#resultContent").text(r.msg);
+                    }
+                }
+            })
+        }
+
+        $("#projectListBtn").on("click", function () {
+            var param = {
+                "app_id": appid,
+                "project_name": $("#projectName").val(),
+                "winner": $("#winner").val(),
+                "bid_time": $("#bidTime").val()
+            };
+            var url = "/sfis/api/v1/projectList";
+            var rType = "post";
+            var now = new Date().getTime();
+            var token = md5(appid + Math.round(now / 1000) + key);
+            var hearders = {
+                "timestamp": "" + Math.round(now / 1000),
+                "token": token
+            }
+            $("#tableDiv").hide();
+            submit(param, rType, url, hearders, "list");
+        })
+
+        function projectDetails(obj) {
+            var p = $(obj).find("td:eq(1)").text();
+            location.href = "/page/projectDetailsPage?projectId=" + p
+        }
+    </script>
+    </html>
+{{end}}

+ 7 - 0
test/manage/user_test.go

@@ -60,6 +60,13 @@ func Test_CreateUser(t *testing.T) {
 	//appID := ""
 	//tradeMoney := 1 * 100 * 10000 //充值1万块钱
 }
+func Test_UserList(t *testing.T) {
+	data := make(url.Values)
+	data["name"] = []string{"拓普"}
+	bs, _ := sutil.HttpPostForm("http://localhost:8080/manage/user/list", map[string]string{}, data)
+	log.Print(string(bs))
+	//service.ListUser(nil,0,0)
+}
 func Test_UserProductChoose(t *testing.T) {
 	/*appId := "sfGSRYRQMABwMAAgcBHjQt"
 	productIds := "1000"