user_permission.go 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332
  1. package services
  2. import (
  3. "errors"
  4. "fmt"
  5. "hongze/hongze_web_mfyx/models"
  6. "hongze/hongze_web_mfyx/utils"
  7. "strings"
  8. )
  9. var (
  10. UserPermissionOperationModeApply = "Apply"
  11. UserPermissionOperationModeCall = "Call"
  12. UserPermissionPopupMsgApplyActivity = "您暂无权限参加此活动,若想参加可以申请开通对应的试用权限"
  13. UserPermissionPopupMsgCallActivity = "您暂无权限参加此活动,若想参加可以联系对口销售"
  14. UserPermissionPopupMsgApplyMicroVideo = "您暂无权限查看此视频,若想查看可以申请开通对应的试用权限"
  15. UserPermissionPopupMsgApplyMicroVoice = "您暂无权限查看此音频,若想查看可以申请开通对应的试用权限"
  16. UserPermissionPopupMsgCallMicroVoice = "您暂无权限查看此音频,若想参加可以联系对口销售"
  17. UserPermissionPopupMsgCallMicroVideo = "您暂无权限查看此视频,若想查看可以联系对口销售"
  18. )
  19. // GetUserRaiPermissionInfo 获取权限类型及信息
  20. // HasPermission int `description:"1:有该行业权限,正常展示,2:无该行业权限,不存在权益客户下(ficc),3:无该品类权限,已提交过申请,4:无该品类权限,未提交过申请,5:潜在客户,未提交过申请,6:潜在客户,已提交过申请"`
  21. func GetUserRaiPermissionInfo1(userId, companyId int) (authInfo models.UserPermissionAuthInfo, permissionArr []string, err error) {
  22. // 用户申请记录
  23. applyCount, e := models.GetApplyRecordCount(userId)
  24. if e != nil && e.Error() != utils.ErrNoRow() {
  25. err = errors.New("获取用户申请信息失败, Err: " + e.Error())
  26. return
  27. }
  28. // 潜在用户
  29. if companyId <= 1 {
  30. authInfo.HasPermission = 5
  31. if applyCount > 0 {
  32. authInfo.HasPermission = 6
  33. }
  34. authInfo.OperationMode = UserPermissionOperationModeApply
  35. authInfo.PopupMsg = UserPermissionPopupMsgApplyActivity
  36. return
  37. }
  38. // 销售信息
  39. ficcSeller, e := models.GetSellerByCompanyIdCheckFicc(companyId, utils.COMPANY_PRODUCT_FICC_ID)
  40. if e != nil && e.Error() != utils.ErrNoRow() {
  41. err = errors.New("获取FICC销售信息失败, Err: " + e.Error())
  42. return
  43. }
  44. raiSeller, e := models.GetSellerByCompanyIdCheckFicc(companyId, utils.COMPANY_PRODUCT_RAI_ID)
  45. if e != nil && e.Error() != utils.ErrNoRow() {
  46. err = errors.New("获取权益销售信息失败, Err: " + e.Error())
  47. return
  48. }
  49. if raiSeller != nil {
  50. authInfo.SellerMobile = raiSeller.Mobile
  51. authInfo.SellerName = raiSeller.RealName
  52. authInfo.HasPermission = 4
  53. if applyCount > 0 {
  54. authInfo.HasPermission = 3
  55. }
  56. authInfo.OperationMode = UserPermissionOperationModeApply
  57. authInfo.PopupMsg = UserPermissionPopupMsgApplyActivity
  58. return
  59. }
  60. // 仅有FICC权限
  61. if ficcSeller != nil {
  62. authInfo.HasPermission = 2
  63. authInfo.OperationMode = UserPermissionOperationModeApply
  64. authInfo.PopupMsg = UserPermissionPopupMsgApplyActivity
  65. return
  66. }
  67. // permissions示例: 医药,消费,科技,智造,策略,专家,买方研选
  68. permissions, e := models.GetCompanyPermissionName(companyId)
  69. if e != nil {
  70. err = errors.New("获取客户权限失败, Err: " + e.Error())
  71. return
  72. }
  73. if permissions == "" {
  74. // 无权益权限
  75. // 有销售信息
  76. authInfo.HasPermission = 2
  77. authInfo.OperationMode = UserPermissionOperationModeCall
  78. authInfo.PopupMsg = UserPermissionPopupMsgCallActivity
  79. return
  80. // 无销售信息, 无申请, 视作潜在用户
  81. //authInfo.HasPermission = 3
  82. //authInfo.OperationMode = UserPermissionOperationModeApply
  83. //return
  84. }
  85. // 有基本的权益权限
  86. authInfo.HasPermission = 1
  87. permissionArr = strings.Split(permissions, ",")
  88. return
  89. }
  90. func GetUserRaiPermissionInfo(userId, companyId int) (authInfo models.UserPermissionAuthInfo, permissionArr []string, err error) {
  91. // 用户申请记录
  92. applyCount, e := models.GetApplyRecordCount(userId)
  93. if e != nil && e.Error() != utils.ErrNoRow() {
  94. err = errors.New("获取用户申请信息失败, Err: " + e.Error())
  95. return
  96. }
  97. // 潜在用户
  98. if companyId <= 1 {
  99. authInfo.HasPermission = 6
  100. if applyCount > 0 {
  101. authInfo.HasPermission = 7
  102. }
  103. authInfo.OperationMode = UserPermissionOperationModeApply
  104. authInfo.PopupMsg = UserPermissionPopupMsgApplyActivity
  105. return
  106. }
  107. // 销售信息
  108. ficcSeller, e := models.GetSellerByCompanyIdCheckFicc(companyId, utils.COMPANY_PRODUCT_FICC_ID)
  109. if e != nil && e.Error() != utils.ErrNoRow() {
  110. err = errors.New("获取FICC销售信息失败, Err: " + e.Error())
  111. return
  112. }
  113. raiSeller, e := models.GetSellerByCompanyIdCheckFicc(companyId, utils.COMPANY_PRODUCT_RAI_ID)
  114. if e != nil && e.Error() != utils.ErrNoRow() {
  115. err = errors.New("获取权益销售信息失败, Err: " + e.Error())
  116. return
  117. }
  118. if raiSeller != nil {
  119. authInfo.SellerMobile = raiSeller.Mobile
  120. authInfo.SellerName = raiSeller.RealName
  121. }
  122. // 仅有FICC权限
  123. if ficcSeller != nil && raiSeller == nil {
  124. authInfo.HasPermission = 2
  125. authInfo.OperationMode = UserPermissionOperationModeApply
  126. authInfo.PopupMsg = UserPermissionPopupMsgApplyActivity
  127. return
  128. }
  129. // permissions示例: 医药,消费,科技,智造,策略,专家,买方研选
  130. permissions, e := models.GetCompanyPermissionName(companyId)
  131. if e != nil {
  132. err = errors.New("获取客户权限失败, Err: " + e.Error())
  133. return
  134. }
  135. if permissions == "" {
  136. // 无权益权限
  137. if raiSeller != nil {
  138. // 有销售信息
  139. authInfo.HasPermission = 2
  140. authInfo.OperationMode = UserPermissionOperationModeCall
  141. authInfo.PopupMsg = UserPermissionPopupMsgCallActivity
  142. return
  143. }
  144. // 无销售信息, 无申请, 视作潜在用户
  145. authInfo.HasPermission = 3
  146. authInfo.OperationMode = UserPermissionOperationModeApply
  147. return
  148. }
  149. // 有基本的权益权限
  150. authInfo.HasPermission = 1
  151. permissionArr = strings.Split(permissions, ",")
  152. //判断用户是否开通了个人研选权限,如果有权限后缀拼接权限名称
  153. mfyxUserPermissionTotal := GetMfyxUserPermissionTotal(userId)
  154. if mfyxUserPermissionTotal == 1 {
  155. permissionArr = append(permissionArr, utils.CHART_PERMISSION_NAME_MF_YANXUAN)
  156. }
  157. return
  158. }
  159. // 查询研选的权限状态
  160. func GetUserRaiPermissionYanXuanInfo(user *models.WxUserItem) (hasPermission int, err error) {
  161. //判断用户是否开通了个人研选权限
  162. mfyxUserPermissionTotal := GetMfyxUserPermissionTotal(user.UserId)
  163. if mfyxUserPermissionTotal == 1 {
  164. hasPermission = 1
  165. return
  166. }
  167. var condition string
  168. var pars []interface{}
  169. condition = " AND company_id = ? AND status IN ('正式','试用') AND chart_permission_id = ? ORDER BY company_report_permission_id DESC LIMIT 1 "
  170. pars = append(pars, user.CompanyId, utils.CHART_PERMISSION_ID_YANXUAN)
  171. companyReportPermissionDetail, e := models.GetCompanyReportPermissionDetailByCondition(condition, pars)
  172. if e != nil && e.Error() != utils.ErrNoRow() {
  173. err = errors.New("GetCompanyReportPermissionDetailByCondition, Err: " + e.Error())
  174. return
  175. }
  176. //如果用户没有研选权限,那么就获取他对应的状态码
  177. if companyReportPermissionDetail == nil {
  178. hasPermission, _, _, _, e = GetUserHasPermissionArticle(user)
  179. if e != nil {
  180. err = errors.New("GetUserHasPermissionArticle, Err: " + e.Error())
  181. return
  182. }
  183. } else {
  184. hasPermission = 1
  185. }
  186. return
  187. }
  188. // 获取用户权限状态 https://hzstatic.hzinsights.com/static/images/202402/20240205/LpE6dspJCLzfQoCoE8SFMDiLuxXk.png(状态码说明)
  189. func GetUserPermissionCode(userId, companyId int) (permission int, err error) {
  190. // 用户申请记录
  191. applyCount, e := models.GetApplyRecordCount(userId)
  192. if e != nil && e.Error() != utils.ErrNoRow() {
  193. err = errors.New("获取用户申请信息失败, Err: " + e.Error())
  194. return
  195. }
  196. if companyId == 1 {
  197. // 潜在用户
  198. if applyCount > 0 {
  199. permission = 6
  200. } else {
  201. permission = 7
  202. }
  203. } else {
  204. //权益客户
  205. raiCount, e := models.GetCompanyProductCount(companyId, utils.COMPANY_PRODUCT_RAI_ID)
  206. if e != nil {
  207. err = errors.New("获取用户申请信息失败, Err: " + e.Error())
  208. return
  209. }
  210. if raiCount == 1 {
  211. if applyCount > 0 {
  212. permission = 2
  213. } else {
  214. permission = 3
  215. }
  216. } else {
  217. //ficc 客户
  218. ficcCount, e := models.GetCompanyProductCount(companyId, utils.COMPANY_PRODUCT_FICC_ID)
  219. if e != nil {
  220. err = errors.New("获取用户申请信息失败, Err: " + e.Error())
  221. return
  222. }
  223. if ficcCount == 1 {
  224. if applyCount > 0 {
  225. permission = 4
  226. } else {
  227. permission = 5
  228. }
  229. }
  230. }
  231. }
  232. return
  233. }
  234. // 用户详情页获取用户权限状态 https://hzstatic.hzinsights.com/static/images/202402/20240205/LpE6dspJCLzfQoCoE8SFMDiLuxXk.png(状态码说明)
  235. func GetUserDetailPermissionCode(userId, companyId int) (permission int, err error) {
  236. // 用户申请记录
  237. applyCount, e := models.GetApplyRecordCount(userId)
  238. if e != nil && e.Error() != utils.ErrNoRow() {
  239. err = errors.New("获取用户申请信息失败, Err: " + e.Error())
  240. return
  241. }
  242. if companyId == 1 {
  243. // 潜在用户
  244. if applyCount > 0 {
  245. permission = 6
  246. } else {
  247. permission = 7
  248. }
  249. } else {
  250. //权益客户
  251. raiCount, e := models.GetCompanyProductCount(companyId, utils.COMPANY_PRODUCT_RAI_ID)
  252. if e != nil {
  253. err = errors.New("获取用户申请信息失败, Err: " + e.Error())
  254. return
  255. }
  256. if raiCount == 1 {
  257. if applyCount > 0 {
  258. permission = 2
  259. } else {
  260. permission = 3
  261. }
  262. } else {
  263. //ficc 客户
  264. ficcCount, e := models.GetCompanyProductCount(companyId, utils.COMPANY_PRODUCT_FICC_ID)
  265. if e != nil {
  266. err = errors.New("获取用户申请信息失败, Err: " + e.Error())
  267. return
  268. }
  269. if ficcCount == 1 {
  270. if applyCount > 0 {
  271. permission = 4
  272. } else {
  273. permission = 5
  274. }
  275. }
  276. }
  277. }
  278. return
  279. }
  280. // 获取权益销售姓名
  281. func GetSellerName(user *models.WxUserItem) (sellerName string, sellerId int) {
  282. var err error
  283. defer func() {
  284. if err != nil {
  285. fmt.Println(err)
  286. go utils.SendAlarmMsg(fmt.Sprint("获取权益销售姓名失败 GetSellerName, err:", err.Error()), 2)
  287. }
  288. }()
  289. companyId := user.CompanyId
  290. //潜在客户没有销售
  291. if user.CompanyId <= 1 {
  292. return
  293. }
  294. //权益客户
  295. raiCount, e := models.GetCompanyProductCount(companyId, utils.COMPANY_PRODUCT_RAI_ID)
  296. if e != nil {
  297. err = errors.New("GetCompanyProductCount, Err: " + e.Error())
  298. return
  299. }
  300. //仅开通FICC的客户不展示销售姓名
  301. if raiCount == 0 {
  302. return
  303. }
  304. sealldetail, e := models.GetRaiSellerByCompanyId(companyId)
  305. if e != nil {
  306. err = errors.New("GetRaiSellerByCompanyId, Err: " + e.Error())
  307. return
  308. }
  309. sellerName = sealldetail.RealName
  310. sellerId = sealldetail.AdminId
  311. return
  312. }