zouyuxuan 5 年之前
父节点
当前提交
69091ef155
共有 2 个文件被更改,包括 223 次插入140 次删除
  1. 179 81
      src/service/customer_service.go
  2. 44 59
      src/web/templates/private/customer_history.html

+ 179 - 81
src/service/customer_service.go

@@ -46,16 +46,18 @@ type Customer struct {
 	cuserRuleSetup  xweb.Mapper `xweb:"/service/cuser/rule/setup"`
 	productData     xweb.Mapper `xweb:"/service/cuser/produce"` //生成预览数据
 	//企业标签
-	euserTagEdit      xweb.Mapper `xweb:"/service/euser/tag/edit"`
-	euserTag          xweb.Mapper `xweb:"/service/euser/tag"`
-	euserImport       xweb.Mapper `xweb:"/service/esuer/tag/import"`
-	tagSetup          xweb.Mapper `xweb:"/service/euser/tag/setup"`
-	tagDel            xweb.Mapper `xweb:"/service/euser/tag/del"`
-	cuserRuleList     xweb.Mapper `xweb:"/service/tag/ruleList"`              //规则列表	客户
-	tagAssociated     xweb.Mapper `xweb:"/service/euser/tag/associated"`      //私有标签关联规则
-	customerAllRule   xweb.Mapper `xweb:"/service/customer/history/allrule"`  //用户历史规则
-	saveHistoryRule   xweb.Mapper `xweb:"/service/customer/history/saverule"` //保存历史规则
-	historyRuleCreate xweb.Mapper `xweb:"/service/cuser/rule/history/edit"`
+	euserTagEdit         xweb.Mapper `xweb:"/service/euser/tag/edit"`
+	euserTag             xweb.Mapper `xweb:"/service/euser/tag"`
+	euserImport          xweb.Mapper `xweb:"/service/esuer/tag/import"`
+	tagSetup             xweb.Mapper `xweb:"/service/euser/tag/setup"`
+	tagDel               xweb.Mapper `xweb:"/service/euser/tag/del"`
+	cuserRuleList        xweb.Mapper `xweb:"/service/tag/ruleList"`                //规则列表	客户
+	tagAssociated        xweb.Mapper `xweb:"/service/euser/tag/associated"`        //私有标签关联规则
+	historyTagAssociated xweb.Mapper `xweb:"/service/euser/historytag/associated"` //私有标签关联历史规则
+	customerAllRule      xweb.Mapper `xweb:"/service/customer/history/allrule"`    //用户历史规则
+	saveHistoryRule      xweb.Mapper `xweb:"/service/customer/history/saverule"`   //保存历史规则
+	historyRuleCreate    xweb.Mapper `xweb:"/service/cuser/rule/history/edit"`
+	historyCuserRuleList xweb.Mapper `xweb:"/service/tag/history/ruleList"` //私有标签关联历史规则
 }
 
 func (c *Customer) CustomerList() {
@@ -852,7 +854,6 @@ func (c *Customer) TagAssociated() {
 
 func (c *Customer) CustomerHistory() {
 	defer qu.Catch()
-	log.Println("&&&")
 	id := c.GetString("id")
 	query := bson.M{}
 	query["_id"] = qu.StringTOBsonId(id)
@@ -876,22 +877,22 @@ func (c *Customer) CustomerAllRule() {
 		"b_delete": false,
 	}
 	inc_query := bson.M{
-		"s_appid":customerId,
+		"s_appid": customerId,
 	}
 	//获取新增历史规则
-	inc_rules  := []map[string]interface{}{}
-	inc_rule :=make(map[string]interface{})
-	inc_data,_ := Mgo.FindOne("historylog",inc_query)
-	if inc_data!=nil&&(len(*inc_data) !=0){
-		for _,t := range (*inc_data)["dep_rule"].([]interface{}){
-			if t.(map[string]interface{})["is_new"].(bool){
-				inc_rule["id"] = t.(map[string]interface{})["id"]  //规则id
+	inc_rules := []map[string]interface{}{}
+	inc_rule := make(map[string]interface{})
+	inc_data, _ := Mgo.FindOne("historylog", inc_query)
+	if inc_data != nil && (len(*inc_data) != 0) {
+		for _, t := range (*inc_data)["dep_rule"].([]interface{}) {
+			if t.(map[string]interface{})["is_new"].(bool) {
+				inc_rule["id"] = t.(map[string]interface{})["id"] //规则id
 				inc_rule["s_depart_name"] = t.(map[string]interface{})["s_depart_name"]
 				inc_rule["s_name"] = t.(map[string]interface{})["s_name"]
 				inc_rule["s_depart_status"] = t.(map[string]interface{})["s_depart_status"]
 				inc_rule["s_rule_status"] = t.(map[string]interface{})["s_rule_status"]
 				inc_rule["rule_updatetime"] = t.(map[string]interface{})["rule_updatetime"]
-				inc_rules = append(inc_rules,inc_rule)
+				inc_rules = append(inc_rules, inc_rule)
 			}
 		}
 	}
@@ -917,9 +918,9 @@ func (c *Customer) CustomerAllRule() {
 			res = append(res, history_rule_data)
 		}
 		c.ServeJson(map[string]interface{}{
-			"status": "success",
-			"data":   res,
-			"inc_rules":inc_rules,
+			"status":    "success",
+			"data":      res,
+			"inc_rules": inc_rules,
 		})
 	} else {
 		c.ServeJson(map[string]interface{}{
@@ -931,72 +932,125 @@ func (c *Customer) CustomerAllRule() {
 
 //保存历史规则
 func (c *Customer) SaveHistoryRule() {
-	rules_id:=c.GetSlice("rulesid")
+	rules_id := c.GetString("rulesid")
 	userid := c.GetString("userid")
-	var tag_rules []map[string]interface{}
+	log.Println("userid",userid)
 	user_rules := make(map[string]interface{})
-	//获取私有标签
-	if userid !=""{
-		usertags,_:=Mgo.Find("eusertagrule",map[string]interface{}{"s_userid":userid,"b_delete":false},`{"i_createtime":-1}`,`{"o_list":1}`,false,0,0)
-		if usertags!=nil&&len(*usertags)!=0{
-			log.Println("usertags",*usertags)
-			for _,tag_rule:=range *usertags{
-				log.Println("tag_rule",tag_rule)
-				delete(tag_rule,"_id")
-				tag_rules = append(tag_rules,tag_rule)
+	user_history, _ := Mgo.FindOne("historylog", map[string]interface{}{
+		"user_id":userid,
+	})
+	if *user_history != nil&&len(*user_history)!=0 {
+		dep_rules := (*user_history)["dep_rules"].([]interface{})
+		for _, m := range dep_rules {
+			if strings.Contains(rules_id,m.(map[string]interface{})["_id"].(bson.ObjectId).Hex()) {
+				continue
 			}
-		}
-		userinfo,_ := Mgo.FindOne("euer",map[string]interface{}{
-			"s_userid":userid,
-		})
-		if userinfo !=nil&&len(*userinfo)!=0{
-			log.Println("s_name",user_rules["s_name"])
-			user_rules["s_name"] = (*userinfo)["s_customername"]
-			user_rules["s_appid"] = (*userinfo)["s_appid"]
-		}
-	}
-	//获取用户规则
-	if len(rules_id)>0{
-		dep_rules := []interface{}{}
-		for _,rule := range rules_id{
-			dep_rule := make(map[string]interface{})
-			query := bson.M{
-				"_id":   bson.ObjectIdHex(rule),
-				"b_delete":   false,
+			rules_id_list := strings.Split(rules_id, ",")
+			for _, rule := range rules_id_list {
+				//dep_rule := make(map[string]interface{})
+				query := bson.M{
+					"_id":      bson.ObjectIdHex(rule),
+					"b_delete": false,
+				}
+				res, _ := Mgo.FindOne("euserdepartrule", query)
+				if res != nil && len(*res) != 0 {
+					//获取规则所属部门信息
+					department_info, _ := Mgo.FindOne("euserdepart", map[string]interface{}{
+						"_id":      bson.ObjectIdHex((*res)["s_departid"].(string)),
+						"b_delete": false,
+					})
+					//dep_rule["_id"] = (*res)["_id"]
+					//dep_rule["is_new"] = false
+					//dep_rule["s_departid"] = (*res)["s_departid"]
+					//dep_rule["s_name"] = (*res)["s_tagname"]
+					//dep_rule["o_rules"] = *res
+					//dep_rule["rule_updatetime"] = (*department_info)["i_updatetime"]
+					//dep_rule["s_depart_name"] =
+					//dep_rule["s_depart_status"] = (*department_info)["i_isuse"]
+					(*res)["is_new"] = false
+					(*res)["s_depart_name"] = (*department_info)["s_name"]
+					dep_rules = append(dep_rules, *res)
+				}
+			}
+			set := bson.M{
+				"$set": bson.M{
+					"dep_rules": dep_rules,
+					"createtime": time.Now().Unix(),
+				},
 			}
-			res,_:=Mgo.FindOne("cuserdepartrule",query)
-			if res !=nil&&len(*res)!=0{
-				//获取规则所属部门信息
-				department_info,_:=Mgo.FindOne("cuserdepart",map[string]interface{}{
-					"_id":bson.ObjectIdHex((*res)["s_departid"].(string)),
-					"b_delete":false,
+			isupdata:=Mgo.Update("historylog", map[string]interface{}{
+				"user_id": userid,
+			}, set,false,false)
+			if isupdata {
+				c.ServeJson(map[string]interface{}{
+					"status": "success",
+				})
+			} else {
+				c.ServeJson(map[string]interface{}{
+					"status": "fail",
 				})
-				dep_rule["id"] = (*res)["_id"].(bson.ObjectId).Hex()
-				dep_rule["is_new"] = true
-				dep_rule["s_departid"] = (*res)["s_departid"]
-				dep_rule["s_name"] = (*res)["s_tagname"]
-				dep_rule["o_rules"] = (*res)["o_rules"]
-				dep_rule["rule_updatetime"] = (*department_info)["i_updatetime"]
-				dep_rule["s_depart_name"] = (*department_info)["s_name"]
-				dep_rule["s_depart_status"] = (*department_info)["i_isuse"]
-				dep_rules = append(dep_rules,dep_rule)
 			}
 		}
-		user_rules["dep_rules"] = dep_rules
-		user_rules["tag_rules"] = tag_rules
-		user_rules["createtime"] = time.Now().Unix()
-	}
-	issave :=Mgo.Save("historylog",user_rules)
-	if issave!=""{
-		c.ServeJson(map[string]interface{}{
-			"status":"success",
-		})
-	}else{
-		c.ServeJson(map[string]interface{}{
-			"status":"fail",
-		})
-	}
+	} else {
+		if userid != "" {
+			//获取私有标签
+			usertags := getTserTag(userid)
+			user_rules["tag_rules"] = usertags
+			userinfo, _ := Mgo.FindOne("euer", map[string]interface{}{
+				"s_userid": userid,
+			})
+			if userinfo != nil && len(*userinfo) != 0 {
+				user_rules["s_name"] = (*userinfo)["s_customername"]
+				user_rules["s_appid"] = (*userinfo)["s_appid"]
+			}
+		}
+		//获取用户规则
+		if rules_id != "" {
+			dep_rules := []interface{}{}
+			rules_id_list := strings.Split(rules_id, ",")
+			for _, rule := range rules_id_list {
+				//dep_rule := make(map[string]interface{})
+				query := bson.M{
+					"_id":      bson.ObjectIdHex(rule),
+					"b_delete": false,
+				}
+				res, _ := Mgo.FindOne("cuserdepartrule", query)
+				if res != nil && len(*res) != 0 {
+					//获取规则所属部门信息
+					department_info, _ := Mgo.FindOne("cuserdepart", map[string]interface{}{
+						"_id":      bson.ObjectIdHex((*res)["s_departid"].(string)),
+						"b_delete": false,
+					})
+					//dep_rule["id"] = (*res)["_id"].(bson.ObjectId).Hex()
+					//dep_rule["is_new"] = false
+					//dep_rule["s_departid"] = (*res)["s_departid"]
+					//dep_rule["s_name"] = (*res)["s_tagname"]
+					//dep_rule["o_rules"] = *res
+					//dep_rule["rule_updatetime"] = (*department_info)["i_updatetime"]
+					//dep_rule["s_depart_name"] = (*department_info)["s_name"]
+					//dep_rule["s_depart_status"] = (*department_info)["i_isuse"]
+					(*res)["is_new"] = false
+					(*res)["s_depart_name"] = (*department_info)["s_name"]
+					dep_rules = append(dep_rules, *res)
+				}
+			}
+			user_rules["dep_rules"] = dep_rules
+			user_rules["user_id"] = userid
+			user_rules["createtime"] = time.Now().Unix()
+			user_rules["state"] = 0
 
+		}
+		issave := Mgo.Save("historylog", user_rules)
+		if issave != "" {
+			c.ServeJson(map[string]interface{}{
+				"status": "success",
+			})
+		} else {
+			c.ServeJson(map[string]interface{}{
+				"status": "fail",
+			})
+		}
+	}
 }
 
 func (c *Customer) HistoryRuleCreate() {
@@ -1082,3 +1136,47 @@ func (c *Customer) HistoryRuleCreate() {
 		c.Render("private/cuser_rule_history_edit.html", &c.T)
 	}
 }
+
+//私有标签关联数据
+func (c *Customer) HistoryTagAssociated() {
+	defer qu.Catch()
+	userid := c.GetString("userid")
+	rule_id := c.GetString("_id")
+	tags :=c.GetString("ids")
+	tags_id := strings.Split(tags,",")
+
+	if userid!=""{
+		user_info,_ :=Mgo.FindOne("historylog",map[string]interface{}{
+			"user_id":userid,
+		})
+		log.Println("tag_id",tags_id)
+		if user_info!=nil{
+			tagrules := (*user_info)["tag_rules"]
+			for _,m := range tagrules.([]interface{}){
+					if m.(map[string]interface{})["_id"].(bson.ObjectId).Hex() == rule_id{
+						log.Println("&&")
+						m.(map[string]interface{})["o_departruleids"] = tags
+				}
+			}
+			set := bson.M{
+				"$set": bson.M{
+					"tag_rules": tagrules,
+				},
+			}
+			log.Println("set",set)
+			is_updata:=Mgo.Update("historylog",map[string]interface{}{
+				"user_id":userid,
+			},set,false,false)
+			if is_updata{
+				c.ServeJson(map[string]interface{}{
+					"rep": is_updata,
+				})
+			}
+		}
+	}
+}
+
+func getTserTag(userid string) *[]map[string]interface{} {
+	usertags, _ := Mgo.Find("eusertagrule", map[string]interface{}{"s_userid": userid, "b_delete": false}, `{"i_createtime":-1}`, nil, false, 0, 0)
+	return usertags
+}

+ 44 - 59
src/web/templates/private/customer_history.html

@@ -220,6 +220,9 @@
                                     <th>创建时间</th>
                                 </tr>
                                 </thead>
+                                <tbody class="historyCuserRule">
+
+                                </tbody>
                             </table>
                         </div>
                     </div>
@@ -365,6 +368,7 @@
     function cancelModel() {
         $('#modal-add-depart').modal("hide")
         $('#modal-associated').modal("hide")
+        $('#modal-history').modal("hide")
     }
     //表格全选
     function allSelect(obj) {
@@ -608,58 +612,32 @@
     var tagid = ""
     //关联规则
     function associated(val) {
-        tagid = val.split(",")[0]
-        $('#cuserRule').DataTable({
-            "destroy": true,
-            "paging": true,
-            "lengthChange": false,
-            "searching": false,
-            "ordering": false,
-            "info": true,
-            "autoWidth": false,
-            "serverSide": true,
-            "ajax": {
-                url: "/service/tag/ruleList",
-                type: "post",
-                data: {"eid": val.split(",")[1]},
-            },
-            "language": {
-                "url": "/dist/js/dataTables.chinese.lang"
-            },
-            "fnDrawCallback": function () {
-                this.api().column(0).nodes().each(function (cell, i) {
-                    cell.innerHTML = i + 1;
-                });
-            },
-            "columns": [
-                {"data": null, width: "1%"},
-                {"data": "", width: "1%", render: function() {
-                        return `<input type="checkbox" name="ckb-rule" onclick="singleSelect(this)" style="text-align: center">`
-                    }},
-                {"data": "s_tagname", width: "20%"},
-                {"data": "s_depart", width: "10%"},
-                {"data": "i_updatetime", width:"10%", render: function (val) {
-                        var dt = new Date()
-                        dt.setTime(parseInt(val) * 1000);
-                        return dt.format("yyyy-MM-dd hh:mm:ss")
-                    }},
-            ],
-        });
+        tagid = val
+        var num = 1
+        var html = ""
+        if (selected_rules.length>0){
+            for (var i=0;i<selected_rules.length;i++){
+                html += '<tr><td>'+num+'</td><td><input type="checkbox" id="tag_id" onclick="getcheck(this)"/></td><td>'+selected_rules[i].rule_name+'</td><td>'+selected_rules[i].department_name+'</td><td>'+selected_rules[i].create_time+'</td><td hidden>'+selected_rules[i].rule_id+'</td>';
+                num++
+            }
+            $(".historyCuserRule").html(html)
+        }
         $('#modal-associated').modal("show")
     }
     function saveTagrule() {
-        var ids = [];
-        var table = $('#cuserRule').dataTable();
-        var nTrs = table.fnGetNodes();
-        for (var i = 0; i < nTrs.length; i++) {
-            if ($(nTrs[i].childNodes[1]).find("input").prop("checked")) {
-                ids.push(table.fnGetData(nTrs[i])._id);
+        var tag_rulesids = new Array()
+        _id = tagid.split(",")[0];
+        $(".historyCuserRule tr").each(function () {
+            var tagchk = $(this).find('td').eq(1).find("#tag_id");
+            if (tagchk.hasClass('checked')){
+                var tag_ruleid = $(this).find('td').eq(5).text();
+                tag_rulesids.push(tag_ruleid)
             }
-        }
+        })
         $.ajax({
-            url: "/service/euser/tag/associated",
+            url: "/service/euser/historytag/associated",
             type: "post",
-            data: {"_id": tagid, "ids": ids.join(",")},
+            data: {"_id": _id, "ids": tag_rulesids.join(","),"userid":c_id},
             success: function (r) {
                 if (r.rep) {
                     // window.location.reload()
@@ -757,23 +735,30 @@
         return dates;
     }
 
+    var rules_id = new Array();
+    var selected_rules = new Array()
     function saveHistoryRule(e) {
-        var rules_id = new Array();
-        var selected_rules = new Array()
+        var nowDate = new Date();
         $(".history_rules tr").each(function () {
             var chk = $(this).find('td').eq(0).find("#rule_id");
             if (chk.hasClass('checked')){
                 var selected_rule = new Object()
-                selected_rule.department_name = $(this).find('td').eq(2).text();
-                selected_rule.rule_name = $(this).find('td').eq(3).text();
-                selected_rule.update_time = $(this).find('td').eq(4).text();
-                selected_rule.department_status = $(this).find('td').eq(5).text();
-                selected_rule.rule_status = $(this).find('td').eq(6).text();
-                selected_rule.isinc = $(this).find('td').eq(8).text();
-
                 var rule_id = $(this).find('td').eq(7).text();
-                rules_id.push(rule_id);
-                selected_rules.push(selected_rule)
+                if(rules_id.indexOf(rule_id)>-1){
+                    console.log("元素存在")
+                }else{
+                    selected_rule.department_name = $(this).find('td').eq(2).text();
+                    selected_rule.rule_name = $(this).find('td').eq(3).text();
+                    selected_rule.update_time = $(this).find('td').eq(4).text();
+                    selected_rule.department_status = $(this).find('td').eq(5).text();
+                    selected_rule.rule_status = $(this).find('td').eq(6).text();
+                    selected_rule.isinc = $(this).find('td').eq(8).text();
+                    selected_rule.create_time = nowDate.getFullYear()+"-"+(nowDate.getMonth()+1)+"-"+nowDate.getDate()+" "+nowDate.getHours()+":"+nowDate.getMinutes()+":"+nowDate.getSeconds();
+                    selected_rule.rule_id = rule_id
+                    rules_id.push(rule_id);
+                    selected_rules.push(selected_rule)
+                }
+
             }
         })
         var num = 1
@@ -790,12 +775,12 @@
             }
         }
         $(".show-select").show();
-        $(".selected-rules").append(html);
+        $(".selected-rules").html(html);
         $("#modal-history").modal("hide");
         $.ajax({
             url:"/service/customer/history/saverule",
             type:"POST",
-            data:{'rulesid':rules_id,'userid':c_id,},
+            data:{'rulesid':rules_id.join(','),'userid':c_id,},
             traditional:true,
             success:function (r) {
                 if (r.status == "success"){