Browse Source

Merge branch 'bzq/dev' of eta_mini/eta_mini_crm into master

鲍自强 6 months ago
parent
commit
62118472d2

+ 39 - 0
controllers/seller.go

@@ -3,6 +3,7 @@ package controllers
 import (
 	"eta/eta_mini_crm/models"
 	"eta/eta_mini_crm/models/response"
+	"eta/eta_mini_crm/utils"
 )
 
 type SellerController struct {
@@ -98,3 +99,41 @@ func (this *SellerController) List() {
 	br.Ret = 200
 	br.Data = resp
 }
+
+// List
+// @Title 获取营业部下面的部门
+// @Description 获取营业部下面的部门
+// @Success 200 {object} []models.SysDepartmentList
+// @router /department/list [get]
+func (this *SellerController) DepartmentList() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+
+	parentDepartment, err := models.GetSysDepartmentByName("营业部")
+	if err != nil {
+		if err.Error() == utils.ErrNoRow() {
+			br.Msg = "营业部不存在, 请添加营业部门"
+			return
+		}
+		br.Msg = "获取营业部失败"
+		br.ErrMsg = "获取营业部失败,系统异常,Err:" + err.Error()
+		return
+	}
+	departmentList, err := models.GetChildSysDepartmentListById(parentDepartment.SysDepartmentId)
+	if err != nil {
+		br.Msg = "获取营业部失败"
+		br.ErrMsg = "获取营业部失败,系统异常,Err:" + err.Error()
+		return
+	}
+	if len(departmentList) == 0 {
+		departmentList = make([]*models.SysDepartmentList, 0)
+	}
+
+	br.Msg = "获取成功"
+	br.Ret = 200
+	br.Success = true
+	br.Data = departmentList
+}

+ 16 - 4
controllers/sys_department.go

@@ -132,6 +132,10 @@ func (this *SysDepartmentController) Edit() {
 		br.ErrMsg = "获取数据失败,Err:" + err.Error()
 		return
 	}
+	if oldSysDepartment.SysDepartmentName == "营业部" {
+		br.Msg = "营业部不能编辑"
+		return
+	}
 
 	newSysDepartment, err := models.GetSysDepartmentByName(req.SysDepartmentName)
 	if err != nil && err != orm.ErrNoRows {
@@ -146,9 +150,9 @@ func (this *SysDepartmentController) Edit() {
 	sysDepartment := &models.SysDepartment{}
 	sysDepartment.SysDepartmentId = req.SysDepartmentId
 	sysDepartment.SysDepartmentName = req.SysDepartmentName
-	err = sysDepartment.Update([]string{"sys_department_name"})
+	err = models.SaveSysDepartmentName(sysDepartment)
 	if err != nil {
-		br.Msg = "编辑失败,系统错误"
+		br.Msg = "编辑失败"
 		br.Msg = "编辑失败,系统错误,Err:" + err.Error()
 		return
 	}
@@ -186,12 +190,20 @@ func (this *SysDepartmentController) Delete() {
 		br.ErrMsg = "参数错误,Level 小于等于0 "
 		return
 	}
-	err = services.DeleteSysDepartmentById(req.SysDepartmentId, req.Level)
+	msg, err := services.DeleteSysDepartmentById(req.SysDepartmentId, req.Level)
 	if err != nil {
-		br.Msg = "删除失败"
+		if msg != "" {
+			br.Msg = msg
+		} else {
+			br.Msg = "删除失败"
+		}
 		br.ErrMsg = "删除失败,系统异常,Err:" + err.Error()
 		return
 	}
+	if msg != "" {
+		br.Msg = msg
+		return
+	}
 
 	br.Ret = 200
 	br.Msg = "删除成功"

+ 177 - 142
controllers/user.go

@@ -8,11 +8,14 @@ import (
 	"eta/eta_mini_crm/services"
 	"eta/eta_mini_crm/utils"
 	"math"
+	"os"
+	"path/filepath"
 	"strings"
 	"time"
 
 	"github.com/beego/beego/v2/client/orm"
 	"github.com/rdlucklib/rdluck_tools/paging"
+	"github.com/tealeg/xlsx"
 )
 
 type UserController struct {
@@ -99,8 +102,8 @@ func (this *UserController) Add() {
 			}
 		}
 	}
-	if req.SellerId <= 0 {
-		br.Msg = "请选择营业部/销售"
+	if req.SellerDepartmentId <= 0 {
+		br.Msg = "请选择营业部"
 		return
 	}
 	if req.ValidStartTime == "" || req.ValidEndTime == "" {
@@ -151,12 +154,19 @@ func (this *UserController) Add() {
 		br.Msg = "有效期截至时间必须大于当前时间"
 		return
 	}
+	sysDepartment, err := models.GetSysDepartmentById(req.SellerDepartmentId)
+	if err != nil {
+		br.Msg = "添加用户失败"
+		br.ErrMsg = "查询营业部失败,系统错误,Err:" + err.Error()
+		return
+	}
 
 	user.RealName = req.RealName
 	user.AreaCode = req.AreaCode
 	user.Phone = req.Phone
 	user.Email = req.Email
-	user.SellerId = req.SellerId
+	user.SellerDepartmentId = req.SellerDepartmentId
+	user.SellerDepartmentName = sysDepartment.SysDepartmentName
 	user.ValidStartTime = validStartTime
 	user.ValidEndTime = validEndTime
 	user.Company = req.Company
@@ -195,7 +205,7 @@ func (this *UserController) Edit() {
 		this.ServeJSON()
 	}()
 
-	var req request.UserEidtReq
+	var req request.UserEditReq
 	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
 	if err != nil {
 		br.Msg = "参数解析异常!"
@@ -247,8 +257,8 @@ func (this *UserController) Edit() {
 			return
 		}
 	}
-	if req.SellerId <= 0 {
-		br.Msg = "请选择营业部/销售"
+	if req.SellerDepartmentId <= 0 {
+		br.Msg = "请选择营业部"
 		return
 	}
 	if req.ValidStartTime == "" || req.ValidEndTime == "" {
@@ -293,11 +303,19 @@ func (this *UserController) Edit() {
 		br.ErrMsg = "编辑用户失败, 系统错误,Err:" + err.Error()
 		return
 	}
+
+	sysDepartment, err := models.GetSysDepartmentById(req.SellerDepartmentId)
+	if err != nil {
+		br.Msg = "添加用户失败"
+		br.ErrMsg = "查询营业部失败,系统错误,Err:" + err.Error()
+		return
+	}
 	user.RealName = req.RealName
 	user.AreaCode = req.AreaCode
 	user.Phone = req.Phone
 	user.Email = req.Email
-	user.SellerId = req.SellerId
+	user.SellerDepartmentId = req.SellerDepartmentId
+	user.SellerDepartmentName = sysDepartment.SysDepartmentName
 	user.ValidStartTime = validStartTime
 	user.ValidEndTime = validEndTime
 	user.Company = req.Company
@@ -444,7 +462,7 @@ func (this *UserController) Check() {
 // @Description 用户列表
 // @Param   PageSize   query   int  true       "每页数据条数"
 // @Param   CurrentIndex   query   int  true       "当前页页码,从1开始"
-// @Param   SellerId   query   string  true       "销售id"
+// @Param   SellerDepartmentId   query   string  true       "营业部门id"
 // @Param   Status   query   int  true       "用户状态"
 // @Param   KeyWord   query   string  true       "手机号/邮箱/姓名"
 // @Param   IsRegistered   query   string  true       "是否注册"
@@ -465,7 +483,7 @@ func (this *UserController) List() {
 	}()
 	pageSize, _ := this.GetInt("PageSize")
 	currentIndex, _ := this.GetInt("CurrentIndex")
-	sellerIdStr := this.GetString("SellerId")
+	sellerDepartmentId, _ := this.GetInt("SellerDepartmentId", 0)
 	status := this.GetString("Status")
 	keyWord := this.GetString("KeyWord")
 	IsRegistered := this.GetString("IsRegistered")
@@ -522,21 +540,9 @@ func (this *UserController) List() {
 		sortCondition = " ORDER BY u.create_time DESC"
 	}
 
-	if sellerIdStr != "" {
-		sellerIds := strings.Split(sellerIdStr, ",")
-		if len(sellerIds) != 0 {
-			condition += ` AND ( `
-			for i, id := range sellerIds {
-				if i == 0 {
-					condition += ` u.seller_id = ? `
-					pars = append(pars, id)
-				} else {
-					condition += ` OR u.seller_id = ? `
-					pars = append(pars, id)
-				}
-			}
-			condition += `) `
-		}
+	if sellerDepartmentId > 0 {
+		condition += ` AND u.seller_department_id = ? `
+		pars = append(pars, sellerDepartmentId)
 	}
 	switch status {
 	case "禁用":
@@ -669,10 +675,14 @@ func (this *UserController) List() {
 // @Param   PageSize   query   int  true       "每页数据条数"
 // @Param   CurrentIndex   query   int  true       "当前页页码,从1开始"
 // @Param   KeyWord   query   string  true       "手机号/邮箱"
+// @Param   SellerDepartmentId   query   int  true       "营业部id"
+// @Param   ApplyStatus   query   int  true       "申请状态"
 // @Param   RegisterStartDate   query   string  true       "注册开始时间"
 // @Param   RegisterEndDate   query   string  true       "注册结束时间"
 // @Param   LastUpdateStartDate query   string  true       "最后一次阅读开始时间"
 // @Param   LastUpdateEndDate   query   string  true       "最后一次阅读结束时间"
+// @Param   ApplyStartDate query   string  true       "申请开始时间"
+// @Param   ApplyEndDate   query   string  true       "申请结束时间"
 // @Param   SortParam   query   string  true       "排序字段"
 // @Param   SortType   query   string  true       "排序方式"
 // @Success 200 {object} response.UserListResp
@@ -686,132 +696,32 @@ func (this *UserController) PotentialList() {
 	pageSize, _ := this.GetInt("PageSize")
 	currentIndex, _ := this.GetInt("CurrentIndex")
 	keyWord := this.GetString("KeyWord")
+	sellerDepartmentId, _ := this.GetInt("SellerDepartmentId")
+	applyStatus := this.GetString("ApplyStatus")
+	applyStartDate := this.GetString("ApplyStartDate")
+	applyEndDate := this.GetString("ApplyEndDate")
 	registerStartDate := this.GetString("RegisterStartDate")
 	registerEndDate := this.GetString("RegisterEndDate")
 	lastUpdateStartDate := this.GetString("LastUpdateStartDate")
 	lastUpdateEndDate := this.GetString("LastUpdateEndDate")
-	sortParma := this.GetString("SortParam")
+	sortParam := this.GetString("SortParam")
 	sortType := this.GetString("SortType")
 
-	var sortCondition string
-	var condition string
-	var pars []interface{}
-
-	if keyWord != "" {
-		condition += ` AND ( u.phone LIKE ? OR u.email LIKE ?) `
-		pars = utils.GetLikeKeywordPars(pars, keyWord, 2)
-	}
-
-	if pageSize <= 0 {
-		pageSize = utils.PageSize20
-	} else if pageSize > utils.PageSize100 {
-		pageSize = utils.PageSize100
-	}
-	if currentIndex <= 0 {
-		currentIndex = 1
-	}
-
-	if sortParma != "" && sortType != "" {
-		sortCondition = " ORDER BY "
-		var param, sort string
-		switch sortParma {
-		case "RegisterTime":
-			param = "u.register_time"
-		case "LastUpdateTime":
-			param = "last_update_time"
-		case "ReadCnt":
-			param = "read_cnt"
-		}
-		switch sortType {
-		case "asc":
-			sort = " ASC "
-		case "desc":
-			sort = " DESC "
-		}
-		if param != "" && sort != "" {
-			sortCondition += param + " " + sort
+	userList, total, errMsg, msg, err := services.GetPotentialList(keyWord, sellerDepartmentId, applyStatus, pageSize, currentIndex, sortParam, sortType, registerStartDate, registerEndDate, lastUpdateStartDate, lastUpdateEndDate, applyStartDate, applyEndDate)
+	if err != nil {
+		if msg != "" {
+			br.Msg = msg
 		} else {
-			sortCondition = ""
-		}
-	}
-
-	if registerStartDate != "" {
-		registerStartTime, er := time.Parse(utils.FormatDate, registerStartDate)
-		if er != nil {
-			br.Msg = "日期格式有误"
-			return
-		}
-		condition += " AND u.register_time>=? "
-		registerStartDateStr := registerStartTime.Format(utils.FormatDateTime)
-		pars = append(pars, registerStartDateStr)
-	}
-	if registerEndDate != "" {
-		registerEndTime, er := time.Parse(utils.FormatDate, registerEndDate)
-		if er != nil {
-			br.Msg = "日期格式有误"
-			return
-		}
-		condition += " AND u.register_time<=? "
-		// 结束时间包含今天
-		registerEndTime = registerEndTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second)
-		registerEndDateStr := registerEndTime.Format(utils.FormatDateTime)
-		pars = append(pars, registerEndDateStr)
-	}
-	if lastUpdateStartDate != "" {
-		lastUpdateStartTime, er := time.Parse(utils.FormatDate, lastUpdateStartDate)
-		if er != nil {
-			br.Msg = "日期格式有误"
-			return
+			br.Msg = "获取失败"
 		}
-		condition += " AND ur.create_time>=? "
-
-		lastUpdateStartDateStr := lastUpdateStartTime.Format(utils.FormatDateTime)
-		pars = append(pars, lastUpdateStartDateStr)
-	}
-	if lastUpdateEndDate != "" {
-		lastUpdateEndTime, er := time.Parse(utils.FormatDate, lastUpdateEndDate)
-		if er != nil {
-			br.Msg = "日期格式有误"
-			return
+		if errMsg != "" {
+			br.ErrMsg = errMsg + ", Err:" + err.Error()
+		} else {
+			br.ErrMsg = "获取失败, Err:" + err.Error()
 		}
-		// 结束时间包含今天
-		lastUpdateEndTime = lastUpdateEndTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second)
-		lastUpdateEndDateStr := lastUpdateEndTime.Format(utils.FormatDateTime)
-		condition += " AND ur.create_time<=? "
-		pars = append(pars, lastUpdateEndDateStr)
-	}
-	if pageSize <= 0 {
-		pageSize = utils.PageSize20
-	} else if pageSize > utils.PageSize100 {
-		pageSize = utils.PageSize100
-	}
-	if currentIndex <= 0 {
-		currentIndex = 1
 	}
-	startSize := utils.StartIndex(currentIndex, pageSize)
 
-	total, err := models.GetPotentialUserCountByConditonV2(condition, pars)
-	if err != nil {
-		br.Msg = "获取失败"
-		br.ErrMsg = "获取失败,Err:" + err.Error()
-		return
-	}
 	resp := new(response.UserListResp)
-	if total == 0 {
-		page := paging.GetPaging(currentIndex, pageSize, total)
-		resp.Paging = page
-		br.Msg = "获取成功"
-		br.Ret = 200
-		br.Success = true
-		br.Data = resp
-		return
-	}
-	userList, err := models.GetPotentialUserIdsByConditonV2(condition, pars, sortCondition, startSize, pageSize)
-	if err != nil {
-		br.Msg = "查询用户失败"
-		br.Msg = "查询用户失败,系统错误,Err:" + err.Error()
-		return
-	}
 	page := paging.GetPaging(currentIndex, pageSize, total)
 	resp.Paging = page
 	resp.List = userList
@@ -835,7 +745,7 @@ func (this *UserController) PotentialEdit() {
 		this.ServeJSON()
 	}()
 
-	var req request.UserEidtReq
+	var req request.UserEditReq
 	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
 	if err != nil {
 		br.Msg = "参数解析异常!"
@@ -887,8 +797,8 @@ func (this *UserController) PotentialEdit() {
 			return
 		}
 	}
-	if req.SellerId <= 0 {
-		br.Msg = "请选择营业部/销售"
+	if req.SellerDepartmentId <= 0 {
+		br.Msg = "请选择营业部"
 		return
 	}
 	if req.ValidStartTime == "" || req.ValidEndTime == "" {
@@ -933,11 +843,18 @@ func (this *UserController) PotentialEdit() {
 		br.ErrMsg = "编辑用户失败, 系统错误,Err:" + err.Error()
 		return
 	}
+	department, err := models.GetSysDepartmentById(req.SellerDepartmentId)
+	if err != nil {
+		br.Msg = "编辑用户失败"
+		br.ErrMsg = "编辑用户失败, 系统错误,Err:" + err.Error()
+		return
+	}
 	user.RealName = req.RealName
 	user.AreaCode = req.AreaCode
 	user.Phone = req.Phone
 	user.Email = req.Email
-	user.SellerId = req.SellerId
+	user.SellerDepartmentId = req.SellerDepartmentId
+	user.SellerDepartmentName = department.SysDepartmentName
 	user.ValidStartTime = validStartTime
 	user.ValidEndTime = validEndTime
 	user.Company = req.Company
@@ -973,6 +890,124 @@ func (this *UserController) PotentialEdit() {
 	br.Ret = 200
 }
 
+// ExportPotentialExcel
+// @Title 导出潜在用户Excel
+// @Description 导出潜在用户Excel
+// @Param   KeyWord   query   string  true       "手机号/邮箱"
+// @Param   SellerDepartmentId   query   int  true       "营业部id"
+// @Param   ApplyStatus   query   int  true       "申请状态"
+// @Param   RegisterStartDate   query   string  true       "注册开始时间"
+// @Param   RegisterEndDate   query   string  true       "注册结束时间"
+// @Param   LastUpdateStartDate query   string  true       "最后一次阅读开始时间"
+// @Param   LastUpdateEndDate   query   string  true       "最后一次阅读结束时间"
+// @Param   ApplyStartDate query   string  true       "申请开始时间"
+// @Param   ApplyEndDate   query   string  true       "申请结束时间"
+// @Success 200 {object} request.UserAddReq
+// @router /potential/export/excel [get]
+func (this *UserController) ExportPotentialExcel() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	keyword := this.GetString("KeyWord")
+	sellerDepartmentId, _ := this.GetInt("SellerDepartmentId")
+	applyStatus := this.GetString("ApplyStatus")
+	registerStartDate := this.GetString("RegisterStartDate")
+	registerEndDate := this.GetString("RegisterEndDate")
+	lastUpdateStartDate := this.GetString("LastUpdateStartDate")
+	lastUpdateEndDate := this.GetString("LastUpdateEndDate")
+	applyStartDate := this.GetString("ApplyStartDate")
+	applyEndDate := this.GetString("ApplyEndDate")
+
+	total, err := models.GetPotentialUserTotal()
+	if err != nil {
+		br.Msg = "获取数据失败"
+		br.ErrMsg = "获取数据失败,系统错误,Err:" + err.Error()
+		return
+	}
+
+	userList, _, errMsg, msg, err := services.GetPotentialList(keyword, sellerDepartmentId, applyStatus, total, 0, "", "", registerStartDate, registerEndDate, lastUpdateStartDate, lastUpdateEndDate, applyStartDate, applyEndDate)
+	if err != nil {
+		if msg != "" {
+			br.Msg = msg
+		} else {
+			br.Msg = "获取失败"
+		}
+		if errMsg != "" {
+			br.ErrMsg = errMsg + ", Err:" + err.Error()
+		} else {
+			br.ErrMsg = "获取失败, Err:" + err.Error()
+		}
+	}
+
+	dir, _ := os.Executable()
+	exPath := filepath.Dir(dir)
+
+	downLoadnFilePath := exPath + "/" + time.Now().Format(utils.FormatDateTimeUnSpace) + ".xlsx"
+	xlsxFile := xlsx.NewFile()
+
+	sheetNew := new(xlsx.Sheet)
+	sheetNew, err = xlsxFile.AddSheet("潜在客户列表")
+	if err != nil {
+		br.Msg = "创建sheet失败"
+		br.ErrMsg = "创建sheet失败,系统错误,Err:" + err.Error()
+		return
+	}
+	titleRow := sheetNew.AddRow()
+	titleRow.AddCell().SetString("手机号")
+	titleRow.AddCell().SetString("姓名")
+	titleRow.AddCell().SetString("营业部")
+	titleRow.AddCell().SetString("邮箱")
+	titleRow.AddCell().SetString("注册时间")
+	titleRow.AddCell().SetString("申请时间")
+	titleRow.AddCell().SetString("最近一次阅读")
+	titleRow.AddCell().SetString("累计阅读次数")
+	titleRow.AddCell().SetString("申请状态")
+	for _, user := range userList {
+		row := sheetNew.AddRow()
+		row.AddCell().SetString(user.Phone)
+		row.AddCell().SetString(user.RealName)
+		row.AddCell().SetString(user.SellerDepartmentName)
+		row.AddCell().SetString(user.Email)
+		row.AddCell().SetString(user.RegisterTime)
+		row.AddCell().SetString(user.ApplyTime)
+		row.AddCell().SetString(user.LastUpdateTime)
+		row.AddCell().SetInt(user.ReadCnt)
+		switch user.ApplyStatus {
+		case 0:
+			row.AddCell().SetString("未申请")
+		case 1:
+			row.AddCell().SetString("已申请")
+		}
+	}
+	err = xlsxFile.Save(downLoadnFilePath)
+	if err != nil {
+		sheet, err := xlsxFile.AddSheet("无数据")
+		if err != nil {
+			br.Msg = "创建sheet失败"
+			br.ErrMsg = "创建sheet失败,系统错误,Err:" + err.Error()
+			return
+		}
+		rowSecName := sheet.AddRow()
+		celSecName := rowSecName.AddCell()
+		celSecName.SetString("无数据")
+		err = xlsxFile.Save(downLoadnFilePath)
+		if err != nil {
+			br.Msg = "保存文件失败"
+			br.ErrMsg = "保存文件失败,系统错误,Err:" + err.Error()
+			return
+		}
+	}
+	fileName := "潜在客户列表" + time.Now().Format("06.1.2")
+	this.Ctx.Output.Download(downLoadnFilePath, fileName)
+	defer os.Remove(downLoadnFilePath)
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "success"
+}
+
 // Detail
 // @Title 用户详情信息
 // @Description 用户详情信息

+ 5 - 17
controllers/user_read_record.go

@@ -21,7 +21,7 @@ type UserReadRecordController struct {
 // @Description 用户阅读统计列表
 // @Param   PageSize   query   int  true       "每页数据条数"
 // @Param   CurrentIndex   query   int  true       "当前页页码,从1开始"
-// @Param   SellerId   query   int  true       "销售id"
+// @Param   SellerDepartmentId   query   int  true       "营业部门id"
 // @Param   Status   query   string  true       "用户状态"
 // @Param   KeyWord   query   string  true       "手机号/邮箱/姓名"
 // @Param   IsRegistered   query   string  true       "是否注册"
@@ -43,7 +43,7 @@ func (this *UserReadRecordController) List() {
 
 	pageSize, _ := this.GetInt("PageSize")
 	currentIndex, _ := this.GetInt("CurrentIndex")
-	sellerIdStr := this.GetString("SellerId")
+	sellerDepartmentId, _ := this.GetInt("SellerDepartmentId", 0)
 	status := this.GetString("Status")
 	keyWord := this.GetString("KeyWord")
 	IsRegistered := this.GetString("IsRegisterd")
@@ -73,21 +73,9 @@ func (this *UserReadRecordController) List() {
 		currentIndex = 1
 	}
 
-	if sellerIdStr != "" {
-		sellerIds := strings.Split(sellerIdStr, ",")
-		if len(sellerIds) != 0 {
-			condition += ` AND ( `
-			for i, id := range sellerIds {
-				if i == 0 {
-					condition += ` u.seller_id = ? `
-					pars = append(pars, id)
-				} else {
-					condition += ` OR u.seller_id = ? `
-					pars = append(pars, id)
-				}
-			}
-			condition += `) `
-		}
+	if sellerDepartmentId > 0 {
+		condition += " AND u.seller_department_id=? "
+		pars = append(pars, sellerDepartmentId)
 	}
 	if sortParam != "" && sortType != "" {
 		sortCondition = " ORDER BY "

+ 1 - 1
main.go

@@ -24,7 +24,7 @@ func main() {
 	// 启动定时任务
 	go scheduler.InitJob()
 
-	// 初始化Es索引
+	// 初始化
 	services.InitTask()
 	web.ErrorController(&controllers.ErrorController{})
 	// 内存调整

+ 21 - 21
models/request/user.go

@@ -1,29 +1,29 @@
 package request
 
 type UserAddReq struct {
-	RealName        string `description:"姓名"`
-	AreaCode        string `description:"区号"`
-	Phone           string `description:"手机号"`
-	Email           string `description:"邮箱"`
-	SellerId        int    `description:"销售id"`
-	ValidStartTime  string `description:"有效期开始时间"`
-	ValidEndTime    string `description:"有效期结束时间"`
-	Company         string `description:"所属公司"`
-	ChartPermission []int  `description:"所选品种"`
+	RealName           string `description:"姓名"`
+	AreaCode           string `description:"区号"`
+	Phone              string `description:"手机号"`
+	Email              string `description:"邮箱"`
+	SellerDepartmentId int    `description:"营业部门id"`
+	ValidStartTime     string `description:"有效期开始时间"`
+	ValidEndTime       string `description:"有效期结束时间"`
+	Company            string `description:"所属公司"`
+	ChartPermission    []int  `description:"所选品种"`
 }
 
-type UserEidtReq struct {
-	UserId          int    `description:"用户id"`
-	RealName        string `description:"姓名"`
-	AreaCode        string `description:"区号"`
-	Phone           string `description:"手机号"`
-	Email           string `description:"邮箱"`
-	SellerId        int    `description:"销售id"`
-	ValidStartTime  string `description:"有效期开始时间"`
-	ValidEndTime    string `description:"有效期结束时间"`
-	Company         string `description:"所属公司"`
-	ChartPermission []int  `description:"所选品种"`
-	IsEnabled       bool   `description:"是否禁用"`
+type UserEditReq struct {
+	UserId             int    `description:"用户id"`
+	RealName           string `description:"姓名"`
+	AreaCode           string `description:"区号"`
+	Phone              string `description:"手机号"`
+	Email              string `description:"邮箱"`
+	SellerDepartmentId int    `description:"营业部门id"`
+	ValidStartTime     string `description:"有效期开始时间"`
+	ValidEndTime       string `description:"有效期结束时间"`
+	Company            string `description:"所属公司"`
+	ChartPermission    []int  `description:"所选品种"`
+	IsEnabled          bool   `description:"是否禁用"`
 }
 
 type UserCheckReq struct {

+ 37 - 11
models/sys_department.go

@@ -71,7 +71,7 @@ func DeleteSysDepartmentById(sysDepartmentIds []string, level int) (err error) {
 	return
 }
 
-func DeleteSysDepartmentByIdV2(sysDepartmentIds []string, level int) (err error) {
+func DeleteSysDepartmentByIdV2(sysDepartmentIds []int, level int) (err error) {
 	o := orm.NewOrm()
 	err = o.DoTx(func(ctx context.Context, txOrm orm.TxOrmer) error {
 		// sql := `DELETE FROM sys_department WHERE sys_department_id IN (?) `
@@ -98,6 +98,36 @@ func DeleteSysDepartmentByIdV2(sysDepartmentIds []string, level int) (err error)
 	return
 }
 
+func SaveSysDepartmentName(sysDepartment *SysDepartment) (err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM user WHERE seller_department_id=?`
+	var userList []*User
+	_, err = o.Raw(sql, sysDepartment.SysDepartmentId).QueryRows(&userList)
+	if err != nil {
+		return
+	}
+	var pars []interface{}
+	pars = append(pars, sysDepartment.SysDepartmentName)
+	for _, user := range userList {
+		pars = append(pars, user.UserId)
+	}
+	err = o.DoTx(func(ctx context.Context, txOrm orm.TxOrmer) error {
+		_, e := txOrm.Update(sysDepartment, "sys_department_name")
+		if e != nil {
+			return e
+		}
+		if len(userList) > 0 {
+			sql := `UPDATE user SET seller_department_name=? WHERE user_id IN (` + utils.GetOrmReplaceHolder(len(userList)) + `)`
+			_, e = txOrm.Raw(sql, pars).Exec()
+			if e != nil {
+				return e
+			}
+		}
+		return nil
+	})
+	return
+}
+
 func UpdateDepartmentSortByIds(sysDepartmentIds []int) (err error) {
 	o := orm.NewOrm()
 	err = o.DoTx(func(ctx context.Context, txOrm orm.TxOrmer) error {
@@ -162,23 +192,19 @@ func GetSysDepartmentByName(sysDepartmentName string) (item *SysDepartment, err
 	return
 }
 
-func GetSysDepartmentListByParentId(parentId int) (item SysDepartmentList, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT * FROM sys_department WHERE sys_department_id=? `
-	err = o.Raw(sql, parentId).QueryRow(&item)
-	return
-}
-
 func GetChildSysDepartmentListById(sysDepartmentId int) (items []*SysDepartmentList, err error) {
 	o := orm.NewOrm()
-	sql := `SELECT * FROM sys_department WHERE parent_id=? `
+	sql := `SELECT * FROM sys_department WHERE parent_id=? ORDER BY sort ASC, sys_department_id ASC`
 	_, err = o.Raw(sql, sysDepartmentId).QueryRows(&items)
 	return
 }
 
-func GetChildSysDepartmentListByIds(sysDepartmentIds string) (items []*SysDepartmentList, err error) {
+func GetChildSysDepartmentListByIds(sysDepartmentIds []int) (items []*SysDepartmentList, err error) {
+	if len(sysDepartmentIds) == 0 {
+		return
+	}
 	o := orm.NewOrm()
-	sql := `SELECT * FROM sys_department WHERE parent_id in (?) `
+	sql := `SELECT * FROM sys_department WHERE parent_id in (` + utils.GetOrmReplaceHolder(len(sysDepartmentIds)) + `) `
 	_, err = o.Raw(sql, sysDepartmentIds).QueryRows(&items)
 	return
 }

+ 6 - 0
models/sys_menu.go

@@ -87,3 +87,9 @@ func GetSysMenuItemsByCondition(condition string, pars []interface{}, fieldArr [
 	_, err = o.Raw(sql, pars).QueryRows(&items)
 	return
 }
+
+func BatchAddSysRoleMenu(items []*SysRoleMenuMapping) error {
+	o := orm.NewOrm()
+	_, err := o.InsertMulti(len(items), items)
+	return err
+}

+ 52 - 34
models/user.go

@@ -11,43 +11,54 @@ import (
 )
 
 type User struct {
-	UserId         int       `orm:"pk" description:"用户id"`
-	RealName       string    `description:"姓名"`
-	Phone          string    `description:"手机号"`
-	AreaCode       string    `description:"区号"`
-	Email          string    `description:"邮箱"`
-	SellerId       int       `description:"销售id(SysUserId)"`
-	Company        string    `description:"所属公司"`
-	ValidStartTime time.Time `description:"有效期开始时间"`
-	ValidEndTime   time.Time `description:"有效期结束时间"`
-	Status         int       `description:"用户类型: 0表示禁用,1表示潜在客户,2表示正式客户"`
-	CreateTime     time.Time `description:"系统中首次新增用户的时间"`
-	ModifyTime     time.Time `description:"系统中用户信息变更的时间"`
-	RegisterTime   time.Time `description:"用户首次登录小程序的时间"`
-	IsSubscribed   bool      `description:"是否关注公众号: 0表示没有关注,1表示关注"`
-	IsRegistered   bool      `description:"是否注册: 0表示没有注册,1表示注册"`
+	UserId               int       `orm:"pk" description:"用户id"`
+	OpenId               string    `description:"openid"`
+	UnionId              string    `description:"unionid"`
+	NickName             string    `description:"用户昵称"`
+	RealName             string    `description:"姓名"`
+	Phone                string    `description:"手机号"`
+	AreaCode             string    `description:"区号"`
+	Email                string    `description:"邮箱"`
+	SellerId             int       `description:"销售id(SysUserId)"`
+	SellerDepartmentId   int       `description:"营业部门id"`
+	SellerDepartmentName string    `description:"营业部门名称"`
+	Company              string    `description:"所属公司"`
+	ValidStartTime       time.Time `description:"有效期开始时间"`
+	ValidEndTime         time.Time `description:"有效期结束时间"`
+	Status               int       `description:"用户类型: 0表示禁用,1表示潜在客户,2表示正式客户"`
+	ApplyStatus          int       `description:"申请状态: 0表示未申请,1表示已申请"`
+	CreateTime           time.Time `description:"系统中首次新增用户的时间"`
+	ModifyTime           time.Time `description:"系统中用户信息变更的时间"`
+	RegisterTime         time.Time `description:"用户首次登录小程序的时间"`
+	ApplyTime            time.Time `description:"用户提交申请的时间"`
+	IsSubscribed         bool      `description:"是否关注公众号: 0表示没有关注,1表示关注"`
+	IsRegistered         bool      `description:"是否注册: 0表示没有注册,1表示注册"`
+	AccessToken          string    `description:"用户token"`
+	Headimgurl           string    `description:"用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空"`
 }
 
 type UserView struct {
-	UserId         int    `orm:"pk" description:"用户id"`
-	RealName       string `description:"姓名"`
-	Phone          string `description:"手机号"`
-	AreaCode       string `description:"区号"`
-	Email          string `description:"邮箱"`
-	SellerId       int    `description:"销售id(SysUserId)"`
-	SellerName     string `description:"销售姓名"`
-	Company        string `description:"所属公司"`
-	ValidStartTime string `description:"有效期开始时间"`
-	ValidEndTime   string `description:"有效期结束时间"`
-	RestDate       int    `description:"剩余天数"`
-	Status         int    `description:"用户类型: 0表示禁用,1表示潜在客户,2表示正式客户"`
-	ReadCnt        int    `description:"用户阅读量"`
-	CreateTime     string `description:"系统中首次新增用户的时间"`
-	ModifyTime     string `description:"系统中用户信息变更的时间"`
-	LastUpdateTime string `description:"最近一次阅读时间"`
-	RegisterTime   string `description:"用户首次登录小程序的时间"`
-	IsSubscribed   bool   `description:"是否关注公众号: 0表示没有关注,1表示关注"`
-	IsRegistered   bool   `description:"是否注册: 0表示没有注册,1表示注册"`
+	UserId               int    `orm:"pk" description:"用户id"`
+	RealName             string `description:"姓名"`
+	Phone                string `description:"手机号"`
+	AreaCode             string `description:"区号"`
+	Email                string `description:"邮箱"`
+	SellerDepartmentId   int    `description:"营业部门id"`
+	SellerDepartmentName string `description:"营业部门名称"`
+	Company              string `description:"所属公司"`
+	ValidStartTime       string `description:"有效期开始时间"`
+	ValidEndTime         string `description:"有效期结束时间"`
+	RestDate             int    `description:"剩余天数"`
+	Status               int    `description:"用户类型: 0表示禁用,1表示潜在客户,2表示正式客户"`
+	ApplyStatus          int    `description:"申请状态: 0表示未申请,1表示已申请"`
+	ReadCnt              int    `description:"用户阅读量"`
+	ApplyTime            string `description:"用户提交申请的时间"`
+	CreateTime           string `description:"系统中首次新增用户的时间"`
+	ModifyTime           string `description:"系统中用户信息变更的时间"`
+	LastUpdateTime       string `description:"最近一次阅读时间"`
+	RegisterTime         string `description:"用户首次登录小程序的时间"`
+	IsSubscribed         bool   `description:"是否关注公众号: 0表示没有关注,1表示关注"`
+	IsRegistered         bool   `description:"是否注册: 0表示没有注册,1表示注册"`
 }
 
 func (u *User) Save() (err error) {
@@ -262,6 +273,13 @@ func GetPotentialUserListByConditonSort(userIds []string, sortConditon string, s
 	return
 }
 
+func GetPotentialUserTotal() (count int, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT COUNT(*) AS count FROM user WHERE status=1`
+	err = o.Raw(sql).QueryRow(&count)
+	return
+}
+
 func GetUserReadList(condition, sortCondition string, pars []interface{}, startSize, pageSize int) (items []*UserView, err error) {
 	sql := `SELECT u.*, su.sys_real_name AS seller_name, COUNT(ur.user_id) AS read_cnt, Max(ur.create_time) AS last_update_time
 	FROM user AS u

+ 18 - 0
routers/commentsRouter.go

@@ -151,6 +151,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_mini_crm/controllers:SellerController"] = append(beego.GlobalControllerRouter["eta/eta_mini_crm/controllers:SellerController"],
+        beego.ControllerComments{
+            Method: "DepartmentList",
+            Router: `/department/list`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_mini_crm/controllers:SellerController"] = append(beego.GlobalControllerRouter["eta/eta_mini_crm/controllers:SellerController"],
         beego.ControllerComments{
             Method: "List",
@@ -466,6 +475,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_mini_crm/controllers:UserController"] = append(beego.GlobalControllerRouter["eta/eta_mini_crm/controllers:UserController"],
+        beego.ControllerComments{
+            Method: "ExportPotentialExcel",
+            Router: `/potential/export/excel`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_mini_crm/controllers:UserController"] = append(beego.GlobalControllerRouter["eta/eta_mini_crm/controllers:UserController"],
         beego.ControllerComments{
             Method: "PotentialList",

+ 45 - 14
services/sys_department.go

@@ -2,8 +2,7 @@ package services
 
 import (
 	"eta/eta_mini_crm/models"
-	"strconv"
-	"strings"
+	"eta/eta_mini_crm/utils"
 )
 
 // GetSysDepartmentTree 递归获取部门目录树
@@ -24,29 +23,61 @@ func GetSysDepartmentTree(list []*models.SysDepartmentList, parentId int) []*mod
 }
 
 // DeleteSysDepartmentById 根据部门id去删除部门下的所有子目录,并清除用户的关联信息
-func DeleteSysDepartmentById(sysDepartmentId, level int) (err error) {
-	sysDepartmentIds := make([]string, 0)
-	sysDepartmentIds = append(sysDepartmentIds, strconv.Itoa(sysDepartmentId))
+func DeleteSysDepartmentById(sysDepartmentId, level int) (msg string, err error) {
+	sysDepartment, err := models.GetSysDepartmentById(sysDepartmentId)
+	if err != nil {
+		if err.Error() == utils.ErrNoRow() {
+			msg = "部门不存在"
+			return
+		}
+		return
+	}
+	if sysDepartment.SysDepartmentName == "营业部" {
+		msg = "营业部不能被删除"
+		return
+	}
+	parentDep, err := models.GetSysDepartmentById(sysDepartment.ParentId)
+	if err != nil {
+		if err.Error() == utils.ErrNoRow() {
+			msg = "父部门不存在"
+			return
+		}
+		return
+	}
+	if parentDep.SysDepartmentName == "营业部" {
+		condition := ` AND seller_department_id=? `
+		count, er := models.GetUserCount(condition, []interface{}{sysDepartment.SysDepartmentId})
+		if er != nil {
+			err = er
+			return
+		}
+		if count > 0 {
+			msg = "该营业部有关联用户,无法删除"
+			return
+		}
+	}
+	sysDepartmentIds := make([]int, 0)
+	sysDepartmentIds = append(sysDepartmentIds, sysDepartmentId)
 	var curIds = sysDepartmentIds
-	var curStringIds string
+	var curStringIds []int
 	for i := level; i < 3; i++ {
 		// 从当前层部门依次向下遍历子部门
-		curStringIds = strings.Join(curIds, ",")
-		if curStringIds == "" {
+		curStringIds = curIds
+		if len(curStringIds) == 0 {
 			break
 		}
 		sysDepartments, er := models.GetChildSysDepartmentListByIds(curStringIds)
-
 		if er != nil {
-			return er
+			err = er
+			return
 		}
-		curIds = make([]string, 0)
+		curIds = make([]int, 0)
 		for _, dep := range sysDepartments {
 			if dep.SysDepartmentId == 0 {
 				continue
 			}
-			sysDepartmentIds = append(sysDepartmentIds, strconv.Itoa(dep.SysDepartmentId))
-			curIds = append(curIds, strconv.Itoa(dep.SysDepartmentId))
+			sysDepartmentIds = append(sysDepartmentIds, dep.SysDepartmentId)
+			curIds = append(curIds, dep.SysDepartmentId)
 		}
 	}
 	err = models.DeleteSysDepartmentByIdV2(sysDepartmentIds, level)
@@ -64,7 +95,7 @@ func GetSysDepartmentPathIdsById(sysDepartmentId int) (pathIds []int, err error)
 	pathIds[sysDepartment.Level-1] = sysDepartmentId
 	curSysDepartmentId := sysDepartment.ParentId
 	for curLevel := sysDepartment.Level - 1; curLevel >= 1; curLevel-- {
-		upSysDepartment, er := models.GetSysDepartmentListByParentId(curSysDepartmentId)
+		upSysDepartment, er := models.GetSysDepartmentById(curSysDepartmentId)
 		if er != nil {
 			return
 		}

+ 47 - 0
services/task.go

@@ -10,8 +10,12 @@ import (
 
 func InitTask() {
 	fmt.Println("start task")
+	// 创建Es索引
 	CreateIndex()
+	// 初始化研报推送状态
 	InitReportPushStatus()
+	// 初始化系统用户权限
+	InitSystemUserPermission()
 	fmt.Println("end task!")
 }
 
@@ -110,3 +114,46 @@ func InitReportPushStatus() {
 		}
 	}
 }
+
+func InitSystemUserPermission() {
+	menuList, err := models.GetSysMenuItemsByCondition("", []interface{}{}, []string{"sys_menu_id"}, "")
+	if err != nil {
+		fmt.Println("获取系统菜单失败, Err:", err)
+		utils.FileLog.Info("获取系统菜单失败, Err:", err)
+		return
+	}
+	roleMenuList, err := models.GetSysRoleMenuByRoleId(1)
+	if err != nil {
+		if err.Error() == utils.ErrNoRow() {
+			fmt.Println("系统角色不存在, 请先创建系统角色")
+			utils.FileLog.Info("系统角色不存在, 请先创建系统角色")
+		}
+		fmt.Println("获取系统角色菜单失败, Err:", err)
+		utils.FileLog.Info("获取系统角色菜单失败, Err:", err)
+		return
+	}
+	menuMap := make(map[int]struct{})
+	for _, v := range menuList {
+		menuMap[v.SysMenuId] = struct{}{}
+	}
+	for _, v := range roleMenuList {
+		delete(menuMap, v.SysMenuId)
+	}
+	insertMenu := make([]*models.SysRoleMenuMapping, 0)
+	for k, _ := range menuMap {
+		t := new(models.SysRoleMenuMapping)
+		t.SysMenuId = k
+		t.SysRoleId = 1
+		t.Type = 0
+		insertMenu = append(insertMenu, t)
+	}
+	if len(insertMenu) > 0 {
+		err = models.BatchAddSysRoleMenu(insertMenu)
+		if err != nil {
+			fmt.Println("初始化系统用户权限失败, Err:", err)
+			utils.FileLog.Info("初始化系统用户权限失败, Err:", err)
+			return
+		}
+	}
+	fmt.Println("初始化系统用户权限完成")
+}

+ 146 - 1
services/user.go

@@ -1,6 +1,10 @@
 package services
 
-import "eta/eta_mini_crm/models"
+import (
+	"eta/eta_mini_crm/models"
+	"eta/eta_mini_crm/utils"
+	"time"
+)
 
 func GetUserPermissionById(userId int) (items []*models.ChartPermissionView, err error) {
 	permissionIds, err := models.GetChartPermissionIdByUserId(userId)
@@ -17,3 +21,144 @@ func GetUserPermissionById(userId int) (items []*models.ChartPermissionView, err
 
 	return
 }
+
+func GetPotentialList(keyWord string, sellerDepartmentId int, applyStatus string, pageSize int, currentIndex int, sortParam string, sortType string, registerStartDate string, registerEndDate string, lastUpdateStartDate string, lastUpdateEndDate string, applyStartDate string, applyEndDate string) (userList []*models.UserView, total int, errMsg, msg string, err error) {
+	var sortCondition string
+	var condition string
+	var pars []interface{}
+
+	if keyWord != "" {
+		condition += ` AND ( u.phone LIKE ? OR u.email LIKE ?) `
+		pars = utils.GetLikeKeywordPars(pars, keyWord, 2)
+	}
+
+	if sellerDepartmentId != 0 {
+		condition += ` AND u.seller_department_id=? `
+		pars = append(pars, sellerDepartmentId)
+	}
+	if applyStatus != "" {
+		condition += ` AND u.apply_status=? `
+		pars = append(pars, applyStatus)
+	}
+
+	if pageSize <= 0 {
+		pageSize = utils.PageSize20
+	}
+	if currentIndex <= 0 {
+		currentIndex = 1
+	}
+
+	if sortParam != "" && sortType != "" {
+		sortCondition = " ORDER BY "
+		var param, sort string
+		switch sortParam {
+		case "RegisterTime":
+			param = "u.register_time"
+		case "LastUpdateTime":
+			param = "last_update_time"
+		case "ReadCnt":
+			param = "read_cnt"
+		case "ApplyTime":
+			param = "u.apply_time"
+		}
+		switch sortType {
+		case "asc":
+			sort = " ASC "
+		case "desc":
+			sort = " DESC "
+		}
+		if param != "" && sort != "" {
+			sortCondition += param + " " + sort
+		} else {
+			sortCondition = ""
+		}
+	}
+
+	if registerStartDate != "" {
+		registerStartTime, er := time.Parse(utils.FormatDate, registerStartDate)
+		if er != nil {
+			err = er
+			msg = "日期格式有误"
+			return
+		}
+		condition += " AND u.register_time>=? "
+		registerStartDateStr := registerStartTime.Format(utils.FormatDateTime)
+		pars = append(pars, registerStartDateStr)
+	}
+	if registerEndDate != "" {
+		registerEndTime, er := time.Parse(utils.FormatDate, registerEndDate)
+		if er != nil {
+			err = er
+			msg = "日期格式有误"
+			return
+		}
+		condition += " AND u.register_time<=? "
+		// 结束时间包含今天
+		registerEndTime = registerEndTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second)
+		registerEndDateStr := registerEndTime.Format(utils.FormatDateTime)
+		pars = append(pars, registerEndDateStr)
+	}
+	if lastUpdateStartDate != "" {
+		lastUpdateStartTime, er := time.Parse(utils.FormatDate, lastUpdateStartDate)
+		if er != nil {
+			err = er
+			msg = "日期格式有误"
+			return
+		}
+		condition += " AND ur.create_time>=? "
+
+		lastUpdateStartDateStr := lastUpdateStartTime.Format(utils.FormatDateTime)
+		pars = append(pars, lastUpdateStartDateStr)
+	}
+	if lastUpdateEndDate != "" {
+		lastUpdateEndTime, er := time.Parse(utils.FormatDate, lastUpdateEndDate)
+		if er != nil {
+			err = er
+			msg = "日期格式有误"
+			return
+		}
+		// 结束时间包含今天
+		lastUpdateEndTime = lastUpdateEndTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second)
+		lastUpdateEndDateStr := lastUpdateEndTime.Format(utils.FormatDateTime)
+		condition += " AND ur.create_time<=? "
+		pars = append(pars, lastUpdateEndDateStr)
+	}
+	if applyStartDate != "" {
+		applyStartTime, er := time.Parse(utils.FormatDate, applyStartDate)
+		if er != nil {
+			err = er
+			msg = "日期格式有误"
+			return
+		}
+		condition += " AND u.apply_time>=? "
+		applyStartDateStr := applyStartTime.Format(utils.FormatDateTime)
+		pars = append(pars, applyStartDateStr)
+	}
+	if applyEndDate != "" {
+		applyEndTime, er := time.Parse(utils.FormatDate, applyEndDate)
+		if er != nil {
+			err = er
+			msg = "日期格式有误"
+			return
+		}
+		// 结束时间包含今天
+		applyEndTime = applyEndTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second)
+		applyEndDateStr := applyEndTime.Format(utils.FormatDateTime)
+		condition += " AND u.apply_time<=? "
+		pars = append(pars, applyEndDateStr)
+	}
+	startSize := utils.StartIndex(currentIndex, pageSize)
+
+	total, err = models.GetPotentialUserCountByConditonV2(condition, pars)
+	if err != nil {
+		errMsg = "获取用户列表统计失败"
+		return
+	}
+	userList, err = models.GetPotentialUserIdsByConditonV2(condition, pars, sortCondition, startSize, pageSize)
+	if err != nil {
+		errMsg = "获取用户列表失败"
+		return
+	}
+	return
+
+}

+ 1 - 0
utils/constants.go

@@ -75,6 +75,7 @@ var NoAuthApiMap = map[string]bool{
 	"/user/change_list":       true,
 	"/classify/list":          true,
 	"/seller/list":            true,
+	"/seller/department/list": true,
 }
 
 var APPNAME string = "东吴CRM"