Compare commits

..

63 Commits

Author SHA1 Message Date
52649e4e77 nacos
All checks were successful
Gitea/FrameTour-BE/pipeline/head This commit looks good
2025-08-24 23:59:25 +08:00
7f2c2ef22e feat(scenic): 添加景区配置相关字段
- 增加一般游玩时间字段
- 添加全部免费、禁用源视频、禁用源图片等配置项
- 新增源视频存储时长、源图片存储时长、用户素材存储时长等存储相关字段
2025-08-21 01:12:40 +08:00
f981791039 feat(watermark): 在二维码中央添加圆形头像
- 在 WatermarkInfo 实体中添加 faceFile 字段,用于存储头像文件
- 在 LeicaWatermarkOperator 和 NormalWatermarkOperator 中实现头像添加功能
- 在 GoodsServiceImpl 中下载用户头像并传递给 watermarkInfo
2025-08-20 23:13:38 +08:00
29f142f53f refactor(task): 重构任务创建逻辑
- 将 forceCreateTaskByFaceIdAndTempalteId 和 createTaskByFaceIdAndTempalteId 方法合并为一个内部方法 createTaskByFaceIdAndTempalteIdInternal
- 通过 forceCreate 参数控制是否强制创建任务
-优化了模板生成判断和状态设置的逻辑
- 移除了重复代码,提高了代码可读性和维护性
2025-08-15 17:34:09 +08:00
9f6a75cd50 外部设备及对接阿里云媒体处理 2025-08-13 11:11:58 +08:00
762962512d 删除opentelemetry 2025-08-13 09:50:44 +08:00
aaf0eed197 添加订单统计方法 2025-08-11 08:06:39 +08:00
00fbeedc56 null 2025-08-08 17:58:51 +08:00
5202ec3be1 平台数据 2025-08-08 17:47:19 +08:00
d33aec9d4b 避免一口价买到空的 2025-08-08 17:29:04 +08:00
fcde865a2d 首页统计 2025-08-08 16:27:44 +08:00
5b8d18d913 避免replace 2025-08-04 18:25:18 +08:00
0275f4ca3b 字段修正 2025-08-04 17:54:10 +08:00
76b48e3071 价格缓存清理 2025-08-03 10:21:08 +08:00
5a85d2418d 订单支付 2025-08-03 10:21:07 +08:00
72d3530942 优惠券软删除 2025-08-01 17:42:14 +08:00
9e92be78ff 都换成pay_at 2025-08-01 17:42:14 +08:00
68df668c00 通知提示额外增加 2025-08-01 17:42:14 +08:00
ac99ede4b1 优惠券购买 2025-08-01 17:42:14 +08:00
6f4c7f605a 付款查询限制 2025-08-01 17:42:14 +08:00
41269572c7 支持图片占位符 2025-08-01 17:42:13 +08:00
f797479515 景区账号添加问题 2025-07-31 14:22:20 +08:00
9ed254c920 注解优化 2025-07-30 15:33:56 +08:00
05412b2abf StringUtils替换 2025-07-30 13:43:20 +08:00
2a7b8664f8 修一下sql 2025-07-30 11:34:53 +08:00
d052ecbcdd 统计修一下 2025-07-30 11:15:23 +08:00
c97c680ca9 生成bindFace小程序码 2025-07-29 14:10:36 +08:00
91867300ed jackson 2025-07-29 13:47:57 +08:00
fe24c563a0 获取时间 2025-07-29 11:10:19 +08:00
5942a9b728 一口价订单返回vlog 2025-07-29 10:58:30 +08:00
a3bc9357b5 isBuy 2025-07-28 22:36:30 +08:00
a96d9df7e6 sort 2025-07-28 21:43:35 +08:00
0471d21e28 null 2025-07-28 21:43:30 +08:00
8b7e349d1c 订单创建 2025-07-28 13:56:00 +08:00
63f877535b 处理 2025-07-28 10:40:54 +08:00
bbf55e4e3e 额外提示 2025-07-28 10:27:16 +08:00
d4783c2a8f 小程序订单返回face_id 2025-07-28 10:23:49 +08:00
79906fbdef 统计换回 2025-07-27 19:56:49 +08:00
136445802d Merge branch 'bug_jackson' 2025-07-27 19:36:35 +08:00
3cab5e531d fix 2025-07-27 19:34:04 +08:00
fa481d52bb 2 2025-07-27 19:23:30 +08:00
93c74e181a 2 2025-07-27 19:06:34 +08:00
9a6a90b58e Merge branch 'jackson' 2025-07-27 14:58:15 +08:00
0ca7cd694e coupon通知字段 2025-07-27 14:23:03 +08:00
4d2a962bc6 template sort 2025-07-27 13:57:44 +08:00
f8de4abd09 jackson 2025-07-27 09:28:32 +08:00
563d83f849 jackson 2025-07-27 08:59:08 +08:00
74a8953c8f 支持没有景区登录 2025-07-27 00:25:58 +08:00
c72d598d4a 优惠券加两字段 2025-07-25 18:57:25 +08:00
1c443e136b 1 2025-07-25 17:50:52 +08:00
554cd56c05 默认景区登录问题 2025-07-25 17:21:15 +08:00
aa5f61f488 订单问题 2025-07-25 16:38:59 +08:00
ed0397e9ca 修复source问题 2025-07-25 16:38:49 +08:00
17b8ca110b 不返回没有的数据 2025-07-25 15:51:55 +08:00
e9f44dd851 JacksonUtil 2025-07-25 12:21:24 +08:00
1a1eb79914 优惠券相关+后台 2025-07-25 11:17:43 +08:00
587c9de5b2 修改定时执行时间 2025-07-25 10:50:36 +08:00
727c9bacfa 优惠券 2025-07-25 02:21:15 +08:00
f0fd0db313 一体机打印订单信息 2025-07-24 16:45:31 +08:00
1282e175a1 ignore 2025-07-24 09:55:17 +08:00
49b750e1af bindFace 2025-07-24 09:54:44 +08:00
eb61058fd1 BCE临时使用 2025-07-24 09:54:44 +08:00
477554cb35 删除swagger 2025-07-23 11:39:12 +08:00
242 changed files with 4376 additions and 2304 deletions

1
.gitignore vendored
View File

@@ -3,3 +3,4 @@ logs/
target/ target/
.claude .claude
.vscode

105
pom.xml
View File

@@ -19,21 +19,30 @@
<java.version>21</java.version> <java.version>21</java.version>
<maven.compiler.source>21</maven.compiler.source> <maven.compiler.source>21</maven.compiler.source>
<maven.compiler.target>21</maven.compiler.target> <maven.compiler.target>21</maven.compiler.target>
<spring.cloud.alibaba.version>2023.0.1.2</spring.cloud.alibaba.version>
<spring.cloud.version>2023.0.3</spring.cloud.version>
<hutool-all.version>5.8.24</hutool-all.version> <hutool-all.version>5.8.24</hutool-all.version>
<mysql-connector.version>8.0.33</mysql-connector.version>
<fastjson.version>1.2.83</fastjson.version>
<knife4j-spring-boot-starter.version>2.0.7</knife4j-spring-boot-starter.version> <knife4j-spring-boot-starter.version>2.0.7</knife4j-spring-boot-starter.version>
<pagehelper.version>5.3.1</pagehelper.version> <pagehelper.version>5.3.1</pagehelper.version>
<!--跳过单元测试--> <!--跳过单元测试-->
<skipTests>true</skipTests> <skipTests>true</skipTests>
</properties> </properties>
<!-- OpenTelemetry --> <!-- Dependency Management -->
<dependencyManagement> <dependencyManagement>
<dependencies> <dependencies>
<!-- Spring Cloud BOM -->
<dependency> <dependency>
<groupId>io.opentelemetry.instrumentation</groupId> <groupId>org.springframework.cloud</groupId>
<artifactId>opentelemetry-instrumentation-bom</artifactId> <artifactId>spring-cloud-dependencies</artifactId>
<version>2.16.0</version> <version>${spring.cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- Spring Cloud Alibaba BOM -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring.cloud.alibaba.version}</version>
<type>pom</type> <type>pom</type>
<scope>import</scope> <scope>import</scope>
</dependency> </dependency>
@@ -66,6 +75,41 @@
<artifactId>spring-boot-starter-web</artifactId> <artifactId>spring-boot-starter-web</artifactId>
</dependency> </dependency>
<!-- Nacos服务发现 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- Nacos配置中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- OpenFeign -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
<!-- Spring Cloud Bootstrap -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<!-- Validation -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<!-- 引入redis,并且redis使用jedis连接 --> <!-- 引入redis,并且redis使用jedis连接 -->
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
@@ -74,9 +118,9 @@
<!-- 引入mysql连接 --> <!-- 引入mysql连接 -->
<dependency> <dependency>
<groupId>mysql</groupId> <groupId>com.mysql</groupId>
<artifactId>mysql-connector-java</artifactId> <artifactId>mysql-connector-j</artifactId>
<version>${mysql-connector.version}</version> <version>8.3.0</version>
<scope>runtime</scope> <scope>runtime</scope>
</dependency> </dependency>
@@ -123,24 +167,26 @@
<artifactId>core</artifactId> <artifactId>core</artifactId>
<version>3.3.3</version> <version>3.3.3</version>
</dependency> </dependency>
<!-- json处理工具 -->
<!-- Jackson JSON处理库 -->
<dependency> <dependency>
<groupId>com.alibaba</groupId> <groupId>com.fasterxml.jackson.core</groupId>
<artifactId>fastjson</artifactId> <artifactId>jackson-databind</artifactId>
<version>${fastjson.version}</version> </dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
</dependency> </dependency>
<!-- 引入commons-lang3 工具类 --> <!-- 引入commons-lang3 工具类 -->
<dependency> <dependency>
<groupId>org.apache.commons</groupId> <groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId> <artifactId>commons-lang3</artifactId>
</dependency> <version>3.18.0</version>
<!-- 引入接口文档工具 -->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>${knife4j-spring-boot-starter.version}</version>
</dependency> </dependency>
<!-- pageHelper --> <!-- pageHelper -->
@@ -169,7 +215,7 @@
<dependency> <dependency>
<groupId>org.apache.commons</groupId> <groupId>org.apache.commons</groupId>
<artifactId>commons-text</artifactId> <artifactId>commons-text</artifactId>
<version>1.1</version> <version>1.11.0</version>
</dependency> </dependency>
<!-- 阿里云对象存储 --> <!-- 阿里云对象存储 -->
@@ -210,9 +256,11 @@
<version>4.16.19</version> <version>4.16.19</version>
</dependency> </dependency>
<!-- 阿里云媒体处理 -->
<dependency> <dependency>
<groupId>io.opentelemetry.instrumentation</groupId> <groupId>com.aliyun</groupId>
<artifactId>opentelemetry-spring-boot-starter</artifactId> <artifactId>mts20140618</artifactId>
<version>5.0.0</version>
</dependency> </dependency>
</dependencies> </dependencies>
@@ -273,6 +321,17 @@
<enabled>true</enabled> <enabled>true</enabled>
</snapshots> </snapshots>
</repository> </repository>
<repository>
<id>sonatype-nexus-staging</id>
<name>Sonatype Nexus Staging</name>
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories> </repositories>
</project> </project>

View File

@@ -3,8 +3,12 @@ package com.ycwl.basic;
import org.mybatis.spring.annotation.MapperScan; import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
@SpringBootApplication @SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
@MapperScan(basePackages = "com.ycwl.basic.mapper") @MapperScan(basePackages = "com.ycwl.basic.mapper")
@MapperScan(basePackages = "com.ycwl.basic.*.mapper") @MapperScan(basePackages = "com.ycwl.basic.*.mapper")
public class Application { public class Application {

View File

@@ -1,6 +1,6 @@
package com.ycwl.basic.aspectj; package com.ycwl.basic.aspectj;
import com.alibaba.fastjson.JSON; import com.ycwl.basic.utils.JacksonUtil;
import com.ycwl.basic.annotation.IgnoreLogReq; import com.ycwl.basic.annotation.IgnoreLogReq;
import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Around;
@@ -67,10 +67,10 @@ public class RequestParameterAspectj {
} }
if (parameterUrlMap.isEmpty()) { if (parameterUrlMap.isEmpty()) {
LOGGER.info("当前请求的路径为-> {} 请求方式为-> {} 参数为-> {}", requestURI, method, JSON.toJSONString(parameterValueSet)); LOGGER.info("当前请求的路径为-> {} 请求方式为-> {} 参数为-> {}", requestURI, method, JacksonUtil.toJSONString(parameterValueSet));
} else { } else {
LOGGER.info("当前请求的路径为-> {} 请求方式为-> {} 参数为-> {} 路径传参为-> {}", requestURI, method, LOGGER.info("当前请求的路径为-> {} 请求方式为-> {} 参数为-> {} 路径传参为-> {}", requestURI, method,
JSON.toJSONString(parameterValueSet), JSON.toJSONString(parameterUrlMap)); JacksonUtil.toJSONString(parameterValueSet), JacksonUtil.toJSONString(parameterUrlMap));
} }
} }
return joinPoint.proceed(); return joinPoint.proceed();

View File

@@ -133,8 +133,8 @@ public class OrderBiz {
return priceObj; return priceObj;
} }
public OrderEntity hasTypeOrder(Long userId, Long scenicId, int orderType, Integer configId) { public OrderEntity hasTypeOrder(Long userId, Long faceId, Long scenicId, int orderType, Integer configId) {
OrderEntity orderEntity = orderMapper.queryTypeOrder(userId, scenicId, orderType, configId); OrderEntity orderEntity = orderMapper.queryTypeOrder(userId, faceId, scenicId, orderType, configId);
if (orderEntity == null) { if (orderEntity == null) {
return null; return null;
} }
@@ -152,6 +152,9 @@ public class OrderBiz {
if (!isBuy) { if (!isBuy) {
if (goodsType == 0) { if (goodsType == 0) {
VideoEntity video = videoRepository.getVideo(goodsId); VideoEntity video = videoRepository.getVideo(goodsId);
if (video == null) {
return respVO;
}
TaskEntity task = videoTaskRepository.getTaskById(video.getTaskId()); TaskEntity task = videoTaskRepository.getTaskById(video.getTaskId());
Long templateId = video.getTemplateId(); Long templateId = video.getTemplateId();
// -1为整个模板购买 // -1为整个模板购买
@@ -243,8 +246,9 @@ public class OrderBiz {
} }
}); });
orderRepository.clearOrderCache(orderId); // 更新完了,清理下 orderRepository.clearOrderCache(orderId); // 更新完了,清理下
if (order.getCouponRecordId() != null) { Integer couponRecordId = order.getCouponRecordId();
couponBiz.userUseCoupon(order.getMemberId(), order.getFaceId(), order.getCouponRecordId(), orderId); if (couponRecordId != null) {
couponBiz.userUseCoupon(order.getMemberId(), order.getFaceId(), couponRecordId, orderId);
} }
//支付时间 //支付时间

View File

@@ -13,7 +13,7 @@ import com.ycwl.basic.repository.FaceRepository;
import com.ycwl.basic.repository.PriceRepository; import com.ycwl.basic.repository.PriceRepository;
import com.ycwl.basic.repository.ScenicRepository; import com.ycwl.basic.repository.ScenicRepository;
import com.ycwl.basic.repository.TemplateRepository; import com.ycwl.basic.repository.TemplateRepository;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.Strings;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@@ -72,7 +72,7 @@ public class PriceBiz {
String[] goodsIds = priceConfig.getGoodsIds().split(","); String[] goodsIds = priceConfig.getGoodsIds().split(",");
return goodsList.stream().filter(goods -> { return goodsList.stream().filter(goods -> {
for (String goodsId : goodsIds) { for (String goodsId : goodsIds) {
if (StringUtils.equals(goods.getGoodsId().toString(), goodsId)) { if (Strings.CS.equals(goods.getGoodsId().toString(), goodsId)) {
return true; return true;
} }
} }
@@ -132,7 +132,7 @@ public class PriceBiz {
// 查询用户是否有此类订单 // 查询用户是否有此类订单
respVO.setBuy(false); respVO.setBuy(false);
if (userId != null) { if (userId != null) {
OrderEntity orderEntity = orderBiz.hasTypeOrder(userId, scenicId, type, priceConfig.getId()); OrderEntity orderEntity = orderBiz.hasTypeOrder(userId, faceId, scenicId, type, priceConfig.getId());
if (orderEntity != null) { if (orderEntity != null) {
respVO.setOrderId(orderEntity.getId()); respVO.setOrderId(orderEntity.getId());
respVO.setBuy(Integer.valueOf(1).equals(orderEntity.getStatus())); respVO.setBuy(Integer.valueOf(1).equals(orderEntity.getStatus()));

View File

@@ -0,0 +1,63 @@
package com.ycwl.basic.config;
import feign.Logger;
import feign.RequestInterceptor;
import feign.codec.ErrorDecoder;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import jakarta.servlet.http.HttpServletRequest;
@Slf4j
@Configuration
public class FeignConfig {
@Bean
public Logger.Level feignLoggerLevel() {
return Logger.Level.BASIC;
}
@Bean
public RequestInterceptor requestInterceptor() {
return requestTemplate -> {
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
if (attributes != null) {
HttpServletRequest request = attributes.getRequest();
// 传递认证头
String authorization = request.getHeader("Authorization");
if (authorization != null) {
requestTemplate.header("Authorization", authorization);
}
}
};
}
@Bean
public ErrorDecoder errorDecoder() {
return new FeignErrorDecoder();
}
public static class FeignErrorDecoder implements ErrorDecoder {
private final ErrorDecoder defaultErrorDecoder = new Default();
@Override
public Exception decode(String methodKey, feign.Response response) {
log.error("Feign调用失败: method={}, status={}, reason={}",
methodKey, response.status(), response.reason());
if (response.status() >= 400 && response.status() < 500) {
// 4xx错误,客户端错误
return new RuntimeException("客户端请求错误: " + response.reason());
} else if (response.status() >= 500) {
// 5xx错误,服务器错误
return new RuntimeException("服务器内部错误: " + response.reason());
}
return defaultErrorDecoder.decode(methodKey, response);
}
}
}

View File

@@ -1,74 +0,0 @@
package com.ycwl.basic.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.schema.ModelRef;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.service.Parameter;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
import java.util.ArrayList;
import java.util.List;
/**
* Swagger 配置类
* 原生: /swagger-ui.html
* 美化: /doc.html
*/
@Configuration
@EnableSwagger2WebMvc
@Profile({"test"})
public class SwaggerConfig {
/**
* Swagger 实例 Bean 是 Docket, 所以通过配置 Docket 实例来配置 Swagger
*/
@Bean
public Docket docket() {
return new Docket(DocumentationType.SWAGGER_2)
// 展示在 Swagger 页面上的自定义工程描述信息
.apiInfo(apiInfo())
// 选择展示哪些接口
.select()
//只有com.zcy.e.firstaid包内的才去展示
.apis(RequestHandlerSelectors.basePackage("com.ycwl.basic.controller.mobile"))
.paths(PathSelectors.any())
.build()
.globalOperationParameters(getGlobalRequestParameters());
}
/**
* Swagger 的描述信息
*/
public ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("liuyin-re")
.description("流影重构")
.contact(new Contact("ycwl", "www.xxx.com", "xxxxxxxxx.com"))
.version("1.0")
.build();
}
private List<Parameter> getGlobalRequestParameters() {
List<Parameter> parameters = new ArrayList<>();
parameters.add(new ParameterBuilder()
.name("token")
.description("登录令牌")
.parameterType("header")
.modelRef(new ModelRef("String"))
.required(true)
.build());
return parameters;
}
}

View File

@@ -5,8 +5,6 @@ import com.ycwl.basic.annotation.IgnoreToken;
import com.ycwl.basic.enums.BizCodeEnum; import com.ycwl.basic.enums.BizCodeEnum;
import com.ycwl.basic.storage.StorageFactory; import com.ycwl.basic.storage.StorageFactory;
import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.ApiResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
@@ -26,10 +24,10 @@ import java.util.UUID;
@RestController @RestController
@RequestMapping("/api/file/v1") @RequestMapping("/api/file/v1")
@Slf4j @Slf4j
@Api(tags = "文件接口") // 文件接口
public class FileController { public class FileController {
@ApiOperation(value = "上传文件") // 上传文件
@PostMapping("/upload") @PostMapping("/upload")
@IgnoreToken @IgnoreToken
public ApiResponse<?> upload(@RequestParam(value = "file") MultipartFile file) throws IOException { public ApiResponse<?> upload(@RequestParam(value = "file") MultipartFile file) throws IOException {
@@ -39,7 +37,7 @@ public class FileController {
return ApiResponse.success(url); return ApiResponse.success(url);
} }
@ApiOperation(value = "删除文件") // 删除文件
@PostMapping("/delete") @PostMapping("/delete")
@IgnoreToken @IgnoreToken
public ApiResponse<?> delete(@RequestParam(value = "fileName") String fileName) throws IOException { public ApiResponse<?> delete(@RequestParam(value = "fileName") String fileName) throws IOException {

View File

@@ -1,6 +1,9 @@
package com.ycwl.basic.controller.extern; package com.ycwl.basic.controller.extern;
import cn.hutool.http.HttpUtil;
import com.ycwl.basic.annotation.IgnoreToken; import com.ycwl.basic.annotation.IgnoreToken;
import com.ycwl.basic.image.enhancer.adapter.BceImageEnhancer;
import com.ycwl.basic.image.enhancer.entity.BceEnhancerConfig;
import com.ycwl.basic.mapper.AioDeviceMapper; import com.ycwl.basic.mapper.AioDeviceMapper;
import com.ycwl.basic.mapper.MemberMapper; import com.ycwl.basic.mapper.MemberMapper;
import com.ycwl.basic.model.aio.entity.AioDeviceBannerEntity; import com.ycwl.basic.model.aio.entity.AioDeviceBannerEntity;
@@ -21,14 +24,19 @@ import com.ycwl.basic.service.aio.AioDeviceService;
import com.ycwl.basic.service.mobile.GoodsService; import com.ycwl.basic.service.mobile.GoodsService;
import com.ycwl.basic.service.pc.FaceService; import com.ycwl.basic.service.pc.FaceService;
import com.ycwl.basic.service.pc.OrderService; import com.ycwl.basic.service.pc.OrderService;
import com.ycwl.basic.service.pc.ScenicService;
import com.ycwl.basic.service.pc.SourceService;
import com.ycwl.basic.storage.adapters.IStorageAdapter;
import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.ApiResponse;
import com.ycwl.basic.utils.JwtTokenUtil; import com.ycwl.basic.utils.JwtTokenUtil;
import com.ycwl.basic.utils.SnowFlakeUtil; import com.ycwl.basic.utils.SnowFlakeUtil;
import io.swagger.annotations.ApiOperation;
import jakarta.servlet.ServletRequest; import jakarta.servlet.ServletRequest;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.Strings;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
@@ -38,8 +46,10 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.concurrent.TimeUnit;
@Slf4j @Slf4j
@IgnoreToken @IgnoreToken
@@ -58,6 +68,10 @@ public class AioDeviceController {
private AioDeviceService aioDeviceService; private AioDeviceService aioDeviceService;
@Autowired @Autowired
private OrderService orderService; private OrderService orderService;
@Autowired
private RedisTemplate<String, String> redisTemplate;
@Autowired
private SourceService sourceService;
@GetMapping("/info") @GetMapping("/info")
public ApiResponse<AioDeviceInfoResp> getDeviceInfo(HttpServletRequest request) { public ApiResponse<AioDeviceInfoResp> getDeviceInfo(HttpServletRequest request) {
@@ -106,15 +120,68 @@ public class AioDeviceController {
memberEntity.setNickname("用户"); memberEntity.setNickname("用户");
memberMapper.add(memberEntity); memberMapper.add(memberEntity);
FaceRecognizeResp resp = faceService.faceUpload(file, aioDevice.getScenicId(), memberEntity.getId()); FaceRecognizeResp resp = faceService.faceUpload(file, aioDevice.getScenicId(), memberEntity.getId());
// 尝试超分
new Thread(() -> {
try {
Thread.sleep(2000L);
} catch (InterruptedException e) {
return;
}
GoodsReqQuery query = new GoodsReqQuery();
query.setSourceType(2);
query.setFaceId(resp.getFaceId());
List<GoodsDetailVO> sourcePhotoList = goodsService.sourceGoodsList(query);
if (sourcePhotoList == null || sourcePhotoList.isEmpty()) {
log.info("无源图片");
redisTemplate.opsForValue().set("aio:faceId:"+resp.getFaceId().toString()+":pass", "1", 1, TimeUnit.DAYS);
return;
}
log.info("超分开始!");
sourcePhotoList.forEach(photo -> {
if (StringUtils.contains(photo.getUrl(), "_q_")) {
return;
}
try {
File dstFile = new File(photo.getGoodsId()+".jpg");
long fileSize = HttpUtil.downloadFile(photo.getUrl(), dstFile);
log.info("超分开始:{}", fileSize);
BceImageEnhancer enhancer = getEnhancer();
MultipartFile enhancedFile = enhancer.enhance(dstFile.getName());
log.info("超分结束:{}", photo.getUrl());
String url = sourceService.uploadAndUpdateUrl(photo.getGoodsId(), enhancedFile);
log.info("上传结束:->{}", url);
} catch (Exception e) {
log.error("超分失败:{}", photo.getGoodsId(), e);
} finally {
File _file = new File(photo.getGoodsId()+".jpg");
if (_file.exists()) {
_file.delete();
}
}
});
redisTemplate.opsForValue().set("aio:faceId:"+sourcePhotoList.getFirst().getFaceId().toString()+":pass", "1", 1, TimeUnit.DAYS);
}).start();
return ApiResponse.success(resp); return ApiResponse.success(resp);
} }
@ApiOperation("人脸信息") // 人脸信息
@GetMapping("/{faceId}") @GetMapping("/{faceId}")
public ApiResponse<FaceRespVO> faceInfo(@PathVariable Long faceId) { public ApiResponse<FaceRespVO> faceInfo(@PathVariable Long faceId) {
return faceService.getById(faceId); return faceService.getById(faceId);
} }
@ApiOperation("照片商品列表") @GetMapping("/face/{faceId}/check")
public ApiResponse<Boolean> faceCheck(@PathVariable Long faceId) {
if (redisTemplate.hasKey("aio:faceId:"+faceId.toString()+":pass")) {
return ApiResponse.success(true);
} else {
return ApiResponse.success(false);
}
}
@GetMapping("/face/{faceId}/bindWxaCode")
public ApiResponse<String> bindWxaCode(@PathVariable Long faceId) {
return ApiResponse.success(faceService.bindWxaCode(faceId));
}
// 照片商品列表
@GetMapping("/{faceId}/photo") @GetMapping("/{faceId}/photo")
public ApiResponse<List<GoodsDetailVO>> sourceGoodsList(@PathVariable Long faceId) { public ApiResponse<List<GoodsDetailVO>> sourceGoodsList(@PathVariable Long faceId) {
GoodsReqQuery query = new GoodsReqQuery(); GoodsReqQuery query = new GoodsReqQuery();
@@ -124,7 +191,7 @@ public class AioDeviceController {
return ApiResponse.success(goodsDetailVOS); return ApiResponse.success(goodsDetailVOS);
} }
@ApiOperation("创建订单") // 创建订单
@PostMapping("/order") @PostMapping("/order")
public ApiResponse<AioDeviceCreateOrderResp> createOrder(HttpServletRequest request, @RequestBody AioDeviceCreateOrderReq req) { public ApiResponse<AioDeviceCreateOrderResp> createOrder(HttpServletRequest request, @RequestBody AioDeviceCreateOrderReq req) {
String deviceId = request.getHeader("X-DeviceId"); String deviceId = request.getHeader("X-DeviceId");
@@ -135,7 +202,7 @@ public class AioDeviceController {
return ApiResponse.success(aioDeviceService.createOrder(aioDevice, req)); return ApiResponse.success(aioDeviceService.createOrder(aioDevice, req));
} }
@ApiOperation("查询订单") // 查询订单
@GetMapping("/order/{orderId}") @GetMapping("/order/{orderId}")
public ApiResponse<PayResponse> queryOrder(HttpServletRequest request, @PathVariable("orderId") Long orderId) { public ApiResponse<PayResponse> queryOrder(HttpServletRequest request, @PathVariable("orderId") Long orderId) {
String deviceId = request.getHeader("X-DeviceId"); String deviceId = request.getHeader("X-DeviceId");
@@ -145,4 +212,15 @@ public class AioDeviceController {
} }
return ApiResponse.success(orderService.queryOrder(orderId)); return ApiResponse.success(orderService.queryOrder(orderId));
} }
private BceImageEnhancer getEnhancer() {
BceImageEnhancer enhancer = new BceImageEnhancer();
BceEnhancerConfig config = new BceEnhancerConfig();
config.setQps(1);
config.setAppId("119554288");
config.setApiKey("OX6QoijgKio3eVtA0PiUVf7f");
config.setSecretKey("dYatXReVriPeiktTjUblhfubpcmYfuMk");
enhancer.setConfig(config);
return enhancer;
}
} }

View File

@@ -0,0 +1,83 @@
package com.ycwl.basic.controller.extern;
import com.ycwl.basic.annotation.IgnoreToken;
import com.ycwl.basic.model.custom.req.AliyunCallbackReq;
import com.ycwl.basic.model.custom.req.CreateUploadTaskReq;
import com.ycwl.basic.model.custom.req.UploadCompleteReq;
import com.ycwl.basic.model.custom.req.UploadFailedReq;
import com.ycwl.basic.model.custom.resp.CreateUploadTaskResp;
import com.ycwl.basic.service.custom.CustomUploadTaskService;
import com.ycwl.basic.utils.ApiResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
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.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RestController
@RequestMapping("/extern/custom-device")
@IgnoreToken
public class CustomDeviceController {
@Autowired
private CustomUploadTaskService customUploadTaskService;
@PostMapping("/upload/create")
public ApiResponse<CreateUploadTaskResp> createUploadTask(@RequestBody CreateUploadTaskReq req) {
try {
CreateUploadTaskResp resp = customUploadTaskService.createUploadTask(req);
return ApiResponse.success(resp);
} catch (Exception e) {
log.error("创建上传任务失败", e);
return ApiResponse.fail(e.getMessage());
}
}
@PostMapping("/upload/complete")
public ApiResponse<String> uploadComplete(@RequestBody UploadCompleteReq req) {
try {
customUploadTaskService.completeUpload(req.getAccessKey(), req.getTaskId());
return ApiResponse.success("上传完成,人脸识别任务已提交");
} catch (Exception e) {
log.error("上传完成处理失败", e);
return ApiResponse.fail(e.getMessage());
}
}
@PostMapping("/upload/failed")
public ApiResponse<String> uploadFailed(@RequestBody UploadFailedReq req) {
try {
customUploadTaskService.markTaskFailed(req.getAccessKey(), req.getTaskId(), req.getErrorMsg());
return ApiResponse.success("任务已标记为失败");
} catch (Exception e) {
log.error("标记任务失败处理异常", e);
return ApiResponse.fail(e.getMessage());
}
}
@PostMapping("/aliyun/mps/callback")
public ApiResponse<String> aliyunCallback(@RequestBody AliyunCallbackReq req) {
try {
customUploadTaskService.handleAliyunCallback(req.getJobId(), req.getStatus());
return ApiResponse.success("回调处理完成");
} catch (Exception e) {
log.error("阿里云回调处理失败", e);
return ApiResponse.fail(e.getMessage());
}
}
@GetMapping("/aliyun/mps/callback")
public ApiResponse<String> aliyunCallback(@RequestParam("jobId") String jobId, @RequestParam("status") String status) {
try {
customUploadTaskService.handleAliyunCallback(jobId, status);
return ApiResponse.success("回调处理完成");
} catch (Exception e) {
log.error("阿里云回调处理失败", e);
return ApiResponse.fail(e.getMessage());
}
}
}

View File

@@ -1,7 +1,7 @@
package com.ycwl.basic.controller.extern; package com.ycwl.basic.controller.extern;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON; import com.ycwl.basic.utils.JacksonUtil;
import com.ycwl.basic.annotation.IgnoreToken; import com.ycwl.basic.annotation.IgnoreToken;
import com.ycwl.basic.mapper.FaceMapper; import com.ycwl.basic.mapper.FaceMapper;
import com.ycwl.basic.mapper.MemberMapper; import com.ycwl.basic.mapper.MemberMapper;
@@ -88,7 +88,7 @@ public class LyCompatibleController {
if (StringUtils.isBlank(scid)) { if (StringUtils.isBlank(scid)) {
return R.error("景区ID为空!"); return R.error("景区ID为空!");
} }
// if (StringUtils.equals("288",scid)) { // if (Strings.CS.equals("288",scid)) {
scenicId = 3955650120997015552L; scenicId = 3955650120997015552L;
// } else { // } else {
// scenicId = 3946669713328836608L; // scenicId = 3946669713328836608L;
@@ -184,7 +184,7 @@ public class LyCompatibleController {
} }
String openId = headersMap.get("client"); String openId = headersMap.get("client");
if (redisTemplate.hasKey("ly:"+openId)) { if (redisTemplate.hasKey("ly:"+openId)) {
return JSON.parseObject(redisTemplate.opsForValue().get("ly:"+openId), R.class); return JacksonUtil.parseObject(redisTemplate.opsForValue().get("ly:"+openId), R.class);
} }
MemberRespVO member = memberMapper.getByOpenId(openId); MemberRespVO member = memberMapper.getByOpenId(openId);
if (member == null) { if (member == null) {
@@ -248,7 +248,7 @@ public class LyCompatibleController {
.put("face_id", faceVO.getId().toString()) .put("face_id", faceVO.getId().toString())
.put("newvideo", videoList) .put("newvideo", videoList)
.put("newuservideo", userVideoList); .put("newuservideo", userVideoList);
redisTemplate.opsForValue().set("ly:"+openId, JSON.toJSONString(response), 5, TimeUnit.SECONDS); redisTemplate.opsForValue().set("ly:"+openId, JacksonUtil.toJSONString(response), 5, TimeUnit.SECONDS);
log.info("> {}", response); log.info("> {}", response);
return response; return response;
} }

View File

@@ -1,9 +1,47 @@
package com.ycwl.basic.controller.mobile; package com.ycwl.basic.controller.mobile;
import org.springframework.web.bind.annotation.RequestMapping; import com.ycwl.basic.constant.BaseContextHandler;
import org.springframework.web.bind.annotation.RestController; import com.ycwl.basic.model.mobile.coupon.req.ClaimCouponReq;
import com.ycwl.basic.model.pc.coupon.entity.CouponEntity;
import com.ycwl.basic.model.pc.couponRecord.entity.CouponRecordEntity;
import com.ycwl.basic.service.mobile.AppCouponRecordService;
import com.ycwl.basic.utils.ApiResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController @RestController
@RequestMapping("/api/mobile/controller/v1") @RequestMapping("/api/mobile/coupon/v1")
public class AppCouponController { public class AppCouponController {
@Autowired
private AppCouponRecordService appCouponRecordService;
/**
* 根据memberId、faceId和type查找优惠券记录
*/
@GetMapping("/record")
public ApiResponse<CouponRecordEntity> getCouponRecords(
@RequestParam Long faceId,
@RequestParam Integer type) {
CouponRecordEntity record = appCouponRecordService.queryByMemberIdAndFaceIdAndType(Long.valueOf(BaseContextHandler.getUserId()), faceId, type);
return ApiResponse.success(record);
}
/**
* 领取优惠券
*/
@PostMapping("/claim")
public ApiResponse<CouponEntity> claimCoupon(@RequestBody ClaimCouponReq request) {
request.setMemberId(Long.valueOf(BaseContextHandler.getUserId()));
try {
CouponEntity coupon = appCouponRecordService.claimCoupon(
request.getMemberId(),
request.getFaceId(),
request.getType()
);
return ApiResponse.success(coupon);
} catch (RuntimeException e) {
return ApiResponse.fail(e.getMessage());
}
}
} }

View File

@@ -7,8 +7,6 @@ import com.ycwl.basic.model.pc.face.resp.FaceRespVO;
import com.ycwl.basic.service.pc.FaceService; import com.ycwl.basic.service.pc.FaceService;
import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.ApiResponse;
import com.ycwl.basic.utils.JwtTokenUtil; import com.ycwl.basic.utils.JwtTokenUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
@@ -21,7 +19,7 @@ import java.util.List;
*/ */
@RestController @RestController
@RequestMapping("/api/mobile/face/v1") @RequestMapping("/api/mobile/face/v1")
@Api(tags = "用户人脸相关接口") // 用户人脸相关接口
public class public class
AppFaceController { AppFaceController {
@@ -37,7 +35,7 @@ AppFaceController {
* @param scenicId * @param scenicId
* @return * @return
*/ */
@ApiOperation("人脸照片上传") // 人脸照片上传
@PostMapping("/faceUPload") @PostMapping("/faceUPload")
public ApiResponse<FaceRecognizeResp> faceUpload(@RequestParam("file")MultipartFile file, @RequestParam("scenicId") Long scenicId) { public ApiResponse<FaceRecognizeResp> faceUpload(@RequestParam("file")MultipartFile file, @RequestParam("scenicId") Long scenicId) {
//获取用户id //获取用户id
@@ -72,14 +70,14 @@ AppFaceController {
} }
@ApiOperation("景区视频源素材列表") // 景区视频源素材列表
@GetMapping("/{faceId}/contentList") @GetMapping("/{faceId}/contentList")
public ApiResponse<List<ContentPageVO>> contentList(@PathVariable Long faceId) { public ApiResponse<List<ContentPageVO>> contentList(@PathVariable Long faceId) {
List<ContentPageVO> contentPageVOS = faceService.faceContentList(faceId); List<ContentPageVO> contentPageVOS = faceService.faceContentList(faceId);
return ApiResponse.success(contentPageVOS); return ApiResponse.success(contentPageVOS);
} }
@ApiOperation("绑定人脸") // 绑定人脸
@PostMapping("/{faceId}/bind") @PostMapping("/{faceId}/bind")
public ApiResponse<String> bind(@PathVariable Long faceId) { public ApiResponse<String> bind(@PathVariable Long faceId) {
JwtInfo worker = JwtTokenUtil.getWorker(); JwtInfo worker = JwtTokenUtil.getWorker();

View File

@@ -7,8 +7,6 @@ import com.ycwl.basic.model.mobile.goods.*;
import com.ycwl.basic.service.mobile.GoodsService; import com.ycwl.basic.service.mobile.GoodsService;
import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.ApiResponse;
import com.ycwl.basic.utils.JwtTokenUtil; import com.ycwl.basic.utils.JwtTokenUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@@ -21,26 +19,26 @@ import java.util.List;
*/ */
@RestController @RestController
@RequestMapping("/api/mobile/goods/v1") @RequestMapping("/api/mobile/goods/v1")
@Api(tags = "商品相关接口") // 商品相关接口
public class AppGoodsController { public class AppGoodsController {
@Autowired @Autowired
private GoodsService goodsService; private GoodsService goodsService;
@ApiOperation("商品列表") // 商品列表
@PostMapping("/goodsList") @PostMapping("/goodsList")
public ApiResponse<List<GoodsPageVO>> goodsList(@RequestBody GoodsReqQuery query) { public ApiResponse<List<GoodsPageVO>> goodsList(@RequestBody GoodsReqQuery query) {
return goodsService.goodsList(query); return goodsService.goodsList(query);
} }
@ApiOperation("源素材(原片/照片)商品列表") // 源素材(原片/照片)商品列表
@PostMapping("/sourceGoodsList") @PostMapping("/sourceGoodsList")
public ApiResponse<List<GoodsDetailVO>> sourceGoodsList(@RequestBody GoodsReqQuery query) { public ApiResponse<List<GoodsDetailVO>> sourceGoodsList(@RequestBody GoodsReqQuery query) {
List<GoodsDetailVO> goodsDetailVOS = goodsService.sourceGoodsList(query); List<GoodsDetailVO> goodsDetailVOS = goodsService.sourceGoodsList(query);
return ApiResponse.success(goodsDetailVOS); return ApiResponse.success(goodsDetailVOS);
} }
@ApiOperation("源素材(原片/照片)商品数量") // 源素材(原片/照片)商品数量
@PostMapping("/sourceGoodsCount") @PostMapping("/sourceGoodsCount")
public ApiResponse<Integer> sourceGoodsCount(@RequestBody GoodsReqQuery query) { public ApiResponse<Integer> sourceGoodsCount(@RequestBody GoodsReqQuery query) {
Integer count = goodsService.sourceGoodsCount(query); Integer count = goodsService.sourceGoodsCount(query);
@@ -60,7 +58,7 @@ public class AppGoodsController {
} }
@ApiOperation("成片vlog商品详情") // 成片vlog商品详情
@GetMapping("/getVideoGoodsDetail/{videoId}") @GetMapping("/getVideoGoodsDetail/{videoId}")
@IgnoreToken @IgnoreToken
public ApiResponse<VideoGoodsDetailVO> videoGoodsDetail(@PathVariable("videoId") Long videoId) { public ApiResponse<VideoGoodsDetailVO> videoGoodsDetail(@PathVariable("videoId") Long videoId) {
@@ -82,7 +80,7 @@ public class AppGoodsController {
* *
* @return 0没有任务 1 合成中 2 合成成功 * @return 0没有任务 1 合成中 2 合成成功
*/ */
@ApiOperation("查询用户当前景区的整体视频合成任务状态 0没有任务 1 合成中 2 合成成功 ") // 查询用户当前景区的整体视频合成任务状态 0没有任务 1 合成中 2 合成成功
@GetMapping("/getTaskStatus/") @GetMapping("/getTaskStatus/")
public ApiResponse<VideoTaskStatusVO> getAllTaskStatus() { public ApiResponse<VideoTaskStatusVO> getAllTaskStatus() {
JwtInfo worker = JwtTokenUtil.getWorker(); JwtInfo worker = JwtTokenUtil.getWorker();
@@ -95,7 +93,7 @@ public class AppGoodsController {
* @param templateId 模版id * @param templateId 模版id
* @return 1 合成中 2 合成成功 * @return 1 合成中 2 合成成功
*/ */
@ApiOperation("查询用户当前景区的具体模版视频合成任务状态 1 合成中 2 合成成功 ") // 查询用户当前景区的具体模版视频合成任务状态 1 合成中 2 合成成功
@GetMapping("/task/face/{faceId}/template/{templateId}") @GetMapping("/task/face/{faceId}/template/{templateId}")
public ApiResponse<VideoTaskStatusVO> getTemplateTaskStatus(@PathVariable("faceId") Long faceId, @PathVariable("templateId") Long templateId) { public ApiResponse<VideoTaskStatusVO> getTemplateTaskStatus(@PathVariable("faceId") Long faceId, @PathVariable("templateId") Long templateId) {
JwtInfo worker = JwtTokenUtil.getWorker(); JwtInfo worker = JwtTokenUtil.getWorker();

View File

@@ -6,8 +6,6 @@ import com.ycwl.basic.model.mobile.weChat.DTO.WeChatUserInfoUpdateDTO;
import com.ycwl.basic.model.pc.member.resp.MemberRespVO; import com.ycwl.basic.model.pc.member.resp.MemberRespVO;
import com.ycwl.basic.service.mobile.AppMemberService; import com.ycwl.basic.service.mobile.AppMemberService;
import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.ApiResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@@ -18,7 +16,7 @@ import org.springframework.web.bind.annotation.*;
*/ */
@RestController @RestController
@RequestMapping("/api/mobile/member/v1") @RequestMapping("/api/mobile/member/v1")
@Api(tags = "用户相关接口") // 用户相关接口
@Slf4j @Slf4j
public class AppMemberController { public class AppMemberController {
@@ -32,19 +30,29 @@ public class AppMemberController {
* @return * @return
* @throws Exception * @throws Exception
*/ */
@ApiOperation("登录") // 登录
@PostMapping("/{scenicId}/login") @PostMapping("/{scenicId}/login")
@IgnoreToken @IgnoreToken
public ApiResponse<?> login(@PathVariable("scenicId") Long scenicId ,@RequestBody WeChatUserInfoDTO userInfoDTO) throws Exception { public ApiResponse<?> login(@PathVariable("scenicId") Long scenicId ,@RequestBody WeChatUserInfoDTO userInfoDTO) throws Exception {
return memberService.login(scenicId, userInfoDTO.getCode(), userInfoDTO); return memberService.login(scenicId, userInfoDTO.getCode(), userInfoDTO);
} }
@PostMapping("/undefined/login")
@IgnoreToken
public ApiResponse<?> loginUndefined(@RequestBody WeChatUserInfoDTO userInfoDTO) throws Exception {
return memberService.login(null, userInfoDTO.getCode(), userInfoDTO);
}
@PostMapping({"//login", "/login"})
@IgnoreToken
public ApiResponse<?> loginNoScenicId(@RequestBody WeChatUserInfoDTO userInfoDTO) throws Exception {
return memberService.login(null, userInfoDTO.getCode(), userInfoDTO);
}
/** /**
* 获取用户信息 * 获取用户信息
* *
* @return * @return
*/ */
@ApiOperation("获取用户信息") // 获取用户信息
@GetMapping("/getUserInfo") @GetMapping("/getUserInfo")
public ApiResponse<MemberRespVO> getUserInfo() { public ApiResponse<MemberRespVO> getUserInfo() {
return memberService.getUserInfo(); return memberService.getUserInfo();
@@ -56,19 +64,19 @@ public class AppMemberController {
* @param userInfoUpdateDTO * @param userInfoUpdateDTO
* @return * @return
*/ */
@ApiOperation("修改用户信息") // 修改用户信息
@PostMapping("/update") @PostMapping("/update")
public ApiResponse<?> update(@RequestBody WeChatUserInfoUpdateDTO userInfoUpdateDTO) { public ApiResponse<?> update(@RequestBody WeChatUserInfoUpdateDTO userInfoUpdateDTO) {
return memberService.update(userInfoUpdateDTO); return memberService.update(userInfoUpdateDTO);
} }
@ApiOperation("新增或修改景区服务通知状态") // 新增或修改景区服务通知状态
@GetMapping("/updateScenicServiceNoticeStatus") @GetMapping("/updateScenicServiceNoticeStatus")
public ApiResponse<String> updateScenicServiceNoticeStatus(Long scenicId) { public ApiResponse<String> updateScenicServiceNoticeStatus(Long scenicId) {
return memberService.updateScenicServiceNoticeStatus(scenicId); return memberService.updateScenicServiceNoticeStatus(scenicId);
} }
@ApiOperation("查看景区服务通知状态 0关闭 1开启") // 查看景区服务通知状态 0关闭 1开启
@GetMapping("/getScenicServiceNoticeStatus") @GetMapping("/getScenicServiceNoticeStatus")
public ApiResponse<Integer> getScenicServiceNoticeStatus(Long scenicId) { public ApiResponse<Integer> getScenicServiceNoticeStatus(Long scenicId) {
return memberService.getScenicServiceNoticeStatus(scenicId); return memberService.getScenicServiceNoticeStatus(scenicId);

View File

@@ -18,8 +18,6 @@ import com.ycwl.basic.pay.entity.PayResponse;
import com.ycwl.basic.service.pc.OrderService; import com.ycwl.basic.service.pc.OrderService;
import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.ApiResponse;
import com.ycwl.basic.utils.JwtTokenUtil; import com.ycwl.basic.utils.JwtTokenUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@@ -31,7 +29,7 @@ import java.util.Map;
*/ */
@RestController @RestController
@RequestMapping("/api/mobile/order/v1") @RequestMapping("/api/mobile/order/v1")
@Api(tags = "订单相关接口") // 订单相关接口
public class AppOrderController { public class AppOrderController {
@Autowired @Autowired
@@ -43,7 +41,7 @@ public class AppOrderController {
@Autowired @Autowired
private FaceMapper faceMapper; private FaceMapper faceMapper;
@ApiOperation("用户端订单列表查询") // 用户端订单列表查询
@PostMapping("/page") @PostMapping("/page")
public ApiResponse<PageInfo<OrderAppRespVO>> pageQuery(@RequestBody OrderAppPageReq orderReqQuery) { public ApiResponse<PageInfo<OrderAppRespVO>> pageQuery(@RequestBody OrderAppPageReq orderReqQuery) {
String userId = BaseContextHandler.getUserId(); String userId = BaseContextHandler.getUserId();
@@ -51,26 +49,26 @@ public class AppOrderController {
return orderService.appPageQuery(orderReqQuery); return orderService.appPageQuery(orderReqQuery);
} }
@ApiOperation("用户端订单详情查询") // 用户端订单详情查询
@GetMapping("getOrderDetails/{id}") @GetMapping("getOrderDetails/{id}")
public ApiResponse<OrderAppRespVO> getOrderDetails(@PathVariable("id") Long id) { public ApiResponse<OrderAppRespVO> getOrderDetails(@PathVariable("id") Long id) {
return orderService.appDetail(id); return orderService.appDetail(id);
} }
@ApiOperation("用户端订单新增") // 用户端订单新增
@PostMapping("/addOrder") @PostMapping("/addOrder")
public ApiResponse<Map<String, Object>> addOrder(@RequestBody CreateOrderReqVO orderAddReq) throws Exception { public ApiResponse<Map<String, Object>> addOrder(@RequestBody CreateOrderReqVO orderAddReq) throws Exception {
JwtInfo worker = JwtTokenUtil.getWorker(); JwtInfo worker = JwtTokenUtil.getWorker();
return orderService.createOrder(worker.getUserId(), orderAddReq); return orderService.createOrder(worker.getUserId(), orderAddReq);
} }
@ApiOperation("查询订单") // 查询订单
@GetMapping("/queryOrder") @GetMapping("/queryOrder")
public ApiResponse<PayResponse> queryOrder(@RequestParam("orderId") Long orderId) { public ApiResponse<PayResponse> queryOrder(@RequestParam("orderId") Long orderId) {
return ApiResponse.success(orderService.queryOrder(orderId)); return ApiResponse.success(orderService.queryOrder(orderId));
} }
@ApiOperation("用户端打包订单新增") // 用户端打包订单新增
@PostMapping("/addBatchOrder") @PostMapping("/addBatchOrder")
public ApiResponse<Map<String, Object>> addOrder(@RequestBody CreateBatchOrderReqVO batchOrderReqVO) throws Exception { public ApiResponse<Map<String, Object>> addOrder(@RequestBody CreateBatchOrderReqVO batchOrderReqVO) throws Exception {
JwtInfo worker = JwtTokenUtil.getWorker(); JwtInfo worker = JwtTokenUtil.getWorker();
@@ -78,7 +76,7 @@ public class AppOrderController {
} }
@ApiOperation("获取用户订单数量") // 获取用户订单数量
@GetMapping("/getUserOrderCount") @GetMapping("/getUserOrderCount")
public ApiResponse<Integer> getUserOrderCount() { public ApiResponse<Integer> getUserOrderCount() {
Long userId = Long.parseLong(BaseContextHandler.getUserId()); Long userId = Long.parseLong(BaseContextHandler.getUserId());
@@ -86,7 +84,7 @@ public class AppOrderController {
return orderService.getOrderCountByUserId(userId); return orderService.getOrderCountByUserId(userId);
} }
@ApiOperation(value = "发起退款", notes = "发起退款") // 发起退款
@PostMapping("/refundOrder") @PostMapping("/refundOrder")
public ApiResponse<?> refundOrder(@RequestBody RefundOrderReq refundOrderReq) { public ApiResponse<?> refundOrder(@RequestBody RefundOrderReq refundOrderReq) {
return orderService.refundOrder(refundOrderReq); return orderService.refundOrder(refundOrderReq);

View File

@@ -17,8 +17,6 @@ import com.ycwl.basic.service.mobile.AppScenicService;
import com.ycwl.basic.service.pc.FaceService; import com.ycwl.basic.service.pc.FaceService;
import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.ApiResponse;
import com.ycwl.basic.utils.JwtTokenUtil; import com.ycwl.basic.utils.JwtTokenUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -35,7 +33,7 @@ import java.util.List;
@Deprecated @Deprecated
@RestController @RestController
@RequestMapping("/api/mobile/scenic/v1") @RequestMapping("/api/mobile/scenic/v1")
@Api(tags = "景区相关接口") // 景区相关接口
public class AppScenicController { public class AppScenicController {
@Autowired @Autowired
@@ -50,7 +48,7 @@ public class AppScenicController {
add("3936940597855784960"); add("3936940597855784960");
}}; }};
@ApiOperation("分页查询景区列表") // 分页查询景区列表
@PostMapping("/page") @PostMapping("/page")
public ApiResponse<PageInfo<ScenicAppVO>> pageQuery(@RequestBody ScenicReqQuery scenicReqQuery){ public ApiResponse<PageInfo<ScenicAppVO>> pageQuery(@RequestBody ScenicReqQuery scenicReqQuery){
String userId = BaseContextHandler.getUserId(); String userId = BaseContextHandler.getUserId();
@@ -60,7 +58,7 @@ public class AppScenicController {
return ApiResponse.success(new PageInfo<>(new ArrayList<>())); return ApiResponse.success(new PageInfo<>(new ArrayList<>()));
} }
} }
@ApiOperation("根据id查询景区详情") // 根据id查询景区详情
@IgnoreToken @IgnoreToken
@GetMapping("/{id}") @GetMapping("/{id}")
public ApiResponse<ScenicRespVO> getDetails(@PathVariable Long id){ public ApiResponse<ScenicRespVO> getDetails(@PathVariable Long id){
@@ -91,19 +89,19 @@ public class AppScenicController {
return ApiResponse.success(resp); return ApiResponse.success(resp);
} }
@ApiOperation("查询景区设备总数和拍到用户的机位数量") // 查询景区设备总数和拍到用户的机位数量
@GetMapping("/{scenicId}/deviceCount/") @GetMapping("/{scenicId}/deviceCount/")
public ApiResponse<ScenicDeviceCountVO> deviceCountByScenicId(@PathVariable Long scenicId){ public ApiResponse<ScenicDeviceCountVO> deviceCountByScenicId(@PathVariable Long scenicId){
return appScenicService.deviceCountByScenicId(scenicId); return appScenicService.deviceCountByScenicId(scenicId);
} }
@ApiOperation("景区视频源素材列表") // 景区视频源素材列表
@GetMapping("/contentList/") @GetMapping("/contentList/")
public ApiResponse<List<ContentPageVO>> contentList() { public ApiResponse<List<ContentPageVO>> contentList() {
return faceService.contentListUseDefaultFace(); return faceService.contentListUseDefaultFace();
} }
@ApiOperation("景区视频源素材列表") // 景区视频源素材列表
@GetMapping("/face/{faceId}/contentList") @GetMapping("/face/{faceId}/contentList")
public ApiResponse<List<ContentPageVO>> contentList(@PathVariable Long faceId) { public ApiResponse<List<ContentPageVO>> contentList(@PathVariable Long faceId) {
List<ContentPageVO> contentPageVOS = faceService.faceContentList(faceId); List<ContentPageVO> contentPageVOS = faceService.faceContentList(faceId);

View File

@@ -8,7 +8,6 @@ import com.ycwl.basic.service.mobile.GoodsService;
import com.ycwl.basic.service.task.TaskService; import com.ycwl.basic.service.task.TaskService;
import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.ApiResponse;
import com.ycwl.basic.utils.JwtTokenUtil; import com.ycwl.basic.utils.JwtTokenUtil;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
@@ -46,7 +45,7 @@ public class AppTaskController {
* @param templateId 模版id * @param templateId 模版id
* @return 1 合成中 2 合成成功 * @return 1 合成中 2 合成成功
*/ */
@ApiOperation("查询用户当前景区的具体模版视频合成任务状态 1 合成中 2 合成成功 ") // 查询用户当前景区的具体模版视频合成任务状态 1 合成中 2 合成成功
@GetMapping("/face/{faceId}/template/{templateId}") @GetMapping("/face/{faceId}/template/{templateId}")
@IgnoreLogReq @IgnoreLogReq
public ApiResponse<VideoTaskStatusVO> getTemplateTaskStatus(@PathVariable("faceId") Long faceId, @PathVariable("templateId") Long templateId) { public ApiResponse<VideoTaskStatusVO> getTemplateTaskStatus(@PathVariable("faceId") Long faceId, @PathVariable("templateId") Long templateId) {

View File

@@ -4,7 +4,6 @@ package com.ycwl.basic.controller.mobile;
import com.ycwl.basic.annotation.IgnoreToken; import com.ycwl.basic.annotation.IgnoreToken;
import com.ycwl.basic.repository.ScenicRepository; import com.ycwl.basic.repository.ScenicRepository;
import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.ApiResponse;
import io.swagger.annotations.Api;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
@@ -23,7 +22,7 @@ import java.util.List;
*/ */
@RestController @RestController
@RequestMapping("/api/mobile/wx/notify/v1") @RequestMapping("/api/mobile/wx/notify/v1")
@Api(tags = "微信消息模板通知") // 微信消息模板通知
public class AppWxNotifyController { public class AppWxNotifyController {
@Autowired @Autowired
private ScenicRepository scenicRepository; private ScenicRepository scenicRepository;

View File

@@ -8,8 +8,6 @@ import com.ycwl.basic.model.wx.WxPayRespVO;
import com.ycwl.basic.pay.entity.PayResponse; import com.ycwl.basic.pay.entity.PayResponse;
import com.ycwl.basic.service.mobile.WxPayService; import com.ycwl.basic.service.mobile.WxPayService;
import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.ApiResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
@@ -31,13 +29,13 @@ import java.security.GeneralSecurityException;
*/ */
@RestController @RestController
@RequestMapping("/api/mobile/wx/pay/v1") @RequestMapping("/api/mobile/wx/pay/v1")
@Api(tags = "微信支付相关接口") // 微信支付相关接口
public class AppWxPayController { public class AppWxPayController {
@Autowired @Autowired
private WxPayService wxPayService; private WxPayService wxPayService;
@ApiOperation(value = "微信支付回调", notes = "微信支付回调") // 微信支付回调
@PostMapping("/payNotify") @PostMapping("/payNotify")
@IgnoreToken @IgnoreToken
public ApiResponse<?> payNotify(HttpServletRequest request) { public ApiResponse<?> payNotify(HttpServletRequest request) {
@@ -58,7 +56,7 @@ public class AppWxPayController {
return ApiResponse.success(BizCodeEnum.REQUEST_OK); return ApiResponse.success(BizCodeEnum.REQUEST_OK);
} }
@ApiOperation(value = "微信支付退款回调", notes = "微信支付退款回调") // 微信支付退款回调
@PostMapping("/{scenicId}/refundNotify") @PostMapping("/{scenicId}/refundNotify")
@IgnoreToken @IgnoreToken
public ApiResponse<?> refundNotify(@PathVariable Long scenicId, HttpServletRequest request) throws GeneralSecurityException, IOException { public ApiResponse<?> refundNotify(@PathVariable Long scenicId, HttpServletRequest request) throws GeneralSecurityException, IOException {

View File

@@ -14,10 +14,7 @@ import com.ycwl.basic.service.mobile.AppScenicService;
import com.ycwl.basic.service.pc.ScenicAccountService; import com.ycwl.basic.service.pc.ScenicAccountService;
import com.ycwl.basic.service.pc.ScenicService; import com.ycwl.basic.service.pc.ScenicService;
import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.ApiResponse;
import io.swagger.annotations.Api; import org.apache.commons.lang3.Strings;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
@@ -38,7 +35,7 @@ import static com.ycwl.basic.constant.JwtRoleConstant.MERCHANT;
*/ */
@RestController @RestController
@RequestMapping("/api/mobile/scenicAccount/v1") @RequestMapping("/api/mobile/scenicAccount/v1")
@Api(tags = "景区账号相关接口") // 景区账号相关接口
public class AppScenicAccountController { public class AppScenicAccountController {
@Autowired @Autowired
private ScenicAccountService accountService; private ScenicAccountService accountService;
@@ -47,7 +44,7 @@ public class AppScenicAccountController {
@Autowired @Autowired
private ScenicService adminScenicService; private ScenicService adminScenicService;
@ApiOperation("登录") // 登录
@PostMapping("/login") @PostMapping("/login")
@IgnoreToken @IgnoreToken
public ApiResponse<ScenicLoginOldRespVO> login(@RequestBody ScenicLoginReq scenicLoginReq) throws Exception { public ApiResponse<ScenicLoginOldRespVO> login(@RequestBody ScenicLoginReq scenicLoginReq) throws Exception {
@@ -68,16 +65,16 @@ public class AppScenicAccountController {
@GetMapping("/myScenicList") @GetMapping("/myScenicList")
public ApiResponse<List<ScenicRespVO>> myScenicList() { public ApiResponse<List<ScenicRespVO>> myScenicList() {
List<ScenicRespVO> list = Collections.emptyList(); List<ScenicRespVO> list;
if (StringUtils.equals(BaseContextHandler.getRoleId(), MERCHANT.type)) { if (Strings.CS.equals(BaseContextHandler.getRoleId(), MERCHANT.type)) {
String userId = BaseContextHandler.getUserId(); String userId = BaseContextHandler.getUserId();
ScenicAccountEntity account = accountService.getScenicAccountById(Long.valueOf(userId)); ScenicAccountEntity account = accountService.getScenicAccountById(Long.valueOf(userId));
if (account == null || account.getScenicId().isEmpty()) { if (account == null || account.getScenicId().isEmpty()) {
return ApiResponse.fail("景区账号未绑定景区"); return ApiResponse.fail("景区账号未绑定景区");
} }
list = account.getScenicId().stream().map(id -> { list = account.getScenicId().stream()
return scenicService.getDetails(id).getData(); .map(id -> scenicService.getDetails(id).getData())
}).toList(); .toList();
} else { } else {
list = adminScenicService.list(new ScenicReqQuery()).getData(); list = adminScenicService.list(new ScenicReqQuery()).getData();
} }
@@ -108,6 +105,7 @@ public class AppScenicAccountController {
} }
@GetMapping("/devices") @GetMapping("/devices")
@Deprecated
public ApiResponse<List<DeviceRespVO>> getDeviceList() { public ApiResponse<List<DeviceRespVO>> getDeviceList() {
String userId = BaseContextHandler.getUserId(); String userId = BaseContextHandler.getUserId();
ScenicAccountEntity account = accountService.getScenicAccountById(Long.valueOf(userId)); ScenicAccountEntity account = accountService.getScenicAccountById(Long.valueOf(userId));

View File

@@ -9,7 +9,6 @@ import com.ycwl.basic.model.pc.scenic.entity.ScenicAccountEntity;
import com.ycwl.basic.service.pc.OrderService; import com.ycwl.basic.service.pc.OrderService;
import com.ycwl.basic.service.pc.ScenicAccountService; import com.ycwl.basic.service.pc.ScenicAccountService;
import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.ApiResponse;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
@@ -21,7 +20,7 @@ import java.util.List;
@RestController @RestController
@RequestMapping("/api/mobile/scenic/order/v1") @RequestMapping("/api/mobile/scenic/order/v1")
@Api(tags = "景区账号相关接口") // 景区账号相关接口
public class AppScenicOrderController { public class AppScenicOrderController {
@Autowired @Autowired
private OrderService orderService; private OrderService orderService;

View File

@@ -11,8 +11,6 @@ import com.ycwl.basic.model.mobile.statistic.resp.AppStatisticsFunnelVO;
import com.ycwl.basic.service.mobile.AppStatisticsService; import com.ycwl.basic.service.mobile.AppStatisticsService;
import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.ApiResponse;
import com.ycwl.basic.utils.JwtTokenUtil; import com.ycwl.basic.utils.JwtTokenUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@@ -24,41 +22,41 @@ import org.springframework.web.bind.annotation.*;
@Slf4j @Slf4j
@RestController @RestController
@RequestMapping("/api/mobile/statistics/v1") @RequestMapping("/api/mobile/statistics/v1")
@Api(tags = "数据统计相关接口") // 数据统计相关接口
public class AppStatisticsController { public class AppStatisticsController {
@Autowired @Autowired
private AppStatisticsService statisticsService; private AppStatisticsService statisticsService;
@ApiOperation("支付订单金额、预览_支付转化率、扫码_付费用户转化率") // 支付订单金额、预览_支付转化率、扫码_付费用户转化率
@PostMapping("/one") @PostMapping("/one")
public ApiResponse<AppSta1VO> oneStatistics(@RequestBody CommonQueryReq query) { public ApiResponse<AppSta1VO> oneStatistics(@RequestBody CommonQueryReq query) {
return statisticsService.oneStatistics(query); return statisticsService.oneStatistics(query);
} }
@ApiOperation("支付订单数、现场订单数、推送订单数统计") // 支付订单数、现场订单数、推送订单数统计
@PostMapping("/two") @PostMapping("/two")
public ApiResponse<AppSta2VO> twoStatistics(@RequestBody CommonQueryReq query) { public ApiResponse<AppSta2VO> twoStatistics(@RequestBody CommonQueryReq query) {
return statisticsService.twoStatistics(query); return statisticsService.twoStatistics(query);
} }
@ApiOperation("扫码访问人数、推送订阅人数、预览视频人数统计") // 扫码访问人数、推送订阅人数、预览视频人数统计
@PostMapping("/free") @PostMapping("/free")
public ApiResponse<AppSta3VO> freeStatistics(@RequestBody CommonQueryReq query) { public ApiResponse<AppSta3VO> freeStatistics(@RequestBody CommonQueryReq query) {
return statisticsService.freeStatistics(query); return statisticsService.freeStatistics(query);
} }
@ApiOperation("用户转化漏斗") // 用户转化漏斗
@PostMapping("/userConversionFunnel") @PostMapping("/userConversionFunnel")
public ApiResponse<AppStatisticsFunnelVO> userConversionFunnel(@RequestBody CommonQueryReq query) { public ApiResponse<AppStatisticsFunnelVO> userConversionFunnel(@RequestBody CommonQueryReq query) {
return statisticsService.userConversionFunnel(query); return statisticsService.userConversionFunnel(query);
} }
@ApiOperation("统计数据记录") // 统计数据记录
@PostMapping("/addStatistics") @PostMapping("/addStatistics")
@IgnoreToken @IgnoreToken
public ApiResponse<String> addStatistics(@RequestBody StatisticsRecordAddReq req) { public ApiResponse<String> addStatistics(@RequestBody StatisticsRecordAddReq req) {

View File

@@ -8,8 +8,6 @@ import com.ycwl.basic.model.pc.adminUser.resp.AdminUserListRespVO;
import com.ycwl.basic.model.pc.adminUser.resp.StaffSimpleInfoRespVO; import com.ycwl.basic.model.pc.adminUser.resp.StaffSimpleInfoRespVO;
import com.ycwl.basic.service.pc.AdminUserService; import com.ycwl.basic.service.pc.AdminUserService;
import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.ApiResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@@ -19,7 +17,7 @@ import java.util.List;
@RestController @RestController
@RequestMapping("/api/adminUser/v1") @RequestMapping("/api/adminUser/v1")
@Slf4j @Slf4j
@Api(tags = "系统后台用户管理") // 系统后台用户管理
public class AdminUserController { public class AdminUserController {
@Autowired @Autowired
@@ -27,7 +25,7 @@ public class AdminUserController {
@PostMapping(value = "/login") @PostMapping(value = "/login")
@ApiOperation(value = "登录") // 登录
@IgnoreToken @IgnoreToken
public ApiResponse login(@RequestBody LoginReqVO loginReqVO) throws Exception { public ApiResponse login(@RequestBody LoginReqVO loginReqVO) throws Exception {
log.info("{}:开始登录管理后台", loginReqVO.getAccount()); log.info("{}:开始登录管理后台", loginReqVO.getAccount());
@@ -35,49 +33,49 @@ public class AdminUserController {
} }
@PostMapping(value = "/updatePassword") @PostMapping(value = "/updatePassword")
@ApiOperation(value = "用户自己修改密码") // 用户自己修改密码
public ApiResponse updatePassword(@RequestBody UpdatePasswordReqVO updatePasswordReqVO) throws Exception { public ApiResponse updatePassword(@RequestBody UpdatePasswordReqVO updatePasswordReqVO) throws Exception {
log.info("{}:开始修改管理后台密码", updatePasswordReqVO.getId()); log.info("{}:开始修改管理后台密码", updatePasswordReqVO.getId());
return adminUserService.updatePassword(updatePasswordReqVO); return adminUserService.updatePassword(updatePasswordReqVO);
} }
@PostMapping(value = "/list") @PostMapping(value = "/list")
@ApiOperation(value = "系统后台用户列表") // 系统后台用户列表
//@IgnoreToken //@IgnoreToken
public ApiResponse<PageInfo<List<AdminUserListRespVO>>> list(@RequestBody AdminUserListReqVO adminUserListReqVO) { public ApiResponse<PageInfo<List<AdminUserListRespVO>>> list(@RequestBody AdminUserListReqVO adminUserListReqVO) {
return adminUserService.list(adminUserListReqVO); return adminUserService.list(adminUserListReqVO);
} }
@PostMapping(value = "/query/list") @PostMapping(value = "/query/list")
@ApiOperation(value = "系统后台用户列表查询") // 系统后台用户列表查询
@IgnoreToken @IgnoreToken
public ApiResponse<PageInfo<List<AdminUserListRespVO>>> queryList(@RequestBody AdminUserListReqVO adminUserListReqVO) { public ApiResponse<PageInfo<List<AdminUserListRespVO>>> queryList(@RequestBody AdminUserListReqVO adminUserListReqVO) {
return adminUserService.list(adminUserListReqVO); return adminUserService.list(adminUserListReqVO);
} }
@PostMapping(value = "/add") @PostMapping(value = "/add")
@ApiOperation(value = "添加系统后台用户") // 添加系统后台用户
//@IgnoreToken //@IgnoreToken
public ApiResponse add(@RequestBody AddOrUpdateAdminUserReqVO addOrUpdateAdminUserReqVO) { public ApiResponse add(@RequestBody AddOrUpdateAdminUserReqVO addOrUpdateAdminUserReqVO) {
return adminUserService.addOrUpdate(addOrUpdateAdminUserReqVO); return adminUserService.addOrUpdate(addOrUpdateAdminUserReqVO);
} }
@PostMapping(value = "/update") @PostMapping(value = "/update")
@ApiOperation(value = "更新系统后台用户") // 更新系统后台用户
//@IgnoreToken //@IgnoreToken
public ApiResponse update(@RequestBody AddOrUpdateAdminUserReqVO addOrUpdateAdminUserReqVO) { public ApiResponse update(@RequestBody AddOrUpdateAdminUserReqVO addOrUpdateAdminUserReqVO) {
return adminUserService.addOrUpdate(addOrUpdateAdminUserReqVO); return adminUserService.addOrUpdate(addOrUpdateAdminUserReqVO);
} }
@GetMapping(value = "/delete/{id}") @GetMapping(value = "/delete/{id}")
@ApiOperation(value = "删除") // 删除
//@IgnoreToken //@IgnoreToken
public ApiResponse delete(@PathVariable("id") String id) { public ApiResponse delete(@PathVariable("id") String id) {
return adminUserService.delete(id); return adminUserService.delete(id);
} }
@PostMapping(value = "/resetPassword") @PostMapping(value = "/resetPassword")
@ApiOperation(value = "重置密码") // 重置密码
//@IgnoreToken //@IgnoreToken
public ApiResponse resetPassword(@RequestBody ResetPasswordReqVO resetPasswordReqVO) { public ApiResponse resetPassword(@RequestBody ResetPasswordReqVO resetPasswordReqVO) {
log.info("{}:开始重置后台密码", resetPasswordReqVO.getId()); log.info("{}:开始重置后台密码", resetPasswordReqVO.getId());

View File

@@ -14,8 +14,6 @@ import com.ycwl.basic.repository.ScenicRepository;
import com.ycwl.basic.storage.StorageFactory; import com.ycwl.basic.storage.StorageFactory;
import com.ycwl.basic.storage.adapters.IStorageAdapter; import com.ycwl.basic.storage.adapters.IStorageAdapter;
import com.ycwl.basic.model.pc.mp.MpConfigEntity; import com.ycwl.basic.model.pc.mp.MpConfigEntity;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@@ -30,7 +28,7 @@ import java.util.List;
*/ */
@RestController @RestController
@RequestMapping("/api/broker/v1") @RequestMapping("/api/broker/v1")
@Api(tags = "推客(推广人)管理") // 推客(推广人)管理
public class BrokerController { public class BrokerController {
@Autowired @Autowired
private BrokerService brokerService; private BrokerService brokerService;
@@ -41,64 +39,64 @@ public class BrokerController {
@Autowired @Autowired
private ScenicRepository scenicRepository; private ScenicRepository scenicRepository;
@ApiOperation("分页查询") // 分页查询
@PostMapping("/page") @PostMapping("/page")
public ApiResponse page(@RequestBody BrokerReqQuery brokerReqQuery){ public ApiResponse page(@RequestBody BrokerReqQuery brokerReqQuery){
return ApiResponse.success(brokerService.pageQuery(brokerReqQuery)); return ApiResponse.success(brokerService.pageQuery(brokerReqQuery));
} }
@ApiOperation("列表查询") // 列表查询
@PostMapping("/list") @PostMapping("/list")
public ApiResponse list(@RequestBody BrokerReqQuery brokerReqQuery){ public ApiResponse list(@RequestBody BrokerReqQuery brokerReqQuery){
return ApiResponse.success(brokerService.list(brokerReqQuery)); return ApiResponse.success(brokerService.list(brokerReqQuery));
} }
@ApiOperation("详情查询") // 详情查询
@GetMapping("/getDetails/{id}") @GetMapping("/getDetails/{id}")
public ApiResponse getDetails(@PathVariable("id") Long id){ public ApiResponse getDetails(@PathVariable("id") Long id){
return ApiResponse.success(brokerService.getById(id)); return ApiResponse.success(brokerService.getById(id));
} }
@ApiOperation("新增或修改") // 新增或修改
@PostMapping("/addOrUpdate") @PostMapping("/addOrUpdate")
public ApiResponse addOrUpdate(@RequestBody BrokerEntity broker){ public ApiResponse addOrUpdate(@RequestBody BrokerEntity broker){
return ApiResponse.success(brokerService.addOrUpdate(broker)); return ApiResponse.success(brokerService.addOrUpdate(broker));
} }
@ApiOperation("删除") // 删除
@DeleteMapping("/delete/{id}") @DeleteMapping("/delete/{id}")
public ApiResponse delete(@PathVariable("id") Long id){ public ApiResponse delete(@PathVariable("id") Long id){
return ApiResponse.success(brokerService.delete(id)); return ApiResponse.success(brokerService.delete(id));
} }
@ApiOperation("修改状态") // 修改状态
@PutMapping("/updateStatus/{id}") @PutMapping("/updateStatus/{id}")
public ApiResponse updateStatus(@PathVariable("id") Long id){ public ApiResponse updateStatus(@PathVariable("id") Long id){
return ApiResponse.success(brokerService.updateStatus(id)); return ApiResponse.success(brokerService.updateStatus(id));
} }
@ApiOperation("修改状态") // 修改状态
@PutMapping("/updateBrokerEnable/{id}") @PutMapping("/updateBrokerEnable/{id}")
public ApiResponse updateBrokerEnable(@PathVariable("id") Long id){ public ApiResponse updateBrokerEnable(@PathVariable("id") Long id){
return ApiResponse.success(brokerService.updateBrokerEnable(id)); return ApiResponse.success(brokerService.updateBrokerEnable(id));
} }
@ApiOperation("推客记录分页查询") // 推客记录分页查询
@PostMapping("/record/page") @PostMapping("/record/page")
public ApiResponse pageRecord(@RequestBody BrokerRecordReqQuery brokerRecordReqQuery) { public ApiResponse pageRecord(@RequestBody BrokerRecordReqQuery brokerRecordReqQuery) {
return ApiResponse.success(brokerRecordService.pageQuery(brokerRecordReqQuery)); return ApiResponse.success(brokerRecordService.pageQuery(brokerRecordReqQuery));
} }
@ApiOperation("推客记录列表查询") // 推客记录列表查询
@PostMapping("/record/list") @PostMapping("/record/list")
public ApiResponse listRecord(@RequestBody BrokerRecordReqQuery brokerRecordReqQuery) { public ApiResponse listRecord(@RequestBody BrokerRecordReqQuery brokerRecordReqQuery) {
return ApiResponse.success(brokerRecordService.list(brokerRecordReqQuery)); return ApiResponse.success(brokerRecordService.list(brokerRecordReqQuery));
} }
@ApiOperation("推客记录详情查询") // 推客记录详情查询
@GetMapping("/record/getDetails/{id}") @GetMapping("/record/getDetails/{id}")
public ApiResponse getRecordDetails(@PathVariable("id") Long id) { public ApiResponse getRecordDetails(@PathVariable("id") Long id) {
return ApiResponse.success(brokerRecordService.getById(id)); return ApiResponse.success(brokerRecordService.getById(id));
} }
@ApiOperation("根据brokerId和时间范围查询每天的记录数量和orderPrice汇总") // 根据brokerId和时间范围查询每天的记录数量和orderPrice汇总
@GetMapping("/{id}/record/summary") @GetMapping("/{id}/record/summary")
public ApiResponse<List<DailySummaryRespVO>> getDailySummaryByBrokerId( public ApiResponse<List<DailySummaryRespVO>> getDailySummaryByBrokerId(
@PathVariable("id") Long brokerId, @PathVariable("id") Long brokerId,
@@ -107,7 +105,7 @@ public class BrokerController {
return ApiResponse.success(brokerRecordService.getDailySummaryByBrokerId(brokerId, startTime, endTime)); return ApiResponse.success(brokerRecordService.getDailySummaryByBrokerId(brokerId, startTime, endTime));
} }
@ApiOperation("根据景区ID下载小程序二维码") // 根据景区ID下载小程序二维码
@GetMapping("/{id}/QRCode") @GetMapping("/{id}/QRCode")
public ApiResponse<String> downloadQrCode(@PathVariable Long id) { public ApiResponse<String> downloadQrCode(@PathVariable Long id) {
BrokerRespVO broker = brokerService.getById(id); BrokerRespVO broker = brokerService.getById(id);

View File

@@ -8,8 +8,6 @@ import com.ycwl.basic.model.pc.coupon.resp.CouponRespVO;
import com.ycwl.basic.model.pc.price.resp.GoodsListRespVO; import com.ycwl.basic.model.pc.price.resp.GoodsListRespVO;
import com.ycwl.basic.service.pc.CouponService; import com.ycwl.basic.service.pc.CouponService;
import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.ApiResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@@ -17,7 +15,7 @@ import java.util.List;
@RestController @RestController
@RequestMapping("/api/coupon/v1") @RequestMapping("/api/coupon/v1")
@Api(tags = "优惠券管理") // 优惠券管理
public class CouponController { public class CouponController {
@Autowired @Autowired
private CouponService couponService; private CouponService couponService;
@@ -31,13 +29,13 @@ public class CouponController {
return ApiResponse.success(data); return ApiResponse.success(data);
} }
@ApiOperation("新增优惠券") // 新增优惠券
@PostMapping("/add") @PostMapping("/add")
public ApiResponse<Integer> add(@RequestBody CouponEntity coupon) { public ApiResponse<Integer> add(@RequestBody CouponEntity coupon) {
return ApiResponse.success(couponService.add(coupon)); return ApiResponse.success(couponService.add(coupon));
} }
@ApiOperation("更新优惠券") // 更新优惠券
@PostMapping("/update/{id}") @PostMapping("/update/{id}")
public ApiResponse<Boolean> update(@PathVariable Integer id, @RequestBody CouponEntity coupon) { public ApiResponse<Boolean> update(@PathVariable Integer id, @RequestBody CouponEntity coupon) {
coupon.setId(id); coupon.setId(id);
@@ -49,19 +47,19 @@ public class CouponController {
return ApiResponse.success(couponService.updateStatus(id)); return ApiResponse.success(couponService.updateStatus(id));
} }
@ApiOperation("删除优惠券") // 删除优惠券
@DeleteMapping("/delete/{id}") @DeleteMapping("/delete/{id}")
public ApiResponse<Boolean> delete(@PathVariable Integer id) { public ApiResponse<Boolean> delete(@PathVariable Integer id) {
return ApiResponse.success(couponService.delete(id)); return ApiResponse.success(couponService.delete(id));
} }
@ApiOperation("根据ID查询优惠券") // 根据ID查询优惠券
@GetMapping("/get/{id}") @GetMapping("/get/{id}")
public ApiResponse<CouponEntity> getById(@PathVariable Integer id) { public ApiResponse<CouponEntity> getById(@PathVariable Integer id) {
return ApiResponse.success(couponService.getById(id)); return ApiResponse.success(couponService.getById(id));
} }
@ApiOperation("分页查询优惠券列表") // 分页查询优惠券列表
@PostMapping("/page") @PostMapping("/page")
public ApiResponse<PageInfo<CouponRespVO>> list(@RequestBody CouponQueryReq couponQuery) { public ApiResponse<PageInfo<CouponRespVO>> list(@RequestBody CouponQueryReq couponQuery) {
PageHelper.startPage(couponQuery.getPageNum(), couponQuery.getPageSize()); PageHelper.startPage(couponQuery.getPageNum(), couponQuery.getPageSize());

View File

@@ -0,0 +1,22 @@
package com.ycwl.basic.controller.pc;
import com.github.pagehelper.PageInfo;
import com.ycwl.basic.model.pc.couponRecord.req.CouponRecordPageQueryReq;
import com.ycwl.basic.model.pc.couponRecord.resp.CouponRecordPageResp;
import com.ycwl.basic.service.pc.CouponRecordService;
import com.ycwl.basic.utils.ApiResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/api/coupon/record/v1")
public class CouponRecordController {
@Autowired
private CouponRecordService couponRecordService;
@PostMapping("/page")
public ApiResponse<PageInfo<CouponRecordPageResp>> pageQuery(@RequestBody CouponRecordPageQueryReq query) {
return couponRecordService.pageQuery(query);
}
}

View File

@@ -10,8 +10,6 @@ import com.ycwl.basic.model.pc.device.resp.DeviceRespVO;
import com.ycwl.basic.model.pc.template.req.TemplateSortRequest; import com.ycwl.basic.model.pc.template.req.TemplateSortRequest;
import com.ycwl.basic.service.pc.DeviceService; import com.ycwl.basic.service.pc.DeviceService;
import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.ApiResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@@ -21,43 +19,43 @@ import org.springframework.web.bind.annotation.*;
*/ */
@RestController @RestController
@RequestMapping("/api/device/v1") @RequestMapping("/api/device/v1")
@Api(tags = "设备管理") // 设备管理
public class DeviceController { public class DeviceController {
@Autowired @Autowired
private DeviceService deviceService; private DeviceService deviceService;
@ApiOperation("设备分页查询") // 设备分页查询
@PostMapping("/page") @PostMapping("/page")
public ApiResponse<PageInfo<DeviceRespVO>> pageQuery(@RequestBody DeviceReqQuery deviceReqQuery) { public ApiResponse<PageInfo<DeviceRespVO>> pageQuery(@RequestBody DeviceReqQuery deviceReqQuery) {
return deviceService.pageQuery(deviceReqQuery); return deviceService.pageQuery(deviceReqQuery);
} }
@ApiOperation("设备列表查询") // 设备列表查询
@PostMapping("/list") @PostMapping("/list")
public ApiResponse list(@RequestBody DeviceReqQuery deviceReqQuery) { public ApiResponse list(@RequestBody DeviceReqQuery deviceReqQuery) {
return deviceService.list(deviceReqQuery); return deviceService.list(deviceReqQuery);
} }
@ApiOperation("设备详情查询") // 设备详情查询
@GetMapping("/getDetails/{id}") @GetMapping("/getDetails/{id}")
public ApiResponse<DeviceRespVO> getDetails(@PathVariable("id") Long id) { public ApiResponse<DeviceRespVO> getDetails(@PathVariable("id") Long id) {
return deviceService.getById(id); return deviceService.getById(id);
} }
@ApiOperation("新增或修改设备") // 新增或修改设备
@PostMapping("/addOrUpdate") @PostMapping("/addOrUpdate")
public ApiResponse addOrUpdate(@RequestBody DeviceAddOrUpdateReq deviceReqQuery) { public ApiResponse addOrUpdate(@RequestBody DeviceAddOrUpdateReq deviceReqQuery) {
return deviceService.addOrUpdate(deviceReqQuery); return deviceService.addOrUpdate(deviceReqQuery);
} }
@ApiOperation("删除设备") // 删除设备
@DeleteMapping("/delete/{id}") @DeleteMapping("/delete/{id}")
public ApiResponse delete(@PathVariable("id") Long id) { public ApiResponse delete(@PathVariable("id") Long id) {
return deviceService.deleteById(id); return deviceService.deleteById(id);
} }
@ApiOperation("修改设备状态") // 修改设备状态
@PutMapping("/updateStatus/{id}") @PutMapping("/updateStatus/{id}")
public ApiResponse updateStatus(@PathVariable("id") Long id) { public ApiResponse updateStatus(@PathVariable("id") Long id) {
return deviceService.updateStatus(id); return deviceService.updateStatus(id);
} }
@ApiOperation("排序设备") // 排序设备
@PostMapping("/sort") @PostMapping("/sort")
public ApiResponse<Boolean> sortDevice(@RequestBody DeviceSortRequest request) { public ApiResponse<Boolean> sortDevice(@RequestBody DeviceSortRequest request) {
return deviceService.sortDevice(request.getDeviceId(), request.getAfterDeviceId()); return deviceService.sortDevice(request.getDeviceId(), request.getAfterDeviceId());

View File

@@ -6,8 +6,6 @@ import com.ycwl.basic.model.pc.face.req.FaceReqQuery;
import com.ycwl.basic.model.pc.face.resp.FaceRespVO; import com.ycwl.basic.model.pc.face.resp.FaceRespVO;
import com.ycwl.basic.service.pc.FaceService; import com.ycwl.basic.service.pc.FaceService;
import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.ApiResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@@ -19,37 +17,37 @@ import java.util.List;
*/ */
@RestController @RestController
@RequestMapping("/api/face/v1") @RequestMapping("/api/face/v1")
@Api(tags = "用户人脸管理") // 用户人脸管理
public class FaceController { public class FaceController {
@Autowired @Autowired
private FaceService faceService; private FaceService faceService;
@ApiOperation("分页查询用户人脸") // 分页查询用户人脸
@PostMapping("/page") @PostMapping("/page")
public ApiResponse<PageInfo<FaceRespVO>> pageQuery(@RequestBody FaceReqQuery faceReqQuery) { public ApiResponse<PageInfo<FaceRespVO>> pageQuery(@RequestBody FaceReqQuery faceReqQuery) {
return faceService.pageQuery(faceReqQuery); return faceService.pageQuery(faceReqQuery);
} }
@ApiOperation("用户人脸列表查询") // 用户人脸列表查询
@PostMapping("/list") @PostMapping("/list")
public ApiResponse<List<FaceRespVO>> list(@RequestBody FaceReqQuery faceReqQuery) { public ApiResponse<List<FaceRespVO>> list(@RequestBody FaceReqQuery faceReqQuery) {
return faceService.list(faceReqQuery); return faceService.list(faceReqQuery);
} }
@ApiOperation("用户人脸详情查询") // 用户人脸详情查询
@GetMapping("/getDetail/{id}") @GetMapping("/getDetail/{id}")
public ApiResponse<FaceRespVO> getDetail(@PathVariable("id") Long id) { public ApiResponse<FaceRespVO> getDetail(@PathVariable("id") Long id) {
return faceService.getById(id); return faceService.getById(id);
} }
@ApiOperation("添加用户人脸信息") // 添加用户人脸信息
@PostMapping("/add") @PostMapping("/add")
public ApiResponse<Integer> add(@RequestBody FaceEntity face) { public ApiResponse<Integer> add(@RequestBody FaceEntity face) {
return faceService.add(face); return faceService.add(face);
} }
@ApiOperation("删除用户人脸信息") // 删除用户人脸信息
@PostMapping("/deleteById/{id}") @PostMapping("/deleteById/{id}")
public ApiResponse<Integer> deleteById(@PathVariable Long id) { public ApiResponse<Integer> deleteById(@PathVariable Long id) {
return faceService.deleteById(id); return faceService.deleteById(id);
} }
@ApiOperation("批量删除用户人脸") // 批量删除用户人脸
@PostMapping("/deleteByIds") @PostMapping("/deleteByIds")
public ApiResponse<Integer> deleteByIds(@RequestBody List<Long> ids) { public ApiResponse<Integer> deleteByIds(@RequestBody List<Long> ids) {
return faceService.deleteByIds(ids); return faceService.deleteByIds(ids);

View File

@@ -6,8 +6,6 @@ import com.ycwl.basic.model.pc.faceSample.req.FaceSampleReqQuery;
import com.ycwl.basic.model.pc.faceSample.resp.FaceSampleRespVO; import com.ycwl.basic.model.pc.faceSample.resp.FaceSampleRespVO;
import com.ycwl.basic.service.pc.FaceSampleService; import com.ycwl.basic.service.pc.FaceSampleService;
import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.ApiResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@@ -20,22 +18,22 @@ import java.util.List;
@Deprecated @Deprecated
@RestController @RestController
@RequestMapping("/api/faceSample/v1") @RequestMapping("/api/faceSample/v1")
@Api(tags = "人脸样本管理") // 人脸样本管理
public class FaceSampleController { public class FaceSampleController {
@Autowired @Autowired
private FaceSampleService FaceSampleService; private FaceSampleService FaceSampleService;
@ApiOperation("分页查询人脸样本") // 分页查询人脸样本
@PostMapping("/page") @PostMapping("/page")
public ApiResponse<PageInfo<FaceSampleRespVO>> pageQuery(@RequestBody FaceSampleReqQuery FaceSampleReqQuery) { public ApiResponse<PageInfo<FaceSampleRespVO>> pageQuery(@RequestBody FaceSampleReqQuery FaceSampleReqQuery) {
return FaceSampleService.pageQuery(FaceSampleReqQuery); return FaceSampleService.pageQuery(FaceSampleReqQuery);
} }
@ApiOperation("人脸样本列表查询") // 人脸样本列表查询
@PostMapping("/list") @PostMapping("/list")
public ApiResponse<List<FaceSampleRespVO>> list(@RequestBody FaceSampleReqQuery FaceSampleReqQuery) { public ApiResponse<List<FaceSampleRespVO>> list(@RequestBody FaceSampleReqQuery FaceSampleReqQuery) {
return FaceSampleService.list(FaceSampleReqQuery); return FaceSampleService.list(FaceSampleReqQuery);
} }
@ApiOperation("人脸样本详情查询") // 人脸样本详情查询
@GetMapping("/getDetail/{id}") @GetMapping("/getDetail/{id}")
public ApiResponse<FaceSampleRespVO> getDetail(@PathVariable("id") Long id) { public ApiResponse<FaceSampleRespVO> getDetail(@PathVariable("id") Long id) {
return FaceSampleService.getById(id); return FaceSampleService.getById(id);

View File

@@ -6,8 +6,6 @@ import com.ycwl.basic.model.pc.member.req.MemberReqQuery;
import com.ycwl.basic.model.pc.member.resp.MemberRespVO; import com.ycwl.basic.model.pc.member.resp.MemberRespVO;
import com.ycwl.basic.service.pc.MemberService; import com.ycwl.basic.service.pc.MemberService;
import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.ApiResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@@ -19,37 +17,37 @@ import java.util.List;
*/ */
@RestController @RestController
@RequestMapping("/api/member/v1") @RequestMapping("/api/member/v1")
@Api(tags = "前台用户管理") // 前台用户管理
public class MemberController { public class MemberController {
@Autowired @Autowired
private MemberService memberService; private MemberService memberService;
@ApiOperation("前台用户分页查询") // 前台用户分页查询
@PostMapping("/page") @PostMapping("/page")
public ApiResponse<PageInfo<MemberRespVO>> pageQuery(@RequestBody MemberReqQuery memberReqQuery) { public ApiResponse<PageInfo<MemberRespVO>> pageQuery(@RequestBody MemberReqQuery memberReqQuery) {
return memberService.pageQuery(memberReqQuery); return memberService.pageQuery(memberReqQuery);
} }
@ApiOperation("前台用户列表查询") // 前台用户列表查询
@PostMapping("/list") @PostMapping("/list")
public ApiResponse<List<MemberRespVO>> list(@RequestBody MemberReqQuery memberReqQuery) { public ApiResponse<List<MemberRespVO>> list(@RequestBody MemberReqQuery memberReqQuery) {
return memberService.list(memberReqQuery); return memberService.list(memberReqQuery);
} }
@ApiOperation("前台用户详情查询") // 前台用户详情查询
@GetMapping("/getDetail/{id}") @GetMapping("/getDetail/{id}")
public ApiResponse<MemberRespVO> getDetail(@PathVariable("id") Long id) { public ApiResponse<MemberRespVO> getDetail(@PathVariable("id") Long id) {
return memberService.getById(id); return memberService.getById(id);
} }
@ApiOperation("前台用户删除") // 前台用户删除
@DeleteMapping("/delete/{id}") @DeleteMapping("/delete/{id}")
public ApiResponse<Integer> delete(@PathVariable("id") Long id) { public ApiResponse<Integer> delete(@PathVariable("id") Long id) {
return memberService.deleteById(id); return memberService.deleteById(id);
} }
@ApiOperation("前台用户新增") // 前台用户新增
@PostMapping("/add") @PostMapping("/add")
public ApiResponse<Integer> add(@RequestBody MemberEntity member) { public ApiResponse<Integer> add(@RequestBody MemberEntity member) {
return memberService.add(member); return memberService.add(member);
} }
@ApiOperation("前台用户修改") // 前台用户修改
@PostMapping("/update") @PostMapping("/update")
public ApiResponse<Integer> update(@RequestBody MemberEntity member) { public ApiResponse<Integer> update(@RequestBody MemberEntity member) {
return memberService.update(member); return memberService.update(member);

View File

@@ -7,8 +7,6 @@ import com.ycwl.basic.model.pc.order.req.OrderReqQuery;
import com.ycwl.basic.model.pc.order.resp.OrderRespVO; import com.ycwl.basic.model.pc.order.resp.OrderRespVO;
import com.ycwl.basic.service.pc.OrderService; import com.ycwl.basic.service.pc.OrderService;
import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.ApiResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@@ -20,38 +18,38 @@ import java.util.List;
*/ */
@RestController @RestController
@RequestMapping("/api/order/v1") @RequestMapping("/api/order/v1")
@Api(tags = "订单管理") // 订单管理
public class OrderController { public class OrderController {
@Autowired @Autowired
private OrderService orderService; private OrderService orderService;
@ApiOperation(value = "审核退款", notes = "审核退款") // 审核退款: 审核退款
@PostMapping("/auditRefundOrder") @PostMapping("/auditRefundOrder")
public ApiResponse<?> auditRefundOrder(@RequestBody RefundOrderReq refundOrderReq) { public ApiResponse<?> auditRefundOrder(@RequestBody RefundOrderReq refundOrderReq) {
return orderService.auditRefundOrder(refundOrderReq); return orderService.auditRefundOrder(refundOrderReq);
} }
@ApiOperation("分页查询订单") // 分页查询订单
@PostMapping("page") @PostMapping("page")
public ApiResponse<PageInfo<OrderRespVO>> pageQuery(@RequestBody OrderReqQuery query) { public ApiResponse<PageInfo<OrderRespVO>> pageQuery(@RequestBody OrderReqQuery query) {
return orderService.pageQuery(query); return orderService.pageQuery(query);
} }
@ApiOperation("订单列表查询") // 订单列表查询
@PostMapping("list") @PostMapping("list")
public ApiResponse<List<OrderRespVO>> list(@RequestBody OrderReqQuery query) { public ApiResponse<List<OrderRespVO>> list(@RequestBody OrderReqQuery query) {
return orderService.list(query); return orderService.list(query);
} }
@ApiOperation("订单详情查询") // 订单详情查询
@GetMapping("detail/{id}") @GetMapping("detail/{id}")
public ApiResponse<OrderRespVO> detail(@PathVariable("id") Long orderId) { public ApiResponse<OrderRespVO> detail(@PathVariable("id") Long orderId) {
return orderService.detail(orderId); return orderService.detail(orderId);
} }
@ApiOperation("订单备注") // 订单备注
@PostMapping("remark/{id}") @PostMapping("remark/{id}")
public ApiResponse<?> updateRemark(@PathVariable("id") Long orderId, @RequestBody OrderEntity query) { public ApiResponse<?> updateRemark(@PathVariable("id") Long orderId, @RequestBody OrderEntity query) {
orderService.remarkOrder(orderId, query); orderService.remarkOrder(orderId, query);

View File

@@ -10,8 +10,6 @@ import com.ycwl.basic.model.pc.role.resp.RolePermissionResp;
import com.ycwl.basic.service.pc.PermissionService; import com.ycwl.basic.service.pc.PermissionService;
import com.ycwl.basic.service.pc.RoleService; import com.ycwl.basic.service.pc.RoleService;
import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.ApiResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
@@ -28,7 +26,7 @@ import static com.ycwl.basic.constant.JwtRoleConstant.MERCHANT;
@RestController @RestController
@RequestMapping("/api/permission/v1") @RequestMapping("/api/permission/v1")
@Api(tags = "权限管理接口") // 权限管理接口
public class PermissionController { public class PermissionController {
@Autowired @Autowired
private PermissionService permissionService; private PermissionService permissionService;
@@ -57,7 +55,7 @@ public class PermissionController {
} }
} }
@ApiOperation("根据用户ID查询权限信息") // 根据用户ID查询权限信息
@GetMapping("/get/{userId}") @GetMapping("/get/{userId}")
public ApiResponse<PermissionResp> getPermissionByUser(@PathVariable Long userId) { public ApiResponse<PermissionResp> getPermissionByUser(@PathVariable Long userId) {
PermissionEntity permission = permissionService.getPermissionByUserId(userId); PermissionEntity permission = permissionService.getPermissionByUserId(userId);
@@ -67,7 +65,7 @@ public class PermissionController {
return ApiResponse.success(new PermissionResp(Arrays.asList(StringUtils.split(permission.getPermString(), ",")), Arrays.asList(StringUtils.split(permission.getMenuString(), ",")))); return ApiResponse.success(new PermissionResp(Arrays.asList(StringUtils.split(permission.getPermString(), ",")), Arrays.asList(StringUtils.split(permission.getMenuString(), ","))));
} }
@ApiOperation("保存或更新权限信息") // 保存或更新权限信息
@PostMapping("/save/{userId}") @PostMapping("/save/{userId}")
public ApiResponse saveOrUpdate(@PathVariable Long userId, @RequestBody PermissionSaveReq req) { public ApiResponse saveOrUpdate(@PathVariable Long userId, @RequestBody PermissionSaveReq req) {
permissionService.saveOrUpdate(userId, StringUtils.join(req.getPermissions(), ","), StringUtils.join(req.getMenus(), ",")); permissionService.saveOrUpdate(userId, StringUtils.join(req.getPermissions(), ","), StringUtils.join(req.getMenus(), ","));

View File

@@ -3,8 +3,6 @@ package com.ycwl.basic.controller.pc;
import com.ycwl.basic.model.pc.printer.entity.PrinterEntity; import com.ycwl.basic.model.pc.printer.entity.PrinterEntity;
import com.ycwl.basic.service.printer.PrinterService; import com.ycwl.basic.service.printer.PrinterService;
import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.ApiResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
@@ -22,31 +20,31 @@ public class PrinterController {
@Autowired @Autowired
private PrinterService printerService; private PrinterService printerService;
@ApiOperation("查询列表") // 查询列表
@PostMapping("/list") @PostMapping("/list")
public ApiResponse<List<PrinterEntity>> list(@RequestBody PrinterEntity condition) { public ApiResponse<List<PrinterEntity>> list(@RequestBody PrinterEntity condition) {
return printerService.list(condition); return printerService.list(condition);
} }
@ApiOperation("获取详情") // 获取详情
@GetMapping("/get/{id}") @GetMapping("/get/{id}")
public ApiResponse<PrinterEntity> get(@PathVariable("id") Integer id) { public ApiResponse<PrinterEntity> get(@PathVariable("id") Integer id) {
return printerService.get(id); return printerService.get(id);
} }
@ApiOperation("新增") // 新增
@PostMapping("/add") @PostMapping("/add")
public ApiResponse<Integer> add(@RequestBody PrinterEntity entity) { public ApiResponse<Integer> add(@RequestBody PrinterEntity entity) {
return printerService.add(entity); return printerService.add(entity);
} }
@ApiOperation("更新") // 更新
@PostMapping("/update") @PostMapping("/update")
public ApiResponse<Integer> update(@RequestBody PrinterEntity entity) { public ApiResponse<Integer> update(@RequestBody PrinterEntity entity) {
return printerService.update(entity); return printerService.update(entity);
} }
@ApiOperation("删除") // 删除
@DeleteMapping("/delete/{id}") @DeleteMapping("/delete/{id}")
public ApiResponse<Integer> delete(@PathVariable("id") Integer id) { public ApiResponse<Integer> delete(@PathVariable("id") Integer id) {
return printerService.delete(id); return printerService.delete(id);

View File

@@ -7,8 +7,6 @@ import com.ycwl.basic.model.pc.order.req.OrderReqQuery;
import com.ycwl.basic.model.pc.order.resp.OrderRespVO; import com.ycwl.basic.model.pc.order.resp.OrderRespVO;
import com.ycwl.basic.service.pc.OrderService; import com.ycwl.basic.service.pc.OrderService;
import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.ApiResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
@@ -25,38 +23,38 @@ import java.util.List;
*/ */
@RestController @RestController
@RequestMapping("/api/refund/v1") @RequestMapping("/api/refund/v1")
@Api(tags = "退款订单管理") // 退款订单管理
public class RefundController { public class RefundController {
@Autowired @Autowired
private OrderService orderService; private OrderService orderService;
@ApiOperation(value = "审核退款", notes = "审核退款") // 审核退款: 审核退款
@PostMapping("/auditRefundOrder") @PostMapping("/auditRefundOrder")
public ApiResponse<?> auditRefundOrder(@RequestBody RefundOrderReq refundOrderReq) { public ApiResponse<?> auditRefundOrder(@RequestBody RefundOrderReq refundOrderReq) {
return orderService.auditRefundOrder(refundOrderReq); return orderService.auditRefundOrder(refundOrderReq);
} }
@ApiOperation("分页查询订单") // 分页查询订单
@PostMapping("page") @PostMapping("page")
public ApiResponse<PageInfo<OrderRespVO>> pageQuery(@RequestBody OrderReqQuery query) { public ApiResponse<PageInfo<OrderRespVO>> pageQuery(@RequestBody OrderReqQuery query) {
return orderService.refundPageQuery(query); return orderService.refundPageQuery(query);
} }
@ApiOperation("订单列表查询") // 订单列表查询
@PostMapping("list") @PostMapping("list")
public ApiResponse<List<OrderRespVO>> list(@RequestBody OrderReqQuery query) { public ApiResponse<List<OrderRespVO>> list(@RequestBody OrderReqQuery query) {
return orderService.list(query); return orderService.list(query);
} }
@ApiOperation("订单详情查询") // 订单详情查询
@GetMapping("detail/{id}") @GetMapping("detail/{id}")
public ApiResponse<OrderRespVO> detail(@PathVariable("id") Long orderId) { public ApiResponse<OrderRespVO> detail(@PathVariable("id") Long orderId) {
return orderService.detail(orderId); return orderService.detail(orderId);
} }
@ApiOperation("订单备注") // 订单备注
@PostMapping("remark/{id}") @PostMapping("remark/{id}")
public ApiResponse<?> updateRemark(@PathVariable("id") Long orderId, @RequestBody OrderEntity query) { public ApiResponse<?> updateRemark(@PathVariable("id") Long orderId, @RequestBody OrderEntity query) {
orderService.remarkOrder(orderId, query); orderService.remarkOrder(orderId, query);

View File

@@ -4,8 +4,6 @@ import com.ycwl.basic.model.pc.renderWorker.entity.RenderWorkerEntity;
import com.ycwl.basic.model.pc.renderWorker.req.RenderWorkerReqQuery; import com.ycwl.basic.model.pc.renderWorker.req.RenderWorkerReqQuery;
import com.ycwl.basic.service.pc.RenderWorkerService; import com.ycwl.basic.service.pc.RenderWorkerService;
import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.ApiResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@@ -15,47 +13,47 @@ import org.springframework.web.bind.annotation.*;
*/ */
@RestController @RestController
@RequestMapping("/api/renderWorker/v1") @RequestMapping("/api/renderWorker/v1")
@Api(tags = "渲染机管理") // 渲染机管理
public class RenderWorkerController { public class RenderWorkerController {
@Autowired @Autowired
private RenderWorkerService renderWorkerService; private RenderWorkerService renderWorkerService;
@ApiOperation("分页查询渲染机") // 分页查询渲染机
@PostMapping("/page") @PostMapping("/page")
public ApiResponse pageQuery(@RequestBody RenderWorkerReqQuery renderWorkerReqQuery){ public ApiResponse pageQuery(@RequestBody RenderWorkerReqQuery renderWorkerReqQuery){
return renderWorkerService.pageQuery(renderWorkerReqQuery); return renderWorkerService.pageQuery(renderWorkerReqQuery);
} }
@ApiOperation("渲染机列表查询") // 渲染机列表查询
@PostMapping("/list") @PostMapping("/list")
public ApiResponse list(@RequestBody RenderWorkerReqQuery renderWorkerReqQuery){ public ApiResponse list(@RequestBody RenderWorkerReqQuery renderWorkerReqQuery){
return renderWorkerService.list(renderWorkerReqQuery); return renderWorkerService.list(renderWorkerReqQuery);
} }
@ApiOperation("渲染机详情查询") // 渲染机详情查询
@GetMapping("/detail/{id}") @GetMapping("/detail/{id}")
public ApiResponse detail(@PathVariable Long id){ public ApiResponse detail(@PathVariable Long id){
return renderWorkerService.detail(id); return renderWorkerService.detail(id);
} }
@ApiOperation("渲染机新增") // 渲染机新增
@PostMapping("/add") @PostMapping("/add")
public ApiResponse add(@RequestBody RenderWorkerEntity renderWorker){ public ApiResponse add(@RequestBody RenderWorkerEntity renderWorker){
return renderWorkerService.add(renderWorker); return renderWorkerService.add(renderWorker);
} }
@ApiOperation("渲染机删除") // 渲染机删除
@DeleteMapping("/delete/{id}") @DeleteMapping("/delete/{id}")
public ApiResponse deleteById(@PathVariable Long id){ public ApiResponse deleteById(@PathVariable Long id){
return renderWorkerService.deleteById(id); return renderWorkerService.deleteById(id);
} }
@ApiOperation("渲染机修改") // 渲染机修改
@PostMapping("/update") @PostMapping("/update")
public ApiResponse update(@RequestBody RenderWorkerEntity renderWorker){ public ApiResponse update(@RequestBody RenderWorkerEntity renderWorker){
return renderWorkerService.update(renderWorker); return renderWorkerService.update(renderWorker);
} }
@ApiOperation("渲染机修改状态") // 渲染机修改状态
@PutMapping("/updateStatus/{id}") @PutMapping("/updateStatus/{id}")
public ApiResponse updateStatus(@PathVariable Long id) { public ApiResponse updateStatus(@PathVariable Long id) {
return renderWorkerService.updateStatus(id); return renderWorkerService.updateStatus(id);

View File

@@ -9,8 +9,6 @@ import com.ycwl.basic.model.pc.role.resp.RoleListRespVO;
import com.ycwl.basic.model.pc.role.resp.RolePermissionResp; import com.ycwl.basic.model.pc.role.resp.RolePermissionResp;
import com.ycwl.basic.service.pc.RoleService; import com.ycwl.basic.service.pc.RoleService;
import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.ApiResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@@ -20,24 +18,24 @@ import java.util.List;
@RestController @RestController
@RequestMapping("/api/role/v1") @RequestMapping("/api/role/v1")
@Api(tags = "系统角色管理") // 系统角色管理
public class RoleController { public class RoleController {
@Autowired @Autowired
RoleService roleService; RoleService roleService;
@PostMapping(value = "/page") @PostMapping(value = "/page")
@ApiOperation(value = "角色列表分页查询") // 角色列表分页查询
public ApiResponse<PageInfo<RoleListRespVO>> page(@RequestBody RoleListReqVO roleListReqVO) { public ApiResponse<PageInfo<RoleListRespVO>> page(@RequestBody RoleListReqVO roleListReqVO) {
return roleService.pageQuery(roleListReqVO); return roleService.pageQuery(roleListReqVO);
} }
@PostMapping(value = "/list") @PostMapping(value = "/list")
@ApiOperation(value = "角色列表") // 角色列表
public ApiResponse<List<RoleListRespVO>> list(@RequestBody RoleListReqVO roleListReqVO) { public ApiResponse<List<RoleListRespVO>> list(@RequestBody RoleListReqVO roleListReqVO) {
return roleService.list(roleListReqVO); return roleService.list(roleListReqVO);
} }
@GetMapping("/{roleId}/permission") @GetMapping("/{roleId}/permission")
@ApiOperation(value = "角色权限列表") // 角色权限列表
public ApiResponse<PermissionResp> getPermissionByRoleId(@PathVariable("roleId") Long roleId) { public ApiResponse<PermissionResp> getPermissionByRoleId(@PathVariable("roleId") Long roleId) {
RolePermissionResp permission = roleService.getPermissionByRoleId(roleId); RolePermissionResp permission = roleService.getPermissionByRoleId(roleId);
if (permission == null) { if (permission == null) {
@@ -47,19 +45,19 @@ public class RoleController {
} }
@PostMapping(value = "/addOrUpdate") @PostMapping(value = "/addOrUpdate")
@ApiOperation(value = "添加或更新角色") // 添加或更新角色
public ApiResponse addOrUpdate(@RequestBody AddOrUpdateRoleReqVO addOrUpdateRoleReqVO) { public ApiResponse addOrUpdate(@RequestBody AddOrUpdateRoleReqVO addOrUpdateRoleReqVO) {
return roleService.addOrUpdate(addOrUpdateRoleReqVO); return roleService.addOrUpdate(addOrUpdateRoleReqVO);
} }
@GetMapping(value = "/delete/{id}") @GetMapping(value = "/delete/{id}")
@ApiOperation(value = "删除") // 删除
public ApiResponse delete(@PathVariable("id") String id) { public ApiResponse delete(@PathVariable("id") String id) {
return roleService.delete(id); return roleService.delete(id);
} }
@GetMapping(value = "/updateReturnMenu/{id}") @GetMapping(value = "/updateReturnMenu/{id}")
@ApiOperation(value = "编辑回显该角色当前菜单") // 编辑回显该角色当前菜单
public ApiResponse updateReturnMenu(@PathVariable("id") String id) { public ApiResponse updateReturnMenu(@PathVariable("id") String id) {
return roleService.updateReturnMenu(id); return roleService.updateReturnMenu(id);
} }
@@ -67,7 +65,7 @@ public class RoleController {
@GetMapping(value = "/updateStatus/{id}") @GetMapping(value = "/updateStatus/{id}")
@ApiOperation(value = "更改角色类型状态") // 更改角色类型状态
public ApiResponse updateStatus(@PathVariable("id") String id) { public ApiResponse updateStatus(@PathVariable("id") String id) {
return roleService.updateStatus(id); return roleService.updateStatus(id);
} }

View File

@@ -19,9 +19,7 @@ import com.ycwl.basic.utils.ApiResponse;
import com.ycwl.basic.utils.WxMpUtil; import com.ycwl.basic.utils.WxMpUtil;
import com.ycwl.basic.repository.ScenicRepository; import com.ycwl.basic.repository.ScenicRepository;
import com.ycwl.basic.model.pc.mp.MpConfigEntity; import com.ycwl.basic.model.pc.mp.MpConfigEntity;
import io.swagger.annotations.Api; import org.apache.commons.lang3.Strings;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@@ -37,7 +35,7 @@ import static com.ycwl.basic.constant.JwtRoleConstant.MERCHANT;
*/ */
@RestController @RestController
@RequestMapping("/api/scenic/v1") @RequestMapping("/api/scenic/v1")
@Api(tags = "景区管理") // 景区管理
public class ScenicController { public class ScenicController {
@Autowired @Autowired
@@ -52,53 +50,53 @@ public class ScenicController {
@Autowired @Autowired
private ScenicAccountService accountService; private ScenicAccountService accountService;
@ApiOperation("分页查询景区") // 分页查询景区
@PostMapping("/page") @PostMapping("/page")
public ApiResponse<PageInfo<ScenicRespVO>> pageQuery(@RequestBody ScenicReqQuery scenicReqQuery) { public ApiResponse<PageInfo<ScenicRespVO>> pageQuery(@RequestBody ScenicReqQuery scenicReqQuery) {
return scenicService.pageQuery(scenicReqQuery); return scenicService.pageQuery(scenicReqQuery);
} }
@ApiOperation("查询景区列表") // 查询景区列表
@PostMapping("/list") @PostMapping("/list")
public ApiResponse<List<ScenicRespVO>> list(@RequestBody ScenicReqQuery scenicReqQuery) { public ApiResponse<List<ScenicRespVO>> list(@RequestBody ScenicReqQuery scenicReqQuery) {
return scenicService.list(scenicReqQuery); return scenicService.list(scenicReqQuery);
} }
@ApiOperation("查询景区详情") // 查询景区详情
@GetMapping("/getDetail/{id}") @GetMapping("/getDetail/{id}")
public ApiResponse<ScenicRespVO> getDetail(@PathVariable Long id) { public ApiResponse<ScenicRespVO> getDetail(@PathVariable Long id) {
return scenicService.getById(id); return scenicService.getById(id);
} }
@ApiOperation("新增景区") // 新增景区
@PostMapping("/add") @PostMapping("/add")
public ApiResponse<Boolean> add(@RequestBody ScenicAddOrUpdateReq scenicAddReq) { public ApiResponse<Boolean> add(@RequestBody ScenicAddOrUpdateReq scenicAddReq) {
return scenicService.add(scenicAddReq); return scenicService.add(scenicAddReq);
} }
@ApiOperation("删除景区") // 删除景区
@GetMapping("/delete/{id}") @GetMapping("/delete/{id}")
public ApiResponse<Boolean> delete(@PathVariable Long id) { public ApiResponse<Boolean> delete(@PathVariable Long id) {
return scenicService.deleteById(id); return scenicService.deleteById(id);
} }
@ApiOperation("修改景区") // 修改景区
@PostMapping("/update") @PostMapping("/update")
public ApiResponse<Boolean> update(@RequestBody ScenicAddOrUpdateReq scenicAddReq) { public ApiResponse<Boolean> update(@RequestBody ScenicAddOrUpdateReq scenicAddReq) {
return scenicService.update(scenicAddReq); return scenicService.update(scenicAddReq);
} }
@ApiOperation("修改景区状态") // 修改景区状态
@GetMapping("/updateStatus/{id}") @GetMapping("/updateStatus/{id}")
public ApiResponse<Boolean> updateStatus(@PathVariable Long id) { public ApiResponse<Boolean> updateStatus(@PathVariable Long id) {
return scenicService.updateStatus(id); return scenicService.updateStatus(id);
} }
@ApiOperation("新增景区配置") // 新增景区配置
@PostMapping("/addConfig") @PostMapping("/addConfig")
public ApiResponse<Boolean> addConfig(@RequestBody ScenicConfigEntity scenicConfig) { public ApiResponse<Boolean> addConfig(@RequestBody ScenicConfigEntity scenicConfig) {
return scenicService.addConfig(scenicConfig); return scenicService.addConfig(scenicConfig);
} }
@ApiOperation("修改景区配置") // 修改景区配置
@PostMapping("/updateConfig") @PostMapping("/updateConfig")
public ApiResponse<Boolean> updateConfig(@RequestBody ScenicConfigEntity scenicConfig) { public ApiResponse<Boolean> updateConfig(@RequestBody ScenicConfigEntity scenicConfig) {
return scenicService.updateConfigById(scenicConfig); return scenicService.updateConfigById(scenicConfig);
} }
@ApiOperation("查询景区配置") // 查询景区配置
@GetMapping("/config/{id}") @GetMapping("/config/{id}")
public ApiResponse<ScenicConfigEntity> getConfig(@PathVariable("id") Long id) { public ApiResponse<ScenicConfigEntity> getConfig(@PathVariable("id") Long id) {
return ApiResponse.success(scenicService.getConfig(id)); return ApiResponse.success(scenicService.getConfig(id));
@@ -114,7 +112,7 @@ public class ScenicController {
return ApiResponse.success(null); return ApiResponse.success(null);
} }
@ApiOperation("根据景区ID下载小程序二维码") // 根据景区ID下载小程序二维码
@GetMapping("/{id}/QRCode") @GetMapping("/{id}/QRCode")
public ApiResponse<String> downloadQrCode(@PathVariable Long id) { public ApiResponse<String> downloadQrCode(@PathVariable Long id) {
MpConfigEntity mpConfig = scenicRepository.getScenicMpConfig(id); MpConfigEntity mpConfig = scenicRepository.getScenicMpConfig(id);
@@ -171,7 +169,7 @@ public class ScenicController {
@GetMapping("/myScenicList") @GetMapping("/myScenicList")
public ApiResponse<List<ScenicRespVO>> myScenicList() { public ApiResponse<List<ScenicRespVO>> myScenicList() {
List<ScenicRespVO> list = Collections.emptyList(); List<ScenicRespVO> list = Collections.emptyList();
if (StringUtils.equals(BaseContextHandler.getRoleId(), MERCHANT.type)) { if (Strings.CS.equals(BaseContextHandler.getRoleId(), MERCHANT.type)) {
String userId = BaseContextHandler.getUserId(); String userId = BaseContextHandler.getUserId();
ScenicAccountEntity account = accountService.getScenicAccountById(Long.valueOf(userId)); ScenicAccountEntity account = accountService.getScenicAccountById(Long.valueOf(userId));
if (account == null || account.getScenicId().isEmpty()) { if (account == null || account.getScenicId().isEmpty()) {

View File

@@ -7,8 +7,6 @@ import com.ycwl.basic.model.pc.source.req.SourceReqQuery;
import com.ycwl.basic.service.pc.SourceService; import com.ycwl.basic.service.pc.SourceService;
import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.ApiResponse;
import com.ycwl.basic.utils.JwtTokenUtil; import com.ycwl.basic.utils.JwtTokenUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@@ -18,20 +16,20 @@ import org.springframework.web.bind.annotation.*;
*/ */
@RestController @RestController
@RequestMapping("/api/source/v1") @RequestMapping("/api/source/v1")
@Api(tags = "视频源管理") // 视频源管理
public class SourceController { public class SourceController {
@Autowired @Autowired
private SourceService sourceService; private SourceService sourceService;
@Deprecated @Deprecated
@ApiOperation("分页查询视频源") // 分页查询视频源
@PostMapping("/page") @PostMapping("/page")
public ApiResponse pageQuery(@RequestBody SourceReqQuery sourceReqQuery) { public ApiResponse pageQuery(@RequestBody SourceReqQuery sourceReqQuery) {
return sourceService.pageQuery(sourceReqQuery); return sourceService.pageQuery(sourceReqQuery);
} }
@Deprecated @Deprecated
@ApiOperation("查询视频源列表") // 查询视频源列表
@PostMapping("/list") @PostMapping("/list")
public ApiResponse list(@RequestBody SourceReqQuery sourceReqQuery) { public ApiResponse list(@RequestBody SourceReqQuery sourceReqQuery) {
return sourceService.list(sourceReqQuery); return sourceService.list(sourceReqQuery);
@@ -42,7 +40,7 @@ public class SourceController {
return sourceService.cutVideo(id); return sourceService.cutVideo(id);
} }
@Deprecated @Deprecated
@ApiOperation("删除视频源") // 删除视频源
@DeleteMapping("/delete/{id}") @DeleteMapping("/delete/{id}")
public ApiResponse deleteById(@PathVariable Long id) { public ApiResponse deleteById(@PathVariable Long id) {
return sourceService.deleteById(id); return sourceService.deleteById(id);

View File

@@ -0,0 +1,57 @@
package com.ycwl.basic.controller.pc;
import com.ycwl.basic.model.mobile.statistic.req.CommonQueryReq;
import com.ycwl.basic.model.pc.statistics.resp.OrderStatisticsResp;
import com.ycwl.basic.service.mobile.AppStatisticsService;
import com.ycwl.basic.service.pc.StatisticsService;
import com.ycwl.basic.utils.ApiResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.List;
/**
* @Author:longbinbin
* @Date:2024/12/12 14:30
*/
@RestController
@RequestMapping("/api/statistics/v1")
public class StatisticsController {
@Autowired
private StatisticsService statisticsService;
@Autowired
private AppStatisticsService appStatisticsService;
/**
* 智能获取扫码访问人数统计数据(自动选择粒度)
* @param query 查询参数(包含景区ID、开始时间、结束时间;如果scenicId为空则统计全部景区,否则统计指定景区)
* @return 统计数据(超过7天返回日期级别,否则返回小时级别)
*/
@PostMapping("/scanCodeMemberChart")
public ApiResponse<List<HashMap<String, String>>> getScanCodeMemberChart(@RequestBody CommonQueryReq query) {
return ApiResponse.success(statisticsService.getScanCodeMemberChartAuto(query));
}
@PostMapping("/one")
public ApiResponse getStatisticsOne(@RequestBody CommonQueryReq query) {
return appStatisticsService.oneStatistics(query);
}
@PostMapping("/two")
public ApiResponse getStatisticsTwo(@RequestBody CommonQueryReq query) {
return appStatisticsService.twoStatistics(query);
}
/**
* 获取订单统计数据(包含订单数量和金额、推送订单数量、现场订单数量)
* @param query 查询参数(包含景区ID、开始时间、结束时间;如果scenicId为空则统计全部景区,否则统计指定景区)
* @return 统计数据(totalOrderCount: 总订单数量, totalOrderAmount: 总订单金额, pushOrderCount: 推送订单数量, sceneOrderCount: 现场订单数量)
*/
@PostMapping("/orderStatistics")
public ApiResponse<OrderStatisticsResp> getOrderStatistics(@RequestBody CommonQueryReq query) {
return ApiResponse.success(statisticsService.getOrderStatistics(query));
}
}

View File

@@ -4,8 +4,6 @@ import com.ycwl.basic.model.pc.task.entity.TaskEntity;
import com.ycwl.basic.model.pc.task.req.TaskReqQuery; import com.ycwl.basic.model.pc.task.req.TaskReqQuery;
import com.ycwl.basic.service.pc.TaskService; import com.ycwl.basic.service.pc.TaskService;
import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.ApiResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@@ -16,38 +14,38 @@ import org.springframework.web.bind.annotation.*;
@RestController @RestController
@RequestMapping("/api/task/v1") @RequestMapping("/api/task/v1")
@Deprecated @Deprecated
@Api(tags = "任务列表管理") // 任务列表管理
public class TaskController { public class TaskController {
@Autowired @Autowired
private TaskService taskService; private TaskService taskService;
@ApiOperation("分页查询任务列表") // 分页查询任务列表
@PostMapping("/page") @PostMapping("/page")
public ApiResponse pageQuery(@RequestBody TaskReqQuery taskReqQuery) { public ApiResponse pageQuery(@RequestBody TaskReqQuery taskReqQuery) {
return taskService.pageQuery(taskReqQuery); return taskService.pageQuery(taskReqQuery);
} }
@ApiOperation("查询任务列表") // 查询任务列表
@PostMapping("/list") @PostMapping("/list")
public ApiResponse list(@RequestBody TaskReqQuery taskReqQuery) { public ApiResponse list(@RequestBody TaskReqQuery taskReqQuery) {
return taskService.list(taskReqQuery); return taskService.list(taskReqQuery);
} }
@ApiOperation("查询任务详情") // 查询任务详情
@GetMapping("/getDetail/{id}") @GetMapping("/getDetail/{id}")
public ApiResponse getById(@PathVariable Long id) { public ApiResponse getById(@PathVariable Long id) {
return taskService.getById(id); return taskService.getById(id);
} }
@ApiOperation("删除任务") // 删除任务
@DeleteMapping("/delete/{id}") @DeleteMapping("/delete/{id}")
public ApiResponse deleteById(@PathVariable Long id) { public ApiResponse deleteById(@PathVariable Long id) {
return taskService.deleteById(id); return taskService.deleteById(id);
} }
@ApiOperation("修改任务") // 修改任务
@PostMapping("/update") @PostMapping("/update")
public ApiResponse update(@RequestBody TaskEntity taskEntity) { public ApiResponse update(@RequestBody TaskEntity taskEntity) {
return taskService.update(taskEntity); return taskService.update(taskEntity);
} }
@ApiOperation("修改任务状态") // 修改任务状态
@PostMapping("/updateStatus") @PostMapping("/updateStatus")
public ApiResponse updateStatus(@RequestParam Long id, @RequestParam Integer status) { public ApiResponse updateStatus(@RequestParam Long id, @RequestParam Integer status) {
return taskService.updateStatus(id,status); return taskService.updateStatus(id,status);

View File

@@ -9,8 +9,6 @@ import com.ycwl.basic.model.pc.template.req.TemplateSortRequest;
import com.ycwl.basic.model.pc.template.resp.TemplateRespVO; import com.ycwl.basic.model.pc.template.resp.TemplateRespVO;
import com.ycwl.basic.service.pc.TemplateService; import com.ycwl.basic.service.pc.TemplateService;
import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.ApiResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@@ -22,54 +20,60 @@ import java.util.List;
*/ */
@RestController @RestController
@RequestMapping("/api/template/v1") @RequestMapping("/api/template/v1")
@Api(tags = "模板管理") // 模板管理
public class TemplateController { public class TemplateController {
@Autowired @Autowired
private TemplateService templateService; private TemplateService templateService;
@ApiOperation("分页查询模板") // 分页查询模板
@PostMapping("/page") @PostMapping("/page")
public ApiResponse<PageInfo<TemplateRespVO>> pageQuery(@RequestBody TemplateReqQuery templateReqQuery) { public ApiResponse<PageInfo<TemplateRespVO>> pageQuery(@RequestBody TemplateReqQuery templateReqQuery) {
return templateService.pageQuery(templateReqQuery); return templateService.pageQuery(templateReqQuery);
} }
@ApiOperation("查询模板列表") // 查询模板列表
@PostMapping("/list") @PostMapping("/list")
public ApiResponse<List<TemplateRespVO>> list(@RequestBody TemplateReqQuery templateReqQuery) { public ApiResponse<List<TemplateRespVO>> list(@RequestBody TemplateReqQuery templateReqQuery) {
return templateService.list(templateReqQuery); return templateService.list(templateReqQuery);
} }
@ApiOperation("查询模板详情") // 查询模板详情
@GetMapping("getDetail/{id}") @GetMapping("getDetail/{id}")
public ApiResponse<TemplateRespVO> getById(@PathVariable Long id) { public ApiResponse<TemplateRespVO> getById(@PathVariable Long id) {
return templateService.getById(id); return templateService.getById(id);
} }
@ApiOperation("添加模板") // 添加模板
@PostMapping("/add") @PostMapping("/add")
public ApiResponse<Boolean> add(@RequestBody TemplateEntity template) { public ApiResponse<Boolean> add(@RequestBody TemplateEntity template) {
return templateService.add(template); return templateService.add(template);
} }
@ApiOperation("删除模板") // 删除模板
@DeleteMapping("/delete/{id}") @DeleteMapping("/delete/{id}")
public ApiResponse<Integer> deleteById(@PathVariable Long id) { public ApiResponse<Integer> deleteById(@PathVariable Long id) {
return templateService.deleteById(id); return templateService.deleteById(id);
} }
@ApiOperation("修改模板") // 修改模板
@PostMapping("/update") @PostMapping("/update")
public ApiResponse<Boolean> update(@RequestBody TemplateEntity template) { public ApiResponse<Boolean> update(@RequestBody TemplateEntity template) {
return templateService.update(template); return templateService.update(template);
} }
@ApiOperation("修改模板状态") // 修改模板状态
@PostMapping("/updateStatus/{id}") @PostMapping("/updateStatus/{id}")
public ApiResponse<Boolean> updateStatus(@PathVariable("id") Long id) { public ApiResponse<Boolean> updateStatus(@PathVariable("id") Long id) {
return templateService.updateStatus(id); return templateService.updateStatus(id);
} }
@ApiOperation("排序模板") // 排序模板
@PostMapping("/sort") @PostMapping("/sort")
public ApiResponse<Boolean> sortTemplate(@RequestBody TemplateSortRequest request) { public ApiResponse<Boolean> sortTemplate(@RequestBody TemplateSortRequest request) {
return templateService.sortTemplate(request.getTemplateId(), request.getAfterTemplateId()); return templateService.sortTemplate(request.getTemplateId(), request.getAfterTemplateId());
} }
// 修改模板排序值
@PostMapping("/updateSort/{id}")
public ApiResponse<Boolean> updateSort(@PathVariable("id") Long id, @RequestParam Integer sort) {
return templateService.updateSort(id, sort);
}
@GetMapping("/config/{id}") @GetMapping("/config/{id}")
public ApiResponse<TemplateConfigEntity> getConfig(@PathVariable("id") Long id) { public ApiResponse<TemplateConfigEntity> getConfig(@PathVariable("id") Long id) {
return ApiResponse.success(templateService.getConfig(id)); return ApiResponse.success(templateService.getConfig(id));

View File

@@ -6,8 +6,6 @@ import com.ycwl.basic.model.pc.video.req.VideoReqQuery;
import com.ycwl.basic.model.pc.video.resp.VideoRespVO; import com.ycwl.basic.model.pc.video.resp.VideoRespVO;
import com.ycwl.basic.service.pc.VideoService; import com.ycwl.basic.service.pc.VideoService;
import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.ApiResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@@ -21,23 +19,23 @@ import java.util.List;
@RestController @RestController
@RequestMapping("/api/video/v1") @RequestMapping("/api/video/v1")
@Deprecated @Deprecated
@Api(tags = "视频成片管理") // 视频成片管理
public class VideoController { public class VideoController {
@Autowired @Autowired
private VideoService videoService; private VideoService videoService;
@ApiOperation("分页查询成片") // 分页查询成片
@PostMapping("/page") @PostMapping("/page")
public ApiResponse<PageInfo<VideoRespVO>> pageQuery(@RequestBody VideoReqQuery videoReqQuery) { public ApiResponse<PageInfo<VideoRespVO>> pageQuery(@RequestBody VideoReqQuery videoReqQuery) {
return videoService.pageQuery(videoReqQuery); return videoService.pageQuery(videoReqQuery);
} }
@ApiOperation("查询成片列表") // 查询成片列表
@PostMapping("/list") @PostMapping("/list")
public ApiResponse<List<VideoRespVO>> list(@RequestBody VideoReqQuery videoReqQuery) { public ApiResponse<List<VideoRespVO>> list(@RequestBody VideoReqQuery videoReqQuery) {
return videoService.list(videoReqQuery); return videoService.list(videoReqQuery);
} }
@ApiOperation("查询成片详情") // 查询成片详情
@GetMapping("/getDetail/{id}") @GetMapping("/getDetail/{id}")
public ApiResponse<VideoRespVO> getById(@PathVariable Long id) { public ApiResponse<VideoRespVO> getById(@PathVariable Long id) {
return videoService.getById(id); return videoService.getById(id);

View File

@@ -7,14 +7,13 @@ import com.ycwl.basic.model.printer.resp.PrintTaskResp;
import com.ycwl.basic.model.printer.resp.TaskSyncResp; import com.ycwl.basic.model.printer.resp.TaskSyncResp;
import com.ycwl.basic.service.printer.PrinterService; import com.ycwl.basic.service.printer.PrinterService;
import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.ApiResponse;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
@IgnoreToken @IgnoreToken
@Api(tags = "打印机对接接口") // 打印机对接接口
@RestController @RestController
@RequestMapping("/printer/v1") @RequestMapping("/printer/v1")
public class PrinterTaskController { public class PrinterTaskController {

View File

@@ -10,7 +10,6 @@ import com.ycwl.basic.model.task.req.WorkerAuthReqVo;
import com.ycwl.basic.model.task.resp.TaskSyncRespVo; import com.ycwl.basic.model.task.resp.TaskSyncRespVo;
import com.ycwl.basic.service.task.TaskService; import com.ycwl.basic.service.task.TaskService;
import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.ApiResponse;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
@@ -21,7 +20,7 @@ import org.springframework.web.bind.annotation.RestController;
@IgnoreToken @IgnoreToken
@RestController @RestController
@Api(tags = "渲染端对接接口") // 渲染端对接接口
@RequestMapping("/task/v1/") @RequestMapping("/task/v1/")
public class TaskTaskController { public class TaskTaskController {

View File

@@ -1,9 +1,10 @@
package com.ycwl.basic.controller.viid; package com.ycwl.basic.controller.viid;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.thread.ThreadFactoryBuilder; import cn.hutool.core.thread.ThreadFactoryBuilder;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON; import com.ycwl.basic.utils.JacksonUtil;
import com.ycwl.basic.annotation.IgnoreLogReq; import com.ycwl.basic.annotation.IgnoreLogReq;
import com.ycwl.basic.annotation.IgnoreToken; import com.ycwl.basic.annotation.IgnoreToken;
import com.ycwl.basic.facebody.adapter.IFaceBodyAdapter; import com.ycwl.basic.facebody.adapter.IFaceBodyAdapter;
@@ -43,7 +44,6 @@ import com.ycwl.basic.task.DynamicTaskGenerator;
import com.ycwl.basic.utils.ImageUtils; import com.ycwl.basic.utils.ImageUtils;
import com.ycwl.basic.utils.IpUtils; import com.ycwl.basic.utils.IpUtils;
import com.ycwl.basic.utils.SnowFlakeUtil; import com.ycwl.basic.utils.SnowFlakeUtil;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -75,7 +75,7 @@ import static com.ycwl.basic.constant.StorageConstant.VIID_FACE;
@IgnoreToken @IgnoreToken
@RestController @RestController
@Api(tags = "摄像头对接接口") // 摄像头对接接口
@RequestMapping("/VIID") @RequestMapping("/VIID")
@Slf4j @Slf4j
public class ViidController { public class ViidController {
@@ -275,9 +275,14 @@ public class ViidController {
} }
if (shotTime == null) { if (shotTime == null) {
shotTime = new Date(); shotTime = new Date();
} else if (Math.abs(shotTime.getTime() - System.currentTimeMillis()) > 24 * 60 * 60 * 1000) { } else if (!DateUtil.isSameDay(shotTime, new Date())) {
log.warn("时间不是今天,使用当前时间。错误entity:{}", face);
shotTime = new Date(); shotTime = new Date();
} }
if (Math.abs(shotTime.getTime() - System.currentTimeMillis()) > 3600 * 1000) {
String jsonString = JacksonUtil.toJSONStringCompat(req);
log.warn("时间差超过1小时。device:{},错误entity:{}", device, jsonString);
}
Long scenicId = device.getScenicId(); Long scenicId = device.getScenicId();
if (scenicId == null) { if (scenicId == null) {
continue; continue;
@@ -378,7 +383,7 @@ public class ViidController {
String _sourceUrl = scenicStorageAdapter.uploadFile(_finalFile, filename); String _sourceUrl = scenicStorageAdapter.uploadFile(_finalFile, filename);
scenicStorageAdapter.setAcl(StorageAcl.PUBLIC_READ, filename); scenicStorageAdapter.setAcl(StorageAcl.PUBLIC_READ, filename);
source.setUrl(_sourceUrl); source.setUrl(_sourceUrl);
source.setPosJson(JSON.toJSONString(facePosition)); source.setPosJson(JacksonUtil.toJSONString(facePosition));
sourceMapper.add(source); sourceMapper.add(source);
} }
}); });

View File

@@ -11,7 +11,6 @@ import com.ycwl.basic.storage.adapters.IStorageAdapter;
import com.ycwl.basic.storage.enums.StorageAcl; import com.ycwl.basic.storage.enums.StorageAcl;
import com.ycwl.basic.storage.utils.StorageUtil; import com.ycwl.basic.storage.utils.StorageUtil;
import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.ApiResponse;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
@@ -26,7 +25,7 @@ import java.util.List;
@Slf4j @Slf4j
@IgnoreToken @IgnoreToken
@RestController @RestController
@Api(tags = "自定义切片工具对接接口") // 自定义切片工具对接接口
@RequestMapping("/vpt/v1/") @RequestMapping("/vpt/v1/")
public class VptController { public class VptController {

View File

@@ -12,7 +12,6 @@ import com.ycwl.basic.storage.adapters.IStorageAdapter;
import com.ycwl.basic.storage.enums.StorageAcl; import com.ycwl.basic.storage.enums.StorageAcl;
import com.ycwl.basic.storage.utils.StorageUtil; import com.ycwl.basic.storage.utils.StorageUtil;
import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.ApiResponse;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
@@ -27,7 +26,7 @@ import java.util.List;
@Slf4j @Slf4j
@IgnoreToken @IgnoreToken
@RestController @RestController
@Api(tags = "WVP对接接口") // WVP对接接口
@RequestMapping("/wvp/v1/") @RequestMapping("/wvp/v1/")
public class WvpController { public class WvpController {

View File

@@ -1,6 +1,6 @@
package com.ycwl.basic.device.checker.helper; package com.ycwl.basic.device.checker.helper;
import com.alibaba.fastjson.JSON; import com.ycwl.basic.utils.JacksonUtil;
import com.ycwl.basic.model.pc.device.entity.DeviceConfigEntity; import com.ycwl.basic.model.pc.device.entity.DeviceConfigEntity;
import com.ycwl.basic.model.pc.device.entity.DeviceEntity; import com.ycwl.basic.model.pc.device.entity.DeviceEntity;
import lombok.Setter; import lombok.Setter;
@@ -13,7 +13,7 @@ public abstract class CommonDeviceChecker<C> {
protected DeviceConfigEntity deviceConfig; protected DeviceConfigEntity deviceConfig;
public CommonDeviceChecker(String configJson) { public CommonDeviceChecker(String configJson) {
config = JSON.parseObject(configJson, getConfigClass()); config = JacksonUtil.parseObject(configJson, getConfigClass());
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")

View File

@@ -1,7 +1,7 @@
package com.ycwl.basic.device.operator; package com.ycwl.basic.device.operator;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON; import com.ycwl.basic.utils.JacksonUtil;
import com.ycwl.basic.device.entity.common.FileObject; import com.ycwl.basic.device.entity.common.FileObject;
import com.ycwl.basic.storage.StorageFactory; import com.ycwl.basic.storage.StorageFactory;
import com.ycwl.basic.storage.adapters.IStorageAdapter; import com.ycwl.basic.storage.adapters.IStorageAdapter;
@@ -28,7 +28,7 @@ public class AliOssStorageOperator extends ADeviceStorageOperator {
@Override @Override
public void loadConfig(String configJson) { public void loadConfig(String configJson) {
AliOssStorageConfig config = JSON.parseObject(configJson, AliOssStorageConfig.class); AliOssStorageConfig config = JacksonUtil.parseObject(configJson, AliOssStorageConfig.class);
adapter = StorageFactory.get(StorageType.ALI_OSS, config); adapter = StorageFactory.get(StorageType.ALI_OSS, config);
} }

View File

@@ -1,7 +1,6 @@
package com.ycwl.basic.device.operator; package com.ycwl.basic.device.operator;
import com.alibaba.fastjson.JSON; import com.ycwl.basic.utils.JacksonUtil;
import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.ycwl.basic.device.entity.common.FileObject; import com.ycwl.basic.device.entity.common.FileObject;
import com.ycwl.basic.device.entity.vpt_passive.VptPassiveStorageConfig; import com.ycwl.basic.device.entity.vpt_passive.VptPassiveStorageConfig;
@@ -29,10 +28,8 @@ public class VptPassiveStorageOperator extends ADeviceStorageOperator {
public Long scenicId; public Long scenicId;
public Long deviceId; public Long deviceId;
public String deviceNo; public String deviceNo;
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
public Date startTime; public Date startTime;
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
public Date endTime; public Date endTime;
} }
@@ -75,7 +72,7 @@ public class VptPassiveStorageOperator extends ADeviceStorageOperator {
@Override @Override
public void loadConfig(String configJson) { public void loadConfig(String configJson) {
this.config = JSON.parseObject(configJson, VptPassiveStorageConfig.class); this.config = JacksonUtil.parseObject(configJson, VptPassiveStorageConfig.class);
} }
@Override @Override
@@ -94,7 +91,7 @@ public class VptPassiveStorageOperator extends ADeviceStorageOperator {
if (redisTemplate == null) { if (redisTemplate == null) {
taskList.add(task); taskList.add(task);
} else { } else {
redisTemplate.opsForValue().set(String.format(TASK_KEY, task.scenicId, task.deviceNo) + task.taskId, JSON.toJSONString(task), 10 * 60L, TimeUnit.SECONDS); redisTemplate.opsForValue().set(String.format(TASK_KEY, task.scenicId, task.deviceNo) + task.taskId, JacksonUtil.toJSONString(task), 10 * 60L, TimeUnit.SECONDS);
} }
log.info("任务{}获取视频开始!共{}", task.taskId, taskList.size()); log.info("任务{}获取视频开始!共{}", task.taskId, taskList.size());
Date taskStartTime = new Date(); Date taskStartTime = new Date();

View File

@@ -3,8 +3,8 @@ package com.ycwl.basic.device.operator;
import cn.hutool.crypto.digest.MD5; import cn.hutool.crypto.digest.MD5;
import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpUtil; import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON; import com.ycwl.basic.utils.JacksonUtil;
import com.alibaba.fastjson.JSONObject; import com.fasterxml.jackson.core.type.TypeReference;
import com.ycwl.basic.device.entity.common.FileObject; import com.ycwl.basic.device.entity.common.FileObject;
import com.ycwl.basic.device.entity.wvp_active.WvpActiveStorageConfig; import com.ycwl.basic.device.entity.wvp_active.WvpActiveStorageConfig;
import com.ycwl.basic.storage.exceptions.StorageConfigException; import com.ycwl.basic.storage.exceptions.StorageConfigException;
@@ -30,7 +30,7 @@ public class WvpActiveStorageOperator extends ADeviceStorageOperator {
@Override @Override
public void loadConfig(String configJson) { public void loadConfig(String configJson) {
this.config = JSON.parseObject(configJson, WvpActiveStorageConfig.class); this.config = JacksonUtil.parseObject(configJson, WvpActiveStorageConfig.class);
} }
@Override @Override
@@ -55,13 +55,14 @@ public class WvpActiveStorageOperator extends ADeviceStorageOperator {
String password = MD5.create().digestHex(this.config.getLoginPassword()); String password = MD5.create().digestHex(this.config.getLoginPassword());
params.put("password", password); params.put("password", password);
String jsonResult = HttpUtil.get(url, params); String jsonResult = HttpUtil.get(url, params);
JSONObject result = JSON.parseObject(jsonResult); Map<String, Object> result = JacksonUtil.parseObject(jsonResult, Map.class);
if (result.getInteger("code") == 0) { Integer code = (Integer) result.get("code");
JSONObject data = result.getJSONObject("data"); if (code != null && code == 0) {
this.token = data.getString("accessToken"); Map<String, Object> data = (Map<String, Object>) result.get("data");
this.token = (String) data.get("accessToken");
return this.token; return this.token;
} else { } else {
throw new StorageConfigException("获取token失败,原因为:" + result.getString("msg")); throw new StorageConfigException("获取token失败,原因为:" + result.get("msg"));
} }
} }
public List<FileObject> listDirByDtRange(Date startDate, Date endDate) { public List<FileObject> listDirByDtRange(Date startDate, Date endDate) {
@@ -75,19 +76,23 @@ public class WvpActiveStorageOperator extends ADeviceStorageOperator {
params.put("page", 1); params.put("page", 1);
params.put("count", 100); params.put("count", 100);
String jsonResult = HttpRequest.get(url).form(params).header("Access-Token", getToken()).execute().body(); String jsonResult = HttpRequest.get(url).form(params).header("Access-Token", getToken()).execute().body();
JSONObject result = JSON.parseObject(jsonResult); Map<String, Object> result = JacksonUtil.parseObject(jsonResult, Map.class);
if (result.getInteger("code") == 0) { Integer code = (Integer) result.get("code");
JSONObject data = result.getJSONObject("data"); if (code != null && code == 0) {
List<JSONObject> recordList = data.getJSONArray("list").toJavaList(JSONObject.class); Map<String, Object> data = (Map<String, Object>) result.get("data");
List<Map<String, Object>> recordList = JacksonUtil.parseObject(JacksonUtil.toJSONString(((Map<String, Object>) result.get("data")).get("list")), new TypeReference<List<Map<String, Object>>>() {});
return recordList.stream() return recordList.stream()
.map(record -> { .map(record -> {
FileObject object = new FileObject(); FileObject object = new FileObject();
object.setName(record.getString("id")); object.setName((String) record.get("id"));
object.setPath(record.getString("folder")); object.setPath((String) record.get("folder"));
object.setUrl(getUrlForDownload(record.getInteger("id"))); Integer recordId = (Integer) record.get("id");
object.setUrl(getUrlForDownload(recordId != null ? recordId : 0));
object.setNeedDownload(true); object.setNeedDownload(true);
object.setCreateTime(new Date(record.getLongValue("startTime"))); Number startTime = (Number) record.get("startTime");
object.setEndTime(new Date(record.getLongValue("endTime"))); Number endTime = (Number) record.get("endTime");
object.setCreateTime(new Date(startTime != null ? startTime.longValue() : 0));
object.setEndTime(new Date(endTime != null ? endTime.longValue() : 0));
return object; return object;
}) })
.sorted(Comparator.comparing(FileObject::getCreateTime)) .sorted(Comparator.comparing(FileObject::getCreateTime))
@@ -100,10 +105,11 @@ public class WvpActiveStorageOperator extends ADeviceStorageOperator {
// assume path is recordId // assume path is recordId
String url = this.config.getHost() + "/api/cloud/record/play/path?recordId=" + id; String url = this.config.getHost() + "/api/cloud/record/play/path?recordId=" + id;
String jsonResult = HttpRequest.get(url).header("Access-Token", getToken()).execute().body(); String jsonResult = HttpRequest.get(url).header("Access-Token", getToken()).execute().body();
JSONObject result = JSON.parseObject(jsonResult); Map<String, Object> result = JacksonUtil.parseObject(jsonResult, Map.class);
if (result.getInteger("code") == 0) { Integer code = (Integer) result.get("code");
JSONObject data = result.getJSONObject("data"); if (code != null && code == 0) {
String httpPath = data.getString("httpPath"); Map<String, Object> data = (Map<String, Object>) result.get("data");
String httpPath = (String) data.get("httpPath");
if (StringUtils.isBlank(this.config.getZlmHost())) { if (StringUtils.isBlank(this.config.getZlmHost())) {
return httpPath; return httpPath;
} }
@@ -114,7 +120,7 @@ public class WvpActiveStorageOperator extends ADeviceStorageOperator {
} }
return this.config.getZlmHost() + uri.getPath() + "?" + uri.getQuery(); return this.config.getZlmHost() + uri.getPath() + "?" + uri.getQuery();
} else { } else {
throw new StorageUnsupportedException("获取播放地址失败,原因为:" + result.getString("msg")); throw new StorageUnsupportedException("获取播放地址失败,原因为:" + result.get("msg"));
} }
} }

View File

@@ -1,7 +1,6 @@
package com.ycwl.basic.device.operator; package com.ycwl.basic.device.operator;
import com.alibaba.fastjson.JSON; import com.ycwl.basic.utils.JacksonUtil;
import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.ycwl.basic.device.entity.common.FileObject; import com.ycwl.basic.device.entity.common.FileObject;
import com.ycwl.basic.device.entity.wvp_passive.WvpPassiveStorageConfig; import com.ycwl.basic.device.entity.wvp_passive.WvpPassiveStorageConfig;
@@ -28,10 +27,8 @@ public class WvpPassiveStorageOperator extends ADeviceStorageOperator {
public Long scenicId; public Long scenicId;
public Long deviceId; public Long deviceId;
public String deviceNo; public String deviceNo;
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
public Date startTime; public Date startTime;
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
public Date endTime; public Date endTime;
} }
@@ -72,7 +69,7 @@ public class WvpPassiveStorageOperator extends ADeviceStorageOperator {
@Override @Override
public void loadConfig(String configJson) { public void loadConfig(String configJson) {
this.config = JSON.parseObject(configJson, WvpPassiveStorageConfig.class); this.config = JacksonUtil.parseObject(configJson, WvpPassiveStorageConfig.class);
} }
@Override @Override
@@ -91,7 +88,7 @@ public class WvpPassiveStorageOperator extends ADeviceStorageOperator {
if (redisTemplate == null) { if (redisTemplate == null) {
taskList.add(task); taskList.add(task);
} else { } else {
redisTemplate.opsForValue().set(String.format(TASK_KEY, task.scenicId, task.deviceNo) + task.taskId, JSON.toJSONString(task), 10 * 60L, TimeUnit.SECONDS); redisTemplate.opsForValue().set(String.format(TASK_KEY, task.scenicId, task.deviceNo) + task.taskId, JacksonUtil.toJSONString(task), 10 * 60L, TimeUnit.SECONDS);
} }
Date taskStartTime = new Date(); Date taskStartTime = new Date();
while (true) { while (true) {

View File

@@ -0,0 +1,4 @@
package com.ycwl.basic.image.enhancer;
public class ImageEnhancerFactory {
}

View File

@@ -0,0 +1,44 @@
package com.ycwl.basic.image.enhancer.adapter;
import com.baidu.aip.imageprocess.AipImageProcess;
import com.ycwl.basic.image.enhancer.entity.BceEnhancerConfig;
import com.ycwl.basic.image.util.ImageUtil;
import com.ycwl.basic.utils.ImageUtils;
import org.json.JSONObject;
import org.springframework.web.multipart.MultipartFile;
import java.util.HashMap;
import java.util.Map;
public class BceImageEnhancer implements IEnhancer {
private BceEnhancerConfig config;
public boolean setConfig(BceEnhancerConfig config) {
this.config = config;
return true;
}
@Override
public boolean loadConfig(Map<String, String> _config) {
BceEnhancerConfig config = new BceEnhancerConfig();
config.setAppId(_config.get("appId"));
config.setApiKey(_config.get("apiKey"));
config.setSecretKey(_config.get("secretKey"));
config.setQps(Float.parseFloat(_config.get("qps")));
this.config = config;
return true;
}
@Override
public MultipartFile enhance(String url) {
AipImageProcess client = getClient();
HashMap<String, String> options = new HashMap<>();
JSONObject jsonObject = client.imageQualityEnhance(url, options);
return ImageUtils.base64ToMultipartFile(jsonObject.getString("image"));
}
public AipImageProcess getClient() {
AipImageProcess client = new AipImageProcess(config.getAppId(), config.getApiKey(), config.getSecretKey());
return client;
}
}

View File

@@ -0,0 +1,11 @@
package com.ycwl.basic.image.enhancer.adapter;
import org.springframework.web.multipart.MultipartFile;
import java.util.Map;
public interface IEnhancer {
boolean loadConfig(Map<String, String> _config);
public MultipartFile enhance(String url);
}

View File

@@ -0,0 +1,11 @@
package com.ycwl.basic.image.enhancer.entity;
import lombok.Data;
@Data
public class BceEnhancerConfig {
private String appId;
private String apiKey;
private String secretKey;
private float qps = 1.0f;
}

View File

@@ -14,6 +14,7 @@ public class WatermarkInfo {
*/ */
private File watermarkedFile; private File watermarkedFile;
private File qrcodeFile; private File qrcodeFile;
private File faceFile;
private String scenicLine; private String scenicLine;
private String secondLine; private String secondLine;
private String thirdLine; private String thirdLine;
@@ -35,4 +36,5 @@ public class WatermarkInfo {
} }
return scenicLine; return scenicLine;
} }
} }

View File

@@ -4,11 +4,13 @@ import com.ycwl.basic.image.watermark.entity.WatermarkInfo;
import com.ycwl.basic.image.watermark.exception.ImageWatermarkException; import com.ycwl.basic.image.watermark.exception.ImageWatermarkException;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import javax.imageio.IIOImage;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import javax.imageio.ImageWriteParam; import javax.imageio.ImageWriteParam;
import javax.imageio.ImageWriter; import javax.imageio.ImageWriter;
import javax.imageio.stream.ImageOutputStream; import javax.imageio.stream.ImageOutputStream;
import java.awt.*; import java.awt.*;
import java.awt.geom.Ellipse2D;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
@@ -67,6 +69,7 @@ public class LeicaWatermarkOperator implements IOperator {
BufferedImage baseImage; BufferedImage baseImage;
BufferedImage qrcodeImage; BufferedImage qrcodeImage;
BufferedImage logoImage; BufferedImage logoImage;
BufferedImage faceImage = null;
// 从类路径加载 zt-logo.png // 从类路径加载 zt-logo.png
InputStream logoInputStream = getClass().getResourceAsStream("/zt-logo.png"); InputStream logoInputStream = getClass().getResourceAsStream("/zt-logo.png");
if (logoInputStream == null) { if (logoInputStream == null) {
@@ -77,6 +80,13 @@ public class LeicaWatermarkOperator implements IOperator {
qrcodeImage = ImageIO.read(info.getQrcodeFile()); qrcodeImage = ImageIO.read(info.getQrcodeFile());
logoImage = ImageIO.read(logoInputStream); logoImage = ImageIO.read(logoInputStream);
logoInputStream.close(); logoInputStream.close();
if (info.getFaceFile() != null && info.getFaceFile().isFile()) {
try {
faceImage = ImageIO.read(info.getFaceFile());
} catch (IOException e) {
log.warn("头像文件读取失败", e);
}
}
} catch (IOException e) { } catch (IOException e) {
throw new ImageWatermarkException("图片打开失败"); throw new ImageWatermarkException("图片打开失败");
} }
@@ -113,6 +123,48 @@ public class LeicaWatermarkOperator implements IOperator {
g2d.drawImage(qrcodeImage, qrcodeX, qrcodeY, newQrcodeWidth, newQrcodeHeight, null); g2d.drawImage(qrcodeImage, qrcodeX, qrcodeY, newQrcodeWidth, newQrcodeHeight, null);
// 在二维码中央绘制圆形头像
if (faceImage != null) {
// 计算圆形头像的尺寸和位置
int avatarDiameter = (int) (newQrcodeHeight * 0.45);
int avatarX = qrcodeX + (newQrcodeWidth - avatarDiameter) / 2;
int avatarY = qrcodeY + (newQrcodeHeight - avatarDiameter) / 2;
// 保存当前的渲染设置和剪切区域
RenderingHints originalHints = g2d.getRenderingHints();
Shape originalClip = g2d.getClip();
// 设置高质量渲染
g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
// 创建圆形剪切区域
Ellipse2D avatarCircle = new Ellipse2D.Double(avatarX, avatarY, avatarDiameter, avatarDiameter);
g2d.setClip(avatarCircle);
// 实现CSS cover效果的缩放逻辑
double faceWidth = faceImage.getWidth();
double faceHeight = faceImage.getHeight();
double scaleX = avatarDiameter / faceWidth;
double scaleY = avatarDiameter / faceHeight;
double scale = Math.max(scaleX, scaleY); // 使用较大的缩放比例以填满圆形
int scaledWidth = (int) (faceWidth * scale);
int scaledHeight = (int) (faceHeight * scale);
// 计算居中位置
int faceDrawX = avatarX + (avatarDiameter - scaledWidth) / 2;
int faceDrawY = avatarY + (avatarDiameter - scaledHeight) / 2;
// 绘制缩放后的头像
g2d.drawImage(faceImage, faceDrawX, faceDrawY, scaledWidth, scaledHeight, null);
// 恢复原始设置
g2d.setClip(originalClip);
g2d.setRenderingHints(originalHints);
}
// 计算文字与二维码垂直居中对齐的Y坐标 // 计算文字与二维码垂直居中对齐的Y坐标
int qrcodeTop = qrcodeY; int qrcodeTop = qrcodeY;
int qrcodeBottom = qrcodeTop + newQrcodeHeight; int qrcodeBottom = qrcodeTop + newQrcodeHeight;
@@ -153,7 +205,7 @@ public class LeicaWatermarkOperator implements IOperator {
writeParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); writeParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
writeParam.setCompressionQuality(0.75f); // 设置写入质量为 75% writeParam.setCompressionQuality(0.75f); // 设置写入质量为 75%
} }
writer.write(null, new javax.imageio.IIOImage(newImage, null, null), writeParam); writer.write(null, new IIOImage(newImage, null, null), writeParam);
} catch (IOException e) { } catch (IOException e) {
throw new ImageWatermarkException("图片保存失败"); throw new ImageWatermarkException("图片保存失败");
} }

View File

@@ -59,9 +59,17 @@ public class NormalWatermarkOperator implements IOperator {
public File process(WatermarkInfo info) throws ImageWatermarkException { public File process(WatermarkInfo info) throws ImageWatermarkException {
BufferedImage baseImage; BufferedImage baseImage;
BufferedImage qrcodeImage; BufferedImage qrcodeImage;
BufferedImage faceImage = null;
try { try {
baseImage = ImageIO.read(info.getOriginalFile()); baseImage = ImageIO.read(info.getOriginalFile());
qrcodeImage = ImageIO.read(info.getQrcodeFile()); qrcodeImage = ImageIO.read(info.getQrcodeFile());
if (info.getFaceFile() != null && info.getFaceFile().isFile()) {
try {
faceImage = ImageIO.read(info.getFaceFile());
} catch (IOException e) {
log.warn("头像文件读取失败", e);
}
}
} catch (IOException e) { } catch (IOException e) {
throw new ImageWatermarkException("图片打开失败"); throw new ImageWatermarkException("图片打开失败");
} }
@@ -89,6 +97,47 @@ public class NormalWatermarkOperator implements IOperator {
g2d.setClip(circle); g2d.setClip(circle);
g2d.drawImage(qrcodeImage, offsetX, offsetY + QRCODE_OFFSET_Y, newQrcodeWidth, newQrcodeHeight, null); g2d.drawImage(qrcodeImage, offsetX, offsetY + QRCODE_OFFSET_Y, newQrcodeWidth, newQrcodeHeight, null);
g2d.setClip(originalClip); g2d.setClip(originalClip);
// 在圆形二维码中央绘制圆形头像
if (faceImage != null) {
// 计算圆形头像的尺寸和位置
int avatarDiameter = (int) (newQrcodeHeight * 0.45);
int avatarX = offsetX + (newQrcodeWidth - avatarDiameter) / 2;
int avatarY = offsetY + QRCODE_OFFSET_Y + (newQrcodeHeight - avatarDiameter) / 2;
// 保存当前的渲染设置
RenderingHints originalHints = g2d.getRenderingHints();
// 设置高质量渲染
g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
// 创建圆形剪切区域
Ellipse2D avatarCircle = new Ellipse2D.Double(avatarX, avatarY, avatarDiameter, avatarDiameter);
g2d.setClip(avatarCircle);
// 实现CSS cover效果的缩放逻辑
double faceWidth = faceImage.getWidth();
double faceHeight = faceImage.getHeight();
double scaleX = avatarDiameter / faceWidth;
double scaleY = avatarDiameter / faceHeight;
double scale = Math.max(scaleX, scaleY); // 使用较大的缩放比例以填满圆形
int scaledWidth = (int) (faceWidth * scale);
int scaledHeight = (int) (faceHeight * scale);
// 计算居中位置
int faceDrawX = avatarX + (avatarDiameter - scaledWidth) / 2;
int faceDrawY = avatarY + (avatarDiameter - scaledHeight) / 2;
// 绘制缩放后的头像
g2d.drawImage(faceImage, faceDrawX, faceDrawY, scaledWidth, scaledHeight, null);
// 恢复原始设置
g2d.setClip(originalClip);
g2d.setRenderingHints(originalHints);
}
// 计算文字与二维码垂直居中对齐的Y坐标 // 计算文字与二维码垂直居中对齐的Y坐标
int qrcodeTop = offsetY + QRCODE_OFFSET_Y; int qrcodeTop = offsetY + QRCODE_OFFSET_Y;
int qrcodeBottom = qrcodeTop + newQrcodeHeight; int qrcodeBottom = qrcodeTop + newQrcodeHeight;

View File

@@ -17,6 +17,7 @@ import com.ycwl.basic.model.pc.scenic.entity.ScenicAccountEntity;
import com.ycwl.basic.utils.JwtTokenUtil; import com.ycwl.basic.utils.JwtTokenUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.Strings;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@@ -63,11 +64,6 @@ public class AuthInterceptor implements HandlerInterceptor {
return true; return true;
} }
// 放行白名单
if (getWhite(request.getRequestURI())) {
return true;
}
/* /*
验证token 验证token
*/ */
@@ -83,7 +79,7 @@ public class AuthInterceptor implements HandlerInterceptor {
JwtInfo jwtInfo; JwtInfo jwtInfo;
try { try {
jwtInfo = JwtTokenUtil.parsingToken(token); jwtInfo = JwtTokenUtil.parsingToken(token);
if (StringUtils.equals(jwtInfo.getRoleId(), MERCHANT.type)) { if (Strings.CS.equals(jwtInfo.getRoleId(), MERCHANT.type)) {
Long merchantId = jwtInfo.getUserId(); Long merchantId = jwtInfo.getUserId();
ScenicAccountEntity account = scenicAccountMapper.findAccountById(merchantId.toString()); ScenicAccountEntity account = scenicAccountMapper.findAccountById(merchantId.toString());
LocalDateTime expireTime = jwtInfo.getExpireTime(); LocalDateTime expireTime = jwtInfo.getExpireTime();
@@ -91,7 +87,7 @@ public class AuthInterceptor implements HandlerInterceptor {
throw new TokenExpireException("token过期"); throw new TokenExpireException("token过期");
} }
} }
if (StringUtils.equals(jwtInfo.getRoleId(), ADMIN.type)) { if (Strings.CS.equals(jwtInfo.getRoleId(), ADMIN.type)) {
Long adminId = jwtInfo.getUserId(); Long adminId = jwtInfo.getUserId();
LoginEntity account = adminUserMapper.getById(adminId); LoginEntity account = adminUserMapper.getById(adminId);
LocalDateTime expireTime = jwtInfo.getExpireTime(); LocalDateTime expireTime = jwtInfo.getExpireTime();
@@ -156,16 +152,6 @@ public class AuthInterceptor implements HandlerInterceptor {
return token; return token;
} }
//白名单swagger2
private boolean getWhite(String path) {
return StringUtils.containsAny(
path,
"springfox", "swagger", "v2",
"webjars", "doc.html", "favicon.ico"
);
}
/** /**
* 业务接口白名单 * 业务接口白名单
* *

View File

@@ -1,6 +1,5 @@
package com.ycwl.basic.mapper; package com.ycwl.basic.mapper;
import com.ycwl.basic.model.pc.coupon.entity.CouponEntity; import com.ycwl.basic.model.pc.coupon.entity.CouponEntity;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ycwl.basic.model.pc.coupon.req.CouponQueryReq; import com.ycwl.basic.model.pc.coupon.req.CouponQueryReq;
import com.ycwl.basic.model.pc.coupon.resp.CouponRespVO; import com.ycwl.basic.model.pc.coupon.resp.CouponRespVO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
@@ -8,10 +7,22 @@ import org.apache.ibatis.annotations.Mapper;
import java.util.List; import java.util.List;
@Mapper @Mapper
public interface CouponMapper extends BaseMapper<CouponEntity> { public interface CouponMapper {
List<CouponRespVO> selectByQuery(CouponQueryReq query); List<CouponRespVO> selectByQuery(CouponQueryReq query);
int updateStatus(Integer id); int updateStatus(Integer id);
CouponEntity getById(Integer couponId); CouponEntity getById(Integer couponId);
int insert(CouponEntity coupon);
int updateById(CouponEntity coupon);
int deleteById(Integer id);
List<CouponEntity> selectList();
CouponEntity selectById(Integer id);
CouponEntity selectByScenicIdAndTypeAndStatus(Long scenicId, Integer type, Integer status);
} }

View File

@@ -2,6 +2,8 @@ package com.ycwl.basic.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ycwl.basic.model.pc.couponRecord.entity.CouponRecordEntity; import com.ycwl.basic.model.pc.couponRecord.entity.CouponRecordEntity;
import com.ycwl.basic.model.pc.couponRecord.req.CouponRecordPageQueryReq;
import com.ycwl.basic.model.pc.couponRecord.resp.CouponRecordPageResp;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import java.util.List; import java.util.List;
@@ -9,4 +11,10 @@ import java.util.List;
@Mapper @Mapper
public interface CouponRecordMapper extends BaseMapper<CouponRecordEntity> { public interface CouponRecordMapper extends BaseMapper<CouponRecordEntity> {
List<CouponRecordEntity> queryByUserWithGoodsId(Long scenicId, Long memberId, String goodsId); List<CouponRecordEntity> queryByUserWithGoodsId(Long scenicId, Long memberId, String goodsId);
List<CouponRecordEntity> queryByMemberIdAndFaceId(Long memberId, Long faceId);
CouponRecordEntity queryByMemberIdAndFaceIdAndType(Long memberId, Long faceId, Integer type);
List<CouponRecordPageResp> selectByPageQuery(CouponRecordPageQueryReq query);
} }

View File

@@ -0,0 +1,10 @@
package com.ycwl.basic.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ycwl.basic.model.custom.entity.CustomUploadTaskEntity;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface CustomUploadTaskMapper extends BaseMapper<CustomUploadTaskEntity> {
CustomUploadTaskEntity getByJobId(String jobId);
}

View File

@@ -52,7 +52,9 @@ public interface OrderMapper {
int updateOrderPrice(OrderEntity updateEntity); int updateOrderPrice(OrderEntity updateEntity);
int updateOrder(OrderEntity updateEntity); int updateOrder(OrderEntity updateEntity);
OrderEntity queryTypeOrder(Long userId, Long scenicId, int orderType, Integer priceConfigId); OrderEntity queryTypeOrder(Long userId, Long faceId, Long scenicId, int orderType, Integer priceConfigId);
OrderEntity getUserOrderItem(Long userId, Long scenicId, int orderType, Long configId, Integer goodsType, Long goodsId); OrderEntity getUserOrderItem(Long userId, Long scenicId, int orderType, Long configId, Integer goodsType, Long goodsId);
int updateMemberIdByFaceId(OrderEntity orderEntity);
} }

View File

@@ -83,4 +83,13 @@ public interface SourceMapper {
void addSourceWatermark(Long sourceId, Long faceId, String type, String url); void addSourceWatermark(Long sourceId, Long faceId, String type, String url);
int deleteUselessSource(); int deleteUselessSource();
int updateMemberIdByFaceId(Long faceId, Long memberId);
/**
* 根据faceId查询type=2的source列表
* @param faceId 人脸ID
* @return type=2的source列表
*/
List<SourceEntity> listImageSourcesByFaceId(Long faceId);
} }

View File

@@ -102,4 +102,15 @@ public interface StatisticsMapper {
List<HashMap<String, String>> orderChartByDate(CommonQueryReq query); List<HashMap<String, String>> orderChartByDate(CommonQueryReq query);
List<HashMap<String, String>> orderChartByHour(CommonQueryReq query); List<HashMap<String, String>> orderChartByHour(CommonQueryReq query);
List<HashMap<String, String>> scanCodeMemberChartByHour(CommonQueryReq query);
List<HashMap<String, String>> scanCodeMemberChartByDate(CommonQueryReq query);
/**
* 统计订单数量和金额(包含推送订单和现场订单)
* @param query
* @return
*/
com.ycwl.basic.model.pc.statistics.resp.OrderStatisticsResp getOrderStatistics(CommonQueryReq query);
} }

View File

@@ -55,4 +55,6 @@ public interface TaskMapper {
List<TaskEntity> listEntity(TaskReqQuery taskReqQuery); List<TaskEntity> listEntity(TaskReqQuery taskReqQuery);
List<TaskRespVO> selectNotRunningByScenicList(String scenicOnly); List<TaskRespVO> selectNotRunningByScenicList(String scenicOnly);
List<TaskEntity> selectAllFailed();
} }

View File

@@ -56,4 +56,6 @@ public interface VideoMapper {
int deleteNotBuyFaceRelations(Long userId, Long faceId); int deleteNotBuyFaceRelations(Long userId, Long faceId);
int deleteUselessVideo(); int deleteUselessVideo();
int updateMemberIdByFaceId(Long faceId, Long memberId);
} }

View File

@@ -1,19 +1,17 @@
package com.ycwl.basic.model.common; package com.ycwl.basic.model.common;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
/** /**
* @date 2021年10月26日 14:09 * @date 2021年10月26日 14:09
*/ */
@ApiModel(value = "公共查询参数实体类", description = "公共查询参数实体类") // 公共查询参数实体类: 公共查询参数实体类
@Data @Data
public class BaseQueryParameterReq { public class BaseQueryParameterReq {
@ApiModelProperty(value = "当前页数") // 当前页数
private Integer pageNum = 1; private Integer pageNum = 1;
@ApiModelProperty(value = "每页条数") // 每页条数
private Integer pageSize = 10; private Integer pageSize = 10;
} }

View File

@@ -0,0 +1,32 @@
package com.ycwl.basic.model.custom.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
@Data
@TableName("custom_upload_task")
public class CustomUploadTaskEntity {
@TableId(value = "id", type = IdType.ASSIGN_ID)
private Long id;
private Long scenicId;
private Long deviceId;
private String savePath;
private String status;
private String jobId;
private String errorMsg;
private Date createTime;
private Date updateTime;
}

View File

@@ -0,0 +1,145 @@
package com.ycwl.basic.model.custom.entity;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.util.List;
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class FaceData {
private String category;
private String name;
private List<Occurrence> occurrences;
private Double ratio;
// Getters and setters
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<Occurrence> getOccurrences() {
return occurrences;
}
public void setOccurrences(List<Occurrence> occurrences) {
this.occurrences = occurrences;
}
public Double getRatio() {
return ratio;
}
public void setRatio(Double ratio) {
this.ratio = ratio;
}
@JsonIgnoreProperties(ignoreUnknown = true)
public static class Occurrence {
@JsonProperty("faceUrl")
private String faceUrl;
private Double from;
private Position position;
private String scene;
private Double score;
private Double timestamp;
private Double to;
// Getters and setters
public String getFaceUrl() {
return faceUrl;
}
public void setFaceUrl(String faceUrl) {
this.faceUrl = faceUrl;
}
public Double getFrom() {
return from;
}
public void setFrom(Double from) {
this.from = from;
}
public Position getPosition() {
return position;
}
public void setPosition(Position position) {
this.position = position;
}
public String getScene() {
return scene;
}
public void setScene(String scene) {
this.scene = scene;
}
public Double getScore() {
return score;
}
public void setScore(Double score) {
this.score = score;
}
public Double getTimestamp() {
return timestamp;
}
public void setTimestamp(Double timestamp) {
this.timestamp = timestamp;
}
public Double getTo() {
return to;
}
public void setTo(Double to) {
this.to = to;
}
}
@JsonIgnoreProperties(ignoreUnknown = true)
public static class Position {
@JsonProperty("leftTop")
private List<Integer> leftTop;
@JsonProperty("rightBottom")
private List<Integer> rightBottom;
// Getters and setters
public List<Integer> getLeftTop() {
return leftTop;
}
public void setLeftTop(List<Integer> leftTop) {
this.leftTop = leftTop;
}
public List<Integer> getRightBottom() {
return rightBottom;
}
public void setRightBottom(List<Integer> rightBottom) {
this.rightBottom = rightBottom;
}
}
}

View File

@@ -0,0 +1,13 @@
package com.ycwl.basic.model.custom.req;
import lombok.Data;
@Data
public class AliyunCallbackReq {
private String jobId;
private String pipelineId;
private String status;
}

View File

@@ -0,0 +1,13 @@
package com.ycwl.basic.model.custom.req;
import lombok.Data;
@Data
public class CreateUploadTaskReq {
private String accessKey;
private String fileName;
private String type;
}

View File

@@ -0,0 +1,11 @@
package com.ycwl.basic.model.custom.req;
import lombok.Data;
@Data
public class UploadCompleteReq {
private String accessKey;
private Long taskId;
}

View File

@@ -0,0 +1,13 @@
package com.ycwl.basic.model.custom.req;
import lombok.Data;
@Data
public class UploadFailedReq {
private String accessKey;
private Long taskId;
private String errorMsg;
}

View File

@@ -0,0 +1,13 @@
package com.ycwl.basic.model.custom.resp;
import lombok.Data;
@Data
public class CreateUploadTaskResp {
private Long taskId;
private String uploadUrl;
private String savePath;
}

View File

@@ -0,0 +1,10 @@
package com.ycwl.basic.model.mobile.coupon.req;
import lombok.Data;
@Data
public class ClaimCouponReq {
private Long memberId;
private Long faceId;
private Integer type;
}

View File

@@ -1,8 +1,7 @@
package com.ycwl.basic.model.mobile.goods; package com.ycwl.basic.model.mobile.goods;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel; import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
@@ -15,35 +14,37 @@ import java.util.Date;
* @Date:2024/12/5 15:10 * @Date:2024/12/5 15:10
*/ */
@Data @Data
@ApiModel("商品详情") // 商品详情
public class GoodsDetailVO { public class GoodsDetailVO {
@ApiModelProperty("商品名称") // 商品名称
private String goodsName; private String goodsName;
@ApiModelProperty("人脸id") // 人脸id
private Long faceId; private Long faceId;
@ApiModelProperty("景区id") // 景区id
private Long scenicId; private Long scenicId;
@ApiModelProperty("景区名称") // 景区名称
private String scenicName; private String scenicName;
@ApiModelProperty("商品类型 1:成片视频 2:源素材") // 商品类型 1:成片视频 2:源素材
private Integer goodsType; private Integer goodsType;
@ApiModelProperty("商品id goodsType=1时为videoId,goodsType=2时为sourceId") // 商品id goodsType=1时为videoId,goodsType=2时为sourceId
private Long goodsId; private Long goodsId;
@ApiModelProperty("模版封面图片") // 模版封面图片
private String templateCoverUrl; private String templateCoverUrl;
@ApiModelProperty("图片文件存储地址") // 图片文件存储地址
private String url; private String url;
@ApiModelProperty("视频文件存储地址") // 视频文件存储地址
private String videoUrl; private String videoUrl;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime; private Date createTime;
@ApiModelProperty("价格") // 价格
private BigDecimal price; private BigDecimal price;
@ApiModelProperty("是否已购买 0否 1是") // 是否已购买 0否 1是
private Integer isBuy; private Integer isBuy;
private Integer isFree; private Integer isFree;
private Integer parts; private Integer parts;
private Integer sort; private Integer sort;
@JsonProperty("sourceType")
public Integer getSourceType() { public Integer getSourceType() {
return goodsType; return goodsType;
} }

View File

@@ -1,7 +1,5 @@
package com.ycwl.basic.model.mobile.goods; package com.ycwl.basic.model.mobile.goods;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
@@ -11,22 +9,22 @@ import java.math.BigDecimal;
* @Date:2024/12/5 15:10 * @Date:2024/12/5 15:10
*/ */
@Data @Data
@ApiModel("移动端商品列表响应信息") // 移动端商品列表响应信息
public class GoodsPageVO { public class GoodsPageVO {
@ApiModelProperty("商品名称") // 商品名称
private String goodsName; private String goodsName;
@ApiModelProperty("景区id") // 景区id
private Long scenicId; private Long scenicId;
private Long faceId; private Long faceId;
@ApiModelProperty("景区名称") // 景区名称
private String scenicName; private String scenicName;
@ApiModelProperty("商品类型 1:成片视频 2:源素材") // 商品类型 1:成片视频 2:源素材
private Integer goodsType; private Integer goodsType;
@ApiModelProperty("源素材类型 1:视频 2:图片") // 源素材类型 1:视频 2:图片
private Integer sourceType; private Integer sourceType;
@ApiModelProperty("商品(vlog)id goodsType为1时才有值") // 商品(vlog)id goodsType为1时才有值
private Long goodsId; private Long goodsId;
private String templateName; private String templateName;
@ApiModelProperty("模版封面图片") // 模版封面图片
private String templateCoverUrl; private String templateCoverUrl;
} }

View File

@@ -1,7 +1,5 @@
package com.ycwl.basic.model.mobile.goods; package com.ycwl.basic.model.mobile.goods;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
@@ -11,12 +9,12 @@ import lombok.experimental.Accessors;
*/ */
@Accessors(chain = true) @Accessors(chain = true)
@Data @Data
@ApiModel("查询商品价格请求参数") // 查询商品价格请求参数
public class GoodsPriceQueryReq { public class GoodsPriceQueryReq {
@ApiModelProperty("景区id") // 景区id
private Long scenicId; private Long scenicId;
@ApiModelProperty("商品类型 0:成片vlog 12:源素材") // 商品类型 0:成片vlog 12:源素材
private Integer goodsType; private Integer goodsType;
@ApiModelProperty("商品id goodsType=0时才有值") // 商品id goodsType=0时才有值
private Long goodsId; private Long goodsId;
} }

View File

@@ -1,7 +1,5 @@
package com.ycwl.basic.model.mobile.goods; package com.ycwl.basic.model.mobile.goods;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
/** /**
@@ -9,14 +7,14 @@ import lombok.Data;
* @Date:2024/12/5 15:40 * @Date:2024/12/5 15:40
*/ */
@Data @Data
@ApiModel(value = "商品查询对象") // 商品查询对象
public class GoodsReqQuery { public class GoodsReqQuery {
@ApiModelProperty("是否已购买 0否 1是") // 是否已购买 0否 1是
private Integer isBuy; private Integer isBuy;
private Long faceId; private Long faceId;
private Long goodsId; private Long goodsId;
@ApiModelProperty("景区id") // 景区id
private Long scenicId; private Long scenicId;
@ApiModelProperty("源素材商品类型 1视频 2图像") // 源素材商品类型 1视频 2图像
private Integer sourceType; private Integer sourceType;
} }

View File

@@ -1,8 +1,6 @@
package com.ycwl.basic.model.mobile.goods; package com.ycwl.basic.model.mobile.goods;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
@@ -13,13 +11,13 @@ import java.util.Date;
* @Date:2024/12/5 15:10 * @Date:2024/12/5 15:10
*/ */
@Data @Data
@ApiModel("商品详情") // 商品详情
public class GoodsUrlVO { public class GoodsUrlVO {
@ApiModelProperty("商品类型 0:vlog 1:成片视频 2:源素材") // 商品类型 0:vlog 1:成片视频 2:源素材
private Integer goodsType; private Integer goodsType;
@ApiModelProperty("商品id goodsType=0时为videoId,goodsType=2时为sourceId") // 商品id goodsType=0时为videoId,goodsType=2时为sourceId
private Long goodsId; private Long goodsId;
@ApiModelProperty("图片文件存储地址") // 图片文件存储地址
private String url; private String url;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime; private Date createTime;

View File

@@ -1,8 +1,7 @@
package com.ycwl.basic.model.mobile.goods; package com.ycwl.basic.model.mobile.goods;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel; import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
@@ -13,44 +12,59 @@ import java.util.Date;
* @Date:2024/12/5 15:10 * @Date:2024/12/5 15:10
*/ */
@Data @Data
@ApiModel("vlog商品详情") // vlog商品详情
public class VideoGoodsDetailVO { public class VideoGoodsDetailVO {
@ApiModelProperty("商品名称") // 商品名称
private String goodsName; private String goodsName;
@ApiModelProperty("景区id") // 景区id
private Long scenicId; private Long scenicId;
@ApiModelProperty("景区名称") // 景区名称
private String scenicName; private String scenicName;
@ApiModelProperty("经度") // 经度
private BigDecimal longitude; private BigDecimal longitude;
@ApiModelProperty("纬度") // 纬度
private BigDecimal latitude; private BigDecimal latitude;
@ApiModelProperty("商品类型 1:成片视频 2:源素材") // 商品类型 1:成片视频 2:源素材
private Integer goodsType; private Integer goodsType;
@ApiModelProperty("源素材类型 1:视频 2:图片") // 源素材类型 1:视频 2:图片
private Integer sourceType; private Integer sourceType;
@ApiModelProperty("商品id goodsType=1时为videoId,goodsType=2时为sourceId") // 商品id goodsType=1时为videoId,goodsType=2时为sourceId
private Long goodsId; private Long goodsId;
@ApiModelProperty("模版封面图片") // 模版封面图片
private String templateCoverUrl; private String templateCoverUrl;
@ApiModelProperty("图片文件存储地址") // 图片文件存储地址
private String url; private String url;
@ApiModelProperty("视频文件存储地址") // 视频文件存储地址
private String videoUrl; private String videoUrl;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime; private Date createTime;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date shotTime; private Date shotTime;
@ApiModelProperty("价格") // 价格
private Integer couponId;
private Integer couponRecordId;
private BigDecimal couponPrice;
private BigDecimal origPrice;
private String price; private String price;
private String slashPrice; private BigDecimal slashPrice;
@ApiModelProperty("是否已购买 0否 1是") // 是否已购买 0否 1是
private Integer isBuy; private Integer isBuy;
@ApiModelProperty("镜头数") // 镜头数
private Integer lensNum; private Integer lensNum;
private Long faceId; private Long faceId;
private boolean share = false; private boolean share = false;
private Integer height; private Integer height;
private Integer width; private Integer width;
private BigDecimal duration; private BigDecimal duration;
@JsonProperty("discountPrice")
public BigDecimal getDiscountPrice() {
if (slashPrice == null) {
return BigDecimal.ZERO;
}
if (slashPrice.compareTo(BigDecimal.ZERO) <= 0) {
return BigDecimal.ZERO;
}
return slashPrice.subtract(origPrice);
}
} }

View File

@@ -1,8 +1,6 @@
package com.ycwl.basic.model.mobile.index; package com.ycwl.basic.model.mobile.index;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
/** /**
@@ -12,10 +10,10 @@ import lombok.Data;
* @Version: 1.0 * @Version: 1.0
*/ */
@Data @Data
@ApiModel("顶部状态") // 顶部状态
public class TopStateResp { public class TopStateResp {
@ApiModelProperty("是否录入有效人脸") // 是否录入有效人脸
private Boolean isFace = false; private Boolean isFace = false;
@ApiModelProperty("AI合成了多少个视频,null时没有合成的视频") // AI合成了多少个视频,null时没有合成的视频
private Integer aiVideoNum; private Integer aiVideoNum;
} }

View File

@@ -1,5 +1,6 @@
package com.ycwl.basic.model.mobile.order; package com.ycwl.basic.model.mobile.order;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
@@ -18,6 +19,7 @@ public class IsBuyBatchRespVO {
private BigDecimal couponPrice = BigDecimal.ZERO; private BigDecimal couponPrice = BigDecimal.ZERO;
private BigDecimal slashPrice; private BigDecimal slashPrice;
@JsonProperty("price")
public BigDecimal getPrice() { public BigDecimal getPrice() {
if (origPrice == null) { if (origPrice == null) {
return BigDecimal.ZERO; return BigDecimal.ZERO;
@@ -27,6 +29,7 @@ public class IsBuyBatchRespVO {
} }
return origPrice.subtract(couponPrice); return origPrice.subtract(couponPrice);
} }
@JsonProperty("discountPrice")
public BigDecimal getDiscountPrice() { public BigDecimal getDiscountPrice() {
if (slashPrice == null) { if (slashPrice == null) {
return BigDecimal.ZERO; return BigDecimal.ZERO;

View File

@@ -1,5 +1,6 @@
package com.ycwl.basic.model.mobile.order; package com.ycwl.basic.model.mobile.order;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
@@ -17,6 +18,7 @@ public class IsBuyRespVO {
private BigDecimal couponPrice = BigDecimal.ZERO; private BigDecimal couponPrice = BigDecimal.ZERO;
private BigDecimal slashPrice; private BigDecimal slashPrice;
@JsonProperty("price")
public BigDecimal getPrice() { public BigDecimal getPrice() {
if (origPrice == null) { if (origPrice == null) {
return BigDecimal.ZERO; return BigDecimal.ZERO;
@@ -26,6 +28,7 @@ public class IsBuyRespVO {
} }
return origPrice.subtract(couponPrice); return origPrice.subtract(couponPrice);
} }
@JsonProperty("discountPrice")
public BigDecimal getDiscountPrice() { public BigDecimal getDiscountPrice() {
if (slashPrice == null) { if (slashPrice == null) {
return BigDecimal.ZERO; return BigDecimal.ZERO;

View File

@@ -1,8 +1,6 @@
package com.ycwl.basic.model.mobile.order; package com.ycwl.basic.model.mobile.order;
import com.ycwl.basic.model.common.BaseQueryParameterReq; import com.ycwl.basic.model.common.BaseQueryParameterReq;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
@@ -15,9 +13,9 @@ import java.util.Date;
*/ */
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Data @Data
@ApiModel(value = "移动端订单查询对象") // 移动端订单查询对象
public class OrderAppPageReq extends BaseQueryParameterReq { public class OrderAppPageReq extends BaseQueryParameterReq {
@ApiModelProperty(value = "用户id",hidden = true) // 用户id
private Long memberId; private Long memberId;
// /** // /**
// * 微信openId // * 微信openId
@@ -84,6 +82,6 @@ public class OrderAppPageReq extends BaseQueryParameterReq {
// private Date startRefundTime; // private Date startRefundTime;
// private Date endRefundTime; // private Date endRefundTime;
@ApiModelProperty("订单类型 0成片(vlog) 1原片 2照片") // 订单类型 0成片(vlog) 1原片 2照片
private Integer type; private Integer type;
} }

View File

@@ -1,8 +1,6 @@
package com.ycwl.basic.model.mobile.order; package com.ycwl.basic.model.mobile.order;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
/** /**
@@ -12,10 +10,10 @@ import lombok.Data;
* @Version: 1.0 * @Version: 1.0
*/ */
@Data @Data
@ApiModel("退款请求参数") // 退款请求参数
public class RefundOrderReq { public class RefundOrderReq {
@ApiModelProperty("订单ID") // 订单ID
private Long orderId; private Long orderId;
@ApiModelProperty("理由") // 理由
private String refundReason; private String refundReason;
} }

View File

@@ -1,7 +1,5 @@
package com.ycwl.basic.model.mobile.scenic; package com.ycwl.basic.model.mobile.scenic;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
@@ -11,71 +9,71 @@ import java.math.BigDecimal;
* @Date:2024/12/6 10:25 * @Date:2024/12/6 10:25
*/ */
@Data @Data
@ApiModel("移动端景区响应参数") // 移动端景区响应参数
public class ScenicAppVO { public class ScenicAppVO {
private Long id; private Long id;
/** /**
* 景区名称 * 景区名称
*/ */
@ApiModelProperty("景区名称") // 景区名称
private String name; private String name;
/** /**
* 联系电话 * 联系电话
*/ */
@ApiModelProperty("联系电话") // 联系电话
private String phone; private String phone;
/** /**
* 景区介绍 * 景区介绍
*/ */
@ApiModelProperty("景区介绍") // 景区介绍
private String introduction; private String introduction;
@ApiModelProperty("封面图") // 封面图
private String coverUrl; private String coverUrl;
/** /**
* 经度 * 经度
*/ */
@ApiModelProperty("经度") // 经度
private BigDecimal longitude; private BigDecimal longitude;
/*** /***
* 纬度 * 纬度
*/ */
@ApiModelProperty("纬度") // 纬度
private BigDecimal latitude; private BigDecimal latitude;
/** /**
* 半径(km) * 半径(km)
*/ */
@ApiModelProperty("半径(km)") // 半径(km)
private BigDecimal radius; private BigDecimal radius;
/** /**
* 省份 * 省份
*/ */
@ApiModelProperty("省份") // 省份
private String province; private String province;
/** /**
* 城市 * 城市
*/ */
@ApiModelProperty("城市") // 城市
private String city; private String city;
/** /**
* 区 * 区
*/ */
@ApiModelProperty("") // 区
private String area; private String area;
/** /**
* 详细地址 * 详细地址
*/ */
@ApiModelProperty("详细地址") // 详细地址
private String address; private String address;
/** /**
* 距离 * 距离
*/ */
@ApiModelProperty("距离米") // 距离米
private BigDecimal distance; private BigDecimal distance;
/** /**
* 机位数量 * 机位数量
*/ */
@ApiModelProperty("机位数量") // 机位数量
private Integer deviceNum; private Integer deviceNum;
} }

View File

@@ -1,7 +1,5 @@
package com.ycwl.basic.model.mobile.scenic; package com.ycwl.basic.model.mobile.scenic;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
/** /**
@@ -9,8 +7,8 @@ import lombok.Data;
* @Date:2024/12/6 10:37 * @Date:2024/12/6 10:37
*/ */
@Data @Data
@ApiModel("移动端景区设备数量响应参数") // 移动端景区设备数量响应参数
public class ScenicDeviceCountVO { public class ScenicDeviceCountVO {
@ApiModelProperty("景区设备总数") // 景区设备总数
private Integer totalDeviceCount; private Integer totalDeviceCount;
} }

View File

@@ -1,7 +1,5 @@
package com.ycwl.basic.model.mobile.scenic; package com.ycwl.basic.model.mobile.scenic;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
@@ -10,10 +8,10 @@ import java.math.BigDecimal;
* @Author:songmingsong * @Author:songmingsong
*/ */
@Data @Data
@ApiModel("首页景区列表") // 首页景区列表
public class ScenicIndexVO { public class ScenicIndexVO {
@ApiModelProperty("经度") // 经度
private BigDecimal longitude; private BigDecimal longitude;
@ApiModelProperty("纬度") // 纬度
private BigDecimal latitude; private BigDecimal latitude;
} }

View File

@@ -1,7 +1,5 @@
package com.ycwl.basic.model.mobile.scenic.account; package com.ycwl.basic.model.mobile.scenic.account;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.util.List; import java.util.List;
@@ -11,18 +9,18 @@ import java.util.List;
* @Date:2024/12/13 9:44 * @Date:2024/12/13 9:44
*/ */
@Data @Data
@ApiModel("景区账号登录响应类") // 景区账号登录响应类
public class ScenicLoginOldRespVO { public class ScenicLoginOldRespVO {
private Long id; private Long id;
@ApiModelProperty("景区id") // 景区id
private Long scenicId; private Long scenicId;
@ApiModelProperty("是否是超级管理员") // 是否是超级管理员
private Integer isSuper; private Integer isSuper;
@ApiModelProperty("账号名称") // 账号名称
private String name; private String name;
@ApiModelProperty("账号") // 账号
private String account; private String account;
@ApiModelProperty("1启用 0禁用") // 1启用 0禁用
private Integer status; private Integer status;
private String token; private String token;
} }

View File

@@ -1,7 +1,5 @@
package com.ycwl.basic.model.mobile.scenic.account; package com.ycwl.basic.model.mobile.scenic.account;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
/** /**
@@ -9,10 +7,7 @@ import lombok.Data;
* @Date:2024/12/13 9:44 * @Date:2024/12/13 9:44
*/ */
@Data @Data
@ApiModel("景区账号登录请求类")
public class ScenicLoginReq { public class ScenicLoginReq {
@ApiModelProperty("账号")
private String account; private String account;
@ApiModelProperty("密码")
private String password; private String password;
} }

View File

@@ -1,7 +1,5 @@
package com.ycwl.basic.model.mobile.scenic.account; package com.ycwl.basic.model.mobile.scenic.account;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.util.List; import java.util.List;
@@ -11,18 +9,18 @@ import java.util.List;
* @Date:2024/12/13 9:44 * @Date:2024/12/13 9:44
*/ */
@Data @Data
@ApiModel("景区账号登录响应类") // 景区账号登录响应类
public class ScenicLoginRespVO { public class ScenicLoginRespVO {
private Long id; private Long id;
@ApiModelProperty("景区id") // 景区id
private List<Long> scenicId; private List<Long> scenicId;
@ApiModelProperty("是否是超级管理员") // 是否是超级管理员
private Integer isSuper; private Integer isSuper;
@ApiModelProperty("账号名称") // 账号名称
private String name; private String name;
@ApiModelProperty("账号") // 账号
private String account; private String account;
@ApiModelProperty("1启用 0禁用") // 1启用 0禁用
private Integer status; private Integer status;
private String token; private String token;
} }

View File

@@ -1,7 +1,5 @@
package com.ycwl.basic.model.mobile.scenic.content; package com.ycwl.basic.model.mobile.scenic.content;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
@@ -11,26 +9,26 @@ import java.math.BigDecimal;
* @Date:2024/12/5 15:10 * @Date:2024/12/5 15:10
*/ */
@Data @Data
@ApiModel("景区内容(成片、待成片模版、源素材)列表响应信息") // 景区内容(成片、待成片模版、源素材)列表响应信息
public class ContentPageVO { public class ContentPageVO {
@ApiModelProperty("内容名称") // 内容名称
private String name; private String name;
@ApiModelProperty("景区id") // 景区id
private Long scenicId; private Long scenicId;
@ApiModelProperty("景区名称") // 景区名称
private String scenicName; private String scenicName;
@ApiModelProperty("内容类型 0模版 1:成片视频 2:源素材 ") // 内容类型 0模版 1:成片视频 2:源素材
private Integer contentType; private Integer contentType;
@ApiModelProperty("源素材类型 1:视频 2:图片") // 源素材类型 1:视频 2:图片
private Integer sourceType; private Integer sourceType;
private int lockType; private int lockType;
@ApiModelProperty("内容id contentType为0或1时才有值") // 内容id contentType为0或1时才有值
private Long contentId; private Long contentId;
@ApiModelProperty("模版id") // 模版id
private Long templateId; private Long templateId;
@ApiModelProperty("模版封面图片 contentType为0或1时才有值") // 模版封面图片 contentType为0或1时才有值
private String templateCoverUrl; private String templateCoverUrl;
@ApiModelProperty("是否购买:0未购买,1已购买") // 是否购买:0未购买,1已购买
private Integer isBuy; private Integer isBuy;
private BigDecimal duration; private BigDecimal duration;
private Integer goodsType; private Integer goodsType;

View File

@@ -1,8 +1,5 @@
package com.ycwl.basic.model.mobile.statistic.req; package com.ycwl.basic.model.mobile.statistic.req;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiParam;
import lombok.Data; import lombok.Data;
import java.util.Date; import java.util.Date;
@@ -12,11 +9,11 @@ import java.util.Date;
* @Date:2024/12/11 19:03 * @Date:2024/12/11 19:03
*/ */
@Data @Data
@ApiModel("移动端公用请求参数") // 移动端公用请求参数
public class CommonQueryReq { public class CommonQueryReq {
@ApiModelProperty(value = "查询统计纬度 0今天、1昨天、2-近一周(7天)、3-近30天、4-近1年") // 查询统计纬度 0今天、1昨天、2-近一周(7天)、3-近30天、4-近1年
private Integer standard; private Integer standard;
@ApiModelProperty(value = "景区id") // 景区id
private Long scenicId; private Long scenicId;
private boolean realtime; private boolean realtime;
private Date startTime; private Date startTime;

View File

@@ -1,7 +1,5 @@
package com.ycwl.basic.model.mobile.statistic.req; package com.ycwl.basic.model.mobile.statistic.req;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
/** /**
@@ -9,16 +7,16 @@ import lombok.Data;
* @Date:2024/12/12 18:31 * @Date:2024/12/12 18:31
*/ */
@Data @Data
@ApiModel("移动端用户操作统计记录添加类") // 移动端用户操作统计记录添加类
public class StatisticsRecordAddReq { public class StatisticsRecordAddReq {
@ApiModelProperty(value = "主键id",hidden = true) // 主键id
private Long id; private Long id;
@ApiModelProperty("统计数据类型,0扫码访问,1上传人脸,2预览视频,3现场支付,4事后支付,5退款,6消息推送,8下载,9点击购买") // 统计数据类型,0扫码访问,1上传人脸,2预览视频,3现场支付,4事后支付,5退款,6消息推送,8下载,9点击购买
private Integer type; private Integer type;
@ApiModelProperty(value = "景区id") // 景区id
private Long scenicId; private Long scenicId;
@ApiModelProperty(value = "触发用户id",hidden = true) // 触发用户id
private Long memberId; private Long memberId;
@ApiModelProperty("关联数据ID 例如:预览视频就是视频id") // 关联数据ID 例如:预览视频就是视频id
private Long morphId; private Long morphId;
} }

View File

@@ -1,7 +1,5 @@
package com.ycwl.basic.model.mobile.statistic.resp; package com.ycwl.basic.model.mobile.statistic.resp;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
/** /**
@@ -9,18 +7,18 @@ import lombok.Data;
* @Date:2024/12/11 18:23 * @Date:2024/12/11 18:23
*/ */
@Data @Data
@ApiModel("移动端订单金额、预览_支付转化率、扫码_付费用户转化率统计结果类") // 移动端订单金额、预览_支付转化率、扫码_付费用户转化率统计结果类
public class AppSta1VO { public class AppSta1VO {
@ApiModelProperty("现在的数据 支付订单金额") // 现在的数据 支付订单金额
private String nowOrderAmount; private String nowOrderAmount;
@ApiModelProperty("上一期的数据 支付订单金额") // 上一期的数据 支付订单金额
private String previousOrderAmount; private String previousOrderAmount;
@ApiModelProperty("现在的数据 预览_支付转化率") // 现在的数据 预览_支付转化率
private String nowPreviewPay; private String nowPreviewPay;
@ApiModelProperty("上一期的数据 预览_支付转化率") // 上一期的数据 预览_支付转化率
private String previousPreviewPay; private String previousPreviewPay;
@ApiModelProperty("现在的数据 扫码_付费用户转化率") // 现在的数据 扫码_付费用户转化率
private String nowScanCodePay; private String nowScanCodePay;
@ApiModelProperty("上一期的数据 扫码_付费用户转化率") // 上一期的数据 扫码_付费用户转化率
private String previousScanCodePay; private String previousScanCodePay;
} }

Some files were not shown because too many files have changed in this diff Show More