package business_trip import ( "encoding/json" "github.com/rdlucklib/rdluck_tools/paging" "hongze/hz_crm_api/models" "hongze/hz_crm_api/models/business_trip" "hongze/hz_crm_api/models/company" "hongze/hz_crm_api/models/system" "hongze/hz_crm_api/services" "hongze/hz_crm_api/utils" "strconv" "time" ) // @Title 出差审批列表 // @Description 出差申请列表接口 // @Param PageSize query int true "每页数据条数" // @Param CurrentIndex query int true "当前页页码,从1开始" // @Param Status query string true "状态" // @Success 200 {object} business_trip.BusinessApplyListResp // @router /approve/list [get] func (this *BusinessTrip) ApproveList() { 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 page := paging.GetPaging(currentIndex, pageSize, total) var startSize int if pageSize <= 0 { pageSize = utils.PageSize10 } if currentIndex <= 0 { currentIndex = 1 } startSize = paging.StartIndex(currentIndex, pageSize) reason := this.GetString("Reason") status := this.GetString("Status") var condition string var pars []interface{} condition += ` AND approve_id=? ` pars = append(pars, sysUser.AdminId) if reason != "" { condition += ` AND reason=? ` pars = append(pars, reason) } if status != "" { condition += ` AND status=? ` pars = append(pars, status) } else { condition += ` AND status IN('待审批','已通过','已驳回','已关闭') ` } resp := new(business_trip.BusinessApplyListResp) total, err := business_trip.GetBusinessApplyListCount(condition, pars) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取信息失败" br.ErrMsg = "获取数据总数失败,GetCalendarListCount,Err:" + err.Error() return } dataList, err := business_trip.GetBusinessApplyList(condition, pars, startSize, pageSize) if err != nil { br.Msg = "获取指标信息失败" br.ErrMsg = "获取数据失败,GetBusinessApplyList,Err:" + err.Error() return } nowDate, _ := time.ParseInLocation(utils.FormatDate, time.Now().Format(utils.FormatDate), time.Local) for _, v := range dataList { arriveDate, _ := time.ParseInLocation(utils.FormatDate, v.ArriveDate, time.Local) if v.Status == "已通过" && arriveDate.After(nowDate) { v.IsClose = true } } page = paging.GetPaging(currentIndex, pageSize, total) resp.Paging = page resp.List = dataList br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } // @Title 出差申请,审批接口 // @Description 出差申请,审批接口 // @Param request body business_trip.BusinessApplyApproveReq true "type json string" // @Success Ret=200 保存成功 // @router /apply/approve [post] func (this *BusinessTrip) ApplyApprove() { 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 business_trip.BusinessApplyApproveReq err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } if req.BusinessApplyId <= 0 { br.Msg = "参数错误" br.ErrMsg = "参数错误" return } if req.ApproveStatus != 1 && req.ApproveStatus != 2 { br.Msg = "审批状态错误" return } if req.ApproveStatus == 2 && req.RefuseReason == "" { br.Msg = "请填写驳回理由" return } businessApplyItem, err := business_trip.GetBusinessApplyById(req.BusinessApplyId) if err != nil { if err.Error() == utils.ErrNoRow() { br.Msg = "出差申请已被删除,请刷新页面" return } br.Msg = "获取数据失败!" br.ErrMsg = "获取数据失败!GetBusinessApplyById:" + err.Error() return } // 审批权限-仅王沛 if businessApplyItem.ApproveId != sysUser.AdminId { br.Msg = "无权审批" return } whereParams := make(map[string]interface{}) updateParams := make(map[string]interface{}) whereParams["business_apply_id"] = req.BusinessApplyId var status string if req.ApproveStatus == 1 { status = "已通过" } else { status = "已驳回" } updateParams["status"] = status updateParams["refuse_reason"] = req.RefuseReason updateParams["modify_time"] = time.Now() updateParams["approve_time"] = time.Now() err = business_trip.UpdateBusinessApply(whereParams, updateParams) if err != nil { br.Msg = "审批失败!" br.ErrMsg = "审批失败!UpdateBusinessApply:" + err.Error() return } { //系统消息 sourceType := 10 content := businessApplyItem.Province + businessApplyItem.City + businessApplyItem.Reason + "出差申请" + status go services.AddCompanyApprovalMessage(sysUser.AdminId, businessApplyItem.ApplyAdminId, 0, businessApplyItem.BusinessApplyId, 1, sourceType, 2, "", content, content, "") go company.IsReadCompanyApprovalMessage(businessApplyItem.BusinessApplyId, sourceType) } //模板消息 { applyItem, _ := system.GetSysUserById(businessApplyItem.ApplyAdminId) openIdObj := &system.OpenIdList{ OpenId: applyItem.OpenId, AdminId: applyItem.AdminId, } openIdList := make([]*system.OpenIdList, 0) openIdList = append(openIdList, openIdObj) var remark string if status == "已驳回" { remark = req.RefuseReason } var wxAppPath string if utils.RunMode == "debug" { wxAppPath = "pages/index/index" } else { wxAppPath = "pages-approve/businessTrip/detail?id=" + strconv.Itoa(req.BusinessApplyId) } first := "您的出差申请已被审批" keyword1 := businessApplyItem.Reason + "出差申请" + status keyword2 := status if status == `已驳回` { keyword2 = status + `(` + req.RefuseReason + `)` } go services.SendWxMsgWithRoadshowDeleteNotice(first, keyword1, keyword2, remark, wxAppPath, openIdList) } br.Ret = 200 br.Success = true br.Msg = "审批成功" br.IsAddLog = true }