message.go 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618
  1. package controllers
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. approval2 "hongze/hongze_mobile_admin/models/request/approval"
  6. "hongze/hongze_mobile_admin/models/response/approval"
  7. "hongze/hongze_mobile_admin/models/response/message"
  8. "hongze/hongze_mobile_admin/models/tables/admin"
  9. "hongze/hongze_mobile_admin/models/tables/company_approval"
  10. "hongze/hongze_mobile_admin/models/tables/company_approval_message"
  11. "hongze/hongze_mobile_admin/models/tables/company_contract"
  12. "hongze/hongze_mobile_admin/models/tables/company_delay_permission"
  13. "hongze/hongze_mobile_admin/models/tables/company_product"
  14. "hongze/hongze_mobile_admin/models/tables/company_product_log"
  15. "hongze/hongze_mobile_admin/models/tables/company_report_permission"
  16. "hongze/hongze_mobile_admin/services"
  17. "hongze/hongze_mobile_admin/utils"
  18. "rdluck_tools/paging"
  19. "strconv"
  20. "time"
  21. )
  22. //消息模块
  23. type MessageCommon struct {
  24. BaseAuth
  25. }
  26. // @Title 消息列表汇总页
  27. // @Description 消息列表汇总页接口
  28. // @Success 200 {object} message.SummaryMessageListResp
  29. // @router /summaryMessageList [get]
  30. func (this *MessageCommon) SummaryMessageList() {
  31. sysUser := this.AdminWx
  32. sysUserId := sysUser.AdminId
  33. SummaryMessageListResp := message.SummaryMessageListResp{}
  34. sourceTypeList := [...]int{1, 2, 3}
  35. for _, sourceType := range sourceTypeList {
  36. //最近一条消息
  37. tmpMessage := ``
  38. messageInfo, err := company_approval_message.GetLastMessage(sysUserId, sourceType)
  39. if err != nil {
  40. if err.Error() != utils.ErrNoRow() {
  41. this.FailWithMessage("获取失败", "获取消息失败,Err:"+err.Error())
  42. return
  43. }
  44. } else {
  45. tmpMessage = fmt.Sprint(messageInfo.RealName, messageInfo.CreateTime, messageInfo.Content)
  46. }
  47. notReadTotal, err := company_approval_message.GetNotReadMessageTotal(sysUserId, sourceType)
  48. if err != nil {
  49. this.FailWithMessage("获取失败", "获取未读消息数失败,Err:"+err.Error())
  50. return
  51. }
  52. switch sourceType {
  53. case 1:
  54. SummaryMessageListResp.CompanyMessage.Message = tmpMessage
  55. SummaryMessageListResp.CompanyMessage.Total = int(notReadTotal)
  56. case 2:
  57. SummaryMessageListResp.ContractMessage.Message = tmpMessage
  58. SummaryMessageListResp.ContractMessage.Total = int(notReadTotal)
  59. case 3:
  60. SummaryMessageListResp.SealMessage.Message = tmpMessage
  61. SummaryMessageListResp.SealMessage.Total = int(notReadTotal)
  62. }
  63. }
  64. this.OkDetailed(SummaryMessageListResp, "获取成功")
  65. }
  66. // @Title 消息列表
  67. // @Description 消息列表接口
  68. // @Param SourceType query int true "消息类型"
  69. // @Param CurrentIndex query int true "当前页码"
  70. // @Param pageSize query int true "每页数量"
  71. // @Success 200 {object} message.CompanyApprovalMessageListResp
  72. // @router /list [get]
  73. func (this *MessageCommon) MessageList() {
  74. sysUser := this.AdminWx
  75. sysUserId := sysUser.AdminId
  76. sourceType, err := this.GetInt("SourceType", 1)
  77. if err != nil {
  78. this.FailWithMessage("获取失败", "获取消息类型失败,Err:"+err.Error())
  79. return
  80. }
  81. pageSize, _ := this.GetInt("PageSize")
  82. currentIndex, _ := this.GetInt("CurrentIndex")
  83. var startSize int
  84. if pageSize <= 0 {
  85. pageSize = utils.PageSize20
  86. }
  87. if currentIndex <= 0 {
  88. currentIndex = 1
  89. }
  90. startSize = paging.StartIndex(currentIndex, pageSize)
  91. total, err := company_approval_message.GetCompanyApprovalMessageCount(sysUserId, sourceType)
  92. if err != nil {
  93. this.FailWithMessage("获取失败", "获取消息总数失败,Err:"+err.Error())
  94. return
  95. }
  96. list, err := company_approval_message.GetCompanyApprovalMessageList(sysUserId, sourceType, startSize, pageSize)
  97. if err != nil {
  98. this.FailWithMessage("获取失败", "获取消息列表失败,Err:"+err.Error())
  99. return
  100. }
  101. resp := message.CompanyApprovalMessageListResp{
  102. List: list,
  103. Total: total,
  104. }
  105. this.OkDetailed(resp, "获取成功")
  106. }
  107. // @Title 消息已读
  108. // @Description 消息已读接口
  109. // @Param request body company.CompanyApprovalMessageReadReq true "type json string"
  110. // @Success Ret=200 申请成功
  111. // @router /message/read [post]
  112. func (this *MessageCommon) MessageRead() {
  113. //sysUser := this.AdminWx
  114. var req company_approval_message.CompanyApprovalMessageReadReq
  115. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  116. if err != nil {
  117. this.FailWithMessage("参数解析异常!", "参数解析失败,Err:"+err.Error())
  118. return
  119. }
  120. if req.Id <= 0 {
  121. this.FailWithMessage("参数错误", "参数错误,客户id小于等于0")
  122. return
  123. }
  124. err = company_approval_message.ModifyCompanyApprovalMessageStatus(req.Id)
  125. if err != nil {
  126. this.FailWithMessage("修改失败!", "修改已读失败,Err:"+err.Error())
  127. return
  128. }
  129. this.OkWithMessage("已读成功")
  130. }
  131. // @Title 获取审批列表接口
  132. // @Description 获取审批列表接口
  133. // @Param PageSize query int true "每页数据条数"
  134. // @Param CurrentIndex query int true "当前页页码,从1开始"
  135. // @Param Status query string true "状态:'全部','待审批','已审批','驳回','已撤回'"
  136. // @Param KeyWord query string true "搜索关键词"
  137. // @Success 200 {object} approval.CompanyApprovalListResp
  138. // @router /list [get]
  139. func (this *MessageCommon) List() {
  140. sysUser := this.AdminWx
  141. roleTypeCode := sysUser.RoleTypeCode
  142. pageSize, _ := this.GetInt("PageSize")
  143. currentIndex, _ := this.GetInt("CurrentIndex")
  144. status := this.GetString("Status")
  145. keyWord := this.GetString("KeyWord")
  146. var startSize int
  147. if pageSize <= 0 {
  148. pageSize = utils.PageSize20
  149. }
  150. if currentIndex <= 0 {
  151. currentIndex = 1
  152. }
  153. startSize = paging.StartIndex(currentIndex, pageSize)
  154. var condition string
  155. var pars []interface{}
  156. if status != "" {
  157. if status == "已审批" {
  158. condition += ` AND c.approve_status IN('已审批','驳回') `
  159. } else {
  160. condition += ` AND c.approve_status=? `
  161. pars = append(pars, status)
  162. }
  163. }
  164. if roleTypeCode == utils.ROLE_TYPE_CODE_FICC_ADMIN || roleTypeCode == utils.ROLE_TYPE_CODE_RAI_ADMIN { //审批
  165. condition += ` AND c.approve_role_type_code=? `
  166. pars = append(pars, roleTypeCode)
  167. } else if roleTypeCode == utils.ROLE_TYPE_CODE_FICC_SELLER || roleTypeCode == utils.ROLE_TYPE_CODE_RAI_SELLER { //销售
  168. condition += ` AND c.apply_user_id=? `
  169. pars = append(pars, sysUser.AdminId)
  170. }
  171. if keyWord != "" {
  172. condition += ` AND (a.company_name LIKE '%` + keyWord + `%' OR a.credit_code LIKE '%` + keyWord + `%') `
  173. }
  174. total, err := company_approval.GetApprovalCount(condition, pars)
  175. if err != nil {
  176. this.FailWithMessage("获取失败", "获取数据总数失败,Err:"+err.Error())
  177. return
  178. }
  179. list, err := company_approval.GetApprovalList(condition, pars, startSize, pageSize)
  180. if err != nil {
  181. this.FailWithMessage("获取失败", "获取数据失败,Err:"+err.Error())
  182. return
  183. }
  184. listLen := len(list)
  185. for i := 0; i < listLen; i++ {
  186. item := list[i]
  187. if item.FreezeStartDate != "" && item.FreezeEndDate != "" && item.Status == utils.COMPANY_STATUS_FREEZE {
  188. freezeEndDate, _ := time.Parse(utils.FormatDate, item.FreezeEndDate)
  189. if time.Now().Before(freezeEndDate) {
  190. expireDays := freezeEndDate.Sub(time.Now()).Hours() / 24
  191. list[i].FreezeExpireDays = int(expireDays)
  192. }
  193. }
  194. if item.StartDate != "" && item.EndDate != "" {
  195. endDate, _ := time.Parse(utils.FormatDate, item.EndDate)
  196. if time.Now().Before(endDate) {
  197. expireDays := endDate.Sub(time.Now()).Hours() / 24
  198. list[i].ExpireDay = int(expireDays)
  199. }
  200. }
  201. approvalCount, err := company_approval.GetCompanyApprovalCount(item.CompanyId, item.ProductId)
  202. if err != nil && err.Error() != utils.ErrNoRow() {
  203. this.FailWithMessage("获取失败", "获取延期审批次数失败,Err:"+err.Error())
  204. return
  205. }
  206. list[i].ApprovalCount = approvalCount
  207. if item.ApplyMethod == 3 {
  208. delayPermission, err := company_delay_permission.GetApplyDelayPermission(item.CompanyApprovalId)
  209. if err != nil && err.Error() != utils.ErrNoRow() {
  210. this.FailWithMessage("获取失败", "获取延期审批权限失败,Err:"+err.Error())
  211. return
  212. }
  213. list[i].DelayPermission = delayPermission
  214. }
  215. if item.ApproveRoleTypeCode == roleTypeCode {
  216. list[i].OpButton = true
  217. }
  218. }
  219. page := paging.GetPaging(currentIndex, pageSize, total)
  220. resp := approval.CompanyApprovalListResp{
  221. Paging: page,
  222. List: list,
  223. }
  224. this.OkDetailed(resp, "获取成功")
  225. }
  226. // @Title 获取审批单详情接口
  227. // @Description 获取审批单详情接口
  228. // @Param ApprovalId query int true "审批单id"
  229. // @Success 200 {object} approval.CompanyApprovalDetailResp
  230. // @router /detail [get]
  231. func (this *MessageCommon) Detail() {
  232. sysUser := this.AdminWx
  233. roleTypeCode := sysUser.RoleTypeCode
  234. companyApprovalId, _ := this.GetInt("ApprovalId")
  235. var condition string
  236. var pars []interface{}
  237. if roleTypeCode == utils.ROLE_TYPE_CODE_FICC_ADMIN || roleTypeCode == utils.ROLE_TYPE_CODE_RAI_ADMIN { //审批
  238. condition += ` AND c.approve_role_type_code=? `
  239. pars = append(pars, roleTypeCode)
  240. } else if roleTypeCode == utils.ROLE_TYPE_CODE_FICC_SELLER || roleTypeCode == utils.ROLE_TYPE_CODE_RAI_SELLER { //销售
  241. condition += ` AND c.apply_user_id=? `
  242. pars = append(pars, sysUser.AdminId)
  243. }
  244. item, err := company_approval.GetApprovalListByApprovalId(condition, pars, companyApprovalId)
  245. if err != nil {
  246. this.FailWithMessage("获取失败", "获取数据失败,Err:"+err.Error())
  247. return
  248. }
  249. if item.FreezeStartDate != "" && item.FreezeEndDate != "" && item.Status == utils.COMPANY_STATUS_FREEZE {
  250. freezeEndDate, _ := time.Parse(utils.FormatDate, item.FreezeEndDate)
  251. if time.Now().Before(freezeEndDate) {
  252. expireDays := freezeEndDate.Sub(time.Now()).Hours() / 24
  253. item.FreezeExpireDays = int(expireDays)
  254. }
  255. }
  256. if item.StartDate != "" && item.EndDate != "" {
  257. endDate, _ := time.Parse(utils.FormatDate, item.EndDate)
  258. if time.Now().Before(endDate) {
  259. expireDays := endDate.Sub(time.Now()).Hours() / 24
  260. item.ExpireDay = int(expireDays)
  261. }
  262. }
  263. approvalCount, err := company_approval.GetCompanyApprovalCount(item.CompanyId, item.ProductId)
  264. if err != nil && err.Error() != utils.ErrNoRow() {
  265. this.FailWithMessage("获取失败", "获取延期审批次数失败,Err:"+err.Error())
  266. return
  267. }
  268. item.ApprovalCount = approvalCount
  269. //if item.ApplyMethod == 3 {
  270. // delayPermission, err := company_delay_permission.GetApplyDelayPermission(item.CompanyApprovalId)
  271. // if err != nil && err.Error() != utils.ErrNoRow() {
  272. // this.FailWithMessage("获取失败", "获取延期审批权限失败,Err:"+err.Error())
  273. // return
  274. // }
  275. // item.DelayPermission = delayPermission
  276. //}
  277. resp := approval.CompanyApprovalDetailResp{
  278. CompanyApprovalDetail: item,
  279. }
  280. //获取权限列表
  281. //子权限切片集合
  282. var permissionClassifyArr []string
  283. if item.ProductId == 1 {
  284. for _, v := range utils.PermissionFiccClassifyArr {
  285. permissionClassifyArr = append(permissionClassifyArr, v)
  286. }
  287. } else {
  288. permissionClassifyArr = append(permissionClassifyArr, "权益")
  289. }
  290. //获取需要审批的权限
  291. delayPermissionList, err := company_delay_permission.GetDelayPermissionItems(item.CompanyId, item.CompanyApprovalId)
  292. if err != nil && err.Error() != utils.ErrNoRow() {
  293. this.FailWithMessage("获取失败", "获取审批权限失败,Err:"+err.Error())
  294. return
  295. }
  296. delayPermissionIdMap := make(map[int]int)
  297. for _, delayPermission := range delayPermissionList {
  298. delayPermissionIdMap[delayPermission.ChartPermissionId] = 0
  299. }
  300. //遍历获取
  301. for _, v := range permissionClassifyArr {
  302. checkList := make([]int, 0)
  303. plist := new(company_report_permission.PermissionLookList)
  304. items, err := company_report_permission.GetPermissionLookItems(item.ProductId, v)
  305. if err != nil {
  306. this.FailWithMessage("获取失败", "获取权限信息失败,Err:"+err.Error())
  307. return
  308. }
  309. for _, n := range items {
  310. if _, ok := delayPermissionIdMap[n.ChartPermissionId]; ok {
  311. checkList = append(checkList, n.ChartPermissionId)
  312. }
  313. }
  314. plist.Items = items
  315. plist.ClassifyName = v
  316. plist.CheckList = checkList
  317. if item.ProductId == 1 {
  318. resp.FiccPermissionList = append(resp.FiccPermissionList, plist)
  319. } else {
  320. resp.PermissionList = append(resp.PermissionList, plist)
  321. }
  322. }
  323. this.OkDetailed(resp, "获取成功")
  324. }
  325. // @Title 获取审批单中的权限列表
  326. // @Description 获取审批单中的权限列表接口
  327. // @Param ApprovalId query int true "审批单id"
  328. // @Success 200 {object} approval.CompanyPermissionResp
  329. // @router /getApprovalPermissionList [get]
  330. func (this *MessageCommon) GetApprovalPermissionList() {
  331. //this.FailWithMessage("获取失败", "获取数据总数失败,Err:"+err.Error())
  332. //返回基础参数
  333. resp := new(approval.CompanyPermissionResp)
  334. //获取审批单信息
  335. approvalId, _ := this.GetInt("ApprovalId")
  336. if approvalId <= 0 {
  337. this.FailWithMessage("审批单参数异常", "提交审批单参数异常")
  338. return
  339. }
  340. approvalInfo, err := company_approval.GetCompanyApprovalByApprovalId(approvalId)
  341. if err != nil {
  342. this.FailWithMessage("获取失败", "获取审批单数据失败,Err:"+err.Error())
  343. return
  344. }
  345. //子权限切片集合
  346. var permissionClassifyArr []string
  347. if approvalInfo.ProductId == 1 {
  348. for _, v := range utils.PermissionFiccClassifyArr {
  349. permissionClassifyArr = append(permissionClassifyArr, v)
  350. }
  351. } else {
  352. permissionClassifyArr = append(permissionClassifyArr, "权益")
  353. }
  354. //获取需要审批的权限
  355. delayPermissionList, err := company_delay_permission.GetDelayPermissionItems(approvalInfo.CompanyId, approvalInfo.CompanyApprovalId)
  356. if err != nil && err.Error() != utils.ErrNoRow() {
  357. this.FailWithMessage("获取失败", "获取审批权限失败,Err:"+err.Error())
  358. return
  359. }
  360. delayPermissionIdMap := make(map[int]int)
  361. for _, delayPermission := range delayPermissionList {
  362. delayPermissionIdMap[delayPermission.ChartPermissionId] = 0
  363. }
  364. //遍历获取
  365. for _, v := range permissionClassifyArr {
  366. checkList := make([]int, 0)
  367. plist := new(company_report_permission.PermissionLookList)
  368. items, err := company_report_permission.GetPermissionLookItems(approvalInfo.ProductId, v)
  369. if err != nil {
  370. this.FailWithMessage("获取失败", "获取权限信息失败,Err:"+err.Error())
  371. return
  372. }
  373. for _, n := range items {
  374. if _, ok := delayPermissionIdMap[n.ChartPermissionId]; ok {
  375. checkList = append(checkList, n.ChartPermissionId)
  376. }
  377. }
  378. plist.Items = items
  379. plist.ClassifyName = v
  380. plist.CheckList = checkList
  381. if approvalInfo.ProductId == 1 {
  382. resp.FiccPermissionList = append(resp.FiccPermissionList, plist)
  383. } else {
  384. resp.PermissionList = append(resp.PermissionList, plist)
  385. }
  386. }
  387. this.OkDetailed(resp, "获取成功")
  388. }
  389. // @Title 审批
  390. // @Description 审批接口
  391. // @Param request body approval.CompanyApplyApproveReq true "type json string"
  392. // @Success Ret=200 审批成功
  393. // @router /approve [post]
  394. func (this *MessageCommon) ApplyApprove() {
  395. sysUser := this.AdminWx
  396. var req approval2.CompanyApplyApproveReq
  397. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  398. if err != nil {
  399. this.FailWithMessage("参数解析异常!", "参数解析失败,Err:"+err.Error())
  400. return
  401. }
  402. roleTypeCode := sysUser.RoleTypeCode
  403. productId := services.GetProductId(roleTypeCode)
  404. if productId == 0 {
  405. this.FailWithMessage("参数错误", "参数解析失败,Err:"+"客户类型为:"+roleTypeCode)
  406. return
  407. }
  408. if req.CompanyId <= 0 {
  409. this.FailWithMessage("参数错误", "客户Id小于等于0")
  410. return
  411. }
  412. if req.Status != 1 && req.Status != 2 {
  413. this.FailWithMessage("参数错误", "审批状态Id小于等于0")
  414. return
  415. }
  416. companyProduct, err := company_product.GetCompanyProductByCompanyIdAndProductId(req.CompanyId, productId)
  417. if err != nil {
  418. this.FailWithMessage("获取信息失败", "获取信息失败,Err:"+err.Error())
  419. return
  420. }
  421. if companyProduct == nil {
  422. this.FailWithMessage("获取审批信息失败", "获取信息失败,Err:"+err.Error())
  423. return
  424. }
  425. approvalItem, err := company_approval.GetCompanyApprovalByCompanyId(req.CompanyId, productId)
  426. if err != nil {
  427. if err.Error() == utils.ErrNoRow() {
  428. this.FailWithMessage("订单已审批,请刷新页面查看最新状态", "待审批信息不存在,CompanyId:"+strconv.Itoa(req.CompanyId)+";productId:"+strconv.Itoa(productId))
  429. } else {
  430. this.FailWithMessage("获取信息失败", "获取信息失败,Err:"+err.Error())
  431. }
  432. return
  433. }
  434. if approvalItem == nil {
  435. this.FailWithMessage("订单已审批,请刷新页面查看最新状态", "待审批信息不存在,CompanyId:"+strconv.Itoa(req.CompanyId)+";productId:"+strconv.Itoa(productId))
  436. return
  437. }
  438. if approvalItem.ApproveRoleTypeCode != roleTypeCode {
  439. this.FailWithMessage("您无权审批", "ApproveRoleTypeCode:"+approvalItem.ApproveRoleTypeCode+";roleTypeCode:"+roleTypeCode)
  440. return
  441. }
  442. var approveStatus, approveContent string
  443. if req.Status == 1 { //通过
  444. //申请类型:1:试用->正式,2:冻结—>试用,3:试用延期,4:原销售申请领取流失客户,5:正式客户申请服务更新
  445. if approvalItem.ApplyMethod == 1 { //试用转正式
  446. //获取合同信息
  447. contract, err := company_contract.GetCompanyContractDetail(req.CompanyId, productId, req.CompanyContractId)
  448. if err != nil {
  449. this.FailWithMessage("待审批信息不存在", "待审批信息不存在,CompanyId:"+strconv.Itoa(req.CompanyId)+";productId:"+strconv.Itoa(productId)+";Err:"+err.Error())
  450. return
  451. }
  452. if contract == nil {
  453. this.FailWithMessage("待审批信息不存在", "待审批信息不存在,CompanyId:"+strconv.Itoa(req.CompanyId)+";productId:"+strconv.Itoa(productId))
  454. return
  455. }
  456. err = company_approval.TryOutToFormal(req.CompanyId, productId, sysUser.AdminId, approvalItem.CompanyApprovalId, contract.CompanyContractId, contract.StartDate, contract.EndDate, sysUser.RealName, companyProduct.ProductName)
  457. if err != nil {
  458. this.FailWithMessage("审批失败", "审批失败,Err:"+err.Error())
  459. return
  460. }
  461. } else if approvalItem.ApplyMethod == 2 { //冻结->试用
  462. err = company_approval.FreezeToTryOut(req.CompanyId, productId, sysUser.AdminId, approvalItem.CompanyApprovalId, approvalItem.ApplyUserId, sysUser.RealName, companyProduct.ProductName)
  463. if err != nil {
  464. this.FailWithMessage("审批失败", "审批失败,Err:"+err.Error())
  465. return
  466. }
  467. } else if approvalItem.ApplyMethod == 3 { //试用延期
  468. err = company_approval.TryOutDelay(req.CompanyId, productId, sysUser.AdminId, approvalItem.CompanyApprovalId, sysUser.RealName, companyProduct.EndDate, companyProduct.ProductName)
  469. if err != nil {
  470. this.FailWithMessage("审批失败", "审批失败,Err:"+err.Error())
  471. return
  472. }
  473. } else if approvalItem.ApplyMethod == 4 { //原销售申请领取流失客户
  474. err = company_approval.ApplyReceive(req.CompanyId, productId, sysUser.AdminId, approvalItem.CompanyApprovalId, approvalItem.ApplyUserId, sysUser.RealName, companyProduct.ProductName)
  475. if err != nil {
  476. this.FailWithMessage("审批失败", "审批失败,Err:"+err.Error())
  477. return
  478. }
  479. } else if approvalItem.ApplyMethod == 5 { //正式客户申请服务更新
  480. //获取合同信息
  481. contract, err := company_contract.GetCompanyContractDetail(req.CompanyId, productId, req.CompanyContractId)
  482. if err != nil {
  483. this.FailWithMessage("审批失败", "审批失败,Err:"+err.Error())
  484. return
  485. }
  486. if contract == nil {
  487. this.FailWithMessage("审批失败", "审批失败,Err:"+err.Error())
  488. return
  489. }
  490. err = company_approval.ApplyServiceUpdate(req.CompanyId, productId, sysUser.AdminId, approvalItem.CompanyApprovalId, contract.CompanyContractId, companyProduct.StartDate, contract.EndDate, sysUser.RealName, companyProduct.ProductName)
  491. if err != nil {
  492. this.FailWithMessage("审批失败", "审批失败,Err:"+err.Error())
  493. return
  494. }
  495. } else {
  496. this.FailWithMessage("审批失败", "无效的审批状态,CompanyId:"+strconv.Itoa(req.CompanyId)+";productId:"+
  497. strconv.Itoa(productId)+";ApplyMethod:"+strconv.Itoa(approvalItem.ApplyMethod)+" ApproveStatus;"+approvalItem.ApproveStatus)
  498. return
  499. }
  500. approveContent = "审批通过"
  501. } else { //拒绝
  502. if req.Remark == "" {
  503. this.FailWithMessage("请填写驳回理由", "请填写驳回理由")
  504. return
  505. }
  506. approveStatus = "驳回"
  507. err = company_approval.ApproveRefuse(req.CompanyId, productId, approveStatus, req.Remark)
  508. approveContent = "审批驳回"
  509. if err != nil {
  510. this.FailWithMessage("审批失败", "审批失败,Err:"+err.Error())
  511. return
  512. }
  513. }
  514. //新增客户产品日志
  515. {
  516. productLog := new(company_product_log.CompanyProductLog)
  517. productLog.CompanyProductId = companyProduct.CompanyProductId
  518. productLog.CompanyId = companyProduct.CompanyId
  519. productLog.ProductId = companyProduct.ProductId
  520. productLog.ProductName = companyProduct.ProductName
  521. productLog.CompanyName = companyProduct.CompanyName
  522. productLog.CompanyName = companyProduct.CompanyName
  523. productLog.Source = companyProduct.Source
  524. productLog.Reasons = companyProduct.Reasons
  525. productLog.Status = companyProduct.Status
  526. productLog.IndustryId = companyProduct.IndustryId
  527. productLog.IndustryName = companyProduct.IndustryName
  528. productLog.SellerId = companyProduct.SellerId
  529. productLog.SellerName = companyProduct.SellerName
  530. productLog.GroupId = companyProduct.GroupId
  531. productLog.DepartmentId = companyProduct.DepartmentId
  532. productLog.IsSuspend = companyProduct.IsSuspend
  533. productLog.SuspendTime = companyProduct.SuspendTime
  534. productLog.ApproveStatus = companyProduct.ApproveStatus
  535. productLog.FreezeTime = companyProduct.FreezeTime
  536. productLog.Remark = companyProduct.Remark
  537. productLog.StartDate = companyProduct.StartDate
  538. productLog.EndDate = companyProduct.EndDate
  539. productLog.CreateTime = companyProduct.CreateTime
  540. productLog.ModifyTime = companyProduct.ModifyTime
  541. productLog.LoseReason = companyProduct.LoseReason
  542. productLog.LossTime = companyProduct.LossTime
  543. productLog.LogType = "modify"
  544. productLog.LogCreateTime = time.Now()
  545. productLog.AdminId = this.AdminWx.AdminId
  546. go company_product_log.AddCompanyProductLog(productLog)
  547. }
  548. //新增操作记录
  549. {
  550. remark := "审批"
  551. operation := "approve"
  552. services.AddCompanyOperationRecord(req.CompanyId, companyProduct.SellerId, sysUser.AdminId, productId, sysUser.AdminId, companyProduct.CompanyName,
  553. companyProduct.ProductName, sysUser.RealName, remark, operation, approveContent, sysUser.RealName, req.Remark, companyProduct.Status)
  554. }
  555. //待办通知
  556. {
  557. content := companyProduct.CompanyName + " " + approvalItem.ApproveContent + approveContent
  558. approvalSysUser, _ := admin.GetAdminById(approvalItem.ApplyUserId)
  559. if sysUser != nil {
  560. go services.AddCompanyApprovalMessage(sysUser.AdminId, approvalItem.ApplyUserId, req.CompanyId, approvalItem.CompanyApprovalId, 2, companyProduct.CompanyName, content, content, approvalSysUser.Mobile)
  561. }
  562. }
  563. this.OkWithMessage("审批操作成功")
  564. }