|
@@ -724,6 +724,24 @@ func (this *CalendarController) MattersList() {
|
|
|
this.FailWithMessage("获取事项信息失败", "获取事项信息失败,GetMattersList,Err:"+err.Error())
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
+ // 按钮权限,超过14天无按钮
|
|
|
+ now := time.Now().Local()
|
|
|
+ for _, v := range dataList {
|
|
|
+ // 结束日期14天后无编辑删除按钮权限
|
|
|
+ t := fmt.Sprintf("%s %s", v.EndDate, v.EndTime)
|
|
|
+ ed, e := time.ParseInLocation(utils.FormatDateTime, t, time.Local)
|
|
|
+ if e != nil {
|
|
|
+ this.FailWithMessage("事项结束日期有误", "事项结束日期有误, Err:"+err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ ed = ed.AddDate(0, 0, 14)
|
|
|
+ if ed.Before(now) {
|
|
|
+ v.ButtonAuth.EditDisabled = true
|
|
|
+ v.ButtonAuth.RemoveDisabled = true
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
resp.Paging = page
|
|
|
resp.List = dataList
|
|
|
this.OkDetailed(resp, "获取成功")
|
|
@@ -789,6 +807,9 @@ func (this *CalendarController) MattersAdd() {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+ // 是否为销售
|
|
|
+ sales := isSellerRole(sysUser.RoleTypeCode)
|
|
|
+
|
|
|
startDateTime := req.StartDate + " " + req.StartTime
|
|
|
endDateTime := req.EndDate + " " + req.EndTime
|
|
|
//校验事项时间冲突
|
|
@@ -804,29 +825,31 @@ func (this *CalendarController) MattersAdd() {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- //校验活动时间冲突--待接受
|
|
|
- {
|
|
|
- calendarCount, err := rs.CheckCalendar(startDateTime, endDateTime, "1", sysUser.AdminId, 0)
|
|
|
- if err != nil {
|
|
|
- this.FailWithMessage("时间冲突检测失败!", "时间冲突检测失败-CheckCalendarResearcherCount!Err:"+err.Error())
|
|
|
- return
|
|
|
- }
|
|
|
- if calendarCount > 0 {
|
|
|
- this.FailWithMessage("当前时间与待处理的申请有冲突,请与相关销售沟通!", "时间冲突检测失败-CheckCalendarResearcherCount!")
|
|
|
- return
|
|
|
+ if !sales {
|
|
|
+ //校验活动时间冲突--待接受
|
|
|
+ {
|
|
|
+ calendarCount, err := rs.CheckCalendar(startDateTime, endDateTime, "1", sysUser.AdminId, 0)
|
|
|
+ if err != nil {
|
|
|
+ this.FailWithMessage("时间冲突检测失败!", "时间冲突检测失败-CheckCalendarResearcherCount!Err:"+err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if calendarCount > 0 {
|
|
|
+ this.FailWithMessage("当前时间与待处理的申请有冲突,请与相关销售沟通!", "时间冲突检测失败-CheckCalendarResearcherCount!")
|
|
|
+ return
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- //校验活动时间冲突--已接受
|
|
|
- {
|
|
|
- calendarCount, err := rs.CheckCalendar(startDateTime, endDateTime, "2", sysUser.AdminId, 0)
|
|
|
- if err != nil {
|
|
|
- this.FailWithMessage("时间冲突检测失败!", "时间冲突检测失败-CheckCalendarResearcherCount!Err:"+err.Error())
|
|
|
- return
|
|
|
- }
|
|
|
- if calendarCount > 0 {
|
|
|
- this.FailWithMessage("当前时间已被占用!", "时间冲突检测失败-CheckCalendarResearcherCount!")
|
|
|
- return
|
|
|
+ //校验活动时间冲突--已接受
|
|
|
+ {
|
|
|
+ calendarCount, err := rs.CheckCalendar(startDateTime, endDateTime, "2", sysUser.AdminId, 0)
|
|
|
+ if err != nil {
|
|
|
+ this.FailWithMessage("时间冲突检测失败!", "时间冲突检测失败-CheckCalendarResearcherCount!Err:"+err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if calendarCount > 0 {
|
|
|
+ this.FailWithMessage("当前时间已被占用!", "时间冲突检测失败-CheckCalendarResearcherCount!")
|
|
|
+ return
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -861,13 +884,20 @@ func (this *CalendarController) MattersAdd() {
|
|
|
item.Status = 1
|
|
|
item.CreateTime = time.Now()
|
|
|
item.ModifyTime = time.Now()
|
|
|
+ if sales {
|
|
|
+ item.IsSeller = 1
|
|
|
+ }
|
|
|
id, err := roadshow.AddRsMatters(item)
|
|
|
if err != nil {
|
|
|
this.FailWithMessage("保存失败!", "保存失败,AddRsMatters Err:"+err.Error())
|
|
|
return
|
|
|
}
|
|
|
item.RsMattersId = int(id)
|
|
|
- go rs.MatterToSH(*item)
|
|
|
+
|
|
|
+ // 销售的事项不同步上海
|
|
|
+ if !sales {
|
|
|
+ go rs.MatterToSH(*item)
|
|
|
+ }
|
|
|
this.OkDetailed(nil, "保存成功")
|
|
|
}
|
|
|
|
|
@@ -949,6 +979,12 @@ func (this *CalendarController) MattersUpdate() {
|
|
|
} else {
|
|
|
updateParams["matter_content"] = req.MatterContent
|
|
|
}
|
|
|
+ req.EditReason = strings.TrimSpace(req.EditReason)
|
|
|
+ if req.EditReason == "" {
|
|
|
+ this.FailWithMessage("请填写修改原因!", "请填写修改原因")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ updateParams["edit_reason"] = req.EditReason
|
|
|
|
|
|
startDateTime := req.StartDate + " " + req.StartTime
|
|
|
endDateTime := req.EndDate + " " + req.EndTime
|
|
@@ -971,11 +1007,22 @@ func (this *CalendarController) MattersUpdate() {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+ // 结束后14天不可再编辑
|
|
|
+ endP = endP.AddDate(0, 0, 14)
|
|
|
+ if endP.Before(time.Now().Local()) {
|
|
|
+ this.FailWithMessage("事项结束14天后不可再编辑!", "事项结束14天后不可再编辑!")
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
matterItem, err := roadshow.GetMattersById(req.RsMattersId)
|
|
|
if err != nil {
|
|
|
this.FailWithMessage("保存失败!", "保存失败,GetMattersById,Err:"+err.Error())
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
+ // 是否为销售
|
|
|
+ sales := isSellerRole(sysUser.RoleTypeCode)
|
|
|
+
|
|
|
//校验事项时间冲突
|
|
|
{
|
|
|
if matterItem != nil && (matterItem.StartDate != req.StartDate ||
|
|
@@ -995,28 +1042,30 @@ func (this *CalendarController) MattersUpdate() {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- //校验活动时间冲突--待接受
|
|
|
- {
|
|
|
- calendarCount, err := rs.CheckCalendar(startDateTime, endDateTime, "1", sysUser.AdminId, 0)
|
|
|
- if err != nil {
|
|
|
- this.FailWithMessage("时间冲突检测失败!", "时间冲突检测失败-CheckCalendarResearcherCount!Err:"+err.Error())
|
|
|
- return
|
|
|
- }
|
|
|
- if calendarCount > 0 {
|
|
|
- this.FailWithMessage("当前时间与待处理的申请有冲突,请与相关销售沟通!", "时间冲突检测失败-CheckCalendarResearcherCount!")
|
|
|
- return
|
|
|
- }
|
|
|
- }
|
|
|
- //校验活动时间冲突--待接受
|
|
|
- {
|
|
|
- calendarCount, err := rs.CheckCalendar(startDateTime, endDateTime, "2", sysUser.AdminId, 0)
|
|
|
- if err != nil {
|
|
|
- this.FailWithMessage("时间冲突检测失败!", "时间冲突检测失败-CheckCalendarResearcherCount!Err:"+err.Error())
|
|
|
- return
|
|
|
+ if !sales {
|
|
|
+ //校验活动时间冲突--待接受
|
|
|
+ {
|
|
|
+ calendarCount, err := rs.CheckCalendar(startDateTime, endDateTime, "1", sysUser.AdminId, 0)
|
|
|
+ if err != nil {
|
|
|
+ this.FailWithMessage("时间冲突检测失败!", "时间冲突检测失败-CheckCalendarResearcherCount!Err:"+err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if calendarCount > 0 {
|
|
|
+ this.FailWithMessage("当前时间与待处理的申请有冲突,请与相关销售沟通!", "时间冲突检测失败-CheckCalendarResearcherCount!")
|
|
|
+ return
|
|
|
+ }
|
|
|
}
|
|
|
- if calendarCount > 0 {
|
|
|
- this.FailWithMessage("时间冲突,已存在时间段内的活动!", "时间冲突检测失败-CheckCalendarResearcherCount!")
|
|
|
- return
|
|
|
+ //校验活动时间冲突--待接受
|
|
|
+ {
|
|
|
+ calendarCount, err := rs.CheckCalendar(startDateTime, endDateTime, "2", sysUser.AdminId, 0)
|
|
|
+ if err != nil {
|
|
|
+ this.FailWithMessage("时间冲突检测失败!", "时间冲突检测失败-CheckCalendarResearcherCount!Err:"+err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if calendarCount > 0 {
|
|
|
+ this.FailWithMessage("时间冲突,已存在时间段内的活动!", "时间冲突检测失败-CheckCalendarResearcherCount!")
|
|
|
+ return
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -1031,7 +1080,11 @@ func (this *CalendarController) MattersUpdate() {
|
|
|
this.FailWithMessage("保存失败!", "保存失败!UpdateRsMatters:"+err.Error())
|
|
|
return
|
|
|
}
|
|
|
- go rs.UpdateSHCalendarByMatter(req)
|
|
|
+
|
|
|
+ // 销售不做上海那边的处理
|
|
|
+ if !sales {
|
|
|
+ go rs.UpdateSHCalendarByMatter(req)
|
|
|
+ }
|
|
|
this.OkDetailed(nil, "保存成功")
|
|
|
}
|
|
|
|
|
@@ -1059,12 +1112,38 @@ func (this *CalendarController) MattersDelete() {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+ matters, e := roadshow.GetMattersById(req.RsMattersId)
|
|
|
+ if e != nil {
|
|
|
+ if e.Error() == utils.ErrNoRow() {
|
|
|
+ this.FailWithMessage("事项已被删除, 请刷新页面", "事项已被删除, 请刷新页面")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ this.FailWithMessage("操作失败", "获取事项失败, Err: "+e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 事项结束14天后不可再删除
|
|
|
+ t := fmt.Sprintf("%s %s", matters.EndDate, matters.EndTime)
|
|
|
+ ed, _ := time.ParseInLocation(utils.FormatDateTime, t, time.Local)
|
|
|
+ ed = ed.AddDate(0, 0, 14)
|
|
|
+ if ed.Before(time.Now().Local()) {
|
|
|
+ this.FailWithMessage("事项结束14天后不可再删除", "事项结束14天后不可再删除")
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
err = roadshow.DeleteRsMatters(req.RsMattersId)
|
|
|
if err != nil {
|
|
|
this.FailWithMessage("保存失败", "保存失败!DeleteRsMatters:"+err.Error())
|
|
|
return
|
|
|
}
|
|
|
- go rs.DeleteSHMatter(req.RsMattersId)
|
|
|
+
|
|
|
+ // 是否为销售
|
|
|
+ sales := isSellerRole(sysUser.RoleTypeCode)
|
|
|
+
|
|
|
+ // 删除上海的路演活动, 销售不同步
|
|
|
+ if !sales {
|
|
|
+ go rs.DeleteSHMatter(req.RsMattersId)
|
|
|
+ }
|
|
|
this.OkDetailed(nil, "删除成功")
|
|
|
}
|
|
|
|
|
@@ -1935,3 +2014,78 @@ func (this *CalendarController) MyCalendarDetail() {
|
|
|
resp.RsMattersList = matterList
|
|
|
this.OkDetailed(resp, "删除成功")
|
|
|
}
|
|
|
+
|
|
|
+// SellerCalendarDetail
|
|
|
+// @Title 路演-销售日历详情
|
|
|
+// @Description 路演-销售日历详情
|
|
|
+// @Param StartDate query string true "开始日期"
|
|
|
+// @Param EndDate query string true "结束日期日期"
|
|
|
+// @Param SellerId query int true "销售ID"
|
|
|
+// @Success 200 {object} roadshow.CalendarDetailResp
|
|
|
+// @router /seller/calendar/detail [get]
|
|
|
+func (this *CalendarController) SellerCalendarDetail() {
|
|
|
+ sysUser := this.AdminWx
|
|
|
+ if sysUser == nil {
|
|
|
+ this.FailWithMessage("请登录", "请登录,SysUser Is Empty")
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ startDate := this.GetString("StartDate")
|
|
|
+ endDate := this.GetString("EndDate")
|
|
|
+ sellerId, _ := this.GetInt("SellerId")
|
|
|
+ if startDate == "" || endDate == "" {
|
|
|
+ this.FailWithMessage("参数错误!", "参数错误 StartDate"+startDate+" EndDate:"+endDate)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if sellerId <= 0 {
|
|
|
+ calendarList := make([]*roadshow.CalendarListView, 0)
|
|
|
+ matterList := make([]*roadshow.RsMatters, 0)
|
|
|
+ resp := new(roadshow.CalendarPanelDetailResp)
|
|
|
+ resp.CalendarList = calendarList
|
|
|
+ resp.RsMattersList = matterList
|
|
|
+ this.OkDetailed(resp, "删除成功")
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 路演
|
|
|
+ condition := ` AND a.sys_user_id = ? AND b.start_date >= ? AND b.end_date <= ? AND b.status = 2`
|
|
|
+ pars := make([]interface{}, 0)
|
|
|
+ pars = append(pars, sellerId, startDate, endDate)
|
|
|
+ calendarList, err := roadshow.GetCalendarDetailList(condition, pars)
|
|
|
+ if err != nil {
|
|
|
+ this.FailWithMessage("获取数据失败", "获取数据失败, GetCalendarDetailList Err:"+err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if calendarList == nil {
|
|
|
+ calendarList = make([]*roadshow.CalendarListView, 0)
|
|
|
+ }
|
|
|
+
|
|
|
+ // 事项
|
|
|
+ matterList, err := roadshow.GetRsMattersList(startDate, endDate, sellerId)
|
|
|
+ if err != nil {
|
|
|
+ this.FailWithMessage("获取数据失败", "获取数据失败, GetRsMattersList Err:"+err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if matterList == nil {
|
|
|
+ matterList = make([]*roadshow.RsMatters, 0)
|
|
|
+ }
|
|
|
+
|
|
|
+ resp := new(roadshow.CalendarPanelDetailResp)
|
|
|
+ resp.CalendarList = calendarList
|
|
|
+ resp.RsMattersList = matterList
|
|
|
+ this.OkDetailed(resp, "删除成功")
|
|
|
+}
|
|
|
+
|
|
|
+// isSellerRole 是否为销售角色
|
|
|
+func isSellerRole(roleType string) (ok bool) {
|
|
|
+ sellerArr := []string{
|
|
|
+ utils.ROLE_TYPE_CODE_FICC_SELLER, utils.ROLE_TYPE_CODE_FICC_GROUP, utils.ROLE_TYPE_CODE_FICC_TEAM,
|
|
|
+ utils.ROLE_TYPE_CODE_FICC_DEPARTMENT, utils.ROLE_TYPE_CODE_FICC_ADMIN,
|
|
|
+ utils.ROLE_TYPE_CODE_RAI_SELLER, utils.ROLE_TYPE_CODE_RAI_GROUP, utils.ROLE_TYPE_CODE_RAI_DEPARTMENT,
|
|
|
+ utils.ROLE_TYPE_CODE_RAI_ADMIN,
|
|
|
+ }
|
|
|
+ if utils.InArrayByStr(sellerArr, roleType) {
|
|
|
+ ok = true
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|