|
@@ -0,0 +1,353 @@
|
|
|
+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/cygx"
|
|
|
+ "hongze/hz_crm_api/models/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.SellerList) <= 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
|
|
|
+ // }
|
|
|
+ //}
|
|
|
+
|
|
|
+ //获取所有自定义的权益研究员
|
|
|
+ sysUserList, err := cygx.GetAskEmailListResearcher()
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取失败,GetAskEmailList Err: " + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ raiAskadminMap := make(map[int]bool, 0)
|
|
|
+ for _, v := range sysUserList {
|
|
|
+ raiAskadminMap[v.AdminId] = true
|
|
|
+ }
|
|
|
+
|
|
|
+ //var tipMsg string
|
|
|
+ for _, v := range req.SellerList {
|
|
|
+ if v.SellerId <= 0 {
|
|
|
+ br.Msg = "请选择销售!"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if v.SellerName == "" {
|
|
|
+ br.Msg = "请选择销售!"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if v.StartDate == "" {
|
|
|
+ br.Msg = "请选择开始日期!"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if v.EndDate == "" {
|
|
|
+ br.Msg = "请选择结束日期!"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if v.StartTime == "" {
|
|
|
+ br.Msg = "请选择开始时间!"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if v.EndTime == "" {
|
|
|
+ br.Msg = "请选择结束时间!"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if v.StartWeek == "" {
|
|
|
+ br.Msg = "请选择周!"
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ if v.EndWeek == "" {
|
|
|
+ br.Msg = "请选择周!"
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ startDateTime := v.StartDate + " " + v.StartTime
|
|
|
+ endDateTime := v.EndDate + " " + v.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
|
|
|
+
|
|
|
+ //校验活动时间冲突
|
|
|
+ //{
|
|
|
+ // calendarCount, err := roadshowService.CheckCalendar(startDateTime, endDateTime, "1,2", v.ResearcherId, 0)
|
|
|
+ // if err != nil {
|
|
|
+ // br.Msg = "时间冲突检测失败!"
|
|
|
+ // br.ErrMsg = "时间冲突检测失败-CheckCalendar!Err:" + err.Error()
|
|
|
+ // return
|
|
|
+ // }
|
|
|
+ // if calendarCount > 0 {
|
|
|
+ // checkIsAdd = append(checkIsAdd, v.ResearcherName)
|
|
|
+ // }
|
|
|
+ //}
|
|
|
+ }
|
|
|
+
|
|
|
+ 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
|
|
|
+ }
|
|
|
+ //if researcherId != 99 {
|
|
|
+ for _, v := range req.SellerList {
|
|
|
+ researcher := new(roadshow.RsActivitySeller)
|
|
|
+ researcher.RsActivityId = int(rsActivityId)
|
|
|
+ researcher.SellerId = v.SellerId
|
|
|
+ researcher.SellerName = v.SellerName
|
|
|
+ researcher.StartDate = v.StartDate
|
|
|
+ researcher.EndDate = v.EndDate
|
|
|
+ researcher.StartTime = v.StartTime
|
|
|
+ researcher.EndTime = v.EndTime
|
|
|
+ researcher.StartWeek = v.StartWeek
|
|
|
+ researcher.EndWeek = v.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
|
|
|
+ }
|
|
|
+ }
|
|
|
+ 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 /list [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
|
|
|
+ }
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "删除成功"
|
|
|
+ br.IsAddLog = true
|
|
|
+}
|