|
@@ -19,6 +19,7 @@ const (
|
|
|
RedisMenuKey = "jy_workdesktopmenu_%s_%s_%s_%s"
|
|
|
UserPowerRedisKey = "jy_userpowerredis_%s_%d_%s"
|
|
|
UserRegisterTime = "jy_userregistertime_%s"
|
|
|
+ UserPowerEndTime = "jy_user_power_end_time_%s"
|
|
|
)
|
|
|
|
|
|
type UserInfo struct {
|
|
@@ -64,6 +65,7 @@ func (m *WorkDesktopMenu) AutoUserPowerInfo() map[string]int {
|
|
|
//数据库查询 、资源中台获取、权益中台获取 查询用户信息
|
|
|
var (
|
|
|
registerTime int64
|
|
|
+ powerEndTime int64
|
|
|
)
|
|
|
//以上获取不到的信息 再自主查库
|
|
|
userInfoRpc := UserInfoRpc{
|
|
@@ -107,6 +109,7 @@ func (m *WorkDesktopMenu) AutoUserPowerInfo() map[string]int {
|
|
|
} else if entInfo.EntRoleId == 2 {
|
|
|
UserPowerMap["59"] = 1 // 部门管理员
|
|
|
}
|
|
|
+ powerEndTime = member.EndTime
|
|
|
}
|
|
|
//大会员用户购买的服务 也有可能是非大会员用户 购买这些服务
|
|
|
if member.MemberPowerList != nil && len(member.MemberPowerList) > 0 {
|
|
@@ -116,8 +119,9 @@ func (m *WorkDesktopMenu) AutoUserPowerInfo() map[string]int {
|
|
|
}
|
|
|
}
|
|
|
if vip.Status > 0 {
|
|
|
- if registerTime < vip.EndTime {
|
|
|
- registerTime = vip.EndTime
|
|
|
+ //
|
|
|
+ if powerEndTime < vip.EndTime {
|
|
|
+ powerEndTime = vip.EndTime
|
|
|
}
|
|
|
UserPowerMap["200"] = int(vip.Status)
|
|
|
UserPowerMap["201"] = int(vip.Upgrade)
|
|
@@ -237,9 +241,11 @@ func (m *WorkDesktopMenu) AutoUserPowerInfo() map[string]int {
|
|
|
//1:是否是大会员或者超级订阅用户 否:提示购买到超级订阅购买页; 是>-2
|
|
|
//2:判断用户是否留资 否:提示用去留资;是:>-3
|
|
|
//3:资源中台获取用户权限码判断是否有权限 否:提示用户去联系客服
|
|
|
+ userRegisterTimeKey := fmt.Sprintf(UserRegisterTime, m.UserId)
|
|
|
+ redis.Put(RedisCode, userRegisterTimeKey, strconv.Itoa(int(registerTime)), int(registerTime))
|
|
|
if member.Status > 0 || vip.Status > 0 {
|
|
|
- userRegisterTimeKey := fmt.Sprintf(UserRegisterTime, m.UserId)
|
|
|
- redis.Put(RedisCode, userRegisterTimeKey, strconv.Itoa(int(registerTime)), int(registerTime))
|
|
|
+ userPowerEndTimeKey := fmt.Sprintf(UserPowerEndTime, m.UserId)
|
|
|
+ redis.Put(RedisCode, userPowerEndTimeKey, strconv.Itoa(int(powerEndTime)), int(powerEndTime))
|
|
|
UserPowerMap["500"] = 1
|
|
|
}
|
|
|
}
|
|
@@ -302,16 +308,22 @@ func UserRolePowerInit(strs []string) {
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
-1、不符合可以留资申请开通权限的用户
|
|
|
- 1、免费用户
|
|
|
- 2、超级订阅用户、大会员用户到期时间是否超过3个月
|
|
|
- (1、2:弹窗-医械通上线啦)
|
|
|
-2、符合可以留资申请开通的用户
|
|
|
- 1、未留资
|
|
|
- (1:弹窗-完善基本信息)
|
|
|
- 2、已留资未开通
|
|
|
- 3、已留资且开通
|
|
|
- (2、3:弹窗-恭喜留资成功)
|
|
|
+菜单弹窗逻辑
|
|
|
+如果需要留资
|
|
|
+默认:
|
|
|
+ 1、先判断是否已留资
|
|
|
+ 2、再判断是否有权限
|
|
|
+医械通:
|
|
|
+ 1、不符合可以留资申请开通权限的用户
|
|
|
+ 1、免费用户
|
|
|
+ 2、超级订阅用户、大会员用户到期时间是否超过3个月
|
|
|
+ (1、2:弹窗-医械通上线啦)
|
|
|
+ 2、符合可以留资申请开通的用户
|
|
|
+ 1、未留资
|
|
|
+ (1:弹窗-完善基本信息)
|
|
|
+ 2、已留资未开通
|
|
|
+ 3、已留资且开通
|
|
|
+ (2、3:弹窗-恭喜留资成功)
|
|
|
*/
|
|
|
/*
|
|
|
1、判断是否满足超级订阅用户或大会员用户 且到期时间超过90天(配置);
|
|
@@ -327,7 +339,19 @@ func UserRolePowerInit(strs []string) {
|
|
|
// CheckCapitalResources 是否需要留资 且权限验证--弹窗处理
|
|
|
// b 一级权限(超级订阅、大会员等)
|
|
|
// p 二级权限(请求资源中台:医械通等)
|
|
|
-func CheckCapitalResources(menu *JYMenu, wd *WorkDesktopMenu, b, p bool) (title, content, confirmUrl, confirmText, appType, openType string, isShowCancel, usable bool) {
|
|
|
+func CheckCapitalResources(menu *JYMenu, wd *WorkDesktopMenu, b, p bool, pUrl string) (title, content, confirmUrl, confirmText, appType, openType string, isShowCancel, usable bool) {
|
|
|
+ //菜单在当前平台没有权限
|
|
|
+ if menu.Url == "" && pUrl == "" {
|
|
|
+ title = ConfigJson.DefaultPopup[wd.Platform].Title
|
|
|
+ content = ConfigJson.DefaultPopup[wd.Platform].Content
|
|
|
+ confirmUrlArr := strings.Split(ConfigJson.DefaultPopup[wd.Platform].ConfirmUrl, "__")
|
|
|
+ confirmUrl = MC.InterfaceToStr(MC.If(wd.Platform == "PC", confirmUrlArr[1], confirmUrlArr[0]))
|
|
|
+ confirmText = ConfigJson.DefaultPopup[wd.Platform].ConfirmText
|
|
|
+ isShowCancel = ConfigJson.DefaultPopup[wd.Platform].IsShowCancel
|
|
|
+ appType = ConfigJson.DefaultPopup[wd.Platform].AppType
|
|
|
+ openType = ConfigJson.DefaultPopup[wd.Platform].OpenType
|
|
|
+ return
|
|
|
+ }
|
|
|
OverallLock.Lock()
|
|
|
userInfo := UserInfoMap[wd.NewUserId]
|
|
|
if userInfo == nil {
|
|
@@ -341,96 +365,83 @@ func CheckCapitalResources(menu *JYMenu, wd *WorkDesktopMenu, b, p bool) (title,
|
|
|
userInfo.Lock.Lock()
|
|
|
defer userInfo.Lock.Unlock()
|
|
|
var (
|
|
|
- capitalBool = true //是否留资
|
|
|
- permissionBool = true //是否有功能权限
|
|
|
- //customPopup = true //自定义弹窗
|
|
|
defaultPopup = false //默认弹窗
|
|
|
- )
|
|
|
- //大会员超级订阅用户 才有权限去验证是否有医疗权限
|
|
|
- //用户是否需要留资
|
|
|
- if menu.CapitalCode != "" {
|
|
|
- capitalBool = false
|
|
|
- for _, cv := range strings.Split(menu.CapitalCode, ",") {
|
|
|
- if userInfo.Capitals[cv] == 0 {
|
|
|
- if c := BaseMysql.CountBySql(`SELECT COUNT(id) FROM `+CapitalRetention+` WHERE source = ? AND position_id = ? AND appid = ?`, cv, wd.PositionId, wd.AppId); c > 0 {
|
|
|
- userInfo.Capitals[cv] = 1
|
|
|
- } else {
|
|
|
- userInfo.Capitals[cv] = -1
|
|
|
- }
|
|
|
- }
|
|
|
- if userInfo.Capitals[cv] < 0 {
|
|
|
- //customPopup = false
|
|
|
- //留资弹窗信息
|
|
|
- title = menu.CapitalInfo.Title
|
|
|
- content = menu.CapitalInfo.Content
|
|
|
- confirmUrl = menu.CapitalInfo.ConfirmUrl
|
|
|
- confirmText = menu.CapitalInfo.ConfirmText
|
|
|
- isShowCancel = menu.CapitalInfo.IsShowCancel
|
|
|
- appType = menu.CapitalInfo.AppType
|
|
|
- openType = menu.CapitalInfo.OpenType
|
|
|
- } else {
|
|
|
- capitalBool = true
|
|
|
- //无权限(有权限未留资|留资了未开通权限) --》 没有配置弹窗信息 --》自定义弹窗
|
|
|
- title = menu.AdditionalInfo[wd.Platform].Title
|
|
|
- content = menu.AdditionalInfo[wd.Platform].Content
|
|
|
- confirmUrl = menu.AdditionalInfo[wd.Platform].ConfirmUrl
|
|
|
- confirmText = menu.AdditionalInfo[wd.Platform].ConfirmText
|
|
|
- isShowCancel = menu.AdditionalInfo[wd.Platform].IsShowCancel
|
|
|
- appType = menu.AdditionalInfo[wd.Platform].AppType
|
|
|
- openType = menu.AdditionalInfo[wd.Platform].OpenType
|
|
|
- break
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- //无权限(医械通-:1:免费用户;2:超级订阅、大会员到期时间不在规定范围内)
|
|
|
- if b {
|
|
|
- //资源中台--- 无权限弹窗信息为默认信息(先留资)
|
|
|
- if menu.PermissionCode != "" {
|
|
|
- permissionBool = false
|
|
|
- if (menu.CapitalCode != "" && capitalBool) || menu.CapitalCode == "" {
|
|
|
- if p {
|
|
|
- title = ""
|
|
|
- permissionBool = true
|
|
|
- //customPopup = false
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- //有剑鱼用户权限 查看资源中台功能权限
|
|
|
- //医械通---用户没有资源中台功能权限 也没有留资 查看
|
|
|
- if !permissionBool {
|
|
|
- switch menu.PowerIds {
|
|
|
- case "500":
|
|
|
- userRegisterTime, _ := strconv.ParseInt(redis.GetStr(RedisCode, fmt.Sprintf(UserRegisterTime, wd.UserId)), 10, 64)
|
|
|
- //超级订阅 大会员到期时间 是否 大于 90天
|
|
|
- if userRegisterTime-time.Now().Unix() < ConfigJson.MedicalFieldTimespan {
|
|
|
- //即使是超级订阅或大会员 也没有权限
|
|
|
- defaultPopup = true
|
|
|
+ capitalBool = func() bool {
|
|
|
+ //用户是否需要留资
|
|
|
+ if menu.CapitalCode != "" {
|
|
|
+ capitalBool := false
|
|
|
+ for _, cv := range strings.Split(menu.CapitalCode, ",") {
|
|
|
+ if userInfo.Capitals[cv] <= 0 {
|
|
|
+ if c := BaseMysql.CountBySql(`SELECT COUNT(id) FROM `+CapitalRetention+` WHERE source = ? AND position_id = ? AND appid = ?`, cv, wd.PositionId, wd.AppId); c > 0 {
|
|
|
+ userInfo.Capitals[cv] = 1
|
|
|
+ } else {
|
|
|
+ userInfo.Capitals[cv] = -1
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if userInfo.Capitals[cv] > 0 {
|
|
|
+ capitalBool = true
|
|
|
+ break
|
|
|
+ }
|
|
|
}
|
|
|
+ return capitalBool
|
|
|
}
|
|
|
- }
|
|
|
- }
|
|
|
+ return true
|
|
|
+ }()
|
|
|
+ )
|
|
|
//
|
|
|
usable = func() bool {
|
|
|
switch menu.Authority {
|
|
|
case 0:
|
|
|
- return b && permissionBool && capitalBool
|
|
|
+ return b && p && capitalBool
|
|
|
case 1:
|
|
|
- return b || permissionBool || capitalBool
|
|
|
+ return b || p || capitalBool
|
|
|
case 2:
|
|
|
- return b || permissionBool && capitalBool
|
|
|
+ return b || p && capitalBool
|
|
|
case 3:
|
|
|
- return b && permissionBool || capitalBool
|
|
|
+ return b && p || capitalBool
|
|
|
case 4:
|
|
|
- return b && capitalBool || permissionBool
|
|
|
+ return b && capitalBool || p
|
|
|
default:
|
|
|
return false
|
|
|
}
|
|
|
}()
|
|
|
- //无权限--免费用户||不符合条件的付费用户
|
|
|
- if !b || defaultPopup {
|
|
|
- //配置弹窗信息
|
|
|
- if ConfigJson.DefaultPopup[menu.PowerIds].Title != "" {
|
|
|
- //customPopup = false
|
|
|
+ //P630人脉管理
|
|
|
+ // 有权限 不再判断 弹窗提示信息
|
|
|
+ if usable {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 需要特殊处理的菜单 弹窗提示信息
|
|
|
+ /*
|
|
|
+ 菜单弹窗逻辑
|
|
|
+ 如果需要留资
|
|
|
+ 默认:
|
|
|
+ 1、先判断是否已留资
|
|
|
+ 2、再判断是否有权限
|
|
|
+ 医械通:
|
|
|
+ 1、不符合可以留资申请开通权限的用户
|
|
|
+ 1、免费用户
|
|
|
+ 2、超级订阅用户、大会员用户到期时间是否超过3个月
|
|
|
+ (1、2:弹窗-医械通上线啦)
|
|
|
+ 2、符合可以留资申请开通的用户
|
|
|
+ 1、未留资
|
|
|
+ (1:弹窗-完善基本信息)
|
|
|
+ 2、已留资未开通
|
|
|
+ 3、已留资且开通
|
|
|
+ (2、3:弹窗-恭喜留资成功)
|
|
|
+ */
|
|
|
+ if PopupIdMap[menu.Id] || PopupIdMap[menu.ParentId] {
|
|
|
+ // 超级订阅 or 大会员
|
|
|
+ if b {
|
|
|
+ userPowerEndTimeKey := fmt.Sprintf(UserPowerEndTime, wd.UserId)
|
|
|
+ powerEndTime, _ := strconv.ParseInt(redis.GetStr(RedisCode, userPowerEndTimeKey), 10, 64)
|
|
|
+ //超级订阅 大会员到期时间 是否 大于 90天
|
|
|
+ if powerEndTime == 0 || powerEndTime-time.Now().Unix() < ConfigJson.MedicalFieldTimespan {
|
|
|
+ //即使是超级订阅或大会员 也没有权限
|
|
|
+ defaultPopup = true
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 免费用户 或者 不满足条件的超级订阅or大会员用户
|
|
|
+ if (!b || defaultPopup) && ConfigJson.DefaultPopup[menu.PowerIds].Title != "" {
|
|
|
title = ConfigJson.DefaultPopup[menu.PowerIds].Title
|
|
|
content = ConfigJson.DefaultPopup[menu.PowerIds].Content
|
|
|
confirmUrlArr := strings.Split(ConfigJson.DefaultPopup[menu.PowerIds].ConfirmUrl, "__")
|
|
@@ -439,6 +450,43 @@ func CheckCapitalResources(menu *JYMenu, wd *WorkDesktopMenu, b, p bool) (title,
|
|
|
isShowCancel = ConfigJson.DefaultPopup[menu.PowerIds].IsShowCancel
|
|
|
appType = ConfigJson.DefaultPopup[menu.PowerIds].AppType
|
|
|
openType = ConfigJson.DefaultPopup[menu.PowerIds].OpenType
|
|
|
+ } else if capitalBool { //已留资的用户
|
|
|
+ //留资弹窗信息
|
|
|
+ title = menu.CapitalInfo.Title
|
|
|
+ content = menu.CapitalInfo.Content
|
|
|
+ confirmUrl = menu.CapitalInfo.ConfirmUrl
|
|
|
+ confirmText = menu.CapitalInfo.ConfirmText
|
|
|
+ isShowCancel = menu.CapitalInfo.IsShowCancel
|
|
|
+ appType = menu.CapitalInfo.AppType
|
|
|
+ openType = menu.CapitalInfo.OpenType
|
|
|
+ } else {
|
|
|
+ title = menu.AdditionalInfo[wd.Platform].Title
|
|
|
+ content = menu.AdditionalInfo[wd.Platform].Content
|
|
|
+ confirmUrl = menu.AdditionalInfo[wd.Platform].ConfirmUrl
|
|
|
+ confirmText = menu.AdditionalInfo[wd.Platform].ConfirmText
|
|
|
+ isShowCancel = menu.AdditionalInfo[wd.Platform].IsShowCancel
|
|
|
+ appType = menu.AdditionalInfo[wd.Platform].AppType
|
|
|
+ openType = menu.AdditionalInfo[wd.Platform].OpenType
|
|
|
+ }
|
|
|
+ } else { //默认
|
|
|
+ // 留资
|
|
|
+ if !capitalBool {
|
|
|
+ //留资弹窗信息
|
|
|
+ title = menu.CapitalInfo.Title
|
|
|
+ content = menu.CapitalInfo.Content
|
|
|
+ confirmUrl = menu.CapitalInfo.ConfirmUrl
|
|
|
+ confirmText = menu.CapitalInfo.ConfirmText
|
|
|
+ isShowCancel = menu.CapitalInfo.IsShowCancel
|
|
|
+ appType = menu.CapitalInfo.AppType
|
|
|
+ openType = menu.CapitalInfo.OpenType
|
|
|
+ } else {
|
|
|
+ title = menu.AdditionalInfo[wd.Platform].Title
|
|
|
+ content = menu.AdditionalInfo[wd.Platform].Content
|
|
|
+ confirmUrl = menu.AdditionalInfo[wd.Platform].ConfirmUrl
|
|
|
+ confirmText = menu.AdditionalInfo[wd.Platform].ConfirmText
|
|
|
+ isShowCancel = menu.AdditionalInfo[wd.Platform].IsShowCancel
|
|
|
+ appType = menu.AdditionalInfo[wd.Platform].AppType
|
|
|
+ openType = menu.AdditionalInfo[wd.Platform].OpenType
|
|
|
}
|
|
|
}
|
|
|
return
|