Browse Source

add:添加经销商,经销商可使用用户管理,公司管理,

zoie 1 week ago
parent
commit
352ec443d2

+ 59 - 14
controllers/Account.go

@@ -15,11 +15,6 @@ type AccountController struct {
 	beego.Controller
 }
 
-func (c *AccountController) Login_html() {
-	c.TplName = "login.html"
-
-}
-
 // 验证登录
 func (c *AccountController) Login_verification() {
 	Admin_user := c.GetString("bzd_username")
@@ -96,11 +91,15 @@ func (c *AccountController) List() {
 	}
 
 	T_name := c.GetString("T_name")
+	T_Distributor_id := c.GetString("T_Distributor_id")
+	if len(T_Distributor_id) == 0 {
+		T_Distributor_id = User_r.T_Distributor_id
+	}
 
 	var cnt int
 	PowerList := Account.Read_Power_List_ALL_1()
 	PowerMap := Account.UserPowerListToPowerMap(PowerList)
-	List, cnt := Account.Read_Admin_List(T_name, page, page_z, PowerMap)
+	List, cnt := Account.Read_Admin_List(T_Distributor_id, T_name, page, page_z, PowerMap)
 	page_size := math.Ceil(float64(cnt) / float64(page_z))
 	r_jsons.List = List
 	r_jsons.Page = page
@@ -113,6 +112,42 @@ func (c *AccountController) List() {
 	return
 }
 
+// 管理员-详情
+func (c *AccountController) Get() {
+	// 验证登录 User_is, User_r
+	User_r, User_is := Account.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
+	if !User_is {
+		c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
+		c.ServeJSON()
+		return
+	}
+
+	type User struct {
+		Account.Admin
+		Permission string
+	}
+	var u User
+	u.Admin = User_r
+	// 内部管理员
+	if len(User_r.T_Distributor_id) == 0 {
+		if User_r.T_power <= 2 {
+			u.Permission = "NBGLY" //内部管理员
+		} else {
+			u.Permission = "NBPTYH" //内部普通用户
+		}
+	} else {
+		if User_r.T_power <= 2 {
+			u.Permission = "JXSGLY" //经销商管理员
+		} else {
+			u.Permission = "JXSPTYH" //经销商普通用户
+		}
+	}
+
+	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: u}
+	c.ServeJSON()
+	return
+}
+
 // 管理员-添加-
 func (c *AccountController) Add() {
 	// 验证登录 User_is, User_r
@@ -134,15 +169,25 @@ func (c *AccountController) Add() {
 	T_user := c.GetString("T_user")
 	T_pass := c.GetString("T_pass")
 	T_wxname := c.GetString("T_wxname")
+	T_Distributor_id := c.GetString("T_Distributor_id")
+	if len(T_Distributor_id) == 0 {
+		T_Distributor_id = User_r.T_Distributor_id
+	}
+	if T_power <= 1 {
+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "无权操作!"}
+		c.ServeJSON()
+		return
+	}
 
 	var_ := Account.Admin{
-		T_uuid:  T_uuid,
-		T_power: T_power,
-		T_name:  T_name,
-		T_user:  T_user,
-		T_pass:  T_pass,
-		T_wxname:  T_wxname,
-		T_State: 1,
+		T_uuid:           T_uuid,
+		T_power:          T_power,
+		T_name:           T_name,
+		T_user:           T_user,
+		T_pass:           T_pass,
+		T_wxname:         T_wxname,
+		T_State:          1,
+		T_Distributor_id: T_Distributor_id, // 分销商id,内部管理员为空
 	}
 
 	if err, _ := Account.Read_Admin_ByT_user(T_user); err == nil {
@@ -304,7 +349,7 @@ func (c *AccountController) List_All() {
 	PowerMap := Account.UserPowerListToPowerMap(PowerList)
 
 	var r_jsons lib.R_JSONS
-	r_jsons.List = Account.Read_Admin_List_ALL_Power(PowerMap)
+	r_jsons.List = Account.Read_Admin_List_ALL_Power(User_r.T_Distributor_id, PowerMap)
 	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
 	c.ServeJSON()
 	return

+ 193 - 0
controllers/Distributor.go

@@ -0,0 +1,193 @@
+package controllers
+
+import (
+	"ColdVerify_server/conf"
+	"ColdVerify_server/lib"
+	"ColdVerify_server/models/Account"
+	"ColdVerify_server/models/Distributor"
+	"ColdVerify_server/models/System"
+	beego "github.com/beego/beego/v2/server/web"
+	"math"
+)
+
+type DistributorController struct {
+	beego.Controller
+}
+
+// 列表 -
+func (c *DistributorController) List() {
+	// 验证登录 User_is, User_r
+	User_r, User_is := Account.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
+	if !User_is {
+		c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
+		c.ServeJSON()
+		return
+	}
+	if User_r.T_power > 2 || len(User_r.T_Distributor_id) > 0 {
+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "无权操作!"}
+		c.ServeJSON()
+		return
+	}
+
+	var r_jsons lib.R_JSONS
+	page, _ := c.GetInt("page")
+	if page < 1 {
+		page = 1
+	}
+	page_z, _ := c.GetInt("page_z")
+	if page_z < 1 {
+		page_z = conf.Page_size
+	}
+
+	T_name := c.GetString("T_name")
+
+	var cnt int64
+	List, cnt := Distributor.Read_Distributor_List(T_name, page, page_z)
+	page_size := math.Ceil(float64(cnt) / float64(page_z))
+	r_jsons.List = List
+	r_jsons.Page = page
+	r_jsons.Page_size = int(page_size)
+	r_jsons.Pages = lib.Func_page(int64(page), int64(page_size))
+	r_jsons.Num = int(cnt)
+
+	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
+	c.ServeJSON()
+	return
+}
+
+// 添加-
+func (c *DistributorController) Add() {
+	// 验证登录 User_is, User_r
+	User_r, User_is := Account.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
+	if !User_is {
+		c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
+		c.ServeJSON()
+		return
+	}
+	if User_r.T_power > 2 || len(User_r.T_Distributor_id) > 0 {
+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "无权操作!"}
+		c.ServeJSON()
+		return
+	}
+
+	T_name := c.GetString("T_name")
+
+	var_ := Distributor.Distributor{
+		T_name:  T_name,
+		T_State: 1,
+	}
+
+	Id, is := Distributor.Add_Distributor(var_)
+	if !is {
+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "添加失败!"}
+		c.ServeJSON()
+		return
+	}
+	System.Add_UserLogs_T(User_r.T_uuid, "经销商管理", "添加", var_)
+
+	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: Id}
+	c.ServeJSON()
+	return
+}
+
+// 修改-
+func (c *DistributorController) Up() {
+	// 验证登录 User_is, User_r
+	User_r, User_is := Account.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
+	if !User_is {
+		c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
+		c.ServeJSON()
+		return
+	}
+	if User_r.T_power > 2 || len(User_r.T_Distributor_id) > 0 {
+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "无权操作!"}
+		c.ServeJSON()
+		return
+	}
+
+	T_name := c.GetString("T_name")
+	T_Distributor_id := c.GetString("T_Distributor_id")
+
+	r, is := Distributor.Read_Distributor(T_Distributor_id)
+	if !is {
+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id 错误!"}
+		c.ServeJSON()
+		return
+	}
+
+	// .......
+	if len(T_name) > 0 {
+		r.T_name = T_name
+	}
+
+	if !Distributor.Update_Distributor(r, "T_name") {
+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "修改失败!"}
+		c.ServeJSON()
+		return
+	}
+	System.Add_UserLogs_T(User_r.T_uuid, "经销商管理", "修改", r)
+
+	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
+	c.ServeJSON()
+	return
+}
+
+// 删除-
+func (c *DistributorController) Del() {
+	// 验证登录 User_is, User_r
+	User_r, User_is := Account.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
+	if !User_is {
+		c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
+		c.ServeJSON()
+		return
+	}
+	if User_r.T_power > 2 || len(User_r.T_Distributor_id) > 0 {
+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "无权操作!"}
+		c.ServeJSON()
+		return
+	}
+
+	T_Distributor_id := c.GetString("T_Distributor_id")
+
+	r, is := Distributor.Read_Distributor(T_Distributor_id)
+	if !is {
+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id 错误!"}
+		c.ServeJSON()
+		return
+	}
+
+	if !Distributor.Delete_Distributor(r) {
+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "删除失败!"}
+		c.ServeJSON()
+		return
+	}
+	// TODO 删除经销商下的用户
+	System.Add_UserLogs_T(User_r.T_uuid, "经销商管理", "删除", r)
+	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
+	c.ServeJSON()
+	return
+}
+
+// 管理员-全部列表-
+func (c *DistributorController) List_All() {
+	// 验证登录 User_is, User_r
+	User_r, User_is := Account.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
+	if !User_is {
+		c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
+		c.ServeJSON()
+		return
+	}
+
+	if User_r.T_power > 2 || len(User_r.T_Distributor_id) > 0 {
+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "无权操作!"}
+		c.ServeJSON()
+		return
+	}
+	T_name := c.GetString("T_name")
+
+	var r_jsons lib.R_JSONS
+	r_jsons.List = Distributor.Read_Distributor_List_ALL(T_name)
+	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
+	c.ServeJSON()
+	return
+}

+ 42 - 119
controllers/InfoTemplate.go

@@ -10,23 +10,50 @@ import (
 	beego "github.com/beego/beego/v2/server/web"
 	"math"
 	"strconv"
+	"strings"
 	"time"
 )
 
 type InfoTemplateController struct {
 	beego.Controller
+	User_r Account.Admin // 登陆的用户
 }
 
-// 列表 -
-func (c *InfoTemplateController) List() {
+func (c *InfoTemplateController) Prepare() {
+	GetCookie := c.Ctx.GetCookie("User_tokey")
+	GetString := c.GetString("User_tokey")
+	// 此接口单独从body获取token验证,此处不做验证
+	if strings.Contains(c.Ctx.Request.URL.Path, "/InfoTemplateMapData/Pu") {
+		return
+	}
+
 	// 验证登录 User_is, User_r
-	_, User_is := Account.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
+	User_r, User_is := Account.Verification_Admin(GetCookie, GetString)
 	if !User_is {
 		c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
 		c.ServeJSON()
 		return
 	}
 
+	// 经销商只能访问列表接口,不能操作
+
+	if len(User_r.T_Distributor_id) > 0 {
+		checkUrl := []string{"Add", "Up", "Del", "Copy"}
+		for _, v := range checkUrl {
+			if strings.Contains(c.Ctx.Request.URL.Path, v) {
+				c.Data["json"] = lib.JSONS{Code: 202, Msg: "没有操作权限!"}
+				c.ServeJSON()
+				return
+			}
+		}
+	}
+
+	c.User_r = User_r
+}
+
+// 列表 -
+func (c *InfoTemplateController) List() {
+
 	var r_jsons lib.R_JSONS
 	page, _ := c.GetInt("page")
 	if page < 1 {
@@ -62,13 +89,6 @@ func (c *InfoTemplateController) List() {
 
 // 添加-
 func (c *InfoTemplateController) Add() {
-	// 验证登录 User_is, User_r
-	User_r, User_is := Account.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
-	if !User_is {
-		c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
-		c.ServeJSON()
-		return
-	}
 
 	T_name := c.GetString("T_name")
 	T_sort, _ := c.GetInt("T_sort")
@@ -86,7 +106,7 @@ func (c *InfoTemplateController) Add() {
 		c.ServeJSON()
 		return
 	}
-	System.Add_UserLogs_T(User_r.T_uuid, "信息采集信息采集模版", "添加", var_)
+	System.Add_UserLogs_T(c.User_r.T_uuid, "信息采集信息采集模版", "添加", var_)
 
 	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: Id}
 	c.ServeJSON()
@@ -95,13 +115,6 @@ func (c *InfoTemplateController) Add() {
 
 // 修改-
 func (c *InfoTemplateController) Up() {
-	// 验证登录 User_is, User_r
-	User_r, User_is := Account.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
-	if !User_is {
-		c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
-		c.ServeJSON()
-		return
-	}
 
 	T_name := c.GetString("T_name")
 	T_sort, T_sort_err := c.GetInt("T_sort")
@@ -130,7 +143,7 @@ func (c *InfoTemplateController) Up() {
 		c.ServeJSON()
 		return
 	}
-	System.Add_UserLogs_T(User_r.T_uuid, "信息采集信息采集模版", "修改", r)
+	System.Add_UserLogs_T(c.User_r.T_uuid, "信息采集信息采集模版", "修改", r)
 
 	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
 	c.ServeJSON()
@@ -139,13 +152,6 @@ func (c *InfoTemplateController) Up() {
 
 // 删除-
 func (c *InfoTemplateController) Del() {
-	// 验证登录 User_is, User_r
-	User_r, User_is := Account.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
-	if !User_is {
-		c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
-		c.ServeJSON()
-		return
-	}
 
 	T_InfoTemplate_id := c.GetString("T_InfoTemplate_id")
 
@@ -168,7 +174,7 @@ func (c *InfoTemplateController) Del() {
 		}
 	}
 
-	System.Add_UserLogs_T(User_r.T_uuid, "信息采集信息采集模版", "删除", r)
+	System.Add_UserLogs_T(c.User_r.T_uuid, "信息采集信息采集模版", "删除", r)
 	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
 	c.ServeJSON()
 	return
@@ -177,13 +183,6 @@ func (c *InfoTemplateController) Del() {
 
 // 复制-
 func (c *InfoTemplateController) Copy() {
-	// 验证登录 User_is, User_r
-	User_r, User_is := Account.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
-	if !User_is {
-		c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
-		c.ServeJSON()
-		return
-	}
 
 	T_InfoTemplate_id := c.GetString("T_InfoTemplate_id")
 	T_name := c.GetString("T_name")
@@ -249,7 +248,7 @@ func (c *InfoTemplateController) Copy() {
 		return
 	}
 
-	System.Add_UserLogs_T(User_r.T_uuid, "信息采集信息采集模版", "复制", var_)
+	System.Add_UserLogs_T(c.User_r.T_uuid, "信息采集信息采集模版", "复制", var_)
 
 	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: new_id}
 	c.ServeJSON()
@@ -286,13 +285,6 @@ func (c *InfoTemplateController) Map_List() {
 
 // 标签添加-
 func (c *InfoTemplateController) Map_Add() {
-	// 验证登录 User_is, User_r
-	User_r, User_is := Account.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
-	if !User_is {
-		c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
-		c.ServeJSON()
-		return
-	}
 
 	T_InfoTemplate_id := c.GetString("T_InfoTemplate_id")
 	T_name := c.GetString("T_name")
@@ -315,7 +307,7 @@ func (c *InfoTemplateController) Map_Add() {
 		return
 	}
 
-	System.Add_UserLogs_T(User_r.T_uuid, "信息采集信息采集模版标签", "添加", var_)
+	System.Add_UserLogs_T(c.User_r.T_uuid, "信息采集信息采集模版标签", "添加", var_)
 
 	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: Id}
 	c.ServeJSON()
@@ -324,13 +316,6 @@ func (c *InfoTemplateController) Map_Add() {
 
 // 标签修改-
 func (c *InfoTemplateController) Map_Up() {
-	// 验证登录 User_is, User_r
-	User_r, User_is := Account.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
-	if !User_is {
-		c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
-		c.ServeJSON()
-		return
-	}
 
 	T_name := c.GetString("T_name")
 	T_text := c.GetString("T_text")
@@ -366,7 +351,7 @@ func (c *InfoTemplateController) Map_Up() {
 		return
 	}
 
-	System.Add_UserLogs_T(User_r.T_uuid, "信息采集信息采集模版标签", "修改", r)
+	System.Add_UserLogs_T(c.User_r.T_uuid, "信息采集信息采集模版标签", "修改", r)
 
 	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
 	c.ServeJSON()
@@ -375,13 +360,6 @@ func (c *InfoTemplateController) Map_Up() {
 
 // 标签删除-
 func (c *InfoTemplateController) Map_Del() {
-	// 验证登录 User_is, User_r
-	User_r, User_is := Account.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
-	if !User_is {
-		c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
-		c.ServeJSON()
-		return
-	}
 
 	T_id := c.GetString("T_id")
 
@@ -391,7 +369,7 @@ func (c *InfoTemplateController) Map_Del() {
 			c.ServeJSON()
 			return
 		}
-		System.Add_UserLogs_T(User_r.T_uuid, "信息采集信息采集模版标签", "删除", r)
+		System.Add_UserLogs_T(c.User_r.T_uuid, "信息采集信息采集模版标签", "删除", r)
 		c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
 		c.ServeJSON()
 		return
@@ -406,13 +384,6 @@ func (c *InfoTemplateController) Map_Del() {
 
 // 标签数据列表 -
 func (c *InfoTemplateController) Map_Data_List() {
-	// 验证登录 User_is, User_r
-	_, User_is := Account.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
-	if !User_is {
-		c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
-		c.ServeJSON()
-		return
-	}
 
 	T_InfoTemplate_id := c.GetString("T_InfoTemplate_id")
 
@@ -443,14 +414,6 @@ func (c *InfoTemplateController) Map_Data_List() {
 func (c *InfoTemplateController) Map_Data_Pu() {
 	//验证登录 User_is, User_r
 
-	//token := c.Ctx.Request.Header.Get("user_tokey")
-	//User_r, User_is := Account.Verification_Admin(token, "")
-	//if !User_is {
-	//	c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
-	//	c.ServeJSON()
-	//	return
-	//}
-
 	type RequestBody struct {
 		User_tokey          string
 		T_InfoCollection_id string
@@ -514,13 +477,6 @@ func (c *InfoTemplateController) Map_Data_Pu() {
 }
 
 func (c *InfoTemplateController) Map_Data_Copy() {
-	// 验证登录 User_is, User_r
-	User_r, User_is := Account.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
-	if !User_is {
-		c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
-		c.ServeJSON()
-		return
-	}
 
 	T_copy_InfoCollection_id := c.GetString("T_copy_InfoCollection_id")
 	copy_InfoCollection, is := InfoCollection.Read_InfoCollection(T_copy_InfoCollection_id)
@@ -562,7 +518,7 @@ func (c *InfoTemplateController) Map_Data_Copy() {
 		c.ServeJSON()
 		return
 	}
-	System.Add_UserLogs_T(User_r.T_uuid, "信息采集模版标签数据", "复制", MapDataList)
+	System.Add_UserLogs_T(c.User_r.T_uuid, "信息采集模版标签数据", "复制", MapDataList)
 
 	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: ids}
 	c.ServeJSON()
@@ -570,25 +526,11 @@ func (c *InfoTemplateController) Map_Data_Copy() {
 }
 
 func (c *InfoTemplateController) Class_List() {
-	// 验证登录 User_is, User_r
-	_, User_is := Account.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
-	if !User_is {
-		c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
-		c.ServeJSON()
-		return
-	}
 	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: InfoCollection.Read_InfoTemplateClass_List()}
 	c.ServeJSON()
 	return
 }
 func (c *InfoTemplateController) Class_Add() {
-	// 验证登录 User_is, User_r
-	User_r, User_is := Account.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
-	if !User_is {
-		c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
-		c.ServeJSON()
-		return
-	}
 
 	T_name := c.GetString("T_name")
 	T_fid, _ := c.GetInt("T_fid")
@@ -606,19 +548,13 @@ func (c *InfoTemplateController) Class_Add() {
 		return
 	}
 
-	System.Add_UserLogs_T(User_r.T_uuid, "信息采集模版分类", "添加", var_)
+	System.Add_UserLogs_T(c.User_r.T_uuid, "信息采集模版分类", "添加", var_)
 
 	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: Id}
 	c.ServeJSON()
 	return
 }
 func (c *InfoTemplateController) Class_Up() {
-	User_r, User_is := Account.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
-	if !User_is {
-		c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
-		c.ServeJSON()
-		return
-	}
 
 	T_id, _ := c.GetInt("T_id")
 	T_name := c.GetString("T_name")
@@ -640,19 +576,13 @@ func (c *InfoTemplateController) Class_Up() {
 		return
 	}
 
-	System.Add_UserLogs_T(User_r.T_uuid, "信息采集模版分类", "修改", R_InfoTemplateToolClass)
+	System.Add_UserLogs_T(c.User_r.T_uuid, "信息采集模版分类", "修改", R_InfoTemplateToolClass)
 
 	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
 	c.ServeJSON()
 	return
 }
 func (c *InfoTemplateController) Class_Del() {
-	User_r, User_is := Account.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
-	if !User_is {
-		c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
-		c.ServeJSON()
-		return
-	}
 
 	T_id, _ := c.GetInt("T_id")
 	R_InfoTemplateToolClass, err := InfoCollection.Read_InfoTemplateClass_ById(T_id)
@@ -670,7 +600,7 @@ func (c *InfoTemplateController) Class_Del() {
 		return
 	}
 
-	System.Add_UserLogs(User_r.T_uuid, "信息采集模版分类", "删除", strconv.Itoa(T_id))
+	System.Add_UserLogs(c.User_r.T_uuid, "信息采集模版分类", "删除", strconv.Itoa(T_id))
 
 	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
 	c.ServeJSON()
@@ -679,13 +609,6 @@ func (c *InfoTemplateController) Class_Del() {
 
 // 复制信息采集-分类-标签
 func (c *InfoTemplateController) Class_Copy() {
-	// 验证登录 User_is, User_r
-	User_r, User_is := Account.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
-	if !User_is {
-		c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
-		c.ServeJSON()
-		return
-	}
 
 	T_id, _ := c.GetInt("T_id") // 要复制的信息采集分类id
 	T_name := c.GetString("T_name")
@@ -711,7 +634,7 @@ func (c *InfoTemplateController) Class_Copy() {
 		return
 	}
 
-	System.Add_UserLogs_T(User_r.T_uuid, "信息采集模版分类", "复制", T_id)
+	System.Add_UserLogs_T(c.User_r.T_uuid, "信息采集模版分类", "复制", T_id)
 
 	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
 	c.ServeJSON()

+ 55 - 56
controllers/Task.go

@@ -69,7 +69,7 @@ func (c *TaskController) List() {
 	T_reporting_state := c.GetString("T_reporting_state")   // 报告编写 状态 0 未完成 1 已完成(客户通过) 2已退回(客户) 3已通过(负责人) 4已退回(负责人) 5已提交
 	T_delivery_state := c.GetString("T_delivery_state")     // 交付审核 状态 0 未完成 1 已完成 2 处理中
 	T_marking_state := c.GetString("T_marking_state")       // 验证标识 状态 0 未完成 1 已完成
-	CreateTime := c.GetString("CreateTime")       // 任务添加时间
+	CreateTime := c.GetString("CreateTime")                 // 任务添加时间
 
 	UserMap := Account.UserListToMap(Account.Read_User_List_ALL_1())
 	AdminMap := Account.AdminListToMap(Account.Read_Admin_List_ALL_1())
@@ -80,14 +80,20 @@ func (c *TaskController) List() {
 	}
 
 	var T_admin string
-	if User_r.T_power > 2 {
+	if User_r.T_power > 1 {
 		T_admin = User_r.T_uuid
 	}
+	// 经销商下管理员可查看自己经销商下所有的任务
+	// 经销商下其他角色只能查看分配给自己的任务
+	if len(User_r.T_Distributor_id) > 0 && User_r.T_power <= 2 {
+		T_admin = ""
+	}
 
 	var cnt int
-	List, cnt := Task.Read_Task_List(T_uuid, T_admin, T_name, T_InfoCollection_id, T_scheme, T_collection, T_reporting, T_delivery,
+
+	List, cnt := Task.Read_Task_List(User_r.T_Distributor_id, T_uuid, T_admin, T_name, T_InfoCollection_id, T_scheme, T_collection, T_reporting, T_delivery,
 		T_scheme_state, T_collection_state, T_reporting_state, T_delivery_state, T_marking_state,
-		T_company_list, UserMap, AdminMap,CreateTime, page, page_z)
+		T_company_list, UserMap, AdminMap, CreateTime, page, page_z)
 
 	page_size := math.Ceil(float64(cnt) / float64(page_z))
 	r_jsons.List = List
@@ -136,7 +142,7 @@ func (c *TaskController) Stat() {
 	T_reporting_state := c.GetString("T_reporting_state")   // 报告编写 状态 0 未完成 1 已完成(客户通过) 2已退回(客户) 3已通过(负责人) 4已退回(负责人) 5已提交
 	T_delivery_state := c.GetString("T_delivery_state")     // 交付审核 状态 0 未完成 1 已完成 2 处理中
 	T_marking_state := c.GetString("T_marking_state")       // 验证标识 状态 0 未完成 1 已完成
-	CreateTime := c.GetString("CreateTime")       // 任务添加时间
+	CreateTime := c.GetString("CreateTime")                 // 任务添加时间
 
 	UserMap := Account.UserListToMap(Account.Read_User_List_ALL_1())
 	AdminMap := Account.AdminListToMap(Account.Read_Admin_List_ALL_1())
@@ -152,9 +158,9 @@ func (c *TaskController) Stat() {
 	}
 
 	var cnt int
-	List, cnt := Task.Read_Task_Stat(T_uuid, T_admin, T_name, T_InfoCollection_id, T_project, T_scheme, T_collection, T_reporting, T_delivery,
+	List, cnt := Task.Read_Task_Stat(User_r.T_Distributor_id, T_uuid, T_admin, T_name, T_InfoCollection_id, T_project, T_scheme, T_collection, T_reporting, T_delivery,
 		T_scheme_state, T_collection_state, T_reporting_state, T_delivery_state, T_marking_state,
-		T_company_list, UserMap, AdminMap,CreateTime, page, page_z)
+		T_company_list, UserMap, AdminMap, CreateTime, page, page_z)
 
 	page_size := math.Ceil(float64(cnt) / float64(page_z))
 	r_jsons.List = List
@@ -193,7 +199,7 @@ func (c *TaskController) Stat_Excel() {
 	T_reporting_state := c.GetString("T_reporting_state")   // 报告编写 状态 0 未完成 1 已完成(客户通过) 2已退回(客户) 3已通过(负责人) 4已退回(负责人) 5已提交
 	T_delivery_state := c.GetString("T_delivery_state")     // 交付审核 状态 0 未完成 1 已完成 2 处理中
 	T_marking_state := c.GetString("T_marking_state")       // 验证标识 状态 0 未完成 1 已完成
-	CreateTime := c.GetString("CreateTime")       // 任务添加时间
+	CreateTime := c.GetString("CreateTime")                 // 任务添加时间
 
 	UserMap := Account.UserListToMap(Account.Read_User_List_ALL_1())
 	AdminMap := Account.AdminListToMap(Account.Read_Admin_List_ALL_1())
@@ -208,9 +214,9 @@ func (c *TaskController) Stat_Excel() {
 		T_admin = User_r.T_uuid
 	}
 
-	List, _ := Task.Read_Task_Stat(T_uuid, T_admin, T_name, T_InfoCollection_id, T_project, T_scheme, T_collection, T_reporting, T_delivery,
+	List, _ := Task.Read_Task_Stat(User_r.T_Distributor_id, T_uuid, T_admin, T_name, T_InfoCollection_id, T_project, T_scheme, T_collection, T_reporting, T_delivery,
 		T_scheme_state, T_collection_state, T_reporting_state, T_delivery_state, T_marking_state,
-		T_company_list, UserMap, AdminMap,CreateTime, 0, 9999)
+		T_company_list, UserMap, AdminMap, CreateTime, 0, 9999)
 
 	f := excelize.NewFile() // 设置单元格的值
 	line := 1
@@ -660,6 +666,7 @@ func (c *TaskController) Add() {
 		return
 	}
 	var_ := Task.Task{
+		T_Distributor_id:       User_r.T_Distributor_id,
 		T_InfoCollection_id:    T_InfoCollection_id,
 		T_InfoTemplate_id:      infoCollection.T_InfoTemplate_id,
 		T_start_time:           infoCollection.T_start_time, // 项目开始时间使用信息采集开始时间
@@ -708,7 +715,6 @@ func (c *TaskController) Add() {
 	go wx.WxSend(var_.T_reporting, fmt.Sprintf("【%s-%s】任务派发", company_r.T_name, var_.T_name))
 	go wx.WxSend(var_.T_delivery, fmt.Sprintf("【%s-%s】任务派发", company_r.T_name, var_.T_name))
 
-
 	// 添加任务操作日志
 	Task.Add_TaskLogs_T(User_r.T_uuid, T_task_id, "任务管理", "添加", var_)
 	System.Add_UserLogs_T(User_r.T_uuid, "任务管理", "添加", var_)
@@ -772,7 +778,7 @@ func (c *TaskController) ReceiptInfoCollection() {
 	//	c.ServeJSON()
 	//	return
 	//}
-	
+
 	// 添加任务操作日志
 	//Task.Add_TaskLogs_T(User_r.T_uuid, T_task_id, "任务管理", "接收信息采集", task)
 	//System.Add_UserLogs_T(User_r.T_uuid, "任务管理", "接收信息采集", task)
@@ -897,8 +903,8 @@ func (c *TaskController) UpCollectionState() {
 
 	// 已退回(负责人)
 	if T_collection_state == Task.TaskCollectionStateReturn {
-		System.Add_News(r.T_collection, fmt.Sprintf("【%s-%s】数据编辑 %s,%s", company_r.T_name, r.T_name, Task.TaskCollectionStateMap[T_collection_state],T_reason), "")
-		go wx.WxSend(r.T_collection, fmt.Sprintf("【%s-%s】数据编辑 %s,%s", company_r.T_name, r.T_name, Task.TaskCollectionStateMap[T_collection_state],T_reason))
+		System.Add_News(r.T_collection, fmt.Sprintf("【%s-%s】数据编辑 %s,%s", company_r.T_name, r.T_name, Task.TaskCollectionStateMap[T_collection_state], T_reason), "")
+		go wx.WxSend(r.T_collection, fmt.Sprintf("【%s-%s】数据编辑 %s,%s", company_r.T_name, r.T_name, Task.TaskCollectionStateMap[T_collection_state], T_reason))
 	}
 
 	// 添加任务操作日志
@@ -960,14 +966,12 @@ func (c *TaskDataController) TaskData_Up_TaskData_Back() {
 		return
 	}
 
-
 	// 通知 报告人员
 	_, company_r := Account.Read_User_ByT_uuid(r.T_uuid)
 	infoCollection, _ := InfoCollection.Read_InfoCollection(r.T_InfoCollection_id)
 	System.Add_News(infoCollection.T_submit_uuid, fmt.Sprintf("【%s-%s】报告已完成,请及时通知客户审核", company_r.T_name, r.T_name), "")
 	go wx.WxSend(infoCollection.T_submit_uuid, fmt.Sprintf("【%s-%s】报告已完成,请及时通知客户审核", company_r.T_name, r.T_name))
 
-
 	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
 	c.ServeJSON()
 	return
@@ -1004,9 +1008,7 @@ func (c *TaskController) Up() {
 	T_pdf2 := c.GetString("T_pdf2")
 	T_doc3 := c.GetString("T_doc3")
 	T_pdf3 := c.GetString("T_pdf3")
-	T_pdf4 := c.GetString("T_pdf4")                                           // 验证标识
-
-
+	T_pdf4 := c.GetString("T_pdf4") // 验证标识
 
 	T_VerifyDeviceDataStartTime := c.GetString("T_VerifyDeviceDataStartTime") // 验证设备数据开始时间
 	T_VerifyDeviceDataEndTime := c.GetString("T_VerifyDeviceDataEndTime")     // 验证设备数据开始时间
@@ -1029,7 +1031,7 @@ func (c *TaskController) Up() {
 	T_subject_matter := c.GetString("T_subject_matter") // 标的物名称
 	T_temp_range := c.GetString("T_temp_range")         // 验证温度范围
 	T_report_number := c.GetString("T_report_number")   // 报告编号
-	T_report_type := c.GetString("T_report_type")   // 报告编号
+	T_report_type := c.GetString("T_report_type")       // 报告编号
 
 	T_task_id := c.GetString("T_task_id")
 	r, is := Task.Read_Task(T_task_id)
@@ -1083,7 +1085,6 @@ func (c *TaskController) Up() {
 		clos = append(clos, "T_record")
 	}
 
-
 	// 完成编辑后设置实施结束时间
 	if T_collection_state == 4 {
 		r.T_collection_state = T_collection_state
@@ -1155,7 +1156,7 @@ func (c *TaskController) Up() {
 		// 所需时间 > 超时时间
 		if r.T_scheme_time_interval > Task.TaskSchemeTimeLimit[r.T_report_type] && len(r.T_report_type) > 0 {
 			r.T_scheme_overtime = r.T_scheme_time_interval - Task.TaskSchemeTimeLimit[r.T_report_type] // 超时时间
-			if Task.TaskSchemeTimeLimit[r.T_report_type]  == 0 {
+			if Task.TaskSchemeTimeLimit[r.T_report_type] == 0 {
 				r.T_scheme_overtime = 0
 			}
 			clos = append(clos, "T_scheme_overtime")
@@ -1261,7 +1262,7 @@ func (c *TaskController) Up() {
 	// 从3.0获取校准时间
 	if len(T_sn) > 0 && len(T_CalibrationExpirationTime) == 0 {
 
-		go func(r Task.Task,T_sn ,T_CalibrationExpirationTime string) {
+		go func(r Task.Task, T_sn, T_CalibrationExpirationTime string) {
 			NatsServer.Cold_UpdateDevice_CalibrationTime(T_sn, T_CalibrationExpirationTime)
 			device, err := NatsServer.Cold_ReadDeviceByT_sn(T_sn)
 			if err == nil {
@@ -1271,7 +1272,7 @@ func (c *TaskController) Up() {
 					Task.Update_Task(r, "T_CalibrationExpirationTime")
 				}
 			}
-		}(r,T_sn,T_CalibrationExpirationTime)
+		}(r, T_sn, T_CalibrationExpirationTime)
 
 	}
 
@@ -1451,23 +1452,21 @@ func (c *TaskController) UpSchemeState() {
 		go wx.WxSend(infoCollection.T_submit_uuid, fmt.Sprintf("【%s-%s】验证方案 %s,请尽快与客户沟通确定", company_r.T_name, r.T_name, Task.TaskSchemeStateMap[T_scheme_state]))
 	}
 
-
 	// 已退回(负责人)
 	if T_scheme_state == Task.TaskSchemeStateReturn {
-		System.Add_News(r.T_scheme, fmt.Sprintf("【%s-%s】验证方案 %s,%s", company_r.T_name, r.T_name, Task.TaskSchemeStateMap[T_scheme_state],T_reason), "")
-		go wx.WxSend(r.T_scheme, fmt.Sprintf("【%s-%s】验证方案 %s,%s", company_r.T_name, r.T_name, Task.TaskSchemeStateMap[T_scheme_state],T_reason))
+		System.Add_News(r.T_scheme, fmt.Sprintf("【%s-%s】验证方案 %s,%s", company_r.T_name, r.T_name, Task.TaskSchemeStateMap[T_scheme_state], T_reason), "")
+		go wx.WxSend(r.T_scheme, fmt.Sprintf("【%s-%s】验证方案 %s,%s", company_r.T_name, r.T_name, Task.TaskSchemeStateMap[T_scheme_state], T_reason))
 	}
 
-
 	//  已退回(客户)
 	if T_scheme_state == Task.TaskSchemeStateClientReturn {
-		System.Add_News(r.T_scheme, fmt.Sprintf("!!!【%s-%s】验证方案 %s,%s", company_r.T_name, r.T_name, Task.TaskSchemeStateMap[T_scheme_state],T_reason), "")
-		go wx.WxSend(r.T_scheme, fmt.Sprintf("!!!【%s-%s】验证方案 %s,%s", company_r.T_name, r.T_name,Task.TaskSchemeStateMap[T_scheme_state],T_reason))
+		System.Add_News(r.T_scheme, fmt.Sprintf("!!!【%s-%s】验证方案 %s,%s", company_r.T_name, r.T_name, Task.TaskSchemeStateMap[T_scheme_state], T_reason), "")
+		go wx.WxSend(r.T_scheme, fmt.Sprintf("!!!【%s-%s】验证方案 %s,%s", company_r.T_name, r.T_name, Task.TaskSchemeStateMap[T_scheme_state], T_reason))
 
-		System.Add_News(conf.VdelUuid, fmt.Sprintf("!!!【%s-%s】验证方案 %s,%s", company_r.T_name, r.T_name, Task.TaskSchemeStateMap[T_scheme_state],T_reason), "")
-		go wx.WxSend(conf.VdelUuid, fmt.Sprintf("!!!【%s-%s】验证方案 %s,%s", company_r.T_name, r.T_name,Task.TaskSchemeStateMap[T_scheme_state],T_reason))
+		System.Add_News(conf.VdelUuid, fmt.Sprintf("!!!【%s-%s】验证方案 %s,%s", company_r.T_name, r.T_name, Task.TaskSchemeStateMap[T_scheme_state], T_reason), "")
+		go wx.WxSend(conf.VdelUuid, fmt.Sprintf("!!!【%s-%s】验证方案 %s,%s", company_r.T_name, r.T_name, Task.TaskSchemeStateMap[T_scheme_state], T_reason))
 
-		go wx.WxSend(conf.BoosUuid, fmt.Sprintf("!!!【%s-%s】验证方案 %s,%s", company_r.T_name, r.T_name,Task.TaskSchemeStateMap[T_scheme_state],T_reason))
+		go wx.WxSend(conf.BoosUuid, fmt.Sprintf("!!!【%s-%s】验证方案 %s,%s", company_r.T_name, r.T_name, Task.TaskSchemeStateMap[T_scheme_state], T_reason))
 	}
 
 	// 添加任务操作日志
@@ -1588,15 +1587,15 @@ func (c *TaskController) UpReportingState() {
 	// 已通过
 	if T_reporting_state == Task.TaskReportingStatePass {
 		System.Add_News(infoCollection.T_submit_uuid, fmt.Sprintf("【%s-%s】验证报告 %s", infoCollection.T_name, r.T_name, Task.TaskReportingStateMap[T_reporting_state]), "")
-		go wx.WxSend(infoCollection.T_submit_uuid, fmt.Sprintf("【%s-%s】验证报告 %s", infoCollection.T_name, r.T_name,Task.TaskReportingStateMap[T_reporting_state]))
+		go wx.WxSend(infoCollection.T_submit_uuid, fmt.Sprintf("【%s-%s】验证报告 %s", infoCollection.T_name, r.T_name, Task.TaskReportingStateMap[T_reporting_state]))
 
 		System.Add_News(r.T_reporting, fmt.Sprintf("【%s-%s】验证报告 %s,请及时 打印报告", infoCollection.T_name, r.T_name, Task.TaskReportingStateMap[T_reporting_state]), "")
-		go wx.WxSend(r.T_reporting, fmt.Sprintf("【%s-%s】验证报告 %s,请及时 打印报告", infoCollection.T_name, r.T_name,Task.TaskReportingStateMap[T_reporting_state]))
+		go wx.WxSend(r.T_reporting, fmt.Sprintf("【%s-%s】验证报告 %s,请及时 打印报告", infoCollection.T_name, r.T_name, Task.TaskReportingStateMap[T_reporting_state]))
 	}
 	// 已退回
 	if T_reporting_state == Task.TaskReportingStateReturn {
-		System.Add_News(r.T_reporting, fmt.Sprintf("【%s-%s】验证报告 %s,%s", infoCollection.T_name, r.T_name, Task.TaskReportingStateMap[T_reporting_state],T_reason), "")
-		go wx.WxSend(r.T_reporting, fmt.Sprintf("【%s-%s】验证报告 %s,%s", infoCollection.T_name, r.T_name,Task.TaskReportingStateMap[T_reporting_state],T_reason))
+		System.Add_News(r.T_reporting, fmt.Sprintf("【%s-%s】验证报告 %s,%s", infoCollection.T_name, r.T_name, Task.TaskReportingStateMap[T_reporting_state], T_reason), "")
+		go wx.WxSend(r.T_reporting, fmt.Sprintf("【%s-%s】验证报告 %s,%s", infoCollection.T_name, r.T_name, Task.TaskReportingStateMap[T_reporting_state], T_reason))
 	}
 	// 已通过(客户)  通知销售
 	if T_reporting_state == Task.TaskReportingStateClientPass {
@@ -1604,22 +1603,22 @@ func (c *TaskController) UpReportingState() {
 	}
 
 	if T_reporting_state == Task.TaskReportingStateClientReturn {
-		System.Add_News(r.T_scheme, fmt.Sprintf("!!!【%s-%s】验证报告 %s,%s", infoCollection.T_name, r.T_name, Task.TaskReportingStateMap[T_reporting_state],T_reason), "")
-		go wx.WxSend(r.T_scheme, fmt.Sprintf("!!!【%s-%s】验证报告 %s,%s", infoCollection.T_name, r.T_name,Task.TaskReportingStateMap[T_reporting_state],T_reason))
+		System.Add_News(r.T_scheme, fmt.Sprintf("!!!【%s-%s】验证报告 %s,%s", infoCollection.T_name, r.T_name, Task.TaskReportingStateMap[T_reporting_state], T_reason), "")
+		go wx.WxSend(r.T_scheme, fmt.Sprintf("!!!【%s-%s】验证报告 %s,%s", infoCollection.T_name, r.T_name, Task.TaskReportingStateMap[T_reporting_state], T_reason))
 
-		System.Add_News(r.T_collection, fmt.Sprintf("!!!【%s-%s】验证报告 %s,%s", infoCollection.T_name, r.T_name, Task.TaskReportingStateMap[T_reporting_state],T_reason), "")
-		go wx.WxSend(r.T_collection, fmt.Sprintf("!!!【%s-%s】验证报告 %s,%s", infoCollection.T_name, r.T_name,Task.TaskReportingStateMap[T_reporting_state],T_reason))
+		System.Add_News(r.T_collection, fmt.Sprintf("!!!【%s-%s】验证报告 %s,%s", infoCollection.T_name, r.T_name, Task.TaskReportingStateMap[T_reporting_state], T_reason), "")
+		go wx.WxSend(r.T_collection, fmt.Sprintf("!!!【%s-%s】验证报告 %s,%s", infoCollection.T_name, r.T_name, Task.TaskReportingStateMap[T_reporting_state], T_reason))
 
-		System.Add_News(r.T_reporting, fmt.Sprintf("!!!【%s-%s】验证报告 %s,%s", infoCollection.T_name, r.T_name, Task.TaskReportingStateMap[T_reporting_state],T_reason), "")
-		go wx.WxSend(r.T_reporting, fmt.Sprintf("!!!【%s-%s】验证报告 %s,%s", infoCollection.T_name, r.T_name,Task.TaskReportingStateMap[T_reporting_state],T_reason))
+		System.Add_News(r.T_reporting, fmt.Sprintf("!!!【%s-%s】验证报告 %s,%s", infoCollection.T_name, r.T_name, Task.TaskReportingStateMap[T_reporting_state], T_reason), "")
+		go wx.WxSend(r.T_reporting, fmt.Sprintf("!!!【%s-%s】验证报告 %s,%s", infoCollection.T_name, r.T_name, Task.TaskReportingStateMap[T_reporting_state], T_reason))
 
 		//System.Add_News(r.T_delivery, fmt.Sprintf("!!!【%s-%s】验证报告 %s", infoCollection.T_name, r.T_name, Task.TaskReportingStateMap[T_reporting_state]), "")
 		//go wx.WxSend(r.T_delivery, fmt.Sprintf("!!!【%s-%s】验证报告 %s", infoCollection.T_name, r.T_name,Task.TaskReportingStateMap[T_reporting_state]))
 
-		System.Add_News(conf.VdelUuid, fmt.Sprintf("!!!【%s-%s】验证报告 %s,%s", infoCollection.T_name, r.T_name, Task.TaskReportingStateMap[T_reporting_state],T_reason), "")
-		go wx.WxSend(conf.VdelUuid, fmt.Sprintf("!!!【%s-%s】验证报告 %s,%s", infoCollection.T_name, r.T_name,Task.TaskReportingStateMap[T_reporting_state],T_reason))
+		System.Add_News(conf.VdelUuid, fmt.Sprintf("!!!【%s-%s】验证报告 %s,%s", infoCollection.T_name, r.T_name, Task.TaskReportingStateMap[T_reporting_state], T_reason), "")
+		go wx.WxSend(conf.VdelUuid, fmt.Sprintf("!!!【%s-%s】验证报告 %s,%s", infoCollection.T_name, r.T_name, Task.TaskReportingStateMap[T_reporting_state], T_reason))
 
-		go wx.WxSend(conf.BoosUuid, fmt.Sprintf("!!!【%s-%s】验证报告 %s,%s", infoCollection.T_name, r.T_name, Task.TaskReportingStateMap[T_reporting_state],T_reason))
+		go wx.WxSend(conf.BoosUuid, fmt.Sprintf("!!!【%s-%s】验证报告 %s,%s", infoCollection.T_name, r.T_name, Task.TaskReportingStateMap[T_reporting_state], T_reason))
 	}
 
 	// 添加任务操作日志
@@ -1651,7 +1650,7 @@ func (c *TaskController) EnterArea() {
 	// 方案开始
 	if len(r.T_scheme_start_time) == 0 {
 		r.T_scheme_start_time = time.Now().Format("2006-01-02 15:04:05")
-		Task.Update_Task(r,"T_scheme_start_time")
+		Task.Update_Task(r, "T_scheme_start_time")
 	}
 
 	// 添加任务操作日志
@@ -2440,17 +2439,17 @@ func (c *TaskController) StatisticalRanking() {
 				// 退回
 				if T.T_scheme_return_times > 0 {
 					Admin_t.T_scheme_returnnum += T.T_scheme_return_times
-					Admin_t.T_scheme_log += " | 退回"+ lib.To_string(int(T.T_scheme_return_times))
+					Admin_t.T_scheme_log += " | 退回" + lib.To_string(int(T.T_scheme_return_times))
 				}
 				// 超时
 				if T.T_scheme_overtime > 0 {
 					Admin_t.T_scheme_overnum += 1
-					Admin_t.T_scheme_log += " | 超时"+ lib.ConvertMinutesToDHM(int(T.T_scheme_overtime))
+					Admin_t.T_scheme_log += " | 超时" + lib.ConvertMinutesToDHM(int(T.T_scheme_overtime))
 				}
 				// 驳回
 				if T.T_reject_times > 0 {
 					Admin_t.T_rejectdnum += T.T_reject_times
-					Admin_t.T_scheme_log += " | 驳回"+ lib.To_string(int(T.T_reject_times))
+					Admin_t.T_scheme_log += " | 驳回" + lib.To_string(int(T.T_reject_times))
 				}
 
 				Admin_t.T_scheme_log += "\n"
@@ -2468,17 +2467,17 @@ func (c *TaskController) StatisticalRanking() {
 				// 退回
 				if T.T_collection_return_times > 0 {
 					Admin_t.T_collection_returnnum += T.T_collection_return_times
-					Admin_t.T_collection_log += " | 退回"+ lib.To_string(int(T.T_collection_return_times))
+					Admin_t.T_collection_log += " | 退回" + lib.To_string(int(T.T_collection_return_times))
 				}
 				// 超时
 				if T.T_collection_overtime > 0 {
 					Admin_t.T_collection_overnum += 1
-					Admin_t.T_collection_log += " | 超时"+ lib.ConvertMinutesToDHM(int(T.T_collection_overtime))
+					Admin_t.T_collection_log += " | 超时" + lib.ConvertMinutesToDHM(int(T.T_collection_overtime))
 				}
 				// 驳回
 				if T.T_reject_times > 0 {
 					Admin_t.T_rejectdnum += T.T_reject_times
-					Admin_t.T_collection_log += " | 驳回"+ lib.To_string(int(T.T_reject_times))
+					Admin_t.T_collection_log += " | 驳回" + lib.To_string(int(T.T_reject_times))
 				}
 
 				Admin_t.T_collection_log += "\n"
@@ -2496,17 +2495,17 @@ func (c *TaskController) StatisticalRanking() {
 				// 退回
 				if T.T_reporting_return_times > 0 {
 					Admin_t.T_reporting_returnnum += T.T_reporting_return_times
-					Admin_t.T_reporting_log += " | 退回"+ lib.To_string(int(T.T_reporting_return_times))
+					Admin_t.T_reporting_log += " | 退回" + lib.To_string(int(T.T_reporting_return_times))
 				}
 				// 超时
 				if T.T_reporting_overtime > 0 {
 					Admin_t.T_reporting_overnum += 1
-					Admin_t.T_reporting_log += " | 超时"+ lib.ConvertMinutesToDHM(int(T.T_reporting_overtime))
+					Admin_t.T_reporting_log += " | 超时" + lib.ConvertMinutesToDHM(int(T.T_reporting_overtime))
 				}
 				// 驳回
 				if T.T_reject_times > 0 {
 					Admin_t.T_rejectdnum += T.T_reject_times
-					Admin_t.T_reporting_log += " | 驳回"+ lib.To_string(int(T.T_reject_times))
+					Admin_t.T_reporting_log += " | 驳回" + lib.To_string(int(T.T_reject_times))
 				}
 				Admin_t.T_reporting_log += "\n"
 			}

+ 0 - 36
controllers/Template.go

@@ -14,42 +14,6 @@ type TemplateController struct {
 	beego.Controller
 }
 
-// 列表 -
-func (c *TemplateController) List_html() {
-	// 验证登录 User_is, User_r
-	_, User_is := Account.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
-	if !User_is {
-		c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
-		c.ServeJSON()
-		return
-	}
-	page, _ := c.GetInt("page")
-	println(page)
-	if page < 1 {
-		page = 1
-	}
-	page_z, _ := c.GetInt("page_z")
-	if page_z < 1 {
-		page_z = conf.Page_size
-	}
-
-	T_name := c.GetString("T_name")
-	T_class, _ := c.GetInt("T_class")
-
-	c.Data["T_name"] = T_name
-	c.Data["T_class"] = T_class
-
-	var cnt int64
-	c.Data["List"], cnt = Template.Read_Template_List(T_name, T_class, page, page_z)
-	page_size := math.Ceil(float64(cnt) / float64(conf.Page_size))
-	c.Data["Page"] = page
-	c.Data["Page_size"] = page_size
-	c.Data["Pages"] = lib.Func_page(int64(page), int64(page_size))
-	c.Data["cnt"] = cnt
-
-	c.TplName = "Template/Template.html"
-}
-
 // 二级页面
 func (c *TemplateController) List_() {
 	// 验证登录 User_is, User_r

+ 18 - 7
controllers/User.go

@@ -4,6 +4,7 @@ import (
 	"ColdVerify_server/conf"
 	"ColdVerify_server/lib"
 	"ColdVerify_server/models/Account"
+	"ColdVerify_server/models/Distributor"
 	"ColdVerify_server/models/System"
 	beego "github.com/beego/beego/v2/server/web"
 	"math"
@@ -45,7 +46,7 @@ func (c *UserController) Get() {
 // 列表 -
 func (c *UserController) List() {
 	// 验证登录 User_is, User_r
-	_, User_is := Account.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
+	User_r, User_is := Account.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
 	if !User_is {
 		c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
 		c.ServeJSON()
@@ -63,9 +64,18 @@ func (c *UserController) List() {
 	}
 
 	T_name := c.GetString("T_name")
+	var T_Distributor_id string
+	// 优先使用经销商id
+	if len(User_r.T_Distributor_id) > 0 {
+		T_Distributor_id = User_r.T_Distributor_id
+	} else {
+		T_Distributor_id = c.GetString("T_Distributor_id")
+	}
 
 	var cnt int64
-	List, cnt := Account.Read_User_List(T_name, page, page_z)
+	distributorList := Distributor.Read_Distributor_List_ALL("")
+	distributorMap := Distributor.DistributorListToMap(distributorList)
+	List, cnt := Account.Read_User_List(T_Distributor_id, T_name, page, page_z, distributorMap)
 	page_size := math.Ceil(float64(cnt) / float64(page_z))
 	r_jsons.List = List
 	r_jsons.Page = page
@@ -95,11 +105,12 @@ func (c *UserController) Add() {
 
 	var_ := Account.User{
 		//T_power:   T_power,
-		T_name:    T_name,
-		T_pass:    T_pass,
-		T_passstr: T_passstr,
-		T_Show:    1,
-		T_State:   1,
+		T_name:           T_name,
+		T_pass:           T_pass,
+		T_passstr:        T_passstr,
+		T_Show:           1,
+		T_State:          1,
+		T_Distributor_id: user_r.T_Distributor_id, // 经销商id
 	}
 
 	if _, is := Account.Read_UserByT_name(T_name); is {

+ 34 - 0
controllers/VerifyTemplate.go

@@ -12,10 +12,44 @@ import (
 	beego "github.com/beego/beego/v2/server/web"
 	"math"
 	"strconv"
+	"strings"
 )
 
 type VerifyTemplateController struct {
 	beego.Controller
+	User_r Account.Admin // 登陆的用户
+}
+
+func (c *VerifyTemplateController) Prepare() {
+	GetCookie := c.Ctx.GetCookie("User_tokey")
+	GetString := c.GetString("User_tokey")
+	fmt.Println(c.Ctx.Request.URL.Path)
+	if strings.Contains(c.Ctx.Request.URL.Path, "/VerifyTemplateMapData/Pu") {
+		return
+	}
+
+	// 验证登录 User_is, User_r
+	User_r, User_is := Account.Verification_Admin(GetCookie, GetString)
+	if !User_is {
+		c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
+		c.ServeJSON()
+		return
+	}
+
+	// 经销商只能访问列表接口,不能操作
+
+	if len(User_r.T_Distributor_id) > 0 {
+		checkUrl := []string{"Add", "Up", "Del", "Copy"}
+		for _, v := range checkUrl {
+			if strings.Contains(c.Ctx.Request.URL.Path, v) {
+				c.Data["json"] = lib.JSONS{Code: 202, Msg: "没有操作权限!"}
+				c.ServeJSON()
+				return
+			}
+		}
+	}
+
+	c.User_r = User_r
 }
 
 // 列表 -

+ 35 - 21
models/Account/Admin.go

@@ -9,26 +9,28 @@ import (
 )
 
 type Admin struct {
-	Id      int    `orm:"column(ID);size(11);auto;pk"`
-	T_uuid  string `orm:"size(256);null"`      //
-	T_power int    `orm:"size(2);;default(0)"` // 权限  0
-	T_name  string `orm:"size(256);null"`      // 姓名
-	T_user  string `orm:"size(256);null"`      // 用户名
-	T_pass  string `orm:"size(256);null"`      // 密码
-	T_wxname  string `orm:"size(256);null"`      // 微信name
+	Id       int    `orm:"column(ID);size(11);auto;pk"`
+	T_uuid   string `orm:"size(256);null"`      //
+	T_power  int    `orm:"size(2);;default(0)"` // 权限  0
+	T_name   string `orm:"size(256);null"`      // 姓名
+	T_user   string `orm:"size(256);null"`      // 用户名
+	T_pass   string `orm:"size(256);null"`      // 密码
+	T_wxname string `orm:"size(256);null"`      // 微信name
 
-	T_State    int       `orm:"size(200);default(1)"`                                  //  0删除  1 正常
-	CreateTime time.Time `orm:"column(create_time);type(timestamp);null;auto_now_add"` //auto_now 每次 model 保存时都会对时间自动更新
-	UpdateTime time.Time `orm:"column(update_time);type(timestamp);null;auto_now"`     //auto_now_add 第一次保存时才设置时间
+	T_State          int       `orm:"size(200);default(1)"`                                  //  0删除  1 正常
+	T_Distributor_id string    `orm:"size(256);null"`                                        // 分销商
+	CreateTime       time.Time `orm:"column(create_time);type(timestamp);null;auto_now_add"` //auto_now 每次 model 保存时都会对时间自动更新
+	UpdateTime       time.Time `orm:"column(update_time);type(timestamp);null;auto_now"`     //auto_now_add 第一次保存时才设置时间
 }
 
 type Admin_R struct {
-	T_uuid       string `orm:"column(t_uuid)"`
-	T_power      int    `orm:"column(t_power)"`      // 权限
-	T_power_name string `orm:"column(t_power_name)"` // 权限
-	T_name       string `orm:"column(t_name)"`       // 姓名
-	T_user       string `orm:"column(t_user)"`       // 用户名
-	T_wxname       string `orm:"column(t_user)"`       // 用户名
+	T_uuid           string
+	T_power          int    // 权限
+	T_power_name     string // 权限
+	T_name           string // 姓名
+	T_user           string // 用户名
+	T_wxname         string // 企业微信
+	T_Distributor_id string // 经销商id
 }
 
 func (t *Admin) TableName() string {
@@ -47,6 +49,7 @@ func AdminToAdmin_R(T Admin, powerMap map[int]string) (T_r Admin_R) {
 	T_r.T_user = T.T_user
 	T_r.T_wxname = T.T_wxname
 	T_r.T_power_name = powerMap[T.T_power]
+	T_r.T_Distributor_id = T.T_Distributor_id
 	return T_r
 }
 
@@ -88,7 +91,7 @@ func Read_Admin_verification(T_user string, T_pass string) (error, Admin) {
 }
 
 // 获取列表
-func Read_Admin_List(T_name string, page int, page_z int, powerMap map[int]string) ([]Admin_R, int) {
+func Read_Admin_List(T_Distributor_id string, T_name string, page int, page_z int, powerMap map[int]string) ([]Admin_R, int) {
 
 	o := orm.NewOrm()
 	var offset int
@@ -101,6 +104,13 @@ func Read_Admin_List(T_name string, page int, page_z int, powerMap map[int]strin
 	var r []Admin
 	cond := orm.NewCondition()
 	cond1 := cond.And("T_State", 1).AndCond(cond.Or("T_name__icontains", T_name).Or("T_user__icontains", T_name))
+	if len(T_Distributor_id) > 0 {
+		// 查询经销商用户数据
+		cond1 = cond1.And("T_Distributor_id", T_Distributor_id)
+	} else {
+		// 只查询内部管理员数据
+		cond1 = cond1.And("T_Distributor_id__isnull", true)
+	}
 	qs.Limit(page_z, offset).SetCond((*orm2.Condition)(cond1)).OrderBy("-Id").All(&r)
 	cnt, _ := qs.SetCond((*orm2.Condition)(cond1)).Count()
 
@@ -171,12 +181,16 @@ func Read_Admin_List_ALL_1() (maps []Admin) {
 }
 
 // 获取全部列表
-func Read_Admin_List_ALL_Power(PowerMaps map[int]string) (maps []AdminPower_R) {
+func Read_Admin_List_ALL_Power(T_Distributor_id string, PowerMaps map[int]string) (maps []AdminPower_R) {
 
 	o := orm.NewOrm()
 	var r []Admin
 	qs := o.QueryTable(new(Admin))
-
+	if len(T_Distributor_id) == 0 {
+		qs = qs.Filter("T_Distributor_id__isnull", true)
+	} else {
+		qs = qs.Filter("T_Distributor_id", T_Distributor_id)
+	}
 	qs.Filter("T_State", 1).OrderBy("Id").All(&r)
 	// 转换
 	var Admin_Power_r []AdminPower_R
@@ -222,7 +236,7 @@ func AdminToAdminPower_R(T Admin, PowerMaps map[int]string) (T_r AdminPower_R) {
 }
 
 // 获取全部列表
-func Read_Admin_List_ALL_T_power(T_power int)  []Admin {
+func Read_Admin_List_ALL_T_power(T_power int) []Admin {
 
 	o := orm.NewOrm()
 	var r []Admin
@@ -231,4 +245,4 @@ func Read_Admin_List_ALL_T_power(T_power int)  []Admin {
 	qs.Filter("T_power", T_power).Filter("T_State", 1).OrderBy("Id").All(&r)
 
 	return r
-}
+}

+ 18 - 6
models/Account/User.go

@@ -12,8 +12,9 @@ import (
 )
 
 type User struct {
-	Id     int    `orm:"column(ID);size(11);auto;pk"`
-	T_uuid string `orm:"size(256);null"` //
+	Id               int    `orm:"column(ID);size(11);auto;pk"`
+	T_Distributor_id string `orm:"size(256);null"` // 分销商id
+	T_uuid           string `orm:"size(256);null"` //
 	//T_power    int       `orm:"size(2);default(0)"`                                    // 权限
 	T_name     string    `orm:"size(256);null"`                                        // 某某公司名称
 	T_pass     string    `orm:"size(256);null"`                                        // 密码 MD5
@@ -24,7 +25,9 @@ type User struct {
 	UpdateTime time.Time `orm:"column(update_time);type(timestamp);null;auto_now"`     //auto_now_add 第一次保存时才设置时间
 }
 type User_R struct {
-	T_uuid string //
+	T_uuid             string //
+	T_Distributor_id   string //
+	T_Distributor_name string //
 	//T_power   int    // 权限
 	T_name    string // 某某公司名称
 	T_passstr string // 密码明文
@@ -43,8 +46,14 @@ func init() {
 }
 
 // -------------------------------------------------------------
-func UserToUser_R(T User) (T_r User_R) {
+func UserToUser_R(T User, distributorMap map[string]string) (T_r User_R) {
 	T_r.T_uuid = T.T_uuid
+	T_r.T_Distributor_id = T.T_Distributor_id
+	T_Distributor_name, ok := distributorMap[T.T_Distributor_id]
+	if !ok {
+		T_Distributor_name = ""
+	}
+	T_r.T_Distributor_name = T_Distributor_name
 	//T_r.T_power = T.T_power
 	T_r.T_name = T.T_name
 	T_r.T_passstr = T.T_passstr
@@ -173,7 +182,7 @@ func Update_User(m User, cols ...string) bool {
 }
 
 // 获取列表
-func Read_User_List(T_name string, page int, page_z int) ([]User_R, int64) {
+func Read_User_List(T_Distributor_id string, T_name string, page int, page_z int, distributorMap map[string]string) ([]User_R, int64) {
 	o := orm.NewOrm()
 
 	// 也可以直接使用 Model 结构体作为表名
@@ -187,13 +196,16 @@ func Read_User_List(T_name string, page int, page_z int) ([]User_R, int64) {
 	}
 	cond := orm.NewCondition()
 	cond1 := cond.And("T_State", 1).AndCond(cond.Or("T_name__icontains", T_name))
+	if len(T_Distributor_id) > 0 {
+		cond1 = cond1.And("T_Distributor_id", T_Distributor_id)
+	}
 	qs.Limit(page_z, offset).SetCond((*orm2.Condition)(cond1)).OrderBy("-Id").All(&r)
 	cnt, _ := qs.SetCond((*orm2.Condition)(cond1)).Count()
 
 	// 转换
 	var User_r []User_R
 	for _, v := range r {
-		User_r = append(User_r, UserToUser_R(v))
+		User_r = append(User_r, UserToUser_R(v, distributorMap))
 	}
 
 	return User_r, cnt

+ 239 - 0
models/Distributor/Distributor.go

@@ -0,0 +1,239 @@
+package Distributor
+
+import (
+	"ColdVerify_server/conf"
+	"ColdVerify_server/lib"
+	"ColdVerify_server/logs"
+	"encoding/json"
+	"fmt"
+	"github.com/astaxie/beego/cache"
+	"github.com/beego/beego/v2/adapter/orm"
+	orm2 "github.com/beego/beego/v2/client/orm"
+	_ "github.com/go-sql-driver/mysql"
+	"time"
+)
+
+// 模版
+type Distributor struct {
+	Id               int       `orm:"column(ID);size(11);auto;pk"`
+	T_name           string    `orm:"size(256);null"`                                        // 名称
+	T_Distributor_id string    `orm:"size(256);null"`                                        // 分销商id
+	T_State          int       `orm:"size(200);default(1)"`                                  //  0删除  1 正常
+	CreateTime       time.Time `orm:"column(create_time);type(timestamp);null;auto_now_add"` //auto_now 每次 model 保存时都会对时间自动更新
+	UpdateTime       time.Time `orm:"column(update_time);type(timestamp);null;auto_now"`     //auto_now_add 第一次保存时才设置时间
+
+}
+
+type Distributor_R struct {
+	T_name           string
+	T_Distributor_id string
+}
+
+func (t *Distributor) TableName() string {
+	return "distributor" // 数据库名称   // ************** 替换 FormulaList **************
+}
+
+var redisCache_Distributor cache.Cache
+
+func init() {
+	//注册模型
+	orm.RegisterModel(new(Distributor))
+
+	config := fmt.Sprintf(`{"key":"%s","conn":"%s","dbNum":"%s","password":"%s"}`,
+		"redis_"+"distributor", conf.Redis_address, conf.Redis_dbNum, conf.Redis_password)
+	logs.Println(config)
+	var err error
+	redisCache_Distributor, err = cache.NewCache("redis", config)
+	if err != nil || redisCache_Distributor == nil {
+		errMsg := "failed to init redis"
+		logs.Println(errMsg, err)
+
+	}
+}
+
+// -------------------------------------------------------------
+func DistributorToDistributor_R(T Distributor) (T_r Distributor_R) {
+	T_r.T_name = T.T_name
+	T_r.T_Distributor_id = T.T_Distributor_id
+
+	//......
+	return T_r
+}
+
+// ---------------- Redis -------------------
+// Redis_Set(m.T_sn,m) // Redis 更新缓存
+func Redis_Distributor_Set(key string, r Distributor) (err error) {
+	//json序列化
+	str, err := json.Marshal(r)
+	if err != nil {
+		logs.Error(lib.FuncName(), err)
+		return
+	}
+	err = redisCache_Distributor.Put(key, str, 24*time.Hour)
+	if err != nil {
+		logs.Println("set key:", key, ",value:", str, err)
+	}
+	return
+}
+
+// if r,is :=Redis_Get(T_sn);is{
+// return r,nil
+// }
+func Redis_Distributor_Get(key string) (r Distributor, is bool) {
+	if redisCache_Distributor.IsExist(key) {
+		logs.Println("找到key:", key)
+		v := redisCache_Distributor.Get(key)
+		json.Unmarshal(v.([]byte), &r)
+		return r, true
+	}
+	logs.Println("没有 找到key:", key)
+	return Distributor{}, false
+}
+func Redis_Distributor_DelK(key string) (err error) {
+	err = redisCache_Distributor.Delete(key)
+	return
+}
+
+// ---------------- 特殊方法 -------------------
+
+// 获取 ById
+func Read_Distributor_ById(id int) (r Distributor, is bool) {
+	o := orm.NewOrm()
+	r = Distributor{Id: id}
+	err := o.Read(&r) // o.Read(&r,"Tokey") 如果不是 主键 就得指定字段名
+	if err != nil {
+		logs.Error(lib.FuncName(), err)
+		return r, false
+	}
+	return r, true
+}
+
+// 获取 By
+func Read_Distributor(T_Distributor_id string) (r Distributor, is bool) {
+
+	o := orm.NewOrm()
+	qs := o.QueryTable(new(Distributor))
+	err := qs.Filter("T_Distributor_id", T_Distributor_id).One(&r)
+	if err != nil {
+		return r, false
+	}
+
+	return r, true
+}
+
+// 添加
+func Add_Distributor(r Distributor) (id int64, is bool) {
+	o := orm.NewOrm()
+
+	// 生成编号
+	rand_x := 0
+	for true {
+		r.T_Distributor_id = lib.GetRandstring(4, "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", int64(rand_x)) // 1,336,336
+		err := o.Read(&r, "T_Distributor_id")                                                            // o.Read(&r,"Tokey") 如果不是 主键 就得指定字段名
+		if err != nil {
+			break
+		}
+		rand_x += 1
+	}
+
+	id, err := o.Insert(&r)
+	if err != nil {
+		logs.Error(lib.FuncName(), err)
+		return 0, false
+	}
+
+	Redis_Distributor_Set(r.T_name, r)
+	return id, true
+}
+
+// 删除
+func Delete_Distributor(v Distributor) bool {
+	o := orm.NewOrm()
+	if num, err := o.Delete(&v); err == nil {
+		logs.Println("Number of records deleted in database:", num)
+	} else {
+		return false
+	}
+
+	Redis_Distributor_DelK(v.T_name)
+	return true
+}
+
+// 删除
+func Delete_Distributor_(v Distributor) bool {
+	o := orm.NewOrm()
+	v.T_State = 0
+	if num, err := o.Update(&v, "T_State"); err == nil {
+		logs.Println("Number of records updated in database:", num)
+	} else {
+		return false
+	}
+
+	Redis_Distributor_DelK(v.T_name)
+	return true
+}
+
+// 修改
+func Update_Distributor(m Distributor, cols ...string) bool {
+	o := orm.NewOrm()
+	if num, err := o.Update(&m, cols...); err == nil {
+		logs.Println("Number of records updated in database:", num)
+		Redis_Distributor_Set(m.T_name, m)
+		return true
+	}
+	return false
+}
+
+// 获取列表
+func Read_Distributor_List(T_name string, page int, page_z int) ([]Distributor_R, int64) {
+
+	o := orm.NewOrm()
+	// 也可以直接使用 Model 结构体作为表名
+	var r []Distributor
+	qs := o.QueryTable(new(Distributor))
+	var offset int64
+	if page <= 1 {
+		offset = 0
+	} else {
+		offset = int64((page - 1) * page_z)
+	}
+	cond := orm.NewCondition()
+	cond1 := cond.And("T_name__icontains", T_name).And("T_State", 1) // .AndNot("status__in", 1).Or("profile__age__gt", 2000)
+
+	if page_z == 9999 {
+		qs.SetCond((*orm2.Condition)(cond1)).OrderBy("-Id").All(&r)
+	} else {
+		qs.Limit(page_z, offset).SetCond((*orm2.Condition)(cond1)).OrderBy("-Id").All(&r)
+	}
+	cnt, _ := qs.SetCond((*orm2.Condition)(cond1)).Count()
+
+	// 转换
+	var Distributor_r []Distributor_R
+	for _, v := range r {
+		Distributor_r = append(Distributor_r, DistributorToDistributor_R(v))
+	}
+
+	return Distributor_r, cnt
+}
+
+// 获取列表
+func Read_Distributor_List_ALL(T_name string) (maps []Distributor) {
+
+	o := orm.NewOrm()
+	qs := o.QueryTable(new(Distributor))
+	if len(T_name) > 0 {
+		qs = qs.Filter("T_name__icontains", T_name)
+	}
+
+	qs.Filter("T_State", 1).OrderBy("Id").All(&maps)
+
+	return maps
+}
+
+func DistributorListToMap(T []Distributor) map[string]string {
+	maps := make(map[string]string, len(T))
+	for _, v := range T {
+		maps[v.T_Distributor_id] = v.T_name
+	}
+	return maps
+}

+ 13 - 2
models/Task/Task.go

@@ -135,6 +135,7 @@ type AuditRecord struct {
 // 模版
 type Task struct {
 	Id                  int    `orm:"column(ID);size(11);auto;pk"`
+	T_Distributor_id    string `orm:"size(256);null"`       // 分销商id
 	T_class             int    `orm:"size(200);default(0)"` // 分类id
 	T_InfoCollection_id string `orm:"size(256);null"`       // 信息采集ID
 	T_InfoTemplate_id   string `orm:"size(256);null"`       // 信息采集模版ID
@@ -236,6 +237,7 @@ type Task struct {
 
 type Task_ struct {
 	Id                     int
+	T_Distributor_id       string    // 信息采集ID
 	T_class                int       // 分类ID
 	T_InfoCollection_id    string    // 信息采集ID
 	T_task_id              string    // 任务ID
@@ -294,6 +296,7 @@ type Task_ struct {
 
 type Task_Stat struct {
 	Id                  int
+	T_Distributor_id    string // 信息采集ID
 	T_class             int    // 分类ID
 	T_InfoCollection_id string // 信息采集ID
 	T_InfoTemplate_id   string // 信息采集模版ID
@@ -421,6 +424,7 @@ func init() {
 
 func TaskToTask_(T Task, userMap, adminMap map[string]string) (T_ Task_) {
 	T_.Id = T.Id
+	T_.T_Distributor_id = T.T_Distributor_id
 	T_.T_class = T.T_class
 	T_.T_InfoCollection_id = T.T_InfoCollection_id
 	if len(T.T_InfoCollection_id) > 0 {
@@ -480,6 +484,7 @@ func TaskToTask_(T Task, userMap, adminMap map[string]string) (T_ Task_) {
 }
 func TaskToTask_Stat(T Task, userMap, adminMap map[string]string) (T_ Task_Stat) {
 	T_.Id = T.Id
+	T_.T_Distributor_id = T.T_Distributor_id
 	T_.T_class = T.T_class
 	T_.T_InfoCollection_id = T.T_InfoCollection_id
 	if len(T.T_InfoCollection_id) > 0 {
@@ -817,7 +822,7 @@ func Read_UserTask_List(T_uuid string, T_name string, userMap, adminMap map[stri
 }
 
 // 获取任务列表
-func Read_Task_List(T_uuid, T_admin, T_name, T_InfoCollection_id string, T_scheme, T_collection, T_reporting, T_delivery,
+func Read_Task_List(T_Distributor_id, T_uuid, T_admin, T_name, T_InfoCollection_id string, T_scheme, T_collection, T_reporting, T_delivery,
 	T_scheme_state, T_collection_state, T_reporting_state, T_delivery_state, T_marking_state string,
 	T_company_list []string, userMap, adminMap map[string]string, CreateTime string, page int, page_z int) ([]Task_, int) {
 
@@ -836,6 +841,9 @@ func Read_Task_List(T_uuid, T_admin, T_name, T_InfoCollection_id string, T_schem
 	if len(T_uuid) > 0 {
 		cond1 = cond1.And("T_uuid", T_uuid)
 	}
+	if len(T_Distributor_id) > 0 {
+		cond1 = cond1.And("T_Distributor_id", T_Distributor_id)
+	}
 	if len(T_InfoCollection_id) > 0 {
 		cond1 = cond1.And("T_InfoCollection_id", T_InfoCollection_id)
 	}
@@ -989,7 +997,7 @@ func Get_Task_UserList(T_type string) []string {
 	return pl_lists
 }
 
-func Read_Task_Stat(T_uuid, T_admin, T_name, T_InfoCollection_id string, T_project, T_scheme, T_collection, T_reporting, T_delivery,
+func Read_Task_Stat(T_Distributor_id, T_uuid, T_admin, T_name, T_InfoCollection_id string, T_project, T_scheme, T_collection, T_reporting, T_delivery,
 	T_scheme_state, T_collection_state, T_reporting_state, T_delivery_state, T_marking_state string,
 	T_company_list []string, userMap, adminMap map[string]string, CreateTime string, page int, page_z int) ([]Task_Stat, int) {
 
@@ -1008,6 +1016,9 @@ func Read_Task_Stat(T_uuid, T_admin, T_name, T_InfoCollection_id string, T_proje
 	if len(T_uuid) > 0 {
 		cond1 = cond1.And("T_uuid", T_uuid)
 	}
+	if len(T_Distributor_id) > 0 {
+		cond1 = cond1.And("T_Distributor_id", T_Distributor_id)
+	}
 	if len(T_InfoCollection_id) > 0 {
 		cond1 = cond1.And("T_InfoCollection_id", T_InfoCollection_id)
 	}

+ 1 - 0
routers/Account.go

@@ -24,6 +24,7 @@ func init() {
 	beego.Router("/Admin/List", &controllers.AccountController{}, "*:List")              // 管理员列表
 	beego.Router("/Admin/Add", &controllers.AccountController{}, "*:Add")                // 添加管理员
 	beego.Router("/Admin/Up", &controllers.AccountController{}, "*:Up")                  // 编辑管理员
+	beego.Router("/Admin/Get", &controllers.AccountController{}, "*:Get")                // 编辑管理员
 	beego.Router("/Admin/Del", &controllers.AccountController{}, "*:Del")                // 删除管理员
 	beego.Router("/Admin/List_All", &controllers.AccountController{}, "*:List_All")      // 管理员所有列表
 	beego.Router("/Admin/Up_Password", &controllers.AccountController{}, "*:UpPassword") // 管理员修改密码

+ 15 - 0
routers/Distributor.go

@@ -0,0 +1,15 @@
+package routers
+
+import (
+	"ColdVerify_server/controllers"
+	beego "github.com/beego/beego/v2/server/web"
+)
+
+func init() {
+	// 模版路由
+	beego.Router("/Distributor/All", &controllers.DistributorController{}, "*:List_All") // 经销商列表
+	beego.Router("/Distributor/List", &controllers.DistributorController{}, "*:List")    // 经销商列表
+	beego.Router("/Distributor/Add", &controllers.DistributorController{}, "*:Add")      // 添加经销商
+	beego.Router("/Distributor/Up", &controllers.DistributorController{}, "*:Up")        // 编辑经销商
+	beego.Router("/Distributor/Del", &controllers.DistributorController{}, "*:Del")      // 删除经销商
+}

+ 6 - 7
routers/VerifyTemplate.go

@@ -8,13 +8,12 @@ import (
 func init() {
 
 	// 模版路由
-	beego.Router("/Template/List_html", &controllers.TemplateController{}, "*:List_html") // 获取未读消息
-	beego.Router("/Template/List_", &controllers.TemplateController{}, "*:List_")         // 获取未读消息
-	beego.Router("/Template/List", &controllers.TemplateController{}, "*:List")           // 模版列表
-	beego.Router("/Template/Get", &controllers.TemplateController{}, "*:Get")             // 获取模版
-	beego.Router("/Template/Add", &controllers.TemplateController{}, "*:Add")             // 添加模版
-	beego.Router("/Template/Up", &controllers.TemplateController{}, "*:Up")               // 编辑模版
-	beego.Router("/Template/Del", &controllers.TemplateController{}, "*:Del")             // 删除模版
+	beego.Router("/Template/List_", &controllers.TemplateController{}, "*:List_") // 获取未读消息
+	beego.Router("/Template/List", &controllers.TemplateController{}, "*:List")   // 模版列表
+	beego.Router("/Template/Get", &controllers.TemplateController{}, "*:Get")     // 获取模版
+	beego.Router("/Template/Add", &controllers.TemplateController{}, "*:Add")     // 添加模版
+	beego.Router("/Template/Up", &controllers.TemplateController{}, "*:Up")       // 编辑模版
+	beego.Router("/Template/Del", &controllers.TemplateController{}, "*:Del")     // 删除模版
 
 	beego.Router("/VerifyTemplate/Class_List", &controllers.VerifyTemplateController{}, "*:Class_List") // 分类列表
 	beego.Router("/VerifyTemplate/Class_Add", &controllers.VerifyTemplateController{}, "*:Class_Add")   // 分类添加

BIN
角色菜单.xlsx