Compare commits

...

2 Commits

6 changed files with 88 additions and 52 deletions

View File

@ -1,13 +1,10 @@
package com.coscoshipping.ebtp.system; package com.coscoshipping.ebtp.system;
import io.micrometer.core.instrument.MeterRegistry;
import org.mybatis.spring.annotation.MapperScan; import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.actuate.autoconfigure.metrics.MeterRegistryCustomizer;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.ComponentScan;
@SpringBootApplication @SpringBootApplication
@ -16,6 +13,7 @@ import org.springframework.context.annotation.ComponentScan;
@MapperScan({"com.coscoshipping.ebtp.system.**.dao", "com.chinaunicom.mall.ebtp.**.dao" }) @MapperScan({"com.coscoshipping.ebtp.system.**.dao", "com.chinaunicom.mall.ebtp.**.dao" })
@ComponentScan(basePackages = { "com.coscoshipping.ebtp.system.*", "com.chinaunicom.mall.ebtp.cloud.*", @ComponentScan(basePackages = { "com.coscoshipping.ebtp.system.*", "com.chinaunicom.mall.ebtp.cloud.*",
"com.chinaunicom.mall.ebtp.*" }) "com.chinaunicom.mall.ebtp.*" })
@EnableDiscoveryClient
public class SysManagerEbtpProjectApplication { public class SysManagerEbtpProjectApplication {
public static void main(String[] args) { public static void main(String[] args) {
@ -23,16 +21,4 @@ public class SysManagerEbtpProjectApplication {
System.out.println("启动成功!"); System.out.println("启动成功!");
} }
/**
* Grafana 注册项
*
* @param applicationName 应用名称, 用于grafana应用列表
* @return
*/
@Bean
public MeterRegistryCustomizer<MeterRegistry> configurer(
@Value("${spring.application.name}") String applicationName) {
return (registry) -> registry.config().commonTags("application", applicationName);
}
} }

View File

@ -103,12 +103,12 @@ public class FileController extends BaseController {
@RequestParam(required = false, value = "objectTable") String objectTable, @RequestParam(required = false, value = "objectTable") String objectTable,
@RequestParam(required = false, value = "objectParam") String objectParam, @RequestParam(required = false, value = "objectParam") String objectParam,
@RequestParam(defaultValue = "file", value = "objectType") String objectType, @RequestParam(defaultValue = "file", value = "objectType") String objectType,
@RequestParam(value = "multipartFiles") MultipartFile... multipartFiles) @RequestParam(value = "multipartFiles") MultipartFile... multipartFiles) {
throws Exception {
if (StringUtils.isEmpty(appCode) || StringUtils.isEmpty(String.valueOf(objectId))) { if (StringUtils.isEmpty(appCode) || StringUtils.isEmpty(String.valueOf(objectId))) {
return new BaseResponse<List<AnnexAndStorageVO>>(400, false, ResponseEnum.REQUEST_ERROR.getMsg(), null); return new BaseResponse<List<AnnexAndStorageVO>>(400, false, ResponseEnum.REQUEST_ERROR.getMsg(), null);
} }
List<AnnexAndStorageVO> annexAndStorageVOs = new ArrayList<>(); List<AnnexAndStorageVO> annexAndStorageVOs = new ArrayList<>();
try {
if (multipartFiles != null && multipartFiles.length > 0) { if (multipartFiles != null && multipartFiles.length > 0) {
for (MultipartFile file : multipartFiles) { for (MultipartFile file : multipartFiles) {
List<AnnexAndStorageVO> annexAndStorageVOList = this.fileService.uploadFile(file, appCode, objectId, objectTable, objectType, objectParam); List<AnnexAndStorageVO> annexAndStorageVOList = this.fileService.uploadFile(file, appCode, objectId, objectTable, objectType, objectParam);
@ -118,6 +118,10 @@ public class FileController extends BaseController {
} else { } else {
return new BaseResponse<>(400, false, ResponseEnum.FILE_NOT_EXIST_OR_REQUEST_ERROR.getMsg(), null); return new BaseResponse<>(400, false, ResponseEnum.FILE_NOT_EXIST_OR_REQUEST_ERROR.getMsg(), null);
} }
} catch (Exception e) {
return new BaseResponse<>(400, false, e.getMessage(), null);
}
} }
/** /**

View File

@ -69,7 +69,7 @@ public class LoginController {
return BaseResponse.success(result); return BaseResponse.success(result);
} }
@ApiOperation("账号登录") @ApiOperation("专家账号登录")
@PostMapping("/accountLogin/expert") @PostMapping("/accountLogin/expert")
public BaseResponse idcardExpertLogin(HttpServletResponse response,@RequestBody LoginUserVo vo) { public BaseResponse idcardExpertLogin(HttpServletResponse response,@RequestBody LoginUserVo vo) {
if(captchaGenerator.checkCaptcha(vo.getIdentifying(),vo.getEncryptValue())){ if(captchaGenerator.checkCaptcha(vo.getIdentifying(),vo.getEncryptValue())){
@ -81,7 +81,7 @@ public class LoginController {
return BaseResponse.success(null); return BaseResponse.success(null);
} }
} }
@ApiOperation("账号登录") @ApiOperation("供应商账号登录")
@PostMapping("/accountLogin/supplier") @PostMapping("/accountLogin/supplier")
public BaseResponse idcardSupplierLogin(HttpServletResponse response,@RequestBody LoginUserVo vo) { public BaseResponse idcardSupplierLogin(HttpServletResponse response,@RequestBody LoginUserVo vo) {
if(captchaGenerator.checkCaptcha(vo.getIdentifying(),vo.getEncryptValue())){ if(captchaGenerator.checkCaptcha(vo.getIdentifying(),vo.getEncryptValue())){

View File

@ -86,7 +86,7 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
@Value("${login.password.publickey}") @Value("${login.password.publickey}")
private String publickey; private String publickey;
@Value("${login.token.time_limit}") @Value("${login.token.time_limit}")
private String valid_time_limit; private String validTimeLimit;
@Value("${login.reset_password}") @Value("${login.reset_password}")
private String resetPassword; private String resetPassword;
@Resource @Resource
@ -190,7 +190,7 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
userinfoRedisTemplate.opsForValue().set( userinfoRedisTemplate.opsForValue().set(
REDIS_USER_KEY + token, REDIS_USER_KEY + token,
baseCacheUser, baseCacheUser,
Long.parseLong(valid_time_limit), Long.parseLong(validTimeLimit),
TimeUnit.HOURS); TimeUnit.HOURS);
// 5. 记录登录成功日志 // 5. 记录登录成功日志
@ -255,6 +255,7 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
// 检查是否为首次登录 // 检查是否为首次登录
boolean isFirstLogin = user.getFirstLogin() != null && user.getFirstLogin() == 1; boolean isFirstLogin = user.getFirstLogin() != null && user.getFirstLogin() == 1;
String userId = user.getUserId().toString();
if (isFirstLogin) { if (isFirstLogin) {
// 首次登录需要强制修改密码,返回特殊状态 // 首次登录需要强制修改密码,返回特殊状态
BaseSelf baseSelf = userSupplierLogin(user); BaseSelf baseSelf = userSupplierLogin(user);
@ -263,7 +264,7 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
// 记录首次登录日志 // 记录首次登录日志
long loginTime = System.currentTimeMillis() - startTime; long loginTime = System.currentTimeMillis() - startTime;
sysLoginLogService.recordLoginSuccess( sysLoginLogService.recordLoginSuccess(
user.getUserId().toString(), userId,
user.getName(), user.getName(),
user.getUsername(), user.getUsername(),
SysLoginLog.USER_TYPE_SUPPLIER, SysLoginLog.USER_TYPE_SUPPLIER,
@ -283,18 +284,43 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
BaseSelf baseSelf = userSupplierLogin(user); BaseSelf baseSelf = userSupplierLogin(user);
// 1. 查询角色信息
List<AuthorityEntity> authorityList = baseUserMapper.selectRoleByUserId(userId);
// 2. 组装BaseCacheUser
BaseCacheUser baseCacheUser = new BaseCacheUser();
baseCacheUser.setUserId(userId);
baseCacheUser.setFullName(user.getName());
baseCacheUser.setLoginName(user.getName());
baseCacheUser.setMobilePhone(user.getMobile());
baseCacheUser.setOfficePhone(user.getMobile());
baseCacheUser.setSex(user.getSex() != null ? user.getSex().toString() : null);
baseCacheUser.setEmailAddress(user.getEmail());
baseCacheUser.setUserType("0");
baseCacheUser.setAuthorityList(authorityList);
// 角色ID字符串拼接
if (authorityList != null && !authorityList.isEmpty()) {
StringBuilder roleIds = new StringBuilder();
for (AuthorityEntity ae : authorityList) {
if (roleIds.length() > 0)
roleIds.append(",");
roleIds.append(ae.getRoleId());
}
baseCacheUser.setRoleIds(roleIds.toString());
}
// 存入redis // 存入redis
// String token = baseSelf.getToken(); String token = baseSelf.getToken();
// userinfoRedisTemplate.opsForValue().set( userinfoRedisTemplate.opsForValue().set(
// REDIS_USER_KEY + token, REDIS_USER_KEY + token,
// baseCacheUser, baseCacheUser,
// Long.parseLong(valid_time_limit), Long.parseLong(validTimeLimit),
// TimeUnit.HOURS); TimeUnit.HOURS);
// 记录登录成功日志 // 记录登录成功日志
long loginTime = System.currentTimeMillis() - startTime; long loginTime = System.currentTimeMillis() - startTime;
sysLoginLogService.recordLoginSuccess( sysLoginLogService.recordLoginSuccess(
user.getUserId().toString(), userId,
user.getName(), user.getName(),
user.getUsername(), user.getUsername(),
SysLoginLog.USER_TYPE_SUPPLIER, SysLoginLog.USER_TYPE_SUPPLIER,
@ -302,8 +328,7 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
baseSelf.getToken(), baseSelf.getToken(),
loginTime, loginTime,
userAgent, userAgent,
false false);
);
return baseSelf; return baseSelf;
} catch (BadPaddingException e) { } catch (BadPaddingException e) {
@ -663,7 +688,7 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
BaseUserToken userToken = tokenList.get(0); BaseUserToken userToken = tokenList.get(0);
CommonExceptionEnum.LOGIN_EXPIRATION.assertStringNotNullByKey("", tokenList.get(0).getUserObject()); CommonExceptionEnum.LOGIN_EXPIRATION.assertStringNotNullByKey("", tokenList.get(0).getUserObject());
SecurityEntity securityEntity = JSON.parseObject(userToken.getUserObject(), SecurityEntity.class); SecurityEntity securityEntity = JSON.parseObject(userToken.getUserObject(), SecurityEntity.class);
userToken.setValidTime(LocalDateTime.now().plusMinutes(Long.valueOf(valid_time_limit))); userToken.setValidTime(LocalDateTime.now().plusMinutes(Long.valueOf(validTimeLimit)));
this.baseUserTokenService.saveOrUpdate(userToken); this.baseUserTokenService.saveOrUpdate(userToken);

View File

@ -23,6 +23,8 @@ import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException; import java.security.NoSuchAlgorithmException;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import com.coscoshipping.ebtp.system.user.vo.SupplierRegistrationVO; import com.coscoshipping.ebtp.system.user.vo.SupplierRegistrationVO;
import com.coscoshipping.ebtp.system.userrole.entity.SysUserRole;
import com.coscoshipping.ebtp.system.userrole.service.SysUserRoleService;
/** /**
* 对数据表 sys_supplier_user 操作的 serviceImpl * 对数据表 sys_supplier_user 操作的 serviceImpl
@ -38,6 +40,12 @@ public class SysSupplierUserServiceImpl extends BaseServiceImpl<SysSupplierUserM
@Value("${login.reset_password}") @Value("${login.reset_password}")
private String resetPassword; private String resetPassword;
@Value("${mconfig.role.supplier}")
private String supplierRole;
@Autowired
private SysUserRoleService sysUserRoleService;
@Override @Override
public IPage<SysSupplierUser> getPage(SysSupplierUser sysSupplierUser) { public IPage<SysSupplierUser> getPage(SysSupplierUser sysSupplierUser) {
LambdaQueryWrapper<SysSupplierUser> query = buildQueryWrapper(sysSupplierUser); LambdaQueryWrapper<SysSupplierUser> query = buildQueryWrapper(sysSupplierUser);
@ -122,6 +130,12 @@ public class SysSupplierUserServiceImpl extends BaseServiceImpl<SysSupplierUserM
// 保存到数据库 // 保存到数据库
boolean result = baseMapper.insert(supplierUser) > 0; boolean result = baseMapper.insert(supplierUser) > 0;
if (result) { if (result) {
// 为用户关联供应商角色角色ID: 00006
SysUserRole userRole = new SysUserRole();
userRole.setUserId(String.valueOf(userId));
userRole.setRoleId(supplierRole);
sysUserRoleService.save(userRole);
// 返回包含明文密码的用户信息(仅用于通知) // 返回包含明文密码的用户信息(仅用于通知)
SysSupplierUser resultUser = new SysSupplierUser(); SysSupplierUser resultUser = new SysSupplierUser();
resultUser.setUserId(userId); resultUser.setUserId(userId);
@ -137,6 +151,9 @@ public class SysSupplierUserServiceImpl extends BaseServiceImpl<SysSupplierUserM
return resultUser; return resultUser;
} }
return null; return null;
} }

View File

@ -6,6 +6,10 @@ server:
spring: spring:
main: main:
allow-bean-definition-overriding: true allow-bean-definition-overriding: true
servlet:
multipart:
max-file-size: 30MB
max-request-size: 100MB
cloud: cloud:
feign: feign:
client: client:
@ -16,8 +20,6 @@ spring:
nacos: nacos:
discovery: discovery:
server-addr: 192.168.110.231:8848 server-addr: 192.168.110.231:8848
namespace: seata
group: SEATA_GROUP
aop: aop:
auto: true #开启spring的aop配置 auto: true #开启spring的aop配置
proxy-target-class: true proxy-target-class: true
@ -224,6 +226,8 @@ mconfig:
cloud_mall_auth: http://10.238.52.52:8100/auth cloud_mall_auth: http://10.238.52.52:8100/auth
checkTokenPath: http://10.238.52.52:8100/auth/oauth/check_token checkTokenPath: http://10.238.52.52:8100/auth/oauth/check_token
xmzxUrl: http://10.238.52.52:8100/ xmzxUrl: http://10.238.52.52:8100/
role:
supplier: 000006
# 用户暴露给 prometheus 的健康数据 # 用户暴露给 prometheus 的健康数据