Browse Source

fix:
调整活动表结构,
新增活动权限表
新增活动海报表
新增根据表id集合判断是否具有权限

Roc 3 years ago
parent
commit
c107a4634e

+ 105 - 96
models/tables/yb_activity/yb_activity.go

@@ -6,38 +6,41 @@ import (
 
 // YbActivity 弘则研小程序 活动表
 type YbActivity struct {
-	ActivityID           int       `gorm:"primaryKey;column:activity_id;type:int(11);not null" json:"-"`                                                  // 活动ID
-	ActivityTypeID       int       `gorm:"index:activity_type_id;column:activity_type_id;type:int(100);not null;default:0" json:"activityTypeId"`         // 活动类型ID
-	ActivityTypeName     string    `gorm:"column:activity_type_name;type:varchar(30);not null;default:''" json:"activityTypeName"`                        // 活动类型名称
-	ChartPermissionID    int       `gorm:"index:chart_permission_id;column:chart_permission_id;type:int(11);not null;default:0" json:"chartPermissionId"` // 表chart_permission中id
-	ChartPermissionName  string    `gorm:"column:chart_permission_name;type:varchar(255);not null;default:''" json:"chartPermissionName"`                 // 权限名称
-	ActivityName         string    `gorm:"column:activity_name;type:text;not null" json:"activityName"`                                                   // 活动标题
-	StartTime            time.Time `gorm:"column:start_time;type:datetime" json:"startTime"`                                                              // 活动开始时间
-	EndTime              time.Time `gorm:"column:end_time;type:datetime" json:"endTime"`                                                                  // 活动结束时间
-	Speaker              string    `gorm:"column:speaker;type:varchar(255);not null;default:''" json:"speaker"`                                           // 主讲人
-	SpeakerHeadPic       string    `gorm:"column:speaker_head_pic;type:varchar(255);not null;default:''" json:"speakerHeadPic"`                           // 主讲人头像
-	SpeakerBackgroundPic string    `gorm:"column:speaker_background_pic;type:varchar(255);not null;default:''" json:"speakerBackgroundPic"`               // 主讲人背景图
-	MainlandTel          string    `gorm:"column:mainland_tel;type:varchar(255);not null;default:''" json:"mainlandTel"`                                  // 大陆拨入
-	HongKongTel          string    `gorm:"column:hong_kong_tel;type:varchar(255);not null;default:''" json:"hongKongTel"`                                 // 香港拨入
-	TaiwanTel            string    `gorm:"column:taiwan_tel;type:varchar(255);not null;default:''" json:"taiwanTel"`                                      // 台湾拨入
-	AmericaTel           string    `gorm:"column:america_tel;type:varchar(255);not null;default:''" json:"americaTel"`                                    // 美国拨入
-	SingaporeTel         string    `gorm:"column:singapore_tel;type:varchar(255);not null;default:''" json:"singaporeTel"`                                // 新加坡拨入
-	ParticipationCode    string    `gorm:"column:participation_code;type:varchar(255);not null;default:''" json:"participationCode"`                      // 参会密码
-	LinkParticipants     string    `gorm:"column:link_participants;type:longtext;not null" json:"linkParticipants"`                                       // 参会链接
-	IsLimitPeople        int8      `gorm:"index:is_limit_people;column:is_limit_people;type:tinyint(4);not null;default:0" json:"isLimitPeople"`          // 是否限制人数 1是,0否
-	LimitPeopleNum       int       `gorm:"column:limit_people_num;type:int(9);not null;default:0" json:"limitPeopleNum"`                                  // 限制人数数量
-	ReportLink           string    `gorm:"column:report_link;type:longtext;not null" json:"reportLink"`                                                   // 报告链接
-	City                 string    `gorm:"column:city;type:varchar(255);not null;default:''" json:"city"`                                                 // 城市
-	Address              string    `gorm:"column:address;type:varchar(255);not null;default:''" json:"address"`                                           // 活动地址
-	PosterURL            string    `gorm:"column:poster_url;type:varchar(255);not null;default:''" json:"posterUrl"`                                      // 活动海报地址
-	Remarks              string    `gorm:"column:remarks;type:text;not null" json:"remarks"`                                                              // 备注
-	UserID               int       `gorm:"column:user_id;type:int(9);not null;default:0" json:"userId"`                                                   // 创建者id
-	PublishStatus        int8      `gorm:"index:publish_status;column:publish_status;type:tinyint(4);not null;default:0" json:"publishStatus"`            // 发布状态,0未发布,1已发布
-	IsSendWxMsg          int8      `gorm:"column:is_send_wx_msg;type:tinyint(4);not null;default:0" json:"isSendWxMsg"`                                   // 是否推送过微信消息,未推送:0,已推送:1
-	IsDelete             int8      `gorm:"column:is_delete;type:tinyint(4);not null;default:0" json:"isDelete"`                                           // 是否删除,0:未删除,1:已删除
-	ArticleID            int       `gorm:"column:article_id;type:int(11);not null;default:0" json:"articleId"`                                            // 报告链接所关联的文章ID
-	ModifyTime           time.Time `gorm:"column:modify_time;type:timestamp;not null;default:CURRENT_TIMESTAMP" json:"modifyTime"`                        // 修改时间
-	CreateTime           time.Time `gorm:"index:create_time;column:create_time;type:datetime;default:CURRENT_TIMESTAMP" json:"createTime"`                // 创建时间
+	ActivityID            int       `gorm:"primaryKey;column:activity_id;type:int(11);not null" json:"-"`                                                     // 活动ID
+	FirstActivityTypeID   int       `gorm:"index:activity_type_id;column:first_activity_type_id;type:int(100);not null;default:0" json:"firstActivityTypeId"` // 第一级的活动类型ID
+	FirstActivityTypeName string    `gorm:"column:first_activity_type_name;type:varchar(30);not null;default:''" json:"firstActivityTypeName"`                // 第一级的活动类型名称
+	ActivityTypeID        int       `gorm:"column:activity_type_id;type:int(100);not null;default:0" json:"activityTypeId"`                                   // 活动类型ID
+	ActivityTypeName      string    `gorm:"column:activity_type_name;type:varchar(30);not null;default:''" json:"activityTypeName"`                           // 活动类型名称
+	ChartPermissionID     int       `gorm:"index:chart_permission_id;column:chart_permission_id;type:int(11);not null;default:0" json:"chartPermissionId"`    // 表chart_permission中id
+	ChartPermissionName   string    `gorm:"column:chart_permission_name;type:varchar(255);not null;default:''" json:"chartPermissionName"`                    // 权限名称
+	ActivityName          string    `gorm:"column:activity_name;type:text;not null" json:"activityName"`                                                      // 活动标题
+	StartTime             time.Time `gorm:"column:start_time;type:datetime" json:"startTime"`                                                                 // 活动开始时间
+	EndTime               time.Time `gorm:"column:end_time;type:datetime" json:"endTime"`                                                                     // 活动结束时间
+	Speaker               string    `gorm:"column:speaker;type:varchar(255);not null;default:''" json:"speaker"`                                              // 主讲人
+	SpeakerHeadPic        string    `gorm:"column:speaker_head_pic;type:varchar(255);not null;default:''" json:"speakerHeadPic"`                              // 主讲人头像
+	SpeakerBackgroundPic  string    `gorm:"column:speaker_background_pic;type:varchar(255);not null;default:''" json:"speakerBackgroundPic"`                  // 主讲人背景图
+	MainlandTel           string    `gorm:"column:mainland_tel;type:varchar(255);not null;default:''" json:"mainlandTel"`                                     // 大陆拨入
+	HongKongTel           string    `gorm:"column:hong_kong_tel;type:varchar(255);not null;default:''" json:"hongKongTel"`                                    // 香港拨入
+	TaiwanTel             string    `gorm:"column:taiwan_tel;type:varchar(255);not null;default:''" json:"taiwanTel"`                                         // 台湾拨入
+	AmericaTel            string    `gorm:"column:america_tel;type:varchar(255);not null;default:''" json:"americaTel"`                                       // 美国拨入
+	SingaporeTel          string    `gorm:"column:singapore_tel;type:varchar(255);not null;default:''" json:"singaporeTel"`                                   // 新加坡拨入
+	ParticipationCode     string    `gorm:"column:participation_code;type:varchar(255);not null;default:''" json:"participationCode"`                         // 参会密码
+	LinkParticipants      string    `gorm:"column:link_participants;type:longtext;not null" json:"linkParticipants"`                                          // 参会链接
+	IsLimitPeople         int8      `gorm:"index:is_limit_people;column:is_limit_people;type:tinyint(4);not null;default:0" json:"isLimitPeople"`             // 是否限制人数 1是,0否
+	LimitPeopleNum        int       `gorm:"column:limit_people_num;type:int(9);not null;default:0" json:"limitPeopleNum"`                                     // 限制人数数量
+	ReportID              int       `gorm:"column:report_id;type:int(11);not null;default:0" json:"reportId"`                                                 // 报告链接所关联的文章ID
+	ReportLink            string    `gorm:"column:report_link;type:varchar(255);not null;default:''" json:"reportLink"`                                       // 报告链接
+	ReportName            string    `gorm:"column:report_name;type:varchar(255);not null;default:''" json:"reportName"`                                       // 报告标题
+	City                  string    `gorm:"column:city;type:varchar(255);not null;default:''" json:"city"`                                                    // 城市
+	Address               string    `gorm:"column:address;type:varchar(255);not null;default:''" json:"address"`                                              // 活动地址
+	Remarks               string    `gorm:"column:remarks;type:text;not null" json:"remarks"`                                                                 // 备注
+	UserID                int       `gorm:"column:user_id;type:int(9);not null;default:0" json:"userId"`                                                      // 创建者id
+	PublishStatus         int8      `gorm:"index:publish_status;column:publish_status;type:tinyint(4);not null;default:0" json:"publishStatus"`               // 发布状态,0未发布,1已发布
+	IsSendWxMsg           int8      `gorm:"column:is_send_wx_msg;type:tinyint(4);not null;default:0" json:"isSendWxMsg"`                                      // 是否推送过会议提醒微信消息,未推送:0,已推送:1
+	IsSendSalonWxMsg      int8      `gorm:"column:is_send_salon_wx_msg;type:tinyint(4);not null;default:0" json:"isSendSalonWxMsg"`                           // 是否推送过沙龙提醒微信消息,未推送:0,已推送:1
+	IsDelete              int8      `gorm:"column:is_delete;type:tinyint(4);not null;default:0" json:"isDelete"`                                              // 是否删除,0:未删除,1:已删除
+	ModifyTime            time.Time `gorm:"column:modify_time;type:timestamp;not null;default:CURRENT_TIMESTAMP" json:"modifyTime"`                           // 修改时间
+	CreateTime            time.Time `gorm:"index:create_time;column:create_time;type:datetime;default:CURRENT_TIMESTAMP" json:"createTime"`                   // 创建时间
 }
 
 // TableName get sql table name.获取数据库表名
@@ -47,69 +50,75 @@ func (m *YbActivity) TableName() string {
 
 // YbActivityColumns get sql column name.获取数据库列名
 var YbActivityColumns = struct {
-	ActivityID           string
-	ActivityTypeID       string
-	ActivityTypeName     string
-	ChartPermissionID    string
-	ChartPermissionName  string
-	ActivityName         string
-	StartTime            string
-	EndTime              string
-	Speaker              string
-	SpeakerHeadPic       string
-	SpeakerBackgroundPic string
-	MainlandTel          string
-	HongKongTel          string
-	TaiwanTel            string
-	AmericaTel           string
-	SingaporeTel         string
-	ParticipationCode    string
-	LinkParticipants     string
-	IsLimitPeople        string
-	LimitPeopleNum       string
-	ReportLink           string
-	City                 string
-	Address              string
-	PosterURL            string
-	Remarks              string
-	UserID               string
-	PublishStatus        string
-	IsSendWxMsg          string
-	IsDelete             string
-	ArticleID            string
-	ModifyTime           string
-	CreateTime           string
+	ActivityID            string
+	FirstActivityTypeID   string
+	FirstActivityTypeName string
+	ActivityTypeID        string
+	ActivityTypeName      string
+	ChartPermissionID     string
+	ChartPermissionName   string
+	ActivityName          string
+	StartTime             string
+	EndTime               string
+	Speaker               string
+	SpeakerHeadPic        string
+	SpeakerBackgroundPic  string
+	MainlandTel           string
+	HongKongTel           string
+	TaiwanTel             string
+	AmericaTel            string
+	SingaporeTel          string
+	ParticipationCode     string
+	LinkParticipants      string
+	IsLimitPeople         string
+	LimitPeopleNum        string
+	ReportID              string
+	ReportLink            string
+	ReportName            string
+	City                  string
+	Address               string
+	Remarks               string
+	UserID                string
+	PublishStatus         string
+	IsSendWxMsg           string
+	IsSendSalonWxMsg      string
+	IsDelete              string
+	ModifyTime            string
+	CreateTime            string
 }{
-	ActivityID:           "activity_id",
-	ActivityTypeID:       "activity_type_id",
-	ActivityTypeName:     "activity_type_name",
-	ChartPermissionID:    "chart_permission_id",
-	ChartPermissionName:  "chart_permission_name",
-	ActivityName:         "activity_name",
-	StartTime:            "start_time",
-	EndTime:              "end_time",
-	Speaker:              "speaker",
-	SpeakerHeadPic:       "speaker_head_pic",
-	SpeakerBackgroundPic: "speaker_background_pic",
-	MainlandTel:          "mainland_tel",
-	HongKongTel:          "hong_kong_tel",
-	TaiwanTel:            "taiwan_tel",
-	AmericaTel:           "america_tel",
-	SingaporeTel:         "singapore_tel",
-	ParticipationCode:    "participation_code",
-	LinkParticipants:     "link_participants",
-	IsLimitPeople:        "is_limit_people",
-	LimitPeopleNum:       "limit_people_num",
-	ReportLink:           "report_link",
-	City:                 "city",
-	Address:              "address",
-	PosterURL:            "poster_url",
-	Remarks:              "remarks",
-	UserID:               "user_id",
-	PublishStatus:        "publish_status",
-	IsSendWxMsg:          "is_send_wx_msg",
-	IsDelete:             "is_delete",
-	ArticleID:            "article_id",
-	ModifyTime:           "modify_time",
-	CreateTime:           "create_time",
+	ActivityID:            "activity_id",
+	FirstActivityTypeID:   "first_activity_type_id",
+	FirstActivityTypeName: "first_activity_type_name",
+	ActivityTypeID:        "activity_type_id",
+	ActivityTypeName:      "activity_type_name",
+	ChartPermissionID:     "chart_permission_id",
+	ChartPermissionName:   "chart_permission_name",
+	ActivityName:          "activity_name",
+	StartTime:             "start_time",
+	EndTime:               "end_time",
+	Speaker:               "speaker",
+	SpeakerHeadPic:        "speaker_head_pic",
+	SpeakerBackgroundPic:  "speaker_background_pic",
+	MainlandTel:           "mainland_tel",
+	HongKongTel:           "hong_kong_tel",
+	TaiwanTel:             "taiwan_tel",
+	AmericaTel:            "america_tel",
+	SingaporeTel:          "singapore_tel",
+	ParticipationCode:     "participation_code",
+	LinkParticipants:      "link_participants",
+	IsLimitPeople:         "is_limit_people",
+	LimitPeopleNum:        "limit_people_num",
+	ReportID:              "report_id",
+	ReportLink:            "report_link",
+	ReportName:            "report_name",
+	City:                  "city",
+	Address:               "address",
+	Remarks:               "remarks",
+	UserID:                "user_id",
+	PublishStatus:         "publish_status",
+	IsSendWxMsg:           "is_send_wx_msg",
+	IsSendSalonWxMsg:      "is_send_salon_wx_msg",
+	IsDelete:              "is_delete",
+	ModifyTime:            "modify_time",
+	CreateTime:            "create_time",
 }

+ 32 - 0
models/tables/yb_activity_permission/yb_activity_permission.go

@@ -0,0 +1,32 @@
+package yb_activity_permission
+
+import "time"
+
+// YbActivityPermission 活动的关联权限表
+type YbActivityPermission struct {
+	ActivityPermissionID uint32    `gorm:"primaryKey;column:activity_permission_id;type:int(9) unsigned;not null" json:"-"`           // 自增id
+	ActivityID           uint32    `gorm:"index:idx_activity_id;column:activity_id;type:int(9) unsigned;default:0" json:"activityId"` // 活动id
+	PermissionID         uint32    `gorm:"column:permission_id;type:int(9) unsigned;default:0" json:"permissionId"`                   // 关联权限id
+	PermissionName       string    `gorm:"column:permission_name;type:varchar(32);default:''" json:"permissionName"`                  // 关联权限名称
+	CreateTime           time.Time `gorm:"column:create_time;type:timestamp;default:CURRENT_TIMESTAMP" json:"createTime"`
+}
+
+// TableName get sql table name.获取数据库表名
+func (m *YbActivityPermission) TableName() string {
+	return "yb_activity_permission"
+}
+
+// YbActivityPermissionColumns get sql column name.获取数据库列名
+var YbActivityPermissionColumns = struct {
+	ActivityPermissionID string
+	ActivityID           string
+	PermissionID         string
+	PermissionName       string
+	CreateTime           string
+}{
+	ActivityPermissionID: "activity_permission_id",
+	ActivityID:           "activity_id",
+	PermissionID:         "permission_id",
+	PermissionName:       "permission_name",
+	CreateTime:           "create_time",
+}

+ 32 - 0
models/tables/yb_activity_poster/yb_activity_poster.go

@@ -0,0 +1,32 @@
+package yb_activity_poster
+
+import "time"
+
+// YbActivityPoster 活动海报表
+type YbActivityPoster struct {
+	ActivityPosterID uint32    `gorm:"primaryKey;column:activity_poster_id;type:int(11) unsigned;not null" json:"-"`
+	ActivityID       uint32    `gorm:"index:idx_activity_id;column:activity_id;type:int(11) unsigned;not null;default:0" json:"activityId"` // 活动id
+	URL              string    `gorm:"unique;column:url;type:varchar(500);not null;default:''" json:"url"`                                  // 海报地址
+	Name             string    `gorm:"column:name;type:varchar(255);not null;default:''" json:"name"`                                       // 海报名称
+	CreateTime       time.Time `gorm:"column:create_time;type:timestamp;default:CURRENT_TIMESTAMP" json:"createTime"`
+}
+
+// TableName get sql table name.获取数据库表名
+func (m *YbActivityPoster) TableName() string {
+	return "yb_activity_poster"
+}
+
+// YbActivityPosterColumns get sql column name.获取数据库列名
+var YbActivityPosterColumns = struct {
+	ActivityPosterID string
+	ActivityID       string
+	URL              string
+	Name             string
+	CreateTime       string
+}{
+	ActivityPosterID: "activity_poster_id",
+	ActivityID:       "activity_id",
+	URL:              "url",
+	Name:             "name",
+	CreateTime:       "create_time",
+}

+ 21 - 18
models/tables/yb_activity_type/yb_activity_type.go

@@ -4,12 +4,13 @@ import "time"
 
 // YbActivityType 研报小程序活动类型
 type YbActivityType struct {
-	ActivityTypeID   int       `gorm:"primaryKey;column:activity_type_id;type:int(11);not null" json:"-"`             // 活动类型ID
-	ActivityTypeName string    `gorm:"column:activity_type_name;type:varchar(30)" json:"activityTypeName"`            // 活动类型名称
-	Pid              int       `gorm:"column:pid;type:int(11);default:0" json:"pid"`                                  // 父级id,默认是:0
-	Sort             int       `gorm:"column:sort;type:int(10);not null;default:0" json:"sort"`                       // 排序字段
-	FrontIsShow      uint8     `gorm:"column:front_is_show;type:tinyint(255) unsigned;default:1" json:"frontIsShow"`  // 是否在前台展示,0:不展示,1:展示
-	CreateTime       time.Time `gorm:"column:create_time;type:timestamp;default:CURRENT_TIMESTAMP" json:"createTime"` // 创建时间
+	ActivityTypeID    int       `gorm:"primaryKey;column:activity_type_id;type:int(11);not null" json:"-"`                   // 活动类型ID
+	ActivityTypeName  string    `gorm:"column:activity_type_name;type:varchar(30)" json:"activityTypeName"`                  // 活动类型名称
+	Pid               int       `gorm:"index:idx_pid;column:pid;type:int(11);default:0" json:"pid"`                          // 父级id,默认是:0
+	ChartPermissionID uint32    `gorm:"column:chart_permission_id;type:int(11) unsigned;default:0" json:"chartPermissionId"` // 对应的权限id
+	Sort              int       `gorm:"column:sort;type:int(10);not null;default:0" json:"sort"`                             // 排序字段
+	FrontIsShow       uint8     `gorm:"column:front_is_show;type:tinyint(255) unsigned;default:1" json:"frontIsShow"`        // 是否在前台展示,0:不展示,1:展示
+	CreateTime        time.Time `gorm:"column:create_time;type:timestamp;default:CURRENT_TIMESTAMP" json:"createTime"`       // 创建时间
 }
 
 // TableName get sql table name.获取数据库表名
@@ -19,17 +20,19 @@ func (m *YbActivityType) TableName() string {
 
 // YbActivityTypeColumns get sql column name.获取数据库列名
 var YbActivityTypeColumns = struct {
-	ActivityTypeID   string
-	ActivityTypeName string
-	Pid              string
-	Sort             string
-	FrontIsShow      string
-	CreateTime       string
+	ActivityTypeID    string
+	ActivityTypeName  string
+	Pid               string
+	ChartPermissionID string
+	Sort              string
+	FrontIsShow       string
+	CreateTime        string
 }{
-	ActivityTypeID:   "activity_type_id",
-	ActivityTypeName: "activity_type_name",
-	Pid:              "pid",
-	Sort:             "sort",
-	FrontIsShow:      "front_is_show",
-	CreateTime:       "create_time",
+	ActivityTypeID:    "activity_type_id",
+	ActivityTypeName:  "activity_type_name",
+	Pid:               "pid",
+	ChartPermissionID: "chart_permission_id",
+	Sort:              "sort",
+	FrontIsShow:       "front_is_show",
+	CreateTime:        "create_time",
 }

+ 65 - 0
services/company/permission.go

@@ -1,6 +1,7 @@
 package company
 
 import (
+	"fmt"
 	"hongze/hongze_yb/models/tables/admin"
 	"hongze/hongze_yb/models/tables/chart_permission"
 	"hongze/hongze_yb/models/tables/company_product"
@@ -104,3 +105,67 @@ func CheckPermissionByFicc(companyId int64, permissionId int) (ok bool, permissi
 
 	return
 }
+
+// CheckPermissionByPermissionIdList2Ficc 根据权限id集合权限校验
+func CheckPermissionByPermissionIdList2Ficc(companyId int64, permissionIdList []int) (ok bool, permissionCheckInfo PermissionCheckInfo, err error) {
+	//非潜在客户
+	if len(permissionIdList) <= 0 {
+		err = fmt.Errorf("权限异常,请传入需要校验的权限")
+		return
+	}
+	permissionMap := make(map[int]bool)
+	for _, permissionId := range permissionIdList {
+		permissionMap[permissionId] = true
+	}
+	var productId int64
+	productId = 1
+	if companyId > 1 {
+		//查询是否 开通ficc的客户
+		companyProductInfo, tmpErr := company_product.GetByCompany2ProductId(companyId, productId)
+		if tmpErr != nil {
+			// 没有开通ficc的客户
+			if tmpErr == utils.ErrNoRow {
+				permissionCheckInfo.Type = "apply"
+				return
+			}
+			err = tmpErr
+			return
+		}
+
+		// 如果客户ficc产品的状态是流失,那么也是让去申请
+		if companyProductInfo.Status == "流失" {
+			permissionCheckInfo.Type = "apply"
+			return
+		}
+		// 获取有效的权限id列表
+		validPermissionIdList, tmpErr := GetValidPermissionIdListByCompany2ProductId(companyId, productId)
+		if tmpErr != nil {
+			err = tmpErr
+			return
+		}
+		// 校验在有效的权限id列表中是否存在该权限
+		for _, validPermissionId := range validPermissionIdList {
+			//如果有该权限id,那么直接返回校验通过
+			if _, ok := permissionMap[validPermissionId]; ok {
+				ok = true
+				return
+			}
+		}
+		//查找对应客户的销售信息
+
+		adminInfo, tmpErr := admin.GetByAdminId(companyProductInfo.SellerID)
+		if tmpErr != nil {
+			err = tmpErr
+			return
+		}
+		permissionCheckInfo = PermissionCheckInfo{
+			Name:   adminInfo.RealName,
+			Mobile: adminInfo.Mobile,
+			Type:   "contact",
+		}
+	} else {
+		permissionCheckInfo.Type = "apply"
+	}
+
+	return
+}