forked from github/dataease
Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
commit
7f5931aad0
@ -75,6 +75,10 @@ public interface AuthApi {
|
||||
@PostMapping("/isOpenLark")
|
||||
boolean isOpenLark();
|
||||
|
||||
@ApiOperation("是否开启国际飞书")
|
||||
@PostMapping("/isOpenLarksuite")
|
||||
boolean isOpenLarksuite();
|
||||
|
||||
@ApiIgnore
|
||||
@PostMapping("/isPluginLoaded")
|
||||
boolean isPluginLoaded();
|
||||
|
@ -337,6 +337,14 @@ public class AuthServer implements AuthApi {
|
||||
return authUserService.supportLark();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOpenLarksuite() {
|
||||
Boolean licValid = PluginUtils.licValid();
|
||||
if (!licValid)
|
||||
return false;
|
||||
return authUserService.supportLarksuite();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPluginLoaded() {
|
||||
Boolean licValid = PluginUtils.licValid();
|
||||
|
@ -23,6 +23,8 @@ public interface AuthUserService {
|
||||
SysUserEntity getUserByDingtalkId(String dingtalkId);
|
||||
SysUserEntity getUserByLarkId(String larkId);
|
||||
|
||||
SysUserEntity getUserByLarksuiteId(String larksuiteId);
|
||||
|
||||
List<String> roles(Long userId);
|
||||
|
||||
List<String> permissions(Long userId);
|
||||
@ -43,6 +45,8 @@ public interface AuthUserService {
|
||||
|
||||
Boolean supportLark();
|
||||
|
||||
Boolean supportLarksuite();
|
||||
|
||||
Boolean supportLoginLimit();
|
||||
|
||||
Boolean pluginLoaded();
|
||||
|
@ -21,6 +21,7 @@ import io.dataease.plugins.util.PluginUtils;
|
||||
import io.dataease.plugins.xpack.cas.service.CasXpackService;
|
||||
import io.dataease.plugins.xpack.dingtalk.service.DingtalkXpackService;
|
||||
import io.dataease.plugins.xpack.lark.service.LarkXpackService;
|
||||
import io.dataease.plugins.xpack.larksuite.service.LarksuiteXpackService;
|
||||
import io.dataease.plugins.xpack.ldap.service.LdapXpackService;
|
||||
import io.dataease.plugins.xpack.loginlimit.dto.response.LoginLimitInfo;
|
||||
import io.dataease.plugins.xpack.loginlimit.service.LoginLimitXpackService;
|
||||
@ -108,6 +109,11 @@ public class AuthUserServiceImpl implements AuthUserService {
|
||||
return authMapper.findLarkUser(larkId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SysUserEntity getUserByLarksuiteId(String larksuiteId) {
|
||||
return authMapper.findLarksuiteUser(larksuiteId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> roles(Long userId) {
|
||||
return authMapper.roleCodes(userId);
|
||||
@ -221,6 +227,15 @@ public class AuthUserServiceImpl implements AuthUserService {
|
||||
return larkXpackService.isOpen();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean supportLarksuite() {
|
||||
Map<String, LarksuiteXpackService> beansOfType = SpringContextUtil.getApplicationContext().getBeansOfType((LarksuiteXpackService.class));
|
||||
if (beansOfType.keySet().size() == 0) return false;
|
||||
LarksuiteXpackService larkXpackService = SpringContextUtil.getBean(LarksuiteXpackService.class);
|
||||
if (ObjectUtils.isEmpty(larkXpackService)) return false;
|
||||
return larkXpackService.isOpen();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean supportLoginLimit() {
|
||||
Map<String, LoginLimitXpackService> beansOfType = SpringContextUtil.getApplicationContext().getBeansOfType((LoginLimitXpackService.class));
|
||||
|
@ -86,6 +86,7 @@ public class ShiroServiceImpl implements ShiroService {
|
||||
filterChainDefinitionMap.put("/api/auth/isOpenWecom", ANON);
|
||||
filterChainDefinitionMap.put("/api/auth/isOpenDingtalk", ANON);
|
||||
filterChainDefinitionMap.put("/api/auth/isOpenLark", ANON);
|
||||
filterChainDefinitionMap.put("/api/auth/isOpenLarksuite", ANON);
|
||||
filterChainDefinitionMap.put("/api/auth/getPublicKey", ANON);
|
||||
filterChainDefinitionMap.put("/api/pluginCommon/component/*", ANON);
|
||||
filterChainDefinitionMap.put("/api/pluginCommon/staticInfo/**", ANON);
|
||||
@ -101,6 +102,9 @@ public class ShiroServiceImpl implements ShiroService {
|
||||
filterChainDefinitionMap.put("/plugin/lark/callBack*", ANON);
|
||||
filterChainDefinitionMap.put("/plugin/lark/bind*", ANON);
|
||||
filterChainDefinitionMap.put("/plugin/lark/getQrParam", ANON);
|
||||
filterChainDefinitionMap.put("/plugin/larksuite/callBack*", ANON);
|
||||
filterChainDefinitionMap.put("/plugin/larksuite/bind*", ANON);
|
||||
filterChainDefinitionMap.put("/plugin/larksuite/getQrParam", ANON);
|
||||
filterChainDefinitionMap.put("/cas/reset/**", ANON);
|
||||
|
||||
filterChainDefinitionMap.put("/unauth", ANON);
|
||||
|
@ -56,6 +56,8 @@ public class SysUserController {
|
||||
private static final String DINGTALK = "dingtalk";
|
||||
private static final String LARK = "lark";
|
||||
|
||||
private static final String LARKSUITE = "larksuite";
|
||||
|
||||
@Resource
|
||||
private SysUserService sysUserService;
|
||||
|
||||
@ -246,13 +248,16 @@ public class SysUserController {
|
||||
AuthBindDTO dto = new AuthBindDTO();
|
||||
if (ObjectUtils.isEmpty(sysUserAssist)) return dto;
|
||||
if (authUserService.supportWecom() && StringUtils.isNotBlank(sysUserAssist.getWecomId())) {
|
||||
dto.setWecomBinded(true);
|
||||
dto.setWecomBound(true);
|
||||
}
|
||||
if (authUserService.supportDingtalk() && StringUtils.isNotBlank(sysUserAssist.getDingtalkId())) {
|
||||
dto.setDingtalkBinded(true);
|
||||
dto.setDingtalkBound(true);
|
||||
}
|
||||
if (authUserService.supportLark() && StringUtils.isNotBlank(sysUserAssist.getLarkId())) {
|
||||
dto.setLarkBinded(true);
|
||||
dto.setLarkBound(true);
|
||||
}
|
||||
if (authUserService.supportLarksuite() && StringUtils.isNotBlank(sysUserAssist.getLarksuiteId())) {
|
||||
dto.setLarksuiteBound(true);
|
||||
}
|
||||
return dto;
|
||||
}
|
||||
@ -260,9 +265,9 @@ public class SysUserController {
|
||||
@PostMapping("/unbindAssist/{type}")
|
||||
public void unbindAssist(@PathVariable("type") String type) {
|
||||
|
||||
Boolean valid = StringUtils.equals(WECOM, type) || StringUtils.equals(DINGTALK, type) || StringUtils.equals(LARK, type);
|
||||
Boolean valid = StringUtils.equals(WECOM, type) || StringUtils.equals(DINGTALK, type) || StringUtils.equals(LARK, type) || StringUtils.equals(LARKSUITE, type);
|
||||
if (!valid) {
|
||||
DEException.throwException("only [wecom, dingtalk, lark] is valid");
|
||||
DEException.throwException("only [wecom, dingtalk, lark, larksuite] is valid");
|
||||
}
|
||||
Long userId = AuthUtils.getUser().getUserId();
|
||||
SysUserAssist sysUserAssist = sysUserService.assistInfo(userId);
|
||||
@ -275,10 +280,13 @@ public class SysUserController {
|
||||
if (StringUtils.equals(LARK, type)) {
|
||||
sysUserAssist.setLarkId(null);
|
||||
}
|
||||
if (StringUtils.isBlank(sysUserAssist.getWecomId()) && StringUtils.isBlank(sysUserAssist.getDingtalkId()) && StringUtils.isBlank(sysUserAssist.getLarkId())) {
|
||||
if (StringUtils.equals(LARKSUITE, type)) {
|
||||
sysUserAssist.setLarksuiteId(null);
|
||||
}
|
||||
if (StringUtils.isBlank(sysUserAssist.getWecomId()) && StringUtils.isBlank(sysUserAssist.getDingtalkId()) && StringUtils.isBlank(sysUserAssist.getLarkId()) && StringUtils.isBlank(sysUserAssist.getLarksuiteId())) {
|
||||
sysUserService.changeUserFrom(userId, 0);
|
||||
}
|
||||
sysUserService.saveAssist(userId, sysUserAssist.getWecomId(), sysUserAssist.getDingtalkId(), sysUserAssist.getLarkId());
|
||||
sysUserService.saveAssist(userId, sysUserAssist.getWecomId(), sysUserAssist.getDingtalkId(), sysUserAssist.getLarkId(), sysUserAssist.getLarksuiteId());
|
||||
|
||||
}
|
||||
|
||||
|
@ -7,9 +7,11 @@ import java.io.Serializable;
|
||||
@Data
|
||||
public class AuthBindDTO implements Serializable {
|
||||
|
||||
private Boolean wecomBinded = false;
|
||||
private Boolean wecomBound = false;
|
||||
|
||||
private Boolean dingtalkBinded = false;
|
||||
private Boolean dingtalkBound = false;
|
||||
|
||||
private Boolean larkBinded = false;
|
||||
private Boolean larkBound = false;
|
||||
|
||||
private Boolean larksuiteBound = false;
|
||||
}
|
||||
|
@ -37,5 +37,6 @@ public interface AuthMapper {
|
||||
SysUserEntity findWecomUser(@Param("wecomId") String wecomId);
|
||||
SysUserEntity findDingtalkUser(@Param("dingtalkId") String dingtalkId);
|
||||
SysUserEntity findLarkUser(@Param("larkId") String larkId);
|
||||
SysUserEntity findLarksuiteUser(@Param("larksuiteId") String larksuiteId);
|
||||
|
||||
}
|
||||
|
@ -23,8 +23,7 @@
|
||||
|
||||
|
||||
<select id="findUser" resultMap="baseMap">
|
||||
select
|
||||
sys_user.user_id,
|
||||
select sys_user.user_id,
|
||||
sys_user.username,
|
||||
sys_user.nick_name,
|
||||
sys_user.dept_id,
|
||||
@ -37,104 +36,172 @@
|
||||
sys_user.`from`,
|
||||
sys_dept.name as dept_name
|
||||
from sys_user
|
||||
left join sys_dept on sys_user.dept_id=sys_dept.dept_id
|
||||
left join sys_dept on sys_user.dept_id = sys_dept.dept_id
|
||||
where user_id = #{userId}
|
||||
</select>
|
||||
|
||||
<select id="findUserByName" resultMap="baseMap">
|
||||
select user_id, username,nick_name, dept_id, password, enabled,email, phone, language ,is_admin, `from` from sys_user where username = #{username}
|
||||
select user_id,
|
||||
username,
|
||||
nick_name,
|
||||
dept_id,
|
||||
password,
|
||||
enabled,
|
||||
email,
|
||||
phone, language, is_admin, `from`
|
||||
from sys_user
|
||||
where username = #{username}
|
||||
</select>
|
||||
|
||||
<select id="findLdapUserByName" resultMap="baseMap">
|
||||
select user_id, username,nick_name, dept_id, password, enabled,email, phone, language ,is_admin, `from` from sys_user a where username = #{username} and a.from = 1
|
||||
select user_id,
|
||||
username,
|
||||
nick_name,
|
||||
dept_id,
|
||||
password,
|
||||
enabled,
|
||||
email,
|
||||
phone, language, is_admin, `from`
|
||||
from sys_user a
|
||||
where username = #{username} and a.from = 1
|
||||
</select>
|
||||
|
||||
|
||||
<select id="findCasUserByName" resultMap="baseMap">
|
||||
select user_id, username,nick_name, dept_id, password, enabled,email, phone, language ,is_admin, `from` from sys_user a where username = #{username} and a.from = 3
|
||||
select user_id,
|
||||
username,
|
||||
nick_name,
|
||||
dept_id,
|
||||
password,
|
||||
enabled,
|
||||
email,
|
||||
phone, language, is_admin, `from`
|
||||
from sys_user a
|
||||
where username = #{username} and a.from = 3
|
||||
</select>
|
||||
|
||||
<select id="findUserBySub" resultMap="baseMap">
|
||||
select user_id, username,nick_name, dept_id, password, enabled,email, phone, language ,is_admin, `from` from sys_user where sub = #{sub} and `from` = #{userFrom}
|
||||
select user_id,
|
||||
username,
|
||||
nick_name,
|
||||
dept_id,
|
||||
password,
|
||||
enabled,
|
||||
email,
|
||||
phone, language, is_admin, `from`
|
||||
from sys_user
|
||||
where sub = #{sub}
|
||||
and `from` = #{userFrom}
|
||||
</select>
|
||||
|
||||
<select id="roleCodes" resultType="String">
|
||||
select r.role_id from sys_role r
|
||||
left join sys_users_roles sur on sur.role_id = r.role_id
|
||||
where sur.user_id = #{userId}
|
||||
select r.role_id
|
||||
from sys_role r
|
||||
left join sys_users_roles sur on sur.role_id = r.role_id
|
||||
where sur.user_id = #{userId}
|
||||
</select>
|
||||
|
||||
<select id="permissions" resultType="String">
|
||||
SELECT
|
||||
sys_menu.permission
|
||||
FROM
|
||||
( SELECT GET_V_AUTH_MODEL_ID_P_USE ( #{userId}, 'menu' ) cids ) t,
|
||||
sys_menu
|
||||
WHERE
|
||||
FIND_IN_SET( sys_menu.menu_id, cids ) UNION ALL
|
||||
SELECT
|
||||
plugin_sys_menu.permission
|
||||
FROM
|
||||
( SELECT GET_V_AUTH_MODEL_ID_P_USE ( #{userId}, 'menu' ) cids ) t,
|
||||
plugin_sys_menu
|
||||
WHERE
|
||||
FIND_IN_SET( plugin_sys_menu.menu_id, cids )
|
||||
SELECT sys_menu.permission
|
||||
FROM (SELECT GET_V_AUTH_MODEL_ID_P_USE(#{userId}, 'menu') cids) t,
|
||||
sys_menu
|
||||
WHERE FIND_IN_SET(sys_menu.menu_id, cids)
|
||||
UNION ALL
|
||||
SELECT plugin_sys_menu.permission
|
||||
FROM (SELECT GET_V_AUTH_MODEL_ID_P_USE(#{userId}, 'menu') cids) t,
|
||||
plugin_sys_menu
|
||||
WHERE FIND_IN_SET(plugin_sys_menu.menu_id, cids)
|
||||
</select>
|
||||
|
||||
<select id="userMenuIds" resultType="Long">
|
||||
select srm.menu_id
|
||||
from sys_roles_menus srm
|
||||
left join sys_users_roles sur on sur.role_id = srm.role_id
|
||||
left join sys_users_roles sur on sur.role_id = srm.role_id
|
||||
where sur.user_id = #{userId}
|
||||
</select>
|
||||
|
||||
<select id="roles" resultMap="roleMap">
|
||||
select r.role_id, r.name
|
||||
from sys_role r
|
||||
left join sys_users_roles sur on sur.role_id = r.role_id
|
||||
left join sys_users_roles sur on sur.role_id = r.role_id
|
||||
where sur.user_id = #{userId}
|
||||
</select>
|
||||
|
||||
|
||||
<select id="permissionsAll" resultType="String">
|
||||
SELECT
|
||||
sys_menu.permission
|
||||
FROM
|
||||
sys_menu UNION ALL
|
||||
SELECT
|
||||
plugin_sys_menu.permission
|
||||
FROM
|
||||
plugin_sys_menu
|
||||
SELECT sys_menu.permission
|
||||
FROM sys_menu
|
||||
UNION ALL
|
||||
SELECT plugin_sys_menu.permission
|
||||
FROM plugin_sys_menu
|
||||
</select>
|
||||
|
||||
<select id="findWecomUser" resultMap="baseMap">
|
||||
select
|
||||
u.user_id, username,nick_name, dept_id, password, enabled,email, phone, language ,is_admin, `from`
|
||||
select u.user_id,
|
||||
username,
|
||||
nick_name,
|
||||
dept_id,
|
||||
password,
|
||||
enabled,
|
||||
email,
|
||||
phone, language, is_admin, `from`
|
||||
from
|
||||
sys_user_assist a
|
||||
left join
|
||||
sys_user u on u.user_id = a.user_id
|
||||
left join
|
||||
sys_user u
|
||||
on u.user_id = a.user_id
|
||||
where a.wecom_id = #{wecomId}
|
||||
</select>
|
||||
|
||||
<select id="findDingtalkUser" resultMap="baseMap">
|
||||
select
|
||||
u.user_id, username,nick_name, dept_id, password, enabled,email, phone, language ,is_admin, `from`
|
||||
select u.user_id,
|
||||
username,
|
||||
nick_name,
|
||||
dept_id,
|
||||
password,
|
||||
enabled,
|
||||
email,
|
||||
phone, language, is_admin, `from`
|
||||
from
|
||||
sys_user_assist a
|
||||
left join
|
||||
sys_user u on u.user_id = a.user_id
|
||||
sys_user u
|
||||
on u.user_id = a.user_id
|
||||
where a.dingtalk_id = #{dingtalkId}
|
||||
</select>
|
||||
|
||||
<select id="findLarkUser" resultMap="baseMap">
|
||||
select
|
||||
u.user_id, username,nick_name, dept_id, password, enabled,email, phone, language ,is_admin, `from`
|
||||
select u.user_id,
|
||||
username,
|
||||
nick_name,
|
||||
dept_id,
|
||||
password,
|
||||
enabled,
|
||||
email,
|
||||
phone, language, is_admin, `from`
|
||||
from
|
||||
sys_user_assist a
|
||||
left join
|
||||
sys_user u on u.user_id = a.user_id
|
||||
sys_user u
|
||||
on u.user_id = a.user_id
|
||||
where a.lark_id = #{larkId}
|
||||
</select>
|
||||
|
||||
<select id="findLarksuiteUser" resultMap="baseMap">
|
||||
select u.user_id,
|
||||
username,
|
||||
nick_name,
|
||||
dept_id,
|
||||
password,
|
||||
enabled,
|
||||
email,
|
||||
phone, language, is_admin, `from`
|
||||
from
|
||||
sys_user_assist a
|
||||
left join
|
||||
sys_user u
|
||||
on u.user_id = a.user_id
|
||||
where a.larksuite_id = #{larksuiteId}
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
@ -185,7 +185,7 @@ public class XDingtalkServer {
|
||||
sysUserAssist.setUserId(Long.parseLong(state));
|
||||
}
|
||||
sysUserAssist.setDingtalkId(userId);
|
||||
sysUserService.saveAssist(sysUserAssist.getUserId(), sysUserAssist.getWecomId(), sysUserAssist.getDingtalkId(), sysUserAssist.getLarkId());
|
||||
sysUserService.saveAssist(sysUserAssist.getUserId(), sysUserAssist.getWecomId(), sysUserAssist.getDingtalkId(), sysUserAssist.getLarkId(), sysUserAssist.getLarksuiteId());
|
||||
response.sendRedirect(url);
|
||||
} catch (Exception e) {
|
||||
|
||||
|
@ -185,7 +185,7 @@ public class XLarkServer {
|
||||
sysUserAssist.setUserId(Long.parseLong(state));
|
||||
}
|
||||
sysUserAssist.setLarkId(userId);
|
||||
sysUserService.saveAssist(sysUserAssist.getUserId(), sysUserAssist.getWecomId(), sysUserAssist.getDingtalkId(), sysUserAssist.getLarkId());
|
||||
sysUserService.saveAssist(sysUserAssist.getUserId(), sysUserAssist.getWecomId(), sysUserAssist.getDingtalkId(), sysUserAssist.getLarkId(), sysUserAssist.getLarksuiteId());
|
||||
response.sendRedirect(url);
|
||||
} catch (Exception e) {
|
||||
|
||||
|
@ -0,0 +1,206 @@
|
||||
package io.dataease.plugins.server;
|
||||
|
||||
import io.dataease.auth.entity.SysUserEntity;
|
||||
import io.dataease.auth.entity.TokenInfo;
|
||||
import io.dataease.auth.service.AuthUserService;
|
||||
import io.dataease.auth.util.JWTUtils;
|
||||
import io.dataease.commons.constants.SysLogConstants;
|
||||
import io.dataease.commons.exception.DEException;
|
||||
import io.dataease.commons.utils.DeLogUtils;
|
||||
import io.dataease.commons.utils.LogUtil;
|
||||
import io.dataease.commons.utils.ServletUtils;
|
||||
import io.dataease.plugins.common.base.domain.SysUserAssist;
|
||||
import io.dataease.plugins.config.SpringContextUtil;
|
||||
import io.dataease.plugins.xpack.display.dto.response.SysSettingDto;
|
||||
import io.dataease.plugins.xpack.lark.dto.entity.LarkQrResult;
|
||||
import io.dataease.plugins.xpack.lark.dto.response.LarkInfo;
|
||||
import io.dataease.plugins.xpack.larksuite.dto.entity.UserData;
|
||||
import io.dataease.plugins.xpack.larksuite.dto.response.LarksuiteUserResult;
|
||||
import io.dataease.plugins.xpack.larksuite.service.LarksuiteXpackService;
|
||||
import io.dataease.service.sys.SysUserService;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
import springfox.documentation.annotations.ApiIgnore;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.Cookie;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.URLEncoder;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@ApiIgnore
|
||||
@RequestMapping("/plugin/larksuite")
|
||||
@Controller
|
||||
public class XLarksuiteServer {
|
||||
|
||||
@Resource
|
||||
private AuthUserService authUserService;
|
||||
@Resource
|
||||
private SysUserService sysUserService;
|
||||
|
||||
@ResponseBody
|
||||
@GetMapping("/info")
|
||||
public LarkInfo getLarkInfo() {
|
||||
LarksuiteXpackService larkXpackService = SpringContextUtil.getBean(LarksuiteXpackService.class);
|
||||
return larkXpackService.info();
|
||||
}
|
||||
|
||||
@ResponseBody
|
||||
@RequiresPermissions("sysparam:read")
|
||||
@PostMapping("/save")
|
||||
public void save(@RequestBody List<SysSettingDto> settings) {
|
||||
LarksuiteXpackService larkXpackService = SpringContextUtil.getBean(LarksuiteXpackService.class);
|
||||
larkXpackService.save(settings);
|
||||
}
|
||||
|
||||
@ResponseBody
|
||||
@PostMapping("/testConn")
|
||||
public void testConn(@RequestBody LarkInfo larkInfo) {
|
||||
LarksuiteXpackService larkXpackService = SpringContextUtil.getBean(LarksuiteXpackService.class);
|
||||
try {
|
||||
larkXpackService.testConn(larkInfo);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@ResponseBody
|
||||
@PostMapping("/getQrParam")
|
||||
public LarkQrResult getQrParam() {
|
||||
LarksuiteXpackService larkXpackService = SpringContextUtil.getBean(LarksuiteXpackService.class);
|
||||
return larkXpackService.getQrParam();
|
||||
}
|
||||
|
||||
@GetMapping("/callBack")
|
||||
public ModelAndView callBack(@RequestParam("code") String code, @RequestParam("state") String state) {
|
||||
ModelAndView modelAndView = new ModelAndView("redirect:/");
|
||||
HttpServletResponse response = ServletUtils.response();
|
||||
LarksuiteXpackService larksuiteXpackService = null;
|
||||
try {
|
||||
Map<String, LarksuiteXpackService> beansOfType = SpringContextUtil.getApplicationContext().getBeansOfType((LarksuiteXpackService.class));
|
||||
if (beansOfType.keySet().size() == 0) {
|
||||
DEException.throwException("缺少国际飞书插件");
|
||||
}
|
||||
larksuiteXpackService = SpringContextUtil.getBean(LarksuiteXpackService.class);
|
||||
Boolean isOpen = larksuiteXpackService.isOpen();
|
||||
if (!isOpen) {
|
||||
DEException.throwException("未开启国际飞书");
|
||||
}
|
||||
LarksuiteUserResult larksuiteUserResult = larksuiteXpackService.userInfo(code, state, false);
|
||||
UserData larkUserInfo = larksuiteUserResult.getData();
|
||||
String username = larkUserInfo.getUser_id();
|
||||
SysUserEntity sysUserEntity = authUserService.getUserByLarksuiteId(username);
|
||||
if (null == sysUserEntity) {
|
||||
String email = StringUtils.isNotBlank(larkUserInfo.getEmail()) ? larkUserInfo.getEmail() : (username + "@larksuite.work");
|
||||
sysUserService.validateExistUser(username, larkUserInfo.getName(), email);
|
||||
sysUserService.saveLarksuiteCUser(larkUserInfo, email);
|
||||
sysUserEntity = authUserService.getUserByLarkId(username);
|
||||
}
|
||||
TokenInfo tokenInfo = TokenInfo.builder().userId(sysUserEntity.getUserId()).username(sysUserEntity.getUsername()).build();
|
||||
String realPwd = sysUserEntity.getPassword();
|
||||
String token = JWTUtils.sign(tokenInfo, realPwd);
|
||||
ServletUtils.setToken(token);
|
||||
|
||||
DeLogUtils.save(SysLogConstants.OPERATE_TYPE.LOGIN, SysLogConstants.SOURCE_TYPE.USER, sysUserEntity.getUserId(), null, null, null);
|
||||
|
||||
Cookie cookie_token = new Cookie("Authorization", token);
|
||||
cookie_token.setPath("/");
|
||||
|
||||
response.addCookie(cookie_token);
|
||||
} catch (Exception e) {
|
||||
|
||||
String msg = e.getMessage();
|
||||
if (null != e.getCause()) {
|
||||
msg = e.getCause().getMessage();
|
||||
}
|
||||
try {
|
||||
msg = URLEncoder.encode(msg, "UTF-8");
|
||||
LogUtil.error(e);
|
||||
Cookie cookie_error = new Cookie("LarksuiteError", msg);
|
||||
cookie_error.setPath("/");
|
||||
response.addCookie(cookie_error);
|
||||
return modelAndView;
|
||||
} catch (UnsupportedEncodingException e1) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
return modelAndView;
|
||||
}
|
||||
|
||||
private void bindError(HttpServletResponse response, String url, String errorMsg) {
|
||||
Cookie cookie_error = new Cookie("LarksuiteError", errorMsg);
|
||||
cookie_error.setPath("/");
|
||||
response.addCookie(cookie_error);
|
||||
try {
|
||||
response.sendRedirect(url);
|
||||
} catch (IOException e) {
|
||||
LogUtil.error(e.getMessage(), e);
|
||||
DEException.throwException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@GetMapping("/bind")
|
||||
public void bind(@RequestParam("code") String code, @RequestParam("state") String state) {
|
||||
|
||||
HttpServletResponse response = ServletUtils.response();
|
||||
String url = "/#person-info/index";
|
||||
|
||||
LarksuiteXpackService larksuiteXpackService = null;
|
||||
try {
|
||||
SysUserEntity userEntity = authUserService.getUserById(Long.parseLong(state));
|
||||
if (ObjectUtils.isEmpty(userEntity)) {
|
||||
bindError(response, url, "绑定用户不存在");
|
||||
return;
|
||||
}
|
||||
SysUserAssist sysUserAssist = sysUserService.assistInfo(Long.parseLong(state));
|
||||
if (ObjectUtils.isNotEmpty(sysUserAssist) && StringUtils.isNotBlank(sysUserAssist.getLarksuiteId())) {
|
||||
bindError(response, url, "目标用户已绑定其他国际飞书账号");
|
||||
return;
|
||||
}
|
||||
|
||||
Boolean isOpen = authUserService.supportLarksuite();
|
||||
if (!isOpen) {
|
||||
DEException.throwException("未开启国际飞书");
|
||||
}
|
||||
larksuiteXpackService = SpringContextUtil.getBean(LarksuiteXpackService.class);
|
||||
LarksuiteUserResult larksuiteUserResult = larksuiteXpackService.userInfo(code, state, true);
|
||||
UserData larkUserInfo = larksuiteUserResult.getData();
|
||||
String userId = larkUserInfo.getUser_id();
|
||||
|
||||
|
||||
SysUserEntity sysUserEntity = authUserService.getUserByLarksuiteId(userId);
|
||||
if (null != sysUserEntity) {
|
||||
bindError(response, url, "当前国际飞书账号已绑定其他DE用户");
|
||||
return;
|
||||
}
|
||||
|
||||
if (ObjectUtils.isEmpty(sysUserAssist)) {
|
||||
sysUserAssist = new SysUserAssist();
|
||||
sysUserAssist.setUserId(Long.parseLong(state));
|
||||
}
|
||||
sysUserAssist.setLarksuiteId(userId);
|
||||
sysUserService.saveAssist(sysUserAssist.getUserId(), sysUserAssist.getWecomId(), sysUserAssist.getDingtalkId(), sysUserAssist.getLarkId(), sysUserAssist.getLarksuiteId());
|
||||
response.sendRedirect(url);
|
||||
} catch (Exception e) {
|
||||
|
||||
String msg = e.getMessage();
|
||||
if (null != e.getCause()) {
|
||||
msg = e.getCause().getMessage();
|
||||
}
|
||||
try {
|
||||
msg = URLEncoder.encode(msg, "UTF-8");
|
||||
LogUtil.error(e);
|
||||
bindError(response, url, msg);
|
||||
} catch (UnsupportedEncodingException e1) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -193,7 +193,7 @@ public class XWecomServer {
|
||||
sysUserAssist.setUserId(Long.parseLong(state));
|
||||
}
|
||||
sysUserAssist.setWecomId(userId);
|
||||
sysUserService.saveAssist(sysUserAssist.getUserId(), sysUserAssist.getWecomId(), sysUserAssist.getDingtalkId(), sysUserAssist.getLarkId());
|
||||
sysUserService.saveAssist(sysUserAssist.getUserId(), sysUserAssist.getWecomId(), sysUserAssist.getDingtalkId(), sysUserAssist.getLarkId(), sysUserAssist.getLarksuiteId());
|
||||
|
||||
response.sendRedirect(url);
|
||||
} catch (Exception e) {
|
||||
|
@ -21,6 +21,7 @@ import io.dataease.plugins.common.base.mapper.SysUsersRolesMapper;
|
||||
import io.dataease.plugins.common.entity.XpackLdapUserEntity;
|
||||
import io.dataease.plugins.xpack.dingtalk.dto.response.DingUserEntity;
|
||||
import io.dataease.plugins.xpack.lark.dto.entity.LarkUserInfo;
|
||||
import io.dataease.plugins.xpack.larksuite.dto.entity.UserData;
|
||||
import io.dataease.plugins.xpack.oidc.dto.SSOUserInfo;
|
||||
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
@ -107,7 +108,7 @@ public class SysUserService {
|
||||
|
||||
SysUserAssist sysUserAssist = request.getSysUserAssist();
|
||||
if (ObjectUtils.isNotEmpty(sysUserAssist) && (StringUtils.isNotBlank(sysUserAssist.getWecomId()) || StringUtils.isNotBlank(sysUserAssist.getDingtalkId()) || StringUtils.isNotBlank(sysUserAssist.getLarkId()))) {
|
||||
saveAssist(userId, sysUserAssist.getWecomId(), sysUserAssist.getDingtalkId(), sysUserAssist.getLarkId());
|
||||
saveAssist(userId, sysUserAssist.getWecomId(), sysUserAssist.getDingtalkId(), sysUserAssist.getLarkId(), sysUserAssist.getLarksuiteId());
|
||||
}
|
||||
|
||||
return insert;
|
||||
@ -157,7 +158,7 @@ public class SysUserService {
|
||||
sysUser.setIsAdmin(false);
|
||||
sysUser.setSub(userId);
|
||||
sysUserMapper.insert(sysUser);
|
||||
Optional.ofNullable(findOne(sysUser)).ifPresent(u -> saveAssist(u.getUserId(), u.getUsername(), null, null));
|
||||
Optional.ofNullable(findOne(sysUser)).ifPresent(u -> saveAssist(u.getUserId(), u.getUsername(), null, null, null));
|
||||
|
||||
}
|
||||
|
||||
@ -180,7 +181,7 @@ public class SysUserService {
|
||||
sysUser.setSub(dingUserEntity.getUnionid());
|
||||
sysUser.setPhone(dingUserEntity.getMobile());
|
||||
sysUserMapper.insert(sysUser);
|
||||
Optional.ofNullable(findOne(sysUser)).ifPresent(u -> saveAssist(u.getUserId(), null, u.getUsername(), null));
|
||||
Optional.ofNullable(findOne(sysUser)).ifPresent(u -> saveAssist(u.getUserId(), null, u.getUsername(), null, null));
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@ -202,7 +203,29 @@ public class SysUserService {
|
||||
sysUser.setSub(larkUserInfo.getSub());
|
||||
sysUser.setPhone(larkUserInfo.getMobile());
|
||||
sysUserMapper.insert(sysUser);
|
||||
Optional.ofNullable(findOne(sysUser)).ifPresent(u -> saveAssist(u.getUserId(), null, null, u.getUsername()));
|
||||
Optional.ofNullable(findOne(sysUser)).ifPresent(u -> saveAssist(u.getUserId(), null, null, u.getUsername(), null));
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void saveLarksuiteCUser(UserData larkUserInfo, String email) {
|
||||
long now = System.currentTimeMillis();
|
||||
SysUser sysUser = new SysUser();
|
||||
|
||||
sysUser.setUsername(larkUserInfo.getUser_id());
|
||||
sysUser.setNickName(larkUserInfo.getName());
|
||||
sysUser.setEmail(email);
|
||||
sysUser.setPassword(CodingUtil.md5(DEFAULT_PWD));
|
||||
sysUser.setCreateTime(now);
|
||||
sysUser.setUpdateTime(now);
|
||||
|
||||
sysUser.setEnabled(1L);
|
||||
sysUser.setLanguage("zh_CN");
|
||||
sysUser.setFrom(7);
|
||||
sysUser.setIsAdmin(false);
|
||||
sysUser.setSub(larkUserInfo.getUnion_id());
|
||||
sysUser.setPhone(larkUserInfo.getMobile());
|
||||
sysUserMapper.insert(sysUser);
|
||||
Optional.ofNullable(findOne(sysUser)).ifPresent(u -> saveAssist(u.getUserId(), null, null, null, u.getUsername()));
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@ -299,7 +322,7 @@ public class SysUserService {
|
||||
|
||||
SysUserAssist sysUserAssist = request.getSysUserAssist();
|
||||
if (ObjectUtils.isNotEmpty(sysUserAssist) && (StringUtils.isNotBlank(sysUserAssist.getWecomId()) || StringUtils.isNotBlank(sysUserAssist.getDingtalkId()) || StringUtils.isNotBlank(sysUserAssist.getLarkId()))) {
|
||||
saveAssist(user.getUserId(), sysUserAssist.getWecomId(), sysUserAssist.getDingtalkId(), sysUserAssist.getLarkId());
|
||||
saveAssist(user.getUserId(), sysUserAssist.getWecomId(), sysUserAssist.getDingtalkId(), sysUserAssist.getLarkId(), sysUserAssist.getLarksuiteId());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
@ -550,12 +573,13 @@ public class SysUserService {
|
||||
sysUserAssistMapper.insertSelective(sysUserAssist);
|
||||
}
|
||||
|
||||
public void saveAssist(Long userId, String wecomId, String dingtlkId, String larkId) {
|
||||
public void saveAssist(Long userId, String wecomId, String dingtlkId, String larkId, String larksuiteId) {
|
||||
SysUserAssist existAssist = sysUserAssistMapper.selectByPrimaryKey(userId);
|
||||
if (ObjectUtils.isNotEmpty(existAssist)) {
|
||||
existAssist.setWecomId(wecomId);
|
||||
existAssist.setDingtalkId(dingtlkId);
|
||||
existAssist.setLarkId(larkId);
|
||||
existAssist.setLarksuiteId(larksuiteId);
|
||||
sysUserAssistMapper.updateByPrimaryKey(existAssist);
|
||||
return;
|
||||
}
|
||||
@ -564,6 +588,7 @@ public class SysUserService {
|
||||
sysUserAssist.setWecomId(wecomId);
|
||||
sysUserAssist.setDingtalkId(dingtlkId);
|
||||
sysUserAssist.setLarkId(larkId);
|
||||
sysUserAssist.setLarksuiteId(larksuiteId);
|
||||
sysUserAssistMapper.insert(sysUserAssist);
|
||||
}
|
||||
|
||||
|
@ -1,16 +1,33 @@
|
||||
UPDATE `sys_menu` set `component` = REPLACE(`component`, 'SysParam', 'sysParam') where (`component` like '%SysParam%');
|
||||
UPDATE `sys_menu`
|
||||
set `component` = REPLACE(`component`, 'SysParam', 'sysParam')
|
||||
where (`component` like '%SysParam%');
|
||||
|
||||
UPDATE `sys_menu` set `component` = REPLACE(`component`, 'privateForm', 'PrivateForm') where (`component` like '%privateForm%');
|
||||
UPDATE `sys_menu`
|
||||
set `component` = REPLACE(`component`, 'privateForm', 'PrivateForm')
|
||||
where (`component` like '%privateForm%');
|
||||
|
||||
UPDATE `sys_menu` set `component` = REPLACE(`component`, 'personPwd', 'PersonPwd') where (`component` like '%personPwd%');
|
||||
UPDATE `sys_menu`
|
||||
set `component` = REPLACE(`component`, 'personPwd', 'PersonPwd')
|
||||
where (`component` like '%personPwd%');
|
||||
|
||||
UPDATE `sys_menu` set `component` = REPLACE(`component`, 'dataset', 'Dataset') where (`component` = 'system/task/dataset');
|
||||
UPDATE `sys_menu`
|
||||
set `component` = REPLACE(`component`, 'dataset', 'Dataset')
|
||||
where (`component` = 'system/task/dataset');
|
||||
|
||||
UPDATE `sys_menu` set `component` = REPLACE(`component`, 'form', 'Form') where (`component` = 'system/task/form');
|
||||
UPDATE `sys_menu`
|
||||
set `component` = REPLACE(`component`, 'form', 'Form')
|
||||
where (`component` = 'system/task/form');
|
||||
|
||||
ALTER TABLE `dataset_table_field` ADD COLUMN `date_format` VARCHAR(255) NULL AFTER `accuracy`;
|
||||
ALTER TABLE `dataset_table_field`
|
||||
ADD COLUMN `date_format` VARCHAR(255) NULL AFTER `accuracy`;
|
||||
|
||||
ALTER TABLE `sys_task_email` ADD COLUMN `view_data_range` VARCHAR(255) NULL DEFAULT 'view' AFTER `reci_users`;
|
||||
ALTER TABLE `sys_task_email`
|
||||
ADD COLUMN `view_data_range` VARCHAR(255) NULL DEFAULT 'view' AFTER `reci_users`;
|
||||
|
||||
|
||||
UPDATE `sys_msg_type` set `type_name` = 'i18n_msg_type_dataset_sync_failed' WHERE (`msg_type_id` = 6);
|
||||
UPDATE `sys_msg_type`
|
||||
set `type_name` = 'i18n_msg_type_dataset_sync_failed'
|
||||
WHERE (`msg_type_id` = 6);
|
||||
|
||||
ALTER TABLE `sys_user_assist`
|
||||
ADD COLUMN `larksuite_id` VARCHAR(255) NULL DEFAULT NULL AFTER `lark_id`;
|
||||
|
@ -121,6 +121,13 @@ export function larkStatus() {
|
||||
})
|
||||
}
|
||||
|
||||
export function larksuiteStatus() {
|
||||
return request({
|
||||
url: '/api/auth/isOpenLarksuite',
|
||||
method: 'post'
|
||||
})
|
||||
}
|
||||
|
||||
export function pluginLoaded() {
|
||||
return request({
|
||||
url: '/api/auth/isPluginLoaded',
|
||||
|
@ -52,7 +52,8 @@ export default {
|
||||
if (res) {
|
||||
const Fn = Function
|
||||
const dynamicCode = res.data || res
|
||||
this.mode = new Fn(`return ${dynamicCode}`)()
|
||||
const component = new Fn(`return ${dynamicCode}`)()
|
||||
this.mode = component.default || component
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -434,10 +434,10 @@ export default {
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
parentWidthOffset(){
|
||||
if(this.canvasId==='canvas-main'){
|
||||
parentWidthOffset() {
|
||||
if (this.canvasId === 'canvas-main') {
|
||||
return 0
|
||||
}else{
|
||||
} else {
|
||||
return this.parentWidthTabOffset
|
||||
}
|
||||
},
|
||||
@ -677,7 +677,9 @@ export default {
|
||||
'tabMoveInActiveId',
|
||||
'tabActiveTabNameMap',
|
||||
'mousePointShadowMap',
|
||||
'tabMoveOutComponentId'
|
||||
'tabMoveOutComponentId',
|
||||
'tabCollisionActiveId',
|
||||
'tabMoveInActiveId'
|
||||
])
|
||||
},
|
||||
watch: {
|
||||
@ -1495,14 +1497,14 @@ export default {
|
||||
const targetCanvasScale = this.curCanvasScaleMap['canvas-main']
|
||||
// 按照阴影位置定位
|
||||
this.element.style.left = (this.mousePointShadowMap.mouseX - (this.mousePointShadowMap.width)) / targetCanvasScale.scalePointWidth
|
||||
this.element.style.top = (this.mousePointShadowMap.mouseY - (this.mousePointShadowMap.height / 2))/ targetCanvasScale.scalePointHeight
|
||||
this.element.style.width = this.mousePointShadowMap.width/ targetCanvasScale.scalePointWidth
|
||||
this.element.style.height = this.mousePointShadowMap.height/ targetCanvasScale.scalePointHeight
|
||||
this.element.style.top = (this.mousePointShadowMap.mouseY - (this.mousePointShadowMap.height / 2)) / targetCanvasScale.scalePointHeight
|
||||
this.element.style.width = this.mousePointShadowMap.width / targetCanvasScale.scalePointWidth
|
||||
this.element.style.height = this.mousePointShadowMap.height / targetCanvasScale.scalePointHeight
|
||||
|
||||
if (this.element.auxiliaryMatrix) {
|
||||
this.element.x = Math.round(this.element.style.left / targetCanvasScale.matrixStyleOriginWidth) + 1
|
||||
this.element.y = Math.round(this.element.style.top / targetCanvasScale.matrixStyleOriginHeight) + 1
|
||||
this.element.sizex = Math.round(this.element.style.width /targetCanvasScale.matrixStyleOriginWidth)
|
||||
this.element.sizex = Math.round(this.element.style.width / targetCanvasScale.matrixStyleOriginWidth)
|
||||
this.element.sizey = Math.round(this.element.style.height / targetCanvasScale.matrixStyleOriginHeight)
|
||||
this.recordMatrixCurShadowStyle(targetCanvasScale)
|
||||
}
|
||||
@ -1922,8 +1924,8 @@ export default {
|
||||
const left = this.left
|
||||
const width = this.width
|
||||
const height = this.height
|
||||
// tab 移入检测开启
|
||||
if (this.isTabMoveCheck) {
|
||||
// tab 移入检测开启 tab组件不能相互移入另一个tab组件
|
||||
if (this.isTabMoveCheck && this.element.type !== 'de-tabs') {
|
||||
const nodes = this.$el.parentNode.childNodes // 获取当前父节点下所有子节点
|
||||
for (const item of nodes) {
|
||||
if (
|
||||
@ -1953,7 +1955,7 @@ export default {
|
||||
const brAndBr = (collisionT + collisionH) >= (top + height) && (collisionL + collisionW) >= (left + width)
|
||||
if (tfAndTf && bfAndBf && trAndTr && brAndBr) {
|
||||
this.$store.commit('setTabCollisionActiveId', item.getAttribute('component-id'))
|
||||
} else {
|
||||
} else if (this.tabCollisionActiveId === item.getAttribute('component-id')) {
|
||||
this.$store.commit('setTabCollisionActiveId', null)
|
||||
}
|
||||
|
||||
@ -1974,7 +1976,7 @@ export default {
|
||||
const activeBrAndBr = (activeT + activeH) >= (top + height) && (activeL + activeW) >= (left + width)
|
||||
if (activeTfAndTf && activeBfAndBf && activeTrAndTr && activeBrAndBr) {
|
||||
this.$store.commit('setTabMoveInActiveId', item.getAttribute('component-id'))
|
||||
} else {
|
||||
} else if (this.tabMoveInActiveId === item.getAttribute('component-id')) {
|
||||
this.$store.commit('setTabMoveInActiveId', null)
|
||||
}
|
||||
|
||||
|
@ -268,7 +268,6 @@ export default {
|
||||
})
|
||||
},
|
||||
handleDragOver(e) {
|
||||
// console.log("handleDragOver-"+this.canvasId)
|
||||
e.preventDefault()
|
||||
e.dataTransfer.dropEffect = 'copy'
|
||||
this.$refs[this.editorRefName].handleDragOver(e)
|
||||
|
@ -1482,7 +1482,6 @@ export default {
|
||||
}
|
||||
},
|
||||
handleDragOver(e) {
|
||||
console.log('handleDragOver--x='+e.pageX+';y='+e.pageY)
|
||||
this.dragComponentInfo.shadowStyle.x = e.pageX - 220
|
||||
this.dragComponentInfo.shadowStyle.y = e.pageY - 90 + this.scrollTop
|
||||
this.dragComponentInfo.style.left = this.dragComponentInfo.shadowStyle.x / this.scalePointWidth
|
||||
|
@ -45,14 +45,6 @@
|
||||
{{ $t('detabs.eidttitle') }}
|
||||
</el-dropdown-item>
|
||||
|
||||
<el-dropdown-item :command="beforeHandleCommand('selectView', item)">
|
||||
{{ $t('detabs.selectview') }}
|
||||
</el-dropdown-item>
|
||||
|
||||
<el-dropdown-item :command="beforeHandleCommand('selectOthers', item)">
|
||||
{{ $t('detabs.selectOthers') }}
|
||||
</el-dropdown-item>
|
||||
|
||||
<el-dropdown-item
|
||||
v-if=" element.options.tabList.length > 1"
|
||||
:command="beforeHandleCommand('deleteCur', item)"
|
||||
|
@ -1437,7 +1437,7 @@ export default {
|
||||
field_rename: 'Rename Field',
|
||||
params_work: 'Effective only when editing SQL',
|
||||
sql_variable_limit_1: '1、SQL variables can only be used in where conditions',
|
||||
sql_variable_limit_2: "2、Example:select * from table_name where column_name1='${parm_name1}' and column_name2 in '${parm_name2}'",
|
||||
sql_variable_limit_2: "2、Example:select * from table_name where column_name1='${param_name1}' and column_name2 in '${param_name2}'",
|
||||
select_year: 'Select Year',
|
||||
select_month: 'Select Month',
|
||||
select_date: 'Select Date',
|
||||
@ -2361,7 +2361,8 @@ export default {
|
||||
channel_email_msg: 'Email',
|
||||
channel_wecom_msg: 'Wecom',
|
||||
channel_dingtalk_msg: 'Dingtalk',
|
||||
channel_lark_msg: 'Lark'
|
||||
channel_lark_msg: 'Lark',
|
||||
channel_larksuite_msg: 'Larksuite'
|
||||
},
|
||||
denumberrange: {
|
||||
label: 'Number range',
|
||||
@ -2477,6 +2478,7 @@ export default {
|
||||
wecom: 'Wecom',
|
||||
dingtalk: 'Dingtalk',
|
||||
lark: 'Lark',
|
||||
larksuite: 'Larksuite',
|
||||
pixel: 'Pixel',
|
||||
default: 'Default',
|
||||
custom: 'Custom',
|
||||
|
@ -1437,7 +1437,7 @@ export default {
|
||||
field_rename: '字段重命名',
|
||||
params_work: '僅在編輯 sql 時生效',
|
||||
sql_variable_limit_1: '1、SQL變數只能在WHERE條件中使用',
|
||||
sql_variable_limit_2: "2、示例:select * from table_name where column_name1='${parm_name1}' and column_name2 in '${parm_name2}'",
|
||||
sql_variable_limit_2: "2、示例:select * from table_name where column_name1='${param_name1}' and column_name2 in '${param_name2}'",
|
||||
selesql_variable_limit_2ct_year: '選擇年',
|
||||
select_month: '選擇月',
|
||||
select_date: '選擇日期',
|
||||
@ -2362,7 +2362,8 @@ export default {
|
||||
channel_email_msg: '郵件提醒',
|
||||
channel_wecom_msg: '企業微信',
|
||||
channel_dingtalk_msg: '釘釘提醒',
|
||||
channel_lark_msg: '飛書提醒'
|
||||
channel_lark_msg: '飛書提醒',
|
||||
channel_larksuite_msg: '國際飛書'
|
||||
},
|
||||
denumberrange: {
|
||||
label: '數值區間',
|
||||
@ -2478,6 +2479,7 @@ export default {
|
||||
wecom: '企業微信',
|
||||
dingtalk: '釘釘',
|
||||
lark: '飛書',
|
||||
larksuite: '國際飛書',
|
||||
pixel: '分辨率',
|
||||
default: '默認',
|
||||
custom: '自定義',
|
||||
|
@ -1437,7 +1437,7 @@ export default {
|
||||
params_work: '仅在编辑sql时生效',
|
||||
select_year: '选择年',
|
||||
sql_variable_limit_1: '1、SQL 变量只能在 WHERE 条件中使用',
|
||||
sql_variable_limit_2: "2、示例:select * from table_name where column_name1='${parm_name1}' and column_name2 in '${parm_name2}'",
|
||||
sql_variable_limit_2: "2、示例:select * from table_name where column_name1='${param_name1}' and column_name2 in '${param_name2}'",
|
||||
select_month: '选择月',
|
||||
select_date: '选择日期',
|
||||
select_time: '选择时间',
|
||||
@ -2362,7 +2362,8 @@ export default {
|
||||
channel_email_msg: '邮件提醒',
|
||||
channel_wecom_msg: '企业微信',
|
||||
channel_dingtalk_msg: '钉钉提醒',
|
||||
channel_lark_msg: '飞书提醒'
|
||||
channel_lark_msg: '飞书提醒',
|
||||
channel_larksuite_msg: '国际飞书'
|
||||
},
|
||||
denumberrange: {
|
||||
label: '数值区间',
|
||||
@ -2478,6 +2479,7 @@ export default {
|
||||
wecom: '企业微信',
|
||||
dingtalk: '钉钉',
|
||||
lark: '飞书',
|
||||
larksuite: '国际飞书',
|
||||
pixel: '分辨率',
|
||||
default: '默认',
|
||||
custom: '自定义',
|
||||
|
@ -229,7 +229,6 @@ const data = {
|
||||
if (height || height === 0) curComponent.style.height = (height / curCanvasScaleSelf.scalePointHeight) + 0.0000001
|
||||
if (rotate || rotate === 0) curComponent.style.rotate = rotate
|
||||
}
|
||||
// console.log("setShapeStyle==="+curComponent.style.width)
|
||||
},
|
||||
|
||||
setShapeSingleStyle({ curComponent }, { key, value }) {
|
||||
@ -764,7 +763,6 @@ const data = {
|
||||
state.mousePointShadowMap.mouseY = mousePoint.mouseY
|
||||
state.mousePointShadowMap.width = mousePoint.width
|
||||
state.mousePointShadowMap.height = mousePoint.height
|
||||
// console.log("mousePointMap:"+JSON.stringify(state.mousePointMap))
|
||||
}
|
||||
},
|
||||
modules: {
|
||||
|
@ -263,7 +263,7 @@
|
||||
:title="dialogTitle"
|
||||
:visible.sync="showVariableMgm"
|
||||
custom-class="de-user-drawer sql-dataset-drawer"
|
||||
size="840px"
|
||||
size="870px"
|
||||
direction="rtl"
|
||||
>
|
||||
<div class="content">
|
||||
@ -868,7 +868,7 @@ export default {
|
||||
}
|
||||
.content {
|
||||
height: 62px;
|
||||
width: 792px;
|
||||
width: 822px;
|
||||
border-radius: 4px;
|
||||
background: #e1eaff;
|
||||
position: relative;
|
||||
|
@ -75,6 +75,11 @@
|
||||
:label="2"
|
||||
size="mini"
|
||||
>OIDC</el-radio>
|
||||
<el-radio
|
||||
v-if="loginTypes.includes(7)"
|
||||
:label="7"
|
||||
size="mini"
|
||||
>Larksuite</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item prop="username">
|
||||
@ -187,6 +192,12 @@
|
||||
component-name="SSOComponent"
|
||||
/>
|
||||
|
||||
<plugin-com
|
||||
v-if="loginTypes.includes(7) && loginForm.loginType === 7"
|
||||
ref="LarksuiteQr"
|
||||
component-name="LarksuiteQr"
|
||||
/>
|
||||
|
||||
</div>
|
||||
<div
|
||||
v-if="showFoot"
|
||||
@ -199,7 +210,7 @@
|
||||
<script>
|
||||
|
||||
import { encrypt } from '@/utils/rsaEncrypt'
|
||||
import { ldapStatus, oidcStatus, getPublicKey, pluginLoaded, defaultLoginType, wecomStatus, dingtalkStatus, larkStatus } from '@/api/user'
|
||||
import { ldapStatus, oidcStatus, getPublicKey, pluginLoaded, defaultLoginType, wecomStatus, dingtalkStatus, larkStatus, larksuiteStatus } from '@/api/user'
|
||||
import { getSysUI } from '@/utils/auth'
|
||||
import { changeFavicon } from '@/utils/index'
|
||||
import { initTheme } from '@/utils/ThemeUtil'
|
||||
@ -248,10 +259,10 @@ export default {
|
||||
return this.$store.state.user.loginMsg
|
||||
},
|
||||
qrTypes() {
|
||||
return this.loginTypes && this.loginTypes.filter(item => item > 3) || []
|
||||
return this.loginTypes && this.loginTypes.filter(item => item > 3 && item < 7) || []
|
||||
},
|
||||
radioTypes() {
|
||||
return this.loginTypes && this.loginTypes.filter(item => item < 4) || []
|
||||
return this.loginTypes && this.loginTypes.filter(item => item < 4 || item > 6) || []
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
@ -312,6 +323,13 @@ export default {
|
||||
this.setDefaultType()
|
||||
})
|
||||
|
||||
larksuiteStatus().then(res => {
|
||||
if (res.success && res.data) {
|
||||
this.loginTypes.push(7)
|
||||
}
|
||||
this.setDefaultType()
|
||||
})
|
||||
|
||||
getPublicKey().then(res => {
|
||||
if (res.success && res.data) {
|
||||
// 保存公钥
|
||||
@ -391,6 +409,9 @@ export default {
|
||||
clearLarkMsg() {
|
||||
Cookies.remove('LarkError')
|
||||
},
|
||||
clearLarksuiteMsg() {
|
||||
Cookies.remove('LarksuiteError')
|
||||
},
|
||||
showLoginImage(uiInfo) {
|
||||
this.uiInfo = getSysUI()
|
||||
if (!this.uiInfo || Object.keys(this.uiInfo).length === 0) {
|
||||
@ -427,6 +448,7 @@ export default {
|
||||
this.clearWecomMsg()
|
||||
this.clearDingtalkMsg()
|
||||
this.clearLarkMsg()
|
||||
this.clearLarksuiteMsg()
|
||||
this.$refs.loginForm.validate(valid => {
|
||||
if (valid) {
|
||||
this.loading = true
|
||||
@ -447,8 +469,9 @@ export default {
|
||||
})
|
||||
},
|
||||
changeLoginType(val) {
|
||||
if (val !== 2) return
|
||||
if (val !== 2 && val !== 7) return
|
||||
this.clearOidcMsg()
|
||||
this.clearLarksuiteMsg()
|
||||
this.$nextTick(() => {
|
||||
|
||||
})
|
||||
|
@ -8,7 +8,7 @@
|
||||
>
|
||||
<el-tree
|
||||
ref="topTree"
|
||||
:data="data"
|
||||
:data="treeData"
|
||||
:props="defaultProps"
|
||||
:highlight-current="true"
|
||||
node-key="name"
|
||||
@ -109,7 +109,7 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
data: [],
|
||||
treeData: [],
|
||||
defaultProps: {
|
||||
children: 'children',
|
||||
label: 'name'
|
||||
@ -126,7 +126,7 @@ export default {
|
||||
created() {
|
||||
bus.$on('refresh-my-share-out', this.refreshMyShareOut)
|
||||
this.initData().then(res => {
|
||||
this.data = res.data
|
||||
this.treeData = res.data
|
||||
if (this.msgPanelIds && this.msgPanelIds.length > 0) {
|
||||
this.expandMsgNode(this.msgPanelIds)
|
||||
}
|
||||
@ -188,7 +188,7 @@ export default {
|
||||
})
|
||||
},
|
||||
getMsgNodes(panelIds) {
|
||||
this.data.forEach(item => {
|
||||
this.treeData.forEach(item => {
|
||||
if (item.children && item.children.length > 0) {
|
||||
item.children.forEach(node => {
|
||||
if (panelIds.includes(node.id)) {
|
||||
|
@ -53,7 +53,7 @@
|
||||
v-if="showDomType === 'tree'"
|
||||
:default-expanded-keys="expandedArray"
|
||||
node-key="id"
|
||||
:data="tempTreeData || data"
|
||||
:data="tempTreeData || treeData"
|
||||
:props="defaultProps"
|
||||
|
||||
@node-click="handleNodeClick"
|
||||
@ -347,7 +347,7 @@ export default {
|
||||
link: false,
|
||||
type: 'root'
|
||||
}],
|
||||
data: [],
|
||||
treeData: [],
|
||||
sceneData: [],
|
||||
fieldData: [],
|
||||
originFieldData: [],
|
||||
@ -472,7 +472,7 @@ export default {
|
||||
this.tData = JSON.parse(modelInfo)
|
||||
const results = this.buildTree(this.tData)
|
||||
this.defaultData = JSON.parse(JSON.stringify(results))
|
||||
this.data = JSON.parse(JSON.stringify(results))
|
||||
this.treeData = JSON.parse(JSON.stringify(results))
|
||||
}
|
||||
queryAuthModel({ modelType: 'dataset' }, !userCache).then(res => {
|
||||
localStorage.setItem('dataset-tree', JSON.stringify(res.data))
|
||||
@ -480,7 +480,7 @@ export default {
|
||||
this.tData = res.data
|
||||
const results = this.buildTree(this.tData)
|
||||
this.defaultData = JSON.parse(JSON.stringify(results))
|
||||
this.data = JSON.parse(JSON.stringify(results))
|
||||
this.treeData = JSON.parse(JSON.stringify(results))
|
||||
}
|
||||
})
|
||||
},
|
||||
@ -513,7 +513,7 @@ export default {
|
||||
name: val
|
||||
}
|
||||
authModel(queryCondition).then(res => {
|
||||
this.data = this.buildTree(res.data)
|
||||
this.treeData = this.buildTree(res.data)
|
||||
})
|
||||
},
|
||||
buildTree(arrs) {
|
||||
@ -602,7 +602,7 @@ export default {
|
||||
groupTree({}).then(res => {
|
||||
const data = res.data
|
||||
|
||||
this.data = data
|
||||
this.treeData = data
|
||||
})
|
||||
},
|
||||
|
||||
@ -629,7 +629,7 @@ export default {
|
||||
this.dataSetBreads = this.dataSetBreads.slice(0, 1)
|
||||
const root = {
|
||||
id: null,
|
||||
children: JSON.parse(JSON.stringify(this.data))
|
||||
children: JSON.parse(JSON.stringify(this.treeData))
|
||||
}
|
||||
this.getPathById(node.id, root, res => {
|
||||
if (res.length > 1) {
|
||||
@ -709,7 +709,7 @@ export default {
|
||||
this.keyWord = ''
|
||||
this.isTreeSearch = false
|
||||
if (bread.id) {
|
||||
const node = this.getNode(bread.id, this.data)
|
||||
const node = this.getNode(bread.id, this.treeData)
|
||||
if (node) {
|
||||
this.tempTreeData = node.children
|
||||
}
|
||||
@ -717,7 +717,7 @@ export default {
|
||||
this.tempTreeData = null
|
||||
}
|
||||
|
||||
this.data = JSON.parse(JSON.stringify(this.defaultData))
|
||||
this.treeData = JSON.parse(JSON.stringify(this.defaultData))
|
||||
})
|
||||
},
|
||||
comBackLink(bread) {
|
||||
@ -795,7 +795,7 @@ export default {
|
||||
})
|
||||
|
||||
if (xItems && xItems.length > 1) {
|
||||
this.data.splice(e.newDraggableIndex, 1)
|
||||
this.treeData.splice(e.newDraggableIndex, 1)
|
||||
}
|
||||
},
|
||||
removeCheckedKey(e) {
|
||||
|
Loading…
Reference in New Issue
Block a user