123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232 |
- 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
- }
|