|
@@ -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 用户详情信息
|