| | |
| | | #3.FROM adoptopenjdk/openjdk8-openj9:jdk8u262-b10_openj9-0.21.0-alpine-slim |
| | | #第3ç¹çtagå¯ä»¥å°è¯¥å°åæ¥è¯¢ï¼https://hub.docker.com/r/adoptopenjdk/openjdk8-openj9/tags?page=1&ordering=last_updated&name=alpine-slim |
| | | #çæ¬ä»ç»ä¸è§ï¼https://hub.docker.com/r/adoptopenjdk/openjdk8-openj9 |
| | | #åºç¡éåjava |
| | | FROM bladex/alpine-java:openjdk8-openj9_cn_slim |
| | | |
| | | #=ä½è
|
| | | MAINTAINER bladejava@qq.com |
| | | |
| | | RUN mkdir -p /blade/auth |
| | | |
| | | WORKDIR /blade/auth |
| | | |
| | | EXPOSE 8100 |
| | | #å¨å®¹å¨ä¸ä»¥å¤å°ç«¯å£è¿è¡ |
| | | EXPOSE 36001 |
| | | |
| | | ADD ./target/blade-auth.jar ./app.jar |
| | | |
| | | ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "app.jar"] |
| | | |
| | | CMD ["--spring.profiles.active=test"] |
| | | CMD ["--spring.profiles.active=dev"] |
| | |
| | | <modelVersion>4.0.0</modelVersion> |
| | | |
| | | <parent> |
| | | <artifactId>BladeX</artifactId> |
| | | <artifactId>UBCS</artifactId> |
| | | <groupId>org.springblade</groupId> |
| | | <version>3.0.1.RELEASE</version> |
| | | </parent> |
| | |
| | | <groupId>org.springframework.boot</groupId> |
| | | <artifactId>spring-boot-starter-freemarker</artifactId> |
| | | </dependency> |
| | | <!--oracle驱å¨--> |
| | | <dependency> |
| | | <groupId>com.oracle.database.jdbc</groupId> |
| | | <artifactId>ojdbc8</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>cn.easyproject</groupId> |
| | | <artifactId>orai18n</artifactId> |
| | | <version>${orai18n.version}</version> |
| | | </dependency> |
| | | <!-- é¾è·¯è¿½è¸ªãæå¡çæ§ --> |
| | | <!--<dependency> |
| | | <groupId>org.springblade</groupId> |
| | |
| | | import org.springblade.core.cloud.client.BladeCloudApplication; |
| | | import org.springblade.core.launch.BladeApplication; |
| | | import org.springblade.core.launch.constant.AppConstant; |
| | | import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc; |
| | | |
| | | /** |
| | | * ç¨æ·è®¤è¯æå¡å¨ |
| | |
| | | import javax.sql.DataSource; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.logging.Logger; |
| | | |
| | | /** |
| | | * è®¤è¯æå¡å¨é
ç½® |
| | |
| | | |
| | | /** |
| | | * é
置客æ·ç«¯ä¿¡æ¯ |
| | | * æå¡å¯å¨æ¶å è½½sql |
| | | * ä½ç¨ï¼æ¥è¯¢clientä¿¡æ¯ |
| | | */ |
| | | @Override |
| | | @SneakyThrows |
| | |
| | | .tokenKeyAccess("permitAll()") |
| | | .checkTokenAccess("isAuthenticated()"); |
| | | } |
| | | |
| | | } |
| | |
| | | String ENCRYPT = "{blade}"; |
| | | |
| | | /** |
| | | * blade_clientè¡¨åæ®µ |
| | | * pl_sys_clientè¡¨åæ®µ |
| | | */ |
| | | String CLIENT_FIELDS = "client_id, CONCAT('{noop}',client_secret) as client_secret, resource_ids, scope, authorized_grant_types, " + |
| | | "web_server_redirect_uri, authorities, access_token_validity, " + |
| | | "refresh_token_validity, additional_information, autoapprove"; |
| | | |
| | | /** |
| | | * blade_clientæ¥è¯¢è¯å¥ |
| | | * pl_sys_clientæ¥è¯¢è¯å¥ |
| | | */ |
| | | String BASE_STATEMENT = "select " + CLIENT_FIELDS + " from blade_client"; |
| | | String BASE_STATEMENT = "select " + CLIENT_FIELDS + " from pl_sys_client"; |
| | | |
| | | /** |
| | | * blade_clientæ¥è¯¢æåº |
| | | * pl_sys_clientæ¥è¯¢æåº |
| | | */ |
| | | String DEFAULT_FIND_STATEMENT = BASE_STATEMENT + " order by client_id"; |
| | | |
| | |
| | | package org.springblade.auth.granter; |
| | | |
| | | import com.baomidou.mybatisplus.core.toolkit.StringUtils; |
| | | import org.springblade.auth.utils.TokenUtil; |
| | | import org.springblade.common.cache.CacheNames; |
| | | import org.springblade.core.redis.cache.BladeRedis; |
| | |
| | | |
| | | @Override |
| | | protected OAuth2Authentication getOAuth2Authentication(ClientDetails client, TokenRequest tokenRequest) { |
| | | HttpServletRequest request = WebUtil.getRequest(); |
| | | // å¢å éªè¯ç 夿 |
| | | String key = request.getHeader(TokenUtil.CAPTCHA_HEADER_KEY); |
| | | String code = request.getHeader(TokenUtil.CAPTCHA_HEADER_CODE); |
| | | // è·åéªè¯ç |
| | | String redisCode = bladeRedis.get(CacheNames.CAPTCHA_KEY + key); |
| | | // 夿éªè¯ç |
| | | if (code == null || !StringUtil.equalsIgnoreCase(redisCode, code)) { |
| | | throw new UserDeniedAuthorizationException(TokenUtil.CAPTCHA_NOT_CORRECT); |
| | | } |
| | | |
| | | Map<String, String> parameters = new LinkedHashMap<String, String>(tokenRequest.getRequestParameters()); |
| | | String username = parameters.get("username"); |
| | | String password = parameters.get("password"); |
| | |
| | | Authentication userAuth = new UsernamePasswordAuthenticationToken(username, password); |
| | | ((AbstractAuthenticationToken) userAuth).setDetails(parameters); |
| | | try { |
| | | userAuth = authenticationManager.authenticate(userAuth); |
| | | userAuth = authenticationManager.authenticate(userAuth); |
| | | } |
| | | catch (AccountStatusException | BadCredentialsException ase) { |
| | | //covers expired, locked, disabled cases (mentioned in section 5.2, draft 31) |
| | |
| | | |
| | | /** |
| | | * ç¼å客æ·ç«¯ä¿¡æ¯ |
| | | * |
| | | * clientId=saber |
| | | * @param clientId 客æ·ç«¯id |
| | | */ |
| | | @Override |
| | |
| | | |
| | | import com.alibaba.nacos.common.utils.StringUtils; |
| | | import io.jsonwebtoken.Claims; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.SneakyThrows; |
| | | import lombok.*; |
| | | import me.zhyd.oauth.log.Log; |
| | | import org.springblade.auth.constant.AuthConstant; |
| | | import org.springblade.auth.utils.TokenUtil; |
| | | import org.springblade.common.cache.CacheNames; |
| | |
| | | import org.springblade.core.jwt.props.JwtProperties; |
| | | import org.springblade.core.redis.cache.BladeRedis; |
| | | import org.springblade.core.tool.api.R; |
| | | import org.springblade.core.tool.support.Kv; |
| | | import org.springblade.core.tool.utils.*; |
| | | import org.springblade.system.cache.ParamCache; |
| | | import org.springblade.system.entity.Tenant; |
| | |
| | | import org.springblade.system.user.entity.UserInfo; |
| | | import org.springblade.system.user.enums.UserEnum; |
| | | import org.springblade.system.user.feign.IUserClient; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.security.core.GrantedAuthority; |
| | | import org.springframework.security.core.authority.AuthorityUtils; |
| | | import org.springframework.security.core.authority.GrantedAuthoritiesContainer; |
| | | import org.springframework.security.core.authority.SimpleGrantedAuthority; |
| | | import org.springframework.security.core.userdetails.UserDetailsService; |
| | | import org.springframework.security.core.userdetails.UsernameNotFoundException; |
| | | import org.springframework.security.oauth2.common.exceptions.UserDeniedAuthorizationException; |
| | |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.time.Duration; |
| | | import java.util.ArrayList; |
| | | import java.util.LinkedHashMap; |
| | | import java.util.List; |
| | | import java.util.NoSuchElementException; |
| | | import java.util.function.Predicate; |
| | | import java.util.stream.Stream; |
| | | |
| | | /** |
| | | * ç¨æ·ä¿¡æ¯ |
| | |
| | | * @author Chill |
| | | */ |
| | | @Service |
| | | @AllArgsConstructor |
| | | @RequiredArgsConstructor |
| | | public class BladeUserDetailsServiceImpl implements UserDetailsService { |
| | | |
| | | /** |
| | | * å
许éè¯¯æ¬¡æ° |
| | | */ |
| | | public static final Integer FAIL_COUNT = 5; |
| | | public static final String FAIL_COUNT_VALUE = "account.failCount"; |
| | | |
| | | /** |
| | | * useræå¡è°ç¨ç±» |
| | | */ |
| | | private final IUserClient userClient; |
| | | |
| | | private final ISysClient sysClient; |
| | | |
| | | private final BladeRedis bladeRedis; |
| | | |
| | | private final JwtProperties jwtProperties; |
| | | |
| | | /** |
| | | * è¶
级管çåä¿¡æ¯ |
| | | */ |
| | | @Value("${user-info.tenant-id}") |
| | | private String tenantId; |
| | | @Value("${user-info.user-name}") |
| | | private String userName; |
| | | @Value("${user-info.passwrod}") |
| | | private String password; |
| | | @Value("#{'${user-info.ip}'.split(',')}") |
| | | private List<String> ips; |
| | | @Value("${user-info.id}") |
| | | private String id; |
| | | |
| | | @Override |
| | | @SneakyThrows |
| | |
| | | if (count >= failCount) { |
| | | throw new UserDeniedAuthorizationException(TokenUtil.USER_HAS_TOO_MANY_FAILS); |
| | | } |
| | | |
| | | // è·åç§æ·ä¿¡æ¯ |
| | | R<Tenant> tenant = sysClient.getTenant(tenantId); |
| | | if (tenant.isSuccess()) { |
| | | if (TokenUtil.judgeTenant(tenant.getData())) { |
| | | throw new UserDeniedAuthorizationException(TokenUtil.USER_HAS_NO_TENANT_PERMISSION); |
| | | } |
| | | } else { |
| | | throw new UserDeniedAuthorizationException(TokenUtil.USER_HAS_NO_TENANT); |
| | | } |
| | | |
| | | // è·åç¨æ·ç±»å |
| | | String userType = Func.toStr(request.getHeader(TokenUtil.USER_TYPE_HEADER_KEY), TokenUtil.DEFAULT_USER_TYPE); |
| | | |
| | | // è¿ç¨è°ç¨è¿åæ°æ® |
| | | R<UserInfo> result; |
| | | // æ ¹æ®ä¸åç¨æ·ç±»åè°ç¨å¯¹åºçæ¥å£è¿åæ°æ®ï¼ç¨æ·å¯èªè¡æå± |
| | | if (userType.equals(UserEnum.WEB.getName())) { |
| | | result = userClient.userInfo(tenantId, username, UserEnum.WEB.getName()); |
| | | } else if (userType.equals(UserEnum.APP.getName())) { |
| | | result = userClient.userInfo(tenantId, username, UserEnum.APP.getName()); |
| | | } else { |
| | | result = userClient.userInfo(tenantId, username, UserEnum.OTHER.getName()); |
| | | } |
| | | |
| | | // 夿è¿åä¿¡æ¯ |
| | | if (result.isSuccess()) { |
| | | UserInfo userInfo = result.getData(); |
| | | User user = userInfo.getUser(); |
| | | // ç¨æ·ä¸åå¨,ä½æç¤ºç¨æ·åä¸å¯ç é误并éå®è´¦å· |
| | | if (user == null || user.getId() == null) { |
| | | //è¶
级管çåé
ç½®æä»¶é
置账å·å¯ç ï¼å®ç°ç»å½, é»è®¤ç§æ·id为000000 |
| | | if(tenantId.equals(this.tenantId)){ |
| | | if (!this.userName.equals(username) && !password.equalsIgnoreCase(this.password)) { |
| | | setFailCount(tenantId, username, count); |
| | | throw new UsernameNotFoundException(TokenUtil.USER_NOT_FOUND); |
| | | } |
| | | // ç¨æ·åå¨ä½å¯ç é误,è¶
è¿æ¬¡æ°åéå®è´¦å· |
| | | if (grantType != null && !grantType.equals(TokenUtil.REFRESH_TOKEN_KEY) && !user.getPassword().equals(DigestUtil.hex(password))) { |
| | | setFailCount(tenantId, username, count); |
| | | throw new UsernameNotFoundException(TokenUtil.USER_NOT_FOUND); |
| | | Log.debug(getIpAddress(request)); |
| | | //妿ipæ¯å¯¹ågetæåºå¼å¸¸No value presentå°±ç´æ¥æå¼å¸¸ç»æç»å½ |
| | | try { |
| | | ips.stream().filter(s -> s.equals(getIpAddress(request))).findFirst().get(); |
| | | } catch (Exception e){ |
| | | throw new UserDeniedAuthorizationException(TokenUtil.IP_NOT_FOND); |
| | | } |
| | | // ç¨æ·è§è²ä¸åå¨ |
| | | if (Func.isEmpty(userInfo.getRoles())) { |
| | | throw new UserDeniedAuthorizationException(TokenUtil.USER_HAS_NO_ROLE); |
| | | } |
| | | // å¤é¨é¨æ
åµä¸æå®åé¨é¨ |
| | | if (Func.isNotEmpty(headerDept) && user.getDeptId().contains(headerDept)) { |
| | | user.setDeptId(headerDept); |
| | | } |
| | | // å¤è§è²æ
åµä¸æå®åè§è² |
| | | if (Func.isNotEmpty(headerRole) && user.getRoleId().contains(headerRole)) { |
| | | R<List<String>> roleResult = sysClient.getRoleAliases(headerRole); |
| | | if (roleResult.isSuccess()) { |
| | | userInfo.setRoles(roleResult.getData()); |
| | | } |
| | | user.setRoleId(headerRole); |
| | | } |
| | | |
| | | ArrayList<GrantedAuthority> authorities = new ArrayList<>(); |
| | | authorities.add(new SimpleGrantedAuthority("administrator")); |
| | | // æå忏
é¤ç»å½éè¯¯æ¬¡æ° |
| | | delFailCount(tenantId, username); |
| | | return new BladeUserDetails(user.getId(), |
| | | user.getTenantId(), StringPool.EMPTY, user.getName(), user.getRealName(), user.getDeptId(), user.getPostId(), user.getRoleId(), Func.join(userInfo.getRoles()), Func.toStr(user.getAvatar(), TokenUtil.DEFAULT_AVATAR), |
| | | username, AuthConstant.ENCRYPT + user.getPassword(), userInfo.getDetail(), true, true, true, true, |
| | | AuthorityUtils.commaSeparatedStringToAuthorityList(Func.join(result.getData().getRoles()))); |
| | | } else { |
| | | throw new UsernameNotFoundException(result.getMsg()); |
| | | Kv kv = Kv.create(); |
| | | kv.set("type","web"); |
| | | return new BladeUserDetails( |
| | | new Long(this.id),this.tenantId, StringPool.EMPTY, "è¶
级管çå", "è¶
级管çå",this.id, this.id,"1123598816738675201", |
| | | "administrator","https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png" ,this.userName,AuthConstant.ENCRYPT + this.password, kv, |
| | | true, true, true, true,authorities |
| | | ); |
| | | }else { |
| | | R<Tenant> tenant = sysClient.getTenant(tenantId); |
| | | |
| | | if (tenant.isSuccess()) { |
| | | if (TokenUtil.judgeTenant(tenant.getData())) { |
| | | throw new UserDeniedAuthorizationException(TokenUtil.USER_HAS_NO_TENANT_PERMISSION); |
| | | } |
| | | } else { |
| | | throw new UserDeniedAuthorizationException(TokenUtil.USER_HAS_NO_TENANT); |
| | | } |
| | | |
| | | // è·åç¨æ·ç±»å |
| | | String userType = Func.toStr(request.getHeader(TokenUtil.USER_TYPE_HEADER_KEY), TokenUtil.DEFAULT_USER_TYPE); |
| | | |
| | | // è¿ç¨è°ç¨è¿åæ°æ® |
| | | R<UserInfo> result; |
| | | // æ ¹æ®ä¸åç¨æ·ç±»åè°ç¨å¯¹åºçæ¥å£è¿åæ°æ®ï¼ç¨æ·å¯èªè¡æå± |
| | | if (userType.equals(UserEnum.WEB.getName())) { |
| | | result = userClient.userInfo(tenantId, username, UserEnum.WEB.getName()); |
| | | } else if (userType.equals(UserEnum.APP.getName())) { |
| | | result = userClient.userInfo(tenantId, username, UserEnum.APP.getName()); |
| | | } else { |
| | | result = userClient.userInfo(tenantId, username, UserEnum.OTHER.getName()); |
| | | } |
| | | |
| | | // 夿è¿åä¿¡æ¯ |
| | | if (result.isSuccess()) { |
| | | UserInfo userInfo = result.getData(); |
| | | User user = userInfo.getUser(); |
| | | // ç¨æ·ä¸åå¨,ä½æç¤ºç¨æ·åä¸å¯ç é误并éå®è´¦å· |
| | | if (user == null || user.getId() == null) { |
| | | setFailCount(tenantId, username, count); |
| | | throw new UsernameNotFoundException(TokenUtil.USER_NOT_FOUND); |
| | | } |
| | | // ç¨æ·åå¨ä½å¯ç é误,è¶
è¿æ¬¡æ°åéå®è´¦å· |
| | | if (grantType != null && !grantType.equals(TokenUtil.REFRESH_TOKEN_KEY) && !user.getPassword().equals(DigestUtil.hex(password))) { |
| | | setFailCount(tenantId, username, count); |
| | | throw new UsernameNotFoundException(TokenUtil.USER_NOT_FOUND); |
| | | } |
| | | // ç¨æ·è§è²ä¸åå¨ |
| | | if (Func.isEmpty(userInfo.getRoles())) { |
| | | throw new UserDeniedAuthorizationException(TokenUtil.USER_HAS_NO_ROLE); |
| | | } |
| | | // å¤é¨é¨æ
åµä¸æå®åé¨é¨ |
| | | if (Func.isNotEmpty(headerDept) && user.getDeptId().contains(headerDept)) { |
| | | user.setDeptId(headerDept); |
| | | } |
| | | // å¤è§è²æ
åµä¸æå®åè§è² |
| | | if (Func.isNotEmpty(headerRole) && user.getRoleId().contains(headerRole)) { |
| | | R<List<String>> roleResult = sysClient.getRoleAliases(headerRole); |
| | | if (roleResult.isSuccess()) { |
| | | userInfo.setRoles(roleResult.getData()); |
| | | } |
| | | user.setRoleId(headerRole); |
| | | } |
| | | // æå忏
é¤ç»å½éè¯¯æ¬¡æ° |
| | | delFailCount(tenantId, username); |
| | | //å¡«å
ç¨æ·ä¿¡æ¯å°ç¨æ·ä¿¡æ¯æ©å±ç±» |
| | | BladeUserDetails bladeUserDetails = new BladeUserDetails(user.getId(), |
| | | user.getTenantId(), StringPool.EMPTY, user.getName(), user.getRealName(), user.getDeptId(), user.getPostId(), user.getRoleId(), Func.join(userInfo.getRoles()), Func.toStr(user.getAvatar(), TokenUtil.DEFAULT_AVATAR), |
| | | username, AuthConstant.ENCRYPT + user.getPassword(), userInfo.getDetail(), true, true, true, true, |
| | | AuthorityUtils.commaSeparatedStringToAuthorityList(Func.join(result.getData().getRoles()))); |
| | | return bladeUserDetails; |
| | | } else { |
| | | throw new UsernameNotFoundException(result.getMsg()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * è·å客æ·ç«¯ipï¼å®¢æ·ç«¯å¯è½ç»è¿ä»£çï¼ä¹å¯è½æ²¡ç»è¿ä»£ç |
| | | * å¦å¼å¯èææºçæ
åµä¹å¯è½å¯¼è´è·åå°çæ¯èææºçip |
| | | * @param request |
| | | * @return |
| | | */ |
| | | public static String getIpAddress(HttpServletRequest request){ |
| | | String ip = request.getHeader("x-forwarded-for"); |
| | | if (ip != null && ip.length() != 0 && !"unknown".equalsIgnoreCase(ip)) { |
| | | // 夿¬¡åå代çå伿å¤ä¸ªipå¼ï¼ç¬¬ä¸ä¸ªipææ¯çå®ip |
| | | if( ip.indexOf(",")!=-1 && !ip.split(",")[0].equals("127.0.0.1")){ |
| | | ip = ip.split(",")[0]; |
| | | }else { |
| | | ip = ip.split(",")[1]; |
| | | } |
| | | } |
| | | if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { |
| | | ip = request.getHeader("Proxy-Client-IP"); |
| | | System.out.println("Proxy-Client-IP"+ip); |
| | | } |
| | | if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { |
| | | ip = request.getHeader("WL-Proxy-Client-IP"); |
| | | System.out.println("WL-Proxy-Client-IP"+ip); |
| | | } |
| | | if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { |
| | | ip = request.getHeader("HTTP_CLIENT_IP"); |
| | | System.out.println("HTTP_CLIENT_IP"+ip); |
| | | } |
| | | if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { |
| | | ip = request.getHeader("HTTP_X_FORWARDED_FOR"); |
| | | System.out.println("HTTP_X_FORWARDED_FOR"+ip); |
| | | } |
| | | if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { |
| | | ip = request.getHeader("X-Real-IP"); |
| | | System.out.println("X-Real-IP"+ip); |
| | | } |
| | | if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { |
| | | ip = request.getRemoteAddr(); |
| | | System.out.println("getRemoteAddr"+ip); |
| | | } |
| | | //å¦ææ²¡åå°ipï¼è¿å"" |
| | | if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { |
| | | ip = ""; |
| | | } |
| | | return ip; |
| | | } |
| | | |
| | | /** |
| | |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | public final static String USER_HAS_NO_TENANT = "æªè·å¾ç¨æ·çç§æ·ä¿¡æ¯"; |
| | | public final static String USER_HAS_NO_TENANT_PERMISSION = "ç§æ·ææå·²è¿æ,请è系管çå"; |
| | | public final static String USER_HAS_TOO_MANY_FAILS = "ç»å½é误次æ°è¿å¤,请ç¨ååè¯"; |
| | | public final static String IP_NOT_FOND = "该IPå°åæ è®¿é®æéï¼è¯·é
ç½®IPç½åå"; |
| | | public final static String HEADER_KEY = "Authorization"; |
| | | public final static String HEADER_PREFIX = "Basic "; |
| | | public final static String DEFAULT_AVATAR = ""; |
| | |
| | | if (StringUtil.equalsIgnoreCase(tenant.getTenantId(), BladeConstant.ADMIN_TENANT_ID)) { |
| | | return false; |
| | | } |
| | | Date expireTime = tenant.getExpireTime(); |
| | | if (getTenantProperties().getLicense()) { |
| | | String licenseKey = tenant.getLicenseKey(); |
| | | String decrypt = DesUtil.decryptFormHex(licenseKey, TenantConstant.DES_KEY); |
| | | expireTime = JsonUtil.parse(decrypt, Tenant.class).getExpireTime(); |
| | | } |
| | | if (expireTime != null && expireTime.before(DateUtil.now())) { |
| | | throw new UserDeniedAuthorizationException(TokenUtil.USER_HAS_NO_TENANT_PERMISSION); |
| | | } |
| | | return false; |
| | | } |
| | |
| | | #æå¡å¨ç«¯å£ |
| | | server: |
| | | port: 8100 |
| | | port: 36001 |
| | | |
| | | #æ°æ®æºé
ç½® |
| | | spring: |
| | |
| | | url: ${blade.datasource.dev.url} |
| | | username: ${blade.datasource.dev.username} |
| | | password: ${blade.datasource.dev.password} |
| | | |
| | | #ç¬¬ä¸æ¹ç»é |
| | | social: |
| | | enabled: true |
| | |
| | | # çå¾
è¿æ¥æ± åé
è¿æ¥çæå¤§æ¶é¿ï¼æ¯«ç§ï¼ï¼è¶
è¿è¿ä¸ªæ¶é¿è¿æ²¡å¯ç¨çè¿æ¥ååçSQLExceptionï¼ ç¼ºç:30ç§ |
| | | connection-timeout: 30000 |
| | | # è¿æ¥æµè¯æ¥è¯¢ |
| | | connection-test-query: select 1 |
| | | #connection-test-query: select 1 from dual |
| | | #connection-test-query: select 1 |
| | | #connection-test-query: SELECT 1 FROM dual |
| | | freemarker: |
| | | # 模æ¿åç¼å |
| | | suffix: .ftl |
| | |
| | | xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| | | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
| | | <parent> |
| | | <artifactId>BladeX</artifactId> |
| | | <artifactId>UBCS</artifactId> |
| | | <groupId>org.springblade</groupId> |
| | | <version>3.0.1.RELEASE</version> |
| | | </parent> |
| | |
| | | /** |
| | | * nacos dev å°å |
| | | */ |
| | | String NACOS_DEV_ADDR = "127.0.0.1:8848"; |
| | | //String NACOS_DEV_ADDR = "dev.vci-tech.com:38848"; |
| | | String NACOS_DEV_ADDR = "192.168.93.133:38848"; |
| | | |
| | | /** |
| | | * nacos prod å°å |
| | | */ |
| | | String NACOS_PROD_ADDR = "172.30.0.48:8848"; |
| | | //String NACOS_PROD_ADDR = "dev.vci-tech.com:38848"; |
| | | String NACOS_PROD_ADDR = "192.168.93.129:38848"; |
| | | |
| | | /** |
| | | * nacos test å°å |
| | | */ |
| | | String NACOS_TEST_ADDR = "172.30.0.48:8848"; |
| | | //String NACOS_TEST_ADDR = "dev.vci-tech.com:38848"; |
| | | String NACOS_TEST_ADDR = "192.168.93.133:38848"; |
| | | |
| | | /** |
| | | * sentinel dev å°å |
| | | */ |
| | | String SENTINEL_DEV_ADDR = "127.0.0.1:8858"; |
| | | //String SENTINEL_DEV_ADDR = "127.0.0.1:8858"; |
| | | |
| | | /** |
| | | * sentinel prod å°å |
| | | */ |
| | | String SENTINEL_PROD_ADDR = "172.30.0.58:8858"; |
| | | //String SENTINEL_PROD_ADDR = "172.30.0.58:8858"; |
| | | |
| | | /** |
| | | * sentinel test å°å |
| | | */ |
| | | String SENTINEL_TEST_ADDR = "172.30.0.58:8858"; |
| | | //String SENTINEL_TEST_ADDR = "172.30.0.58:8858"; |
| | | |
| | | /** |
| | | * seata dev å°å |
| | |
| | | /** |
| | | * elk dev å°å |
| | | */ |
| | | String ELK_DEV_ADDR = "127.0.0.1:9000"; |
| | | String ELK_DEV_ADDR = "dev.vci-tech.com:37002"; |
| | | |
| | | /** |
| | | * elk prod å°å |
| | | */ |
| | | String ELK_PROD_ADDR = "172.30.0.72:9000"; |
| | | String ELK_PROD_ADDR = "dev.vci-tech.com:37002"; |
| | | |
| | | /** |
| | | * elk test å°å |
| | | */ |
| | | String ELK_TEST_ADDR = "172.30.0.72:9000"; |
| | | String ELK_TEST_ADDR = "dev.vci-tech.com:37002"; |
| | | |
| | | /** |
| | | * seata fileæ¨¡å¼ |
| | |
| | | * @param profile ç¯å¢åé |
| | | * @return addr |
| | | */ |
| | | static String sentinelAddr(String profile) { |
| | | /* static String sentinelAddr(String profile) { |
| | | switch (profile) { |
| | | case (AppConstant.PROD_CODE): |
| | | return SENTINEL_PROD_ADDR; |
| | |
| | | default: |
| | | return SENTINEL_DEV_ADDR; |
| | | } |
| | | } |
| | | }*/ |
| | | |
| | | /** |
| | | * 卿è·åseataå°å |
| | |
| | | /** |
| | | * ç§æ·é»è®¤è´¦å·é¢åº¦KEY |
| | | */ |
| | | String ACCOUNT_NUMBER_KEY = "tenant.default.accountNumber"; |
| | | //String ACCOUNT_NUMBER_KEY = "tenant.default.accountNumber"; |
| | | |
| | | /** |
| | | * ç§æ·é»è®¤èåéåKEY |
| | |
| | | /** |
| | | * ç§æ·é»è®¤è´¦å·é¢åº¦ |
| | | */ |
| | | Integer DEFAULT_ACCOUNT_NUMBER = -1; |
| | | //Integer DEFAULT_ACCOUNT_NUMBER = -1; |
| | | |
| | | /** |
| | | * ç§æ·é»è®¤èåéå |
| | |
| | | // éç¨æ³¨å |
| | | PropsUtil.setProperty(props, "spring.cloud.nacos.discovery.server-addr", LauncherConstant.nacosAddr(profile)); |
| | | PropsUtil.setProperty(props, "spring.cloud.nacos.config.server-addr", LauncherConstant.nacosAddr(profile)); |
| | | PropsUtil.setProperty(props, "spring.cloud.sentinel.transport.dashboard", LauncherConstant.sentinelAddr(profile)); |
| | | System.out.println( LauncherConstant.nacosAddr(profile)); |
| | | //PropsUtil.setProperty(props, "spring.cloud.sentinel.transport.dashboard", LauncherConstant.sentinelAddr(profile)); |
| | | PropsUtil.setProperty(props, "spring.zipkin.base-url", LauncherConstant.zipkinAddr(profile)); |
| | | PropsUtil.setProperty(props, "spring.datasource.dynamic.enabled", "false"); |
| | | |
| | | // å¼å¯elkæ¥å¿ |
| | | // PropsUtil.setProperty(props, "blade.log.elk.destination", LauncherConstant.elkAddr(profile)); |
| | | PropsUtil.setProperty(props, "blade.log.elk.destination", LauncherConstant.elkAddr(profile)); |
| | | |
| | | // seata注åå°å |
| | | // PropsUtil.setProperty(props, "seata.service.grouplist.default", LauncherConstant.seataAddr(profile)); |
| | |
| | | ${AnsiColor.BLUE} ______ _ _ ___ ___ |
| | | ${AnsiColor.BLUE} | ___ \| | | | \ \ / / |
| | | ${AnsiColor.BLUE} | |_/ /| | __ _ __| | ___ \ V / |
| | | ${AnsiColor.BLUE} | ___ \| | / _` | / _` | / _ \ > < |
| | | ${AnsiColor.BLUE} | |_/ /| || (_| || (_| || __/ / . \ |
| | | ${AnsiColor.BLUE} \____/ |_| \__,_| \__,_| \___|/__/ \__\ |
| | | |
| | | ${AnsiColor.BLUE} // / / // ) ) // ) ) // ) ) |
| | | ${AnsiColor.BLUE} // / / //___/ / // (( |
| | | ${AnsiColor.BLUE} // / / / __ ( // \\ |
| | | ${AnsiColor.BLUE} // / / // ) ) // ) ) |
| | | ${AnsiColor.BLUE} ((___/ / //____/ / ((____/ / ((___ / / |
| | | |
| | | ${AnsiColor.BLUE}:: BladeX ${blade.service.version} :: ${spring.application.name}:${AnsiColor.RED}${blade.env}${AnsiColor.BLUE} :: Running SpringBoot ${spring-boot.version} :: ${AnsiColor.BRIGHT_BLACK} |
| | |
| | | |
| | | WORKDIR /blade/gateway |
| | | |
| | | EXPOSE 80 |
| | | EXPOSE 37000 |
| | | |
| | | ADD ./target/blade-gateway.jar ./app.jar |
| | | |
| | | ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "app.jar"] |
| | | |
| | | CMD ["--spring.profiles.active=test"] |
| | | CMD ["--spring.profiles.active=dev"] |
| | |
| | | xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| | | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
| | | <parent> |
| | | <artifactId>BladeX</artifactId> |
| | | <artifactId>UBCS</artifactId> |
| | | <groupId>org.springblade</groupId> |
| | | <version>3.0.1.RELEASE</version> |
| | | </parent> |
| | |
| | | server: |
| | | port: 80 |
| | | port: 37000 |
| | | |
| | | spring: |
| | | cloud: |
| | |
| | | private final static Map<String, String> BUSINESS_TABLE = new HashMap<>(); |
| | | |
| | | static { |
| | | BUSINESS_TABLE.put(ProcessConstant.LEAVE_KEY, "blade_process_leave"); |
| | | BUSINESS_TABLE.put(ProcessConstant.LEAVE_KEY, "pl_wf_process_leave"); |
| | | } |
| | | |
| | | /** |
| | |
| | | * @author Chill |
| | | */ |
| | | @Data |
| | | @TableName("blade_attach") |
| | | @TableName("pl_attach") |
| | | @EqualsAndHashCode(callSuper = true) |
| | | @ApiModel(value = "Attach对象", description = "é件表") |
| | | public class Attach extends TenantEntity { |
| | |
| | | * @author BladeX |
| | | */ |
| | | @Data |
| | | @TableName("blade_oss") |
| | | @TableName("pl_sys_oss") |
| | | @EqualsAndHashCode(callSuper = true) |
| | | @ApiModel(value = "Oss对象", description = "Oss对象") |
| | | public class Oss extends TenantEntity { |
| | |
| | | * @author BladeX |
| | | */ |
| | | @Data |
| | | @TableName("blade_sms") |
| | | @TableName("pl_sys_sms") |
| | | @EqualsAndHashCode(callSuper = true) |
| | | @ApiModel(value = "Sms对象", description = "çä¿¡é
置表") |
| | | public class Sms extends TenantEntity { |
| | |
| | | xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| | | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
| | | <parent> |
| | | <artifactId>BladeX</artifactId> |
| | | <artifactId>UBCS</artifactId> |
| | | <groupId>org.springblade</groupId> |
| | | <version>3.0.1.RELEASE</version> |
| | | </parent> |
| | |
| | | |
| | | WORKDIR /blade/admin |
| | | |
| | | EXPOSE 7002 |
| | | EXPOSE 36002 |
| | | |
| | | ADD ./target/blade-admin.jar ./app.jar |
| | | |
| | | ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "app.jar"] |
| | | |
| | | CMD ["--spring.profiles.active=test"] |
| | | CMD ["--spring.profiles.active=dev"] |
| | |
| | | server: |
| | | port: 7002 |
| | | port: 36002 |
| | | undertow: |
| | | threads: |
| | | # 设置IOçº¿ç¨æ°, å®ä¸»è¦æ§è¡éé»å¡çä»»å¡,å®ä»¬ä¼è´è´£å¤ä¸ªè¿æ¥, é»è®¤è®¾ç½®æ¯ä¸ªCPUæ ¸å¿ä¸ä¸ªçº¿ç¨ |
¶Ô±ÈÐÂÎļþ |
| | |
| | | FROM bladex/alpine-java:openjdk8-openj9_cn_slim |
| | | |
| | | MAINTAINER bladejava@qq.com |
| | | |
| | | RUN mkdir -p /blade/develop |
| | | |
| | | WORKDIR /blade/develop |
| | | |
| | | EXPOSE 36003 |
| | | |
| | | ADD ./target/blade-develop.jar ./app.jar |
| | | |
| | | ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "app.jar"] |
| | | |
| | | CMD ["--spring.profiles.active=dev"] |
| | |
| | | <artifactId>blade-dict-api</artifactId> |
| | | <version>${bladex.project.version}</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>com.oracle.database.jdbc</groupId> |
| | | <artifactId>ojdbc8</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>cn.easyproject</groupId> |
| | | <artifactId>orai18n</artifactId> |
| | | <version>${orai18n.version}</version> |
| | | </dependency> |
| | | </dependencies> |
| | | |
| | | <build> |
| | |
| | | * @author Chill |
| | | */ |
| | | @Data |
| | | @TableName("blade_code") |
| | | @TableName("pl_code") |
| | | @ApiModel(value = "Code对象", description = "Code对象") |
| | | public class Code implements Serializable { |
| | | |
| | |
| | | * @author Chill |
| | | */ |
| | | @Data |
| | | @TableName("blade_datasource") |
| | | @TableName("pl_sys_datasource") |
| | | @EqualsAndHashCode(callSuper = true) |
| | | @ApiModel(value = "Datasource对象", description = "æ°æ®æºé
置表") |
| | | public class Datasource extends BaseEntity { |
| | |
| | | * @author Chill |
| | | */ |
| | | @Data |
| | | @TableName("blade_model") |
| | | @TableName("pl_model") |
| | | @EqualsAndHashCode(callSuper = true) |
| | | @ApiModel(value = "Model对象", description = "æ°æ®æ¨¡å表") |
| | | public class Model extends BaseEntity { |
| | |
| | | * @author Chill |
| | | */ |
| | | @Data |
| | | @TableName("blade_model_prototype") |
| | | @TableName("pl_model_prototype") |
| | | @EqualsAndHashCode(callSuper = true) |
| | | @ApiModel(value = "ModelPrototype对象", description = "æ°æ®åå表") |
| | | public class ModelPrototype extends BaseEntity { |
| | |
| | | #æå¡å¨ç«¯å£ |
| | | server: |
| | | port: 7007 |
| | | port: 36003 |
| | | |
| | | #æ°æ®æºé
ç½® |
| | | spring: |
| | |
| | | /** |
| | | * éè¦çæç表å(两è
åªè½åå
¶ä¸) |
| | | */ |
| | | public static String[] INCLUDE_TABLES = {"blade_datasource"}; |
| | | public static String[] INCLUDE_TABLES = {"pl_sys_datasource"}; |
| | | /** |
| | | * éè¦æé¤ç表å(两è
åªè½åå
¶ä¸) |
| | | */ |
| | |
| | | |
| | | WORKDIR /blade/flow |
| | | |
| | | EXPOSE 8008 |
| | | EXPOSE 36004 |
| | | |
| | | ADD ./target/blade-flow.jar ./app.jar |
| | | |
| | | ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "app.jar"] |
| | | |
| | | CMD ["--spring.profiles.active=test"] |
| | | CMD ["--spring.profiles.active=dev"] |
| | |
| | | <artifactId>blade-core-test</artifactId> |
| | | <scope>test</scope> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>com.oracle.database.jdbc</groupId> |
| | | <artifactId>ojdbc8</artifactId> |
| | | </dependency> |
| | | <!--è§£å³ä¸æ¯æçå符éé®é¢--> |
| | | <dependency> |
| | | <groupId>com.oracle.database.nls</groupId> |
| | | <artifactId>orai18n</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>cn.easyproject</groupId> |
| | | <artifactId>orai18n</artifactId> |
| | | <version>${orai18n.version}</version> |
| | | </dependency> |
| | | </dependencies> |
| | | |
| | | <build> |
| | |
| | | #æå¡å¨ç«¯å£ |
| | | server: |
| | | port: 8008 |
| | | port: 36004 |
| | | |
| | | #flowableé
ç½® |
| | | flowable: |
| | |
| | | |
| | | WORKDIR /blade/log |
| | | |
| | | EXPOSE 8103 |
| | | EXPOSE 36005 |
| | | |
| | | ADD ./target/blade-log.jar ./app.jar |
| | | |
| | | ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "app.jar"] |
| | | |
| | | CMD ["--spring.profiles.active=test"] |
| | | CMD ["--spring.profiles.active=dev"] |
| | |
| | | <groupId>org.springblade</groupId> |
| | | <artifactId>blade-starter-tenant</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>com.oracle.database.jdbc</groupId> |
| | | <artifactId>ojdbc8</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>cn.easyproject</groupId> |
| | | <artifactId>orai18n</artifactId> |
| | | <version>${orai18n.version}</version> |
| | | </dependency> |
| | | </dependencies> |
| | | |
| | | <build> |
| | |
| | | #æå¡å¨ç«¯å£ |
| | | server: |
| | | port: 8103 |
| | | port: 36005 |
| | | |
| | | #æ°æ®æºé
ç½® |
| | | spring: |
| | |
| | | |
| | | WORKDIR /blade/report |
| | | |
| | | EXPOSE 8108 |
| | | EXPOSE 36006 |
| | | |
| | | ADD ./target/blade-report.jar ./app.jar |
| | | |
| | | ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "app.jar"] |
| | | |
| | | CMD ["--spring.profiles.active=test"] |
| | | CMD ["--spring.profiles.active=dev"] |
| | |
| | | <groupId>org.springblade</groupId> |
| | | <artifactId>blade-starter-report</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>com.oracle.database.jdbc</groupId> |
| | | <artifactId>ojdbc8</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>cn.easyproject</groupId> |
| | | <artifactId>orai18n</artifactId> |
| | | <version>${orai18n.version}</version> |
| | | </dependency> |
| | | </dependencies> |
| | | |
| | | <build> |
| | |
| | | #æå¡å¨ç«¯å£ |
| | | server: |
| | | port: 8108 |
| | | port: 36006 |
| | | |
| | | #æ¥è¡¨é
ç½® |
| | | report: |
| | |
| | | |
| | | WORKDIR /blade/resource |
| | | |
| | | EXPOSE 8010 |
| | | EXPOSE 36007 |
| | | |
| | | ADD ./target/blade-resource.jar ./app.jar |
| | | |
| | | ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "app.jar"] |
| | | |
| | | CMD ["--spring.profiles.active=test"] |
| | | CMD ["--spring.profiles.active=dev"] |
| | |
| | | <artifactId>blade-dict-api</artifactId> |
| | | <version>${bladex.project.version}</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>com.oracle.database.jdbc</groupId> |
| | | <artifactId>ojdbc8</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>cn.easyproject</groupId> |
| | | <artifactId>orai18n</artifactId> |
| | | <version>${orai18n.version}</version> |
| | | </dependency> |
| | | </dependencies> |
| | | |
| | | <build> |
| | |
| | | |
| | | |
| | | <select id="selectOssPage" resultMap="ossResultMap"> |
| | | select * from blade_oss where is_deleted = 0 |
| | | select * from pl_sys_oss where is_deleted = 0 |
| | | </select> |
| | | |
| | | </mapper> |
| | |
| | | |
| | | |
| | | <select id="selectSmsPage" resultMap="smsResultMap"> |
| | | select * from blade_sms where is_deleted = 0 |
| | | select * from pl_sys_sms where is_deleted = 0 |
| | | </select> |
| | | |
| | | </mapper> |
| | |
| | | url: ${blade.datasource.dev.url} |
| | | username: ${blade.datasource.dev.username} |
| | | password: ${blade.datasource.dev.password} |
| | | |
| | |
| | | #æå¡å¨ç«¯å£ |
| | | server: |
| | | port: 8010 |
| | | port: 36007 |
| | | |
| | | #é»è®¤å¯¹è±¡åå¨é
ç½® |
| | | oss: |
| | |
| | | |
| | | WORKDIR /blade/swagger |
| | | |
| | | EXPOSE 18000 |
| | | EXPOSE 36008 |
| | | |
| | | ADD ./target/blade-swagger.jar ./app.jar |
| | | |
| | | ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "app.jar"] |
| | | |
| | | CMD ["--spring.profiles.active=test"] |
| | | CMD ["--spring.profiles.active=dev"] |
| | |
| | | package org.springblade.swagger; |
| | | |
| | | |
| | | import io.swagger.annotations.SwaggerDefinition; |
| | | import org.springblade.core.cloud.client.BladeCloudApplication; |
| | | import org.springblade.core.launch.BladeApplication; |
| | | import org.springblade.core.launch.constant.AppConstant; |
| | | import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc; |
| | | |
| | | /** |
| | | * swaggerèåå¯å¨å¨ |
| | |
| | | server: |
| | | port: 18000 |
| | | port: 36008 |
| | | knife4j: |
| | | enableAggregation: true |
| | | cloud: |
| | |
| | | ${AnsiColor.BLUE} ______ _ _ ___ ___ |
| | | ${AnsiColor.BLUE} | ___ \| | | | \ \ / / |
| | | ${AnsiColor.BLUE} | |_/ /| | __ _ __| | ___ \ V / |
| | | ${AnsiColor.BLUE} | ___ \| | / _` | / _` | / _ \ > < |
| | | ${AnsiColor.BLUE} | |_/ /| || (_| || (_| || __/ / . \ |
| | | ${AnsiColor.BLUE} \____/ |_| \__,_| \__,_| \___|/__/ \__\ |
| | | |
| | | ${AnsiColor.BLUE} // / / // ) ) // ) ) // ) ) |
| | | ${AnsiColor.BLUE} // / / //___/ / // (( |
| | | ${AnsiColor.BLUE} // / / / __ ( // \\ |
| | | ${AnsiColor.BLUE} // / / // ) ) // ) ) |
| | | ${AnsiColor.BLUE} ((___/ / //____/ / ((____/ / ((___ / / |
| | | |
| | | ${AnsiColor.BLUE}:: BladeX ${blade.service.version} :: ${spring.application.name}:${AnsiColor.RED}${blade.env}${AnsiColor.BLUE} :: Running SpringBoot ${spring-boot.version} :: ${AnsiColor.BRIGHT_BLACK} |
| | |
| | | |
| | | WORKDIR /blade/xxljob-admin |
| | | |
| | | EXPOSE 7009 |
| | | EXPOSE 36013 |
| | | |
| | | ADD ./target/blade-xxljob-admin.jar ./app.jar |
| | | |
| | |
| | | <groupId>com.xuxueli</groupId> |
| | | <artifactId>xxl-job-core</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>com.oracle.database.jdbc</groupId> |
| | | <artifactId>ojdbc8</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>cn.easyproject</groupId> |
| | | <artifactId>orai18n</artifactId> |
| | | <version>${orai18n.version}</version> |
| | | </dependency> |
| | | </dependencies> |
| | | |
| | | <build> |
| | |
| | | server: |
| | | port: 7009 |
| | | port: 36013 |
| | | servlet: |
| | | context-path: /xxl-job-admin |
| | | |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" |
| | | "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.xxl.job.admin.dao.XxlJobRegistryDao"> |
| | | |
| | | <resultMap id="XxlJobRegistry" type="com.xxl.job.admin.core.model.XxlJobRegistry" > |
| | | |
| | | <resultMap id="XxlJobRegistry" type="com.xxl.job.admin.core..XxlJobRegistry" > |
| | | <result column="id" property="id" /> |
| | | <result column="registry_group" property="registryGroup" /> |
| | | <result column="registry_key" property="registryKey" /> |
| | |
| | | FROM xxl_job_registry AS t |
| | | WHERE t.update_time <![CDATA[ < ]]> DATE_ADD(#{nowTime},INTERVAL -#{timeout} SECOND) |
| | | </select> |
| | | |
| | | |
| | | <delete id="removeDead" parameterType="java.lang.Integer" > |
| | | DELETE FROM xxl_job_registry |
| | | WHERE id in |
| | |
| | | AND registry_value = #{registryValue} |
| | | </delete> |
| | | |
| | | </mapper> |
| | | </mapper> |
| | |
| | | |
| | | WORKDIR /blade/xxljob |
| | | |
| | | EXPOSE 7008 |
| | | EXPOSE 36009 |
| | | |
| | | ADD ./target/blade-xxljob.jar ./app.jar |
| | | |
| | |
| | | server: |
| | | port: 7008 |
| | | port: 36009 |
| | | |
| | | logging: |
| | | config: classpath:logback.xml |
| | |
| | | job: |
| | | accessToken: '' |
| | | admin: |
| | | addresses: http://127.0.0.1:7009/xxl-job-admin |
| | | addresses: http://127.0.0.1:37012/xxl-job-admin |
| | | executor: |
| | | appname: blade-xxljob |
| | | ip: 127.0.0.1 |
| | |
| | | xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| | | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
| | | <parent> |
| | | <artifactId>BladeX</artifactId> |
| | | <artifactId>UBCS</artifactId> |
| | | <groupId>org.springblade</groupId> |
| | | <version>3.0.1.RELEASE</version> |
| | | </parent> |
| | |
| | | xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| | | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
| | | <parent> |
| | | <artifactId>BladeX</artifactId> |
| | | <artifactId>UBCS</artifactId> |
| | | <groupId>org.springblade</groupId> |
| | | <version>3.0.1.RELEASE</version> |
| | | </parent> |
| | |
| | | xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| | | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
| | | <parent> |
| | | <artifactId>BladeX</artifactId> |
| | | <artifactId>UBCS</artifactId> |
| | | <groupId>org.springblade</groupId> |
| | | <version>3.0.1.RELEASE</version> |
| | | </parent> |
| | |
| | | * @author Chill |
| | | */ |
| | | @Data |
| | | @TableName("blade_notice") |
| | | @TableName("pl_org_notice") |
| | | @EqualsAndHashCode(callSuper = true) |
| | | public class Notice extends TenantEntity { |
| | | |
| | |
| | | * @author Chill |
| | | */ |
| | | @Data |
| | | @TableName("blade_dict") |
| | | @TableName("pl_sys_dict") |
| | | @ApiModel(value = "Dict对象", description = "Dict对象") |
| | | public class Dict implements Serializable { |
| | | |
| | |
| | | * @author Chill |
| | | */ |
| | | @Data |
| | | @TableName("blade_dict_biz") |
| | | @TableName("pl_sys_dict_biz") |
| | | @ApiModel(value = "DictBiz对象", description = "DictBiz对象") |
| | | public class DictBiz implements Serializable { |
| | | |
| | |
| | | * @author BladeX |
| | | */ |
| | | @Data |
| | | @TableName("blade_scope_api") |
| | | @TableName("pl_auth_scope_api") |
| | | @EqualsAndHashCode(callSuper = true) |
| | | @ApiModel(value = "ApiScope对象", description = "ApiScope对象") |
| | | public class ApiScope extends BaseEntity { |
| | |
| | | * @author BladeX |
| | | */ |
| | | @Data |
| | | @TableName("blade_client") |
| | | @TableName("pl_sys_client") |
| | | @EqualsAndHashCode(callSuper = true) |
| | | @ApiModel(value = "Client对象", description = "Client对象") |
| | | public class AuthClient extends BaseEntity { |
| | |
| | | * @author BladeX |
| | | */ |
| | | @Data |
| | | @TableName("blade_scope_data") |
| | | @TableName("pl_auth_scope_data") |
| | | @EqualsAndHashCode(callSuper = true) |
| | | @ApiModel(value = "DataScope对象", description = "DataScope对象") |
| | | public class DataScope extends BaseEntity { |
| | |
| | | * @author Chill |
| | | */ |
| | | @Data |
| | | @TableName("blade_dept") |
| | | @TableName("pl_org_dept") |
| | | @ApiModel(value = "Dept对象", description = "Dept对象") |
| | | public class Dept implements Serializable { |
| | | |
| | |
| | | * @author Chill |
| | | */ |
| | | @Data |
| | | @TableName("blade_menu") |
| | | @TableName("pl_sys_menu") |
| | | @ApiModel(value = "Menu对象", description = "Menu对象") |
| | | public class Menu implements Serializable { |
| | | |
| | |
| | | * @author Chill |
| | | */ |
| | | @Data |
| | | @TableName("blade_param") |
| | | @TableName("pl_oq_param") |
| | | @EqualsAndHashCode(callSuper = true) |
| | | @ApiModel(value = "Param对象", description = "Param对象") |
| | | public class Param extends BaseEntity { |
| | |
| | | * @author Chill |
| | | */ |
| | | @Data |
| | | @TableName("blade_post") |
| | | @TableName("pl_org_post") |
| | | @EqualsAndHashCode(callSuper = true) |
| | | @ApiModel(value = "Post对象", description = "å²ä½è¡¨") |
| | | public class Post extends TenantEntity { |
| | |
| | | * @author Chill |
| | | */ |
| | | @Data |
| | | @TableName("blade_region") |
| | | @TableName("pl_sys_region") |
| | | @ApiModel(value = "Region对象", description = "è¡æ¿åºå表") |
| | | public class Region implements Serializable { |
| | | |
| | |
| | | import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Data; |
| | | import lombok.NoArgsConstructor; |
| | | |
| | | import java.io.Serializable; |
| | | |
| | |
| | | * @author Chill |
| | | */ |
| | | @Data |
| | | @TableName("blade_role") |
| | | @NoArgsConstructor |
| | | @TableName("pl_org_role") |
| | | @ApiModel(value = "Role对象", description = "Role对象") |
| | | public class Role implements Serializable { |
| | | |
| | |
| | | @ApiModelProperty(value = "æ¯å¦å·²å é¤") |
| | | private Integer isDeleted; |
| | | |
| | | public Role(String tenantId, Long parentId, String roleName, Integer sort, String roleAlias, Integer isDeleted) { |
| | | this.tenantId = tenantId; |
| | | this.parentId = parentId; |
| | | this.roleName = roleName; |
| | | this.sort = sort; |
| | | this.roleAlias = roleAlias; |
| | | this.isDeleted = isDeleted; |
| | | } |
| | | |
| | | } |
| | |
| | | import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Data; |
| | | import lombok.NoArgsConstructor; |
| | | |
| | | import java.io.Serializable; |
| | | |
| | |
| | | * @author Chill |
| | | */ |
| | | @Data |
| | | @TableName("blade_role_menu") |
| | | @NoArgsConstructor |
| | | @TableName("pl_org_role_menu") |
| | | @ApiModel(value = "RoleMenu对象", description = "RoleMenu对象") |
| | | public class RoleMenu implements Serializable { |
| | | |
| | |
| | | @ApiModelProperty(value = "è§è²id") |
| | | private Long roleId; |
| | | |
| | | |
| | | public RoleMenu(Long menuId, Long roleId) { |
| | | this.menuId = menuId; |
| | | this.roleId = roleId; |
| | | } |
| | | } |
| | |
| | | * @author Chill |
| | | */ |
| | | @Data |
| | | @TableName("blade_role_scope") |
| | | @TableName("pl_auth_role_scope") |
| | | @ApiModel(value = "RoleScope对象", description = "RoleScope对象") |
| | | public class RoleScope implements Serializable { |
| | | |
| | |
| | | * @author Chill |
| | | */ |
| | | @Data |
| | | @TableName("blade_tenant") |
| | | @TableName("pl_org_tenant") |
| | | @EqualsAndHashCode(callSuper = true) |
| | | @ApiModel(value = "Tenant对象", description = "Tenant对象") |
| | | public class Tenant extends BaseEntity { |
| | |
| | | */ |
| | | @ApiModelProperty(value = "èç³»å°å") |
| | | private String address; |
| | | /** |
| | | * è´¦å·é¢åº¦ |
| | | */ |
| | | @ApiModelProperty(value = "è´¦å·é¢åº¦") |
| | | private Integer accountNumber; |
| | | /** |
| | | * è¿ææ¶é´ |
| | | */ |
| | | @DateTimeFormat(pattern = DateUtil.PATTERN_DATETIME) |
| | | @JsonFormat(pattern = DateUtil.PATTERN_DATETIME) |
| | | @ApiModelProperty(value = "è¿ææ¶é´") |
| | | private Date expireTime; |
| | | |
| | | /** |
| | | * 产åå
ID |
| | | */ |
| | |
| | | * @author BladeX |
| | | */ |
| | | @Data |
| | | @TableName("blade_tenant_package") |
| | | @TableName("pl_org_tenant_package") |
| | | @EqualsAndHashCode(callSuper = true) |
| | | @ApiModel(value = "TenantPackage对象", description = "ç§æ·äº§å表") |
| | | public class TenantPackage extends BaseEntity { |
| | |
| | | * @author BladeX |
| | | */ |
| | | @Data |
| | | @TableName("blade_top_menu") |
| | | @TableName("pl_sys_top_menu") |
| | | @EqualsAndHashCode(callSuper = true) |
| | | @ApiModel(value = "TopMenu对象", description = "é¡¶é¨èå表") |
| | | public class TopMenu extends TenantEntity { |
| | |
| | | * @author Chill |
| | | */ |
| | | @Data |
| | | @TableName("blade_top_menu_setting") |
| | | @TableName("pl_sys_top_menu_setting") |
| | | public class TopMenuSetting { |
| | | |
| | | /** |
| | |
| | | String ROLE_ALIASES = API_PREFIX + "/role-aliases"; |
| | | String TENANT = API_PREFIX + "/tenant"; |
| | | String TENANT_ID = API_PREFIX + "/tenant-id"; |
| | | //æ¥è¯¢è¶
级管çå |
| | | String TENANT_MGR_ID = API_PREFIX + "/tenant-mgr-id"; |
| | | String TENANT_PACKAGE = API_PREFIX + "/tenant-package"; |
| | | String PARAM = API_PREFIX + "/param"; |
| | | String PARAM_VALUE = API_PREFIX + "/param-value"; |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /* |
| | | * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. |
| | | * |
| | | * Redistribution and use in source and binary forms, with or without |
| | | * modification, are permitted provided that the following conditions are met: |
| | | * |
| | | * Redistributions of source code must retain the above copyright notice, |
| | | * this list of conditions and the following disclaimer. |
| | | * Redistributions in binary form must reproduce the above copyright |
| | | * notice, this list of conditions and the following disclaimer in the |
| | | * documentation and/or other materials provided with the distribution. |
| | | * Neither the name of the dreamlu.net developer nor the names of its |
| | | * contributors may be used to endorse or promote products derived from |
| | | * this software without specific prior written permission. |
| | | * Author: Chill åºéª (smallchill@163.com) |
| | | */ |
| | | package org.springblade.system.vo; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | import org.springblade.system.entity.ApiScope; |
| | | import org.springblade.system.entity.Tenant; |
| | | |
| | | /** |
| | | * è§å¾å®ä½ç±» |
| | | * |
| | | * @author Chill |
| | | */ |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = true) |
| | | @ApiModel(value = "TenantVO对象", description = "TenantVO对象") |
| | | public class TenantVO extends Tenant { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * æ¯å¦å¼å¯ä¸å |
| | | */ |
| | | private Boolean membersFlag; |
| | | } |
| | |
| | | package org.springblade.system.user.entity; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | import org.springblade.core.tenant.mp.TenantEntity; |
| | |
| | | * @author Chill |
| | | */ |
| | | @Data |
| | | @TableName("blade_user") |
| | | @TableName("pl_org_user") |
| | | @EqualsAndHashCode(callSuper = true) |
| | | public class User extends TenantEntity { |
| | | |
| | |
| | | * å²ä½id |
| | | */ |
| | | private String postId; |
| | | |
| | | |
| | | } |
| | |
| | | * @author Chill |
| | | */ |
| | | @Data |
| | | @TableName("blade_user_app") |
| | | @TableName("pl_org_user_app") |
| | | @EqualsAndHashCode(callSuper = true) |
| | | @ApiModel(value = "UserApp对象", description = "UserApp对象") |
| | | public class UserApp extends Model<UserApp> { |
| | |
| | | * @author Chill |
| | | */ |
| | | @Data |
| | | @TableName("blade_user_dept") |
| | | @TableName("pl_org_user_dept") |
| | | @ApiModel(value = "UserDept对象", description = "UserDept对象") |
| | | public class UserDept implements Serializable { |
| | | |
| | |
| | | * @author Chill |
| | | */ |
| | | @Data |
| | | @TableName("blade_user_oauth") |
| | | @TableName("pl_org_user_oauth") |
| | | public class UserOauth implements Serializable { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | |
| | | * @author Chill |
| | | */ |
| | | @Data |
| | | @TableName("blade_user_other") |
| | | @TableName("pl_org_user_other") |
| | | @EqualsAndHashCode(callSuper = true) |
| | | @ApiModel(value = "UserOther对象", description = "UserOther对象") |
| | | public class UserOther extends Model<UserOther> { |
| | |
| | | * @author Chill |
| | | */ |
| | | @Data |
| | | @TableName("blade_user_web") |
| | | @TableName("pl_org_user_web") |
| | | @EqualsAndHashCode(callSuper = true) |
| | | @ApiModel(value = "UserWeb对象", description = "UserWeb对象") |
| | | public class UserWeb extends Model<UserWeb> { |
| | |
| | | import org.springframework.web.bind.annotation.RequestBody; |
| | | import org.springframework.web.bind.annotation.RequestParam; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * User Feignæ¥å£ç±» |
| | | * |
| | |
| | | String USER_INFO_BY_ACCOUNT = API_PREFIX + "/user-info-by-account"; |
| | | String USER_AUTH_INFO = API_PREFIX + "/user-auth-info"; |
| | | String SAVE_USER = API_PREFIX + "/save-user"; |
| | | String SAVE_USER_LIST = API_PREFIX + "/save-user-list"; |
| | | String REMOVE_USER = API_PREFIX + "/remove-user"; |
| | | |
| | | /** |
| | |
| | | R<Boolean> saveUser(@RequestBody User user); |
| | | |
| | | /** |
| | | * æ°å»ºå¤ä¸ªç¨æ· |
| | | * @param users |
| | | * @return |
| | | */ |
| | | @PostMapping(SAVE_USER_LIST) |
| | | R<Boolean> saveUserList(@RequestBody List<User> users); |
| | | |
| | | /** |
| | | * å é¤ç¨æ· |
| | | * |
| | | * @param tenantIds ç§æ·idéå |
| | |
| | | xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| | | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
| | | <parent> |
| | | <artifactId>BladeX</artifactId> |
| | | <artifactId>UBCS</artifactId> |
| | | <groupId>org.springblade</groupId> |
| | | <version>3.0.1.RELEASE</version> |
| | | </parent> |
| | |
| | | |
| | | WORKDIR /blade/desk |
| | | |
| | | EXPOSE 8105 |
| | | EXPOSE 36010 |
| | | |
| | | ADD ./target/blade-desk.jar ./app.jar |
| | | |
| | | ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "app.jar"] |
| | | |
| | | CMD ["--spring.profiles.active=test"] |
| | | CMD ["--spring.profiles.active=dev"] |
| | |
| | | <groupId>org.springblade</groupId> |
| | | <artifactId>blade-starter-transaction</artifactId> |
| | | </dependency>--> |
| | | <dependency> |
| | | <groupId>com.oracle.database.jdbc</groupId> |
| | | <artifactId>ojdbc8</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>cn.easyproject</groupId> |
| | | <artifactId>orai18n</artifactId> |
| | | <version>${orai18n.version}</version> |
| | | </dependency> |
| | | </dependencies> |
| | | |
| | | <build> |
| | |
| | | import org.springblade.core.cloud.client.BladeCloudApplication; |
| | | import org.springblade.core.launch.BladeApplication; |
| | | import org.springblade.core.launch.constant.AppConstant; |
| | | import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc; |
| | | |
| | | /** |
| | | * Deskå¯å¨å¨ |
| | |
| | | * @author Chill |
| | | */ |
| | | @Data |
| | | @TableName("blade_process_leave") |
| | | @TableName("pl_wf_process_leave") |
| | | @EqualsAndHashCode(callSuper = true) |
| | | public class ProcessLeave extends FlowEntity { |
| | | |
| | |
| | | </resultMap> |
| | | |
| | | <select id="topList" resultMap="noticeResultMap"> |
| | | select * from blade_notice limit #{number} |
| | | select * from pl_org_notice limit #{number} |
| | | </select> |
| | | |
| | | <select id="selectNoticePage" resultMap="noticeVOResultMap"> |
| | |
| | | n.*, |
| | | d.dict_value AS categoryName |
| | | FROM |
| | | blade_notice n |
| | | LEFT JOIN ( SELECT * FROM blade_dict WHERE CODE = 'notice' ) d ON n.category = d.dict_key |
| | | pl_org_notice n |
| | | LEFT JOIN ( SELECT * FROM pl_sys_dict WHERE CODE = 'notice' ) d ON n.category = d.dict_key |
| | | WHERE |
| | | n.is_deleted = 0 and n.tenant_id = #{notice.tenantId} |
| | | <if test="notice.title!=null"> |
| | |
| | | #æå¡å¨ç«¯å£ |
| | | server: |
| | | port: 8105 |
| | | port: 36010 |
| | | |
| | | #æ°æ®æºé
ç½® |
| | | spring: |
| | |
| | | |
| | | WORKDIR /blade/system |
| | | |
| | | EXPOSE 8106 |
| | | EXPOSE 36011 |
| | | |
| | | ADD ./target/blade-system.jar ./app.jar |
| | | |
| | | ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "app.jar"] |
| | | |
| | | CMD ["--spring.profiles.active=test"] |
| | | CMD ["--spring.profiles.active=dev"] |
| | |
| | | <artifactId>blade-user-api</artifactId> |
| | | <version>${bladex.project.version}</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>com.oracle.database.jdbc</groupId> |
| | | <artifactId>ojdbc8</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>cn.easyproject</groupId> |
| | | <artifactId>orai18n</artifactId> |
| | | <version>${orai18n.version}</version> |
| | | </dependency> |
| | | </dependencies> |
| | | |
| | | <build> |
| | |
| | | import org.springblade.core.secure.BladeUser; |
| | | import org.springblade.core.secure.annotation.PreAuth; |
| | | import org.springblade.core.tenant.annotation.NonDS; |
| | | import org.springblade.core.tenant.mp.TenantEntity; |
| | | import org.springblade.core.tool.api.R; |
| | | import org.springblade.core.tool.constant.BladeConstant; |
| | | import org.springblade.core.tool.constant.RoleConstant; |
| | |
| | | import org.springblade.system.entity.TenantPackage; |
| | | import org.springblade.system.service.ITenantPackageService; |
| | | import org.springblade.system.service.ITenantService; |
| | | import org.springblade.system.vo.TenantVO; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import springfox.documentation.annotations.ApiIgnore; |
| | | |
| | |
| | | @ApiOperationSupport(order = 5) |
| | | @ApiOperation(value = "æ°å¢æä¿®æ¹", notes = "ä¼ å
¥tenant") |
| | | @PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR) |
| | | public R submit(@Valid @RequestBody Tenant tenant) { |
| | | return R.status(tenantService.submitTenant(tenant)); |
| | | public R submit(@Valid @RequestBody TenantVO tenantVO) { |
| | | System.out.println(tenantVO); |
| | | return R.status(tenantService.submitTenant(tenantVO)); |
| | | } |
| | | |
| | | |
| | |
| | | } |
| | | |
| | | /** |
| | | * ææé
ç½® |
| | | */ |
| | | @PostMapping("/setting") |
| | | @ApiOperationSupport(order = 7) |
| | | @ApiOperation(value = "ææé
ç½®", notes = "ä¼ å
¥ids,accountNumber,expireTime") |
| | | @PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR) |
| | | public R setting(@ApiParam(value = "主é®éå", required = true) @RequestParam String ids, @ApiParam(value = "è´¦å·é¢åº¦") Integer accountNumber, @ApiParam(value = "è¿ææ¶é´") Date expireTime) { |
| | | return R.status(tenantService.setting(accountNumber, expireTime, ids)); |
| | | } |
| | | |
| | | /** |
| | | * æ°æ®æºé
ç½® |
| | | */ |
| | | @PostMapping("datasource") |
| | | @PostMapping("/datasource") |
| | | @ApiOperationSupport(order = 8) |
| | | @PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR) |
| | | @ApiOperation(value = "æ°æ®æºé
ç½®", notes = "ä¼ å
¥datasource_id") |
| | |
| | | return R.status(tenantService.update(Wrappers.<Tenant>update().lambda().set(Tenant::getPackageId, packageId).eq(Tenant::getTenantId, tenantId))); |
| | | } |
| | | |
| | | /** |
| | | * æ¥è¯¢ç§æ·ä¿¡æ¯ï¼ç®é®å¼å¯¹å½¢å¿ |
| | | * @return |
| | | */ |
| | | @GetMapping("/tenant-map") |
| | | @ApiOperationSupport(order = 1) |
| | | @ApiOperation(value = "ä¸æç§æ·ä¿¡æ¯") |
| | | public R<List> findAll() { |
| | | List<Map<String, Object>> map = tenantService.selectMaps(); |
| | | return R.data(map); |
| | | } |
| | | |
| | | /** |
| | | * æ¥è¯¢æ¯å¦é
ç½®æé»è®¤å¿
é¡»å¼å¯ä¸å管ç |
| | | * @return |
| | | */ |
| | | @GetMapping("/find-ssa-enable") |
| | | @ApiOperationSupport(order = 14) |
| | | @ApiOperation(value = "ä¸æç§æ·ä¿¡æ¯") |
| | | @PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR) |
| | | public R findIsOpen() { |
| | | boolean isOpen = this.tenantService.findIsOpen(); |
| | | return R.data(isOpen); |
| | | } |
| | | |
| | | } |
| | |
| | | SELECT |
| | | CASE WHEN count(1) > 0 THEN 1 ELSE 0 END |
| | | FROM |
| | | blade_dept |
| | | pl_org_dept |
| | | WHERE |
| | | parent_id = dept.id and is_deleted = 0 |
| | | ) AS "has_children" |
| | | FROM |
| | | blade_dept dept |
| | | pl_org_dept dept |
| | | WHERE dept.is_deleted = 0 |
| | | <if test="param1!=null and param1!=''"> |
| | | and dept.tenant_id = #{param1} |
| | |
| | | </select> |
| | | |
| | | <select id="tree" resultMap="treeNodeResultMap"> |
| | | select id, parent_id, dept_name as title, id as "value", id as "key" from blade_dept where is_deleted = 0 |
| | | select id, parent_id, dept_name as title, id as "value", id as "key" from pl_org_dept where is_deleted = 0 |
| | | <if test="_parameter!=null and _parameter!=''"> |
| | | and tenant_id = #{_parameter} |
| | | </if> |
| | |
| | | SELECT |
| | | CASE WHEN count(1) > 0 THEN 1 ELSE 0 END |
| | | FROM |
| | | blade_dept |
| | | pl_org_dept |
| | | WHERE |
| | | parent_id = dept.id and is_deleted = 0 |
| | | ) AS "has_children" |
| | | FROM |
| | | blade_dept dept |
| | | pl_org_dept dept |
| | | WHERE |
| | | dept.parent_id = #{param2} AND dept.is_deleted = 0 |
| | | <if test="param1!=null and param1!=''"> |
| | |
| | | SELECT |
| | | dept_name |
| | | FROM |
| | | blade_dept |
| | | pl_org_dept |
| | | WHERE |
| | | id IN |
| | | <foreach collection="array" item="ids" index="index" open="(" close=")" separator=","> |
| | |
| | | <select id="getValue" resultType="java.lang.String"> |
| | | select |
| | | dict_value |
| | | from blade_dict_biz where code = #{param1} and dict_key = #{param2} and is_deleted = 0 |
| | | from pl_sys_dict_biz where code = #{param1} and dict_key = #{param2} and is_deleted = 0 |
| | | </select> |
| | | |
| | | <!-- oracle çæ¬ --> |
| | | <!--<select id="getValue" resultType="java.lang.String"> |
| | | select |
| | | dict_value |
| | | from blade_dict_biz where code = #{param1, jdbcType=VARCHAR} and dict_key = #{param2} and dict_key >= 0 rownum 1 |
| | | from pl_sys_dict_biz where code = #{param1, jdbcType=VARCHAR} and dict_key = #{param2} and dict_key >= 0 rownum 1 |
| | | </select>--> |
| | | |
| | | <select id="getList" resultMap="dictResultMap"> |
| | | select id, tenant_id, parent_id, code, dict_key, dict_value, sort, remark from blade_dict_biz where code = #{param1} and parent_id > 0 and is_sealed = 0 and is_deleted = 0 |
| | | select id, tenant_id, parent_id, code, dict_key, dict_value, sort, remark from pl_sys_dict_biz where code = #{param1} and parent_id > 0 and is_sealed = 0 and is_deleted = 0 |
| | | </select> |
| | | |
| | | <select id="tree" resultMap="treeNodeResultMap"> |
| | | select id, parent_id, dict_value as title, id as "value", id as "key" from blade_dict_biz where is_deleted = 0 |
| | | select id, parent_id, dict_value as title, id as "value", id as "key" from pl_sys_dict_biz where is_deleted = 0 |
| | | </select> |
| | | |
| | | <select id="parentTree" resultMap="treeNodeResultMap"> |
| | | select id, parent_id, dict_value as title, id as "value", id as "key" from blade_dict_biz where is_deleted = 0 and parent_id = 0 |
| | | select id, parent_id, dict_value as title, id as "value", id as "key" from pl_sys_dict_biz where is_deleted = 0 and parent_id = 0 |
| | | </select> |
| | | |
| | | </mapper> |
| | |
| | | </resultMap> |
| | | |
| | | <select id="selectDictPage" resultMap="dictResultMap"> |
| | | select * from blade_dict where is_deleted = 0 |
| | | select * from pl_sys_dict where is_deleted = 0 |
| | | </select> |
| | | |
| | | <select id="getValue" resultType="java.lang.String"> |
| | | select |
| | | dict_value |
| | | from blade_dict where code = #{param1} and dict_key = #{param2} and is_deleted = 0 |
| | | from pl_sys_dict where code = #{param1} and dict_key = #{param2} and is_deleted = 0 |
| | | </select> |
| | | |
| | | <!-- oracle çæ¬ --> |
| | | <!--<select id="getValue" resultType="java.lang.String"> |
| | | select |
| | | dict_value |
| | | from blade_dict where code = #{param1, jdbcType=VARCHAR} and dict_key = #{param2} and dict_key >= 0 rownum 1 |
| | | from pl_sys_dict where code = #{param1, jdbcType=VARCHAR} and dict_key = #{param2} and dict_key >= 0 rownum 1 |
| | | </select>--> |
| | | |
| | | <select id="getList" resultMap="dictResultMap"> |
| | | select id, parent_id, code, dict_key, dict_value, sort, remark from blade_dict where code = #{param1} and parent_id > 0 and is_sealed = 0 and is_deleted = 0 |
| | | select id, parent_id, code, dict_key, dict_value, sort, remark from pl_sys_dict where code = #{param1} and parent_id > 0 and is_sealed = 0 and is_deleted = 0 |
| | | </select> |
| | | |
| | | <select id="tree" resultMap="treeNodeResultMap"> |
| | | select id, parent_id, dict_value as title, id as "value", id as "key" from blade_dict where is_deleted = 0 |
| | | select id, parent_id, dict_value as title, id as "value", id as "key" from pl_sys_dict where is_deleted = 0 |
| | | </select> |
| | | |
| | | <select id="parentTree" resultMap="treeNodeResultMap"> |
| | | select id, parent_id, dict_value as title, id as "value", id as "key" from blade_dict where is_deleted = 0 and parent_id = 0 |
| | | select id, parent_id, dict_value as title, id as "value", id as "key" from pl_sys_dict where is_deleted = 0 and parent_id = 0 |
| | | </select> |
| | | |
| | | </mapper> |
| | |
| | | SELECT |
| | | CASE WHEN count( 1 ) > 0 THEN 1 ELSE 0 END |
| | | FROM |
| | | blade_menu |
| | | pl_sys_menu |
| | | WHERE |
| | | parent_id = menu.id AND is_deleted = 0 |
| | | ) AS "has_children" |
| | | FROM |
| | | blade_menu menu |
| | | pl_sys_menu menu |
| | | WHERE menu.is_deleted = 0 |
| | | <if test="param1!=null"> |
| | | and menu.parent_id = #{param1} |
| | |
| | | SELECT |
| | | CASE WHEN count( 1 ) > 0 THEN 1 ELSE 0 END |
| | | FROM |
| | | blade_menu |
| | | pl_sys_menu |
| | | WHERE |
| | | parent_id = menu.id AND is_deleted = 0 AND category = 1 |
| | | ) AS "has_children" |
| | | FROM |
| | | blade_menu menu |
| | | pl_sys_menu menu |
| | | WHERE menu.is_deleted = 0 AND menu.category = 1 |
| | | <if test="param1!=null"> |
| | | and menu.parent_id = #{param1} |
| | |
| | | </select> |
| | | |
| | | <select id="tree" resultMap="treeNodeResultMap"> |
| | | select id, parent_id, name as title, id as "value", id as "key" from blade_menu where is_deleted = 0 and category = 1 |
| | | select id, parent_id, name as title, id as "value", id as "key" from pl_sys_menu where is_deleted = 0 and category = 1 |
| | | </select> |
| | | |
| | | <select id="allMenu" resultMap="menuResultMap"> |
| | | select * from blade_menu where is_deleted = 0 and category = 1 |
| | | select * from pl_sys_menu where is_deleted = 0 and category = 1 |
| | | </select> |
| | | |
| | | <select id="roleMenu" resultMap="menuResultMap"> |
| | | select * from blade_menu where is_deleted = 0 and id IN |
| | | ( SELECT menu_id FROM blade_role_menu WHERE role_id IN |
| | | select * from pl_sys_menu where is_deleted = 0 and id IN |
| | | ( SELECT menu_id FROM pl_org_role_menu WHERE role_id IN |
| | | <foreach collection="param1" index="index" item="item" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | |
| | | <if test="param2!=null and param2>0"> |
| | | AND id IN |
| | | ( |
| | | SELECT menu_id FROM blade_top_menu_setting WHERE top_menu_id = #{param2} |
| | | SELECT menu_id FROM pl_sys_top_menu_setting WHERE top_menu_id = #{param2} |
| | | ) |
| | | </if> |
| | | </select> |
| | | |
| | | <select id="roleMenuByRoleId" resultMap="menuResultMap"> |
| | | select * from blade_menu where is_deleted = 0 and id IN |
| | | ( SELECT menu_id FROM blade_role_menu WHERE role_id IN |
| | | select * from pl_sys_menu where is_deleted = 0 and id IN |
| | | ( SELECT menu_id FROM pl_org_role_menu WHERE role_id IN |
| | | <foreach collection="list" index="index" item="item" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | |
| | | </select> |
| | | |
| | | <select id="roleMenuByTopMenuId" resultMap="menuResultMap"> |
| | | select * from blade_menu where is_deleted = 0 and id IN |
| | | select * from pl_sys_menu where is_deleted = 0 and id IN |
| | | ( |
| | | SELECT menu_id FROM blade_top_menu_setting WHERE top_menu_id = #{param1} |
| | | SELECT menu_id FROM pl_sys_top_menu_setting WHERE top_menu_id = #{param1} |
| | | ) |
| | | </select> |
| | | |
| | |
| | | SELECT |
| | | * |
| | | FROM |
| | | blade_menu |
| | | pl_sys_menu |
| | | WHERE |
| | | is_deleted = 0 and category = 1 |
| | | and id IN ( SELECT menu_id FROM blade_role_menu WHERE role_id IN |
| | | and id IN ( SELECT menu_id FROM pl_org_role_menu WHERE role_id IN |
| | | <foreach collection="list" index="index" item="item" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> ) |
| | |
| | | action, |
| | | sort |
| | | FROM |
| | | blade_menu |
| | | pl_sys_menu |
| | | WHERE |
| | | ( |
| | | category = 2 OR id IN ( SELECT parent_id FROM blade_menu WHERE is_deleted = 0 AND category = 2 ) |
| | | category = 2 OR id IN ( SELECT parent_id FROM pl_sys_menu WHERE is_deleted = 0 AND category = 2 ) |
| | | ) |
| | | AND is_deleted = 0 |
| | | ORDER BY sort |
| | |
| | | action, |
| | | sort |
| | | FROM |
| | | blade_menu |
| | | pl_sys_menu |
| | | WHERE |
| | | is_deleted = 0 and id IN ( |
| | | SELECT parent_id FROM blade_menu |
| | | WHERE ( category = 2 AND id IN ( SELECT menu_id FROM blade_role_menu WHERE role_id IN |
| | | SELECT parent_id FROM pl_sys_menu |
| | | WHERE ( category = 2 AND id IN ( SELECT menu_id FROM pl_org_role_menu WHERE role_id IN |
| | | <foreach collection="list" index="index" item="item" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | |
| | | action, |
| | | sort |
| | | FROM |
| | | blade_menu |
| | | pl_sys_menu |
| | | WHERE |
| | | is_deleted = 0 and category = 2 AND id IN ( SELECT menu_id FROM blade_role_menu WHERE role_id IN |
| | | is_deleted = 0 and category = 2 AND id IN ( SELECT menu_id FROM pl_org_role_menu WHERE role_id IN |
| | | <foreach collection="list" index="index" item="item" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach>) |
| | |
| | | </select> |
| | | |
| | | <select id="grantTree" resultMap="treeNodeResultMap"> |
| | | select id, parent_id, name as title, id as "value", id as "key" from blade_menu where is_deleted = 0 order by sort |
| | | select id, parent_id, name as title, id as "value", id as "key" from pl_sys_menu where is_deleted = 0 order by sort |
| | | </select> |
| | | |
| | | <select id="grantTreeByRole" resultMap="treeNodeResultMap"> |
| | | select id, parent_id, name as title, id as "value", id as "key" from blade_menu where is_deleted = 0 |
| | | and id in ( select menu_id from blade_role_menu where role_id in |
| | | select id, parent_id, name as title, id as "value", id as "key" from pl_sys_menu where is_deleted = 0 |
| | | and id in ( select menu_id from pl_org_role_menu where role_id in |
| | | <foreach collection="list" index="index" item="item" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> ) |
| | | or id in ( |
| | | select parent_id from blade_menu where is_deleted = 0 |
| | | and id in ( select menu_id from blade_role_menu where role_id in |
| | | select parent_id from pl_sys_menu where is_deleted = 0 |
| | | and id in ( select menu_id from pl_org_role_menu where role_id in |
| | | <foreach collection="list" index="index" item="item" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> ) |
| | |
| | | </select> |
| | | |
| | | <select id="grantTopTree" resultMap="treeNodeResultMap"> |
| | | select id, parent_id, name as title, id as "value", id as "key" from blade_menu where category = 1 and is_deleted = 0 order by sort |
| | | select id, parent_id, name as title, id as "value", id as "key" from pl_sys_menu where category = 1 and is_deleted = 0 order by sort |
| | | </select> |
| | | |
| | | <select id="grantTopTreeByRole" resultMap="treeNodeResultMap"> |
| | | select id, parent_id, name as title, id as "value", id as "key" from blade_menu where category = 1 and is_deleted = 0 |
| | | and id in ( select menu_id from blade_role_menu where role_id in |
| | | select id, parent_id, name as title, id as "value", id as "key" from pl_sys_menu where category = 1 and is_deleted = 0 |
| | | and id in ( select menu_id from pl_org_role_menu where role_id in |
| | | <foreach collection="list" index="index" item="item" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> ) |
| | | or id in ( |
| | | select parent_id from blade_menu where is_deleted = 0 |
| | | and id in ( select menu_id from blade_role_menu where role_id in |
| | | select parent_id from pl_sys_menu where is_deleted = 0 |
| | | and id in ( select menu_id from pl_org_role_menu where role_id in |
| | | <foreach collection="list" index="index" item="item" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> ) |
| | |
| | | id AS "value", |
| | | id AS "key" |
| | | FROM |
| | | blade_menu |
| | | pl_sys_menu |
| | | WHERE |
| | | category = 1 |
| | | AND is_deleted = 0 |
| | |
| | | id AS "value", |
| | | id AS "key" |
| | | FROM |
| | | blade_menu |
| | | pl_sys_menu |
| | | WHERE |
| | | category = 1 |
| | | AND is_deleted = 0 |
| | |
| | | id AS "value", |
| | | id AS "key" |
| | | FROM |
| | | blade_menu |
| | | pl_sys_menu |
| | | WHERE |
| | | category = 1 |
| | | AND is_deleted = 0 |
| | | AND id IN ( SELECT menu_id FROM blade_scope_data WHERE is_deleted = 0 AND menu_id IS NOT NULL ) |
| | | AND ( |
| | | id IN ( |
| | | select menu_id from blade_role_menu where role_id in |
| | | select menu_id from pl_org_role_menu where role_id in |
| | | <foreach collection="list" index="index" item="item" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | | ) |
| | | OR id IN ( |
| | | select parent_id from blade_menu where is_deleted = 0 |
| | | and id in ( select menu_id from blade_role_menu where role_id in |
| | | select parent_id from pl_sys_menu where is_deleted = 0 |
| | | and id in ( select menu_id from pl_org_role_menu where role_id in |
| | | <foreach collection="list" index="index" item="item" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> ) |
| | |
| | | is_deleted = 0 |
| | | AND ( |
| | | menu_id IN ( |
| | | select menu_id from blade_role_menu where role_id in |
| | | select menu_id from pl_org_role_menu where role_id in |
| | | <foreach collection="list" index="index" item="item" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | | ) |
| | | OR menu_id IN ( |
| | | select parent_id from blade_menu where is_deleted = 0 |
| | | and id in ( select menu_id from blade_role_menu where role_id in |
| | | select parent_id from pl_sys_menu where is_deleted = 0 |
| | | and id in ( select menu_id from pl_org_role_menu where role_id in |
| | | <foreach collection="list" index="index" item="item" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> ) |
| | |
| | | id AS "value", |
| | | id AS "key" |
| | | FROM |
| | | blade_menu |
| | | pl_sys_menu |
| | | WHERE |
| | | category = 1 |
| | | AND is_deleted = 0 |
| | | AND id IN ( SELECT menu_id FROM blade_scope_api WHERE is_deleted = 0 AND menu_id IS NOT NULL ) |
| | | AND ( |
| | | id IN ( |
| | | select menu_id from blade_role_menu where role_id in |
| | | select menu_id from pl_org_role_menu where role_id in |
| | | <foreach collection="list" index="index" item="item" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | | ) |
| | | OR id IN ( |
| | | select parent_id from blade_menu where is_deleted = 0 |
| | | select parent_id from pl_sys_menu where is_deleted = 0 |
| | | and id in ( |
| | | select menu_id from blade_role_menu where role_id in |
| | | select menu_id from pl_org_role_menu where role_id in |
| | | <foreach collection="list" index="index" item="item" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> ) |
| | |
| | | AND |
| | | ( |
| | | menu_id IN ( |
| | | select menu_id from blade_role_menu where role_id in |
| | | select menu_id from pl_org_role_menu where role_id in |
| | | <foreach collection="list" index="index" item="item" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | | ) |
| | | OR menu_id IN ( |
| | | select parent_id from blade_menu where is_deleted = 0 |
| | | and id in ( select menu_id from blade_role_menu where role_id in |
| | | select parent_id from pl_sys_menu where is_deleted = 0 |
| | | and id in ( select menu_id from pl_org_role_menu where role_id in |
| | | <foreach collection="list" index="index" item="item" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> ) |
| | |
| | | GROUP_CONCAT(r.role_alias) as alias, |
| | | m.path |
| | | FROM |
| | | blade_role_menu rm |
| | | LEFT JOIN blade_menu m ON rm.menu_id = m.id |
| | | LEFT JOIN blade_role r ON rm.role_id = r.id |
| | | pl_org_role_menu rm |
| | | LEFT JOIN pl_sys_menu m ON rm.menu_id = m.id |
| | | LEFT JOIN pl_org_role r ON rm.role_id = r.id |
| | | WHERE |
| | | rm.role_id IN |
| | | <foreach collection="list" index="index" item="item" open="(" separator="," close=")"> |
| | |
| | | |
| | | |
| | | <select id="selectPostPage" resultMap="postResultMap"> |
| | | select * from blade_post where is_deleted = 0 |
| | | select * from pl_org_post where is_deleted = 0 |
| | | </select> |
| | | |
| | | <select id="getPostNames" resultType="java.lang.String"> |
| | | SELECT |
| | | post_name |
| | | FROM |
| | | blade_post |
| | | pl_org_post |
| | | WHERE |
| | | id IN |
| | | <foreach collection="array" item="ids" index="index" open="(" close=")" separator=","> |
| | |
| | | <select id="lazyList" resultMap="regionVOResultMap"> |
| | | SELECT |
| | | region.*, |
| | | ( SELECT CASE WHEN count( 1 ) > 0 THEN 1 ELSE 0 END FROM blade_region WHERE parent_code = region.code ) AS "has_children" |
| | | ( SELECT CASE WHEN count( 1 ) > 0 THEN 1 ELSE 0 END FROM pl_sys_region WHERE parent_code = region.code ) AS "has_children" |
| | | FROM |
| | | blade_region region |
| | | pl_sys_region region |
| | | <where> |
| | | <if test="param1!=null"> |
| | | and region.parent_code = #{param1} |
| | |
| | | region.name AS "title", |
| | | region.code AS "value", |
| | | region.code AS "key", |
| | | ( SELECT CASE WHEN count( 1 ) > 0 THEN 1 ELSE 0 END FROM blade_region WHERE parent_code = region.code ) AS "has_children" |
| | | ( SELECT CASE WHEN count( 1 ) > 0 THEN 1 ELSE 0 END FROM pl_sys_region WHERE parent_code = region.code ) AS "has_children" |
| | | FROM |
| | | blade_region region |
| | | pl_sys_region region |
| | | <where> |
| | | <if test="param1!=null"> |
| | | and region.parent_code = #{param1} |
| | |
| | | </select> |
| | | |
| | | <select id="exportRegion" resultType="org.springblade.system.excel.RegionExcel"> |
| | | SELECT * FROM blade_region ${ew.customSqlSegment} |
| | | SELECT * FROM pl_sys_region ${ew.customSqlSegment} |
| | | </select> |
| | | |
| | | </mapper> |
| | |
| | | </resultMap> |
| | | |
| | | <select id="selectRolePage" resultMap="roleResultMap"> |
| | | select * from blade_role where is_deleted = 0 |
| | | select * from pl_org_role where is_deleted = 0 |
| | | </select> |
| | | |
| | | <select id="tree" resultMap="treeNodeResultMap"> |
| | | select id, parent_id, role_name as title, id as "value", id as "key" from blade_role where is_deleted = 0 |
| | | select id, parent_id, role_name as title, id as "value", id as "key" from pl_org_role where is_deleted = 0 |
| | | <if test="param1!=null"> |
| | | and tenant_id = #{param1} |
| | | </if> |
| | |
| | | SELECT |
| | | role_name |
| | | FROM |
| | | blade_role |
| | | pl_org_role |
| | | WHERE |
| | | id IN |
| | | <foreach collection="array" item="ids" index="index" open="(" close=")" separator=","> |
| | |
| | | SELECT |
| | | role_alias |
| | | FROM |
| | | blade_role |
| | | pl_org_role |
| | | WHERE |
| | | id IN |
| | | <foreach collection="array" item="ids" index="index" open="(" close=")" separator=","> |
| | |
| | | </resultMap> |
| | | |
| | | <select id="selectRoleMenuPage" resultMap="roleMenuResultMap"> |
| | | select * from blade_role_menu where is_deleted = 0 |
| | | select * from pl_org_role_menu where is_deleted = 0 |
| | | </select> |
| | | |
| | | </mapper> |
| | |
| | | <result column="linkman" property="linkman"/> |
| | | <result column="contact_number" property="contactNumber"/> |
| | | <result column="address" property="address"/> |
| | | <result column="account_number" property="accountNumber"/> |
| | | <result column="expire_time" property="expireTime"/> |
| | | <result column="license_key" property="licenseKey"/> |
| | | </resultMap> |
| | | |
| | | |
| | | <select id="selectTenantPage" resultMap="tenantResultMap"> |
| | | select * from blade_tenant where is_deleted = 0 |
| | | select * from pl_org_tenant where is_deleted = 0 |
| | | </select> |
| | | |
| | | </mapper> |
| | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import org.springblade.core.mp.base.BaseService; |
| | | import org.springblade.system.entity.Tenant; |
| | | import org.springblade.system.vo.TenantVO; |
| | | |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * æå¡ç±» |
| | |
| | | * @param tenant |
| | | * @return |
| | | */ |
| | | boolean submitTenant(Tenant tenant); |
| | | boolean submitTenant(TenantVO tenant); |
| | | |
| | | /** |
| | | * å é¤ |
| | |
| | | * @param ids |
| | | * @return |
| | | */ |
| | | boolean setting(Integer accountNumber, Date expireTime, String ids); |
| | | //boolean setting(Integer accountNumber, Date expireTime, String ids); |
| | | |
| | | /** |
| | | * æ¥è¯¢ç§æ·idï¼keyï¼ï¼ç§æ·åï¼valueï¼ |
| | | * @return |
| | | */ |
| | | List<Map<String,Object>> selectMaps(); |
| | | |
| | | /** |
| | | * æ¥è¯¢æ¯å¦é
ç½®æé»è®¤å¿
é¡»å¼å¯ä¸å管ç |
| | | * |
| | | * @return |
| | | */ |
| | | boolean findIsOpen(); |
| | | |
| | | } |
| | |
| | | */ |
| | | package org.springblade.system.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.core.toolkit.IdWorker; |
| | | import com.baomidou.mybatisplus.core.toolkit.StringUtils; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import javafx.geometry.Pos; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.apache.ibatis.mapping.Environment; |
| | | import org.springblade.common.constant.TenantConstant; |
| | | import org.springblade.core.cache.utils.CacheUtil; |
| | | import org.springblade.core.log.exception.ServiceException; |
| | | import org.springblade.core.mp.base.BaseServiceImpl; |
| | |
| | | import org.springblade.system.user.entity.User; |
| | | import org.springblade.system.user.enums.UserEnum; |
| | | import org.springblade.system.user.feign.IUserClient; |
| | | import org.springblade.system.vo.TenantVO; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.web.bind.annotation.PostMapping; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.LinkedList; |
| | | import java.util.List; |
| | | import javax.annotation.PostConstruct; |
| | | import java.io.FileInputStream; |
| | | import java.io.IOException; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static org.springblade.common.constant.TenantConstant.*; |
| | |
| | | * @author Chill |
| | | */ |
| | | @Service |
| | | @AllArgsConstructor |
| | | @RequiredArgsConstructor |
| | | public class TenantServiceImpl extends BaseServiceImpl<TenantMapper, Tenant> implements ITenantService { |
| | | |
| | | private final TenantId tenantId; |
| | |
| | | private final IRoleMenuService roleMenuService; |
| | | private final IDictBizService dictBizService; |
| | | private final IUserClient userClient; |
| | | /** |
| | | * è·åæ¯å¦å
许èªè¡æ§å¶ä¸åæ¯å¦å¼å¯ |
| | | */ |
| | | @Value("${ssa.ssa-enable}") |
| | | private Boolean ssaEnable; |
| | | /** |
| | | * è·åé»è®¤ä¸å管çåçåç§° |
| | | */ |
| | | @Value("#{'${ssa.ssa-names}'.split(',')}") |
| | | private List<String> ssaNames; |
| | | /** |
| | | * ä¸å管çèåé
ç½® |
| | | */ |
| | | @Value("#{'${ssa.sys-menus}'.split(',')}") |
| | | private List<String> sysMenus; |
| | | @Value("#{'${ssa.sec-menus}'.split(',')}") |
| | | private List<String> secMenus; |
| | | @Value("#{'${ssa.audit-menus}'.split(',')}") |
| | | private List<String> auditMenus; |
| | | |
| | | @Override |
| | | public IPage<Tenant> selectTenantPage(IPage<Tenant> page, Tenant tenant) { |
| | |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public boolean submitTenant(Tenant tenant) { |
| | | public boolean submitTenant(TenantVO tenant) { |
| | | if (Func.isEmpty(tenant.getId())) { |
| | | // è·åå°æªå é¤ç§æ·æ»æ°ï¼çææ°çç§æ·id |
| | | List<Tenant> tenants = baseMapper.selectList(Wrappers.<Tenant>query().lambda().eq(Tenant::getIsDeleted, BladeConstant.DB_NOT_DELETED)); |
| | | List<String> codes = tenants.stream().map(Tenant::getTenantId).collect(Collectors.toList()); |
| | | String tenantId = getTenantId(codes); |
| | | tenant.setTenantId(tenantId); |
| | | // è·ååæ°é
ç½®çè´¦å·é¢åº¦ |
| | | int accountNumber = Func.toInt(ParamCache.getValue(ACCOUNT_NUMBER_KEY), DEFAULT_ACCOUNT_NUMBER); |
| | | tenant.setAccountNumber(accountNumber); |
| | | // æ°å»ºç§æ·å¯¹åºçé»è®¤è§è² |
| | | Role role = new Role(); |
| | | role.setTenantId(tenantId); |
| | | role.setParentId(BladeConstant.TOP_PARENT_ID); |
| | | role.setRoleName("管çå"); |
| | | role.setRoleAlias("admin"); |
| | | role.setSort(2); |
| | | role.setIsDeleted(BladeConstant.DB_NOT_DELETED); |
| | | roleService.save(role); |
| | | // æ°å»ºç§æ·å¯¹åºçè§è²èåæé |
| | | LinkedList<Menu> userMenus = new LinkedList<>(); |
| | | // è·ååæ°é
ç½®çé»è®¤èåéåï¼éå·éå¼ |
| | | List<String> menuCodes = Func.toStrList(ParamCache.getValue(ACCOUNT_MENU_CODE_KEY)); |
| | | List<Menu> menus = getMenus((menuCodes.size() > 0 ? menuCodes : MENU_CODES), userMenus); |
| | | List<RoleMenu> roleMenus = new ArrayList<>(); |
| | | menus.forEach(menu -> { |
| | | RoleMenu roleMenu = new RoleMenu(); |
| | | roleMenu.setMenuId(menu.getId()); |
| | | roleMenu.setRoleId(role.getId()); |
| | | roleMenus.add(roleMenu); |
| | | }); |
| | | roleMenuService.saveBatch(roleMenus); |
| | | // æ°å»ºç§æ·å¯¹åºçé»è®¤é¨é¨ |
| | | Dept dept = new Dept(); |
| | | dept.setTenantId(tenantId); |
| | | dept.setParentId(BladeConstant.TOP_PARENT_ID); |
| | | dept.setAncestors(String.valueOf(BladeConstant.TOP_PARENT_ID)); |
| | | dept.setDeptName(tenant.getTenantName()); |
| | | dept.setFullName(tenant.getTenantName()); |
| | | dept.setDeptCategory(1); |
| | | dept.setSort(2); |
| | | dept.setIsDeleted(BladeConstant.DB_NOT_DELETED); |
| | | deptService.save(dept); |
| | | // æ°å»ºç§æ·å¯¹åºçé»è®¤å²ä½ |
| | | Post post = new Post(); |
| | | post.setTenantId(tenantId); |
| | | post.setCategory(1); |
| | | post.setPostCode("ceo"); |
| | | post.setPostName("é¦å¸æ§è¡å®"); |
| | | post.setSort(1); |
| | | postService.save(post); |
| | | // æ°å»ºç§æ·å¯¹åºçé»è®¤ä¸å¡åå
¸ |
| | | LinkedList<DictBiz> dictBizs = new LinkedList<>(); |
| | | List<DictBiz> dictBizList = getDictBizs(tenantId, dictBizs); |
| | | dictBizService.saveBatch(dictBizList); |
| | | // æ°å»ºç§æ·å¯¹åºçé»è®¤ç®¡çç¨æ· |
| | | User user = new User(); |
| | | user.setTenantId(tenantId); |
| | | user.setName("admin"); |
| | | user.setRealName("admin"); |
| | | user.setAccount("admin"); |
| | | // è·ååæ°é
ç½®çå¯ç |
| | | String password = Func.toStr(ParamCache.getValue(PASSWORD_KEY), DEFAULT_PASSWORD); |
| | | user.setPassword(password); |
| | | user.setRoleId(String.valueOf(role.getId())); |
| | | user.setDeptId(String.valueOf(dept.getId())); |
| | | user.setPostId(String.valueOf(post.getId())); |
| | | user.setBirthday(new Date()); |
| | | user.setSex(1); |
| | | user.setUserType(UserEnum.WEB.getCategory()); |
| | | user.setIsDeleted(BladeConstant.DB_NOT_DELETED); |
| | | boolean temp = super.saveOrUpdate(tenant); |
| | | R<Boolean> result = userClient.saveUser(user); |
| | | if (!result.isSuccess()) { |
| | | throw new ServiceException(result.getMsg()); |
| | | // é
置为falseï¼å¹¶ä¸åç«¯ä¼ è¾çåæ°ä¸ºfalseå°±ä¸éè¦å建ä¸å |
| | | if(!this.ssaEnable && !tenant.getMembersFlag()){ |
| | | // ä¸å¼å¯ä¸åç®¡çæ¶ç´æ¥å建ä¸ä¸ªæé«æéç管çå |
| | | Role role = new Role(tenantId,BladeConstant.TOP_PARENT_ID,"è¶
级管çå",1,"admin",BladeConstant.DB_NOT_DELETED); |
| | | roleService.save(role); |
| | | // æ°å»ºç§æ·å¯¹åºçè§è²èåæé |
| | | saveRoleMenus(role, MENU_CODES); |
| | | // æ°å»ºç§æ·å¯¹åºçé»è®¤é¨é¨ |
| | | Dept dept = generateDept(tenantId, tenant); |
| | | deptService.save(dept); |
| | | // æ°å»ºç§æ·å¯¹åºçé»è®¤å²ä½ |
| | | Post postInfo = generatePost(tenantId, 1, "ceo", "é¦å¸æ§è¡å®", 1); |
| | | postService.save(postInfo); |
| | | // æ°å»ºç§æ·å¯¹åºçé»è®¤ä¸å¡åå
¸ |
| | | LinkedList<DictBiz> dictBizs = new LinkedList<>(); |
| | | List<DictBiz> dictBizList = getDictBizs(tenantId, dictBizs); |
| | | dictBizService.saveBatch(dictBizList); |
| | | // æ°å»ºç§æ·å¯¹åºçé»è®¤ç®¡çç¨æ· |
| | | User userInfo = generateUser(tenantId, role, dept, postInfo); |
| | | // å
ä¿åç§æ· |
| | | boolean temp = super.saveOrUpdate(tenant); |
| | | // åå»ºç¨æ· |
| | | R<Boolean> result = userClient.saveUser(userInfo); |
| | | if (!result.isSuccess()) { |
| | | throw new ServiceException(result.getMsg()); |
| | | } |
| | | return temp; |
| | | }else { |
| | | // æ°å»ºç§æ·å¯¹åºçé»è®¤è§è² |
| | | List<Role> roles = new ArrayList<>(); |
| | | Role roleSys = new Role(tenantId,BladeConstant.TOP_PARENT_ID,"ç³»ç»ç®¡çå",1,this.ssaNames.get(0),BladeConstant.DB_NOT_DELETED); |
| | | Role roleSec = new Role(tenantId,BladeConstant.TOP_PARENT_ID,"å®å
¨ç®¡çå",2,this.ssaNames.get(1),BladeConstant.DB_NOT_DELETED); |
| | | Role roleAudit = new Role(tenantId,BladeConstant.TOP_PARENT_ID,"审计管çå",3,this.ssaNames.get(2),BladeConstant.DB_NOT_DELETED); |
| | | roles.add(roleSys); |
| | | roles.add(roleSec); |
| | | roles.add(roleAudit); |
| | | roleService.saveBatch(roles); |
| | | // æ°å»ºç§æ·å¯¹åºçè§è²èåæé |
| | | saveRoleMenus(roleSys,this.sysMenus); //ç³»ç»ç®¡çåè§è²èåæé |
| | | saveRoleMenus(roleSec,this.secMenus); //å®å
¨ç®¡çåè§è²èåæé |
| | | saveRoleMenus(roleAudit,this.auditMenus); //审计管çåè§è²èåæé |
| | | // æ°å»ºç§æ·å¯¹åºçé»è®¤é¨é¨ |
| | | Dept dept = generateDept(tenantId, tenant); |
| | | deptService.save(dept); |
| | | // æ°å»ºç§æ·å¯¹åºçé»è®¤å²ä½ |
| | | Post postCeo = generatePost(tenantId, 1, "sysAdmin", "ç³»ç»ç®¡çå", 1); |
| | | Post postCto = generatePost(tenantId,1,"secAdmin","å®å
¨ç®¡çå",4); |
| | | Post postCio = generatePost(tenantId,1,"auditAdmin","审计管çå",5); |
| | | postService.saveBatch(Arrays.asList(postCeo,postCto,postCio)); |
| | | // æ°å»ºç§æ·å¯¹åºçé»è®¤ä¸å¡åå
¸ |
| | | LinkedList<DictBiz> dictBizs = new LinkedList<>(); |
| | | List<DictBiz> dictBizList = getDictBizs(tenantId, dictBizs); |
| | | dictBizService.saveBatch(dictBizList); |
| | | // æ°å»ºç§æ·å¯¹åºçé»è®¤ç®¡çç¨æ· |
| | | User userSys = generateUser(tenantId, roleSys, dept, postCeo); |
| | | User userSec = generateUser(tenantId,roleSec,dept,postCto); |
| | | User userAudit = generateUser(tenantId,roleAudit,dept,postCio); |
| | | // å
ä¿åç§æ· |
| | | boolean temp = super.saveOrUpdate(tenant); |
| | | // åå»ºç¨æ· |
| | | R<Boolean> result = userClient.saveUserList(Arrays.asList(userSys,userSec,userAudit)); |
| | | if (!result.isSuccess()) { |
| | | throw new ServiceException(result.getMsg()); |
| | | } |
| | | return temp; |
| | | } |
| | | return temp; |
| | | } else { |
| | | CacheUtil.clear(SYS_CACHE, tenant.getTenantId()); |
| | | return super.saveOrUpdate(tenant); |
| | |
| | | } |
| | | |
| | | @Override |
| | | public boolean setting(Integer accountNumber, Date expireTime, String ids) { |
| | | List<String> tenantIds = this.list(Wrappers.<Tenant>query().lambda().in(Tenant::getId, ids)) |
| | | .stream().map(tenant -> Func.toStr(tenant.getTenantId())).distinct().collect(Collectors.toList()); |
| | | CacheUtil.clear(SYS_CACHE, tenantIds); |
| | | Func.toLongList(ids).forEach(id -> { |
| | | Kv kv = Kv.create().set("accountNumber", accountNumber).set("expireTime", expireTime).set("id", id); |
| | | String licenseKey = DesUtil.encryptToHex(JsonUtil.toJson(kv), DES_KEY); |
| | | update( |
| | | Wrappers.<Tenant>update().lambda() |
| | | .set(Tenant::getAccountNumber, accountNumber) |
| | | .set(Tenant::getExpireTime, expireTime) |
| | | .set(Tenant::getLicenseKey, licenseKey) |
| | | .eq(Tenant::getId, id) |
| | | ); |
| | | public List<Map<String,Object>> selectMaps(){ |
| | | List<Map<String, Object>> maps = listMaps(new QueryWrapper<Tenant>().select("TENANT_ID", "TENANT_NAME")); |
| | | System.out.println(maps); |
| | | return maps; |
| | | } |
| | | |
| | | @Override |
| | | public boolean findIsOpen() { |
| | | return this.ssaEnable; |
| | | } |
| | | |
| | | /** |
| | | * åå»ºç§æ·ä¸çé»è®¤å²ä½ |
| | | * @param tenantId |
| | | * @param sort |
| | | */ |
| | | private Post generatePost(String tenantId,Integer categ,String postCode,String postName,Integer sort){ |
| | | Post post = new Post(); |
| | | post.setTenantId(tenantId); |
| | | post.setCategory(categ); |
| | | post.setPostCode(postCode); |
| | | post.setPostName(postName); |
| | | post.setSort(sort); |
| | | return post; |
| | | } |
| | | |
| | | /** |
| | | * å建é»è®¤ç¨æ·ï¼å¹¶è¿è¡ç¸å
³æé设置 |
| | | */ |
| | | private User generateUser(String tenantId, Role role, Dept dept, Post post){ |
| | | User user = new User(); |
| | | user.setTenantId(tenantId); |
| | | user.setName(role.getRoleAlias()); |
| | | user.setRealName(role.getRoleName()); |
| | | user.setAccount(role.getRoleAlias()); |
| | | // è·ååæ°é
ç½®çå¯ç |
| | | String password = Func.toStr(ParamCache.getValue(PASSWORD_KEY), DEFAULT_PASSWORD); |
| | | user.setPassword(password); |
| | | user.setRoleId(String.valueOf(role.getId())); |
| | | user.setDeptId(String.valueOf(dept.getId())); |
| | | user.setPostId(String.valueOf(post.getId())); |
| | | user.setBirthday(new Date()); |
| | | user.setSex(1); |
| | | user.setUserType(UserEnum.WEB.getCategory()); |
| | | user.setIsDeleted(BladeConstant.DB_NOT_DELETED); |
| | | return user; |
| | | } |
| | | |
| | | /** |
| | | * ä¿åç¨æ·å¯¹åºçå
³èä¿¡æ¯ |
| | | * @param role |
| | | */ |
| | | private void saveRoleMenus(Role role,List<String> stringMenus){ |
| | | LinkedList<Menu> userMenus = new LinkedList<>(); |
| | | // è·ååæ°é
ç½®çé»è®¤èåéåï¼éå·éå¼ |
| | | List<String> menuCodes = Func.toStrList(ParamCache.getValue(ACCOUNT_MENU_CODE_KEY)); |
| | | List<Menu> menus = getMenus((menuCodes.size() > 0 ? menuCodes : stringMenus), userMenus); |
| | | List<RoleMenu> roleMenus = new ArrayList<>(); |
| | | //å建ææèåè§è²å
³è对象 |
| | | menus.forEach(menu -> { |
| | | roleMenus.add(new RoleMenu(menu.getId(),role.getId())); |
| | | }); |
| | | return true; |
| | | roleMenuService.saveBatch(roleMenus); |
| | | } |
| | | |
| | | /** |
| | | * å建é»è®¤é¨é¨ |
| | | * @param tenantId |
| | | * @param tenant |
| | | */ |
| | | private Dept generateDept(String tenantId,Tenant tenant){ |
| | | Dept dept = new Dept(); |
| | | dept.setTenantId(tenantId); |
| | | dept.setParentId(BladeConstant.TOP_PARENT_ID); |
| | | dept.setAncestors(String.valueOf(BladeConstant.TOP_PARENT_ID)); |
| | | dept.setDeptName(tenant.getTenantName()); |
| | | dept.setFullName(tenant.getTenantName()); |
| | | dept.setDeptCategory(1); |
| | | dept.setSort(2); |
| | | dept.setIsDeleted(BladeConstant.DB_NOT_DELETED); |
| | | return dept; |
| | | } |
| | | |
| | | private String getTenantId(List<String> codes) { |
| | |
| | | recursionDictBiz(tenantId, oldSubParentId, newSubParentId, dictBizs); |
| | | }); |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | #æå¡å¨ç«¯å£ |
| | | server: |
| | | port: 8106 |
| | | port: 36011 |
| | | |
| | | #æ°æ®æºé
ç½® |
| | | spring: |
| | | datasource: |
| | | url: ${blade.datasource.dev.url} |
| | | username: ${blade.datasource.dev.username} |
| | | password: ${blade.datasource.dev.password} |
| | | password: ${blade.datasource.dev.password} |
| | |
| | | |
| | | WORKDIR /blade/user |
| | | |
| | | EXPOSE 8102 |
| | | EXPOSE 36012 |
| | | |
| | | ADD ./target/blade-user.jar ./app.jar |
| | | |
| | | ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "app.jar"] |
| | | |
| | | CMD ["--spring.profiles.active=test"] |
| | | CMD ["--spring.profiles.active=dev"] |
| | |
| | | <artifactId>blade-system-api</artifactId> |
| | | <version>${bladex.project.version}</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>com.oracle.database.jdbc</groupId> |
| | | <artifactId>ojdbc8</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>cn.easyproject</groupId> |
| | | <artifactId>orai18n</artifactId> |
| | | <version>${orai18n.version}</version> |
| | | </dependency> |
| | | </dependencies> |
| | | |
| | | <build> |
| | |
| | | import org.springframework.web.bind.annotation.RequestBody; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * ç¨æ·æå¡Feignå®ç°ç±» |
| | | * |
| | |
| | | } |
| | | |
| | | @Override |
| | | @PostMapping(SAVE_USER_LIST) |
| | | public R<Boolean> saveUserList(List<User> users) { |
| | | return R.data(service.submitList(users)); |
| | | } |
| | | |
| | | @Override |
| | | @PostMapping(REMOVE_USER) |
| | | public R<Boolean> removeUser(String tenantIds) { |
| | | return R.data(service.remove(Wrappers.<User>query().lambda().in(User::getTenantId, Func.toStrList(tenantIds)))); |
| | |
| | | </resultMap> |
| | | |
| | | <select id="selectUserPage" resultMap="userResultMap"> |
| | | select * from blade_user where is_deleted = 0 |
| | | select * from pl_org_user where is_deleted = 0 |
| | | <if test="tenantId!=null and tenantId != ''"> |
| | | and tenant_id = #{tenantId} |
| | | </if> |
| | |
| | | SELECT |
| | | user_id |
| | | FROM |
| | | blade_user_dept |
| | | pl_org_user_dept |
| | | WHERE |
| | | dept_id IN |
| | | <foreach collection="deptIdList" index="index" item="item" open="(" separator="," close=")"> |
| | |
| | | SELECT |
| | | * |
| | | FROM |
| | | blade_user |
| | | pl_org_user |
| | | WHERE |
| | | tenant_id = #{param1} and account = #{param2} and is_deleted = 0 |
| | | </select> |
| | | |
| | | <select id="exportUser" resultType="org.springblade.system.user.excel.UserExcel"> |
| | | SELECT id, tenant_id, user_type, account, name, real_name, email, phone, birthday, role_id, dept_id, post_id FROM blade_user ${ew.customSqlSegment} |
| | | SELECT id, tenant_id, user_type, account, name, real_name, email, phone, birthday, role_id, dept_id, post_id FROM pl_org_user ${ew.customSqlSegment} |
| | | </select> |
| | | |
| | | </mapper> |
| | |
| | | boolean submit(User user); |
| | | |
| | | /** |
| | | * æ¹éæ°å¢ç¨æ· |
| | | * |
| | | * @param users |
| | | * @return |
| | | */ |
| | | boolean submitList(List<User> users); |
| | | |
| | | /** |
| | | * ä¿®æ¹ç¨æ· |
| | | * |
| | | * @param user |
| | |
| | | import org.springblade.system.cache.DictCache; |
| | | import org.springblade.system.cache.ParamCache; |
| | | import org.springblade.system.cache.SysCache; |
| | | import org.springblade.system.entity.RoleMenu; |
| | | import org.springblade.system.entity.Tenant; |
| | | import org.springblade.system.enums.DictEnum; |
| | | import org.springblade.system.feign.ISysClient; |
| | |
| | | } |
| | | String tenantId = user.getTenantId(); |
| | | Tenant tenant = SysCache.getTenant(tenantId); |
| | | if (Func.isNotEmpty(tenant)) { |
| | | Integer accountNumber = tenant.getAccountNumber(); |
| | | if (tenantProperties.getLicense()) { |
| | | String licenseKey = tenant.getLicenseKey(); |
| | | String decrypt = DesUtil.decryptFormHex(licenseKey, TenantConstant.DES_KEY); |
| | | accountNumber = JsonUtil.parse(decrypt, Tenant.class).getAccountNumber(); |
| | | } |
| | | Long tenantCount = baseMapper.selectCount(Wrappers.<User>query().lambda().eq(User::getTenantId, tenantId)); |
| | | if (accountNumber != null && accountNumber > 0 && accountNumber <= tenantCount) { |
| | | throw new ServiceException("å½åç§æ·å·²å°æå¤§è´¦å·é¢åº¦!"); |
| | | } |
| | | } |
| | | if (Func.isNotEmpty(user.getPassword())) { |
| | | user.setPassword(DigestUtil.encrypt(user.getPassword())); |
| | | } |
| | |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public boolean submitList(List<User> users) { |
| | | Boolean flag = true; |
| | | for (User user : users){ |
| | | if (StringUtil.isBlank(user.getTenantId())) { |
| | | user.setTenantId(BladeConstant.ADMIN_TENANT_ID); |
| | | } |
| | | String tenantId = user.getTenantId(); |
| | | if (Func.isNotEmpty(user.getPassword())) { |
| | | user.setPassword(DigestUtil.encrypt(user.getPassword())); |
| | | } |
| | | Long userCount = baseMapper.selectCount(Wrappers.<User>query().lambda().eq(User::getTenantId, tenantId).eq(User::getAccount, user.getAccount())); |
| | | if (userCount > 0L && Func.isEmpty(user.getId())) { |
| | | throw new ServiceException(StringUtil.format("å½åç¨æ· [{}] å·²åå¨!", user.getAccount())); |
| | | } |
| | | flag = save(user) && submitUserDept(user); |
| | | |
| | | } |
| | | return flag; |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public boolean updateUser(User user) { |
| | | String tenantId = user.getTenantId(); |
| | | Long userCount = baseMapper.selectCount( |
| | |
| | | #æå¡å¨ç«¯å£ |
| | | server: |
| | | port: 8102 |
| | | |
| | | port: 36012 |
| | | #æ°æ®æºé
ç½® |
| | | spring: |
| | | datasource: |
| | |
| | | |
| | | <parent> |
| | | <groupId>org.springblade</groupId> |
| | | <artifactId>BladeX</artifactId> |
| | | <artifactId>UBCS</artifactId> |
| | | <version>3.0.1.RELEASE</version> |
| | | </parent> |
| | | |
| | |
| | | <modelVersion>4.0.0</modelVersion> |
| | | |
| | | <groupId>org.springblade</groupId> |
| | | <artifactId>BladeX</artifactId> |
| | | <artifactId>UBCS</artifactId> |
| | | <version>3.0.1.RELEASE</version> |
| | | <packaging>pom</packaging> |
| | | |
| | |
| | | <bladex.project.version>3.0.1.RELEASE</bladex.project.version> |
| | | |
| | | <java.version>1.8</java.version> |
| | | <maven.plugin.version>3.8.1</maven.plugin.version> |
| | | <maven.plugin.version>3.8.0</maven.plugin.version> |
| | | <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> |
| | | <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> |
| | | |
| | | <orai18n.version>11.2.0.4</orai18n.version> |
| | | <spring.boot.version>2.7.1</spring.boot.version> |
| | | <spring.cloud.version>2021.0.3</spring.cloud.version> |
| | | <spring.platform.version>Cairo-SR8</spring.platform.version> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | #æ£æ¥ç¨åºæ¯å¦å¨è¿è¡ |
| | | start(){ |
| | | |
| | | #å
æ¸
空targetå¹¶æå
|
| | | mvn clean package |
| | | |
| | | #å¯å¨adminæå¡ |
| | | docker build -f ./blade-ops/blade-admin/Dockerfile -t bladex/blade-admin . |
| | | docker run -d -p 36002:36002 --name blade-admin bladex/blade-admin:latest |
| | | |
| | | #å¯å¨authæå¡ |
| | | docker build -f ./blade-auth/Dockerfile -t bladex/blade-auth . |
| | | docker run -d -p 36001:36001 --name blade-auth bladex/blade-auth:latest |
| | | |
| | | #å¯å¨logæå¡ |
| | | docker build -f ./blade-ops/blade-log/Dockerfile -t bladex/blade-log . |
| | | docker run -d -p 36005:36005 --name blade-log bladex/blade-log:latest |
| | | |
| | | #å¯å¨deskæå¡ |
| | | docker build -f ./blade-service/blade-desk/Dockerfile -t bladex/blade-desk . |
| | | docker run -d -p 36010:36010 --name blade-desk bladex/blade-desk:latest |
| | | |
| | | #å¯å¨å·¥ä½æµflowæå¡ |
| | | docker build -f ./blade-ops/blade-flow/Dockerfile -t bladex/blade-flow . |
| | | docker run -d -p 36004:36004 --name blade-flow bladex/blade-flow:latest |
| | | |
| | | #å¯å¨developæå¡ |
| | | docker build -f ./blade-ops/blade-develop/Dockerfile -t bladex/blade-develop . |
| | | docker run -d -p 36003:36003 --name blade-develop bladex/blade-develop:latest |
| | | |
| | | #å¯å¨jobAdminæå¡ |
| | | docker build -f ./blade-ops/blade-xxljob-admin/Dockerfile -t bladex/blade-jobadmin . |
| | | docker run -d -p 36013:36013 --name blade-jobadmin bladex/blade-jobadmin:latest |
| | | |
| | | #å¯å¨jobæå¡ |
| | | docker build -f ./blade-ops/blade-xxljob/Dockerfile -t bladex/blade-job . |
| | | docker run -d -p 36009:36009 --name blade-job bladex/blade-job:latest |
| | | |
| | | #å¯å¨reportæå¡ |
| | | docker build -f ./blade-ops/blade-report/Dockerfile -t bladex/blade-report . |
| | | docker run -d -p 36006:36006 --name blade-report bladex/blade-report:latest |
| | | |
| | | #å¯å¨resourceæå¡ |
| | | docker build -f ./blade-ops/blade-resource/Dockerfile -t bladex/blade-resource . |
| | | docker run -d -p 36007:36007 --name blade-resource bladex/blade-resource:latest |
| | | |
| | | #å¯å¨swaggeræå¡ |
| | | docker build -f ./blade-ops/blade-swagger/Dockerfile -t bladex/blade-swagger . |
| | | docker run -d -p 36008:36008 --name blade-swagger bladex/blade-swagger:latest |
| | | |
| | | #å¯å¨systemæå¡ |
| | | docker build -f ./blade-service/blade-system/Dockerfile -t bladex/blade-system . |
| | | docker run -d -p 36011:36011 --name blade-system bladex/blade-system:latest |
| | | |
| | | #å¯å¨useræå¡ |
| | | docker build -f ./blade-service/blade-user/Dockerfile -t bladex/blade-user . |
| | | docker run -d -p 36012:36012 --name blade-user bladex/blade-user:latest |
| | | |
| | | #å¯å¨gatewayæå¡ |
| | | docker build -f ./blade-gateway/Dockerfile -t bladex/blade-gateway . |
| | | docker run -d -p 37000:37000 --name blade-gateway bladex/blade-gateway:latest |
| | | |
| | | } |
| | | |
| | | start |
| | | |
| | | |
| | | |
| | | |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | #åæ¢æ¹æ³å®¹å¨åå é¤å¯¹åºéåæ¹æ³ |
| | | stop(){ |
| | | #å®ä¹å®¹å¨åéåçåç§° |
| | | imagesName=bladex/blade-auth |
| | | containerName=blade-auth:latest |
| | | #妿åå¨ï¼å°±å
³éå¹¶ä¸å é¤è¯¥å®¹å¨ |
| | | if [[ -n $(docker ps -q -f "name=$containerName") ]];then |
| | | echo $containerName"is up,we will stop and remove it !!!" |
| | | docker stop $containerName |
| | | docker rm $containerName |
| | | docker rmi $imagesName |
| | | else |
| | | echo $containerName" is not up!!!" |
| | | fi |
| | | |
| | | imagesName=bladex/blade-admin |
| | | containerName=blade-admin:latest |
| | | if [[ -n $(docker ps -q -f "name=$containerName") ]];then |
| | | echo $containerName"is up,we will stop and remove it !!!" |
| | | docker stop $containerName |
| | | docker rm $containerName |
| | | docker rmi $imagesName |
| | | else |
| | | echo $containerName" is not up!!!" |
| | | fi |
| | | |
| | | imagesName=bladex/blade-auth |
| | | containerName=blade-auth:latest |
| | | if [[ -n $(docker ps -q -f "name=$containerName") ]];then |
| | | echo $containerName"is up,we will stop and remove it !!!" |
| | | docker stop $containerName |
| | | docker rm $containerName |
| | | docker rmi $imagesName |
| | | else |
| | | echo $containerName" is not up!!!" |
| | | fi |
| | | |
| | | imagesName=bladex/blade-log |
| | | containerName=blade-log:latest |
| | | if [[ -n $(docker ps -q -f "name=$containerName") ]];then |
| | | echo $containerName"is up,we will stop and remove it !!!" |
| | | docker stop $containerName |
| | | docker rm $containerName |
| | | docker rmi $imagesName |
| | | else |
| | | echo $containerName" is not up!!!" |
| | | fi |
| | | |
| | | imagesName=bladex/blade-desk |
| | | containerName=blade-desk:latest |
| | | if [[ -n $(docker ps -q -f "name=$containerName") ]];then |
| | | echo $containerName"is up,we will stop and remove it !!!" |
| | | docker stop $containerName |
| | | docker rm $containerName |
| | | docker rmi $imagesName |
| | | else |
| | | echo $containerName" is not up!!!" |
| | | fi |
| | | |
| | | imagesName=bladex/blade-flow |
| | | containerName=blade-flow:latest |
| | | if [[ -n $(docker ps -q -f "name=$containerName") ]];then |
| | | echo $containerName"is up,we will stop and remove it !!!" |
| | | docker stop $containerName |
| | | docker rm $containerName |
| | | docker rmi $imagesName |
| | | else |
| | | echo $containerName" is not up!!!" |
| | | fi |
| | | |
| | | imagesName=bladex/blade-develop |
| | | containerName=blade-develop:latest |
| | | if [[ -n $(docker ps -q -f "name=$containerName") ]];then |
| | | echo $containerName"is up,we will stop and remove it !!!" |
| | | docker stop $containerName |
| | | docker rm $containerName |
| | | docker rmi $imagesName |
| | | else |
| | | echo $containerName" is not up!!!" |
| | | fi |
| | | |
| | | imagesName=bladex/blade-jobadmin |
| | | containerName=blade-jobadmin:latest |
| | | if [[ -n $(docker ps -q -f "name=$containerName") ]];then |
| | | echo $containerName"is up,we will stop and remove it !!!" |
| | | docker stop $containerName |
| | | docker rm $containerName |
| | | docker rmi $imagesName |
| | | else |
| | | echo $containerName" is not up!!!" |
| | | fi |
| | | |
| | | imagesName=bladex/blade-job |
| | | containerName=blade-job:latest |
| | | if [[ -n $(docker ps -q -f "name=$containerName") ]];then |
| | | echo $containerName"is up,we will stop and remove it !!!" |
| | | docker stop $containerName |
| | | docker rm $containerName |
| | | docker rmi $imagesName |
| | | else |
| | | echo $containerName" is not up!!!" |
| | | fi |
| | | |
| | | imagesName=bladex/blade-report |
| | | containerName=blade-report:latest |
| | | if [[ -n $(docker ps -q -f "name=$containerName") ]];then |
| | | echo $containerName"is up,we will stop and remove it !!!" |
| | | docker stop $containerName |
| | | docker rm $containerName |
| | | docker rmi $imagesName |
| | | else |
| | | echo $containerName" is not up!!!" |
| | | fi |
| | | |
| | | imagesName=bladex/blade-resource |
| | | containerName=blade-resource:latest |
| | | if [[ -n $(docker ps -q -f "name=$containerName") ]];then |
| | | echo $containerName"is up,we will stop and remove it !!!" |
| | | docker stop $containerName |
| | | docker rm $containerName |
| | | docker rmi $imagesName |
| | | else |
| | | echo $containerName" is not up!!!" |
| | | fi |
| | | |
| | | imagesName=bladex/blade-swagger |
| | | containerName=blade-swagger:latest |
| | | if [[ -n $(docker ps -q -f "name=$containerName") ]];then |
| | | echo $containerName"is up,we will stop and remove it !!!" |
| | | docker stop $containerName |
| | | docker rm $containerName |
| | | docker rmi $imagesName |
| | | else |
| | | echo $containerName" is not up!!!" |
| | | fi |
| | | |
| | | imagesName=bladex/blade-system |
| | | containerName=blade-system:latest |
| | | if [[ -n $(docker ps -q -f "name=$containerName") ]];then |
| | | echo $containerName"is up,we will stop and remove it !!!" |
| | | docker stop $containerName |
| | | docker rm $containerName |
| | | docker rmi $imagesName |
| | | else |
| | | echo $containerName" is not up!!!" |
| | | fi |
| | | |
| | | imagesName=bladex/blade-user |
| | | containerName=blade-user:latest |
| | | if [[ -n $(docker ps -q -f "name=$containerName") ]];then |
| | | echo $containerName"is up,we will stop and remove it !!!" |
| | | docker stop $containerName |
| | | docker rm $containerName |
| | | docker rmi $imagesName |
| | | else |
| | | echo $containerName" is not up!!!" |
| | | fi |
| | | |
| | | imagesName=bladex/blade-gateway |
| | | containerName=blade-gateway:latest |
| | | if [[ -n $(docker ps -q -f "name=$containerName") ]];then |
| | | echo $containerName"is up,we will stop and remove it !!!" |
| | | docker stop $containerName |
| | | docker rm $containerName |
| | | docker rmi $imagesName |
| | | else |
| | | echo $containerName" is not up!!!" |
| | | fi |
| | | |
| | | } |
| | | stop |
| | | |
| | | |