wuyuxin_common

branch_wuyuxin
wyx 7 months ago
parent b2bec31955
commit 72af97d046

@ -0,0 +1,103 @@
package com.sky.constant;
/**
*
*
*/
public class MessageConstant {
/**
*
*/
public static final String PASSWORD_ERROR = "密码错误";
/**
* 访
*/
public static final String ACCOUNT_NOT_FOUND = "账号不存在";
/**
*
*/
public static final String ACCOUNT_LOCKED = "账号被锁定";
/**
*
*/
public static final String ALREADY_EXISTS = "已存在";
/**
*
*/
public static final String UNKNOWN_ERROR = "未知错误";
/**
*
*/
public static final String USER_NOT_LOGIN = "用户未登录";
/**
*
*/
public static final String CATEGORY_BE_RELATED_BY_SETMEAL = "当前分类关联了套餐,不能删除";
/**
*
*/
public static final String CATEGORY_BE_RELATED_BY_DISH = "当前分类关联了菜品,不能删除";
/**
*
*/
public static final String SHOPPING_CART_IS_NULL = "购物车数据为空,不能下单";
/**
* 簿
*/
public static final String ADDRESS_BOOK_IS_NULL = "用户地址为空,不能下单";
/**
*
*/
public static final String LOGIN_FAILED = "登录失败";
/**
*
*/
public static final String UPLOAD_FAILED = "文件上传失败";
/**
*
*/
public static final String SETMEAL_ENABLE_FAILED = "套餐内包含未启售菜品,无法启售";
/**
*
*/
public static final String PASSWORD_EDIT_FAILED = "密码修改失败";
/**
*
*/
public static final String DISH_ON_SALE = "起售中的菜品不能删除";
/**
*
*/
public static final String SETMEAL_ON_SALE = "起售中的套餐不能删除";
/**
*
*/
public static final String DISH_BE_RELATED_BY_SETMEAL = "当前菜品关联了套餐,不能删除";
/**
*
*/
public static final String ORDER_STATUS_ERROR = "订单状态错误";
/**
* ID
*/
public static final String ORDER_NOT_FOUND = "订单不存在";
}

@ -0,0 +1,20 @@
package com.sky.enumeration;
/**
*
* SQL
*/
public enum OperationType {
/**
*
* 使SQL UPDATE
*/
UPDATE,
/**
*
* 使SQL INSERT
*/
INSERT;
}

@ -0,0 +1,34 @@
package com.sky.exception;
/**
*
* <p>
* {@link RuntimeException}unchecked exception
*
* <p>
* 使
* -
* -
* -
*/
public class BaseException extends RuntimeException {
/**
*
* <p>
* 使
*/
public BaseException() {
super();
}
/**
*
*
* @param msg
*
*/
public BaseException(String msg) {
super(msg);
}
}

@ -0,0 +1,19 @@
package com.sky.exception;
/**
* PasswordEditFailedException
* BaseExceptionBaseException
* 便
*/
public class PasswordEditFailedException extends BaseException {
/**
* PasswordEditFailedException
*
* @param msg BaseException
* 便msg"密码长度不符合要求导致修改失败"
*/
public PasswordEditFailedException(String msg) {
super(msg);
}
}

@ -0,0 +1,30 @@
package com.sky.exception;
/**
* UserNotLoginException
*
* 便
* BaseExceptionBaseException
* 便
*/
public class UserNotLoginException extends BaseException {
/**
*
* 使
* 使便
*/
public UserNotLoginException() {
}
/**
*
*
* @param msg BaseException
*
* msg"用户未登录,无法访问个人资料页面"
*/
public UserNotLoginException(String msg) {
super(msg);
}
}

@ -0,0 +1,37 @@
package com.sky.properties;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.Arrays;
/**
* ReportExcelPropertiesExcel
* Spring Boot便使
* Excelsheet
*/
@Component
// 使用@Component注解将该类标记为Spring的组件这样Spring容器能够扫描并管理它使其可以在项目的其他地方通过依赖注入等方式使用。
@ConfigurationProperties(prefix = "sky.excel")
// @ConfigurationProperties注解用于指定配置属性的前缀Spring Boot会自动将配置文件中以"sky.excel"为前缀的属性值绑定到该类对应的成员变量上。
@Data
// 使用Lombok的@Data注解它会自动为类生成常用的方法比如Getter、Setter、toString、equals和hashCode等方法简化代码编写提高开发效率。
public class ReportExcelProperties {
/**
* Excel
*
* Spring Boot"sky.excel.filePath"
*/
private String filePath;
/**
* Excelsheet
* "sky.excel.sheet"便Excel
* "sky.excel.sheet[0]=Sheet1""sky.excel.sheet[1]=Sheet2"{"Sheet1", "Sheet2"}
*/
private String[] sheet;
}

@ -0,0 +1,113 @@
package com.sky.utils;
import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.io.ByteArrayInputStream;
/**
* AliOssUtilOSS
* OSSJava SDK便Spring BootOSSOSS访
*/
@Data
// 使用Lombok的@Data注解会自动为类中的私有成员变量生成对应的Getter、Setter方法以及toString、equals和hashCode等方法简化代码编写。
@Slf4j
// 使用Lombok的@Slf4j注解会在类中自动生成一个名为log的Slf4j日志记录器方便在代码中记录相关的操作信息、异常等情况便于调试和监控。
@Component
// 使用@Component注解将该类标记为Spring框架中的一个组件这样Spring容器能够自动扫描并管理它使得该类可以在项目的其他地方通过依赖注入等方式被使用。
@AllArgsConstructor
// 使用Lombok的@AllArgsConstructor注解会自动生成一个包含所有成员变量的构造函数方便在创建类实例时进行参数注入等操作。
@NoArgsConstructor
// 使用Lombok的@NoArgsConstructor注解会自动生成一个无参构造函数满足某些场景下需要默认构造函数的需求例如在一些框架进行对象实例化时可能会调用无参构造函数。
public class AliOssUtil {
/**
* OSS访Endpoint
* OSSEndpointOSS
* "oss-cn-hangzhou.aliyuncs.com"OSSapplication.propertiesapplication.yml
*/
private String endpoint;
/**
* OSS访IDAccess Key ID
* Access Key SecretOSSOSSAccess Key IDAccess Key Secret
*
*/
private String accessKeyId;
/**
* OSS访Access Key Secret
* Access Key ID使访OSS
*
*/
private String accessKeySecret;
/**
* OSSBucket
* OSSOSS
* 便使
*/
private String bucketName;
/**
* OSSOSS访
*
* @param bytes 便OSS
* @param objectName OSSOSSOSS
* @return OSS访URL"https://BucketName.Endpoint/ObjectName"便使访
*/
public String upload(byte[] bytes, String objectName) {
// 创建OSSClient实例。
// 通过OSSClientBuilder构建器使用传入的endpoint、accessKeyId和accessKeySecret来创建一个与阿里云OSS服务进行交互的客户端实例
// 该客户端实例将用于后续的文件上传等操作它封装了与OSS服务通信的底层细节提供了一系列方便的方法来操作OSS资源。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
try {
// 创建PutObject请求。
// 使用ossClient的putObject方法创建一个文件上传请求将指定的字节数组内容通过ByteArrayInputStream包装后上传到指定的bucketName存储桶中以objectName作为对象名称。
// 这个操作实际上就是向OSS服务发送请求将本地的文件数据传输到云端存储桶里如果上传过程中出现OSS相关的异常情况会被相应的异常处理机制捕获。
ossClient.putObject(bucketName, objectName, new ByteArrayInputStream(bytes));
} catch (OSSException oe) {
// 捕获OSSException异常该异常表示请求已经发送到OSS服务端但由于某些原因如权限问题、资源不存在等被服务端拒绝并返回了错误响应信息。
// 下面的代码主要是将OSS服务端返回的详细错误信息打印出来方便开发人员定位问题例如错误消息、错误代码、请求ID以及主机ID等信息都有助于排查问题所在。
System.out.println("Caught an OSSException, which means your request made it to OSS, "
+ "but was rejected with an error response for some reason.");
System.out.println("Error Message:" + oe.getErrorMessage());
System.out.println("Error Code:" + oe.getErrorCode());
System.out.println("Request ID:" + oe.getRequestId());
System.out.println("Host ID:" + oe.getHostId());
} catch (ClientException ce) {
// 捕获ClientException异常该异常表示客户端在尝试与OSS服务进行通信时遇到了严重的内部问题比如无法访问网络等情况
// 通常是客户端自身环境或者配置方面的问题导致无法正常连接到OSS服务这里同样打印出错误消息以便分析是哪里出现了通信故障。
System.out.println("Caught an ClientException, which means the client encountered "
+ "a serious internal problem while trying to communicate with OSS, "
+ "such as not being able to access the network.");
System.out.println("Error Message:" + ce.getMessage());
} finally {
if (ossClient!= null) {
// 无论文件上传是否成功都需要关闭OSSClient实例释放相关的资源避免资源泄露保证程序的稳定性和性能。
ossClient.shutdown();
}
}
// 文件访问路径规则 https://BucketName.Endpoint/ObjectName
StringBuilder stringBuilder = new StringBuilder("https://");
stringBuilder
.append(bucketName)
.append(".")
.append(endpoint)
.append("/")
.append(objectName);
log.info("文件上传到:{}", stringBuilder);
return stringBuilder.toString();
}
}
Loading…
Cancel
Save