|
@@ -5,13 +5,17 @@ import (
|
|
|
"errors"
|
|
|
"fmt"
|
|
|
"github.com/rdlucklib/rdluck_tools/paging"
|
|
|
+ "github.com/tealeg/xlsx"
|
|
|
"hongze/hz_crm_api/controllers"
|
|
|
"hongze/hz_crm_api/models"
|
|
|
"hongze/hz_crm_api/models/cygx"
|
|
|
+ "hongze/hz_crm_api/models/system"
|
|
|
"hongze/hz_crm_api/services"
|
|
|
cygxService "hongze/hz_crm_api/services/cygx"
|
|
|
"hongze/hz_crm_api/services/elastic"
|
|
|
"hongze/hz_crm_api/utils"
|
|
|
+ "os"
|
|
|
+ "path/filepath"
|
|
|
"strconv"
|
|
|
"strings"
|
|
|
"time"
|
|
@@ -95,6 +99,7 @@ func (this *MorningMeetingController) List() {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+ var meetingIds []int
|
|
|
for _, item := range list {
|
|
|
respItem := cygx.CygxMorningMeetingReviewItem{
|
|
|
Id: item.Id,
|
|
@@ -108,9 +113,15 @@ func (this *MorningMeetingController) List() {
|
|
|
if item.Status == 1 {
|
|
|
respItem.PublishTime = item.PublishTime.Local().Format(utils.FormatDateTime)
|
|
|
}
|
|
|
-
|
|
|
+ meetingIds = append(meetingIds, item.Id)
|
|
|
resp.List = append(resp.List, &respItem)
|
|
|
}
|
|
|
+ //PvUv 数量
|
|
|
+ mapPv, mapUv := cygxService.GetCygxMorningMeetingReviewChapterHistoryPvUvMap(meetingIds)
|
|
|
+ for _, v := range resp.List {
|
|
|
+ v.Pv = mapPv[v.Id]
|
|
|
+ v.Uv = mapUv[v.Id]
|
|
|
+ }
|
|
|
|
|
|
page := paging.GetPaging(currentIndex, pageSize, total)
|
|
|
resp.Paging = page
|
|
@@ -690,3 +701,149 @@ func (this *MorningMeetingController) Delete() {
|
|
|
br.Success = true
|
|
|
br.Msg = "删除成功"
|
|
|
}
|
|
|
+
|
|
|
+// @Title 下载PV
|
|
|
+// @Description 下载PV接口
|
|
|
+// @Param MeetingId query int true "晨会点评id"
|
|
|
+// @Param IsExport query bool false "是否导出excel,默认是false"
|
|
|
+// @router /morningMeeting/list_pv [get]
|
|
|
+func (this *MorningMeetingController) ListPv() {
|
|
|
+ br := new(models.BaseResponse).Init()
|
|
|
+ defer func() {
|
|
|
+ this.Data["json"] = br
|
|
|
+ this.ServeJSON()
|
|
|
+ }()
|
|
|
+ AdminUser := this.SysUser
|
|
|
+ if AdminUser == nil {
|
|
|
+ br.Msg = "请登录"
|
|
|
+ br.ErrMsg = "请登录,用户信息为空"
|
|
|
+ br.Ret = 408
|
|
|
+ return
|
|
|
+ }
|
|
|
+ meetingId, _ := this.GetInt("MeetingId")
|
|
|
+ if meetingId < 1 {
|
|
|
+ br.Msg = "请输入晨会ID"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ //是否导出报表
|
|
|
+ isExport, _ := this.GetBool("IsExport")
|
|
|
+ var condition string
|
|
|
+ var pars []interface{}
|
|
|
+ condition = ` AND meeting_id = ? ORDER BY id DESC `
|
|
|
+ pars = append(pars, meetingId)
|
|
|
+ var respList []*cygx.CygxMorningMeetingReviewChapterHistoryResp
|
|
|
+
|
|
|
+ list, err := cygx.GetCygxMorningMeetingReviewChapterHistoryList(condition, pars)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取数据失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ //超级管理员和权益管理员、权益研究员可以下载所有客户,销售组长能下载本组客户,销售只能下载本人名下客户
|
|
|
+ var isCanDownload bool
|
|
|
+ adminInfo, errAdmin := system.GetSysUserById(AdminUser.AdminId)
|
|
|
+ if errAdmin != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取失败,Err:" + errAdmin.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if adminInfo.Role == "admin" || adminInfo.Role == "researcher" {
|
|
|
+ isCanDownload = true
|
|
|
+ }
|
|
|
+ //销售查看自己客户,销售组长查看组员
|
|
|
+ if isCanDownload == false {
|
|
|
+ mapMobile, err := cygxService.GetAdminLookUserMobile(adminInfo)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取失败,销售对应权限,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for _, v := range list {
|
|
|
+ if _, ok := mapMobile[v.Mobile]; ok {
|
|
|
+ respList = append(respList, v)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ respList = list
|
|
|
+ }
|
|
|
+ resp := cygx.CygxMorningMeetingReviewChapterHistoryResptListResp{
|
|
|
+ List: list,
|
|
|
+ }
|
|
|
+ //导出excel
|
|
|
+ if isExport {
|
|
|
+ MorningMeetingHistoryListExport(this, resp, br)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "获取成功"
|
|
|
+ br.Data = resp
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+// MorningMeetingHistoryListExport 导出Excel
|
|
|
+func MorningMeetingHistoryListExport(this *MorningMeetingController, resp cygx.CygxMorningMeetingReviewChapterHistoryResptListResp, br *models.BaseResponse) {
|
|
|
+ //创建excel
|
|
|
+ dir, err := os.Executable()
|
|
|
+ exPath := filepath.Dir(dir)
|
|
|
+ downLoadnFilePath := exPath + "/" + time.Now().Format(utils.FormatDateTimeUnSpace) + ".xlsx"
|
|
|
+ xlsxFile := xlsx.NewFile()
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "生成文件失败"
|
|
|
+ br.ErrMsg = "生成文件失败"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ style := xlsx.NewStyle()
|
|
|
+ alignment := xlsx.Alignment{
|
|
|
+ Horizontal: "center",
|
|
|
+ Vertical: "center",
|
|
|
+ WrapText: true,
|
|
|
+ }
|
|
|
+ style.Alignment = alignment
|
|
|
+ style.ApplyAlignment = true
|
|
|
+ sheet, err := xlsxFile.AddSheet("阅读明细")
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "新增Sheet失败"
|
|
|
+ br.ErrMsg = "新增Sheet失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ rowTitle := sheet.AddRow()
|
|
|
+ cellA := rowTitle.AddCell()
|
|
|
+ cellA.Value = "姓名"
|
|
|
+ cellB := rowTitle.AddCell()
|
|
|
+ cellB.Value = "手机号"
|
|
|
+ cellC := rowTitle.AddCell()
|
|
|
+ cellC.Value = "公司名称"
|
|
|
+ cellD := rowTitle.AddCell()
|
|
|
+ cellD.Value = "所属权益销售"
|
|
|
+ cellE := rowTitle.AddCell()
|
|
|
+ cellE.Value = "阅读时间"
|
|
|
+
|
|
|
+ for _, item := range resp.List {
|
|
|
+ row := sheet.AddRow()
|
|
|
+ cellA := row.AddCell()
|
|
|
+ cellA.Value = item.RealName
|
|
|
+ cellB := row.AddCell()
|
|
|
+ cellB.Value = item.Mobile
|
|
|
+ cellC := row.AddCell()
|
|
|
+ cellC.Value = item.CompanyName
|
|
|
+ cellD := row.AddCell()
|
|
|
+ cellD.Value = item.SellerName
|
|
|
+ cellE := row.AddCell()
|
|
|
+ cellE.Value = item.CreateTime
|
|
|
+ }
|
|
|
+ err = xlsxFile.Save(downLoadnFilePath)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "保存文件失败"
|
|
|
+ br.ErrMsg = "保存文件失败"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ downloadFileName := time.Now().Format(utils.FormatDateTimeUnSpace) + ".xlsx"
|
|
|
+ this.Ctx.Output.Download(downLoadnFilePath, downloadFileName)
|
|
|
+ defer func() {
|
|
|
+ os.Remove(downLoadnFilePath)
|
|
|
+ }()
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "导出成功"
|
|
|
+}
|