springboot 自带tomcat 可能不支持web socket
- Building for production...[BABEL] Note: The code generator has deoptimised the styling of D:\javaProject\platform\backend-ui-lanyuancc\backend-ui-lanyuancc\src\components\AddressCascader\address.js as it exceeds the max of 500KB.
ERROR Error: error:0308010C:digital envelope routines::unsupported
Error: error:0308010C:digital envelope routines::unsupported
at new Hash (node:internal/crypto/hash:69:19)
at Object.createHash (node:crypto:133:10)
at D:\javaProject\platform\backend-ui-lanyuancc\backend-ui-lanyuancc\node_modules\compression-webpack-plugin\dist\index.js:243:42
at CompressionPlugin.compress (D:\javaProject\platform\backend-ui-lanyuancc\backend-ui-lanyuancc\node_modules\compression-webpack-plugin\dist\index.js:284:9)
at D:\javaProject\platform\backend-ui-lanyuancc\backend-ui-lanyuancc\node_modules\compression-webpack-plugin\dist\index.js:305:12
at _next3 (eval at create (D:\javaProject\platform\backend-ui-lanyuancc\backend-ui-lanyuancc\node_modules\tapable\lib\HookCodeFactory.js:33:10), <anonymous>:9:17)
at eval (eval at create (D:\javaProject\platform\backend-ui-lanyuancc\backend-ui-lanyuancc\node_modules\tapable\lib\HookCodeFactory.js:33:10), <anonymous>:35:1)
at D:\javaProject\platform\backend-ui-lanyuancc\backend-ui-lanyuancc\node_modules\copy-webpack-plugin\dist\index.js:91:9
可以使用:
set NODE_OPTIONS=--openssl-legacy-provider
npm run build:prod
会多很多字符
,所以可以才有报错向上抛出的原则来实现
/**
* 注册用户信息
*
* @param member 用户信息
* @return 结果
*/
Boolean registerUserInfo(Member member) throws ServiceException;
@Override
public Boolean registerUserInfo(Member member) throws ServiceException{
//判断账号是否已注册
boolean exist = TenantHelper.dynamic(member.getTenantId(), () -> {
return memberMapper.exists(new LambdaQueryWrapper<Member>()
.eq(Member::getUsername, member.getUsername()));
});
if (exist) {
throw new ServiceException("账号已存在,请勿重复注册!");
}
// //判断账号是否已注册
// boolean register = TenantHelper.dynamic(member.getTenantId(), () -> {
// return remoteMemberService.registerByMobile(registerBody.getUsername());
// });
// if (register) {
// throw new ServiceException("账号已存在,请勿重复注册!");
// }
RedisUtils.deleteObject(RedisKeyEnum.SMS.getKey() + member.getUsername() + member.getType());
String username = member.getUsername();
// if (!("true".equals(configService.selectConfigByKey("sys.account.registerUser")))) {
// throw new ServiceException("当前系统没有开启注册功能");
// }
member.setName("U:" + RandomUtil.randomNumbers(6));
member.setAccountStatus(0);
member.setAuthStatus(3);
member.setAuthType(0);//默认个人认证 认证类型0 未认证 1个人认证 2企业认证
//member.setShopStatus(0);
member.setAccountStatus(0);
member.setStatus(0);
member.setIsDeleted(0);
member.setShippersStatus(0);
member.setCreateBy(member.getUsername());
member.setUpdateBy(member.getUsername());
member.setCreateTime(TimeUtils.getNowDate());
boolean save = userService.save(member);
if (save) {
Company company = new Company();
company.setTenantId(member.getTenantId());
company.setMemberId(member.getId());
company.setCompanyName("个人");
company.setRoleId(1);
company.setCompanyMobile(username);
company.setCheckStatus(3);//审核状态 0 待审核 1审核通过 2审核不通过 3待提交
company.setIsDefault(1);
companyService.save(company);
}
return save;
}
安装中文字体
在centos中,字体库的存放位置就是/usr/shared/fonts目录,所以我们要做的就是在Windows系统找到中文字体文件,然后拷贝到该目录下。Windows系统中的字体文件
就在C:\Windows\Fonts目录中。所以,安装步骤就是:
在CentOS中创建新的中文字体文件夹,输入命令
mkdir -p /usr/share/fonts/chinese && chmod -R 755 /usr/share/fonts/chinese
将C:\Windows\Fonts中的中文字体——比如msyh.ttc
(微软雅黑)、simhei.ttf(黑体)、simsun.ttc(宋体)——拷贝上传到CentOS中刚刚创建的目录/usr/share/fonts/chinese下。PS:在WIndows中打开字体文件夹显示的不是msyh.ttc这样名字的文件,而是中文的字体名字,可以将需要的字体拷贝到桌面上先,到桌面上就会显示出真正的文件名
,再从桌面上上传到centos中。
安装字体索引指令,输入命令
yum install mkfontscale -y
进入目录/usr/share/fonts/chinese,生成字体索引,输入命令:
cd /usr/share/fonts/chinese mkfontscale
最后,通过上面介绍的查看已安装中文字体的命令,确认字体是否已安装成功
fc-list :lang=zh

ubuntu使用方法:
再刷新字体缓存就可以了,命令如下
sudo mkfontscale
sudo mkfontdir
sudo fc-cache -fv
注意:
如果运行mkfontscale命令时终端提示mkfontscale: command not found,则需要首先安装mkfontscale mkfontdir和fc-cache这个命令,安装方法如下:
使mkfontscale和mkfontdir命令正常运行
sudo apt-get install ttf-mscorefonts-installer
使fc-cache命令正常运行
sudo apt-get install fontconfig
如果redis数据被丢失,则从数据库查询出最大数值保存到redis在自增
// 生成递增的货号逻辑
public String generateProductCode() {
lock.lock(); // 加锁,确保多线程安全
try {
// 从 Redis 获取当前货号,如果 Redis 中不存在,初始化货号
String currentCodeStr = redisTemplate.opsForValue().get(PRODUCT_CODE_KEY);
if (currentCodeStr == null) {
// 从数据库中获取当前最大的货号
Integer maxCode = productMapper.findMaxProductCode();
if (maxCode == null) {
maxCode = 0; // 如果数据库中没有数据,从 0 开始
}
// 初始化 Redis 中的货号为数据库中的最大值
redisTemplate.opsForValue().set(PRODUCT_CODE_KEY, maxCode.toString());
}
// 使用 Redis 的 INCR 命令自增货号
Long newCode = redisTemplate.opsForValue().increment(PRODUCT_CODE_KEY);
return String.format("%08d", newCode); // 格式化为 8 位数字
} finally {
lock.unlock(); // 解锁
}
}
// 生成递增的货号
String productCode = generateProductCode();
product.setItemNumberPrefix("ZML");
product.setItemNumber(productCode);
private static final String PRODUCT_CODE_KEY = "product:code"; // Redis 中货号的 key
private final Lock lock = new ReentrantLock(); // 创建一个 ReentrantLock 锁
@Autowired
private StringRedisTemplate redisTemplate;
// 查询当前数据库中最大的货号
@Select("SELECT MAX(p.item_number) FROM Product p")
Integer findMaxProductCode();
为了方便查询我是把编号和编号前缀分成了两个字段保存
private String itemNumberPrefix;
@ApiModelProperty(value = "商品货号")
private String itemNumber;