company_permission.go 26 KB

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