company_permission.go 25 KB

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