company_permission.go 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658
  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 ,2: 10W"`
  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. ExpensiveYx int `description:"权益研选: 0-3w; 1-5w ,2: 10W"`
  146. Child []*PermissionLookItem `description:"子权限"`
  147. }
  148. func GetPermissionLookItems(productId int, classifyName string) (items []*PermissionLookItem, err error) {
  149. o := orm.NewOrm()
  150. sql := ` SELECT * FROM chart_permission WHERE enabled=1 AND product_id=? AND classify_name=? ORDER BY sort ASC `
  151. _, err = o.Raw(sql, productId, classifyName).QueryRows(&items)
  152. return
  153. }
  154. func GetCompanyPermissionCheck(companyId, permissionId int) (count int, err error) {
  155. o := orm.NewOrm()
  156. sql := `SELECT COUNT(1) AS count FROM company_report_permission AS a WHERE a.company_id=? AND a.chart_permission_id=? `
  157. err = o.Raw(sql, companyId, permissionId).QueryRow(&count)
  158. return
  159. }
  160. // GetCompanyPermission 根据客户id和品种id获取对应的数据
  161. func GetCompanyPermission(companyId, permissionId int) (item *CompanyReportPermission, err error) {
  162. o := orm.NewOrm()
  163. sql := `SELECT * FROM company_report_permission AS a WHERE a.company_id=? AND a.chart_permission_id=? `
  164. err = o.Raw(sql, companyId, permissionId).QueryRow(&item)
  165. return
  166. }
  167. func GetCompanyPermissionCheckItem(companyId, permissionId int) (item *PermissionLookItem, err error) {
  168. o := orm.NewOrm()
  169. sql := `SELECT * FROM company_report_permission AS a WHERE a.company_id=? AND a.chart_permission_id=? `
  170. err = o.Raw(sql, companyId, permissionId).QueryRow(&item)
  171. return
  172. }
  173. // 通过主观ID获取对应的客观ID
  174. func GetPermissionIdById(permissionIds string) (allpermissionId string, err error) {
  175. sql := ` SELECT
  176. GROUP_CONCAT( DISTINCT chart_permission_id SEPARATOR ',' ) AS permission
  177. FROM
  178. chart_permission
  179. WHERE
  180. product_permission_name IN (
  181. SELECT
  182. product_permission_name
  183. FROM
  184. chart_permission
  185. WHERE
  186. chart_permission_id IN ( ` + permissionIds + ` )) `
  187. o := orm.NewOrm()
  188. err = o.Raw(sql).QueryRow(&allpermissionId)
  189. return
  190. }
  191. // 通过主观ID获取对应的客观ID
  192. func GetCompanyPermissionIdById(companyId int) (allpermissionId string, err error) {
  193. sql := `SELECT
  194. GROUP_CONCAT( DISTINCT chart_permission_id SEPARATOR ',' ) AS permission
  195. FROM
  196. company_report_permission AS a
  197. WHERE
  198. a.company_id = ?
  199. AND product_id = 2`
  200. o := orm.NewOrm()
  201. err = o.Raw(sql, companyId).QueryRow(&allpermissionId)
  202. return
  203. }
  204. type ContractPermissionList struct {
  205. ClassifyName string `description:"分类"`
  206. Items []*PermissionLookItem
  207. CheckList []int
  208. CheckAll bool
  209. }
  210. func GetCompanyIdStr(permissionStr string) (company_id_str string, err error) {
  211. o := orm.NewOrm()
  212. sql := `SELECT GROUP_CONCAT(DISTINCT company_id SEPARATOR ',') AS company_id_str
  213. FROM company_report_permission AS a
  214. WHERE a.chart_permission_id IN( ` + permissionStr + `) `
  215. err = o.Raw(sql).QueryRow(&company_id_str)
  216. return
  217. }
  218. type PermissionVarietyResp struct {
  219. List []*PermissionVarietyList
  220. }
  221. type PermissionVarietyItem struct {
  222. ChartPermissionId int `description:"权限id"`
  223. ClassifyName string `orm:"column(permission_name)" description:"权限名称"`
  224. }
  225. type PermissionVarietyList struct {
  226. ChartPermissionId int `description:"父级id"`
  227. ClassifyName string `description:"分类"`
  228. Items []*PermissionVarietyItem
  229. }
  230. func GetPermissionVarietyItems(productId int, classifyName string) (items []*PermissionVarietyItem, err error) {
  231. o := orm.NewOrm()
  232. sql := ` SELECT * FROM chart_permission WHERE enabled=1 AND product_id=? AND classify_name=? GROUP BY permission_name ORDER BY sort ASC `
  233. _, err = o.Raw(sql, productId, classifyName).QueryRows(&items)
  234. return
  235. }
  236. func GetCompanyReportPermission(companyId, productId int) (items []*CompanyReportPermission, err error) {
  237. o := orm.NewOrm()
  238. sql := `SELECT * FROM company_report_permission WHERE company_id=? AND product_id=? `
  239. _, err = o.Raw(sql, companyId, productId).QueryRows(&items)
  240. return
  241. }
  242. func GetCompanyReportPermissionByStatus(companyId, productId int, status string) (items []*CompanyReportPermission, err error) {
  243. o := orm.NewOrm()
  244. sql := `SELECT * FROM company_report_permission WHERE company_id=? AND product_id=? AND status = ? `
  245. _, err = o.Raw(sql, companyId, productId, status).QueryRows(&items)
  246. return
  247. }
  248. type PermissionCompany struct {
  249. CompanyId int
  250. }
  251. //
  252. //func GetCompanyListCompanyIdByPermissionIdStr(permissionStr string, permissionCount int) (items []*PermissionCompany, err error) {
  253. // o := orm.NewOrm()
  254. // sql := `
  255. // SELECT company_id, COUNT(company_id) ks
  256. // FROM company_report_permission
  257. // WHERE report_permission_id IN (` + permissionStr + `)
  258. //
  259. // GROUP BY company_id
  260. // HAVING company_id IN
  261. //
  262. // (SELECT company_id
  263. // FROM company_report_permission
  264. // GROUP BY company_id
  265. // HAVING COUNT(company_id) = ?)
  266. //
  267. // AND COUNT(company_id) = ?
  268. //`
  269. // _, err = o.Raw(sql, permissionCount, permissionCount).QueryRows(&items)
  270. // return
  271. //}
  272. func GetCompanyListCompanyIdByPermissionIdStr(permissionStr string) (company_id string, err error) {
  273. o := orm.NewOrm()
  274. sql := `
  275. SELECT
  276. GROUP_CONCAT(DISTINCT company_id) AS company_id
  277. FROM company_report_permission
  278. WHERE report_permission_id IN (?)
  279. #GROUP BY company_id
  280. `
  281. err = o.Raw(sql, permissionStr).QueryRow(&company_id)
  282. return
  283. }
  284. func GetPermissionNameByPermissionIdStr(permissionStr string) (chart_permission_name string, err error) {
  285. o := orm.NewOrm()
  286. sql := `SELECT GROUP_CONCAT(DISTINCT chart_permission_name SEPARATOR ',') AS chart_permission_name FROM chart_permission WHERE chart_permission_id IN (` + permissionStr + `)`
  287. err = o.Raw(sql).QueryRow(&chart_permission_name)
  288. return
  289. }
  290. func GetPermissionIdsByPermissionNameStr(chartPermissionName string) (chart_permission_id string, err error) {
  291. o := orm.NewOrm()
  292. sql := `SELECT GROUP_CONCAT(DISTINCT chart_permission_id SEPARATOR ',') AS chart_permission_id FROM chart_permission WHERE chart_permission_name IN(` + chartPermissionName + `)`
  293. err = o.Raw(sql).QueryRow(&chart_permission_id)
  294. return
  295. }
  296. // 新增试用权限
  297. type PermissionAddTryOutReq struct {
  298. CompanyId int `description:"客户id"`
  299. ChartPermissionId string `description:"权限id,多个用英文逗号隔开"`
  300. }
  301. func FixPermissionStatus(companyId, productId int, startDate, endDate, status string) (err error) {
  302. o := orm.NewOrm()
  303. sql := `UPDATE company_report_permission SET start_date=?,end_date=?,status=?,modify_time=NOW() WHERE company_id=? AND product_id=? AND status IS NULL `
  304. _, err = o.Raw(sql, startDate, endDate, status, companyId, productId).Exec()
  305. return
  306. }
  307. func GetPermissionLookItemsExt(productId string, classifyName string) (items []*PermissionLookItem, err error) {
  308. o := orm.NewOrm()
  309. sql := ` SELECT * FROM chart_permission WHERE enabled=1 AND product_id IN(` + productId + `) AND classify_name=? ORDER BY sort ASC `
  310. _, err = o.Raw(sql, classifyName).QueryRows(&items)
  311. return
  312. }
  313. // 客户授权产品结构体(包含产品名称)
  314. type CompanyReportPermissionAndName struct {
  315. CompanyReportPermissionId int `description:"客户授权产品id"`
  316. CompanyId int
  317. ReportPermissionId int
  318. CreatedTime time.Time
  319. LastUpdatedTime time.Time
  320. ChartPermissionId int
  321. StartDate string `description:"权限开始日期"`
  322. EndDate string `description:"权限结束日期"`
  323. ProductId int `description:"产品id"`
  324. ProductName string `description:"产品名称"`
  325. CompanyContractId int `description:"合同id"`
  326. PermissionName string `description:"客户授权产品的名称"`
  327. ClassifyName string `description:"客户授权产品的分类名称"`
  328. Status string `description:"'正式','试用','关闭'"`
  329. ModifyTime time.Time `description:"修改时间"`
  330. }
  331. // 根据企业用户id字符串集合
  332. func GetCompanyReportPermissionListByCompanyIds(companyIds string) (items []*CompanyReportPermissionAndName, err error) {
  333. o := orm.NewOrm()
  334. 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 + `)`
  335. _, err = o.Raw(sql).QueryRows(&items)
  336. return
  337. }
  338. // 根据企业用户id和产品id获取所有正式的权限
  339. func GetCompanyReportPermissionListByProductId(companyId, productId int) (items []*CompanyReportPermissionAndName, err error) {
  340. o := orm.NewOrm()
  341. 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="正式"`
  342. _, err = o.Raw(sql, companyId, productId).QueryRows(&items)
  343. return
  344. }
  345. // GetChartPermissionListByIds 根据权限id集合获取所有的权限列表
  346. func GetChartPermissionListByIds(chartPermissionIds []int) (list []*ChartPermission, err error) {
  347. o := orm.NewOrm()
  348. //o.Using("rddp")
  349. //sNums:= make([],len(nums))
  350. idStrList := make([]string, len(chartPermissionIds))
  351. for key, id := range chartPermissionIds {
  352. idStrList[key] = fmt.Sprint(id)
  353. }
  354. idStr := strings.Join(idStrList, ",")
  355. sql := `SELECT * FROM chart_permission WHERE chart_permission_id in (` + idStr + `) `
  356. _, err = o.Raw(sql).QueryRows(&list)
  357. return
  358. }
  359. // 根据企业用户id和产品id获取所有正式的权限
  360. func GetCompanyProductReportPermissionList(companyId, productId int) (items []*CompanyReportPermissionAndName, err error) {
  361. o := orm.NewOrm()
  362. 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=? `
  363. _, err = o.Raw(sql, companyId, productId).QueryRows(&items)
  364. return
  365. }
  366. // GetChartPermissionListById 根据权限id获取产品权限详情
  367. func GetChartPermissionListById(chartPermissionId int) (item *ChartPermission, err error) {
  368. o := orm.NewOrm()
  369. sql := `SELECT * FROM chart_permission WHERE chart_permission_id =? `
  370. err = o.Raw(sql, chartPermissionId).QueryRow(&item)
  371. return
  372. }
  373. func GetPermissionLookItemsSandO(permissionIds string) (items []*PermissionLookItem, err error) {
  374. o := orm.NewOrm()
  375. sql := ` SELECT * FROM chart_permission WHERE enabled=1 AND chart_permission_id IN (` + permissionIds + `) ORDER BY sort ASC `
  376. _, err = o.Raw(sql).QueryRows(&items)
  377. return
  378. }
  379. func GetPermissionLookItemsSandOByName(permissionName string) (items []*PermissionLookItem, err error) {
  380. o := orm.NewOrm()
  381. sql := ` SELECT * FROM chart_permission WHERE enabled=1 AND product_id = 2 AND remark IN (` + permissionName + `) ORDER BY sort ASC `
  382. _, err = o.Raw(sql).QueryRows(&items)
  383. return
  384. }
  385. func GetParentIdFromGroup(gid int) (items *int, err error) {
  386. o := orm.NewOrm()
  387. sql := `SELECT parent_id FROM sys_group WHERE group_id=? `
  388. err = o.Raw(sql, gid).QueryRow(&items)
  389. return
  390. }
  391. func GetGroupIdsByParentId(gid int) (items []*string, err error) {
  392. o := orm.NewOrm()
  393. sql := `SELECT group_id FROM sys_group WHERE parent_id=? `
  394. _, err = o.Raw(sql, gid).QueryRows(&items)
  395. return
  396. }
  397. func GetGroupNamesById(gid int) (items *string, err error) {
  398. o := orm.NewOrm()
  399. sql := `SELECT group_name FROM sys_group WHERE group_id=? `
  400. err = o.Raw(sql, gid).QueryRow(&items)
  401. return
  402. }
  403. // GetChartPermissionFirst 获取排序后的权限分类
  404. func GetChartPermissionFirst() (list []*ChartPermissionFirst, err error) {
  405. o := orm.NewOrm()
  406. sql := ` SELECT classify_name FROM chart_permission_first ORDER BY yb_index_sort ASC `
  407. _, err = o.Raw(sql).QueryRows(&list)
  408. return
  409. }
  410. // GetCompanyReportPermissionUpgrade 获取升级的权限类型
  411. func GetCompanyReportPermissionUpgrade(companyId, productId int) (items []*CompanyReportPermission, err error) {
  412. o := orm.NewOrm()
  413. sql := `SELECT
  414. re.*
  415. FROM
  416. company_report_permission as re
  417. INNER JOIN chart_permission as c ON c.chart_permission_id = re.chart_permission_id
  418. WHERE
  419. re.company_id = ?
  420. AND re.product_id = ?
  421. AND re.is_upgrade = 1
  422. AND c.permission_type = 1
  423. AND STATUS = '正式' `
  424. _, err = o.Raw(sql, companyId, productId).QueryRows(&items)
  425. return
  426. }
  427. // GetCompanyPermissionNameCheck 通过名称判断客户是否开了某一类型的权限
  428. func GetCompanyPermissionNameCheck(companyId, productId int, permissionName string) (count int, err error) {
  429. o := orm.NewOrm()
  430. sql := `SELECT
  431. COUNT( 1 ) AS count
  432. FROM
  433. company_report_permission AS a
  434. INNER JOIN chart_permission as c ON c.chart_permission_id = a.chart_permission_id
  435. WHERE
  436. a.company_id = ?
  437. AND a.STATUS = '正式'
  438. AND a.product_id = ?
  439. AND c.chart_permission_name = ? `
  440. err = o.Raw(sql, companyId, productId, permissionName).QueryRow(&count)
  441. return
  442. }
  443. // GetCompanyReportPermissionUpgradeByChartPermissionId 通过行业权限获取具备该行业升级权限的公司
  444. func GetCompanyReportPermissionUpgradeByChartPermissionId(chartPermissionId int) (items []*CompanyReportPermission, err error) {
  445. o := orm.NewOrm()
  446. sql := `SELECT
  447. company_id
  448. FROM
  449. company_report_permission AS p
  450. WHERE
  451. 1 = 1
  452. AND p.is_upgrade = 1
  453. AND p.chart_permission_id = ?
  454. AND p.STATUS = '正式'
  455. OR (
  456. p.STATUS = '永续'
  457. AND p.chart_permission_id = ?
  458. )`
  459. _, err = o.Raw(sql, chartPermissionId, chartPermissionId).QueryRows(&items)
  460. return
  461. }
  462. func GetPermissionNameByPermissionIds(permissionIds []int) (names []string, err error) {
  463. if len(permissionIds) == 0 {
  464. return
  465. }
  466. o := orm.NewOrm()
  467. sql := `SELECT
  468. DISTINCT chart_permission_name
  469. FROM
  470. chart_permission
  471. WHERE
  472. chart_permission_id IN (` + utils.GetOrmInReplace(len(permissionIds)) + `)`
  473. _, err = o.Raw(sql, permissionIds).QueryRows(&names)
  474. return
  475. }
  476. func GetPermissionIdsByPermissionNames(names []string) (ids []int, err error) {
  477. if len(names) == 0 {
  478. return
  479. }
  480. o := orm.NewOrm()
  481. sql := `SELECT
  482. DISTINCT chart_permission_id
  483. FROM
  484. chart_permission
  485. WHERE
  486. chart_permission_name IN (` + utils.GetOrmInReplace(len(names)) + `)`
  487. _, err = o.Raw(sql, names).QueryRows(&ids)
  488. return
  489. }
  490. // GetCompanyIdsStrByReportPermissionIds 根据有效阅读权限IDs获取客户IDs
  491. func GetCompanyIdsStrByReportPermissionIds(permissionIds []int) (companyIds []int, err error) {
  492. if len(permissionIds) == 0 {
  493. return
  494. }
  495. o := orm.NewOrm()
  496. sql := `SELECT
  497. DISTINCT company_id
  498. FROM
  499. company_report_permission
  500. WHERE
  501. report_permission_id IN (` + utils.GetOrmInReplace(len(permissionIds)) + `) AND (DATE(NOW()) BETWEEN start_date AND end_date) AND status IN ('试用', '正式', '永续')`
  502. _, err = o.Raw(sql, permissionIds).QueryRows(&companyIds)
  503. return
  504. }
  505. // GetCompanyIdsStrByContractPermissionIds 根据合同权限IDs获取客户IDs
  506. func GetCompanyIdsStrByContractPermissionIds(permissionIds []int) (companyIds []int, err error) {
  507. if len(permissionIds) == 0 {
  508. return
  509. }
  510. o := orm.NewOrm()
  511. sql := `SELECT
  512. DISTINCT company_id
  513. FROM
  514. company_contract_permission
  515. WHERE
  516. chart_permission_id IN (` + utils.GetOrmInReplace(len(permissionIds)) + `) AND (DATE(NOW()) BETWEEN start_date AND end_date)`
  517. _, err = o.Raw(sql, permissionIds).QueryRows(&companyIds)
  518. return
  519. }
  520. // CompanyListPermissionIds 客户列表权限IDs
  521. type CompanyListPermissionIds struct {
  522. CompanyId int `description:"客户ID"`
  523. ChartPermissionIds string `description:"权限IDs"`
  524. }
  525. // GetContractPermissionIdsByCompanyIds 根据客户ID获取合同权限IDs
  526. func GetContractPermissionIdsByCompanyIds(companyIds []int) (items []*CompanyListPermissionIds, err error) {
  527. if len(companyIds) == 0 {
  528. return
  529. }
  530. o := orm.NewOrm()
  531. sql := `SELECT
  532. company_id,
  533. GROUP_CONCAT(
  534. DISTINCT chart_permission_id
  535. ) AS chart_permission_ids
  536. FROM
  537. company_contract_permission
  538. WHERE
  539. (DATE(NOW()) BETWEEN start_date AND end_date) AND company_id IN (` + utils.GetOrmInReplace(len(companyIds)) + `)`
  540. sql += `GROUP BY company_id`
  541. _, err = o.Raw(sql, companyIds).QueryRows(&items)
  542. return
  543. }
  544. // GetReportPermissionIdsByCompanyIds 根据客户ID获取有效阅读权限IDs
  545. func GetReportPermissionIdsByCompanyIds(companyIds []int) (items []*CompanyListPermissionIds, err error) {
  546. if len(companyIds) == 0 {
  547. return
  548. }
  549. o := orm.NewOrm()
  550. sql := `SELECT
  551. company_id,
  552. GROUP_CONCAT(
  553. DISTINCT chart_permission_id
  554. ) AS chart_permission_ids
  555. FROM
  556. company_report_permission
  557. WHERE
  558. (DATE(NOW()) BETWEEN start_date AND end_date) AND status IN ('试用', '正式', '永续') AND company_id IN (` + utils.GetOrmInReplace(len(companyIds)) + `)`
  559. sql += `GROUP BY company_id`
  560. _, err = o.Raw(sql, companyIds).QueryRows(&items)
  561. return
  562. }
  563. // GetCompanyReportPermissionByCompanyIdAndProductId 获取权限类型
  564. func GetCompanyReportPermissionByCompanyIdAndProductId(companyId, productId int) (items []*CompanyReportPermission, err error) {
  565. o := orm.NewOrm()
  566. sql := `SELECT
  567. re.*
  568. FROM
  569. company_report_permission as re
  570. INNER JOIN chart_permission as c ON c.chart_permission_id = re.chart_permission_id
  571. WHERE
  572. re.company_id = ?
  573. AND re.product_id = ?
  574. AND STATUS = '正式' `
  575. _, err = o.Raw(sql, companyId, productId).QueryRows(&items)
  576. return
  577. }
  578. // 列表
  579. func GetCompanyReportPermissionList(condition string, pars []interface{}, startSize, pageSize int) (items []*CompanyReportPermission, err error) {
  580. o := orm.NewOrm()
  581. sql := `SELECT * FROM company_report_permission WHERE 1= 1 `
  582. if condition != "" {
  583. sql += condition
  584. }
  585. if startSize+pageSize > 0 {
  586. sql += ` LIMIT ?,? `
  587. _, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
  588. } else {
  589. _, err = o.Raw(sql, pars).QueryRows(&items)
  590. }
  591. return
  592. }