package roadshow import ( "encoding/json" "github.com/rdlucklib/rdluck_tools/paging" "hongze/hz_crm_api/controllers" "hongze/hz_crm_api/models" "hongze/hz_crm_api/models/roadshow" "hongze/hz_crm_api/models/system" "hongze/hz_crm_api/services" roadshowService "hongze/hz_crm_api/services/roadshow" "hongze/hz_crm_api/utils" "strconv" "strings" "time" ) // 日历 type ActivityController struct { controllers.BaseAuthController } // @Title 新增路演活动接口 // @Description 新增路演活动接口 // @Param request body roadshow.AddActivityReq true "type json string" // @Success Ret=200 保存成功 // @router /add [post] func (this *ActivityController) 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 } deleteCache := true cacheKey := "CACHE_RS_ACTIVITY_ADD_SELLER_" + strconv.Itoa(sysUser.AdminId) defer func() { if deleteCache { utils.Rc.Delete(cacheKey) } }() if !utils.Rc.SetNX(cacheKey, 1, 5*time.Second) { deleteCache = false br.Msg = "系统处理中,请稍后重试!" br.ErrMsg = "系统处理中,请稍后重试!" + sysUser.RealName + ";data:" + string(this.Ctx.Input.RequestBody) return } var req roadshow.AddActivitySellerReq err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } if len(req.SellerId) <= 0 { br.Msg = "请选择销售!" return } //researcherMap := make(map[int]string) var checkIsAdd []string //if req.EnglishCompany == 1 { // englishCompany, err := models.GetEnglishCompanyById(req.CompanyId) // if err != nil { // br.Msg = "客户已被删除, 请刷新页面" // br.ErrMsg = "获取失败,GetEnglishCompanyById Err: " + err.Error() // return // } //} //var tipMsg string //for _, v := range req.SellerList { // if req.SellerId <= 0 { // br.Msg = "请选择销售!" // return // } if req.SellerName == "" { br.Msg = "请选择销售!" return } if req.StartDate == "" { br.Msg = "请选择开始日期!" return } if req.EndDate == "" { br.Msg = "请选择结束日期!" return } if req.StartTime == "" { br.Msg = "请选择开始时间!" return } if req.EndTime == "" { br.Msg = "请选择结束时间!" return } if req.StartWeek == "" { br.Msg = "请选择周!" return } if req.EndWeek == "" { br.Msg = "请选择周!" return } startDateTime := req.StartDate + " " + req.StartTime endDateTime := req.EndDate + " " + req.EndTime //startP, _ := time.ParseInLocation(utils.FormatDateTime, startDateTime, time.Local) //endP, _ := time.ParseInLocation(utils.FormatDateTime, endDateTime, time.Local) // //if startP.Before(time.Now()) || startP.Equal(time.Now()) { // br.Msg = "活动开始时间不能小于当前时间!" // return //} // //if endP.Before(time.Now()) || endP.Equal(time.Now()) { // br.Msg = "活动结束时间不能小于当前时间!" // return //} // //if startP.After(endP) || startP.Equal(endP) { // br.Msg = "活动开始时间应小于结束时间!" // return //} //if realName, ok := researcherMap[v.SellerId]; ok { // br.Msg = "销售:" + realName + " 被重复选择" // return //} //researcherMap[v.SellerId] = v.SellerName sellerList, err := system.GetSysAdminByIds(req.SellerId) if err != nil { br.Msg = "保存失败!" br.ErrMsg = "获取销售信息失败!Err:" + err.Error() return } for _, v := range sellerList { //校验活动时间冲突 { calendarCount, err := roadshowService.CheckActivity(startDateTime, endDateTime, "1,2", v.AdminId) if err != nil { br.Msg = "时间冲突检测失败!" br.ErrMsg = "时间冲突检测失败-CheckCalendar!Err:" + err.Error() return } if calendarCount > 0 { checkIsAdd = append(checkIsAdd, v.AdminName) } } } if len(checkIsAdd) > 0 { br.Msg = strings.Join(checkIsAdd, ",") + " 时间已被占用!" br.ErrMsg = "时间冲突检测失败-CheckMattersCount!" br.IsSendEmail = false return } rsActivity := new(roadshow.RsActivity) rsActivity.SysUserId = sysUser.AdminId rsActivity.SysUserRealName = sysUser.RealName rsActivity.ActivityType = req.ActivityType rsActivity.CompanyId = req.CompanyId rsActivity.CompanyName = req.CompanyName rsActivity.Theme = req.Theme rsActivity.CreateTime = time.Now() rsActivity.ModifyTime = time.Now() rsActivity.EnglishCompany = req.EnglishCompany rsActivityId, err := roadshow.AddRsActivity(rsActivity) if err != nil { br.Msg = "保存失败!" br.ErrMsg = "保存日历活动信息失败!Err:" + err.Error() return } openIdList := make([]*system.OpenIdList, 0) //if researcherId != 99 { for _, v := range sellerList { researcher := new(roadshow.RsActivitySeller) researcher.RsActivityId = int(rsActivityId) researcher.SellerId = v.AdminId researcher.SellerName = v.RealName researcher.StartDate = req.StartDate researcher.EndDate = req.EndDate researcher.StartTime = req.StartTime researcher.EndTime = req.EndTime researcher.StartWeek = req.StartWeek researcher.EndWeek = req.EndWeek researcher.CreateTime = time.Now() researcher.ModifyTime = time.Now() researcher.Status = 2 _, err = roadshow.AddRsActivitySeller(researcher) if err != nil { br.Msg = "保存失败!" br.ErrMsg = "保存日历活动-销售路演信息失败!Err:" + err.Error() return } if v.OpenId != "" { openIdObj := &system.OpenIdList{ OpenId: v.OpenId, AdminId: v.AdminId, } openIdList = append(openIdList, openIdObj) } } sysAdmin, _ := system.GetSysAdminById(sysUser.AdminId) if sysAdmin != nil && sysAdmin.OpenId != "" { openIdObj := &system.OpenIdList{ OpenId: sysAdmin.OpenId, AdminId: sysAdmin.AdminId, } openIdList = append(openIdList, openIdObj) } go services.SendWxMsgWithRoadshowSellerActivity(req.CompanyName, "参会", "已添加", time.Now().Format(utils.FormatDateTime), openIdList) br.Ret = 200 br.Success = true br.Msg = "保存成功" br.IsAddLog = true } // 活动列表 // @Title 活动列表 // @Description 活动列表接口 // @Param PageSize query int true "每页数据条数" // @Param CurrentIndex query int true "当前页页码,从1开始" // @Success 200 {object} roadshow.ResearcherGroup // @router /list2 [get] func (this *ActivityController) 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 } pageSize, _ := this.GetInt("PageSize") currentIndex, _ := this.GetInt("CurrentIndex") var total int var startSize int if pageSize <= 0 { pageSize = utils.PageSize10 } if currentIndex <= 0 { currentIndex = 1 } startSize = paging.StartIndex(currentIndex, pageSize) var resp roadshow.RsActivitySellerListResp var condition string var pars []interface{} condition = " AND b.sys_user_id = ? AND a.status = 2 " pars = append(pars, sysUser.AdminId) total, err := roadshow.GetRsActivitySellerListCount(condition, pars) if err != nil { br.Msg = "获取失败!" br.ErrMsg = "获取数量失败!Err:" + err.Error() return } page := paging.GetPaging(currentIndex, pageSize, total) dataList, err := roadshow.GetRsActivitySellerList(condition, pars, startSize, pageSize) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取数据失败,GetRsActivitySellerList,Err:" + err.Error() return } var rsActivityIds []int for _, v := range dataList { rsActivityIds = append(rsActivityIds, v.RsActivityId) } //获取对应的多个销售信息 listSeller, err := roadshow.GetRsActivitySellerListByActivityIds(rsActivityIds) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取数据失败,GetRsActivitySellerList,Err:" + err.Error() return } mapSeller := make(map[int][]string) for _, v := range listSeller { mapSeller[v.RsActivityId] = append(mapSeller[v.RsActivityId], v.SellerName) } for _, v := range dataList { v.SellerName = strings.Join(mapSeller[v.RsActivityId], ",") } resp.Paging = page resp.List = dataList br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } // @Title 删除路演活动接口 // @Description 删除路演活动接口 // @Param request body roadshow.AddActivityReq true "type json string" // @Success Ret=200 保存成功 // @router /delete [post] func (this *ActivityController) 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.RsActivityIdReq err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } rsActivityId := req.RsActivityId detail, err := roadshow.GetRsActivityByRsActivityId(rsActivityId) if err != nil { br.Msg = "删除失败" br.ErrMsg = "获取信息失败,GetRsActivityByRsActivityId,Err:" + err.Error() return } if detail.SysUserId != sysUser.AdminId { br.Msg = "删除失败" br.ErrMsg = "删除失败,不是自己创建的活动信息" return } err = roadshow.DeleteRsActivitySeller(rsActivityId) if err != nil { br.Msg = "删除失败" br.ErrMsg = "删除失败,DeleteRsActivitySeller,Err:" + err.Error() return } //获取对应的多个销售信息 listSeller, err := roadshow.GetRsActivitySellerListByActivityIds([]int{rsActivityId}) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取数据失败,GetRsActivitySellerList,Err:" + err.Error() return } for range listSeller { } openIdList := make([]*system.OpenIdList, 0) sysAdmin, _ := system.GetSysAdminById(sysUser.AdminId) if sysAdmin != nil && sysAdmin.OpenId != "" { openIdObj := &system.OpenIdList{ OpenId: sysAdmin.OpenId, AdminId: sysAdmin.AdminId, } openIdList = append(openIdList, openIdObj) } go services.SendWxMsgWithRoadshowSellerActivity(detail.CompanyName, "参会", "已添加", time.Now().Format(utils.FormatDateTime), openIdList) br.Ret = 200 br.Success = true br.Msg = "删除成功" br.IsAddLog = true }