company_permission.go 24 KB

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