Ver Fonte

Merge branch 'CRM_15.5' of http://8.136.199.33:3000/hongze/hz_crm_api into debug

xingzai há 8 meses atrás
pai
commit
d5e8f610d9

+ 40 - 1
controllers/roadshow/calendar.go

@@ -1040,7 +1040,6 @@ func (this *CalendarController) ResearcherList() {
 	ficcGroup.GroupName = "ficc"
 	ficcGroup.ResearcherList = group
 
-
 	sysUserList, err := system.GetAdminList()
 	if err != nil {
 		br.Msg = "获取失败"
@@ -1216,10 +1215,17 @@ func (this *CalendarController) CalendarList() {
 
 	// 英文客户的国家以及点击量
 	englishIds := make([]int, 0)
+	adminIds := make([]int, 0)     // 管理员ID
+	rsCalendarId := make([]int, 0) //路演ID
 	for i := range dataList {
 		if dataList[i].EnglishCompany == 1 {
 			englishIds = append(englishIds, dataList[i].CompanyId)
 		}
+
+		if calendarType == 2 {
+			adminIds = append(adminIds, dataList[i].SysUserId)
+			rsCalendarId = append(rsCalendarId, dataList[i].RsCalendarId)
+		}
 	}
 	englishMap := make(map[int]*models.EnglishCompany)
 	if len(englishIds) > 0 {
@@ -1236,6 +1242,31 @@ func (this *CalendarController) CalendarList() {
 			englishMap[englishList[i].CompanyId] = englishList[i]
 		}
 	}
+	mapRaiSllerId := make(map[int]bool)  // 是否为权益销售
+	mapMeetingCount := make(map[int]int) // 路演参会人员数量
+	if len(adminIds) > 0 {
+		listAdmin, e := system.GetAdminListByIdListWithoutEnable(adminIds)
+		if e != nil {
+			br.Msg = "获取信息失败"
+			br.ErrMsg = "获取管理员信息失败, Err:" + e.Error()
+			return
+		}
+		for _, v := range listAdmin { //权益销售与权益销售组长
+			if v.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_SELLER || v.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_SELLER {
+				mapRaiSllerId[v.AdminId] = true
+			}
+		}
+		listMeetingCount, e := roadshow.GetRsCalendarMeetingUserListCount(rsCalendarId)
+		if e != nil {
+			br.Msg = "获取信息失败"
+			br.ErrMsg = "获取路演参会人员数量信息失败, Err:" + e.Error()
+			return
+		}
+		for _, v := range listMeetingCount {
+			mapMeetingCount[v.RsCalendarId] = v.Total
+		}
+	}
+
 	for i := range dataList {
 		if dataList[i].EnglishCompany == 1 {
 			en := englishMap[dataList[i].CompanyId]
@@ -1244,6 +1275,14 @@ func (this *CalendarController) CalendarList() {
 				dataList[i].EnglishViewTotal = en.ViewTotal
 			}
 		}
+		//如果是已结束的权益销售添加的活动,就行进行按钮展示
+		if mapRaiSllerId[dataList[i].SysUserId] && dataList[i].Status == 6 {
+			if mapMeetingCount[dataList[i].RsCalendarId] == 0 {
+				dataList[i].SubmitButton = true
+			} else {
+				dataList[i].ViewButton = true
+			}
+		}
 	}
 
 	resp.Paging = page

+ 173 - 0
controllers/roadshow/calendar_meeting_user.go

@@ -0,0 +1,173 @@
+package roadshow
+
+import (
+	"encoding/json"
+	"hongze/hz_crm_api/controllers"
+	"hongze/hz_crm_api/models"
+	"hongze/hz_crm_api/models/roadshow"
+	"strconv"
+	"strings"
+	"time"
+)
+
+// 日历参会名单
+type CalendarMeetingUserController struct {
+	controllers.BaseAuthController
+}
+
+// @Title 新增路演活动参会名单接口
+// @Description 新增路演活动参会名单接口
+// @Param	request	body roadshow.AddRsCalendarMeetingUserReq true "type json string"
+// @Success Ret=200 保存成功
+// @router /rs_calendar_meeting_user/add [post]
+func (this *CalendarMeetingUserController) Add() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+
+	var req roadshow.AddRsCalendarMeetingUserReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+
+	rsCalendarId := req.RsCalendarId
+	userIds := req.UserId
+
+	if rsCalendarId == 0 {
+		br.Msg = "路演信息错误!"
+		return
+	}
+	if len(userIds) == 0 {
+		br.Msg = "参会人不能为空!"
+		return
+	}
+	var userIdsStr []string
+	for _, v := range userIds {
+		userIdsStr = append(userIdsStr, strconv.Itoa(v))
+	}
+
+	listUser, err := models.GetWxUserListByUserIdsHaveCompany(strings.Join(userIdsStr, ","))
+	if err != nil {
+		br.Msg = "获取用户信息失败!"
+		br.ErrMsg = "获取用户信息失败-GetWxUserListByUserIdsHaveCompany!Err:" + err.Error()
+		return
+	}
+
+	var items []*roadshow.RsCalendarMeetingUser
+	for _, v := range listUser {
+		item := new(roadshow.RsCalendarMeetingUser)
+		item.RsCalendarId = rsCalendarId
+		item.UserId = v.UserId
+		item.Mobile = v.Mobile
+		item.Email = v.Email
+		item.CompanyId = v.CompanyId
+		item.CompanyName = v.CompanyName
+		item.RealName = v.RealName
+		item.Position = v.Position
+		item.AdminId = sysUser.AdminId
+		item.AdminName = sysUser.RealName
+		item.CreateTime = time.Now()
+		item.ModifyTime = time.Now()
+		items = append(items, item)
+	}
+	err = roadshow.MultiAddRsCalendarMeetingUser(items)
+	if err != nil {
+		br.Msg = "操作失败!"
+		br.ErrMsg = "操作失败-MultiAddRsCalendarMeetingUser!Err:" + err.Error()
+		return
+	}
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "添加成功"
+	br.IsAddLog = true
+}
+
+// @Title 路演活动参会名单列表接口
+// @Description 路演活动参会名单列表接口
+// @Param   RsCalendarId   query   int  true       "路演活动id"
+// @Success 200 {object} roadshow.CalendarListResp
+// @router /rs_calendar_meeting_user/list [get]
+func (this *CalendarMeetingUserController) List() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+
+	rsCalendarId, _ := this.GetInt("RsCalendarId")
+	resp := new(roadshow.RsCalendarMeetingUserListResp)
+	list, err := roadshow.GetRsCalendarMeetingUserListByRsCalendarId(rsCalendarId)
+	if err != nil {
+		br.Msg = "获取失败!"
+		br.ErrMsg = "操作失败-GetRsCalendarMeetingUserListByRsCalendarId!Err:" + err.Error()
+		return
+	}
+	if len(list) == 0 {
+		list = make([]*roadshow.RsCalendarMeetingUserResp, 0)
+	}
+	resp.List = list
+	br.Ret = 200
+	br.Success = true
+	br.Data = resp
+	br.Msg = "获取成功"
+}
+
+// @Title 路演活动参会删除接口
+// @Description 路演活动参会删除接口
+// @Param   RsCalendarMeetingUserId   query   int  true       "参会名单主键ID"
+// @Success Ret=200 删除成功
+// @router /rs_calendar_meeting_user/delete [post]
+func (this *CalendarMeetingUserController) Delete() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+	var req roadshow.DeleteRsCalendarMeetingUserReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+
+	rsCalendarMeetingUserId := req.RsCalendarMeetingUserId
+	err = roadshow.DeleteRsCalendarMeetingUser(rsCalendarMeetingUserId)
+	if err != nil {
+		br.Msg = "删除失败!"
+		br.ErrMsg = "删除失败-DeleteRsCalendarMeetingUser!Err:" + err.Error()
+		return
+	}
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "删除成功"
+	br.IsAddLog = true
+}

+ 6 - 5
models/db.go

@@ -378,11 +378,12 @@ func initYb() {
 func initRoadShow() {
 	//注册对象
 	orm.RegisterModel(
-		new(roadshow.RsCalendar),           //路演主表
-		new(roadshow.RsCalendarResearcher), //路演研究员信息表
-		new(roadshow.RsMatters),            //公开会议表
-		new(roadshow.RsCalendarRelation),   //路演关系表(与上海的路演日历关系)
-		new(roadshow.RsReportRecord),       //路演统计表
+		new(roadshow.RsCalendar),            //路演主表
+		new(roadshow.RsCalendarResearcher),  //路演研究员信息表
+		new(roadshow.RsMatters),             //公开会议表
+		new(roadshow.RsCalendarRelation),    //路演关系表(与上海的路演日历关系)
+		new(roadshow.RsReportRecord),        //路演统计表
+		new(roadshow.RsCalendarMeetingUser), //路演参会名单表
 	)
 }
 

+ 3 - 1
models/roadshow/calendar.go

@@ -286,6 +286,8 @@ type CalendarListView struct {
 	EnglishCompany         int    `description:"是否为英文客户: 0-否; 1-是"`
 	EnglishCountry         string `description:"英文客户-国家"`
 	EnglishViewTotal       int    `description:"英文客户-累计点击量"`
+	SubmitButton           bool   `description:"提交按钮是否展示"`
+	ViewButton             bool   `description:"查看按钮是否展示"`
 }
 
 type CalendarListResp struct {
@@ -343,7 +345,7 @@ func GetCalendarList(condition string, pars []interface{}, startSize, pageSize,
 
 		_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&list)
 	} else {
-		sql := `SELECT a.rs_calendar_id,a.activity_type,a.roadshow_type,a.activity_category,a.roadshow_platform,b.create_time,a.district,
+		sql := `SELECT a.rs_calendar_id,a.activity_type,a.roadshow_type,a.activity_category,a.roadshow_platform,b.create_time,a.district,a.sys_user_id,
 				b.modify_time,b.researcher_id,b.researcher_name,
 				b.rs_calendar_researcher_id,b.start_date,
 				b.end_date,b.start_time,b.end_time,b.start_week,b.end_week,b.status,b.refuse_reason,b.refuse_time,

+ 96 - 0
models/roadshow/rs_calendar_meeting_user.go

@@ -0,0 +1,96 @@
+package roadshow
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"hongze/hz_crm_api/utils"
+	"time"
+)
+
+type AddRsCalendarMeetingUserReq struct {
+	RsCalendarId int   `description:"日程ID"`
+	UserId       []int // 用户ID
+}
+
+type RsCalendarMeetingUser struct {
+	RsCalendarMeetingUserId int       `orm:"column(rs_calendar_meeting_user_id);pk" description:"主键ID"`
+	RsCalendarId            int       `description:"日程ID"`
+	UserId                  int       `description:"用户ID"`
+	Mobile                  string    `description:"手机号"`
+	Email                   string    `description:"邮箱"`
+	CompanyId               int       `description:"公司ID"`
+	CompanyName             string    `description:"公司名称"`
+	RealName                string    `description:"用户实际名称"`
+	Position                string    `description:"职位"`
+	AdminId                 int       `description:"管理员ID"`
+	AdminName               string    `description:"管理员姓名"`
+	CreateTime              time.Time `description:"创建时间"`
+	ModifyTime              time.Time `description:"修改时间"`
+}
+
+type RsCalendarMeetingUserResp struct {
+	RsCalendarMeetingUserId int    `description:"参会名单主键ID"`
+	RealName                string `description:"用户实际名称"`
+	Position                string `description:"职位"`
+}
+
+type DeleteRsCalendarMeetingUserReq struct {
+	RsCalendarMeetingUserId int `description:"参会名单主键ID"`
+}
+
+type RsCalendarMeetingUserListResp struct {
+	List []*RsCalendarMeetingUserResp
+}
+
+// MultiAddRsCalendarMeetingUser 批量添加RsCalendarMeetingUser
+func MultiAddRsCalendarMeetingUser(items []*RsCalendarMeetingUser) (err error) {
+	if len(items) == 0 {
+		return
+	}
+	o := orm.NewOrm()
+	_, err = o.InsertMulti(len(items), items)
+	return
+}
+
+// 删除
+func DeleteRsCalendarMeetingUser(rsCalendarMeetingUserID int) (err error) {
+	o := orm.NewOrm()
+	sql := ` DELETE FROM rs_calendar_meeting_user WHERE rs_calendar_meeting_user_id=? `
+	_, err = o.Raw(sql, rsCalendarMeetingUserID).Exec()
+	return err
+}
+
+// 列表
+func GetRsCalendarMeetingUserList(condition string, pars []interface{}) (items *RsCalendarMeetingUserResp, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM rs_calendar_meeting_user WHERE 1=1 `
+	if condition != "" {
+		sql += condition
+	}
+	err = o.Raw(sql, pars).QueryRow(&items)
+	return
+}
+
+// 通过路演ID获取参会人员列表
+func GetRsCalendarMeetingUserListByRsCalendarId(rsCalendarId int) (items []*RsCalendarMeetingUserResp, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM rs_calendar_meeting_user WHERE  rs_calendar_id = ?  `
+	_, err = o.Raw(sql, rsCalendarId).QueryRows(&items)
+	return
+}
+
+type RsCalendarMeetingUserCountResp struct {
+	RsCalendarId int `description:"日程ID"`
+	Total        int `description:"数量"`
+}
+
+// 路演参会人员数量
+func GetRsCalendarMeetingUserListCount(rsCalendarIds []int) (items []*RsCalendarMeetingUserCountResp, err error) {
+	lenNum := len(rsCalendarIds)
+	if lenNum <= 0 {
+		return
+	}
+	o := orm.NewOrm()
+	sql := `SELECT  rs_calendar_id ,COUNT(1) as total  FROM rs_calendar_meeting_user WHERE  rs_calendar_id IN ( ` + utils.GetOrmInReplace(lenNum) + `)   GROUP BY rs_calendar_id  `
+	_, err = o.Raw(sql, rsCalendarIds).QueryRows(&items)
+	return
+}

+ 1 - 0
models/wx_user.go

@@ -460,6 +460,7 @@ type WxUserItem struct {
 	IsMsgOutboundMobile int       `description:"是否弹窗过绑定外呼手机号区号"`
 	IsMaker             int       `description:"是否是决策人"`
 	Source              int
+	Position            string `description:"职位"`
 }
 
 // GetWxUserListByUserIds 根据用户ID集合获取用户有公司名称

+ 27 - 0
routers/commentsRouter.go

@@ -7720,6 +7720,33 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/roadshow:CalendarMeetingUserController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/roadshow:CalendarMeetingUserController"],
+        beego.ControllerComments{
+            Method: "Add",
+            Router: `/rs_calendar_meeting_user/add`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/roadshow:CalendarMeetingUserController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/roadshow:CalendarMeetingUserController"],
+        beego.ControllerComments{
+            Method: "Delete",
+            Router: `/rs_calendar_meeting_user/delete`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/roadshow:CalendarMeetingUserController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/roadshow:CalendarMeetingUserController"],
+        beego.ControllerComments{
+            Method: "List",
+            Router: `/rs_calendar_meeting_user/list`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/seal:SealApprovalController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/seal:SealApprovalController"],
         beego.ControllerComments{
             Method: "Apply",

+ 1 - 0
routers/router.go

@@ -233,6 +233,7 @@ func init() {
 		web.NSNamespace("/roadshow",
 			web.NSInclude(
 				&roadshow.CalendarController{},
+				&roadshow.CalendarMeetingUserController{},
 			),
 		),
 		web.NSNamespace("/taglib",