用户二开删除长时间不使用的用户的许可分组信息
【业务场景】
用户购买的许可数不够,所以需要动态删除长时间未使用的用户许可分组信息,需要自行二开进行支持。
【插件开发教程及示例】
一、操作步骤
查询用户登录历史表,查找出一个月没有登录的用户信息
--sql:
SELECT FUSERID FROM (
SELECT *, ROW_NUMBER() OVER(PARTITION BY fuserid ORDER BY fdatetime DESC) AS rn
FROM T_BAS_USERLOGINRECORD
) subquery
WHERE rn = 1 and DATEDIFF(MONTH,GETDATE(),FDATETIME)>1;
--oralce:
SELECT FUSERID FROM (SELECT *, ROW_NUMBER() OVER(PARTITION BY fuserid ORDER BY fdatetime DESC) RN FROM T_BAS_USERLOGINRECORD) SUBQUERY
WHERE (rn = 1 AND (ROUND(MONTHS_BETWEEN(TRUNC( CAST(FDATETIME AS DATE), 'MM'), TRUNC( CAST(SYSDATE AS DATE), 'MM'))) > 1))
2.通过第一步查询的用户userid 在用户表中修改用户许可分组为空
sql:
update t_sec_user set FAPPGROUP='' where FUSERID in (
SELECT FUSERID FROM (
SELECT *, ROW_NUMBER() OVER(PARTITION BY fuserid ORDER BY fdatetime DESC) AS rn
FROM T_BAS_USERLOGINRECORD
) subquery
WHERE rn = 1 and DATEDIFF(MONTH,GETDATE(),FDATETIME)>1
)
-- oralce:
update t_sec_user set FAPPGROUP=' ' where FUSERID in (SELECT FUSERID FROM (SELECT *, ROW_NUMBER() OVER(PARTITION BY fuserid ORDER BY fdatetime DESC) RN FROM T_BAS_USERLOGINRECORD) SUBQUERY
WHERE (rn = 1 AND (ROUND(MONTHS_BETWEEN(TRUNC( CAST(FDATETIME AS DATE), 'MM'), TRUNC( CAST(SYSDATE AS DATE), 'MM'))) > 1))
)
3.调用用户同步接口,进行用户许可的同步
外部调用接口:
Kingdee.BOS.WebApi.ServicesStub.UserService.RegUserSyncByUserIds(List<string> userNames)
userNames 为 用户名称
--内部调用接口:
Kingdee.BOS.ServiceHelper.UserServiceHelper.RegUserSyncByUserIds(this.Context, userIds);
Context 登录上下文
userIds 用户id
二、插件开发示例
【延伸阅读】
调用webapi接口同步用户到云平台方法
https://vip.kingdee.com/article/133953652758123008?productLineId=1&isKnowledge=2
金蝶云星空调用接口同步用户许可信息
https://vip.kingdee.com/article/88295269921409536?productLineId=1&isKnowledge=2
用户二开删除长时间不使用的用户的许可分组信息
本文2024-09-23 03:51:14发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-161522.html