company_permission.go 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625
  1. package company
  2. import (
  3. "fmt"
  4. "github.com/beego/beego/v2/client/orm"
  5. "hongze/hz_crm_api/utils"
  6. "strings"
  7. "time"
  8. )
  9. type ChartPermission struct {
  10. ChartPermissionId int `description:"权限id"`
  11. ChartPermissionName string `description:"权限名称(旧)"`
  12. PermissionName string `description:"权限名称"`
  13. Sort int `description:"排序"`
  14. Enabled int `description:"是否可用"`
  15. CreatedTime time.Time `description:"创建时间"`
  16. LastUpdatedTime time.Time `description:"最后更新时间"`
  17. TeleconferenceSort int `description:"电话会排序"`
  18. Remark string `description:"备注"`
  19. ClassifyName string `description:"分类"`
  20. PermissionType int `description:"1主观,2客观"`
  21. Checked bool `description:"选中状态"`
  22. }
  23. type PermissionSetItem struct {
  24. ChartPermissionId int `description:"权限id"`
  25. PermissionName string `description:"权限名称"`
  26. PermissionType int `description:"1主观,2客观"`
  27. Checked bool `description:"选中状态"`
  28. Child []*PermissionSetItem `description:"具体的主客观-方便前端的排版用的"`
  29. }
  30. type PermissionSetItemType struct {
  31. PermissionName string `description:"权限名称"`
  32. Checked bool `description:"选中状态"`
  33. CheckedMinate bool `description:"不确定状态"`
  34. NoClicking bool `description:"是否禁止点击"`
  35. Items []*PermissionLookItem
  36. }
  37. type PermissionSetList struct {
  38. ClassifyName string `description:"分类"`
  39. Items []*PermissionSetItem
  40. CheckList []int
  41. }
  42. type PermissionSetListType struct {
  43. ClassifyName string `description:"分类"`
  44. Items []*PermissionSetItemType
  45. CheckList []int
  46. }
  47. type PermissionSetResp struct {
  48. List []*PermissionSetList
  49. //ListUpgrade []*PermissionSetList `description:"升级权限列表"`
  50. ListType []*PermissionSetListType `description:"主观客观列表"`
  51. }
  52. type ChartPermissionFirst struct {
  53. ClassifyName string `description:"分类"`
  54. }
  55. func GetPermissionSetItems(productId int, classifyName string) (items []*PermissionSetItem, err error) {
  56. o := orm.NewOrm()
  57. sql := ` SELECT * FROM chart_permission WHERE enabled=1 AND product_id=? AND classify_name=? AND permission_type=0 ORDER BY sort ASC `
  58. _, err = o.Raw(sql, productId, classifyName).QueryRows(&items)
  59. return
  60. }
  61. func GetPermissionSetItemsByType(productId int, classifyName string) (items []*PermissionSetItem, err error) {
  62. o := orm.NewOrm()
  63. sql := ` SELECT * FROM chart_permission WHERE enabled=1 AND product_id=? AND classify_name=? AND permission_type!=2 ORDER BY sort ASC `
  64. _, err = o.Raw(sql, productId, classifyName).QueryRows(&items)
  65. return
  66. }
  67. func GetPermissionSetSandoItems(productId int, classifyName string) (items []*PermissionLookItem, err error) {
  68. o := orm.NewOrm()
  69. sql := ` SELECT * FROM chart_permission WHERE enabled=1 AND product_id=? AND classify_name=? ORDER BY sort ASC `
  70. _, err = o.Raw(sql, productId, classifyName).QueryRows(&items)
  71. return
  72. }
  73. func GetPermissionSetItemsType(productId int, classifyName string) (items []*PermissionLookItem, err error) {
  74. o := orm.NewOrm()
  75. sql := ` SELECT * FROM chart_permission WHERE enabled=1 AND product_id=? AND classify_name=? AND permission_type!=0 ORDER BY sort ASC `
  76. _, err = o.Raw(sql, productId, classifyName).QueryRows(&items)
  77. return
  78. }
  79. type CompanyReportPermission struct {
  80. CompanyReportPermissionId int64 `orm:"column(company_report_permission_id);pk"`
  81. CompanyId int
  82. ReportPermissionId int
  83. CreatedTime time.Time
  84. LastUpdatedTime time.Time
  85. ChartPermissionId int
  86. StartDate string `description:"权限开始日期"`
  87. EndDate string `description:"权限结束日期"`
  88. ProductId int `description:"产品id"`
  89. ProductName string `description:"产品名称"`
  90. CompanyContractId int `description:"合同id"`
  91. Status string `description:"'正式','试用','关闭'"`
  92. ModifyTime time.Time `description:"修改时间"`
  93. IsUpgrade int `description:"是否升级,1是,0否"`
  94. ExpensiveYx int `description:"权益研选: 0-3w; 1-5w"`
  95. }
  96. // 新增客户权限
  97. func AddCompanyReportPermission(item *CompanyReportPermission) (err error) {
  98. o := orm.NewOrm()
  99. lastId, err := o.Insert(item)
  100. item.CompanyReportPermissionId = lastId
  101. return
  102. }
  103. func GetCompanyReportPermissionCount(companyId, productId int) (count int, err error) {
  104. o := orm.NewOrm()
  105. sql := `SELECT COUNT(1) AS count FROM company_report_permission WHERE company_id=? AND product_id=? `
  106. err = o.Raw(sql, companyId, productId).QueryRow(&count)
  107. return
  108. }
  109. func DeleteCompanyReportPermission(companyId, productId int) (err error) {
  110. o := orm.NewOrm()
  111. sql := ` DELETE FROM company_report_permission WHERE company_id=? AND product_id=? `
  112. _, err = o.Raw(sql, companyId, productId).Exec()
  113. return
  114. }
  115. type PermissionLookResp struct {
  116. List []*PermissionLookList
  117. ListRai []*PermissionLookList `description:"权益"`
  118. }
  119. type PermissionLookSandoResp struct {
  120. List []*PermissionLookList
  121. ListType []*PermissionSetListType `description:"主观客观列表"`
  122. }
  123. type PermissionLookList struct {
  124. ClassifyName string `description:"分类"`
  125. Items []*PermissionLookItem
  126. ItemsType []*PermissionSetItemType `description:"主观客观列表"`
  127. CheckList []int
  128. RaiMerge int `description:"权益-用于前端判断展示形式:1-全部合并 2-全部拆分"`
  129. }
  130. type PermissionLookItem struct {
  131. ChartPermissionId int `description:"权限id"`
  132. PermissionName string `description:"权限名称"`
  133. StartDate string `description:"权限开始日期"`
  134. EndDate string `description:"权限结束日期"`
  135. Status string `description:"'正式','试用','关闭'"`
  136. ExpireDay string `description:"到期天数"`
  137. ClassifyName string `description:"分类"`
  138. PermissionType int `description:"1主观,2客观"`
  139. PermissionTypeName string `description:"主观、客观"`
  140. Checked bool `description:"选中状态"`
  141. Remark string `description:"备注"`
  142. IsMerge bool `description:"是否合并行业, 给前端的标识, 暂时仅权益使用"`
  143. RaiBothHas bool `description:"权益-是否主客观都有"`
  144. IsUpgrade int `description:"是否升级,1是,0否"`
  145. Child []*PermissionLookItem `description:"子权限"`
  146. }
  147. func GetPermissionLookItems(productId int, classifyName string) (items []*PermissionLookItem, err error) {
  148. o := orm.NewOrm()
  149. sql := ` SELECT * FROM chart_permission WHERE enabled=1 AND product_id=? AND classify_name=? ORDER BY sort ASC `
  150. _, err = o.Raw(sql, productId, classifyName).QueryRows(&items)
  151. return
  152. }
  153. func GetCompanyPermissionCheck(companyId, permissionId int) (count int, err error) {
  154. o := orm.NewOrm()
  155. sql := `SELECT COUNT(1) AS count FROM company_report_permission AS a WHERE a.company_id=? AND a.chart_permission_id=? `
  156. err = o.Raw(sql, companyId, permissionId).QueryRow(&count)
  157. return
  158. }
  159. // GetCompanyPermission 根据客户id和品种id获取对应的数据
  160. func GetCompanyPermission(companyId, permissionId int) (item *CompanyReportPermission, err error) {
  161. o := orm.NewOrm()
  162. sql := `SELECT * FROM company_report_permission AS a WHERE a.company_id=? AND a.chart_permission_id=? `
  163. err = o.Raw(sql, companyId, permissionId).QueryRow(&item)
  164. return
  165. }
  166. func GetCompanyPermissionCheckItem(companyId, permissionId int) (item *PermissionLookItem, err error) {
  167. o := orm.NewOrm()
  168. sql := `SELECT * FROM company_report_permission AS a WHERE a.company_id=? AND a.chart_permission_id=? `
  169. err = o.Raw(sql, companyId, permissionId).QueryRow(&item)
  170. return
  171. }
  172. // 通过主观ID获取对应的客观ID
  173. func GetPermissionIdById(permissionIds string) (allpermissionId string, err error) {
  174. sql := ` SELECT
  175. GROUP_CONCAT( DISTINCT chart_permission_id SEPARATOR ',' ) AS permission
  176. FROM
  177. chart_permission
  178. WHERE
  179. product_permission_name IN (
  180. SELECT
  181. product_permission_name
  182. FROM
  183. chart_permission
  184. WHERE
  185. chart_permission_id IN ( ` + permissionIds + ` )) `
  186. o := orm.NewOrm()
  187. err = o.Raw(sql).QueryRow(&allpermissionId)
  188. return
  189. }
  190. // 通过主观ID获取对应的客观ID
  191. func GetCompanyPermissionIdById(companyId int) (allpermissionId string, err error) {
  192. sql := `SELECT
  193. GROUP_CONCAT( DISTINCT chart_permission_id SEPARATOR ',' ) AS permission
  194. FROM
  195. company_report_permission AS a
  196. WHERE
  197. a.company_id = ?
  198. AND product_id = 2`
  199. o := orm.NewOrm()
  200. err = o.Raw(sql, companyId).QueryRow(&allpermissionId)
  201. return
  202. }
  203. type ContractPermissionList struct {
  204. ClassifyName string `description:"分类"`
  205. Items []*PermissionLookItem
  206. CheckList []int
  207. CheckAll bool
  208. }
  209. func GetCompanyIdStr(permissionStr string) (company_id_str string, err error) {
  210. o := orm.NewOrm()
  211. sql := `SELECT GROUP_CONCAT(DISTINCT company_id SEPARATOR ',') AS company_id_str
  212. FROM company_report_permission AS a
  213. WHERE a.chart_permission_id IN( ` + permissionStr + `) `
  214. err = o.Raw(sql).QueryRow(&company_id_str)
  215. return
  216. }
  217. type PermissionVarietyResp struct {
  218. List []*PermissionVarietyList
  219. }
  220. type PermissionVarietyItem struct {
  221. ChartPermissionId int `description:"权限id"`
  222. ClassifyName string `orm:"column(permission_name)" description:"权限名称"`
  223. }
  224. type PermissionVarietyList struct {
  225. ChartPermissionId int `description:"父级id"`
  226. ClassifyName string `description:"分类"`
  227. Items []*PermissionVarietyItem
  228. }
  229. func GetPermissionVarietyItems(productId int, classifyName string) (items []*PermissionVarietyItem, err error) {
  230. o := orm.NewOrm()
  231. sql := ` SELECT * FROM chart_permission WHERE enabled=1 AND product_id=? AND classify_name=? GROUP BY permission_name ORDER BY sort ASC `
  232. _, err = o.Raw(sql, productId, classifyName).QueryRows(&items)
  233. return
  234. }
  235. func GetCompanyReportPermission(companyId, productId int) (items []*CompanyReportPermission, err error) {
  236. o := orm.NewOrm()
  237. sql := `SELECT * FROM company_report_permission WHERE company_id=? AND product_id=? `
  238. _, err = o.Raw(sql, companyId, productId).QueryRows(&items)
  239. return
  240. }
  241. func GetCompanyReportPermissionByStatus(companyId, productId int, status string) (items []*CompanyReportPermission, err error) {
  242. o := orm.NewOrm()
  243. sql := `SELECT * FROM company_report_permission WHERE company_id=? AND product_id=? AND status = ? `
  244. _, err = o.Raw(sql, companyId, productId, status).QueryRows(&items)
  245. return
  246. }
  247. type PermissionCompany struct {
  248. CompanyId int
  249. }
  250. //
  251. //func GetCompanyListCompanyIdByPermissionIdStr(permissionStr string, permissionCount int) (items []*PermissionCompany, err error) {
  252. // o := orm.NewOrm()
  253. // sql := `
  254. // SELECT company_id, COUNT(company_id) ks
  255. // FROM company_report_permission
  256. // WHERE report_permission_id IN (` + permissionStr + `)
  257. //
  258. // GROUP BY company_id
  259. // HAVING company_id IN
  260. //
  261. // (SELECT company_id
  262. // FROM company_report_permission
  263. // GROUP BY company_id
  264. // HAVING COUNT(company_id) = ?)
  265. //
  266. // AND COUNT(company_id) = ?
  267. //`
  268. // _, err = o.Raw(sql, permissionCount, permissionCount).QueryRows(&items)
  269. // return
  270. //}
  271. func GetCompanyListCompanyIdByPermissionIdStr(permissionStr string) (company_id string, err error) {
  272. o := orm.NewOrm()
  273. sql := `
  274. SELECT
  275. GROUP_CONCAT(DISTINCT company_id) AS company_id
  276. FROM company_report_permission
  277. WHERE report_permission_id IN (?)
  278. #GROUP BY company_id
  279. `
  280. err = o.Raw(sql, permissionStr).QueryRow(&company_id)
  281. return
  282. }
  283. func GetPermissionNameByPermissionIdStr(permissionStr string) (chart_permission_name string, err error) {
  284. o := orm.NewOrm()
  285. sql := `SELECT GROUP_CONCAT(DISTINCT chart_permission_name SEPARATOR ',') AS chart_permission_name FROM chart_permission WHERE chart_permission_id IN (` + permissionStr + `)`
  286. err = o.Raw(sql).QueryRow(&chart_permission_name)
  287. return
  288. }
  289. func GetPermissionIdsByPermissionNameStr(chartPermissionName string) (chart_permission_id string, err error) {
  290. o := orm.NewOrm()
  291. sql := `SELECT GROUP_CONCAT(DISTINCT chart_permission_id SEPARATOR ',') AS chart_permission_id FROM chart_permission WHERE chart_permission_name IN(` + chartPermissionName + `)`
  292. err = o.Raw(sql).QueryRow(&chart_permission_id)
  293. return
  294. }
  295. // 新增试用权限
  296. type PermissionAddTryOutReq struct {
  297. CompanyId int `description:"客户id"`
  298. ChartPermissionId string `description:"权限id,多个用英文逗号隔开"`
  299. }
  300. func FixPermissionStatus(companyId, productId int, startDate, endDate, status string) (err error) {
  301. o := orm.NewOrm()
  302. sql := `UPDATE company_report_permission SET start_date=?,end_date=?,status=?,modify_time=NOW() WHERE company_id=? AND product_id=? AND status IS NULL `
  303. _, err = o.Raw(sql, startDate, endDate, status, companyId, productId).Exec()
  304. return
  305. }
  306. func GetPermissionLookItemsExt(productId string, classifyName string) (items []*PermissionLookItem, err error) {
  307. o := orm.NewOrm()
  308. sql := ` SELECT * FROM chart_permission WHERE enabled=1 AND product_id IN(` + productId + `) AND classify_name=? ORDER BY sort ASC `
  309. _, err = o.Raw(sql, classifyName).QueryRows(&items)
  310. return
  311. }
  312. // 客户授权产品结构体(包含产品名称)
  313. type CompanyReportPermissionAndName struct {
  314. CompanyReportPermissionId int `description:"客户授权产品id"`
  315. CompanyId int
  316. ReportPermissionId int
  317. CreatedTime time.Time
  318. LastUpdatedTime time.Time
  319. ChartPermissionId int
  320. StartDate string `description:"权限开始日期"`
  321. EndDate string `description:"权限结束日期"`
  322. ProductId int `description:"产品id"`
  323. ProductName string `description:"产品名称"`
  324. CompanyContractId int `description:"合同id"`
  325. PermissionName string `description:"客户授权产品的名称"`
  326. ClassifyName string `description:"客户授权产品的分类名称"`
  327. Status string `description:"'正式','试用','关闭'"`
  328. ModifyTime time.Time `description:"修改时间"`
  329. }
  330. // 根据企业用户id字符串集合
  331. func GetCompanyReportPermissionListByCompanyIds(companyIds string) (items []*CompanyReportPermissionAndName, err error) {
  332. o := orm.NewOrm()
  333. sql := `SELECT a.*,b.permission_name,b.classify_name FROM company_report_permission a left join chart_permission b on a.chart_permission_id=b.chart_permission_id WHERE a.company_id in (` + companyIds + `)`
  334. _, err = o.Raw(sql).QueryRows(&items)
  335. return
  336. }
  337. // 根据企业用户id和产品id获取所有正式的权限
  338. func GetCompanyReportPermissionListByProductId(companyId, productId int) (items []*CompanyReportPermissionAndName, err error) {
  339. o := orm.NewOrm()
  340. sql := `SELECT a.*,b.permission_name,b.classify_name FROM company_report_permission a left join chart_permission b on a.chart_permission_id=b.chart_permission_id WHERE a.company_id = ? and a.product_id=? and a.status="正式"`
  341. _, err = o.Raw(sql, companyId, productId).QueryRows(&items)
  342. return
  343. }
  344. // GetChartPermissionListByIds 根据权限id集合获取所有的权限列表
  345. func GetChartPermissionListByIds(chartPermissionIds []int) (list []*ChartPermission, err error) {
  346. o := orm.NewOrm()
  347. //o.Using("rddp")
  348. //sNums:= make([],len(nums))
  349. idStrList := make([]string, len(chartPermissionIds))
  350. for key, id := range chartPermissionIds {
  351. idStrList[key] = fmt.Sprint(id)
  352. }
  353. idStr := strings.Join(idStrList, ",")
  354. sql := `SELECT * FROM chart_permission WHERE chart_permission_id in (` + idStr + `) `
  355. _, err = o.Raw(sql).QueryRows(&list)
  356. return
  357. }
  358. // 根据企业用户id和产品id获取所有正式的权限
  359. func GetCompanyProductReportPermissionList(companyId, productId int) (items []*CompanyReportPermissionAndName, err error) {
  360. o := orm.NewOrm()
  361. sql := `SELECT a.*,b.permission_name,b.classify_name FROM company_report_permission a left join chart_permission b on a.chart_permission_id=b.chart_permission_id WHERE a.company_id = ? and a.product_id=? `
  362. _, err = o.Raw(sql, companyId, productId).QueryRows(&items)
  363. return
  364. }
  365. // GetChartPermissionListById 根据权限id获取产品权限详情
  366. func GetChartPermissionListById(chartPermissionId int) (item *ChartPermission, err error) {
  367. o := orm.NewOrm()
  368. sql := `SELECT * FROM chart_permission WHERE chart_permission_id =? `
  369. err = o.Raw(sql, chartPermissionId).QueryRow(&item)
  370. return
  371. }
  372. func GetPermissionLookItemsSandO(permissionIds string) (items []*PermissionLookItem, err error) {
  373. o := orm.NewOrm()
  374. sql := ` SELECT * FROM chart_permission WHERE enabled=1 AND chart_permission_id IN (` + permissionIds + `) ORDER BY sort ASC `
  375. _, err = o.Raw(sql).QueryRows(&items)
  376. return
  377. }
  378. func GetPermissionLookItemsSandOByName(permissionName string) (items []*PermissionLookItem, err error) {
  379. o := orm.NewOrm()
  380. sql := ` SELECT * FROM chart_permission WHERE enabled=1 AND product_id = 2 AND remark IN (` + permissionName + `) ORDER BY sort ASC `
  381. _, err = o.Raw(sql).QueryRows(&items)
  382. return
  383. }
  384. func GetParentIdFromGroup(gid int) (items *int, err error) {
  385. o := orm.NewOrm()
  386. sql := `SELECT parent_id FROM sys_group WHERE group_id=? `
  387. err = o.Raw(sql, gid).QueryRow(&items)
  388. return
  389. }
  390. func GetGroupIdsByParentId(gid int) (items []*string, err error) {
  391. o := orm.NewOrm()
  392. sql := `SELECT group_id FROM sys_group WHERE parent_id=? `
  393. _, err = o.Raw(sql, gid).QueryRows(&items)
  394. return
  395. }
  396. func GetGroupNamesById(gid int) (items *string, err error) {
  397. o := orm.NewOrm()
  398. sql := `SELECT group_name FROM sys_group WHERE group_id=? `
  399. err = o.Raw(sql, gid).QueryRow(&items)
  400. return
  401. }
  402. // GetChartPermissionFirst 获取排序后的权限分类
  403. func GetChartPermissionFirst() (list []*ChartPermissionFirst, err error) {
  404. o := orm.NewOrm()
  405. sql := ` SELECT classify_name FROM chart_permission_first ORDER BY yb_index_sort ASC `
  406. _, err = o.Raw(sql).QueryRows(&list)
  407. return
  408. }
  409. // GetCompanyReportPermissionUpgrade 获取升级的权限类型
  410. func GetCompanyReportPermissionUpgrade(companyId, productId int) (items []*CompanyReportPermission, err error) {
  411. o := orm.NewOrm()
  412. sql := `SELECT
  413. re.*
  414. FROM
  415. company_report_permission as re
  416. INNER JOIN chart_permission as c ON c.chart_permission_id = re.chart_permission_id
  417. WHERE
  418. re.company_id = ?
  419. AND re.product_id = ?
  420. AND re.is_upgrade = 1
  421. AND c.permission_type = 1
  422. AND STATUS = '正式' `
  423. _, err = o.Raw(sql, companyId, productId).QueryRows(&items)
  424. return
  425. }
  426. // GetCompanyPermissionNameCheck 通过名称判断客户是否开了某一类型的权限
  427. func GetCompanyPermissionNameCheck(companyId, productId int, permissionName string) (count int, err error) {
  428. o := orm.NewOrm()
  429. sql := `SELECT
  430. COUNT( 1 ) AS count
  431. FROM
  432. company_report_permission AS a
  433. INNER JOIN chart_permission as c ON c.chart_permission_id = a.chart_permission_id
  434. WHERE
  435. a.company_id = ?
  436. AND a.STATUS = '正式'
  437. AND a.product_id = ?
  438. AND c.chart_permission_name = ? `
  439. err = o.Raw(sql, companyId, productId, permissionName).QueryRow(&count)
  440. return
  441. }
  442. // GetCompanyReportPermissionUpgradeByChartPermissionId 通过行业权限获取具备该行业升级权限的公司
  443. func GetCompanyReportPermissionUpgradeByChartPermissionId(chartPermissionId int) (items []*CompanyReportPermission, err error) {
  444. o := orm.NewOrm()
  445. sql := `SELECT
  446. company_id
  447. FROM
  448. company_report_permission AS p
  449. WHERE
  450. 1 = 1
  451. AND p.is_upgrade = 1
  452. AND p.chart_permission_id = ?
  453. AND p.STATUS = '正式'
  454. OR (
  455. p.STATUS = '永续'
  456. AND p.chart_permission_id = ?
  457. )`
  458. _, err = o.Raw(sql, chartPermissionId, chartPermissionId).QueryRows(&items)
  459. return
  460. }
  461. func GetPermissionNameByPermissionIds(permissionIds []int) (names []string, err error) {
  462. if len(permissionIds) == 0 {
  463. return
  464. }
  465. o := orm.NewOrm()
  466. sql := `SELECT
  467. DISTINCT chart_permission_name
  468. FROM
  469. chart_permission
  470. WHERE
  471. chart_permission_id IN (` + utils.GetOrmInReplace(len(permissionIds)) + `)`
  472. _, err = o.Raw(sql, permissionIds).QueryRows(&names)
  473. return
  474. }
  475. func GetPermissionIdsByPermissionNames(names []string) (ids []int, err error) {
  476. if len(names) == 0 {
  477. return
  478. }
  479. o := orm.NewOrm()
  480. sql := `SELECT
  481. DISTINCT chart_permission_id
  482. FROM
  483. chart_permission
  484. WHERE
  485. chart_permission_name IN (` + utils.GetOrmInReplace(len(names)) + `)`
  486. _, err = o.Raw(sql, names).QueryRows(&ids)
  487. return
  488. }
  489. // GetCompanyIdsStrByReportPermissionIds 根据有效阅读权限IDs获取客户IDs
  490. func GetCompanyIdsStrByReportPermissionIds(permissionIds []int) (companyIds []int, err error) {
  491. if len(permissionIds) == 0 {
  492. return
  493. }
  494. o := orm.NewOrm()
  495. sql := `SELECT
  496. DISTINCT company_id
  497. FROM
  498. company_report_permission
  499. WHERE
  500. report_permission_id IN (` + utils.GetOrmInReplace(len(permissionIds)) + `) AND (DATE(NOW()) BETWEEN start_date AND end_date) AND status IN ('试用', '正式', '永续')`
  501. _, err = o.Raw(sql, permissionIds).QueryRows(&companyIds)
  502. return
  503. }
  504. // GetCompanyIdsStrByContractPermissionIds 根据合同权限IDs获取客户IDs
  505. func GetCompanyIdsStrByContractPermissionIds(permissionIds []int) (companyIds []int, err error) {
  506. if len(permissionIds) == 0 {
  507. return
  508. }
  509. o := orm.NewOrm()
  510. sql := `SELECT
  511. DISTINCT company_id
  512. FROM
  513. company_contract_permission
  514. WHERE
  515. chart_permission_id IN (` + utils.GetOrmInReplace(len(permissionIds)) + `) AND (DATE(NOW()) BETWEEN start_date AND end_date)`
  516. _, err = o.Raw(sql, permissionIds).QueryRows(&companyIds)
  517. return
  518. }
  519. // CompanyListPermissionIds 客户列表权限IDs
  520. type CompanyListPermissionIds struct {
  521. CompanyId int `description:"客户ID"`
  522. ChartPermissionIds string `description:"权限IDs"`
  523. }
  524. // GetContractPermissionIdsByCompanyIds 根据客户ID获取合同权限IDs
  525. func GetContractPermissionIdsByCompanyIds(companyIds []int) (items []*CompanyListPermissionIds, err error) {
  526. if len(companyIds) == 0 {
  527. return
  528. }
  529. o := orm.NewOrm()
  530. sql := `SELECT
  531. company_id,
  532. GROUP_CONCAT(
  533. DISTINCT chart_permission_id
  534. ) AS chart_permission_ids
  535. FROM
  536. company_contract_permission
  537. WHERE
  538. (DATE(NOW()) BETWEEN start_date AND end_date) AND company_id IN (` + utils.GetOrmInReplace(len(companyIds)) + `)`
  539. sql += `GROUP BY company_id`
  540. _, err = o.Raw(sql, companyIds).QueryRows(&items)
  541. return
  542. }
  543. // GetReportPermissionIdsByCompanyIds 根据客户ID获取有效阅读权限IDs
  544. func GetReportPermissionIdsByCompanyIds(companyIds []int) (items []*CompanyListPermissionIds, err error) {
  545. if len(companyIds) == 0 {
  546. return
  547. }
  548. o := orm.NewOrm()
  549. sql := `SELECT
  550. company_id,
  551. GROUP_CONCAT(
  552. DISTINCT chart_permission_id
  553. ) AS chart_permission_ids
  554. FROM
  555. company_report_permission
  556. WHERE
  557. (DATE(NOW()) BETWEEN start_date AND end_date) AND status IN ('试用', '正式', '永续') AND company_id IN (` + utils.GetOrmInReplace(len(companyIds)) + `)`
  558. sql += `GROUP BY company_id`
  559. _, err = o.Raw(sql, companyIds).QueryRows(&items)
  560. return
  561. }