company_permission.go 25 KB

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