init
This commit is contained in:
@@ -0,0 +1,96 @@
|
||||
package com.ruoyi.web.config;
|
||||
|
||||
import com.ruoyi.dk.service.HomeSettingService;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.web.servlet.LocaleResolver;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.Locale;
|
||||
|
||||
/**
|
||||
* i18n配置,用于处理语言本地化设置。
|
||||
*
|
||||
* @author liuyanqiang
|
||||
* @version 1.0.0
|
||||
* @since 2023/06/15 09:41
|
||||
**/
|
||||
@Configuration
|
||||
public class I18nConfig implements LocaleResolver {
|
||||
|
||||
@Autowired
|
||||
private HomeSettingService homeSettingService;
|
||||
|
||||
/**
|
||||
* 根据请求中的Accept-Language头部解析出语言设置。
|
||||
* 如果没有指定语言或语言设置不完整,则默认为中文设置。
|
||||
*
|
||||
* @param request HTTP请求对象
|
||||
* @return {@link Locale } 解析后的语言设置Locale对象
|
||||
* @author liuyanqiang
|
||||
* @since 2023/06/15 09:42
|
||||
**/
|
||||
@Override
|
||||
public Locale resolveLocale(HttpServletRequest request) {
|
||||
// 默认语言设置为中文
|
||||
String defaultLocal = homeSettingService.getHomeSetting().getDefaultLocal();
|
||||
Locale locale = null;
|
||||
// 从请求的头部获取Accept-Language标头,该标头指定了客户端期望的语言
|
||||
String language = request.getHeader("Sass-Language");
|
||||
String lang = request.getParameter("lang");
|
||||
if (StringUtils.isNotBlank(lang)) {
|
||||
language = lang;
|
||||
}
|
||||
if(StringUtils.isBlank(language)){
|
||||
language = defaultLocal;
|
||||
}
|
||||
// 检查请求的语言是否非空
|
||||
if (StringUtils.isNotBlank(language)) {
|
||||
// 将语言字符串拆分为语言和国家/地区代码
|
||||
String[] splitLanguage = language.split("_");
|
||||
// 检查是否有语言和国家/地区代码
|
||||
if (splitLanguage.length > 1) {
|
||||
// 根据语言和国家/地区代码创建新的Locale对象
|
||||
locale = new Locale(splitLanguage[0], splitLanguage[1]);
|
||||
}
|
||||
}
|
||||
if(locale == null){
|
||||
locale = Locale.CHINA;
|
||||
}
|
||||
// 返回解析得到的Locale对象作为解析后的语言设置
|
||||
return locale;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置语言设置时的回调方法。
|
||||
* 在此实现中,不执行任何操作,忽略对语言设置的更改。
|
||||
* @param request HTTP请求对象
|
||||
* @param response HTTP响应对象
|
||||
* @param locale 语言设置的Locale对象
|
||||
* @author liuyanqiang
|
||||
* @since 2023/06/15 09:43
|
||||
**/
|
||||
@Override
|
||||
public void setLocale(
|
||||
HttpServletRequest request,
|
||||
HttpServletResponse response,
|
||||
Locale locale) {
|
||||
// 此方法不执行任何操作,忽略对语言设置的更改
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建LocaleResolver bean,用于处理语言设置。
|
||||
*
|
||||
* @return {@link LocaleResolver }
|
||||
* @author liuyanqiang
|
||||
* @since 2023/06/15 09:44
|
||||
**/
|
||||
@Bean
|
||||
public LocaleResolver localeResolver() {
|
||||
// 返回当前类作为LocaleResolver的实例
|
||||
return new I18nConfig();
|
||||
}
|
||||
}
|
||||
@@ -195,7 +195,7 @@ mybatis-encryptor:
|
||||
springdoc:
|
||||
api-docs:
|
||||
# 是否开启接口文档
|
||||
enabled: true
|
||||
enabled: false
|
||||
swagger-ui:
|
||||
path: /swagger-ui.html
|
||||
tags-sorter: alpha
|
||||
@@ -209,11 +209,11 @@ springdoc:
|
||||
# 防止XSS攻击
|
||||
xss:
|
||||
# 过滤开关
|
||||
enabled: true
|
||||
enabled: false
|
||||
# 排除链接(多个用逗号分隔)
|
||||
excludes: /cai/agreementSetting
|
||||
excludes: /app/*
|
||||
# 匹配链接
|
||||
urlPatterns: /system/*,/monitor/*,/tool/*,/cai/*,/api/*
|
||||
urlPatterns: /system/*,/monitor/*,/tool/*,/api/*
|
||||
|
||||
# 全局线程池相关配置
|
||||
thread-pool:
|
||||
|
||||
@@ -97,7 +97,7 @@ public class TenantConfig {
|
||||
registration.setFilter(new TenantFilter());
|
||||
registration.addUrlPatterns("/*");
|
||||
registration.setName("tenantFilter");
|
||||
registration.setOrder(FilterRegistrationBean.LOWEST_PRECEDENCE);
|
||||
// registration.setOrder(FilterRegistrationBean.LOWEST_PRECEDENCE + 1000);
|
||||
return registration;
|
||||
}
|
||||
|
||||
|
||||
@@ -68,6 +68,10 @@ public class TenantFilter implements Filter {
|
||||
}else{
|
||||
TenantHelper.setTenantId(tenantHeader);
|
||||
}
|
||||
if(StringUtils.isBlank(TenantHelper.getTenantId())){
|
||||
ServletUtils.renderString(response, JSONUtil.toJsonStr(R.fail("未找到对应的平台")));
|
||||
return;
|
||||
}
|
||||
filterChain.doFilter(servletRequest, servletResponse);
|
||||
} finally {
|
||||
TenantHelper.clearTenant();
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
package com.ruoyi.component.web.config;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.web.servlet.LocaleResolver;
|
||||
|
||||
@@ -15,7 +13,7 @@ import java.util.Locale;
|
||||
*
|
||||
* @author Lion Li
|
||||
*/
|
||||
@AutoConfiguration(before = WebMvcAutoConfiguration.class)
|
||||
//@AutoConfiguration(before = WebMvcAutoConfiguration.class)
|
||||
public class I18nConfig {
|
||||
|
||||
@Bean
|
||||
|
||||
@@ -2,7 +2,9 @@ package com.ruoyi.component.web.config;
|
||||
|
||||
import com.ruoyi.component.web.interceptor.PlusWebInvokeTimeInterceptor;
|
||||
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
||||
import org.springframework.boot.web.servlet.FilterRegistrationBean;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.core.Ordered;
|
||||
import org.springframework.web.cors.CorsConfiguration;
|
||||
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
|
||||
import org.springframework.web.filter.CorsFilter;
|
||||
@@ -28,25 +30,22 @@ public class ResourcesConfig implements WebMvcConfigurer {
|
||||
public void addResourceHandlers(ResourceHandlerRegistry registry) {
|
||||
}
|
||||
|
||||
/**
|
||||
* 跨域配置
|
||||
*/
|
||||
@SuppressWarnings({"rawtypes", "unchecked"})
|
||||
@Bean
|
||||
public CorsFilter corsFilter() {
|
||||
public FilterRegistrationBean corsFilter() {
|
||||
CorsConfiguration config = new CorsConfiguration();
|
||||
config.setAllowCredentials(true);
|
||||
// 设置访问源地址
|
||||
config.addAllowedOriginPattern("*");
|
||||
// 设置访问源请求头
|
||||
config.addAllowedHeader("*");
|
||||
// 设置访问源请求方法
|
||||
config.addAllowedMethod("*");
|
||||
// 有效期 1800秒
|
||||
config.setMaxAge(1800L);
|
||||
// 添加映射路径,拦截一切请求
|
||||
config.setAllowCredentials(true); // 允许cookies跨域
|
||||
config.addAllowedOriginPattern("*");// #允许向该服务器提交请求的URI,*表示全部允许,自定义可以添加多个,在SpringMVC中,如果设成*,会自动转成当前请求头中的Origin
|
||||
config.addAllowedHeader("*");// #允许访问的头信息,*表示全部,可以添加多个
|
||||
config.addAllowedMethod("*");// 允许提交请求的方法,*表示全部允许,一般OPTIONS,GET,POST三个够了
|
||||
config.setMaxAge(1800L);// 预检请求的缓存时间(秒),即在这个时间段里,对于相同的跨域请求不会再预检了
|
||||
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
|
||||
source.registerCorsConfiguration("/**", config);
|
||||
// 返回新的CorsFilter
|
||||
return new CorsFilter(source);
|
||||
source.registerCorsConfiguration("/**", config);//对所有接口都有效
|
||||
FilterRegistrationBean registration = new FilterRegistrationBean(new CorsFilter(source));
|
||||
registration.addUrlPatterns("/*");
|
||||
registration.setName("corsFilter");
|
||||
registration.setOrder(Ordered.HIGHEST_PRECEDENCE); // 优先级最高
|
||||
return registration;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
com.ruoyi.component.web.config.CaptchaConfig
|
||||
com.ruoyi.component.web.config.FilterConfig
|
||||
com.ruoyi.component.web.config.I18nConfig
|
||||
com.ruoyi.component.web.config.ResourcesConfig
|
||||
com.ruoyi.component.web.config.UndertowConfig
|
||||
|
||||
@@ -2,7 +2,7 @@ package com.ruoyi.dk.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.ruoyi.component.excel.utils.ExcelUtil;
|
||||
import com.ruoyi.component.core.domain.R;
|
||||
import com.ruoyi.component.idempotent.annotation.RepeatSubmit;
|
||||
import com.ruoyi.component.log.annotation.Log;
|
||||
import com.ruoyi.component.log.enums.BusinessType;
|
||||
@@ -12,18 +12,13 @@ import com.ruoyi.component.web.core.BaseController;
|
||||
import com.ruoyi.dk.domain.Customer;
|
||||
import com.ruoyi.dk.dto.admin.req.UpdatePwdCustomerReq;
|
||||
import com.ruoyi.dk.dto.admin.resp.CustomerAdminResp;
|
||||
import com.ruoyi.dk.dto.admin.resp.CustomerExportVo;
|
||||
import com.ruoyi.dk.mapper.CustomerMapper;
|
||||
import com.ruoyi.dk.dto.common.IdReq;
|
||||
import com.ruoyi.dk.service.CustomerService;
|
||||
import com.ruoyi.component.core.domain.R;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.List;
|
||||
@@ -36,8 +31,6 @@ import java.util.stream.Stream;
|
||||
public class DkCustomerController extends BaseController {
|
||||
|
||||
private final CustomerService customerService;
|
||||
@Resource
|
||||
private CustomerMapper customerMapper;
|
||||
|
||||
@SaCheckPermission("dk:dkCustomer:list")
|
||||
@GetMapping("/list")
|
||||
@@ -46,15 +39,6 @@ public class DkCustomerController extends BaseController {
|
||||
return TableDataInfo.build(page);
|
||||
}
|
||||
|
||||
@Operation(summary = "导出客户列表")
|
||||
@SaCheckPermission("dk:dkCustomer:export")
|
||||
@Log(title = "客户", businessType = BusinessType.EXPORT)
|
||||
@GetMapping("/export")
|
||||
public void export(@Validated CustomerAdminResp bo, HttpServletResponse response) {
|
||||
List<CustomerExportVo> list = customerMapper.exportAdmin(bo);
|
||||
ExcelUtil.exportExcel(list, "客户", CustomerExportVo.class, response);
|
||||
}
|
||||
|
||||
@SaCheckPermission("dk:dkCustomer:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<Customer> getInfo(@NotNull(message = "主键不能为空")
|
||||
@@ -82,6 +66,13 @@ public class DkCustomerController extends BaseController {
|
||||
@Log(title = "修改密码" , businessType = BusinessType.DELETE)
|
||||
@PostMapping("/resetPwd")
|
||||
public R<Void> resetPwd(@RequestBody UpdatePwdCustomerReq customer) {
|
||||
return toAjax(customerService.updatePwd(customer.getCustomerId(),customer.getPassword()));
|
||||
return toAjax(customerService.updatePwd(customer.getCustomerId(),customer.getPassword(),true));
|
||||
}
|
||||
|
||||
@Log(title = "强制T人" , businessType = BusinessType.DELETE)
|
||||
@PostMapping("/loginOut")
|
||||
public R<Void> loginOut(@RequestBody IdReq id) {
|
||||
customerService.loginOut(id.getId());
|
||||
return R.ok();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.ruoyi.dk.controller.app;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import cn.hutool.core.lang.UUID;
|
||||
import cn.hutool.core.util.RandomUtil;
|
||||
import com.ruoyi.component.redis.util.RedisUtils;
|
||||
@@ -17,9 +18,10 @@ import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@RequestMapping("/customer/open")
|
||||
@RequestMapping("/app/customer/open")
|
||||
@RestController
|
||||
@Tag(name = "用户开放接口")
|
||||
@SaIgnore
|
||||
public class AppCustomerOpenController {
|
||||
@Autowired
|
||||
private CodeService codeService;
|
||||
@@ -80,7 +82,7 @@ public class AppCustomerOpenController {
|
||||
if(!updatePwdOpenReq.getPassword().equals(updatePwdOpenReq.getConfirmPassword())){
|
||||
throw new CustomException(MessageUtils.message("dk.password.check.error"));
|
||||
}
|
||||
customerService.updatePwd(customer.getId(),updatePwdOpenReq.getPassword());
|
||||
customerService.updatePwd(customer.getId(),updatePwdOpenReq.getPassword(),true);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
|
||||
package com.ruoyi.dk.controller.app;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import cn.hutool.core.util.RandomUtil;
|
||||
import com.ruoyi.dk.domain.HomeSetting;
|
||||
import com.ruoyi.dk.domain.LoansSetting;
|
||||
@@ -28,6 +29,7 @@ import java.util.Random;
|
||||
@RestController
|
||||
@RequestMapping("/app/home/loans")
|
||||
@Tag(name = "首页开放")
|
||||
@SaIgnore
|
||||
public class AppHomeController {
|
||||
|
||||
@Autowired
|
||||
|
||||
@@ -14,6 +14,7 @@ import com.ruoyi.component.core.util.BeanConvertUtil;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.CrossOrigin;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
package com.ruoyi.dk.controller.app;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import com.ruoyi.dk.dto.app.req.LoginPhoneBody;
|
||||
import com.ruoyi.dk.kit.DkLoginKit;
|
||||
import com.ruoyi.component.core.domain.R;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.CrossOrigin;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
@@ -17,8 +19,9 @@ public class LoginV2Controller {
|
||||
@Autowired
|
||||
private DkLoginKit dkLoginKit;
|
||||
|
||||
@PostMapping("/customer/login")
|
||||
@PostMapping("/app/customer/login")
|
||||
@Operation(summary = "用户登陆")
|
||||
@SaIgnore
|
||||
public R<Map<String, Object>> loginCustomer(@RequestBody LoginPhoneBody loginBody) {
|
||||
Map<String, Object> ajax = new HashMap<>();
|
||||
String token = dkLoginKit.login(loginBody.getMobile(),loginBody.getPassword());
|
||||
|
||||
@@ -12,9 +12,7 @@ import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
/**
|
||||
@@ -23,6 +21,7 @@ import org.springframework.web.multipart.MultipartFile;
|
||||
*/
|
||||
@RestController
|
||||
@Tag(name = "通用接口")
|
||||
@RequestMapping("/app/v2/common")
|
||||
@Slf4j
|
||||
public class V2CommonController {
|
||||
@Autowired
|
||||
@@ -30,7 +29,7 @@ public class V2CommonController {
|
||||
@Autowired
|
||||
private ISysOssService iSysOssService;
|
||||
|
||||
@GetMapping("/v2/common/sts")
|
||||
@GetMapping("/sts")
|
||||
@Operation(summary = "文件上传")
|
||||
public R getSts(){
|
||||
StsResult stsToken = stsOssKit.getStsToken();
|
||||
@@ -40,7 +39,7 @@ public class V2CommonController {
|
||||
return R.ok(stsToken);
|
||||
}
|
||||
|
||||
@PostMapping("/v2/common/upload")
|
||||
@PostMapping("/upload")
|
||||
@Operation(summary = "文件上传")
|
||||
public R uploadFile(MultipartFile file) {
|
||||
if (ObjectUtil.isNull(file)) {
|
||||
|
||||
@@ -38,6 +38,9 @@ public class Customer implements Serializable {
|
||||
@Schema(description = "用户名称")
|
||||
private String nickName;
|
||||
|
||||
@Schema(description = "用户编号")
|
||||
private String userCode;
|
||||
|
||||
/**
|
||||
* 用户密码
|
||||
*/
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
package com.ruoyi.dk.dto.common;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class IdReq {
|
||||
private Long id;
|
||||
}
|
||||
@@ -2,8 +2,10 @@ package com.ruoyi.dk.listener;
|
||||
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.ruoyi.component.core.constant.TenantConstants;
|
||||
import com.ruoyi.dk.domain.AgreementSetting;
|
||||
import com.ruoyi.dk.domain.HomeSetting;
|
||||
import com.ruoyi.dk.domain.LoansSetting;
|
||||
import com.ruoyi.dk.service.AgreementSettingService;
|
||||
import com.ruoyi.dk.service.HomeSettingService;
|
||||
import com.ruoyi.dk.service.LoansSettingService;
|
||||
import com.ruoyi.system.event.AddTenantEvent;
|
||||
@@ -20,6 +22,8 @@ public class AddTenantEventListener {
|
||||
private HomeSettingService homeSettingService;
|
||||
@Autowired
|
||||
private LoansSettingService loansSettingService;
|
||||
@Autowired
|
||||
private AgreementSettingService agreementSettingService;
|
||||
|
||||
@EventListener
|
||||
public void event(AddTenantEvent addTenantEvent){
|
||||
@@ -34,6 +38,12 @@ public class AddTenantEventListener {
|
||||
setting.setTenantId(addTenantEvent.getTenantId());
|
||||
setting.setId(null);
|
||||
}
|
||||
List<AgreementSetting> agreementSettingList = agreementSettingService.list(Wrappers.lambdaQuery(AgreementSetting.class).eq(AgreementSetting::getTenantId, defaultTenantId));
|
||||
for (AgreementSetting setting : agreementSettingList) {
|
||||
setting.setTenantId(addTenantEvent.getTenantId());
|
||||
setting.setId(null);
|
||||
}
|
||||
agreementSettingService.saveBatch(agreementSettingList);
|
||||
homeSettingService.saveBatch(homeSettingList);
|
||||
loansSettingService.saveBatch(loansSettingList);
|
||||
}
|
||||
|
||||
@@ -8,6 +8,10 @@ import com.aliyuncs.auth.sts.AssumeRoleResponse;
|
||||
import com.aliyuncs.exceptions.ClientException;
|
||||
import com.aliyuncs.exceptions.ServerException;
|
||||
import com.aliyuncs.profile.DefaultProfile;
|
||||
import com.ruoyi.component.core.exception.ServiceException;
|
||||
import com.ruoyi.component.satoken.utils.LoginHelper;
|
||||
import com.ruoyi.system.domain.vo.SysTenantVo;
|
||||
import com.ruoyi.system.service.ISysTenantService;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -27,7 +31,9 @@ public class StsOssKit {
|
||||
@Getter
|
||||
private OssConfig ossConfig;
|
||||
@Getter
|
||||
public IAcsClient acsClient = null;
|
||||
private IAcsClient acsClient = null;
|
||||
@Autowired
|
||||
private ISysTenantService tenantService;
|
||||
|
||||
@PostConstruct
|
||||
public void init(){
|
||||
@@ -41,6 +47,10 @@ public class StsOssKit {
|
||||
|
||||
|
||||
public StsResult getStsToken(){
|
||||
SysTenantVo tenant = tenantService.queryByTenantId(LoginHelper.getTenantId());
|
||||
if(tenant == null){
|
||||
throw new ServiceException("平台错误");
|
||||
}
|
||||
// 创建API请求并设置参数
|
||||
AssumeRoleRequest request = new AssumeRoleRequest();
|
||||
request.setDurationSeconds(ossConfig.getDurationSeconds());
|
||||
@@ -58,7 +68,7 @@ public class StsOssKit {
|
||||
stsResult.setRegion("oss-"+ossConfig.getEndpoint());
|
||||
stsResult.setBucket(ossConfig.getBucketName());
|
||||
String nowStr = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
|
||||
stsResult.setKey(ossConfig.getKey()+nowStr+"/");
|
||||
stsResult.setKey(ossConfig.getKey()+tenant.getPrefix()+"/"+nowStr+"/");
|
||||
stsResult.setCdnDomain(ossConfig.getCdnDomain());
|
||||
return stsResult;
|
||||
} catch (ServerException e) {
|
||||
|
||||
@@ -14,7 +14,7 @@ public interface CustomerService extends IService<Customer> {
|
||||
|
||||
void register(CustomerRegisterReq register);
|
||||
|
||||
boolean updatePwd(Long id, String password);
|
||||
boolean updatePwd(Long id, String password, boolean logout);
|
||||
|
||||
void borrowAmount(Long customerId, BigDecimal totalLoanMoney,BigDecimal totalRepayment);
|
||||
|
||||
@@ -23,4 +23,6 @@ public interface CustomerService extends IService<Customer> {
|
||||
void dk(Long customerId);
|
||||
|
||||
IPage<CustomerAdminResp> pageAdmin(PageQuery pageQuery, CustomerAdminResp bo);
|
||||
|
||||
void loginOut(Long id);
|
||||
}
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
package com.ruoyi.dk.service.impl;
|
||||
|
||||
import cn.dev33.satoken.secure.BCrypt;
|
||||
import cn.hutool.core.util.RandomUtil;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.ruoyi.component.core.exception.ServiceException;
|
||||
import com.ruoyi.component.mybatis.core.page.PageQuery;
|
||||
import com.ruoyi.component.satoken.utils.LoginHelper;
|
||||
import com.ruoyi.component.tenant.helper.TenantHelper;
|
||||
import com.ruoyi.dk.domain.BorrowLog;
|
||||
import com.ruoyi.dk.domain.Customer;
|
||||
import com.ruoyi.dk.domain.CustomerInfo;
|
||||
@@ -16,11 +20,14 @@ import com.ruoyi.dk.service.CustomerInfoService;
|
||||
import com.ruoyi.dk.service.CustomerService;
|
||||
import com.ruoyi.component.core.exception.CustomException;
|
||||
import com.ruoyi.component.core.util.MessageUtils;
|
||||
import com.ruoyi.system.domain.vo.SysTenantVo;
|
||||
import com.ruoyi.system.service.ISysTenantService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, Customer> implements CustomerService {
|
||||
@@ -28,6 +35,8 @@ public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, Customer> i
|
||||
private CustomerInfoService customerInfoService;
|
||||
@Resource
|
||||
private BorrowLogMapper borrowLogMapper;
|
||||
@Autowired
|
||||
private ISysTenantService sysTenantService;
|
||||
@Override
|
||||
public Customer getCustomerByName(String mobile) {
|
||||
return this.getOne(Wrappers.lambdaQuery(Customer.class)
|
||||
@@ -42,7 +51,12 @@ public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, Customer> i
|
||||
if(customer != null){
|
||||
throw new CustomException(MessageUtils.message("dk.user.already.having"));
|
||||
}
|
||||
SysTenantVo vo = sysTenantService.queryByTenantId(TenantHelper.getTenantId());
|
||||
if(vo == null){
|
||||
throw new ServiceException("未找到对应的平台错误");
|
||||
}
|
||||
customer = new Customer();
|
||||
customer.setUserCode(generateUserCode(vo.getPrefix()));
|
||||
customer.setPhoneNumber(phoneNumber);
|
||||
customer.setNickName(MessageUtils.message("dk.user.name")+phoneNumber.substring(phoneNumber.length() - 4));
|
||||
customer.setPassword(BCrypt.hashpw(register.getPassword()));
|
||||
@@ -52,11 +66,24 @@ public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, Customer> i
|
||||
customerInfoService.save(customerInfo);
|
||||
}
|
||||
|
||||
private String generateUserCode(String prefix) {
|
||||
String userCode = prefix + "-" + RandomUtil.randomNumbers(6);
|
||||
boolean exists = this.exists(Wrappers.lambdaQuery(Customer.class).eq(Customer::getUserCode, userCode));
|
||||
if (exists) {
|
||||
this.generateUserCode(prefix);
|
||||
}
|
||||
return userCode;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean updatePwd(Long id, String password) {
|
||||
return this.update(Wrappers.lambdaUpdate(Customer.class)
|
||||
public boolean updatePwd(Long id, String password,boolean logout) {
|
||||
boolean update = this.update(Wrappers.lambdaUpdate(Customer.class)
|
||||
.eq(Customer::getId, id)
|
||||
.set(Customer::getPassword, BCrypt.hashpw(password)));
|
||||
if(update && logout){
|
||||
LoginHelper.logoutApp(id);
|
||||
}
|
||||
return update;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -88,4 +115,9 @@ public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, Customer> i
|
||||
public IPage<CustomerAdminResp> pageAdmin(PageQuery pageQuery, CustomerAdminResp bo) {
|
||||
return baseMapper.pageAdmin(pageQuery.build(),bo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loginOut(Long id) {
|
||||
LoginHelper.logoutApp(id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,6 +21,9 @@
|
||||
<if test="bo.phoneNumber != null and bo.phoneNumber != ''">
|
||||
and t1.phone_number like concat('%',#{bo.phoneNumber},'%')
|
||||
</if>
|
||||
<if test="bo.userCode != null and bo.userCode != ''">
|
||||
and t1.user_code = #{bo.userCode}
|
||||
</if>
|
||||
<if test="bo.nickName != null and bo.nickName != ''">
|
||||
and (t1.nick_name like concat('%',#{bo.nickName},'%') or t2.real_name like concat('%',#{bo.nickName},'%'))
|
||||
</if>
|
||||
@@ -42,6 +45,9 @@
|
||||
<if test="bo.phoneNumber != null and bo.phoneNumber != ''">
|
||||
and t1.phone_number like concat('%',#{bo.phoneNumber},'%')
|
||||
</if>
|
||||
<if test="bo.userCode != null and bo.userCode != ''">
|
||||
and t1.user_code = #{bo.userCode}
|
||||
</if>
|
||||
<if test="bo.nickName != null and bo.nickName != ''">
|
||||
and (t1.nick_name like concat('%',#{bo.nickName},'%') or t2.real_name like concat('%',#{bo.nickName},'%'))
|
||||
</if>
|
||||
|
||||
@@ -149,6 +149,13 @@ public class SysLoginController {
|
||||
return R.ok(menuService.buildMenus(menus));
|
||||
}
|
||||
|
||||
@GetMapping("auth/tenant/get")
|
||||
public R<SysTenantVo> getCurrentTenant(HttpServletRequest request){
|
||||
String tenantId = TenantHelper.getTenantId();
|
||||
SysTenantVo vo = tenantService.queryByTenantId(tenantId);
|
||||
return R.ok(vo);
|
||||
}
|
||||
|
||||
@GetMapping("auth/tenant/list")
|
||||
public R<List<SysTenantVo>> tenantList(HttpServletRequest request){
|
||||
Long userId = LoginHelper.getUserId();
|
||||
|
||||
@@ -8,12 +8,14 @@ import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.ruoyi.component.core.constant.UserConstants;
|
||||
import com.ruoyi.component.core.domain.R;
|
||||
import com.ruoyi.component.core.exception.ServiceException;
|
||||
import com.ruoyi.component.excel.core.ExcelResult;
|
||||
import com.ruoyi.component.excel.utils.ExcelUtil;
|
||||
import com.ruoyi.component.log.annotation.Log;
|
||||
import com.ruoyi.component.log.enums.BusinessType;
|
||||
import com.ruoyi.component.mybatis.core.page.PageQuery;
|
||||
import com.ruoyi.component.mybatis.core.page.TableDataInfo;
|
||||
import com.ruoyi.component.tenant.helper.TenantHelper;
|
||||
import com.ruoyi.component.web.core.BaseController;
|
||||
import com.ruoyi.system.domain.SysDept;
|
||||
import com.ruoyi.system.domain.SysRole;
|
||||
@@ -22,13 +24,11 @@ import com.ruoyi.component.satoken.utils.LoginHelper;
|
||||
import com.ruoyi.component.core.util.StreamUtils;
|
||||
import com.ruoyi.component.core.util.StringUtils;
|
||||
import com.ruoyi.system.domain.SysPost;
|
||||
import com.ruoyi.system.domain.vo.SysTenantVo;
|
||||
import com.ruoyi.system.domain.vo.SysUserExportVo;
|
||||
import com.ruoyi.system.domain.vo.SysUserImportVo;
|
||||
import com.ruoyi.system.listener.SysUserImportListener;
|
||||
import com.ruoyi.system.service.ISysDeptService;
|
||||
import com.ruoyi.system.service.ISysPostService;
|
||||
import com.ruoyi.system.service.ISysRoleService;
|
||||
import com.ruoyi.system.service.ISysUserService;
|
||||
import com.ruoyi.system.service.*;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
@@ -40,6 +40,7 @@ import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
/**
|
||||
* 用户信息
|
||||
@@ -56,6 +57,7 @@ public class SysUserController extends BaseController {
|
||||
private final ISysRoleService roleService;
|
||||
private final ISysPostService postService;
|
||||
private final ISysDeptService deptService;
|
||||
private final ISysTenantService sysTenantService;
|
||||
|
||||
/**
|
||||
* 获取用户列表
|
||||
@@ -141,8 +143,18 @@ public class SysUserController extends BaseController {
|
||||
@Log(title = "用户管理", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public R<Void> add(@Validated @RequestBody SysUser user) {
|
||||
SysTenantVo vo = sysTenantService.queryByTenantId(TenantHelper.getTenantId());
|
||||
if(vo == null){
|
||||
throw new ServiceException("未找到对应的平台");
|
||||
}
|
||||
user.setUserName(vo.getPrefix()+"-"+user.getUserName());
|
||||
user.setPrefix(vo.getPrefix());
|
||||
deptService.checkDeptDataScope(user.getDeptId());
|
||||
if (!userService.checkUserNameUnique(user)) {
|
||||
AtomicBoolean checkUserName = new AtomicBoolean(false);
|
||||
TenantHelper.ignore(() -> {
|
||||
checkUserName.set(userService.checkUserNameUnique(user));
|
||||
});
|
||||
if (!checkUserName.get()) {
|
||||
return R.fail("新增用户'" + user.getUserName() + "'失败,登录账号已存在");
|
||||
} else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) {
|
||||
return R.fail("新增用户'" + user.getUserName() + "'失败,手机号码已存在");
|
||||
|
||||
@@ -56,7 +56,6 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
|
||||
private final SysPostMapper postMapper;
|
||||
private final SysUserRoleMapper userRoleMapper;
|
||||
private final SysUserPostMapper userPostMapper;
|
||||
private final ISysTenantService sysTenantService;
|
||||
|
||||
@Override
|
||||
public TableDataInfo<SysUser> selectPageUserList(SysUser user, PageQuery pageQuery) {
|
||||
@@ -274,11 +273,6 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public int insertUser(SysUser user) {
|
||||
SysTenantVo vo = sysTenantService.queryByTenantId(TenantHelper.getTenantId());
|
||||
if(vo == null){
|
||||
throw new ServiceException("未找到对应的平台");
|
||||
}
|
||||
user.setUserName(vo.getPrefix()+"-"+user.getUserName());
|
||||
// 新增用户信息
|
||||
int rows = baseMapper.insert(user);
|
||||
// 新增用户岗位关联
|
||||
|
||||
Reference in New Issue
Block a user