Compare commits
33 Commits
72db541e22
...
feat/scrip
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
20a92a22bf | ||
|
|
3c6ce446c7 | ||
|
|
9d0ed87191 | ||
|
|
d7be3786c3 | ||
| 44efd5689b | |||
|
|
0f7af30789 | ||
|
|
b4ed93171c | ||
|
|
6902a16cfa | ||
|
|
60992dc4f6 | ||
|
|
cb21b38287 | ||
|
|
268b63e607 | ||
|
|
d1584184ae | ||
|
|
fea069d795 | ||
|
|
b30af008e0 | ||
|
|
76ec2c8b3c | ||
|
|
c61343a238 | ||
|
|
a78da44f23 | ||
|
|
3b596bfa91 | ||
|
|
f1f3268e84 | ||
|
|
9d3db5e1b3 | ||
|
|
833b6fc208 | ||
|
|
04862d861a | ||
|
|
0a8e853753 | ||
|
|
4eeacf8c52 | ||
|
|
c0647b69e2 | ||
|
|
8c4ea440b6 | ||
|
|
8a302db65a | ||
|
|
3964547e84 | ||
|
|
c387f81225 | ||
|
|
582beb13db | ||
|
|
a1d42a4b27 | ||
|
|
66a69a4968 | ||
|
|
d551427821 |
38
pom.xml
38
pom.xml
@@ -104,6 +104,11 @@
|
||||
<artifactId>mapstruct</artifactId>
|
||||
<version>1.5.5.Final</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>cn.hutool</groupId>
|
||||
<artifactId>hutool-all</artifactId>
|
||||
<version>5.8.9</version>
|
||||
</dependency>
|
||||
|
||||
<!-- http -->
|
||||
<dependency>
|
||||
@@ -111,6 +116,11 @@
|
||||
<artifactId>httpclient</artifactId>
|
||||
<version>4.5.13</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.squareup.okhttp3</groupId>
|
||||
<artifactId>okhttp</artifactId>
|
||||
<version>4.12.0</version>
|
||||
</dependency>
|
||||
<!-- collections -->
|
||||
<dependency>
|
||||
<groupId>com.google.guava</groupId>
|
||||
@@ -129,6 +139,11 @@
|
||||
</dependency>
|
||||
|
||||
<!-- json -->
|
||||
<dependency>
|
||||
<groupId>com.alibaba</groupId>
|
||||
<artifactId>fastjson</artifactId>
|
||||
<version>1.2.83</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.alibaba.fastjson2</groupId>
|
||||
<artifactId>fastjson2</artifactId>
|
||||
@@ -155,4 +170,27 @@
|
||||
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
<version>2.3.0.RELEASE</version>
|
||||
<configuration>
|
||||
<classifier>exec</classifier>
|
||||
<!-- 指定该Main Class为全局的唯一入口 -->
|
||||
<mainClass>com.xiang.Application</mainClass>
|
||||
<layout>ZIP</layout>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<goals>
|
||||
<goal>repackage</goal><!--可以把依赖的包都打包到生成的Jar包中-->
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
</project>
|
||||
@@ -4,8 +4,10 @@ import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||
|
||||
@SpringBootApplication
|
||||
@EnableScheduling
|
||||
public class Application {
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(Application.class);
|
||||
|
||||
77
src/main/java/com/xiang/ApplicationInit.java
Normal file
77
src/main/java/com/xiang/ApplicationInit.java
Normal file
@@ -0,0 +1,77 @@
|
||||
package com.xiang;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
import com.xiang.common.enums.RedisKeyConstant;
|
||||
import com.xiang.common.enums.ScheduleEnums;
|
||||
import com.xiang.common.pojo.schedule.ScheduleOpeningConfigDO;
|
||||
import com.xiang.common.service.IScheduleOpeningConfigService;
|
||||
import com.xiang.common.utils.RedisService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.ArrayUtils;
|
||||
import org.springframework.boot.ApplicationArguments;
|
||||
import org.springframework.boot.ApplicationRunner;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author: xiang
|
||||
* @Date: 2026-05-08 14:32
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class ApplicationInit implements ApplicationRunner {
|
||||
|
||||
private final IScheduleOpeningConfigService scheduleOpeningConfigService;
|
||||
private final RedisService redisService;
|
||||
|
||||
@Override
|
||||
public void run(ApplicationArguments args) throws Exception {
|
||||
|
||||
log.info("开始加载任务配置!");
|
||||
loadScheduleTask();
|
||||
log.info("任务配置加载完成!");
|
||||
|
||||
log.info("redis key 加载开始!");
|
||||
loadRedisKey();
|
||||
log.info("redis key 加载结束!");
|
||||
}
|
||||
|
||||
private void loadScheduleTask() {
|
||||
List<ScheduleOpeningConfigDO> allSchedules = scheduleOpeningConfigService.getAll();
|
||||
Map<String, ScheduleOpeningConfigDO> map = Maps.newHashMap();
|
||||
if (CollectionUtils.isNotEmpty(allSchedules)) {
|
||||
map.putAll(allSchedules.stream().collect(Collectors.toMap(ScheduleOpeningConfigDO::getBeanName, Function.identity(), (a, b) -> a)));
|
||||
}
|
||||
ScheduleEnums[] enums = ScheduleEnums.values();
|
||||
if (ArrayUtils.isEmpty(enums)) {
|
||||
log.info("暂无需要配置的");
|
||||
return;
|
||||
}
|
||||
List<ScheduleOpeningConfigDO> list = Lists.newArrayList();
|
||||
for (ScheduleEnums scheduleEnum : enums) {
|
||||
if (map.containsKey(scheduleEnum.getTaskName())) {
|
||||
continue;
|
||||
}
|
||||
ScheduleOpeningConfigDO scheduleOpeningConfigDO = new ScheduleOpeningConfigDO();
|
||||
scheduleOpeningConfigDO.setModule(scheduleEnum.getModuleCode());
|
||||
scheduleOpeningConfigDO.setBeanName(scheduleEnum.getTaskName());
|
||||
scheduleOpeningConfigDO.setStatus(1);
|
||||
list.add(scheduleOpeningConfigDO);
|
||||
}
|
||||
if (CollectionUtils.isNotEmpty(list)) {
|
||||
scheduleOpeningConfigService.saveBatch(list);
|
||||
}
|
||||
}
|
||||
|
||||
private void loadRedisKey() {
|
||||
redisService.set(RedisKeyConstant.JNTYZX_SUBSCRIBE_TIME_KEY, "18:00");
|
||||
}
|
||||
}
|
||||
@@ -7,11 +7,17 @@ import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.Primary;
|
||||
import org.springframework.data.redis.connection.RedisConnectionFactory;
|
||||
import org.springframework.data.redis.connection.RedisPassword;
|
||||
import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
|
||||
import org.springframework.data.redis.connection.lettuce.LettuceClientConfiguration;
|
||||
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.data.redis.core.StringRedisTemplate;
|
||||
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
|
||||
import org.springframework.data.redis.serializer.StringRedisSerializer;
|
||||
|
||||
import java.time.Duration;
|
||||
|
||||
@Configuration
|
||||
public class RedisConfig {
|
||||
@Bean
|
||||
@@ -35,7 +41,6 @@ public class RedisConfig {
|
||||
|
||||
template.setValueSerializer(jackson2JsonRedisSerializer);
|
||||
template.setHashValueSerializer(jackson2JsonRedisSerializer);
|
||||
|
||||
template.afterPropertiesSet();
|
||||
return template;
|
||||
}
|
||||
@@ -44,4 +49,18 @@ public class RedisConfig {
|
||||
public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory factory) {
|
||||
return new StringRedisTemplate(factory);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public RedisConnectionFactory redisConnectionFactory(RedisProperties props) {
|
||||
RedisStandaloneConfiguration config = new RedisStandaloneConfiguration();
|
||||
config.setHostName(props.getHost());
|
||||
config.setPort(Integer.parseInt(props.getPort()));
|
||||
config.setPassword(RedisPassword.of(props.getPassword()));
|
||||
config.setDatabase(props.getDatabase());
|
||||
|
||||
LettuceClientConfiguration clientConfig = LettuceClientConfiguration.builder()
|
||||
.commandTimeout(Duration.ofSeconds(3))
|
||||
.build();
|
||||
return new LettuceConnectionFactory(config, clientConfig);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ public class RedisProperties {
|
||||
private String host;
|
||||
private String port;
|
||||
private String password;
|
||||
private Integer database = 0;
|
||||
private Integer database;
|
||||
|
||||
public String getAddress() {
|
||||
return "redis://" + host + ":" + port;
|
||||
|
||||
38
src/main/java/com/xiang/common/enums/DateFormatEnum.java
Normal file
38
src/main/java/com/xiang/common/enums/DateFormatEnum.java
Normal file
@@ -0,0 +1,38 @@
|
||||
package com.xiang.common.enums;
|
||||
|
||||
/**
|
||||
* @author clover
|
||||
* @Date 2020/9/15 20:11
|
||||
*/
|
||||
public enum DateFormatEnum {
|
||||
COMMON("ECS_DISK", "yyyy-MM-dd'T'HH:mm:ss'Z'"),
|
||||
COMMON1("ENUM_FORMAT", "yyyy-MM-dd HH:mm:ss"),
|
||||
ENUM_FORMAT_OTS("ENUM_FORMAT_OTS", "yyyy-MM-ddHH:mm:ss"),
|
||||
ASCM_ONE_FORMAT("ASCM_ONE_FORMAT", "yyyy-MM-dd'T'HH:mm'Z'"),
|
||||
ASCM_TWO_FORMAT("ASCM_TWO_FORMAT", "yyyy-MM-dd'T'HH:mm:ss'Z'"),
|
||||
ASCM_THREE_FORMAT("ASCM_THREE_FORMAT", "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"),
|
||||
ASCM_FOUR_FORMAT("ASCM_FOUR_FORMAT", "yyyy-MM-dd'T'HH:mm:ss+08:00"),
|
||||
ASCM_FIVE_FORMAT("ASCM_FIVE_FORMAT", "yyyy-MM-dd'T'HH:mm:ss"),
|
||||
IRS_FORMAT_YMD("IRS_FORMAT_YMD", "yyyyMMdd"),
|
||||
IRS_FORMAT_YM("IRS_FORMAT_YM", "yyyyMM"),
|
||||
ENUM_FORMAT_YMD("ENUM_FORMAT_YMD", "yyyy-MM-dd"),
|
||||
ENUM_FORMAT_YMD000("ENUM_FORMAT_YMD", "yyyy-MM-dd 00:00:00"),
|
||||
ENUM_FORMAT_YMD_CSB("ENUM_FORMAT_YMD_CSB", "yyyy-MM-dd/00");
|
||||
|
||||
private String key;
|
||||
private String value;
|
||||
|
||||
public String getKey() {
|
||||
return key;
|
||||
}
|
||||
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
DateFormatEnum(String key, String value) {
|
||||
this.key = key;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
}
|
||||
47
src/main/java/com/xiang/common/enums/JntyzxUrlConstant.java
Normal file
47
src/main/java/com/xiang/common/enums/JntyzxUrlConstant.java
Normal file
@@ -0,0 +1,47 @@
|
||||
package com.xiang.common.enums;
|
||||
|
||||
/**
|
||||
* @Author: xiang
|
||||
* @Date: 2025-12-15 13:46
|
||||
*/
|
||||
public class JntyzxUrlConstant {
|
||||
|
||||
/**
|
||||
* 江南体育中心基础URL
|
||||
*/
|
||||
private final static String GNTYZX_BASE_URL = "https://jntyzx.cn:8443";
|
||||
|
||||
/**
|
||||
* 查询当天的场地信息
|
||||
*/
|
||||
public final static String QUERY_TODAY_SUBSCRIBE_URL = GNTYZX_BASE_URL + "/GYM-JN/multi/Subscribe/getSubscribeByToday";
|
||||
/**
|
||||
* 查询明天场地信息
|
||||
*/
|
||||
public final static String QUERY_TOMORROW_SUBSCRIBE_URL = GNTYZX_BASE_URL + "/GYM-JN/multi/Subscribe/getSubscribeByTomorrow";
|
||||
|
||||
/**
|
||||
* 订阅场地
|
||||
*/
|
||||
public final static String ADD_SUBSCRIBE = GNTYZX_BASE_URL + "/GYM-JN/multi/Subscribe/addSubscribe";
|
||||
|
||||
/**
|
||||
* 订单信息
|
||||
*/
|
||||
public final static String ORDER_INFO = GNTYZX_BASE_URL + "/GYM-JN/multi/busiOrder/queryOrderInfo";
|
||||
|
||||
/**
|
||||
* 心跳监测接口
|
||||
*/
|
||||
public final static String HEALTH_DECLARATION = GNTYZX_BASE_URL + "/GYM-JN//busi/healthDeclaration/addUserPrivacy";
|
||||
|
||||
/**
|
||||
* 校验会员卡状态
|
||||
*/
|
||||
public final static String CHECK_NUM = GNTYZX_BASE_URL + "/GYM-JN/multi/Subscribe/checkDefaultsNum";
|
||||
|
||||
/**
|
||||
* 根据openId查询会员卡信息
|
||||
*/
|
||||
public final static String QUERY_BY_OPEN_ID = GNTYZX_BASE_URL + "/GYM-JN/multi/xfConsumer/queryByOpenId";
|
||||
}
|
||||
38
src/main/java/com/xiang/common/enums/RedisKeyConstant.java
Normal file
38
src/main/java/com/xiang/common/enums/RedisKeyConstant.java
Normal file
@@ -0,0 +1,38 @@
|
||||
package com.xiang.common.enums;
|
||||
|
||||
|
||||
import com.xiang.common.utils.DateUtils;
|
||||
|
||||
import java.time.LocalDate;
|
||||
|
||||
/**
|
||||
* @Author: xiang
|
||||
* @Date: 2025-12-16 10:43
|
||||
*/
|
||||
public class RedisKeyConstant {
|
||||
|
||||
public static final String JNTYZX_ORDER_CREATE_KEY = "jntyzx:order:create:orderId:";
|
||||
|
||||
public static final String JNTUZX_ORDER_PEEK_KEY = "jntyzx:order:peek:user:";
|
||||
|
||||
public static final String JNTYZX_VENUE_MSG_SEND_KEY = "jntyzx:order:venue:msg:send";
|
||||
|
||||
private static final String JNTYZX_VENUE_SUBSCRIBE_KEY = "jntyzx:venue:subscribe:";
|
||||
|
||||
private static final String JNTYZX_ORDER_CLOSE_CARD_KEY = "jntyzx:order:close:card:";
|
||||
|
||||
public static String getCloseCardKey(String username) {
|
||||
return JNTYZX_ORDER_CLOSE_CARD_KEY + username + ":" +getDate();
|
||||
}
|
||||
|
||||
public static String getVenueSubscribeKey(String placeName) {
|
||||
return JNTYZX_VENUE_SUBSCRIBE_KEY + placeName + ":" + getDate();
|
||||
}
|
||||
|
||||
public static final String JNTYZX_SUBSCRIBE_TIME_KEY = "jntyzx:subscribe:time";
|
||||
|
||||
public static String getDate() {
|
||||
LocalDate now = LocalDate.now();
|
||||
return ":" + DateUtils.getDateFromDate(now);
|
||||
}
|
||||
}
|
||||
@@ -7,11 +7,56 @@ import lombok.Getter;
|
||||
@AllArgsConstructor
|
||||
public enum ScheduleEnums {
|
||||
|
||||
DOMAIN_DYNAMIC_ANALYSIS_TASK(4, "domain", "domainDynamicAnalysisTask"),
|
||||
/**
|
||||
* 0:glados
|
||||
* 1:芬玩岛
|
||||
* 2:DDNS
|
||||
* 3:江体zlb
|
||||
* 4:江体小程序
|
||||
*/
|
||||
|
||||
/**
|
||||
* Glados任务
|
||||
*/
|
||||
GLADOS_CHECK_IN_TASK(0, "glados", "gladosCheckInTask"),
|
||||
|
||||
/**
|
||||
* Aliyun DDNS任务
|
||||
*/
|
||||
DOMAIN_DYNAMIC_ANALYSIS_TASK(2, "domain", "domainDynamicAnalysisTask"),
|
||||
|
||||
/**
|
||||
* 芬玩岛 任务
|
||||
*/
|
||||
|
||||
/**
|
||||
* 江体 ZLB任务
|
||||
*/
|
||||
ZLB_LOGIN_TASK(3, "zlb", "zlbLoginTask"),
|
||||
ZLB_TOKEN_CHECK_TASK(3, "zlb", "zlbTokenCheckTask"),
|
||||
ZLB_SITE_QUERY_TASK(3, "zlb", "zlbSiteQueryTask"),
|
||||
ZLB_SITE_DAY_TASK(3, "zlb", "zlbSiteDayTask"),
|
||||
ZLB_ORDER_CREATE_TASK(3, "zlb", "zlbOrderCreateTask"),
|
||||
ZLB_USER_CONFIG_TASK(3, "zlb", "zlbUserConfigTask"),
|
||||
ZLB_ORDER_QUERY_TASK(3, "zlb", "zlbOrderQueryTask"),
|
||||
ZLB_ORDER_JL_TASK(3, "zlb", "zlbOrderJlTask"),
|
||||
|
||||
|
||||
/**
|
||||
* 江体 小程序任务
|
||||
*/
|
||||
JNTYZX_TOKEN_REFRESH_TASK(4, "jt-miniApp", "jntyzxTokenRefreshTask"),
|
||||
JNTYZX_VENUE_INFO_PULL_TASK(4, "jt-miniApp", "jntyzxVenuePullTask"),
|
||||
JNTYZX_ORDER_SUBSCRIBE_TASK(4, "jt-miniApp", "jntyzxOrderSubscribeTask"),
|
||||
JNTYZX_VENUE_TODAY_SUBSCRIBE_TASK(4, "jt-miniApp", "jntyzxVenueTodaySubscribeTask"),
|
||||
JNTYZX_VENUE_TOMORROW_PULL_TASK(4, "jt-miniApp", "jntyzxVenueTodayPullTask"),
|
||||
JNTYZX_USER_INFO_CONFIG(4, "jt-miniApp", "jntyzxUserInfoConfigTask"),
|
||||
JNTYZX_VENUE_INFO_TODAY_RESULT_TASK(4, "jt-miniApp", "jtVenueInfoTodayResultTask"),
|
||||
JNTYZX_VENUE_INFO_TOMORROW_RESULT_TASK(4, "jt-miniApp", "jtVenueInfoTomorrowResultTask"),
|
||||
|
||||
;
|
||||
|
||||
private final Integer modeleCode;
|
||||
private final Integer moduleCode;
|
||||
private final String module;
|
||||
private final String taskName;
|
||||
}
|
||||
|
||||
18
src/main/java/com/xiang/common/enums/YcCodeTypeEnum.java
Normal file
18
src/main/java/com/xiang/common/enums/YcCodeTypeEnum.java
Normal file
@@ -0,0 +1,18 @@
|
||||
package com.xiang.common.enums;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum YcCodeTypeEnum {
|
||||
|
||||
YC_10118(10118, "中文字符 1~4位 plus 其他类型准确率不满足 可使用本类型"),
|
||||
YC_6246(30100, "通用中文点选1"),
|
||||
YC_310700(310700, "适合Zlb使用的word click")
|
||||
|
||||
;
|
||||
private final Integer type;
|
||||
private final String desc;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.xiang.common.factory;
|
||||
|
||||
import com.xiang.common.config.DingTalkRobotProperties;
|
||||
import com.xiang.common.enums.DingTalkBizTypeEnum;
|
||||
import com.xiang.common.utils.dingTalk.AbstractDingTalkFactory;
|
||||
import com.xiang.common.utils.dingTalk.DingTalkSender;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class JntyzxDingTalkFactory extends AbstractDingTalkFactory {
|
||||
public JntyzxDingTalkFactory(DingTalkRobotProperties dingTalkRobotProperties, DingTalkSender dingTalkSender) {
|
||||
super(dingTalkRobotProperties, dingTalkSender);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendMsg(String msg) {
|
||||
getClient(DingTalkBizTypeEnum.JT).sendDingTalkMsg(msg);
|
||||
}
|
||||
}
|
||||
@@ -9,6 +9,7 @@ import com.xiang.common.service.IScheduleRunLogService;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.Objects;
|
||||
@@ -112,7 +113,7 @@ public abstract class BaseScheduleTaskTemplate {
|
||||
* @param validatedParams 校验通过的参数
|
||||
* @return 任务执行结果
|
||||
*/
|
||||
protected abstract TaskResult doExecute(Object validatedParams);
|
||||
protected abstract TaskResult doExecute(Object validatedParams) throws Exception;
|
||||
|
||||
/**
|
||||
* 记录成功结果 - 子类可选择性覆写
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
package com.xiang.common.handler;
|
||||
|
||||
public interface CallbackHandler {
|
||||
void onResponse(String response);
|
||||
void onFailure(Throwable t);
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.xiang.common.manage.jntyzx.miniapp;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.xiang.common.pojo.jntyzx.miniapp.pojo.OrderInfoDO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author: xiang
|
||||
* @Date: 2025-12-16 10:59
|
||||
*/
|
||||
public interface IOrderCreateInfoManage extends IService<OrderInfoDO> {
|
||||
|
||||
|
||||
List<OrderInfoDO> queryNoPayOrder();
|
||||
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package com.xiang.common.manage.jntyzx.miniapp;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.xiang.common.pojo.jntyzx.miniapp.pojo.UserInfoDO;
|
||||
|
||||
/**
|
||||
* @Author: xiang
|
||||
* @Date: 2026-05-09 10:17
|
||||
*/
|
||||
public interface IUserInfoManage extends IService<UserInfoDO> {
|
||||
boolean delAll();
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.xiang.common.manage.jntyzx.miniapp;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.xiang.common.pojo.jntyzx.miniapp.pojo.UserRestrictionInfo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface IUserRestrictionManage extends IService<UserRestrictionInfo> {
|
||||
|
||||
UserRestrictionInfo queryByUserId(Long userId);
|
||||
|
||||
List<UserRestrictionInfo> queryByIdList(List<Long> idList);
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.xiang.common.manage.jntyzx.miniapp;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.xiang.common.pojo.jntyzx.miniapp.pojo.UserTokenInfoDO;
|
||||
import com.xiang.common.pojo.jntyzx.miniapp.req.UserQueryReq;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author: xiang
|
||||
* @Date: 2025-12-16 09:19
|
||||
*/
|
||||
public interface IUserTokenInfoManage extends IService<UserTokenInfoDO> {
|
||||
List<UserTokenInfoDO> listUser();
|
||||
UserTokenInfoDO getByName(String name);
|
||||
|
||||
List<UserTokenInfoDO> listCanOrder();
|
||||
|
||||
List<UserTokenInfoDO> queryByList(UserQueryReq req);
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.xiang.common.manage.jntyzx.miniapp;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.xiang.common.pojo.jntyzx.miniapp.pojo.VenueInfoDO;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author: xiang
|
||||
* @Date: 2025-12-15 15:50
|
||||
*/
|
||||
public interface IVenueInfoManage extends IService<VenueInfoDO> {
|
||||
|
||||
List<VenueInfoDO> queryByDate(LocalDate date);
|
||||
|
||||
List<VenueInfoDO> queryByType(LocalDate date, Integer type);
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.xiang.common.manage.jntyzx.miniapp;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.xiang.common.pojo.jntyzx.miniapp.pojo.OrderInfoDO;
|
||||
import com.xiang.common.mapper.JntyzxOrderCreateInfoMapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author: xiang
|
||||
* @Date: 2025-12-16 10:59
|
||||
*/
|
||||
@Service
|
||||
public class OrderCreateInfoManageImpl extends ServiceImpl<JntyzxOrderCreateInfoMapper, OrderInfoDO> implements IOrderCreateInfoManage {
|
||||
|
||||
|
||||
@Override
|
||||
public List<OrderInfoDO> queryNoPayOrder() {
|
||||
LambdaQueryWrapper<OrderInfoDO> lambdaQueryWrapper = Wrappers.lambdaQuery();
|
||||
lambdaQueryWrapper.eq(OrderInfoDO::getOrderStatus, 0);
|
||||
return baseMapper.selectList(lambdaQueryWrapper);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.xiang.common.manage.jntyzx.miniapp;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.xiang.common.mapper.JntyzxUserInfoMapper;
|
||||
import com.xiang.common.pojo.jntyzx.miniapp.pojo.UserInfoDO;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @Author: xiang
|
||||
* @Date: 2026-05-09 10:17
|
||||
*/
|
||||
@Service
|
||||
public class UserInfoManageImpl extends ServiceImpl<JntyzxUserInfoMapper, UserInfoDO> implements IUserInfoManage {
|
||||
@Override
|
||||
public boolean delAll() {
|
||||
return baseMapper.delAll() > 0;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package com.xiang.common.manage.jntyzx.miniapp;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.xiang.common.pojo.jntyzx.miniapp.pojo.UserRestrictionInfo;
|
||||
import com.xiang.common.mapper.JntyzxUserRestrictionInfoMapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class UserRestrictionManageImpl extends ServiceImpl<JntyzxUserRestrictionInfoMapper, UserRestrictionInfo> implements IUserRestrictionManage {
|
||||
@Override
|
||||
public UserRestrictionInfo queryByUserId(Long userId) {
|
||||
LambdaQueryWrapper<UserRestrictionInfo> lambdaQueryWrapper = Wrappers.lambdaQuery();
|
||||
lambdaQueryWrapper.eq(UserRestrictionInfo::getUserId, userId);
|
||||
return baseMapper.selectOne(lambdaQueryWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<UserRestrictionInfo> queryByIdList(List<Long> idList) {
|
||||
LambdaQueryWrapper<UserRestrictionInfo> lambdaQueryWrapper = Wrappers.lambdaQuery();
|
||||
lambdaQueryWrapper.in(UserRestrictionInfo::getUserId, idList);
|
||||
return baseMapper.selectList(lambdaQueryWrapper);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
package com.xiang.common.manage.jntyzx.miniapp;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.xiang.common.pojo.jntyzx.miniapp.pojo.UserTokenInfoDO;
|
||||
import com.xiang.common.pojo.jntyzx.miniapp.req.UserQueryReq;
|
||||
import com.xiang.common.mapper.JntyzxUserTokenInfoMapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* @Author: xiang
|
||||
* @Date: 2025-12-16 09:19
|
||||
*/
|
||||
@Service
|
||||
public class UserTokenInfoManageImpl extends ServiceImpl<JntyzxUserTokenInfoMapper, UserTokenInfoDO> implements IUserTokenInfoManage {
|
||||
@Override
|
||||
public List<UserTokenInfoDO> listUser() {
|
||||
LambdaQueryWrapper<UserTokenInfoDO> lambdaQueryWrapper = Wrappers.lambdaQuery();
|
||||
lambdaQueryWrapper.eq(UserTokenInfoDO::getStatus, 1);
|
||||
return baseMapper.selectList(lambdaQueryWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public UserTokenInfoDO getByName(String name) {
|
||||
LambdaQueryWrapper<UserTokenInfoDO> lambdaQueryWrapper = Wrappers.lambdaQuery();
|
||||
lambdaQueryWrapper.eq(UserTokenInfoDO::getStatus, 1);
|
||||
lambdaQueryWrapper.eq(UserTokenInfoDO::getName, name);
|
||||
lambdaQueryWrapper.last("limit 1");
|
||||
return baseMapper.selectOne(lambdaQueryWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<UserTokenInfoDO> listCanOrder() {
|
||||
LambdaQueryWrapper<UserTokenInfoDO> lambdaQueryWrapper = Wrappers.lambdaQuery();
|
||||
lambdaQueryWrapper.eq(UserTokenInfoDO::getStatus, 1);
|
||||
lambdaQueryWrapper.eq(UserTokenInfoDO::getIsOrder, 1);
|
||||
lambdaQueryWrapper.eq(UserTokenInfoDO::getIsRestriction, 0);
|
||||
return baseMapper.selectList(lambdaQueryWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<UserTokenInfoDO> queryByList(UserQueryReq req) {
|
||||
LambdaQueryWrapper<UserTokenInfoDO> lambdaQueryWrapper = Wrappers.lambdaQuery();
|
||||
if (StringUtils.isNotBlank(req.getName())) {
|
||||
lambdaQueryWrapper.like(UserTokenInfoDO::getName, req.getName());
|
||||
}
|
||||
if (StringUtils.isNotBlank(req.getOpenId())) {
|
||||
lambdaQueryWrapper.eq(UserTokenInfoDO::getOpenId, req.getOpenId());
|
||||
}
|
||||
if (StringUtils.isNotBlank(req.getMemberCardNo())) {
|
||||
lambdaQueryWrapper.eq(UserTokenInfoDO::getMemberCardNo, req.getMemberCardNo());
|
||||
}
|
||||
if (Objects.nonNull(req.getStatus())) {
|
||||
lambdaQueryWrapper.eq(UserTokenInfoDO::getStatus, req.getStatus());
|
||||
}
|
||||
if (Objects.nonNull(req.getIsRestriction())) {
|
||||
lambdaQueryWrapper.eq(UserTokenInfoDO::getIsRestriction, req.getIsRestriction());
|
||||
}
|
||||
if (Objects.nonNull(req.getIsOrder())) {
|
||||
lambdaQueryWrapper.eq(UserTokenInfoDO::getIsOrder, req.getIsOrder());
|
||||
}
|
||||
return baseMapper.selectList(lambdaQueryWrapper);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package com.xiang.common.manage.jntyzx.miniapp;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.xiang.common.pojo.jntyzx.miniapp.pojo.VenueInfoDO;
|
||||
import com.xiang.common.mapper.JntyzxVenueInfoMapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author: xiang
|
||||
* @Date: 2025-12-15 15:51
|
||||
*/
|
||||
@Service
|
||||
public class VenueInfoManageImpl extends ServiceImpl<JntyzxVenueInfoMapper, VenueInfoDO> implements IVenueInfoManage {
|
||||
|
||||
public List<VenueInfoDO> queryByDate(LocalDate date) {
|
||||
LambdaQueryWrapper<VenueInfoDO> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(VenueInfoDO::getDate, date);
|
||||
return baseMapper.selectList(lqw);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<VenueInfoDO> queryByType(LocalDate date, Integer type) {
|
||||
LambdaQueryWrapper<VenueInfoDO> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(VenueInfoDO::getDate, date);
|
||||
lqw.eq(VenueInfoDO::getType, type);
|
||||
return baseMapper.selectList(lqw);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.xiang.common.manage.jntyzx.zlb;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.xiang.common.pojo.jntyzx.zlb.ZlbJlUserInfo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author: xiang
|
||||
* @Date: 2026-05-12 09:18
|
||||
*/
|
||||
public interface IZlbJlUserInfoManage extends IService<ZlbJlUserInfo> {
|
||||
|
||||
List<ZlbJlUserInfo> getJlUsers();
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.xiang.common.manage.jntyzx.zlb;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.xiang.common.pojo.jntyzx.zlb.ZlbPayOrder;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author: xiang
|
||||
* @Date: 2026-05-09 15:11
|
||||
*/
|
||||
public interface IZlbOrderInfoManage extends IService<ZlbPayOrder> {
|
||||
|
||||
List<ZlbPayOrder> queryOrder(LocalDate date);
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package com.xiang.common.manage.jntyzx.zlb;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.xiang.common.mapper.ZlbJlUserInfoMapper;
|
||||
import com.xiang.common.pojo.jntyzx.zlb.ZlbJlUserInfo;
|
||||
import com.xiang.common.utils.DateUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author: xiang
|
||||
* @Date: 2026-05-12 09:18
|
||||
*/
|
||||
@Service
|
||||
public class ZlbJlUserInfoManageImpl extends ServiceImpl<ZlbJlUserInfoMapper, ZlbJlUserInfo> implements IZlbJlUserInfoManage {
|
||||
@Override
|
||||
public List<ZlbJlUserInfo> getJlUsers() {
|
||||
LambdaQueryWrapper<ZlbJlUserInfo> lambdaQueryWrapper = Wrappers.lambdaQuery();
|
||||
lambdaQueryWrapper.eq(ZlbJlUserInfo::getDay, DateUtils.getDateFromDate(LocalDate.now()));
|
||||
lambdaQueryWrapper.eq(ZlbJlUserInfo::getDay, DateUtils.getWeekDay(LocalDate.now()));
|
||||
return baseMapper.selectList(lambdaQueryWrapper);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package com.xiang.common.manage.jntyzx.zlb;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.xiang.common.mapper.ZlbOrderInfoMapper;
|
||||
import com.xiang.common.pojo.jntyzx.zlb.ZlbPayOrder;
|
||||
import com.xiang.common.utils.DateUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author: xiang
|
||||
* @Date: 2026-05-09 15:11
|
||||
*/
|
||||
@Service
|
||||
public class ZlbOrderInfoManageImpl extends ServiceImpl<ZlbOrderInfoMapper, ZlbPayOrder> implements IZlbOrderInfoManage {
|
||||
@Override
|
||||
public List<ZlbPayOrder> queryOrder(LocalDate date) {
|
||||
LambdaQueryWrapper<ZlbPayOrder> lambdaQueryWrapper = Wrappers.lambdaQuery();
|
||||
lambdaQueryWrapper.eq(ZlbPayOrder::getDay, DateUtils.getDateFromDate(date));
|
||||
lambdaQueryWrapper.eq(ZlbPayOrder::getIsPay, 0);
|
||||
return baseMapper.selectList(lambdaQueryWrapper);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.xiang.common.manage.jntyzx.zlb;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.xiang.common.pojo.jntyzx.zlb.ZlbSiteInfo;
|
||||
|
||||
/**
|
||||
* @author a123
|
||||
* @description 针对表【zlb_site_info】的数据库操作Service
|
||||
* @createDate 2025-06-19 23:32:29
|
||||
*/
|
||||
public interface ZlbSiteInfoService extends IService<ZlbSiteInfo> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package com.xiang.common.manage.jntyzx.zlb;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.xiang.common.mapper.ZlbSiteInfoMapper;
|
||||
import com.xiang.common.pojo.jntyzx.zlb.ZlbSiteInfo;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @author a123
|
||||
* @description 针对表【zlb_site_info】的数据库操作Service实现
|
||||
* @createDate 2025-06-19 23:32:29
|
||||
*/
|
||||
@Service
|
||||
public class ZlbSiteInfoServiceImpl extends ServiceImpl<ZlbSiteInfoMapper, ZlbSiteInfo>
|
||||
implements ZlbSiteInfoService {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.xiang.common.manage.jntyzx.zlb;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.xiang.common.pojo.jntyzx.zlb.ZlbTokenInfo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author a123
|
||||
* @description 针对表【zlb_token_info】的数据库操作Service
|
||||
* @createDate 2025-06-20 23:51:24
|
||||
*/
|
||||
public interface ZlbTokenInfoService extends IService<ZlbTokenInfo> {
|
||||
|
||||
ZlbTokenInfo queryByName(String name);
|
||||
|
||||
List<ZlbTokenInfo> getAllUsers();
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
package com.xiang.common.manage.jntyzx.zlb;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.xiang.common.mapper.ZlbTokenInfoMapper;
|
||||
import com.xiang.common.pojo.jntyzx.zlb.ZlbTokenInfo;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author a123
|
||||
* @description 针对表【zlb_token_info】的数据库操作Service实现
|
||||
* @createDate 2025-06-20 23:51:24
|
||||
*/
|
||||
@Service
|
||||
public class ZlbTokenInfoServiceImpl extends ServiceImpl<ZlbTokenInfoMapper, ZlbTokenInfo>
|
||||
implements ZlbTokenInfoService {
|
||||
|
||||
@Override
|
||||
public ZlbTokenInfo queryByName(String name) {
|
||||
LambdaQueryWrapper<ZlbTokenInfo> wrapper = Wrappers.lambdaQuery();
|
||||
wrapper.eq(ZlbTokenInfo::getName, name);
|
||||
return this.getOne(wrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ZlbTokenInfo> getAllUsers() {
|
||||
LambdaQueryWrapper<ZlbTokenInfo> lambdaQueryWrapper = Wrappers.lambdaQuery();
|
||||
lambdaQueryWrapper.eq(ZlbTokenInfo::getIsDel, 0);
|
||||
return baseMapper.selectList(lambdaQueryWrapper);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.xiang.common.manage.jntyzx.zlb;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.xiang.common.pojo.jntyzx.zlb.ZlbUserInfo;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
|
||||
public interface ZlbUserInfoService extends IService<ZlbUserInfo> {
|
||||
|
||||
/**
|
||||
* 查询日期内未预订的用户
|
||||
* @param date
|
||||
* @return
|
||||
*/
|
||||
List<ZlbUserInfo> getNoBookUsers(LocalDate date);
|
||||
|
||||
int delAll();
|
||||
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.xiang.common.manage.jntyzx.zlb;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.xiang.common.mapper.ZlbUserInfoMapper;
|
||||
import com.xiang.common.pojo.jntyzx.zlb.ZlbUserInfo;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class ZlbUserInfoServiceImpl extends ServiceImpl<ZlbUserInfoMapper, ZlbUserInfo>
|
||||
implements ZlbUserInfoService {
|
||||
|
||||
@Override
|
||||
public List<ZlbUserInfo> getNoBookUsers(LocalDate date) {
|
||||
return List.of();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int delAll() {
|
||||
return baseMapper.deleteAll();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.xiang.common.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.xiang.common.pojo.jntyzx.miniapp.pojo.OrderInfoDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
/**
|
||||
* @Author: xiang
|
||||
* @Date: 2025-12-16 10:58
|
||||
*/
|
||||
@Mapper
|
||||
@Repository
|
||||
public interface JntyzxOrderCreateInfoMapper extends BaseMapper<OrderInfoDO> {
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.xiang.common.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.xiang.common.pojo.jntyzx.miniapp.pojo.UserInfoDO;
|
||||
import org.apache.ibatis.annotations.Delete;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
/**
|
||||
* @Author: xiang
|
||||
* @Date: 2026-05-09 10:16
|
||||
*/
|
||||
@Mapper
|
||||
@Repository
|
||||
public interface JntyzxUserInfoMapper extends BaseMapper<UserInfoDO> {
|
||||
|
||||
@Delete("delete from jntyzx_user_info where 1=1")
|
||||
int delAll();
|
||||
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.xiang.common.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.xiang.common.pojo.jntyzx.miniapp.pojo.UserRestrictionInfo;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
@Mapper
|
||||
@Repository
|
||||
public interface JntyzxUserRestrictionInfoMapper extends BaseMapper<UserRestrictionInfo> {
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.xiang.common.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.xiang.common.pojo.jntyzx.miniapp.pojo.UserTokenInfoDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
/**
|
||||
* @Author: xiang
|
||||
* @Date: 2025-12-16 09:18
|
||||
*/
|
||||
@Mapper
|
||||
@Repository
|
||||
public interface JntyzxUserTokenInfoMapper extends BaseMapper<UserTokenInfoDO> {
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.xiang.common.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.xiang.common.pojo.jntyzx.miniapp.pojo.VenueInfoDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
/**
|
||||
* @Author: xiang
|
||||
* @Date: 2025-12-15 15:48
|
||||
*/
|
||||
@Mapper
|
||||
@Repository
|
||||
public interface JntyzxVenueInfoMapper extends BaseMapper<VenueInfoDO> {
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.xiang.common.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.xiang.common.pojo.jntyzx.zlb.ZlbJlUserInfo;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
|
||||
@Mapper
|
||||
@Repository
|
||||
public interface ZlbJlUserInfoMapper extends BaseMapper<ZlbJlUserInfo> {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.xiang.common.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.xiang.common.pojo.jntyzx.zlb.ZlbLoginInfo;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
|
||||
@Mapper
|
||||
@Repository
|
||||
public interface ZlbLoginInfoMapper extends BaseMapper<ZlbLoginInfo> {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.xiang.common.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.xiang.common.pojo.jntyzx.zlb.ZlbPayOrder;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
@Mapper
|
||||
@Repository
|
||||
public interface ZlbOrderInfoMapper extends BaseMapper<ZlbPayOrder> {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
16
src/main/java/com/xiang/common/mapper/ZlbSiteInfoMapper.java
Normal file
16
src/main/java/com/xiang/common/mapper/ZlbSiteInfoMapper.java
Normal file
@@ -0,0 +1,16 @@
|
||||
package com.xiang.common.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.xiang.common.pojo.jntyzx.zlb.ZlbSiteInfo;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
@Mapper
|
||||
@Repository
|
||||
public interface ZlbSiteInfoMapper extends BaseMapper<ZlbSiteInfo> {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.xiang.common.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.xiang.common.pojo.jntyzx.zlb.ZlbTokenInfo;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
@Mapper
|
||||
@Repository
|
||||
public interface ZlbTokenInfoMapper extends BaseMapper<ZlbTokenInfo> {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
19
src/main/java/com/xiang/common/mapper/ZlbUserInfoMapper.java
Normal file
19
src/main/java/com/xiang/common/mapper/ZlbUserInfoMapper.java
Normal file
@@ -0,0 +1,19 @@
|
||||
package com.xiang.common.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.xiang.common.pojo.jntyzx.zlb.ZlbUserInfo;
|
||||
import org.apache.ibatis.annotations.Delete;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
@Repository
|
||||
@Mapper
|
||||
public interface ZlbUserInfoMapper extends BaseMapper<ZlbUserInfo> {
|
||||
|
||||
@Delete("delete from zlb_user_info where 1=1")
|
||||
int deleteAll();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
29
src/main/java/com/xiang/common/pojo/TrackPoint.java
Normal file
29
src/main/java/com/xiang/common/pojo/TrackPoint.java
Normal file
@@ -0,0 +1,29 @@
|
||||
package com.xiang.common.pojo;
|
||||
|
||||
/**
|
||||
* @Author: xiang
|
||||
* @Date: 2026-05-07 15:57
|
||||
*/
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 轨迹点类
|
||||
*/
|
||||
@Data
|
||||
public class TrackPoint {
|
||||
public int x, y, t;
|
||||
public String type;
|
||||
|
||||
public TrackPoint(int x, int y, int t, String type) {
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
this.t = t;
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return String.format("{\"x\":%d,\"y\":%d,\"t\":%d,\"type\":\"%s\"}", x, y, t, type);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package com.xiang.common.pojo.code;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class YcCodeBaseResponse<T> {
|
||||
private String msg;
|
||||
private Integer code;
|
||||
private T data;
|
||||
}
|
||||
14
src/main/java/com/xiang/common/pojo/code/YcCodeDataResp.java
Normal file
14
src/main/java/com/xiang/common/pojo/code/YcCodeDataResp.java
Normal file
@@ -0,0 +1,14 @@
|
||||
package com.xiang.common.pojo.code;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class YcCodeDataResp {
|
||||
private Integer code;
|
||||
private String data;
|
||||
private Double time;
|
||||
}
|
||||
31
src/main/java/com/xiang/common/pojo/code/YcCodeRequest.java
Normal file
31
src/main/java/com/xiang/common/pojo/code/YcCodeRequest.java
Normal file
@@ -0,0 +1,31 @@
|
||||
package com.xiang.common.pojo.code;
|
||||
|
||||
import com.alibaba.fastjson.annotation.JSONField;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class YcCodeRequest {
|
||||
/**
|
||||
* 图片 base64
|
||||
*/
|
||||
private String image;
|
||||
/**
|
||||
* token
|
||||
*/
|
||||
private String token;
|
||||
/**
|
||||
* 接口类型
|
||||
*/
|
||||
private Integer type;
|
||||
private String extra;
|
||||
|
||||
/**
|
||||
* 模板图片 base64
|
||||
*/
|
||||
@JSONField(name = "label_image")
|
||||
private String labelImage;
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.xiang.common.pojo.glados.resp;
|
||||
|
||||
import com.alibaba.fastjson.annotation.JSONField;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* @Author: xiang
|
||||
* @Date: 2026-05-08 15:47
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class GladosPointsHistoryResp {
|
||||
|
||||
private String asset;
|
||||
private String balance;
|
||||
private String business;
|
||||
private String change;
|
||||
private String detail;
|
||||
private Long id;
|
||||
private Long time;
|
||||
@JSONField(name = "user_id")
|
||||
private Long userId;
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.xiang.common.pojo.glados.resp;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author: xiang
|
||||
* @Date: 2026-05-08 15:46
|
||||
*/
|
||||
@Data
|
||||
public class GladosPointsResp {
|
||||
private Integer code;
|
||||
private List<GladosPointsHistoryResp> history;
|
||||
private Plans plans;
|
||||
private String points;
|
||||
}
|
||||
|
||||
@Data
|
||||
class Plans {
|
||||
|
||||
private Plan plan100;
|
||||
private Plan plan200;
|
||||
private Plan plan500;
|
||||
}
|
||||
@Data
|
||||
class Plan {
|
||||
private Integer days;
|
||||
private Integer points;
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.xiang.common.pojo.jntyzx.miniapp.dto;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* @Author: xiang
|
||||
* @Date: 2025-12-15 13:55
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class VenueListDTO {
|
||||
/**
|
||||
* 时间
|
||||
*/
|
||||
private String date;
|
||||
|
||||
/**
|
||||
* 时间
|
||||
*/
|
||||
private String sjName;
|
||||
|
||||
/**
|
||||
* 场地名称
|
||||
*/
|
||||
private String placeName;
|
||||
|
||||
/**
|
||||
* 联系人
|
||||
*/
|
||||
private String contacts;
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
package com.xiang.common.pojo.jntyzx.miniapp.pojo;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* @Author: xiang
|
||||
* @Date: 2025-12-16 10:57
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@TableName("jntyzx_order_create_info")
|
||||
public class OrderInfoDO {
|
||||
private Long id;
|
||||
/**
|
||||
* 订单id
|
||||
*/
|
||||
private String orderId;
|
||||
|
||||
/**
|
||||
* 参数
|
||||
*/
|
||||
private String params;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 订单创建人
|
||||
*/
|
||||
private String username;
|
||||
|
||||
/**
|
||||
* 场地号
|
||||
*/
|
||||
private String placeName;
|
||||
|
||||
/**
|
||||
* 所属日期
|
||||
*/
|
||||
private LocalDate date;
|
||||
|
||||
/**
|
||||
* 订单状态 (0:待付款,1:已付款)
|
||||
*/
|
||||
private Integer orderStatus;
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
package com.xiang.common.pojo.jntyzx.miniapp.pojo;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @Author: xiang
|
||||
* @Date: 2026-05-09 09:54
|
||||
*/
|
||||
@Data
|
||||
@TableName("jntyzx_user_info")
|
||||
public class UserInfoDO {
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Integer id;
|
||||
|
||||
private Integer loginInfoId;
|
||||
|
||||
/**
|
||||
* 名称
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 星期几
|
||||
*/
|
||||
private String week;
|
||||
|
||||
/**
|
||||
* 分配的任务参数
|
||||
*/
|
||||
private String type;
|
||||
|
||||
/**
|
||||
* 场地信息
|
||||
*/
|
||||
private String placeName;
|
||||
|
||||
/**
|
||||
* 时间id111
|
||||
*/
|
||||
private String siteTimeName;
|
||||
|
||||
/**
|
||||
* 是否开抢0-抢,1-不抢
|
||||
*/
|
||||
private Integer isBook;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package com.xiang.common.pojo.jntyzx.miniapp.pojo;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@TableName("jntyzx_user_restriction")
|
||||
public class UserRestrictionInfo {
|
||||
|
||||
private Long id;
|
||||
/**
|
||||
* 用户id
|
||||
*/
|
||||
private Long userId;
|
||||
/**
|
||||
* 封禁截止时间
|
||||
*/
|
||||
private LocalDateTime restrictionDeadline;
|
||||
/**
|
||||
* 封禁原因
|
||||
*/
|
||||
private String restrictionDesc;
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
package com.xiang.common.pojo.jntyzx.miniapp.pojo;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* @Author: xiang
|
||||
* @Date: 2025-12-16 09:18
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@TableName("jntyzx_user_token_info")
|
||||
public class UserTokenInfoDO {
|
||||
private Long id;
|
||||
/**
|
||||
* 用户名
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* token
|
||||
*/
|
||||
private String token;
|
||||
|
||||
/**
|
||||
* wx openid
|
||||
*/
|
||||
private String openId;
|
||||
|
||||
/**
|
||||
* 状态(0:禁用 1:启用)
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 是否可以下单 (0:否 1:是)
|
||||
*/
|
||||
private Integer isOrder;
|
||||
|
||||
/**
|
||||
* 会员卡号
|
||||
*/
|
||||
@TableField("member_card_no")
|
||||
private String memberCardNo;
|
||||
|
||||
/**
|
||||
* 是否封禁 0:否 1:是
|
||||
*/
|
||||
@TableField("is_restriction")
|
||||
private Integer isRestriction;
|
||||
|
||||
private LocalDateTime updateTime;
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
package com.xiang.common.pojo.jntyzx.miniapp.pojo;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* @Author: xiang
|
||||
* @Date: 2025-12-15 15:48
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@TableName("jntyzx_venue_info")
|
||||
public class VenueInfoDO {
|
||||
private Long id;
|
||||
/**
|
||||
* 场地名称
|
||||
*/
|
||||
private String placeName;
|
||||
|
||||
/**
|
||||
* 所属日期
|
||||
*/
|
||||
private LocalDate date;
|
||||
|
||||
/**
|
||||
* 场地信息三方主键
|
||||
*/
|
||||
private Long placeMainId;
|
||||
|
||||
/**
|
||||
* 场地id
|
||||
*/
|
||||
private Integer placeId;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private Integer scheduleId;
|
||||
|
||||
/**
|
||||
* 时间范围
|
||||
*/
|
||||
private String sjName;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 联系人
|
||||
*/
|
||||
private String contacts;
|
||||
|
||||
/**
|
||||
* 状态
|
||||
*/
|
||||
private Integer type;
|
||||
|
||||
private BigDecimal money;
|
||||
private String className;
|
||||
private String classCode;
|
||||
private String appointments;
|
||||
private String cTypeCode;
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.xiang.common.pojo.jntyzx.miniapp.req;
|
||||
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author: xiang
|
||||
* @Date: 2025-12-15 16:34
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class SubscribeRequest {
|
||||
private JSONObject jsonObject;
|
||||
private List<SubscribeVo> subscribeVos;
|
||||
private String bookTime;
|
||||
private Integer paymentMethod;
|
||||
private String svCiphertext;
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
package com.xiang.common.pojo.jntyzx.miniapp.req;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* @Author: xiang
|
||||
* @Date: 2025-12-15 16:35
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class SubscribeVo {
|
||||
private int id;
|
||||
|
||||
private String ballCourtId;
|
||||
|
||||
private String sjName;
|
||||
|
||||
private String scheduleId;
|
||||
|
||||
private String placeName;
|
||||
|
||||
private int placeId;
|
||||
|
||||
private String type;
|
||||
|
||||
private String className;
|
||||
|
||||
private String classCode;
|
||||
|
||||
private BigDecimal money;
|
||||
|
||||
private String contacts;
|
||||
|
||||
private String contactNumber;
|
||||
|
||||
private String memberNumber;
|
||||
|
||||
private String appointments;
|
||||
|
||||
private String operator;
|
||||
|
||||
private String endTime;
|
||||
|
||||
private String beginTime;
|
||||
|
||||
private int specOneTimes;
|
||||
|
||||
private String ctypeCode;
|
||||
|
||||
private int isWhole;
|
||||
|
||||
private String orderId;
|
||||
|
||||
private int votesnum;
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package com.xiang.common.pojo.jntyzx.miniapp.req;
|
||||
|
||||
import lombok.Data;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
|
||||
@Data
|
||||
public class UserAddReq {
|
||||
|
||||
/**
|
||||
* 用户名称
|
||||
*/
|
||||
private String name;
|
||||
/**
|
||||
* token
|
||||
*/
|
||||
private String token;
|
||||
/**
|
||||
* wx openId
|
||||
*/
|
||||
private String openId;
|
||||
|
||||
/**
|
||||
* 会员卡号
|
||||
*/
|
||||
private String memberCardNo;
|
||||
|
||||
/**
|
||||
* 状态 0:禁用 1:启用
|
||||
*/
|
||||
private Integer status;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
package com.xiang.common.pojo.jntyzx.miniapp.req;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @Author: xiang
|
||||
* @Date: 2026-03-24 16:40
|
||||
*/
|
||||
@Data
|
||||
public class UserQueryReq {
|
||||
|
||||
/**
|
||||
* 用户名称
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* wx openId
|
||||
*/
|
||||
private String openId;
|
||||
|
||||
/**
|
||||
* 会员卡号
|
||||
*/
|
||||
private String memberCardNo;
|
||||
|
||||
/**
|
||||
* 状态 0:禁用 1:启用
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 是否可以下单 0:否 1:是
|
||||
*/
|
||||
private Integer isOrder;
|
||||
|
||||
/**
|
||||
* 是否封禁 0:否 1:是
|
||||
*/
|
||||
private Integer isRestriction;
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.xiang.common.pojo.jntyzx.miniapp.req;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
|
||||
@Data
|
||||
public class UserStatusUpdateReq {
|
||||
|
||||
/**
|
||||
* 用户名称
|
||||
*/
|
||||
private String username;
|
||||
|
||||
/**
|
||||
* status
|
||||
*/
|
||||
private Integer status;
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.xiang.common.pojo.jntyzx.miniapp.req;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
|
||||
@Data
|
||||
public class UserTokenUpdateReq {
|
||||
|
||||
/**
|
||||
* 用户名称
|
||||
*/
|
||||
private String username;
|
||||
|
||||
/**
|
||||
* token
|
||||
*/
|
||||
private String token;
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.xiang.common.pojo.jntyzx.miniapp.req;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
|
||||
@Data
|
||||
public class UsernameReq {
|
||||
private String username;
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package com.xiang.common.pojo.jntyzx.miniapp.req;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.time.LocalDate;
|
||||
|
||||
/**
|
||||
* @Author: xiang
|
||||
* @Date: 2026-04-09 09:39
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class VenueInfoQueryRequest{
|
||||
|
||||
/**
|
||||
* 日期
|
||||
*/
|
||||
private LocalDate date;
|
||||
/**
|
||||
* 时间段 例如 20:00-21:00
|
||||
*/
|
||||
private String sj;
|
||||
|
||||
/**
|
||||
* 场地名称
|
||||
*/
|
||||
private String placeName;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.xiang.common.pojo.jntyzx.miniapp.req;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @Author: xiang
|
||||
* @Date: 2026-04-09 10:00
|
||||
*/
|
||||
@Data
|
||||
public class VenueInfoSubscribeRequest {
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.xiang.common.pojo.jntyzx.miniapp.resp;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @Author: xiang
|
||||
* @Date: 2025-05-14 14:38
|
||||
*/
|
||||
@Data
|
||||
public class JntyzxResponse<T> {
|
||||
private Boolean success;
|
||||
|
||||
private String message;
|
||||
|
||||
private Integer code;
|
||||
|
||||
private T result;
|
||||
|
||||
private Long timestamp;
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
package com.xiang.common.pojo.jntyzx.miniapp.resp;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* @Author: xiang
|
||||
* @Date: 2026-03-24 16:40
|
||||
*/
|
||||
@Data
|
||||
public class JtUserVo {
|
||||
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 用户名称
|
||||
*/
|
||||
private String name;
|
||||
/**
|
||||
* token
|
||||
*/
|
||||
private String token;
|
||||
/**
|
||||
* wx:openId
|
||||
*/
|
||||
private String openId;
|
||||
/**
|
||||
* 账号状态:
|
||||
* 状态(0:禁用 1:启用)
|
||||
*/
|
||||
private Integer status;
|
||||
/**
|
||||
* 修改时间
|
||||
*/
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd Hh:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd Hh:mm:ss")
|
||||
private LocalDateTime updateTime;
|
||||
/**
|
||||
* 江南体育中心会员卡号
|
||||
*/
|
||||
private String memberCardNo;
|
||||
/**
|
||||
* 是否可以下单
|
||||
*/
|
||||
private Boolean isOrder;
|
||||
/**
|
||||
* 是否封禁
|
||||
*/
|
||||
private Boolean isRestriction;
|
||||
/**
|
||||
* 封禁结束时间
|
||||
*/
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd Hh:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd Hh:mm:ss")
|
||||
private LocalDateTime restrictionDeadline;
|
||||
/**
|
||||
* 封禁缘由
|
||||
*/
|
||||
private String restrictionDesc;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.xiang.common.pojo.jntyzx.miniapp.resp;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* @Author: xiang
|
||||
* @Date: 2025-12-16 10:36
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class OrderCreateResp {
|
||||
|
||||
private String id;
|
||||
private String countDownNum;
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
package com.xiang.common.pojo.jntyzx.miniapp.resp;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
|
||||
/**
|
||||
* @Author: xiang
|
||||
* @Date: 2026-04-09 09:42
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
public class VenueInfoQueryResp {
|
||||
|
||||
/**
|
||||
* 场地名称
|
||||
*/
|
||||
private String placeName;
|
||||
|
||||
/**
|
||||
* 日期
|
||||
*/
|
||||
private LocalDate date;
|
||||
|
||||
/**
|
||||
* 时间范围
|
||||
*/
|
||||
private String sjName;
|
||||
|
||||
/**
|
||||
* 价格
|
||||
*/
|
||||
private BigDecimal money;
|
||||
|
||||
/**
|
||||
* 联系人
|
||||
*/
|
||||
private String contacts;
|
||||
|
||||
/**
|
||||
* 0:可订购 2:zlb 4:已订购
|
||||
*/
|
||||
private Integer type;
|
||||
private Long placeMainId;
|
||||
private Integer placeId;
|
||||
private Integer scheduleId;
|
||||
private String className;
|
||||
private String classCode;
|
||||
private String appointments;
|
||||
private String cTypeCode;
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.xiang.common.pojo.jntyzx.miniapp.resp.query;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author: xiang
|
||||
* @Date: 2025-05-14 14:37
|
||||
*/
|
||||
@Data
|
||||
public class QueryVenueResponse {
|
||||
private List<TimeList> timeList;
|
||||
|
||||
private List<VenueList> venue;
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
package com.xiang.common.pojo.jntyzx.miniapp.resp.query;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* @Author: xiang
|
||||
* @Date: 2025-05-14 14:45
|
||||
*/
|
||||
@Data
|
||||
public class SitePositionList {
|
||||
private Long id;
|
||||
|
||||
private String ballCourtId;
|
||||
|
||||
private String sjName;
|
||||
|
||||
private String scheduleId;
|
||||
|
||||
private String placeName;
|
||||
|
||||
private Integer placeId;
|
||||
|
||||
private Integer type;
|
||||
|
||||
private String className;
|
||||
|
||||
private String classCode;
|
||||
|
||||
private BigDecimal money;
|
||||
|
||||
private String contacts;
|
||||
|
||||
private String contactNumber;
|
||||
|
||||
private String memberNumber;
|
||||
|
||||
private String appointments;
|
||||
|
||||
private String operator;
|
||||
|
||||
private String endTime;
|
||||
|
||||
private String beginTime;
|
||||
|
||||
private Integer specOneTimes;
|
||||
|
||||
private String ctypeCode;
|
||||
|
||||
private String isWhole;
|
||||
|
||||
private Long orderId;
|
||||
|
||||
private Integer votesnum;
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package com.xiang.common.pojo.jntyzx.miniapp.resp.query;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @Author: xiang
|
||||
* @Date: 2025-05-14 14:39
|
||||
*/
|
||||
@Data
|
||||
public class TimeList {
|
||||
private Long id;
|
||||
private String name;
|
||||
|
||||
private String beginTime;
|
||||
|
||||
private String endTime;
|
||||
|
||||
private String type;
|
||||
|
||||
private String isenable;
|
||||
|
||||
private String operator;
|
||||
|
||||
private String createtime;
|
||||
|
||||
private String remarks;
|
||||
|
||||
private String default01;
|
||||
private String default02;
|
||||
private String default03;
|
||||
private String votesnum;
|
||||
}
|
||||
@@ -0,0 +1,109 @@
|
||||
package com.xiang.common.pojo.jntyzx.miniapp.resp.query;
|
||||
|
||||
import com.alibaba.fastjson.annotation.JSONField;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class UserInfoResponse {
|
||||
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
private Long id;
|
||||
/**
|
||||
* 会员卡号
|
||||
*/
|
||||
private String consCard;
|
||||
/**
|
||||
* 姓名
|
||||
*/
|
||||
private String consName;
|
||||
/**
|
||||
* 性别
|
||||
*/
|
||||
private String consSex;
|
||||
/**
|
||||
* 身份证号
|
||||
*/
|
||||
private String consIdCard;
|
||||
/**
|
||||
* 固定电话
|
||||
*/
|
||||
private String consTel;
|
||||
/**
|
||||
* 手机号码
|
||||
*/
|
||||
private String consHandSet;
|
||||
/**
|
||||
* 单位
|
||||
*/
|
||||
private String consUnit;
|
||||
/**
|
||||
* 照片
|
||||
*/
|
||||
private String consPhoto;
|
||||
private Integer consWaste;
|
||||
/**
|
||||
* 会员卡号
|
||||
*/
|
||||
private String consNumber;
|
||||
private BigDecimal consMin;
|
||||
private Integer consProp;
|
||||
/**
|
||||
* 注册年
|
||||
*/
|
||||
private String consYear;
|
||||
/**
|
||||
* 注册月
|
||||
*/
|
||||
private String consMonth;
|
||||
/**
|
||||
* 注册日
|
||||
*/
|
||||
private String consDay;
|
||||
private boolean consIflag;
|
||||
/**
|
||||
* 注册时间
|
||||
*/
|
||||
private LocalDateTime consTimes;
|
||||
/**
|
||||
* openId
|
||||
*/
|
||||
private String openId;
|
||||
/**
|
||||
* 头像
|
||||
*/
|
||||
private String photoUrl;
|
||||
/**
|
||||
* 会员
|
||||
*/
|
||||
private Integer consVip;
|
||||
/**
|
||||
* 会员等级号
|
||||
*/
|
||||
private String consVipCode;
|
||||
|
||||
private String eleCardNum;
|
||||
private Integer appointmentEligibility;
|
||||
/**
|
||||
* 封禁截止日期
|
||||
*/
|
||||
@JSONField(name = "restrictionDeadline")
|
||||
private String restrictionDeadline;
|
||||
/**
|
||||
* 封禁原因
|
||||
*/
|
||||
private String restrictionDescription;
|
||||
/**
|
||||
* 封禁截止日期
|
||||
*/
|
||||
@JSONField(name = "RestrictionDeadline")
|
||||
private String RestrictionDeadline2;
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.xiang.common.pojo.jntyzx.miniapp.resp.query;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author: xiang
|
||||
* @Date: 2025-05-14 14:39
|
||||
*/
|
||||
@Data
|
||||
public class VenueList {
|
||||
|
||||
private Integer placeId;
|
||||
|
||||
private String placeName;
|
||||
|
||||
private List<SitePositionList> sitePosition;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.xiang.common.pojo.jntyzx.zlb;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* @Author: xiang
|
||||
* @Date: 2026-05-07 15:44
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class ZlbCaptcha {
|
||||
|
||||
private String type;
|
||||
private String backgroundImage;
|
||||
private String templateImage;
|
||||
private String backgroundImageTag;
|
||||
private String templateImageTag;
|
||||
private Integer backgroundImageWidth;
|
||||
private Integer backgroundImageHeight;
|
||||
private Integer templateImageWidth;
|
||||
private Integer templateImageHeight;
|
||||
private String data;
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.xiang.common.pojo.jntyzx.zlb;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* @Author: xiang
|
||||
* @Date: 2026-05-07 15:44
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class ZlbCaptchaResp {
|
||||
private String id;
|
||||
private ZlbCaptcha captcha;
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
package com.xiang.common.pojo.jntyzx.zlb;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
*
|
||||
* @TableName zlb_jl_user_info
|
||||
*/
|
||||
@TableName(value ="zlb_jl_user_info")
|
||||
@Data
|
||||
public class ZlbJlUserInfo {
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Integer id;
|
||||
|
||||
/**
|
||||
* 名称
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 星期几
|
||||
*/
|
||||
private String week;
|
||||
|
||||
/**
|
||||
* 日期
|
||||
*/
|
||||
private String day;
|
||||
|
||||
/**
|
||||
* token
|
||||
*/
|
||||
private String token;
|
||||
|
||||
/**
|
||||
* secretKey
|
||||
*/
|
||||
private String secretKey;
|
||||
|
||||
/**
|
||||
* 场地信息
|
||||
*/
|
||||
private String placeName;
|
||||
|
||||
/**
|
||||
* 时间id111
|
||||
*/
|
||||
private String siteTimeName;
|
||||
}
|
||||
@@ -0,0 +1,82 @@
|
||||
package com.xiang.common.pojo.jntyzx.zlb;
|
||||
|
||||
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;
|
||||
|
||||
/**
|
||||
*
|
||||
* @TableName zlb_login_info
|
||||
*/
|
||||
@TableName(value ="zlb_login_info")
|
||||
@Data
|
||||
public class ZlbLoginInfo {
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Integer id;
|
||||
|
||||
/**
|
||||
* 名称
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 11
|
||||
*/
|
||||
private String cookie;
|
||||
|
||||
/**
|
||||
* 22
|
||||
*/
|
||||
private String bizSessionId;
|
||||
|
||||
/**
|
||||
* 33
|
||||
*/
|
||||
private String xDeviceId;
|
||||
|
||||
/**
|
||||
* 44
|
||||
*/
|
||||
private String xSignValue;
|
||||
|
||||
/**
|
||||
* 55
|
||||
*/
|
||||
private String token;
|
||||
|
||||
/**
|
||||
* 66
|
||||
*/
|
||||
private String gucGsid;
|
||||
|
||||
/**
|
||||
* 77
|
||||
*/
|
||||
private String xSiteCode;
|
||||
|
||||
/**
|
||||
* 77
|
||||
*/
|
||||
private String aliyungfTc;
|
||||
|
||||
/**
|
||||
* 是否失效0-未失效,1-失效
|
||||
*/
|
||||
private Integer isDel;
|
||||
|
||||
/**
|
||||
* 数据创建时间
|
||||
*/
|
||||
private Date createdDate;
|
||||
|
||||
/**
|
||||
* 数据修改时间
|
||||
*/
|
||||
private Date updatedDate;
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
package com.xiang.common.pojo.jntyzx.zlb;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @Author: xiang
|
||||
* @Date: 2026-05-11 09:43
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
public class ZlbOrderDetailResp {
|
||||
|
||||
private Integer state;
|
||||
private Integer blocId;
|
||||
private Integer stadiumId;
|
||||
private String stadiumArea;
|
||||
private String stadiumName;
|
||||
private String stadiumPhone;
|
||||
private String stadiumType;
|
||||
private String stadiumAddress;
|
||||
private String mapLongitude;
|
||||
private String mapLatitude;
|
||||
private String ticketImg;
|
||||
private String spName;
|
||||
private String siteName;
|
||||
private String siteAmount;
|
||||
// private String orderAmount;
|
||||
private Integer payNumber;
|
||||
// private String ticketInfos;
|
||||
private Integer orderId;
|
||||
private String orderNo;
|
||||
private String orderTime;
|
||||
private String payTime;
|
||||
private Integer payType;
|
||||
private String payAmount;
|
||||
private String discountPayAmount;
|
||||
private String totalDiscountAmount;
|
||||
private String isUseCoupon;
|
||||
private String isUseCard;
|
||||
private String name;
|
||||
private String idCard;
|
||||
private String phone;
|
||||
private String notice;
|
||||
private String blocNotice;
|
||||
private Integer isRefund;
|
||||
private String ticketCate;
|
||||
private String spreadAmout;
|
||||
private Integer isPreferential;
|
||||
private String doNotWatermarkFlag;
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
package com.xiang.common.pojo.jntyzx.zlb;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author caoliang
|
||||
* @version 1.0
|
||||
* @date 2025-06-18 00:52:44
|
||||
* @Description:***
|
||||
*/
|
||||
@Data
|
||||
public class ZlbOrderInfo {
|
||||
private String id;
|
||||
private ZlbData data;
|
||||
|
||||
@Data
|
||||
public static class ZlbData {
|
||||
private Integer bgImageWidth;
|
||||
private Integer bgImageHeight;
|
||||
private String startTime;
|
||||
private String stopTime;
|
||||
private List<TrackList> trackList;
|
||||
|
||||
@Data
|
||||
public static class TrackList {
|
||||
private Integer x;
|
||||
private Integer y;
|
||||
private Integer t;
|
||||
private String type;
|
||||
}
|
||||
}
|
||||
|
||||
private String siteOrderDetailsStr;
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
package com.xiang.common.pojo.jntyzx.zlb;
|
||||
|
||||
import com.alibaba.fastjson.annotation.JSONField;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author caoliang
|
||||
* @version 1.0
|
||||
* @date 2025-06-22 19:49:46
|
||||
* @Description:***
|
||||
*/
|
||||
@Data
|
||||
public class ZlbOrderJson {
|
||||
@JsonProperty("issueIds")
|
||||
@JSONField(ordinal=1)
|
||||
private String issueIds;
|
||||
@JsonProperty("issueAmount")
|
||||
@JSONField(ordinal=2)
|
||||
private Integer issueAmount;
|
||||
@JsonProperty("cardOrderId")
|
||||
@JSONField(ordinal=3)
|
||||
private String cardOrderId;
|
||||
|
||||
|
||||
@JsonProperty("amount")
|
||||
@JSONField(ordinal=4)
|
||||
private Integer amount;
|
||||
@JsonProperty("belongDate")
|
||||
@JSONField(ordinal=5)
|
||||
private String belongDate;
|
||||
@JsonProperty("dayEffectiveTimes")
|
||||
@JSONField(ordinal=6)
|
||||
private String dayEffectiveTimes;
|
||||
@JsonProperty("dayOverdueTimes")
|
||||
@JSONField(ordinal=7)
|
||||
private String dayOverdueTimes;
|
||||
@JsonProperty("placeName")
|
||||
@JSONField(ordinal=8)
|
||||
private String placeName;
|
||||
@JsonProperty("siteId")
|
||||
@JSONField(ordinal=9)
|
||||
private String siteId;
|
||||
@JsonProperty("siteItemId")
|
||||
@JSONField(ordinal=10)
|
||||
private Integer siteItemId;
|
||||
@JsonProperty("siteRuleId")
|
||||
@JSONField(ordinal=11)
|
||||
private String siteRuleId;
|
||||
@JsonProperty("siteTicketId")
|
||||
@JSONField(ordinal=12)
|
||||
private Integer siteTicketId;
|
||||
@JsonProperty("payChannel")
|
||||
@JSONField(ordinal=13)
|
||||
private Integer payChannel;
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package com.xiang.common.pojo.jntyzx.zlb;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author caoliang
|
||||
* @version 1.0
|
||||
* @date 2025-06-18 00:52:44
|
||||
* @Description:***
|
||||
*/
|
||||
@Data
|
||||
public class ZlbOrderWqInfo {
|
||||
private String siteOrderDetailsStr;
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
package com.xiang.common.pojo.jntyzx.zlb;
|
||||
|
||||
import com.alibaba.fastjson.annotation.JSONField;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author caoliang
|
||||
* @version 1.0
|
||||
* @date 2025-06-22 19:49:46
|
||||
* @Description:***
|
||||
*/
|
||||
@Data
|
||||
public class ZlbOrderWqJson {
|
||||
@JsonProperty("issueIds")
|
||||
@JSONField(ordinal=1)
|
||||
private String issueIds;
|
||||
@JsonProperty("issueAmount")
|
||||
@JSONField(ordinal=2)
|
||||
private Integer issueAmount;
|
||||
@JsonProperty("cardOrderId")
|
||||
@JSONField(ordinal=3)
|
||||
private String cardOrderId;
|
||||
|
||||
|
||||
@JsonProperty("amount")
|
||||
@JSONField(ordinal=4)
|
||||
private Integer amount;
|
||||
@JsonProperty("belongDate")
|
||||
@JSONField(ordinal=5)
|
||||
private String belongDate;
|
||||
@JsonProperty("dayEffectiveTimes")
|
||||
@JSONField(ordinal=6)
|
||||
private String dayEffectiveTimes;
|
||||
@JsonProperty("dayOverdueTimes")
|
||||
@JSONField(ordinal=7)
|
||||
private String dayOverdueTimes;
|
||||
@JsonProperty("placeName")
|
||||
@JSONField(ordinal=8)
|
||||
private String placeName;
|
||||
|
||||
@JsonProperty("saasTicketId")
|
||||
@JSONField(ordinal=9)
|
||||
private String saasTicketId;
|
||||
|
||||
@JsonProperty("siteId")
|
||||
@JSONField(ordinal=10)
|
||||
private String siteId;
|
||||
@JsonProperty("siteItemId")
|
||||
@JSONField(ordinal=11)
|
||||
private Integer siteItemId;
|
||||
@JsonProperty("siteRuleId")
|
||||
@JSONField(ordinal=12)
|
||||
private String siteRuleId;
|
||||
@JsonProperty("siteTicketId")
|
||||
@JSONField(ordinal=13)
|
||||
private Integer siteTicketId;
|
||||
@JsonProperty("payChannel")
|
||||
@JSONField(ordinal=14)
|
||||
private Integer payChannel;
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
package com.xiang.common.pojo.jntyzx.zlb;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
*
|
||||
* @TableName zlb_order_info
|
||||
*/
|
||||
@TableName(value ="zlb_order_info")
|
||||
@Data
|
||||
public class ZlbPayOrder {
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Integer id;
|
||||
|
||||
/**
|
||||
* 姓名
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 日期
|
||||
*/
|
||||
private String day;
|
||||
|
||||
/**
|
||||
* 场馆
|
||||
*/
|
||||
private String venues;
|
||||
|
||||
/**
|
||||
* 场地名称
|
||||
*/
|
||||
private String placeName;
|
||||
|
||||
/**
|
||||
* 时间id111
|
||||
*/
|
||||
private String time;
|
||||
|
||||
/**
|
||||
* 0-未付款,1-已付款
|
||||
*/
|
||||
private Integer isPay;
|
||||
|
||||
/**
|
||||
* 订单id
|
||||
*/
|
||||
private String orderId;
|
||||
}
|
||||
139
src/main/java/com/xiang/common/pojo/jntyzx/zlb/ZlbSiteInfo.java
Normal file
139
src/main/java/com/xiang/common/pojo/jntyzx/zlb/ZlbSiteInfo.java
Normal file
@@ -0,0 +1,139 @@
|
||||
package com.xiang.common.pojo.jntyzx.zlb;
|
||||
|
||||
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;
|
||||
|
||||
/**
|
||||
*
|
||||
* @TableName zlb_site_info
|
||||
*/
|
||||
@TableName(value ="zlb_site_info")
|
||||
@Data
|
||||
public class ZlbSiteInfo {
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Integer id;
|
||||
|
||||
/**
|
||||
* 场地Id
|
||||
*/
|
||||
private Integer type;
|
||||
private Integer siteTicketId;
|
||||
|
||||
/**
|
||||
* 场地名称
|
||||
*/
|
||||
private String siteTicketName;
|
||||
private String saasTicketId;
|
||||
|
||||
/**
|
||||
* 金额
|
||||
*/
|
||||
private String siteRuleId;
|
||||
|
||||
/**
|
||||
* 金额
|
||||
*/
|
||||
private String siteId;
|
||||
|
||||
/**
|
||||
* 时间顺序id
|
||||
*/
|
||||
private String placeName;
|
||||
|
||||
/**
|
||||
* 票id
|
||||
*/
|
||||
private Integer weekType;
|
||||
|
||||
/**
|
||||
* 票id
|
||||
*/
|
||||
private Integer blocId;
|
||||
|
||||
/**
|
||||
* 票id
|
||||
*/
|
||||
private Integer stadiumId;
|
||||
|
||||
/**
|
||||
* 会员号
|
||||
*/
|
||||
private String stadiumName;
|
||||
|
||||
/**
|
||||
* 票id
|
||||
*/
|
||||
private Integer siteItemId;
|
||||
|
||||
/**
|
||||
* 订场人信息
|
||||
*/
|
||||
private String spName;
|
||||
|
||||
/**
|
||||
* 订场人电话
|
||||
*/
|
||||
private String url;
|
||||
|
||||
/**
|
||||
* 票id
|
||||
*/
|
||||
private Integer startCheckMinutes;
|
||||
|
||||
/**
|
||||
* 票id
|
||||
*/
|
||||
private Integer endCheckMinutes;
|
||||
|
||||
/**
|
||||
* 订场时间
|
||||
*/
|
||||
private String dayEffectiveTimes;
|
||||
|
||||
/**
|
||||
* 场地票名
|
||||
*/
|
||||
private String dayOverdueTimes;
|
||||
|
||||
/**
|
||||
* 票id
|
||||
*/
|
||||
private Integer amount;
|
||||
|
||||
/**
|
||||
* 票id
|
||||
*/
|
||||
private Integer ticketType;
|
||||
|
||||
/**
|
||||
* 场地票名
|
||||
*/
|
||||
private String belongDate;
|
||||
|
||||
/**
|
||||
* 场地票名
|
||||
*/
|
||||
private String isOpen;
|
||||
|
||||
/**
|
||||
* 票id
|
||||
*/
|
||||
private Integer isPreferential;
|
||||
|
||||
/**
|
||||
* 数据创建时间
|
||||
*/
|
||||
private Date createdDate;
|
||||
|
||||
/**
|
||||
* 数据修改时间
|
||||
*/
|
||||
private Date updatedDate;
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.xiang.common.pojo.jntyzx.zlb;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author caoliang
|
||||
* @version 1.0
|
||||
* @date 2025-06-19 23:53:44
|
||||
* @Description:***
|
||||
*/
|
||||
@Data
|
||||
public class ZlbSiteRequest {
|
||||
|
||||
private String dataStr;
|
||||
private String stadiumId;
|
||||
private Integer siteItemId;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
package com.xiang.common.pojo.jntyzx.zlb;
|
||||
|
||||
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;
|
||||
|
||||
/**
|
||||
*
|
||||
* @TableName zlb_token_info
|
||||
*/
|
||||
@TableName(value ="zlb_token_info")
|
||||
@Data
|
||||
public class ZlbTokenInfo {
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Integer id;
|
||||
|
||||
private Integer loginInfoId;
|
||||
|
||||
/**
|
||||
* 名称
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* tokenId
|
||||
*/
|
||||
private String tokenId;
|
||||
private String zlbUserId;
|
||||
private String secretKey;
|
||||
|
||||
/**
|
||||
* 是否失效0-未失效,1-失效
|
||||
*/
|
||||
private Integer isDel;
|
||||
private Date createdDate;
|
||||
private Date updatedDate;
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
package com.xiang.common.pojo.jntyzx.zlb;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
*
|
||||
* @TableName zlb_user_info
|
||||
*/
|
||||
@TableName(value ="zlb_user_info")
|
||||
@Data
|
||||
public class ZlbUserInfo {
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Integer id;
|
||||
|
||||
private Integer loginInfoId;
|
||||
|
||||
/**
|
||||
* 名称
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 星期几
|
||||
*/
|
||||
private String week;
|
||||
|
||||
/**
|
||||
* 分配的任务参数
|
||||
*/
|
||||
private String type;
|
||||
|
||||
/**
|
||||
* 场地信息
|
||||
*/
|
||||
private String placeName;
|
||||
|
||||
/**
|
||||
* 时间id111
|
||||
*/
|
||||
private String siteTimeName;
|
||||
|
||||
/**
|
||||
* 是否开抢0-抢,1-不抢
|
||||
*/
|
||||
private Integer isBook;
|
||||
}
|
||||
96
src/main/java/com/xiang/common/service/CodeServiceImpl.java
Normal file
96
src/main/java/com/xiang/common/service/CodeServiceImpl.java
Normal file
@@ -0,0 +1,96 @@
|
||||
package com.xiang.common.service;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.TypeReference;
|
||||
import com.google.common.collect.Maps;
|
||||
import com.xiang.common.enums.YcCodeTypeEnum;
|
||||
import com.xiang.common.pojo.code.YcCodeBaseResponse;
|
||||
import com.xiang.common.pojo.code.YcCodeDataResp;
|
||||
import com.xiang.common.pojo.code.YcCodeRequest;
|
||||
import com.xiang.common.utils.HttpService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
public class CodeServiceImpl implements ICodeService {
|
||||
|
||||
// 云码平台接口api
|
||||
private static final String YUN_CODE_API_URL = "http://api.jfbym.com/api/YmServer/customApi";
|
||||
|
||||
@Override
|
||||
public String templateCodeResolve(String image) {
|
||||
YcCodeBaseResponse<YcCodeDataResp> resp = baseCodeResolve(YcCodeTypeEnum.YC_10118.getType(), image, null);
|
||||
if (Objects.isNull(resp)) {
|
||||
return null;
|
||||
}
|
||||
Integer code = resp.getCode();
|
||||
if (200 == code) {
|
||||
String data = resp.getData().getData();
|
||||
StringBuilder result = new StringBuilder();
|
||||
for (int i = 0; i < data.length(); i++) {
|
||||
result.append(data.charAt(i)).append(",");
|
||||
}
|
||||
return result.substring(0, result.length() - 1);
|
||||
}
|
||||
return null;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> codeResolve(String image, String templateImage) {
|
||||
HashMap<String, String> header = Maps.newHashMap();
|
||||
header.put("Content-Type", "application/json");
|
||||
YcCodeRequest ycCodeRequest = new YcCodeRequest();
|
||||
ycCodeRequest.setImage(image);
|
||||
ycCodeRequest.setToken("9LQ1ATKVEeO8Arhq-HavXzpHvkzdZz_r7ydmqlYhp9c");
|
||||
ycCodeRequest.setLabelImage(templateImage);
|
||||
ycCodeRequest.setType(YcCodeTypeEnum.YC_310700.getType());
|
||||
|
||||
String resp = HttpService.doPost(YUN_CODE_API_URL, header, JSON.toJSONString(ycCodeRequest));
|
||||
YcCodeBaseResponse<YcCodeDataResp> response = JSON.parseObject(resp, new TypeReference<YcCodeBaseResponse<YcCodeDataResp>>() {
|
||||
});
|
||||
if (Objects.isNull(response)) {
|
||||
return null;
|
||||
}
|
||||
Integer code = response.getCode();
|
||||
if (10000 == code) {
|
||||
YcCodeDataResp data = response.getData();
|
||||
if (Objects.isNull(data)) {
|
||||
return null;
|
||||
}
|
||||
Integer dataCode = data.getCode();
|
||||
if (0 == dataCode) {
|
||||
String dataData = data.getData();
|
||||
if (StringUtils.isNotBlank(dataData)) {
|
||||
String[] split = dataData.split("\\|");
|
||||
return Arrays.asList(split);
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public YcCodeBaseResponse<YcCodeDataResp> baseCodeResolve(Integer type, String image, String extra) {
|
||||
|
||||
HashMap<String, String> header = Maps.newHashMap();
|
||||
header.put("Content-Type", "application/json");
|
||||
|
||||
YcCodeRequest ycCodeRequest = new YcCodeRequest();
|
||||
ycCodeRequest.setImage(image);
|
||||
ycCodeRequest.setToken("9LQ1ATKVEeO8Arhq-HavXzpHvkzdZz_r7ydmqlYhp9c");
|
||||
ycCodeRequest.setType(type);
|
||||
ycCodeRequest.setExtra(extra);
|
||||
|
||||
String resp = HttpService.doPost(YUN_CODE_API_URL, header, JSON.toJSONString(ycCodeRequest));
|
||||
return JSON.parseObject(resp, new TypeReference<YcCodeBaseResponse<YcCodeDataResp>>() {
|
||||
});
|
||||
}
|
||||
}
|
||||
16
src/main/java/com/xiang/common/service/ICodeService.java
Normal file
16
src/main/java/com/xiang/common/service/ICodeService.java
Normal file
@@ -0,0 +1,16 @@
|
||||
package com.xiang.common.service;
|
||||
|
||||
import com.xiang.common.pojo.code.YcCodeBaseResponse;
|
||||
import com.xiang.common.pojo.code.YcCodeDataResp;
|
||||
import com.xiang.common.pojo.code.YcCodeRequest;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface ICodeService {
|
||||
|
||||
String templateCodeResolve(String image);
|
||||
|
||||
List<String> codeResolve(String image, String extra);
|
||||
|
||||
YcCodeBaseResponse<YcCodeDataResp> baseCodeResolve(Integer type, String image, String extra);
|
||||
}
|
||||
@@ -7,6 +7,11 @@ import java.util.List;
|
||||
|
||||
public interface IScheduleOpeningConfigService extends IService<ScheduleOpeningConfigDO> {
|
||||
|
||||
/**
|
||||
* 获取所有未删除的任务
|
||||
* @return
|
||||
*/
|
||||
List<ScheduleOpeningConfigDO> getAll();
|
||||
/**
|
||||
* 根据模块id和任务名称查询
|
||||
* @param moduleCode
|
||||
|
||||
@@ -7,9 +7,16 @@ import com.xiang.common.mapper.ScheduleOpeningConfigDao;
|
||||
import com.xiang.common.pojo.schedule.ScheduleOpeningConfigDO;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@Service
|
||||
public class ScheduleOpeningConfigServiceImpl extends ServiceImpl<ScheduleOpeningConfigDao, ScheduleOpeningConfigDO> implements IScheduleOpeningConfigService {
|
||||
@Override
|
||||
public List<ScheduleOpeningConfigDO> getAll() {
|
||||
return baseMapper.selectList(Wrappers.lambdaQuery());
|
||||
}
|
||||
|
||||
@Override
|
||||
public ScheduleOpeningConfigDO getConfigByModule(Integer moduleCode, String taskName) {
|
||||
LambdaQueryWrapper<ScheduleOpeningConfigDO> lqw = Wrappers.lambdaQuery();
|
||||
|
||||
86
src/main/java/com/xiang/common/utils/AESECBUtils.java
Normal file
86
src/main/java/com/xiang/common/utils/AESECBUtils.java
Normal file
@@ -0,0 +1,86 @@
|
||||
package com.xiang.common.utils;
|
||||
|
||||
import javax.crypto.Cipher;
|
||||
import javax.crypto.spec.SecretKeySpec;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
public class AESECBUtils {
|
||||
// 填充方式(PKCS5Padding)
|
||||
private static final String ALGORITHM = "AES/ECB/PKCS5Padding";
|
||||
|
||||
/**
|
||||
* AES ECB 模式加密
|
||||
*
|
||||
* @param plainText 明文字符串
|
||||
* @param key 密钥(16 / 24 / 32 字节)
|
||||
* @return 十六进制格式的密文
|
||||
*/
|
||||
public static String encrypt(String plainText, String key) throws Exception {
|
||||
Cipher cipher = Cipher.getInstance(ALGORITHM);
|
||||
SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(StandardCharsets.UTF_8), "AES");
|
||||
cipher.init(Cipher.ENCRYPT_MODE, keySpec);
|
||||
|
||||
byte[] encrypted = cipher.doFinal(plainText.getBytes(StandardCharsets.UTF_8));
|
||||
return bytesToHex(encrypted).toUpperCase();
|
||||
}
|
||||
|
||||
/**
|
||||
* AES ECB 模式解密
|
||||
*
|
||||
* @param hexCipherText 十六进制格式的密文
|
||||
* @param key 密钥(16 / 24 / 32 字节)
|
||||
* @return 解密后的明文
|
||||
*/
|
||||
public static String decrypt(String hexCipherText, String key) throws Exception {
|
||||
Cipher cipher = Cipher.getInstance(ALGORITHM);
|
||||
SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(StandardCharsets.UTF_8), "AES");
|
||||
cipher.init(Cipher.DECRYPT_MODE, keySpec);
|
||||
|
||||
byte[] cipherData = hexStringToByteArray(hexCipherText);
|
||||
byte[] decrypted = cipher.doFinal(cipherData);
|
||||
return new String(decrypted, StandardCharsets.UTF_8);
|
||||
}
|
||||
|
||||
// 十六进制字符串转 byte[]
|
||||
private static byte[] hexStringToByteArray(String s) {
|
||||
int len = s.length();
|
||||
byte[] data = new byte[len / 2];
|
||||
for (int i = 0; i < len; i += 2) {
|
||||
data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
|
||||
+ Character.digit(s.charAt(i + 1), 16));
|
||||
}
|
||||
return data;
|
||||
}
|
||||
|
||||
// byte[] 转十六进制字符串
|
||||
private static String bytesToHex(byte[] bytes) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (byte b : bytes) {
|
||||
sb.append(String.format("%02x", b));
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
// 示例主函数
|
||||
public static void main(String[] args) {
|
||||
String key = "1ad2ee1b6e3f4e81"; // 16字节密钥
|
||||
// String key = "3f18655f909d495d"; // 16字节密钥
|
||||
// String key = "ea08f7da82e44df7"; // 16字节密钥
|
||||
// 取前16位数密钥
|
||||
//String key = keystr.substring(0,16);
|
||||
|
||||
String longCiphertext = "8A559F1F4A8A782169E6F5BC32217A8CAA263E173FA2C05751CFC49B9018D57779F5B7C47B8C1570142EAB5A781175DE45AD141C3CC8E62380EA6C0036A2D80BF219B326C2302553E43B0F534A51D18D";
|
||||
|
||||
try {
|
||||
String decrypted = decrypt(longCiphertext, key);
|
||||
System.out.println("长密文解密结果: " + decrypted);
|
||||
decrypted = "{\"stadiumId\":\"49\",\"siteItemId\":1940,\"belongDate\":\"2025-10-10\",\"channelType\":6}";
|
||||
// decrypted = " {\"stadiumId\":\"360112\",\"siteItemId\":1148,\"belongDate\":\"2025-08-11\",\"channelType\":6}";
|
||||
String reEncrypted = encrypt(decrypted, key);
|
||||
System.out.println("重新加密结果: " + reEncrypted);
|
||||
} catch (Exception e) {
|
||||
System.err.println("长密文解密失败: " + e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
253
src/main/java/com/xiang/common/utils/Base64.java
Normal file
253
src/main/java/com/xiang/common/utils/Base64.java
Normal file
@@ -0,0 +1,253 @@
|
||||
package com.xiang.common.utils;
|
||||
|
||||
/**
|
||||
* Base64工具类
|
||||
*
|
||||
* @author xiang
|
||||
*/
|
||||
public final class Base64 {
|
||||
static private final int BASELENGTH = 128;
|
||||
static private final int LOOKUPLENGTH = 64;
|
||||
static private final int TWENTYFOURBITGROUP = 24;
|
||||
static private final int EIGHTBIT = 8;
|
||||
static private final int SIXTEENBIT = 16;
|
||||
static private final int FOURBYTE = 4;
|
||||
static private final int SIGN = -128;
|
||||
static private final char PAD = '=';
|
||||
static final private byte[] base64Alphabet = new byte[BASELENGTH];
|
||||
static final private char[] lookUpBase64Alphabet = new char[LOOKUPLENGTH];
|
||||
|
||||
static {
|
||||
for (int i = 0; i < BASELENGTH; ++i) {
|
||||
base64Alphabet[i] = -1;
|
||||
}
|
||||
for (int i = 'Z'; i >= 'A'; i--) {
|
||||
base64Alphabet[i] = (byte) (i - 'A');
|
||||
}
|
||||
for (int i = 'z'; i >= 'a'; i--) {
|
||||
base64Alphabet[i] = (byte) (i - 'a' + 26);
|
||||
}
|
||||
|
||||
for (int i = '9'; i >= '0'; i--) {
|
||||
base64Alphabet[i] = (byte) (i - '0' + 52);
|
||||
}
|
||||
|
||||
base64Alphabet['+'] = 62;
|
||||
base64Alphabet['/'] = 63;
|
||||
|
||||
for (int i = 0; i <= 25; i++) {
|
||||
lookUpBase64Alphabet[i] = (char) ('A' + i);
|
||||
}
|
||||
|
||||
for (int i = 26, j = 0; i <= 51; i++, j++) {
|
||||
lookUpBase64Alphabet[i] = (char) ('a' + j);
|
||||
}
|
||||
|
||||
for (int i = 52, j = 0; i <= 61; i++, j++) {
|
||||
lookUpBase64Alphabet[i] = (char) ('0' + j);
|
||||
}
|
||||
lookUpBase64Alphabet[62] = '+';
|
||||
lookUpBase64Alphabet[63] = '/';
|
||||
}
|
||||
|
||||
private static boolean isWhiteSpace(char octect) {
|
||||
return (octect == 0x20 || octect == 0xd || octect == 0xa || octect == 0x9);
|
||||
}
|
||||
|
||||
private static boolean isPad(char octect) {
|
||||
return (octect == PAD);
|
||||
}
|
||||
|
||||
private static boolean isData(char octect) {
|
||||
return (octect < BASELENGTH && base64Alphabet[octect] != -1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Encodes hex octects into Base64
|
||||
*
|
||||
* @param binaryData Array containing binaryData
|
||||
* @return Encoded Base64 array
|
||||
*/
|
||||
public static String encode(byte[] binaryData) {
|
||||
if (binaryData == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
int lengthDataBits = binaryData.length * EIGHTBIT;
|
||||
if (lengthDataBits == 0) {
|
||||
return "";
|
||||
}
|
||||
|
||||
int fewerThan24bits = lengthDataBits % TWENTYFOURBITGROUP;
|
||||
int numberTriplets = lengthDataBits / TWENTYFOURBITGROUP;
|
||||
int numberQuartet = fewerThan24bits != 0 ? numberTriplets + 1 : numberTriplets;
|
||||
char[] encodedData = null;
|
||||
|
||||
encodedData = new char[numberQuartet * 4];
|
||||
|
||||
byte k = 0, l = 0, b1 = 0, b2 = 0, b3 = 0;
|
||||
|
||||
int encodedIndex = 0;
|
||||
int dataIndex = 0;
|
||||
|
||||
for (int i = 0; i < numberTriplets; i++) {
|
||||
b1 = binaryData[dataIndex++];
|
||||
b2 = binaryData[dataIndex++];
|
||||
b3 = binaryData[dataIndex++];
|
||||
|
||||
l = (byte) (b2 & 0x0f);
|
||||
k = (byte) (b1 & 0x03);
|
||||
|
||||
byte val1 = ((b1 & SIGN) == 0) ? (byte) (b1 >> 2) : (byte) ((b1) >> 2 ^ 0xc0);
|
||||
byte val2 = ((b2 & SIGN) == 0) ? (byte) (b2 >> 4) : (byte) ((b2) >> 4 ^ 0xf0);
|
||||
byte val3 = ((b3 & SIGN) == 0) ? (byte) (b3 >> 6) : (byte) ((b3) >> 6 ^ 0xfc);
|
||||
|
||||
encodedData[encodedIndex++] = lookUpBase64Alphabet[val1];
|
||||
encodedData[encodedIndex++] = lookUpBase64Alphabet[val2 | (k << 4)];
|
||||
encodedData[encodedIndex++] = lookUpBase64Alphabet[(l << 2) | val3];
|
||||
encodedData[encodedIndex++] = lookUpBase64Alphabet[b3 & 0x3f];
|
||||
}
|
||||
|
||||
// form integral number of 6-bit groups
|
||||
if (fewerThan24bits == EIGHTBIT) {
|
||||
b1 = binaryData[dataIndex];
|
||||
k = (byte) (b1 & 0x03);
|
||||
byte val1 = ((b1 & SIGN) == 0) ? (byte) (b1 >> 2) : (byte) ((b1) >> 2 ^ 0xc0);
|
||||
encodedData[encodedIndex++] = lookUpBase64Alphabet[val1];
|
||||
encodedData[encodedIndex++] = lookUpBase64Alphabet[k << 4];
|
||||
encodedData[encodedIndex++] = PAD;
|
||||
encodedData[encodedIndex++] = PAD;
|
||||
} else if (fewerThan24bits == SIXTEENBIT) {
|
||||
b1 = binaryData[dataIndex];
|
||||
b2 = binaryData[dataIndex + 1];
|
||||
l = (byte) (b2 & 0x0f);
|
||||
k = (byte) (b1 & 0x03);
|
||||
|
||||
byte val1 = ((b1 & SIGN) == 0) ? (byte) (b1 >> 2) : (byte) ((b1) >> 2 ^ 0xc0);
|
||||
byte val2 = ((b2 & SIGN) == 0) ? (byte) (b2 >> 4) : (byte) ((b2) >> 4 ^ 0xf0);
|
||||
|
||||
encodedData[encodedIndex++] = lookUpBase64Alphabet[val1];
|
||||
encodedData[encodedIndex++] = lookUpBase64Alphabet[val2 | (k << 4)];
|
||||
encodedData[encodedIndex++] = lookUpBase64Alphabet[l << 2];
|
||||
encodedData[encodedIndex++] = PAD;
|
||||
}
|
||||
return new String(encodedData);
|
||||
}
|
||||
|
||||
/**
|
||||
* Decodes Base64 data into octects
|
||||
*
|
||||
* @param encoded string containing Base64 data
|
||||
* @return Array containind decoded data.
|
||||
*/
|
||||
public static byte[] decode(String encoded) {
|
||||
if (encoded == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
char[] base64Data = encoded.toCharArray();
|
||||
// remove white spaces
|
||||
int len = removeWhiteSpace(base64Data);
|
||||
|
||||
if (len % FOURBYTE != 0) {
|
||||
return null;// should be divisible by four
|
||||
}
|
||||
|
||||
int numberQuadruple = (len / FOURBYTE);
|
||||
|
||||
if (numberQuadruple == 0) {
|
||||
return new byte[0];
|
||||
}
|
||||
|
||||
byte[] decodedData = null;
|
||||
byte b1 = 0, b2 = 0, b3 = 0, b4 = 0;
|
||||
char d1 = 0, d2 = 0, d3 = 0, d4 = 0;
|
||||
|
||||
int i = 0;
|
||||
int encodedIndex = 0;
|
||||
int dataIndex = 0;
|
||||
decodedData = new byte[(numberQuadruple) * 3];
|
||||
|
||||
for (; i < numberQuadruple - 1; i++) {
|
||||
|
||||
if (!isData((d1 = base64Data[dataIndex++])) || !isData((d2 = base64Data[dataIndex++]))
|
||||
|| !isData((d3 = base64Data[dataIndex++])) || !isData((d4 = base64Data[dataIndex++]))) {
|
||||
return null;
|
||||
} // if found "no data" just return null
|
||||
|
||||
b1 = base64Alphabet[d1];
|
||||
b2 = base64Alphabet[d2];
|
||||
b3 = base64Alphabet[d3];
|
||||
b4 = base64Alphabet[d4];
|
||||
|
||||
decodedData[encodedIndex++] = (byte) (b1 << 2 | b2 >> 4);
|
||||
decodedData[encodedIndex++] = (byte) (((b2 & 0xf) << 4) | ((b3 >> 2) & 0xf));
|
||||
decodedData[encodedIndex++] = (byte) (b3 << 6 | b4);
|
||||
}
|
||||
|
||||
if (!isData((d1 = base64Data[dataIndex++])) || !isData((d2 = base64Data[dataIndex++]))) {
|
||||
return null;// if found "no data" just return null
|
||||
}
|
||||
|
||||
b1 = base64Alphabet[d1];
|
||||
b2 = base64Alphabet[d2];
|
||||
|
||||
d3 = base64Data[dataIndex++];
|
||||
d4 = base64Data[dataIndex++];
|
||||
if (!isData((d3)) || !isData((d4))) {// Check if they are PAD characters
|
||||
if (isPad(d3) && isPad(d4)) {
|
||||
if ((b2 & 0xf) != 0)// last 4 bits should be zero
|
||||
{
|
||||
return null;
|
||||
}
|
||||
byte[] tmp = new byte[i * 3 + 1];
|
||||
System.arraycopy(decodedData, 0, tmp, 0, i * 3);
|
||||
tmp[encodedIndex] = (byte) (b1 << 2 | b2 >> 4);
|
||||
return tmp;
|
||||
} else if (!isPad(d3) && isPad(d4)) {
|
||||
b3 = base64Alphabet[d3];
|
||||
if ((b3 & 0x3) != 0)// last 2 bits should be zero
|
||||
{
|
||||
return null;
|
||||
}
|
||||
byte[] tmp = new byte[i * 3 + 2];
|
||||
System.arraycopy(decodedData, 0, tmp, 0, i * 3);
|
||||
tmp[encodedIndex++] = (byte) (b1 << 2 | b2 >> 4);
|
||||
tmp[encodedIndex] = (byte) (((b2 & 0xf) << 4) | ((b3 >> 2) & 0xf));
|
||||
return tmp;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} else { // No PAD e.g 3cQl
|
||||
b3 = base64Alphabet[d3];
|
||||
b4 = base64Alphabet[d4];
|
||||
decodedData[encodedIndex++] = (byte) (b1 << 2 | b2 >> 4);
|
||||
decodedData[encodedIndex++] = (byte) (((b2 & 0xf) << 4) | ((b3 >> 2) & 0xf));
|
||||
decodedData[encodedIndex++] = (byte) (b3 << 6 | b4);
|
||||
|
||||
}
|
||||
return decodedData;
|
||||
}
|
||||
|
||||
/**
|
||||
* remove WhiteSpace from MIME containing encoded Base64 data.
|
||||
*
|
||||
* @param data the byte array of base64 data (with WS)
|
||||
* @return the new length
|
||||
*/
|
||||
private static int removeWhiteSpace(char[] data) {
|
||||
if (data == null) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
// count characters that's not whitespace
|
||||
int newSize = 0;
|
||||
int len = data.length;
|
||||
for (int i = 0; i < len; i++) {
|
||||
if (!isWhiteSpace(data[i])) {
|
||||
data[newSize++] = data[i];
|
||||
}
|
||||
}
|
||||
return newSize;
|
||||
}
|
||||
}
|
||||
97
src/main/java/com/xiang/common/utils/Base64ImageScaler.java
Normal file
97
src/main/java/com/xiang/common/utils/Base64ImageScaler.java
Normal file
File diff suppressed because one or more lines are too long
615
src/main/java/com/xiang/common/utils/DateUtils.java
Normal file
615
src/main/java/com/xiang/common/utils/DateUtils.java
Normal file
@@ -0,0 +1,615 @@
|
||||
package com.xiang.common.utils;
|
||||
|
||||
|
||||
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
||||
import com.xiang.common.enums.DateFormatEnum;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import javax.xml.datatype.DatatypeConfigurationException;
|
||||
import javax.xml.datatype.DatatypeFactory;
|
||||
import javax.xml.datatype.XMLGregorianCalendar;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.DayOfWeek;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
* @author clover
|
||||
* @Date 2020/9/15 09:31
|
||||
*/
|
||||
public class DateUtils {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(DateUtils.class);
|
||||
|
||||
public static final String ENUM_FORMAT = "yyyy-MM-dd HH:mm:ss";
|
||||
public static final String ASCM_FORMAT = "yyyy-MM-dd'T'HH:mm:ss'Z'";
|
||||
public static final String ENUM_FORMAT_YMD = "yyyy-MM-dd";
|
||||
public static final String ENUM_FORMAT_YMD_1 = "yyyyMMdd";
|
||||
public static final String ENUM_FORMAT_YMDS = "yyyy-MM-dd HH:mm:ss.S";
|
||||
public static final String ENUM_FORMAT_SLASH = "yyyy/MM/dd HH:mm:ss";
|
||||
public static final String ENUM_FORMAT_YMDS_SLASH = "yyyy/MM/dd HH:mm:ss.S";
|
||||
public static final String LEVEL_DAY = "day"; // 粒度级别
|
||||
public static final String LEVEL_HOUR = "hour";
|
||||
public static final String LEVEL_MINUTE = "minute";
|
||||
public static final String LEVEL_SECOND = "second";
|
||||
private static Map<String, String> mapSign = new HashMap<>();
|
||||
private static ThreadLocal<Map<String, SimpleDateFormat>> threadLocalDateFormat = new ThreadLocal<>();
|
||||
|
||||
/**
|
||||
* 初始化DateFormat标志位.
|
||||
*/
|
||||
private static void initMapSign() {
|
||||
if (mapSign.isEmpty()) {
|
||||
mapSign.put("上午|下午", "a");
|
||||
mapSign.put("星期[一二三四五六日天七]", "E");
|
||||
mapSign.put("CST", "z");
|
||||
mapSign.put("公元[前]?", "G");
|
||||
}
|
||||
}
|
||||
|
||||
public static int getWeekDay() {
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
return calendar.get(Calendar.DAY_OF_WEEK);
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
Date date = DateUtils.addDate(new Date(), 6);
|
||||
String day = DateUtils.format(date, DateUtils.ENUM_FORMAT_YMD_1);
|
||||
System.out.println(day);
|
||||
System.out.println(getWeekDay(day));
|
||||
}
|
||||
|
||||
public static String getWeekDay(String bookTime) {//20250101
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
|
||||
// 解析输入日期
|
||||
LocalDate date = LocalDate.parse(bookTime, formatter);
|
||||
// 获取星期几
|
||||
DayOfWeek dayOfWeek = date.getDayOfWeek();
|
||||
// 将星期几转换为中文
|
||||
return convertToChinese(dayOfWeek);
|
||||
}
|
||||
|
||||
public static String getWeekDayTwo(String bookTime) {//20250101
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
||||
// 解析输入日期
|
||||
LocalDate date = LocalDate.parse(bookTime, formatter);
|
||||
// 获取星期几
|
||||
DayOfWeek dayOfWeek = date.getDayOfWeek();
|
||||
// 将星期几转换为中文
|
||||
return convertToChinese(dayOfWeek);
|
||||
}
|
||||
|
||||
public static String getWeekDay(LocalDate date) {
|
||||
DayOfWeek dayOfWeek = date.getDayOfWeek();
|
||||
return convertToChinese(dayOfWeek);
|
||||
}
|
||||
|
||||
private static String convertToChinese(DayOfWeek dayOfWeek) {
|
||||
switch (dayOfWeek) {
|
||||
case MONDAY:
|
||||
return "星期一";
|
||||
case TUESDAY:
|
||||
return "星期二";
|
||||
case WEDNESDAY:
|
||||
return "星期三";
|
||||
case THURSDAY:
|
||||
return "星期四";
|
||||
case FRIDAY:
|
||||
return "星期五";
|
||||
case SATURDAY:
|
||||
return "星期六";
|
||||
case SUNDAY:
|
||||
return "星期日";
|
||||
default:
|
||||
return "未知";
|
||||
}
|
||||
}
|
||||
|
||||
public static String getBookTime() {
|
||||
Date date = DateUtils.addDate(new Date(), 1);
|
||||
return DateUtils.formatYMd(date);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前时间的毫秒数
|
||||
*
|
||||
* @return 当前时间
|
||||
*/
|
||||
public static long getTimeInMillis() {
|
||||
Date now = new Date();
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.setTime(now);
|
||||
return calendar.getTimeInMillis();
|
||||
}
|
||||
|
||||
/**
|
||||
* 常规日期格式yyyy-MM-dd HH:mm:ss.
|
||||
*
|
||||
* @param date date
|
||||
* @return time
|
||||
*/
|
||||
public static String format(Date date) {
|
||||
return getDateFormat(ENUM_FORMAT).format(date);
|
||||
}
|
||||
|
||||
public static String format(Long timestamp) {
|
||||
return getDateFormat(ENUM_FORMAT).format(timestamp);
|
||||
}
|
||||
|
||||
/**
|
||||
* 常规日期格式yyyy-MM-dd.
|
||||
*
|
||||
* @param date date
|
||||
* @return time
|
||||
*/
|
||||
public static String formatYMd(Date date) {
|
||||
return getDateFormat(ENUM_FORMAT_YMD).format(date);
|
||||
}
|
||||
|
||||
/**
|
||||
* 格式化时间.
|
||||
*
|
||||
* @param date date
|
||||
* @param dateFormat dateFormat
|
||||
* @return time
|
||||
*/
|
||||
public static String format(Date date, String dateFormat) {
|
||||
if (null == date) {
|
||||
return null;
|
||||
}
|
||||
return getDateFormat(dateFormat).format(date);
|
||||
}
|
||||
|
||||
/**
|
||||
* parse时间(yyyy-MM-dd HH:mm:ss).
|
||||
*
|
||||
* @param source source
|
||||
* @return Date
|
||||
* @throws ParseException ParseException
|
||||
*/
|
||||
public static Date parse(String source) throws ParseException {
|
||||
return getDateFormat(DateFormatEnum.COMMON1.getValue()).parse(source);
|
||||
}
|
||||
|
||||
/**
|
||||
* parse时间(yyyy-MM-dd HH:mm:ss).
|
||||
*
|
||||
* @param source source
|
||||
* @return Date
|
||||
* @throws ParseException ParseException
|
||||
*/
|
||||
public static Date parseAscm(String source) throws ParseException {
|
||||
return getDateFormat(ASCM_FORMAT).parse(source);
|
||||
}
|
||||
|
||||
/**
|
||||
* parse时间(yyyy-MM-dd).
|
||||
*
|
||||
* @param source source
|
||||
* @return Date
|
||||
* @throws ParseException ParseException
|
||||
*/
|
||||
public static Date parseYMd(String source) throws ParseException {
|
||||
return getDateFormat(ENUM_FORMAT_YMD).parse(source);
|
||||
}
|
||||
|
||||
/**
|
||||
* 格式化时间.
|
||||
*
|
||||
* @param time time
|
||||
* @param dateFormat dateFormat
|
||||
* @return Date
|
||||
* @throws ParseException ParseException
|
||||
*/
|
||||
public static Date parse(String time, String dateFormat) throws ParseException {
|
||||
if (isNullOrEmpty(time) || isNullOrEmpty(dateFormat)) {
|
||||
return null;
|
||||
}
|
||||
return getDateFormat(dateFormat).parse(time);
|
||||
}
|
||||
|
||||
public static Date parse(String time, String dateFormat, String timeZone) throws ParseException {
|
||||
if (isNullOrEmpty(time) || isNullOrEmpty(dateFormat)) {
|
||||
return null;
|
||||
}
|
||||
return getDateFormat(dateFormat, timeZone).parse(time);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定时间格式的 SimpleDateFormat.
|
||||
*
|
||||
* @param pattern 时间格式
|
||||
* @return SimpleDateFormat
|
||||
*/
|
||||
public static SimpleDateFormat getDateFormat(String pattern) {
|
||||
Map<String, SimpleDateFormat> dateFormatMap = threadLocalDateFormat.get();
|
||||
if (dateFormatMap == null) {
|
||||
dateFormatMap = new HashMap<>();
|
||||
}
|
||||
SimpleDateFormat simpleDateFormat = dateFormatMap.get(pattern);
|
||||
if (simpleDateFormat == null) {
|
||||
simpleDateFormat = new SimpleDateFormat(pattern, Locale.getDefault());
|
||||
dateFormatMap.put(pattern, simpleDateFormat);
|
||||
threadLocalDateFormat.set(dateFormatMap);
|
||||
}
|
||||
return simpleDateFormat;
|
||||
}
|
||||
|
||||
private static SimpleDateFormat getDateFormat(String pattern, String timeZone) {
|
||||
SimpleDateFormat dateFormat = getDateFormat(pattern);
|
||||
if (StringUtils.isNotBlank(timeZone)) {
|
||||
dateFormat.setTimeZone(TimeZone.getTimeZone(timeZone));
|
||||
}
|
||||
return dateFormat;
|
||||
}
|
||||
|
||||
/**
|
||||
* 自动解析时间格式并parse(时间格式为yyyyMMddHHmmssS,默认24小时制、前包含且必须包含yyyyMMdd).
|
||||
*
|
||||
* @param time time
|
||||
* @return Date
|
||||
* @throws ParseException ParseException
|
||||
*/
|
||||
public static Date parseAuto(String time) throws ParseException {
|
||||
if (isNullOrEmpty(time) || time.length() < 8) {
|
||||
return null;
|
||||
}
|
||||
initMapSign();
|
||||
time = time.trim();
|
||||
String formatPattern = "";
|
||||
if (time.matches("[\\d]+")) { // 纯数字
|
||||
String all = "yyyyMMddHHmmssSSS";
|
||||
if (time.length() > all.length()) { // 超长截取
|
||||
time = time.substring(0, all.length());
|
||||
}
|
||||
formatPattern = all.substring(0, time.length());
|
||||
} else {
|
||||
char next = 'y';
|
||||
String idNext = "yMdHmsS";
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
for (char var : time.toCharArray()) {
|
||||
if (String.valueOf(var).matches("[0-9]")) {
|
||||
buffer.append(next);
|
||||
} else if ("T".equals(String.valueOf(var))) {
|
||||
buffer.append("'").append(var).append("'");
|
||||
} else {
|
||||
buffer.append(var);
|
||||
next = idNext.charAt(Math.min(idNext.indexOf(next) + 1, idNext.length() - 1));
|
||||
}
|
||||
}
|
||||
formatPattern = buffer.toString();
|
||||
}
|
||||
for (Map.Entry<String, String> entry : mapSign.entrySet()) {
|
||||
formatPattern = formatPattern.replaceAll(entry.getKey(), entry.getValue());
|
||||
}
|
||||
return parse(time, formatPattern);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否为空或"".
|
||||
*
|
||||
* @param param param
|
||||
* @return boolean
|
||||
*/
|
||||
private static boolean isNullOrEmpty(String param) {
|
||||
return null == param || "".equals(param.trim());
|
||||
}
|
||||
|
||||
/**
|
||||
* 日期增加num天.
|
||||
*
|
||||
* @param date date
|
||||
* @param num 加减天数
|
||||
* @return Date
|
||||
*/
|
||||
public static Date addDate(Date date, int num) {
|
||||
return addDate(date, Calendar.DATE, num);
|
||||
}
|
||||
|
||||
/**
|
||||
* 时间增加.
|
||||
*
|
||||
* @param date date
|
||||
* @param calendar 加减级别Calendar
|
||||
* @param num 加减天数
|
||||
* @return Date
|
||||
*/
|
||||
public static Date addDate(Date date, int calendar, int num) {
|
||||
if (null == date || 0 == num) {
|
||||
return date;
|
||||
}
|
||||
Calendar cal = Calendar.getInstance();
|
||||
cal.setTime(date);
|
||||
cal.add(calendar, num);
|
||||
return cal.getTime();
|
||||
}
|
||||
|
||||
/**
|
||||
* 保留日期到某一级别(天、时、分、秒...).
|
||||
*
|
||||
* @param date date
|
||||
* @param level 保留级别,null保留到day
|
||||
* @return date
|
||||
*/
|
||||
public static Date setDate(Date date, String level) {
|
||||
if (null == date || null == level) {
|
||||
return date;
|
||||
}
|
||||
Calendar cal = Calendar.getInstance();
|
||||
cal.setTime(date);
|
||||
switch (level) {
|
||||
case LEVEL_DAY: // 保留到 Day
|
||||
// cal.set(Calendar.HOUR, 0); // 12小时制
|
||||
cal.set(Calendar.HOUR_OF_DAY, 0); // 24小时制
|
||||
cal.set(Calendar.MINUTE, 0);
|
||||
cal.set(Calendar.SECOND, 0);
|
||||
break;
|
||||
case LEVEL_HOUR: // 保留到 Hour
|
||||
cal.set(Calendar.MINUTE, 0);
|
||||
cal.set(Calendar.SECOND, 0);
|
||||
break;
|
||||
case LEVEL_MINUTE: // 保留到 MINUTE
|
||||
cal.set(Calendar.SECOND, 0);
|
||||
break;
|
||||
case LEVEL_SECOND: // 保留到 SECOND
|
||||
cal.set(Calendar.MILLISECOND, 0);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return cal.getTime();
|
||||
}
|
||||
|
||||
/**
|
||||
* 比较两个日期的间隔(时间差绝对值,向下取整)(day、hour、minute).
|
||||
*
|
||||
* @param date1 date1
|
||||
* @param date2 date2
|
||||
* @param level 比较级别
|
||||
* @return int 无对应时间间隔级别
|
||||
*/
|
||||
public static Integer getDateInterval(Date date1, Date date2, String level) {
|
||||
Double num = dateInterval(date1, date2, level);
|
||||
if (null == num) {
|
||||
return null;
|
||||
}
|
||||
return (int) Math.floor(num);
|
||||
}
|
||||
|
||||
/**
|
||||
* 比较两个日期的间隔(时间差绝对值,向上取整)(day、hour、minute).
|
||||
*
|
||||
* @param date1 date1
|
||||
* @param date2 date2
|
||||
* @param level 比较级别
|
||||
* @return int 无对应时间间隔级别
|
||||
*/
|
||||
public static Integer getDateIntervalCeil(Date date1, Date date2, String level) {
|
||||
Double num = dateInterval(date1, date2, level);
|
||||
if (null == num) {
|
||||
return null;
|
||||
}
|
||||
return (int) Math.ceil(num);
|
||||
}
|
||||
|
||||
/**
|
||||
* 比较两个日期的间隔(day、hour、minute).
|
||||
*
|
||||
* @param date1 date1
|
||||
* @param date2 date2
|
||||
* @param level 比较级别
|
||||
* @return int 无对应时间间隔级别
|
||||
*/
|
||||
private static Double dateInterval(Date date1, Date date2, String level) {
|
||||
Double time = (double) (date1.getTime() - date2.getTime());
|
||||
if (time < 0) {
|
||||
time = time * -1;
|
||||
}
|
||||
Double num = null;
|
||||
switch (level) {
|
||||
case LEVEL_DAY: // 天
|
||||
num = (Double) (time / TimeUnit.DAYS.toMillis(1));
|
||||
break;
|
||||
case LEVEL_HOUR: // 小时
|
||||
num = (Double) (time / TimeUnit.HOURS.toMillis(1));
|
||||
break;
|
||||
case LEVEL_MINUTE: // 分钟
|
||||
num = (Double) (time / TimeUnit.MINUTES.toMillis(1));
|
||||
break;
|
||||
case LEVEL_SECOND: // 秒
|
||||
num = (Double) (time / TimeUnit.SECONDS.toMillis(1));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return num;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前日期指定时间.
|
||||
*
|
||||
* @param date date
|
||||
* @param time time
|
||||
* @return date
|
||||
* @throws ParseException ParseException
|
||||
*/
|
||||
public static Date dateToHms(Date date, String time) throws ParseException {
|
||||
if (null == date || isNullOrEmpty(time)) {
|
||||
return date;
|
||||
}
|
||||
StringBuilder timeBuf = new StringBuilder();
|
||||
String dateStr = formatYMd(date);
|
||||
timeBuf.append(dateStr).append(" ");
|
||||
time = time.trim();
|
||||
while (!time.matches(".*\\d")) {
|
||||
time = time.substring(0, time.length() - 1);
|
||||
}
|
||||
timeBuf.append(time);
|
||||
if (time.matches("\\d{1,2}:\\d{1,2}:\\d{1,2}")) {
|
||||
timeBuf.append(".0");
|
||||
} else if (time.matches("\\d{1,2}:\\d{1,2}")) {
|
||||
timeBuf.append(":00.0");
|
||||
} else if (time.matches("\\d{1,2}")) {
|
||||
timeBuf.append(":00:00.0");
|
||||
}
|
||||
return parse(timeBuf.toString(), ENUM_FORMAT_YMDS);
|
||||
}
|
||||
|
||||
/**
|
||||
* 取N天之前的时间
|
||||
*
|
||||
* @param beforeDays
|
||||
* @return
|
||||
*/
|
||||
public static Date getDateBefore(int beforeDays) {
|
||||
Calendar now = Calendar.getInstance();
|
||||
now.setTime(new Date());
|
||||
now.set(Calendar.DATE, now.get(Calendar.DATE) - beforeDays);
|
||||
return now.getTime();
|
||||
}
|
||||
|
||||
/**
|
||||
* 将Date类转换为XMLGregorianCalendar.
|
||||
*
|
||||
* @param date date
|
||||
* @return XMLGregorianCalendar
|
||||
* @throws DatatypeConfigurationException DatatypeConfigurationException
|
||||
*/
|
||||
public static XMLGregorianCalendar dateToXmlDate(Date date) throws DatatypeConfigurationException {
|
||||
XMLGregorianCalendar dateType = null;
|
||||
if (null != date) {
|
||||
Calendar cal = Calendar.getInstance();
|
||||
cal.setTime(date);
|
||||
DatatypeFactory dtf = DatatypeFactory.newInstance();
|
||||
dateType = dtf.newXMLGregorianCalendar();
|
||||
if (null != dateType) {
|
||||
dateType.setYear(cal.get(Calendar.YEAR));
|
||||
// 由于Calendar.MONTH取值范围为0~11,需要加1
|
||||
dateType.setMonth(cal.get(Calendar.MONTH) + 1);
|
||||
dateType.setDay(cal.get(Calendar.DAY_OF_MONTH));
|
||||
dateType.setHour(cal.get(Calendar.HOUR_OF_DAY));
|
||||
dateType.setMinute(cal.get(Calendar.MINUTE));
|
||||
dateType.setSecond(cal.get(Calendar.SECOND));
|
||||
}
|
||||
}
|
||||
return dateType;
|
||||
}
|
||||
|
||||
/**
|
||||
* 清理ThreadLocal(每次线程结束都应执行此操作).
|
||||
*/
|
||||
public static void clearThreadLocal() {
|
||||
threadLocalDateFormat.remove();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取前一天的23点59分59秒,避免
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static String getYesterdayForSurvey() {
|
||||
SimpleDateFormat dateFormat = getDateFormat(DateFormatEnum.COMMON1.getValue());
|
||||
Calendar c = Calendar.getInstance();
|
||||
c.add(Calendar.DATE, -1);
|
||||
c.set(Calendar.HOUR_OF_DAY, 23);
|
||||
c.set(Calendar.MINUTE, 59);
|
||||
c.set(Calendar.SECOND, 59);
|
||||
return dateFormat.format(c.getTime());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取前一天时间yyyy-mm-dd
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static String getYesterdayForYMD() {
|
||||
SimpleDateFormat dateFormat = getDateFormat(DateFormatEnum.ENUM_FORMAT_YMD.getValue());
|
||||
Calendar c = Calendar.getInstance();
|
||||
c.add(Calendar.DATE, -1);
|
||||
return dateFormat.format(c.getTime());
|
||||
}
|
||||
|
||||
public static Date getYesterday() {
|
||||
Calendar c = Calendar.getInstance();
|
||||
c.add(Calendar.DATE, -1);
|
||||
c.set(Calendar.HOUR_OF_DAY, 23);
|
||||
c.set(Calendar.MINUTE, 59);
|
||||
c.set(Calendar.SECOND, 59);
|
||||
return c.getTime();
|
||||
}
|
||||
|
||||
public static String getLastDayMonthStr() {
|
||||
LocalDate now = LocalDate.now();
|
||||
LocalDate lastDay = now.minusDays(1L);
|
||||
return lastDay.format(DateTimeFormatter.ofPattern("yyyyMM"));
|
||||
}
|
||||
|
||||
private static final ConcurrentHashMap<String, Date> modifiedDate = new ConcurrentHashMap<>();
|
||||
|
||||
public static Date getModifiedDate(String key) {
|
||||
return modifiedDate.get(key);
|
||||
}
|
||||
|
||||
public static Date setModifiedDate(String key, Date date) {
|
||||
return modifiedDate.put(key, date);
|
||||
}
|
||||
|
||||
public static LocalDateTime getDateTimeFromStr(String dateStr) {
|
||||
return getDateTimeFromStr(dateStr, "yyyy-MM-dd HH:mm:ss");
|
||||
}
|
||||
|
||||
public static LocalDateTime getDateTimeFromStr(String dateStr, String pattern) {
|
||||
return LocalDateTime.parse(dateStr, DateTimeFormatter.ofPattern(pattern));
|
||||
}
|
||||
|
||||
public static LocalDate getDateFromStr(String dataStr) {
|
||||
return getDateFromStr(dataStr, "yyyy-MM-dd");
|
||||
}
|
||||
|
||||
public static LocalDate getDateFromStr(String dataStr, String pattern) {
|
||||
return LocalDate.parse(dataStr, DateTimeFormatter.ofPattern(pattern));
|
||||
}
|
||||
|
||||
public static String getDateFromDate(LocalDate date) {
|
||||
return getDateFromDate(date, "yyyy-MM-dd");
|
||||
}
|
||||
|
||||
public static String getDateFromDate(LocalDate date, String pattern) {
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
|
||||
return date.format(formatter);
|
||||
}
|
||||
|
||||
public static String getDateTimeFromDateTime(LocalDateTime dateTime) {
|
||||
return getDateTimeFromDateTime(dateTime, "yyyy-MM-dd HH:mm:ss");
|
||||
}
|
||||
|
||||
public static String getDateTimeFromDateTime(LocalDateTime dateTime, String pattern) {
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
|
||||
return dateTime.format(formatter);
|
||||
}
|
||||
|
||||
public static LocalDateTime getTimeFromStr(String date, String time) {
|
||||
String dateTimeStr = date + " " + time;
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
||||
return LocalDateTime.parse(dateTimeStr, formatter);
|
||||
}
|
||||
|
||||
public static Boolean validWeekTime() {
|
||||
if (!Objects.equals(LocalDateTime.now().getDayOfWeek(), DayOfWeek.SATURDAY) && !Objects.equals(LocalDateTime.now().getDayOfWeek(), DayOfWeek.SUNDAY)) {
|
||||
LocalTime now = LocalTime.now();
|
||||
boolean inMorning = now.isAfter(LocalTime.of(9, 29)) && now.isBefore(LocalTime.of(11, 31));
|
||||
boolean inAfternoon = now.isAfter(LocalTime.of(12, 59)) && now.isBefore(LocalTime.of(15, 1));
|
||||
return !inAfternoon && !inMorning ? true : false;
|
||||
} else {
|
||||
logger.info("当前时间为:{}", LocalDateTime.now());
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -73,7 +73,7 @@ public class HttpService {
|
||||
CloseableHttpResponse response = null;
|
||||
String result = "";
|
||||
try {
|
||||
log.info("HTTP请求,请求地址===>{}, 请求头===>{}, 请求参数===>{}", url, JSON.toJSONString(header), jsonParams);
|
||||
log.debug("HTTP请求,请求地址===>{}, 请求头===>{}, 请求参数===>{}", url, JSON.toJSONString(header), jsonParams);
|
||||
HttpPost httpPost = new HttpPost(url);
|
||||
httpPost.addHeader("Content-Type", "application/json");
|
||||
// 创建请求内容
|
||||
@@ -88,7 +88,7 @@ public class HttpService {
|
||||
}
|
||||
response = httpClient.execute(httpPost);
|
||||
result = EntityUtils.toString(response.getEntity(), "utf-8");
|
||||
log.info("【POST请求】 请求地址===>{}, 响应结果==={}", url, result);
|
||||
log.debug("【POST请求】 请求地址===>{}, 响应结果==={}", url, result);
|
||||
} catch (Exception e) {
|
||||
log.error("doPost异常", e);
|
||||
} finally {
|
||||
@@ -117,10 +117,10 @@ public class HttpService {
|
||||
httpGet.setHeader(entry.getKey(), entry.getValue());
|
||||
}
|
||||
}
|
||||
log.info("doGet请求:请求头:{},请求地址:{}", header, url + request);
|
||||
log.debug("doGet请求:请求头:{},请求地址:{}", header, url + request);
|
||||
response = httpClient.execute(httpGet);
|
||||
result = EntityUtils.toString(response.getEntity(), "utf-8");
|
||||
log.info("【GET请求】, 请求地址===>{}, 响应结果===>{}", url + request, result);
|
||||
log.debug("【GET请求】, 请求地址===>{}, 响应结果===>{}", url + request, result);
|
||||
} catch (Exception e) {
|
||||
log.error("doGet异常:", e);
|
||||
} finally {
|
||||
|
||||
68
src/main/java/com/xiang/common/utils/ImageUtils.java
Normal file
68
src/main/java/com/xiang/common/utils/ImageUtils.java
Normal file
@@ -0,0 +1,68 @@
|
||||
package com.xiang.common.utils;
|
||||
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.Base64;
|
||||
|
||||
/**
|
||||
* @Author: xiang
|
||||
* @Date: 2026-05-08 08:56
|
||||
*/
|
||||
public class ImageUtils {
|
||||
/**
|
||||
* 将 Base64 图片写入文件
|
||||
* @param base64String Base64 编码的图片字符串
|
||||
* @param outputPath 输出文件路径
|
||||
*/
|
||||
public static void saveBase64Image(String base64String, String outputPath) {
|
||||
try {
|
||||
// 处理可能包含前缀的 Base64(如 data:image/png;base64,)
|
||||
String base64Data = extractBase64Data(base64String);
|
||||
|
||||
// 解码 Base64
|
||||
byte[] imageBytes = Base64.getDecoder().decode(base64Data);
|
||||
|
||||
// 写入文件
|
||||
try (FileOutputStream fos = new FileOutputStream(outputPath)) {
|
||||
fos.write(imageBytes);
|
||||
}
|
||||
|
||||
System.out.println("图片已保存至: " + outputPath);
|
||||
|
||||
} catch (IllegalArgumentException e) {
|
||||
System.err.println("Base64 解码失败: " + e.getMessage());
|
||||
} catch (IOException e) {
|
||||
System.err.println("文件写入失败: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 提取纯 Base64 数据(去除前缀)
|
||||
*/
|
||||
private static String extractBase64Data(String base64String) {
|
||||
if (base64String == null || base64String.isEmpty()) {
|
||||
throw new IllegalArgumentException("Base64 字符串不能为空");
|
||||
}
|
||||
|
||||
// 检查是否包含 data:image/xxx;base64, 前缀
|
||||
if (base64String.contains(",")) {
|
||||
return base64String.split(",", 2)[1];
|
||||
}
|
||||
|
||||
return base64String;
|
||||
}
|
||||
|
||||
/**
|
||||
* 从 Base64 字符串中获取图片类型
|
||||
*/
|
||||
public static String getImageType(String base64String) {
|
||||
if (base64String.startsWith("data:image/")) {
|
||||
String type = base64String.substring(11, base64String.indexOf(";"));
|
||||
return type; // 返回 png, jpeg, gif 等
|
||||
}
|
||||
return "png"; // 默认类型
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
}
|
||||
}
|
||||
18
src/main/java/com/xiang/common/utils/JsonUtils.java
Normal file
18
src/main/java/com/xiang/common/utils/JsonUtils.java
Normal file
@@ -0,0 +1,18 @@
|
||||
package com.xiang.common.utils;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.serializer.SerializerFeature;
|
||||
|
||||
/**
|
||||
* @Author: xiang
|
||||
* @Date: 2025-07-25 15:58
|
||||
*/
|
||||
public class JsonUtils {
|
||||
public static String toJsonString(Object obj) {
|
||||
return JSON.toJSONString(obj, SerializerFeature.WriteMapNullValue);
|
||||
}
|
||||
|
||||
public static <T> T parse(String json, Class<T> clazz) {
|
||||
return JSON.parseObject(json, clazz);
|
||||
}
|
||||
}
|
||||
169
src/main/java/com/xiang/common/utils/OkHttpUtil.java
Normal file
169
src/main/java/com/xiang/common/utils/OkHttpUtil.java
Normal file
@@ -0,0 +1,169 @@
|
||||
package com.xiang.common.utils;
|
||||
|
||||
import cn.hutool.http.HttpRequest;
|
||||
import com.xiang.common.handler.CallbackHandler;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import okhttp3.*;
|
||||
|
||||
import javax.net.ssl.*;
|
||||
import java.io.IOException;
|
||||
import java.net.InetSocketAddress;
|
||||
import java.net.Proxy;
|
||||
import java.security.KeyManagementException;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.security.cert.CertificateException;
|
||||
import java.security.cert.X509Certificate;
|
||||
import java.util.Arrays;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
@Slf4j
|
||||
public class OkHttpUtil {
|
||||
|
||||
private static final String secretId = "o82qrnb4z0s8y6j9qvyw";
|
||||
private static final String signature = "p93f1o4fn6zht9sa6aryu9wpfp2el8dm";
|
||||
private static final String urlString = "https://dps.kdlapi.com/api/getdps/?secret_id=" + secretId + "&signature=" + signature + "&num=1&format=text&sep=1";
|
||||
// 用户名密码认证(私密代理/独享代理)
|
||||
static final String username = "d2859987908";
|
||||
static final String password = "1auxzpkz";
|
||||
// 单例实例
|
||||
private static final OkHttpUtil INSTANCE;
|
||||
|
||||
static {
|
||||
try {
|
||||
INSTANCE = new OkHttpUtil();
|
||||
} catch (NoSuchAlgorithmException e) {
|
||||
throw new RuntimeException(e);
|
||||
} catch (KeyManagementException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
// OkHttpClient 实例
|
||||
private final OkHttpClient client;
|
||||
|
||||
// 私有构造方法,初始化 OkHttpClient
|
||||
private OkHttpUtil() throws NoSuchAlgorithmException, KeyManagementException {
|
||||
// 创建一个信任所有证书的TrustManager
|
||||
final TrustManager[] trustAllCerts = new TrustManager[]{
|
||||
new X509TrustManager() {
|
||||
@Override
|
||||
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
|
||||
}
|
||||
|
||||
@Override
|
||||
public X509Certificate[] getAcceptedIssuers() {
|
||||
return new X509Certificate[]{};
|
||||
}
|
||||
}
|
||||
};
|
||||
// 初始化SSLContext
|
||||
final SSLContext sslContext = SSLContext.getInstance("TLS");
|
||||
sslContext.init(null, trustAllCerts, new java.security.SecureRandom());
|
||||
|
||||
// 创建一个信任所有主机名的HostnameVerifier
|
||||
HostnameVerifier allHostsValid = new HostnameVerifier() {
|
||||
@Override
|
||||
public boolean verify(String hostname, SSLSession session) {
|
||||
return true;
|
||||
}
|
||||
};
|
||||
// 2. 配置连接池(关键参数)
|
||||
ConnectionPool pool = new ConnectionPool(
|
||||
5, // 最大空闲连接数(根据服务器承受能力调整)
|
||||
5, // 存活时间(分钟)
|
||||
TimeUnit.MINUTES
|
||||
);
|
||||
|
||||
client = new OkHttpClient.Builder()
|
||||
.sslSocketFactory(sslContext.getSocketFactory(), (X509TrustManager) trustAllCerts[0])
|
||||
.hostnameVerifier(allHostsValid)
|
||||
.connectionPool(pool)
|
||||
.connectTimeout(60, TimeUnit.SECONDS) // 连接超时时间
|
||||
.readTimeout(60, TimeUnit.SECONDS) // 读取超时时间
|
||||
.writeTimeout(60, TimeUnit.SECONDS) // 写入超时时间
|
||||
.retryOnConnectionFailure(true) // 自动重试
|
||||
.protocols(Arrays.asList(Protocol.HTTP_2, Protocol.HTTP_1_1)) // 协议优先级
|
||||
.build();
|
||||
}
|
||||
|
||||
public OkHttpUtil(OkHttpClient client){
|
||||
this.client = client;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// 获取单例实例
|
||||
public static OkHttpUtil getInstance() {
|
||||
return INSTANCE;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 发送 GET 请求
|
||||
*
|
||||
* @param url 请求URL
|
||||
* @param headers 请求头(可以为空)
|
||||
* @return 响应结果
|
||||
* @throws IOException 请求失败时抛出异常
|
||||
*/
|
||||
public String get(String url, Map<String, String> headers) throws IOException {
|
||||
Request.Builder builder = new Request.Builder().url(url);
|
||||
|
||||
// 添加请求头
|
||||
if (headers != null) {
|
||||
for (Map.Entry<String, String> entry : headers.entrySet()) {
|
||||
builder.addHeader(entry.getKey(), entry.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
Request request = builder.build();
|
||||
try (Response response = client.newCall(request).execute()) {
|
||||
String string = response.body().string();
|
||||
if (!response.isSuccessful()) {
|
||||
log.error("{}okhttp请求失败: {}-->", url, string);
|
||||
}
|
||||
return string;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送 POST 请求(JSON 格式)
|
||||
*
|
||||
* @param url 请求URL
|
||||
* @param headers 请求头(可以为空)
|
||||
* @param json JSON 请求体
|
||||
* @return 响应结果
|
||||
* @throws IOException 请求失败时抛出异常
|
||||
*/
|
||||
public String postJson(String url, Map<String, String> headers, String json) throws IOException {
|
||||
RequestBody body = RequestBody.create(json, MediaType.parse("application/json; charset=utf-8"));
|
||||
Request.Builder builder = new Request.Builder()
|
||||
.url(url)
|
||||
.post(body)
|
||||
.addHeader("User-Agent", "BookingClient/1.0");
|
||||
|
||||
// 添加请求头
|
||||
if (headers != null) {
|
||||
for (Map.Entry<String, String> entry : headers.entrySet()) {
|
||||
builder.addHeader(entry.getKey(), entry.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
Request request = builder.build();
|
||||
|
||||
try (Response response = client.newCall(request).execute()) {
|
||||
String string = response.body().string();
|
||||
if (!response.isSuccessful()) {
|
||||
log.error("{}okhttp请求失败: {}-->", url, string);
|
||||
return string;
|
||||
}
|
||||
return string;
|
||||
}
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user