company_approval.go 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780
  1. package company_approval
  2. import (
  3. "hongze/hongze_mobile_admin/models/tables/admin"
  4. "hongze/hongze_mobile_admin/models/tables/company_delay_permission"
  5. "hongze/hongze_mobile_admin/models/tables/company_permission_log"
  6. "hongze/hongze_mobile_admin/models/tables/company_report_permission"
  7. "hongze/hongze_mobile_admin/utils"
  8. "rdluck_tools/orm"
  9. "time"
  10. )
  11. type CompanyApproval struct {
  12. CompanyApprovalId int `orm:"column(company_approval_id);pk"`
  13. CompanyId int
  14. ProductId int
  15. ApproveStatus string `description:"'待审批','已审批','驳回','已撤回'"`
  16. ApproveUserId int `description:"审批人"`
  17. ApproveRoleTypeCode string `description:"审批人角色类型"`
  18. ApproveRealName string `description:"审批人姓名"`
  19. ApproveTime time.Time `description:"审批时间"`
  20. ApproveContent string `description:"待审内容"`
  21. ApplyMethod int `description:"申请类型:1:试用->正式,2:冻结—>试用,3:流失—>正式,4:试用延期,5:原销售申请领取流失客户,6:正式客户申请服务更新"`
  22. ApplyReasons string `description:"申请原因"`
  23. ApplyUserId int `description:"申请人"`
  24. ApplyRealName string `description:"申请人姓名"`
  25. CreateTime time.Time `description:"申请时间"`
  26. ModifyTime time.Time `description:"修改时间"`
  27. CompanyContractId int `description:"合同id"`
  28. }
  29. //新增客户产品
  30. func AddCompanyApproval(item *CompanyApproval) (lastId int, err error) {
  31. o := orm.NewOrm()
  32. o.Begin()
  33. defer func() {
  34. if err != nil {
  35. o.Rollback()
  36. } else {
  37. o.Commit()
  38. }
  39. }()
  40. var newId int64
  41. newId, err = o.Insert(item)
  42. lastId = int(newId)
  43. if err != nil {
  44. return
  45. }
  46. sql := `UPDATE company_product SET approve_status=? WHERE company_id=? AND product_id=? `
  47. _, err = o.Raw(sql, item.ApproveStatus, item.CompanyId, item.ProductId).Exec()
  48. return
  49. }
  50. func GetCompanyApprovalCountById(companyId, productId int) (count int, err error) {
  51. sql := `SELECT COUNT(1) AS count FROM company_approval WHERE company_id=? AND product_id=? AND approve_status='待审批' `
  52. o := orm.NewOrm()
  53. err = o.Raw(sql, companyId, productId).QueryRow(&count)
  54. return
  55. }
  56. func GetCompanyApprovalById(companyId, productId int) (item *CompanyApproval, err error) {
  57. sql := `SELECT * FROM company_approval WHERE company_id=? AND product_id=? AND approve_status='待审批' LIMIT 1 `
  58. o := orm.NewOrm()
  59. err = o.Raw(sql, companyId, productId).QueryRow(&item)
  60. return
  61. }
  62. func GetCompanyApprovalByApprovalId(companyApprovalId int) (item *CompanyApproval, err error) {
  63. sql := `SELECT * FROM company_approval WHERE company_approval_id=? LIMIT 1 `
  64. o := orm.NewOrm()
  65. err = o.Raw(sql, companyApprovalId).QueryRow(&item)
  66. return
  67. }
  68. //客户审批单
  69. type CompanyApprovalList struct {
  70. CompanyId int
  71. ProductId int
  72. CompanyName string `description:"客户名称"`
  73. CreditCode string `description:"社会统一信用码"`
  74. CompanyType string `description:"客户类型"`
  75. IndustryName string `description:"行业名称"`
  76. SellerName string `description:"销售名称"`
  77. CreateTime string `description:"创建时间"`
  78. ApprovalTime string `description:"提交申请时间"`
  79. ApproveTime string `description:"审批时间"`
  80. Status string `description:"客户状态"`
  81. ApproveContent string `description:"待审内容"`
  82. ApproveStatus string `description:"当前状态"`
  83. ApplyMethod int `description:"申请类型:1:试用->正式,2:冻结—>试用,3:流失—>正式,4:试用延期,5:原销售申请领取流失客户,6:正式客户申请服务更新"`
  84. ApplyReasons string `description:"申请理由"`
  85. FreezeStartDate string `description:"冻结开始日期"`
  86. FreezeEndDate string `description:"冻结结束日期"`
  87. FreezeExpireDays int `description:"冻结到期天数"`
  88. Address string `description:"地址"`
  89. Source string `description:"客户来源"`
  90. ApproveRemark string `description:"驳回理由"`
  91. StartDate string `description:"开始日期"`
  92. EndDate string `description:"结束日期"`
  93. ExpireDay int `description:"服务到期天数"`
  94. CompanyApprovalId int `description:"审批记录ID"`
  95. ApprovalCount int `description:"已延期审批次数"`
  96. CompanyContractId int `description:"合同id"`
  97. DelayPermission string `description:"延期申请品种"`
  98. ApplyRealName string `description:"申请人姓名"`
  99. }
  100. func GetApprovalList(condition string, pars []interface{}, startSize, pageSize int) (items []*CompanyApprovalList, err error) {
  101. o := orm.NewOrm()
  102. sql := `SELECT a.company_id,b.product_id,a.company_name,a.credit_code,a.address,b.company_type,b.industry_name,
  103. b.seller_name,b.create_time,b.freeze_start_date,b.freeze_end_date,b.source,c.create_time AS approval_time,c.approve_time,b.status,
  104. c.approve_content,c.approve_status,c.apply_method,c.apply_reasons,c.approve_remark,b.start_date,b.end_date,c.company_approval_id,c.company_contract_id,
  105. c.apply_real_name
  106. FROM company AS a
  107. INNER JOIN company_product AS b ON a.company_id=b.company_id
  108. INNER JOIN company_approval AS c ON b.company_id=c.company_id AND b.product_id=c.product_id
  109. WHERE 1=1 `
  110. if condition != "" {
  111. sql += condition
  112. }
  113. sql += ` ORDER BY c.modify_time DESC LIMIT ?,? `
  114. _, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
  115. return
  116. }
  117. func GetApprovalCount(condition string, pars []interface{}) (count int, err error) {
  118. o := orm.NewOrm()
  119. sql := `SELECT COUNT(1) AS count
  120. FROM company AS a
  121. INNER JOIN company_product AS b ON a.company_id=b.company_id
  122. INNER JOIN company_approval AS c ON b.company_id=c.company_id AND b.product_id=c.product_id
  123. WHERE 1=1 `
  124. if condition != "" {
  125. sql += condition
  126. }
  127. sql += ` ORDER BY c.modify_time DESC `
  128. err = o.Raw(sql, pars).QueryRow(&count)
  129. return
  130. }
  131. //试用转正式
  132. func TryOutToFormal(companyId, productId, sellerId, companyApprovalId, companyContractId int, startDate, endDate, sellerName, productName string) (err error) {
  133. o := orm.NewOrm()
  134. o.Begin()
  135. defer func() {
  136. if err != nil {
  137. o.Rollback()
  138. } else {
  139. o.Commit()
  140. }
  141. }()
  142. sql := `UPDATE company_product SET status='正式',approve_status='已审批',start_date=?,end_date=?,modify_time=NOW(),formal_time=NOW() WHERE company_id=? AND product_id=? `
  143. _, err = o.Raw(sql, startDate, endDate, companyId, productId).Exec()
  144. if err != nil {
  145. return
  146. }
  147. sql = `UPDATE company SET type=1,last_updated_time=NOW() WHERE company_id=? `
  148. _, err = o.Raw(sql, companyId).Exec()
  149. if err != nil {
  150. return
  151. }
  152. sql = `UPDATE company_approval SET approve_status='已审批',approve_time=NOW(),modify_time=NOW() WHERE company_approval_id=? AND company_id=? AND product_id=? `
  153. _, err = o.Raw(sql, companyApprovalId, companyId, productId).Exec()
  154. if err != nil {
  155. return
  156. }
  157. items := make([]*company_report_permission.CompanyReportPermission, 0)
  158. sql = `SELECT * FROM company_report_permission WHERE company_id=? AND product_id=? `
  159. _, err = o.Raw(sql, companyId, productId).QueryRows(&items)
  160. for _, pv := range items {
  161. cpLog := new(company_permission_log.CompanyPermissionLog)
  162. cpLog.CompanyId = companyId
  163. cpLog.ChartPermissionId = pv.ChartPermissionId
  164. cpLog.CreateTime = time.Now()
  165. cpLog.SysUserId = sellerId
  166. cpLog.SysUserName = sellerName
  167. cpLog.StartDate = pv.StartDate
  168. cpLog.EndDate = pv.EndDate
  169. cpLog.ProductId = productId
  170. cpLog.ProductName = pv.ProductName
  171. go company_permission_log.AddCompanyPermissionLog(cpLog)
  172. }
  173. sql = `DELETE FROM company_report_permission WHERE company_id=? AND product_id=?`
  174. _, err = o.Raw(sql, companyId, productId).Exec()
  175. if err != nil {
  176. return
  177. }
  178. contractPermission := make([]*company_report_permission.CompanyReportPermission, 0)
  179. sql = `SELECT * FROM company_contract_permission WHERE company_contract_id=? AND company_id=? `
  180. _, err = o.Raw(sql, companyContractId, companyId).QueryRows(&contractPermission)
  181. if err != nil {
  182. return
  183. }
  184. for _, pv := range contractPermission {
  185. sql = `INSERT INTO company_report_permission(company_id, report_permission_id,created_time, last_updated_time,
  186. chart_permission_id, start_date,end_date,product_id,product_name, modify_time,company_contract_id,status)
  187. VALUES(?,?,NOW(),NOW(),?,?,?,?,?,NOW(),?,?) `
  188. _, err = o.Raw(sql, companyId, pv.ChartPermissionId, pv.ChartPermissionId, pv.StartDate, pv.EndDate, productId, productName, companyContractId, "正式").Exec()
  189. if err != nil {
  190. return
  191. }
  192. }
  193. sql = `UPDATE company_contract SET status=1 WHERE company_contract_id=? AND company_id=? AND product_id=? `
  194. _, err = o.Raw(sql, companyContractId, companyId, productId).Exec()
  195. if err != nil {
  196. return
  197. }
  198. return
  199. }
  200. //冻结转试用
  201. func FreezeToTryOut(companyId, productId, sellerId, companyApprovalId, applyUserId int, sellerName, productName string) (err error) {
  202. o := orm.NewOrm()
  203. o.Begin()
  204. defer func() {
  205. if err != nil {
  206. o.Rollback()
  207. } else {
  208. o.Commit()
  209. }
  210. }()
  211. startDate := time.Now().Format(utils.FormatDate)
  212. endDate := time.Now().AddDate(0, 2, 0).Format(utils.FormatDate)
  213. sellerItem, err := admin.GetAdminById(applyUserId)
  214. if err != nil {
  215. return
  216. }
  217. //更新用户产品状态
  218. sql := `UPDATE company_product SET status='试用',approve_status='已审批',freeze_start_date=null,freeze_end_date=null,freeze_time=null,
  219. start_date=?,end_date=?,seller_id=?,seller_name=?,group_id=?,department_id=?,modify_time=NOW() WHERE company_id=? AND product_id=? `
  220. _, err = o.Raw(sql, startDate, endDate, sellerItem.AdminId, sellerItem.RealName, sellerItem.GroupId, sellerItem.DepartmentId, companyId, productId).Exec()
  221. if err != nil {
  222. return
  223. }
  224. //更新用户状态
  225. sql = `UPDATE company SET type=2,last_updated_time=NOW() WHERE company_id=? `
  226. _, err = o.Raw(sql, companyId).Exec()
  227. if err != nil {
  228. return
  229. }
  230. //更新审批单
  231. sql = `UPDATE company_approval SET approve_status='已审批',approve_time=NOW(),modify_time=NOW() WHERE company_approval_id=? AND company_id=? AND product_id=? `
  232. _, err = o.Raw(sql, companyApprovalId, companyId, productId).Exec()
  233. if err != nil {
  234. return
  235. }
  236. //查询该用户所有产品权限,并把当前数据做日志(允许添加不修改的数据)
  237. items := make([]*company_report_permission.CompanyReportPermission, 0)
  238. sql = `SELECT * FROM company_report_permission WHERE company_id=? AND product_id=? `
  239. _, err = o.Raw(sql, companyId, productId).QueryRows(&items)
  240. for _, pv := range items {
  241. cpLog := new(company_permission_log.CompanyPermissionLog)
  242. cpLog.CompanyId = companyId
  243. cpLog.ChartPermissionId = pv.ChartPermissionId
  244. cpLog.CreateTime = time.Now()
  245. cpLog.SysUserId = sellerId
  246. cpLog.SysUserName = sellerName
  247. cpLog.StartDate = pv.StartDate
  248. cpLog.EndDate = pv.EndDate
  249. cpLog.ProductId = productId
  250. cpLog.ProductName = pv.ProductName
  251. go company_permission_log.AddCompanyPermissionLog(cpLog)
  252. }
  253. //更新产品(2021年03月02日14:58:50注释,调整为从申请权限表中获取数据并修改)
  254. //sql = `UPDATE company_report_permission SET start_date=?,end_date=?,modify_time=NOW() WHERE company_id=? AND product_id=? `
  255. //_, err = o.Raw(sql, startDate, endDate, companyId, productId).Exec()
  256. //if err != nil {
  257. // return
  258. //}
  259. //查询原先是否已经存在权限,如果有权限了,那么需要先删除原有的权限
  260. count, _ := company_report_permission.GetCompanyReportPermissionCount(companyId, productId)
  261. if count > 0 {
  262. sql := ` DELETE FROM company_report_permission WHERE company_id=? AND product_id=? `
  263. _, err = o.Raw(sql, companyId, productId).Exec()
  264. if err != nil {
  265. return
  266. }
  267. }
  268. //获取需要试用的权限
  269. delayPermissionItems, err := company_delay_permission.GetDelayPermissionItems(companyId, companyApprovalId)
  270. if err != nil {
  271. return err
  272. }
  273. status := `试用`
  274. for _, v := range delayPermissionItems {
  275. sql = `INSERT INTO company_report_permission(company_id, report_permission_id,created_time, last_updated_time,
  276. chart_permission_id, start_date,end_date,product_id,product_name, modify_time,status)
  277. VALUES(?,?,NOW(),NOW(),?,?,?,?,?,NOW(),?) `
  278. _, err = o.Raw(sql, companyId, v.ChartPermissionId, v.ChartPermissionId, v.StartDate, v.EndDate, productId, productName, status).Exec()
  279. if err != nil {
  280. return err
  281. }
  282. }
  283. return
  284. }
  285. //试用延期
  286. func TryOutDelay(companyId, productId, sellerId, companyApprovalId int, sellerName, endDate, productName string) (err error) {
  287. o := orm.NewOrm()
  288. o.Begin()
  289. defer func() {
  290. if err != nil {
  291. o.Rollback()
  292. } else {
  293. o.Commit()
  294. }
  295. }()
  296. endDateTime, err := time.Parse(utils.FormatDate, endDate)
  297. if err != nil {
  298. return
  299. }
  300. newEndDate := endDateTime.AddDate(0, 2, 0).Format(utils.FormatDate)
  301. //更新用户产品状态
  302. sql := `UPDATE company_product SET approve_status='已审批',end_date=?,modify_time=NOW() WHERE company_id=? AND product_id=? `
  303. _, err = o.Raw(sql, newEndDate, companyId, productId).Exec()
  304. if err != nil {
  305. return
  306. }
  307. //更新审批单
  308. sql = `UPDATE company_approval SET approve_status='已审批',approve_time=NOW(),modify_time=NOW() WHERE company_approval_id=? AND company_id=? AND product_id=? `
  309. _, err = o.Raw(sql, companyApprovalId, companyId, productId).Exec()
  310. if err != nil {
  311. return
  312. }
  313. //查询该用户所有产品权限,并把当前数据做日志(允许添加不修改的数据)
  314. items := make([]*company_report_permission.CompanyReportPermission, 0)
  315. sql = `SELECT * FROM company_report_permission WHERE company_id=? AND product_id=? `
  316. _, err = o.Raw(sql, companyId, productId).QueryRows(&items)
  317. for _, pv := range items {
  318. cpLog := new(company_permission_log.CompanyPermissionLog)
  319. cpLog.CompanyId = companyId
  320. cpLog.ChartPermissionId = pv.ChartPermissionId
  321. cpLog.CreateTime = time.Now()
  322. cpLog.SysUserId = sellerId
  323. cpLog.SysUserName = sellerName
  324. cpLog.StartDate = pv.StartDate
  325. cpLog.EndDate = pv.EndDate
  326. cpLog.ProductId = productId
  327. cpLog.ProductName = pv.ProductName
  328. go company_permission_log.AddCompanyPermissionLog(cpLog)
  329. }
  330. //获取需要延期的权限
  331. delayPermissionItems, err := company_delay_permission.GetDelayPermissionItems(companyId, companyApprovalId)
  332. if err != nil {
  333. return err
  334. }
  335. status := `试用`
  336. for _, v := range delayPermissionItems {
  337. isExist, err := company_report_permission.GetCompanyPermissionCheck(companyId, v.ChartPermissionId)
  338. if err != nil {
  339. return err
  340. }
  341. if isExist > 0 {
  342. sql = `UPDATE company_report_permission SET end_date=?,status=?,modify_time=NOW() WHERE company_id=? AND product_id=? AND chart_permission_id=?`
  343. _, err = o.Raw(sql, newEndDate, status, companyId, productId, v.ChartPermissionId).Exec()
  344. if err != nil {
  345. return err
  346. }
  347. } else {
  348. sql = `INSERT INTO company_report_permission(company_id, report_permission_id,created_time, last_updated_time,
  349. chart_permission_id, start_date,end_date,product_id,product_name, modify_time,status)
  350. VALUES(?,?,NOW(),NOW(),?,?,?,?,?,NOW(),?) `
  351. _, err = o.Raw(sql, companyId, v.ChartPermissionId, v.ChartPermissionId, v.StartDate, newEndDate, productId, productName, status).Exec()
  352. if err != nil {
  353. return err
  354. }
  355. }
  356. }
  357. return
  358. }
  359. //原销售申请领取
  360. func ApplyReceive(companyId, productId, sysUserId, companyApprovalId, applyUserId int, sysUserName, productName string) (err error) {
  361. o := orm.NewOrm()
  362. o.Begin()
  363. defer func() {
  364. if err != nil {
  365. o.Rollback()
  366. } else {
  367. o.Commit()
  368. }
  369. }()
  370. sellerItem, err := admin.GetAdminById(applyUserId)
  371. if err != nil {
  372. return
  373. }
  374. startDate := time.Now().Format(utils.FormatDate)
  375. endDate := time.Now().AddDate(0, 2, 0).Format(utils.FormatDate)
  376. //更新用户产品状态
  377. sql := `UPDATE company_product SET status='试用',approve_status='已审批', start_date=?,end_date=?,seller_id=?,seller_name=?,group_id=?,department_id=?,modify_time=NOW() WHERE company_id=? AND product_id=? `
  378. _, err = o.Raw(sql, startDate, endDate, sellerItem.AdminId, sellerItem.RealName, sellerItem.GroupId, sellerItem.DepartmentId, companyId, productId).Exec()
  379. if err != nil {
  380. return
  381. }
  382. //更新用户状态
  383. sql = `UPDATE company SET type=2,last_updated_time=NOW() WHERE company_id=? `
  384. _, err = o.Raw(sql, companyId).Exec()
  385. if err != nil {
  386. return
  387. }
  388. //更新审批单
  389. sql = `UPDATE company_approval SET approve_status='已审批',approve_time=NOW(),modify_time=NOW() WHERE company_approval_id=? AND company_id=? AND product_id=? `
  390. _, err = o.Raw(sql, companyApprovalId, companyId, productId).Exec()
  391. if err != nil {
  392. return
  393. }
  394. //查询该用户所有产品权限,并把当前数据做日志(允许添加不修改的数据)
  395. items := make([]*company_report_permission.CompanyReportPermission, 0)
  396. sql = `SELECT * FROM company_report_permission WHERE company_id=? AND product_id=? `
  397. _, err = o.Raw(sql, companyId, productId).QueryRows(&items)
  398. for _, pv := range items {
  399. cpLog := new(company_permission_log.CompanyPermissionLog)
  400. cpLog.CompanyId = companyId
  401. cpLog.ChartPermissionId = pv.ChartPermissionId
  402. cpLog.CreateTime = time.Now()
  403. cpLog.SysUserId = sysUserId
  404. cpLog.SysUserName = sysUserName
  405. cpLog.StartDate = pv.StartDate
  406. cpLog.EndDate = pv.EndDate
  407. cpLog.ProductId = productId
  408. cpLog.ProductName = pv.ProductName
  409. go company_permission_log.AddCompanyPermissionLog(cpLog)
  410. }
  411. //更新产品(2021年03月02日14:58:50注释,调整为从申请权限表中获取数据并修改)
  412. //sql = `UPDATE company_report_permission SET start_date=?,end_date=?,modify_time=NOW() WHERE company_id=? AND product_id=? `
  413. //_, err = o.Raw(sql, startDate, endDate, companyId, productId).Exec()
  414. //if err != nil {
  415. // return
  416. //}
  417. //查询原先是否已经存在权限,如果有权限了,那么需要先删除原有的权限
  418. count, _ := company_report_permission.GetCompanyReportPermissionCount(companyId, productId)
  419. if count > 0 {
  420. sql := ` DELETE FROM company_report_permission WHERE company_id=? AND product_id=? `
  421. _, err = o.Raw(sql, companyId, productId).Exec()
  422. if err != nil {
  423. return
  424. }
  425. }
  426. //获取需要试用的权限
  427. delayPermissionItems, err := company_delay_permission.GetDelayPermissionItems(companyId, companyApprovalId)
  428. if err != nil {
  429. return err
  430. }
  431. status := `试用`
  432. for _, v := range delayPermissionItems {
  433. sql = `INSERT INTO company_report_permission(company_id, report_permission_id,created_time, last_updated_time,
  434. chart_permission_id, start_date,end_date,product_id,product_name, modify_time,status)
  435. VALUES(?,?,NOW(),NOW(),?,?,?,?,?,NOW(),?) `
  436. _, err = o.Raw(sql, companyId, v.ChartPermissionId, v.ChartPermissionId, v.StartDate, v.EndDate, productId, productName, status).Exec()
  437. if err != nil {
  438. return err
  439. }
  440. }
  441. return
  442. }
  443. //申请服务更新
  444. func ApplyServiceUpdate(companyId, productId, sellerId, companyApprovalId, companyContractId int, startDate, endDate, sellerName, productName string) (err error) {
  445. o := orm.NewOrm()
  446. o.Begin()
  447. defer func() {
  448. if err != nil {
  449. o.Rollback()
  450. } else {
  451. o.Commit()
  452. }
  453. }()
  454. sql := `UPDATE company_product SET status='正式',approve_status='已审批',start_date=?,end_date=?,modify_time=NOW() WHERE company_id=? AND product_id=? `
  455. _, err = o.Raw(sql, startDate, endDate, companyId, productId).Exec()
  456. if err != nil {
  457. return
  458. }
  459. sql = `UPDATE company_approval SET approve_status='已审批',approve_time=NOW(),modify_time=NOW() WHERE company_approval_id=? AND company_id=? AND product_id=? `
  460. _, err = o.Raw(sql, companyApprovalId, companyId, productId).Exec()
  461. if err != nil {
  462. return
  463. }
  464. items := make([]*company_report_permission.CompanyReportPermission, 0)
  465. sql = `SELECT * FROM company_report_permission WHERE company_id=? AND product_id=? `
  466. _, err = o.Raw(sql, companyId, productId).QueryRows(&items)
  467. if err != nil {
  468. return
  469. }
  470. for _, pv := range items {
  471. cpLog := new(company_permission_log.CompanyPermissionLog)
  472. cpLog.CompanyId = companyId
  473. cpLog.ChartPermissionId = pv.ChartPermissionId
  474. cpLog.CreateTime = time.Now()
  475. cpLog.SysUserId = sellerId
  476. cpLog.SysUserName = sellerName
  477. cpLog.StartDate = pv.StartDate
  478. cpLog.EndDate = pv.EndDate
  479. cpLog.ProductId = productId
  480. cpLog.ProductName = pv.ProductName
  481. go company_permission_log.AddCompanyPermissionLog(cpLog)
  482. }
  483. sql = `DELETE FROM company_report_permission WHERE company_id=? AND product_id=? `
  484. _, err = o.Raw(sql, companyId, productId).Exec()
  485. if err != nil {
  486. return
  487. }
  488. contractPermission := make([]*company_report_permission.CompanyReportPermission, 0)
  489. sql = `SELECT * FROM company_contract_permission WHERE company_contract_id=? AND company_id=? `
  490. _, err = o.Raw(sql, companyContractId, companyId).QueryRows(&contractPermission)
  491. if err != nil {
  492. return
  493. }
  494. for _, pv := range contractPermission {
  495. sql = `INSERT INTO company_report_permission(company_id, report_permission_id,created_time, last_updated_time,
  496. chart_permission_id, start_date,end_date,product_id,product_name, modify_time,company_contract_id,status)
  497. VALUES(?,?,NOW(),NOW(),?,?,?,?,?,NOW(),?,?) `
  498. _, err = o.Raw(sql, companyId, pv.ChartPermissionId, pv.ChartPermissionId, pv.StartDate, pv.EndDate, productId, productName, companyContractId, "正式").Exec()
  499. if err != nil {
  500. return
  501. }
  502. }
  503. sql = `UPDATE company_contract SET status=1 WHERE company_contract_id=? AND company_id=? AND product_id=? `
  504. _, err = o.Raw(sql, companyContractId, companyId, productId).Exec()
  505. if err != nil {
  506. return
  507. }
  508. return
  509. }
  510. //审批拒绝
  511. func ApproveRefuse(companyId, productId int, approveStatus, approveRemark string) (err error) {
  512. o := orm.NewOrm()
  513. o.Begin()
  514. defer func() {
  515. if err != nil {
  516. o.Rollback()
  517. } else {
  518. o.Commit()
  519. }
  520. }()
  521. sql := `UPDATE company_product
  522. SET
  523. approve_status = '驳回',
  524. modify_time=NOW()
  525. WHERE company_id = ? AND product_id=? `
  526. _, err = o.Raw(sql, companyId, productId).Exec()
  527. if err != nil {
  528. return
  529. }
  530. sql = ` UPDATE company_approval
  531. SET
  532. approve_status = '驳回',
  533. approve_remark=?,
  534. approve_time=NOW(),
  535. modify_time=NOW()
  536. WHERE company_id = ? AND product_id=? AND approve_status='待审批' `
  537. _, err = o.Raw(sql, approveRemark, companyId, productId).Exec()
  538. return
  539. }
  540. func GetCompanyApprovalDetailById(companyId, productId int) (item *CompanyApproval, err error) {
  541. sql := `SELECT * FROM company_approval WHERE company_id=? AND product_id=? AND approve_status IN('驳回','已撤回') ORDER BY modify_time DESC LIMIT 1 `
  542. o := orm.NewOrm()
  543. err = o.Raw(sql, companyId, productId).QueryRow(&item)
  544. return
  545. }
  546. type CompanyApplyDeleteReq struct {
  547. CompanyId int `description:"客户id"`
  548. CompanyApprovalId int `description:"审批记录ID"`
  549. }
  550. //申请服务更新
  551. func ApplyDelete(companyId, companyApprovalId, productId int) (err error) {
  552. o := orm.NewOrm()
  553. o.Begin()
  554. defer func() {
  555. if err != nil {
  556. o.Rollback()
  557. } else {
  558. o.Commit()
  559. }
  560. }()
  561. sql := `DELETE FROM company_approval WHERE company_approval_id=? `
  562. _, err = o.Raw(sql, companyApprovalId).Exec()
  563. if err != nil {
  564. return
  565. }
  566. sql = `UPDATE company_product SET approve_status='' WHERE company_id=? AND product_id=? `
  567. _, err = o.Raw(sql, companyId, productId).Exec()
  568. if err != nil {
  569. return
  570. }
  571. return
  572. }
  573. //修改申请信息
  574. func ModifyCompanyApproval(companyId, productId, companyApprovalId int, approveContent, applyReasons string) (err error) {
  575. o := orm.NewOrm()
  576. o.Begin()
  577. defer func() {
  578. if err != nil {
  579. utils.FileLog.Info("试用延期申请:Err %s", err.Error())
  580. o.Rollback()
  581. } else {
  582. o.Commit()
  583. }
  584. }()
  585. sql := `UPDATE company_approval SET approve_status = '待审批', approve_content=?,apply_reasons=?,modify_time=NOW() WHERE company_approval_id = ? `
  586. _, err = o.Raw(sql, approveContent, applyReasons, companyApprovalId).Exec()
  587. if err != nil {
  588. return
  589. }
  590. sql = `UPDATE company_product SET approve_status='待审批' WHERE company_id=? AND product_id=? `
  591. _, err = o.Raw(sql, companyId, productId).Exec()
  592. utils.FileLog.Info("试用延期申请:Err %s,%s,%d", sql, companyId, productId)
  593. return
  594. }
  595. ////修改申请信息
  596. //func ModifyCompanyTurnPositive(item *CompanyApplyTurnPositiveReq, productId, companyContractId int) (err error) {
  597. // o := orm.NewOrm()
  598. // o.Begin()
  599. // defer func() {
  600. // if err != nil {
  601. // o.Rollback()
  602. // } else {
  603. // o.Commit()
  604. // }
  605. // }()
  606. // sql := `UPDATE company_contract
  607. // SET
  608. // start_date = ?,
  609. // end_date = ?,
  610. // money = ?,
  611. // pay_method = ?,
  612. // pay_channel = ?,
  613. // img_url = ?,
  614. // modify_time = NOW()
  615. // WHERE company_contract_id = ? `
  616. // _, err = o.Raw(sql, item.StartDate, item.EndDate, item.Money, item.PayMethod, item.PayChannel, item.ImgUrl, companyContractId).Exec()
  617. // if err != nil {
  618. // return
  619. // }
  620. //
  621. // sql = `DELETE FROM company_contract_permission WHERE company_contract_id = ? `
  622. // _, err = o.Raw(sql, companyContractId).Exec()
  623. // if err != nil {
  624. // return
  625. // }
  626. //
  627. // permissionArr := strings.Split(item.PermissionIds, ",")
  628. // for _, v := range permissionArr {
  629. // contractPermission := new(CompanyContractPermission)
  630. // contractPermission.CompanyId = item.CompanyId
  631. // contractPermission.CompanyContractId = companyContractId
  632. // contractPermission.ChartPermissionId = v
  633. // contractPermission.StartDate = item.StartDate
  634. // contractPermission.EndDate = item.EndDate
  635. // contractPermission.ModifyTime = time.Now()
  636. // contractPermission.CreateTime = time.Now()
  637. // err = AddCompanyContractPermission(contractPermission)
  638. // if err != nil {
  639. // return
  640. // }
  641. // //新增日志
  642. // {
  643. // itemLog := new(CompanyContractPermissionLog)
  644. // itemLog.CompanyId = item.CompanyId
  645. // itemLog.CompanyContractId = companyContractId
  646. // itemLog.ChartPermissionId = v
  647. // itemLog.StartDate = item.StartDate
  648. // itemLog.EndDate = item.EndDate
  649. // itemLog.ModifyTime = time.Now()
  650. // itemLog.CreateTime = time.Now()
  651. // itemLog.LogCreateTime = time.Now()
  652. // go AddCompanyContractPermissionLog(itemLog)
  653. // }
  654. // }
  655. //
  656. // sql = `UPDATE company_approval SET approve_status = '待审批',modify_time=NOW() WHERE company_approval_id = ? `
  657. // _, err = o.Raw(sql, item.CompanyApprovalId).Exec()
  658. // if err != nil {
  659. // return
  660. // }
  661. // sql = `UPDATE company_product SET approve_status='待审批' WHERE company_id=? AND product_id=? `
  662. // _, err = o.Raw(sql, item.CompanyId, productId).Exec()
  663. // return
  664. //}
  665. //
  666. ////修改申请信息
  667. //func ModifyCompanyApplyServiceUpdate(item *CompanyApplyServiceUpdateReq, productId, companyContractId int) (err error) {
  668. // o := orm.NewOrm()
  669. // o.Begin()
  670. // defer func() {
  671. // if err != nil {
  672. // o.Rollback()
  673. // } else {
  674. // o.Commit()
  675. // }
  676. // }()
  677. // sql := `UPDATE company_contract
  678. // SET
  679. // start_date = ?,
  680. // end_date = ?,
  681. // money = ?,
  682. // pay_method = ?,
  683. // pay_channel = ?,
  684. // img_url = ?,
  685. // modify_time = NOW()
  686. // WHERE company_contract_id = ? `
  687. // _, err = o.Raw(sql, item.StartDate, item.EndDate, item.Money, item.PayMethod, item.PayChannel, item.ImgUrl, companyContractId).Exec()
  688. // if err != nil {
  689. // return
  690. // }
  691. //
  692. // sql = `DELETE FROM company_contract_permission WHERE company_contract_id = ? `
  693. // _, err = o.Raw(sql, companyContractId).Exec()
  694. // if err != nil {
  695. // return
  696. // }
  697. //
  698. // permissionArr := strings.Split(item.PermissionIds, ",")
  699. // for _, v := range permissionArr {
  700. // contractPermission := new(CompanyContractPermission)
  701. // contractPermission.CompanyId = item.CompanyId
  702. // contractPermission.CompanyContractId = companyContractId
  703. // contractPermission.ChartPermissionId = v
  704. // contractPermission.StartDate = item.StartDate
  705. // contractPermission.EndDate = item.EndDate
  706. // contractPermission.ModifyTime = time.Now()
  707. // contractPermission.CreateTime = time.Now()
  708. // err = AddCompanyContractPermission(contractPermission)
  709. // if err != nil {
  710. // return
  711. // }
  712. // //新增日志
  713. // {
  714. // itemLog := new(CompanyContractPermissionLog)
  715. // itemLog.CompanyId = item.CompanyId
  716. // itemLog.CompanyContractId = companyContractId
  717. // itemLog.ChartPermissionId = v
  718. // itemLog.StartDate = item.StartDate
  719. // itemLog.EndDate = item.EndDate
  720. // itemLog.ModifyTime = time.Now()
  721. // itemLog.CreateTime = time.Now()
  722. // itemLog.LogCreateTime = time.Now()
  723. // go AddCompanyContractPermissionLog(itemLog)
  724. // }
  725. // }
  726. //
  727. // sql = `UPDATE company_approval SET approve_status = '待审批',modify_time=NOW() WHERE company_approval_id = ? `
  728. // _, err = o.Raw(sql, item.CompanyApprovalId).Exec()
  729. // if err != nil {
  730. // return
  731. // }
  732. // sql = `UPDATE company_product SET approve_status='待审批' WHERE company_id=? AND product_id=? `
  733. // _, err = o.Raw(sql, item.CompanyId, productId).Exec()
  734. // return
  735. //}
  736. func GetCompanyApprovalCount(companyId, productId int) (count int, err error) {
  737. sql := `SELECT COUNT(1) AS count FROM company_approval WHERE company_id=? AND product_id=? AND approve_content='试用延期' `
  738. o := orm.NewOrm()
  739. err = o.Raw(sql, companyId, productId).QueryRow(&count)
  740. return
  741. }