diff --git a/school_lend_back_end/school_lend_back_end/pom.xml b/school_lend_back_end/school_lend_back_end/pom.xml index 9139fe0..adf5997 100644 --- a/school_lend_back_end/school_lend_back_end/pom.xml +++ b/school_lend_back_end/school_lend_back_end/pom.xml @@ -1,37 +1,45 @@ - 4.0.0 + org.springframework.boot spring-boot-starter-parent - 2.6.4 - + 3.2.5 + + com.bsz school_send_back_end 0.0.1-SNAPSHOT school_send_back_end school_send_back_end + - 21 + 17 + 1.0.0-M2 + org.springframework.boot spring-boot-starter-web + org.mybatis.spring.boot mybatis-spring-boot-starter - 2.2.2 + 3.0.3 + com.baomidou mybatis-plus-boot-starter - 3.5.1 + 3.5.5 - + org.apache.commons commons-lang3 @@ -43,99 +51,229 @@ 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 + 8.0.16 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 + 3.0.3 - + + junit junit 4.13.2 test + org.aspectj aspectjtools 1.9.21 + org.projectlombok lombok 1.18.30 + com.alibaba easyexcel 3.3.3 - + org.springframework.boot spring-boot-starter-data-redis + org.springframework.session spring-session-data-redis - org.springframework.boot spring-boot-starter-websocket + + org.springframework.boot + spring-boot-starter-amqp + + + + io.projectreactor + reactor-core + 3.5.12 + + + + io.netty + netty-all + 4.1.109.Final + + + + io.projectreactor.netty + reactor-netty + 1.1.13 + + + + com.aliyun + aliyun-java-sdk-core + 4.5.16 + + + + com.aliyun + aliyun-java-sdk-dysmsapi + 2.1.0 + + + + com.github.ulisesbocchio + jasypt-spring-boot-starter + 3.0.5 + + + + com.github.houbb + sensitive-word + 0.23.0 + + + + commons-net + commons-net + 3.3 + + + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + + + + jakarta.servlet + jakarta.servlet-api + 6.0.0 + provided + + + + jakarta.websocket + jakarta.websocket-api + 2.1.0 + provided + + + + org.springdoc + springdoc-openapi-starter-webmvc-ui + 2.5.0 + + + + org.springframework + spring-core + + + + io.swagger.core.v3 + swagger-core + 2.2.20 + + + + + com.alibaba.cloud.ai + spring-ai-alibaba-starter + 1.0.0-M2.1 + + + + + + spring-releases + https://repo.spring.io/release + + + knife4j + https://s01.oss.sonatype.org/content/repositories/releases/ + + + central + https://repo.maven.apache.org/maven2 + + + spring-milestones + Spring Milestone Repository + https://repo.spring.io/milestone + + + + + + + org.springframework.ai + spring-ai-bom + ${spring-ai.version} + pom + import + + + + org.springframework.boot spring-boot-maven-plugin - 2.6.4 org.apache.maven.plugins diff --git a/school_lend_back_end/school_lend_back_end/sql/create_table.sql b/school_lend_back_end/school_lend_back_end/sql/create_table.sql index 2fd542a..906dadc 100644 --- a/school_lend_back_end/school_lend_back_end/sql/create_table.sql +++ b/school_lend_back_end/school_lend_back_end/sql/create_table.sql @@ -174,12 +174,14 @@ create table if not exists orders phone varchar(64) not null comment '手机号', userId bigint not null comment '下单用户id', businessId bigint not null comment '商家id', + errandId bigint null comment '跑腿id', + location varchar(256) null comment '配送地址', totalPrice decimal(10, 2) not null comment '订单实际总价', pickupMethod tinyint not null comment '取餐方式(0堂食 1自提)', payMethod tinyint not null comment '支付方式:0微信支付', pickupTime datetime null comment '取餐时间', notes varchar(128) null comment '备注', - state tinyint default 0 not null comment '订单状态:0未支付 1已完成 2已退款 3已取消 4已出餐 5已完成', + state tinyint default 0 not null comment '订单状态: 0未支付 1已完成 2已退款 3已取消 4已出餐 5已完成', createTime datetime default CURRENT_TIMESTAMP not null comment '下单时间', updateTime datetime default CURRENT_TIMESTAMP not null comment '支付时间', isDelete tinyint default 0 not null comment '是否删除', @@ -261,8 +263,8 @@ create table collect -- 用户评分表 create table user_rating ( - id bigint auto_increment primary key comment 'id', - businessId bigint not null comment '商家id', + id bigint auto_increment comment 'id' primary key, + ratedEntityId bigint not null comment '评分对象的ID:商家 跑腿', userId bigint not null comment '用户id', orderId bigint not null comment '订单id', rating tinyint not null comment '评分', @@ -280,4 +282,110 @@ create table business_level level tinyint not null comment '等级', createTime DATETIME default CURRENT_TIMESTAMP comment '创建时间', updateTime DATETIME default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP comment '更新时间' -) \ No newline at end of file +); + +-- 系统信息表 +create table if not exists businessInfo +( + id bigint auto_increment comment 'id' primary key, + businessId bigint not null comment '商家id', + content varchar(256) not null comment '功能内容', + createTime datetime default CURRENT_TIMESTAMP not null comment '创建时间' +) comment '系统信息' collate = utf8mb4_unicode_ci; + +-- 跑腿表 +create table if not exists errand +( + id bigint auto_increment comment 'id' primary key, + userId bigint not null comment '用户id', + errandName varchar(256) not null comment '跑腿姓名', + errandAvatarUrl varchar(256) default 'http://154.8.193.216:9494/system/0/MRiFcIbr-R.jpg' comment '跑腿头像', + gender tinyint not null comment '性别', + phone varchar(128) not null comment '手机号', + distributionScope tinyint not null comment '配送范围', + totalOrders tinyint default 0 not null comment '接单量', + maxOrders tinyint default 15 not null comment '最大接单量', + totalPrice decimal(10, 2) default 0.00 not null comment '总金额', + state tinyint default 0 not null comment '审核状态 0-未审核 1-审核通过', + createTime DATETIME default CURRENT_TIMESTAMP comment '创建时间', + updateTime DATETIME default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP comment '更新时间', + isDelete tinyint default 0 not null comment '是否删除' +) comment '跑腿' collate = utf8mb4_unicode_ci; + +-- 跑腿认证表 +create table if not exists errand_auth +( + id bigint auto_increment primary key comment 'id', + errandId bigint not null comment '跑腿id', + bankCard varchar(64) not null comment '银行卡号', + frontIdCard varchar(1024) not null comment '身份证正面', + backIdCard varchar(1024) not null comment '身份证反面', + healthCertificate varchar(1024) null comment '健康证', + certificateStartTime datetime null comment '健康证开始时间', + certificateEndTime datetime null comment '健康证结束时间', + createTime datetime default CURRENT_TIMESTAMP not null comment '创建时间', + isDelete tinyint default 0 not null comment '逻辑删除' +) comment '跑腿认证' collate = utf8mb4_unicode_ci; + +-- 跑腿等级表 +create table if not exists errand_level +( + id bigint auto_increment primary key comment 'id', + errandId 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 '更新时间' +) comment '跑腿等级' collate = utf8mb4_unicode_ci; + +create table if not exists errand_income +( + id bigint auto_increment primary key comment 'id', + errandId bigint not null comment '跑腿id', + orderId bigint not null comment '订单id', + income decimal(10, 2) default 0 comment '综合评分', + state tinyint default 0 not null comment '0未结算 1已结算 2已提现', + createTime datetime default CURRENT_TIMESTAMP comment '创建时间' +) comment '跑腿收入' collate = utf8mb4_unicode_ci; + +create table if not exists errand_order +( + id bigint auto_increment primary key comment 'id', + orderId bigint not null comment '订单ID', + errandState tinyint default 0 null comment '跑腿状态: 0无跑腿 1待抢单 2待取货 3待送达 4已送达 5再次抢单', + startTime datetime null comment '送餐开始时间', + endTime datetime null comment '送餐结束时间', + errandId bigint 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 '是否删除' +) comment '跑腿任务表' collate = utf8mb4_unicode_ci; + +create table if not exists order_image +( + orderId bigint auto_increment primary key comment 'id', + imageAddress varchar(256) not null comment '外卖地址' +) comment '外卖图片' collate = utf8mb4_unicode_ci; + +create table if not exists errand_bill +( + id bigint auto_increment primary key comment 'id', + orderId bigint not null comment '订单Id', + userPhone varchar(128) not null comment '用户手机号', + income decimal(3, 2) default 0 comment '综合评分', + errandState tinyint default 0 comment '收入状态:0-待结算 1-已结算', + orderStartTime Date not null comment '订单创建时间' +) comment '跑腿账单表' collate = utf8mb4_unicode_ci; + +create table order_refunds ( + id bigint auto_increment primary key comment '退款申请ID', + orderId bigint not null unique comment '订单号,唯一标识', + userId bigint not null comment '用户ID', + reason varchar(255) default null comment '退款原因', + amount decimal(10,2) not null comment '退款金额', + status tinyint not null default 0 comment '退款状态:0-待审核, 1-已同意, 2-已拒绝', + createTime timestamp default current_timestamp comment '申请时间', + updateTime timestamp default current_timestamp on update current_timestamp comment '更新时间', + index idx_order_id (orderId), + index idx_user_id (userId) +) comment='退款申请表' collate = utf8mb4_unicode_ci; diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/UserCenterApplication.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/UserCenterApplication.java index bac0c4c..8f05a64 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/UserCenterApplication.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/UserCenterApplication.java @@ -1,8 +1,11 @@ package com.bsz.school_send_back_end; import org.mybatis.spring.annotation.MapperScan; +import org.springframework.ai.chat.memory.ChatMemory; +import org.springframework.ai.chat.memory.InMemoryChatMemory; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; import org.springframework.scheduling.annotation.EnableScheduling; @@ -14,4 +17,9 @@ public class UserCenterApplication { public static void main(String[] args) { SpringApplication.run(UserCenterApplication.class, args); } + + @Bean + public ChatMemory chatMemory(){ + return new InMemoryChatMemory(); + } } diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/aop/AuthInterceptor.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/aop/AuthInterceptor.java index 4095d48..9b879cd 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/aop/AuthInterceptor.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/aop/AuthInterceptor.java @@ -15,8 +15,9 @@ import org.springframework.web.context.request.RequestAttributes; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; -import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletRequest; +import java.util.Arrays; /** * 权限校验 AOP @@ -33,9 +34,15 @@ public class AuthInterceptor { */ @Around("@annotation(authCheck)") public Object doInterceptor(ProceedingJoinPoint joinPoint, AuthCheck authCheck) throws Throwable { + String mustRole = authCheck.mustRole(); RequestAttributes requestAttributes = RequestContextHolder.currentRequestAttributes(); HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest(); + String uri = request.getRequestURI(); + // ✅ 如果是 Swagger 或 OpenAPI 相关请求,直接放行 + if (uri.startsWith("/v3/api-docs") || uri.contains("/swagger") || uri.contains("/swagger-ui")) { + return joinPoint.proceed(); // 直接放行 + } // 当前登录用户 User loginUser = userService.getLoginUser(request); // 必须有该权限才通过 @@ -62,13 +69,23 @@ public class AuthInterceptor { } // 必须有商家或管理员权限 if (UserRoleEnum.BUSINESS.equals(mustUserRoleEnum)) { - if (!mustRole.equals(userRole) - && !UserConstant.ADMIN_ROLE.equals(userRole) - &&!UserConstant.BOSS_ROLE.equals(userRole)) { + if (!Arrays.asList(mustRole, UserConstant.ADMIN_ROLE, UserConstant.BOSS_ROLE).contains(userRole)) { throw new BusinessException(ErrorCode.NO_AUTH); } } + // + if (UserRoleEnum.ERRAND.equals(mustUserRoleEnum)) { + if (!Arrays.asList(mustRole, UserConstant.ADMIN_ROLE, UserConstant.BOSS_ROLE).contains(userRole)) { + throw new BusinessException(ErrorCode.NO_AUTH); + } + } + + if (UserRoleEnum.USER.equals(mustUserRoleEnum)) { + if (!Arrays.asList(mustRole, UserConstant.ADMIN_ROLE, UserConstant.BOSS_ROLE).contains(userRole)) { + throw new BusinessException(ErrorCode.NO_AUTH); + } + } // 通过权限校验,放行 return joinPoint.proceed(); } diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/aop/SystemLogInterceptor.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/aop/SystemLogInterceptor.java index b61663a..f973e24 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/aop/SystemLogInterceptor.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/aop/SystemLogInterceptor.java @@ -19,8 +19,8 @@ import org.springframework.web.context.request.RequestAttributes; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; -import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletRequest; /** * 日志AOP @@ -41,12 +41,18 @@ public class SystemLogInterceptor { */ @Around("@annotation(systemLog)") public Object doInterceptor(ProceedingJoinPoint joinPoint, SystemLog systemLog) throws Throwable { + // 获取执行操作 String executeStep = systemLog.executeStep(); ThrowUtils.throwIf(StringUtils.isEmpty(executeStep), ErrorCode.PARAMS_ERROR); //获取请求 RequestAttributes requestAttributes = RequestContextHolder.currentRequestAttributes(); HttpServletRequest httpServletRequest = ((ServletRequestAttributes) requestAttributes).getRequest(); + String uri = httpServletRequest.getRequestURI(); + // ✅ 如果是 Swagger 或 OpenAPI 相关请求,直接放行 + if (uri.startsWith("/v3/api-docs") || uri.contains("/swagger") || uri.contains("/swagger-ui")) { + return joinPoint.proceed(); // 直接放行 + } //获取登录用户 User loginUser = userService.getLoginUser(httpServletRequest); //写入系统日志 diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/common/BaseResponse.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/common/BaseResponse.java index 74fe95e..fc88d5f 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/common/BaseResponse.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/common/BaseResponse.java @@ -1,31 +1,24 @@ package com.bsz.school_send_back_end.common; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.io.Serializable; -/** - *通用返回类 - * - * @author bsz - */ @Data +@Schema(description = "通用返回对象") public class BaseResponse implements Serializable { - /** - * 状态码 - */ + + @Schema(description = "状态码,例如:200 表示成功") private int code; - /** - * 数据 - */ + + @Schema(description = "返回的数据内容") private T data; - /** - * 消息 - */ + + @Schema(description = "提示消息") private String message; - /** - * 描述 - */ + + @Schema(description = "错误描述") private String description; public BaseResponse(int code, T data, String message, String description) { diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/config/AliPayNotifyHandler.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/config/AliPayNotifyHandler.java index c2e2559..7124d34 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/config/AliPayNotifyHandler.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/config/AliPayNotifyHandler.java @@ -3,7 +3,7 @@ package com.bsz.school_send_back_end.config; import com.alipay.api.internal.util.AlipaySignature; import org.springframework.context.annotation.Configuration; -import javax.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletRequest; import java.util.Enumeration; import java.util.HashMap; import java.util.Map; diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/config/AlipayClients.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/config/AlipayClients.java index 08584c1..42593be 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/config/AlipayClients.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/config/AlipayClients.java @@ -10,12 +10,12 @@ public class AlipayClients { public String appId = "2021004151684053"; //私钥 //上:沙箱公钥 下:支付宝公钥 - public String PublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3JKMG3clg/1MqewlIK/koEhiQiSLagckb/2/Dyvg+rJ2snGiAgzNvhvvc1GdVC+Xnn/P+U+2tAytyuvbOuhmGgNZjeObczJXpo/0D6LBdYDrg4PVMDxpStCxLUpaShHbc/l/IquaorBwd94UJxIPAbUQkUBCbo94mGbhDX+yU4FQ6k1yeUtn03jvZ3AY0BEHpenCxWKgr5S/CUAYEitMbi/r7extBy6f4FCR120NM7VaNEK1xpHbGHo6rDpyiAOR1lWFuiqOJ1hv14UL/SfOLlzvUZiiPysIxdNjycZyiyRvFRHP3n8GBAaJDm9vVHwDfgQ5s3Ig2ggBeYXkFHZqWwIDAQAB"; -// public String PublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjqGlEXMznr4XlQ3hvbZnQmfj0iJ2MAmPmpNyXMuQhuMK2xx8t9HozL+YzZ8l/4ksgtzGCHx0NiObsYe6Tt0EogfBqXjPTst21AjrT1TPKOxSfv6WuqNLNuY5o/i8ev0OLAGg8YUD2PL1GXSIrUMqjUuCFYQ7iFgEtcN54GVh4XG7Qj6wpN8CCTwmG4R4vHk4Al0ydE2yf0Efj49EgIi+Oq8EkXPSgdWpcS+UaEyuFVr3R5am36MHp+rXkOm6NluVJFBD/JHsOjB/Wt0EGd2HSyhR7n0hjFpNfVodughLL53/zG+nZ7+mM25s2S7Qh4iirxTedeqXlvBMXffxLSQrtQIDAQAB"; +// public String PublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3JKMG3clg/1MqewlIK/koEhiQiSLagckb/2/Dyvg+rJ2snGiAgzNvhvvc1GdVC+Xnn/P+U+2tAytyuvbOuhmGgNZjeObczJXpo/0D6LBdYDrg4PVMDxpStCxLUpaShHbc/l/IquaorBwd94UJxIPAbUQkUBCbo94mGbhDX+yU4FQ6k1yeUtn03jvZ3AY0BEHpenCxWKgr5S/CUAYEitMbi/r7extBy6f4FCR120NM7VaNEK1xpHbGHo6rDpyiAOR1lWFuiqOJ1hv14UL/SfOLlzvUZiiPysIxdNjycZyiyRvFRHP3n8GBAaJDm9vVHwDfgQ5s3Ig2ggBeYXkFHZqWwIDAQAB"; + public String PublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1WYUUWEH+kW2pdYoBJa6j5G3iWe3uL/3L1QXPenzrp/NC1M9W/yvniJnAiYR4pdopZmlWfEm7FpHxbLaxxcXe0jTkspq9vv9vDldyXgKr13QZBJu4hD3w4QZNa+85paANXkfcVKXCpIh6sWTaW78lBE5p7Q0M6O26OCj/K3iPD7x4+KagqS5w9YYS8AXlQdsZPBh99bO3+KuQzcK4o4bFGI+ut4HLvd2IxdF5LwfjucloN6SRbU06vsDtpjtA+Oeoet5Y0CNfkpgbh7wvvNIbM6XEqMtfKCzevPaqRxwrFkS8WUQTMOaQbJXATbPQDt7MoWGujFd37lYz7ESQZed2wIDAQAB"; //公钥appPrivateKey //上:沙箱私钥 下:支付宝私钥 - public String appPrivateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCc1rWOaCHl7KnDDMctWIgFJqerq9ZU8QsxSA+wQC4nrTfoQVSVZn8fDNosilCHda7yv910A9aJYqZKx0+NOXY9YvMbKYifWtO8TtzAQ9Q0EQXce85gnVQ3yn9evE1MVwfmMIiXJ2jx/dmGrxuADrLcsNB/U4xsusKcNQaA76vALtAYTnKwOODaDt5Qd2OC25PRcGtKupKIbir/f62tNquBkCX+Z5URBpy0rZY2hCu30v3uPv8I3OlpxegFwNDHpKMIY3+wjQtqsogQTn20E5wzeV3VNabNxbORq6B6nh8mvxlo9q14XvmMJDPUoWiJgyUUpaAPZFWSpRCrLvWQY/klAgMBAAECggEAZJ/Ahig7L2gClriZBXfadOuTAapS7dZkpu6j2iGjOyOATgu0N9I11vcI9zCab/5KC0abzzYzK5vWMv3jBSmLueDFNnUUSaEdXaB/Mv+RowIU75ujEgt+n/jUdTR8p3DjCYWz7L6FL1T9fdLU4vkLOlpauoYg/xVnjI7cqFacq8SWr3jiGj/I31O18y02/eDiyAb5RMlSlNGnzvDuRwJ3h2Sn1u7znbMCi6CydG3hx+I0GE2iJqVPymc1f0T0vm7Jy3l/zL84oNKLTgPCqG9k+eriC7RaMkbvPQFjWCDCuWxgYM2pi1L9ZDG+FkReTFsZw6r/TWc4sl2xtj3GDSrHYQKBgQD1NwFBMQwsUQ/aJP63R0gILWSFR0+yQ314vfRRVKoZTujbQr7RBAzgQff97DirINIxXCBeV0zifpc2IaAPaY29YjDnQU+xGqIO91EWPjMkQ6XUvGGesKnKDYkA5yBMyD3/BH8BwJruidW2DwtC2rGTW1hatkXNtYccEI79/00UOQKBgQCjvKIySZdRolOYUfSPHHipOygWClFy1DlI54XDnj0gRBoOrFkeqrXr+G8dYeXP6UnMqLWX8V3RuEJB8klwKGLkMtUWdqMQUFM5yvjuX2d1Y9R2ESw0ch70B/6aItMVv6aN4GjGwCJWD1XD54IpWxtAKJsUxbDiN+343cVqSQQETQKBgQDq9JBcMa3TTLyerbHuVPt88lmNpr2DNk2kAoZ142S0qTpO1M5XIcVgn3UKNWw69FDSgM529rkxkFA8ys0910q7erkW7Cp6rOU459onMOP5zGO5yeLTlbyqYHu0hMEbMQbOMjWrrSwGgcVnE1Ub8sYRRoYLLPkHWPcjee45C4WEaQKBgHkUUeDb+JD+d9DIsg9uH3ANdcwunyJJ+36E7q7EgjEtCxPUsSZzWIoBsbFJppbDzbYRABA3BYjDOAPqNhJBWzeiu16cJmM28wRmqwQi+q+dPgx9EHJL/cW5b7XtkKihi3mY/AIVLI71UhfHR8JrQ9CC9oM62V2/vDNvU8AP9G91AoGANdvRubukeWgvWryBTaPuUTpjkP1mOuJuHiHEW5/XePsURwS6gGP/qJ9bSbhYhQ6iDaMOQ8vahfYM3Q4jvDxgcKS/N1fxFTohcN4bVdvekq62YdTNqcGhNzaxMNboFZYt2dPeDm8PRRMP+abddrS2NqgVSOC3Ru5Kh9iRIs2LOgE="; -// 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="; +// public String appPrivateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCc1rWOaCHl7KnDDMctWIgFJqerq9ZU8QsxSA+wQC4nrTfoQVSVZn8fDNosilCHda7yv910A9aJYqZKx0+NOXY9YvMbKYifWtO8TtzAQ9Q0EQXce85gnVQ3yn9evE1MVwfmMIiXJ2jx/dmGrxuADrLcsNB/U4xsusKcNQaA76vALtAYTnKwOODaDt5Qd2OC25PRcGtKupKIbir/f62tNquBkCX+Z5URBpy0rZY2hCu30v3uPv8I3OlpxegFwNDHpKMIY3+wjQtqsogQTn20E5wzeV3VNabNxbORq6B6nh8mvxlo9q14XvmMJDPUoWiJgyUUpaAPZFWSpRCrLvWQY/klAgMBAAECggEAZJ/Ahig7L2gClriZBXfadOuTAapS7dZkpu6j2iGjOyOATgu0N9I11vcI9zCab/5KC0abzzYzK5vWMv3jBSmLueDFNnUUSaEdXaB/Mv+RowIU75ujEgt+n/jUdTR8p3DjCYWz7L6FL1T9fdLU4vkLOlpauoYg/xVnjI7cqFacq8SWr3jiGj/I31O18y02/eDiyAb5RMlSlNGnzvDuRwJ3h2Sn1u7znbMCi6CydG3hx+I0GE2iJqVPymc1f0T0vm7Jy3l/zL84oNKLTgPCqG9k+eriC7RaMkbvPQFjWCDCuWxgYM2pi1L9ZDG+FkReTFsZw6r/TWc4sl2xtj3GDSrHYQKBgQD1NwFBMQwsUQ/aJP63R0gILWSFR0+yQ314vfRRVKoZTujbQr7RBAzgQff97DirINIxXCBeV0zifpc2IaAPaY29YjDnQU+xGqIO91EWPjMkQ6XUvGGesKnKDYkA5yBMyD3/BH8BwJruidW2DwtC2rGTW1hatkXNtYccEI79/00UOQKBgQCjvKIySZdRolOYUfSPHHipOygWClFy1DlI54XDnj0gRBoOrFkeqrXr+G8dYeXP6UnMqLWX8V3RuEJB8klwKGLkMtUWdqMQUFM5yvjuX2d1Y9R2ESw0ch70B/6aItMVv6aN4GjGwCJWD1XD54IpWxtAKJsUxbDiN+343cVqSQQETQKBgQDq9JBcMa3TTLyerbHuVPt88lmNpr2DNk2kAoZ142S0qTpO1M5XIcVgn3UKNWw69FDSgM529rkxkFA8ys0910q7erkW7Cp6rOU459onMOP5zGO5yeLTlbyqYHu0hMEbMQbOMjWrrSwGgcVnE1Ub8sYRRoYLLPkHWPcjee45C4WEaQKBgHkUUeDb+JD+d9DIsg9uH3ANdcwunyJJ+36E7q7EgjEtCxPUsSZzWIoBsbFJppbDzbYRABA3BYjDOAPqNhJBWzeiu16cJmM28wRmqwQi+q+dPgx9EHJL/cW5b7XtkKihi3mY/AIVLI71UhfHR8JrQ9CC9oM62V2/vDNvU8AP9G91AoGANdvRubukeWgvWryBTaPuUTpjkP1mOuJuHiHEW5/XePsURwS6gGP/qJ9bSbhYhQ6iDaMOQ8vahfYM3Q4jvDxgcKS/N1fxFTohcN4bVdvekq62YdTNqcGhNzaxMNboFZYt2dPeDm8PRRMP+abddrS2NqgVSOC3Ru5Kh9iRIs2LOgE="; + 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; //支付宝证书 @@ -25,7 +25,7 @@ public class AlipayClients { //回调地址 private String notify; //字符集 签名 - private String gateway = "https://openapi-sandbox.dl.alipaydev.com/gateway.do"; + private String gateway = "https://openapi.alipay.com/gateway.do"; // 公私钥模式 diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/config/Knife4jConfig.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/config/Knife4jConfig.java index e6d275f..3059ca9 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/config/Knife4jConfig.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/config/Knife4jConfig.java @@ -1,53 +1,25 @@ package com.bsz.school_send_back_end.config; +import org.springdoc.core.models.GroupedOpenApi; 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 接口文档配置 + * Springdoc OpenAPI 配置 * - * http://localhost:8080/api/doc.html#/home 接口文档地址 + * https://localhost:9999/api/swagger-ui/index.html 接口文档地址 */ @Configuration -@EnableSwagger2 -@Profile({"dev", "test"}) //版本控制访问 +@Profile({"dev", "test"}) // 版本控制访问 public class Knife4jConfig { + @Bean - public Docket defaultApi2() { - return new Docket(DocumentationType.SWAGGER_2) - .apiInfo(apiInfo()) - .select() - // 指定 Controller 扫描包路径 - .apis(RequestHandlerSelectors.basePackage("com.bsz.school_send_back_end.controller")) - .paths(PathSelectors.any()) + public GroupedOpenApi defaultApi() { + return GroupedOpenApi.builder() + .group("xiaokuaisong") + .packagesToScan("com.bsz.school_send_back_end.controller") // 指定扫描的包路径 .build(); } - /** - * 自定义接口文档信息 - * @return 接口文档 - */ - private ApiInfo apiInfo() { - return new ApiInfoBuilder() - // 接口文档的标题 - .title("校快送接口平台管理") - // 接口文档的描述信息 - .description("校快送的接口文档,进行测试") - // 提供服务的是谁?可以填写你自己的地址因为是你自己提供的服务 - .termsOfServiceUrl("https://gitee.com/shir23zxc/school_lend_back-end") - .contact(new Contact("bsz", "https://account.bilibili.com/account/face/upload?spm_id_from=333.999.0.0", "1113832400@qq.com")) - // 版本 - .version("1.0") - // 构建 - .build(); - } -} \ No newline at end of file +} diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/config/RedisSessionRepositoryConfig.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/config/RedisSessionRepositoryConfig.java index 242462e..1097b53 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/config/RedisSessionRepositoryConfig.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/config/RedisSessionRepositoryConfig.java @@ -2,8 +2,11 @@ package com.bsz.school_send_back_end.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.RedisSerializer; +import org.springframework.data.redis.serializer.StringRedisSerializer; @Configuration public class RedisSessionRepositoryConfig { @@ -13,4 +16,15 @@ public class RedisSessionRepositoryConfig { { return new GenericJackson2JsonRedisSerializer(); } + + @Bean + public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){ + RedisTemplate redisTemplate = new RedisTemplate<>(); + //设置redis的连接工厂对象 + redisTemplate.setConnectionFactory(redisConnectionFactory); + //设置redis key的序列化器 + redisTemplate.setKeySerializer(new StringRedisSerializer()); + redisTemplate.setValueSerializer(new StringRedisSerializer()); + return redisTemplate; + } } diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/contant/FileConstant.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/contant/FileConstant.java index aa95c0e..68d5eeb 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/contant/FileConstant.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/contant/FileConstant.java @@ -14,7 +14,7 @@ public interface FileConstant { /** * 服务器访问地址 */ - String SERVER_HOST = "154.8.193.216:9494"; + String SERVER_HOST = "https://xiaoshitong.xyz"; /** * 服务器上传路径 diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/contant/RedisKeyConstant.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/contant/RedisKeyConstant.java index d1e6970..638f00e 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/contant/RedisKeyConstant.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/contant/RedisKeyConstant.java @@ -13,4 +13,5 @@ public interface RedisKeyConstant { String USER_LOGIN_STATE = "xiaokuaisong_user"; String IP = "ip"; String SESSION_ID = "sessionId"; + String APPNAME = "appName"; } diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/contant/UserConstant.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/contant/UserConstant.java index c1c2ea6..b06e30e 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/contant/UserConstant.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/contant/UserConstant.java @@ -1,5 +1,11 @@ package com.bsz.school_send_back_end.contant; +import java.math.BigDecimal; +import java.util.Map; +import java.util.Set; + +import static java.util.Map.entry; + /** * 用户常量 */ @@ -27,6 +33,10 @@ public interface UserConstant { */ String ADMIN_ROLE = "admin"; + /** + * 跑腿角色 + */ + String ERRAND_ROLE = "errand"; /** * Boss */ @@ -36,4 +46,39 @@ public interface UserConstant { * 被封号 */ String BAN_ROLE = "ban"; + + /** + * 配送地址 + */ + Set VALID_LOCATIONS = Set.of("1公寓", "2公寓", "3公寓","4公寓","5公寓","6公寓", + "7公寓","8公寓","9公寓","10公寓","11公寓","12公寓","育才大厦"); + + /** + * 公寓配送费 + */ + Map DELIVERY_FEE_MAP = Map.ofEntries( + entry("1公寓", new BigDecimal("1.7")), + entry("2公寓", new BigDecimal("1.7")), + entry("11公寓", new BigDecimal("1.7")), + entry("12公寓", new BigDecimal("1.7")), + entry("5公寓", new BigDecimal("1.2")), + entry("6公寓", new BigDecimal("1.2")), + entry("7公寓", new BigDecimal("1.2")), + entry("3公寓", new BigDecimal("2.3")), + entry("4公寓", new BigDecimal("2.3")), + entry("9公寓", new BigDecimal("2.3")), + entry("10公寓", new BigDecimal("2.3")), + entry("8公寓", new BigDecimal("2.3")), + entry("育才大厦", new BigDecimal("2.5")) + ); + + /** + * 默认等级 + */ + int DEFAULT_LEVEL = 1; + + /** + * 默认平均分 + */ + double DEFAULT_AVG_SCORE = 1.0; } diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/BusinessController.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/BusinessController.java index 5d2623d..3917623 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/BusinessController.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/BusinessController.java @@ -12,25 +12,32 @@ import com.bsz.school_send_back_end.common.ResultUtils; import com.bsz.school_send_back_end.contant.UserConstant; import com.bsz.school_send_back_end.exception.BusinessException; import com.bsz.school_send_back_end.exception.ThrowUtils; -import com.bsz.school_send_back_end.model.domain.*; +import com.bsz.school_send_back_end.model.domain.Business; +import com.bsz.school_send_back_end.model.domain.BusinessAuth; +import com.bsz.school_send_back_end.model.domain.Collect; +import com.bsz.school_send_back_end.model.domain.User; import com.bsz.school_send_back_end.model.dto.business.BusinessAddRequest; import com.bsz.school_send_back_end.model.dto.business.BusinessQueryRequest; import com.bsz.school_send_back_end.model.dto.business.BusinessUpdateMyRequest; import com.bsz.school_send_back_end.model.dto.business.BusinessUpdateRequest; import com.bsz.school_send_back_end.model.vo.BusinessAdminVO; import com.bsz.school_send_back_end.model.vo.BusinessVO; -import com.bsz.school_send_back_end.service.*; +import com.bsz.school_send_back_end.service.BusinessAuthService; +import com.bsz.school_send_back_end.service.BusinessService; +import com.bsz.school_send_back_end.service.CollectService; +import com.bsz.school_send_back_end.service.UserService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; 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 jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletRequest; import java.util.List; +import static com.bsz.school_send_back_end.contant.UserConstant.DEFAULT_ROLE; import static com.bsz.school_send_back_end.contant.UserConstant.USER_SALT; /** @@ -53,9 +60,6 @@ public class BusinessController { @Resource private CollectService collectService; - @Resource - private BusinessLevelService businessLevelService; - @PostMapping("/add") public BaseResponse addBusiness(@RequestBody BusinessAddRequest businessAddRequest) { @@ -69,7 +73,7 @@ public class BusinessController { BeanUtils.copyProperties(businessAddRequest, businessAuth); //对每个应该校验的业务进行校验 - businessService.validUser(user, true); + userService.validUser(user, true); businessService.validBusiness(business, true); businessService.validBusinessAuth(businessAuth, true); @@ -170,40 +174,6 @@ public class BusinessController { return ResultUtils.success(businessAdminVO); } - /** - * 根据id查询 - */ - @GetMapping("/my/getById") - @AuthCheck(mustRole = UserConstant.DEFAULT_ROLE) - public BaseResponse getMyBusinessById(@RequestParam Long id, HttpServletRequest request) { - if (id <= 0) { - throw new BusinessException(ErrorCode.PARAMS_ERROR); - } - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(Business::getId, id); - Business business = businessService.getOne(queryWrapper); - ThrowUtils.throwIf(business == null, ErrorCode.OPERATION_ERROR, "没有找到商家"); - - BusinessVO businessVO = new BusinessVO(); - BeanUtils.copyProperties(business, businessVO); - User loginUser = userService.getLoginUser(request); - Long loginUserId = loginUser.getId(); - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(Collect::getUserId, loginUserId); - wrapper.eq(Collect::getBusinessId, id); - long count = collectService.count(wrapper); - Collect collect = collectService.getOne(wrapper); - if (count > 0) { - businessVO.setCollectId(collect.getId()); - } else{ - businessVO.setCollectId(0L); - } - BusinessLevel level = businessLevelService.getOne(Wrappers.lambdaQuery() - .eq(BusinessLevel::getBusinessId, id)); - businessVO.setLevel(level.getLevel()); - return ResultUtils.success(businessVO); - } - /** * 根据当前登录用户获取商家信息 */ @@ -252,6 +222,22 @@ public class BusinessController { return ResultUtils.success(businessVOPage); } + @GetMapping("/my/getById") + @AuthCheck(mustRole = DEFAULT_ROLE) + public BaseResponse getBusinessVO (@RequestParam Long businessId, HttpServletRequest request) { + User loginUser = userService.getLoginUser(request); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(Business::getId, businessId); + long count = businessService.count(queryWrapper); + ThrowUtils.throwIf(count != 1, ErrorCode.PARAMS_ERROR, "商家id不正确"); + Business business = businessService.getOne(queryWrapper); + BusinessVO businessVO = businessService.getBusinessVO(business); + long collect = collectService.count(Wrappers.lambdaQuery() + .eq(Collect::getUserId, loginUser.getId()) + .eq(Collect::getBusinessId, businessId)); + businessVO.setIsCollected(collect > 0); + return ResultUtils.success(businessVO); + } } diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/CartController.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/CartController.java index 02caace..cffc7f6 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/CartController.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/CartController.java @@ -18,17 +18,14 @@ import com.bsz.school_send_back_end.service.UserService; 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 jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletRequest; import java.util.List; -import java.util.stream.Collectors; @RestController @Slf4j @@ -120,7 +117,7 @@ public class CartController { queryWrapper.eq(Cart::getBusinessId, businessId); queryWrapper.eq(Cart::getUserId, userId); List cartList = cartService.list(queryWrapper); - List cartVOList = this.getCartVOList(cartList); + List cartVOList = cartService.getCartVOList(cartList); return ResultUtils.success(cartVOList); } @@ -137,7 +134,7 @@ public class CartController { wrapper.eq(Cart::getUserId, userId); List cartList = cartService.list(wrapper); - List cartVOList = this.getCartVOList(cartList); + List cartVOList = cartService.getCartVOList(cartList); return ResultUtils.success(cartVOList); } @@ -182,15 +179,4 @@ public class CartController { 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/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/CategoryController.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/CategoryController.java index 6b42784..6eeae0d 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/CategoryController.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/CategoryController.java @@ -19,7 +19,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.*; -import javax.annotation.Resource; +import jakarta.annotation.Resource; import java.util.List; @Slf4j diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/CollectController.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/CollectController.java index 2b32bfd..7063c95 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/CollectController.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/CollectController.java @@ -20,8 +20,9 @@ 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 jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletRequest; +import java.util.ArrayList; import java.util.List; @RestController @@ -55,13 +56,16 @@ public class CollectController { * 删除一条收藏 */ @PostMapping("/delete") - public BaseResponse deleteCollect(@RequestBody CommonRequest commonRequest) { + public BaseResponse deleteCollect(@RequestBody CommonRequest commonRequest, HttpServletRequest request) { if (commonRequest == null) { throw new BusinessException(ErrorCode.PARAMS_ERROR); } Long id = commonRequest.getId(); + User loginUser = userService.getLoginUser(request); + Long userId = loginUser.getId(); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(Collect::getId, id); + wrapper.eq(Collect::getUserId, userId); + wrapper.eq(Collect::getBusinessId, id); boolean remove = collectService.remove(wrapper); ThrowUtils.throwIf(!remove, ErrorCode.SYSTEM_ERROR); return ResultUtils.success(true); @@ -87,6 +91,10 @@ public class CollectController { @PostMapping("/list") public BaseResponse> listCollect(HttpServletRequest request) { List collectList = collectService.getCollectList(request); + + if (collectList == null) { + collectList = new ArrayList<>(); + } return ResultUtils.success(collectList); } } diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/DishesController.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/DishesController.java index 5690a8e..957fa5c 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/DishesController.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/DishesController.java @@ -29,8 +29,8 @@ 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 jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletRequest; import java.util.List; @Slf4j diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/DishesGroupController.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/DishesGroupController.java index 7430931..a05a982 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/DishesGroupController.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/DishesGroupController.java @@ -29,8 +29,8 @@ 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 jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletRequest; import java.util.List; @Slf4j diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/FileController.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/FileController.java index a9e962b..51eef64 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/FileController.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/FileController.java @@ -15,8 +15,8 @@ import org.apache.commons.lang3.RandomStringUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletRequest; import java.io.File; import java.io.IOException; import java.util.Arrays; diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/OrdersController.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/OrdersController.java index bd6a165..6d379bb 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/OrdersController.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/OrdersController.java @@ -15,31 +15,31 @@ import com.bsz.school_send_back_end.contant.CommonConstant; import com.bsz.school_send_back_end.contant.UserConstant; import com.bsz.school_send_back_end.exception.BusinessException; import com.bsz.school_send_back_end.exception.ThrowUtils; +import com.bsz.school_send_back_end.listener.RabbitMQSender; import com.bsz.school_send_back_end.model.domain.*; import com.bsz.school_send_back_end.model.dto.CommonRequest; import com.bsz.school_send_back_end.model.dto.order.*; -import com.bsz.school_send_back_end.model.vo.OrdersExcelVO; -import com.bsz.school_send_back_end.model.vo.OrdersVO; +import com.bsz.school_send_back_end.model.vo.*; import com.bsz.school_send_back_end.service.*; import com.bsz.school_send_back_end.utils.ExcelUtils; import com.bsz.school_send_back_end.utils.SqlUtils; 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.util.CollectionUtils; import org.springframework.web.bind.annotation.*; -import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.OutputStream; import java.math.BigDecimal; import java.time.LocalDate; import java.time.format.DateTimeFormatter; -import java.util.ArrayList; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; @@ -67,6 +67,24 @@ public class OrdersController { @Resource private OrderDetailsService orderDetailsService; + @Resource + private WebsocketService websocketService; + + @Resource + private ErrandService errandService; + + @Resource + private ErrandIncomeService errandIncomeService; + + @Resource + private ErrandOrderService errandOrderService; + + @Resource + private ErrandBillService billService; + + @Resource + private RabbitMQSender rabbitMQSender; + /** * 创建订单 * @@ -100,6 +118,7 @@ public class OrdersController { }).toList(); // 创建订单 long orderId = ordersService.addOrder(orders, orderDetailsList); + rabbitMQSender.sendCreateOrderMessage(orderId); return ResultUtils.success(orderId, "订单创建成功"); } @@ -146,7 +165,6 @@ public class OrdersController { * 根据 id 获取订单信息 */ @GetMapping("/get/my") - @AuthCheck(mustRole = UserConstant.DEFAULT_ROLE) public BaseResponse getOrderVOByMyId(@RequestParam Long id, HttpServletRequest request) { if (id <= 0) { throw new BusinessException(ErrorCode.PARAMS_ERROR); @@ -241,18 +259,18 @@ public class OrdersController { orderQueryRequest.setStartTime(date.format(startFormatter)); orderQueryRequest.setEndTime(date.format(endFormatter)); QueryWrapper queryWrapper = ordersService.getQueryWrapper(orderQueryRequest); - List ordertList = ordersService.list(queryWrapper); + List orderList = ordersService.list(queryWrapper); BigDecimal money = new BigDecimal("0"); - for (Orders order : ordertList) { + for (Orders order : orderList) { money = money.add(order.getTotalPrice()); } moneyCountList.add(money); } } else { QueryWrapper queryWrapper = ordersService.getQueryWrapper(orderQueryRequest); - List ordertList = ordersService.list(queryWrapper); + List orderList = ordersService.list(queryWrapper); BigDecimal money = new BigDecimal("0"); - for (Orders order : ordertList) { + for (Orders order : orderList) { money = money.add(order.getTotalPrice()); } moneyCountList.add(money); @@ -355,12 +373,17 @@ public class OrdersController { }).collect(Collectors.toList()); // 设置导出名称 ExcelUtils.setExcelResponseProp(response, "订单信息"); + log.info("响应头 Content-Type: {}", response.getContentType()); // 获取输出流名称 - OutputStream outputStream = response.getOutputStream(); - // 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭 - EasyExcel.write(outputStream, OrdersExcelVO.class) // 对应实体类 - .sheet("订单数据") // sheet页名称 - .doWrite(ordersExcelVOList); // 导出的数据集合 + try (OutputStream outputStream = response.getOutputStream()) { + EasyExcel.write(outputStream, OrdersExcelVO.class) + .sheet("订单数据") + .doWrite(ordersExcelVOList); + response.flushBuffer(); + } catch (Exception e) { + log.error("Excel 导出失败", e); + } + } @PostMapping("/delete") @@ -400,49 +423,195 @@ public class OrdersController { Orders orders = ordersService.getOne(queryWrapper); Business loginBusiness = businessService.getLoginBusiness(request); Long businessId = loginBusiness.getId(); - ThrowUtils.throwIf(!businessId.equals(orders.getBusinessId()), ErrorCode.FORBIDDEN_ERROR, - "当前订单不属于当前登录用户"); - ThrowUtils.throwIf(!orders.getState().equals(1), ErrorCode.OPERATION_ERROR,"当前订单状态不是已支付状态"); + ThrowUtils.throwIf(!businessId.equals(orders.getBusinessId()), ErrorCode.FORBIDDEN_ERROR, "当前订单不属于当前登录用户"); LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.set(Orders::getState,4); updateWrapper.eq(Orders::getId, id); + String location = orders.getLocation(); + ErrandOrder errandOrder = errandOrderService.getOne(Wrappers.lambdaQuery() + .eq(ErrandOrder::getOrderId, orders.getId())); + + if (errandOrder != null) { + if (StringUtils.isNotBlank(location)) { + websocketService.sendOrderToErrand(orders); + errandOrder.setErrandState(1);//1待抢单 + boolean update1 = errandOrderService.updateById(errandOrder); + ThrowUtils.throwIf(!update1, ErrorCode.OPERATION_ERROR, "更新跑腿关联失败"); + } + boolean update = ordersService.update(updateWrapper); ThrowUtils.throwIf(!update, ErrorCode.OPERATION_ERROR,"修改订单状态失败"); + } + return ResultUtils.success(true); } - @PostMapping("/update/user") - @AuthCheck(mustRole = UserConstant.DEFAULT_ROLE) - public BaseResponse updateOrderStateByUser (@RequestBody CommonRequest commonRequest, HttpServletRequest request){ + @PostMapping("/updateOrder") + public BaseResponse updateOrder(@RequestBody OrderUpdateRequest orderUpdateRequest, HttpServletRequest request) { + return ResultUtils.success(ordersService.OrderToUpdate(orderUpdateRequest, request)); + } + + @PostMapping("/update/state/user") + public BaseResponse updateStateByUser(@RequestBody CommonRequest commonRequest, HttpServletRequest request) { if (commonRequest == null) { throw new BusinessException(ErrorCode.PARAMS_ERROR); } - Long orderId = commonRequest.getId(); - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(Orders::getId, orderId); - Orders orders = ordersService.getOne(queryWrapper); User loginUser = userService.getLoginUser(request); - ThrowUtils.throwIf(!loginUser.getId().equals(orders.getUserId()), ErrorCode.OPERATION_ERROR, - "当前订单不属于该用户"); - ThrowUtils.throwIf(!orders.getState().equals(4), ErrorCode.OPERATION_ERROR,"该订单未出餐"); - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); - updateWrapper.set(Orders::getState, 5); - updateWrapper.eq(Orders::getId, orderId); - boolean update = ordersService.update(updateWrapper); - ThrowUtils.throwIf(!update, ErrorCode.OPERATION_ERROR,"修改订单状态失败"); + Orders orders = ordersService.getById(orderId); + ThrowUtils.throwIf(orders.getState().equals(5), ErrorCode.OPERATION_ERROR, "订单已完成"); + ThrowUtils.throwIf(!orders.getUserId().equals(loginUser.getId()), ErrorCode.PARAMS_ERROR, + "当前传送的订单id不正确或不属于当前用户"); + Long errandId = orders.getErrandId(); + if (errandId != null) { + Errand errand = errandService.getById(errandId); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ErrandIncome::getOrderId, orderId); + ErrandIncome errandIncome = errandIncomeService.getOne(queryWrapper); + errandIncome.setState(1); // 收入已结算 + boolean update = errandIncomeService.updateById(errandIncome); + ThrowUtils.throwIf(!update, ErrorCode.OPERATION_ERROR,"修改跑腿收入失败"); + BigDecimal totalPrice = errand.getTotalPrice(); + BigDecimal income = errandIncome.getIncome(); + totalPrice = totalPrice.add(income); + errand.setTotalPrice(totalPrice); + boolean update1 = errandService.updateById(errand); + ThrowUtils.throwIf(!update1, ErrorCode.OPERATION_ERROR, "修改跑腿总金额失败"); + + ErrandBill errandBill = new ErrandBill(); + errandBill.setOrderId(orderId); + errandBill.setErrandState(errandIncome.getState()); + errandBill.setIncome(errandIncome.getIncome()); + errandBill.setUsername(loginUser.getUsername()); + errandBill.setOrderStartTime(orders.getCreateTime()); + boolean save = billService.save(errandBill); + ThrowUtils.throwIf(!save, ErrorCode.OPERATION_ERROR, "添加跑腿账单失败"); + } + orders.setState(5); + boolean update = ordersService.updateById(orders); + ThrowUtils.throwIf(!update, ErrorCode.OPERATION_ERROR, "修改订单状态失败"); return ResultUtils.success(true); } + @PostMapping("/list/errand") + @AuthCheck(mustRole = UserConstant.ERRAND_ROLE) + public BaseResponse> listOrderErrandVO (HttpServletRequest request) { + Errand loginErrand = errandService.getLoginErrand(request); + Long errandId = loginErrand.getId(); + List errandOrders = errandOrderService.list(Wrappers.lambdaQuery() + .eq(ErrandOrder::getErrandId, errandId) + .eq(ErrandOrder::getErrandState, 4)); + List orderIds = errandOrders.stream() + .map(ErrandOrder::getOrderId) + .collect(Collectors.toList()); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(Orders::getId, orderIds); + List ordersList = ordersService.list(wrapper); + List listOrderErrandVO = ordersService.getListOrderErrandVO(ordersList); + return ResultUtils.success(listOrderErrandVO); + } + + @PostMapping("/list/status") + @AuthCheck(mustRole = UserConstant.DEFAULT_ROLE) + public BaseResponse> listOrderStatus (HttpServletRequest request) { + List liststatus = ordersService.liststatus(request); + return ResultUtils.success(liststatus); + } + + @PostMapping("/list/numnber") + @AuthCheck(mustRole = UserConstant.ADMIN_ROLE) + public BaseResponse> getPickUpNum () { + List ordernumbers = ordersService.getOrdernumber(); + ThrowUtils.throwIf(ordernumbers == null, ErrorCode.OPERATION_ERROR, "获取单量失败"); + return ResultUtils.success(ordernumbers); + } + + @PostMapping("/download/errand") + public void downloadByErrand(@RequestBody OrderQueryRequest orderQueryRequest, HttpServletResponse response) throws IOException { + String startTime = orderQueryRequest.getStartTime(); + String endTime = orderQueryRequest.getEndTime(); + Long errandId = orderQueryRequest.getErrandId(); + 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("errandId", errandId); + wrapper.orderBy(SqlUtils.validSortField(sortField), sortOrder.equals(CommonConstant.SORT_ORDER_ASC), + sortField); + List ordersList = ordersService.list(wrapper); + Collection orderIds = ordersList.stream() + .map(Orders::getId) + .collect(Collectors.toList()); + //获取errandState + LambdaQueryWrapper wrapper1 = new LambdaQueryWrapper<>(); + wrapper1.in(ErrandOrder::getOrderId, orderIds); + List errandOrders = errandOrderService.list(wrapper1); + //先将errandOrder数据变成MAP,提高查询效率 + Map map = errandOrders.stream() + .collect(Collectors.toMap(ErrandOrder::getOrderId, ErrandOrder::getErrandState)); + //获取跑腿收入 + LambdaQueryWrapper wrapper2 = new LambdaQueryWrapper<>(); + wrapper2.in(ErrandIncome::getOrderId, orderIds); + List errandIncomes = errandIncomeService.list(wrapper2); + Map decimalMap = errandIncomes.stream() + .collect(Collectors.toMap(ErrandIncome::getOrderId, ErrandIncome::getIncome)); + Collection excelByErrandVOS = ordersList.stream() + .map(orders -> { + OrdersExcelByErrandVO ordersExcelByErrandVO = new OrdersExcelByErrandVO(); + BeanUtils.copyProperties(orders, ordersExcelByErrandVO); + //改变订单支付状态 + String stateText = ExcelUtils.getStateText(orders.getState()); + ordersExcelByErrandVO.setState(stateText); + //改变跑腿订单状态 + String errandStateText = ExcelUtils.getErrandStateText(map.getOrDefault(orders.getId(), 0)); + ordersExcelByErrandVO.setErrandState(errandStateText); + ordersExcelByErrandVO.setErrandIncome(decimalMap.getOrDefault(orders.getId(), new BigDecimal("0.00"))); + return ordersExcelByErrandVO; + }).collect(Collectors.toList()); + // 设置导出名称 + ExcelUtils.setExcelResponseProp(response, "跑腿订单信息"); + // 获取输出流名称 + try (OutputStream outputStream = response.getOutputStream()) { + EasyExcel.write(outputStream, OrdersExcelByErrandVO.class) + .sheet("订单数据") + .doWrite(excelByErrandVOS); + response.flushBuffer(); + } catch (Exception e) { + log.error("Excel 导出失败", e); + } + } + + @PostMapping("/count/errand") + @AuthCheck(mustRole = UserConstant.ADMIN_ROLE) + public BaseResponse countErrand (@RequestBody OrdersCountByErrandRequest errandRequest) { + if (errandRequest == null) { + throw new BusinessException(ErrorCode.PARAMS_ERROR); + } + Long errandId = errandRequest.getErrandId(); + Integer state = errandRequest.getState(); + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ErrandIncome::getErrandId, errandId); + queryWrapper.eq(ObjectUtils.isNotEmpty(state), ErrandIncome::getState, state); + List errandIncomes = errandIncomeService.list(queryWrapper); + // 计算 income 总和 + BigDecimal totalIncome = errandIncomes.stream() + .map(ErrandIncome::getIncome) // 获取 income + .filter(Objects::nonNull) // 过滤掉 null 值 + .reduce(BigDecimal.ZERO, BigDecimal::add); // 求和 + return ResultUtils.success(totalIncome); + } 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); + List orderList = ordersService.list(queryWrapper); BigDecimal money = new BigDecimal("0"); - for (Orders order : ordertList) { + for (Orders order : orderList) { money = money.add(order.getTotalPrice()); } String strMoney = String.valueOf(money); diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/OssController.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/OssController.java index b78e04a..3ecb6c5 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/OssController.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/OssController.java @@ -10,7 +10,7 @@ import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.annotation.Resource; +import jakarta.annotation.Resource; @Api(tags = "阿里云文件管理") @RestController diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/PrivateChatController.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/PrivateChatController.java index c39c300..100e003 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/PrivateChatController.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/PrivateChatController.java @@ -5,7 +5,7 @@ import com.bsz.school_send_back_end.service.WebsocketService; import org.springframework.messaging.handler.annotation.MessageMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; +import jakarta.annotation.Resource; @RestController public class PrivateChatController { diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/PrivateMessageController.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/PrivateMessageController.java index 5419581..cf4cc80 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/PrivateMessageController.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/PrivateMessageController.java @@ -14,7 +14,7 @@ import com.bsz.school_send_back_end.service.UserService; import org.springframework.messaging.simp.SimpMessagingTemplate; import org.springframework.web.bind.annotation.*; -import javax.annotation.Resource; +import jakarta.annotation.Resource; import java.util.List; import java.util.stream.Collectors; diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/SpecificationsController.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/SpecificationsController.java index ab9b3a4..58e88dd 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/SpecificationsController.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/SpecificationsController.java @@ -32,8 +32,8 @@ 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 jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletRequest; import java.util.List; @Slf4j diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/SystemInfoController.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/SystemInfoController.java index 18ca79b..d0c1bfd 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/SystemInfoController.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/SystemInfoController.java @@ -7,8 +7,8 @@ import com.bsz.school_send_back_end.common.ResultUtils; import com.bsz.school_send_back_end.exception.BusinessException; import com.bsz.school_send_back_end.exception.ThrowUtils; import com.bsz.school_send_back_end.model.domain.Systeminfo; +import com.bsz.school_send_back_end.model.dto.CommonRequest; import com.bsz.school_send_back_end.model.dto.system.SystemAddRequest; -import com.bsz.school_send_back_end.model.dto.system.SystemDeleteRequest; import com.bsz.school_send_back_end.model.dto.system.SystemQueryRequest; import com.bsz.school_send_back_end.service.SysteminfoService; import lombok.extern.slf4j.Slf4j; @@ -18,7 +18,7 @@ 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 jakarta.annotation.Resource; import java.util.List; @RestController @@ -49,12 +49,12 @@ public class SystemInfoController { * 删除功能 */ @PostMapping("/delete") - public BaseResponse deleteInfo (@RequestBody SystemDeleteRequest deleteRequest) { - if (deleteRequest == null) { + public BaseResponse deleteInfo (@RequestBody CommonRequest commonRequest) { + if (commonRequest == null) { throw new BusinessException(ErrorCode.PARAMS_ERROR); } - boolean remove = systeminfoService.removeById(deleteRequest.getId()); + boolean remove = systeminfoService.removeById(commonRequest.getId()); ThrowUtils.throwIf(!remove, ErrorCode.OPERATION_ERROR, "添加失败"); return ResultUtils.success(true,"删除成功"); } diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/SystemLogController.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/SystemLogController.java index ee3ffca..5701c9f 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/SystemLogController.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/SystemLogController.java @@ -23,7 +23,7 @@ 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 jakarta.annotation.Resource; import java.util.List; import java.util.stream.Collectors; diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/TestAlipayController.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/TestAlipayController.java index 9b8bb9d..4dc86d9 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/TestAlipayController.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/TestAlipayController.java @@ -10,6 +10,7 @@ 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.baomidou.mybatisplus.core.toolkit.Wrappers; import com.bsz.school_send_back_end.common.BaseResponse; import com.bsz.school_send_back_end.common.ErrorCode; import com.bsz.school_send_back_end.common.ResultUtils; @@ -17,14 +18,13 @@ import com.bsz.school_send_back_end.config.AlipayClients; import com.bsz.school_send_back_end.contant.RedisKeyConstant; import com.bsz.school_send_back_end.exception.BusinessException; import com.bsz.school_send_back_end.exception.ThrowUtils; +import com.bsz.school_send_back_end.listener.RabbitMQSender; import com.bsz.school_send_back_end.mapper.UserMapper; +import com.bsz.school_send_back_end.model.domain.OrderRefunds; import com.bsz.school_send_back_end.model.domain.Orders; import com.bsz.school_send_back_end.model.domain.User; import com.bsz.school_send_back_end.model.vo.UserVO; -import com.bsz.school_send_back_end.service.AliPayService; -import com.bsz.school_send_back_end.service.OrdersService; -import com.bsz.school_send_back_end.service.UserService; -import com.bsz.school_send_back_end.service.WebsocketService; +import com.bsz.school_send_back_end.service.*; import com.bsz.school_send_back_end.utils.RandomNumberGenerator; import com.bsz.school_send_back_end.utils.UniqueNumberGenerator; import lombok.extern.slf4j.Slf4j; @@ -34,9 +34,9 @@ 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 jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import java.io.PrintWriter; import java.util.*; @@ -57,6 +57,12 @@ public class TestAlipayController { @Resource private WebsocketService websocketService; + @Resource + private OrderRefundsService refundsService; + + @Resource + private RabbitMQSender rabbitMQSender; + @@ -77,7 +83,7 @@ public class TestAlipayController { private static String authToken; - public static final String NOURL = "http://39.101.78.35:6448/api/Alipay/notifyUrl"; + public static final String NOURL = "https://xiaokuaisong.shop/api/Alipay/notifyUrl"; /** * 解析code获取open_id和token @@ -85,28 +91,36 @@ public class TestAlipayController { * @throws AlipayApiException 支付宝api异常 */ @GetMapping("/parseCode") - public BaseResponse login(String authcode, long severId, HttpServletRequest req) throws AlipayApiException { - AlipayConfig alipayConfig = choiceServer(severId); + public BaseResponse login(String authcode, HttpServletRequest req) throws AlipayApiException { + AlipayConfig alipayConfig = new AlipayConfig(); + alipayConfig.setServerUrl("https://openapi.alipay.com/gateway.do"); + alipayConfig.setAppId(appId); + alipayConfig.setPrivateKey(appPrivateKey); + alipayConfig.setFormat("json"); + alipayConfig.setAlipayPublicKey(PublicKey); + alipayConfig.setCharset("UTF-8"); + alipayConfig.setSignType("RSA2"); + log.info("网关地址:" + alipayConfig.getServerUrl()); 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());打印所有响应 + System.out.println( "AlipaySystemOauthTokenResponse返回数据:" + response.getBody()); //打印所有响应 authToken = response.getAccessToken(); if (!response.isSuccess()) { return ResultUtils.error(ErrorCode.PARAMS_ERROR); } AlipayUserInfoShareRequest request1 = new AlipayUserInfoShareRequest(); AlipayUserInfoShareResponse response1 = alipayClient.execute(request1, authToken); - + System.out.println( "AlipayUserInfoShareResponse返回数据:" + response1.getBody()); User oid = userMapper.selectOne(new LambdaQueryWrapper().eq(User::getOpenId, response.getOpenId())); UserVO userVO = new UserVO(); 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.setUsername(StringUtils.isAnyBlank(response1.getNickName()) ? "RandomName" + randomNumberGenerator.generateRandomNumber() : response1.getNickName()); user.setUserPassword("123456"); user.setUserAccount("yonghu" + randomNumberGenerator.generateRandomNumber()); user.setAvatarUrl(StringUtils.isAnyBlank(response1.getAvatar()) ? "https://tfs.alipayobjects.com/images/partner/ATuihpR50zu7UAAAAAAAAAAAAADtl2AA" : response1.getAvatar()); @@ -142,7 +156,7 @@ public class TestAlipayController { throw new BusinessException(ErrorCode.NO_AUTH, "你不是该订单用户!"); } - String tradeNo = aliPayService.createPayment(String.valueOf(orderId), miniOpenId, order.getTotalPrice(), order.getBusinessId()); + String tradeNo = aliPayService.createPayment(String.valueOf(orderId), miniOpenId, order.getTotalPrice()); log.info("tradeNo:" + tradeNo); return ResultUtils.success(tradeNo); } @@ -170,7 +184,9 @@ public class TestAlipayController { boolean update = ordersService.updateById(orders); ThrowUtils.throwIf(!update, ErrorCode.OPERATION_ERROR, "修改订单状态失败"); AlipayTradeCloseResponse response = clients.alipayClient().execute(request); - + if (!response.isSuccess()) { + throw new BusinessException(ErrorCode.OPERATION_ERROR, "支付宝修改订单失败"); + } //这里应该写进日志 log.info("订单已取消"); @@ -178,6 +194,7 @@ public class TestAlipayController { } @GetMapping("/test/refund") + @Transactional(rollbackFor = Exception.class) public String test_refund(String orderNo) throws AlipayApiException { AlipayClients clients = new AlipayClients(); AlipayTradeRefundRequest request = new AlipayTradeRefundRequest(); @@ -190,7 +207,7 @@ public class TestAlipayController { model.setOutTradeNo(orderNo); model.setRefundAmount(String.valueOf(orders.getTotalPrice())); //退款请求单号 要求唯一 需改 - String number = UniqueNumberGenerator.generateNumber(orders.getBusinessId()); + String number = UniqueNumberGenerator.generateNumber(); model.setOutRequestNo(number); log.info("outRequestNo:" + number); request.setBizModel(model); @@ -199,9 +216,18 @@ public class TestAlipayController { boolean update = ordersService.updateById(orders); ThrowUtils.throwIf(!update, ErrorCode.OPERATION_ERROR, "修改订单状态失败"); log.info("orderState:" + orders.getState()); + OrderRefunds refunds = refundsService.getOne(Wrappers.lambdaQuery() + .eq(OrderRefunds::getOrderId, orders.getId())); + ThrowUtils.throwIf(refunds == null, ErrorCode.OPERATION_ERROR, "没有退款"); + refunds.setStatus(1); // 1-已同意 + boolean updateById = refundsService.updateById(refunds); + ThrowUtils.throwIf(!updateById, ErrorCode.OPERATION_ERROR, "修改退款单失败"); AlipayTradeRefundResponse response = clients.alipayClient().execute(request); - log.info("退款成功"); String body = response.getBody(); + if (!response.isSuccess()) { + throw new BusinessException(ErrorCode.OPERATION_ERROR, "支付宝退款失败"); + } + log.info("退款成功"); return body; } @@ -218,6 +244,9 @@ public class TestAlipayController { AlipayTradeQueryResponse response = clients.alipayClient().execute(request); String body = response.getBody(); + if (!response.isSuccess()) { + throw new BusinessException(ErrorCode.OPERATION_ERROR, "支付宝查询订单失败"); + } return body; } @@ -235,12 +264,16 @@ public class TestAlipayController { QueryWrapper ordersQueryWrapper = new QueryWrapper<>(); ordersQueryWrapper.eq("pickupCode", out_trade_no); Orders orders = ordersService.getOne(ordersQueryWrapper); + if (orders.getPickupMethod() == 2) { + rabbitMQSender.sendCreateDeliveryOrderMessage(orders.getId()); + } orders.setState(1); Date date = new Date(); orders.setUpdateTime(date); boolean update = ordersService.updateById(orders); - log.info("orders:" + orders); + log.info("修改前orders:" + orders); ThrowUtils.throwIf(!update, ErrorCode.OPERATION_ERROR, "修改订单状态失败"); + log.info("修改后orders:" + orders); //TODO 商家通知 websocketService.sendOrderMessage(orders); @@ -281,34 +314,4 @@ public class TestAlipayController { } } - private AlipayConfig choiceServer(long serverId) { - String testPrivateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCc1rWOaCHl7KnDDMctWIgFJqerq9ZU8QsxSA+wQC4nrTfoQVSVZn8fDNosilCHda7yv910A9aJYqZKx0+NOXY9YvMbKYifWtO8TtzAQ9Q0EQXce85gnVQ3yn9evE1MVwfmMIiXJ2jx/dmGrxuADrLcsNB/U4xsusKcNQaA76vALtAYTnKwOODaDt5Qd2OC25PRcGtKupKIbir/f62tNquBkCX+Z5URBpy0rZY2hCu30v3uPv8I3OlpxegFwNDHpKMIY3+wjQtqsogQTn20E5wzeV3VNabNxbORq6B6nh8mvxlo9q14XvmMJDPUoWiJgyUUpaAPZFWSpRCrLvWQY/klAgMBAAECggEAZJ/Ahig7L2gClriZBXfadOuTAapS7dZkpu6j2iGjOyOATgu0N9I11vcI9zCab/5KC0abzzYzK5vWMv3jBSmLueDFNnUUSaEdXaB/Mv+RowIU75ujEgt+n/jUdTR8p3DjCYWz7L6FL1T9fdLU4vkLOlpauoYg/xVnjI7cqFacq8SWr3jiGj/I31O18y02/eDiyAb5RMlSlNGnzvDuRwJ3h2Sn1u7znbMCi6CydG3hx+I0GE2iJqVPymc1f0T0vm7Jy3l/zL84oNKLTgPCqG9k+eriC7RaMkbvPQFjWCDCuWxgYM2pi1L9ZDG+FkReTFsZw6r/TWc4sl2xtj3GDSrHYQKBgQD1NwFBMQwsUQ/aJP63R0gILWSFR0+yQ314vfRRVKoZTujbQr7RBAzgQff97DirINIxXCBeV0zifpc2IaAPaY29YjDnQU+xGqIO91EWPjMkQ6XUvGGesKnKDYkA5yBMyD3/BH8BwJruidW2DwtC2rGTW1hatkXNtYccEI79/00UOQKBgQCjvKIySZdRolOYUfSPHHipOygWClFy1DlI54XDnj0gRBoOrFkeqrXr+G8dYeXP6UnMqLWX8V3RuEJB8klwKGLkMtUWdqMQUFM5yvjuX2d1Y9R2ESw0ch70B/6aItMVv6aN4GjGwCJWD1XD54IpWxtAKJsUxbDiN+343cVqSQQETQKBgQDq9JBcMa3TTLyerbHuVPt88lmNpr2DNk2kAoZ142S0qTpO1M5XIcVgn3UKNWw69FDSgM529rkxkFA8ys0910q7erkW7Cp6rOU459onMOP5zGO5yeLTlbyqYHu0hMEbMQbOMjWrrSwGgcVnE1Ub8sYRRoYLLPkHWPcjee45C4WEaQKBgHkUUeDb+JD+d9DIsg9uH3ANdcwunyJJ+36E7q7EgjEtCxPUsSZzWIoBsbFJppbDzbYRABA3BYjDOAPqNhJBWzeiu16cJmM28wRmqwQi+q+dPgx9EHJL/cW5b7XtkKihi3mY/AIVLI71UhfHR8JrQ9CC9oM62V2/vDNvU8AP9G91AoGANdvRubukeWgvWryBTaPuUTpjkP1mOuJuHiHEW5/XePsURwS6gGP/qJ9bSbhYhQ6iDaMOQ8vahfYM3Q4jvDxgcKS/N1fxFTohcN4bVdvekq62YdTNqcGhNzaxMNboFZYt2dPeDm8PRRMP+abddrS2NqgVSOC3Ru5Kh9iRIs2LOgE="; - String testAlipayPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3JKMG3clg/1MqewlIK/koEhiQiSLagckb/2/Dyvg+rJ2snGiAgzNvhvvc1GdVC+Xnn/P+U+2tAytyuvbOuhmGgNZjeObczJXpo/0D6LBdYDrg4PVMDxpStCxLUpaShHbc/l/IquaorBwd94UJxIPAbUQkUBCbo94mGbhDX+yU4FQ6k1yeUtn03jvZ3AY0BEHpenCxWKgr5S/CUAYEitMbi/r7extBy6f4FCR120NM7VaNEK1xpHbGHo6rDpyiAOR1lWFuiqOJ1hv14UL/SfOLlzvUZiiPysIxdNjycZyiyRvFRHP3n8GBAaJDm9vVHwDfgQ5s3Ig2ggBeYXkFHZqWwIDAQAB"; - - 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.setFormat("json"); - alipayConfig.setAlipayPublicKey(testAlipayPublicKey); - alipayConfig.setCharset("UTF-8"); - alipayConfig.setSignType("RSA2"); - } - else { - throw new BusinessException(ErrorCode.PARAMS_ERROR,"网关选择错误"); - } - return alipayConfig; - } } \ No newline at end of file diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/UserController.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/UserController.java index 62ff084..f15be9b 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/UserController.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/UserController.java @@ -21,8 +21,8 @@ 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 jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletRequest; import java.util.Date; import java.util.List; import java.util.stream.Collectors; @@ -82,12 +82,13 @@ public class UserController { String userAccount = userLoginRequest.getUserAccount(); String userPassword = userLoginRequest.getUserPassword(); + String appName = userLoginRequest.getAppName(); if (StringUtils.isAllBlank(userAccount, userPassword)){ throw new BusinessException(ErrorCode.PARAMS_ERROR, "请求参数为空"); } - String message = userService.userLogin(userAccount, userPassword, request); + String message = userService.userLogin(userAccount, userPassword, appName, request); return ResultUtils.success(message); } @@ -285,7 +286,7 @@ public class UserController { */ @GetMapping("/getById") @AuthCheck(mustRole = UserConstant.ADMIN_ROLE) - public BaseResponse getUserById(long id, HttpServletRequest request) { + public BaseResponse getUserById(@RequestParam long id) { if (id <= 0) { throw new BusinessException(ErrorCode.PARAMS_ERROR); } diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/UserRatingController.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/UserRatingController.java index 6c87f00..607c170 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/UserRatingController.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/controller/UserRatingController.java @@ -24,8 +24,8 @@ 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 jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletRequest; import java.util.List; @RestController @@ -46,7 +46,6 @@ public class UserRatingController { * @return 是否添加成功 */ @PostMapping("/add") - @AuthCheck(mustRole = UserConstant.DEFAULT_ROLE) public BaseResponse addRating (@RequestBody UserRatingAddRequest userRatingAddRequest, HttpServletRequest request) { if (userRatingAddRequest == null) { throw new BusinessException(ErrorCode.PARAMS_ERROR); @@ -66,18 +65,11 @@ public class UserRatingController { * @return 是否删除成功 */ @PostMapping("/delete") - @AuthCheck(mustRole = UserConstant.DEFAULT_ROLE) - public BaseResponse deleteUserRating (@RequestBody CommonRequest commonRequest, HttpServletRequest request) { + public BaseResponse deleteUserRating (@RequestBody CommonRequest commonRequest) { if (commonRequest == null) { throw new BusinessException(ErrorCode.PARAMS_ERROR); } - Long id = commonRequest.getId(); - User loginUser = userService.getLoginUser(request); - Long loginUserId = loginUser.getId(); - UserRating rating = userRatingService.getOne(Wrappers.lambdaQuery().eq(UserRating::getId, id)); - ThrowUtils.throwIf(!rating.getUserId().equals(loginUserId), ErrorCode.OPERATION_ERROR, - "当前评分不属于该用户"); - boolean remove = userRatingService.removeById(id); + boolean remove = userRatingService.removeById(commonRequest.getId()); ThrowUtils.throwIf(!remove, ErrorCode.SYSTEM_ERROR, "删除失败"); return ResultUtils.success(true); @@ -89,26 +81,27 @@ public class UserRatingController { * @return 评分列表 */ @PostMapping("/list") - public BaseResponse> listUserRating (HttpServletRequest request) { + public BaseResponse> listUserRating (@RequestBody CommonRequest commonRequest, HttpServletRequest request) { + if (commonRequest == null) { + throw new BusinessException(ErrorCode.PARAMS_ERROR); + } + Long ratedEntityType = commonRequest.getId(); User loginUser = userService.getLoginUser(request); Long userId = loginUser.getId(); - List list = userRatingService.list(Wrappers.lambdaQuery().eq(UserRating::getUserId, userId)); + List list = userRatingService.list(Wrappers.lambdaQuery() + .eq(UserRating::getUserId, userId).eq(UserRating::getRatedEntityType, ratedEntityType) ); return ResultUtils.success(list); } /** - * 查看商家评分 + * 展示当前用户评分 + * @param request 当前用户 * @return 评分列表 */ - @PostMapping("/list/business") - public BaseResponse> listUserRatingByBusiness (@RequestBody CommonRequest commonRequest) { - if (commonRequest == null) { - throw new BusinessException(ErrorCode.PARAMS_ERROR); - } - Long businessId = commonRequest.getId(); - List list = userRatingService.list(Wrappers.lambdaQuery() - .eq(UserRating::getBusinessId, businessId)); - return ResultUtils.success(list); + @PostMapping("/list/user") + public BaseResponse> listUserRatingByUser (HttpServletRequest request) { + List userRatings = userRatingService.listUserRatingByUser(request); + return ResultUtils.success(userRatings); } @PostMapping("/business/reply") @@ -128,4 +121,16 @@ public class UserRatingController { ThrowUtils.throwIf(!update, ErrorCode.OPERATION_ERROR); return ResultUtils.success(true); } + + @PostMapping("/list/business") + public BaseResponse> listUserRatingByBusiness (@RequestBody CommonRequest commonRequest) { + if (commonRequest == null) { + throw new BusinessException(ErrorCode.PARAMS_ERROR); + } + Long businessId = commonRequest.getId(); + + List list = userRatingService.list(Wrappers.lambdaQuery() + .eq(UserRating::getRatedEntityId, businessId)); + return ResultUtils.success(list); + } } diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/manager/SessionManager.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/manager/SessionManager.java index 7d56da1..02f7ab0 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/manager/SessionManager.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/manager/SessionManager.java @@ -10,12 +10,12 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Lazy; import org.springframework.data.redis.core.StringRedisTemplate; -import org.springframework.session.data.redis.RedisIndexedSessionRepository; +import org.springframework.session.data.redis.RedisSessionRepository; import org.springframework.stereotype.Component; -import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpSession; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpSession; import java.util.concurrent.TimeUnit; @@ -29,7 +29,7 @@ public class SessionManager { private StringRedisTemplate stringRedisTemplate; @Resource - private RedisIndexedSessionRepository sessionRepository; + private RedisSessionRepository sessionRepository; // 正确,类型匹配 @Value("${spring.session.timeout}") private long sessionTimeout; @@ -41,7 +41,7 @@ public class SessionManager { /** * 登录 */ - public String login (User user, HttpServletRequest request) { + public String login (User user, String appName, HttpServletRequest request) { String message = "登录成功"; String ipAddress = NetUtils.getIpAddress(request); String oldSessionId = this.checkOtherLogin(user.getId(), ipAddress, request); @@ -54,7 +54,8 @@ public class SessionManager { UserLoginRedisInfo build = UserLoginRedisInfo.builder() .user(user) - .ip(ipAddress). + .ip(ipAddress) + .appName(appName). build(); this.setLoginAttribute(request, USER_LOGIN_STATE, build); return message; @@ -135,6 +136,7 @@ public class SessionManager { String userExtraInfoKey = RedisKeyUtils.getUserExtraInfoKey(user.getId()); stringRedisTemplate.opsForHash().put(userExtraInfoKey, SESSION_ID, sessionId); stringRedisTemplate.opsForHash().put(userExtraInfoKey, IP, userLoginRedisInfo.getIp()); + stringRedisTemplate.opsForHash().put(userExtraInfoKey, APPNAME,userLoginRedisInfo.getAppName()); stringRedisTemplate.expire(userExtraInfoKey, sessionTimeout, TimeUnit.SECONDS); } else { diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/BusinessAuthMapper.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/BusinessAuthMapper.java index 5df56b5..d6ac042 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/BusinessAuthMapper.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/BusinessAuthMapper.java @@ -4,10 +4,7 @@ import com.bsz.school_send_back_end.model.domain.BusinessAuth; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** -* @author Lenovo -* @description 针对表【business_auth(商家认证)】的数据库操作Mapper -* @createDate 2024-06-24 21:01:17 -* @Entity com.bsz.school_send_back_end.model.domain.BusinessAuth +* @author xy */ public interface BusinessAuthMapper extends BaseMapper { diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/BusinessLevelMapper.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/BusinessLevelMapper.java index f1dc0e2..93aeaaa 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/BusinessLevelMapper.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/BusinessLevelMapper.java @@ -7,10 +7,7 @@ import org.apache.ibatis.annotations.Select; import java.util.List; /** -* @author pc -* @description 针对表【business_level】的数据库操作Mapper -* @createDate 2024-11-22 14:02:11 -* @Entity com.bsz.school_send_back_end.model.domain.BusinessLevel +* @author xy */ public interface BusinessLevelMapper extends BaseMapper { } diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/BusinessMapper.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/BusinessMapper.java index 88074ed..b532edc 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/BusinessMapper.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/BusinessMapper.java @@ -4,10 +4,7 @@ import com.bsz.school_send_back_end.model.domain.Business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** -* @author Lenovo -* @description 针对表【business(商家)】的数据库操作Mapper -* @createDate 2024-06-24 21:01:17 -* @Entity com.bsz.school_send_back_end.model.domain.Business +* @author xy */ public interface BusinessMapper extends BaseMapper { diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/CartMapper.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/CartMapper.java index 5fa912f..13264c2 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/CartMapper.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/CartMapper.java @@ -4,10 +4,7 @@ import com.bsz.school_send_back_end.model.domain.Cart; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** -* @author pc -* @description 针对表【cart(购物车表)】的数据库操作Mapper -* @createDate 2024-08-13 13:59:13 -* @Entity com.bsz.school_send_back_end.model.domain.Cart +* @author xy */ public interface CartMapper extends BaseMapper { diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/CategoryMapper.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/CategoryMapper.java index 55753f0..5e9212b 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/CategoryMapper.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/CategoryMapper.java @@ -4,10 +4,7 @@ import com.bsz.school_send_back_end.model.domain.Category; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** -* @author pc -* @description 针对表【category(分类表)】的数据库操作Mapper -* @createDate 2024-09-01 18:09:04 -* @Entity com.bsz.school_send_back_end.model.domain.Category +* @author xy */ public interface CategoryMapper extends BaseMapper { diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/CollectMapper.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/CollectMapper.java index 0dfd594..a9d598c 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/CollectMapper.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/CollectMapper.java @@ -4,10 +4,7 @@ import com.bsz.school_send_back_end.model.domain.Collect; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** -* @author pc -* @description 针对表【collect】的数据库操作Mapper -* @createDate 2024-11-12 19:19:50 -* @Entity com.bsz.school_send_back_end.model.domain.Collect +* @author xy */ public interface CollectMapper extends BaseMapper { diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/DishesMapper.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/DishesMapper.java index d549412..5902032 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/DishesMapper.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/DishesMapper.java @@ -5,10 +5,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.bsz.school_send_back_end.model.domain.Dishes; /** -* @author pc -* @description 针对表【dishes(菜品表)】的数据库操作Mapper -* @createDate 2024-06-29 17:23:31 -* @Entity com.bsz.school_send_back_end.model.domain.Dishes +* @author xy */ public interface DishesMapper extends BaseMapper { diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/OrderDetailsMapper.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/OrderDetailsMapper.java index a14c736..db9fb3b 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/OrderDetailsMapper.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/OrderDetailsMapper.java @@ -4,10 +4,7 @@ import com.bsz.school_send_back_end.model.domain.OrderDetails; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** -* @author Lenovo -* @description 针对表【order_details(订单详情表)】的数据库操作Mapper -* @createDate 2024-09-12 12:31:48 -* @Entity com.bsz.school_send_back_end.model.domain.OrderDetails +* @author xy */ public interface OrderDetailsMapper extends BaseMapper { diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/OrdersMapper.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/OrdersMapper.java index 0dc71ea..9ca72ca 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/OrdersMapper.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/OrdersMapper.java @@ -4,10 +4,7 @@ import com.bsz.school_send_back_end.model.domain.Orders; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** -* @author Lenovo -* @description 针对表【orders(订单表)】的数据库操作Mapper -* @createDate 2024-09-12 12:31:49 -* @Entity com.bsz.school_send_back_end.model.domain.Orders +* @author xy */ public interface OrdersMapper extends BaseMapper { diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/PrivateMessageMapper.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/PrivateMessageMapper.java index 3893233..4fa4859 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/PrivateMessageMapper.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/PrivateMessageMapper.java @@ -4,10 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.bsz.school_send_back_end.model.domain.PrivateMessage; /** -* @author pc -* @description 针对表【private_message】的数据库操作Mapper -* @createDate 2024-11-10 15:16:02 -* @Entity com.bsz.school_send_back_end.model.domain.PrivateMessage +* @author xy */ public interface PrivateMessageMapper extends BaseMapper { diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/SpecificationsDishesMapper.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/SpecificationsDishesMapper.java index 3816f8a..8258790 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/SpecificationsDishesMapper.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/SpecificationsDishesMapper.java @@ -4,10 +4,7 @@ import com.bsz.school_send_back_end.model.domain.SpecificationsDishes; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** -* @author pc -* @description 针对表【specifications_dishes(菜品和规格的中间表)】的数据库操作Mapper -* @createDate 2024-06-29 21:18:25 -* @Entity generator.domain.SpecificationsDishes +* @author xy */ public interface SpecificationsDishesMapper extends BaseMapper { diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/SpecificationsMapper.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/SpecificationsMapper.java index 8bdd725..fd69693 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/SpecificationsMapper.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/SpecificationsMapper.java @@ -4,10 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.bsz.school_send_back_end.model.domain.Specifications; /** -* @author pc -* @description 针对表【specifications(规格表)】的数据库操作Mapper -* @createDate 2024-06-29 21:10:34 -* @Entity com.bsz.school_send_back_end.model.domain.Specifications +* @author xy */ public interface SpecificationsMapper extends BaseMapper { diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/SysteminfoMapper.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/SysteminfoMapper.java index 75b7f70..f916520 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/SysteminfoMapper.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/SysteminfoMapper.java @@ -4,10 +4,7 @@ import com.bsz.school_send_back_end.model.domain.Systeminfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** -* @author pc -* @description 针对表【systeminfo(系统信息)】的数据库操作Mapper -* @createDate 2024-09-23 19:16:42 -* @Entity com.bsz.school_send_back_end.model.domain.Systeminfo +* @author xy */ public interface SysteminfoMapper extends BaseMapper { diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/SystemlogMapper.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/SystemlogMapper.java index aaae28c..8ca7f06 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/SystemlogMapper.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/SystemlogMapper.java @@ -4,10 +4,7 @@ import com.bsz.school_send_back_end.model.domain.Systemlog; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** -* @author pc -* @description 针对表【systemlog(系统信息)】的数据库操作Mapper -* @createDate 2024-09-25 15:40:09 -* @Entity com.bsz.school_send_back_end.model.domain.Systemlog +* @author xy */ public interface SystemlogMapper extends BaseMapper { diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/UserMapper.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/UserMapper.java index d1e5f00..2ee2d6c 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/UserMapper.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/UserMapper.java @@ -6,10 +6,7 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; /** -* @author bsz -* @description 针对表【user(用户)】的数据库操作Mapper -* @createDate 2024-05-09 20:59:59 -* +* @author xy */ @Mapper public interface UserMapper extends BaseMapper { diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/UserRatingMapper.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/UserRatingMapper.java index 60af032..d244c95 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/UserRatingMapper.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/mapper/UserRatingMapper.java @@ -6,15 +6,12 @@ import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; /** -* @author pc -* @description 针对表【user_rating(用户评分)】的数据库操作Mapper -* @createDate 2024-12-09 16:06:45 -* @Entity com.bsz.school_send_back_end.model.domain.UserRating +* @author xy */ public interface UserRatingMapper extends BaseMapper { // @Select("select avg(rating) from school_send.user_rating where businessId = #{businessId}") - @Select("select avg(rating) from xiaokuaisong.user_rating where businessId = #{businessId}") - Double findAvgByBusinessId(@Param("businessId") Long businessId); + @Select("select avg(rating) from xiaokuaisong.user_rating where ratedEntityId = #{ratedEntityId}") + Double findAvgByRatedEntityId(@Param("ratedEntityId") Long ratedEntityId); } diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/domain/Cart.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/domain/Cart.java index 1fbba73..8c0f9f8 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/domain/Cart.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/domain/Cart.java @@ -1,9 +1,6 @@ package com.bsz.school_send_back_end.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 com.baomidou.mybatisplus.annotation.*; import java.io.Serial; import java.io.Serializable; @@ -72,6 +69,7 @@ public class Cart implements Serializable { /** * 是否删除 */ + @TableLogic private Integer isDelete; @Serial diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/domain/OrderDetails.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/domain/OrderDetails.java index 8afc45d..f40a559 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/domain/OrderDetails.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/domain/OrderDetails.java @@ -1,9 +1,7 @@ package com.bsz.school_send_back_end.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 com.baomidou.mybatisplus.annotation.*; + import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; @@ -66,6 +64,7 @@ public class OrderDetails implements Serializable { /** * 是否删除 */ + @TableLogic private Integer isDelete; @TableField(exist = false) diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/domain/Orders.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/domain/Orders.java index 74101cb..087a9ed 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/domain/Orders.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/domain/Orders.java @@ -1,12 +1,14 @@ package com.bsz.school_send_back_end.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 com.baomidou.mybatisplus.annotation.*; + +import java.io.Serial; import java.io.Serializable; import java.math.BigDecimal; +import java.time.LocalDateTime; import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; /** @@ -47,6 +49,18 @@ public class Orders implements Serializable { */ private Long businessId; + /** + * 跑腿id + */ + @TableField(updateStrategy = FieldStrategy.IGNORED) + private Long errandId; + + /** + * 配送地址 + */ + @TableField(updateStrategy = FieldStrategy.IGNORED) + private String location; + /** * 订单实际总价 */ @@ -80,7 +94,8 @@ public class Orders implements Serializable { /** * 下单时间 */ - private Date createTime; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime createTime; /** * 支付时间 @@ -90,8 +105,10 @@ public class Orders implements Serializable { /** * 是否删除 */ + @TableLogic private Integer isDelete; @TableField(exist = false) + @Serial private static final long serialVersionUID = 1L; } \ No newline at end of file diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/domain/UserLoginRedisInfo.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/domain/UserLoginRedisInfo.java index fad3d1e..a4d9487 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/domain/UserLoginRedisInfo.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/domain/UserLoginRedisInfo.java @@ -7,7 +7,18 @@ import lombok.Data; @Builder public class UserLoginRedisInfo { + /** + * 登录用户 + */ private User user; + /** + * 登录ip + */ private String ip; + + /** + * 登录app + */ + private String appName; } diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/domain/UserRating.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/domain/UserRating.java index 318d50b..bc6c4c8 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/domain/UserRating.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/domain/UserRating.java @@ -24,7 +24,12 @@ public class UserRating implements Serializable { /** * 商家id */ - private Long businessId; + private Long ratedEntityId; + + /** + * 评分对象类型:0=商家,1=跑腿 + */ + private Integer ratedEntityType; /** * 用户id diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/PageRequest.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/PageRequest.java index 22f4768..519a894 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/PageRequest.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/PageRequest.java @@ -6,7 +6,6 @@ import lombok.Data; /** * 分页请求 * - * @author bsz */ @Data public class PageRequest { diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/file/UploadFileRequest.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/file/UploadFileRequest.java index 2023e95..30c54ef 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/file/UploadFileRequest.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/file/UploadFileRequest.java @@ -4,7 +4,6 @@ package com.bsz.school_send_back_end.model.dto.file; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import javax.validation.constraints.NotBlank; import java.io.Serial; import java.io.Serializable; @@ -14,7 +13,7 @@ public class UploadFileRequest implements Serializable { /** * 业务 */ - @Schema(description = "业务标识,例如:user_avatar,dishes,card,system") + @Schema(description = "业务标识,例如:user_avatar,dishes,card,system, takeout") private String biz; @Serial diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/order/OrderAddRequest.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/order/OrderAddRequest.java index 180b579..6ae2da0 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/order/OrderAddRequest.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/order/OrderAddRequest.java @@ -38,6 +38,11 @@ public class OrderAddRequest implements Serializable { */ private Integer pickupMethod; + /** + * 配送地址 + */ + private String location; + /** * 支付方式 */ diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/order/OrderQueryRequest.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/order/OrderQueryRequest.java index ee79033..08e2aae 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/order/OrderQueryRequest.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/order/OrderQueryRequest.java @@ -1,5 +1,7 @@ package com.bsz.school_send_back_end.model.dto.order; +import com.baomidou.mybatisplus.annotation.FieldStrategy; +import com.baomidou.mybatisplus.annotation.TableField; import com.bsz.school_send_back_end.model.dto.PageRequest; import lombok.Data; import lombok.EqualsAndHashCode; @@ -28,6 +30,11 @@ public class OrderQueryRequest extends PageRequest implements Serializable { */ private Long businessId; + /** + * 跑腿id + */ + private Long errandId = null; + /** * 取餐码 */ diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/specifications/SpecificationsQueryRequest.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/specifications/SpecificationsQueryRequest.java index 1c0af6f..272cc46 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/specifications/SpecificationsQueryRequest.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/specifications/SpecificationsQueryRequest.java @@ -6,7 +6,7 @@ import java.io.Serial; import java.io.Serializable; /** - * @author ASUS + * @author xy */ @Data public class SpecificationsQueryRequest implements Serializable { diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/system/SystemDeleteRequest.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/system/SystemDeleteRequest.java deleted file mode 100644 index f9e0c03..0000000 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/system/SystemDeleteRequest.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.bsz.school_send_back_end.model.dto.system; - -import lombok.Data; - -import java.io.Serial; -import java.io.Serializable; - -@Data -public class SystemDeleteRequest implements Serializable { - - /** - * id - */ - private Long id; - - @Serial - private static final long serialVersionUID = 8089646587314575974L; -} diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/user/UserAddRequest.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/user/UserAddRequest.java index c22f569..395bdc0 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/user/UserAddRequest.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/user/UserAddRequest.java @@ -10,7 +10,6 @@ import java.io.Serializable; * * 用户创建请求 * - * @author bsz */ @Data public class UserAddRequest implements Serializable { diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/user/UserDeleteRequest.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/user/UserDeleteRequest.java index 928f7ce..ec90e3b 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/user/UserDeleteRequest.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/user/UserDeleteRequest.java @@ -7,7 +7,6 @@ import java.io.Serializable; /** * 用户删除请求 * - * @author bsz */ @Data public class UserDeleteRequest implements Serializable { diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/user/UserLoginRequest.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/user/UserLoginRequest.java index 2e512c1..fa2a0a6 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/user/UserLoginRequest.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/user/UserLoginRequest.java @@ -21,5 +21,10 @@ public class UserLoginRequest implements Serializable { */ private String userPassword; + /** + * 登录app + */ + private String appName; + } diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/user/UserQueryRequest.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/user/UserQueryRequest.java index a8c77f1..aeb254f 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/user/UserQueryRequest.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/user/UserQueryRequest.java @@ -9,7 +9,6 @@ import java.io.Serializable; /** * 用户查询请求 - * @author 玄德 */ @Data @EqualsAndHashCode(callSuper = true) diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/user/UserSearchRequest.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/user/UserSearchRequest.java index abcdb25..80a47ee 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/user/UserSearchRequest.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/user/UserSearchRequest.java @@ -9,7 +9,6 @@ import java.util.Date; /** * 用户查询请求 * -* @author bsz */ @Data public class UserSearchRequest extends PageRequest implements Serializable { diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/user/UserUpdatePasswordRequest.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/user/UserUpdatePasswordRequest.java index ffaacfa..56f9110 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/user/UserUpdatePasswordRequest.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/user/UserUpdatePasswordRequest.java @@ -5,8 +5,7 @@ import lombok.Data; import java.io.Serializable; /** - * @author Shier - * CreateTime 2023/5/11 12:24 + * */ @Data public class UserUpdatePasswordRequest implements Serializable { diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/user/UserUpdateRequest.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/user/UserUpdateRequest.java index 32ee9ad..18584ae 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/user/UserUpdateRequest.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/user/UserUpdateRequest.java @@ -10,7 +10,6 @@ import java.util.Date; /** * 用户更新请求 * - * @author bsz */ @Data public class UserUpdateRequest implements Serializable { diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/userRating/UserRatingAddRequest.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/userRating/UserRatingAddRequest.java index b30f87b..e384931 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/userRating/UserRatingAddRequest.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/dto/userRating/UserRatingAddRequest.java @@ -10,7 +10,12 @@ public class UserRatingAddRequest implements Serializable { /** * 商家id */ - private Long businessId; + private Long ratedEntityId; + + /** + * 评分对象类型:1=商家,2=跑腿 + */ + private Integer ratedEntityType; /** * 用户id diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/enums/FileUploadBizEnum.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/enums/FileUploadBizEnum.java index 159fe3f..5b285a5 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/enums/FileUploadBizEnum.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/enums/FileUploadBizEnum.java @@ -15,7 +15,9 @@ public enum FileUploadBizEnum { CARD_IMAGE("证件", "card"), - SYSTEM_IMAGE("系统", "system"); + SYSTEM_IMAGE("系统", "system"), + + TAKEOUT_IMAGE("外卖", "takeout"); private final String text; diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/enums/UserRoleEnum.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/enums/UserRoleEnum.java index 14640b8..41e8d3c 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/enums/UserRoleEnum.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/enums/UserRoleEnum.java @@ -15,6 +15,7 @@ public enum UserRoleEnum { USER("用户", "user"), BUSINESS("商家", "business"), + ERRAND("跑腿", "errand"), ADMIN("管理员", "admin"), BOSS("Boss", "boss"), BAN("被封号", "ban"); diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/vo/BusinessVO.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/vo/BusinessVO.java index 04c46e0..9c4b8e1 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/vo/BusinessVO.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/vo/BusinessVO.java @@ -97,8 +97,8 @@ public class BusinessVO implements Serializable { private Integer level; /** - * 收藏id + * 是否被收藏 */ - private Long collectId; + private Boolean isCollected; } \ No newline at end of file diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/vo/CartVO.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/vo/CartVO.java index b7a443f..d3a1661 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/vo/CartVO.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/vo/CartVO.java @@ -2,6 +2,8 @@ package com.bsz.school_send_back_end.model.vo; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; +import com.bsz.school_send_back_end.model.domain.Business; +import com.bsz.school_send_back_end.model.domain.Dishes; import lombok.Data; import java.io.Serial; @@ -23,12 +25,12 @@ public class CartVO implements Serializable { /** * 商家id */ - private Long businessId; + private Business business; /** * 菜品id */ - private Long dishesId; + private Dishes dishes; /** * 商品数量 diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/vo/LoginUserVO.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/vo/LoginUserVO.java index 009f8fe..5344d0b 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/vo/LoginUserVO.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/vo/LoginUserVO.java @@ -9,7 +9,6 @@ import java.util.Date; /** * 已登录用户视图(脱敏) - * @author bsz */ @Data public class LoginUserVO implements Serializable { diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/vo/OrdersExcelVO.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/vo/OrdersExcelVO.java index 3c850de..e545280 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/vo/OrdersExcelVO.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/vo/OrdersExcelVO.java @@ -6,6 +6,7 @@ import com.alibaba.excel.annotation.write.style.ColumnWidth; import lombok.Data; import java.math.BigDecimal; +import java.util.Objects; /** * Excel订单信息导出 @@ -47,6 +48,24 @@ public class OrdersExcelVO { * 订单金额 */ @NumberFormat("0.00") - @ExcelProperty(value = "订单金额") + @ExcelProperty(value = "订单金额", index = 4) private BigDecimal totalPrice; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + OrdersExcelVO that = (OrdersExcelVO) o; + return Objects.equals(id, that.getId()) && + Objects.equals(createTime, that.getCreateTime()) && + Objects.equals(phone, that.getPhone()) && + Objects.equals(state, that.getState()) && + Objects.equals(totalPrice.stripTrailingZeros(), that.getTotalPrice().stripTrailingZeros()); // 避免浮点精度误差 + } + + @Override + public int hashCode() { + return Objects.hash(id, createTime, phone, state, totalPrice.stripTrailingZeros()); + } + } diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/vo/OrdersVO.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/vo/OrdersVO.java index 6cdc212..de65e69 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/vo/OrdersVO.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/vo/OrdersVO.java @@ -5,6 +5,8 @@ import lombok.Data; import java.io.Serial; import java.io.Serializable; import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -43,6 +45,16 @@ public class OrdersVO implements Serializable { */ private Long businessId; + /** + * 跑腿id + */ + private Long errandId; + + /** + * 配送地址 + */ + private String location; + /** * 商家信息 */ @@ -81,7 +93,7 @@ public class OrdersVO implements Serializable { /** * 下单时间 */ - private Date createTime; + private LocalDateTime createTime; /** * 支付时间 @@ -93,6 +105,26 @@ public class OrdersVO implements Serializable { */ private Integer number; + /** + * 店铺详细地址 + */ + private String address; + + /** + * 取餐开始时间 + */ + private LocalDateTime pickupStartTime; + + /** + * 取餐结束时间 + */ + private LocalDateTime pickupEndTime; + + /** + * 外卖图片 + */ + private String imageAddress; + /** * 订单详情 */ diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/vo/UserVO.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/vo/UserVO.java index 077293c..1600f2b 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/vo/UserVO.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/model/vo/UserVO.java @@ -2,7 +2,6 @@ package com.bsz.school_send_back_end.model.vo; import lombok.Data; -import javax.servlet.http.HttpSession; import java.io.Serializable; @Data diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/scheduler/UpdateBusiness.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/scheduler/UpdateBusiness.java deleted file mode 100644 index 903353f..0000000 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/scheduler/UpdateBusiness.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.bsz.school_send_back_end.scheduler; - -import com.bsz.school_send_back_end.model.domain.Business; -import com.bsz.school_send_back_end.service.BusinessLevelService; -import com.bsz.school_send_back_end.service.BusinessService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; -import java.util.Date; -import java.util.List; - -@Component -@Slf4j -public class UpdateBusiness { - @Resource - private BusinessService businessService; - - @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()); - } -} diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/scheduler/UpdateOrderState.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/scheduler/UpdateOrderState.java deleted file mode 100644 index 3d9f78f..0000000 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/scheduler/UpdateOrderState.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.bsz.school_send_back_end.scheduler; - -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.bsz.school_send_back_end.model.domain.Orders; -import com.bsz.school_send_back_end.service.OrdersService; -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.util.Date; - -@Component -@Slf4j -public class UpdateOrderState { - - @Resource - private OrdersService ordersService; - - @Scheduled(cron = "0 0 */1 * * ?") - public void updateState() { - LocalDateTime twelveHoursAgo = LocalDateTime.now().minusHours(12); - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); - updateWrapper.eq(Orders::getState, 4) - .le(Orders::getCreateTime, twelveHoursAgo); - Orders orders = new Orders(); - orders.setState(5); - ordersService.update(orders, updateWrapper); - log.info("订单状态修改时间: " + new Date()); - } -} diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/AliPayService.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/AliPayService.java index 776ed5a..da6aa9c 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/AliPayService.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/AliPayService.java @@ -4,5 +4,5 @@ import java.math.BigDecimal; public interface AliPayService { - String createPayment(String orderId, String miniOpenId, BigDecimal amount, Long businessId); + String createPayment(String orderId, String miniOpenId, BigDecimal amount); } diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/BusinessAuthService.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/BusinessAuthService.java index a35bbf7..7e6c9d9 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/BusinessAuthService.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/BusinessAuthService.java @@ -10,7 +10,6 @@ import java.util.List; /** * @author Lenovo * @description 针对表【business_auth(商家认证)】的数据库操作Service -* @createDate 2024-06-24 21:01:17 */ public interface BusinessAuthService extends IService { diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/BusinessLevelService.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/BusinessLevelService.java index c10928d..4fe5895 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/BusinessLevelService.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/BusinessLevelService.java @@ -8,7 +8,6 @@ import java.util.List; /** * @author pc * @description 针对表【business_level】的数据库操作Service -* @createDate 2024-11-22 14:02:11 */ public interface BusinessLevelService extends IService { diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/BusinessService.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/BusinessService.java index 87d90ec..395a074 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/BusinessService.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/BusinessService.java @@ -8,13 +8,12 @@ import com.bsz.school_send_back_end.model.domain.User; import com.bsz.school_send_back_end.model.dto.business.BusinessQueryRequest; import com.bsz.school_send_back_end.model.vo.BusinessVO; -import javax.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletRequest; import java.util.List; /** * @author Lenovo * @description 针对表【business(商家)】的数据库操作Service -* @createDate 2024-06-24 21:01:17 */ public interface BusinessService extends IService { @@ -26,10 +25,7 @@ public interface BusinessService extends IService { */ void addBusiness(User user, Business business, BusinessAuth businessAuth); - /** - *校验 - */ - void validUser(User user, boolean add); + void validBusiness(Business business, boolean add); diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/CartService.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/CartService.java index 0a70ec5..d3da65c 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/CartService.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/CartService.java @@ -5,14 +5,17 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.bsz.school_send_back_end.model.dto.cart.CartAddRequest; import com.bsz.school_send_back_end.model.dto.cart.CartUpdateRequest; import com.bsz.school_send_back_end.model.vo.CartVO; +import org.springframework.beans.BeanUtils; +import org.springframework.util.CollectionUtils; -import javax.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletRequest; +import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; /** * @author pc * @description 针对表【cart(购物车表)】的数据库操作Service -* @createDate 2024-08-13 13:59:13 */ public interface CartService extends IService { @@ -36,4 +39,9 @@ public interface CartService extends IService { */ Boolean deleteCart(Long cartId, HttpServletRequest request); + /** + * 获取购物车脱敏列表 + */ + List getCartVOList(List cartList); + } diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/CategoryService.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/CategoryService.java index e8f0ffd..7a9b8c9 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/CategoryService.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/CategoryService.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.extension.service.IService; /** * @author pc * @description 针对表【category(分类表)】的数据库操作Service -* @createDate 2024-09-01 18:09:04 */ public interface CategoryService extends IService { /** diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/CollectService.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/CollectService.java index 64eb438..97c5678 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/CollectService.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/CollectService.java @@ -7,14 +7,13 @@ import com.bsz.school_send_back_end.model.dto.collect.CollectAddRequest; import com.bsz.school_send_back_end.model.vo.BusinessVO; import com.bsz.school_send_back_end.model.vo.CollectVO; -import javax.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletRequest; import java.net.http.HttpClient; import java.util.List; /** * @author pc * @description 针对表【collect】的数据库操作Service -* @createDate 2024-11-12 19:19:50 */ public interface CollectService extends IService { diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/DishesGroupService.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/DishesGroupService.java index d26870d..cf869ff 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/DishesGroupService.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/DishesGroupService.java @@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.bsz.school_send_back_end.model.domain.DishesGroup; import com.bsz.school_send_back_end.model.vo.DishesGroupVO; -import javax.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletRequest; import java.util.List; /** diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/OrderDetailsService.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/OrderDetailsService.java index baca225..e190fd9 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/OrderDetailsService.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/OrderDetailsService.java @@ -8,9 +8,7 @@ import com.bsz.school_send_back_end.model.vo.OrderDetailsVO; import java.util.List; /** - * @author 玄德 - * @description 针对表【order_details(订单详情表)】的数据库操作Service - * @createDate 2024-04-05 17:57:44 + * @author xy */ public interface OrderDetailsService extends IService { diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/OrdersService.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/OrdersService.java index dceabbf..62062e4 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/OrdersService.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/OrdersService.java @@ -5,15 +5,20 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.bsz.school_send_back_end.model.domain.OrderDetails; import com.bsz.school_send_back_end.model.domain.Orders; import com.bsz.school_send_back_end.model.dto.order.OrderQueryRequest; +import com.bsz.school_send_back_end.model.dto.order.OrderUpdateRequest; +import com.bsz.school_send_back_end.model.vo.OrderErrandVO; +import com.bsz.school_send_back_end.model.vo.OrderStatusVO; +import com.bsz.school_send_back_end.model.vo.OrdersPickVO; import com.bsz.school_send_back_end.model.vo.OrdersVO; +import jakarta.servlet.http.HttpServletRequest; +import java.time.LocalDateTime; +import java.util.Date; import java.util.List; /** - * @author 玄德 - * @description 针对表【orders(订单表)】的数据库操作Service - * @createDate 2024-04-05 17:57:44 + * @author xy */ public interface OrdersService extends IService { @@ -41,4 +46,45 @@ public interface OrdersService extends IService { */ QueryWrapper getQueryWrapper(OrderQueryRequest orderQueryRequest); + /** + * 悲观锁 + */ + Orders getOrderWithPessimisticLock(Long ordersId); + + /** + * 修改未支付订单内容 + */ + Boolean OrderToUpdate(OrderUpdateRequest orderUpdateRequest, HttpServletRequest request); + + /** + * 修改超时订单 + */ + List findExpiredOrders(LocalDateTime deadline); + + + /** + * 查询超过半个小时无人抢单的订单 + */ + List findCancelOrders(Date halfHourAgo); + + /** + * 跑腿查看订单详情 + */ + OrderErrandVO getOrderErrandVO(Orders orders); + + /** + * 跑腿查看订单详情列表 + */ + List getListOrderErrandVO(List list); + + /** + * 获取订单状态列表 + */ + List liststatus(HttpServletRequest request); + + /** + * 获取七天内的订单数量 + */ + List getOrdernumber(); + } diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/PrivateMessageService.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/PrivateMessageService.java index 0d6fbd3..50196d2 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/PrivateMessageService.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/PrivateMessageService.java @@ -4,9 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.bsz.school_send_back_end.model.domain.PrivateMessage; /** -* @author pc -* @description 针对表【private_message】的数据库操作Service -* @createDate 2024-11-10 15:16:02 +* @author xy */ public interface PrivateMessageService extends IService { diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/SpecificationsDishesService.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/SpecificationsDishesService.java index 720598c..edfc20f 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/SpecificationsDishesService.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/SpecificationsDishesService.java @@ -7,9 +7,7 @@ import com.bsz.school_send_back_end.model.vo.SpecificationsVO; import java.util.List; /** -* @author pc -* @description 针对表【specifications_dishes(菜品和规格的中间表)】的数据库操作Service -* @createDate 2024-06-29 21:18:25 +* @author xy */ public interface SpecificationsDishesService extends IService { diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/SpecificationsService.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/SpecificationsService.java index 2894b99..77ccd7b 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/SpecificationsService.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/SpecificationsService.java @@ -6,7 +6,7 @@ import com.bsz.school_send_back_end.model.dto.attribute.AttributeAddRequest; import com.bsz.school_send_back_end.model.dto.attribute.AttributeUpdateRequest; import com.bsz.school_send_back_end.model.vo.SpecificationsVO; -import javax.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletRequest; import java.util.List; /** diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/SysteminfoService.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/SysteminfoService.java index d5ab950..581e540 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/SysteminfoService.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/SysteminfoService.java @@ -4,9 +4,7 @@ import com.bsz.school_send_back_end.model.domain.Systeminfo; import com.baomidou.mybatisplus.extension.service.IService; /** -* @author pc -* @description 针对表【systeminfo(系统信息)】的数据库操作Service -* @createDate 2024-09-23 19:16:42 +* @author xy */ public interface SysteminfoService extends IService { diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/SystemlogService.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/SystemlogService.java index ffefa2b..ae9d549 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/SystemlogService.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/SystemlogService.java @@ -6,9 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.bsz.school_send_back_end.model.dto.log.LogQueryRequest; /** -* @author pc -* @description 针对表【systemlog(系统信息)】的数据库操作Service -* @createDate 2024-09-25 15:40:09 +* @author xy */ public interface SystemlogService extends IService { diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/UserRatingService.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/UserRatingService.java index 690860f..4d4247c 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/UserRatingService.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/UserRatingService.java @@ -3,12 +3,11 @@ package com.bsz.school_send_back_end.service; import com.bsz.school_send_back_end.model.domain.UserRating; import com.baomidou.mybatisplus.extension.service.IService; -import javax.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletRequest; +import java.util.List; /** -* @author pc -* @description 针对表【user_rating(用户评分)】的数据库操作Service -* @createDate 2024-12-09 16:06:45 +* @author xy */ public interface UserRatingService extends IService { @@ -21,4 +20,18 @@ public interface UserRatingService extends IService { * 校验商家是否能够回复用户评分 */ void validUserRatingByBusiness(Long userRatingId, HttpServletRequest request); + + /** + * 根据当前用户获取评分 + * @param request 当前用户 + * @return 评分列表 + */ + List listUserRatingByUser(HttpServletRequest request); + + /** + * 获取等级 + * @param averageScore + * @return + */ + int calculateLevel(Double averageScore); } diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/UserService.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/UserService.java index 3e58e5f..2778e70 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/UserService.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/UserService.java @@ -9,12 +9,10 @@ import com.bsz.school_send_back_end.model.dto.user.UserSearchRequest; import com.bsz.school_send_back_end.model.dto.user.UserUpdatePasswordRequest; import org.springframework.stereotype.Service; -import javax.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletRequest; /** -* @author bsz -* @description -* @createDate 2024-05-09 20:59:59 +* @author xy */ @Service public interface UserService extends IService { @@ -37,7 +35,7 @@ public interface UserService extends IService { * @return 脱敏后的用户信息 */ - String userLogin(String userAccount, String userPassword, HttpServletRequest request); + String userLogin(String userAccount, String userPassword, String appName, HttpServletRequest request); /** @@ -90,4 +88,9 @@ public interface UserService extends IService { LoginUserVO userLoginByAlipay(String openId, JSONObject userInfo, HttpServletRequest request); public LoginUserVO getLoginUserVO(User user); + + /** + *校验 + */ + void validUser(User user, boolean add); } diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/WebsocketService.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/WebsocketService.java index 8ccf792..8211a9c 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/WebsocketService.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/WebsocketService.java @@ -1,15 +1,17 @@ package com.bsz.school_send_back_end.service; import com.bsz.school_send_back_end.common.ErrorCode; +import com.bsz.school_send_back_end.contant.UserConstant; import com.bsz.school_send_back_end.exception.BusinessException; import com.bsz.school_send_back_end.model.domain.Business; import com.bsz.school_send_back_end.model.domain.Orders; import com.bsz.school_send_back_end.model.domain.PrivateMessage; import lombok.extern.slf4j.Slf4j; import org.springframework.messaging.simp.SimpMessagingTemplate; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; -import javax.annotation.Resource; +import jakarta.annotation.Resource; @Service @Slf4j @@ -24,6 +26,7 @@ public class WebsocketService { @Resource private BusinessService businessService; + private static final String ERRAND_TOPIC_PREFIX = "/topic/ServerToClient.errand."; /** * 简单点对点聊天 */ @@ -73,4 +76,30 @@ public class WebsocketService { log.info("订单信息推送成功,目标用户ID: {}", userId); } + + /** + * 商家将订单发送给跑腿 + */ + @Async + public void sendOrderToErrand(Orders orders) { + if (orders == null || orders.getLocation() == null || orders.getLocation().trim().isEmpty()) { + log.error("订单信息或跑腿位置不完整,无法推送: {}", orders); + throw new BusinessException(ErrorCode.PARAMS_ERROR, "订单信息或位置信息不完整"); + } + + String location = orders.getLocation(); + + // 校验位置是否有效 + if (!UserConstant.VALID_LOCATIONS.contains(location)) { + log.error("非法位置,无法推送订单: 位置 = {}", location); + throw new BusinessException(ErrorCode.PARAMS_ERROR, "位置不合法"); + } + + log.info("正在向跑腿推送订单信息, 订单ID: {}, 位置: {}", orders.getId(), location); + String destination = ERRAND_TOPIC_PREFIX + location; + template.convertAndSend(destination, orders); + + log.info("订单推送成功,位置: {}", location); + } + } diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/AlipayServiceImpl.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/AlipayServiceImpl.java index 74ddfc6..e92a975 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/AlipayServiceImpl.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/AlipayServiceImpl.java @@ -17,10 +17,12 @@ import com.bsz.school_send_back_end.service.OrderDetailsService; import com.bsz.school_send_back_end.service.OrdersService; import com.bsz.school_send_back_end.utils.UniqueNumberGenerator; import lombok.extern.slf4j.Slf4j; +import org.codehaus.jettison.json.JSONException; +import org.codehaus.jettison.json.JSONObject; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import javax.annotation.Resource; +import jakarta.annotation.Resource; import java.math.BigDecimal; import java.util.List; import java.util.stream.Collectors; @@ -37,18 +39,17 @@ public class AlipayServiceImpl implements AliPayService { @Override @Transactional(rollbackFor = Exception.class) - public synchronized String createPayment(String orderId, String miniOpenId, BigDecimal amount, Long businessId) { + public synchronized String createPayment(String orderId, String miniOpenId, BigDecimal amount) { //创建客户 AlipayClients clients = new AlipayClients(); //AlipayClient client = clients.alipayClient(); //创建交易请求 AlipayTradeCreateRequest aliRequest = new AlipayTradeCreateRequest(); - //创建实体类 - AlipayTradeCreateModel model = new AlipayTradeCreateModel(); - + // 构造 JSON 字符串作为 biz_content + JSONObject bizContent = new JSONObject(); //请求参数 沙箱内部参数 - String outTradeNo = UniqueNumberGenerator.generateNumber(businessId); + String outTradeNo = UniqueNumberGenerator.generateNumber(); Orders order = ordersService.getById(orderId); if (order == null) { @@ -67,17 +68,19 @@ public class AlipayServiceImpl implements AliPayService { 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.setSellerId("2088721037756350"); - model.setBuyerId("2088722037756360"); - model.setOpAppId("2021004151684053"); - + try { + bizContent.put("out_trade_no", outTradeNo); + bizContent.put("total_amount", amount.toString()); + bizContent.put("subject", subject); + bizContent.put("product_code", "JSAPI_PAY"); + bizContent.put("seller_id", "2088932829893612"); + bizContent.put("buyer_open_id", miniOpenId); // ✅ 关键字段,放进 biz_content 中 + } catch (JSONException e) { + throw new RuntimeException(e); + } ///回调地址 - aliRequest.setNotifyUrl("http://39.101.78.35:6448/api/Alipay/notifyUrl"); - aliRequest.setBizModel(model); + aliRequest.setBizContent(bizContent.toString()); + aliRequest.setNotifyUrl("https://xiaokuaisong.shop:6448/api/Alipay/notifyUrl"); String trade_no = null; try { AlipayTradeCreateResponse response = clients.alipayClient().execute(aliRequest); @@ -88,6 +91,7 @@ public class AlipayServiceImpl implements AliPayService { } catch (AlipayApiException e) { e.printStackTrace(); } + log.info("trade_no:" + trade_no); return trade_no; } } diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/BusinessAuthServiceImpl.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/BusinessAuthServiceImpl.java index d89c8d5..4f86f81 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/BusinessAuthServiceImpl.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/BusinessAuthServiceImpl.java @@ -13,9 +13,7 @@ import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; /** -* @author Lenovo -* @description 针对表【business_auth(商家认证)】的数据库操作Service实现 -* @createDate 2024-06-24 21:01:17 +* @author xy */ @Service public class BusinessAuthServiceImpl extends ServiceImpl diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/BusinessLevelServiceImpl.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/BusinessLevelServiceImpl.java index d624813..beae797 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/BusinessLevelServiceImpl.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/BusinessLevelServiceImpl.java @@ -2,6 +2,7 @@ package com.bsz.school_send_back_end.service.impl; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.bsz.school_send_back_end.contant.UserConstant; import com.bsz.school_send_back_end.mapper.UserRatingMapper; import com.bsz.school_send_back_end.model.domain.BusinessLevel; import com.bsz.school_send_back_end.service.BusinessLevelService; @@ -9,14 +10,12 @@ import com.bsz.school_send_back_end.mapper.BusinessLevelMapper; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import javax.annotation.Resource; +import jakarta.annotation.Resource; import java.math.BigDecimal; import java.util.List; /** -* @author pc -* @description 针对表【business_level】的数据库操作Service实现 -* @createDate 2024-11-22 14:02:11 +* @author xy */ @Service @Slf4j @@ -31,9 +30,9 @@ public class BusinessLevelServiceImpl extends ServiceImpl @@ -69,35 +68,10 @@ public class BusinessServiceImpl extends ServiceImpl //添加认证信息 businessAuth.setBusinessId(business.getId()); boolean save2 = businessAuthService.save(businessAuth); - ThrowUtils.throwIf(!save1, ErrorCode.OPERATION_ERROR, "商家认证信息失败"); + ThrowUtils.throwIf(!save2, ErrorCode.OPERATION_ERROR, "商家认证信息失败"); - } + businessLevelService.updateBusinessLevel(business.getId()); - @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 @@ -184,11 +158,18 @@ public class BusinessServiceImpl extends ServiceImpl @Override public BusinessVO getBusinessVO(Business business) { - BusinessVO businessVO = new BusinessVO(); + BusinessVO businessVO = new BusinessVO(); if (business == null) { return null; } BeanUtils.copyProperties(business,businessVO); + BusinessLevel businessLevel = businessLevelService.getOne(Wrappers.lambdaQuery() + .eq(BusinessLevel::getBusinessId, business.getId())); + if (businessLevel == null) { + throw new BusinessException(ErrorCode.OPERATION_ERROR,"当前商家没有等级"); + } + Integer level = businessLevel.getLevel(); + businessVO.setLevel(level); return businessVO; } @@ -197,7 +178,14 @@ public class BusinessServiceImpl extends ServiceImpl if (CollectionUtils.isEmpty(businessList)) { return new ArrayList<>(); } - return businessList.stream().map(this::getBusinessVO).collect(Collectors.toList()); + return businessList.stream().map(business -> { + BusinessVO businessVO = new BusinessVO(); + BeanUtils.copyProperties(business, businessVO); + BusinessLevel businessLevel = businessLevelService.getOne(Wrappers.lambdaQuery() + .eq(BusinessLevel::getBusinessId, business.getId())); + businessVO.setLevel(businessLevel.getLevel()); + return businessVO; + }).collect(Collectors.toList()); } @Override diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/CartServiceImpl.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/CartServiceImpl.java index 7ce837c..5d39ff6 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/CartServiceImpl.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/CartServiceImpl.java @@ -11,19 +11,25 @@ import com.bsz.school_send_back_end.model.domain.Dishes; import com.bsz.school_send_back_end.model.domain.User; import com.bsz.school_send_back_end.model.dto.cart.CartAddRequest; import com.bsz.school_send_back_end.model.dto.cart.CartUpdateRequest; +import com.bsz.school_send_back_end.model.vo.CartVO; import com.bsz.school_send_back_end.service.BusinessService; import com.bsz.school_send_back_end.service.CartService; import com.bsz.school_send_back_end.mapper.CartMapper; import com.bsz.school_send_back_end.service.DishesService; import com.bsz.school_send_back_end.service.UserService; +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 jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletRequest; import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; /** -* @author pc +* @author xy */ @Service public class CartServiceImpl extends ServiceImpl @@ -131,6 +137,23 @@ public class CartServiceImpl extends ServiceImpl return true; } + + @Override + public List getCartVOList(List cartList) { + if (CollectionUtils.isEmpty(cartList)) { + return new ArrayList<>(); + } + + return cartList.stream().map(item ->{ + CartVO cartVO = new CartVO(); + BeanUtils.copyProperties(item, cartVO); + Business business = businessService.getById(item.getBusinessId()); + Dishes dishes = dishesService.getById(item.getDishesId()); + cartVO.setBusiness(business); + cartVO.setDishes(dishes); + return cartVO; + }).collect(Collectors.toList()); + } } diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/CategoryServiceImpl.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/CategoryServiceImpl.java index 882fc85..e3fc00a 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/CategoryServiceImpl.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/CategoryServiceImpl.java @@ -11,7 +11,7 @@ import com.bsz.school_send_back_end.mapper.CategoryMapper; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; -import javax.annotation.Resource; +import jakarta.annotation.Resource; /** * @author xy diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/CollectServiceImpl.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/CollectServiceImpl.java index bd6eb80..db8993d 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/CollectServiceImpl.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/CollectServiceImpl.java @@ -17,8 +17,8 @@ import com.bsz.school_send_back_end.service.UserService; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; -import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletRequest; import java.util.List; import java.util.stream.Collectors; diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/DishesGroupServiceImpl.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/DishesGroupServiceImpl.java index 80e6e98..fca9118 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/DishesGroupServiceImpl.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/DishesGroupServiceImpl.java @@ -18,14 +18,14 @@ 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 jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletRequest; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; /** -* @author Lenovo +* @author xy * */ @Service diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/DishesServiceImpl.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/DishesServiceImpl.java index 99f7d6c..ed34670 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/DishesServiceImpl.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/DishesServiceImpl.java @@ -19,7 +19,7 @@ import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; -import javax.annotation.Resource; +import jakarta.annotation.Resource; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/OrderDetailsServiceImpl.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/OrderDetailsServiceImpl.java index deb8ba4..bf6b649 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/OrderDetailsServiceImpl.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/OrderDetailsServiceImpl.java @@ -17,16 +17,14 @@ import org.apache.commons.lang3.ObjectUtils; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; -import javax.annotation.Resource; +import jakarta.annotation.Resource; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; /** - * @author 玄德 - * @description 针对表【order_details(订单详情表)】的数据库操作Service实现 - * @createDate 2024-04-05 17:57:44 + * @author xy */ @Service public class OrderDetailsServiceImpl extends ServiceImpl diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/OrdersServiceImpl.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/OrdersServiceImpl.java index e325e7b..a9f1f4d 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/OrdersServiceImpl.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/OrdersServiceImpl.java @@ -1,43 +1,43 @@ package com.bsz.school_send_back_end.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.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.bsz.school_send_back_end.common.ErrorCode; import com.bsz.school_send_back_end.contant.CommonConstant; +import com.bsz.school_send_back_end.contant.UserConstant; import com.bsz.school_send_back_end.exception.BusinessException; +import com.bsz.school_send_back_end.exception.ThrowUtils; import com.bsz.school_send_back_end.mapper.OrdersMapper; -import com.bsz.school_send_back_end.model.domain.Business; -import com.bsz.school_send_back_end.model.domain.OrderDetails; -import com.bsz.school_send_back_end.model.domain.Orders; +import com.bsz.school_send_back_end.model.domain.*; import com.bsz.school_send_back_end.model.dto.order.OrderQueryRequest; -import com.bsz.school_send_back_end.model.vo.BusinessVO; -import com.bsz.school_send_back_end.model.vo.OrderDetailsVO; -import com.bsz.school_send_back_end.model.vo.OrdersVO; -import com.bsz.school_send_back_end.service.BusinessService; -import com.bsz.school_send_back_end.service.OrderDetailsService; -import com.bsz.school_send_back_end.service.OrdersService; +import com.bsz.school_send_back_end.model.dto.order.OrderUpdateRequest; +import com.bsz.school_send_back_end.model.vo.*; +import com.bsz.school_send_back_end.service.*; import com.bsz.school_send_back_end.utils.RegexUtils; import com.bsz.school_send_back_end.utils.SqlUtils; +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.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import javax.annotation.Resource; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletRequest; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.List; +import java.time.LocalDateTime; +import java.util.*; import java.util.stream.Collectors; /** - * @author 玄德 - * @description 针对表【orders(订单表)】的数据库操作Service实现 - * @createDate 2024-04-05 17:57:44 + * @author xy */ @Service +@Slf4j public class OrdersServiceImpl extends ServiceImpl implements OrdersService { @@ -47,6 +47,18 @@ public class OrdersServiceImpl extends ServiceImpl @Resource private OrderDetailsService orderDetailsService; + @Resource + private UserService userService; + + @Resource + private DishesService dishesService; + + @Resource + private ErrandOrderService errandOrderService; + + @Resource + private OrderImageService orderImageService; + @Override @Transactional(rollbackFor = Exception.class) @@ -100,10 +112,7 @@ public class OrdersServiceImpl extends ServiceImpl BeanUtils.copyProperties(orders, ordersVO); // 关联查询商家信息 Long businessId = orders.getBusinessId(); - Business business = null; - if (businessId != null && businessId > 0) { - business = businessService.getById(businessId); - } + Business business = this.getBusiness(businessId); BusinessVO businessVO = businessService.getBusinessVO(business); ordersVO.setBusinessVO(businessVO); // 关联查询订单详情信息 @@ -120,7 +129,22 @@ public class OrdersServiceImpl extends ServiceImpl for (OrderDetailsVO detailsVO : orderDetailsVOList) { number += detailsVO.getQuantity(); } + String address = business.getAddress(); + ordersVO.setAddress(address); ordersVO.setNumber(number); + + ErrandOrder one = errandOrderService.getOne(Wrappers.lambdaQuery() + .eq(ErrandOrder::getOrderId, orderId)); + if (one != null) { + ordersVO.setPickupEndTime(one.getEndTime()); + ordersVO.setPickupStartTime(one.getStartTime()); + } + + OrderImage image = orderImageService.getOne(Wrappers.lambdaQuery() + .eq(OrderImage::getOrderId, orderId)); + if (image != null) { + ordersVO.setImageAddress(image.getImageAddress()); + } return ordersVO; } @@ -129,7 +153,13 @@ public class OrdersServiceImpl extends ServiceImpl if (CollectionUtils.isEmpty(ordersList)) { return new ArrayList<>(); } - return ordersList.stream().map(this::getOrdersVO).collect(Collectors.toList()); +// return ordersList.stream().map(this::getOrdersVO).collect(Collectors.toList()); + return ordersList.stream().map(orders ->{ + OrdersVO ordersVO = this.getOrdersVO(orders); + Business business = this.getBusiness(orders.getBusinessId()); + ordersVO.setAddress(business.getAddress()); + return ordersVO; + }).collect(Collectors.toList()); } @Override @@ -140,6 +170,7 @@ public class OrdersServiceImpl extends ServiceImpl Long id = orderQueryRequest.getId(); Long userId = orderQueryRequest.getUserId(); Long businessId = orderQueryRequest.getBusinessId(); + Long errandId = orderQueryRequest.getErrandId(); String pickupCode = orderQueryRequest.getPickupCode(); Integer pickupMethod = orderQueryRequest.getPickupMethod(); Integer state = orderQueryRequest.getState(); @@ -151,6 +182,7 @@ public class OrdersServiceImpl extends ServiceImpl queryWrapper.like(ObjectUtils.isNotEmpty(id), "id", id); queryWrapper.eq(ObjectUtils.isNotEmpty(userId), "userId", userId); queryWrapper.eq(ObjectUtils.isNotEmpty(businessId), "businessId", businessId); + queryWrapper.eq(ObjectUtils.isNotEmpty(errandId), "errandId", errandId); queryWrapper.eq(ObjectUtils.isNotEmpty(pickupMethod), "pickupMethod", pickupMethod); queryWrapper.eq(ObjectUtils.isNotEmpty(state), "state", state); queryWrapper.ge(StringUtils.isNotBlank(pickupCode), "pickupCode", pickupCode); @@ -160,4 +192,278 @@ public class OrdersServiceImpl extends ServiceImpl sortField); return queryWrapper; } + + @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 Boolean OrderToUpdate(OrderUpdateRequest orderUpdateRequest, HttpServletRequest request) { + if (orderUpdateRequest == null) { + throw new BusinessException(ErrorCode.PARAMS_ERROR); + } + + Orders orders = this.getById(orderUpdateRequest.getOrderId()); + if (orders == null) { + throw new BusinessException(ErrorCode.NOT_FOUND_ERROR, "订单不存在"); + } + Integer state = orders.getState(); + if (state != 0) { + throw new BusinessException(ErrorCode.OPERATION_ERROR, "当前订单已支付"); + } + + User loginUser = userService.getLoginUser(request); + ThrowUtils.throwIf(!loginUser.getId().equals(orders.getUserId()), ErrorCode.OPERATION_ERROR, "当前订单不属于该用户"); + + ErrandOrder errandOrder = errandOrderService.getOne(Wrappers.lambdaQuery() + .eq(ErrandOrder::getOrderId, orders.getId())); + Integer pickupMethod = orderUpdateRequest.getPickupMethod(); + LocalDateTime pickupStartTime = orderUpdateRequest.getPickupStartTime(); + LocalDateTime pickupEndTime = orderUpdateRequest.getPickupEndTime(); + String location = orderUpdateRequest.getLocation(); + String notes = orderUpdateRequest.getNotes(); + BigDecimal totalPrice = orders.getTotalPrice(); + Integer currentPickupMethod = orders.getPickupMethod(); + if (pickupMethod == 0) { + + if (currentPickupMethod == 1 || currentPickupMethod == 2) { + BigDecimal newTotalPrice = calculateTotalPrice(orders.getId(), totalPrice, false); // 减去打包费 + orders.setTotalPrice(newTotalPrice); + } + } else if (pickupMethod == 1 || pickupMethod == 2) { + // 当 pickupMethod 从 0 修改为 1 或 2,更新价格并设置相关信息 + if (currentPickupMethod == 0) { + BigDecimal newTotalPrice = calculateTotalPrice(orders.getId(), totalPrice, true); // 添加打包费 + orders.setTotalPrice(newTotalPrice); + } + if (pickupMethod == 2) { + // 验证取餐时间和地址 + this.validateDelivery(location, pickupStartTime); + + orders.setLocation(location); // 设置取餐地点 + long count = errandOrderService.count(Wrappers.lambdaQuery() + .eq(ErrandOrder::getOrderId, orders.getId())); + if (count > 0) { + errandOrder.setErrandState(1); + errandOrder.setStartTime(pickupStartTime); + errandOrder.setEndTime(pickupEndTime); + boolean update = errandOrderService.updateById(errandOrder); + ThrowUtils.throwIf(!update, ErrorCode.OPERATION_ERROR, "更新跑腿订单失败"); + } else { + ErrandOrder errandOrder1 = new ErrandOrder(); + errandOrder1.setErrandState(1); // 待抢单 + errandOrder1.setOrderId(orders.getId()); + errandOrder1.setStartTime(pickupStartTime); + errandOrder1.setEndTime(pickupEndTime); + boolean save = errandOrderService.saveOrUpdate(errandOrder1); + ThrowUtils.throwIf(!save, ErrorCode.OPERATION_ERROR, "创建跑腿订单关联失败"); + } + + } + } + orders.setPickupMethod(pickupMethod); + if (pickupMethod == 0 || pickupMethod == 1) { + orders.setLocation(null); + if (errandOrder != null) { + boolean remove = errandOrderService.removeById(errandOrder); + ThrowUtils.throwIf(!remove, ErrorCode.OPERATION_ERROR, "删除跑腿订单关联失败"); + } + } + + // 如果备注不为空,则设置备注 + if (StringUtils.isNotBlank(notes)) { + orders.setNotes(notes); + } + + // 更新订单 + System.out.println("此时location:" + orders.getLocation()); + ThrowUtils.throwIf(!this.updateById(orders), ErrorCode.OPERATION_ERROR, "修改订单失败"); + + return true; + } + + @Override + public List findExpiredOrders(LocalDateTime deadline) { + return this.lambdaQuery() + .in(Orders::getState, 4) + .lt(Orders::getUpdateTime, deadline) // 更新时间小于deadline(过期) + .list(); + } + + @Override + public List findCancelOrders(Date halfHourAgo) { + return this.lambdaQuery() + .in(Orders::getState, 1) + .lt(Orders::getUpdateTime, halfHourAgo) + .eq(Orders::getPickupMethod, 2) // 外卖 + .list(); + } + + @Override + public OrderErrandVO getOrderErrandVO(Orders orders) { + if (orders == null) { + return null; + } + Long ordersId = orders.getId(); + OrderErrandVO orderErrandVO = new OrderErrandVO(); + //取餐码 + orderErrandVO.setPickupCode(orders.getPickupCode()); + //图片 + OrderImage image = orderImageService.getOne(Wrappers.lambdaQuery() + .eq(OrderImage::getOrderId, ordersId)); + orderErrandVO.setImageAddress(image.getImageAddress()); + //门店名称 + Business business = businessService.getOne(Wrappers.lambdaQuery() + .eq(Business::getId, orders.getBusinessId())); + orderErrandVO.setBusinessName(business.getBusinessName()); + //送达时间 + ErrandOrder errandOrder = errandOrderService.getOne(Wrappers.lambdaQuery() + .eq(ErrandOrder::getOrderId, ordersId)); + orderErrandVO.setDeliveryTime(errandOrder.getUpdateTime()); + //配送地址 + orderErrandVO.setLocation(orders.getLocation()); + + return orderErrandVO; + } + + @Override + public List getListOrderErrandVO(List list) { + + return list.stream().map(this::getOrderErrandVO).collect(Collectors.toList()); + } + + @Override + public List liststatus(HttpServletRequest request) { + User loginUser = userService.getLoginUser(request); + Long userId = loginUser.getId(); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.in(Orders::getState, 1,4); //将订单状态为1-已支付和4已出餐的订单拿出来 + queryWrapper.eq(Orders::getUserId, userId); + List ordersList = this.list(queryWrapper); + List orderList = ordersList.stream() + .map(Orders::getId) + .collect(Collectors.toList()); + //获取哦errandstate + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(ErrandOrder::getOrderId, orderList); + List errandOrders = errandOrderService.list(wrapper); + + //获取addressimage + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.in(OrderImage::getOrderId, orderList); + List images = orderImageService.list(lambdaQueryWrapper); + Map imageMap = images.stream() + .collect(Collectors.toMap(OrderImage::getOrderId, OrderImage::getImageAddress)); + //先将errandOrder数据变成MAP,提高查询效率 + Map map = errandOrders.stream() + .collect(Collectors.toMap(ErrandOrder::getOrderId, ErrandOrder::getErrandState)); + List statusVOList = ordersList.stream() + .map(order -> { + OrderStatusVO orderStatusVO = new OrderStatusVO(); + orderStatusVO.setId(order.getId()); + orderStatusVO.setOrderState(order.getState()); + orderStatusVO.setPickupMethod(order.getPickupMethod()); + orderStatusVO.setImageAddress(imageMap.getOrDefault(order.getId(), "")); + orderStatusVO.setErrandState(map.getOrDefault(order.getId(), 0)); + return orderStatusVO; + }).collect(Collectors.toList()); + + return statusVOList; + } + + @Override + public List getOrdernumber() { + Map eatIn = this.getQueryNumByDay(0); // 获取堂食单量 + Map self = this.getQueryNumByDay(1); // 获取自提单量 + Map take = this.getQueryNumByDay(2); // 获取外卖单量 + + List ordersPickVOList = new ArrayList<>(); + +// 遍历 7 天数据(eatIn、self、take 具有相同的日期键) + for (String date : eatIn.keySet()) { + OrdersPickVO vo = new OrdersPickVO(); + vo.setDate(date); // 设置日期 + vo.setEatInNum(eatIn.getOrDefault(date, 0L)); // 堂食订单数 + vo.setSelfLiftNum(self.getOrDefault(date, 0L)); // 自提订单数 + vo.setTakeOutNum(take.getOrDefault(date, 0L)); // 外卖订单数 + ordersPickVOList.add(vo); + } + + return ordersPickVOList; + } + + + private void validateDelivery(String location, LocalDateTime pickupTime) { + if (StringUtils.isBlank(location) || !UserConstant.VALID_LOCATIONS.contains(location)) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "请选择有效地址"); + } + if (ObjectUtils.isEmpty(pickupTime)) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "请选择有效取餐时间"); + } + } + + private BigDecimal calculateTotalPrice(Long orderId, BigDecimal totalPrice, boolean add) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(OrderDetails::getOrderId, orderId); + List orderDetailsList = orderDetailsService.list(queryWrapper); + for (OrderDetails orderDetails : orderDetailsList) { + Long dishesId = orderDetails.getDishesId(); + Dishes dishes = dishesService.getById(dishesId); + Double packPrice = dishes.getPackPrice(); + BigDecimal pack = BigDecimal.valueOf(packPrice); + if (add) { + totalPrice = totalPrice.add(pack);// 确保将结果赋回 totalPrice + } else { + totalPrice = totalPrice.subtract(pack); // 减去打包费 + } + + } +// totalPrice = orderDetailsList.stream() +// .map(orderDetails -> { +// Long dishesId = orderDetails.getDishesId(); +// Dishes dishes = dishesService.getById(dishesId); +// Double packPrice = dishes.getPackPrice(); +// return BigDecimal.valueOf(packPrice); // 转换为 BigDecimal +// }) +// .reduce(totalPrice, (accumulatedPrice, packPrice) -> +// add ? accumulatedPrice.add(packPrice) : accumulatedPrice.subtract(packPrice)); // 根据 add 的值进行加减 + return totalPrice; + } + + private Business getBusiness (Long businessId) { + Business business = null; + if (businessId != null && businessId > 0) { + business = businessService.getById(businessId); + } + return business; + } + + private Map getQueryNumByDay(int pickupMethod) { + Map resultMap = new LinkedHashMap<>(); + LocalDateTime now = LocalDateTime.now(); + + for (int i = 0; i < 7; i++) { + LocalDateTime startOfDay = now.minusDays(i).toLocalDate().atStartOfDay(); + LocalDateTime endOfDay = startOfDay.plusDays(1); + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.ge(Orders::getCreateTime, startOfDay); + queryWrapper.lt(Orders::getCreateTime, endOfDay); + queryWrapper.eq(Orders::getPickupMethod, pickupMethod); + + long count = this.count(queryWrapper); + resultMap.put(startOfDay.toLocalDate().toString(), count); + } + + return resultMap; + } + } \ No newline at end of file diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/OssServiceImpl.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/OssServiceImpl.java index d8eda0b..dfcfdc4 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/OssServiceImpl.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/OssServiceImpl.java @@ -1,10 +1,11 @@ package com.bsz.school_send_back_end.service.impl; +import cn.hutool.core.date.DateTime; import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import com.bsz.school_send_back_end.service.OssService; import com.bsz.school_send_back_end.utils.ConstantPropertiesUtil; -import org.joda.time.DateTime; + import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/PrivateMessageServiceImpl.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/PrivateMessageServiceImpl.java index a8ac918..715e7cb 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/PrivateMessageServiceImpl.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/PrivateMessageServiceImpl.java @@ -7,9 +7,7 @@ import com.bsz.school_send_back_end.mapper.PrivateMessageMapper; import org.springframework.stereotype.Service; /** -* @author pc -* @description 针对表【private_message】的数据库操作Service实现 -* @createDate 2024-11-10 15:16:02 +* @author xy */ @Service public class PrivateMessageServiceImpl extends ServiceImpl diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/SpecificationsDishesServiceImpl.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/SpecificationsDishesServiceImpl.java index 2af9c3f..f85551a 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/SpecificationsDishesServiceImpl.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/SpecificationsDishesServiceImpl.java @@ -15,7 +15,7 @@ import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; -import javax.annotation.Resource; +import jakarta.annotation.Resource; import java.util.List; import java.util.stream.Collectors; diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/SpecificationsServiceImpl.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/SpecificationsServiceImpl.java index 1cd51fb..e7bd986 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/SpecificationsServiceImpl.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/SpecificationsServiceImpl.java @@ -18,8 +18,8 @@ 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 jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletRequest; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/SysteminfoServiceImpl.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/SysteminfoServiceImpl.java index 5481652..905e26e 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/SysteminfoServiceImpl.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/SysteminfoServiceImpl.java @@ -7,9 +7,7 @@ import com.bsz.school_send_back_end.service.SysteminfoService; import org.springframework.stereotype.Service; /** -* @author pc -* @description 针对表【systeminfo(系统信息)】的数据库操作Service实现 -* @createDate 2024-09-23 19:16:42 +* @author xy */ @Service public class SysteminfoServiceImpl extends ServiceImpl diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/UserRatingServiceImpl.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/UserRatingServiceImpl.java index ebe200f..5c58345 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/UserRatingServiceImpl.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/UserRatingServiceImpl.java @@ -5,26 +5,20 @@ import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.bsz.school_send_back_end.common.ErrorCode; +import com.bsz.school_send_back_end.contant.UserConstant; import com.bsz.school_send_back_end.exception.BusinessException; import com.bsz.school_send_back_end.exception.ThrowUtils; -import com.bsz.school_send_back_end.model.domain.Business; -import com.bsz.school_send_back_end.model.domain.Orders; -import com.bsz.school_send_back_end.model.domain.User; -import com.bsz.school_send_back_end.model.domain.UserRating; -import com.bsz.school_send_back_end.service.BusinessService; -import com.bsz.school_send_back_end.service.OrdersService; -import com.bsz.school_send_back_end.service.UserRatingService; +import com.bsz.school_send_back_end.model.domain.*; +import com.bsz.school_send_back_end.service.*; import com.bsz.school_send_back_end.mapper.UserRatingMapper; -import com.bsz.school_send_back_end.service.UserService; import org.springframework.stereotype.Service; -import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletRequest; +import java.util.List; /** -* @author pc -* @description 针对表【user_rating(用户评分)】的数据库操作Service实现 -* @createDate 2024-12-09 16:06:45 +* @author xy */ @Service public class UserRatingServiceImpl extends ServiceImpl @@ -39,6 +33,9 @@ public class UserRatingServiceImpl extends ServiceImpllambdaQuery().eq(Orders::getId, userRating.getOrderId())); ThrowUtils.throwIf(orders == null, ErrorCode.NOT_FOUND_ERROR, "订单不存在"); - ThrowUtils.throwIf(!orders.getBusinessId().equals(userRating.getBusinessId()) ,ErrorCode.NOT_FOUND_ERROR, "该商家与订单商家不一致"); + if (ratedEntityType == 0) { + ThrowUtils.throwIf(!orders.getBusinessId().equals(userRating.getRatedEntityId()) ,ErrorCode.NOT_FOUND_ERROR, "该商家与订单商家不一致"); + } + else if (ratedEntityType == 1) { + ThrowUtils.throwIf(!orders.getErrandId().equals(userRating.getRatedEntityId()), ErrorCode.OPERATION_ERROR, "该跑腿与订单跑腿不一致"); + }else { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "分类id不正确"); + } - long count = this.count(Wrappers.lambdaQuery().eq(UserRating::getOrderId, userRating.getOrderId())); + long count = this.count(Wrappers.lambdaQuery() + .eq(UserRating::getOrderId, userRating.getOrderId()) + .eq(UserRating::getRatedEntityType, userRating.getRatedEntityType())); ThrowUtils.throwIf(count > 0, ErrorCode.SYSTEM_ERROR, "该订单已评分"); } @@ -65,7 +72,7 @@ public class UserRatingServiceImpl extends ServiceImpl listUserRatingByUser(HttpServletRequest request) { + Long ratedEntityId = this.authenticationUser(request); + + return this.list(Wrappers.lambdaQuery() + .eq(UserRating::getRatedEntityId, ratedEntityId)); + } + + @Override + public 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; + } + } + + + private Long authenticationUser (HttpServletRequest request) { + User loginUser = userService.getLoginUser(request); + String userRole = loginUser.getUserRole(); + Long ratedEntityId = null; + if (userRole.equals(UserConstant.BUSINESS_ROLE)) { + Business business = businessService.getOne(Wrappers.lambdaQuery() + .eq(Business::getUserId, loginUser.getId())); + ratedEntityId = business.getId(); + } else if (userRole.equals(UserConstant.ERRAND_ROLE)) { + Errand errand = errandService.getOne(Wrappers.lambdaQuery() + .eq(Errand::getUserId, loginUser.getId())); + ratedEntityId = errand.getId(); + } + + return ratedEntityId; + } + } diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/UserServiceImpl.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/UserServiceImpl.java index 94e6292..b37b2f5 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/UserServiceImpl.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/service/impl/UserServiceImpl.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.bsz.school_send_back_end.common.ErrorCode; import com.bsz.school_send_back_end.exception.BusinessException; +import com.bsz.school_send_back_end.exception.ThrowUtils; import com.bsz.school_send_back_end.manager.SessionManager; import com.bsz.school_send_back_end.mapper.UserMapper; import com.bsz.school_send_back_end.model.enums.UserRoleEnum; @@ -22,8 +23,8 @@ import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.util.DigestUtils; -import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletRequest; import java.nio.charset.StandardCharsets; import java.util.Date; import java.util.regex.Matcher; @@ -103,6 +104,7 @@ public class UserServiceImpl extends ServiceImpl User user = new User(); user.setUserAccount(userAccount); user.setUserPassword(encryptPassword); + user.setUserRole("errand"); boolean saveResult = this.save(user); if (!saveResult) { throw new BusinessException(ErrorCode.PARAMS_ERROR, "插入失败!"); @@ -120,21 +122,21 @@ public class UserServiceImpl extends ServiceImpl */ @Override - public String userLogin(String userAccount, String userPassword, HttpServletRequest request) { + public String userLogin(String userAccount, String userPassword, String appName, HttpServletRequest request) { //非空 if (StringUtils.isAllBlank(userAccount, userPassword)) { throw new BusinessException(ErrorCode.PARAMS_ERROR, "参数为空"); } //账号长度不小于四位 - if (userAccount.length() < 4) { - throw new BusinessException(ErrorCode.PARAMS_ERROR, "用户账号过短"); + if (userAccount.length() < 4 || userAccount.length() > 20) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "用户账号应在4~20位"); } - if (userPassword.length() < 8) { - throw new BusinessException(ErrorCode.PARAMS_ERROR, "用户密码过短"); + if (userPassword.length() < 8 || userPassword.length() > 16) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "用户密码应在8~16位"); } //正则表达式看账户包不包含特殊字符 - String validPattern = "[`~!@#$%^&*()+=|{}':;',\\\\[\\\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]"; + String validPattern = "[ `~!@#$%^&*()+=|{}':;',\\\\[\\\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]"; Matcher matcher = Pattern.compile(validPattern).matcher(userAccount); @@ -154,8 +156,10 @@ public class UserServiceImpl extends ServiceImpl throw new BusinessException(ErrorCode.PARAMS_ERROR, "用户账号或密码有误!"); } + ThrowUtils.throwIf(!user.getUserRole().equals(appName), ErrorCode.NO_AUTH, "当前用户无权限登录该APP"); + //用户登陆成功 - return sessionManager.login(user, request); + return sessionManager.login(user, appName, request); } /** @@ -382,4 +386,32 @@ public class UserServiceImpl extends ServiceImpl return loginUserVO; } + @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 = this.count(queryWrapper); + if (count > 0) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "账号重复"); + } + } + } + + } diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/utils/ExcelUtils.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/utils/ExcelUtils.java index 7d80aab..5e3a1ce 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/utils/ExcelUtils.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/utils/ExcelUtils.java @@ -6,12 +6,12 @@ package com.bsz.school_send_back_end.utils; import com.bsz.school_send_back_end.common.ErrorCode; import com.bsz.school_send_back_end.exception.BusinessException; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; import java.net.URLEncoder; -import java.text.SimpleDateFormat; -import java.util.Date; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; /** * Excel工具类 @@ -56,7 +56,8 @@ public class ExcelUtils { */ public static void setExcelResponseProp(HttpServletResponse response, String rawFileName) throws IOException { //设置内容类型 - response.setContentType("application/vnd.vnd.ms-excel"); +// response.setContentType("application/vnd.vnd.ms-excel"); + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); //设置编码格式 response.setCharacterEncoding("utf-8"); //设置导出文件名称(避免乱码) @@ -71,13 +72,47 @@ public class ExcelUtils { * @param date 日期 * @return 字符串 */ - public static String dateToString(Date date) { + + public static String dateToString(LocalDateTime 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); + // 使用 DateTimeFormatter 格式化 LocalDateTime + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"); + return date.format(formatter); + } + + + /** + * 转换跑腿订单状态 + * @param errandState + * @return + */ + public static String getErrandStateText(Integer errandState) { + switch (errandState) { + case 1: return "待抢单"; + case 2: return "已抢单"; + case 3: return "已取货"; + case 4: return "已送达"; + default: return "未知状态"; + } + } + + /** + * 转换订单状态 + * @param sate + * @return + */ + public static String getStateText(Integer state) { + switch (state) { + case 0: return "未支付"; + case 1: return "已支付"; + case 2: return "已退款"; + case 3: return "已取消"; + case 4: return "已出餐"; + case 5: return "已完成"; + default: return "未知状态"; + } } } diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/utils/NetUtils.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/utils/NetUtils.java index 91b0d00..736d897 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/utils/NetUtils.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/utils/NetUtils.java @@ -1,7 +1,7 @@ package com.bsz.school_send_back_end.utils; -import javax.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletRequest; import java.net.InetAddress; import java.net.UnknownHostException; diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/utils/RandomNumberGenerator.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/utils/RandomNumberGenerator.java index 87a55f0..711349a 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/utils/RandomNumberGenerator.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/utils/RandomNumberGenerator.java @@ -11,4 +11,10 @@ public class RandomNumberGenerator { Random random = new Random(); return random.nextInt(9000 - 1000 + 1) + 1000; } + + public String getFourBitRandom() { + Random random = new Random(); + int number = 1000 + random.nextInt(9000); // 生成1000到9999之间的随机数 + return String.valueOf(number); // 将数字转换为String并返回 + } } \ No newline at end of file diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/utils/RegexUtils.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/utils/RegexUtils.java index 19bc724..39e6282 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/utils/RegexUtils.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/utils/RegexUtils.java @@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.core.toolkit.StringUtils; import static com.bsz.school_send_back_end.contant.RegexConstant.*; /** - * @author 玄德 + * @author xy */ @SuppressWarnings("all") public class RegexUtils { diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/utils/SqlUtils.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/utils/SqlUtils.java index 59b2ec4..921220f 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/utils/SqlUtils.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/utils/SqlUtils.java @@ -6,8 +6,6 @@ import org.apache.commons.lang3.StringUtils; /** * SQL 工具 * - * @author 程序员鱼皮 - * @from 编程导航知识星球 */ @SuppressWarnings("all") public class SqlUtils { @@ -18,10 +16,10 @@ public class SqlUtils { * @param sortField * @return */ - public static boolean validSortField(String sortField) { - if (StringUtils.isBlank(sortField)) { - return false; + public static boolean validSortField(String sortField) { + if (StringUtils.isBlank(sortField)) { + return false; + } + return !StringUtils.containsAny(sortField, "=", "(", ")", " "); } - return !StringUtils.containsAny(sortField, "=", "(", ")", " "); - } } diff --git a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/utils/UniqueNumberGenerator.java b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/utils/UniqueNumberGenerator.java index 065ee01..3f0344c 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/utils/UniqueNumberGenerator.java +++ b/school_lend_back_end/school_lend_back_end/src/main/java/com/bsz/school_send_back_end/utils/UniqueNumberGenerator.java @@ -1,63 +1,44 @@ package com.bsz.school_send_back_end.utils; -import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.text.SimpleDateFormat; -import java.util.*; +import java.util.Date; +import java.util.Random; /** - * 多商家取餐码生成工具 - * 每个商家每天的取餐码从1开始独立计数 + * 取餐码生成 + * @author bsz */ @Component public class UniqueNumberGenerator { - // 商家取餐码的序列号记录,key为"商家ID_日期",value为序列号 - private static final Map merchantSequenceMap = new HashMap<>(); - private static final Random random = new Random(); // 随机数生成器 - private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); + private static int sequenceNumber = 1; // 初始化每天的序列号,从1开始 + private static String lastDate = ""; // 记录上次生成数字的日期 + private static final Random random = new Random(); // 随机数生成器 - /** - * 根据商家ID生成17位的唯一取餐编号 - * 格式:日期(8位) + 随机数(5位) + 序列号(4位) - * - * @param businessId 商家ID - * @return 唯一编号 - */ - public static synchronized String generateNumber(Long businessId) { - // 获取当前日期 - String currentDate = dateFormat.format(new Date()); + // 生成17位的唯一编号 + public static String generateNumber() { + // 获取当前日期的年月日格式 (前8位) + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); + String dateStr = dateFormat.format(new Date()); - // 生成商家当天的唯一key - String key = businessId + "_" + currentDate; - - // 获取商家当前日期的序列号,没有则初始化为1 - int sequenceNumber = merchantSequenceMap.getOrDefault(key, 1); - - // 更新商家的序列号 - merchantSequenceMap.put(key, sequenceNumber + 1); + // 检查日期是否变更,如果变更则重置序列号 + if (!dateStr.equals(lastDate)) { + lastDate = dateStr; + sequenceNumber = 1; // 每天重置为0001 + } // 生成中间5位的随机数 int middleRandom = 10000 + random.nextInt(90000); // 生成10000到99999之间的随机数 - // 格式化序列号为4位 + // 格式化后四位的序列号 String sequenceStr = String.format("%04d", sequenceNumber); + // 更新序列号,为下一次调用准备 + sequenceNumber++; + // 组合并返回结果 - return currentDate + middleRandom + sequenceStr; + return dateStr + middleRandom + sequenceStr; } - @Scheduled(cron = "0 0 0 * * ?") - public static void cleanOldData() { - String currentDate = dateFormat.format(new Date()); - Iterator iterator = merchantSequenceMap.keySet().iterator(); - - while (iterator.hasNext()) { - String key = iterator.next(); - String date = key.split("_")[1]; // 获取key中的日期部分 - if (!date.equals(currentDate)) { - iterator.remove(); // 移除过期的key - } - } - } } diff --git a/school_lend_back_end/school_lend_back_end/src/main/resources/application-dev.yml b/school_lend_back_end/school_lend_back_end/src/main/resources/application-dev.yml index b880f02..6aa1322 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/resources/application-dev.yml +++ b/school_lend_back_end/school_lend_back_end/src/main/resources/application-dev.yml @@ -4,11 +4,20 @@ spring: url: jdbc:mysql://154.8.193.216/xiaokuaisong username: xiaokuaisong password: 12345678 - redis: +# redis: +# host: 39.101.78.35 +# port: 6379 +# database: 3 +# password: 12345678 +# timeout: 60000 + rabbitmq: host: 154.8.193.216 - port: 6379 - database: 3 - password: Cksys6509 - timeout: 60000 + port: 5672 + username: admin + password: cksys6509 + virtual-host: myvh + listener: + simple: + prefetch: 1 knife4j: - enable: true + enable: true \ No newline at end of file diff --git a/school_lend_back_end/school_lend_back_end/src/main/resources/application-prod.yml b/school_lend_back_end/school_lend_back_end/src/main/resources/application-prod.yml index b880f02..1dd502f 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/resources/application-prod.yml +++ b/school_lend_back_end/school_lend_back_end/src/main/resources/application-prod.yml @@ -4,11 +4,12 @@ spring: url: jdbc:mysql://154.8.193.216/xiaokuaisong username: xiaokuaisong password: 12345678 - redis: - host: 154.8.193.216 - port: 6379 - database: 3 - password: Cksys6509 - timeout: 60000 + data: + redis: + host: 154.8.193.216 + port: 6379 + database: 3 + password: Cksys6509 + timeout: 60000 knife4j: - enable: true + enable: true \ No newline at end of file diff --git a/school_lend_back_end/school_lend_back_end/src/main/resources/application.yml b/school_lend_back_end/school_lend_back_end/src/main/resources/application.yml index 325a20a..fcd74f4 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/resources/application.yml +++ b/school_lend_back_end/school_lend_back_end/src/main/resources/application.yml @@ -15,20 +15,29 @@ spring: url: jdbc:mysql://154.8.193.216/xiaokuaisong username: xiaokuaisong password: 12345678 - mvc: - pathmatch: - matching-strategy: ant_path_matcher - redis: - host: 154.8.193.216 - port: 6379 - database: 3 - password: Cksys6509 - timeout: 60000 +# mvc: +# pathmatch: +# matching-strategy: ant_path_matcher profiles: active: dev session: store-type: redis timeout: 2592000 + jackson: + time-zone: Asia/Shanghai + data: + redis: + host: 154.8.193.216 + port: 6379 + database: 3 + password: Cksys6509 + timeout: 60000 + ai: + dashscope: + api-key: sk-a5c3edaa6ddd45fe89ce641c25bcb6dc + chat: + options: + model: qwen-max knife4j: enable: true server: @@ -37,6 +46,11 @@ server: context-path: /api session: timeout: 86400s + #证书 + ssl: + key-store: classpath:cert/ssl/xiaokuaisong.shop.jks + key-store-password: 12m6b1c5 + key-store-type: JKS mybatis-plus: configuration: map-underscore-to-camel-case: false @@ -54,6 +68,12 @@ aliyun: keyid: xxxx keysecret: xxxx bucketname: xxxx + sms: + sms-access-key-id: LTAI5tBHrWcJRgM247ykY7kE + sms-access-key-secret: jHFWiFZ8S5jMfRFSGUKUMFTi0LHaUP + sms-sign-nam: 校食通 + sms-template-cod: SMS_478475841 + sms-endpoint: dysmsapi.aliyuncs.com # 支付宝相关 alipay: #支付宝开放平台 diff --git a/school_lend_back_end/school_lend_back_end/src/main/resources/mapper/OrdersMapper.xml b/school_lend_back_end/school_lend_back_end/src/main/resources/mapper/OrdersMapper.xml index b48e121..cedee3f 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/resources/mapper/OrdersMapper.xml +++ b/school_lend_back_end/school_lend_back_end/src/main/resources/mapper/OrdersMapper.xml @@ -11,6 +11,8 @@ + + @@ -25,9 +27,10 @@ id,pickupCode,userName, phone,userId,businessId, + errandId,location, totalPrice,pickupMethod, payMethod,pickupTime,notes, - state,createTime,updateTime, - isDelete + state,createTime, + updateTime,isDelete diff --git a/school_lend_back_end/school_lend_back_end/src/main/resources/mapper/UserRatingMapper.xml b/school_lend_back_end/school_lend_back_end/src/main/resources/mapper/UserRatingMapper.xml index b91ce22..71c6114 100644 --- a/school_lend_back_end/school_lend_back_end/src/main/resources/mapper/UserRatingMapper.xml +++ b/school_lend_back_end/school_lend_back_end/src/main/resources/mapper/UserRatingMapper.xml @@ -6,7 +6,8 @@ - + + @@ -16,7 +17,8 @@ - id,businessId,userId, + id,ratedEntityId, + ratedEntityType,userId, orderId,rating,review, businessReview,createTime diff --git a/school_lend_back_end/school_lend_back_end/src/test/java/com/bsz/school_send_back_end/UserCenterApplicationTests.java b/school_lend_back_end/school_lend_back_end/src/test/java/com/bsz/school_send_back_end/UserCenterApplicationTests.java index 38b6f02..a780bb9 100644 --- a/school_lend_back_end/school_lend_back_end/src/test/java/com/bsz/school_send_back_end/UserCenterApplicationTests.java +++ b/school_lend_back_end/school_lend_back_end/src/test/java/com/bsz/school_send_back_end/UserCenterApplicationTests.java @@ -8,16 +8,7 @@ import org.springframework.boot.test.context.SpringBootTest; class UserCenterApplicationTests { public static void main(String[] args) { - Long merchantId1 = 1826604625395048449l; - Long merchantId2 = 1826604625395048450l; - - // 商家1的取餐码 - System.out.println(UniqueNumberGenerator.generateNumber(merchantId1)); // 商家1序列号0001 - System.out.println(UniqueNumberGenerator.generateNumber(merchantId1)); // 商家1序列号0002 - - // 商家2的取餐码 - System.out.println(UniqueNumberGenerator.generateNumber(merchantId2)); // 商家2序列号0001 - System.out.println(UniqueNumberGenerator.generateNumber(merchantId2)); // 商家2序列号0002 + System.out.println(UniqueNumberGenerator.generateNumber()); } } diff --git a/school_lend_back_end/school_lend_back_end/src/test/java/com/bsz/school_send_back_end/controller/UserControllerTest.java b/school_lend_back_end/school_lend_back_end/src/test/java/com/bsz/school_send_back_end/controller/UserControllerTest.java deleted file mode 100644 index 32971f9..0000000 --- a/school_lend_back_end/school_lend_back_end/src/test/java/com/bsz/school_send_back_end/controller/UserControllerTest.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.bsz.school_send_back_end.controller; - -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.context.SpringBootTest; - -@SpringBootTest -class UserControllerTest { - - - - @Test - void userRegister() { - System.out.println("已上传到测试分支 - 3"); - } - - @Test - void userLogin() { - } - - @Test - void searchUsers() { - } - - @Test - void deleteUser() { - } -} \ No newline at end of file