Browse Source

标签图片

xingzai 3 years ago
parent
commit
2096af2dac
3 changed files with 216 additions and 231 deletions
  1. 194 230
      controllers/activity.go
  2. 4 1
      models/activity.go
  3. 18 0
      models/activity_type.go

+ 194 - 230
controllers/activity.go

@@ -4,13 +4,11 @@ import (
 	"encoding/json"
 	"fmt"
 	"github.com/medivhzhan/weapp/v2"
-	"github.com/tealeg/xlsx"
 	"hongze/hongze_cygx/models"
 	"hongze/hongze_cygx/services"
 	"hongze/hongze_cygx/utils"
-	"os"
-	"path/filepath"
 	"rdluck_tools/paging"
+	"sort"
 	"strconv"
 	"strings"
 	"time"
@@ -285,6 +283,10 @@ func (this *ActivityCoAntroller) ActivityList() {
 		if services.GetShowSustainable() && v.ChartPermissionName == "研选" {
 			list[k].IsShowSustainable = true
 		}
+		if v.ChartPermissionName == "研选" && v.ActivityTypeId == 1 {
+			list[k].ActivityTypeName = "研选电话会"
+		}
+		list[k].ImgUrl = "https://hongze.oss-cn-shanghai.aliyuncs.com/static/images/202111/20211104/QbTGTNhD9MxYp24cJ7V5WpCN0oNl.png"
 	}
 	page := paging.GetPaging(currentIndex, pageSize, total)
 	resp := new(models.GetCygxActivityListRep)
@@ -1532,7 +1534,6 @@ func (this *ActivityCoAntroller) LabelList() {
 		this.Data["json"] = br
 		this.ServeJSON()
 	}()
-
 	user := this.User
 	if user == nil {
 		br.Msg = "请登录"
@@ -1540,14 +1541,12 @@ func (this *ActivityCoAntroller) LabelList() {
 		return
 	}
 	pageSize, _ := this.GetInt("PageSize")
-	//currentIndex, _ := this.GetInt("CurrentIndex")
 	chartPermissionIds := this.GetString("ChartPermissionIds")
 	activityTypeIds := this.GetString("ActivityTypeIds")
 	whichDay := this.GetString("WhichDay")
 	isShowJurisdiction, _ := this.GetInt("IsShowJurisdiction")
 	activeState := this.GetString("ActiveState")
 	label := this.GetString("Label")
-
 	//入参为 undefined 时的处理
 	if chartPermissionIds == "undefined" {
 		chartPermissionIds = ""
@@ -1564,72 +1563,17 @@ func (this *ActivityCoAntroller) LabelList() {
 	if label == "undefined" {
 		label = ""
 	}
-	var userType int
-	var permissionStr string
-	if user.CompanyId <= 1 {
-		userType = 0
-	} else {
-		total, err := models.GetCountCompanyDetailByIdGroup(user.CompanyId)
-		if err != nil {
-			br.Msg = "获取失败"
-			br.ErrMsg = "获取失败,Err:" + err.Error()
-			return
-		}
-		if total == 0 {
-			userType = 0
-		} else {
-			companyDetail, err := models.GetCompanyDetailByIdGroup(user.CompanyId)
-			if err != nil {
-				br.Msg = "获取信息失败!"
-				br.ErrMsg = "获取客户详情失败,Err:" + err.Error()
-				return
-			}
-			if companyDetail == nil {
-				br.Msg = "获取信息失败!"
-				br.ErrMsg = "客户不存在,uid:" + strconv.Itoa(user.UserId) + "CompanyId:" + strconv.Itoa(user.CompanyId)
-				return
-			}
-			permissionStr, err = models.GetCompanyPermission(user.CompanyId)
-			if err != nil {
-				br.Msg = "获取信息失败"
-				br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
-				return
-			}
-			//1、永续客户
-			//2、大套餐客户(4个行业全开通的正式客户)
-			//3、分行业套餐客户(开通对应行业的正式客户)
-			//4、仅开通专家套餐的正式客户
-			//5、开通对应行业套餐或专家套餐的试用客户
-			if companyDetail.Status == "永续" {
-				userType = 1
-			} else if companyDetail.Status == "试用" {
-				userType = 5
-			} else if companyDetail.Status == "正式" {
-				if permissionStr == "专家" {
-					userType = 4
-				} else if strings.Contains(permissionStr, "医药") && strings.Contains(permissionStr, "消费") && strings.Contains(permissionStr, "科技") && strings.Contains(permissionStr, "智造") {
-					userType = 2
-				} else {
-					userType = 3
-				}
-				if userType == 3 {
-					if !strings.Contains(permissionStr, "医药") && !strings.Contains(permissionStr, "消费") && !strings.Contains(permissionStr, "科技") && !strings.Contains(permissionStr, "智造") {
-						userType = 4
-					}
-				}
-			}
-		}
+	userType, permissionStr, err := services.GetUserType(user.CompanyId)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
 	}
 	if isShowJurisdiction == 1 && chartPermissionIds == "" && userType == 4 {
 		activityTypeIds = "1,3"
 	}
 	var startSize int
-	//if pageSize <= 0 {
-	//	pageSize = utils.PageSize20
-	//}
-	//currentIndex = 1
 	pageSize = 15
-	//startSize = utils.StartIndex(currentIndex, pageSize)
 	var condition string
 	var sortTime string
 	var pars []interface{}
@@ -1637,9 +1581,6 @@ func (this *ActivityCoAntroller) LabelList() {
 	var sqlExport string
 	slicePer := strings.Split(permissionStr, ",")
 	var permissionSqlStr string
-	//for _, v := range slicePer {
-	//	permissionSqlStr += "'" + v + "',"
-	//}
 	for _, v := range slicePer {
 		if userType == 1 {
 			if v != "研选" {
@@ -1660,7 +1601,6 @@ func (this *ActivityCoAntroller) LabelList() {
 	}
 	sqlExport += `) `
 	condition += ` AND art.publish_status = 1  AND art.label != '' `
-	//condition += ` AND art.active_state = 1 `
 	var conditionOr string
 	if (userType == 2 || userType == 3 || userType == 4) && strings.Contains(permissionStr, "专家") {
 		conditionOr += ` OR (  art.is_limit_people = 1 AND art.customer_type_ids LIKE '%4%'	 ` + condition + `) `
@@ -1673,10 +1613,13 @@ func (this *ActivityCoAntroller) LabelList() {
 	} else {
 		conditionOr += `	OR ( art.is_limit_people = 0 	  ` + condition + `) `
 	}
-	//conditionOr += `	OR ( art.is_limit_people = 0 	  ` + condition + `) `
 	condition += `AND art.is_limit_people = 1 ` + permissionSqlStr + sqlExport + conditionOr
 	resp := new(models.GetCygxActivityLabelListRep)
-	//conditionLaable := condition
+
+	if label != "" {
+		resp.Label = label
+		resp.ImgUrl = ""
+	}
 	//主题
 	if label != "" {
 		sortTime = ` timesort DESC `
@@ -1720,7 +1663,6 @@ func (this *ActivityCoAntroller) LabelList() {
 			condition += ` AND art.activity_type_id  IN (` + activityTypeIds + `)`
 		}
 		var conditionOr string
-
 		if whichDay != "" {
 			var startDate string
 			var endDate string
@@ -1762,7 +1704,6 @@ func (this *ActivityCoAntroller) LabelList() {
 		br.ErrMsg = "获取失败,Err:" + errList.Error()
 		return
 	}
-	//resp := new(models.GetCygxActivityLabelListRep)
 	resp.List = list
 	br.Ret = 200
 	br.Success = true
@@ -1770,160 +1711,6 @@ func (this *ActivityCoAntroller) LabelList() {
 	br.Data = resp
 }
 
-// @Title 上传公司名称excel
-// @Description 上传参会表格数据
-// @Param   File   query   file  true       "文件"
-// @Success 200 Ret=200 导入成功
-// @router /activityMeet/import [post]
-func (this *ActivityCoAntroller) Import() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.User
-	if sysUser == nil {
-		br.Msg = "请重新登录"
-		return
-	}
-	file, h, err := this.GetFile("File")
-	if err != nil {
-		br.Msg = "获取文件失败"
-		br.ErrMsg = "获取文件失败,Err:" + err.Error()
-		return
-	}
-
-	uploadDir := "static/xls"
-	err = os.MkdirAll(uploadDir, 766)
-	if err != nil {
-		br.Msg = "存储目录创建失败"
-		br.ErrMsg = "存储目录创建失败,Err:" + err.Error()
-		return
-	}
-	path := uploadDir + "/" + time.Now().Format(utils.FormatDateTimeUnSpace) + h.Filename
-	defer file.Close()
-	err = this.SaveToFile("File", path)
-	if err != nil {
-		br.Msg = "文件保存失败"
-		br.ErrMsg = "文件保存失败,Err:" + err.Error()
-		return
-	}
-	xlFile, err := xlsx.OpenFile(path)
-	if err != nil {
-		br.Msg = "文件导入失败"
-		br.ErrMsg = "文件导入失败,Err:" + err.Error()
-		return
-	}
-	//允许添加的联系人
-	needAddAttendanc := make([]*models.UserWhiteList, 0)
-
-	// 遍历sheet页读取
-	for _, sheet := range xlFile.Sheets {
-		//遍历行读取
-		maxRow := sheet.MaxRow
-		for i := 0; i < maxRow; i++ {
-			if i >= 1 {
-				row := sheet.Row(i)
-				cells := row.Cells
-				var companyName, permission string
-				for k, cell := range cells {
-					if k == 0 {
-						companyName = cell.String()
-					}
-					if k == 2 {
-						permission = cell.String()
-					}
-
-				}
-				//这些字段都没有的话,系统认为excel到底了
-				if companyName == "" {
-					break
-				}
-				item := new(models.UserWhiteList)
-				item.CompanyName = companyName
-				item.Permission = permission
-				needAddAttendanc = append(needAddAttendanc, item)
-			}
-		}
-	}
-	//var mobileStr string
-	var permissionStr string
-	for k, v := range needAddAttendanc {
-		if k > 0 && v.CompanyName != needAddAttendanc[k-1].CompanyName {
-			permissionStr, err = models.GetCompanyPermissionByName(v.CompanyName)
-			if err != nil {
-				br.Msg = "获取信息失败"
-				br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
-				return
-			}
-		}
-		if k == 0 {
-			permissionStr, err = models.GetCompanyPermissionByName(v.CompanyName)
-			if err != nil {
-				br.Msg = "获取信息失败"
-				br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
-				return
-			}
-		}
-		needAddAttendanc[k].Permission = permissionStr
-		fmt.Println(permissionStr)
-	}
-
-	defer func() {
-		os.Remove(path)
-	}()
-
-	//创建excel
-	dir, errFile := os.Executable()
-	exPath := filepath.Dir(dir)
-	downLoadnFilePath := exPath + "/" + time.Now().Format(utils.FormatDateTimeUnSpace) + ".xlsx"
-	xlsxFile := xlsx.NewFile()
-	if errFile != nil {
-		br.Msg = "生成文件失败Err:" + errFile.Error()
-		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失败,Err:" + err.Error()
-		return
-	}
-	//标头
-	rowTitle := sheet.AddRow()
-	cellA := rowTitle.AddCell()
-	cellA.Value = ""
-	cellB := rowTitle.AddCell()
-	cellB.Value = "公司"
-	cellC := rowTitle.AddCell()
-	cellC.Value = "权限"
-	for _, item := range needAddAttendanc {
-		row := sheet.AddRow()
-		cellA := row.AddCell()
-		cellA.Value = item.CompanyName
-		cellB := row.AddCell()
-		if item.Permission == "" {
-			//item.Permission = "专家/医药/智造/消费/研选/科技/策略/路演服务"
-		}
-		cellB.Value = item.Permission
-	}
-	errFile = xlsxFile.Save(downLoadnFilePath)
-	if errFile != nil {
-		br.Msg = "保存文件失败Err:" + errFile.Error()
-		return
-	}
-
-	br.Msg = "导入成功"
-	br.Ret = 200
-	br.Success = true
-}
-
 // @Title 活动带问
 // @Description 新增活动带问接口
 // @Param	request	body models.AddCygxActivityHelpAsk true "type json string"
@@ -1953,7 +1740,6 @@ func (this *ActivityCoAntroller) AskAdd() {
 		br.Msg = "建议内容不可为空"
 		return
 	}
-
 	content := req.Content
 	itemToken, err := services.WxGetToken()
 	if err != nil {
@@ -1968,7 +1754,6 @@ func (this *ActivityCoAntroller) AskAdd() {
 	if err != nil {
 		br.Msg = "内容校验失败!"
 		br.ErrMsg = "内容校验失败,Err:" + err.Error()
-
 		return
 	}
 	if commerr.ErrCode != 0 {
@@ -2030,3 +1815,182 @@ func (this *ActivityCoAntroller) AskAdd() {
 	br.Success = true
 	br.Msg = "提交成功"
 }
+
+// @Title 活动类型下的主题列表
+// @Description 获取活动类型下的主题列表接口
+// @Param   ChartPermissionIds   query   string  false     "行业id 多个用 , 隔开"
+// @Param   ActivityTypeIds   query   string  false     "活动类型id 多个用 , 隔开"
+// @Param   ActiveState   query   string  false       "活动进行状态 未开始:1、进行中2、已结束3"
+// @Param   WhichDay   query   string  false       "哪一天 今天:1、明天:2,多个用 , 隔开"
+// @Param   IsPower   query   int  false       "是否选择有权限行业 ,1是 0 否 默认0"
+// @Success 200 {object} models.GetCygxActivityLabelListRep
+// @router /labelTypeList [get]
+func (this *ActivityCoAntroller) LabelTypeList() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	user := this.User
+	if user == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		return
+	}
+	pageSize, _ := this.GetInt("PageSize")
+	isPower, _ := this.GetInt("IsPower")
+	//currentIndex, _ := this.GetInt("CurrentIndex")
+	chartPermissionIds := this.GetString("ChartPermissionIds")
+	//activityTypeIds := this.GetString("ActivityTypeIds")
+	whichDay := this.GetString("WhichDay")
+	activeState := this.GetString("ActiveState")
+	//入参为 undefined 时的处理
+	if chartPermissionIds == "undefined" {
+		chartPermissionIds = ""
+	}
+	if whichDay == "undefined" {
+		whichDay = ""
+	}
+	if activeState == "undefined" || activeState == "" {
+		activeState = "1"
+	}
+	userType, permissionStr, err := services.GetUserType(user.CompanyId)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
+	}
+
+	var startSize int
+	pageSize = 4
+	var sortTime string
+	var pars []interface{}
+	//活动可见限制
+	slicePer := strings.Split(permissionStr, ",")
+	var permissionSqlStr string
+	var permissionNameStr string
+	for _, v := range slicePer {
+		if userType == 1 {
+			if v != "研选" {
+				permissionNameStr += "'" + v + "',"
+			}
+		} else {
+			permissionNameStr += "'" + v + "',"
+		}
+	}
+	permissionNameStr = strings.TrimRight(permissionNameStr, ",")
+	list, err := models.GetActivityTypeHomeList()
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取数据失败,Err:" + err.Error()
+		return
+	}
+	resp := new(models.ActivityTypeListHomeResp)
+	for k, v := range list {
+		var sqlExport string
+		var condition string
+		permissionSqlStr = ` AND art.chart_permission_name  IN (` + permissionNameStr + `)`
+		sqlExport = ` AND (art.customer_type_ids LIKE '%` + strconv.Itoa(userType) + `%' `
+		if userType == 2 {
+			sqlExport += ` OR  art.customer_type_ids LIKE '%3%' `
+		}
+		if (userType == 2 || userType == 3) && strings.Contains(permissionStr, "专家") {
+			sqlExport += ` OR  art.customer_type_ids LIKE '%4%' `
+		}
+		sqlExport += `) `
+		condition = ` AND art.publish_status = 1  AND art.label != ''  AND art.activity_type_id = ` + strconv.Itoa(v.ActivityTypeId)
+		if isPower == 1 {
+			condition += permissionSqlStr
+		}
+		//行业名称
+		if len(chartPermissionIds) > 0 {
+			condition += ` AND art.chart_permission_id  IN (` + chartPermissionIds + `)`
+		}
+		var conditionOr string
+		if whichDay != "" {
+			var startDate string
+			var endDate string
+			if whichDay == "1" {
+				startDate = time.Now().Format(utils.FormatDate)
+				endDate = startDate
+			} else if whichDay == "2" {
+				startDate = time.Now().AddDate(0, 0, +1).Format(utils.FormatDate)
+				endDate = startDate
+			} else {
+				startDate = time.Now().Format(utils.FormatDate)
+				endDate = time.Now().AddDate(0, 0, +1).Format(utils.FormatDate)
+			}
+			condition += ` AND art.activity_time >= ` + "'" + startDate + " 00:00:00'"
+			condition += ` AND art.activity_time <= ` + "'" + endDate + " 23:59:59'"
+		}
+		if activeState != "" {
+			condition += ` AND art.active_state  IN (` + activeState + `)`
+		} else {
+			condition += ` AND art.active_state  IN (1)`
+		}
+		if (userType == 2 || userType == 3 || userType == 4) && strings.Contains(permissionStr, "专家") {
+			conditionOr += ` OR (  art.is_limit_people = 1 AND art.customer_type_ids LIKE '%4%'	 ` + condition + `) `
+		}
+		if (userType == 5) && strings.Contains(permissionStr, "专家") {
+			conditionOr += ` OR (  art.is_limit_people = 1 AND art.customer_type_ids LIKE '%5%'	 ` + condition + `) `
+		}
+		if userType == 1 {
+			conditionOr += ` OR ( art.is_limit_people = 0 ` + condition + permissionSqlStr + `) `
+		} else {
+			conditionOr += ` OR ( art.is_limit_people = 0 ` + condition + `) `
+		}
+		condition += `AND art.is_limit_people = 1 ` + permissionSqlStr + sqlExport + conditionOr
+
+		sortTime = ` mintimesort ASC `
+		list[k].List, err = models.GetActivityLabelListAll(condition, sortTime, pars, startSize, pageSize)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,Err:" + err.Error()
+			return
+		}
+	}
+	//获取对应活动的数量并排序
+	intArr := make([]int, 0)
+	var items []*models.ActivityTypeHome
+	for _, v := range list {
+		item := new(models.ActivityTypeHome)
+		if len(v.List) > 0 {
+			item.List = v.List
+			item.ActivityTypeName = v.ActivityTypeName
+			item.ActivityTypeId = v.ActivityTypeId
+			items = append(items, item)
+			intArr = append(intArr, len(v.List))
+		}
+	}
+	sort.Sort(sort.Reverse(sort.IntSlice(intArr)))
+	var itemsNew []*models.ActivityTypeHome
+	activityMap := make(map[int]int)
+	for _, v := range intArr {
+		for _, v2 := range items {
+			item := new(models.ActivityTypeHome)
+			if len(v2.List) > 0 && v == len(v2.List) && activityMap[v2.ActivityTypeId] == 0 {
+				item.List = v2.List
+				item.ActivityTypeName = v2.ActivityTypeName
+				item.ActivityTypeId = v2.ActivityTypeId
+				itemsNew = append(itemsNew, item)
+				activityMap[v2.ActivityTypeId] = len(v2.List)
+			}
+		}
+	}
+	//如果第三个活动数量比第四个多,则两者调换
+	if len(itemsNew) > 3 {
+		if len(itemsNew[2].List) > len(itemsNew[3].List) {
+			var itemsNewCopy []*models.ActivityTypeHome
+			for _, v := range itemsNew {
+				itemsNewCopy = append(itemsNewCopy, v)
+			}
+			itemsNew[2] = itemsNewCopy[3]
+			itemsNew[3] = itemsNewCopy[2]
+		}
+	}
+	resp.List = itemsNew
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}

+ 4 - 1
models/activity.go

@@ -153,6 +153,7 @@ type CygxActivityList struct {
 	IsBrackets              int    `description:"是否有方括号 1是 ,0 否"`
 	Label                   string `description:"主题标签"`
 	IsShowSustainable       bool   `description:"是否展示限免标签"`
+	ImgUrl                  string `description:"图片链接"`
 }
 
 type GetCygxActivityListRep struct {
@@ -459,7 +460,9 @@ func GetActivityLabelListAll(condition, sortTime string, pars []interface{}, sta
 }
 
 type GetCygxActivityLabelListRep struct {
-	List []*CygxActivityLabelList
+	Label  string `description:"主题"`
+	ImgUrl string `description:"图片路径"`
+	List   []*CygxActivityLabelList
 }
 
 //获取研选系列专家电话会,会前1小时,满足推送的活动ID数量

+ 18 - 0
models/activity_type.go

@@ -31,3 +31,21 @@ func GetActivityTypeDetailById(activityTypeId int) (item *ActivityType, err erro
 	err = o.Raw(sql, activityTypeId).QueryRow(&item)
 	return
 }
+
+type ActivityTypeListHomeResp struct {
+	List []*ActivityTypeHome
+}
+
+type ActivityTypeHome struct {
+	ActivityTypeId   int    `description:"活动类型id"`
+	ActivityTypeName string `description:"活动名称"`
+	List             []*CygxActivityLabelList
+}
+
+//列表
+func GetActivityTypeHomeList() (items []*ActivityTypeHome, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM cygx_activity_type ORDER BY sort DESC`
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}