Browse Source

Merge branch 'master' of http://192.168.3.207:10080/qmx/datatag

fengweiqiang 5 years ago
parent
commit
53123c7da4

+ 3 - 7
src/service/private_service.go

@@ -2,6 +2,7 @@ package service
 
 import (
 	"encoding/json"
+	"fmt"
 	"log"
 	qu "qfw/util"
 	"regexp"
@@ -65,10 +66,10 @@ func (f *Private) Keydatademo(world string) {
 						delete(v, "i_createtime")
 
 						if v["bidamount"] != nil {
-							v["bidamount"] = qu.Float64All(v["bidamount"]) / 10000
+							v["bidamount"] = qu.Float64All(fmt.Sprintf("%f", qu.Float64All(v["bidamount"]) / 10000))
 						}
 						if v["budget"] != nil {
-							v["budget"] = qu.Float64All(v["budget"]) / 10000
+							v["budget"] = qu.Float64All(fmt.Sprintf("%f", qu.Float64All(v["budget"]) / 10000))
 						}
 						if v["publishtime"] != nil {
 							v["publishtime"] = time.Unix(qu.Int64All(v["publishtime"]), 0).Format("2006-01-02")
@@ -127,18 +128,15 @@ func (f *Private) Keydatademo(world string) {
 }
 
 func (f *Private) Keydataoption(world string) {
-	qu.Debug(world)
 	destr := qu.SE.DecodeString(world)
 	tmp := make(map[string]interface{})
 	bytes := f.Body()
 	err := json.Unmarshal(bytes, &tmp)
-	qu.Debug(tmp)
 	if err == nil && len(destr) > 10 {
 		ctime := destr[:10]
 		ctimeint := qu.Int64All(ctime)
 		if time.Now().Sub(time.Unix(ctimeint, 0)).Hours()/24 < util.Subday {
 			res, _ := util.Mgo.FindOne("tags", bson.M{"s_dataid": world})
-			qu.Debug(*res)
 			if nil != res && len(*res) > 0 {
 				feedback := make(map[string]interface{})
 				feedback["s_dataid"] = world
@@ -174,8 +172,6 @@ func (f *Private) Keydataoption(world string) {
 				for _, v := range keynums {
 					keyssort = append(keyssort, v.Key)
 				}
-
-				qu.Debug(keyssort)
 				feedback["o_matchkey"] = keyssort
 				pid := util.Mgo.Save("feedback", feedback)
 				if len(pid) < 1 {

+ 16 - 8
src/service/rule_service.go

@@ -92,13 +92,15 @@ func (r *Rule) RuleCreate() {
 func (r *Rule) RuleDel() {
 	defer qu.Catch()
 	_id := r.GetString("_id")
+	s_dataid := r.GetString("s_dataid")
 	set := bson.M{
 		"$set": bson.M{
 			"b_delete": true,
 		},
 	}
 	b := Mgo.UpdateById("tags", _id, set)
-	fmt.Println("Delete Tags Data Id:", _id, b)
+	c := Mgo.Update("feedback", bson.M{"s_dataid": s_dataid}, bson.M{"$set": bson.M{"b_tagdel": true}}, false, false)
+	qu.Debug(c)
 	r.ServeJson(map[string]interface{}{
 		"rep": b,
 	})
@@ -321,6 +323,14 @@ func (r *Rule) DemoData() {
 		}
 		data, _ := Mgo.Find("tagsdata", query, `{"publishtime":-1}`, nil, false, start, limit)
 		count := Mgo.Count("tagsdata", query)
+		for _, v := range *data {
+			if v["budget"] != nil {
+				v["budget"] = qu.Float64All(fmt.Sprintf("%f", qu.Float64All(v["budget"]) / 10000))
+			}
+			if v["bidamount"] != nil {
+				v["bidamount"] = qu.Float64All(fmt.Sprintf("%f", qu.Float64All(v["bidamount"]) / 10000))
+			}
+		}
 		r.ServeJson(map[string]interface{}{
 			"data":            data,
 			"draw":            draw,
@@ -347,12 +357,10 @@ func (r *Rule) ProductData() {
 }
 func (r *Rule) DownloadData() {
 	defer qu.Catch()
-	if r.Method() == "POST" {
-		dataId := r.GetString("s_dataid")
-		if path := ResponseXlsx(dataId); path == "" {
-			r.ServeJson("内部错误")
-		} else {
-			r.ServeFile(path)
-		}
+	dataId := r.GetString("s_dataid")
+	if path := ResponseXlsx(dataId); path == "" {
+		r.ServeJson("内部错误")
+	} else {
+		r.ServeFile(path)
 	}
 }

BIN
src/web/res/fields.xlsx


BIN
src/web/res/标准字段包.xlsx


BIN
src/web/res/高级字段包.xlsx


+ 2 - 2
src/web/templates/com/header.html

@@ -172,10 +172,10 @@
 								<tr>
 									<th rowspan="2" style="align-content: center">序号</th>
 									<th rowspan="2">关键词</th>
-									<th rowspan="2">公告标题</th>
-									<th rowspan="2">公告类型</th>
 									<th rowspan="2">省份</th>
 									<th rowspan="2">城市</th>
+									<th rowspan="2">公告标题</th>
+									<th rowspan="2">公告类别</th>
 									<th rowspan="2">公告内容</th>
 									<th rowspan="2">发布时间</th>
 									<th rowspan="2">公告地址</th>

+ 91 - 79
src/web/templates/private/feedback_list.html

@@ -5,88 +5,100 @@
 {{include "com/menu.html"}}
 
 <div class="content-wrapper">
-	<section class="content-header">
-		<h1>
-			<small><!--<a class="btn btn-primary opr" opr="new">新增逻辑</a>--></small>
-		</h1>
-		<ol class="breadcrumb">
-		 <li><a href="#"><i class="fa fa-dashboard"></i> 首页</a></li>
-      <li><a href="/service/feedback/list"><i class="active"></i> 反馈列表</a></li>
-		</ol>
+    <section class="content-header">
+        <h1>
+            <small><!--<a class="btn btn-primary opr" opr="new">新增逻辑</a>--></small>
+        </h1>
+        <ol class="breadcrumb">
+            <li><a href="#"><i class="fa fa-dashboard"></i> 首页</a></li>
+            <li><a href="/service/feedback/list"><i class="active"></i> 反馈列表</a></li>
+        </ol>
+    </section>
+    <!-- Main content -->
+    <section class="content">
+        <div class="row">
+            <div class="col-xs-12">
+                <div class="box">
+                    <div class="box-body">
+                        <table id="dataTable" class="table table-bordered table-striped">
+                            <thead>
+                            <tr>
+                                <th>客户名称</th>
+                                <th>规则名称</th>
+                                <th>反馈意见</th>
+                                <th>反馈数量</th>
+                                <th>反馈时间</th>
+                                <th class="hidden-xs">操作</th>
+                            </tr>
+                            </thead>
+                        </table>
+                    </div>
+                </div>
+            </div>
+        </div>
     </section>
-  <!-- Main content -->
-  <section class="content">
-      <div class="row">
-	    <div class="col-xs-12">
-			<div class="box">
-				<div class="box-body">
-					<table id="dataTable" class="table table-bordered table-striped">
-						<thead>
-							<tr>
-								<th>客户名称</th>
-								<th>规则名称</th>
-								<th>反馈意见</th>
-								<th>反馈数量</th>
-								<th>反馈时间</th>
-								<th class="hidden-xs">操作</th>
-							</tr>
-						</thead>
-					</table>
-				</div>
-			</div>
-      </div>
-      </div>
-		</section>
 </div>
 {{include "com/dialog.html"}}
 {{include "com/footer.html"}}
 <script>
-menuActive("/feedback/list")
-$(function () {
-	ttable=$('#dataTable').DataTable({
-		"paging"      : true,
-		"lengthChange": false,
-		"searching"   : true,
-		"ordering"    : false,
-		"info"        : true,
-		"autoWidth"   : false,
-    "serverSide"  : true,
-		"ajax": {
-			"url": "/service/feedback/list",
-			"type": "post",
-			"data":{}
-		 },
-		"language": {
-            "url": "/dist/js/dataTables.chinese.lang"
-        },
-		"columns": [
-      { "data": "s_customername"},
-			{ "data": "s_tagname"},
-			{ "data": "s_opinion"},
-      { "data": "i_num"},
-			{ "data": "l_feedbacktime",render:function(val){
-				var dt=new Date()
-				dt.setTime(parseInt(val)*1000)
-				return dt.format("yyyy-MM-dd hh:mm:ss")
-			}},
-			{ "data":"_id","width":"25%",render:function(val,a,row,pos){
-				tmp = '<div>'+
-					'<a class="btn btn-sm btn-primary" href="/service/rule/edit?dataid='+encodeURI(row.s_dataid)+'">编辑规则</a> '+
-					'<a class="btn btn-sm btn-success" href="/service/feedback/detail?_id='+val+'">查看</a> '+
-					'</div>';
-				return  tmp
-			}}
-    ],
-    "fnDrawCallback": function(table) {
-		 	$("ul.pagination").prepend("&nbsp;&nbsp;&nbsp;转到第 <input type='text' id='changePage'   style='width:20px;'> 页    <a type='text' href='javascript:void(0);' id='dataTable-btn' style='text-align:center'>GO</a>");
-		 	$('#dataTable-btn').click(function(e) {    
-			  var redirectpage=0
-				if($("#changePage").val() && $("#changePage").val() > 0) {    
-			    var redirectpage = $("#changePage").val() - 1;    
-			  }  
-				ttable.page(redirectpage).draw(false);      
-		  });    
-		}
-	});
-})
+    menuActive("/feedback/list")
+    $(function () {
+        ttable = $('#dataTable').DataTable({
+            "paging": true,
+            "lengthChange": false,
+            "searching": true,
+            "ordering": false,
+            "info": true,
+            "autoWidth": false,
+            "serverSide": true,
+            "ajax": {
+                "url": "/service/feedback/list",
+                "type": "post",
+                "data": {}
+            },
+            "language": {
+                "url": "/dist/js/dataTables.chinese.lang"
+            },
+            "columns": [
+                {"data": "s_customername"},
+                {"data": "s_tagname"},
+                {"data": "s_opinion"},
+                {"data": "i_num"},
+                {
+                    "data": "l_feedbacktime", render: function (val) {
+                        var dt = new Date()
+                        dt.setTime(parseInt(val) * 1000)
+                        return dt.format("yyyy-MM-dd hh:mm:ss")
+                    }
+                },
+                {
+                    "data": "_id", "width": "25%", render: function (val, a, row, pos) {
+                        if (row.b_tagdel) {
+                            tmp = '<div>' +
+                                '<a class="btn btn-sm btn-primary" disabled="true" href="javascript:return false;">编辑规则</a> ' +
+                                '<a class="btn btn-sm btn-success" href="/service/feedback/detail?_id=' + val + '">查看</a> ' +
+                                '</div>';
+                        } else {
+                            tmp = '<div>' +
+                                '<a class="btn btn-sm btn-primary" href="/service/rule/edit?dataid=' + encodeURI(row.s_dataid) + '">编辑规则</a> ' +
+                                '<a class="btn btn-sm btn-success" href="/service/feedback/detail?_id=' + val + '">查看</a> ' +
+                                '</div>';
+                        }
+
+                        return tmp
+                    }
+                }
+            ],
+            "fnDrawCallback": function (table) {
+                $("ul.pagination").prepend("&nbsp;&nbsp;&nbsp;转到第 <input type='text' id='changePage'   style='width:20px;'> 页    <a type='text' href='javascript:void(0);' id='dataTable-btn' style='text-align:center'>GO</a>");
+                $('#dataTable-btn').click(function (e) {
+                    var redirectpage = 0
+                    if ($("#changePage").val() && $("#changePage").val() > 0) {
+                        var redirectpage = $("#changePage").val() - 1;
+                    }
+                    ttable.page(redirectpage).draw(false);
+                });
+            }
+        });
+    })
 </script>

+ 23 - 20
src/web/templates/private/rule_create.html

@@ -15,7 +15,7 @@
                 </form>
                 <button class="btn btn-info btn-sm" onclick="importEs()"><i class="fa fa-fw fa-cloud-upload fa-lg"></i>导入查询语句</button>
                 <a class="btn btn-sm btn-success" id="download" onclick="downloades()"><i class="fa fa-fw fa-cloud-download fa-lg"></i>下载查询语句</a>
-                <a class="btn btn-sm btn-instagram" onclick="produceData()">生成数据</a>
+                <a class="btn btn-sm btn-instagram" onclick="produceData()"><i class="fa fa-fw fa-database fa-lg"></i>生成数据</a>
                 <button class="btn btn-warning btn-sm" onclick="previewData()"><i class="fa fa-fw fa-eye fa-lg"></i>预览数据</button>
                 <button class="btn btn-danger btn-sm" onclick="archive()"><i class="fa fa-fw fa-save fa-lg"></i>存档</button>
             </small>
@@ -840,14 +840,16 @@
         dataMap["s_customername"] = $('#cusName').val();
         dataMap["s_tagname"] = $('#tagName').val();
         dataMap["s_salesperson"] = $('#saleName').val();
+        dataMap["s_globaladdkeymatch"] = $('#g_addkey').val();
+        dataMap["s_globalnotkeymatch"] = $('#g_notkey').val();
         if (dataMap["s_customername"] == "" || dataMap["s_tagname"] == "" || dataMap["s_salesperson"] == "") {
             alert("请填写必须字段!")
             return
         }
-        if (o_rules.length == 0) {
-            alert("请导入关键字!");
-            return
-        }
+        // if (o_rules.length == 0) {
+        //     alert("请导入关键字!");
+        //     return
+        // }
         if ($('#starttime').find("input").val() != "") {
             var start = $('#starttime').find("input").val();
             start = new Date(start).getTime() / 1000;
@@ -869,10 +871,9 @@
              success: function (r) {
                  if (r.rep && r.id) {
                     dataMap["id"]= r.id;
-                    //$("#download").attr("href","/service/rule/exportes?id="+r.id)
+                    dataMap["s_dataid"] = r.s_dataid;
                     state = 2;
                     showTip("保存成功",1000);
-                     //window.location.href="/service/rule/list";
                  } else {
                     showTip("保存失败",1000);
                  }
@@ -950,7 +951,7 @@
                 "ajax": {
                     url: "/service/rule/preview",
                     type: "post",
-                    data: {},
+                    data: {"s_dataid": dataMap.s_dataid},
                 },
                 "language": {
                     "url": "/dist/js/dataTables.chinese.lang"
@@ -1017,7 +1018,7 @@
                     {"data": function(row) {
                             var dt = new Date();
                             dt.setTime(parseInt(row.publishtime)*1000);
-                            return dt.format("yyyy-MM-dd hh:mm:ss")
+                            return dt.format("yyyy-MM-dd")
                         }, width: "4%"},
                     {"data": function (row) {
                             if (row.href != undefined) {
@@ -1035,23 +1036,25 @@
                             }
                             return ""
                         }, width: "3%"},
-                    {"data": "budget", width: "3%", render: function (val) {
-                            if (val == undefined) {
-                                val = ""
+                    {"data": function (row) {
+                            if (row.budget == undefined) {
+                                return ""
+                            }else {
+                                return row.budget
                             }
-                            return val
-                        }},
-                    {"data": "bidamount", width: "3%", render: function (val) {
-                            if (val == undefined) {
-                                val = ""
+                        }, width: "3%"},
+                    {"data": function (row) {
+                            if (row.bidamount == undefined) {
+                                return ""
+                            }else {
+                                return row.bidamount
                             }
-                            return val
-                        }},
+                        }, width: "3%"},
                     {"data": "bidopentime", width: "3%", render: function (val) {
                             if (val != undefined) {
                                 var dt = new Date();
                                 dt.setTime(parseInt(val)*1000);
-                                return dt.format("yyyy-MM-dd hh:mm:ss")
+                                return dt.format("yyyy-MM-dd")
                             }else {
                                 return ""
                             }

+ 24 - 21
src/web/templates/private/rule_edit.html

@@ -15,7 +15,7 @@
                 </form>
                 <button class="btn btn-info btn-sm" onclick="importEs()"><i class="fa fa-fw fa-cloud-upload fa-lg"></i>导入查询语句</button>
                 <a class="btn btn-sm btn-success" id="download" onclick="downloades()"><i class="fa fa-fw fa-cloud-download fa-lg"></i>下载查询语句</a>
-                <a class="btn btn-sm btn-instagram" onclick="produceData()">生成数据</a>
+                <a class="btn btn-sm btn-instagram" onclick="produceData()"><i class="fa fa-fw fa-database fa-lg"></i>生成数据</a>
                 <button class="btn btn-warning btn-sm" onclick="previewData()"><i class="fa fa-fw fa-eye fa-lg"></i>预览数据</button>
                 <button class="btn btn-danger btn-sm" onclick="archive()"><i class="fa fa-fw fa-save fa-lg"></i>存档</button>
             </small>
@@ -911,15 +911,17 @@
     function saveTag() {
         dataMap["s_customername"] = $('#cusName').val();
         dataMap["s_tagname"] = $('#tagName').val();
-        dataMap["s_salesperson"] = $('#saleName').val();
+        dataMap["s_globaladdkeymatch"] = $('#g_addkey').val();
+        dataMap["s_globalnotkeymatch"] = $('#g_notkey').val();
         if (dataMap["s_customername"] == "" || dataMap["s_tagname"] == "" || dataMap["s_salesperson"] == "") {
             alert("请填写必须字段!")
             return
         }
-        if (o_rules.length == 0) {
-            alert("请导入关键字!");
-            return
-        }
+
+        // if (o_rules == undefined || o_rules.length == 0) {
+        //     alert("请导入关键词!");
+        //     return
+        // }
         if ($('#starttime').find("input").val() != "") {
             var start = $('#starttime').find("input").val();
             start = new Date(start).getTime() / 1000;
@@ -940,10 +942,9 @@
             data: dataMap,
             success: function (r) {
                 if (r.rep && r.id) {
-                    //$("#download").attr("href","/service/rule/exportes?id={{.T.data.id}}")
                     state = 2;
-                    alert("保存成功")
-                    // window.location.href="/service/rule/list";
+                    alert("保存成功");
+                    window.location.reload();
                 } else {
                     alert("保存失败")
                 }
@@ -1053,7 +1054,7 @@
                 {"data": function(row) {
                         var dt = new Date();
                         dt.setTime(parseInt(row.publishtime)*1000);
-                        return dt.format("yyyy-MM-dd hh:mm:ss")
+                        return dt.format("yyyy-MM-dd")
                     }, width: "4%"},
                 {"data": function (row) {
                         if (row.href != undefined) {
@@ -1075,23 +1076,25 @@
                         }
                         return ""
                     }, width: "3%"},
-                {"data": "budget", width: "3%", render: function (val) {
-                        if (val == undefined) {
-                            val = ""
+                {"data": function (row) {
+                        if (row.budget == undefined) {
+                            return ""
+                        }else {
+                            return row.budget
                         }
-                        return val
-                    }},
-                {"data": "bidamount", width: "3%", render: function (val) {
-                        if (val == undefined) {
-                            val = ""
+                    }, width: "3%"},
+                {"data": function (row) {
+                        if (row.bidamount == undefined) {
+                            return ""
+                        }else {
+                            return row.bidamount
                         }
-                        return val
-                    }},
+                    }, width: "3%"},
                 {"data": "bidopentime", width: "3%", render: function (val) {
                         if (val != undefined) {
                             var dt = new Date();
                             dt.setTime(parseInt(val)*1000);
-                            return dt.format("yyyy-MM-dd hh:mm:ss")
+                            return dt.format("yyyy-MM-dd")
                         }else {
                             return ""
                         }

+ 4 - 5
src/web/templates/private/rule_list.html

@@ -92,11 +92,10 @@
                   return dt.format("yyyy-MM-dd hh:mm:ss")
                 }},
                 {"data": "_id", width:"19%",render: function (val, a, row, pos) {
-                    // console.log(row);
-                    // var str = produceData(row);
+                    var s = [val, row.s_dataid];
                       tmp = '<div>' +
                           '<a class="btn btn-sm btn-primary" href="/service/rule/edit?id='+val+'">编辑</a>'+
-                          '<a class="btn btn-sm btn-danger" onclick="del(\'' + val + '\')">删除</a>'+
+                          '<a class="btn btn-sm btn-danger" onclick="del(\''+s+'\')">删除</a>'+
                           '<a class="btn btn-sm btn-success" href="/service/rule/download?s_dataid='+val+'" target="_Blank">导出</a>'+
                           '<a class="btn btn-sm btn-warning" onclick="archive(\'' + val + '\')">存档</a>'+
                           '</div>';
@@ -112,12 +111,12 @@
             ]
         });
     });
-    function del(_id){
+    function del(s){
         showConfirm("确定删除?", function() {
             $.ajax({
                 url:"/service/rule/del",
                 type:"post",
-                data:{"_id":_id},
+                data:{"_id": s.split(",")[0], "s_dataid": s.split(",")[1]},
                 success:function(r){
                   if(r.rep){
                     ttable.ajax.reload();