|
@@ -3,8 +3,219 @@ package services
|
|
|
import (
|
|
|
"fmt"
|
|
|
"hongze/hongze_clpt/models"
|
|
|
+ "hongze/hongze_clpt/utils"
|
|
|
+ "strconv"
|
|
|
+ "strings"
|
|
|
+ "time"
|
|
|
)
|
|
|
|
|
|
+//获取活动列表查询权限的SQL
|
|
|
+// @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"
|
|
|
+// @Param Label query string false "搜索主题 多个用 , 隔开"
|
|
|
+// @Param PlayBack query int false "是否仅展示回放 1:是、0:否 默认0"
|
|
|
+// @Param KeyWord query string false "搜索关键词 多个用 , 隔开"
|
|
|
+func GetActivityonditionList(user *models.WxUserItem, activityTypeId, chartPermissionIds, whichDay, activeState, label string, isPower, source int, keyWord string, playBack int) (conditionActivity string, err error) {
|
|
|
+ adminIds, err := models.GetSelleridWhichGroup(user.CompanyId, 2)
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ userType, permissionStr, err := GetUserType(user.CompanyId)
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ //判断客户规模是否属于可见范围的活动
|
|
|
+ companyProduct, err := models.GetCompanyProductDetail(user.CompanyId, 2)
|
|
|
+ if err != nil && err.Error() != utils.ErrNoRow() {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ isMaker := user.IsMaker
|
|
|
+ slicePer := strings.Split(permissionStr, ",")
|
|
|
+ var permissionSqlStr string
|
|
|
+ var permissionNameStr string
|
|
|
+ for _, v := range slicePer {
|
|
|
+ if userType == 1 {
|
|
|
+ //研选权限处理
|
|
|
+ if !strings.Contains(v, utils.CHART_PERMISSION_NAME_YANXUAN) {
|
|
|
+ permissionNameStr += "'" + v + "',"
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ permissionNameStr += "'" + v + "',"
|
|
|
+ }
|
|
|
+ }
|
|
|
+ permissionNameStr = strings.Replace(permissionNameStr, "(主观)", "", -1)
|
|
|
+ permissionNameStr = strings.Replace(permissionNameStr, "(客观)", "", -1)
|
|
|
+ permissionNameStr = strings.TrimRight(permissionNameStr, ",")
|
|
|
+
|
|
|
+ // 查研观向7.4-始终查询宏观的权限(无论是否有权限)
|
|
|
+ if permissionNameStr == `` {
|
|
|
+ permissionNameStr = `'宏观'`
|
|
|
+ } else {
|
|
|
+ permissionNameStr += `, '宏观'`
|
|
|
+ }
|
|
|
+
|
|
|
+ var condition string
|
|
|
+ var conditionAdmin string
|
|
|
+ var conditionHz string // 弘则权限处理
|
|
|
+ var sqlExport 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 += `) `
|
|
|
+ // 如果是C类电话会就不展示内容,且合并到分析师电话会
|
|
|
+ if activityTypeId != "" {
|
|
|
+ if activityTypeId == strconv.Itoa(utils.ANALYST_TELL_ACTIVITY_TYPE_ID) {
|
|
|
+ condition = ` AND art.publish_status = 1 AND art.label != '' AND art.activity_type_id IN (` + activityTypeId + "," + strconv.Itoa(utils.C_CLASS_ACTIVITY_TYPE_ID) + `)`
|
|
|
+ } else {
|
|
|
+ condition = ` AND art.publish_status = 1 AND art.label != '' AND art.activity_type_id = ` + activityTypeId
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //主题
|
|
|
+ if label != "" {
|
|
|
+ condition = ` AND art.label LIKE '%` + label + `%' `
|
|
|
+ }
|
|
|
+
|
|
|
+ if isPower == 1 {
|
|
|
+ condition += permissionSqlStr
|
|
|
+ }
|
|
|
+
|
|
|
+ //行业名称
|
|
|
+ if len(chartPermissionIds) > 0 {
|
|
|
+ condition += ` AND art.chart_permission_id IN (` + chartPermissionIds + `)`
|
|
|
+ }
|
|
|
+ //如果是PC的,则不看易董的
|
|
|
+ if source == 1 {
|
|
|
+ condition += ` AND art.yidong_activity_id = '' `
|
|
|
+ }
|
|
|
+
|
|
|
+ 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 keyWord != "" {
|
|
|
+ condition += ` AND (art.label LIKE '%` + keyWord + `%' OR art.activity_name LIKE '%` + keyWord + `%' ) `
|
|
|
+ } else {
|
|
|
+ if activeState != "" {
|
|
|
+ // 默认查看未开始跟进行中
|
|
|
+ if activeState == "1" {
|
|
|
+ condition += ` AND art.active_state IN (1,2)`
|
|
|
+ } else {
|
|
|
+ condition += ` AND art.active_state IN (` + activeState + `)`
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ condition += ` AND art.active_state IN (1,2)`
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if playBack == 1 {
|
|
|
+ var pars []interface{}
|
|
|
+ ativityVIdArry := make([]string, 0)
|
|
|
+ voiceList, e := models.GetActivityVoiceListAll("", pars, 0, 1000)
|
|
|
+ if e != nil && e.Error() != utils.ErrNoRow() {
|
|
|
+ err = e
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for _, v := range voiceList {
|
|
|
+ ativityVIdArry = append(ativityVIdArry, strconv.Itoa(v.ActivityId))
|
|
|
+ }
|
|
|
+
|
|
|
+ videoList, e := models.GetActivityVideoListAll("", pars, 0, 1000)
|
|
|
+ if e != nil && e.Error() != utils.ErrNoRow() {
|
|
|
+ err = e
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for _, v := range videoList {
|
|
|
+ ativityVIdArry = append(ativityVIdArry, strconv.Itoa(v.ActivityId))
|
|
|
+ }
|
|
|
+
|
|
|
+ //活动音频,设置有效时间为30天,失效后该活动就不再支持音频回放。有效期起始时间为活动的开始时间
|
|
|
+ //endTime := time.Now().AddDate(0, 0, -30).Format("2006-01-02 15:04:05")
|
|
|
+ //condition += ` AND art.activity_time > '` + endTime + `' `
|
|
|
+ if len(ativityVIdArry) > 0 {
|
|
|
+ ativityVIdstr := strings.Join(ativityVIdArry, ",")
|
|
|
+ condition += ` AND art.activity_id IN (` + ativityVIdstr + `) `
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //查询全部可见的数据(是否全部客户可见)
|
|
|
+ condition += ` AND art.publish_status = 1 `
|
|
|
+ conditionHz = condition
|
|
|
+
|
|
|
+ //活动仅决策人可见
|
|
|
+ if isMaker == 0 {
|
|
|
+ condition += ` AND art.is_maker_show = 0 `
|
|
|
+ }
|
|
|
+ conditionAdmin = condition + ` AND art.visible_range = 1 `
|
|
|
+ condition += ` AND art.visible_range != 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 + `) `
|
|
|
+ }
|
|
|
+ if userType == 6 || userType == 7 {
|
|
|
+ conditionOr += ` OR ( art.customer_type_ids LIKE '%` + strconv.Itoa(userType) + `%' ` + condition + `) `
|
|
|
+ }
|
|
|
+ if companyProduct != nil {
|
|
|
+ if companyProduct.Scale != "" {
|
|
|
+ conditionOr += ` OR ( art.scale LIKE '%` + companyProduct.Scale + `%' ` + condition + `) `
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if adminIds != "" {
|
|
|
+ conditionOr += ` OR ( art.customer_type_ids LIKE '%` + strconv.Itoa(userType) + `%' ` + ` AND art.admin_id IN (` + adminIds + `) ` + conditionAdmin + `) `
|
|
|
+ if companyProduct != nil {
|
|
|
+ if companyProduct.Scale != "" {
|
|
|
+ conditionOr += ` OR ( art.scale LIKE '%` + companyProduct.Scale + `%'` + ` AND art.admin_id IN (` + adminIds + `) ` + conditionAdmin + `) `
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //弘则研究下的客户不做权限,限制,C类电话会,仅本组销售、部门管理员、admin、权益研究员账号能看到
|
|
|
+ if user.CompanyId == 16 {
|
|
|
+ mapMobile, e := GetAdminMobileMap()
|
|
|
+ if e != nil {
|
|
|
+ err = e
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if _, ok := mapMobile[user.Mobile]; ok {
|
|
|
+ conditionOr += ` OR ( art.publish_status = 1 ` + conditionHz + `) `
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ conditionActivity = condition + permissionSqlStr + sqlExport + conditionOr
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
//获取可见的活动
|
|
|
func HandleActivityPowerList(listActivity []*models.CygxActivity, user *models.WxUserItem) (items []*models.CygxActivity, err error) {
|
|
|
|
|
@@ -21,6 +232,10 @@ func HandleActivityTypeHomeList(listType []*models.ActivityTypeHome, listActivit
|
|
|
}
|
|
|
item := new(models.CygxActivityLabelList)
|
|
|
item.KeyWord = v.Label
|
|
|
+ item.Resource = 1
|
|
|
+ if v.YidongActivityId != "" {
|
|
|
+ item.IsExternalLabel = true
|
|
|
+ }
|
|
|
if len(mapActivity[v.ActivityTypeId]) > 10 {
|
|
|
continue
|
|
|
}
|
|
@@ -33,6 +248,6 @@ func HandleActivityTypeHomeList(listType []*models.ActivityTypeHome, listActivit
|
|
|
}
|
|
|
}
|
|
|
items = listType
|
|
|
- fmt.Println(mapActivity)
|
|
|
+ fmt.Println(len(mapActivity))
|
|
|
return
|
|
|
}
|