user_permission.go 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278
  1. package services
  2. import (
  3. "errors"
  4. "fmt"
  5. "hongze/hongze_mfyx/models"
  6. "hongze/hongze_mfyx/models/order"
  7. "hongze/hongze_mfyx/utils"
  8. "strings"
  9. )
  10. var (
  11. UserPermissionOperationModeApply = "Apply"
  12. UserPermissionOperationModeCall = "Call"
  13. UserPermissionPopupMsgApplyActivity = "您暂无权限参加此活动,若想参加可以申请开通对应的试用权限"
  14. UserPermissionPopupMsgCallActivity = "您暂无权限参加此活动,若想参加可以联系对口销售"
  15. UserPermissionPopupMsgApplyMicroVideo = "您暂无权限查看此视频,若想查看可以申请开通对应的试用权限"
  16. UserPermissionPopupMsgCallMicroVideo = "您暂无权限查看此视频若想查看可以联系对口销售"
  17. )
  18. // GetUserRaiPermissionInfo 获取权限类型及信息
  19. // HasPermission 是否有权限:1-有权限; 2-无权限; 3-潜在客户未提交申请; 4-潜在客户已提交申请 5-仅有FICC权限
  20. func GetUserRaiPermissionInfo(userId, companyId int) (authInfo models.UserPermissionAuthInfo, permissionArr []string, err error) {
  21. // 用户申请记录
  22. applyCount, e := models.GetApplyRecordCount(userId)
  23. if e != nil && e.Error() != utils.ErrNoRow() {
  24. err = errors.New("获取用户申请信息失败, Err: " + e.Error())
  25. return
  26. }
  27. // 潜在用户
  28. if companyId <= 1 {
  29. authInfo.HasPermission = 3
  30. if applyCount > 0 {
  31. authInfo.HasPermission = 4
  32. }
  33. authInfo.OperationMode = UserPermissionOperationModeApply
  34. authInfo.PopupMsg = UserPermissionPopupMsgApplyActivity
  35. return
  36. }
  37. // 销售信息
  38. ficcSeller, e := models.GetSellerByCompanyIdCheckFicc(companyId, utils.COMPANY_PRODUCT_FICC_ID)
  39. if e != nil && e.Error() != utils.ErrNoRow() {
  40. err = errors.New("获取FICC销售信息失败, Err: " + e.Error())
  41. return
  42. }
  43. raiSeller, e := models.GetSellerByCompanyIdCheckFicc(companyId, utils.COMPANY_PRODUCT_RAI_ID)
  44. if e != nil && e.Error() != utils.ErrNoRow() {
  45. err = errors.New("获取权益销售信息失败, Err: " + e.Error())
  46. return
  47. }
  48. if raiSeller != nil {
  49. authInfo.SellerMobile = raiSeller.Mobile
  50. authInfo.SellerName = raiSeller.RealName
  51. }
  52. // 仅有FICC权限
  53. if ficcSeller != nil && raiSeller == nil {
  54. authInfo.HasPermission = 5
  55. authInfo.OperationMode = UserPermissionOperationModeApply
  56. authInfo.PopupMsg = UserPermissionPopupMsgApplyActivity
  57. return
  58. }
  59. // permissions示例: 医药,消费,科技,智造,策略,专家,买方研选
  60. permissions, e := models.GetCompanyPermissionName(companyId)
  61. if e != nil {
  62. err = errors.New("获取客户权限失败, Err: " + e.Error())
  63. return
  64. }
  65. if permissions == "" {
  66. // 无权益权限
  67. if raiSeller != nil {
  68. // 有销售信息
  69. authInfo.HasPermission = 2
  70. authInfo.OperationMode = UserPermissionOperationModeCall
  71. authInfo.PopupMsg = UserPermissionPopupMsgCallActivity
  72. return
  73. }
  74. // 无销售信息, 无申请, 视作潜在用户
  75. authInfo.HasPermission = 3
  76. authInfo.OperationMode = UserPermissionOperationModeApply
  77. return
  78. }
  79. // 有基本的权益权限
  80. authInfo.HasPermission = 1
  81. permissionArr = strings.Split(permissions, ",")
  82. return
  83. }
  84. func GetUserApplyRecordCount(userId int) (applyCount int, err error) {
  85. // 用户申请记录
  86. applyCount, e := models.GetApplyRecordCount(userId)
  87. if e != nil && e.Error() != utils.ErrNoRow() {
  88. err = errors.New("获取用户申请信息失败, Err: " + e.Error())
  89. return
  90. }
  91. return
  92. }
  93. // 是否需要上传名片
  94. func GetCygxUserBusinessCardCount(userId, companyId int) (isNeedBusinessCard bool) {
  95. if companyId > 1 {
  96. return
  97. }
  98. var err error
  99. defer func() {
  100. if err != nil {
  101. fmt.Println(err)
  102. go utils.SendAlarmMsg(fmt.Sprint("判断用户是否需要上传名片失败 GetCygxUserBusinessCardCount, err:", err.Error()), 2)
  103. }
  104. }()
  105. businessCardCount, e := order.GetCygxUserBusinessCardCount(userId)
  106. if e != nil && e.Error() != utils.ErrNoRow() {
  107. err = errors.New("GetCygxUserBusinessCardCount, Err: " + e.Error())
  108. return
  109. }
  110. if businessCardCount > 0 {
  111. return
  112. }
  113. isNeedBusinessCard = true
  114. return
  115. }
  116. // 获取客户是否有过历史申请记录
  117. func GetUserApplyRecordCountByCompanyIdPay(companyIdPay int) (isCompanyApply bool) {
  118. var err error
  119. defer func() {
  120. if err != nil {
  121. fmt.Println(err)
  122. go utils.SendAlarmMsg(fmt.Sprint("获取客户是否有过历史申请记录 GetUserApplyRecordCountByCompanyIdPay, err:", err.Error()), 2)
  123. }
  124. }()
  125. if companyIdPay >= 1 {
  126. return
  127. }
  128. // 客户申请
  129. applyCount, e := models.GetApplyRecordCountByCompanyIdPay(companyIdPay)
  130. if e != nil && e.Error() != utils.ErrNoRow() {
  131. err = errors.New("获取用户申请信息失败, Err: " + e.Error())
  132. return
  133. }
  134. if applyCount > 0 {
  135. isCompanyApply = true
  136. }
  137. return
  138. }
  139. // 获取用户权限状态 https://hzstatic.hzinsights.com/static/images/202402/20240205/LpE6dspJCLzfQoCoE8SFMDiLuxXk.png(状态码说明)
  140. func GetUserPermissionCode(userId, companyId int) (permission int, err error) {
  141. // 用户申请记录
  142. applyCount, e := models.GetApplyRecordCount(userId)
  143. if e != nil && e.Error() != utils.ErrNoRow() {
  144. err = errors.New("获取用户申请信息失败, Err: " + e.Error())
  145. return
  146. }
  147. if companyId == 1 {
  148. // 潜在用户
  149. if applyCount > 0 {
  150. permission = 6
  151. } else {
  152. permission = 7
  153. }
  154. } else {
  155. //权益客户
  156. raiCount, e := models.GetCompanyProductCount(companyId, utils.COMPANY_PRODUCT_RAI_ID)
  157. if e != nil {
  158. err = errors.New("获取用户申请信息失败, Err: " + e.Error())
  159. return
  160. }
  161. if raiCount == 1 {
  162. if applyCount > 0 {
  163. permission = 2
  164. } else {
  165. permission = 3
  166. }
  167. } else {
  168. //ficc 客户
  169. ficcCount, e := models.GetCompanyProductCount(companyId, utils.COMPANY_PRODUCT_FICC_ID)
  170. if e != nil {
  171. err = errors.New("获取用户申请信息失败, Err: " + e.Error())
  172. return
  173. }
  174. if ficcCount == 1 {
  175. if applyCount > 0 {
  176. permission = 4
  177. } else {
  178. permission = 5
  179. }
  180. }
  181. }
  182. }
  183. return
  184. }
  185. // 用户详情页获取用户权限状态 https://hzstatic.hzinsights.com/static/images/202402/20240205/LpE6dspJCLzfQoCoE8SFMDiLuxXk.png(状态码说明)
  186. func GetUserDetailPermissionCode(userId, companyId int) (permission int, err error) {
  187. // 用户申请记录
  188. applyCount, e := GetUserApplyRecordCount(userId)
  189. if e != nil && e.Error() != utils.ErrNoRow() {
  190. err = errors.New("获取用户申请信息失败, Err: " + e.Error())
  191. return
  192. }
  193. if companyId == 1 {
  194. // 潜在用户
  195. if applyCount > 0 {
  196. permission = 6
  197. } else {
  198. permission = 7
  199. }
  200. } else {
  201. //权益客户
  202. raiCount, e := models.GetCompanyProductCount(companyId, utils.COMPANY_PRODUCT_RAI_ID)
  203. if e != nil {
  204. err = errors.New("获取用户申请信息失败, Err: " + e.Error())
  205. return
  206. }
  207. if raiCount == 1 {
  208. if applyCount > 0 {
  209. permission = 2
  210. } else {
  211. permission = 3
  212. }
  213. } else {
  214. //ficc 客户
  215. ficcCount, e := models.GetCompanyProductCount(companyId, utils.COMPANY_PRODUCT_FICC_ID)
  216. if e != nil {
  217. err = errors.New("获取用户申请信息失败, Err: " + e.Error())
  218. return
  219. }
  220. if ficcCount == 1 {
  221. if applyCount > 0 {
  222. permission = 4
  223. } else {
  224. permission = 5
  225. }
  226. }
  227. }
  228. }
  229. return
  230. }
  231. // 获取权益销售姓名
  232. func GetSellerName(user *models.WxUserItem) (sellerName string, sellerId int) {
  233. var err error
  234. defer func() {
  235. if err != nil {
  236. fmt.Println(err)
  237. go utils.SendAlarmMsg(fmt.Sprint("获取权益销售姓名失败 GetSellerName, err:", err.Error()), 2)
  238. }
  239. }()
  240. companyId := user.CompanyId
  241. //潜在客户没有销售
  242. if user.CompanyId <= 1 {
  243. return
  244. }
  245. //权益客户
  246. raiCount, e := models.GetCompanyProductCount(companyId, utils.COMPANY_PRODUCT_RAI_ID)
  247. if e != nil {
  248. err = errors.New("GetCompanyProductCount, Err: " + e.Error())
  249. return
  250. }
  251. //仅开通FICC的客户不展示销售姓名
  252. if raiCount == 0 {
  253. return
  254. }
  255. sealldetail, e := models.GetRaiSellerByCompanyId(companyId)
  256. if e != nil {
  257. err = errors.New("GetRaiSellerByCompanyId, Err: " + e.Error())
  258. return
  259. }
  260. sellerName = sealldetail.RealName
  261. sellerId = sealldetail.AdminId
  262. return
  263. }