commit 4a7de5e0f311081ab5a46ffa89e7c1639d58ab20 Author: gaomusan <1929829500@qq.com> Date: Mon Aug 18 08:53:34 2025 +0800 上传 diff --git a/project/.idea/.gitignore b/project/.idea/.gitignore new file mode 100644 index 0000000..35410ca --- /dev/null +++ b/project/.idea/.gitignore @@ -0,0 +1,8 @@ +# 默认忽略的文件 +/shelf/ +/workspace.xml +# 基于编辑器的 HTTP 客户端请求 +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/project/.idea/compiler.xml b/project/.idea/compiler.xml new file mode 100644 index 0000000..223bafe --- /dev/null +++ b/project/.idea/compiler.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/project/.idea/dataSources.xml b/project/.idea/dataSources.xml new file mode 100644 index 0000000..d0c0ef6 --- /dev/null +++ b/project/.idea/dataSources.xml @@ -0,0 +1,17 @@ + + + + + mysql.8 + true + com.mysql.cj.jdbc.Driver + jdbc:mysql://localhost:3306 + + + + + + $ProjectFileDir$ + + + \ No newline at end of file diff --git a/project/.idea/encodings.xml b/project/.idea/encodings.xml new file mode 100644 index 0000000..8b47faa --- /dev/null +++ b/project/.idea/encodings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/project/.idea/jarRepositories.xml b/project/.idea/jarRepositories.xml new file mode 100644 index 0000000..abb532a --- /dev/null +++ b/project/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/project/.idea/misc.xml b/project/.idea/misc.xml new file mode 100644 index 0000000..94ace4f --- /dev/null +++ b/project/.idea/misc.xml @@ -0,0 +1,15 @@ + + + + + + + + + + \ No newline at end of file diff --git a/project/.idea/modules.xml b/project/.idea/modules.xml new file mode 100644 index 0000000..a0733a5 --- /dev/null +++ b/project/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/project/.idea/project.iml b/project/.idea/project.iml new file mode 100644 index 0000000..d6ebd48 --- /dev/null +++ b/project/.idea/project.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/project/.idea/uiDesigner.xml b/project/.idea/uiDesigner.xml new file mode 100644 index 0000000..2b63946 --- /dev/null +++ b/project/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/project/.idea/vcs.xml b/project/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/project/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/project/jiaqingjiayi/.idea/.gitignore b/project/jiaqingjiayi/.idea/.gitignore new file mode 100644 index 0000000..35410ca --- /dev/null +++ b/project/jiaqingjiayi/.idea/.gitignore @@ -0,0 +1,8 @@ +# 默认忽略的文件 +/shelf/ +/workspace.xml +# 基于编辑器的 HTTP 客户端请求 +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/project/jiaqingjiayi/.idea/compiler.xml b/project/jiaqingjiayi/.idea/compiler.xml new file mode 100644 index 0000000..223bafe --- /dev/null +++ b/project/jiaqingjiayi/.idea/compiler.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/project/jiaqingjiayi/.idea/dataSources.xml b/project/jiaqingjiayi/.idea/dataSources.xml new file mode 100644 index 0000000..2282703 --- /dev/null +++ b/project/jiaqingjiayi/.idea/dataSources.xml @@ -0,0 +1,29 @@ + + + + + mysql.8 + true + com.mysql.cj.jdbc.Driver + jdbc:mysql://localhost:3306 + + + + + + $ProjectFileDir$ + + + mysql.8 + true + com.mysql.cj.jdbc.Driver + jdbc:mysql://154.8.193.216:3306 + + + + + + $ProjectFileDir$ + + + \ No newline at end of file diff --git a/project/jiaqingjiayi/.idea/encodings.xml b/project/jiaqingjiayi/.idea/encodings.xml new file mode 100644 index 0000000..63e9001 --- /dev/null +++ b/project/jiaqingjiayi/.idea/encodings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/project/jiaqingjiayi/.idea/jarRepositories.xml b/project/jiaqingjiayi/.idea/jarRepositories.xml new file mode 100644 index 0000000..abb532a --- /dev/null +++ b/project/jiaqingjiayi/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/project/jiaqingjiayi/.idea/misc.xml b/project/jiaqingjiayi/.idea/misc.xml new file mode 100644 index 0000000..9ee9b59 --- /dev/null +++ b/project/jiaqingjiayi/.idea/misc.xml @@ -0,0 +1,15 @@ + + + + + + + + + + \ No newline at end of file diff --git a/project/jiaqingjiayi/.idea/mybatisx/templates.xml b/project/jiaqingjiayi/.idea/mybatisx/templates.xml new file mode 100644 index 0000000..4c6a2d1 --- /dev/null +++ b/project/jiaqingjiayi/.idea/mybatisx/templates.xml @@ -0,0 +1,87 @@ + + + + + + \ No newline at end of file diff --git a/project/jiaqingjiayi/.idea/uiDesigner.xml b/project/jiaqingjiayi/.idea/uiDesigner.xml new file mode 100644 index 0000000..2b63946 --- /dev/null +++ b/project/jiaqingjiayi/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/project/jiaqingjiayi/.idea/vcs.xml b/project/jiaqingjiayi/.idea/vcs.xml new file mode 100644 index 0000000..b2bdec2 --- /dev/null +++ b/project/jiaqingjiayi/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/project/jiaqingjiayi/pom.xml b/project/jiaqingjiayi/pom.xml new file mode 100644 index 0000000..9245389 --- /dev/null +++ b/project/jiaqingjiayi/pom.xml @@ -0,0 +1,133 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.6.4 + + + com.cj + jiaqingjiayi + 0.0.1-SNAPSHOT + jiaqingjiayi + jiaqingjiayi + + + + 17 + + + + org.springframework.boot + spring-boot-starter-web + + + org.mybatis.spring.boot + mybatis-spring-boot-starter + 2.2.2 + + + com.baomidou + mybatis-plus-boot-starter + 3.5.1 + + + + org.apache.commons + commons-lang3 + 3.12.0 + + + com.alipay.sdk + alipay-sdk-java + 4.38.0.ALL + + + cn.hutool + hutool-all + 5.8.16 + + + org.springframework.boot + spring-boot-devtools + runtime + true + + + mysql + mysql-connector-java + runtime + + + org.springframework.boot + spring-boot-configuration-processor + true + + + org.springframework.boot + spring-boot-starter-test + test + + + + com.aliyun.oss + aliyun-sdk-oss + 3.15.1 + + + + joda-time + joda-time + 2.10.1 + + + + + com.github.xiaoymin + knife4j-spring-boot-starter + 3.0.3 + + + + junit + junit + 4.13.2 + test + + + com.alibaba + easyexcel + 3.3.3 + + + org.aspectj + aspectjtools + 1.9.21 + + + org.projectlombok + lombok + 1.18.30 + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + org.projectlombok + lombok + + + + + + + + diff --git a/project/jiaqingjiayi/sql/sql.sql b/project/jiaqingjiayi/sql/sql.sql new file mode 100644 index 0000000..cf4e33b --- /dev/null +++ b/project/jiaqingjiayi/sql/sql.sql @@ -0,0 +1,339 @@ +create database jqjy; + +use jqjy; + +show variables like 'lower_case_table_names'; + +create table user +( + username varchar(256) null comment '用户昵称', + id bigint auto_increment comment 'id' + primary key, + unionId varchar(256) null comment '支付宝开放平台id', + openId varchar(256) null comment 'openId', + userAccount varchar(256) null comment '账号', + avatarUrl varchar(256) null comment '用户头像', + gender tinyint null comment '性别', + userPassword varchar(512) not null comment '密码', + phone varchar(128) null comment '电话', + email varchar(512) null comment '邮箱', + userStatus int default 0 not null comment '状态 0 -正常', + createTime datetime default CURRENT_TIMESTAMP null comment '创建时间', + updateTime datetime default CURRENT_TIMESTAMP null on update CURRENT_TIMESTAMP, + isDelete tinyint default 0 not null comment '是否删除', + userRole int default 0 not null comment '用户角色 0 - 普通用户 1 - 管理员 2 - 商家 3 - 美甲师', + index idx_openId (openId) +) comment '用户' collate = utf8mb4_unicode_ci; + +-- 商品表 +create table if not exists commodities +( + id bigint auto_increment comment 'id' primary key, + businessId bigint not null comment '商家id', + commoditiesGroupId bigint not null comment '商品分组id', + commoditiesName varchar(128) not null comment '商品名称', + commoditiesImage varchar(1024) null comment '商品图片', + commoditiesPrice double not null comment '商品价格', + inventoryStatus int not null comment '库存数量', + status varchar(20) default '上架' not null comment '商品状态:上架,下架', + createTime datetime default CURRENT_TIMESTAMP not null comment '创建时间', + updateTime datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间', + isDelete tinyint default 0 not null comment '是否删除', + index idx_businessId (businessId) +) comment '商品表' collate = utf8mb4_unicode_ci; + +-- 商品分组表 +create table if not exists commodities_group +( + id bigint auto_increment comment 'id' primary key, + businessId bigint not null comment '商家id', + groupName varchar(128) not null comment '商品分组名称', + isTopping tinyint default 0 not null comment '是否置顶:0不置顶,1置顶', + createTime datetime default CURRENT_TIMESTAMP not null comment '创建时间', + updateTime datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间', + isDelete tinyint default 0 not null comment '是否删除', + index idx_businessId (businessId) +) comment '商品分组表' collate = utf8mb4_unicode_ci; + +-- 商家表 +create table if not exists business +( + id bigint auto_increment comment 'id' primary key, + userId bigint not null comment '用户id', + businessName varchar(512) not null comment '门店名称', + businessAvatar varchar(1024) not null comment '门店头像', + businessPhone varchar(64) not null comment '门店手机号', + address varchar(512) not null comment '店铺详细地址', + businessProfile varchar(512) null comment '门店简介', + businessImages varchar(1024) null comment '商家相册', + categoryId bigint null comment '分类id', + startBusiness varchar(64) not null comment '开始营业时间', + endBusiness varchar(64) not null comment '结束营业时间', + serviceMode tinyint not null comment '服务方式:服务方式:0 - 可到店可上门 1 - 不可上门', + state tinyint default 0 not null comment '状态:0审核中,1启用,2禁用', + storeStatus tinyint default 0 not null comment '店铺状态:0休业,1营业', + createTime datetime default CURRENT_TIMESTAMP not null comment '创建时间', + updateTime datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间', + isDelete tinyint default 0 not null comment '是否删除', + index idx_businessId (id), + index idx_userId (userId) +) comment '商家' collate = utf8mb4_unicode_ci; + +-- 商家认证表 +create table if not exists business_auth +( + id bigint auto_increment comment 'id' primary key, + businessId bigint not null comment '店铺id', + shopkeeper varchar(64) not null comment '店主名', + license varchar(1024) not null comment '营业执照', + frontIdCard varchar(1024) not null comment '身份证正面', + backIdCard varchar(1024) not null comment '身份证反面', + bankCard varchar(64) not null comment '银行卡号', + createTime datetime default CURRENT_TIMESTAMP not null comment '创建时间', + updateTime datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间', + isDelete tinyint default 0 not null comment '是否删除', + index idx_businessId (businessId) +) comment '商家认证' collate = utf8mb4_unicode_ci; + +-- 商品和规格的中间表 +create table if not exists specifications_commodities +( + id bigint auto_increment comment 'id' primary key, + commoditiesId bigint not null comment '商品id', + specificationsId bigint not null comment '规格id', + createTime datetime default CURRENT_TIMESTAMP not null comment '创建时间', + updateTime datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间', + isDelete tinyint default 0 not null comment '是否删除', + index idx_dishesId (commoditiesId), + index idx_specificationsId (specificationsId) +) comment '商品和规格的中间表' collate = utf8mb4_unicode_ci; + +-- 规格表 +create table if not exists specifications +( + id bigint auto_increment comment 'id' primary key, + businessId bigint not null comment '商家id', + specificationsName varchar(128) not null comment '规格名称', + createTime datetime default CURRENT_TIMESTAMP not null comment '创建时间', + updateTime datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间', + isDelete tinyint default 0 not null comment '是否删除', + index idx_businessId (businessId) +) comment '规格表' collate = utf8mb4_unicode_ci; + +-- 属性表 +create table if not exists attribute +( + id bigint auto_increment comment 'id' primary key, + businessId bigint not null comment '商家id', + specificationsId bigint not null comment '规格id', + attributeName varchar(128) not null comment '属性名称', + attributeStatus tinyint default 0 not null comment '属性状态:0在售,1停售', + createTime datetime default CURRENT_TIMESTAMP not null comment '创建时间', + updateTime datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间', + index idx_businessId (businessId) +) comment '属性表' collate = utf8mb4_unicode_ci; + +-- 购物车表 +create table if not exists cart +( + id bigint auto_increment comment 'id' primary key, + userId bigint not null comment '用户id', + businessId bigint not null comment '商家id', + createTime datetime default CURRENT_TIMESTAMP not null comment '加入购物车时间', + updateTime datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间', + commoditiesId bigint null comment '商品id', + quantity int default 1 not null comment '商品数量', + price decimal(10, 2) not null comment '当前选择规格的价格', + subtotal decimal(10, 2) as ((`price` * `quantity`)) stored comment '小计(单价 * 数量)', + selectedOptions varchar(512) default '' not null comment '已选规格属性列表', + isDelete tinyint default 0 not null comment '是否删除', + index idx_userId (userId), + index idx_businessId (businessId) +) comment '购物车表' collate = utf8mb4_unicode_ci; + +create table if not exists manicurist +( + id BIGINT AUTO_INCREMENT COMMENT '美甲师唯一标识(主键,自增)' PRIMARY KEY, + userId BIGINT not null comment '用户ID(关联用户表)', + businessId bigint null comment '商家id', + manicuristName VARCHAR(100) not null comment '美甲师姓名', + gender tinyint null comment '性别', + manicuristAvatar VARCHAR(255) COMMENT '美甲师头像文件的存储路径或链接', + phone VARCHAR(20) COMMENT '美甲师联系电话', + email VARCHAR(100) COMMENT '美甲师电子邮件', + employment_date DATE COMMENT '美甲师入职日期', + specialties VARCHAR(255) comment '美甲师的专长(如法式美甲、彩绘等)', + rating DECIMAL(3, 2) comment '美甲师的服务评分', + salary DECIMAL(10, 2) comment '美甲师的基本薪资', + manStatus int DEFAULT 0 comment '美甲师状态 0 表示正常 1 表示禁用', + isDelete TINYINT DEFAULT 0 comment '逻辑删除标志,0 表示未删除,1 表示已删除', + auditStatus TINYINT DEFAULT 0 comment '审核状态,0-待审核,1-审核通过,2-审核不通过', + createTime DATETIME DEFAULT CURRENT_TIMESTAMP not null comment '记录创建时间', + updateTime DATETIME DEFAULT CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '记录更新时间', + INDEX idx_userId (userId) +) comment ='美甲师表' COLLATE = utf8mb4_unicode_ci; + +CREATE TABLE IF NOT EXISTS manicuristSign +( + id BIGINT AUTO_INCREMENT PRIMARY KEY, + name VARCHAR(100) NOT NULL COMMENT '姓名', + manicuristId BIGINT NOT NULL COMMENT '美甲师ID(关联美甲师表)', + businessId BIGINT NOT NULL COMMENT '商家id', + businessName VARCHAR(512) NOT NULL COMMENT '门店名称', + phone VARCHAR(20) COMMENT '联系电话', + salary DECIMAL(10, 2) COMMENT '期望工资薪资', + signTime VARCHAR(100) NOT NULL COMMENT '签约时长', + tenure VARCHAR(100) NOT NULL COMMENT '工龄', + manicuristLv VARCHAR(100) NOT NULL COMMENT '美甲师等级', + auditStatus TINYINT DEFAULT 0 COMMENT '审核状态,0-待审核,1-审核通过,2-审核不通过', + isDelete TINYINT DEFAULT 0 COMMENT '逻辑删除标志,0 表示未删除,1 表示已删除', + createTime DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '记录创建时间', + updateTime DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '记录更新时间' +) COMMENT ='美甲师签约表' COLLATE = utf8mb4_unicode_ci; + + + +CREATE TABLE IF NOT EXISTS manicurist_auth +( + id BIGINT AUTO_INCREMENT COMMENT '认证唯一标识(主键,自增)' PRIMARY KEY, + artistId BIGINT NOT NULL COMMENT '美甲师ID(关联美甲师表)', + name VARCHAR(100) COMMENT '美甲师名称', + certification_number VARCHAR(100) COMMENT '认证编号', + issuing_authority VARCHAR(100) COMMENT '发证机构', + certificate_path VARCHAR(255) COMMENT '证书文件的存储路径或链接', + createTime DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '记录创建时间', + updateTime DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '记录更新时间', + isDelete TINYINT DEFAULT 0 COMMENT '逻辑删除标志,0 表示未删除,1 表示已删除', + INDEX idx_artistId (artistId) +) COMMENT ='美甲师认证表' COLLATE = utf8mb4_unicode_ci; + + +-- 预约表 +CREATE TABLE IF NOT EXISTS appointments +( + id bigint auto_increment comment '预约ID' primary key, + userId bigint not null comment '用户ID(关联用户表)', + userName varchar(100) not null comment '用户姓名', + phone varchar(64) not null comment '手机号', + businessId bigint not null comment '商家ID(关联商家表)', + businessName varchar(512) null comment '商家名称', + manicuristId bigint null comment '美甲师ID, 如果为空到店分配', + manicuristName varchar(100) null comment '美甲师姓名', + appointmentTime datetime not null comment '预约时间', + serviceMode tinyint default 1 not null comment '服务方式(0 - 线上, 1 - 到店)', + notes varchar(128) null comment '备注', + status tinyint default 0 not null comment '预约状态(0 - 已确认, 1 - 已完成, 2 - 已取消)', + createTime datetime default CURRENT_TIMESTAMP not null comment '创建时间', + updateTime datetime default CURRENT_TIMESTAMP null on update CURRENT_TIMESTAMP comment '更新时间', + isDelete tinyint default 0 not null comment '是否删除', + orderId bigint null comment '订单ID(关联订单表)', + appointmentAddress varchar(512) null comment '预约地址', + INDEX idx_userId (userId), + INDEX idx_businessId (businessId), + INDEX idx_manicuristId (manicuristId), + INDEX idx_orderId (orderId) +) COMMENT '预约表' COLLATE = utf8mb4_unicode_ci; + + +-- 订单表 +CREATE TABLE IF NOT EXISTS orders +( + id BIGINT AUTO_INCREMENT COMMENT '订单ID' PRIMARY KEY, + orderNumber VARCHAR(50) NOT NULL UNIQUE COMMENT '订单号', + userId BIGINT NOT NULL COMMENT '用户ID(关联用户表)', + businessId bigint not null comment '商家id', + manicuristId bigint null comment '美甲师ID', + userName VARCHAR(100) NOT NULL COMMENT '用户姓名', + phone varchar(64) not null comment '手机号', + payMethod TINYINT NOT NULL COMMENT '支付方式:0微信支付', + appointmentId BIGINT NULL COMMENT '预约ID(关联预约表)', + totalPrice DECIMAL(10, 2) NOT NULL COMMENT '订单总金额', + paymentStatus TINYINT DEFAULT 0 NOT NULL COMMENT '支付状态(0 - 未支付, 1 - 已支付, 2 - 退款中, 3 - 已退款)', + claimStatus TINYINT DEFAULT 0 NOT NULL COMMENT '抢单状态(0 - 未抢单, 1 - 已抢单)', + serviceMode tinyint default 1 not null comment '服务方式(0 - 到店, 1 - 上门)', + notes varchar(128) null comment '备注', + createTime DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '创建时间', + updateTime DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + isDelete TINYINT DEFAULT 0 NOT NULL COMMENT '是否删除', + INDEX idx_userId (userId), + INDEX idx_appointmentId (appointmentId) +) COMMENT '订单表' COLLATE = utf8mb4_unicode_ci; + + +-- 订单详情表 +CREATE TABLE IF NOT EXISTS order_items +( + id BIGINT AUTO_INCREMENT COMMENT '详细订单ID' PRIMARY KEY, + orderId BIGINT NOT NULL COMMENT '订单ID(关联订单表)', + commoditiesId BIGINT NOT NULL COMMENT '商品ID(美甲款式)', + quantity INT NOT NULL COMMENT '商品数量', + price DECIMAL(10, 2) NOT NULL COMMENT '商品单价', + subtotal decimal(10, 2) not null comment '小计(单价 * 数量)', + attributeNames varchar(512) null comment '规格属性列表', + createTime DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '创建时间', + updateTime DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + isDelete TINYINT DEFAULT 0 NOT NULL COMMENT '是否删除', + INDEX idx_orderId (orderId), + INDEX idx_commoditiesId (commoditiesId) +) COMMENT '详细订单表' COLLATE = utf8mb4_unicode_ci; + +-- 抢单记录表 +CREATE TABLE IF NOT EXISTS order_claim +( + id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '抢单记录ID', + orderId BIGINT NOT NULL COMMENT '订单ID(关联订单表)', + manicuristId BIGINT NOT NULL COMMENT '美甲师ID(关联美甲师表)', + claimStatus TINYINT DEFAULT 0 NOT NULL COMMENT '抢单状态(0 - 待抢单, 1 - 已抢单, 2 - 已分配, 3 - 放弃)', + claimTime DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '抢单时间', + isDelete TINYINT DEFAULT 0 NOT NULL COMMENT '是否删除', + INDEX idx_orderId (orderId), + INDEX idx_manicuristId (manicuristId) +) COMMENT '抢单记录表' COLLATE = utf8mb4_unicode_ci; + +-- 收藏表 +create table collect +( + id bigint auto_increment comment 'id' primary key, + userId bigint not null comment '用户id', + businessId bigint not null comment '商家id' +) comment '收藏'; + +-- 用户评分表 +create table user_rating +( + id bigint auto_increment primary key comment 'id', + businessId bigint not null comment '商家id', + userId bigint not null comment '用户id', + manicuristId bigint not null comment '美甲师id', + orderId bigint not null comment '订单id', + rating tinyint not null comment '评分', + manicuristRating tinyint not null comment '美甲师评分', + review varchar(512) null comment '评论', + picture VARCHAR(512) COMMENT '评论图片', + businessReview varchar(512) null comment '商家回复', + createTime datetime default CURRENT_TIMESTAMP not null comment '创建时间' +) comment '用户评分' collate = utf8mb4_unicode_ci; + + +-- 商家等级表 +create table business_level +( + id bigint auto_increment primary key comment 'id', + businessId bigint not null comment '商家id', + averageScore DECIMAL(3, 2) not null default 0 comment '综合评分', + level tinyint not null comment '等级', + createTime DATETIME default CURRENT_TIMESTAMP comment '创建时间', + updateTime DATETIME default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP comment '更新时间' +); + +create table recruitment +( + id bigint auto_increment primary key comment '主键id', + businessId bigint not null comment '商家id,关联business表', + businessName varchar(512) not null comment '门店名称', + requirements text not null comment '对美甲师的要求', + salary varchar(50) not null comment '美甲师薪资,示例: 5k-10k/月', + quantity int not null comment '招聘美甲师数量', + createTime DATETIME default CURRENT_TIMESTAMP comment '创建时间', + updateTime DATETIME default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP comment '更新时间' +) comment ='美甲师招聘信息表'; diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/JiaqingjiayiApplication.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/JiaqingjiayiApplication.java new file mode 100644 index 0000000..ff5035d --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/JiaqingjiayiApplication.java @@ -0,0 +1,18 @@ +package com.cj.jiaqingjiayi; + + +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.scheduling.annotation.EnableScheduling; + +@MapperScan("com.cj.jiaqingjiayi.mapper") +@SpringBootApplication +@EnableScheduling +public class JiaqingjiayiApplication { + + public static void main(String[] args) { + SpringApplication.run(JiaqingjiayiApplication.class, args); + } + +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/common/BaseResponse.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/common/BaseResponse.java new file mode 100644 index 0000000..7167de4 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/common/BaseResponse.java @@ -0,0 +1,47 @@ +package com.cj.jiaqingjiayi.common; + +import lombok.Data; + +import java.io.Serializable; + +/** + *通用返回类 + */ +@Data +public class BaseResponse implements Serializable { + /** + * 状态码 + */ + private int code; + /** + * 数据 + */ + private T data; + /** + * 消息 + */ + private String message; + /** + * 描述 + */ + private String description; + + public BaseResponse(int code, T data, String message, String description) { + this.code = code; + this.data = data; + this.message = message; + this.description = description; + } + + public BaseResponse(int code, T data, String message) { + this(code, data, message, ""); + } + + public BaseResponse(int code, T data) { + this(code, data, "", ""); + } + + public BaseResponse(ErrorCode errorCode) { + this(errorCode.getCode(), null , errorCode.getMessage(), errorCode.getDescription()); + } +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/common/ErrorCode.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/common/ErrorCode.java new file mode 100644 index 0000000..4174e68 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/common/ErrorCode.java @@ -0,0 +1,48 @@ +package com.cj.jiaqingjiayi.common; + + +/** + * 错误码 + */ +public enum ErrorCode { + + SUCCESS(0, "ok", ""), + PARAMS_ERROR(40000, "请求参数错误", ""), + NULL_ERROR(40001, "请求数据为空", ""), + NOT_LOGIN(40100, "未登录", ""), + NO_AUTH(40101, "无权限", ""), + NOT_FOUND_ERROR(40400,"请求数据不存在",""), + SYSTEM_ERROR(50000, "系统内部异常", ""), + OPERATION_ERROR(50001, "操作失败", ""); + + /** + * 状态码 + */ + private final int code; + /** + * 状态码信息 + */ + private final String message; + /** + * 状态码的详细描述 + */ + private final String description; + + ErrorCode(int code, String message, String description) { + this.code = code; + this.message = message; + this.description = description; + } + + public int getCode() { + return code; + } + + public String getMessage() { + return message; + } + + public String getDescription() { + return description; + } +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/common/ResultUtils.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/common/ResultUtils.java new file mode 100644 index 0000000..3cd37ea --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/common/ResultUtils.java @@ -0,0 +1,65 @@ +package com.cj.jiaqingjiayi.common; + +/** + * 返回工具类 + */ +public class ResultUtils { + /** + * 成功 + * + * @param data + * @param + * @return + */ + public static BaseResponse success(T data) { + return new BaseResponse<>(0, data, "ok"); + } + + public static BaseResponse success(T data, String message) { + return new BaseResponse<>(0, data, message); + } + + /** + * 失败 + * + * @param errorCode + * @return + */ + public static BaseResponse error(ErrorCode errorCode) { + return new BaseResponse<>(errorCode); + } + + /** + * 失败 + * + * @param code + * @param message + * @param description + * @return + */ + public static BaseResponse error(int code, String message, String description) { + return new BaseResponse(code, null, message, description); + } + + /** + * 失败 + * + * @param errorCode + * @return + */ + public static BaseResponse error(ErrorCode errorCode, String message, String description) { + return new BaseResponse(errorCode.getCode(), null, message, description); + } + + + /** + * 失败 + * + * @param errorCode + * @return + */ + public static BaseResponse error(ErrorCode errorCode, String description) { + return new BaseResponse(errorCode.getCode(), errorCode.getMessage(), description); + } + +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/config/AlipayClients.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/config/AlipayClients.java new file mode 100644 index 0000000..e2e696f --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/config/AlipayClients.java @@ -0,0 +1,40 @@ +package com.cj.jiaqingjiayi.config; + + +import com.alipay.api.AlipayApiException; +import com.alipay.api.AlipayClient; +import com.alipay.api.AlipayConstants; +import com.alipay.api.DefaultAlipayClient; +import org.springframework.context.annotation.Bean; + +public class AlipayClients { + //appid + public String appId = "2021004144652242"; + //私钥 + //上:沙箱公钥 下:支付宝公钥 + public String PublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAo9gmNSz8l/eH4Uem6hqNoK1t91Gu5evoooJKzZraxPYW9AyJwH8Mxbag3qVaRSalz+OIHHVqszUxah98DbvaxJbpY9tB2zaLSvxhXM4U5iGFR3TqdqqvxsXsfiu+a0JHauuGYtuuNmUwR7ZFVub8Ma/YBCHfELPvl1TcX8MgMlHqw3NQqcEXZZO8Ziyxel7CqgHDx5dFn1meHDFWTajbWN/0TWSzvYAOKrlrS3LjjwbDzTr3BQzH84TLbLkBaMVGEUkJZUrVVkiN3XEVBpBUs5Cv5INN4L+UJ4kDy1u6LICzUVSSrQmHItuA+YiFHZ/WVJ18jISn0W7YZVyRqTo2sQIDAQAB"; +// public String PublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjqGlEXMznr4XlQ3hvbZnQmfj0iJ2MAmPmpNyXMuQhuMK2xx8t9HozL+YzZ8l/4ksgtzGCHx0NiObsYe6Tt0EogfBqXjPTst21AjrT1TPKOxSfv6WuqNLNuY5o/i8ev0OLAGg8YUD2PL1GXSIrUMqjUuCFYQ7iFgEtcN54GVh4XG7Qj6wpN8CCTwmG4R4vHk4Al0ydE2yf0Efj49EgIi+Oq8EkXPSgdWpcS+UaEyuFVr3R5am36MHp+rXkOm6NluVJFBD/JHsOjB/Wt0EGd2HSyhR7n0hjFpNfVodughLL53/zG+nZ7+mM25s2S7Qh4iirxTedeqXlvBMXffxLSQrtQIDAQAB"; + //公钥appPrivateKey + //上:沙箱私钥 下:支付宝私钥 + public String appPrivateKey = "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC7rWG3si4XQlDEHjSe/ot98aCn/R25fCSiCBIUTTA6Wy3Gs5lk1XERw1N6loq8u9zR8vTQwzLnFmepwJx2sMLHGfJT3F6Y7Lx0z7gLYksMe+LIAfc+KYsfs0IyDvoKvwsm7XAzl8AYiqk1/p2dxc5etdvkLO7bXquyCDOclR3lL9NBgbJ6tH0fvcVd3RPmZk5Tb2hfn5JK1s/tAanbvFtKhLNCwX8qZp25+AfPakx2tRZkSgjh+fjA6ZElUnwq9ftHy16vfSmnX3C3LuDSKduo3EBkDhpGjTD5+zOs8tKGofW2gn347ouzXWnTz71ftzVwAgFUcOh4Ib0GVC9SKZBrAgMBAAECggEBAJEK8R8/tEFDfhnjYjWScYm3KLtLciJ8n+8dn6NS+DfRabJL8PutvUHGHAj8uWIdKg6T3sJMaVWQyjK16fYMq6umENLg17cGFquMMSeTIn8Wa3C5nDPNdXjdWAZJ7tJJTTwbeoBVAh+1YgqZqYRacCBgGf3hAARHyRfBIOodkEojc4oyzlbUGOz+Ee6/b+A9BZd84YWkbg/KlD9mlqSAYSGCKBM9nd8l1YIvr/4OgBn679x+A8pB8i5kGxP4fertZl2mkt75LigJ3Ab/vwoHDj1AuPjlUIce+PcTdxHqgNtIJSDWbop70BGPp0XQE9BRefPIPQfS9+2LO+eFeo4ESeECgYEA+DzH4cLoMYG9Hfq9IIbQyq6VJeip4/Lbv8h4RevGPHqyFIKB3fX7bHRlBB8hCnyX+zj4T/K50LEoZmo4tpVCv7YmRkyGRoF0QwaMgbo3bkaaCZeQnuPeZFaqyhszcJL1nhLghSNKcU75orStqf4H2mLL67VH1PkjelAWMrY1JVsCgYEAwYvMNzPkLG+p9MqGlkxgu2gQ6F4SdQp35XLHjygyTMG+qt/cPAbviyOILUhTLHP1s++kgw7z/qJPcNCQVVMWL6aBM40aRb+FiMajHouGe/q26zuDdtgsuqoN84/9phs7495Oa8ROxu6eZPuvU+OJNCgf/NMVkURbOpXtbe+yXjECgYBZwhiAQGqW5BOO0IgsR7MdZm0VrQApJTpiKUmb9rnSSocztVDiAjysJZYVHHBlC1IlC591wQ2BMV2rUoM5OdVN3r4OM0NmIQ754VdS3ROH801lZIFtgnV6kH/m3lkGPo1DYA4A9hbHy8emFnCpA+qxA4I6s2zKzF8Qrf6ozYt/+wKBgChyjrr6nTSsIViG+pluXMjNdrsY7cKH7YaF9i50uA5SbwZGwj/JM0ZgppTQCJHBqhdwfXDmLxeH1BI/g+pQ8tICef3L/zGUVNPAr1Yy0mgWfSOrzE2J388iuserz9Zm2p1EWB8tZ0krlO6Fqp5dbs73k7fCZT92iZo0uum+rggBAoGBAIO74oQpY3lY6OgvjZJAHcr9RiGPB7qQ+zmROxCqzFXdtNZ5sHb1Jdg+IsBcI7ZadFT28x/ENNpfO78mC+1j56mmN9BUpORBIcCaEzp2KYgP7e4FnWTluMvFV/2yBMlCfUEYHPfPK1TfD05oBJY4lTMD2qsT5RhS1ipFqagZgQ1X"; +// public String appPrivateKey ="MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCOoaURczOevheVDeG9tmdCZ+PSInYwCY+ak3Jcy5CG4wrbHHy30ejMv5jNnyX/iSyC3MYIfHQ2I5uxh7pO3QSiB8GpeM9Oy3bUCOtPVM8o7FJ+/pa6o0s25jmj+Lx6/Q4sAaDxhQPY8vUZdIitQyqNS4IVhDuIWAS1w3ngZWHhcbtCPrCk3wIJPCYbhHi8eTgCXTJ0TbJ/QR+Pj0SAiL46rwSRc9KB1alxL5RoTK4VWvdHlqbfowen6teQ6bo2W5UkUEP8kew6MH9a3QQZ3YdLKFHufSGMWk19Wh26CEsvnf/Mb6dnv6YzbmzZLtCHiKKvFN516peW8Exd9/EtJCu1AgMBAAECggEAPghReVhoL/cu3HXQIylsmXYDoIW6b0QJP8o25+Lk9bVTKF6oY24Y2MvPkkZQSWYIhNWuD0zJYi50bW7BecEoXawP7zwKtZNKGAfVB4i0HHFDo9XoCj4w3SyeDxGEL91VR5Bhxgj61mU8chi7xNc8b31SkzcSiUb2rXLZ091kB58/xtzQk2nZAhKhwms7gbX7qxm8+TWLRK9g4vWmsGVqbgFNj/sutqBURSeU/pHmW9PMqgcWvx6AwWWi+VgBUSoIgMnX7r7s6ZlgeDIgioii3JdCcr1nq39sVYPwFpwIe7a1DOCB58B+v2un1XoThC7ZNEcbwP5oYpUdFhSoxClrNQKBgQDJc/A1nz2yYiLUHUMJn2DhyTrOnCSclmowuzJVkyuo5gQPfZ3dTmjdPkM/fg09J3+zi3UCSwZd6dGMzJVHWooMniSiomZ/rY+o9SVTAJOjxt29N8jFN92b3fB43hbAWyBOuy4NMZMcr+4cADuqRHz2pKAeaALiZdpTbrTCzVXtqwKBgQC1QGS0sv8VU9fyBCyrYU4kQh8Fcvz0g6ObgUnHZi6UIL+Cy0/3JIGeIyvB/n47RF1wLUz4wykwW70e1qlMz7w21HM+DB8fVuzbO7SmQI3gDo024kQkWWGUhe3/w9ztzLF9ezleSN6wnrPeDbeMV+pURbsxIXA9xg7DYpZZ76ksHwKBgHQnF/oi7bTbpo88q/lxXq/wkaqtFuL+Sw378UKsD4Fb1j2ERTBj1Ey0aJvENyfqjVPddcKztWESvtL65pt0laI+0IrBLm4xiWJ2rmWUMIw+zn0aG/Wyh2Emb0+RZfbU0+TxQdUzn0nsGlMkw0IiKRcgxn2hpQAaj+6JJ0omkIPvAoGAZ2eGTKT17Cf6QgNprJiF6R+j7QruD11uoJABFHZSSoXoXGk7hMbZ/+sW0sUrJQrat93QVPeabxFXctmKmtzFBw7rdFGcC9gepvCIHnUju9jxbYdm0sn/ZqmF323RhAVMmUcMsqKmEWNpQFzZA4NAl7V0lxH5o/RzhbqgBk05WYcCgYEAny/umQs7+NYgwL/FztMJVljfQsGY81mhgrQyPhmg/7NiWmLodJtwQgSj3UitDVtUGhZRnuidO8P1XW0sUyDwc8xMLb+0qVxX4gMpM4J1B0UaIp+oPg7hCXeFGxkWQl8bPY0RFa3GOfT2/D63NpXqYw8Fe1lZWoIMz+PBdx0YN90="; + //应用证书 + private String appCertPath; + //支付宝证书 + private String alipayCertPath; + //支付宝根证书 + private String alipayRootCertPath; + //回调地址 + private String notify; + //字符集 签名 + private String gateway = "https://openapi-sandbox.dl.alipaydev.com/gateway.do"; + + + // 公私钥模式 + @Bean + public AlipayClient alipayClient() throws AlipayApiException { + return new DefaultAlipayClient(this.gateway, this.appId, this.appPrivateKey, AlipayConstants.FORMAT_JSON, AlipayConstants.CHARSET_UTF8, this.PublicKey, AlipayConstants.SIGN_TYPE_RSA2); + } + +} + diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/config/CorsConfig.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/config/CorsConfig.java new file mode 100644 index 0000000..133f072 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/config/CorsConfig.java @@ -0,0 +1,25 @@ +package com.cj.jiaqingjiayi.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.CorsRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +/** + * 全局跨域配置 + */ +@Configuration +public class CorsConfig implements WebMvcConfigurer { + + @Override + public void addCorsMappings(CorsRegistry registry) { + // 覆盖所有请求 + registry.addMapping("/**") + // 允许发送 Cookie + .allowCredentials(true) + // 放行哪些域名(必须用 patterns,否则 * 会和 allowCredentials 冲突) + .allowedOriginPatterns("*") + .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") + .allowedHeaders("*") + .exposedHeaders("*"); + } +} \ No newline at end of file diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/config/JsonConfig.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/config/JsonConfig.java new file mode 100644 index 0000000..284e0cd --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/config/JsonConfig.java @@ -0,0 +1,28 @@ +package com.cj.jiaqingjiayi.config; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.module.SimpleModule; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import org.springframework.boot.jackson.JsonComponent; +import org.springframework.context.annotation.Bean; +import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder; + +/** + * Spring MVC Json 配置 + */ +@JsonComponent +public class JsonConfig { + + /** + * 添加 Long 转 json 精度丢失的配置 + */ + @Bean + public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder) { + ObjectMapper objectMapper = builder.createXmlMapper(false).build(); + SimpleModule module = new SimpleModule(); + module.addSerializer(Long.class, ToStringSerializer.instance); + module.addSerializer(Long.TYPE, ToStringSerializer.instance); + objectMapper.registerModule(module); + return objectMapper; + } +} \ No newline at end of file diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/config/Knife4jConfig.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/config/Knife4jConfig.java new file mode 100644 index 0000000..4a54913 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/config/Knife4jConfig.java @@ -0,0 +1,53 @@ +package com.cj.jiaqingjiayi.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.service.ApiInfo; +import springfox.documentation.service.Contact; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +/** + * @author bsz + * Knife4j 接口文档配置 + * + * http://localhost:8080/api/doc.html 接口文档地址 + */ +@Configuration +@EnableSwagger2 +@Profile({"dev", "test"}) //版本控制访问 +public class Knife4jConfig { + @Bean + public Docket defaultApi2() { + return new Docket(DocumentationType.SWAGGER_2) + .apiInfo(apiInfo()) + .select() + // 指定 Controller 扫描包路径 + .apis(RequestHandlerSelectors.basePackage("com.cj.jiaqingjiayi.controller")) + .paths(PathSelectors.any()) + .build(); + } + /** + * 自定义接口文档信息 + * @return 接口文档 + */ + private ApiInfo apiInfo() { + return new ApiInfoBuilder() + // 接口文档的标题 + .title("甲情甲意") + // 接口文档的描述信息 + .description("甲情甲意的接口文档,进行测试") + // 提供服务的是谁?可以填写你自己的地址因为是你自己提供的服务 + .termsOfServiceUrl("https://www.bilibili.com/video/BV1W2421w78j/?spm_id_from=333.337.search-card.all.click") + .contact(new Contact("gaomu", "https://account.bilibili.com/account/face/upload?spm_id_from=333.999.0.0", "1929829500@qq.com")) + // 版本 + .version("1.0") + // 构建 + .build(); + } +} \ No newline at end of file diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/config/MyBatisPlusConfig.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/config/MyBatisPlusConfig.java new file mode 100644 index 0000000..4bf82c6 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/config/MyBatisPlusConfig.java @@ -0,0 +1,26 @@ +package com.cj.jiaqingjiayi.config; + +import com.baomidou.mybatisplus.annotation.DbType; +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; +import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * MyBatis Plus 配置 + */ +@Configuration +public class MyBatisPlusConfig { + + /** + * 拦截器配置 + */ + @Bean + public MybatisPlusInterceptor mybatisPlusInterceptor() { + MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); + // 分页插件 + interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); + return interceptor; + } +} \ No newline at end of file diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/contant/CommonConstant.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/contant/CommonConstant.java new file mode 100644 index 0000000..0ea1647 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/contant/CommonConstant.java @@ -0,0 +1,18 @@ +package com.cj.jiaqingjiayi.contant; + +/** + * 通用常量 + */ +public interface CommonConstant { + + /** + * 升序 + */ + String SORT_ORDER_ASC = "ascend"; + + /** + * 降序 + */ + String SORT_ORDER_DESC = " descend"; + +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/contant/FileConstant.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/contant/FileConstant.java new file mode 100644 index 0000000..c09bf9c --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/contant/FileConstant.java @@ -0,0 +1,24 @@ +package com.cj.jiaqingjiayi.contant; + +/** + * 文件常量 + */ +@SuppressWarnings("all") +public interface FileConstant { + + /** + * COS 访问地址 + */ + String COS_HOST = "xxxxxxxxxxxxxxxxxxxx"; + + /** + * 服务器访问地址 + */ + String SERVER_HOST = "39.101.78.35:9494"; + + /** + * 服务器上传路径 + */ + String SERVER_UPLOAD_DIR = "/www/wwwroot/images"; + +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/contant/RedisKeyConstant.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/contant/RedisKeyConstant.java new file mode 100644 index 0000000..4070e7d --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/contant/RedisKeyConstant.java @@ -0,0 +1,16 @@ +package com.cj.jiaqingjiayi.contant; + +public interface RedisKeyConstant { + // IP 和 sessionId 的 key 前缀 + String USER_EXTRA_INFO = "user:extra:"; + // Spring Session 中 session 信息的后缀(sessionId 前面) + String SESSION_KEY_POSTFIX = "sessions"; + // session 中保存的属性的前缀 + String SESSION_ATTRIBUTE_PREFIX = "sessionAttr"; + /** + * 用户登录态键 + */ + String USER_LOGIN_STATE = "jiaqingjiayi_user"; + String IP = "ip"; + String SESSION_ID = "sessionId"; +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/contant/RegexConstant.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/contant/RegexConstant.java new file mode 100644 index 0000000..ec56906 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/contant/RegexConstant.java @@ -0,0 +1,32 @@ +package com.cj.jiaqingjiayi.contant; + +/** + * 正则表达式常量 + */ +@SuppressWarnings("all") +public interface RegexConstant { + /** + * 手机号正则 + */ + String PHONE_REGEX = "^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\\d{8}$"; + + /** + * 邮箱正则 + */ + String EMAIL_REGEX = "^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$"; + + /** + * 18位身份证号正则 + */ + String ID_CARD_REGEX = "^[1-9]\\d{5}(18|19|([23]\\d))\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9xX]$"; + + /** + * 验证码正则, 6位数字或字母 + */ + String VERIFY_CODE_REGEX = "^[a-zA-Z\\d]{6}$"; + + /** + * 密码正则。4~32位的字母、数字、下划线 + */ + String PASSWORD_REGEX = "^\\w{4,32}$"; +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/contant/UserConstant.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/contant/UserConstant.java new file mode 100644 index 0000000..2ec3c4f --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/contant/UserConstant.java @@ -0,0 +1,36 @@ +package com.cj.jiaqingjiayi.contant; + +/** + * 用户常量 + */ +public interface UserConstant { + + /** + * 用户登录态键 + */ + String USER_LOGIN_STATE = "userLoginState"; + + /** + * 盐值 + */ + String USER_SALT = "yctf"; + + // ------- 权限 -------- + + /** + * 默认权限 + */ + int DEFAULT_ROLE = 0; + + + /** + * 管理员权限 + */ + int ADMIN_ROLE = 1; + + /** + * 商家权限 + */ + int BUSINESS_ROLE = 2; + +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/AlipayController.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/AlipayController.java new file mode 100644 index 0000000..b5079c7 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/AlipayController.java @@ -0,0 +1,372 @@ +package com.cj.jiaqingjiayi.controller; + + +import com.alipay.api.*; +import com.alipay.api.domain.AlipayTradeCloseModel; +import com.alipay.api.domain.AlipayTradeCreateModel; +import com.alipay.api.domain.AlipayTradeQueryModel; +import com.alipay.api.domain.AlipayTradeRefundModel; +import com.alipay.api.internal.util.AlipaySignature; +import com.alipay.api.request.*; +import com.alipay.api.response.*; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.cj.jiaqingjiayi.common.BaseResponse; +import com.cj.jiaqingjiayi.common.ErrorCode; +import com.cj.jiaqingjiayi.common.ResultUtils; +import com.cj.jiaqingjiayi.config.AlipayClients; +import com.cj.jiaqingjiayi.contant.RedisKeyConstant; +import com.cj.jiaqingjiayi.contant.UserConstant; +import com.cj.jiaqingjiayi.exception.BusinessException; +import com.cj.jiaqingjiayi.exception.ThrowUtils; +import com.cj.jiaqingjiayi.mapper.UserMapper; +import com.cj.jiaqingjiayi.model.domain.Manicurist; +import com.cj.jiaqingjiayi.model.domain.OrderItems; +import com.cj.jiaqingjiayi.model.domain.Orders; +import com.cj.jiaqingjiayi.model.domain.User; +import com.cj.jiaqingjiayi.model.request.AlipayTradeCreateRequest1; +import com.cj.jiaqingjiayi.model.request.CreateAlipayRequest; +import com.cj.jiaqingjiayi.model.request.UserDTO; +import com.cj.jiaqingjiayi.model.vo.UserVO; +import com.cj.jiaqingjiayi.service.*; +import com.cj.jiaqingjiayi.utils.RandomNumberGenerator; +import com.cj.jiaqingjiayi.utils.UniqueNumberGenerator; +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.PrintWriter; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.*; + +import static com.cj.jiaqingjiayi.contant.UserConstant.USER_LOGIN_STATE; + +@Slf4j +@Api(tags = "支付宝接口") +@RestController +@RequestMapping("/Alipay") +public class AlipayController { + + + @Value("${alipay.appId}") + public String appId; + + @Value("${alipay.appPrivateKey}") + public String appPrivateKey; + + @Value("${alipay.alipayPublicKey}") + public String PublicKey; + + @Resource + private UserMapper userMapper; + + @Resource + private UserService userService; + + @Resource + private OrdersService ordersService; + + @Resource + private AliPayService aliPayService; + + @Resource + private OrderItemsService orderItemsService; + + @Resource + private ManicuristService manicuristService; + + @Resource + private RandomNumberGenerator randomNumberGenerator; + + private static String authToken; + + public static final String NOURL = "http://39.101.78.35:1107/api/Alipay/notifyUrl"; + + + /** + * 解析code获取open_id和token + * @return aaa + * @throws AlipayApiException 支付宝api异常 + */ + @GetMapping("/parseCode") + public BaseResponse login(@RequestParam String authcode, @RequestParam long severId, HttpServletRequest req) throws AlipayApiException { + AlipayConfig alipayConfig = choiceServer(severId); + AlipayClient alipayClient = new DefaultAlipayClient(alipayConfig); + AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest(); + request.setCode(authcode); + request.setGrantType("authorization_code"); + AlipaySystemOauthTokenResponse response = alipayClient.execute(request); +// System.out.println(response.getBody());//打印所有响应 + authToken = response.getAccessToken(); + if (!response.isSuccess()) { + return ResultUtils.error(ErrorCode.PARAMS_ERROR); + } + AlipayUserInfoShareRequest request1 = new AlipayUserInfoShareRequest(); + AlipayUserInfoShareResponse response1 = alipayClient.execute(request1, authToken); + + User oid = userMapper.selectOne(new LambdaQueryWrapper().eq(User::getOpenId, response.getOpenId())); + UserVO userVO = new UserVO(); + UserDTO userDTO = new UserDTO(); + if (response1.isSuccess()) { + if (oid == null) { + User user = new User(); + user.setOpenId(response.getOpenId()); + user.setUsername(StringUtils.isAnyBlank(response1.getNickName()) ? "随机名字" + randomNumberGenerator.generateRandomNumber() : response1.getNickName()); + user.setUserPassword("123456"); + user.setUserAccount("用户" + randomNumberGenerator.generateRandomNumber()); + user.setAvatarUrl(StringUtils.isAnyBlank(response1.getAvatar()) ? "https://tfs.alipayobjects.com/images/partner/ATuihpR50zu7UAAAAAAAAAAAAADtl2AA" : response1.getAvatar()); + userMapper.insert(user); + req.getSession().setAttribute(RedisKeyConstant.USER_LOGIN_STATE,user); + BeanUtils.copyProperties(user, userVO); + userVO.setSessionId(req.getSession().getId()); + userDTO.setUserVO(userVO); + return ResultUtils.success(userDTO,"注册成功"); + } + //如果用户权限为美甲师则返回美甲师内容 + if (oid.getUserRole().equals(3)){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("userId", oid.getId()); + Manicurist manicurist = manicuristService.getOne(queryWrapper); + userDTO.setManicurist(manicurist); + } + req.getSession().setAttribute(RedisKeyConstant.USER_LOGIN_STATE, oid); + BeanUtils.copyProperties(oid, userVO); + userVO.setSessionId(req.getSession().getId()); + userDTO.setUserVO(userVO); + return ResultUtils.success(userDTO,"登录成功"); + } + //如果用户权限为美甲师则返回美甲师内容 + if (oid.getUserRole().equals(3)){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("userId", oid.getId()); + Manicurist manicurist = manicuristService.getOne(queryWrapper); + userDTO.setManicurist(manicurist); + } + req.getSession().setAttribute(RedisKeyConstant.USER_LOGIN_STATE,oid); + BeanUtils.copyProperties(oid, userVO); + userVO.setSessionId(req.getSession().getId()); + userDTO.setUserVO(userVO); + return ResultUtils.success(userDTO,"登录成功"); + } + + + /** + * 创建支付 + */ + @Transactional(rollbackFor = Exception.class) + @PostMapping("/create/alipay") + public BaseResponse AlipayTradeCreate(@RequestBody AlipayTradeCreateRequest1 pay, HttpServletRequest request) throws AlipayApiException { + +// User loginUser = userService.getLoginUser(request); +// String miniOpenId = loginUser.getOpenId(); + + // 初始化SDK + AlipayClient alipayClient = new DefaultAlipayClient(getAlipayConfig()); + User byId = userService.getById(pay.getUserId()); + ThrowUtils.throwIf(byId.getOpenId() == null, ErrorCode.NOT_FOUND_ERROR, "不是小程序用户"); + + Orders order = ordersService.getById(pay.getId()); + + ThrowUtils.throwIf(order == null, ErrorCode.NOT_FOUND_ERROR, "订单不存在"); + ThrowUtils.throwIf(order.getPayMethod() != 0, ErrorCode.OPERATION_ERROR, "订单状态错误"); + + if (!byId.getId().equals(order.getUserId())) { + throw new BusinessException(ErrorCode.NO_AUTH, "你不是该订单用户!"); + } + + String tradeNo = aliPayService.createPayment(String.valueOf(order.getId()), byId.getOpenId(), order.getTotalPrice(), alipayClient); + log.info("tradeNo:" + tradeNo); + return ResultUtils.success(tradeNo); + } + + @GetMapping("/test/close") + public String closeOrder(String out_trade_no,Long orderId) throws AlipayApiException { + + log.info("out_trade_no:" + out_trade_no); + AlipayClients clients = new AlipayClients(); + AlipayTradeCloseRequest request = new AlipayTradeCloseRequest(); + AlipayTradeCloseModel model = new AlipayTradeCloseModel(); + + //model.setTradeNo(); 这是订单项 + //订单项可能会有多个支付单 + model.setTradeNo(out_trade_no); + + request.setBizModel(model); +// request.setNotifyUrl(NOURL + "/close"); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(Orders::getId, orderId); + Orders orders = ordersService.getOne(queryWrapper); + log.info("orders:" + orders); + ThrowUtils.throwIf(!orders.getPaymentStatus().equals(0),ErrorCode.SYSTEM_ERROR,"当前订单已支付或已退款"); + orders.setPaymentStatus(3); + boolean update = ordersService.updateById(orders); + ThrowUtils.throwIf(!update, ErrorCode.OPERATION_ERROR, "修改订单状态失败"); + AlipayTradeCloseResponse response = clients.alipayClient().execute(request); + + //这里应该写进日志 + log.info("订单已取消"); + + return response.getBody(); + } + + @GetMapping("/test/refund") + public String test_refund(String out_trade_no) throws AlipayApiException { + AlipayClients clients = new AlipayClients(); + AlipayTradeRefundRequest request = new AlipayTradeRefundRequest(); + AlipayTradeRefundModel model = new AlipayTradeRefundModel(); + + + QueryWrapper ordersQueryWrapper = new QueryWrapper<>(); + ordersQueryWrapper.eq("orderNumber", out_trade_no); + Orders orders = ordersService.getOne(ordersQueryWrapper); + model.setOutTradeNo(out_trade_no); + model.setRefundAmount(String.valueOf(orders.getTotalPrice())); + //退款请求单号 要求唯一 需改 + String number = UniqueNumberGenerator.generateNumber(); + model.setOutRequestNo(number); + log.info("outRequestNo:" + number); + request.setBizModel(model); + ThrowUtils.throwIf(!orders.getPaymentStatus().equals(1),ErrorCode.SYSTEM_ERROR,"当前订单未支付"); + orders.setPaymentStatus(2); + boolean update = ordersService.updateById(orders); + ThrowUtils.throwIf(!update, ErrorCode.OPERATION_ERROR, "修改订单状态失败"); + log.info("paymentStatus:" + orders.getPaymentStatus()); + AlipayTradeRefundResponse response = clients.alipayClient().execute(request); + log.info("退款成功"); + return response.getBody(); + } + + @GetMapping("/test/query") + public String test_query (String orderNo) throws AlipayApiException { + AlipayClients clients = new AlipayClients(); + AlipayTradeQueryRequest request = new AlipayTradeQueryRequest(); + AlipayTradeQueryModel model = new AlipayTradeQueryModel(); + + model.setOutTradeNo(orderNo); + + request.setBizModel(model); + request.setNotifyUrl(NOURL); + + AlipayTradeQueryResponse response = clients.alipayClient().execute(request); + return response.getBody(); + } + + + @PostMapping("/notifyUrl") + @Transactional(rollbackFor = Exception.class) + public synchronized void aliPayNotifyUrl(HttpServletRequest request, HttpServletResponse response) { + + System.out.println(log); + + // 将 HttpServletRequest 的参数转换为 Map + Map params = new HashMap<>();Map requestParams = request.getParameterMap(); + for(String name : requestParams.keySet()) { + params.put(name, request.getParameter(name)); + } + //修改订单信息 + String out_trade_no = params.get("out_trade_no"); + + log.info( "23333333333333" + out_trade_no); + + QueryWrapper ordersQueryWrapper = new QueryWrapper<>(); + ordersQueryWrapper.eq("orderNumber", out_trade_no); + Orders orders = ordersService.getOne(ordersQueryWrapper); + orders.setPaymentStatus(1); + Date date = new Date(); + orders.setUpdateTime(date); + boolean update = ordersService.updateById(orders); + log.info("orders:" + orders); + ThrowUtils.throwIf(!update, ErrorCode.OPERATION_ERROR, "修改订单状态失败"); + //TODO 商家通知 +// websocketService.sendOrderMessage(orders); + + String resultInfo = "buyer_id=208****24&total_amount=0.01&body=***试&trade_no=20190329**941025940236¬ify_time=2019-03-29 19:42:04&subject=**电脑网站支付&sign_type=RSA2&charset=UTF-8&auth_app_id=201****222¬ify_type=trade_status_sync&invoice_amount=0.01&out_trade_no=20190329ygyg45484544100003&trade_status=TRADE_SUCCESS&gmt_payment=2019-03-29 19:42:03&version=1.0&point_amount=0.00&sign=LDDUIGQmc+1qNtk3oyoAKVeMUKTngdX3ZjVeZOK0EjiPDJ/+Nk+0WSqcE6J7/5xb96Z/vP0yY3pVhZUiFVJ1G45/ys/HAleHh+EERZ1lkCkule1sSyaGFTKQGKx4uHpTyqIgRB1bouf19RPbSx1EkA0VkCarSy9G/OEG5Qmg8UdL2dRulMhlbOHS7tdMJJycDA8vOspOUMeQmk/H6IK9R2Kou5hN2T3KR1GWLYFK+z1jeZhQB3q52lZynO0OFjSzU4aQUBMW5QskQppBYd/ghtY/2YP+2H6YVGNgVmaheZMQ3PVTBALEV+8rZa91salH9DkKN2UCYGvNSNDT1VGCTQ==&gmt_create=2019-03-29 19:42:00&buyer_pay_amount=0.01&receipt_amount=0.01&fund_bill_list=[{\"amount\":\"0.01\",\"fundChannel\":\"PCREDIT\"}]&seller_id=208****0&app_id=2014100***22¬ify_id=20190329002221942040**8"; + //编码格式 + String charset="utf-8"; + //签名方式 + String sign_type="RSA2"; + //对待签名字符串数据通过&进行拆分 + String [] temp = resultInfo.split("&"); + LinkedHashMap map = new LinkedHashMap(); + //把拆分数据放在map集合内 + for (int i = 0; i < temp.length; i++) { + String[] arr = temp[i].split("=", 2); //通过"="号分割成2个数据 + String[] tempAagin = new String[arr.length]; //再开辟一个数组用来接收分割后的数据 + for (int j = 0; j < arr.length; j++) { + tempAagin[j] = arr[j]; + } + map.put(tempAagin[0], tempAagin[1]); + } + System.out.println(map); + + + try { + //验签方法 + boolean signVerified = AlipaySignature.rsaCheckV1(params,PublicKey,charset,sign_type); + response.setContentType("text/html;charset=utf-8"); + PrintWriter writer = response.getWriter(); + if (signVerified && "TRADE_SUCCESS".equals(params.get("trade_status"))) { + // 业务处理 + writer.println("success"); + } else { + writer.println("fail"); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + private AlipayConfig choiceServer(long serverId) { + String testPrivateKey = "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC7rWG3si4XQlDEHjSe/ot98aCn/R25fCSiCBIUTTA6Wy3Gs5lk1XERw1N6loq8u9zR8vTQwzLnFmepwJx2sMLHGfJT3F6Y7Lx0z7gLYksMe+LIAfc+KYsfs0IyDvoKvwsm7XAzl8AYiqk1/p2dxc5etdvkLO7bXquyCDOclR3lL9NBgbJ6tH0fvcVd3RPmZk5Tb2hfn5JK1s/tAanbvFtKhLNCwX8qZp25+AfPakx2tRZkSgjh+fjA6ZElUnwq9ftHy16vfSmnX3C3LuDSKduo3EBkDhpGjTD5+zOs8tKGofW2gn347ouzXWnTz71ftzVwAgFUcOh4Ib0GVC9SKZBrAgMBAAECggEBAJEK8R8/tEFDfhnjYjWScYm3KLtLciJ8n+8dn6NS+DfRabJL8PutvUHGHAj8uWIdKg6T3sJMaVWQyjK16fYMq6umENLg17cGFquMMSeTIn8Wa3C5nDPNdXjdWAZJ7tJJTTwbeoBVAh+1YgqZqYRacCBgGf3hAARHyRfBIOodkEojc4oyzlbUGOz+Ee6/b+A9BZd84YWkbg/KlD9mlqSAYSGCKBM9nd8l1YIvr/4OgBn679x+A8pB8i5kGxP4fertZl2mkt75LigJ3Ab/vwoHDj1AuPjlUIce+PcTdxHqgNtIJSDWbop70BGPp0XQE9BRefPIPQfS9+2LO+eFeo4ESeECgYEA+DzH4cLoMYG9Hfq9IIbQyq6VJeip4/Lbv8h4RevGPHqyFIKB3fX7bHRlBB8hCnyX+zj4T/K50LEoZmo4tpVCv7YmRkyGRoF0QwaMgbo3bkaaCZeQnuPeZFaqyhszcJL1nhLghSNKcU75orStqf4H2mLL67VH1PkjelAWMrY1JVsCgYEAwYvMNzPkLG+p9MqGlkxgu2gQ6F4SdQp35XLHjygyTMG+qt/cPAbviyOILUhTLHP1s++kgw7z/qJPcNCQVVMWL6aBM40aRb+FiMajHouGe/q26zuDdtgsuqoN84/9phs7495Oa8ROxu6eZPuvU+OJNCgf/NMVkURbOpXtbe+yXjECgYBZwhiAQGqW5BOO0IgsR7MdZm0VrQApJTpiKUmb9rnSSocztVDiAjysJZYVHHBlC1IlC591wQ2BMV2rUoM5OdVN3r4OM0NmIQ754VdS3ROH801lZIFtgnV6kH/m3lkGPo1DYA4A9hbHy8emFnCpA+qxA4I6s2zKzF8Qrf6ozYt/+wKBgChyjrr6nTSsIViG+pluXMjNdrsY7cKH7YaF9i50uA5SbwZGwj/JM0ZgppTQCJHBqhdwfXDmLxeH1BI/g+pQ8tICef3L/zGUVNPAr1Yy0mgWfSOrzE2J388iuserz9Zm2p1EWB8tZ0krlO6Fqp5dbs73k7fCZT92iZo0uum+rggBAoGBAIO74oQpY3lY6OgvjZJAHcr9RiGPB7qQ+zmROxCqzFXdtNZ5sHb1Jdg+IsBcI7ZadFT28x/ENNpfO78mC+1j56mmN9BUpORBIcCaEzp2KYgP7e4FnWTluMvFV/2yBMlCfUEYHPfPK1TfD05oBJY4lTMD2qsT5RhS1ipFqagZgQ1X"; + String testAlipayPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAo9gmNSz8l/eH4Uem6hqNoK1t91Gu5evoooJKzZraxPYW9AyJwH8Mxbag3qVaRSalz+OIHHVqszUxah98DbvaxJbpY9tB2zaLSvxhXM4U5iGFR3TqdqqvxsXsfiu+a0JHauuGYtuuNmUwR7ZFVub8Ma/YBCHfELPvl1TcX8MgMlHqw3NQqcEXZZO8Ziyxel7CqgHDx5dFn1meHDFWTajbWN/0TWSzvYAOKrlrS3LjjwbDzTr3BQzH84TLbLkBaMVGEUkJZUrVVkiN3XEVBpBUs5Cv5INN4L+UJ4kDy1u6LICzUVSSrQmHItuA+YiFHZ/WVJ18jISn0W7YZVyRqTo2sQIDAQAB"; + String privateKey = appPrivateKey; + String alipayPublicKey = PublicKey; + AlipayConfig alipayConfig = new AlipayConfig(); + if (serverId == 0) { + alipayConfig.setServerUrl("https://openapi.alipay.com/gateway.do"); + alipayConfig.setAppId(appId); + alipayConfig.setPrivateKey(privateKey); + alipayConfig.setFormat("json"); + alipayConfig.setAlipayPublicKey(alipayPublicKey); + alipayConfig.setCharset("utf-8"); + alipayConfig.setSignType("RSA2"); + } + else if (serverId == 1) { + alipayConfig.setServerUrl("https://openapi-sandbox.dl.alipaydev.com/gateway.do"); + alipayConfig.setAppId(appId); + alipayConfig.setPrivateKey(testPrivateKey); + alipayConfig.setAlipayPublicKey(testAlipayPublicKey); + alipayConfig.setConnectTimeout(15000); + alipayConfig.setFormat("json"); + alipayConfig.setCharset("utf-8"); + alipayConfig.setSignType("RSA2"); +// log.info("应用网关:" + "https://openapi-sandbox.dl.alipaydev.com/gateway.do"); + } + else { + throw new BusinessException(ErrorCode.PARAMS_ERROR,"网关选择错误"); + } + return alipayConfig; + } + + private static AlipayConfig getAlipayConfig() { + String privateKey = "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC7rWG3si4XQlDEHjSe/ot98aCn/R25fCSiCBIUTTA6Wy3Gs5lk1XERw1N6loq8u9zR8vTQwzLnFmepwJx2sMLHGfJT3F6Y7Lx0z7gLYksMe+LIAfc+KYsfs0IyDvoKvwsm7XAzl8AYiqk1/p2dxc5etdvkLO7bXquyCDOclR3lL9NBgbJ6tH0fvcVd3RPmZk5Tb2hfn5JK1s/tAanbvFtKhLNCwX8qZp25+AfPakx2tRZkSgjh+fjA6ZElUnwq9ftHy16vfSmnX3C3LuDSKduo3EBkDhpGjTD5+zOs8tKGofW2gn347ouzXWnTz71ftzVwAgFUcOh4Ib0GVC9SKZBrAgMBAAECggEBAJEK8R8/tEFDfhnjYjWScYm3KLtLciJ8n+8dn6NS+DfRabJL8PutvUHGHAj8uWIdKg6T3sJMaVWQyjK16fYMq6umENLg17cGFquMMSeTIn8Wa3C5nDPNdXjdWAZJ7tJJTTwbeoBVAh+1YgqZqYRacCBgGf3hAARHyRfBIOodkEojc4oyzlbUGOz+Ee6/b+A9BZd84YWkbg/KlD9mlqSAYSGCKBM9nd8l1YIvr/4OgBn679x+A8pB8i5kGxP4fertZl2mkt75LigJ3Ab/vwoHDj1AuPjlUIce+PcTdxHqgNtIJSDWbop70BGPp0XQE9BRefPIPQfS9+2LO+eFeo4ESeECgYEA+DzH4cLoMYG9Hfq9IIbQyq6VJeip4/Lbv8h4RevGPHqyFIKB3fX7bHRlBB8hCnyX+zj4T/K50LEoZmo4tpVCv7YmRkyGRoF0QwaMgbo3bkaaCZeQnuPeZFaqyhszcJL1nhLghSNKcU75orStqf4H2mLL67VH1PkjelAWMrY1JVsCgYEAwYvMNzPkLG+p9MqGlkxgu2gQ6F4SdQp35XLHjygyTMG+qt/cPAbviyOILUhTLHP1s++kgw7z/qJPcNCQVVMWL6aBM40aRb+FiMajHouGe/q26zuDdtgsuqoN84/9phs7495Oa8ROxu6eZPuvU+OJNCgf/NMVkURbOpXtbe+yXjECgYBZwhiAQGqW5BOO0IgsR7MdZm0VrQApJTpiKUmb9rnSSocztVDiAjysJZYVHHBlC1IlC591wQ2BMV2rUoM5OdVN3r4OM0NmIQ754VdS3ROH801lZIFtgnV6kH/m3lkGPo1DYA4A9hbHy8emFnCpA+qxA4I6s2zKzF8Qrf6ozYt/+wKBgChyjrr6nTSsIViG+pluXMjNdrsY7cKH7YaF9i50uA5SbwZGwj/JM0ZgppTQCJHBqhdwfXDmLxeH1BI/g+pQ8tICef3L/zGUVNPAr1Yy0mgWfSOrzE2J388iuserz9Zm2p1EWB8tZ0krlO6Fqp5dbs73k7fCZT92iZo0uum+rggBAoGBAIO74oQpY3lY6OgvjZJAHcr9RiGPB7qQ+zmROxCqzFXdtNZ5sHb1Jdg+IsBcI7ZadFT28x/ENNpfO78mC+1j56mmN9BUpORBIcCaEzp2KYgP7e4FnWTluMvFV/2yBMlCfUEYHPfPK1TfD05oBJY4lTMD2qsT5RhS1ipFqagZgQ1X"; + String alipayPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAo9gmNSz8l/eH4Uem6hqNoK1t91Gu5evoooJKzZraxPYW9AyJwH8Mxbag3qVaRSalz+OIHHVqszUxah98DbvaxJbpY9tB2zaLSvxhXM4U5iGFR3TqdqqvxsXsfiu+a0JHauuGYtuuNmUwR7ZFVub8Ma/YBCHfELPvl1TcX8MgMlHqw3NQqcEXZZO8Ziyxel7CqgHDx5dFn1meHDFWTajbWN/0TWSzvYAOKrlrS3LjjwbDzTr3BQzH84TLbLkBaMVGEUkJZUrVVkiN3XEVBpBUs5Cv5INN4L+UJ4kDy1u6LICzUVSSrQmHItuA+YiFHZ/WVJ18jISn0W7YZVyRqTo2sQIDAQAB"; + AlipayConfig alipayConfig = new AlipayConfig(); + alipayConfig.setServerUrl("https://openapi-sandbox.dl.alipaydev.com/gateway.do"); + alipayConfig.setAppId("2021004144652242"); + alipayConfig.setPrivateKey(privateKey); + alipayConfig.setFormat("json"); + alipayConfig.setAlipayPublicKey(alipayPublicKey); + alipayConfig.setCharset("UTF-8"); + alipayConfig.setSignType("RSA2"); + return alipayConfig; + } +} \ No newline at end of file diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/AppointmentsController.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/AppointmentsController.java new file mode 100644 index 0000000..11b1860 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/AppointmentsController.java @@ -0,0 +1,139 @@ +package com.cj.jiaqingjiayi.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.cj.jiaqingjiayi.common.BaseResponse; +import com.cj.jiaqingjiayi.common.ErrorCode; +import com.cj.jiaqingjiayi.common.ResultUtils; +import com.cj.jiaqingjiayi.exception.ThrowUtils; +import com.cj.jiaqingjiayi.model.CommonRequest; +import com.cj.jiaqingjiayi.model.domain.Appointments; +import com.cj.jiaqingjiayi.model.domain.User; +import com.cj.jiaqingjiayi.model.request.appointments.AppointmentsAddRequest; +import com.cj.jiaqingjiayi.model.request.appointments.AppointmentsUpdateRequest; +import com.cj.jiaqingjiayi.model.vo.AppointmentsVO; +import com.cj.jiaqingjiayi.service.AppointmentsService; +import com.cj.jiaqingjiayi.service.UserService; +import com.cj.jiaqingjiayi.utils.BeanCopyUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; +import java.util.Date; +import java.util.List; + +@Slf4j +@Api(tags = "预约接口") +@RestController +@RequestMapping("/appointments") +public class AppointmentsController { + + @Resource + private UserService userService; + + @Resource + private AppointmentsService appointmentsService; + + @ApiOperation(value = "添加预约") + @PostMapping("/add") + public BaseResponse addAppointments(@RequestBody AppointmentsAddRequest appointmentsAddRequest, HttpServletRequest request){ + //校验是否登录 +// User loginUser = userService.getLoginUser(request); + ThrowUtils.throwIf(appointmentsAddRequest== null, ErrorCode.NULL_ERROR); + + String appointmentTime = appointmentsAddRequest.getAppointmentTime(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM-dd HH:mm"); + // 提取当前年份 + int year = LocalDate.now().getYear(); + // 解析成 LocalDate 和 LocalTime + LocalDate date = LocalDate.parse(year + "-" + appointmentTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")); + LocalTime time = LocalTime.parse(appointmentTime, formatter); + // 合并为 LocalDateTime + LocalDateTime dateTime = LocalDateTime.of(date, time); + // LocalDateTime 转为 Date + Date date1 = Date.from(dateTime.atZone(ZoneId.systemDefault()).toInstant()); + + + Appointments appointments = new Appointments(); + appointments.setAppointmentTime(date1); + //不传入默认用户昵称 +// if (appointmentsAddRequest.getUsername() == null) { +// appointmentsAddRequest.setUsername(loginUser.getUsername()); +// } + BeanUtils.copyProperties(appointmentsAddRequest, appointments); + appointments.setUserId(appointments.getUserId()); + //校验是否输入必要的数据 + appointmentsService.valid(appointments); + + //返回预约号 + Long id = appointmentsService.addAppointments(appointments); + ThrowUtils.throwIf(id < 0, ErrorCode.PARAMS_ERROR, "预约失败"); + + return ResultUtils.success(id, "预约成功"); + } + + @ApiOperation(value = "查询我的预约") + @PostMapping("/query") + public BaseResponse> queryMyAppointments(@RequestBody CommonRequest commonRequest, HttpServletRequest request){ +// User loginUser = userService.getLoginUser(request); + Long userid = commonRequest.getId(); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("userId", userid); + List appointmentsList = appointmentsService.list(wrapper); + + List appointmentsVOList = appointmentsService.queryAppointmentsVO(appointmentsList); + return ResultUtils.success(appointmentsVOList); + } + + @PostMapping("/remove") + @ApiOperation(value = "取消预约") + public BaseResponse removeAppointments(@RequestBody CommonRequest commonRequest) { + + boolean flag = appointmentsService.removeId(commonRequest.getId()); + + return ResultUtils.success(flag); + } + + @PostMapping("/update") + @ApiOperation(value = "修改预约信息") + public BaseResponse updateAppointments(@RequestBody AppointmentsUpdateRequest updateRequest) { + ThrowUtils.throwIf(updateRequest == null, ErrorCode.NULL_ERROR); + + + Long id = updateRequest.getId(); + Appointments appointments = appointmentsService.getById(id); + BeanCopyUtils.copyPropertiesIgnoreEmpty(updateRequest,appointments); + boolean flag = appointmentsService.updateById(appointments); + + return ResultUtils.success(flag); + } + + @GetMapping("/list/select") + @ApiOperation(value = "查询当前店铺预约信息") + public BaseResponse> queryBuAppointments(@RequestParam Long id) { + ThrowUtils.throwIf(id < 0, ErrorCode.NULL_ERROR); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("businessId", id); + List appointmentsList = appointmentsService.list(queryWrapper); + + return ResultUtils.success(appointmentsList); + } + + @ApiOperation(value = "根据Id查询预约信息") + @GetMapping("/getAppointments") + public BaseResponse queryByIdAppointments(@RequestParam Long appointmentsId){ + ThrowUtils.throwIf(appointmentsId < 0, ErrorCode.PARAMS_ERROR); + Appointments appointments = appointmentsService.getById(appointmentsId); + return ResultUtils.success(appointments); + } +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/BusinessController.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/BusinessController.java new file mode 100644 index 0000000..5efb2a8 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/BusinessController.java @@ -0,0 +1,244 @@ +package com.cj.jiaqingjiayi.controller; + + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.cj.jiaqingjiayi.common.BaseResponse; +import com.cj.jiaqingjiayi.common.ErrorCode; +import com.cj.jiaqingjiayi.common.ResultUtils; +import com.cj.jiaqingjiayi.exception.BusinessException; +import com.cj.jiaqingjiayi.exception.ThrowUtils; +import com.cj.jiaqingjiayi.model.domain.Business; +import com.cj.jiaqingjiayi.model.domain.BusinessAuth; +import com.cj.jiaqingjiayi.model.domain.User; +import com.cj.jiaqingjiayi.model.request.BusinessDTO; +import com.cj.jiaqingjiayi.model.request.business.BusinessAddRequest; +import com.cj.jiaqingjiayi.model.request.business.BusinessQueryRequest; +import com.cj.jiaqingjiayi.model.request.business.BusinessUpdateRequest; +import com.cj.jiaqingjiayi.model.vo.BusinessAdminVO; +import com.cj.jiaqingjiayi.model.vo.BusinessVO; +import com.cj.jiaqingjiayi.model.vo.CartDTO; +import com.cj.jiaqingjiayi.model.vo.CartVO; +import com.cj.jiaqingjiayi.service.BusinessAuthService; +import com.cj.jiaqingjiayi.service.BusinessService; +import com.cj.jiaqingjiayi.service.UserService; +import com.cj.jiaqingjiayi.utils.BeanCopyUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.util.DigestUtils; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +import java.util.ArrayList; +import java.util.List; + +import static com.cj.jiaqingjiayi.contant.UserConstant.USER_SALT; + +/** + * 商家接口 + */ +@Slf4j +@Api(tags = "商家接口") +@RestController +@RequestMapping("/business") +public class BusinessController { + + @Resource + private UserService userService; + + @Resource + private BusinessService businessService; + + @Resource + private BusinessAuthService businessAuthService; + + @ApiOperation(value = "添加商家") + @PostMapping("/add") + public BaseResponse addBusiness(@RequestBody BusinessAddRequest businessAddRequest) { + ThrowUtils.throwIf(businessAddRequest == null, ErrorCode.PARAMS_ERROR); + + User user = new User(); + BeanUtils.copyProperties(businessAddRequest, user); + Business business = new Business(); + BeanUtils.copyProperties(businessAddRequest, business); + BusinessAuth businessAuth = new BusinessAuth(); + BeanUtils.copyProperties(businessAddRequest, businessAuth); + + //对每个应该校验的业务进行校验 + businessService.validUser(user, true); + businessService.validBusiness(business, true); + businessService.validBusinessAuth(businessAuth, true); + + //加密 + String encryptPassword = DigestUtils.md5DigestAsHex((USER_SALT + user.getUserPassword()).getBytes()); + user.setUserPassword(encryptPassword); + + business.setState(0); + + //更改用户权限为商家 + user.setUserRole(2); + + //往user表中补充商家信息 + user.setUsername(business.getBusinessName()); +// user.setAvatarUrl(business.getBusinessAvatar()); + user.setPhone(business.getBusinessPhone()); + + //插入到表中 + businessService.addBusiness(user, business, businessAuth); + + return ResultUtils.success(business.getId(),"添加商家成功"); + + } + + /** + * 更新商家 + */ + @ApiOperation(value = "更新商家") + @PostMapping("/update") + public BaseResponse updateBusiness (@RequestBody BusinessUpdateRequest businessUpdateRequest, HttpServletRequest request) { + //判断是否为管理员 +// userService.isAdmin(request); + + if (businessUpdateRequest == null || businessUpdateRequest.getId() == null) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "传入参数为空"); + } + + Business business = new Business(); + + BeanCopyUtils.copyPropertiesIgnoreEmpty(businessUpdateRequest, business); + //更新不添加 只需要判断修改符不符合逻辑 + businessService.validBusiness(business, false); + + boolean updateById = businessService.updateBusiness(business); + + ThrowUtils.throwIf(!updateById, ErrorCode.OPERATION_ERROR); + + return ResultUtils.success(true); + } + + /** + * 根据id查询 + */ + @ApiOperation(value = "管理员根据id查询商家") + @GetMapping("/getById") + public BaseResponse getBusinessById(@RequestParam Long id, HttpServletRequest request) { + //判断是否为管理员 +// userService.isAdmin(request); + ThrowUtils.throwIf(id < 0, ErrorCode.NULL_ERROR); + + //获取商家视图 + Business business = businessService.getById(id); + ThrowUtils.throwIf(business == null , ErrorCode.PARAMS_ERROR, "id不符合规范"); + BusinessAdminVO businessAdminVO = businessAuthService.getBusinessAdminVO(business); + + return ResultUtils.success(businessAdminVO); + } + + /** + * 根据id查询 + * @param id + * @return + */ + @ApiOperation(value = "根据id查询商家") + @GetMapping("/userGetById") + public BaseResponse userGetBusinessById(@RequestParam Long id, HttpServletRequest request) { + + ThrowUtils.throwIf(id < 0, ErrorCode.NULL_ERROR); + + //获取商家视图 + Business business = businessService.getById(id); + ThrowUtils.throwIf(business == null , ErrorCode.PARAMS_ERROR, "id不符合规范"); + BusinessVO businessVO = businessService.getBusinessVO(business); + + return ResultUtils.success(businessVO); + } + + /** + * 查询所有商家 + * @return + */ + @ApiOperation(value = "查询所有商家") + @PostMapping("/list") + public BaseResponse> listBusinessAll(){ + List businessList = businessService.list(); + + List businessDTOS = new ArrayList<>(); + for (Business business : businessList) { + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("businessId", business.getId()); + BusinessAuth one = businessAuthService.getOne(queryWrapper); + BusinessDTO businessDTO = new BusinessDTO(); + businessDTO.setBusinessAuth(one); + businessDTO.setBusiness(business); + businessDTOS.add(businessDTO); + } + return new BaseResponse<>(0,businessDTOS,"查询成功"); + } + + /** + * 查询所有商家 + * @return + */ + @ApiOperation(value = "查询所有商家等级版") + @PostMapping("/listLv") + public BaseResponse> listBusinessAllLv(){ + List businessList = businessService.findAllBusiness(); + return new BaseResponse<>(0,businessList,"查询成功"); + } + + + /** + * 分页查询 + * @param businessQueryRequest + * @return + */ + @ApiOperation(value = "分页查询商家") + @PostMapping("/list/page") + //@AuthCheck(mustRole = 1) + public BaseResponse> listBusinessByPage (@RequestBody BusinessQueryRequest businessQueryRequest) { + long current = businessQueryRequest.getCurrent(); + long size = businessQueryRequest.getPageSize(); + Page businessPage = businessService.page(new Page<>(current, size), + businessService.getQueryWrapper(businessQueryRequest)); + return ResultUtils.success(businessPage); + } + + /** + * 分页获取商家列表(用户视图) + */ + @ApiOperation(value = "用户分页获取商家") + @PostMapping("/list/page/vo") + public BaseResponse> listBusinessVOByPage(@RequestBody BusinessQueryRequest businessQueryRequest) { + long current = businessQueryRequest.getCurrent(); + long size = businessQueryRequest.getPageSize(); + + ThrowUtils.throwIf(size > 20, ErrorCode.PARAMS_ERROR); + + QueryWrapper queryWrapper = businessService.getQueryWrapper(businessQueryRequest); + queryWrapper.eq("state", 1); // 只显示正常营业商家 + + Page businessPage = businessService.page(new Page<>(current, size), queryWrapper); + Page businessVOPage = new Page<>(current, size, businessPage.getTotal()); + + List businessVOList = businessService.getBusinessVO(businessPage.getRecords()); + businessVOPage.setRecords(businessVOList); + + return ResultUtils.success(businessVOPage); + } + + + @ApiOperation(value = "获取当前登录商家") + @GetMapping("/current") + public BaseResponse getLoginBusiness(@RequestParam Long businessId, HttpServletRequest request){ + //获取登录态 +// Business business = businessService.getLoginBusiness(request); + Business business = businessService.getById(businessId); + return ResultUtils.success(businessService.getBusinessVO(business)); + } + + +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/CartController.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/CartController.java new file mode 100644 index 0000000..ed571cb --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/CartController.java @@ -0,0 +1,252 @@ +package com.cj.jiaqingjiayi.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; + +import com.cj.jiaqingjiayi.common.BaseResponse; +import com.cj.jiaqingjiayi.common.ErrorCode; +import com.cj.jiaqingjiayi.common.ResultUtils; +import com.cj.jiaqingjiayi.exception.BusinessException; +import com.cj.jiaqingjiayi.exception.ThrowUtils; +import com.cj.jiaqingjiayi.model.CommonRequest; +import com.cj.jiaqingjiayi.model.domain.*; +import com.cj.jiaqingjiayi.model.request.cart.CartAddRequest; +import com.cj.jiaqingjiayi.model.request.cart.CartDeleteRequest; +import com.cj.jiaqingjiayi.model.request.cart.CartQueryRequest; +import com.cj.jiaqingjiayi.model.request.cart.CartUpdateRequest; +import com.cj.jiaqingjiayi.model.vo.*; +import com.cj.jiaqingjiayi.service.BusinessService; +import com.cj.jiaqingjiayi.service.CartService; +import com.cj.jiaqingjiayi.service.CommoditiesService; +import com.cj.jiaqingjiayi.service.UserService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +@RestController +@Slf4j +@Api(tags = "购物车接口") +@RequestMapping("/cart") +public class CartController { + + @Resource + private CartService cartService; + + @Resource + private UserService userService; + + @Resource + private BusinessService businessService; + + @Resource + private CommoditiesService commoditiesService; + + /** + * 添加进购物车 + * @param cartAddRequest 添加请求 + * @param request 网络请求 + * @return 购物车id + */ + @ApiOperation(value = "添加购物车") + @PostMapping("/add") + @Transactional(rollbackFor = Exception.class) + public BaseResponse addCart (@RequestBody CartAddRequest cartAddRequest, HttpServletRequest request) { + if (cartAddRequest == null) { + throw new BusinessException(ErrorCode.PARAMS_ERROR); + } + + //校验 + cartService.validCart(cartAddRequest); + //添加商品到购物车 + Cart cart = cartService.addCart(cartAddRequest, request); + CartVO cartVO = new CartVO(); + BeanUtils.copyProperties(cart, cartVO); + Long commoditiesId = cartVO.getCommoditiesId(); + Commodities commodities = commoditiesService.getById(commoditiesId); + List commoditiesList = new ArrayList<>(); + CommoditiesVO commoditiesVO = commoditiesService.getCommoditiesVO(commodities); + commoditiesList.add(commoditiesVO); + cartVO.setCommoditiesVO(commoditiesList); + return ResultUtils.success(cartVO); + } + + /** + * 更新购物车 + * @param cartUpdateRequest 更新请求 + * @param request 网络请求 + * @return 是否成功 + */ +// @ApiOperation(value = "更新购物车") +// @PostMapping("/update") +// @Transactional(rollbackFor = Exception.class) +// public BaseResponse updateCart (@RequestBody CartUpdateRequest cartUpdateRequest, HttpServletRequest request){ +// if (cartUpdateRequest == null) { +// throw new BusinessException(ErrorCode.PARAMS_ERROR); +// } +// //校验 +// CartAddRequest cartAddRequest = new CartAddRequest(); +// BeanUtils.copyProperties(cartUpdateRequest,cartAddRequest); +// cartService.validCart(cartAddRequest); +// +// Boolean cart = cartService.updateCart(cartUpdateRequest, request); +// return ResultUtils.success(cart); +// } + + /** + * 删除购物车 + * @param cartDeleteRequest 删除请求 + * @param request 网络请求 + * @return 是否成功 + */ + @ApiOperation(value = "删除购物车") + @PostMapping("/delete") + @Transactional(rollbackFor = Exception.class) + public BaseResponse deleteCart (@RequestBody CartDeleteRequest cartDeleteRequest, HttpServletRequest request) { + if (cartDeleteRequest == null) { + throw new BusinessException(ErrorCode.PARAMS_ERROR); + } + + Boolean cart = cartService.deleteCart(cartDeleteRequest, request); + ThrowUtils.throwIf(!cart, ErrorCode.OPERATION_ERROR); + return ResultUtils.success(true); + } + + /** + * 根据商户id获取购物车脱敏列表 + * @param cartQueryRequest 商户id + * @param request 网络请求 + * @return 脱敏列表 + */ + @ApiOperation(value = "根据商户id获取购物车脱敏列表") + @PostMapping("/selectByBusinessId") + public BaseResponse selectByBusinessId(@RequestBody CartQueryRequest cartQueryRequest, HttpServletRequest request) { + if (cartQueryRequest == null) { + throw new BusinessException(ErrorCode.PARAMS_ERROR); + } + + Long businessId = cartQueryRequest.getId(); + Long userId = cartQueryRequest.getUserId(); + + // 查询购物车列表 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(Cart::getBusinessId, businessId); + List cartList = cartService.list(queryWrapper); + + // 查询对应的 Business 信息 + Business business = businessService.getById(businessId); + if (business == null) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "商家不存在"); + } + + // 转换 Cart 数据为 CartVO + List cartVOList = this.getCartVOList(cartList); + + // 封装返回对象 + CartResponseVO responseVO = new CartResponseVO(); + responseVO.setBusiness(business); + responseVO.setCartList(cartVOList); + + return ResultUtils.success(responseVO); + } + + + /** + * 根据用户查找购物车列表 + * @param request 网络请求 + * @return 脱敏列表 + */ + @ApiOperation(value = "根据用户查找购物车列表") + @PostMapping("/selectByUserId") + public BaseResponse> selectByUserId (@RequestBody CommonRequest commonRequest, HttpServletRequest request) { +// User loginUser = userService.getLoginUser(request); +// Long userId = loginUser.getId(); + Long userId = commonRequest.getId(); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(Cart::getUserId, userId); + + List cartDTOList = new ArrayList<>(); + + List cartList = cartService.list(wrapper); + List cartVOList = this.getCartVOList(cartList); + + + for (CartVO cartVO : cartVOList) { + Business business = businessService.getById(cartVO.getBusinessId()); + CartDTO cartDTO = new CartDTO(); + cartDTO.setCartVO(cartVO); + cartDTO.setBusiness(business); + cartDTOList.add(cartDTO); + } + + return ResultUtils.success(cartDTOList); + } + + /** + * 清空商家内的购物车 + * @param cartQueryRequest 商家id + * @param request 网络请求 + * @return 是否成功 + */ + @ApiOperation(value = "清空商家内的购物车") + @PostMapping("/empty/business") + public BaseResponse emptyBusinessCart(@RequestBody CartQueryRequest cartQueryRequest, HttpServletRequest request) { + if (cartQueryRequest == null) { + throw new BusinessException(ErrorCode.PARAMS_ERROR); + } + + Long businessId = cartQueryRequest.getId(); +// User loginUser = userService.getLoginUser(request); +// Long userId = loginUser.getId(); + Long userId = cartQueryRequest.getUserId(); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(Cart::getBusinessId, businessId); + queryWrapper.eq(Cart::getUserId, userId); + boolean remove = cartService.remove(queryWrapper); + ThrowUtils.throwIf(!remove, ErrorCode.OPERATION_ERROR); + + return ResultUtils.success(true); + } + + /** + * 清空用户购物车 + * @param request 网络请求 + * @return 是否成功 + */ + @ApiOperation(value = "清空用户购物车") + @PostMapping("/empty/user") + public BaseResponse emptyUserCart(@RequestBody CommonRequest commonRequest, HttpServletRequest request) { +// User loginUser = userService.getLoginUser(request); +// Long userId = loginUser.getId(); + Long userId = commonRequest.getId(); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(Cart::getUserId, userId); + boolean remove = cartService.remove(queryWrapper); + ThrowUtils.throwIf(!remove, ErrorCode.OPERATION_ERROR); + + return ResultUtils.success(true); + } + + private List getCartVOList(List cartList) { + if (CollectionUtils.isEmpty(cartList)) { + return new ArrayList<>(); + } + + return cartList.stream().map(item ->{ + CartVO cartVO = new CartVO(); + BeanUtils.copyProperties(item, cartVO); + return cartVO; + }).collect(Collectors.toList()); + } +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/CollectController.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/CollectController.java new file mode 100644 index 0000000..b84a690 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/CollectController.java @@ -0,0 +1,107 @@ +package com.cj.jiaqingjiayi.controller; + +import com.alipay.api.domain.CPBillModifySet; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; + +import com.cj.jiaqingjiayi.common.BaseResponse; +import com.cj.jiaqingjiayi.common.ErrorCode; +import com.cj.jiaqingjiayi.common.ResultUtils; +import com.cj.jiaqingjiayi.exception.BusinessException; +import com.cj.jiaqingjiayi.exception.ThrowUtils; +import com.cj.jiaqingjiayi.model.CommonRequest; +import com.cj.jiaqingjiayi.model.domain.Collect; +import com.cj.jiaqingjiayi.model.domain.User; +import com.cj.jiaqingjiayi.model.request.collect.CollectAddRequest; +import com.cj.jiaqingjiayi.service.CollectService; +import com.cj.jiaqingjiayi.service.UserService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +@RestController +@Slf4j +@RequestMapping("/collect") +@Api(tags = "收藏接口") +public class CollectController { + + @Resource + private CollectService collectService; + + @Resource + private UserService userService; + + /** + * 添加收藏 + */ + @PostMapping("/add") + @ApiOperation(value = "添加收藏") + public BaseResponse addCollect(@RequestBody CollectAddRequest collectAddRequest, HttpServletRequest request) { + if (collectAddRequest == null) { + throw new BusinessException(ErrorCode.PARAMS_ERROR); + } + collectService.validCollect(collectAddRequest); + Collect collect = new Collect(); + collect.setUserId(collectAddRequest.getUserId()); + BeanUtils.copyProperties(collectAddRequest, collect); + Boolean result = collectService.addCollect(collect, request); + ThrowUtils.throwIf(!result, ErrorCode.SYSTEM_ERROR); + return ResultUtils.success(true); + } + + /** + * 删除一条收藏 + */ + @PostMapping("/delete") + @ApiOperation(value = "删除一条收藏") + public BaseResponse deleteCollect(@RequestBody CommonRequest commonRequest) { + if (commonRequest == null) { + throw new BusinessException(ErrorCode.PARAMS_ERROR); + } + Long id = commonRequest.getId(); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(Collect::getId, id); + boolean remove = collectService.remove(wrapper); + ThrowUtils.throwIf(!remove, ErrorCode.SYSTEM_ERROR); + return ResultUtils.success(true); + } + + /** + * 删除所有收藏 + */ + @PostMapping("/delete/all") + @ApiOperation(value = "删除所有收藏") + public BaseResponse deleteCollectAll(@RequestBody CommonRequest commonRequest,HttpServletRequest request) { +// User loginUser = userService.getLoginUser(request); +// Long loginUserId = loginUser.getId(); + Long userId = commonRequest.getId(); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(Collect::getUserId, userId); + boolean remove = collectService.remove(wrapper); + ThrowUtils.throwIf(!remove, ErrorCode.SYSTEM_ERROR); + return ResultUtils.success(true); + } + + /** + * 查询所有收藏 + */ + @PostMapping("/list") + @ApiOperation(value = "查询所有收藏") + public BaseResponse> listCollect(@RequestBody CommonRequest commonRequest, HttpServletRequest request) { +// User loginUser = userService.getLoginUser(request); +// Long loginUserId = loginUser.getId(); + Long userId = commonRequest.getId(); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(Collect::getUserId, userId); + List list = collectService.list(wrapper); + return ResultUtils.success(list); + } +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/CommoditiesController.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/CommoditiesController.java new file mode 100644 index 0000000..d29525b --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/CommoditiesController.java @@ -0,0 +1,222 @@ +package com.cj.jiaqingjiayi.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.cj.jiaqingjiayi.common.BaseResponse; +import com.cj.jiaqingjiayi.common.ErrorCode; +import com.cj.jiaqingjiayi.common.ResultUtils; +import com.cj.jiaqingjiayi.exception.BusinessException; +import com.cj.jiaqingjiayi.exception.ThrowUtils; +import com.cj.jiaqingjiayi.model.domain.Business; +import com.cj.jiaqingjiayi.model.domain.Commodities; +import com.cj.jiaqingjiayi.model.domain.User; +import com.cj.jiaqingjiayi.model.request.Commodities.CommoditiesAddRequest; +import com.cj.jiaqingjiayi.model.request.Commodities.CommoditiesDeleteRequest; +import com.cj.jiaqingjiayi.model.request.Commodities.CommoditiesQueryRequest; +import com.cj.jiaqingjiayi.model.request.Commodities.CommoditiesUpdateRequest; +import com.cj.jiaqingjiayi.model.vo.BusinessVO; +import com.cj.jiaqingjiayi.model.vo.CommoditiesVO; +import com.cj.jiaqingjiayi.model.vo.LoginUserVO; +import com.cj.jiaqingjiayi.service.BusinessService; +import com.cj.jiaqingjiayi.service.CommoditiesService; +import com.cj.jiaqingjiayi.service.SpecificationsCommoditiesService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +@Slf4j +@Api(tags = "商品接口") +@RestController +@RequestMapping("/commodities") +public class CommoditiesController { + + @Resource + private CommoditiesService commoditiesService; + + @Resource + private BusinessService businessService; + + @Resource + private SpecificationsCommoditiesService specificationsCommoditiesService; + + + /** + *添加商品 + * @param commoditiesAddRequest 添加商品请求体 + * @return 是否成功 + */ + @ApiOperation(value = "添加商品") + @PostMapping("/add") + @Transactional(rollbackFor = Exception.class) + public BaseResponse addCommodities (@RequestBody CommoditiesAddRequest commoditiesAddRequest, HttpServletRequest request) { + if (commoditiesAddRequest == null) { + throw new BusinessException(ErrorCode.PARAMS_ERROR); + } + Commodities commodities = new Commodities(); + BeanUtils.copyProperties(commoditiesAddRequest,commodities); + //校验 + commoditiesService.validCommodities(commodities,false); + //添加商家id +// Business loginBusiness = businessService.getLoginBusiness(request); + commodities.setBusinessId(commoditiesAddRequest.getBusinessId()); + //保存商品信息 + Long commoditiesId = commoditiesService.addCommodities(commodities); + //中间表中添加数据 + List specificationsIds = commoditiesAddRequest.getSpecificationsIds(); + specificationsCommoditiesService.add(commoditiesId,specificationsIds); + return ResultUtils.success(true); + } + + /** + * 删除商品 + * @param commoditiesDeleteRequest 删除请求 + * @param request 网络请求 + * @return 是否成功 + */ + @ApiOperation(value = "删除商品") + @PostMapping("/delete") + @Transactional(rollbackFor = Exception.class) + public BaseResponse deleteCommodities(@RequestBody CommoditiesDeleteRequest commoditiesDeleteRequest, HttpServletRequest request) { + if (commoditiesDeleteRequest == null) { + throw new BusinessException(ErrorCode.PARAMS_ERROR); + } + Long commoditiesId = commoditiesDeleteRequest.getId(); + //获取商家id +// Business business = businessService.getLoginBusiness(request); + Long businessId = commoditiesDeleteRequest.getBusinessId(); + //校验商品是不是当前登录商家的 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(Commodities::getId, commoditiesId); + wrapper.eq(Commodities::getBusinessId, businessId); + Commodities commodities = commoditiesService.getOne(wrapper); + ThrowUtils.throwIf(commodities == null, ErrorCode.OPERATION_ERROR, "当前商家无权限删除该商品"); + //删除商品 + boolean commoditiesRemove = commoditiesService.removeById(commoditiesId); + ThrowUtils.throwIf(!commoditiesRemove, ErrorCode.OPERATION_ERROR); + //删除中间表信息 + specificationsCommoditiesService.deleteByCommoditiesId(commoditiesId); + return ResultUtils.success(true); + } + + /** + * 更新商品 + * @param commoditiesUpdateRequest 更新请求 + * @param request 网络请求 + * @return 是否成功 + */ + @ApiOperation(value = "更新商品") + @PostMapping("/update") + @Transactional(rollbackFor = Exception.class) + public BaseResponse updateCommodities (@RequestBody CommoditiesUpdateRequest commoditiesUpdateRequest, HttpServletRequest request) { + if (commoditiesUpdateRequest == null) { + throw new BusinessException(ErrorCode.PARAMS_ERROR); + } + Commodities commodities = new Commodities(); + BeanUtils.copyProperties(commoditiesUpdateRequest, commodities); + //校验 + commoditiesService.validCommodities(commodities, true); + //添加商家id +// Business loginBusiness = businessService.getLoginBusiness(request); + Long businessId = commoditiesUpdateRequest.getBusinessId(); + commodities.setBusinessId(businessId); + //更新商品 + Boolean updateDishes = commoditiesService.updateCommodities(commodities); + ThrowUtils.throwIf(!updateDishes, ErrorCode.OPERATION_ERROR); + //更新中间表的信息 + Long commoditiesId = commodities.getId(); + List specificationsIds = commoditiesUpdateRequest.getSpecificationsIds(); + return ResultUtils.success(specificationsCommoditiesService.updateByCommoditiesId(commoditiesId, specificationsIds)); + } + + /** + * 更新商品状态 + * @param commoditiesUpdateRequest 商品请求体 + * @param request 前端请求 + * @return 是否成功 + */ + @ApiOperation(value = "更新商品状态") + @PostMapping("/update/status") + public BaseResponse updateCommoditiesStatus (@RequestBody CommoditiesUpdateRequest commoditiesUpdateRequest, HttpServletRequest request) { + Long id = commoditiesUpdateRequest.getId(); + String status = commoditiesUpdateRequest.getStatus(); + if (id == null || StringUtils.isBlank(status)) { + throw new BusinessException(ErrorCode.NOT_FOUND_ERROR); + } + + //获取商家id +// Business loginBusiness = businessService.getLoginBusiness(request); + Long businessId = commoditiesUpdateRequest.getBusinessId(); + //更新状态 + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("id",id); + updateWrapper.eq("businessId",businessId); + updateWrapper.set("status",status); + return ResultUtils.success(commoditiesService.update(updateWrapper)); + } + + /** + *获取商品列表 + * @param commoditiesQueryRequest 查询请求体 + * @return 分页列表 + */ + @ApiOperation(value = "获取商品列表") + @PostMapping("/list/page/commodities") + public BaseResponse> commoditiesPage(@RequestBody CommoditiesQueryRequest commoditiesQueryRequest) { + long current = commoditiesQueryRequest.getCurrent(); + long pageSize = commoditiesQueryRequest.getPageSize(); + //获取查询条件 + QueryWrapper wrapper = commoditiesService.getWrapper(commoditiesQueryRequest); + //获取商家有的商品 + Page commoditiesPage = commoditiesService.page(new Page<>(current, pageSize), wrapper); + return ResultUtils.success(commoditiesPage); + } + +// /** +// *获取商品脱敏列表 +// * @param commoditiesQueryRequest 查询请求体 +// * @return 分页列表 +// */ +// @ApiOperation(value = "获取商品脱敏列表") +// @PostMapping("/list/page/commoditiesVO") +// public BaseResponse> commoditiesVOPage(@RequestBody CommoditiesQueryRequest commoditiesQueryRequest) { +// long current = commoditiesQueryRequest.getCurrent(); +// long pageSize = commoditiesQueryRequest.getPageSize(); +// //获取查询条件 +// QueryWrapper wrapper = commoditiesService.getWrapper(commoditiesQueryRequest); +// //获取商家有的商品 +// Page commoditiesPage = commoditiesService.page(new Page<>(current, pageSize), wrapper); +// //获取脱敏信息列表 +// List commoditiesList = commoditiesPage.getRecords(); +// long total = commoditiesPage.getTotal(); +// List commoditiesVOList = commoditiesService.getCommoditiesVOList(commoditiesList); +// Page commoditiesVOPage = new Page<>(current, pageSize, total); +// commoditiesVOPage.setRecords(commoditiesVOList); +// return ResultUtils.success(commoditiesVOPage); +// } + + /** + *根据id获取商品 + */ + @ApiOperation(value = "根据商品id获取商品信息") + @GetMapping("/getById/commodities") + public BaseResponse getCommoditiesById(@RequestParam Long id) { + ThrowUtils.throwIf(id < 0, ErrorCode.NULL_ERROR); + Commodities byId = commoditiesService.getById(id); + CommoditiesVO commoditiesVO = commoditiesService.getCommoditiesVO(byId); + ThrowUtils.throwIf(commoditiesVO == null, ErrorCode.NULL_ERROR, "不存在该商品"); + return ResultUtils.success(commoditiesVO); + } + + + +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/FileController.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/FileController.java new file mode 100644 index 0000000..8d14ad7 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/FileController.java @@ -0,0 +1,131 @@ +package com.cj.jiaqingjiayi.controller; + +import cn.hutool.core.io.FileUtil; + +import com.cj.jiaqingjiayi.common.BaseResponse; +import com.cj.jiaqingjiayi.common.ErrorCode; +import com.cj.jiaqingjiayi.common.ResultUtils; +import com.cj.jiaqingjiayi.contant.FileConstant; +import com.cj.jiaqingjiayi.exception.BusinessException; +import com.cj.jiaqingjiayi.model.domain.User; +import com.cj.jiaqingjiayi.model.request.UploadFileRequest; +import com.cj.jiaqingjiayi.service.UserService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.RandomStringUtils; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestPart; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; +import com.cj.jiaqingjiayi.model.enums.FileUploadBizEnum; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.io.File; +import java.io.IOException; +import java.util.Arrays; + +/** + * 文件上传 + */ +@Slf4j +@RestController +@RequestMapping("/file") +public class FileController { + + @Resource + private UserService userService; + @PostMapping("/upload/server/not_login") + public BaseResponse uploadServerNotLogin (@RequestPart("file")MultipartFile multipartFile, UploadFileRequest uploadFileRequest) { + //获取业务名称 + String biz = uploadFileRequest.getBiz(); + FileUploadBizEnum fileUploadBizEnum = FileUploadBizEnum.getEnumByValue(biz); + if (fileUploadBizEnum == null) { + throw new BusinessException(ErrorCode.PARAMS_ERROR); + } + //校验文件 + validfile(multipartFile, fileUploadBizEnum); + //文件目录:根据业务,用户来划分 + String uuid = RandomStringUtils.randomAlphabetic(8); + String fileName = uuid + "-" + multipartFile.getOriginalFilename(); + String filePath = String.format("/%s/%s/%s", fileUploadBizEnum.getValue(), 0, fileName); + try { + //判断目录是否存在 + File file = new File(FileConstant.SERVER_UPLOAD_DIR, filePath); + log.info("filepath:{}",file); + if (!file.exists()) { + boolean mkdirs = file.mkdirs(); + if (!mkdirs) { + throw new BusinessException(ErrorCode.SYSTEM_ERROR,"创建目录失败"); + } + } + multipartFile.transferTo(new File(FileConstant.SERVER_UPLOAD_DIR, filePath)); + // 返回可访问地址 + return ResultUtils.success(FileConstant.SERVER_HOST + filePath); + } + catch (IOException e) { + log.error("file upload error, filePath = " + filePath, e); + throw new BusinessException(ErrorCode.SYSTEM_ERROR,"上传失败"); + } + + } + + @PostMapping("/upload/server") + public BaseResponse uploadServerFile(@RequestPart("file") MultipartFile multipartFile, UploadFileRequest uploadFileRequest, HttpServletRequest request) { + // 获取业务名称 + String biz = uploadFileRequest.getBiz(); + FileUploadBizEnum fileUploadBizEnum = FileUploadBizEnum.getEnumByValue(biz); + if (fileUploadBizEnum == null) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "业务名称错误"); + } + //校验文件 + validfile(multipartFile,fileUploadBizEnum); + //校验用户是否登录 + User loginUser = userService.getLoginUser(request); + if (loginUser == null) { + throw new BusinessException(ErrorCode.NOT_FOUND_ERROR, "未登录"); + } + // 文件目录:根据业务、用户来划分 + String uuid = RandomStringUtils.randomAlphabetic(8); + String fileName = uuid + "-" + multipartFile.getOriginalFilename(); + String filePath = String.format("/%s/%s/%s", fileUploadBizEnum.getValue(), loginUser.getId(), fileName); + try { + File file = new File(FileConstant.SERVER_UPLOAD_DIR, filePath); + if (!file.exists()) { + //创建目录 + boolean mkdirs = file.mkdirs(); + + if (!mkdirs) { + throw new BusinessException(ErrorCode.SYSTEM_ERROR, "创建目录失败"); + } + } + multipartFile.transferTo(new File(FileConstant.SERVER_UPLOAD_DIR,filePath)); + //返回可访问的地址 + return ResultUtils.success(FileConstant.SERVER_HOST + filePath); + } + catch (IOException e) { + log.error("file upload error, filepath = " + filePath, e); + throw new BusinessException(ErrorCode.SYSTEM_ERROR, "上传失败"); + } + } + + /** + * 校验文件 + */ + private void validfile(MultipartFile multipartFile, FileUploadBizEnum fileUploadBizEnum) { + //文件大小 + long fileSize = multipartFile.getSize(); + //文件后缀 + String fileSuffix = FileUtil.getSuffix(multipartFile.getOriginalFilename()); + final long TWO_M = 2*1024*1024L; + if (FileUploadBizEnum.USER_AVATAR.equals(fileUploadBizEnum)) { + if (fileSize > TWO_M) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "文件大小不能超过 2M"); + } + if (!Arrays.asList("jpeg", "jpg", "svg", "png", "webp").contains(fileSuffix)) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "文件类型错误"); + } + } + } + + +} \ No newline at end of file diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/GroupController.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/GroupController.java new file mode 100644 index 0000000..1da464c --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/GroupController.java @@ -0,0 +1,82 @@ +package com.cj.jiaqingjiayi.controller; + + +import com.cj.jiaqingjiayi.common.BaseResponse; +import com.cj.jiaqingjiayi.common.ErrorCode; +import com.cj.jiaqingjiayi.common.ResultUtils; +import com.cj.jiaqingjiayi.exception.ThrowUtils; +import com.cj.jiaqingjiayi.model.domain.CommoditiesGroup; +import com.cj.jiaqingjiayi.model.request.group.AddGroupRequest; +import com.cj.jiaqingjiayi.model.vo.GroupVO; +import com.cj.jiaqingjiayi.service.CommoditiesGroupService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +@Slf4j +@Api(tags = "分组接口") +@RestController +@RequestMapping("/group") +public class GroupController { + + @Resource + private CommoditiesGroupService groupService; + + /** + *添加分组 + */ + @ApiOperation(value = "添加分组") + @PostMapping("/add") + public BaseResponse addGroup(@RequestBody AddGroupRequest addGroupRequest){ + ThrowUtils.throwIf(addGroupRequest == null, ErrorCode.NULL_ERROR); + + CommoditiesGroup group = new CommoditiesGroup(); + BeanUtils.copyProperties(addGroupRequest, group); + + groupService.validGroup(group, true); + + Long added = groupService.addGroup(group); + ThrowUtils.throwIf(added < 0, ErrorCode.OPERATION_ERROR); + return ResultUtils.success(added); + } + + /** + *删除分组 + */ + @ApiOperation(value = "删除分组") + @GetMapping("/delete") + public BaseResponse deleteGroup(@RequestParam String groupName){ + ThrowUtils.throwIf(groupName == null, ErrorCode.NULL_ERROR); + + + CommoditiesGroup group = new CommoditiesGroup(); + group.setGroupName(groupName); + + groupService.validGroup(group, false); + + Boolean deleted = groupService.deleteGroup(groupName); + ThrowUtils.throwIf(!deleted, ErrorCode.OPERATION_ERROR); + return ResultUtils.success(true); + } + + /** + *查询分组视图 + */ + @ApiOperation(value = "查询分组") + @GetMapping("/queryGroupVO") + public BaseResponse> queryGroup(){ + + List list = groupService.list(); + + List groupVO = groupService.getGroupVO(list); + + return ResultUtils.success(groupVO); + } + + +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/ManicuristController.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/ManicuristController.java new file mode 100644 index 0000000..d8f3928 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/ManicuristController.java @@ -0,0 +1,247 @@ +package com.cj.jiaqingjiayi.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.cj.jiaqingjiayi.common.BaseResponse; +import com.cj.jiaqingjiayi.common.ErrorCode; +import com.cj.jiaqingjiayi.common.ResultUtils; +import com.cj.jiaqingjiayi.exception.BusinessException; +import com.cj.jiaqingjiayi.exception.ThrowUtils; +import com.cj.jiaqingjiayi.model.CommonRequest; +import com.cj.jiaqingjiayi.model.domain.*; +import com.cj.jiaqingjiayi.model.request.manicurist.*; +import com.cj.jiaqingjiayi.model.vo.ManicuristVO; +import com.cj.jiaqingjiayi.service.ManicuristService; +import com.cj.jiaqingjiayi.service.UserService; +import com.cj.jiaqingjiayi.utils.BeanCopyUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.ObjectUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.DigestUtils; +import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +import java.util.List; + +import static com.cj.jiaqingjiayi.contant.UserConstant.USER_SALT; + +@RestController +@Slf4j +@Api(tags = "美甲师接口") +@RequestMapping("/manicurist") +public class ManicuristController { + + @Resource + private ManicuristService manicuristService; + + @Resource + private UserService userService; + + + /** + * 添加美甲师(管理员) + * @param adminManicuristAddRequest + * @return + */ + @ApiOperation(value = "管理员添加美甲师") + @PostMapping("/adminAdd") + @Transactional(rollbackFor = Exception.class) + public BaseResponse AdminAddManicurist(@RequestBody AdminManicuristAddRequest adminManicuristAddRequest, HttpServletRequest request) { + //判断是否为管理员 +// userService.isAdmin(request); + + ThrowUtils.throwIf(adminManicuristAddRequest == null, ErrorCode.PARAMS_ERROR); + + User user = new User(); + BeanUtils.copyProperties(adminManicuristAddRequest, user); + Manicurist manicurist = new Manicurist(); + BeanUtils.copyProperties(adminManicuristAddRequest, manicurist); + ManicuristAuth manicuristAuth = new ManicuristAuth(); + BeanUtils.copyProperties(adminManicuristAddRequest, manicuristAuth); + + //对每个应该校验的业务进行校验 + manicuristService.validUser(user, true); + manicuristService.validManicurist(manicurist, true); + manicuristService.validManicuristAuth(manicuristAuth, true); + + //插入到表中 + manicuristService.adminAddManicurist(user, manicurist, manicuristAuth); + + return ResultUtils.success(manicurist.getId(),"添加美甲师成功"); + } + + /** + * 认证成为美甲师 + * @param manicuristAddRequest + * @return + */ + @ApiOperation(value = "认证美甲师") + @PostMapping("/add") + public BaseResponse addManicurist(@RequestBody ManicuristAddRequest manicuristAddRequest, HttpServletRequest request) { + ThrowUtils.throwIf(manicuristAddRequest == null, ErrorCode.PARAMS_ERROR); + //获取登录的用户 +// User loginUser = userService.getLoginUser(request); + + Manicurist manicurist = new Manicurist(); + //如果不给美甲师名字默认为用户名字 +// if (manicuristAddRequest.getManicuristName() == null) { +// manicuristAddRequest.setManicuristName(loginUser.getUsername()); +// } + BeanUtils.copyProperties(manicuristAddRequest, manicurist); + ManicuristAuth manicuristAuth = new ManicuristAuth(); + BeanUtils.copyProperties(manicuristAddRequest, manicuristAuth); + manicuristService.validManicurist(manicurist, true); + manicuristService.validManicuristAuth(manicuristAuth, true); + + //插入到表中 + manicuristService.addManicurist(manicuristAddRequest.getUserId(), manicurist, manicuristAuth); + + return ResultUtils.success(manicurist.getId(),"添加美甲师成功"); + } + + /** + * 删除美甲师 + */ + @ApiOperation(value = "删除美甲师") + @PostMapping("/deleteMan") + @Transactional(rollbackFor = Exception.class) + public BaseResponse DeleteManicurist(long id, HttpServletRequest request){ + //判断是否为管理员 +// userService.isAdmin(request); + + manicuristService.deleteMan(id); + return ResultUtils.success(true); + } + + /** + * 管理员修改美甲师信息 + * 确认一定会传入美甲师的id? + */ + @ApiOperation(value = "管理修改美甲师信息") + @PostMapping("/update") + public BaseResponse UpdateManicurist(@RequestBody ManicuristUpdateRequest manicuristUpdateRequest, HttpServletRequest request){ + + + if (manicuristUpdateRequest == null || manicuristUpdateRequest.getId() == null) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "传入参数为空"); + } + + Manicurist manicurist = new Manicurist(); + + if(manicuristUpdateRequest.getBusinessId() != null){ + //检验美甲师绑定的商家是否存在 + manicuristService.validManBus(manicuristUpdateRequest.getBusinessId()); + } + + BeanCopyUtils.copyPropertiesIgnoreEmpty(manicuristUpdateRequest, manicurist); + //校验一下 + manicuristService.validManicurist(manicurist, false); + + if (manicuristUpdateRequest.getAuditStatus() == 1){ + Manicurist serviceById = manicuristService.getById(manicurist); + User user = userService.getById(serviceById.getUserId()); + user.setUserRole(3); + } + + boolean result = manicuristService.updateById(manicurist); + ThrowUtils.throwIf(!result, ErrorCode.OPERATION_ERROR); + return ResultUtils.success(true, "修改成功"); + } + + /** + *美甲师修改个人信息 + */ + //TODO:后续可能会改 + @ApiOperation(value = "美甲师修改个人信息") + @PostMapping("/myUpdate") + public BaseResponse MyUpdateManicurist(@RequestBody MyManicuristUpdateRequest myUpdateRequest, HttpServletRequest request){ + ThrowUtils.throwIf(myUpdateRequest == null, ErrorCode.NULL_ERROR); + +// User logingUser = userService.getLoginUser(request); + Long userId = myUpdateRequest.getUserId(); + QueryWrapper manicuristQueryWrapper = new QueryWrapper().eq("userId", userId); + + Manicurist manicuristLog = manicuristService.getOne(manicuristQueryWrapper); + ThrowUtils.throwIf(manicuristLog == null , ErrorCode.NULL_ERROR); + Long manId = manicuristLog.getId(); + + Manicurist manicurist = new Manicurist(); + manicurist.setId(manId); + BeanUtils.copyProperties(myUpdateRequest, manicurist); + manicuristService.validManicurist(manicurist, false); + + + boolean result = manicuristService.updateById(manicurist); + ThrowUtils.throwIf(!result, ErrorCode.OPERATION_ERROR, "修改失败"); + return ResultUtils.success(true, "修改成功"); + } + + /** + * 根据id查询美甲师 + */ + @ApiOperation(value = "根据id获取美甲师") + @GetMapping("/queryById") + public BaseResponse QueryByIdManicurist(@RequestParam Integer manicuristId, HttpServletRequest request){ + + ThrowUtils.throwIf(manicuristId < 0, ErrorCode.NULL_ERROR, "id不符合规范"); + Manicurist manicurist = manicuristService.getById(manicuristId); + ThrowUtils.throwIf(manicurist == null, ErrorCode.PARAMS_ERROR, "美甲师不存在"); + return ResultUtils.success(manicurist); + } + /** + * 查询全部美甲师 + */ + @ApiOperation(value = "查询全部美甲师") + @PostMapping("/queryAll") + public BaseResponse> QueryAllManicurist(@RequestBody CommonRequest commonRequest, HttpServletRequest request){ +// userService.isAdmin(request); + + Long businessId = commonRequest.getId(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtils.isNotEmpty(businessId),"businessId", businessId); + + + List manicuristList = manicuristService.list(queryWrapper); + return ResultUtils.success(manicuristList); + } + + /** + * 查询全部美甲师(用户) + * 用于展示店铺信息 + */ + @ApiOperation(value = "用户查询全部美甲师") + @GetMapping("/userQueryAll") + public BaseResponse> UserQueryAllManicurist(@RequestParam Long businessId){ + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("businessId", businessId); + List manicuristList = manicuristService.list(queryWrapper); + List manicuristVOList = manicuristService.getManicuristVO(manicuristList); + return ResultUtils.success(manicuristVOList); + } + +// /** +// * 搜索美甲师 +// */ +// @ApiOperation(value = "用户查询美甲师") +// @PostMapping("/userQuery") +// public BaseResponse> UserQueryManicurist(@RequestBody ManicuristQueryRequest manicuristQueryRequest){ +// ThrowUtils.throwIf(manicuristQueryRequest == null, ErrorCode.NULL_ERROR); +// +// QueryWrapper queryWrapper = manicuristService.getQueryWrapper(manicuristQueryRequest); +// +// List manicuristList = manicuristService.list(queryWrapper); +// +// List manicuristVO = manicuristService.getManicuristVO(manicuristList); +// +// return ResultUtils.success(manicuristVO); +// } + + +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/ManicuristSignController.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/ManicuristSignController.java new file mode 100644 index 0000000..d05f0c5 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/ManicuristSignController.java @@ -0,0 +1,151 @@ +package com.cj.jiaqingjiayi.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.cj.jiaqingjiayi.common.BaseResponse; +import com.cj.jiaqingjiayi.common.ErrorCode; +import com.cj.jiaqingjiayi.common.ResultUtils; +import com.cj.jiaqingjiayi.exception.BusinessException; +import com.cj.jiaqingjiayi.exception.ThrowUtils; +import com.cj.jiaqingjiayi.model.domain.Business; +import com.cj.jiaqingjiayi.model.domain.Manicurist; +import com.cj.jiaqingjiayi.model.domain.Manicuristsign; +import com.cj.jiaqingjiayi.model.request.manicuristSign.ManicuristSignAddRequest; +import com.cj.jiaqingjiayi.model.vo.ManicuristsignVO; +import com.cj.jiaqingjiayi.service.BusinessService; +import com.cj.jiaqingjiayi.service.ManicuristService; +import com.cj.jiaqingjiayi.service.ManicuristsignService; +import com.cj.jiaqingjiayi.service.UserService; +import com.cj.jiaqingjiayi.utils.BeanCopyUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.BeanUtils; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +@Api(tags = "美甲师签约接口") +@RestController +@RequestMapping("/manicuristSign") +public class ManicuristSignController { + + @Resource + private ManicuristsignService manicuristsignService; + + @Resource + private ManicuristService manicuristService; + + @Resource + private BusinessService businessService; + + /** + * 添加签约 + */ + @ApiOperation(value = "添加美甲师签约") + @PostMapping("/add") + @Transactional(rollbackFor = Exception.class) + public BaseResponse addManicuristSign(@RequestBody ManicuristSignAddRequest addRequest){ + + ThrowUtils.throwIf(addRequest == null, ErrorCode.PARAMS_ERROR); + + Manicuristsign manicuristsign = new Manicuristsign(); + + BeanUtils.copyProperties(addRequest, manicuristsign); + + boolean save = manicuristsignService.save(manicuristsign); + + if (!save) { + throw new BusinessException(ErrorCode.SYSTEM_ERROR, "添加失败"); + } + return ResultUtils.success(manicuristsign.getId(), "添加成功"); + } + + + /** + * 通过签约 + */ + @ApiOperation(value = "同意美甲师签约") + @GetMapping("/success") + @Transactional(rollbackFor = Exception.class) + public BaseResponse succManicuristSign(@RequestParam Long signId){ + + ThrowUtils.throwIf(signId < 0 , ErrorCode.PARAMS_ERROR); + //拿到签约数据 + Manicuristsign manicuristsign = manicuristsignService.getById(signId); + //拿到签约的美甲师数据 + Manicurist manicurist = manicuristService.getById(manicuristsign.getManicuristId()); + ThrowUtils.throwIf(manicurist == null, ErrorCode.SYSTEM_ERROR); + Manicurist manicuristNew = new Manicurist(); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("businessName", manicuristsign.getBusinessName()); + Business business = businessService.getOne(queryWrapper); + manicurist.setBusinessId(business.getId()); + //更新美甲师所属的美甲店铺 + BeanUtils.copyProperties(manicurist, manicuristNew); + manicuristsign.setAuditStatus(1); + + boolean flag = manicuristService.updateById(manicuristNew); + ThrowUtils.throwIf(!flag , ErrorCode.OPERATION_ERROR); + + boolean updateById = manicuristsignService.updateById(manicuristsign); + ThrowUtils.throwIf(!updateById, ErrorCode.SYSTEM_ERROR); + + return ResultUtils.success(true, "审核通过"); + } + + /** + * 不同意美甲师签约 + */ + @ApiOperation(value = "不同意美甲师签约") + @GetMapping("/refuse") + @Transactional(rollbackFor = Exception.class) + public BaseResponse refuseManicuristSign(@RequestParam Long signId){ + + ThrowUtils.throwIf(signId < 0 , ErrorCode.PARAMS_ERROR); + //拿到签约数据 + Manicuristsign manicuristsign = manicuristsignService.getById(signId); + + manicuristsign.setAuditStatus(2); + + boolean updateById = manicuristsignService.updateById(manicuristsign); + ThrowUtils.throwIf(!updateById, ErrorCode.SYSTEM_ERROR); + + return ResultUtils.success(true, "审核不通过"); + } + + /** + * 根据id删除签约 + */ + @ApiOperation(value = "根据id删除签约") + @GetMapping("/delete") + @Transactional(rollbackFor = Exception.class) + public BaseResponse deleteManicuristSign(@RequestParam Long signId){ + + ThrowUtils.throwIf(signId < 0 , ErrorCode.PARAMS_ERROR); + + boolean b = manicuristsignService.removeById(signId); + ThrowUtils.throwIf(!b, ErrorCode.SYSTEM_ERROR); + + return ResultUtils.success(true, "删除成功"); + } + + /** + * 查询当前店铺签约列表 + */ + @ApiOperation(value = "查询签约列表") + @GetMapping("/select") + @Transactional(rollbackFor = Exception.class) + public BaseResponse> selectManicuristSign(@RequestParam Long businessId){ + + ThrowUtils.throwIf(businessId < 0 , ErrorCode.PARAMS_ERROR); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("businessId", businessId); + + List manicuristsignList = manicuristsignService.list(queryWrapper); + List manicuristsignVOList = manicuristsignService.getManicuristsignVO(manicuristsignList); + return ResultUtils.success(manicuristsignVOList); + } +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/OrdersController.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/OrdersController.java new file mode 100644 index 0000000..a324d88 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/OrdersController.java @@ -0,0 +1,505 @@ +package com.cj.jiaqingjiayi.controller; + + + +import com.alibaba.excel.EasyExcel; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.cj.jiaqingjiayi.common.BaseResponse; +import com.cj.jiaqingjiayi.common.ErrorCode; +import com.cj.jiaqingjiayi.common.ResultUtils; +import com.cj.jiaqingjiayi.contant.CommonConstant; +import com.cj.jiaqingjiayi.contant.UserConstant; +import com.cj.jiaqingjiayi.exception.BusinessException; +import com.cj.jiaqingjiayi.exception.ThrowUtils; +import com.cj.jiaqingjiayi.model.CommonRequest; +import com.cj.jiaqingjiayi.model.domain.*; +import com.cj.jiaqingjiayi.model.request.order.*; +import com.cj.jiaqingjiayi.model.vo.OrdersExcelVO; +import com.cj.jiaqingjiayi.model.vo.OrdersVO; +import com.cj.jiaqingjiayi.service.*; +import com.cj.jiaqingjiayi.utils.ExcelUtils; +import com.cj.jiaqingjiayi.utils.SqlUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.ObjectUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.OutputStream; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 订单相关接口 + **/ +@Slf4j +@RestController +@Api(tags = "订单接口") +@RequestMapping("/orders") +public class OrdersController { + + @Resource + private UserService userService; + + @Resource + private OrdersService ordersService; + + @Resource + private BusinessService businessService; + + @Resource + private AppointmentsService appointmentsService; + + @Resource + private OrderItemsService orderItemsService; + + @Resource + private CommoditiesService commoditiesService; + + + /** + * 创建订单 + * + * @return 订单id + */ + @ApiOperation(value = "订单创建接口") + @PostMapping("/add") + public BaseResponse addOrders(@RequestBody OrderAddRequest orderAddRequest, HttpServletRequest request) { + if (orderAddRequest == null) { + throw new BusinessException(ErrorCode.PARAMS_ERROR); + } + + //校验是否登录 +// User loginUser = userService.getLoginUser(request); + + String appointmentTime = orderAddRequest.getAppointmentTime(); + Long id = null; + if (ObjectUtils.isNotEmpty(appointmentTime)) { + LocalDateTime dateTime; + + // 判断 appointmentTime 是否是 HH:mm 格式 + if (appointmentTime.matches("\\d{2}:\\d{2}")) { + // 只有时间,没有日期,补上当前日期 + LocalDate today = LocalDate.now(); + DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("HH:mm"); + LocalTime time = LocalTime.parse(appointmentTime, timeFormatter); + dateTime = LocalDateTime.of(today, time); + } else { + // 传入的是完整格式 yyyy-MM-dd HH:mm,直接解析 + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"); + dateTime = LocalDateTime.parse(appointmentTime, formatter); + } + + // 转换成 Date 类型 + Date date1 = Date.from(dateTime.atZone(ZoneId.systemDefault()).toInstant()); + + Appointments appointments = new Appointments(); + appointments.setAppointmentTime(date1); + + BeanUtils.copyProperties(orderAddRequest, appointments); + appointments.setUserId(appointments.getUserId()); + + appointmentsService.valid(appointments); + + // 返回预约号 + id = appointmentsService.addAppointments(appointments); + ThrowUtils.throwIf(id < 0, ErrorCode.PARAMS_ERROR, "预约失败"); + } + + // 提取订单 + Orders orders = new Orders(); +// User loginUser = userService.getLoginUser(request); + BeanUtils.copyProperties(orderAddRequest, orders); + orders.setUserId(orders.getUserId()); + ordersService.validOrder(orders); + // 提取订单详情 + List detailAddRequest = orderAddRequest.getOrderItemsAddRequest(); + List orderItemsList = detailAddRequest.stream().map(item -> { + OrderItems orderItems = new OrderItems(); + BeanUtils.copyProperties(item, orderItems); + orderItemsService.validOrderItems(orderItems); + Long commoditiesId = orderItems.getCommoditiesId(); + // 根据商品设置价格 + Commodities commodities = commoditiesService.getById(commoditiesId); + BigDecimal commoditiesPrice = BigDecimal.valueOf(commodities.getCommoditiesPrice()); + orderItems.setPrice(commoditiesPrice); + double subtotal = commodities.getCommoditiesPrice() * orderItems.getQuantity(); + orderItems.setSubtotal(BigDecimal.valueOf(subtotal)); + return orderItems; + }).toList(); + // 创建订单 + orders.setAppointmentId(id); + long orderId = ordersService.addOrder(orders, orderItemsList); + return ResultUtils.success(orderId, "订单创建成功"); + } + + /** + * 取消订单 + */ + @ApiOperation(value = "订单取消接口") + @PostMapping("/cancel") + public BaseResponse cancelOrder(@RequestBody OrderCancelRequest orderCancelRequest, HttpServletRequest request) { + Long orderId = orderCancelRequest.getId(); + if (orderId == null || orderId <= 0) { + throw new BusinessException(ErrorCode.PARAMS_ERROR); + } + // + Orders orders = ordersService.getById(orderId); + ThrowUtils.throwIf(orders == null, ErrorCode.NOT_FOUND_ERROR); + ThrowUtils.throwIf(orders.getPaymentStatus() != 0, ErrorCode.OPERATION_ERROR, "订单状态错误"); + // 判断是否为自己的订单 +// User loginUser = userService.getLoginUser(request); + if (!orders.getUserId().equals(orderCancelRequest.getUserId())) { + throw new BusinessException(ErrorCode.NO_AUTH); + } + // 修改订单状态 + orders.setPaymentStatus(3); + boolean update = ordersService.updateById(orders); + ThrowUtils.throwIf(!update, ErrorCode.SYSTEM_ERROR); + return ResultUtils.success(true); + } + + /** + * 完成订单 + */ + @ApiOperation(value = "订单完成接口") + @PostMapping("/success") + public BaseResponse successOrder(@RequestBody OrderCancelRequest orderCancelRequest, HttpServletRequest request) { + Long orderId = orderCancelRequest.getId(); + if (orderId == null || orderId <= 0) { + throw new BusinessException(ErrorCode.PARAMS_ERROR); + } + // + Orders orders = ordersService.getById(orderId); + ThrowUtils.throwIf(orders == null, ErrorCode.NOT_FOUND_ERROR); + ThrowUtils.throwIf(orders.getPaymentStatus() != 0, ErrorCode.OPERATION_ERROR, "订单状态错误"); + // 判断是否为自己的订单 +// User loginUser = userService.getLoginUser(request); + if (!orders.getUserId().equals(orderCancelRequest.getUserId())) { + throw new BusinessException(ErrorCode.NO_AUTH); + } + // 修改订单状态 + orders.setPaymentStatus(4); + boolean update = ordersService.updateById(orders); + ThrowUtils.throwIf(!update, ErrorCode.SYSTEM_ERROR); + return ResultUtils.success(true); + } + + /** + * 根据 id 获取订单信息 + */ + @ApiOperation(value = "根据 id 获取订单信息") + @GetMapping("/get") + public BaseResponse getOrderVOById(@RequestParam Long id) { + if (id <= 0) { + throw new BusinessException(ErrorCode.PARAMS_ERROR); + } + Orders orders = ordersService.getById(id); + ThrowUtils.throwIf(orders == null, ErrorCode.NOT_FOUND_ERROR); + return ResultUtils.success(ordersService.getOrdersVO(orders)); + } + + /** + * 分页获取订单列表 + */ + @PostMapping("/list/page") + @ApiOperation(value = "分页获取订单列表") + public BaseResponse> listOrdersByPage(@RequestBody OrderQueryRequest orderQueryRequest, HttpServletRequest request) { +// userService.isAdmin(request); + long current = orderQueryRequest.getCurrent(); + long size = orderQueryRequest.getPageSize(); + Page ordersPage = ordersService.page(new Page<>(current, size), + ordersService.getQueryWrapper(orderQueryRequest)); + return ResultUtils.success(ordersPage); + } + + /** + * 获取我的订单 + */ + @ApiOperation(value = "获取自己的订单") + @PostMapping("/my/page") + public BaseResponse> getMyOrders(@RequestBody MyOrderQueryRequest myOrderQueryRequest, HttpServletRequest request) { + if (myOrderQueryRequest == null) { + throw new BusinessException(ErrorCode.PARAMS_ERROR); + } + long current = myOrderQueryRequest.getCurrent(); + long size = myOrderQueryRequest.getPageSize(); +// User loginUser = userService.getLoginUser(request); + Integer userRole = myOrderQueryRequest.getUserRole(); + OrderQueryRequest orderQueryRequest = new OrderQueryRequest(); + BeanUtils.copyProperties(myOrderQueryRequest, orderQueryRequest); + QueryWrapper queryWrapper = ordersService.getQueryWrapper(orderQueryRequest); +// if (userRole.equals(UserConstant.BUSINESS_ROLE)) { +// // 商家获取订单 +// Business loginBusiness = businessService.getLoginBusiness(request); +// queryWrapper.eq("businessId", loginBusiness.getId()); +// } else { +// // 用户获取订单 +// queryWrapper.eq("userId", myOrderQueryRequest.getUserId()); +// } + Page ordersPage = ordersService.page(new Page<>(current, size), + queryWrapper); + Page ordersVOPage = new Page<>(current, size, ordersPage.getTotal()); + List ordersVOList = ordersService.getOrdersVO(ordersPage.getRecords()); + ordersVOPage.setRecords(ordersVOList); + return ResultUtils.success(ordersVOPage); + } + + /** + * 订单统计 + */ + @ApiOperation(value = "订单统计") + @PostMapping("/count") + public BaseResponse ordersCount(@RequestBody OrderCountRequest orderCountRequest) { + String type = orderCountRequest.getType(); + Integer state = orderCountRequest.getPaymentStatus(); + Long businessId = orderCountRequest.getBusinessId(); + String startTime = orderCountRequest.getStartTime(); + String endTime = orderCountRequest.getEndTime(); + + // 参数校验 + ThrowUtils.throwIf(StringUtils.isBlank(type), ErrorCode.PARAMS_ERROR, "Type不能为空"); + ThrowUtils.throwIf(businessId == null, ErrorCode.PARAMS_ERROR, "BusinessId不能为空"); + + // 构建查询条件 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(state != null, "paymentStatus", state); + queryWrapper.eq("businessId", businessId); + return getStringBaseResponse(type, startTime, endTime, queryWrapper); + } + + /** + * 订单金额统计(商家) + */ + @ApiOperation(value = "订单金额统计") + @PostMapping("/count/money") + //@AuthCheck(mustRole = UserConstant.BUSINESS_ROLE) + public BaseResponse> ordersCountMoney(@RequestBody OrderCountRequest orderCountRequest) { + // 获取查询类型 + String type = orderCountRequest.getType(); + ThrowUtils.throwIf(StringUtils.isBlank(type), ErrorCode.PARAMS_ERROR); + OrderQueryRequest orderQueryRequest = new OrderQueryRequest(); + BeanUtils.copyProperties(orderCountRequest, orderQueryRequest); + List moneyCountList = new ArrayList<>(); + if (type.equals("week")) { + LocalDate today = LocalDate.now(); + DateTimeFormatter startFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd 00:00:00"); + DateTimeFormatter endFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd 23:59:59"); + // 遍历查询7天数据,放入数组 + for (int i = 0; i <= 6; i++) { + LocalDate date = today.minusDays(i); + orderQueryRequest.setStartTime(date.format(startFormatter)); + orderQueryRequest.setEndTime(date.format(endFormatter)); + QueryWrapper queryWrapper = ordersService.getQueryWrapper(orderQueryRequest); + List ordertList = ordersService.list(queryWrapper); + BigDecimal money = new BigDecimal("0"); + for (Orders order : ordertList) { + money = money.add(order.getTotalPrice()); + } + moneyCountList.add(money); + } + } else { + QueryWrapper queryWrapper = ordersService.getQueryWrapper(orderQueryRequest); + List ordertList = ordersService.list(queryWrapper); + BigDecimal money = new BigDecimal("0"); + for (Orders order : ordertList) { + money = money.add(order.getTotalPrice()); + } + moneyCountList.add(money); + } + return ResultUtils.success(moneyCountList); + } + + /** + * 订单数量统计(商家) + */ + @ApiOperation(value = "订单数量统计") + @PostMapping("/count/number") + //@AuthCheck(mustRole = UserConstant.BUSINESS_ROLE) + public BaseResponse> ordersCountNumber(@RequestBody OrderCountRequest orderCountRequest) { + // 获取查询类型 + String type = orderCountRequest.getType(); + ThrowUtils.throwIf(StringUtils.isBlank(type), ErrorCode.PARAMS_ERROR); + OrderQueryRequest orderQueryRequest = new OrderQueryRequest(); + BeanUtils.copyProperties(orderCountRequest, orderQueryRequest); + List numberCountList = new ArrayList<>(); + if (type.equals("week")) { + LocalDate today = LocalDate.now(); + DateTimeFormatter startFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd 00:00:00"); + DateTimeFormatter endFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd 23:59:59"); + // 遍历查询7天数据,放入数组 + for (int i = 0; i <= 6; i++) { + LocalDate date = today.minusDays(i); + orderQueryRequest.setStartTime(date.format(startFormatter)); + orderQueryRequest.setEndTime(date.format(endFormatter)); + QueryWrapper queryWrapper = ordersService.getQueryWrapper(orderQueryRequest); + long count = ordersService.count(queryWrapper ); + numberCountList.add(count); + } + } else { + QueryWrapper queryWrapper = ordersService.getQueryWrapper(orderQueryRequest); + long count = ordersService.count(queryWrapper); + numberCountList.add(count); + } + return ResultUtils.success(numberCountList); + } + + /** + * 订单统计(web端) + */ + @ApiOperation(value = "订单统计(web端)") + @PostMapping("/count/web") + //@AuthCheck(mustRole = UserConstant.BUSINESS_ROLE) + public BaseResponse ordersCountByWeb(@RequestBody OrderCountRequest orderCountRequest) { + String type = orderCountRequest.getType(); + Integer state = orderCountRequest.getPaymentStatus(); + String businessName = orderCountRequest.getBusinessName(); + Long businessState = orderCountRequest.getBusinessState(); + String startTime = orderCountRequest.getStartTime(); + String endTime = orderCountRequest.getEndTime(); + List businessIdList = new ArrayList<>(); + ThrowUtils.throwIf(StringUtils.isBlank(type), ErrorCode.PARAMS_ERROR); + if (businessName != null || businessState != null) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq(StringUtils.isNotBlank(businessName), "businessName", businessName); + wrapper.eq(businessState != null, "state", businessState); + List businessList = businessService.list(wrapper); + if (CollectionUtils.isEmpty(businessList)) { + return ResultUtils.success("0"); + } + businessIdList = businessList.stream().map(Business::getId).collect(Collectors.toList()); + } + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(state != null, "paymentStatus", state); + queryWrapper.in(!CollectionUtils.isEmpty(businessIdList), "businessId", businessIdList); + return getStringBaseResponse(type, startTime, endTime, queryWrapper); + } + + private BaseResponse getStringBaseResponse(String type, String startTime, String endTime, QueryWrapper queryWrapper) { + queryWrapper.ge(StringUtils.isNotBlank(startTime), "createTime", startTime); + queryWrapper.le(StringUtils.isNotBlank(endTime), "createTime", endTime); + if (type.equals("money")) { + List ordertList = ordersService.list(queryWrapper); + BigDecimal money = new BigDecimal("0"); + for (Orders order : ordertList) { + money = money.add(order.getTotalPrice()); + } + String strMoney = String.valueOf(money); + return ResultUtils.success(strMoney); + } else if (type.equals("number")) { + long count = ordersService.count(queryWrapper); + String strNumber = String.valueOf(count); + return ResultUtils.success(strNumber); + } else { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "type不正确"); + } + } + + /** + * 抢单 + * @param commonRequest 订单id + * @param request 当前登录用户 + * @return 是否抢单成功 + */ + @ApiOperation(value = "抢单") + @PostMapping("/get/order") + @Transactional(rollbackFor = Exception.class) + public BaseResponse getOrder(@RequestBody CommonRequest commonRequest, HttpServletRequest request) { + if (commonRequest == null) { + throw new BusinessException(ErrorCode.PARAMS_ERROR); + } + Long ordersId = commonRequest.getId(); +// Errand loginErrand = errandService.getLoginErrand(request); +// Long loginErrandId = loginErrand.getId(); +// ErrandOrder errandOrder = errandOrderService.getOne(Wrappers.lambdaQuery() +// .eq(ErrandOrder::getOrderId, ordersId)); +// Integer state = loginErrand.getState(); +// if (state != 1) { +// throw new BusinessException(ErrorCode.FORBIDDEN_ERROR, "当前跑腿不可抢单"); +// } + +// errandService.updateTotal(loginErrand, true); + + // 开始事务 + Orders orders = ordersService.getOrderWithPessimisticLock(ordersId); + + // 判断订单是否已被抢 + if (orders == null || orders.getManicuristId() != null) { + return ResultUtils.success(false, "该订单已被抢"); // 订单已经被抢或不存在 + } + + // 更新订单的状态 + orders.setManicuristId(commonRequest.getManicuristId()); + orders.setClaimStatus(1); + boolean update = ordersService.updateById(orders); + ThrowUtils.throwIf(!update, ErrorCode.OPERATION_ERROR, "抢单失败"); + + + +// errandOrder.setErrandState(2); // 2待取货 +// boolean update1 = errandOrderService.updateById(errandOrder); +// ThrowUtils.throwIf(!update1, ErrorCode.OPERATION_ERROR, "更新跑腿订单关联失败"); + + return ResultUtils.success(true); + } + + @PostMapping("/download") + public void download(@RequestBody OrderQueryRequest orderQueryRequest, HttpServletResponse response) throws IOException { + String startTime = orderQueryRequest.getStartTime(); + String endTime = orderQueryRequest.getEndTime(); + Long businessId = orderQueryRequest.getBusinessId(); + String sortOrder = orderQueryRequest.getSortOrder(); + String sortField = orderQueryRequest.getSortField(); + // 获取数据 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.ge(StringUtils.isNotBlank(startTime), "createTime", startTime); + wrapper.le(StringUtils.isNotBlank(endTime), "createTime", endTime); + wrapper.eq("businessId", businessId).and(item -> item.eq("paymentStatus", 1).or().eq("paymentStatus", 2)); + wrapper.orderBy(SqlUtils.validSortField(sortField), sortOrder.equals(CommonConstant.SORT_ORDER_ASC), + sortField); + List ordersList = ordersService.list(wrapper); + List ordersExcelVOList = ordersList.stream().map(item -> { + OrdersExcelVO ordersExcelVO = new OrdersExcelVO(); + BeanUtils.copyProperties(item, ordersExcelVO); + //改变订单支付状态 + if (item.getPaymentStatus() == 1) { + ordersExcelVO.setState("已完成"); + } else if (item.getPaymentStatus() == 2) { + ordersExcelVO.setState("已退款"); + } + // Date转字符串 + ordersExcelVO.setCreateTime(ExcelUtils.dateToString(item.getCreateTime())); + return ordersExcelVO; + }).collect(Collectors.toList()); + // 设置导出名称 + ExcelUtils.setExcelResponseProp(response, "订单信息"); + // 获取输出流名称 + OutputStream outputStream = response.getOutputStream(); + // 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭 + EasyExcel.write(outputStream, OrdersExcelVO.class) // 对应实体类 + .sheet("订单数据") // sheet页名称 + .doWrite(ordersExcelVOList); // 导出的数据集合 + } + +} + + diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/RecruitmentController.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/RecruitmentController.java new file mode 100644 index 0000000..6d108cb --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/RecruitmentController.java @@ -0,0 +1,99 @@ +package com.cj.jiaqingjiayi.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.cj.jiaqingjiayi.common.BaseResponse; +import com.cj.jiaqingjiayi.common.ErrorCode; +import com.cj.jiaqingjiayi.common.ResultUtils; +import com.cj.jiaqingjiayi.exception.ThrowUtils; +import com.cj.jiaqingjiayi.model.CommonRequest; +import com.cj.jiaqingjiayi.model.domain.Business; +import com.cj.jiaqingjiayi.model.domain.Recruitment; +import com.cj.jiaqingjiayi.model.request.recruitment.RecruitmentAddRequest; +import com.cj.jiaqingjiayi.model.request.recruitment.RecruitmentUpdateRequest; +import com.cj.jiaqingjiayi.service.BusinessService; +import com.cj.jiaqingjiayi.service.RecruitmentService; +import com.cj.jiaqingjiayi.utils.BeanCopyUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +@Slf4j +@RestController +@Api(tags = "招聘接口") +@RequestMapping("/recruitment") +public class RecruitmentController { + + + @Resource + private RecruitmentService recruitmentService; + + /** + *发布招聘信息 + */ + @ApiOperation(value = "发布招聘信息") + @PostMapping("/add") + public BaseResponse addRecruitment(@RequestBody RecruitmentAddRequest addRequest){ + ThrowUtils.throwIf(addRequest == null, ErrorCode.NULL_ERROR); + + Long id = recruitmentService.addRecruitment(addRequest); + + return ResultUtils.success(id); + } + + /** + * 删除招聘信息 + */ + @ApiOperation(value = "删除招聘信息") + @GetMapping("/delete") + public BaseResponse deleteRecruitmentById(@RequestParam Long id){ + ThrowUtils.throwIf(id < 0, ErrorCode.PARAMS_ERROR); + + boolean flag = recruitmentService.deleteRecruitment(id); + ThrowUtils.throwIf(!flag, ErrorCode.OPERATION_ERROR); + + return ResultUtils.success(true); + } + + /** + * 更改招聘信息 + */ + @ApiOperation(value = "更改招聘信息") + @PostMapping("/update") + public BaseResponse updateRecruitment(@RequestBody RecruitmentUpdateRequest updateRequest){ + ThrowUtils.throwIf(updateRequest == null, ErrorCode.PARAMS_ERROR); + + boolean flag = recruitmentService.updateRecruitment(updateRequest); + ThrowUtils.throwIf(!flag, ErrorCode.OPERATION_ERROR); + return ResultUtils.success(true); + } + + /** + *查询招聘信息 + */ + @ApiOperation(value = "查询招聘信息(商家)") + @GetMapping("/list/select") + public BaseResponse> selectRecruitment(@RequestParam Long businessId){ + ThrowUtils.throwIf(businessId < 0, ErrorCode.PARAMS_ERROR); + + List recruitmentList = recruitmentService.selectRecruitment(businessId); + + return ResultUtils.success(recruitmentList); + } + + /** + *查询招聘信息 + */ + @ApiOperation(value = "查询招聘信息") + @GetMapping("/list/selectMy") + public BaseResponse> selectRecruitmentMy(){ + + List recruitmentList = recruitmentService.list(); + + return ResultUtils.success(recruitmentList); + } +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/SpecificationsController.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/SpecificationsController.java new file mode 100644 index 0000000..9ca6042 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/SpecificationsController.java @@ -0,0 +1,159 @@ +package com.cj.jiaqingjiayi.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; + +import com.cj.jiaqingjiayi.common.BaseResponse; +import com.cj.jiaqingjiayi.common.ErrorCode; +import com.cj.jiaqingjiayi.common.ResultUtils; +import com.cj.jiaqingjiayi.exception.BusinessException; +import com.cj.jiaqingjiayi.exception.ThrowUtils; +import com.cj.jiaqingjiayi.model.domain.Business; +import com.cj.jiaqingjiayi.model.domain.Specifications; + +import com.cj.jiaqingjiayi.model.domain.SpecificationsCommodities; +import com.cj.jiaqingjiayi.model.request.attribute.AttributeAddRequest; +import com.cj.jiaqingjiayi.model.request.attribute.AttributeUpdateRequest; +import com.cj.jiaqingjiayi.model.request.specifications.SpecificationsAddRequest; +import com.cj.jiaqingjiayi.model.request.specifications.SpecificationsMyQueryRequest; +import com.cj.jiaqingjiayi.model.request.specifications.SpecificationsQueryRequest; +import com.cj.jiaqingjiayi.model.request.specifications.SpecificationsUpdateRequest; +import com.cj.jiaqingjiayi.model.vo.SpecificationsVO; +import com.cj.jiaqingjiayi.service.*; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +@Slf4j +@Api(tags = "规格接口") +@RestController +@RequestMapping("/specifications") +public class SpecificationsController { + + @Resource + private SpecificationsService specificationsService; + + @Resource + private SpecificationsCommoditiesService specificationsCommoditiesService; + + @Resource + private BusinessService businessService; + + @Resource + private AttributeService attributeService; + + @Resource + private UserService userService; + + /** + * 添加规格 + * @param specificationsAddRequest 添加请求体 + * @param request 网络请求 + * @return 是否成功 + */ + @ApiOperation(value = "添加规格") + @PostMapping("/add") + @Transactional(rollbackFor = Exception.class) + public BaseResponse addSpecifications(@RequestBody SpecificationsAddRequest specificationsAddRequest, HttpServletRequest request){ + //判断是否为商家 + userService.isBusiness(request); + + if (specificationsAddRequest == null) { + throw new BusinessException(ErrorCode.PARAMS_ERROR); + } + + Specifications specifications = new Specifications(); + BeanUtils.copyProperties(specificationsAddRequest,specifications); + //校验请求体 + specificationsService.validSpecifications(specifications, false); + //添加规格和属性 + List attributeAddRequests = specificationsAddRequest.getAttributeAddRequests(); + Boolean aBoolean = specificationsService.addSpecifications(specifications, attributeAddRequests, request); + ThrowUtils.throwIf(!aBoolean, ErrorCode.OPERATION_ERROR); + return ResultUtils.success(true); + } + + /**· + * 更新规格 + * @param specificationsUpdateRequest 更新请求体 + * @param request 网络请求 + * @return 是否成功 + */ + @ApiOperation(value = "更新规格") + @PostMapping("/update") + @Transactional(rollbackFor = Exception.class) + public BaseResponse updateSpecifications(@RequestBody SpecificationsUpdateRequest specificationsUpdateRequest, HttpServletRequest request) { + //判断是否为商家 + userService.isBusiness(request); + + if (specificationsUpdateRequest == null) { + throw new BusinessException(ErrorCode.PARAMS_ERROR); + } + + Specifications specifications = new Specifications(); + BeanUtils.copyProperties(specificationsUpdateRequest,specifications); + //校验 + specificationsService.validSpecifications(specifications,true); + + //更新规格和属性 + List attributeUpdateRequests = specificationsUpdateRequest.getAttributeUpdateRequests(); + Boolean aBoolean = specificationsService.updateSpecifications(specifications, attributeUpdateRequests, request); + ThrowUtils.throwIf(!aBoolean, ErrorCode.OPERATION_ERROR); + return ResultUtils.success(true); + } + + /** + * 根据菜品id获取规格脱敏信息 + * @param specificationsMyQueryRequest 请求体 + * @return 脱敏列表 + */ + @ApiOperation(value = "根据id获取规格") + @PostMapping("/list/specificationsVOByComId") + public BaseResponse> specificationsVOByComId(@RequestBody SpecificationsMyQueryRequest specificationsMyQueryRequest) { + if (specificationsMyQueryRequest == null) { + throw new BusinessException(ErrorCode.PARAMS_ERROR); + } + Long commoditiesId = specificationsMyQueryRequest.getId(); + //根据id获取中间表数据 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("commoditiesId",commoditiesId); + List list = specificationsCommoditiesService.list(queryWrapper); + //根据中间表数据中的规格获取规格信息和属性 + return ResultUtils.success(specificationsCommoditiesService.getSpecificationsAddAttribute(list)); + } + + /** + * 获取脱敏列表 + * @param specificationsQueryRequest 前端请求 + * @param request 网络请求 + * @return 脱敏列表 + */ + @ApiOperation(value = "获取规格列表") + @PostMapping("/list/specificationsVO") + public BaseResponse> specificationsVOList(@RequestBody SpecificationsQueryRequest specificationsQueryRequest, HttpServletRequest request) { + //获取商家id + Business loginBusiness = businessService.getLoginBusiness(request); + Long businessId = loginBusiness.getId(); + //获取商家的规格表 + String specificationsName = specificationsQueryRequest.getSpecificationsName(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(StringUtils.isNotBlank(specificationsName), "specificationsName", specificationsName); + queryWrapper.eq("businessId",businessId); + List list = specificationsService.list(queryWrapper); + //对规格信息脱敏 + List specificationsVO = specificationsService.getSpecificationsVO(list); + //获取各规格的属性脱敏信息 + return ResultUtils.success(attributeService.getBySpecificationsVoId(specificationsVO)); + } +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/UserController.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/UserController.java new file mode 100644 index 0000000..7a05577 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/UserController.java @@ -0,0 +1,295 @@ +package com.cj.jiaqingjiayi.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.cj.jiaqingjiayi.common.BaseResponse; +import com.cj.jiaqingjiayi.common.ErrorCode; +import com.cj.jiaqingjiayi.common.ResultUtils; +import com.cj.jiaqingjiayi.exception.BusinessException; +import com.cj.jiaqingjiayi.mapper.UserMapper; +import com.cj.jiaqingjiayi.model.LoginUserDTO; +import com.cj.jiaqingjiayi.model.domain.User; +import com.cj.jiaqingjiayi.model.request.user.*; +import com.cj.jiaqingjiayi.model.vo.LoginUserVO; +import com.cj.jiaqingjiayi.service.UserService; +import com.cj.jiaqingjiayi.utils.BeanCopyUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.apache.commons.lang3.StringUtils; +import org.apache.ibatis.jdbc.Null; +import org.springframework.beans.BeanUtils; +import org.springframework.util.DigestUtils; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.Date; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +import static com.cj.jiaqingjiayi.contant.UserConstant.*; + +@Api(tags = "用户接口") +@RestController +@RequestMapping("/user") +public class UserController { + + @Resource + private UserService userService; + + /** + * 用户注册请求接口 + * + */ + @ApiOperation(value = "用户注册") + @PostMapping("/register") + public BaseResponse userRegister(@RequestBody UserRegisterRequest userRegisterRequest) { + if (userRegisterRequest == null){ + throw new BusinessException(ErrorCode.PARAMS_ERROR, "请求参数为空"); + } + + String userAccount = userRegisterRequest.getUserAccount(); + String userPassword = userRegisterRequest.getUserPassword(); + String checkPassword = userRegisterRequest.getCheckPassword(); + + if (StringUtils.isAllBlank(userAccount, userPassword, checkPassword)) { + return ResultUtils.error(ErrorCode.PARAMS_ERROR); + } + + long result = userService.userRegister(userAccount, userPassword, checkPassword); + return ResultUtils.success(result); + } + + + /** + * 用户登录请求接口 + * + * @param request 前端请求对象 + */ + @ApiOperation(value = "用户登录") + @PostMapping("/login") + public BaseResponse userLogin(@RequestBody UserLoginRequest userLoginRequest, HttpServletRequest request) { + if (userLoginRequest == null) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "请求参数为空"); + } + + String userAccount = userLoginRequest.getUserAccount(); + String userPassword = userLoginRequest.getUserPassword(); + + if (StringUtils.isAllBlank(userAccount, userPassword)){ + throw new BusinessException(ErrorCode.PARAMS_ERROR, "请求参数为空"); + } + + LoginUserDTO loginUserDTO = userService.userLogin(userAccount, userPassword, request); + return ResultUtils.success(loginUserDTO); + } + + /** + * 用户注销接口 + */ + @ApiOperation(value = "用户注销") + @PostMapping("/logout") + public BaseResponse userLogout(HttpServletRequest request) { + if (request == null) { + throw new BusinessException(ErrorCode.NULL_ERROR, "传入参数为空"); + } + int result = userService.userLogout(request); + return ResultUtils.success(result); + } + + /** + * 查询用户(管理员) + */ + @ApiOperation(value = "查询用户") + @GetMapping("/search") + public BaseResponse> searchUsers(UserSearchRequest searchRequest, HttpServletRequest request){ + //判断是否为管理员 + userService.isAdmin(request); + + QueryWrapper queryWrapper = userService.getQueryWrapper(searchRequest); + List userList = userService.list(queryWrapper); + List users = userList.stream().map(userService::getSafetyUser).collect(Collectors.toList()); + + //用户脱敏 + return ResultUtils.success(users); + } + + /** + * 分页获取用户列表 + * @return 用户列表 + */ + @ApiOperation(value = "分页查询用户") + @PostMapping("/list/page") + public BaseResponse> listUserByPage(@RequestBody UserSearchRequest userSearchRequest, HttpServletRequest request) { + //判断是否为管理员 +// userService.isAdmin(request); + long current = userSearchRequest.getCurrent(); + long size = userSearchRequest.getPageSize(); + Page userPage = userService.page(new Page<>(current, size), + userService.getQueryWrapper(userSearchRequest)); + return ResultUtils.success(userPage); + } + + /** + * 删除用户(管理员) + */ + @ApiOperation(value = "删除用户") + @PostMapping("/delete") + public BaseResponse deleteUser(@RequestBody UserDeleteRequest deleteRequest, HttpServletRequest request){ + //判断是否为管理员 + userService.isAdmin(request); + if(deleteRequest == null || deleteRequest.getId() <= 0){ + throw new BusinessException(ErrorCode.PARAMS_ERROR, "id不合法"); + } + boolean removeUser = userService.removeById(deleteRequest.getId()); + return ResultUtils.success(removeUser); + } + + /** + * 获取当前登录的用户信息 + */ + @ApiOperation(value = "获取当前登录用户") + @GetMapping("/current") + public BaseResponse getLoginUser(HttpServletRequest request){ + //获取登录态 + User user = userService.getLoginUser(request); + return ResultUtils.success(userService.getLoginUserVO(user)); + + } + + /** + * 根据id获取用户(管理员) + */ + @ApiOperation(value = "根据id获取用户") + @GetMapping("/getById") + public BaseResponse getUserById(@RequestParam Long id, HttpServletRequest request){ + //判断是否为管理员 + userService.isAdmin(request); + if(id < 0){ + throw new BusinessException(ErrorCode.PARAMS_ERROR, "id不符合规范"); + } + User user = userService.getById(id); + if(user == null){ + throw new BusinessException(ErrorCode.PARAMS_ERROR, "用户不存在"); + } + return ResultUtils.success(user); + } + + /** + * 用户修改密码 + */ + @ApiOperation(value = "用户修改密码") + @PostMapping("/password/update") + public BaseResponse updateUserPassword(@RequestBody UserUpdatePasswordRequest updatePasswordRequest, + HttpServletRequest request){ + boolean update = userService.updateUserPassword(updatePasswordRequest, request); + if(update){ + return ResultUtils.success(true); + } else { + return ResultUtils.error(ErrorCode.OPERATION_ERROR); + } + } + + /** + * 添加用户(管理员) + * @param userAddRequest + * @param request + * @return + */ + @ApiOperation(value = "管理员添加用户") + @PostMapping("/add") + public BaseResponse addUser(@RequestBody UserAddRequest userAddRequest, HttpServletRequest request){ + //判断是否为管理员 + userService.isAdmin(request); + if(userAddRequest == null){ + throw new BusinessException(ErrorCode.NULL_ERROR,"传入数据为空"); + } + User user = new User(); + String userAccount = userAddRequest.getUserAccount(); + String userPassword = userAddRequest.getUserPassword(); + if(StringUtils.isAnyBlank(userAccount, userPassword)){ + throw new BusinessException(ErrorCode.PARAMS_ERROR, "未输入账号密码"); + } + + if(userAccount.length() < 4){ + throw new BusinessException(ErrorCode.PARAMS_ERROR, "用户账号过短"); + } + + //判断密码是否小于8 + if(userPassword.length() < 8){ + throw new BusinessException(ErrorCode.PARAMS_ERROR, "密码过短"); + } + //判断是否有特殊字符 + String validPattern = "[`~!@#$%^&*()+=|{}':;',\\\\[\\\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]"; + + Matcher matcher = Pattern.compile(validPattern).matcher(userAccount); + + if (matcher.find()) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "包含特殊字符"); + } + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("userAccount", userAccount); + long count = userService.count(queryWrapper); + if(count > 0){ + throw new BusinessException(ErrorCode.PARAMS_ERROR, "用户已存在"); + } + BeanUtils.copyProperties(userAddRequest, user); + String password = DigestUtils.md5DigestAsHex((USER_SALT + userPassword).getBytes()); + user.setUserPassword(password); + boolean save = userService.save(user); + if(!save){ + throw new BusinessException(ErrorCode.OPERATION_ERROR); + } + return ResultUtils.success(user.getId()); + } + + /** + * 更新用户信息(管理员) + * @param userUpdateRequest + * @param request + * @return + */ + @ApiOperation(value = "管理员更新用户信息") + @PostMapping("/update") + public BaseResponse updateUser(@RequestBody UserUpdateRequest userUpdateRequest, HttpServletRequest request){ + //判断是否为管理员 +// userService.isAdmin(request); + User user = new User(); + BeanCopyUtils.copyPropertiesIgnoreEmpty(userUpdateRequest, user); + boolean res = userService.updateById(user); + if(!res){ + throw new BusinessException(ErrorCode.PARAMS_ERROR, "该用户不存在"); + } + return ResultUtils.success(true); + } + + /** + * 更新个人信息 + * @param userUpdateMyRequest + * @param request + * @return + */ + @ApiOperation(value = "用户更新个人信息") + @PostMapping("/user/update") + public BaseResponse updateMyUser(@RequestBody UserUpdateMyRequest userUpdateMyRequest, HttpServletRequest request){ + + if(userUpdateMyRequest == null){ + throw new BusinessException(ErrorCode.PARAMS_ERROR); + } +// User logingUser = userService.getLoginUser(request); + User user = new User(); + BeanCopyUtils.copyPropertiesIgnoreEmpty(userUpdateMyRequest,user); + + boolean result = userService.updateById(user); + if(!result){ + throw new BusinessException(ErrorCode.PARAMS_ERROR, "操作失败"); + } + return ResultUtils.success(true); + } + + +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/UserRatingController.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/UserRatingController.java new file mode 100644 index 0000000..d5f78de --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/UserRatingController.java @@ -0,0 +1,146 @@ +package com.cj.jiaqingjiayi.controller; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; + +import com.cj.jiaqingjiayi.common.BaseResponse; +import com.cj.jiaqingjiayi.common.ErrorCode; +import com.cj.jiaqingjiayi.common.ResultUtils; +import com.cj.jiaqingjiayi.exception.BusinessException; +import com.cj.jiaqingjiayi.exception.ThrowUtils; +import com.cj.jiaqingjiayi.model.CommonRequest; +import com.cj.jiaqingjiayi.model.domain.User; + +import com.cj.jiaqingjiayi.model.domain.UserRating; +import com.cj.jiaqingjiayi.model.request.userRating.UserRatingAddRequest; +import com.cj.jiaqingjiayi.model.request.userRating.UserRatingReviewRequest; +import com.cj.jiaqingjiayi.model.vo.UserRatingDTO; +import com.cj.jiaqingjiayi.service.BusinessService; +import com.cj.jiaqingjiayi.service.UserRatingService; +import com.cj.jiaqingjiayi.service.UserService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.List; + +@Api(tags = "用户评分接口") +@RestController +@Slf4j +@RequestMapping("/level") +public class UserRatingController { + + @Resource + private UserRatingService userRatingService; + + @Resource + private UserService userService; + + /** + * 添加用户评分 + * @param userRatingAddRequest 用户评分请求 + * @param request 当期那登录用户 + * @return 是否添加成功 + */ + @ApiOperation(value = "添加用户评分") + @PostMapping("/add") + public BaseResponse addRating (@RequestBody UserRatingAddRequest userRatingAddRequest, HttpServletRequest request) { + if (userRatingAddRequest == null) { + throw new BusinessException(ErrorCode.PARAMS_ERROR); + } + + UserRating userRating = new UserRating(); + BeanUtils.copyProperties(userRatingAddRequest, userRating); + userRatingService.validUserRating(userRating, request); + boolean save = userRatingService.save(userRating); + ThrowUtils.throwIf(!save, ErrorCode.SYSTEM_ERROR, "添加失败"); + return ResultUtils.success(true); + } + + /** + * 删除用户评分 + * @param commonRequest 用户评分id + * @return 是否删除成功 + */ + @ApiOperation(value = "删除用户评分") + @PostMapping("/delete") + public BaseResponse deleteUserRating (@RequestBody CommonRequest commonRequest) { + if (commonRequest == null) { + throw new BusinessException(ErrorCode.PARAMS_ERROR); + } + boolean remove = userRatingService.removeById(commonRequest.getId()); + ThrowUtils.throwIf(!remove, ErrorCode.SYSTEM_ERROR, "删除失败"); + + return ResultUtils.success(true); + } + + /** + * 展示当前用户评论 + * @param request 当前用户 + * @return 评分列表 + */ + @ApiOperation(value = "展示用户评分") + @PostMapping("/list") + public BaseResponse> listUserRating (@RequestBody CommonRequest commonRequest, HttpServletRequest request) { +// User loginUser = userService.getLoginUser(request); + Long userId = commonRequest.getId(); + List list = userRatingService.list(Wrappers.lambdaQuery().eq(UserRating::getUserId, userId)); + return ResultUtils.success(list); + } + + /** + * 展示当前店铺评分 + */ + @ApiOperation(value = "展示商家评论") + @GetMapping("/listBusinessRating") + public BaseResponse> listUserRatingBusiness (@RequestParam Long businessId) { +// 查询 UserRating 列表 + List userRatings = userRatingService.list( + Wrappers.lambdaQuery().eq(UserRating::getBusinessId, businessId) + ); + + // 创建返回的 DTO 列表 + List userRatingDTOList = new ArrayList<>(); + + // 遍历 UserRating 列表,根据 userId 查询 User 信息 + for (UserRating userRating : userRatings) { + User user = userService.getById(userRating.getUserId()); + UserRatingDTO userRatingDTO = new UserRatingDTO(); + userRatingDTO.setUserRating(userRating); + userRatingDTO.setUser(user); + userRatingDTOList.add(userRatingDTO); + } + + // 返回 DTO 列表 + return ResultUtils.success(userRatingDTOList); + } + + + /** + *商家回复 + */ + @ApiOperation(value = "商家回复") + @PostMapping("/business/reply") +// @AuthCheck(mustRole = UserConstant.BUSINESS_ROLE) + public BaseResponse businessReply (@RequestBody UserRatingReviewRequest userRatingReviewRequest, HttpServletRequest request) { + if (userRatingReviewRequest == null) { + throw new BusinessException(ErrorCode.PARAMS_ERROR); + } + Long id = userRatingReviewRequest.getId(); + String businessReview = userRatingReviewRequest.getBusinessReview(); + userRatingService.validUserRatingByBusiness(id, request); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(UserRating::getId, id); + UserRating userRating = userRatingService.getOne(wrapper); + userRating.setBusinessReview(businessReview); + boolean update = userRatingService.updateById(userRating); + ThrowUtils.throwIf(!update, ErrorCode.OPERATION_ERROR); + return ResultUtils.success(true); + } +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/exception/BusinessException.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/exception/BusinessException.java new file mode 100644 index 0000000..d327fd6 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/exception/BusinessException.java @@ -0,0 +1,49 @@ +package com.cj.jiaqingjiayi.exception; + + +import com.cj.jiaqingjiayi.common.ErrorCode; + +/** + * 自定义异常类 + * + */ +public class BusinessException extends RuntimeException { + + /** + * 异常码 + */ + private final int code; + + /** + * 描述 + */ + private final String description; + + public BusinessException(String message, int code, String description) { + super(message); + this.code = code; + this.description = description; + } + + public BusinessException(ErrorCode errorCode) { + super(errorCode.getMessage()); + this.code = errorCode.getCode(); + this.description = errorCode.getDescription(); + } + + public BusinessException(ErrorCode errorCode, String description) { + super(errorCode.getMessage()); + this.code = errorCode.getCode(); + this.description = description; + } + + public int getCode() { + return code; + } + + + + public String getDescription() { + return description; + } +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/exception/GlobalExceptionHandler.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/exception/GlobalExceptionHandler.java new file mode 100644 index 0000000..c502f20 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/exception/GlobalExceptionHandler.java @@ -0,0 +1,31 @@ +package com.cj.jiaqingjiayi.exception; + + + +import com.cj.jiaqingjiayi.common.BaseResponse; +import com.cj.jiaqingjiayi.common.ErrorCode; +import com.cj.jiaqingjiayi.common.ResultUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.RestControllerAdvice; + +/** + * 全局异常处理器 + * + */ +@RestControllerAdvice +@Slf4j +public class GlobalExceptionHandler { + + @ExceptionHandler(BusinessException.class) + public BaseResponse businessExceptionHandler(BusinessException e) { + log.error("businessException: " + e.getMessage(), e); + return ResultUtils.error(e.getCode(), e.getMessage(), e.getDescription()); + } + + @ExceptionHandler(RuntimeException.class) + public BaseResponse runtimeExceptionHandler(RuntimeException e) { + log.error("runtimeException", e); + return ResultUtils.error(ErrorCode.SYSTEM_ERROR, e.getMessage(), ""); + } +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/exception/ThrowUtils.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/exception/ThrowUtils.java new file mode 100644 index 0000000..dc5b99e --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/exception/ThrowUtils.java @@ -0,0 +1,44 @@ +package com.cj.jiaqingjiayi.exception; + + +import com.cj.jiaqingjiayi.common.ErrorCode; + +/** + * 抛异常工具类 + */ +@SuppressWarnings("all") +public class ThrowUtils { + + /** + * 条件成立则抛异常 + * + * @param condition 条件 + * @param runtimeException 运行时异常 + */ + public static void throwIf(boolean condition, RuntimeException runtimeException) { + if (condition) { + throw runtimeException; + } + } + + /** + * 条件成立则抛异常 + * + * @param condition 条件 + * @param errorCode 自定义异常 + */ + public static void throwIf(boolean condition, ErrorCode errorCode) { + throwIf(condition, new BusinessException(errorCode)); + } + + /** + * 条件成立则抛异常 + * + * @param condition 条件 + * @param errorCode 自定义异常 + * @param message 报错信息 + */ + public static void throwIf(boolean condition, ErrorCode errorCode, String message) { + throwIf(condition, new BusinessException(errorCode, message)); + } +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/AppointmentsMapper.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/AppointmentsMapper.java new file mode 100644 index 0000000..df985c5 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/AppointmentsMapper.java @@ -0,0 +1,18 @@ +package com.cj.jiaqingjiayi.mapper; + +import com.cj.jiaqingjiayi.model.domain.Appointments; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** +* @author 高木 +* @description 针对表【appointments(预约表)】的数据库操作Mapper +* @createDate 2024-11-05 19:07:40 +* @Entity com.cj.jiaqingjiayi.model.domain.Appointments +*/ +public interface AppointmentsMapper extends BaseMapper { + +} + + + + diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/AttributeMapper.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/AttributeMapper.java new file mode 100644 index 0000000..62a97a1 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/AttributeMapper.java @@ -0,0 +1,18 @@ +package com.cj.jiaqingjiayi.mapper; + +import com.cj.jiaqingjiayi.model.domain.Attribute; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** +* @author 高木 +* @description 针对表【attribute(属性表)】的数据库操作Mapper +* @createDate 2024-08-21 16:29:45 +* @Entity com.cj.jiaqingjiayi.model.domain.Attribute +*/ +public interface AttributeMapper extends BaseMapper { + +} + + + + diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/BusinessAuthMapper.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/BusinessAuthMapper.java new file mode 100644 index 0000000..1ca7624 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/BusinessAuthMapper.java @@ -0,0 +1,18 @@ +package com.cj.jiaqingjiayi.mapper; + +import com.cj.jiaqingjiayi.model.domain.BusinessAuth; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** +* @author 高木 +* @description 针对表【business_auth(商家认证)】的数据库操作Mapper +* @createDate 2024-07-28 17:18:28 +* @Entity com.cj.jiaqingjiayi.model.domain.BusinessAuth +*/ +public interface BusinessAuthMapper extends BaseMapper { + +} + + + + diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/BusinessLevelMapper.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/BusinessLevelMapper.java new file mode 100644 index 0000000..533e5fb --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/BusinessLevelMapper.java @@ -0,0 +1,18 @@ +package com.cj.jiaqingjiayi.mapper; + +import com.cj.jiaqingjiayi.model.domain.BusinessLevel; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** +* @author 高木 +* @description 针对表【business_level】的数据库操作Mapper +* @createDate 2024-12-02 14:13:25 +* @Entity com.cj.jiaqingjiayi.model.domain.BusinessLevel +*/ +public interface BusinessLevelMapper extends BaseMapper { + +} + + + + diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/BusinessMapper.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/BusinessMapper.java new file mode 100644 index 0000000..e57da9f --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/BusinessMapper.java @@ -0,0 +1,18 @@ +package com.cj.jiaqingjiayi.mapper; + +import com.cj.jiaqingjiayi.model.domain.Business; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** +* @author 高木 +* @description 针对表【business(商家)】的数据库操作Mapper +* @createDate 2024-07-28 17:16:33 +* @Entity com.cj.jiaqingjiayi.model.domain.Business +*/ +public interface BusinessMapper extends BaseMapper { + +} + + + + diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/CartMapper.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/CartMapper.java new file mode 100644 index 0000000..2e6ba63 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/CartMapper.java @@ -0,0 +1,18 @@ +package com.cj.jiaqingjiayi.mapper; + +import com.cj.jiaqingjiayi.model.domain.Cart; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** +* @author 高木 +* @description 针对表【cart(购物车表)】的数据库操作Mapper +* @createDate 2024-09-05 15:15:56 +* @Entity com.cj.jiaqingjiayi.model.domain.Cart +*/ +public interface CartMapper extends BaseMapper { + +} + + + + diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/CollectMapper.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/CollectMapper.java new file mode 100644 index 0000000..f595c9b --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/CollectMapper.java @@ -0,0 +1,18 @@ +package com.cj.jiaqingjiayi.mapper; + +import com.cj.jiaqingjiayi.model.domain.Collect; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** +* @author 高木 +* @description 针对表【collect(收藏)】的数据库操作Mapper +* @createDate 2024-12-02 14:11:46 +* @Entity com.cj.jiaqingjiayi.model.domain.Collect +*/ +public interface CollectMapper extends BaseMapper { + +} + + + + diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/CommoditiesGroupMapper.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/CommoditiesGroupMapper.java new file mode 100644 index 0000000..34fab02 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/CommoditiesGroupMapper.java @@ -0,0 +1,18 @@ +package com.cj.jiaqingjiayi.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.cj.jiaqingjiayi.model.domain.CommoditiesGroup; + +/** +* @author 高木 +* @description 针对表【commodities_group(商品分组表)】的数据库操作Mapper +* @createDate 2024-12-17 08:52:35 +* @Entity generator.domain.CommoditiesGroup +*/ +public interface CommoditiesGroupMapper extends BaseMapper { + +} + + + + diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/CommoditiesMapper.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/CommoditiesMapper.java new file mode 100644 index 0000000..26e8d29 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/CommoditiesMapper.java @@ -0,0 +1,18 @@ +package com.cj.jiaqingjiayi.mapper; + +import com.cj.jiaqingjiayi.model.domain.Commodities; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** +* @author 高木 +* @description 针对表【commodities(商品表)】的数据库操作Mapper +* @createDate 2024-08-20 19:55:49 +* @Entity com.cj.jiaqingjiayi.model.domain.Commodities +*/ +public interface CommoditiesMapper extends BaseMapper { + +} + + + + diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/ManicuristAuthMapper.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/ManicuristAuthMapper.java new file mode 100644 index 0000000..a8c31a2 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/ManicuristAuthMapper.java @@ -0,0 +1,18 @@ +package com.cj.jiaqingjiayi.mapper; + +import com.cj.jiaqingjiayi.model.domain.ManicuristAuth; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** +* @author 高木 +* @description 针对表【manicurist_auth(美甲师认证表)】的数据库操作Mapper +* @createDate 2024-09-23 18:46:06 +* @Entity com.cj.jiaqingjiayi.model.domain.ManicuristAuth +*/ +public interface ManicuristAuthMapper extends BaseMapper { + +} + + + + diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/ManicuristMapper.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/ManicuristMapper.java new file mode 100644 index 0000000..55e0755 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/ManicuristMapper.java @@ -0,0 +1,18 @@ +package com.cj.jiaqingjiayi.mapper; + +import com.cj.jiaqingjiayi.model.domain.Manicurist; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** +* @author 高木 +* @description 针对表【manicurist(美甲师表)】的数据库操作Mapper +* @createDate 2024-09-23 19:23:08 +* @Entity com.cj.jiaqingjiayi.model.domain.Manicurist +*/ +public interface ManicuristMapper extends BaseMapper { + +} + + + + diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/ManicuristsignMapper.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/ManicuristsignMapper.java new file mode 100644 index 0000000..14f00d4 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/ManicuristsignMapper.java @@ -0,0 +1,18 @@ +package com.cj.jiaqingjiayi.mapper; + +import com.cj.jiaqingjiayi.model.domain.Manicuristsign; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** +* @author 高木 +* @description 针对表【manicuristsign(美甲师表)】的数据库操作Mapper +* @createDate 2025-02-26 19:29:22 +* @Entity com.cj.jiaqingjiayi.model.domain.Manicuristsign +*/ +public interface ManicuristsignMapper extends BaseMapper { + +} + + + + diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/OrderItemsMapper.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/OrderItemsMapper.java new file mode 100644 index 0000000..0f55e58 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/OrderItemsMapper.java @@ -0,0 +1,18 @@ +package com.cj.jiaqingjiayi.mapper; + +import com.cj.jiaqingjiayi.model.domain.OrderItems; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** +* @author 高木 +* @description 针对表【order_items(详细订单表)】的数据库操作Mapper +* @createDate 2024-11-10 14:25:15 +* @Entity com.cj.jiaqingjiayi.model.domain.OrderItems +*/ +public interface OrderItemsMapper extends BaseMapper { + +} + + + + diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/OrdersMapper.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/OrdersMapper.java new file mode 100644 index 0000000..4c51e9a --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/OrdersMapper.java @@ -0,0 +1,18 @@ +package com.cj.jiaqingjiayi.mapper; + +import com.cj.jiaqingjiayi.model.domain.Orders; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** +* @author 高木 +* @description 针对表【orders(订单表)】的数据库操作Mapper +* @createDate 2024-11-10 14:22:10 +* @Entity com.cj.jiaqingjiayi.model.domain.Orders +*/ +public interface OrdersMapper extends BaseMapper { + +} + + + + diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/RecruitmentMapper.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/RecruitmentMapper.java new file mode 100644 index 0000000..2d85d80 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/RecruitmentMapper.java @@ -0,0 +1,18 @@ +package com.cj.jiaqingjiayi.mapper; + +import com.cj.jiaqingjiayi.model.domain.Recruitment; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** +* @author 高木 +* @description 针对表【recruitment(美甲师招聘信息表)】的数据库操作Mapper +* @createDate 2025-03-12 18:51:44 +* @Entity com.cj.jiaqingjiayi.model.domain.RecruitmentController +*/ +public interface RecruitmentMapper extends BaseMapper { + +} + + + + diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/SpecificationsCommoditiesMapper.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/SpecificationsCommoditiesMapper.java new file mode 100644 index 0000000..5c04023 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/SpecificationsCommoditiesMapper.java @@ -0,0 +1,18 @@ +package com.cj.jiaqingjiayi.mapper; + +import com.cj.jiaqingjiayi.model.domain.SpecificationsCommodities; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** +* @author 高木 +* @description 针对表【specifications_commodities(商品和规格的中间表)】的数据库操作Mapper +* @createDate 2024-08-21 16:21:41 +* @Entity com.cj.jiaqingjiayi.model.domain.SpecificationsCommodities +*/ +public interface SpecificationsCommoditiesMapper extends BaseMapper { + +} + + + + diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/SpecificationsMapper.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/SpecificationsMapper.java new file mode 100644 index 0000000..6ecd7f8 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/SpecificationsMapper.java @@ -0,0 +1,18 @@ +package com.cj.jiaqingjiayi.mapper; + +import com.cj.jiaqingjiayi.model.domain.Specifications; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** +* @author 高木 +* @description 针对表【specifications(规格表)】的数据库操作Mapper +* @createDate 2024-08-21 16:20:48 +* @Entity com.cj.jiaqingjiayi.model.domain.Specifications +*/ +public interface SpecificationsMapper extends BaseMapper { + +} + + + + diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/UserMapper.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/UserMapper.java new file mode 100644 index 0000000..decd54d --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/UserMapper.java @@ -0,0 +1,18 @@ +package com.cj.jiaqingjiayi.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.cj.jiaqingjiayi.model.domain.User; +import org.apache.ibatis.annotations.Mapper; + +/** +* @author ly +* +*/ +@Mapper +public interface UserMapper extends BaseMapper { + +} + + + + diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/UserRatingMapper.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/UserRatingMapper.java new file mode 100644 index 0000000..58647b9 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/mapper/UserRatingMapper.java @@ -0,0 +1,27 @@ +package com.cj.jiaqingjiayi.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.cj.jiaqingjiayi.model.domain.UserRating; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +/** +* @author 高木 +* @description 针对表【user_rating(用户评分)】的数据库操作Mapper +* @createDate 2024-12-02 14:14:23 +* @Entity com.cj.jiaqingjiayi.model.domain.UserRating +*/ +public interface UserRatingMapper extends BaseMapper { + + @Select("select avg(rating) from jqjy.user_rating where businessId = #{businessId}") + Double findAvgByBusinessId(@Param("businessId") Long businessId); + + @Select("select avg(manicuristRating) from jqjy.user_rating where manicuristId = #{manicuristId}") + Double findAvgByManicuristId(@Param("manicuristId") Long manicuristId); + + +} + + + + diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/CommonRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/CommonRequest.java new file mode 100644 index 0000000..61e7ab4 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/CommonRequest.java @@ -0,0 +1,25 @@ +package com.cj.jiaqingjiayi.model; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 通用请求 + */ +@Data +@SuppressWarnings("all") +public class CommonRequest implements Serializable { + + /** + * id + */ + private Long id; + + /** + * 美甲师Id + */ + private Long manicuristId; + + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/LoginUserDTO.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/LoginUserDTO.java new file mode 100644 index 0000000..13548c5 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/LoginUserDTO.java @@ -0,0 +1,13 @@ +package com.cj.jiaqingjiayi.model; + +import com.cj.jiaqingjiayi.model.domain.Business; +import com.cj.jiaqingjiayi.model.vo.LoginUserVO; +import lombok.Data; + +@Data +public class LoginUserDTO { + + LoginUserVO loginUserVO; + + Business business; +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/Appointments.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/Appointments.java new file mode 100644 index 0000000..1a16905 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/Appointments.java @@ -0,0 +1,105 @@ +package com.cj.jiaqingjiayi.model.domain; + +import com.baomidou.mybatisplus.annotation.*; + +import java.io.Serializable; +import java.util.Date; +import lombok.Data; + +/** + * 预约表 + * @TableName appointments + */ +@TableName(value ="appointments") +@Data +public class Appointments implements Serializable { + /** + * 预约ID + */ + @TableId(type = IdType.AUTO) + private Long id; + + /** + * 用户ID(关联用户表) + */ + private Long userId; + + /** + * 用户姓名 + */ + private String userName; + + /** + * 手机号 + */ + private String phone; + + /** + * 商家ID(关联商家表) + */ + private Long businessId; + + /** + * 商家名 + */ + private String businessName; + + /** + * 美甲师ID, 如果为空到店分配 + */ + private Long manicuristId; + + /** + * 美甲师名 + */ + private String manicuristName; + + /** + * 预约时间 + */ + private Date appointmentTime; + + /** + * 预约详细地址 + */ + private String appointmentAddress; + + /** + * 服务方式(0 - 线上, 1 - 到店) + */ + private Integer serviceMode; + + /** + * 备注 + */ + private String notes; + + /** + * 预约状态(0 - 已确认, 1 - 已完成, 2 - 已取消) + */ + private Integer status; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 更新时间 + */ + private Date updateTime; + + /** + * 是否删除 + */ + @TableLogic + private Integer isDelete; + + /** + *订单id + */ + private Long orderId; + + @TableField(exist = false) + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/Attribute.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/Attribute.java new file mode 100644 index 0000000..c4e467f --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/Attribute.java @@ -0,0 +1,56 @@ +package com.cj.jiaqingjiayi.model.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import java.util.Date; +import lombok.Data; + +/** + * 属性表 + * @TableName attribute + */ +@TableName(value ="attribute") +@Data +public class Attribute implements Serializable { + /** + * id + */ + @TableId(type = IdType.AUTO) + private Long id; + + /** + * 商家id + */ + private Long businessId; + + /** + * 规格id + */ + private Long specificationsId; + + /** + * 属性名称 + */ + private String attributeName; + + /** + * 属性状态:0在售,1停售 + */ + private Integer attributeStatus; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 更新时间 + */ + private Date updateTime; + + @TableField(exist = false) + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/Business.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/Business.java new file mode 100644 index 0000000..28d2a51 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/Business.java @@ -0,0 +1,106 @@ +package com.cj.jiaqingjiayi.model.domain; + +import com.baomidou.mybatisplus.annotation.*; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; +import lombok.Data; + +/** + * 商家 + */ +@TableName(value ="business") +@Data +public class Business implements Serializable { + /** + * id + */ + @TableId(type = IdType.AUTO) + private Long id; + + /** + * 用户id + */ + private Long userId; + + /** + * 门店名称 + */ + private String businessName; + + /** + * 门店头像 + */ + private String businessAvatar; + + /** + * 门店手机号 + */ + private String businessPhone; + + /** + * 店铺详细地址 + */ + private String address; + + /** + * 门店简介 + */ + private String businessProfile; + + /** + * 商家相册 + */ + private String businessImages; + + /** + * 分类id + */ + private Long categoryId; + + /** + * 开始营业时间 + */ + private String startBusiness; + + /** + * 结束营业时间 + */ + private String endBusiness; + + /** + * 状态:0审核中,1启用,2禁用 + */ + private Integer state; + + /** + * 店铺状态:0休业,1营业 + */ + private Integer storeStatus; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 更新时间 + */ + private Date updateTime; + + /** + * 服务方式 + */ + private Integer serviceMode; + + /** + * 是否删除 + */ + @TableLogic + private Integer isDelete; + + @TableField(exist = false) + @Serial + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/BusinessAuth.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/BusinessAuth.java new file mode 100644 index 0000000..7b3d439 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/BusinessAuth.java @@ -0,0 +1,65 @@ +package com.cj.jiaqingjiayi.model.domain; + +import com.baomidou.mybatisplus.annotation.*; + +import java.io.Serializable; +import java.util.Date; +import lombok.Data; + +/** + * 商家认证 + * @TableName business_auth + */ +@TableName(value ="business_auth") +@Data +public class BusinessAuth implements Serializable { + /** + * id + */ + @TableId(type = IdType.AUTO) + private Long id; + + /** + * 店铺id + */ + private Long businessId; + + /** + * 店主名 + */ + private String shopkeeper; + + /** + * 营业执照 + */ + private String license; + + /** + * 身份证正面 + */ + private String frontIdCard; + + /** + * 身份证反面 + */ + private String backIdCard; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 更新时间 + */ + private Date updateTime; + + /** + * 是否删除 + */ + @TableLogic + private Integer isDelete; + + @TableField(exist = false) + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/BusinessLevel.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/BusinessLevel.java new file mode 100644 index 0000000..7cbd2eb --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/BusinessLevel.java @@ -0,0 +1,52 @@ +package com.cj.jiaqingjiayi.model.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import lombok.Data; + +/** + * + * @TableName business_level + */ +@TableName(value ="business_level") +@Data +public class BusinessLevel implements Serializable { + /** + * id + */ + @TableId(type = IdType.AUTO) + private Long id; + + /** + * 商家id + */ + private Long businessId; + + /** + * 综合评分 + */ + private BigDecimal averageScore; + + /** + * 等级 + */ + private Integer level; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 更新时间 + */ + private Date updateTime; + + @TableField(exist = false) + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/Cart.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/Cart.java new file mode 100644 index 0000000..22c6db5 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/Cart.java @@ -0,0 +1,76 @@ +package com.cj.jiaqingjiayi.model.domain; + +import com.baomidou.mybatisplus.annotation.*; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import lombok.Data; + +/** + * 购物车表 + * @TableName cart + */ +@TableName(value ="cart") +@Data +public class Cart implements Serializable { + /** + * id + */ + @TableId(type = IdType.AUTO) + private Long id; + + /** + * 用户id + */ + private Long userId; + + /** + * 商家id + */ + private Long businessId; + + /** + * 加入购物车时间 + */ + private Date createTime; + + /** + * 更新时间 + */ + private Date updateTime; + + /** + * 商品id + */ + private Long commoditiesId; + + /** + * 商品数量 + */ + private Integer quantity; + + /** + * 当前选择规格的价格 + */ + private BigDecimal price; + + /** + * 小计(单价 * 数量) + */ + private BigDecimal subtotal; + + /** + * 已选规格属性列表 + */ + private String selectedOptions; + + /** + * 是否删除 + */ + @TableLogic + private Integer isDelete; + + @TableField(exist = false) + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/Collect.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/Collect.java new file mode 100644 index 0000000..418952e --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/Collect.java @@ -0,0 +1,35 @@ +package com.cj.jiaqingjiayi.model.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import lombok.Data; + +/** + * 收藏 + * @TableName collect + */ +@TableName(value ="collect") +@Data +public class Collect implements Serializable { + /** + * id + */ + @TableId(type = IdType.AUTO) + private Long id; + + /** + * 用户id + */ + private Long userId; + + /** + * 商家id + */ + private Long businessId; + + @TableField(exist = false) + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/Commodities.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/Commodities.java new file mode 100644 index 0000000..382910e --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/Commodities.java @@ -0,0 +1,75 @@ +package com.cj.jiaqingjiayi.model.domain; + +import com.baomidou.mybatisplus.annotation.*; + +import java.io.Serializable; +import java.util.Date; +import lombok.Data; + +/** + * 商品表 + * @TableName commodities + */ +@TableName(value ="commodities") +@Data +public class Commodities implements Serializable { + /** + * id + */ + @TableId(type = IdType.AUTO) + private Long id; + + /** + * 商家id + */ + private Long businessId; + + /** + * 商品分组id + */ + private Long commoditiesGroupId; + + /** + * 商品名称 + */ + private String commoditiesName; + + /** + * 商品图片 + */ + private String commoditiesImage; + + /** + * 商品价格 + */ + private Double commoditiesPrice; + + /** + * 库存数量 + */ + private Integer inventoryStatus; + + /** + * 商品状态:上架,下架 + */ + private String status; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 更新时间 + */ + private Date updateTime; + + /** + * 是否删除 + */ + @TableLogic + private Integer isDelete; + + @TableField(exist = false) + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/CommoditiesGroup.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/CommoditiesGroup.java new file mode 100644 index 0000000..dd43d5e --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/CommoditiesGroup.java @@ -0,0 +1,55 @@ +package com.cj.jiaqingjiayi.model.domain; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 商品分组表 + * @TableName commodities_group + */ +@TableName(value ="commodities_group") +@Data +public class CommoditiesGroup implements Serializable { + /** + * id + */ + @TableId(type = IdType.AUTO) + private Long id; + + /** + * 商家id + */ + private Long businessId; + + /** + * 商品分组名称 + */ + private String groupName; + + /** + * 是否置顶:0不置顶,1置顶 + */ + private Integer isTopping; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 更新时间 + */ + private Date updateTime; + + /** + * 是否删除 + */ + @TableLogic + private Integer isDelete; + + @TableField(exist = false) + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/Manicurist.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/Manicurist.java new file mode 100644 index 0000000..a4b9efd --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/Manicurist.java @@ -0,0 +1,107 @@ +package com.cj.jiaqingjiayi.model.domain; + +import com.baomidou.mybatisplus.annotation.*; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import lombok.Data; + +/** + * 美甲师表 + * @TableName manicurist + */ +@TableName(value ="manicurist") +@Data +public class Manicurist implements Serializable { + /** + * 美甲师唯一标识(主键,自增) + */ + @TableId(type = IdType.AUTO) + private Long id; + + /** + * 用户ID(关联用户表) + */ + private Long userId; + + /** + * 商家ID(关联商家表) + */ + private Long businessId; + + + /** + * 美甲师姓名 + */ + private String manicuristName; + + /** + * 性别 + */ + private Integer gender; + + /** + * 美甲师联系电话 + */ + private String phone; + + /** + * 美甲师电子邮件 + */ + private String email; + + /** + * 美甲师入职日期 + */ + private Date employment_date; + + /** + * 美甲师的专长(如法式美甲、彩绘等) + */ + private String specialties; + + /** + * 美甲师的服务评分 + */ + private BigDecimal rating; + + /** + * 美甲师的基本薪资 + */ + private BigDecimal salary; + + /** + * 审核状态,0-待审核,1-审核通过,2-审核不通过 + */ + private Integer auditStatus; + + /** + * 逻辑删除标志,0 表示未删除,1 表示已删除 + */ + @TableLogic + private Integer isDelete; + + /** + * 记录创建时间 + */ + private Date createTime; + + /** + * 记录更新时间 + */ + private Date updateTime; + + /** + * 美甲师头像的存储路径或链接 + */ + private String manicuristAvatar; + + /** + * 美甲师状态 + */ + private Integer manStatus; + + @TableField(exist = false) + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/ManicuristAuth.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/ManicuristAuth.java new file mode 100644 index 0000000..f3d25c1 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/ManicuristAuth.java @@ -0,0 +1,65 @@ +package com.cj.jiaqingjiayi.model.domain; + +import com.baomidou.mybatisplus.annotation.*; + +import java.io.Serializable; +import java.util.Date; +import lombok.Data; + +/** + * 美甲师认证表 + * @TableName manicurist_auth + */ +@TableName(value ="manicurist_auth") +@Data +public class ManicuristAuth implements Serializable { + /** + * 认证唯一标识(主键,自增) + */ + @TableId(type = IdType.AUTO) + private Long id; + + /** + * 美甲师ID(关联美甲师表) + */ + private Long artistId; + + /** + * 姓名 + */ + private String nameUser; + + /** + * 认证编号 + */ + private String certification_number; + + /** + * 发证机构 + */ + private String issuing_authority; + + /** + * 证书文件的存储路径或链接 + */ + private String certificate_path; + + /** + * 记录创建时间 + */ + private Date createTime; + + /** + * 记录更新时间 + */ + private Date updateTime; + + /** + * 逻辑删除标志,0 表示未删除,1 表示已删除 + */ + @TableLogic + private Integer isDelete; + + @TableField(exist = false) + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/Manicuristsign.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/Manicuristsign.java new file mode 100644 index 0000000..ffa5bb0 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/Manicuristsign.java @@ -0,0 +1,92 @@ +package com.cj.jiaqingjiayi.model.domain; + +import com.baomidou.mybatisplus.annotation.*; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import lombok.Data; + +/** + * 美甲师签约表 + * @TableName manicuristsign + */ +@TableName(value ="manicuristsign") +@Data +public class Manicuristsign implements Serializable { + + /** + * + */ + @TableId(type = IdType.AUTO) + private Long id; + + /** + * 姓名 + */ + private String name; + + /** + * 美甲师ID(关联美甲师表) + */ + private Long manicuristId; + + /** + * 门店名称 + */ + private String businessName; + + /** + * 商家id + */ + private Long businessId; + + /** + * 联系电话 + */ + private String phone; + + /** + * 期望工资薪资 + */ + private BigDecimal salary; + + /** + * 签约时长 + */ + private String signTime; + + /** + * 工龄 + */ + private String tenure; + + /** + * 美甲师等级 + */ + private String manicuristLv; + + /** + * 审核状态,0-待审核,1-审核通过,2-审核不通过 + */ + private Integer auditStatus; + + /** + * 逻辑删除标志,0 表示未删除,1 表示已删除 + */ + @TableLogic + private Integer isDelete; + + /** + * 记录创建时间 + */ + private Date createTime; + + /** + * 记录更新时间 + */ + private Date updateTime; + + @TableField(exist = false) + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/OrderItems.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/OrderItems.java new file mode 100644 index 0000000..ab3dd19 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/OrderItems.java @@ -0,0 +1,71 @@ +package com.cj.jiaqingjiayi.model.domain; + +import com.baomidou.mybatisplus.annotation.*; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import lombok.Data; + +/** + * 详细订单表 + * @TableName order_items + */ +@TableName(value ="order_items") +@Data +public class OrderItems implements Serializable { + /** + * 详细订单ID + */ + @TableId(type = IdType.AUTO) + private Long id; + + /** + * 订单ID(关联订单表) + */ + private Long orderId; + + /** + * 商品ID + */ + private Long commoditiesId; + + /** + * 商品数量 + */ + private Integer quantity; + + /** + * 商品单价 + */ + private BigDecimal price; + + /** + * 小计(单价 * 数量) + */ + private BigDecimal subtotal; + + /** + * 规格属性列表 + */ + private String attributeNames; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 更新时间 + */ + private Date updateTime; + + /** + * 是否删除 + */ + @TableLogic + private Integer isDelete; + + @TableField(exist = false) + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/Orders.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/Orders.java new file mode 100644 index 0000000..5ca20c1 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/Orders.java @@ -0,0 +1,107 @@ +package com.cj.jiaqingjiayi.model.domain; + +import com.baomidou.mybatisplus.annotation.*; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import lombok.Data; + +/** + * 订单表 + * @TableName orders + */ +@TableName(value ="orders") +@Data +public class Orders implements Serializable { + /** + * 订单ID + */ + @TableId(type = IdType.AUTO) + private Long id; + + /** + * 订单号 + */ + private String orderNumber; + + /** + * 用户ID(关联用户表) + */ + private Long userId; + + /** + * 商家id + */ + private Long businessId; + + /** + * 美甲师id + */ + @TableField(updateStrategy = FieldStrategy.IGNORED) + private Long manicuristId; + + /** + * 用户姓名 + */ + private String userName; + + /** + * 手机号 + */ + private String phone; + + /** + * 预约ID(关联预约表) + */ + private Long appointmentId; + + /** + * 订单总金额 + */ + private BigDecimal totalPrice; + + /** + * 服务方式(0 - 线上, 1 - 到店) + */ + private Integer serviceMode; + + /** + * 支付方式:0微信支付 + */ + private Integer payMethod; + + /** + * 支付状态(0 - 未支付, 1 - 已支付, 2 - 退款中, 3 - 已退款) + */ + private Integer paymentStatus; + + /** + * 抢单状态(0 - 未抢单, 1 - 已抢单) + */ + private Integer claimStatus; + + /** + * 备注 + */ + private String notes; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 更新时间 + */ + private Date updateTime; + + /** + * 是否删除 + */ + @TableLogic + private Integer isDelete; + + @TableField(exist = false) + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/Recruitment.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/Recruitment.java new file mode 100644 index 0000000..a49ed8a --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/Recruitment.java @@ -0,0 +1,61 @@ +package com.cj.jiaqingjiayi.model.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import java.util.Date; +import lombok.Data; + +/** + * 美甲师招聘信息表 + * @TableName recruitment + */ +@TableName(value ="recruitment") +@Data +public class Recruitment implements Serializable { + /** + * 主键id + */ + @TableId(type = IdType.AUTO) + private Long id; + + /** + * 商家id,关联business表 + */ + private Long businessId; + + /** + * 门店名称 + */ + private String businessName; + + /** + * 对美甲师的要求 + */ + private String requirements; + + /** + * 美甲师薪资,示例: 5k-10k/月 + */ + private String salary; + + /** + * 招聘美甲师数量 + */ + private Integer quantity; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 更新时间 + */ + private Date updateTime; + + @TableField(exist = false) + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/Specifications.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/Specifications.java new file mode 100644 index 0000000..5967517 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/Specifications.java @@ -0,0 +1,50 @@ +package com.cj.jiaqingjiayi.model.domain; + +import com.baomidou.mybatisplus.annotation.*; + +import java.io.Serializable; +import java.util.Date; +import lombok.Data; + +/** + * 规格表 + * @TableName specifications + */ +@TableName(value ="specifications") +@Data +public class Specifications implements Serializable { + /** + * id + */ + @TableId(type = IdType.AUTO) + private Long id; + + /** + * 商家id + */ + private Long businessId; + + /** + * 规格名称 + */ + private String specificationsName; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 更新时间 + */ + private Date updateTime; + + /** + * 是否删除 + */ + @TableLogic + private Integer isDelete; + + @TableField(exist = false) + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/SpecificationsCommodities.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/SpecificationsCommodities.java new file mode 100644 index 0000000..b493398 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/SpecificationsCommodities.java @@ -0,0 +1,50 @@ +package com.cj.jiaqingjiayi.model.domain; + +import com.baomidou.mybatisplus.annotation.*; + +import java.io.Serializable; +import java.util.Date; +import lombok.Data; + +/** + * 商品和规格的中间表 + * @TableName specifications_commodities + */ +@TableName(value ="specifications_commodities") +@Data +public class SpecificationsCommodities implements Serializable { + /** + * id + */ + @TableId(type = IdType.AUTO) + private Long id; + + /** + * 商品id + */ + private Long commoditiesId; + + /** + * 规格id + */ + private Long specificationsId; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 更新时间 + */ + private Date updateTime; + + /** + * 是否删除 + */ + @TableLogic + private Integer isDelete; + + @TableField(exist = false) + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/User.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/User.java new file mode 100644 index 0000000..ae417a3 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/User.java @@ -0,0 +1,97 @@ +package com.cj.jiaqingjiayi.model.domain; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 用户 + * @TableName user + */ +@TableName(value ="user") +@Data +public class User implements Serializable { + /** + * id + */ + @TableId(type = IdType.AUTO) + private Long id; + + + /** + * 支付宝开放平台id + */ + private String unionId; + + /** + * openId + */ + private String openId; + + /** + * 用户昵称 + */ + private String username; + + /** + * 账号 + */ + private String userAccount; + + /** + * 用户头像 + */ + private String avatarUrl; + + /** + * 性别 + */ + private Integer gender; + + /** + * 密码 + */ + private String userPassword; + + /** + * 电话 + */ + private String phone; + + /** + * 邮箱 + */ + private String email; + + /** + * 状态 0 -正常 + */ + private Integer userStatus; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * + */ + private Date updateTime; + + /** + * 是否删除 + */ + @TableLogic + private Integer isDelete; + + /** + * 用户角色 0 - 普通用户 1 - 管理员 + */ + private Integer userRole; + + + @TableField(exist = false) + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/UserRating.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/UserRating.java new file mode 100644 index 0000000..4ea0ffb --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/domain/UserRating.java @@ -0,0 +1,77 @@ +package com.cj.jiaqingjiayi.model.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 用户评分 + * @TableName user_rating + */ +@TableName(value ="user_rating") +@Data +public class UserRating implements Serializable { + /** + * id + */ + @TableId(type = IdType.AUTO) + private Long id; + + /** + * 商家id + */ + private Long businessId; + + /** + * 用户id + */ + private Long userId; + + /** + * 美甲师ID(关联美甲师表) + */ + private Long manicuristId; + + /** + * 订单id + */ + private Long orderId; + + /** + * 评分 + */ + private Integer rating; + + /** + * 美甲师评分 + */ + private Integer manicuristRating; + + /** + * 评论 + */ + private String review; + + /** + * 图片 + */ + private String picture; + + /** + * 商家回复 + */ + private String businessReview; + + /** + * 创建时间 + */ + private Date createTime; + + @TableField(exist = false) + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/enums/FileUploadBizEnum.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/enums/FileUploadBizEnum.java new file mode 100644 index 0000000..1e71ccf --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/enums/FileUploadBizEnum.java @@ -0,0 +1,53 @@ +package com.cj.jiaqingjiayi.model.enums; + +import lombok.Getter; +import org.apache.commons.lang3.ObjectUtils; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +@Getter +public enum FileUploadBizEnum { + USER_AVATAR("头像", "user_avatar"), + + DISHES_IMAGE("商品", "commodities"), + + CARD_IMAGE("证件", "card"), + + SYSTEM_IMAGE("系统", "system"); + + + private final String text; + + private final String value; + + FileUploadBizEnum(String text, String value) { + this.text = text; + this.value = value; + } + + /** + * 获取值列表 + */ + public static List getValues() { + return Arrays.stream(values()).map(item -> item.value).collect(Collectors.toList()); + } + + /** + * 根据 value获取枚举 + */ + public static FileUploadBizEnum getEnumByValue(String value) { + if (ObjectUtils.isEmpty(value)) { + return null; + } + + for (FileUploadBizEnum fileEnum : FileUploadBizEnum.values()) { + if (fileEnum.value.equals(value)) { + return fileEnum; + } + } + + return null; + } +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/AlipayTradeCreateRequest1.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/AlipayTradeCreateRequest1.java new file mode 100644 index 0000000..16fba2a --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/AlipayTradeCreateRequest1.java @@ -0,0 +1,16 @@ +package com.cj.jiaqingjiayi.model.request; + +import lombok.Data; + +@Data +public class AlipayTradeCreateRequest1 { + /** + * 订单id + */ + private Long id; + + /** + * 用户id + */ + private Long userId; +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/BusinessDTO.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/BusinessDTO.java new file mode 100644 index 0000000..b1277fe --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/BusinessDTO.java @@ -0,0 +1,13 @@ +package com.cj.jiaqingjiayi.model.request; + +import com.cj.jiaqingjiayi.model.domain.Business; +import com.cj.jiaqingjiayi.model.domain.BusinessAuth; +import lombok.Data; + +@Data +public class BusinessDTO { + + private Business business; + + private BusinessAuth businessAuth; +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/Commodities/CommoditiesAddRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/Commodities/CommoditiesAddRequest.java new file mode 100644 index 0000000..98d5a7b --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/Commodities/CommoditiesAddRequest.java @@ -0,0 +1,54 @@ +package com.cj.jiaqingjiayi.model.request.Commodities; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.List; + +@Data +public class CommoditiesAddRequest implements Serializable { + + @Serial + private static final long serialVersionUID = -8094188745265544921L; + /** + * 该商品的规格id列表 + */ + private List specificationsIds; + + /** + * 商家id + */ + private Long businessId; + + /** + * 商品分组id + */ + private Long commoditiesGroupId; + + /** + * 商品名称 + */ + private String commoditiesName; + + /** + * 商品图片 + */ + private String commoditiesImage; + + /** + * 商品价格 + */ + private Double commoditiesPrice; + + /** + * 库存数量 + */ + private Integer inventoryStatus; + + /** + * 商品状态:上架,下架 + */ + private String status; + +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/Commodities/CommoditiesDeleteRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/Commodities/CommoditiesDeleteRequest.java new file mode 100644 index 0000000..d160ed9 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/Commodities/CommoditiesDeleteRequest.java @@ -0,0 +1,20 @@ +package com.cj.jiaqingjiayi.model.request.Commodities; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +@Data +public class CommoditiesDeleteRequest implements Serializable { + + @Serial + private static final long serialVersionUID = 8880136450188924209L; + /** + * id + */ + private Long id; + + private Long businessId; + +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/Commodities/CommoditiesQueryRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/Commodities/CommoditiesQueryRequest.java new file mode 100644 index 0000000..9fae15a --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/Commodities/CommoditiesQueryRequest.java @@ -0,0 +1,41 @@ +package com.cj.jiaqingjiayi.model.request.Commodities; + + +import com.cj.jiaqingjiayi.model.request.PageRequest; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +@Data +public class CommoditiesQueryRequest extends PageRequest implements Serializable { + + @Serial + private static final long serialVersionUID = -483140126402634506L; + + /** + * 商品id + */ + private Long id; + + /** + * 商家id + */ + private Long businessId; + + /** + * 商品分组id + */ + private Long commoditiesGroupId; + + /** + * 商品名称 + */ + private String commoditiesName; + + /** + * 商品状态:上架,下架 + */ + private String status; + +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/Commodities/CommoditiesUpdateRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/Commodities/CommoditiesUpdateRequest.java new file mode 100644 index 0000000..e2e1a50 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/Commodities/CommoditiesUpdateRequest.java @@ -0,0 +1,61 @@ +package com.cj.jiaqingjiayi.model.request.Commodities; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.List; + +@Data +public class CommoditiesUpdateRequest implements Serializable { + + @Serial + private static final long serialVersionUID = 7891617409382838083L; + /** + * id + */ + private Long id; + + /** + * 该商品的规格id列表 + */ + private List specificationsIds; + + /** + * 商家id + */ + private Long businessId; + + /** + * 商品分组id + */ + private Long commoditiesGroupId; + + /** + * 商品名称 + */ + private String commoditiesName; + + /** + * 商品图片 + */ + private String commoditiesImage; + + /** + * 商品价格 + */ + private Double commoditiesPrice; + + + /** + * 库存数量 + */ + private Integer inventoryStatus; + + /** + * 商品状态:上架,下架 + */ + private String status; + + +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/CreateAlipayRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/CreateAlipayRequest.java new file mode 100644 index 0000000..80d533e --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/CreateAlipayRequest.java @@ -0,0 +1,15 @@ +package com.cj.jiaqingjiayi.model.request; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class CreateAlipayRequest implements Serializable { + private static final long serialVersionUID = 7255255543781378017L; + + + private Long orderNumber; + + +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/PageRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/PageRequest.java new file mode 100644 index 0000000..175cb90 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/PageRequest.java @@ -0,0 +1,34 @@ +package com.cj.jiaqingjiayi.model.request; + + +import com.cj.jiaqingjiayi.contant.CommonConstant; +import lombok.Data; + +/** + * 分页请求 + */ +@Data +public class PageRequest { + + /** + * 当前页号 + */ + private long current = 1; + + /** + * 页面大小 + */ + private long pageSize = 10; + + /** + * 排序字段 + */ + private String sortField; + + + /** + * 排序顺序(默认升序) + */ + private String sortOrder = CommonConstant.SORT_ORDER_ASC; + +} \ No newline at end of file diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/UploadFileRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/UploadFileRequest.java new file mode 100644 index 0000000..60b308e --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/UploadFileRequest.java @@ -0,0 +1,21 @@ +package com.cj.jiaqingjiayi.model.request; + + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +@Data +public class UploadFileRequest implements Serializable { + + /** + * 业务 + */ + @Schema(description = "业务标识,例如:user_avatar,commodities,card,system") + private String biz; + + @Serial + private static final long serialVersionUID = 5633491538829896175L; +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/UserDTO.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/UserDTO.java new file mode 100644 index 0000000..b98a297 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/UserDTO.java @@ -0,0 +1,12 @@ +package com.cj.jiaqingjiayi.model.request; + +import com.cj.jiaqingjiayi.model.domain.Manicurist; +import com.cj.jiaqingjiayi.model.vo.UserVO; +import lombok.Data; + +@Data +public class UserDTO { + private UserVO userVO; + + private Manicurist manicurist; +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/appointments/AppointmentsAddRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/appointments/AppointmentsAddRequest.java new file mode 100644 index 0000000..1a9d0c6 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/appointments/AppointmentsAddRequest.java @@ -0,0 +1,77 @@ +package com.cj.jiaqingjiayi.model.request.appointments; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; + +import java.awt.image.SampleModel; +import java.io.Serializable; +import java.util.Date; + +@Data +public class AppointmentsAddRequest implements Serializable { + /** + * 预约ID + */ + @TableId(type = IdType.AUTO) + private Long id; + + /** + * 用户ID(关联用户表) + */ + private Long userId; + + /** + * 用户姓名 + */ + private String userName; + + /** + * 手机号 + */ + private String phone; + + /** + * 商家ID(关联商家表) + */ + private Long businessId; + + /** + * 商家名 + */ + private String businessName; + + /** + * 美甲师ID, 如果为空到店分配 + */ + private Long manicuristId; + + /** + * 美甲师名 + */ + private String manicuristName; + + /** + * 预约时间 + */ + private String appointmentTime; + + /** + * 服务方式(0 - 到店, 1 - 上门) + */ + private Integer serviceMode; + + /** + * 支付方式:0微信支付 + */ + private Integer payMethod; + + /** + * 备注 + */ + private String notes; + + @TableField(exist = false) + private static final long serialVersionUID = 1L; +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/appointments/AppointmentsUpdateRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/appointments/AppointmentsUpdateRequest.java new file mode 100644 index 0000000..9465924 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/appointments/AppointmentsUpdateRequest.java @@ -0,0 +1,81 @@ +package com.cj.jiaqingjiayi.model.request.appointments; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +@Data +public class AppointmentsUpdateRequest implements Serializable { + + /** + * 预约ID + */ + private Long id; + + /** + * 用户ID(关联用户表) + */ + private Long userId; + + /** + * 用户姓名 + */ + private String userName; + + /** + * 手机号 + */ + private String phone; + + /** + * 商家ID(关联商家表) + */ + private Long businessId; + + /** + * 商家名 + */ + private String businessName; + + /** + * 美甲师ID, 如果为空到店分配 + */ + private Long manicuristId; + + /** + * 美甲师名 + */ + private String manicuristName; + + /** + * 预约时间 + */ + private Date appointmentTime; + + /** + * 服务方式(0 - 线上, 1 - 到店) + */ + private Integer serviceMode; + + /** + * 备注 + */ + private String notes; + + /** + * 预约状态(0 - 已确认, 1 - 已完成, 2 - 已取消) + */ + private Integer status; + + /** + *订单id + */ + private Long orderId; + + @TableField(exist = false) + private static final long serialVersionUID = 1L; +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/attribute/AttributeAddRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/attribute/AttributeAddRequest.java new file mode 100644 index 0000000..1ce77bd --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/attribute/AttributeAddRequest.java @@ -0,0 +1,29 @@ +package com.cj.jiaqingjiayi.model.request.attribute; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + + +/** + * 属性添加请求体 + * + * @author xy + */ +@Data +public class AttributeAddRequest implements Serializable { + + /** + * 属性名称 + */ + private String attributeName; + + /** + * 属性状态:0在售,1停售 + */ + private Integer attributeStatus; + + @Serial + private static final long serialVersionUID = 1L; +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/attribute/AttributeUpdateRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/attribute/AttributeUpdateRequest.java new file mode 100644 index 0000000..d698d8b --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/attribute/AttributeUpdateRequest.java @@ -0,0 +1,31 @@ +package com.cj.jiaqingjiayi.model.request.attribute; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * @author xy + */ +@Data +public class AttributeUpdateRequest implements Serializable { + + /** + * 属性id + */ + private Long id; + + /** + * 属性名称 + */ + private String attributeName; + + /** + * 属性状态:0在售,1停售 + */ + private Integer attributeStatus; + + @Serial + private static final long serialVersionUID = 1L; +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/business/BusinessAddRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/business/BusinessAddRequest.java new file mode 100644 index 0000000..5499e90 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/business/BusinessAddRequest.java @@ -0,0 +1,70 @@ +package com.cj.jiaqingjiayi.model.request.business; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 商家添加请求 + * + * @TableName business + */ +@Data +public class BusinessAddRequest implements Serializable { + + + @Serial + private static final long serialVersionUID = 7762081065466040395L; + + /** + * 账号 + */ + private String userAccount; + + /** + * 密码 + */ + private String userPassword; + + /** + * 服务方式 + */ + private Integer serviceMode; + + /** + * 门店名 + */ + private String businessName; + + /** + * 门店手机号 + */ + private String businessPhone; + + /** + * 店铺详细地址 + */ + private String address; + + /** + * 店主名 + */ + private String shopkeeper; + + /** + * 营业执照 + */ + private String license; + + /** + * 身份证正面 + */ + private String frontIdCard; + + /** + * 身份证反面 + */ + private String backIdCard; + +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/business/BusinessQueryRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/business/BusinessQueryRequest.java new file mode 100644 index 0000000..54bedd1 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/business/BusinessQueryRequest.java @@ -0,0 +1,67 @@ +package com.cj.jiaqingjiayi.model.request.business; + + +import com.cj.jiaqingjiayi.model.request.PageRequest; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 商家查询请求体 + * + * @TableName business + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class BusinessQueryRequest extends PageRequest implements Serializable { + + /** + * id + */ + private Long id; + + /** + * 用户id + */ + private Long userId; + + /** + * 门店名称 + */ + private String businessName; + + /** + * 服务方式 + */ + private Integer serviceMode; + + /** + * 门店地址 + */ + private String address; + + /** + * 门店简介 + */ + private String businessProfile; + + /** + * 分类id + */ + private Long categoryId; + + /** + * 状态:0禁用,1启用 + */ + private Integer state; + + /** + * 店铺状态:0休业,1营业 + */ + private Integer storeStatus; + + @Serial + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/business/BusinessUpdateRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/business/BusinessUpdateRequest.java new file mode 100644 index 0000000..4c6901c --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/business/BusinessUpdateRequest.java @@ -0,0 +1,88 @@ +package com.cj.jiaqingjiayi.model.request.business; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 商家更新请求 + * + */ +@Data +public class BusinessUpdateRequest implements Serializable { + + @Serial + private static final long serialVersionUID = 2615860827104965045L; + + /** + * id + */ + private Long id; + + /** + * 用户id + */ + private Long userId; + + /** + * 门店昵称 + */ + private String businessName; + + /** + * 门店头像 + */ + private String businessAvatar; + + /** + * 门店手机号 + */ + private String businessPhone; + + /** + * 店铺详细地址 + */ + private String address; + + /** + * 门店简介 + */ + private String businessProfile; + + /** + * 商家相册 + */ + private String businessImages; + + /** + * 服务方式 + */ + private Integer serviceMode; + + /** + * 分类id + */ + private Long categoryId; + + /** + * 开始营业时间 + */ + private String startBusiness; + + /** + * 结束营业时间 + */ + private String endBusiness; + + /** + * 状态:0禁用,1启用 + */ + private Integer state; + + /** + * 店铺状态:0休业,1营业 + */ + private Integer storeStatus; + +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/cart/CartAddRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/cart/CartAddRequest.java new file mode 100644 index 0000000..4e9e770 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/cart/CartAddRequest.java @@ -0,0 +1,42 @@ +package com.cj.jiaqingjiayi.model.request.cart; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * @author xy + */ +@Data +public class CartAddRequest implements Serializable { + + @Serial + private static final long serialVersionUID = 2466273435949197859L; + + /** + * 商家id + */ + private Long businessId; + + /** + * 用户id + */ + private Long userId; + + /** + * 关联的商品id + */ + private Long commoditiesId; + + /** + * 商品数量 + */ + private Integer quantity; + + /** + * 已选规格属性列表 + */ + private String selectedOptions = ""; + +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/cart/CartDeleteRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/cart/CartDeleteRequest.java new file mode 100644 index 0000000..0ce4d8f --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/cart/CartDeleteRequest.java @@ -0,0 +1,29 @@ +package com.cj.jiaqingjiayi.model.request.cart; + +import com.alipay.api.domain.PracticeEntity; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * @author xy + */ +@Data +public class CartDeleteRequest implements Serializable { + + + @Serial + private static final long serialVersionUID = -8695320813786782366L; + /** + * id + */ + private Long id; + + /** + * 用户id + */ + private Long userId; + + +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/cart/CartQueryRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/cart/CartQueryRequest.java new file mode 100644 index 0000000..ca5d22c --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/cart/CartQueryRequest.java @@ -0,0 +1,27 @@ +package com.cj.jiaqingjiayi.model.request.cart; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * @author xy + */ +@Data +public class CartQueryRequest implements Serializable { + + + @Serial + private static final long serialVersionUID = -3655808874226929017L; + /** + * id + */ + private Long id; + + /** + * 用户Id + */ + private Long userId; + +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/cart/CartUpdateRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/cart/CartUpdateRequest.java new file mode 100644 index 0000000..b5d2b94 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/cart/CartUpdateRequest.java @@ -0,0 +1,48 @@ +package com.cj.jiaqingjiayi.model.request.cart; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * @author xy + */ +@Data +public class CartUpdateRequest implements Serializable { + + + @Serial + private static final long serialVersionUID = -8867758794571915534L; + /** + * id + */ + private Long id; + + /** + * 商家id + */ + private Long businessId; + + /** + * 关联的商品id + */ + private Long commoditiesId; + + /** + * 商品数量 + */ + private Integer quantity; + + /** + * 是否加入有规格的商品 + */ + private Boolean isSelectedOptions = false; + + /** + * 已选规格属性列表 + */ + private String selectedOptions = ""; + + +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/collect/CollectAddRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/collect/CollectAddRequest.java new file mode 100644 index 0000000..56459ed --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/collect/CollectAddRequest.java @@ -0,0 +1,19 @@ +package com.cj.jiaqingjiayi.model.request.collect; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class CollectAddRequest implements Serializable { + + /** + * 商家id + */ + private Long businessId; + + /** + * 用户id + */ + private Long userId; +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/group/AddGroupRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/group/AddGroupRequest.java new file mode 100644 index 0000000..2050195 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/group/AddGroupRequest.java @@ -0,0 +1,24 @@ +package com.cj.jiaqingjiayi.model.request.group; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; + +@Data +public class AddGroupRequest { + + /** + * 商家id + */ + private Long businessId; + + /** + * 商品分组名称 + */ + private String groupName; + + /** + * 是否置顶:0不置顶,1置顶 + */ + private Integer isTopping; +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/manicurist/AdminManicuristAddRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/manicurist/AdminManicuristAddRequest.java new file mode 100644 index 0000000..27b0d69 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/manicurist/AdminManicuristAddRequest.java @@ -0,0 +1,73 @@ +package com.cj.jiaqingjiayi.model.request.manicurist; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +public class AdminManicuristAddRequest implements Serializable { + @Serial + private static final long serialVersionUID = -1651547088747557889L; + /** + * 账号 + */ + private String userAccount; + + /** + * 密码 + */ + private String userPassword; + + /** + * 美甲师姓名 + */ + private String manicuristName; + + /** + * 性别 + */ + private Integer gender; + + /** + * 美甲师联系电话 + */ + private String phone; + + /** + * 美甲师电子邮件 + */ + private String email; + + /** + * 美甲师的专长(如法式美甲、彩绘等) + */ + private String specialties; + + /** + * 美甲师的服务评分 + */ + private BigDecimal rating; + + /** + * 美甲师的基本薪资 + */ + private BigDecimal salary; + + /** + * 认证编号 + */ + private String certification_number; + + /** + * 发证机构 + */ + private String issuing_authority; + + /** + * 证书文件的存储路径或链接 + */ + private String certificate_path; + +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/manicurist/ManicuristAddRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/manicurist/ManicuristAddRequest.java new file mode 100644 index 0000000..b6f1233 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/manicurist/ManicuristAddRequest.java @@ -0,0 +1,70 @@ +package com.cj.jiaqingjiayi.model.request.manicurist; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +public class ManicuristAddRequest implements Serializable { + + @Serial + private static final long serialVersionUID = 1396365359119727782L; + + /** + * 当前用户id + */ + private Long userId; + + /** + * 美甲师姓名 + */ + private String manicuristName; + + /** + * 姓名 + */ + private String nameUser; + + /** + * 性别 + */ + private Integer gender; + + /** + * 美甲师头像的存储路径或链接 + */ + private String manicuristAvatar; + + /** + * 美甲师联系电话 + */ + private String phone; + + /** + * 美甲师电子邮件 + */ + private String email; + + /** + * 美甲师的专长(如法式美甲、彩绘等) + */ + private String specialties; + + /** + * 认证编号 + */ + private String certification_number; + + /** + * 发证机构 + */ + private String issuing_authority; + + /** + * 证书文件的存储路径或链接 + */ + private String certificate_path; + +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/manicurist/ManicuristQueryRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/manicurist/ManicuristQueryRequest.java new file mode 100644 index 0000000..a51ed80 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/manicurist/ManicuristQueryRequest.java @@ -0,0 +1,54 @@ +package com.cj.jiaqingjiayi.model.request.manicurist; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.cj.jiaqingjiayi.model.request.PageRequest; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +@Data +@EqualsAndHashCode(callSuper = true) +public class ManicuristQueryRequest extends PageRequest implements Serializable { + + @Serial + private static final long serialVersionUID = -5433330530903928177L; + /** + * 商家ID(关联商家表) + */ + private Long businessId; + + /** + * 美甲师姓名 + */ + private String manicuristName; + + /** + * 性别 + */ + private Integer gender; + + /** + * 美甲师联系电话 + */ + private String phone; + + /** + * 美甲师电子邮件 + */ + private String email; + + /** + * 美甲师入职日期 + */ + private Date employment_date; + + /** + * 美甲师的专长(如法式美甲、彩绘等) + */ + private String specialties; +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/manicurist/ManicuristUpdateRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/manicurist/ManicuristUpdateRequest.java new file mode 100644 index 0000000..44c72a8 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/manicurist/ManicuristUpdateRequest.java @@ -0,0 +1,76 @@ +package com.cj.jiaqingjiayi.model.request.manicurist; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +@Data +public class ManicuristUpdateRequest implements Serializable { + @Serial + private static final long serialVersionUID = -5199566725120312494L; + /** + * 美甲师唯一标识(主键,自增) + */ + private Long id; + + /** + * 商家ID(关联商家表) + */ + private Long businessId; + + /** + * 美甲师姓名 + */ + private String manicuristName; + + /** + * 性别 + */ + private Integer gender; + + /** + * 美甲师联系电话 + */ + private String phone; + + /** + * 美甲师电子邮件 + */ + private String email; + + /** + * 美甲师状态 0 表示正常 1 表示禁用 + */ + private Long manStatus; + + /** + * 美甲师入职日期 + */ + private Date employment_date; + + /** + * 美甲师的专长(如法式美甲、彩绘等) + */ + private String specialties; + + /** + * 美甲师的基本薪资 + */ + private BigDecimal salary; + + /** + * 审核状态,0-待审核,1-审核通过,2-审核不通过 + */ + private Integer auditStatus; + + /** + * 美甲师头像的存储路径或链接 + */ + private String manicuristAvatar; + +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/manicurist/MyManicuristUpdateRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/manicurist/MyManicuristUpdateRequest.java new file mode 100644 index 0000000..32fe0f9 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/manicurist/MyManicuristUpdateRequest.java @@ -0,0 +1,52 @@ +package com.cj.jiaqingjiayi.model.request.manicurist; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +@Data +public class MyManicuristUpdateRequest implements Serializable { + + @Serial + private static final long serialVersionUID = -3025700511375845200L; + /** + * 美甲师姓名 + */ + private String manicuristName; + + /** + * 用户Id + */ + private Long userId; + + /** + * 性别 + */ + private Integer gender; + + /** + * 美甲师联系电话 + */ + private String phone; + + /** + * 美甲师电子邮件 + */ + private String email; + + + /** + * 美甲师的专长(如法式美甲、彩绘等) + */ + private String specialties; + + /** + * 美甲师头像的存储路径或链接 + */ + private String manicuristAvatar; +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/manicurist/UserManicuristQueryRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/manicurist/UserManicuristQueryRequest.java new file mode 100644 index 0000000..5f018ed --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/manicurist/UserManicuristQueryRequest.java @@ -0,0 +1,19 @@ +package com.cj.jiaqingjiayi.model.request.manicurist; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +@Data +public class UserManicuristQueryRequest implements Serializable { + + @Serial + private static final long serialVersionUID = 1; + + /** + * 商家id + */ + private Integer businessId; + +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/manicuristSign/ManicuristSignAddRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/manicuristSign/ManicuristSignAddRequest.java new file mode 100644 index 0000000..b24529b --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/manicuristSign/ManicuristSignAddRequest.java @@ -0,0 +1,56 @@ +package com.cj.jiaqingjiayi.model.request.manicuristSign; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class ManicuristSignAddRequest { + + /** + * 姓名 + */ + private String name; + + /** + * 美甲师ID(关联美甲师表) + */ + private Long manicuristId; + + /** + * 店铺Id + */ + private Long businessId; + + /** + * 门店名称 + */ + private String businessName; + + /** + * 联系电话 + */ + private String phone; + + /** + * 期望工资薪资 + */ + private BigDecimal salary; + + /** + * 签约时长 + */ + private String signTime; + + /** + * 工龄 + */ + private String tenure; + + /** + * 美甲师等级 + */ + private String manicuristLv; +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/manicuristSign/succManicuristSignRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/manicuristSign/succManicuristSignRequest.java new file mode 100644 index 0000000..1902caf --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/manicuristSign/succManicuristSignRequest.java @@ -0,0 +1,17 @@ +package com.cj.jiaqingjiayi.model.request.manicuristSign; + +import lombok.Data; + +@Data +public class succManicuristSignRequest { + + /** + * 美甲师Id + */ + private Long manicuristId; + + /** + * 商家Id + */ + private Long businessId; +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/order/MyOrderQueryRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/order/MyOrderQueryRequest.java new file mode 100644 index 0000000..c58f66a --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/order/MyOrderQueryRequest.java @@ -0,0 +1,60 @@ +package com.cj.jiaqingjiayi.model.request.order; + + +import com.cj.jiaqingjiayi.model.request.PageRequest; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 我的订单查询请求 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class MyOrderQueryRequest extends PageRequest implements Serializable { + + /** + * id + */ +// private Long id; + + /** + * 用户id + */ + private Long userId; + + /** + * 用户角色 0 - 普通用户 1 - 管理员 2 - 商家 + */ + private Integer userRole; + + /** + * 抢单状态(0 - 未抢单, 1 - 已抢单) + */ + private Integer claimStatus; + + /** + * 支付状态(0 - 未支付, 1 - 已支付, 2 - 退款中, 3 - 已退款) + */ + private Integer paymentStatus; + + /** + * 服务方式(0 - 线上, 1 - 到店) + */ + private Integer serviceMode; + + /** + * 开始时间 + */ + private String startTime; + + /** + * 结束时间 + */ + private String endTime; + + @Serial + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/order/OrderAddRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/order/OrderAddRequest.java new file mode 100644 index 0000000..18677f2 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/order/OrderAddRequest.java @@ -0,0 +1,96 @@ +package com.cj.jiaqingjiayi.model.request.order; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.List; + +/** + * 订单创建请求 + */ +@Data +public class OrderAddRequest implements Serializable { + + /** + * 姓名 + */ + private String userName; + + /** + * 手机号 + */ + private String phone; + + /** + * 商家id + */ + private Long businessId; + + /** + * 用户id + */ + private Long userId; + + /** + * 订单实际总价 + */ + private BigDecimal totalPrice; + + /** + * 支付方式 + */ + private Integer payMethod; + + /** + * 服务方式(0 - 线上, 1 - 到店) + */ + private Integer serviceMode; + + /** + * 备注 + */ + private String notes; + + /** + * 订单详情 + */ + private List orderItemsAddRequest; + + /** + * 预约ID + */ +// @TableId(type = IdType.AUTO) +// private Long id; + + /** + * 商家名 + */ + private String businessName; + + /** + * 美甲师ID, 如果为空到店分配 + */ + private Long manicuristId; + + /** + * 美甲师名 + */ + private String manicuristName; + + /** + * 预约时间 + */ + private String appointmentTime; + + /** + * 预约详细地址 + */ + private String appointmentAddress; + + @Serial + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/order/OrderCancelRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/order/OrderCancelRequest.java new file mode 100644 index 0000000..3f2a8a0 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/order/OrderCancelRequest.java @@ -0,0 +1,16 @@ +package com.cj.jiaqingjiayi.model.request.order; + +import lombok.Data; + +@Data +public class OrderCancelRequest { + /** + * id + */ + private Long id; + + /** + * 用户Id + */ + private Long userId; +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/order/OrderCountRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/order/OrderCountRequest.java new file mode 100644 index 0000000..93d5c6b --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/order/OrderCountRequest.java @@ -0,0 +1,43 @@ +package com.cj.jiaqingjiayi.model.request.order; + +import lombok.Data; + +@Data +public class OrderCountRequest { + + /** + * 商家id + */ + private Long businessId; + + /** + * 商家名称 + */ + private String businessName; + + /** + * 商家状态 + */ + private Long businessState; + + /** + * 类型 + */ + private String type; + + /** + * 支付状态 + */ + private Integer paymentStatus; + + /** + * 开始时间 + */ + private String startTime; + + /** + * 结束时间 + */ + private String endTime; + +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/order/OrderItemsAddRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/order/OrderItemsAddRequest.java new file mode 100644 index 0000000..5d3651c --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/order/OrderItemsAddRequest.java @@ -0,0 +1,33 @@ +package com.cj.jiaqingjiayi.model.request.order; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 订单详情创建请求 + */ +@Data +public class OrderItemsAddRequest implements Serializable { + + /** + * 关联的商品id + */ + private Long commoditiesId; + + /** + * 购买数量 + */ + private Integer quantity; + + /** + * 规格属性列表 + */ + private String attributeNames; + + @Serial + @TableField(exist = false) + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/order/OrderQueryRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/order/OrderQueryRequest.java new file mode 100644 index 0000000..73e0a7d --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/order/OrderQueryRequest.java @@ -0,0 +1,69 @@ +package com.cj.jiaqingjiayi.model.request.order; + + +import com.cj.jiaqingjiayi.model.request.PageRequest; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 订单查询请求 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class OrderQueryRequest extends PageRequest implements Serializable { + /** + * id + */ + private Long id; + + /** + * 下单用户id + */ + private Long userId; + + /** + * 商家id + */ + private Long businessId; + + /** + * 美甲师id + */ + private Long manicuristId; + + /** + * 订单号 + */ + private String orderNumber; + + /** + * 抢单状态(0 - 未抢单, 1 - 已抢单) + */ + private Integer claimStatus; + + /** + * 支付状态(0 - 未支付, 1 - 已支付, 2 - 退款中, 3 - 已退款) + */ + private Integer paymentStatus; + + /** + * 服务方式(0 - 线上, 1 - 到店) + */ + private Integer serviceMode; + + /** + * 开始时间 + */ + private String startTime; + + /** + * 结束时间 + */ + private String endTime; + + @Serial + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/recruitment/RecruitmentAddRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/recruitment/RecruitmentAddRequest.java new file mode 100644 index 0000000..c351c6f --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/recruitment/RecruitmentAddRequest.java @@ -0,0 +1,28 @@ +package com.cj.jiaqingjiayi.model.request.recruitment; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; + +@Data +public class RecruitmentAddRequest { + /** + * 门店名称 + */ + private String businessName; + + /** + * 对美甲师的要求 + */ + private String requirements; + + /** + * 美甲师薪资,示例: 5k-10k/月 + */ + private String salary; + + /** + * 招聘美甲师数量 + */ + private Integer quantity; +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/recruitment/RecruitmentUpdateRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/recruitment/RecruitmentUpdateRequest.java new file mode 100644 index 0000000..6ebab72 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/recruitment/RecruitmentUpdateRequest.java @@ -0,0 +1,34 @@ +package com.cj.jiaqingjiayi.model.request.recruitment; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; + +@Data +public class RecruitmentUpdateRequest { + + /** + * 主键id + */ + private Long id; + + /** + * 门店名称 + */ + private String businessName; + + /** + * 对美甲师的要求 + */ + private String requirements; + + /** + * 美甲师薪资,示例: 5k-10k/月 + */ + private String salary; + + /** + * 招聘美甲师数量 + */ + private Integer quantity; +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/specifications/SpecificationsAddRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/specifications/SpecificationsAddRequest.java new file mode 100644 index 0000000..3a2773f --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/specifications/SpecificationsAddRequest.java @@ -0,0 +1,26 @@ +package com.cj.jiaqingjiayi.model.request.specifications; + + +import com.cj.jiaqingjiayi.model.request.attribute.AttributeAddRequest; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.List; + +@Data +public class SpecificationsAddRequest implements Serializable { + + /** + * 规格名称 + */ + private String specificationsName; + + /** + * 属性请求体列表 + */ + private List attributeAddRequests; + + @Serial + private static final long serialVersionUID = -2573217224030065261L; +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/specifications/SpecificationsMyQueryRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/specifications/SpecificationsMyQueryRequest.java new file mode 100644 index 0000000..282e1e5 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/specifications/SpecificationsMyQueryRequest.java @@ -0,0 +1,21 @@ +package com.cj.jiaqingjiayi.model.request.specifications; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 用户删除请求 + * + * @author bsz + */ +@Data +public class SpecificationsMyQueryRequest implements Serializable { + + /** + * id + */ + private Long id; + + private static final long serialVersionUID = 1L; +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/specifications/SpecificationsQueryRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/specifications/SpecificationsQueryRequest.java new file mode 100644 index 0000000..101da1d --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/specifications/SpecificationsQueryRequest.java @@ -0,0 +1,21 @@ +package com.cj.jiaqingjiayi.model.request.specifications; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * @author ASUS + */ +@Data +public class SpecificationsQueryRequest implements Serializable { + + /** + * 规格名称 + */ + private String specificationsName; + + @Serial + private static final long serialVersionUID = 1L; +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/specifications/SpecificationsUpdateRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/specifications/SpecificationsUpdateRequest.java new file mode 100644 index 0000000..ff838a6 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/specifications/SpecificationsUpdateRequest.java @@ -0,0 +1,31 @@ +package com.cj.jiaqingjiayi.model.request.specifications; + + +import com.cj.jiaqingjiayi.model.request.attribute.AttributeUpdateRequest; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.List; + +@Data +public class SpecificationsUpdateRequest implements Serializable { + + /** + * 规格id + */ + private Long id; + + /** + * 规格名称 + */ + private String specificationsName; + + /** + * 属性请求体列表 + */ + private List attributeUpdateRequests; + + @Serial + private static final long serialVersionUID = -2573217224030065261L; +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/user/UserAddRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/user/UserAddRequest.java new file mode 100644 index 0000000..87d3c14 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/user/UserAddRequest.java @@ -0,0 +1,41 @@ +package com.cj.jiaqingjiayi.model.request.user; + +import lombok.Data; + +import java.io.Serializable; + + +/** + * + * 用户创建请求 + * + * @author gm + */ +@Data +public class UserAddRequest implements Serializable { + + + private static final long serialVersionUID = 3646996345132590650L; + /** + * 用户昵称 + */ + private String username; + + /** + * 用户账号 + */ + private String userAccount; + + /** + * 用户密码 + */ + private String userPassword; + + /** + * 用户头像 + */ + private String avatarUrl; + + +} + diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/user/UserDeleteRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/user/UserDeleteRequest.java new file mode 100644 index 0000000..2773221 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/user/UserDeleteRequest.java @@ -0,0 +1,16 @@ +package com.cj.jiaqingjiayi.model.request.user; + +import lombok.Data; + +import java.io.Serializable; + + +//用户删除请求 +@Data +public class UserDeleteRequest implements Serializable { + + + private Long id; + + private static final long serialVersionUID = -8544256059657791194L; +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/user/UserLoginRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/user/UserLoginRequest.java new file mode 100644 index 0000000..c5fe2c7 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/user/UserLoginRequest.java @@ -0,0 +1,26 @@ +package com.cj.jiaqingjiayi.model.request.user; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 用户登录请求体 + */ +@Data +public class UserLoginRequest implements Serializable { + + private static final long serialVersionUID = 3191241716373120793L; + + /** + * 用户账号 + */ + private String userAccount; + + /** + * 用户密码 + */ + private String userPassword; + +} + diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/user/UserRegisterRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/user/UserRegisterRequest.java new file mode 100644 index 0000000..251f359 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/user/UserRegisterRequest.java @@ -0,0 +1,30 @@ +package com.cj.jiaqingjiayi.model.request.user; + + +import lombok.Data; + +import java.io.Serializable; + +/** + * 用户注册请求体参数 + * + */ +@Data +public class UserRegisterRequest implements Serializable { + /** + * 防止序列化出现冲突 + */ + private static final long serialVersionUID = 3553317334228624372L; + /** + * 用户账号 + */ + private String userAccount; + /** + * 用户密码 + */ + private String userPassword; + /** + * 校验密码 + */ + private String checkPassword; +} \ No newline at end of file diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/user/UserSearchRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/user/UserSearchRequest.java new file mode 100644 index 0000000..eaa092b --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/user/UserSearchRequest.java @@ -0,0 +1,67 @@ +package com.cj.jiaqingjiayi.model.request.user; + + + +import com.cj.jiaqingjiayi.model.request.PageRequest; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + *用户查询请求 + */ +@Data +public class UserSearchRequest extends PageRequest implements Serializable { + /** + * 用户昵称 + */ + private String username; + + /** + * 账号 + */ + private String userAccount; + + /** + * 用户头像 + */ + private String avatarUrl; + + /** + * 性别 男 女 + */ + private Integer gender; + + + /** + * 电话 + */ + private String phone; + + /** + * 邮箱 + */ + private String email; + + /** + * 状态 0-正常 1-注销 2-封号 + */ + private Integer userStatus; + + + /** + * 更新时间 + */ + private Date updateTime; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * + */ + private Integer userRole; +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/user/UserUpdateMyRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/user/UserUpdateMyRequest.java new file mode 100644 index 0000000..e6964ae --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/user/UserUpdateMyRequest.java @@ -0,0 +1,41 @@ +package com.cj.jiaqingjiayi.model.request.user; + + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class UserUpdateMyRequest implements Serializable { + + private static final long serialVersionUID = 1864770371473794809L; + + private Long id; + + /** + * 用户名 + */ + private String username; + + /** + * 用户头像 + */ + private String avatarUrl; + + /** + * 性别 男 女 + */ + private Integer gender; + + /** + * 电话 + */ + private String phone; + + /** + * 邮箱 + */ + private String email; + + +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/user/UserUpdatePasswordRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/user/UserUpdatePasswordRequest.java new file mode 100644 index 0000000..654cef0 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/user/UserUpdatePasswordRequest.java @@ -0,0 +1,29 @@ +package com.cj.jiaqingjiayi.model.request.user; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author Shier + * CreateTime 2023/5/11 12:24 + */ +@Data +public class UserUpdatePasswordRequest implements Serializable { + + + private static final long serialVersionUID = 5430586373534242807L; + /** + * 原密码 + */ + private String userPassword; + + /** + * 新密码 + */ + private String newPassword; + /** + * 确认新密码 + */ + private String checkNewPassword; +} \ No newline at end of file diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/user/UserUpdateRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/user/UserUpdateRequest.java new file mode 100644 index 0000000..e7b9cc5 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/user/UserUpdateRequest.java @@ -0,0 +1,58 @@ +package com.cj.jiaqingjiayi.model.request.user; + + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 用户更新请求 + * + * @author gm + */ +@Data +public class UserUpdateRequest implements Serializable { + + private Long id; + /** + * 用户昵称 + */ + private String username; + + /** + * 用户头像 + */ + private String avatarUrl; + + /** + * 性别 + */ + private Integer gender; + + /** + * 电话 + */ + private String phone; + + /** + * 邮箱 + */ + private String email; + + /** + * 状态 0 - 正常 1 - 封禁 + */ + private Integer userStates; + + /** + * 更新时间 + */ + private Date updateTime; + + + /** + * 用户 or 管理员 + */ + private Integer userRole; +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/userRating/UserRatingAddRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/userRating/UserRatingAddRequest.java new file mode 100644 index 0000000..b6e8cd0 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/userRating/UserRatingAddRequest.java @@ -0,0 +1,49 @@ +package com.cj.jiaqingjiayi.model.request.userRating; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class UserRatingAddRequest implements Serializable { + + /** + * 商家id + */ + private Long businessId; + + /** + * 用户id + */ + private Long userId; + + /** + * 美甲师ID(关联美甲师表) + */ + private Long manicuristId; + + /** + * 订单id + */ + private Long orderId; + + /** + * 图片 + */ + private String picture; + + /** + * 评分 + */ + private Integer rating; + + /** + * 美甲师评分 + */ + private Integer manicuristRating; + + /** + * 评论 + */ + private String review; +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/userRating/UserRatingReviewRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/userRating/UserRatingReviewRequest.java new file mode 100644 index 0000000..8aeee8c --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/userRating/UserRatingReviewRequest.java @@ -0,0 +1,24 @@ +package com.cj.jiaqingjiayi.model.request.userRating; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +@Data +public class UserRatingReviewRequest implements Serializable { + + /** + * id + */ + private Long id; + + /** + * 商家回复内容 + */ + private String businessReview; + + @Serial + private static final long serialVersionUID = -2254826620684237034L; + +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/AppointmentsVO.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/AppointmentsVO.java new file mode 100644 index 0000000..011930d --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/AppointmentsVO.java @@ -0,0 +1,81 @@ +package com.cj.jiaqingjiayi.model.vo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; + +import java.util.Date; + +@Data +public class AppointmentsVO { + + /** + * 预约ID + */ + private Long id; + + /** + * 用户ID(关联用户表) + */ + private Long userId; + + /** + * 用户姓名 + */ + private String userName; + + /** + * 手机号 + */ + private String phone; + + /** + * 商家ID(关联商家表) + */ + private Long businessId; + + /** + * 商家名 + */ + private String businessName; + + /** + * 美甲师ID, 如果为空到店分配 + */ + private Long manicuristId; + + /** + * 美甲师名 + */ + private String manicuristName; + + /** + * 预约时间 + */ + private Date appointmentTime; + + /** + * 预约详细地址 + */ + private String appointmentAddress; + + /** + * 服务方式(0 - 线上, 1 - 到店) + */ + private Integer serviceMode; + + /** + * 备注 + */ + private String notes; + + /** + * 预约状态(0 - 已确认, 1 - 已完成, 2 - 已取消) + */ + private Integer status; + + /** + *订单id + */ + private Long orderId; +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/AttributeVO.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/AttributeVO.java new file mode 100644 index 0000000..078b9b4 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/AttributeVO.java @@ -0,0 +1,29 @@ +package com.cj.jiaqingjiayi.model.vo; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +@Data +public class AttributeVO implements Serializable { + + @Serial + private static final long serialVersionUID = 7506939017812523180L; + /** + * id + */ + private Long id; + + /** + * 属性名称 + */ + private String attributeName; + + /** + * 属性状态:0在售,1停售 + */ + private Integer attributeStatus; + + +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/BusinessAdminVO.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/BusinessAdminVO.java new file mode 100644 index 0000000..cbcd67f --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/BusinessAdminVO.java @@ -0,0 +1,119 @@ +package com.cj.jiaqingjiayi.model.vo; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + +/** + * 商家视图(管理员视角) + */ +@Data +public class BusinessAdminVO implements Serializable { + + + @Serial + private static final long serialVersionUID = 1250238798844609277L; + /** + * id + */ + private Long id; + + /** + * 商家id + */ + private Long businessId; + + /** + * 用户id + */ + private Long userId; + + /** + * 门店名称 + */ + private String businessName; + + /** + * 门店头像 + */ + private String businessAvatar; + + /** + * 门店手机号 + */ + private String businessPhone; + + /** + * 店铺详细地址 + */ + private String address; + + /** + * 门店简介 + */ + private String businessProfile; + + /** + * 商家相册 + */ + private String businessImages; + + /** + * 分类id + */ + private Long categoryId; + + /** + * 店主名 + */ + private String shopkeeper; + + /** + * 营业执照 + */ + private String license; + + /** + * 身份证正面 + */ + private String frontIdCard; + + /** + * 身份证反面 + */ + private String backIdCard; + + /** + * 银行卡号 + */ + private String bankCard; + + /** + * 开始营业时间 + */ + private String startBusiness; + + /** + * 结束营业时间 + */ + private String endBusiness; + + /** + * 状态:0禁用,1启用 + */ + private Integer state; + + /** + * 店铺状态:0休业,1营业 + */ + private Integer storeStatus; + + /** + * 创建时间 + */ + private Date createTime; + + +} \ No newline at end of file diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/BusinessVO.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/BusinessVO.java new file mode 100644 index 0000000..2b834a5 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/BusinessVO.java @@ -0,0 +1,99 @@ +package com.cj.jiaqingjiayi.model.vo; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + +/** + * 商家视图 (用户视角) + * + * + */ +@Data +public class BusinessVO implements Serializable { + + @Serial + private static final long serialVersionUID = 1672328670137974814L; + /** + * id + */ + private Long id; + + /** + * 用户id + */ + private Long userId; + + /** + * 门店名称 + */ + private String businessName; + + /** + * 门店头像 + */ + private String businessAvatar; + + /** + * 门店手机号 + */ + private String businessPhone; + + /** + * 店铺详细地址 + */ + private String address; + + /** + * 门店简介 + */ + private String businessProfile; + + /** + * 商家相册 + */ + private String businessImages; + + /** + * 开始营业时间 + */ + private String startBusiness; + + /** + * 结束营业时间 + */ + private String endBusiness; + + /** + * 月售 + */ + private Long monthlySales; + + /** + * 分类id + */ + private Long categoryId; + + /** + * 店铺状态:0休业,1营业 + */ + private Integer storeStatus; + + /** + * 状态:0审核中,1启用,2禁用 + */ + private Integer state; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 等级 + */ + private Integer level; + +} \ No newline at end of file diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/CartDTO.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/CartDTO.java new file mode 100644 index 0000000..f2ccdb1 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/CartDTO.java @@ -0,0 +1,12 @@ +package com.cj.jiaqingjiayi.model.vo; + +import com.cj.jiaqingjiayi.model.domain.Business; + +import lombok.Data; + +@Data +public class CartDTO { + + private CartVO cartVO; + private Business business; +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/CartResponseVO.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/CartResponseVO.java new file mode 100644 index 0000000..481bbfd --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/CartResponseVO.java @@ -0,0 +1,14 @@ +package com.cj.jiaqingjiayi.model.vo; + +import com.cj.jiaqingjiayi.model.domain.Business; +import lombok.Data; + +import java.util.List; + +@Data +public class CartResponseVO { + private Business business; // 商家信息 + private List cartList; // 购物车信息 + + // 省略 Getter 和 Setter 方法 +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/CartVO.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/CartVO.java new file mode 100644 index 0000000..2e5da83 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/CartVO.java @@ -0,0 +1,58 @@ +package com.cj.jiaqingjiayi.model.vo; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.cj.jiaqingjiayi.model.request.order.OrderItemsAddRequest; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.List; + +/** + * 购物车表 + * @TableName cart + */ +@TableName(value ="cart") +@Data +public class CartVO implements Serializable { + /** + * id + */ + private Long id; + + /** + * 商家id + */ + private Long businessId; + + /** + * 商品id + */ + private Long commoditiesId; + + /** + * 商品数量 + */ + private Integer quantity; + + /** + * 当前选择规格的价格 + */ + private BigDecimal price; + + /** + * 小计(单价 * 数量) + */ + private BigDecimal subtotal; + + /** + * 已选规格属性列表 + */ + private String selectedOptions; + + private List commoditiesVO; + + @Serial + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/CommoditiesVO.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/CommoditiesVO.java new file mode 100644 index 0000000..f7c4d09 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/CommoditiesVO.java @@ -0,0 +1,36 @@ +package com.cj.jiaqingjiayi.model.vo; + +import lombok.Data; + +@Data +public class CommoditiesVO { + /** + * 商品名称 + */ + private String CommoditiesName; + + /** + * 商品图片 + */ + private String CommoditiesImage; + + /** + * 商品价格 + */ + private Double CommoditiesPrice; + + + /** + * 库存数量 + */ + private Integer inventoryStatus; + + /** + * 商品状态:上架,下架 + */ + private String status; + /** + * 是否有规格(0:没有,1:有) + */ + private Integer isSpecification = 0; +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/GroupVO.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/GroupVO.java new file mode 100644 index 0000000..7a55ff8 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/GroupVO.java @@ -0,0 +1,28 @@ +package com.cj.jiaqingjiayi.model.vo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; + +@Data +public class GroupVO { + /** + * id + */ + private Long id; + + /** + * 商家id + */ + private Long businessId; + + /** + * 商品分组名称 + */ + private String groupName; + + /** + * 是否置顶:0不置顶,1置顶 + */ + private Integer isTopping; +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/LoginUserVO.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/LoginUserVO.java new file mode 100644 index 0000000..5eb0b47 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/LoginUserVO.java @@ -0,0 +1,59 @@ +package com.cj.jiaqingjiayi.model.vo; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + +/** + * 已登录用户视图(脱敏) + * @author bsz + */ +@Data +public class LoginUserVO implements Serializable { + + + /** + * 用户 id + */ + private Long id; + + /** + * 用户昵称 + */ + private String username; + + /** + * 用户头像 + */ + private String avatarUrl; + + /** + * 性别 + */ + private Integer gender; + + /** + * 手机号 + */ + private String phone; + + /** + * 用户角色:user/admin + */ + private Integer userRole; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 更新时间 + */ + private Date updateTime; + + @Serial + private static final long serialVersionUID = 6304492672093490894L; +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/ManicuristVO.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/ManicuristVO.java new file mode 100644 index 0000000..19b1444 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/ManicuristVO.java @@ -0,0 +1,60 @@ +package com.cj.jiaqingjiayi.model.vo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +@Data +public class ManicuristVO implements Serializable { + + /** + * 美甲师唯一标识(主键,自增) + */ + @TableId(type = IdType.AUTO) + private Long id; + + /** + * 美甲师姓名 + */ + private String manicuristName; + + /** + * 性别 + */ + private Integer gender; + + /** + * 美甲师联系电话 + */ + private String phone; + + /** + * 美甲师电子邮件 + */ + private String email; + + /** + * 美甲师的专长(如法式美甲、彩绘等) + */ + private String specialties; + + /** + * 美甲师的服务评分 + */ + private BigDecimal rating; + + /** + * 美甲师头像的存储路径或链接 + */ + private String manicuristAvatar; + + @TableField(exist = false) + @Serial + private static final long serialVersionUID = 1L; +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/ManicuristsignVO.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/ManicuristsignVO.java new file mode 100644 index 0000000..084c8f7 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/ManicuristsignVO.java @@ -0,0 +1,68 @@ +package com.cj.jiaqingjiayi.model.vo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +@Data +public class ManicuristsignVO implements Serializable { + + /** + * + */ + @TableId(type = IdType.AUTO) + private Long id; + + /** + * 姓名 + */ + private String name; + + /** + * 美甲师ID(关联美甲师表) + */ + private Long manicuristId; + + /** + * 门店名称 + */ + private String businessName; + + /** + * 联系电话 + */ + private String phone; + + /** + * 期望工资薪资 + */ + private BigDecimal salary; + + /** + * 签约时长 + */ + private String signTime; + + /** + * 工龄 + */ + private String tenure; + + /** + * 美甲师等级 + */ + private String manicuristLv; + + /** + * 审核状态,0-待审核,1-审核通过,2-审核不通过 + */ + private Integer auditStatus; + + @TableField(exist = false) + private static final long serialVersionUID = 1L; +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/OrderItemsVO.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/OrderItemsVO.java new file mode 100644 index 0000000..b04fbd0 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/OrderItemsVO.java @@ -0,0 +1,69 @@ +package com.cj.jiaqingjiayi.model.vo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 订单详情表 + * + * @TableName order_details + */ +@TableName(value = "order_items") +@Data +public class OrderItemsVO implements Serializable { + /** + * id + */ + @TableId(type = IdType.AUTO) + private Long id; + + /** + * 关联的订单id + */ + private Long orderId; + + /** + * 关联的商品id + */ + private Long commoditiesId; + + /** + * 商品信息 + */ + private CommoditiesVO commoditiesVO; + + /** + * 购买数量 + */ + private Integer quantity; + + /** + * 单价 + */ + private BigDecimal price; + + /** + * 小计(单价 * 数量) + */ + private BigDecimal subtotal; + + /** + * 规格属性列表 + */ + private String attributeNames; + + /** + * 创建时间 + */ + private Date createTime; + + @Serial + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/OrdersExcelVO.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/OrdersExcelVO.java new file mode 100644 index 0000000..a709ca2 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/OrdersExcelVO.java @@ -0,0 +1,54 @@ +package com.cj.jiaqingjiayi.model.vo; + + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.format.NumberFormat; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import lombok.Data; + + +import java.math.BigDecimal; + +/** + * Excel订单信息导出 + * + * @author ASUS + */ +@Data +public class OrdersExcelVO { + + /** + * 订单编号 + */ + @ColumnWidth(20) + @NumberFormat("#") + @ExcelProperty(value = "订单编号", index = 0) + private Long id; + + /** + * 下单时间 + */ + @ColumnWidth(20) + @ExcelProperty(value = "下单时间", index = 1) + private String createTime; + + /** + * 手机号 + */ + @ColumnWidth(20) + @ExcelProperty(value = "手机号", index = 2) + private String phone; + + /** + * 支付状态 + */ + @ExcelProperty(value = "支付状态", index = 3) + private String state; + + /** + * 订单金额 + */ + @NumberFormat("0.00") + @ExcelProperty(value = "订单金额") + private BigDecimal totalPrice; +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/OrdersVO.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/OrdersVO.java new file mode 100644 index 0000000..e167e42 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/OrdersVO.java @@ -0,0 +1,115 @@ +package com.cj.jiaqingjiayi.model.vo; + +import com.cj.jiaqingjiayi.model.domain.Manicurist; +import com.cj.jiaqingjiayi.model.domain.OrderItems; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * 订单视图 + */ +@Data +public class OrdersVO implements Serializable { + /** + * id + */ + private Long id; + + /** + * 订单号 + */ + private String orderNumber; + + /** + * 姓名 + */ + private String userName; + + /** + * 手机号 + */ + private String phone; + + /** + * 下单用户id + */ + private Long userId; + + /** + * 商家id + */ + private Long businessId; + + /** + * 美甲师信息 + */ + private ManicuristVO manicuristVO; + + /** + * 商家信息 + */ + private BusinessVO businessVO; + + /** + * 订单实际总价 + */ + private BigDecimal totalPrice; + + /** + * 支付方式 + */ + private Integer payMethod; + + /** + * 服务方式(0 - 线上, 1 - 到店) + */ + private Integer serviceMode; + + /** + * 备注 + */ + private String notes; + + /** + * 预约ID(关联预约表) + */ + private Long appointmentId; + + /** + * 支付状态(0 - 未支付, 1 - 已支付, 2 - 退款中, 3 - 已退款) + */ + private Integer paymentStatus; + + /** + * 抢单状态(0 - 未抢单, 1 - 已抢单) + */ + private Integer claimStatus; + + /** + * 下单时间 + */ + private Date createTime; + + /** + * 支付时间 + */ + private Date updateTime; + + /** + * 商品数量 + */ + private Integer number; + + /** + * 订单详情 + */ + private List orderItemsVOList; + + @Serial + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/SpecificationsVO.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/SpecificationsVO.java new file mode 100644 index 0000000..e3f7903 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/SpecificationsVO.java @@ -0,0 +1,31 @@ +package com.cj.jiaqingjiayi.model.vo; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.List; + +@Data +public class SpecificationsVO implements Serializable { + + @Serial + private static final long serialVersionUID = 7672330198150498714L; + /** + * 规格id + */ + private Long id; + + /** + * 规格名称 + */ + private String specificationsName; + + /** + * 该规格的所有属性 + */ + private List attributeVOList; + + + +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/UserRatingDTO.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/UserRatingDTO.java new file mode 100644 index 0000000..82f1216 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/UserRatingDTO.java @@ -0,0 +1,13 @@ +package com.cj.jiaqingjiayi.model.vo; + +import com.cj.jiaqingjiayi.model.domain.User; +import com.cj.jiaqingjiayi.model.domain.UserRating; +import lombok.Data; + +@Data +public class UserRatingDTO { + private UserRating userRating; + private User user; + + // Getters and Setters +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/UserVO.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/UserVO.java new file mode 100644 index 0000000..34b1c36 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/vo/UserVO.java @@ -0,0 +1,73 @@ +package com.cj.jiaqingjiayi.model.vo; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class UserVO implements Serializable { + + /** + * id + */ + private Long id; + + /** + * 支付宝开放平台id + */ + private String unionId; + + /** + * openId + */ + private String openId; + /** + * 用户昵称 + */ + private String username; + + /** + * 账号 + */ + private String userAccount; + + /** + * 用户头像 + */ + private String avatarUrl; + + /** + * 性别 + */ + private Integer gender; + + /** + * 密码 + */ + private String userPassword; + + /** + * 电话 + */ + private String phone; + + /** + * 邮箱 + */ + private String email; + + /** + * 状态 0 -正常 + */ + private Integer userStatus; + + /** + * 登录态 + */ + private String sessionId; + + /** + * 用户角色 0 - 普通用户 1 - 管理员 2 - 商家 + */ + private Integer userRole; +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/scheduler/UpdateBusiness.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/scheduler/UpdateBusiness.java new file mode 100644 index 0000000..4af2c6a --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/scheduler/UpdateBusiness.java @@ -0,0 +1,50 @@ +package com.cj.jiaqingjiayi.scheduler; + + +import com.cj.jiaqingjiayi.model.domain.Business; +import com.cj.jiaqingjiayi.model.domain.Manicurist; +import com.cj.jiaqingjiayi.service.BusinessLevelService; +import com.cj.jiaqingjiayi.service.BusinessService; +import com.cj.jiaqingjiayi.service.ManicuristService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.Date; +import java.util.List; + +@Component +@Slf4j +public class UpdateBusiness { + + @Resource + private BusinessService businessService; + + @Resource + private ManicuristService manicuristService; + + @Resource + private BusinessLevelService businessLevelService; + + @Scheduled(cron = "0 0 0 * * ?") + public void updateBusinessLevels() { + List list = businessService.list(); + for (Business business : list) { + businessLevelService.updateBusinessLevel(business.getId()); + } + log.info("更新时间:" + new Date()); + } + + @Scheduled(cron = "0 0 0 * * ?") + public void updateManicuristLevels() { + List list = manicuristService.list(); + for (Manicurist manicurist : list) { + manicuristService.updateManicuristLevel(manicurist.getId()); + } + log.info("更新时间:" + new Date()); + } +} + diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/AliPayService.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/AliPayService.java new file mode 100644 index 0000000..2cdd2a5 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/AliPayService.java @@ -0,0 +1,10 @@ +package com.cj.jiaqingjiayi.service; + +import com.alipay.api.AlipayClient; + +import java.math.BigDecimal; + +public interface AliPayService { + + String createPayment(String orderId, String miniOpenId, BigDecimal amount, AlipayClient alipayClient); +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/AppointmentsService.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/AppointmentsService.java new file mode 100644 index 0000000..df91fbd --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/AppointmentsService.java @@ -0,0 +1,38 @@ +package com.cj.jiaqingjiayi.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.cj.jiaqingjiayi.model.domain.Appointments; +import com.baomidou.mybatisplus.extension.service.IService; +import com.cj.jiaqingjiayi.model.domain.CommoditiesGroup; +import com.cj.jiaqingjiayi.model.vo.AppointmentsVO; +import com.cj.jiaqingjiayi.model.vo.GroupVO; + +import java.util.List; + +/** +* @author 高木 +* @description 针对表【appointments(预约表)】的数据库操作Service +* @createDate 2024-11-05 19:07:40 +*/ +public interface AppointmentsService extends IService { + + //校验 + void valid(Appointments appointments); + + //添加预约 + Long addAppointments(Appointments appointments); + + boolean removeId(Long id); + + /** + * 获取预约视图 + */ + AppointmentsVO getAppointmentsVO(Appointments appointments); + + /** + * 获取预约视图列表 + */ + List queryAppointmentsVO(List list); + + List queryAppointments(QueryWrapper queryWrapper); +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/AttributeService.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/AttributeService.java new file mode 100644 index 0000000..d2191fa --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/AttributeService.java @@ -0,0 +1,38 @@ +package com.cj.jiaqingjiayi.service; + +import com.cj.jiaqingjiayi.model.domain.Attribute; +import com.baomidou.mybatisplus.extension.service.IService; +import com.cj.jiaqingjiayi.model.request.attribute.AttributeAddRequest; +import com.cj.jiaqingjiayi.model.request.attribute.AttributeUpdateRequest; +import com.cj.jiaqingjiayi.model.vo.SpecificationsVO; + +import java.util.List; + +/** +* @author 高木 +* @description 针对表【attribute(属性表)】的数据库操作Service +* @createDate 2024-08-21 16:29:45 +*/ +public interface AttributeService extends IService { + + /** + * 根据规格id获取属性脱敏列表 + */ + List getBySpecificationsVoId(List specificationsVOList); + + /** + * 添加属性 + */ + Boolean addAttribute(List attributeAddRequest, Long businessId, Long specificationsId); + + /** + * 校验 + */ + void validAttribute(Attribute attribute); + + /** + * 更新属性信息 + */ + Boolean updateAttribute(List attributeUpdateRequests, Long businessId, Long specificationsId); + +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/BusinessAuthService.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/BusinessAuthService.java new file mode 100644 index 0000000..db7ce77 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/BusinessAuthService.java @@ -0,0 +1,19 @@ +package com.cj.jiaqingjiayi.service; + +import com.cj.jiaqingjiayi.model.domain.Business; +import com.cj.jiaqingjiayi.model.domain.BusinessAuth; +import com.baomidou.mybatisplus.extension.service.IService; +import com.cj.jiaqingjiayi.model.vo.BusinessAdminVO; + +/** +* @author 高木 +* @description 针对表【business_auth(商家认证)】的数据库操作Service +* @createDate 2024-07-28 17:18:28 +*/ +public interface BusinessAuthService extends IService { + + /** + * 获取脱敏的商家信息 + */ + BusinessAdminVO getBusinessAdminVO(Business business); +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/BusinessLevelService.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/BusinessLevelService.java new file mode 100644 index 0000000..ece1dba --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/BusinessLevelService.java @@ -0,0 +1,25 @@ +package com.cj.jiaqingjiayi.service; + +import com.cj.jiaqingjiayi.model.domain.BusinessLevel; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** +* @author 高木 +* @description 针对表【business_level】的数据库操作Service +* @createDate 2024-12-02 14:13:25 +*/ +public interface BusinessLevelService extends IService { + + /** + * 更新商家等级 + */ + void updateBusinessLevel(Long businessId); + + /** + * 查询所有商家 + */ + List findAllOrdered(); + +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/BusinessService.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/BusinessService.java new file mode 100644 index 0000000..a9f3262 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/BusinessService.java @@ -0,0 +1,63 @@ +package com.cj.jiaqingjiayi.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.cj.jiaqingjiayi.model.domain.Business; +import com.baomidou.mybatisplus.extension.service.IService; +import com.cj.jiaqingjiayi.model.domain.BusinessAuth; +import com.cj.jiaqingjiayi.model.domain.User; +import com.cj.jiaqingjiayi.model.request.business.BusinessQueryRequest; +import com.cj.jiaqingjiayi.model.request.business.BusinessUpdateRequest; +import com.cj.jiaqingjiayi.model.vo.BusinessVO; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +/** +* @author 高木 +* @description 针对表【business(商家)】的数据库操作Service +* @createDate 2024-07-28 17:16:33 +*/ +public interface BusinessService extends IService { + + /** + * 添加商户和商家的账户以及填充认证信息 + * @param user + * @param business + * @param businessAuth + */ + void addBusiness(User user, Business business, BusinessAuth businessAuth); + + /** + *校验 + */ + void validUser(User user, boolean add); + + void validBusiness(Business business, boolean add); + + void validBusinessAuth(BusinessAuth businessAuth, boolean add); + + /** + * 获取查询条件 + */ + QueryWrapper getQueryWrapper(BusinessQueryRequest businessQueryRequest); + + + BusinessVO getBusinessVO(Business business); + + /** + * 获取脱敏的商家信息 + */ + List getBusinessVO(List businessList); + + /** + * 获取当前登录商家 + */ + Business getLoginBusiness(HttpServletRequest request); + + /** + * 查询所有商家 + */ + List findAllBusiness(); + + boolean updateBusiness(Business newBusiness); +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/CartService.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/CartService.java new file mode 100644 index 0000000..792dd03 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/CartService.java @@ -0,0 +1,36 @@ +package com.cj.jiaqingjiayi.service; + +import com.cj.jiaqingjiayi.model.domain.Cart; +import com.baomidou.mybatisplus.extension.service.IService; +import com.cj.jiaqingjiayi.model.request.cart.CartAddRequest; +import com.cj.jiaqingjiayi.model.request.cart.CartDeleteRequest; +import com.cj.jiaqingjiayi.model.request.cart.CartUpdateRequest; + +import javax.servlet.http.HttpServletRequest; + +/** +* @author 高木 +*/ +public interface CartService extends IService { + + /** + * 校验 + */ + void validCart(CartAddRequest cartAddRequest); + + /** + * 添加商品 + */ + Cart addCart (CartAddRequest cartAddRequest, HttpServletRequest request); + + /** + * 更新购物车商品 + */ + Boolean updateCart(CartUpdateRequest cartUpdateRequest, HttpServletRequest request); + + /** + * 删除购物车商品 + */ + Boolean deleteCart(CartDeleteRequest cartDeleteRequest, HttpServletRequest request); + +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/CollectService.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/CollectService.java new file mode 100644 index 0000000..0b46c8c --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/CollectService.java @@ -0,0 +1,25 @@ +package com.cj.jiaqingjiayi.service; + +import com.cj.jiaqingjiayi.model.domain.Collect; +import com.baomidou.mybatisplus.extension.service.IService; +import com.cj.jiaqingjiayi.model.request.collect.CollectAddRequest; + +import javax.servlet.http.HttpServletRequest; + +/** +* @author 高木 +* @description 针对表【collect(收藏)】的数据库操作Service +* @createDate 2024-12-02 14:11:46 +*/ +public interface CollectService extends IService { + + /** + * 校验 + */ + void validCollect(CollectAddRequest collectAddRequest); + + /** + * 添加收藏 + */ + Boolean addCollect(Collect collect, HttpServletRequest request); +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/CommoditiesGroupService.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/CommoditiesGroupService.java new file mode 100644 index 0000000..1493ebd --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/CommoditiesGroupService.java @@ -0,0 +1,43 @@ +package com.cj.jiaqingjiayi.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.cj.jiaqingjiayi.model.domain.CommoditiesGroup; +import com.cj.jiaqingjiayi.model.vo.GroupVO; + +import java.util.List; + +/** +* @author 高木 +* @description 针对表【commodities_group(商品分组表)】的数据库操作Service +* @createDate 2024-12-17 08:52:35 +*/ +public interface CommoditiesGroupService extends IService { + + /** + * 添加分组 + */ + Long addGroup(CommoditiesGroup commoditiesGroup); + + /** + *删除分组 + */ + Boolean deleteGroup(String groupName); + + /** + * 获取分组视图 + */ + GroupVO getGroupVO(CommoditiesGroup group); + + /** + *获取分组视图列表 + */ + List getGroupVO(List commoditiesGroupList); + + /** + *校验 + */ + void validGroup(CommoditiesGroup commoditiesGroup, Boolean flag); + + + +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/CommoditiesService.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/CommoditiesService.java new file mode 100644 index 0000000..4df1aad --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/CommoditiesService.java @@ -0,0 +1,54 @@ +package com.cj.jiaqingjiayi.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.cj.jiaqingjiayi.model.domain.Commodities; +import com.baomidou.mybatisplus.extension.service.IService; +import com.cj.jiaqingjiayi.model.request.Commodities.CommoditiesQueryRequest; +import com.cj.jiaqingjiayi.model.vo.CommoditiesVO; + +import java.util.List; + +/** +* @author 高木 +* @description 针对表【commodities(商品表)】的数据库操作Service +* @createDate 2024-08-20 19:55:49 +*/ +public interface CommoditiesService extends IService { + + /** + * 校验 + */ + void validCommodities(Commodities commodities, Boolean update); + + /** + * 添加商品 + */ + Long addCommodities(Commodities commodities); + + /** + * 根据分组id删除商品 + */ + void removeByCommoditiesGroupId(Long commoditiesId); + + /** + * 更新菜品 + */ + Boolean updateCommodities(Commodities commodities); + + /** + * 获取商品脱敏信息 + */ + CommoditiesVO getCommoditiesVO(Commodities commodities); + + /** + * 获取商品查询条件 + */ + QueryWrapper getWrapper(CommoditiesQueryRequest commoditiesQueryRequest); + + /** + * 获取商品脱敏信信息 + */ + List getCommoditiesVOList(List commoditiesVOList); + + +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/ManicuristAuthService.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/ManicuristAuthService.java new file mode 100644 index 0000000..871d079 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/ManicuristAuthService.java @@ -0,0 +1,13 @@ +package com.cj.jiaqingjiayi.service; + +import com.cj.jiaqingjiayi.model.domain.ManicuristAuth; +import com.baomidou.mybatisplus.extension.service.IService; + +/** +* @author 高木 +* @description 针对表【manicurist_auth(美甲师认证表)】的数据库操作Service +* @createDate 2024-09-23 18:46:06 +*/ +public interface ManicuristAuthService extends IService { + +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/ManicuristService.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/ManicuristService.java new file mode 100644 index 0000000..649634d --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/ManicuristService.java @@ -0,0 +1,65 @@ +package com.cj.jiaqingjiayi.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.cj.jiaqingjiayi.model.domain.*; +import com.baomidou.mybatisplus.extension.service.IService; +import com.cj.jiaqingjiayi.model.request.manicurist.ManicuristQueryRequest; +import com.cj.jiaqingjiayi.model.request.manicurist.ManicuristUpdateRequest; +import com.cj.jiaqingjiayi.model.vo.ManicuristVO; + +import java.util.List; + +/** +* @author 高木 +* description 针对表【manicurist(美甲师表)】的数据库操作Service +* createDate 2024-09-23 19:23:08 + */ +public interface ManicuristService extends IService { + + /** + * 添加美甲师和认证信息(管理员) + */ + void adminAddManicurist(User user, Manicurist manicurist, ManicuristAuth manicuristAuth); + + /** + * 添加美甲师和认证信息 + */ + void addManicurist(Long userId, Manicurist manicurist, ManicuristAuth manicuristAuth); + + /** + *校验 + */ + void validUser(User user, boolean add); + + void validManicurist(Manicurist manicurist, boolean add); + + void validManicuristAuth(ManicuristAuth manicuristAuth, boolean add); + + //检验商家是否存在 + void validManBus(Long businessId); + + /** + * 删除美甲师 + */ + void deleteMan(long id); + + /** + * 获取脱敏后的美甲师 + */ + ManicuristVO getManicuristVO(Manicurist manicurist); + + /** + * 获取美甲师脱敏列表 + */ + List getManicuristVO(List manicuristList); + + /** + * 获取查询条件 + */ + QueryWrapper getQueryWrapper(ManicuristUpdateRequest manicuristUpdateRequest); + + /** + *更新美甲师等级 + */ + void updateManicuristLevel(Long manicuristId); +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/ManicuristsignService.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/ManicuristsignService.java new file mode 100644 index 0000000..7b8a76c --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/ManicuristsignService.java @@ -0,0 +1,25 @@ +package com.cj.jiaqingjiayi.service; + +import com.cj.jiaqingjiayi.model.domain.Manicuristsign; +import com.baomidou.mybatisplus.extension.service.IService; +import com.cj.jiaqingjiayi.model.vo.ManicuristsignVO; + +import java.util.List; + +/** +* @author 高木 +* @description 针对表【manicuristsign(美甲师表)】的数据库操作Service +* @createDate 2025-02-26 19:29:22 +*/ +public interface ManicuristsignService extends IService { + + /** + * 获取脱敏后的签约表 + */ + ManicuristsignVO getManicuristsignVO(Manicuristsign manicuristsign); + + /** + * 获取签约脱敏列表 + */ + List getManicuristsignVO(List manicuristsignList); +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/OrderItemsService.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/OrderItemsService.java new file mode 100644 index 0000000..7eace20 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/OrderItemsService.java @@ -0,0 +1,32 @@ +package com.cj.jiaqingjiayi.service; + + +import com.baomidou.mybatisplus.extension.service.IService; +import com.cj.jiaqingjiayi.model.domain.OrderItems; +import com.cj.jiaqingjiayi.model.domain.Orders; +import com.cj.jiaqingjiayi.model.vo.OrderItemsVO; + +import java.util.List; + +/** +* @author 高木 +* @description 针对表【order_items(详细订单表)】的数据库操作Service +* @createDate 2024-11-10 14:25:15 +*/ +public interface OrderItemsService extends IService { + + /** + * 校验订单商品 + */ + void validOrderItems(OrderItems orderItems); + + /** + * 获取订单详情视图信息 + */ + OrderItemsVO getOrderItemsVO(OrderItems orderItems); + + /** + * 获取订单详情视图信息 + */ + List getOrderItemsVO(List orderItemsList); +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/OrdersService.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/OrdersService.java new file mode 100644 index 0000000..cef6208 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/OrdersService.java @@ -0,0 +1,48 @@ +package com.cj.jiaqingjiayi.service; + + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.IService; +import com.cj.jiaqingjiayi.model.domain.OrderItems; +import com.cj.jiaqingjiayi.model.domain.Orders; +import com.cj.jiaqingjiayi.model.request.order.OrderQueryRequest; +import com.cj.jiaqingjiayi.model.vo.OrdersVO; + +import java.util.List; + +/** +* @author 高木 +* @description 针对表【orders(订单表)】的数据库操作Service +* @createDate 2024-11-10 14:22:10 +*/ +public interface OrdersService extends IService { + + /** + * 创建订单 + * + * @return 订单id + */ + long addOrder(Orders orders, List orderItemsList); + + /** + * 校验订单 + */ + void validOrder(Orders orders); + + /** + * 获取订单视图信息 + */ + OrdersVO getOrdersVO(Orders orders); + + List getOrdersVO(List ordersList); + + /** + * 悲观锁 + */ + Orders getOrderWithPessimisticLock(Long ordersId); + + /** + * 获取查询条件 + */ + QueryWrapper getQueryWrapper(OrderQueryRequest orderQueryRequest); +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/RecruitmentService.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/RecruitmentService.java new file mode 100644 index 0000000..aaba4cb --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/RecruitmentService.java @@ -0,0 +1,25 @@ +package com.cj.jiaqingjiayi.service; + + +import com.baomidou.mybatisplus.extension.service.IService; +import com.cj.jiaqingjiayi.model.domain.Recruitment; +import com.cj.jiaqingjiayi.model.request.recruitment.RecruitmentAddRequest; +import com.cj.jiaqingjiayi.model.request.recruitment.RecruitmentUpdateRequest; + +import java.util.List; + +/** +* @author 高木 +* @description 针对表【recruitment(美甲师招聘信息表)】的数据库操作Service +* @createDate 2025-03-12 18:51:44 +*/ +public interface RecruitmentService extends IService { + + Long addRecruitment(RecruitmentAddRequest addRequest); + + boolean deleteRecruitment(Long id); + + List selectRecruitment(Long businessId); + + boolean updateRecruitment(RecruitmentUpdateRequest updateRequest); +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/SpecificationsCommoditiesService.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/SpecificationsCommoditiesService.java new file mode 100644 index 0000000..00d71a9 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/SpecificationsCommoditiesService.java @@ -0,0 +1,37 @@ +package com.cj.jiaqingjiayi.service; + +import com.cj.jiaqingjiayi.model.domain.SpecificationsCommodities; +import com.baomidou.mybatisplus.extension.service.IService; +import com.cj.jiaqingjiayi.model.vo.SpecificationsVO; + +import java.util.List; + +/** +* @author 高木 +* @description 针对表【specifications_commodities(商品和规格的中间表)】的数据库操作Service +* @createDate 2024-08-21 16:21:41 +*/ +public interface SpecificationsCommoditiesService extends IService { + + /** + * 添加中间表信息 + */ + Boolean add(Long commoditiesId, List specificationsIds); + + /** + * 删除中间表信息 + */ + void deleteByCommoditiesId(Long commoditiesId); + + /** + * 更新中间表信息 + */ + Boolean updateByCommoditiesId(Long commoditiesId, List specificationsIds); + + /** + * 根据中间表数据中的规格id获取规格信息和属性 + */ + List getSpecificationsAddAttribute(List specificationsCommoditiesList); + + +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/SpecificationsService.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/SpecificationsService.java new file mode 100644 index 0000000..1529925 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/SpecificationsService.java @@ -0,0 +1,39 @@ +package com.cj.jiaqingjiayi.service; + +import com.cj.jiaqingjiayi.model.domain.Specifications; +import com.baomidou.mybatisplus.extension.service.IService; +import com.cj.jiaqingjiayi.model.request.attribute.AttributeAddRequest; +import com.cj.jiaqingjiayi.model.request.attribute.AttributeUpdateRequest; +import com.cj.jiaqingjiayi.model.vo.SpecificationsVO; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +/** +* @author 高木 +* @description 针对表【specifications(规格表)】的数据库操作Service +* @createDate 2024-08-21 16:20:48 +*/ +public interface SpecificationsService extends IService { + + /** + * 校验 + */ + void validSpecifications(Specifications specifications, boolean add); + + /** + * 添加规格 + */ + Boolean addSpecifications(Specifications specifications, List attributeAddRequests, HttpServletRequest request); + + /** + * 更新规格 + */ + Boolean updateSpecifications(Specifications specifications, List attributeUpdateRequests, HttpServletRequest request); + + /** + * 获取规格脱敏列表 + */ + List getSpecificationsVO(List specificationsList); +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/UserRatingService.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/UserRatingService.java new file mode 100644 index 0000000..032c581 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/UserRatingService.java @@ -0,0 +1,21 @@ +package com.cj.jiaqingjiayi.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.cj.jiaqingjiayi.model.domain.UserRating; + +import javax.servlet.http.HttpServletRequest; + +/** +* @author 高木 +* @description 针对表【user_rating(用户评分)】的数据库操作Service +* @createDate 2024-12-02 14:14:23 +*/ +public interface UserRatingService extends IService { + + /** + * 校验 + */ + void validUserRating(UserRating userRating, HttpServletRequest request); + + void validUserRatingByBusiness(Long userRatingId, HttpServletRequest request); +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/UserService.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/UserService.java new file mode 100644 index 0000000..46ad79c --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/UserService.java @@ -0,0 +1,78 @@ +package com.cj.jiaqingjiayi.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.IService; +import com.cj.jiaqingjiayi.model.LoginUserDTO; +import com.cj.jiaqingjiayi.model.domain.User; +import com.cj.jiaqingjiayi.model.request.user.UserSearchRequest; +import com.cj.jiaqingjiayi.model.request.user.UserUpdatePasswordRequest; +import com.cj.jiaqingjiayi.model.vo.LoginUserVO; + +import javax.servlet.http.HttpServletRequest; + +import static com.cj.jiaqingjiayi.contant.UserConstant.ADMIN_ROLE; +import static com.cj.jiaqingjiayi.contant.UserConstant.USER_LOGIN_STATE; + + +public interface UserService extends IService { + /** + * 用户注册 + * + * @param userAccount 登陆账号 + * @param userPassword 登录密码 + * @param checkPassword 校验密码 + * @return 新用户id + */ + long userRegister(String userAccount, String userPassword, String checkPassword); + + /** + * + * @param userAccount 登陆账号 + * @param userPassword 登陆密码 + * @param request 返回请求 + * @return 脱敏后的用户信息 + */ + LoginUserDTO userLogin(String userAccount, String userPassword, HttpServletRequest request); + + /** + * 用户注销 + */ + int userLogout(HttpServletRequest request); + + /** + * 用户脱敏 + */ + User getSafetyUser(User user); + + /** + * 获取当前用户登录信息 + */ + User getLoginUser(HttpServletRequest request); + + /** + * 用户修改密码 + */ + boolean updateUserPassword(UserUpdatePasswordRequest userUpdatePasswordRequest, HttpServletRequest request); + + /** + * 分页条件 + */ + QueryWrapper getQueryWrapper(UserSearchRequest searchRequest); + + LoginUserVO getLoginUserVO(User user); + + /** + * 判断是否登录 + */ + Long isLogin(HttpServletRequest request); + + /** + * 判断是否为管理员 + */ + void isAdmin(HttpServletRequest request); + + /** + * 判断是否为商家 + */ + void isBusiness(HttpServletRequest request); +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/AlipayServiceImpl.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/AlipayServiceImpl.java new file mode 100644 index 0000000..63f3a8f --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/AlipayServiceImpl.java @@ -0,0 +1,98 @@ +package com.cj.jiaqingjiayi.service.impl; + + +import com.alipay.api.AlipayApiException; +import com.alipay.api.AlipayClient; +import com.alipay.api.domain.AlipayTradeCreateModel; +import com.alipay.api.request.AlipayTradeCreateRequest; +import com.alipay.api.response.AlipayTradeCreateResponse; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.cj.jiaqingjiayi.common.ErrorCode; +import com.cj.jiaqingjiayi.config.AlipayClients; +import com.cj.jiaqingjiayi.exception.BusinessException; +import com.cj.jiaqingjiayi.exception.ThrowUtils; +import com.cj.jiaqingjiayi.model.domain.OrderItems; +import com.cj.jiaqingjiayi.model.domain.Orders; +import com.cj.jiaqingjiayi.service.AliPayService; +import com.cj.jiaqingjiayi.service.OrderItemsService; +import com.cj.jiaqingjiayi.service.OrdersService; +import com.cj.jiaqingjiayi.utils.UniqueNumberGenerator; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +@Slf4j +@Service +public class AlipayServiceImpl implements AliPayService { + + @Resource + private OrdersService ordersService; + + @Resource + private OrderItemsService orderDetailsService; + + @Override + @Transactional(rollbackFor = Exception.class) + public synchronized String createPayment(String orderId, String miniOpenId, BigDecimal amount, AlipayClient alipayClient) { + + + //AlipayClient client = clients.alipayClient(); + //创建交易请求 + AlipayTradeCreateRequest aliRequest = new AlipayTradeCreateRequest(); + //创建实体类 + AlipayTradeCreateModel model = new AlipayTradeCreateModel(); + + String outTradeNo = UniqueNumberGenerator.generateNumber(); + + Orders order = ordersService.getById(orderId); + if (order == null) { + log.error("订单不存在"); + throw new BusinessException(ErrorCode.NOT_FOUND_ERROR, "订单不存在,订单号:" + outTradeNo); + } + + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(OrderItems::getOrderId, orderId); + List orderDetailsList = orderDetailsService.list(wrapper); + String subject = orderDetailsList.stream() + .map(OrderItems::getAttributeNames) + .collect(Collectors.joining(", ")); + //给支付宝的订单号设置 + order.setOrderNumber(outTradeNo); + boolean update = ordersService.updateById(order); + ThrowUtils.throwIf(!update, ErrorCode.OPERATION_ERROR, "修改订单状态失败"); + + model.setOutTradeNo(outTradeNo); + model.setTotalAmount(String.valueOf(amount)); + model.setSubject(subject); + model.setProductCode("JSAPI_PAY"); + model.setBuyerId("2088722038161604"); + model.setOpAppId("2021004144652242"); + + aliRequest.setBizModel(model); + ///回调地址 +// aliRequest.setNotifyUrl("http://39.101.78.35:1107/api/Alipay/notifyUrl"); + String trade_no = null; + try { + AlipayTradeCreateResponse response = alipayClient.execute(aliRequest); + trade_no = response.getTradeNo(); + if (trade_no == null) { + throw new BusinessException(ErrorCode.NULL_ERROR, "未获取到trade_no"); + } + } catch (AlipayApiException e) { + e.printStackTrace(); + } + + order.setPaymentStatus(1); + boolean update1 = ordersService.updateById(order); + ThrowUtils.throwIf(!update1, ErrorCode.OPERATION_ERROR, "修改订单状态失败"); + + return trade_no; + } +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/AppointmentsServiceImpl.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/AppointmentsServiceImpl.java new file mode 100644 index 0000000..c170d4e --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/AppointmentsServiceImpl.java @@ -0,0 +1,137 @@ +package com.cj.jiaqingjiayi.service.impl; + + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cj.jiaqingjiayi.common.ErrorCode; +import com.cj.jiaqingjiayi.exception.BusinessException; +import com.cj.jiaqingjiayi.exception.ThrowUtils; +import com.cj.jiaqingjiayi.model.domain.Appointments; +import com.cj.jiaqingjiayi.model.domain.Business; +import com.cj.jiaqingjiayi.model.domain.Manicurist; +import com.cj.jiaqingjiayi.model.vo.AppointmentsVO; +import com.cj.jiaqingjiayi.model.vo.GroupVO; +import com.cj.jiaqingjiayi.service.AppointmentsService; +import com.cj.jiaqingjiayi.mapper.AppointmentsMapper; +import com.cj.jiaqingjiayi.service.BusinessService; +import com.cj.jiaqingjiayi.service.ManicuristService; +import com.cj.jiaqingjiayi.utils.RegexUtils; +import javassist.expr.NewArray; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** +* @author 高木 +* @description 针对表【appointments(预约表)】的数据库操作Service实现 +* @createDate 2024-11-05 19:07:40 +*/ +@Service +public class AppointmentsServiceImpl extends ServiceImpl + implements AppointmentsService{ + + @Resource + private BusinessService businessService; + + @Resource + private ManicuristService manicuristService; + + @Override + public void valid(Appointments appointments) { + String userName = appointments.getUserName(); + String phone = appointments.getPhone(); + Date appointmentTime = appointments.getAppointmentTime(); + + if (StringUtils.isAnyBlank(userName, phone)){ + throw new BusinessException(ErrorCode.PARAMS_ERROR, "信息不全"); + } + + if (appointmentTime == null){ + throw new BusinessException(ErrorCode.PARAMS_ERROR, "信息不全"); + } + + if (StringUtils.isNotBlank(phone)){ + boolean phoneInvalid = RegexUtils.isPhoneInvalid(phone); + ThrowUtils.throwIf(phoneInvalid, ErrorCode.PARAMS_ERROR, "手机号格式错误"); + } + } + + @Transactional(rollbackFor = Exception.class) + @Override + public Long addAppointments(Appointments appointments) { + ThrowUtils.throwIf(appointments == null, ErrorCode.NULL_ERROR); + + String businessName = appointments.getBusinessName(); + String manicuristName = appointments.getManicuristName(); + + //拿到美甲师的id(是不是麻烦了呢?) + QueryWrapper manicuristQueryWrapper = new QueryWrapper<>(); + manicuristQueryWrapper.eq("businessId", appointments.getBusinessId()); + manicuristQueryWrapper.eq("manicuristName", manicuristName); + Manicurist manicurist = manicuristService.getOne(manicuristQueryWrapper); + if (manicurist != null){ + Long manicuristId = manicurist.getId(); + appointments.setManicuristId(manicuristId); + } + + //拿到商家的id + QueryWrapper businessQueryWrapper = new QueryWrapper<>(); + businessQueryWrapper.eq("businessName", businessName); + Business business = businessService.getOne(businessQueryWrapper); + Long businessId = business.getId(); + + //设置给预约表 + appointments.setBusinessId(businessId); + + boolean save = this.save(appointments); + + ThrowUtils.throwIf(!save, ErrorCode.PARAMS_ERROR); + + return appointments.getId(); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public boolean removeId(Long id) { + boolean remove = this.removeById(id); + ThrowUtils.throwIf(!remove, ErrorCode.OPERATION_ERROR); + return true; + } + + @Override + public AppointmentsVO getAppointmentsVO(Appointments appointments) { + AppointmentsVO appointmentsVO = new AppointmentsVO(); + if (appointments == null) { + return null; + } + BeanUtils.copyProperties(appointments,appointmentsVO); + return appointmentsVO; + } + + @Override + public List queryAppointmentsVO(List appointmentsList) { + if (CollectionUtils.isEmpty(appointmentsList)) { + return new ArrayList<>(); + } + return appointmentsList.stream().map(this::getAppointmentsVO).collect(Collectors.toList()); + } + + @Override + public List queryAppointments(QueryWrapper queryWrapper) { + + return this.list(queryWrapper); + } +} + + + + diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/AttributeServiceImpl.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/AttributeServiceImpl.java new file mode 100644 index 0000000..f11ac31 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/AttributeServiceImpl.java @@ -0,0 +1,140 @@ +package com.cj.jiaqingjiayi.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cj.jiaqingjiayi.common.ErrorCode; +import com.cj.jiaqingjiayi.exception.BusinessException; +import com.cj.jiaqingjiayi.exception.ThrowUtils; +import com.cj.jiaqingjiayi.model.domain.Attribute; +import com.cj.jiaqingjiayi.model.request.attribute.AttributeAddRequest; +import com.cj.jiaqingjiayi.model.request.attribute.AttributeUpdateRequest; +import com.cj.jiaqingjiayi.model.vo.AttributeVO; +import com.cj.jiaqingjiayi.model.vo.SpecificationsVO; +import com.cj.jiaqingjiayi.service.AttributeService; +import com.cj.jiaqingjiayi.mapper.AttributeMapper; +import com.cj.jiaqingjiayi.service.BusinessService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** +* @author 高木 +* @description 针对表【attribute(属性表)】的数据库操作Service实现 +* @createDate 2024-08-21 16:29:45 +*/ +@Service +public class AttributeServiceImpl extends ServiceImpl + implements AttributeService{ + + @Override + public List getBySpecificationsVoId(List specificationsVOList) { + if (CollectionUtils.isEmpty(specificationsVOList)) { + return specificationsVOList; + } + return specificationsVOList.stream().peek(item ->{ + Long specificationsId = item.getId(); + //根据规格id获取属性 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("specificationsId",specificationsId); + List attributeList = this.list(queryWrapper); + //获取属性脱敏信息 + List attributeVOList = getAttributeVOList(attributeList); + item.setAttributeVOList(attributeVOList); + }).collect(Collectors.toList()); + } + + @Override + public Boolean addAttribute(List attributeAddRequests, Long businessId, Long specificationsId) { + if (attributeAddRequests.isEmpty()) { + throw new BusinessException(ErrorCode.PARAMS_ERROR); + } + + //保存每个规格属性 + for (AttributeAddRequest attributeAddRequest: attributeAddRequests) { + Attribute attribute = new Attribute(); + BeanUtils.copyProperties(attributeAddRequest, attribute); + //校验 + validAttribute(attribute); + //添加保存 + saveAttribute(businessId, specificationsId, attribute); + } + + return true; + } + + @Override + public void validAttribute(Attribute attribute) { + if (attribute == null) { + throw new BusinessException(ErrorCode.PARAMS_ERROR); + } + + String attributeName = attribute.getAttributeName(); + Integer attributeStatus = attribute.getAttributeStatus(); + + if (attributeStatus == null) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "请填写属性状态"); + } + + if (StringUtils.isBlank(attributeName)) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "请填写属性名称"); + } + } + + @Override + public Boolean updateAttribute(List attributeUpdateRequests, Long businessId, Long specificationsId) { + if (attributeUpdateRequests.isEmpty()) { + throw new BusinessException(ErrorCode.PARAMS_ERROR,"请补全属性参数"); + } + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("specificationsId",specificationsId); + boolean remove = this.remove(queryWrapper); + ThrowUtils.throwIf(!remove, ErrorCode.OPERATION_ERROR); + //更新 + for (AttributeUpdateRequest attributeUpdateRequest : attributeUpdateRequests) { + Attribute attribute = new Attribute(); + BeanUtils.copyProperties(attributeUpdateRequest,attribute); + //校验 + validAttribute(attribute); + //更新 + saveAttribute(businessId,specificationsId,attribute); + } + + return true; + } + + /** + * 获取脱敏属性列表 + * @param attributes 为脱敏列表 + * @return 脱敏列表 + */ + private List getAttributeVOList (List attributes) { + if (CollectionUtils.isEmpty(attributes)) { + return new ArrayList<>(); + } + return attributes.stream().map(item -> { + AttributeVO attributeVO = new AttributeVO(); + BeanUtils.copyProperties(item,attributeVO); + return attributeVO; + }).collect(Collectors.toList()); + } + + /** + * 保存属性信息 + */ + private void saveAttribute(Long businessId, Long specificationsId, Attribute attribute) { + attribute.setBusinessId(businessId); + attribute.setSpecificationsId(specificationsId); + boolean result = this.save(attribute); + ThrowUtils.throwIf(!result, ErrorCode.OPERATION_ERROR); + } +} + + + + diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/BusinessAuthServiceImpl.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/BusinessAuthServiceImpl.java new file mode 100644 index 0000000..b66c04b --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/BusinessAuthServiceImpl.java @@ -0,0 +1,55 @@ +package com.cj.jiaqingjiayi.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cj.jiaqingjiayi.common.ErrorCode; +import com.cj.jiaqingjiayi.exception.BusinessException; +import com.cj.jiaqingjiayi.model.domain.Business; +import com.cj.jiaqingjiayi.model.domain.BusinessAuth; +import com.cj.jiaqingjiayi.model.vo.BusinessAdminVO; +import com.cj.jiaqingjiayi.service.BusinessAuthService; +import com.cj.jiaqingjiayi.mapper.BusinessAuthMapper; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +/** +* @author 高木 +* @description 针对表【business_auth(商家认证)】的数据库操作Service实现 +* @createDate 2024-07-28 17:18:28 +*/ +@Service +public class BusinessAuthServiceImpl extends ServiceImpl + implements BusinessAuthService{ + + @Override + public BusinessAdminVO getBusinessAdminVO(Business business) { + if (business == null) { + throw new BusinessException(ErrorCode.PARAMS_ERROR); + } + BusinessAdminVO businessAdminVO = new BusinessAdminVO(); + + //关联认证信息 传入到视图中 + BusinessAuth businessAuth = new BusinessAuth(); + Long id = business.getId(); + if (id != null && id > 0) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("businessId", id); + businessAuth = this.getOne(queryWrapper); + } + + BeanUtils.copyProperties(business, businessAdminVO); + + if (businessAuth == null) { + throw new BusinessException(ErrorCode.NULL_ERROR); + } + + BeanUtils.copyProperties(businessAuth, businessAdminVO); + + return businessAdminVO; + } + +} + + + + diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/BusinessLevelServiceImpl.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/BusinessLevelServiceImpl.java new file mode 100644 index 0000000..ba8c02a --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/BusinessLevelServiceImpl.java @@ -0,0 +1,83 @@ +package com.cj.jiaqingjiayi.service.impl; + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cj.jiaqingjiayi.mapper.UserRatingMapper; +import com.cj.jiaqingjiayi.model.domain.BusinessLevel; +import com.cj.jiaqingjiayi.service.BusinessLevelService; +import com.cj.jiaqingjiayi.mapper.BusinessLevelMapper; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.List; + +/** +* @author 高木 +* @description 针对表【business_level】的数据库操作Service实现 +* @createDate 2024-12-02 14:13:25 +*/ +@Service +@Slf4j +public class BusinessLevelServiceImpl extends ServiceImpl + implements BusinessLevelService{ + + @Resource + private BusinessLevelMapper businessLevelMapper; + + @Resource + private UserRatingMapper userRatingMapper; + + @Override + public void updateBusinessLevel(Long businessId) { + Double avg = userRatingMapper.findAvgByBusinessId(businessId); + if (avg == null) { + avg = 1.0; + log.info("warn: avg没有值,将赋初始值1:" + avg); + log.info("当前商家id:" + businessId); + } + int level = calculateLevel(avg); + BusinessLevel businessLevel = businessLevelMapper.selectOne(Wrappers.lambdaQuery() + .eq(BusinessLevel::getBusinessId, businessId)); + + if (businessLevel == null) { + businessLevel = new BusinessLevel(); + businessLevel.setBusinessId(businessId); + businessLevel.setLevel(1); + businessLevel.setAverageScore(BigDecimal.valueOf(1)); + } + businessLevel.setAverageScore(BigDecimal.valueOf(avg)); + businessLevel.setLevel(level); + + this.saveOrUpdate(businessLevel); + } + + @Override + public List findAllOrdered() { + List list = businessLevelMapper.selectList(Wrappers.lambdaQuery() + .orderByDesc(BusinessLevel::getLevel,BusinessLevel::getAverageScore) + .orderByAsc(BusinessLevel::getCreateTime)); + return list; + } + + + private int calculateLevel(Double averageScore) { + if (averageScore >= 4.5) { + return 5; + } else if (averageScore >= 4.0) { + return 4; + } else if (averageScore >= 3.0) { + return 3; + } else if (averageScore >= 2.0) { + return 2; + } else { + return 1; + } + } + +} + + + + diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/BusinessServiceImpl.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/BusinessServiceImpl.java new file mode 100644 index 0000000..9101634 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/BusinessServiceImpl.java @@ -0,0 +1,268 @@ +package com.cj.jiaqingjiayi.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cj.jiaqingjiayi.common.ErrorCode; +import com.cj.jiaqingjiayi.contant.CommonConstant; +import com.cj.jiaqingjiayi.exception.BusinessException; +import com.cj.jiaqingjiayi.exception.ThrowUtils; +import com.cj.jiaqingjiayi.model.domain.*; +import com.cj.jiaqingjiayi.model.request.business.BusinessQueryRequest; +import com.cj.jiaqingjiayi.model.request.business.BusinessUpdateRequest; +import com.cj.jiaqingjiayi.model.vo.BusinessVO; +import com.cj.jiaqingjiayi.service.*; +import com.cj.jiaqingjiayi.mapper.BusinessMapper; +import com.cj.jiaqingjiayi.utils.BeanCopyUtils; +import com.cj.jiaqingjiayi.utils.RegexUtils; +import com.cj.jiaqingjiayi.utils.SqlUtils; +import org.apache.commons.lang3.ObjectUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** +* @author 高木 +* @description 针对表【business(商家)】的数据库操作Service实现 +* @createDate 2024-07-28 17:16:33 +*/ +@Service +public class BusinessServiceImpl extends ServiceImpl + implements BusinessService{ + + @Resource + private UserService userService; + + @Resource + private BusinessMapper businessMapper; + + @Resource + private BusinessLevelService businessLevelService; + + @Resource + private BusinessAuthService businessAuthService; + + @Resource + private ManicuristsignService manicuristsignService; + + @Override + @Transactional(rollbackFor = Exception.class) + public synchronized void addBusiness(User user, Business business, BusinessAuth businessAuth) { + boolean save = userService.save(user); + ThrowUtils.throwIf(!save, ErrorCode.OPERATION_ERROR, "创建商家失败"); + + //商家绑定user + business.setUserId(user.getId()); + boolean save1 = this.save(business); + ThrowUtils.throwIf(!save1, ErrorCode.OPERATION_ERROR, "绑定id失败"); + //添加认证信息 + businessAuth.setBusinessId(business.getId()); + boolean save2 = businessAuthService.save(businessAuth); + ThrowUtils.throwIf(!save2, ErrorCode.OPERATION_ERROR, "商家认证信息失败"); + + } + + @Override + public void validUser(User user, boolean add) { + + ThrowUtils.throwIf(user == null , ErrorCode.NULL_ERROR); + + String userAccount = user.getUserAccount(); + String userPassword = user.getUserPassword(); + + if (add) { + ThrowUtils.throwIf(StringUtils.isAllBlank(userAccount, userPassword), ErrorCode.PARAMS_ERROR); + + if (userAccount.length() < 4) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "用户账号不符合要求"); + } + + if(userPassword.length() < 8) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "用户密码不符合要求"); + } + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("userAccount", userAccount); + long count = userService.count(queryWrapper); + if (count > 0) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "账号重复"); + } + } + } + + @Override + public void validBusiness(Business business, boolean add) { + Long id = business.getId(); + String businessName = business.getBusinessName(); + String businessPhone = business.getBusinessPhone(); + String address = business.getAddress(); + + //只在添加时严格校验 保证商家信息是全的 + if (add) { + if (StringUtils.isAnyBlank(businessName, businessPhone, address)) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "商家信息不全"); + } + } + + if(!add){ + Business byId = getById(id); + ThrowUtils.throwIf(byId == null, ErrorCode.NULL_ERROR, "商家不存在"); + } + + // 有参数可以校验参数 保证商家名字唯一 +// if (StringUtils.isNotBlank(businessName)) { +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("businessName", businessName); +// long count = this.count(queryWrapper); +// ThrowUtils.throwIf(count > 0, ErrorCode.OPERATION_ERROR, "门店名称重复"); +// } + + //校验手机号格式 + if (StringUtils.isNotBlank(businessPhone)) { + boolean phoneInvalid = RegexUtils.isPhoneInvalid(businessPhone); + ThrowUtils.throwIf(phoneInvalid, ErrorCode.PARAMS_ERROR, "手机号格式错误"); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("businessPhone", businessPhone); + long count = this.count(queryWrapper); + ThrowUtils.throwIf(count > 0 , ErrorCode.OPERATION_ERROR, "手机号重复"); + } + } + + @Override + public void validBusinessAuth(BusinessAuth businessAuth, boolean add) { + //只在添加时严格校验 保证商家认证信息是全的 + if (add) { + String shopkeeper = businessAuth.getShopkeeper(); + String license = businessAuth.getLicense(); + String frontIdCard = businessAuth.getFrontIdCard(); + String backIdCard = businessAuth.getBackIdCard(); + if (StringUtils.isAnyBlank(shopkeeper, license, frontIdCard, backIdCard)) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "商家认证信息不全"); + } + } + } + + @Override + public QueryWrapper getQueryWrapper(BusinessQueryRequest businessQueryRequest) { + + if (businessQueryRequest == null) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "请求参数为空"); + } + + Long id = businessQueryRequest.getId(); + Long userId = businessQueryRequest.getUserId(); + Long categoryId = businessQueryRequest.getCategoryId(); + Integer serviceMode = businessQueryRequest.getServiceMode(); + Integer state = businessQueryRequest.getState(); + Integer storeStatus = businessQueryRequest.getStoreStatus(); + String businessName = businessQueryRequest.getBusinessName(); + String address = businessQueryRequest.getAddress(); + String businessProfile = businessQueryRequest.getBusinessProfile(); + String sortField = businessQueryRequest.getSortField(); + String sortOrder = businessQueryRequest.getSortOrder(); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + + queryWrapper.eq(ObjectUtils.isNotEmpty(id), "id", id); + queryWrapper.eq(ObjectUtils.isNotEmpty(userId), "userId", userId); + queryWrapper.eq(ObjectUtils.isNotEmpty(categoryId), "categoryId", categoryId); + queryWrapper.eq(ObjectUtils.isNotEmpty(state), "state", state); + queryWrapper.eq(ObjectUtils.isNotEmpty(storeStatus), "storeStatus", storeStatus); + queryWrapper.eq(ObjectUtils.isNotEmpty(storeStatus), "serviceMode", serviceMode); + queryWrapper.like(StringUtils.isNotBlank(businessName), "businessName", businessName); + queryWrapper.like(StringUtils.isNotBlank(address), "address", address); + queryWrapper.like(StringUtils.isNotBlank(businessProfile), "businessProfile", businessProfile); + queryWrapper.orderBy(SqlUtils.validSortField(sortField), sortOrder.equals(CommonConstant.SORT_ORDER_ASC), + sortField); + + return queryWrapper; + } + + @Override + public BusinessVO getBusinessVO(Business business) { + BusinessVO businessVO = new BusinessVO(); + if (business == null) { + return null; + } + BeanUtils.copyProperties(business,businessVO); + return businessVO; + } + + @Override + public List getBusinessVO(List businessList) { + if (CollectionUtils.isEmpty(businessList)) { + return new ArrayList<>(); + } + return businessList.stream().map(this::getBusinessVO).collect(Collectors.toList()); + } + + @Override + public Business getLoginBusiness(HttpServletRequest request) { + User loginUser = userService.getLoginUser(request); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("userId",loginUser.getId()); + Business business = this.getOne(queryWrapper); + ThrowUtils.throwIf(business == null,ErrorCode.NOT_FOUND_ERROR,"当前用户没有关联商家"); + return business; + } + + @Override + public List findAllBusiness() { + List businessLevels = businessLevelService.findAllOrdered(); + // 获取商家 ID 列表 + List businessIds = businessLevels.stream() + .map(BusinessLevel::getBusinessId) + .distinct() + .collect(Collectors.toList()); + List businesses = businessMapper.selectBatchIds(businessIds); + + //将商家等级信息映射到商家实体 + Map levelMap = businessLevels.stream() + .collect(Collectors.toMap(BusinessLevel::getBusinessId, BusinessLevel::getLevel)); + // Step 5: 构建 BusinessVO 并将等级添加到商家数据中 + List businessVOs = businesses.stream() + .map(business -> { + BusinessVO vo = new BusinessVO(); + BeanUtils.copyProperties(business, vo); // 自动复制 Business 到 BusinessVO + vo.setLevel(levelMap.getOrDefault(business.getId(), 1)); // 设置等级 + return vo; + }) + // Step 6: 按等级排序 + .sorted(Comparator.comparingLong(BusinessVO::getLevel).reversed()) // 按等级降序排序 + .collect(Collectors.toList()); + + return businessVOs; + } + + @Transactional(rollbackFor = Exception.class) + @Override + public boolean updateBusiness(Business newBusiness) { + + if (ObjectUtils.isNotEmpty(newBusiness.getBusinessName())){ + manicuristsignService.update(new LambdaUpdateWrapper() + .eq(Manicuristsign::getBusinessId, newBusiness.getId()) + .set(Manicuristsign::getBusinessName, newBusiness.getBusinessName())); + } + + Business business = new Business(); + BeanCopyUtils.copyPropertiesIgnoreEmpty(newBusiness, business); + return this.updateById(business); + } + +} + + + + diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/CartServiceImpl.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/CartServiceImpl.java new file mode 100644 index 0000000..af241de --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/CartServiceImpl.java @@ -0,0 +1,152 @@ +package com.cj.jiaqingjiayi.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cj.jiaqingjiayi.common.ErrorCode; +import com.cj.jiaqingjiayi.exception.BusinessException; +import com.cj.jiaqingjiayi.exception.ThrowUtils; +import com.cj.jiaqingjiayi.model.domain.Business; +import com.cj.jiaqingjiayi.model.domain.Cart; +import com.cj.jiaqingjiayi.model.domain.Commodities; +import com.cj.jiaqingjiayi.model.domain.User; +import com.cj.jiaqingjiayi.model.request.cart.CartAddRequest; +import com.cj.jiaqingjiayi.model.request.cart.CartDeleteRequest; +import com.cj.jiaqingjiayi.model.request.cart.CartUpdateRequest; +import com.cj.jiaqingjiayi.service.BusinessService; +import com.cj.jiaqingjiayi.service.CartService; +import com.cj.jiaqingjiayi.mapper.CartMapper; +import com.cj.jiaqingjiayi.service.CommoditiesService; +import com.cj.jiaqingjiayi.service.UserService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.math.BigDecimal; + +import static com.cj.jiaqingjiayi.contant.UserConstant.USER_LOGIN_STATE; + +/** +* @author 高木 +* @description 针对表【cart(购物车表)】的数据库操作Service实现 +* @createDate 2024-09-05 15:15:56 +*/ +@Service +@Slf4j +public class CartServiceImpl extends ServiceImpl + implements CartService{ + + @Resource + private UserService userService; + + @Resource + private BusinessService businessService; + + @Resource + private CommoditiesService commoditiesService; + + @Override + public void validCart(CartAddRequest cartAddRequest) { + + if (cartAddRequest == null) { + throw new BusinessException(ErrorCode.PARAMS_ERROR); + } + + Long businessId = cartAddRequest.getBusinessId(); + Long commoditiesId = cartAddRequest.getCommoditiesId(); + Integer quantity = cartAddRequest.getQuantity(); + + if (quantity == null || quantity < 1) { + throw new BusinessException(ErrorCode.NOT_FOUND_ERROR,"商品数量错误"); + } + + Business business = businessService.getById(businessId); + if (business == null) { + throw new BusinessException(ErrorCode.PARAMS_ERROR,"不存在该商家"); + } + + Commodities commodities = commoditiesService.getById(commoditiesId); + if (commodities == null || commodities.getStatus().equals("下架")){ + throw new BusinessException(ErrorCode.PARAMS_ERROR,"不存在该商品"); + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Cart addCart(CartAddRequest cartAddRequest, HttpServletRequest request) { +// User loginUser = userService.getLoginUser(request); + Long userId = cartAddRequest.getUserId(); + Long businessId = cartAddRequest.getBusinessId(); + Long commoditiesId = cartAddRequest.getCommoditiesId(); + Integer quantity = cartAddRequest.getQuantity(); + //计算商品价格 + Commodities commodities = commoditiesService.getById(commoditiesId); + BigDecimal price = new BigDecimal(String.valueOf(commodities.getCommoditiesPrice())); + //保存购物车商品 + Cart cart = new Cart(); + cart.setBusinessId(businessId); + cart.setUserId(userId); + cart.setPrice(price); + cart.setQuantity(quantity); + cart.setCommoditiesId(commoditiesId); + boolean save = this.save(cart); + ThrowUtils.throwIf(!save, ErrorCode.OPERATION_ERROR); + return cart; + } + + @Override + public Boolean updateCart(CartUpdateRequest cartUpdateRequest, HttpServletRequest request) { + User loginUser = userService.getLoginUser(request); + Long userId = loginUser.getId(); + Long commoditiesId = cartUpdateRequest.getCommoditiesId(); + String selectedOptions = cartUpdateRequest.getSelectedOptions(); + Long id = cartUpdateRequest.getId(); + ThrowUtils.throwIf(id == null,ErrorCode.OPERATION_ERROR,"购物车id不存在"); + //检验该购物车是否为登录用户的 + Cart cartId =this.getById(id); + Long cartUserId = cartId.getUserId(); + if (!userId.equals(cartUserId)) { + throw new BusinessException(ErrorCode.PARAMS_ERROR,"无法操作该购物车"); + } + Commodities commodities = commoditiesService.getById(commoditiesId); + BigDecimal price = new BigDecimal(String.valueOf(commodities.getCommoditiesPrice())); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(Cart::getId, id); + Cart cart = this.getOne(wrapper); + Integer quantity = cartUpdateRequest.getQuantity(); + if (cartUpdateRequest.getIsSelectedOptions()) { + cart.setQuantity(cart.getQuantity() + quantity); + } else { + cart.setQuantity(quantity); + } + cart.setPrice(price); + cart.setSubtotal(null); + cart.setSelectedOptions(selectedOptions); + + return this.updateById(cart); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean deleteCart(CartDeleteRequest cartDeleteRequest, HttpServletRequest request) { +// User loginUser = userService.getLoginUser(request); + Long userId = cartDeleteRequest.getUserId(); + Cart cart = this.getById(cartDeleteRequest.getId()); + Long cartUserId = cart.getUserId(); + + if (!userId.equals(cartUserId)) { + throw new BusinessException(ErrorCode.OPERATION_ERROR, "该用户无权删除该购物车"); + } + boolean remove = this.removeById(cartDeleteRequest.getId()); + ThrowUtils.throwIf(!remove, ErrorCode.OPERATION_ERROR); + + return true; + } + + +} + + + + diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/CollectServiceImpl.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/CollectServiceImpl.java new file mode 100644 index 0000000..e98f771 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/CollectServiceImpl.java @@ -0,0 +1,63 @@ +package com.cj.jiaqingjiayi.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cj.jiaqingjiayi.common.ErrorCode; +import com.cj.jiaqingjiayi.exception.ThrowUtils; +import com.cj.jiaqingjiayi.model.domain.Business; +import com.cj.jiaqingjiayi.model.domain.Collect; +import com.cj.jiaqingjiayi.model.domain.User; +import com.cj.jiaqingjiayi.model.request.collect.CollectAddRequest; +import com.cj.jiaqingjiayi.service.BusinessService; +import com.cj.jiaqingjiayi.service.CollectService; +import com.cj.jiaqingjiayi.mapper.CollectMapper; +import com.cj.jiaqingjiayi.service.UserService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +/** +* @author 高木 +* @description 针对表【collect(收藏)】的数据库操作Service实现 +* @createDate 2024-12-02 14:11:46 +*/ +@Service +public class CollectServiceImpl extends ServiceImpl + implements CollectService{ + + @Resource + private UserService userService; + + @Resource + private BusinessService businessService; + + @Override + public void validCollect(CollectAddRequest collectAddRequest) { + Long businessId = collectAddRequest.getBusinessId(); + ThrowUtils.throwIf(businessId == null, ErrorCode.PARAMS_ERROR, "参数不全"); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(Business::getId, businessId); + long count = businessService.count(wrapper); + ThrowUtils.throwIf(count != 1, ErrorCode.PARAMS_ERROR, "填写的商家id不存在"); + } + + @Override + public Boolean addCollect(Collect collect, HttpServletRequest request) { +// User loginUser = userService.getLoginUser(request); +// Long loginUserId = loginUser.getId(); + Long userId = collect.getUserId(); + Long businessId = collect.getBusinessId(); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(Collect::getBusinessId, businessId); + wrapper.eq(Collect::getUserId, userId); + long count = this.count(wrapper); + ThrowUtils.throwIf(count > 0, ErrorCode.OPERATION_ERROR, "该商家已收藏"); +// collect.setUserId(userId); + return this.save(collect); + } +} + + + + diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/CommoditiesGroupServiceImpl.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/CommoditiesGroupServiceImpl.java new file mode 100644 index 0000000..3eedfdd --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/CommoditiesGroupServiceImpl.java @@ -0,0 +1,116 @@ +package com.cj.jiaqingjiayi.service.impl; + +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cj.jiaqingjiayi.common.ErrorCode; +import com.cj.jiaqingjiayi.exception.BusinessException; +import com.cj.jiaqingjiayi.exception.ThrowUtils; +import com.cj.jiaqingjiayi.model.domain.Business; +import com.cj.jiaqingjiayi.model.domain.CommoditiesGroup; +import com.cj.jiaqingjiayi.model.vo.BusinessVO; +import com.cj.jiaqingjiayi.model.vo.GroupVO; +import com.cj.jiaqingjiayi.service.CommoditiesGroupService; +import com.cj.jiaqingjiayi.mapper.CommoditiesGroupMapper; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** +* @author 高木 +* @description 针对表【commodities_group(商品分组表)】的数据库操作Service实现 +* @createDate 2024-12-17 08:52:35 +*/ +@Service +public class CommoditiesGroupServiceImpl extends ServiceImpl + implements CommoditiesGroupService{ + + /** + * 添加分组 + */ + @Transactional(rollbackFor = Exception.class) + @Override + public Long addGroup(CommoditiesGroup commoditiesGroup) { + ThrowUtils.throwIf(commoditiesGroup == null, ErrorCode.SYSTEM_ERROR); + boolean save = this.save(commoditiesGroup); + return commoditiesGroup.getId(); + } + + + /** + * 删除分组 + */ + @Transactional(rollbackFor = Exception.class) + @Override + public Boolean deleteGroup(String groupName) { + ThrowUtils.throwIf(groupName == null, ErrorCode.SYSTEM_ERROR); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("groupName", groupName); + + return this.remove(wrapper); + } + + /** + * 校验分组 + */ + @Override + public void validGroup(CommoditiesGroup commoditiesGroup, Boolean flag) { + ThrowUtils.throwIf(commoditiesGroup == null, ErrorCode.SYSTEM_ERROR); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + + //只在添加时校验是否存在 + if(flag) { + + queryWrapper.eq("businessId", commoditiesGroup.getBusinessId()); + queryWrapper.eq("groupName", commoditiesGroup.getGroupName()); + + long count = this.count(queryWrapper); + if(count > 0 ) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "已存在该分类"); + } + } + + //校验要删除的分组是否存在 + if(!flag) { + queryWrapper.eq("groupName", commoditiesGroup.getGroupName()); + + long count = this.count(queryWrapper); + if(count < 1 ) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "不存在该分组"); + } + + } + + } + + @Override + public GroupVO getGroupVO(CommoditiesGroup commoditiesGroup) { + GroupVO groupVO = new GroupVO(); + if (commoditiesGroup == null) { + return null; + } + BeanUtils.copyProperties(commoditiesGroup,groupVO); + return groupVO; + } + + @Override + public List getGroupVO(List commoditiesGroupList) { + if (CollectionUtils.isEmpty(commoditiesGroupList)) { + return new ArrayList<>(); + } + return commoditiesGroupList.stream().map(this::getGroupVO).collect(Collectors.toList()); + } + +} + + + + diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/CommoditiesServiceImpl.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/CommoditiesServiceImpl.java new file mode 100644 index 0000000..5144953 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/CommoditiesServiceImpl.java @@ -0,0 +1,178 @@ +package com.cj.jiaqingjiayi.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cj.jiaqingjiayi.common.ErrorCode; + +import com.cj.jiaqingjiayi.contant.CommonConstant; +import com.cj.jiaqingjiayi.exception.BusinessException; +import com.cj.jiaqingjiayi.exception.ThrowUtils; +import com.cj.jiaqingjiayi.model.domain.Commodities; + +import com.cj.jiaqingjiayi.model.domain.SpecificationsCommodities; +import com.cj.jiaqingjiayi.model.request.Commodities.CommoditiesQueryRequest; +import com.cj.jiaqingjiayi.model.vo.CommoditiesVO; +import com.cj.jiaqingjiayi.service.CommoditiesService; +import com.cj.jiaqingjiayi.mapper.CommoditiesMapper; +import com.cj.jiaqingjiayi.service.SpecificationsCommoditiesService; + +import com.cj.jiaqingjiayi.utils.SqlUtils; +import org.apache.commons.lang3.StringUtils; + +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + + +/** +* @author 高木 +* @description 针对表【commodities(商品表)】的数据库操作Service实现 +* @createDate 2024-08-20 19:55:49 +*/ +@Service +public class CommoditiesServiceImpl extends ServiceImpl + implements CommoditiesService{ + + @Resource + private SpecificationsCommoditiesService specificationsCommoditiesService; + + @Override + public void validCommodities(Commodities commodities, Boolean update) { + Long id = commodities.getId(); + Long commoditiesGroupId = commodities.getCommoditiesGroupId(); + String commoditiesName = commodities.getCommoditiesName(); + Double commoditiesPrice = commodities.getCommoditiesPrice(); + String status = commodities.getStatus(); + Integer inventoryStatus = commodities.getInventoryStatus(); + + if (update) { + if (id == null) { + throw new BusinessException(ErrorCode.PARAMS_ERROR); + } + } + + if (StringUtils.isAnyBlank(commoditiesName,status)) { + throw new BusinessException(ErrorCode.PARAMS_ERROR); + } + + if (commoditiesGroupId == null || commoditiesPrice == null || inventoryStatus == null) { + throw new BusinessException(ErrorCode.PARAMS_ERROR); + } + } + + @Override + public Long addCommodities(Commodities commodities) { + //判断商品是否存在 + validCommoditiesName(commodities); + //保存代码 + boolean save = this.save(commodities); + ThrowUtils.throwIf(!save,ErrorCode.OPERATION_ERROR); + return commodities.getId(); + } + + @Override + public void removeByCommoditiesGroupId(Long commoditiesGroupId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("commoditiesGroupId",commoditiesGroupId); + List list = this.list(queryWrapper); + //判断该分组是否有商品 + if (list.isEmpty()) { + return; + } + boolean remove = this.remove(queryWrapper); + ThrowUtils.throwIf(!remove, ErrorCode.OPERATION_ERROR); + //删除中间表数据 + for (Commodities commodities : list) { + Long commoditiesId = commodities.getId(); + specificationsCommoditiesService.deleteByCommoditiesId(commoditiesId); + } + } + + @Override + public Boolean updateCommodities(Commodities commodities) { + //判断商品是否存在 + validCommoditiesName(commodities); + //更新商品 + return this.updateById(commodities); + } + + @Override + public CommoditiesVO getCommoditiesVO(Commodities commodities) { + if (commodities == null) { + return null; + } + long count = getCount(commodities); + CommoditiesVO commoditiesVO = new CommoditiesVO(); + BeanUtils.copyProperties(commodities, commoditiesVO); + if (count > 0) { + commoditiesVO.setIsSpecification(1); + } + return commoditiesVO; + } + + @Override + public QueryWrapper getWrapper(CommoditiesQueryRequest commoditiesQueryRequest) { + Long id = commoditiesQueryRequest.getId(); + Long businessId = commoditiesQueryRequest.getBusinessId(); + Long commoditiesGroupId = commoditiesQueryRequest.getCommoditiesGroupId(); + String status = commoditiesQueryRequest.getStatus(); + String commoditiesName = commoditiesQueryRequest.getCommoditiesName(); + String sortField = commoditiesQueryRequest.getSortField(); + String sortOrder = commoditiesQueryRequest.getSortOrder(); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq(id != null, "id", id); + wrapper.eq(businessId != null, "businessId", businessId); + wrapper.eq(commoditiesGroupId != null, "commoditiesGroupId", commoditiesGroupId); + wrapper.eq(StringUtils.isNotBlank(status), "status", status); + wrapper.like(StringUtils.isNotBlank(commoditiesName), "commoditiesName", commoditiesName); + wrapper.orderBy(SqlUtils.validSortField(sortField), sortOrder.equals(CommonConstant.SORT_ORDER_ASC), sortField); + return wrapper; + } + + @Override + public List getCommoditiesVOList(List commoditiesVOList) { + if (CollectionUtils.isEmpty(commoditiesVOList)) { + return new ArrayList<>(); + } + return commoditiesVOList.stream().map(item->{ + long count = getCount(item); + CommoditiesVO commoditiesVO = new CommoditiesVO(); + BeanUtils.copyProperties(item,commoditiesVO); + if (count > 0) { + commoditiesVO.setIsSpecification(1); + } + return commoditiesVO; + }).collect(Collectors.toList()); + } + + private void validCommoditiesName(Commodities commodities) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("commoditiesName",commodities.getCommoditiesName()); + queryWrapper.eq("businessId",commodities.getBusinessId()); + long count = this.count(queryWrapper); + if (commodities.getId() == null) { + ThrowUtils.throwIf(count > 0,ErrorCode.PARAMS_ERROR,"已存在该商品"); + } + else { + ThrowUtils.throwIf(count > 0,ErrorCode.PARAMS_ERROR,"已存在该商品"); + } + } + + private long getCount(Commodities commodities) { + Long commoditiesId = commodities.getId(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("commoditiesId",commoditiesId); + return specificationsCommoditiesService.count(queryWrapper); + } + +} + + + + diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/ManicuristAuthServiceImpl.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/ManicuristAuthServiceImpl.java new file mode 100644 index 0000000..e4606fd --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/ManicuristAuthServiceImpl.java @@ -0,0 +1,22 @@ +package com.cj.jiaqingjiayi.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cj.jiaqingjiayi.model.domain.ManicuristAuth; +import com.cj.jiaqingjiayi.service.ManicuristAuthService; +import com.cj.jiaqingjiayi.mapper.ManicuristAuthMapper; +import org.springframework.stereotype.Service; + +/** +* @author 高木 +* @description 针对表【manicurist_auth(美甲师认证表)】的数据库操作Service实现 +* @createDate 2024-09-23 18:46:06 +*/ +@Service +public class ManicuristAuthServiceImpl extends ServiceImpl + implements ManicuristAuthService{ + +} + + + + diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/ManicuristServiceImpl.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/ManicuristServiceImpl.java new file mode 100644 index 0000000..3e42224 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/ManicuristServiceImpl.java @@ -0,0 +1,337 @@ +package com.cj.jiaqingjiayi.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cj.jiaqingjiayi.common.ErrorCode; +import com.cj.jiaqingjiayi.contant.CommonConstant; +import com.cj.jiaqingjiayi.exception.BusinessException; +import com.cj.jiaqingjiayi.exception.ThrowUtils; +import com.cj.jiaqingjiayi.mapper.UserRatingMapper; +import com.cj.jiaqingjiayi.model.domain.*; +import com.cj.jiaqingjiayi.model.request.manicurist.ManicuristQueryRequest; +import com.cj.jiaqingjiayi.model.request.manicurist.ManicuristUpdateRequest; +import com.cj.jiaqingjiayi.model.vo.ManicuristVO; +import com.cj.jiaqingjiayi.service.*; +import com.cj.jiaqingjiayi.mapper.ManicuristMapper; +import com.cj.jiaqingjiayi.utils.BeanCopyUtils; +import com.cj.jiaqingjiayi.utils.RegexUtils; +import com.cj.jiaqingjiayi.utils.SqlUtils; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.ObjectUtils; +import org.apache.commons.lang3.StringUtils; +import org.bouncycastle.jcajce.provider.asymmetric.util.PrimeCertaintyCalculator; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; +import org.springframework.util.DigestUtils; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +import static com.cj.jiaqingjiayi.contant.UserConstant.USER_SALT; + +/** +* @author 高木 +*/ +@Service +@Slf4j +public class ManicuristServiceImpl extends ServiceImpl + implements ManicuristService{ + + @Resource + private UserService userService; + + @Resource + private BusinessService businessService; + + @Resource + private ManicuristMapper manicuristMapper; + + @Resource + private UserRatingMapper userRatingMapper; + + @Resource + private ManicuristAuthService manicuristAuthService; + + //管理员添加美甲师 + @Override + @Transactional(rollbackFor = Exception.class) + public void adminAddManicurist(User user, Manicurist manicurist, ManicuristAuth manicuristAuth) { + //加密 + String encryptPassword = DigestUtils.md5DigestAsHex((USER_SALT + user.getUserPassword()).getBytes()); + user.setUserPassword(encryptPassword); + //往user表中补充美甲师信息 + user.setUsername(manicurist.getManicuristName()); + user.setAvatarUrl(manicurist.getManicuristAvatar()); + user.setPhone(manicurist.getPhone()); + + //更改用户权限为美甲师 + user.setUserRole(3); + + boolean save = userService.save(user); + ThrowUtils.throwIf(!save, ErrorCode.OPERATION_ERROR, "添加美甲师失败"); + + //美甲师绑定user + manicurist.setUserId(user.getId()); + boolean save1 = this.save(manicurist); + ThrowUtils.throwIf(!save1, ErrorCode.OPERATION_ERROR, "绑定id失败"); + //添加认证信息 + manicuristAuth.setArtistId(manicurist.getId()); + boolean save2 = manicuristAuthService.save(manicuristAuth); + ThrowUtils.throwIf(!save2, ErrorCode.OPERATION_ERROR, "添加美甲师认证信息失败"); + } + + //用户注册美甲师 + @Override + @Transactional(rollbackFor = Exception.class) + public void addManicurist(Long userId, Manicurist manicurist, ManicuristAuth manicuristAuth) { + //美甲师绑定user +// Long userId = loginUser.getId(); + manicurist.setUserId(userId); + +// //更改用户权限为美甲师 +// loginUser.setUserRole(3); + + //往user表中补充美甲师信息 +// loginUser.setUsername(manicurist.getManicuristName()); +// loginUser.setAvatarUrl(manicurist.getManicuristAvatar()); +// loginUser.setPhone(manicurist.getPhone()); + +// boolean save = userService.updateById(loginUser); +// ThrowUtils.throwIf(!save, ErrorCode.OPERATION_ERROR, "绑定失败"); + + boolean save1 = this.save(manicurist); + ThrowUtils.throwIf(!save1, ErrorCode.OPERATION_ERROR, "绑定id失败"); + + //添加认证信息 + manicuristAuth.setArtistId(manicurist.getId()); + boolean save2 = manicuristAuthService.save(manicuristAuth); + ThrowUtils.throwIf(!save2, ErrorCode.OPERATION_ERROR, "添加美甲师认证信息失败"); + } + + @Override + public void validUser(User user, boolean add) { + ThrowUtils.throwIf(user == null , ErrorCode.NULL_ERROR); + + String userAccount = user.getUserAccount(); + String userPassword = user.getUserPassword(); + + if (add) { + ThrowUtils.throwIf(StringUtils.isAllBlank(userAccount, userPassword), ErrorCode.PARAMS_ERROR); + + if (userAccount.length() < 4) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "用户账号不符合要求"); + } + + if(userPassword.length() < 8) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "用户密码不符合要求"); + } + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("userAccount", userAccount); + long count = userService.count(queryWrapper); + if (count > 0) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "账号重复"); + } + } + } + + @Override + public void validManicurist(Manicurist manicurist, boolean add) { + Long id = manicurist.getId(); + String manicuristName = manicurist.getManicuristName(); + String manicuristPhone = manicurist.getPhone(); + Long userId = manicurist.getUserId(); + Integer gender = manicurist.getGender(); + + //只在添加时严格校验 保证商家信息是全的 + if (add) { + if (StringUtils.isAnyBlank(manicuristName, manicuristPhone) || gender == null) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "信息不全"); + } + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("userId", userId); + Manicurist userIdMan = this.getOne(queryWrapper); + ThrowUtils.throwIf(userIdMan != null, ErrorCode.PARAMS_ERROR,"该用户已经申请了美甲师!"); + } + + if(!add){ + Manicurist byId = this.getById(id); + ThrowUtils.throwIf(byId == null, ErrorCode.NULL_ERROR, "美甲师不存在"); + } + +// if(StringUtils.isNotBlank(manicuristName)){ +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("manicuristName", manicuristName); +// long count = this.count(queryWrapper); +// ThrowUtils.throwIf(count > 0, ErrorCode.OPERATION_ERROR, "美甲师名称重复"); +// } + + //校验手机号格式 + if (StringUtils.isNotBlank(manicuristPhone)) { + boolean phoneInvalid = RegexUtils.isPhoneInvalid(manicuristPhone); + ThrowUtils.throwIf(phoneInvalid, ErrorCode.PARAMS_ERROR, "手机号格式错误"); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("Phone", manicuristPhone); + long count = this.count(queryWrapper); + ThrowUtils.throwIf(count > 0 , ErrorCode.OPERATION_ERROR, "手机号重复"); + } + } + + @Override + public void validManicuristAuth(ManicuristAuth manicuristAuth, boolean add) { + //只在添加时严格校验 保证认证信息是全的 + if (add) { + String certification_number = manicuristAuth.getCertification_number(); + String certificate_path = manicuristAuth.getCertificate_path(); + String issuing_authority = manicuristAuth.getIssuing_authority(); + if (StringUtils.isAnyBlank(certification_number, certificate_path, issuing_authority)) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "美甲师认证信息不全"); + } + } + } + + @Override + public void validManBus(Long businessId) { + Business byId = businessService.getById(businessId); + ThrowUtils.throwIf(byId == null, ErrorCode.NULL_ERROR, "商家不存在"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteMan(long id) { + Manicurist manicurist = this.getById(id); + ThrowUtils.throwIf(manicurist == null, ErrorCode.OPERATION_ERROR, "删除的美甲师不存在"); + Long userId = manicurist.getUserId(); + User user = userService.getById(userId); + user.setUserRole(0); + boolean update = userService.updateById(user); + ThrowUtils.throwIf(!update, ErrorCode.PARAMS_ERROR, "操作失败"); + + boolean result = this.removeById(id); + ThrowUtils.throwIf(!result, ErrorCode.PARAMS_ERROR, "操作失败"); + } + + @Override + public ManicuristVO getManicuristVO(Manicurist manicurist) { + if(manicurist == null ){ + return null; + } + ManicuristVO manicuristVO = new ManicuristVO(); + BeanUtils.copyProperties(manicurist, manicuristVO); + return manicuristVO; + } + + @Override + public List getManicuristVO(List manicuristList) { + if(CollectionUtils.isEmpty(manicuristList)){ + return new ArrayList<>(); + } + return manicuristList.stream().map(this::getManicuristVO).collect(Collectors.toList()); + } + + @Override + public QueryWrapper getQueryWrapper(ManicuristUpdateRequest manicuristUpdateRequest) { + if (manicuristUpdateRequest == null) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "请求参数为空"); + } + + Long businessId = manicuristUpdateRequest.getBusinessId(); + String manicuristName = manicuristUpdateRequest.getManicuristName(); + Integer gender = manicuristUpdateRequest.getGender(); + String Phone = manicuristUpdateRequest.getPhone(); + String email = manicuristUpdateRequest.getEmail(); + Date employment_date = manicuristUpdateRequest.getEmployment_date(); + String specialties = manicuristUpdateRequest.getSpecialties(); + BigDecimal salary = manicuristUpdateRequest.getSalary(); + + + QueryWrapper queryWrapper = new QueryWrapper<>(); + + if (ObjectUtils.isNotEmpty(businessId)) { + queryWrapper.eq("businessId", businessId); + } + + if (ObjectUtils.isNotEmpty(manicuristName)) { + queryWrapper.eq("manicuristName", manicuristName); + } + + if (ObjectUtils.isNotEmpty(gender)) { + queryWrapper.eq( "gender", gender); + } + + if (ObjectUtils.isNotEmpty(Phone)) { + queryWrapper.eq( "Phone", Phone); + } + + if (ObjectUtils.isNotEmpty(email)) { + queryWrapper.eq( "email", email); + } + + if (ObjectUtils.isNotEmpty(employment_date)) { + queryWrapper.like( "employment_date", employment_date); + } + + if (ObjectUtils.isNotEmpty(specialties)) { + queryWrapper.like( "specialties", specialties); + } + + if (ObjectUtils.isNotEmpty(salary)) { + queryWrapper.like( "salary", salary); + } + + return queryWrapper; + } + + @Override + public void updateManicuristLevel(Long manicuristId) { + Double avg = userRatingMapper.findAvgByManicuristId(manicuristId); + if (avg == null) { + avg = 1.0; + log.info("warn: avg没有值,将赋初始值1:" + avg); + log.info("当前美甲师id:" + manicuristId); + } + int level = calculateLevel(avg); + Manicurist manicurist = manicuristMapper.selectOne(Wrappers.lambdaQuery() + .eq(Manicurist::getId, manicuristId)); + + if (manicurist.getRating() == null) { +// businessLevel = new BusinessLevel(); +// businessLevel.setBusinessId(businessId); + BigDecimal bigDecimalValue = BigDecimal.valueOf(1); + manicurist.setRating(bigDecimalValue); +// businessLevel.setAverageScore(BigDecimal.valueOf(1)); + } + manicurist.setRating(BigDecimal.valueOf(level)); + + Manicurist Lv = new Manicurist(); + BeanCopyUtils.copyPropertiesIgnoreEmpty(manicurist, Lv); + + this.saveOrUpdate(Lv); + } + + private int calculateLevel(Double averageScore) { + if (averageScore >= 4.5) { + return 5; + } else if (averageScore >= 4.0) { + return 4; + } else if (averageScore >= 3.0) { + return 3; + } else if (averageScore >= 2.0) { + return 2; + } else { + return 1; + } + } +} + + + + diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/ManicuristsignServiceImpl.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/ManicuristsignServiceImpl.java new file mode 100644 index 0000000..cd2e739 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/ManicuristsignServiceImpl.java @@ -0,0 +1,49 @@ +package com.cj.jiaqingjiayi.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cj.jiaqingjiayi.model.domain.Manicurist; +import com.cj.jiaqingjiayi.model.domain.Manicuristsign; +import com.cj.jiaqingjiayi.model.vo.ManicuristVO; +import com.cj.jiaqingjiayi.model.vo.ManicuristsignVO; +import com.cj.jiaqingjiayi.service.ManicuristsignService; +import com.cj.jiaqingjiayi.mapper.ManicuristsignMapper; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** +* @author 高木 +* @description 针对表【manicuristsign(美甲师表)】的数据库操作Service实现 +* @createDate 2025-02-26 19:29:22 +*/ +@Service +public class ManicuristsignServiceImpl extends ServiceImpl + implements ManicuristsignService{ + + @Override + public ManicuristsignVO getManicuristsignVO(Manicuristsign manicuristsign) { + if(manicuristsign == null ){ + return null; + } + ManicuristsignVO manicuristsignVO = new ManicuristsignVO(); + BeanUtils.copyProperties(manicuristsign, manicuristsignVO); + return manicuristsignVO; + } + + @Override + public List getManicuristsignVO(List manicuristsignList) { + if(CollectionUtils.isEmpty(manicuristsignList)){ + return new ArrayList<>(); + } + return manicuristsignList.stream().map(this::getManicuristsignVO).collect(Collectors.toList()); + } + +} + + + + diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/OrderItemsServiceImpl.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/OrderItemsServiceImpl.java new file mode 100644 index 0000000..829f12f --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/OrderItemsServiceImpl.java @@ -0,0 +1,81 @@ +package com.cj.jiaqingjiayi.service.impl; + +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import com.cj.jiaqingjiayi.common.ErrorCode; +import com.cj.jiaqingjiayi.exception.BusinessException; +import com.cj.jiaqingjiayi.exception.ThrowUtils; +import com.cj.jiaqingjiayi.mapper.OrderItemsMapper; +import com.cj.jiaqingjiayi.model.domain.Commodities; +import com.cj.jiaqingjiayi.model.domain.OrderItems; +import com.cj.jiaqingjiayi.model.vo.CommoditiesVO; +import com.cj.jiaqingjiayi.model.vo.OrderItemsVO; +import com.cj.jiaqingjiayi.service.CommoditiesService; +import com.cj.jiaqingjiayi.service.OrderItemsService; +import org.apache.commons.lang3.ObjectUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** +* @author 高木 +* @description 针对表【order_items(详细订单表)】的数据库操作Service实现 +* @createDate 2024-11-10 14:25:15 +*/ +@Service +public class OrderItemsServiceImpl extends ServiceImpl + implements OrderItemsService { + + @Resource + private CommoditiesService commoditiesService; + + @Override + public void validOrderItems(OrderItems orderItems) { + Long commoditiesId = orderItems.getCommoditiesId(); + Integer quantity = orderItems.getQuantity(); + BigDecimal price = orderItems.getPrice(); + // 校验菜品是否存在 + Commodities commodities = commoditiesService.getById(commoditiesId); + ThrowUtils.throwIf(commodities == null, ErrorCode.NOT_FOUND_ERROR, "商品不存在"); + // 有参数则校验 + if (ObjectUtils.allNotNull(commoditiesId, quantity, price)) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "商品错误"); + } + } + + @Override + public OrderItemsVO getOrderItemsVO(OrderItems orderItems) { + if (orderItems == null) { + return null; + } + OrderItemsVO orderItemsVO = new OrderItemsVO(); + BeanUtils.copyProperties(orderItems, orderItemsVO); + // 关联查询商品信息 + Long commoditiesId = orderItems.getCommoditiesId(); + Commodities commodities = null; + if (commoditiesId != null && commoditiesId > 0) { + commodities = commoditiesService.getById(commoditiesId); + } + CommoditiesVO commoditiesVO = commoditiesService.getCommoditiesVO(commodities); + orderItemsVO.setCommoditiesVO(commoditiesVO); + return orderItemsVO; + } + + @Override + public List getOrderItemsVO(List orderItemsList) { + if (CollectionUtils.isEmpty(orderItemsList)) { + return new ArrayList<>(); + } + return orderItemsList.stream().map(this::getOrderItemsVO).collect(Collectors.toList()); + } +} + + + + diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/OrdersServiceImpl.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/OrdersServiceImpl.java new file mode 100644 index 0000000..7ed68ee --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/OrdersServiceImpl.java @@ -0,0 +1,210 @@ +package com.cj.jiaqingjiayi.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import com.cj.jiaqingjiayi.common.ErrorCode; +import com.cj.jiaqingjiayi.contant.CommonConstant; +import com.cj.jiaqingjiayi.exception.BusinessException; +import com.cj.jiaqingjiayi.model.domain.Business; +import com.cj.jiaqingjiayi.model.domain.Manicurist; +import com.cj.jiaqingjiayi.model.domain.OrderItems; +import com.cj.jiaqingjiayi.model.domain.Orders; +import com.cj.jiaqingjiayi.model.request.order.OrderQueryRequest; +import com.cj.jiaqingjiayi.model.vo.BusinessVO; +import com.cj.jiaqingjiayi.model.vo.ManicuristVO; +import com.cj.jiaqingjiayi.model.vo.OrderItemsVO; +import com.cj.jiaqingjiayi.model.vo.OrdersVO; +import com.cj.jiaqingjiayi.service.BusinessService; +import com.cj.jiaqingjiayi.service.ManicuristService; +import com.cj.jiaqingjiayi.service.OrderItemsService; +import com.cj.jiaqingjiayi.service.OrdersService; +import com.cj.jiaqingjiayi.mapper.OrdersMapper; +import com.cj.jiaqingjiayi.utils.RegexUtils; +import com.cj.jiaqingjiayi.utils.SqlUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.ObjectUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import javax.naming.Name; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; +import java.util.Random; +import java.util.stream.Collectors; + +/** +* @author 高木 +* @description 针对表【orders(订单表)】的数据库操作Service实现 +* @createDate 2024-11-10 14:22:10 +*/ +@Service +public class OrdersServiceImpl extends ServiceImpl + implements OrdersService{ + + @Resource + private OrderItemsService orderItemsService; + + @Resource + private BusinessService businessService; + + @Resource + private ManicuristService manicuristService; + + + @Transactional(rollbackFor = Exception.class) + @Override + public long addOrder(Orders orders, List orderItemsList) { + // 获取当前时间的秒级时间戳(去掉年、月、日的前缀) + String timePart = String.valueOf(System.currentTimeMillis() / 1000).substring(4); + // 生成两位随机数 + String randomPart = String.format("%02d", new Random().nextInt(100)); + String orderNumber = timePart + randomPart; + //设置订单号 + orders.setOrderNumber(orderNumber); + + boolean saveOrder = this.save(orders); + if (!saveOrder) { + throw new BusinessException(ErrorCode.SYSTEM_ERROR, "创建订单失败,数据库错误"); + } + // 创建订单商品 + for (OrderItems orderItems : orderItemsList) { + // 绑定订单和订单详情 + orderItems.setOrderId(orders.getId()); + boolean saveItems = orderItemsService.save(orderItems); + if (!saveItems) { + log.error("创建订单商品失败,订单id:" + orders.getId()); + throw new BusinessException(ErrorCode.OPERATION_ERROR, "订单商品创建失败"); + } + } + return orders.getId(); + } + + @Override + public void validOrder(Orders orders) { + String userName = orders.getUserName(); + String phone = orders.getPhone(); + Long userId = orders.getUserId(); + Long businessId = orders.getBusinessId(); + BigDecimal totalPrice = orders.getTotalPrice(); + Integer payMethod = orders.getPayMethod(); + if (StringUtils.isAnyBlank(userName, phone)) { + throw new BusinessException(ErrorCode.PARAMS_ERROR); + } + if (StringUtils.isNotBlank(phone) && RegexUtils.isPhoneInvalid(phone)) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "手机号格式错误"); + } + if (ObjectUtils.isEmpty(totalPrice) || totalPrice.floatValue() <= 0) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "价格错误"); + } + if (ObjectUtils.anyNull(userId, businessId, payMethod)) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "参数不全"); + } + } + + @Override + public OrdersVO getOrdersVO(Orders orders) { + if (orders == null) { + return null; + } + OrdersVO ordersVO = new OrdersVO(); + BeanUtils.copyProperties(orders, ordersVO); + // 关联查询商家信息 + Long businessId = orders.getBusinessId(); + Business business = null; + if (businessId != null && businessId > 0) { + business = businessService.getById(businessId); + } + + BusinessVO businessVO = businessService.getBusinessVO(business); + ordersVO.setBusinessVO(businessVO); + + Long manicuristId = orders.getManicuristId(); + Manicurist manicurist = null; + if (manicuristId != null && manicuristId > 0) { + manicurist = manicuristService.getById(manicuristId); + } + ManicuristVO manicuristVO = manicuristService.getManicuristVO(manicurist); + ordersVO.setManicuristVO(manicuristVO); + // 关联查询订单详情信息 + Long orderId = orders.getId(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("orderId", orderId); + List orderItemsList = orderItemsService.list(queryWrapper); + List orderItemsVOList = orderItemsService.getOrderItemsVO(orderItemsList); + ordersVO.setOrderItemsVOList(orderItemsVOList); + // 关联查询评价状态 + + // 设置商品数量 + Integer number = 0; + for (OrderItemsVO detailsVO : orderItemsVOList) { + number += detailsVO.getQuantity(); + } + ordersVO.setNumber(number); + return ordersVO; + } + + @Override + public List getOrdersVO(List ordersList) { + if (CollectionUtils.isEmpty(ordersList)) { + return new ArrayList<>(); + } + return ordersList.stream().map(this::getOrdersVO).collect(Collectors.toList()); + } + + @Override + @Transactional + public Orders getOrderWithPessimisticLock(Long ordersId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(Orders::getId, ordersId); + + // 使用悲观锁,查询并锁定订单 + Orders orders = this.getBaseMapper().selectOne(queryWrapper.last("FOR UPDATE")); + + return orders; + } + + @Override + public QueryWrapper getQueryWrapper(OrderQueryRequest orderQueryRequest) { + if (orderQueryRequest == null) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "请求参数为空"); + } + Long id = orderQueryRequest.getId(); + Long userId = orderQueryRequest.getUserId(); + Long businessId = orderQueryRequest.getBusinessId(); + Long manicuristId = orderQueryRequest.getManicuristId(); + String orderNumber = orderQueryRequest.getOrderNumber(); + Integer claimStatus = orderQueryRequest.getClaimStatus(); + Integer state = orderQueryRequest.getPaymentStatus(); + String startTime = orderQueryRequest.getStartTime(); + String endTime = orderQueryRequest.getEndTime(); + String sortField = orderQueryRequest.getSortField(); + String sortOrder = orderQueryRequest.getSortOrder(); + Integer serviceMode = orderQueryRequest.getServiceMode(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtils.isNotEmpty(id), "id", id); + queryWrapper.eq(ObjectUtils.isNotEmpty(userId), "userId", userId); + queryWrapper.eq(ObjectUtils.isNotEmpty(businessId), "businessId", businessId); + queryWrapper.eq(ObjectUtils.isNotEmpty(manicuristId), "manicuristId", manicuristId); + queryWrapper.eq(ObjectUtils.isNotEmpty(orderNumber), "orderNumber", orderNumber); + queryWrapper.eq(ObjectUtils.isNotEmpty(state), "paymentStatus", state); + queryWrapper.eq(ObjectUtils.isNotEmpty(serviceMode), "serviceMode", serviceMode); + queryWrapper.eq(claimStatus != null, "claimStatus", claimStatus); + queryWrapper.ge(StringUtils.isNotBlank(startTime), "createTime", startTime); + queryWrapper.le(StringUtils.isNotBlank(endTime), "createTime", endTime); + queryWrapper.orderBy(SqlUtils.validSortField(sortField), sortOrder.equals(CommonConstant.SORT_ORDER_ASC), + sortField); + return queryWrapper; + } +} + + + + diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/RecruitmentServiceImpl.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/RecruitmentServiceImpl.java new file mode 100644 index 0000000..80c1bfe --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/RecruitmentServiceImpl.java @@ -0,0 +1,77 @@ +package com.cj.jiaqingjiayi.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import com.cj.jiaqingjiayi.common.ErrorCode; +import com.cj.jiaqingjiayi.exception.ThrowUtils; +import com.cj.jiaqingjiayi.model.domain.Business; +import com.cj.jiaqingjiayi.model.domain.Recruitment; +import com.cj.jiaqingjiayi.model.request.recruitment.RecruitmentAddRequest; +import com.cj.jiaqingjiayi.model.request.recruitment.RecruitmentUpdateRequest; +import com.cj.jiaqingjiayi.service.BusinessService; +import com.cj.jiaqingjiayi.service.RecruitmentService; +import com.cj.jiaqingjiayi.mapper.RecruitmentMapper; +import com.cj.jiaqingjiayi.utils.BeanCopyUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.List; + +/** +* @author 高木 +* @description 针对表【recruitment(美甲师招聘信息表)】的数据库操作Service实现 +* @createDate 2025-03-12 18:51:44 +*/ +@Service +public class RecruitmentServiceImpl extends ServiceImpl + implements RecruitmentService{ + + @Resource + private BusinessService businessService; + + @Transactional(rollbackFor = Exception.class) + @Override + public Long addRecruitment(RecruitmentAddRequest addRequest) { + + Recruitment recruitment = new Recruitment(); + BeanUtils.copyProperties(addRequest,recruitment); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("businessName", addRequest.getBusinessName()); + Business business = businessService.getOne(queryWrapper); + recruitment.setBusinessId(business.getId()); + + boolean save = this.save(recruitment); + ThrowUtils.throwIf(!save, ErrorCode.OPERATION_ERROR, "发布失败"); + + return recruitment.getId(); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public boolean deleteRecruitment(Long id) { + + return this.removeById(id); + } + + @Override + public List selectRecruitment(Long businessId) { + QueryWrapper QueryWrapper = new QueryWrapper<>(); + QueryWrapper.eq("businessId", businessId); + + return this.list(QueryWrapper); + } + + @Override + public boolean updateRecruitment(RecruitmentUpdateRequest updateRequest) { + Recruitment recruitment = new Recruitment(); + BeanCopyUtils.copyPropertiesIgnoreEmpty(updateRequest, recruitment); + return this.updateById(recruitment); + } +} + + + + diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/SpecificationsCommoditiesServiceImpl.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/SpecificationsCommoditiesServiceImpl.java new file mode 100644 index 0000000..ddf9485 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/SpecificationsCommoditiesServiceImpl.java @@ -0,0 +1,91 @@ +package com.cj.jiaqingjiayi.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cj.jiaqingjiayi.common.ErrorCode; +import com.cj.jiaqingjiayi.exception.ThrowUtils; +import com.cj.jiaqingjiayi.model.domain.Specifications; +import com.cj.jiaqingjiayi.model.domain.SpecificationsCommodities; +import com.cj.jiaqingjiayi.model.vo.SpecificationsVO; +import com.cj.jiaqingjiayi.service.AttributeService; +import com.cj.jiaqingjiayi.service.SpecificationsCommoditiesService; +import com.cj.jiaqingjiayi.mapper.SpecificationsCommoditiesMapper; +import com.cj.jiaqingjiayi.service.SpecificationsService; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.util.List; +import java.util.stream.Collectors; + +/** +* @author 高木 +* @description 针对表【specifications_commodities(商品和规格的中间表)】的数据库操作Service实现 +* @createDate 2024-08-21 16:21:41 +*/ +@Service +public class SpecificationsCommoditiesServiceImpl extends ServiceImpl + implements SpecificationsCommoditiesService{ + + @Resource + private SpecificationsService specificationsService; + + @Resource + private AttributeService attributeService; + + @Override + public Boolean add(Long commoditiesId, List specificationsIds) { + if (CollectionUtils.isEmpty(specificationsIds)) { + return true; + } + + for (Long specificationsId: specificationsIds) { + SpecificationsCommodities specificationsDishes = new SpecificationsCommodities(); + specificationsDishes.setSpecificationsId(specificationsId); + specificationsDishes.setCommoditiesId(commoditiesId); + boolean save = this.save(specificationsDishes); + ThrowUtils.throwIf(!save, ErrorCode.OPERATION_ERROR); + } + return true; + } + + @Override + public void deleteByCommoditiesId(Long commoditiesId) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("commoditiesId",commoditiesId); + long count = this.count(queryWrapper); + if (count < 1) { + return; + } + boolean remove = this.remove(queryWrapper); + ThrowUtils.throwIf(!remove, ErrorCode.OPERATION_ERROR); + } + + @Override + public Boolean updateByCommoditiesId(Long commoditiesId, List specificationsIds) { + //删除之前的中间表信息 + deleteByCommoditiesId(commoditiesId); + //保存更新的中间表信息 + return add(commoditiesId,specificationsIds); + } + + @Override + public List getSpecificationsAddAttribute(List specificationsCommoditiesList) { + List specificationsVOList = specificationsCommoditiesList.stream().map(item -> { + Long specificationsId = item.getSpecificationsId(); + Specifications specifications = specificationsService.getById(specificationsId); + SpecificationsVO specificationsVO = new SpecificationsVO(); + BeanUtils.copyProperties(specifications, specificationsVO); + return specificationsVO; + }).collect(Collectors.toList()); + return attributeService.getBySpecificationsVoId(specificationsVOList); + } + + +} + + + + diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/SpecificationsServiceImpl.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/SpecificationsServiceImpl.java new file mode 100644 index 0000000..de0e251 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/SpecificationsServiceImpl.java @@ -0,0 +1,103 @@ +package com.cj.jiaqingjiayi.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cj.jiaqingjiayi.common.ErrorCode; +import com.cj.jiaqingjiayi.exception.BusinessException; +import com.cj.jiaqingjiayi.exception.ThrowUtils; +import com.cj.jiaqingjiayi.model.domain.Business; +import com.cj.jiaqingjiayi.model.domain.Specifications; +import com.cj.jiaqingjiayi.model.request.attribute.AttributeAddRequest; +import com.cj.jiaqingjiayi.model.request.attribute.AttributeUpdateRequest; +import com.cj.jiaqingjiayi.model.vo.SpecificationsVO; +import com.cj.jiaqingjiayi.service.AttributeService; +import com.cj.jiaqingjiayi.service.BusinessService; +import com.cj.jiaqingjiayi.service.SpecificationsService; +import com.cj.jiaqingjiayi.mapper.SpecificationsMapper; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; + +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** +* @author 高木 +* @description 针对表【specifications(规格表)】的数据库操作Service实现 +* @createDate 2024-08-21 16:20:48 +*/ +@Service +public class SpecificationsServiceImpl extends ServiceImpl + implements SpecificationsService{ + + @Resource + private BusinessService businessService; + + @Resource + private AttributeService attributeService; + + @Override + public void validSpecifications(Specifications specifications, boolean update) { + if (specifications == null) { + throw new BusinessException(ErrorCode.PARAMS_ERROR); + } + String specificationsName = specifications.getSpecificationsName(); + Long id = specifications.getId(); + + if (update) { + ThrowUtils.throwIf(id == null, ErrorCode.PARAMS_ERROR,"请提供规格id"); + } + + if (StringUtils.isBlank(specificationsName)) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "请填写规格名称"); + } + } + + @Override + public Boolean addSpecifications(Specifications specifications, List attributeAddRequests, HttpServletRequest request) { + //获取当前商户 + Business loginBusiness = businessService.getLoginBusiness(request); + Long businessId = loginBusiness.getId(); + + //保存规格 + specifications.setBusinessId(businessId); + boolean save = this.save(specifications); + ThrowUtils.throwIf(!save, ErrorCode.PARAMS_ERROR); + Long specificationsId = specifications.getId(); + return attributeService.addAttribute(attributeAddRequests, businessId, specificationsId); + } + + @Override + public Boolean updateSpecifications(Specifications specifications, List attributeUpdateRequests, HttpServletRequest request) { + Long specificationsId = specifications.getId(); + //获取当前登录商家信息 + Business loginBusiness = businessService.getLoginBusiness(request); + Long businessId = loginBusiness.getId(); + //更新规格信息 + specifications.setBusinessId(businessId); + boolean update = this.updateById(specifications); + ThrowUtils.throwIf(!update, ErrorCode.OPERATION_ERROR); + //更新规格的属性信息 + return attributeService.updateAttribute(attributeUpdateRequests, businessId, specificationsId); + } + + @Override + public List getSpecificationsVO(List specificationsList) { + if (CollectionUtils.isEmpty(specificationsList)){ + return new ArrayList<>(); + } + return specificationsList.stream().map(item ->{ + SpecificationsVO specificationsVO = new SpecificationsVO(); + BeanUtils.copyProperties(item,specificationsVO); + return specificationsVO; + }).collect(Collectors.toList()); + } +} + + + + diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/UserRatingServiceImpl.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/UserRatingServiceImpl.java new file mode 100644 index 0000000..6566dfe --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/UserRatingServiceImpl.java @@ -0,0 +1,83 @@ +package com.cj.jiaqingjiayi.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cj.jiaqingjiayi.common.ErrorCode; +import com.cj.jiaqingjiayi.exception.BusinessException; +import com.cj.jiaqingjiayi.exception.ThrowUtils; +import com.cj.jiaqingjiayi.model.domain.Business; +import com.cj.jiaqingjiayi.model.domain.Orders; +import com.cj.jiaqingjiayi.model.domain.User; +import com.cj.jiaqingjiayi.model.domain.UserRating; +import com.cj.jiaqingjiayi.service.BusinessService; +import com.cj.jiaqingjiayi.service.OrdersService; +import com.cj.jiaqingjiayi.service.UserRatingService; +import com.cj.jiaqingjiayi.mapper.UserRatingMapper; +import com.cj.jiaqingjiayi.service.UserService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +/** +* @author 高木 +* @description 针对表【user_rating(用户评分)】的数据库操作Service实现 +* @createDate 2024-12-02 14:14:23 +*/ +@Service +public class UserRatingServiceImpl extends ServiceImpl + implements UserRatingService{ + + @Resource + private UserService userService; + + @Resource + private OrdersService ordersService; + + @Resource + private BusinessService businessService; + + @Override + public void validUserRating(UserRating userRating, HttpServletRequest request) { + + if (userRating.getRating() < 1 || userRating.getRating() > 5) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "分数不在可选范围内"); + } + + Orders ordersById = ordersService.getById(userRating.getOrderId()); + +// User loginUser = userService.getLoginUser(request); + if (!userRating.getUserId().equals(ordersById.getUserId())) { + throw new BusinessException(ErrorCode.NOT_FOUND_ERROR, "当前登录用户与评分中的用户不匹配"); + } + Orders orders = ordersService.getOne(Wrappers.lambdaQuery().eq(Orders::getId, userRating.getOrderId())); + ThrowUtils.throwIf(orders == null, ErrorCode.NOT_FOUND_ERROR, "订单不存在"); + ThrowUtils.throwIf(!orders.getBusinessId().equals(userRating.getBusinessId()) ,ErrorCode.NOT_FOUND_ERROR, "该商家与订单商家不一致"); + + long count = this.count(Wrappers.lambdaQuery().eq(UserRating::getOrderId, userRating.getOrderId())); + ThrowUtils.throwIf(count > 0, ErrorCode.SYSTEM_ERROR, "该订单已评分"); + } + + @Override + public void validUserRatingByBusiness(Long userRatingId, HttpServletRequest request) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(UserRating::getId, userRatingId); + UserRating userRating = this.getOne(queryWrapper); + Business loginBusiness = businessService.getLoginBusiness(request); + Long businessId = loginBusiness.getId(); + if (!businessId.equals(userRating.getBusinessId())) { + throw new BusinessException(ErrorCode.OPERATION_ERROR,"该用户评分不属于当前商家"); + } + if (com.baomidou.mybatisplus.core.toolkit.StringUtils.isBlank(userRating.getReview())) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "当前用户没有评论"); + } + if (com.baomidou.mybatisplus.core.toolkit.StringUtils.isNotBlank(userRating.getBusinessReview())) { + throw new BusinessException(ErrorCode.PARAMS_ERROR,"当前用户评分已回复"); + } + } +} + + + + diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/UserServiceImpl.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/UserServiceImpl.java new file mode 100644 index 0000000..6c584dc --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/UserServiceImpl.java @@ -0,0 +1,364 @@ +package com.cj.jiaqingjiayi.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cj.jiaqingjiayi.common.ErrorCode; +import com.cj.jiaqingjiayi.exception.BusinessException; +import com.cj.jiaqingjiayi.exception.ThrowUtils; +import com.cj.jiaqingjiayi.mapper.BusinessMapper; +import com.cj.jiaqingjiayi.mapper.UserMapper; +import com.cj.jiaqingjiayi.model.LoginUserDTO; +import com.cj.jiaqingjiayi.model.domain.Business; +import com.cj.jiaqingjiayi.model.domain.User; +import com.cj.jiaqingjiayi.model.request.user.UserSearchRequest; +import com.cj.jiaqingjiayi.model.request.user.UserUpdatePasswordRequest; +import com.cj.jiaqingjiayi.model.vo.LoginUserVO; +import com.cj.jiaqingjiayi.service.BusinessService; +import com.cj.jiaqingjiayi.service.UserService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; +import org.springframework.util.DigestUtils; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.nio.charset.StandardCharsets; +import java.util.Date; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import static com.cj.jiaqingjiayi.contant.UserConstant.*; + + +@Service +@Slf4j +public class UserServiceImpl extends ServiceImpl + implements UserService { + + @Resource + private UserMapper userMapper; + + + @Resource + private BusinessMapper businessMapper; + + /** + * 盐值 对密码进行混淆加密 + */ + private static final String SALT = "yctf"; + + /** + * 用户注册 + * + * @param userAccount 登陆账号 + * @param userPassword 登录密码 + * @param checkPassword 校验密码 + * @return 新id + */ + + @Override + public long userRegister(String userAccount, String userPassword, String checkPassword) { + + //1.非空 + if (StringUtils.isAllBlank(userAccount, userPassword, checkPassword)) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "参数为空"); + } + //2.账号长度不小于4位 + if (userAccount.length() < 4) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "用户账号过短"); + } + //3.密码长度不小于8位 + if (userPassword.length() < 8 || checkPassword.length() < 8) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "用户密码过短"); + } + //正则表达式看账户包不包含特殊字符 + String validPattern = "[`~!@#$%^&*()+=|{}':;',\\\\[\\\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]"; + + Matcher matcher = Pattern.compile(validPattern).matcher(userAccount); + + if (matcher.find()) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "不符合规范"); + } + + //检验密码和校验密码是否相同 + if (!userPassword.equals(checkPassword)) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "两次输入密码不同"); + } + + //账户不能重复,进行查询数据库看当中是否存在相同名称用户 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("userAccount", userAccount); + Long count = userMapper.selectCount(queryWrapper); + if (count > 0) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "存在相同用户"); + } + + //对密码加密 + String encryptPassword = DigestUtils.md5DigestAsHex((SALT + userPassword).getBytes()); + + User user = new User(); + user.setUserAccount(userAccount); + user.setUserPassword(encryptPassword); + boolean saveResult = this.save(user); + if (!saveResult) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "插入失败!"); + } + return user.getId(); + } + + /** + * 登录 + * + * @param userAccount 登陆账号 + * @param userPassword 登陆密码 + * @param request 返回请求 + * @return 用户信息 + */ + + @Override + public LoginUserDTO userLogin(String userAccount, String userPassword, HttpServletRequest request) { + //非空 + if (StringUtils.isAllBlank(userAccount, userPassword)) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "参数为空"); + } + //账号长度不小于四位 + if (userAccount.length() < 4) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "用户账号过短"); + } + if (userPassword.length() < 8) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "用户密码过短"); + } + + //正则表达式看账户包不包含特殊字符 + String validPattern = "[ `~!@#$%^&*()+=|{}':;',\\\\[\\\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]"; + + Matcher matcher = Pattern.compile(validPattern).matcher(userAccount); + + if (matcher.find()) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "不符合规范"); + } + + //校验账号密码是否相同 + String encodePassword = DigestUtils.md5DigestAsHex((SALT + userPassword).getBytes(StandardCharsets.UTF_8)); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("userAccount", userAccount); + queryWrapper.eq("userPassword", encodePassword); + User user = userMapper.selectOne(queryWrapper); + //用户不存在 + if (user == null || !userAccount.equals(user.getUserAccount()) || !encodePassword.equals(user.getUserPassword())) { + log.info("user login failed, userAccount Cannot match userPassword"); + System.out.println(userAccount + "------" + user.getUserAccount()); + throw new BusinessException(ErrorCode.PARAMS_ERROR, "用户账号或密码有误!"); + } + + LoginUserDTO loginUserDTO = new LoginUserDTO(); + LoginUserVO loginUserVO = this.getLoginUserVO(user); + loginUserDTO.setLoginUserVO(loginUserVO); + + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(Business::getUserId, user.getId()); + Business business = businessMapper.selectOne(lambdaQueryWrapper); + loginUserDTO.setBusiness(business); + //用户登陆成功 + request.getSession().setAttribute(USER_LOGIN_STATE, user); + return loginUserDTO; + } + + /** + * 实现用户注销 + */ + @Override + public int userLogout(HttpServletRequest request) { + request.getSession().removeAttribute(USER_LOGIN_STATE); + return 1; + } + + /** + * 用户脱敏 + */ + @Override + public User getSafetyUser(User user) { + User safeUser = new User(); + safeUser.setId(user.getId()); + safeUser.setUsername(user.getUsername()); + safeUser.setUserAccount(user.getUserAccount()); + safeUser.setAvatarUrl(user.getAvatarUrl()); + safeUser.setGender(user.getGender()); + safeUser.setPhone(user.getPhone()); + safeUser.setEmail(user.getEmail()); + safeUser.setUserStatus(user.getUserStatus()); + safeUser.setCreateTime(user.getCreateTime()); + return safeUser; + } + + /** + * 获取当前登录用户的信息 + */ + @Override + public User getLoginUser(HttpServletRequest request) { + Object userObj = request.getSession().getAttribute(USER_LOGIN_STATE); + User currentUser = (User) userObj; + + if(currentUser == null){ + throw new BusinessException(ErrorCode.NOT_LOGIN, "未登录"); + } + + Long userId = currentUser.getId(); + currentUser = this.getById(userId); + return currentUser; + } + + /** + * 用户修改密码 + */ + @Override + public boolean updateUserPassword(UserUpdatePasswordRequest updatePasswordRequest, HttpServletRequest request) { + if (updatePasswordRequest == null){ + throw new BusinessException(ErrorCode.NULL_ERROR); + } + + /* + * 判断用户是否存在 + */ + User logingUser = getLoginUser(request); + Long userId = logingUser.getId(); + if(userId < 0 || userId == null){ + throw new BusinessException(ErrorCode.PARAMS_ERROR, "用户不存在"); + } + String newPassword = updatePasswordRequest.getNewPassword(); + + /* + 确认密码 + */ + if(!newPassword.equals(updatePasswordRequest.getCheckNewPassword())){ + throw new BusinessException(ErrorCode.PARAMS_ERROR, "两次输入密码不相同"); + } + + /* + * 判断修改后的密码是否与原密码相同 + */ + User user = new User(); + BeanUtils.copyProperties(updatePasswordRequest, user); + user.setId(logingUser.getId()); + if (newPassword.equals(updatePasswordRequest.getUserPassword())){ + throw new BusinessException(ErrorCode.PARAMS_ERROR, "修改后的密码与原密码不能相同"); + } + + + //使用MD5加密新密码 + String mdedPassword = DigestUtils.md5DigestAsHex((USER_SALT + updatePasswordRequest.getNewPassword()).getBytes()); + String odlPassword = DigestUtils.md5DigestAsHex((USER_SALT + updatePasswordRequest.getUserPassword()).getBytes()); + if(!logingUser.getUserPassword().equals(odlPassword)){ + throw new BusinessException(ErrorCode.PARAMS_ERROR, "旧密码错误"); + } + user.setUserPassword(mdedPassword); + boolean result = updateById(user); + if(!result){ + throw new BusinessException(ErrorCode.PARAMS_ERROR, "修改失败"); + } + return true; + } + + @Override + /* + * 分页查询 + * + * @param searchRequest + * @return + */ + public QueryWrapper getQueryWrapper(UserSearchRequest searchRequest) { + + if (searchRequest == null) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "请求参数为空"); + } + String username = searchRequest.getUsername(); + String userAccount = searchRequest.getUserAccount(); + Integer gender = searchRequest.getGender(); + String phone = searchRequest.getPhone(); + String email = searchRequest.getEmail(); + Integer userStatus = searchRequest.getUserStatus(); + Integer userRole = searchRequest.getUserRole(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + Date updateTime = searchRequest.getUpdateTime(); + Date createTime = searchRequest.getCreateTime(); + // username + if (StringUtils.isNotBlank(username)) { + queryWrapper.like("username", username); + } + // userAccount + if (StringUtils.isNotBlank(userAccount)) { + queryWrapper.like("userAccount", userAccount); + } + // gender + if (gender != null) { + queryWrapper.eq("gender", gender); + } + // phone + if (StringUtils.isNotBlank(phone)) { + queryWrapper.like("phone", phone); + } + // email + if (StringUtils.isNotBlank(email)) { + queryWrapper.like("email", email); + } + // userStatus + if (userStatus != null) { + queryWrapper.eq("userStatus", userStatus); + } + if (userRole != null) { + queryWrapper.eq("userRole", userRole); + } + if (updateTime != null) { + queryWrapper.like("updateTime", updateTime); + } + if (createTime != null) { + queryWrapper.like("createTime", createTime); + } + + + return queryWrapper; + } + + @Override + public LoginUserVO getLoginUserVO(User user) { + if (user == null) { + return null; + } + LoginUserVO loginUserVO = new LoginUserVO(); + BeanUtils.copyProperties(user, loginUserVO); + return loginUserVO; + } + + @Override + public Long isLogin(HttpServletRequest request) { + Object userObj = request.getSession().getAttribute(USER_LOGIN_STATE); + User currentUser = (User) userObj; + if(currentUser == null){ + throw new BusinessException(ErrorCode.NOT_LOGIN, "未登录"); + } + else{ + return currentUser.getId(); + } + } + + /** + * 判断是否为管理员 + */ + @Override + public void isAdmin(HttpServletRequest request){ + Object userObj = request.getSession().getAttribute(USER_LOGIN_STATE); + User user = (User) userObj; + ThrowUtils.throwIf(!(user != null && user.getUserRole() == ADMIN_ROLE) ,ErrorCode.NO_AUTH, "无管理员权限"); + } + + @Override + public void isBusiness(HttpServletRequest request) { + Object userObj = request.getSession().getAttribute(USER_LOGIN_STATE); + User user = (User) userObj; + ThrowUtils.throwIf(!(user != null && user.getUserRole() == BUSINESS_ROLE) ,ErrorCode.NO_AUTH, "无商家权限"); + } + +} \ No newline at end of file diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/utils/BeanCopyUtils.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/utils/BeanCopyUtils.java new file mode 100644 index 0000000..333ba20 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/utils/BeanCopyUtils.java @@ -0,0 +1,36 @@ +package com.cj.jiaqingjiayi.utils; + +import org.springframework.beans.BeanUtils; +import org.springframework.beans.BeanWrapper; +import org.springframework.beans.BeanWrapperImpl; + +import java.beans.PropertyDescriptor; +import java.util.HashSet; +import java.util.Set; + +public class BeanCopyUtils { + + /** + * 拷贝属性,跳过 null 和空字符串 + */ + public static void copyPropertiesIgnoreEmpty(Object source, Object target) { + BeanUtils.copyProperties(source, target, getNullOrEmptyPropertyNames(source)); + } + + /** + * 获取属性值为 null 或空字符串的属性名 + */ + private static String[] getNullOrEmptyPropertyNames(Object source) { + final BeanWrapper src = new BeanWrapperImpl(source); + PropertyDescriptor[] pds = src.getPropertyDescriptors(); + + Set emptyNames = new HashSet<>(); + for (PropertyDescriptor pd : pds) { + Object value = src.getPropertyValue(pd.getName()); + if (value == null || "".equals(value)) { + emptyNames.add(pd.getName()); + } + } + return emptyNames.toArray(new String[0]); + } +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/utils/ExcelUtils.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/utils/ExcelUtils.java new file mode 100644 index 0000000..132e75a --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/utils/ExcelUtils.java @@ -0,0 +1,85 @@ +package com.cj.jiaqingjiayi.utils; + + + + + + +import com.cj.jiaqingjiayi.common.ErrorCode; +import com.cj.jiaqingjiayi.exception.BusinessException; + +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.IOException; +import java.net.URLEncoder; +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * Excel工具类 + * + * @author bsz + * */ +@SuppressWarnings("all") +public class ExcelUtils { + + /** + * 获取路径 + * + * @return 当前路径 + */ + public static String getPath() { + return ExcelUtils.class.getResource("/").getPath(); + } + + /** + * 创建新文件 + * + * @param pathName 文件名 + * @return 文件 + */ + public static File createNewFile(String pathName) { + File file = new File(getPath() + pathName); + if (file.exists()) { + file.delete(); + } else { + if (!file.getParentFile().exists()) { + file.getParentFile().mkdirs(); + } + } + return file; + } + + /** + * 设置响应结果 + * + * @param response 响应结果对象 + * @param rawFileName 文件名 + */ + public static void setExcelResponseProp(HttpServletResponse response, String rawFileName) throws IOException { + //设置内容类型 + response.setContentType("application/vnd.vnd.ms-excel"); + //设置编码格式 + response.setCharacterEncoding("utf-8"); + //设置导出文件名称(避免乱码) + String fileName = URLEncoder.encode(rawFileName.concat(".xlsx"), "UTF-8"); + // 设置响应头 + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName); + } + + /** + * Date转String + * + * @param date 日期 + * @return 字符串 + */ + public static String dateToString(Date date) { + if (date == null) { + throw new BusinessException(ErrorCode.NOT_FOUND_ERROR); + } + // Date转换为String + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-hh:mm"); + return sdf.format(date); + } + +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/utils/RandomNumberGenerator.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/utils/RandomNumberGenerator.java new file mode 100644 index 0000000..cd2ce55 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/utils/RandomNumberGenerator.java @@ -0,0 +1,14 @@ +package com.cj.jiaqingjiayi.utils; + +import org.springframework.stereotype.Component; + +import java.util.Random; + +@Component +public class RandomNumberGenerator { + // 生成指定范围内的随机整数 + public int generateRandomNumber() { + Random random = new Random(); + return random.nextInt(9000 - 1000 + 1) + 1000; + } +} \ No newline at end of file diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/utils/RegexUtils.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/utils/RegexUtils.java new file mode 100644 index 0000000..06b4423 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/utils/RegexUtils.java @@ -0,0 +1,61 @@ +package com.cj.jiaqingjiayi.utils; + +import com.baomidou.mybatisplus.core.toolkit.StringUtils; + +import static com.cj.jiaqingjiayi.contant.RegexConstant.*; + + +/** + * @author 玄德 + */ +@SuppressWarnings("all") +public class RegexUtils { + + /** + * 是否是无效手机格式 + * + * @param phone 要校验的手机号 + * @return true:符合,false:不符合 + */ + public static boolean isPhoneInvalid(String phone) { + return mismatch(phone, PHONE_REGEX); + } + + /** + * 是否是无效邮箱格式 + * + * @param email 要校验的邮箱 + * @return true:符合,false:不符合 + */ + public static boolean isEmailInvalid(String email) { + return mismatch(email, EMAIL_REGEX); + } + + /** + * 是否是无效18位身份证格式 + * + * @param idCard 要校验的身份证号码 + * @return true:符合,false:不符合 + */ + public static boolean isIdCardInvalid(String idCard) { + return mismatch(idCard, ID_CARD_REGEX); + } + + /** + * 是否是无效验证码格式 + * + * @param code 要校验的验证码 + * @return true:符合,false:不符合 + */ + public static boolean isCodeInvalid(String code) { + return mismatch(code, VERIFY_CODE_REGEX); + } + + // 校验是否不符合正则格式 + private static boolean mismatch(String str, String regex) { + if (StringUtils.isBlank(str)) { + return true; + } + return !str.matches(regex); + } +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/utils/SqlUtils.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/utils/SqlUtils.java new file mode 100644 index 0000000..5a31ffc --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/utils/SqlUtils.java @@ -0,0 +1,27 @@ +package com.cj.jiaqingjiayi.utils; + + +import org.apache.commons.lang3.StringUtils; + +/** + * SQL 工具 + * + * @author 程序员鱼皮 + * @from 编程导航知识星球 + */ +@SuppressWarnings("all") +public class SqlUtils { + + /** + * 校验排序字段是否合法(防止 SQL 注入) + * + * @param sortField + * @return + */ + public static boolean validSortField(String sortField) { + if (StringUtils.isBlank(sortField)) { + return false; + } + return !StringUtils.containsAny(sortField, "=", "(", ")", " "); + } +} diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/utils/UniqueNumberGenerator.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/utils/UniqueNumberGenerator.java new file mode 100644 index 0000000..48fc379 --- /dev/null +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/utils/UniqueNumberGenerator.java @@ -0,0 +1,44 @@ +package com.cj.jiaqingjiayi.utils; + +import org.springframework.stereotype.Component; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Random; + +/** + * 订单号 + * @author bsz + */ +@Component +public class UniqueNumberGenerator { + private static int sequenceNumber = 1; // 初始化每天的序列号,从1开始 + private static String lastDate = ""; // 记录上次生成数字的日期 + private static final Random random = new Random(); // 随机数生成器 + + // 生成17位的唯一编号 + public static String generateNumber() { + // 获取当前日期的年月日格式 (前8位) + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); + String dateStr = dateFormat.format(new Date()); + + // 检查日期是否变更,如果变更则重置序列号 + if (!dateStr.equals(lastDate)) { + lastDate = dateStr; + sequenceNumber = 1; // 每天重置为0001 + } + + // 生成中间5位的随机数 + int middleRandom = 10000 + random.nextInt(90000); // 生成10000到99999之间的随机数 + + // 格式化后四位的序列号 + String sequenceStr = String.format("%04d", sequenceNumber); + + // 更新序列号,为下一次调用准备 + sequenceNumber++; + + // 组合并返回结果 + return dateStr + middleRandom + sequenceStr; + } + +} diff --git a/project/jiaqingjiayi/src/main/resources/application.yml b/project/jiaqingjiayi/src/main/resources/application.yml new file mode 100644 index 0000000..3dfd227 --- /dev/null +++ b/project/jiaqingjiayi/src/main/resources/application.yml @@ -0,0 +1,52 @@ +spring: + application: + name: jiaqingjiayi + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://101.42.172.231/jqjy?allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8 + username: jqjy + password: 123456 +# url: jdbc:mysql://localhost:3306/jqjy +# username: root +# password: 123456 + + mvc: + pathmatch: + matching-strategy: ant_path_matcher + profiles: + active: dev +knife4j: + enable: true +server: + port: 8080 + servlet: + context-path: /api + session: + timeout: 86400s + +mybatis-plus: + configuration: + map-underscore-to-camel-case: false + + global-config: + db-config: + logic-delete-field: isDelete + logic-delete-value: 1 + logic-not-delete-value: 0 + +aliyun: + oss: + file: + endpoint: xxxx + keyid: xxxx + keysecret: xxxx + bucketname: xxxx + + + +alipay: + #支付宝开放平台 + appId: 2021004144652242 + alipayPublicKey: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsP/3AQ6DbZbQhFafYUdRS8F6jSXJzYfF3N14L48Jo+xlGp1FW8uq2bu8izP9qcuFxui2CzuQflo0BM+XmSmRt6KkmyGSvGmCdf4gC/doTT7xtMaQu72Mvezr69VC0Lp5iJeLVHzV5/BMFdgfGee5HnAUU5bn4Ytlqw14kCxgeLitZltvHtirq7vVCXlWyikbdtmV0HgmzaWbrC+jVyb/nk9oH8PpV5juJmhwEuiReEdKPKMdPoeJK3sZ9dHsOx+Bm3LkEY075fPvpHDtJFaLi/k7fFY+0oQxsX92qRL9kViOAhMonvFFKZFK06vxuPUtuZelGrzGttiOjVJRRGIiaQIDAQAB" + appPrivateKey: "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCrh54evp6VX68kLvmWybc945JbHaJDRJf6bDSKNwQfCkvEZxfOwYTGXu7XfZq2G/qmFJ6Xp9KxV0yYrxPwjXwPMU4E78/ZaMZ44iSTSq+qvMJMBR7PJOX1MkW7EFfhUPmb+5S0KQurjMQadY4b2VxeHwVxTRPKAdsm0tnfgN8/pO7TfpyGOWX5dRSIruQ3c+MFmJOy0cSZZ4tGlidqZDS9v4YJpmw3u5dX4BvGKtNMPaAnxSpLCDp1fd/vh6ROl71QkLFR+3mNQcwvDOGNJ2Rq78bgfkIVp0BBMySk5Mfv6kunh0QMaxK8wi+Y9swv7Iiyy7U2/zrBvA+1i3e5ctH9AgMBAAECggEBAJSiNrTjbp13RVewUNyFvIAnc4n62sE5bgw0uS5PUAXpsQ/mWW3yqLAQURxvnaFSC1bgpTA630qGoDvp8fhPUYIEslt6xnvY26qiIxly7Vegqyiegzzx90YKIvxexBfdR/4O+aNHsfIcT02yMcsWBYEVlmzAYnZ4N0OkD+EpVcpaIBv2HwGsJnczz41GQVl9GX2DOL8j8+eSWhZM0Jq3d1ksgcfUHH1TT12XCbEE3fKJEMKKlrjVPrtTb+v9m6t0okOgjW+z+IR0zY1HBR92yC+0/CP4FfkbGBhKNxsmbyU4ilTmKINHMy40bqGqrEYo+LBzhEKBT82eMbg9cJbL68ECgYEA37dP5hWEfuTWAoAwduI6OW8kTwxNddIigzTV3qlqEeo21K6RQOOTeYKXrpMmYG65MU5J3xF7AYyhb3rMpega++22Qybxlrme88hqe0s/DeSToG2mw1zYLkkHb5+oT05fCOlLmFGPeLRBfJTxjM6wPNX/1NvGOEVC9DekXuauWZECgYEAxEhmSne07LD6J2sYqsbmOb0zdOpCNT0a+7SomZwiMpVFcsxFvZhYJlcLwyR2m3deLphxwQBPbyxe8TtOZST7P7APpoeI4c0t6PL44vG3eUh+GHFVyf1dbLwMGa9gQ0JFRwBH5iDD2hfnTNfmcNUYzBRHZQK60FFlPCd566hOG60CgYBNVNJbmEiKjJOlnaYjEiRKQi7s3DXSambfr93V7/3oX2vArO8s3P3XXNsNz3POlbeSYZuLbkF00aXkITCokMjzGMKOB+Iu1c8qObcFE4eiR8b4B69DjM51gWz+mtPVRiP3sp0c8+SCNt0EMYAlyjSFcvvSGn40aUyxmqJI47iU4QKBgFYStaCkO9eriBcvFKMXE7BwMpdrftsfz6xfPawW1rw9zzWXNGH+43D0rPjHDagBQXDHcuLCwxKqb3vzmN4ryG3WRBavyqvSMPa9Tb0faGisDHelg4xPKd/b2qaMzHbSIdUP33egGKKT5t9AshH6sKQVpHU8LDXb67vkR8e6h34FAoGAf21Aea9/+3FavddWC/5j0fvESN2U58X0xf4R/FZLa5QsT/iCAo4QqaeYZvF6csWR6lu0zJB88gA+4s6G6xP1JERL3LbE2pHjDe0eNOIsWSzsINICQQ2s3Gm5mh75+/8dfAsRiAPi9nS7FJ74Tcryb4+txeZKiBZgLnEFeRLOB3U=" + notifyUrl: http://39.101.78.35:1107/api/Alipay/notifyUrl \ No newline at end of file diff --git a/project/jiaqingjiayi/src/main/resources/mapper/AppointmentsMapper.xml b/project/jiaqingjiayi/src/main/resources/mapper/AppointmentsMapper.xml new file mode 100644 index 0000000..bd52294 --- /dev/null +++ b/project/jiaqingjiayi/src/main/resources/mapper/AppointmentsMapper.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + id,userId,userName, + phone,businessId,manicuristId, + appointmentTime,serviceMode, + notes,status,createTime, + updateTime,isDelete,businessName, + appointmentAddress,manicuristName,orderId + + diff --git a/project/jiaqingjiayi/src/main/resources/mapper/AttributeMapper.xml b/project/jiaqingjiayi/src/main/resources/mapper/AttributeMapper.xml new file mode 100644 index 0000000..9e886c6 --- /dev/null +++ b/project/jiaqingjiayi/src/main/resources/mapper/AttributeMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + id,businessId,specificationsId, + attributeName,attributeStatus,createTime, + updateTime + + diff --git a/project/jiaqingjiayi/src/main/resources/mapper/BusinessAuthMapper.xml b/project/jiaqingjiayi/src/main/resources/mapper/BusinessAuthMapper.xml new file mode 100644 index 0000000..508b2d9 --- /dev/null +++ b/project/jiaqingjiayi/src/main/resources/mapper/BusinessAuthMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + id,businessId,shopkeeper, + license,frontIdCard,backIdCard, + bankCard,createTime,updateTime, + isDelete + + diff --git a/project/jiaqingjiayi/src/main/resources/mapper/BusinessLevelMapper.xml b/project/jiaqingjiayi/src/main/resources/mapper/BusinessLevelMapper.xml new file mode 100644 index 0000000..d464dc4 --- /dev/null +++ b/project/jiaqingjiayi/src/main/resources/mapper/BusinessLevelMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + id,businessId,averageScore, + level,createTime,updateTime + + diff --git a/project/jiaqingjiayi/src/main/resources/mapper/BusinessMapper.xml b/project/jiaqingjiayi/src/main/resources/mapper/BusinessMapper.xml new file mode 100644 index 0000000..6a909ac --- /dev/null +++ b/project/jiaqingjiayi/src/main/resources/mapper/BusinessMapper.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + id,userId,businessName, + businessAvatar,businessPhone,address, + businessProfile,businessImages,categoryId, + startBusiness,endBusiness,state, + storeStatus,createTime,updateTime, + serviceMode,isDelete + + diff --git a/project/jiaqingjiayi/src/main/resources/mapper/CartMapper.xml b/project/jiaqingjiayi/src/main/resources/mapper/CartMapper.xml new file mode 100644 index 0000000..2161632 --- /dev/null +++ b/project/jiaqingjiayi/src/main/resources/mapper/CartMapper.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + id,userId,businessId, + createTime,updateTime,commoditiesId, + quantity,price,subtotal, + selectedOptions,isDelete + + diff --git a/project/jiaqingjiayi/src/main/resources/mapper/CollectMapper.xml b/project/jiaqingjiayi/src/main/resources/mapper/CollectMapper.xml new file mode 100644 index 0000000..45d5a8e --- /dev/null +++ b/project/jiaqingjiayi/src/main/resources/mapper/CollectMapper.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + id,userId,businessId + + diff --git a/project/jiaqingjiayi/src/main/resources/mapper/CommoditiesGroupMapper.xml b/project/jiaqingjiayi/src/main/resources/mapper/CommoditiesGroupMapper.xml new file mode 100644 index 0000000..5d7ee8b --- /dev/null +++ b/project/jiaqingjiayi/src/main/resources/mapper/CommoditiesGroupMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + id,businessId,groupName, + isTopping,createTime,updateTime, + isDelete + + diff --git a/project/jiaqingjiayi/src/main/resources/mapper/CommoditiesMapper.xml b/project/jiaqingjiayi/src/main/resources/mapper/CommoditiesMapper.xml new file mode 100644 index 0000000..0d92600 --- /dev/null +++ b/project/jiaqingjiayi/src/main/resources/mapper/CommoditiesMapper.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + id,businessId,commoditiesGroupId, + commoditiesName,commoditiesImage,commoditiesPrice, + inventoryStatus,status,createTime, + updateTime,isDelete + + diff --git a/project/jiaqingjiayi/src/main/resources/mapper/ManicuristAuthMapper.xml b/project/jiaqingjiayi/src/main/resources/mapper/ManicuristAuthMapper.xml new file mode 100644 index 0000000..958d669 --- /dev/null +++ b/project/jiaqingjiayi/src/main/resources/mapper/ManicuristAuthMapper.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + id,artistId,certification_number, + issuing_authority,certificate_path, + createTime,updateTime,isDelete, + nameUser + + diff --git a/project/jiaqingjiayi/src/main/resources/mapper/ManicuristMapper.xml b/project/jiaqingjiayi/src/main/resources/mapper/ManicuristMapper.xml new file mode 100644 index 0000000..4e3a7fa --- /dev/null +++ b/project/jiaqingjiayi/src/main/resources/mapper/ManicuristMapper.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + id,userId,manicuristName, + gender,phone,email, + employment_date,specialties,rating, + salary,isDelete,createTime, + updateTime,manicuristAvatar,businessId, + auditStatus + + diff --git a/project/jiaqingjiayi/src/main/resources/mapper/ManicuristsignMapper.xml b/project/jiaqingjiayi/src/main/resources/mapper/ManicuristsignMapper.xml new file mode 100644 index 0000000..0ee683c --- /dev/null +++ b/project/jiaqingjiayi/src/main/resources/mapper/ManicuristsignMapper.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + id,name,manicuristId, + businessName,phone,salary, + signTime,tenure,manicuristLv, + auditStatus,isDelete,createTime, + businessId,updateTime + + diff --git a/project/jiaqingjiayi/src/main/resources/mapper/OrderItemsMapper.xml b/project/jiaqingjiayi/src/main/resources/mapper/OrderItemsMapper.xml new file mode 100644 index 0000000..9d72e74 --- /dev/null +++ b/project/jiaqingjiayi/src/main/resources/mapper/OrderItemsMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + id,orderId,commoditiesId, + quantity,price,subtotal, + attributeNames,createTime,updateTime, + isDelete + + diff --git a/project/jiaqingjiayi/src/main/resources/mapper/OrdersMapper.xml b/project/jiaqingjiayi/src/main/resources/mapper/OrdersMapper.xml new file mode 100644 index 0000000..617cb63 --- /dev/null +++ b/project/jiaqingjiayi/src/main/resources/mapper/OrdersMapper.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + id,orderNumber,userId, + businessId,userName,phone, + appointmentId,totalPrice,paymentStatus, + claimStatus,notes,createTime, + updateTime,isDelete,payMethod, + serviceMode,manicuristId + + diff --git a/project/jiaqingjiayi/src/main/resources/mapper/RecruitmentMapper.xml b/project/jiaqingjiayi/src/main/resources/mapper/RecruitmentMapper.xml new file mode 100644 index 0000000..af45062 --- /dev/null +++ b/project/jiaqingjiayi/src/main/resources/mapper/RecruitmentMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + id,businessId,businessName, + requirements,salary,quantity, + createTime,updateTime + + diff --git a/project/jiaqingjiayi/src/main/resources/mapper/SpecificationsCommoditiesMapper.xml b/project/jiaqingjiayi/src/main/resources/mapper/SpecificationsCommoditiesMapper.xml new file mode 100644 index 0000000..2a10761 --- /dev/null +++ b/project/jiaqingjiayi/src/main/resources/mapper/SpecificationsCommoditiesMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + id,commoditiesId,specificationsId, + createTime,updateTime,isDelete + + diff --git a/project/jiaqingjiayi/src/main/resources/mapper/SpecificationsMapper.xml b/project/jiaqingjiayi/src/main/resources/mapper/SpecificationsMapper.xml new file mode 100644 index 0000000..5d1eea5 --- /dev/null +++ b/project/jiaqingjiayi/src/main/resources/mapper/SpecificationsMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + id,businessId,specificationsName, + createTime,updateTime,isDelete + + diff --git a/project/jiaqingjiayi/src/main/resources/mapper/UserMapper.xml b/project/jiaqingjiayi/src/main/resources/mapper/UserMapper.xml new file mode 100644 index 0000000..4129291 --- /dev/null +++ b/project/jiaqingjiayi/src/main/resources/mapper/UserMapper.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + id,username,userAccount, + avatarUrl,gender,userPassword, + phone,email,userStatus, + createTime,updateTime,isDelete, + userRole + + + + diff --git a/project/jiaqingjiayi/src/main/resources/mapper/UserRatingMapper.xml b/project/jiaqingjiayi/src/main/resources/mapper/UserRatingMapper.xml new file mode 100644 index 0000000..8353d33 --- /dev/null +++ b/project/jiaqingjiayi/src/main/resources/mapper/UserRatingMapper.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + id,businessId,userId, + manicuristId,orderId,rating, + manicuristRating,review,businessReview, + picture,createTime + + diff --git a/project/jiaqingjiayi/target/classes/application.yml b/project/jiaqingjiayi/target/classes/application.yml new file mode 100644 index 0000000..3dfd227 --- /dev/null +++ b/project/jiaqingjiayi/target/classes/application.yml @@ -0,0 +1,52 @@ +spring: + application: + name: jiaqingjiayi + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://101.42.172.231/jqjy?allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8 + username: jqjy + password: 123456 +# url: jdbc:mysql://localhost:3306/jqjy +# username: root +# password: 123456 + + mvc: + pathmatch: + matching-strategy: ant_path_matcher + profiles: + active: dev +knife4j: + enable: true +server: + port: 8080 + servlet: + context-path: /api + session: + timeout: 86400s + +mybatis-plus: + configuration: + map-underscore-to-camel-case: false + + global-config: + db-config: + logic-delete-field: isDelete + logic-delete-value: 1 + logic-not-delete-value: 0 + +aliyun: + oss: + file: + endpoint: xxxx + keyid: xxxx + keysecret: xxxx + bucketname: xxxx + + + +alipay: + #支付宝开放平台 + appId: 2021004144652242 + alipayPublicKey: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsP/3AQ6DbZbQhFafYUdRS8F6jSXJzYfF3N14L48Jo+xlGp1FW8uq2bu8izP9qcuFxui2CzuQflo0BM+XmSmRt6KkmyGSvGmCdf4gC/doTT7xtMaQu72Mvezr69VC0Lp5iJeLVHzV5/BMFdgfGee5HnAUU5bn4Ytlqw14kCxgeLitZltvHtirq7vVCXlWyikbdtmV0HgmzaWbrC+jVyb/nk9oH8PpV5juJmhwEuiReEdKPKMdPoeJK3sZ9dHsOx+Bm3LkEY075fPvpHDtJFaLi/k7fFY+0oQxsX92qRL9kViOAhMonvFFKZFK06vxuPUtuZelGrzGttiOjVJRRGIiaQIDAQAB" + appPrivateKey: "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCrh54evp6VX68kLvmWybc945JbHaJDRJf6bDSKNwQfCkvEZxfOwYTGXu7XfZq2G/qmFJ6Xp9KxV0yYrxPwjXwPMU4E78/ZaMZ44iSTSq+qvMJMBR7PJOX1MkW7EFfhUPmb+5S0KQurjMQadY4b2VxeHwVxTRPKAdsm0tnfgN8/pO7TfpyGOWX5dRSIruQ3c+MFmJOy0cSZZ4tGlidqZDS9v4YJpmw3u5dX4BvGKtNMPaAnxSpLCDp1fd/vh6ROl71QkLFR+3mNQcwvDOGNJ2Rq78bgfkIVp0BBMySk5Mfv6kunh0QMaxK8wi+Y9swv7Iiyy7U2/zrBvA+1i3e5ctH9AgMBAAECggEBAJSiNrTjbp13RVewUNyFvIAnc4n62sE5bgw0uS5PUAXpsQ/mWW3yqLAQURxvnaFSC1bgpTA630qGoDvp8fhPUYIEslt6xnvY26qiIxly7Vegqyiegzzx90YKIvxexBfdR/4O+aNHsfIcT02yMcsWBYEVlmzAYnZ4N0OkD+EpVcpaIBv2HwGsJnczz41GQVl9GX2DOL8j8+eSWhZM0Jq3d1ksgcfUHH1TT12XCbEE3fKJEMKKlrjVPrtTb+v9m6t0okOgjW+z+IR0zY1HBR92yC+0/CP4FfkbGBhKNxsmbyU4ilTmKINHMy40bqGqrEYo+LBzhEKBT82eMbg9cJbL68ECgYEA37dP5hWEfuTWAoAwduI6OW8kTwxNddIigzTV3qlqEeo21K6RQOOTeYKXrpMmYG65MU5J3xF7AYyhb3rMpega++22Qybxlrme88hqe0s/DeSToG2mw1zYLkkHb5+oT05fCOlLmFGPeLRBfJTxjM6wPNX/1NvGOEVC9DekXuauWZECgYEAxEhmSne07LD6J2sYqsbmOb0zdOpCNT0a+7SomZwiMpVFcsxFvZhYJlcLwyR2m3deLphxwQBPbyxe8TtOZST7P7APpoeI4c0t6PL44vG3eUh+GHFVyf1dbLwMGa9gQ0JFRwBH5iDD2hfnTNfmcNUYzBRHZQK60FFlPCd566hOG60CgYBNVNJbmEiKjJOlnaYjEiRKQi7s3DXSambfr93V7/3oX2vArO8s3P3XXNsNz3POlbeSYZuLbkF00aXkITCokMjzGMKOB+Iu1c8qObcFE4eiR8b4B69DjM51gWz+mtPVRiP3sp0c8+SCNt0EMYAlyjSFcvvSGn40aUyxmqJI47iU4QKBgFYStaCkO9eriBcvFKMXE7BwMpdrftsfz6xfPawW1rw9zzWXNGH+43D0rPjHDagBQXDHcuLCwxKqb3vzmN4ryG3WRBavyqvSMPa9Tb0faGisDHelg4xPKd/b2qaMzHbSIdUP33egGKKT5t9AshH6sKQVpHU8LDXb67vkR8e6h34FAoGAf21Aea9/+3FavddWC/5j0fvESN2U58X0xf4R/FZLa5QsT/iCAo4QqaeYZvF6csWR6lu0zJB88gA+4s6G6xP1JERL3LbE2pHjDe0eNOIsWSzsINICQQ2s3Gm5mh75+/8dfAsRiAPi9nS7FJ74Tcryb4+txeZKiBZgLnEFeRLOB3U=" + notifyUrl: http://39.101.78.35:1107/api/Alipay/notifyUrl \ No newline at end of file diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/JiaqingjiayiApplication.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/JiaqingjiayiApplication.class new file mode 100644 index 0000000..704edb3 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/JiaqingjiayiApplication.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/common/BaseResponse.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/common/BaseResponse.class new file mode 100644 index 0000000..8b9719c Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/common/BaseResponse.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/common/ErrorCode.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/common/ErrorCode.class new file mode 100644 index 0000000..f22d7fc Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/common/ErrorCode.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/common/ResultUtils.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/common/ResultUtils.class new file mode 100644 index 0000000..77d3997 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/common/ResultUtils.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/config/AlipayClients.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/config/AlipayClients.class new file mode 100644 index 0000000..8da46ec Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/config/AlipayClients.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/config/CorsConfig.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/config/CorsConfig.class new file mode 100644 index 0000000..287b19d Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/config/CorsConfig.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/config/JsonConfig.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/config/JsonConfig.class new file mode 100644 index 0000000..01742f0 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/config/JsonConfig.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/config/Knife4jConfig.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/config/Knife4jConfig.class new file mode 100644 index 0000000..99997a6 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/config/Knife4jConfig.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/config/MyBatisPlusConfig.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/config/MyBatisPlusConfig.class new file mode 100644 index 0000000..12c6e66 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/config/MyBatisPlusConfig.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/contant/CommonConstant.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/contant/CommonConstant.class new file mode 100644 index 0000000..6f2ebf2 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/contant/CommonConstant.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/contant/FileConstant.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/contant/FileConstant.class new file mode 100644 index 0000000..b8bf627 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/contant/FileConstant.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/contant/RedisKeyConstant.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/contant/RedisKeyConstant.class new file mode 100644 index 0000000..d867bca Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/contant/RedisKeyConstant.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/contant/RegexConstant.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/contant/RegexConstant.class new file mode 100644 index 0000000..4734774 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/contant/RegexConstant.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/contant/UserConstant.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/contant/UserConstant.class new file mode 100644 index 0000000..0841a08 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/contant/UserConstant.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/controller/AlipayController.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/controller/AlipayController.class new file mode 100644 index 0000000..9cbb591 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/controller/AlipayController.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/controller/AppointmentsController.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/controller/AppointmentsController.class new file mode 100644 index 0000000..23d72d4 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/controller/AppointmentsController.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/controller/BusinessController.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/controller/BusinessController.class new file mode 100644 index 0000000..b59173e Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/controller/BusinessController.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/controller/CartController.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/controller/CartController.class new file mode 100644 index 0000000..2659d44 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/controller/CartController.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/controller/CollectController.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/controller/CollectController.class new file mode 100644 index 0000000..0e13658 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/controller/CollectController.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/controller/CommoditiesController.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/controller/CommoditiesController.class new file mode 100644 index 0000000..c7fcdee Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/controller/CommoditiesController.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/controller/FileController.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/controller/FileController.class new file mode 100644 index 0000000..0962cbd Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/controller/FileController.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/controller/GroupController.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/controller/GroupController.class new file mode 100644 index 0000000..b74e90c Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/controller/GroupController.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/controller/ManicuristController.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/controller/ManicuristController.class new file mode 100644 index 0000000..34530e2 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/controller/ManicuristController.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/controller/ManicuristSignController.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/controller/ManicuristSignController.class new file mode 100644 index 0000000..8cf8434 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/controller/ManicuristSignController.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/controller/OrdersController.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/controller/OrdersController.class new file mode 100644 index 0000000..79d6d19 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/controller/OrdersController.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/controller/RecruitmentController.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/controller/RecruitmentController.class new file mode 100644 index 0000000..b1ba13f Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/controller/RecruitmentController.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/controller/SpecificationsController.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/controller/SpecificationsController.class new file mode 100644 index 0000000..c5bf045 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/controller/SpecificationsController.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/controller/UserController.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/controller/UserController.class new file mode 100644 index 0000000..96e8919 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/controller/UserController.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/controller/UserRatingController.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/controller/UserRatingController.class new file mode 100644 index 0000000..9153edd Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/controller/UserRatingController.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/exception/BusinessException.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/exception/BusinessException.class new file mode 100644 index 0000000..0b6d229 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/exception/BusinessException.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/exception/GlobalExceptionHandler.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/exception/GlobalExceptionHandler.class new file mode 100644 index 0000000..00778aa Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/exception/GlobalExceptionHandler.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/exception/ThrowUtils.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/exception/ThrowUtils.class new file mode 100644 index 0000000..66967c7 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/exception/ThrowUtils.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/AppointmentsMapper.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/AppointmentsMapper.class new file mode 100644 index 0000000..aa4092e Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/AppointmentsMapper.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/AttributeMapper.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/AttributeMapper.class new file mode 100644 index 0000000..d40e005 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/AttributeMapper.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/BusinessAuthMapper.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/BusinessAuthMapper.class new file mode 100644 index 0000000..97076a7 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/BusinessAuthMapper.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/BusinessLevelMapper.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/BusinessLevelMapper.class new file mode 100644 index 0000000..962e0a4 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/BusinessLevelMapper.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/BusinessMapper.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/BusinessMapper.class new file mode 100644 index 0000000..f4961c8 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/BusinessMapper.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/CartMapper.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/CartMapper.class new file mode 100644 index 0000000..bb40c07 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/CartMapper.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/CollectMapper.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/CollectMapper.class new file mode 100644 index 0000000..b152dc5 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/CollectMapper.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/CommoditiesGroupMapper.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/CommoditiesGroupMapper.class new file mode 100644 index 0000000..e74d9f6 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/CommoditiesGroupMapper.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/CommoditiesMapper.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/CommoditiesMapper.class new file mode 100644 index 0000000..4ab2a09 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/CommoditiesMapper.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/ManicuristAuthMapper.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/ManicuristAuthMapper.class new file mode 100644 index 0000000..b655974 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/ManicuristAuthMapper.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/ManicuristMapper.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/ManicuristMapper.class new file mode 100644 index 0000000..a3b2bed Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/ManicuristMapper.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/ManicuristsignMapper.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/ManicuristsignMapper.class new file mode 100644 index 0000000..44a6aae Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/ManicuristsignMapper.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/OrderItemsMapper.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/OrderItemsMapper.class new file mode 100644 index 0000000..69cb5b6 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/OrderItemsMapper.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/OrdersMapper.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/OrdersMapper.class new file mode 100644 index 0000000..48830ce Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/OrdersMapper.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/RecruitmentMapper.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/RecruitmentMapper.class new file mode 100644 index 0000000..8d8801c Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/RecruitmentMapper.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/SpecificationsCommoditiesMapper.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/SpecificationsCommoditiesMapper.class new file mode 100644 index 0000000..82bf143 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/SpecificationsCommoditiesMapper.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/SpecificationsMapper.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/SpecificationsMapper.class new file mode 100644 index 0000000..3093c5a Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/SpecificationsMapper.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/UserMapper.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/UserMapper.class new file mode 100644 index 0000000..c841d99 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/UserMapper.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/UserRatingMapper.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/UserRatingMapper.class new file mode 100644 index 0000000..4ae132e Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/mapper/UserRatingMapper.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/CommonRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/CommonRequest.class new file mode 100644 index 0000000..6f31032 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/CommonRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/LoginUserDTO.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/LoginUserDTO.class new file mode 100644 index 0000000..d3e5c62 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/LoginUserDTO.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/Appointments.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/Appointments.class new file mode 100644 index 0000000..129c6a6 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/Appointments.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/Attribute.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/Attribute.class new file mode 100644 index 0000000..70ba860 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/Attribute.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/Business.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/Business.class new file mode 100644 index 0000000..e571134 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/Business.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/BusinessAuth.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/BusinessAuth.class new file mode 100644 index 0000000..b9e5281 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/BusinessAuth.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/BusinessLevel.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/BusinessLevel.class new file mode 100644 index 0000000..5778014 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/BusinessLevel.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/Cart.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/Cart.class new file mode 100644 index 0000000..2462d81 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/Cart.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/Collect.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/Collect.class new file mode 100644 index 0000000..5db6440 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/Collect.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/Commodities.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/Commodities.class new file mode 100644 index 0000000..e7a11c9 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/Commodities.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/CommoditiesGroup.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/CommoditiesGroup.class new file mode 100644 index 0000000..dd88a67 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/CommoditiesGroup.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/Manicurist.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/Manicurist.class new file mode 100644 index 0000000..1bb7e0d Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/Manicurist.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/ManicuristAuth.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/ManicuristAuth.class new file mode 100644 index 0000000..6456aed Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/ManicuristAuth.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/Manicuristsign.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/Manicuristsign.class new file mode 100644 index 0000000..6be31b2 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/Manicuristsign.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/OrderItems.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/OrderItems.class new file mode 100644 index 0000000..35d8a84 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/OrderItems.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/Orders.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/Orders.class new file mode 100644 index 0000000..6cb72a8 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/Orders.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/Recruitment.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/Recruitment.class new file mode 100644 index 0000000..453b734 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/Recruitment.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/Specifications.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/Specifications.class new file mode 100644 index 0000000..1e7fdcf Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/Specifications.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/SpecificationsCommodities.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/SpecificationsCommodities.class new file mode 100644 index 0000000..0173c4b Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/SpecificationsCommodities.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/User.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/User.class new file mode 100644 index 0000000..4ac2507 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/User.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/UserRating.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/UserRating.class new file mode 100644 index 0000000..079f9a2 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/domain/UserRating.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/enums/FileUploadBizEnum.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/enums/FileUploadBizEnum.class new file mode 100644 index 0000000..f1b3557 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/enums/FileUploadBizEnum.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/AlipayTradeCreateRequest1.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/AlipayTradeCreateRequest1.class new file mode 100644 index 0000000..44156c0 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/AlipayTradeCreateRequest1.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/BusinessDTO.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/BusinessDTO.class new file mode 100644 index 0000000..e44c65b Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/BusinessDTO.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/Commodities/CommoditiesAddRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/Commodities/CommoditiesAddRequest.class new file mode 100644 index 0000000..a527346 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/Commodities/CommoditiesAddRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/Commodities/CommoditiesDeleteRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/Commodities/CommoditiesDeleteRequest.class new file mode 100644 index 0000000..460b20e Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/Commodities/CommoditiesDeleteRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/Commodities/CommoditiesQueryRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/Commodities/CommoditiesQueryRequest.class new file mode 100644 index 0000000..4595e35 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/Commodities/CommoditiesQueryRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/Commodities/CommoditiesUpdateRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/Commodities/CommoditiesUpdateRequest.class new file mode 100644 index 0000000..6cfaa36 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/Commodities/CommoditiesUpdateRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/CreateAlipayRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/CreateAlipayRequest.class new file mode 100644 index 0000000..4a6554a Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/CreateAlipayRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/PageRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/PageRequest.class new file mode 100644 index 0000000..83572b6 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/PageRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/UploadFileRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/UploadFileRequest.class new file mode 100644 index 0000000..98acb4a Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/UploadFileRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/UserDTO.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/UserDTO.class new file mode 100644 index 0000000..19a7be5 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/UserDTO.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/appointments/AppointmentsAddRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/appointments/AppointmentsAddRequest.class new file mode 100644 index 0000000..bb4619b Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/appointments/AppointmentsAddRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/appointments/AppointmentsUpdateRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/appointments/AppointmentsUpdateRequest.class new file mode 100644 index 0000000..8a1651d Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/appointments/AppointmentsUpdateRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/attribute/AttributeAddRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/attribute/AttributeAddRequest.class new file mode 100644 index 0000000..82b261b Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/attribute/AttributeAddRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/attribute/AttributeUpdateRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/attribute/AttributeUpdateRequest.class new file mode 100644 index 0000000..aa6cd45 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/attribute/AttributeUpdateRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/business/BusinessAddRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/business/BusinessAddRequest.class new file mode 100644 index 0000000..b960a07 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/business/BusinessAddRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/business/BusinessQueryRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/business/BusinessQueryRequest.class new file mode 100644 index 0000000..b8cd47c Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/business/BusinessQueryRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/business/BusinessUpdateRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/business/BusinessUpdateRequest.class new file mode 100644 index 0000000..ba60859 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/business/BusinessUpdateRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/cart/CartAddRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/cart/CartAddRequest.class new file mode 100644 index 0000000..c326253 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/cart/CartAddRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/cart/CartDeleteRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/cart/CartDeleteRequest.class new file mode 100644 index 0000000..4ab1feb Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/cart/CartDeleteRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/cart/CartQueryRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/cart/CartQueryRequest.class new file mode 100644 index 0000000..374dee7 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/cart/CartQueryRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/cart/CartUpdateRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/cart/CartUpdateRequest.class new file mode 100644 index 0000000..90b7a93 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/cart/CartUpdateRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/collect/CollectAddRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/collect/CollectAddRequest.class new file mode 100644 index 0000000..aac943b Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/collect/CollectAddRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/group/AddGroupRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/group/AddGroupRequest.class new file mode 100644 index 0000000..39ea9f1 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/group/AddGroupRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/manicurist/AdminManicuristAddRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/manicurist/AdminManicuristAddRequest.class new file mode 100644 index 0000000..2dbd3a4 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/manicurist/AdminManicuristAddRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/manicurist/ManicuristAddRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/manicurist/ManicuristAddRequest.class new file mode 100644 index 0000000..03dd68a Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/manicurist/ManicuristAddRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/manicurist/ManicuristQueryRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/manicurist/ManicuristQueryRequest.class new file mode 100644 index 0000000..807f0de Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/manicurist/ManicuristQueryRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/manicurist/ManicuristUpdateRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/manicurist/ManicuristUpdateRequest.class new file mode 100644 index 0000000..455a891 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/manicurist/ManicuristUpdateRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/manicurist/MyManicuristUpdateRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/manicurist/MyManicuristUpdateRequest.class new file mode 100644 index 0000000..dc9c70e Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/manicurist/MyManicuristUpdateRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/manicurist/UserManicuristQueryRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/manicurist/UserManicuristQueryRequest.class new file mode 100644 index 0000000..e7316b4 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/manicurist/UserManicuristQueryRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/manicuristSign/ManicuristSignAddRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/manicuristSign/ManicuristSignAddRequest.class new file mode 100644 index 0000000..796afb4 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/manicuristSign/ManicuristSignAddRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/manicuristSign/succManicuristSignRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/manicuristSign/succManicuristSignRequest.class new file mode 100644 index 0000000..9fab9f0 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/manicuristSign/succManicuristSignRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/order/MyOrderQueryRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/order/MyOrderQueryRequest.class new file mode 100644 index 0000000..ddb6c0c Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/order/MyOrderQueryRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/order/OrderAddRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/order/OrderAddRequest.class new file mode 100644 index 0000000..6cc54f8 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/order/OrderAddRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/order/OrderCancelRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/order/OrderCancelRequest.class new file mode 100644 index 0000000..78c71a2 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/order/OrderCancelRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/order/OrderCountRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/order/OrderCountRequest.class new file mode 100644 index 0000000..f135fef Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/order/OrderCountRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/order/OrderItemsAddRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/order/OrderItemsAddRequest.class new file mode 100644 index 0000000..b39c6c6 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/order/OrderItemsAddRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/order/OrderQueryRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/order/OrderQueryRequest.class new file mode 100644 index 0000000..f32fd1d Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/order/OrderQueryRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/recruitment/RecruitmentAddRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/recruitment/RecruitmentAddRequest.class new file mode 100644 index 0000000..4e71635 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/recruitment/RecruitmentAddRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/recruitment/RecruitmentUpdateRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/recruitment/RecruitmentUpdateRequest.class new file mode 100644 index 0000000..adc96f4 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/recruitment/RecruitmentUpdateRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/specifications/SpecificationsAddRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/specifications/SpecificationsAddRequest.class new file mode 100644 index 0000000..f78fc0f Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/specifications/SpecificationsAddRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/specifications/SpecificationsMyQueryRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/specifications/SpecificationsMyQueryRequest.class new file mode 100644 index 0000000..36bf7aa Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/specifications/SpecificationsMyQueryRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/specifications/SpecificationsQueryRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/specifications/SpecificationsQueryRequest.class new file mode 100644 index 0000000..11a4081 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/specifications/SpecificationsQueryRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/specifications/SpecificationsUpdateRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/specifications/SpecificationsUpdateRequest.class new file mode 100644 index 0000000..bd91847 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/specifications/SpecificationsUpdateRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/user/UserAddRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/user/UserAddRequest.class new file mode 100644 index 0000000..2bc9d8d Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/user/UserAddRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/user/UserDeleteRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/user/UserDeleteRequest.class new file mode 100644 index 0000000..4e32d3a Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/user/UserDeleteRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/user/UserLoginRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/user/UserLoginRequest.class new file mode 100644 index 0000000..37eb223 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/user/UserLoginRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/user/UserRegisterRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/user/UserRegisterRequest.class new file mode 100644 index 0000000..514307c Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/user/UserRegisterRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/user/UserSearchRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/user/UserSearchRequest.class new file mode 100644 index 0000000..58a1fea Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/user/UserSearchRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/user/UserUpdateMyRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/user/UserUpdateMyRequest.class new file mode 100644 index 0000000..07c9ec6 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/user/UserUpdateMyRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/user/UserUpdatePasswordRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/user/UserUpdatePasswordRequest.class new file mode 100644 index 0000000..b7dd57c Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/user/UserUpdatePasswordRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/user/UserUpdateRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/user/UserUpdateRequest.class new file mode 100644 index 0000000..c36a5ca Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/user/UserUpdateRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/userRating/UserRatingAddRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/userRating/UserRatingAddRequest.class new file mode 100644 index 0000000..ecde0ae Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/userRating/UserRatingAddRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/userRating/UserRatingReviewRequest.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/userRating/UserRatingReviewRequest.class new file mode 100644 index 0000000..a50021b Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/request/userRating/UserRatingReviewRequest.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/AppointmentsVO.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/AppointmentsVO.class new file mode 100644 index 0000000..0ca7d77 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/AppointmentsVO.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/AttributeVO.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/AttributeVO.class new file mode 100644 index 0000000..ae83f3c Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/AttributeVO.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/BusinessAdminVO.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/BusinessAdminVO.class new file mode 100644 index 0000000..af9288c Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/BusinessAdminVO.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/BusinessVO.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/BusinessVO.class new file mode 100644 index 0000000..db2d656 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/BusinessVO.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/CartDTO.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/CartDTO.class new file mode 100644 index 0000000..a697a11 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/CartDTO.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/CartResponseVO.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/CartResponseVO.class new file mode 100644 index 0000000..3ce4825 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/CartResponseVO.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/CartVO.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/CartVO.class new file mode 100644 index 0000000..b0dcc9b Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/CartVO.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/CommoditiesVO.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/CommoditiesVO.class new file mode 100644 index 0000000..fd13a4c Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/CommoditiesVO.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/GroupVO.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/GroupVO.class new file mode 100644 index 0000000..c0628f8 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/GroupVO.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/LoginUserVO.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/LoginUserVO.class new file mode 100644 index 0000000..7d491d9 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/LoginUserVO.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/ManicuristVO.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/ManicuristVO.class new file mode 100644 index 0000000..b78c571 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/ManicuristVO.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/ManicuristsignVO.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/ManicuristsignVO.class new file mode 100644 index 0000000..641c002 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/ManicuristsignVO.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/OrderItemsVO.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/OrderItemsVO.class new file mode 100644 index 0000000..f5728aa Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/OrderItemsVO.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/OrdersExcelVO.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/OrdersExcelVO.class new file mode 100644 index 0000000..ade5a74 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/OrdersExcelVO.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/OrdersVO.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/OrdersVO.class new file mode 100644 index 0000000..326cd26 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/OrdersVO.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/SpecificationsVO.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/SpecificationsVO.class new file mode 100644 index 0000000..c6858c9 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/SpecificationsVO.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/UserRatingDTO.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/UserRatingDTO.class new file mode 100644 index 0000000..84f92e6 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/UserRatingDTO.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/UserVO.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/UserVO.class new file mode 100644 index 0000000..87912f5 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/model/vo/UserVO.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/scheduler/UpdateBusiness.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/scheduler/UpdateBusiness.class new file mode 100644 index 0000000..34ced68 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/scheduler/UpdateBusiness.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/AliPayService.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/AliPayService.class new file mode 100644 index 0000000..bac11b4 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/AliPayService.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/AppointmentsService.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/AppointmentsService.class new file mode 100644 index 0000000..2ff8310 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/AppointmentsService.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/AttributeService.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/AttributeService.class new file mode 100644 index 0000000..d22fd5e Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/AttributeService.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/BusinessAuthService.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/BusinessAuthService.class new file mode 100644 index 0000000..96fe058 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/BusinessAuthService.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/BusinessLevelService.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/BusinessLevelService.class new file mode 100644 index 0000000..e0abae7 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/BusinessLevelService.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/BusinessService.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/BusinessService.class new file mode 100644 index 0000000..fefafe3 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/BusinessService.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/CartService.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/CartService.class new file mode 100644 index 0000000..cd128f3 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/CartService.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/CollectService.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/CollectService.class new file mode 100644 index 0000000..c3cce1f Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/CollectService.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/CommoditiesGroupService.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/CommoditiesGroupService.class new file mode 100644 index 0000000..27bdb48 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/CommoditiesGroupService.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/CommoditiesService.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/CommoditiesService.class new file mode 100644 index 0000000..f525e0f Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/CommoditiesService.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/ManicuristAuthService.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/ManicuristAuthService.class new file mode 100644 index 0000000..1547e8e Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/ManicuristAuthService.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/ManicuristService.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/ManicuristService.class new file mode 100644 index 0000000..512fd98 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/ManicuristService.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/ManicuristsignService.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/ManicuristsignService.class new file mode 100644 index 0000000..9439acb Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/ManicuristsignService.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/OrderItemsService.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/OrderItemsService.class new file mode 100644 index 0000000..696fdb2 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/OrderItemsService.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/OrdersService.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/OrdersService.class new file mode 100644 index 0000000..009bcbb Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/OrdersService.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/RecruitmentService.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/RecruitmentService.class new file mode 100644 index 0000000..245a842 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/RecruitmentService.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/SpecificationsCommoditiesService.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/SpecificationsCommoditiesService.class new file mode 100644 index 0000000..3f6e9a7 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/SpecificationsCommoditiesService.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/SpecificationsService.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/SpecificationsService.class new file mode 100644 index 0000000..a96e366 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/SpecificationsService.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/UserRatingService.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/UserRatingService.class new file mode 100644 index 0000000..7fc1af2 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/UserRatingService.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/UserService.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/UserService.class new file mode 100644 index 0000000..fcf68a2 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/UserService.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/AlipayServiceImpl.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/AlipayServiceImpl.class new file mode 100644 index 0000000..8a46c40 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/AlipayServiceImpl.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/AppointmentsServiceImpl.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/AppointmentsServiceImpl.class new file mode 100644 index 0000000..c843bb9 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/AppointmentsServiceImpl.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/AttributeServiceImpl.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/AttributeServiceImpl.class new file mode 100644 index 0000000..16f8c47 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/AttributeServiceImpl.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/BusinessAuthServiceImpl.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/BusinessAuthServiceImpl.class new file mode 100644 index 0000000..cef80c2 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/BusinessAuthServiceImpl.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/BusinessLevelServiceImpl.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/BusinessLevelServiceImpl.class new file mode 100644 index 0000000..66eb861 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/BusinessLevelServiceImpl.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/BusinessServiceImpl.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/BusinessServiceImpl.class new file mode 100644 index 0000000..0862e1e Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/BusinessServiceImpl.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/CartServiceImpl.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/CartServiceImpl.class new file mode 100644 index 0000000..2c1fe50 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/CartServiceImpl.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/CollectServiceImpl.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/CollectServiceImpl.class new file mode 100644 index 0000000..08c19bf Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/CollectServiceImpl.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/CommoditiesGroupServiceImpl.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/CommoditiesGroupServiceImpl.class new file mode 100644 index 0000000..ed6a4eb Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/CommoditiesGroupServiceImpl.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/CommoditiesServiceImpl.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/CommoditiesServiceImpl.class new file mode 100644 index 0000000..98029dc Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/CommoditiesServiceImpl.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/ManicuristAuthServiceImpl.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/ManicuristAuthServiceImpl.class new file mode 100644 index 0000000..f2184ae Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/ManicuristAuthServiceImpl.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/ManicuristServiceImpl.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/ManicuristServiceImpl.class new file mode 100644 index 0000000..95616d5 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/ManicuristServiceImpl.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/ManicuristsignServiceImpl.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/ManicuristsignServiceImpl.class new file mode 100644 index 0000000..3111743 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/ManicuristsignServiceImpl.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/OrderItemsServiceImpl.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/OrderItemsServiceImpl.class new file mode 100644 index 0000000..7957ccd Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/OrderItemsServiceImpl.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/OrdersServiceImpl.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/OrdersServiceImpl.class new file mode 100644 index 0000000..f1b3ea3 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/OrdersServiceImpl.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/RecruitmentServiceImpl.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/RecruitmentServiceImpl.class new file mode 100644 index 0000000..f839502 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/RecruitmentServiceImpl.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/SpecificationsCommoditiesServiceImpl.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/SpecificationsCommoditiesServiceImpl.class new file mode 100644 index 0000000..d50cd50 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/SpecificationsCommoditiesServiceImpl.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/SpecificationsServiceImpl.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/SpecificationsServiceImpl.class new file mode 100644 index 0000000..f90765a Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/SpecificationsServiceImpl.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/UserRatingServiceImpl.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/UserRatingServiceImpl.class new file mode 100644 index 0000000..f16f1b1 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/UserRatingServiceImpl.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/UserServiceImpl.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/UserServiceImpl.class new file mode 100644 index 0000000..ab00da5 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/service/impl/UserServiceImpl.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/utils/BeanCopyUtils.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/utils/BeanCopyUtils.class new file mode 100644 index 0000000..1a207c2 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/utils/BeanCopyUtils.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/utils/ExcelUtils.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/utils/ExcelUtils.class new file mode 100644 index 0000000..a2a67f9 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/utils/ExcelUtils.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/utils/RandomNumberGenerator.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/utils/RandomNumberGenerator.class new file mode 100644 index 0000000..2281b79 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/utils/RandomNumberGenerator.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/utils/RegexUtils.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/utils/RegexUtils.class new file mode 100644 index 0000000..eaa3fb5 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/utils/RegexUtils.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/utils/SqlUtils.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/utils/SqlUtils.class new file mode 100644 index 0000000..829a640 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/utils/SqlUtils.class differ diff --git a/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/utils/UniqueNumberGenerator.class b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/utils/UniqueNumberGenerator.class new file mode 100644 index 0000000..e0b2296 Binary files /dev/null and b/project/jiaqingjiayi/target/classes/com/cj/jiaqingjiayi/utils/UniqueNumberGenerator.class differ diff --git a/project/jiaqingjiayi/target/classes/mapper/AppointmentsMapper.xml b/project/jiaqingjiayi/target/classes/mapper/AppointmentsMapper.xml new file mode 100644 index 0000000..bd52294 --- /dev/null +++ b/project/jiaqingjiayi/target/classes/mapper/AppointmentsMapper.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + id,userId,userName, + phone,businessId,manicuristId, + appointmentTime,serviceMode, + notes,status,createTime, + updateTime,isDelete,businessName, + appointmentAddress,manicuristName,orderId + + diff --git a/project/jiaqingjiayi/target/classes/mapper/AttributeMapper.xml b/project/jiaqingjiayi/target/classes/mapper/AttributeMapper.xml new file mode 100644 index 0000000..9e886c6 --- /dev/null +++ b/project/jiaqingjiayi/target/classes/mapper/AttributeMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + id,businessId,specificationsId, + attributeName,attributeStatus,createTime, + updateTime + + diff --git a/project/jiaqingjiayi/target/classes/mapper/BusinessAuthMapper.xml b/project/jiaqingjiayi/target/classes/mapper/BusinessAuthMapper.xml new file mode 100644 index 0000000..508b2d9 --- /dev/null +++ b/project/jiaqingjiayi/target/classes/mapper/BusinessAuthMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + id,businessId,shopkeeper, + license,frontIdCard,backIdCard, + bankCard,createTime,updateTime, + isDelete + + diff --git a/project/jiaqingjiayi/target/classes/mapper/BusinessLevelMapper.xml b/project/jiaqingjiayi/target/classes/mapper/BusinessLevelMapper.xml new file mode 100644 index 0000000..d464dc4 --- /dev/null +++ b/project/jiaqingjiayi/target/classes/mapper/BusinessLevelMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + id,businessId,averageScore, + level,createTime,updateTime + + diff --git a/project/jiaqingjiayi/target/classes/mapper/BusinessMapper.xml b/project/jiaqingjiayi/target/classes/mapper/BusinessMapper.xml new file mode 100644 index 0000000..6a909ac --- /dev/null +++ b/project/jiaqingjiayi/target/classes/mapper/BusinessMapper.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + id,userId,businessName, + businessAvatar,businessPhone,address, + businessProfile,businessImages,categoryId, + startBusiness,endBusiness,state, + storeStatus,createTime,updateTime, + serviceMode,isDelete + + diff --git a/project/jiaqingjiayi/target/classes/mapper/CartMapper.xml b/project/jiaqingjiayi/target/classes/mapper/CartMapper.xml new file mode 100644 index 0000000..2161632 --- /dev/null +++ b/project/jiaqingjiayi/target/classes/mapper/CartMapper.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + id,userId,businessId, + createTime,updateTime,commoditiesId, + quantity,price,subtotal, + selectedOptions,isDelete + + diff --git a/project/jiaqingjiayi/target/classes/mapper/CollectMapper.xml b/project/jiaqingjiayi/target/classes/mapper/CollectMapper.xml new file mode 100644 index 0000000..45d5a8e --- /dev/null +++ b/project/jiaqingjiayi/target/classes/mapper/CollectMapper.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + id,userId,businessId + + diff --git a/project/jiaqingjiayi/target/classes/mapper/CommoditiesGroupMapper.xml b/project/jiaqingjiayi/target/classes/mapper/CommoditiesGroupMapper.xml new file mode 100644 index 0000000..5d7ee8b --- /dev/null +++ b/project/jiaqingjiayi/target/classes/mapper/CommoditiesGroupMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + id,businessId,groupName, + isTopping,createTime,updateTime, + isDelete + + diff --git a/project/jiaqingjiayi/target/classes/mapper/CommoditiesMapper.xml b/project/jiaqingjiayi/target/classes/mapper/CommoditiesMapper.xml new file mode 100644 index 0000000..0d92600 --- /dev/null +++ b/project/jiaqingjiayi/target/classes/mapper/CommoditiesMapper.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + id,businessId,commoditiesGroupId, + commoditiesName,commoditiesImage,commoditiesPrice, + inventoryStatus,status,createTime, + updateTime,isDelete + + diff --git a/project/jiaqingjiayi/target/classes/mapper/ManicuristAuthMapper.xml b/project/jiaqingjiayi/target/classes/mapper/ManicuristAuthMapper.xml new file mode 100644 index 0000000..958d669 --- /dev/null +++ b/project/jiaqingjiayi/target/classes/mapper/ManicuristAuthMapper.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + id,artistId,certification_number, + issuing_authority,certificate_path, + createTime,updateTime,isDelete, + nameUser + + diff --git a/project/jiaqingjiayi/target/classes/mapper/ManicuristMapper.xml b/project/jiaqingjiayi/target/classes/mapper/ManicuristMapper.xml new file mode 100644 index 0000000..4e3a7fa --- /dev/null +++ b/project/jiaqingjiayi/target/classes/mapper/ManicuristMapper.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + id,userId,manicuristName, + gender,phone,email, + employment_date,specialties,rating, + salary,isDelete,createTime, + updateTime,manicuristAvatar,businessId, + auditStatus + + diff --git a/project/jiaqingjiayi/target/classes/mapper/ManicuristsignMapper.xml b/project/jiaqingjiayi/target/classes/mapper/ManicuristsignMapper.xml new file mode 100644 index 0000000..0ee683c --- /dev/null +++ b/project/jiaqingjiayi/target/classes/mapper/ManicuristsignMapper.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + id,name,manicuristId, + businessName,phone,salary, + signTime,tenure,manicuristLv, + auditStatus,isDelete,createTime, + businessId,updateTime + + diff --git a/project/jiaqingjiayi/target/classes/mapper/OrderItemsMapper.xml b/project/jiaqingjiayi/target/classes/mapper/OrderItemsMapper.xml new file mode 100644 index 0000000..9d72e74 --- /dev/null +++ b/project/jiaqingjiayi/target/classes/mapper/OrderItemsMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + id,orderId,commoditiesId, + quantity,price,subtotal, + attributeNames,createTime,updateTime, + isDelete + + diff --git a/project/jiaqingjiayi/target/classes/mapper/OrdersMapper.xml b/project/jiaqingjiayi/target/classes/mapper/OrdersMapper.xml new file mode 100644 index 0000000..617cb63 --- /dev/null +++ b/project/jiaqingjiayi/target/classes/mapper/OrdersMapper.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + id,orderNumber,userId, + businessId,userName,phone, + appointmentId,totalPrice,paymentStatus, + claimStatus,notes,createTime, + updateTime,isDelete,payMethod, + serviceMode,manicuristId + + diff --git a/project/jiaqingjiayi/target/classes/mapper/RecruitmentMapper.xml b/project/jiaqingjiayi/target/classes/mapper/RecruitmentMapper.xml new file mode 100644 index 0000000..af45062 --- /dev/null +++ b/project/jiaqingjiayi/target/classes/mapper/RecruitmentMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + id,businessId,businessName, + requirements,salary,quantity, + createTime,updateTime + + diff --git a/project/jiaqingjiayi/target/classes/mapper/SpecificationsCommoditiesMapper.xml b/project/jiaqingjiayi/target/classes/mapper/SpecificationsCommoditiesMapper.xml new file mode 100644 index 0000000..2a10761 --- /dev/null +++ b/project/jiaqingjiayi/target/classes/mapper/SpecificationsCommoditiesMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + id,commoditiesId,specificationsId, + createTime,updateTime,isDelete + + diff --git a/project/jiaqingjiayi/target/classes/mapper/SpecificationsMapper.xml b/project/jiaqingjiayi/target/classes/mapper/SpecificationsMapper.xml new file mode 100644 index 0000000..5d1eea5 --- /dev/null +++ b/project/jiaqingjiayi/target/classes/mapper/SpecificationsMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + id,businessId,specificationsName, + createTime,updateTime,isDelete + + diff --git a/project/jiaqingjiayi/target/classes/mapper/UserMapper.xml b/project/jiaqingjiayi/target/classes/mapper/UserMapper.xml new file mode 100644 index 0000000..4129291 --- /dev/null +++ b/project/jiaqingjiayi/target/classes/mapper/UserMapper.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + id,username,userAccount, + avatarUrl,gender,userPassword, + phone,email,userStatus, + createTime,updateTime,isDelete, + userRole + + + + diff --git a/project/jiaqingjiayi/target/classes/mapper/UserRatingMapper.xml b/project/jiaqingjiayi/target/classes/mapper/UserRatingMapper.xml new file mode 100644 index 0000000..8353d33 --- /dev/null +++ b/project/jiaqingjiayi/target/classes/mapper/UserRatingMapper.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + id,businessId,userId, + manicuristId,orderId,rating, + manicuristRating,review,businessReview, + picture,createTime + + diff --git a/project/jiaqingjiayi/target/jiaqingjiayi-0.0.1-SNAPSHOT.jar b/project/jiaqingjiayi/target/jiaqingjiayi-0.0.1-SNAPSHOT.jar new file mode 100644 index 0000000..166b043 Binary files /dev/null and b/project/jiaqingjiayi/target/jiaqingjiayi-0.0.1-SNAPSHOT.jar differ diff --git a/project/jiaqingjiayi/target/jiaqingjiayi-0.0.1-SNAPSHOT.jar.original b/project/jiaqingjiayi/target/jiaqingjiayi-0.0.1-SNAPSHOT.jar.original new file mode 100644 index 0000000..a75bf43 Binary files /dev/null and b/project/jiaqingjiayi/target/jiaqingjiayi-0.0.1-SNAPSHOT.jar.original differ diff --git a/project/jiaqingjiayi/target/maven-archiver/pom.properties b/project/jiaqingjiayi/target/maven-archiver/pom.properties new file mode 100644 index 0000000..2ba03a1 --- /dev/null +++ b/project/jiaqingjiayi/target/maven-archiver/pom.properties @@ -0,0 +1,3 @@ +artifactId=jiaqingjiayi +groupId=com.cj +version=0.0.1-SNAPSHOT diff --git a/project/jiaqingjiayi/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/project/jiaqingjiayi/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..1b3481f --- /dev/null +++ b/project/jiaqingjiayi/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,3 @@ +com\cj\jiaqingjiayi\controller\OrdersController.class +com\cj\jiaqingjiayi\utils\ExcelUtils.class +com\cj\jiaqingjiayi\model\vo\OrdersExcelVO.class diff --git a/project/jiaqingjiayi/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/project/jiaqingjiayi/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..c7d234b --- /dev/null +++ b/project/jiaqingjiayi/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,191 @@ +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\domain\Orders.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\vo\BusinessVO.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\domain\Cart.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\utils\BeanCopyUtils.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\controller\UserController.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\mapper\BusinessLevelMapper.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\mapper\CommoditiesMapper.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\Commodities\CommoditiesAddRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\vo\CommoditiesVO.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\domain\BusinessAuth.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\cart\CartDeleteRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\domain\CommoditiesGroup.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\domain\ManicuristAuth.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\business\BusinessQueryRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\contant\RedisKeyConstant.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\collect\CollectAddRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\user\UserSearchRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\impl\OrdersServiceImpl.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\controller\AlipayController.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\mapper\AppointmentsMapper.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\mapper\BusinessAuthMapper.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\domain\OrderItems.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\impl\CommoditiesServiceImpl.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\config\CorsConfig.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\config\Knife4jConfig.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\UserDTO.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\user\UserUpdateMyRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\utils\ExcelUtils.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\common\ResultUtils.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\utils\RegexUtils.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\user\UserRegisterRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\domain\BusinessLevel.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\Commodities\CommoditiesQueryRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\vo\ManicuristVO.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\ManicuristService.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\CommoditiesGroupService.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\order\OrderAddRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\vo\AppointmentsVO.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\OrdersService.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\mapper\AttributeMapper.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\controller\CommoditiesController.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\domain\SpecificationsCommodities.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\order\OrderItemsAddRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\controller\UserRatingController.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\utils\SqlUtils.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\BusinessDTO.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\specifications\SpecificationsAddRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\AlipayTradeCreateRequest1.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\controller\BusinessController.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\AliPayService.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\mapper\ManicuristsignMapper.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\manicurist\MyManicuristUpdateRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\appointments\AppointmentsAddRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\cart\CartUpdateRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\impl\BusinessLevelServiceImpl.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\user\UserUpdateRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\user\UserLoginRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\contant\FileConstant.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\controller\ManicuristController.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\vo\CartResponseVO.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\attribute\AttributeUpdateRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\impl\SpecificationsCommoditiesServiceImpl.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\order\OrderCancelRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\mapper\CollectMapper.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\mapper\ManicuristAuthMapper.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\vo\OrdersExcelVO.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\user\UserDeleteRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\domain\UserRating.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\vo\AttributeVO.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\domain\User.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\CreateAlipayRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\CartService.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\order\OrderQueryRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\LoginUserDTO.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\contant\RegexConstant.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\appointments\AppointmentsUpdateRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\domain\Collect.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\vo\SpecificationsVO.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\impl\BusinessAuthServiceImpl.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\mapper\CommoditiesGroupMapper.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\domain\Specifications.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\impl\CommoditiesGroupServiceImpl.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\contant\UserConstant.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\exception\GlobalExceptionHandler.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\BusinessService.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\userRating\UserRatingReviewRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\enums\FileUploadBizEnum.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\domain\Commodities.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\manicurist\ManicuristAddRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\mapper\CartMapper.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\controller\CollectController.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\CommoditiesService.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\domain\Manicuristsign.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\manicuristSign\ManicuristSignAddRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\vo\BusinessAdminVO.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\controller\SpecificationsController.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\specifications\SpecificationsUpdateRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\impl\AttributeServiceImpl.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\recruitment\RecruitmentAddRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\config\MyBatisPlusConfig.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\business\BusinessAddRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\domain\Appointments.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\manicurist\AdminManicuristAddRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\manicurist\UserManicuristQueryRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\order\OrderCountRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\controller\OrdersController.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\impl\ManicuristServiceImpl.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\AppointmentsService.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\controller\RecruitmentController.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\order\MyOrderQueryRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\controller\AppointmentsController.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\vo\GroupVO.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\scheduler\UpdateBusiness.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\UploadFileRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\mapper\UserRatingMapper.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\SpecificationsService.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\vo\CartVO.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\manicurist\ManicuristUpdateRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\UserService.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\impl\ManicuristsignServiceImpl.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\domain\Attribute.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\group\AddGroupRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\impl\AlipayServiceImpl.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\controller\CartController.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\cart\CartQueryRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\impl\RecruitmentServiceImpl.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\mapper\RecruitmentMapper.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\mapper\ManicuristMapper.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\Commodities\CommoditiesUpdateRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\impl\ManicuristAuthServiceImpl.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\impl\SpecificationsServiceImpl.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\impl\UserServiceImpl.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\vo\UserVO.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\mapper\BusinessMapper.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\manicuristSign\succManicuristSignRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\vo\LoginUserVO.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\common\ErrorCode.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\mapper\SpecificationsCommoditiesMapper.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\specifications\SpecificationsMyQueryRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\ManicuristAuthService.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\JiaqingjiayiApplication.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\vo\OrderItemsVO.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\config\AlipayClients.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\vo\CartDTO.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\business\BusinessUpdateRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\Commodities\CommoditiesDeleteRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\CollectService.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\domain\Manicurist.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\userRating\UserRatingAddRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\vo\UserRatingDTO.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\manicurist\ManicuristQueryRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\mapper\SpecificationsMapper.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\exception\BusinessException.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\UserRatingService.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\vo\OrdersVO.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\recruitment\RecruitmentUpdateRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\vo\ManicuristsignVO.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\impl\UserRatingServiceImpl.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\controller\GroupController.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\controller\ManicuristSignController.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\user\UserAddRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\AttributeService.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\contant\CommonConstant.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\mapper\OrdersMapper.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\ManicuristsignService.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\SpecificationsCommoditiesService.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\impl\AppointmentsServiceImpl.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\cart\CartAddRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\impl\BusinessServiceImpl.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\impl\CartServiceImpl.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\impl\OrderItemsServiceImpl.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\specifications\SpecificationsQueryRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\domain\Business.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\common\BaseResponse.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\RecruitmentService.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\mapper\UserMapper.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\impl\CollectServiceImpl.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\utils\RandomNumberGenerator.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\controller\FileController.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\attribute\AttributeAddRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\exception\ThrowUtils.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\user\UserUpdatePasswordRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\domain\Recruitment.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\BusinessAuthService.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\BusinessLevelService.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\utils\UniqueNumberGenerator.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\PageRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\config\JsonConfig.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\mapper\OrderItemsMapper.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\CommonRequest.java +E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\OrderItemsService.java