feat:用户token更新
This commit is contained in:
@@ -22,4 +22,9 @@ public class UrlConstant {
|
|||||||
*/
|
*/
|
||||||
public final static String ADD_SUBSCRIBE = GNTYZX_BASE_URL + "/GYM-JN/multi/Subscribe/addSubscribe";
|
public final static String ADD_SUBSCRIBE = GNTYZX_BASE_URL + "/GYM-JN/multi/Subscribe/addSubscribe";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 心跳监测接口
|
||||||
|
*/
|
||||||
|
public final static String HEALTH_DECLARATION = GNTYZX_BASE_URL + "/GYM-JN//busi/healthDeclaration/addUserPrivacy";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package com.xiang.xservice.application.script.jntyzx.controller;
|
|||||||
import com.xiang.xservice.application.script.jntyzx.entity.pojo.VenueInfoDO;
|
import com.xiang.xservice.application.script.jntyzx.entity.pojo.VenueInfoDO;
|
||||||
import com.xiang.xservice.application.script.jntyzx.entity.resp.query.SitePositionList;
|
import com.xiang.xservice.application.script.jntyzx.entity.resp.query.SitePositionList;
|
||||||
import com.xiang.xservice.application.script.jntyzx.service.IVenueService;
|
import com.xiang.xservice.application.script.jntyzx.service.IVenueService;
|
||||||
import com.xiang.xservice.application.script.jntyzx.service.IVenueServiceHttp;
|
import com.xiang.xservice.application.script.jntyzx.service.IJntyzxHttpService;
|
||||||
import com.xiang.xservice.basic.common.resp.Result;
|
import com.xiang.xservice.basic.common.resp.Result;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
@@ -21,7 +21,7 @@ import java.util.List;
|
|||||||
public class VenueController {
|
public class VenueController {
|
||||||
|
|
||||||
private final IVenueService venueService;
|
private final IVenueService venueService;
|
||||||
private final IVenueServiceHttp venueServiceHttp;
|
private final IJntyzxHttpService jntyzxHttpService;
|
||||||
|
|
||||||
private final static String STATIC_TOKEN = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3NjU3ODQ1NjMsInVzZXJuYW1lIjoid3hfb3Blbl9pZF9vMjFNWDR5N3doWENHanZVVEdQNkNUejJIYkQ4In0.QBzNQNvJZQPZZnzmbU8K5Liz0piHwercrDIq3kirUJk";
|
private final static String STATIC_TOKEN = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3NjU3ODQ1NjMsInVzZXJuYW1lIjoid3hfb3Blbl9pZF9vMjFNWDR5N3doWENHanZVVEdQNkNUejJIYkQ4In0.QBzNQNvJZQPZZnzmbU8K5Liz0piHwercrDIq3kirUJk";
|
||||||
|
|
||||||
@@ -43,7 +43,7 @@ public class VenueController {
|
|||||||
if (CollectionUtils.isEmpty(venueInfoDOS)) {
|
if (CollectionUtils.isEmpty(venueInfoDOS)) {
|
||||||
return Result.error("暂无可订购的数据");
|
return Result.error("暂无可订购的数据");
|
||||||
}
|
}
|
||||||
venueServiceHttp.createOrder(venueInfoDOS);
|
jntyzxHttpService.createOrder(venueInfoDOS);
|
||||||
return Result.success();
|
return Result.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,37 @@
|
|||||||
|
package com.xiang.xservice.application.script.jntyzx.entity.pojo;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @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,0 +1,16 @@
|
|||||||
|
package com.xiang.xservice.application.script.jntyzx.manage;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import com.xiang.xservice.application.script.jntyzx.entity.pojo.UserTokenInfoDO;
|
||||||
|
|
||||||
|
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);
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
package com.xiang.xservice.application.script.jntyzx.manage;
|
||||||
|
|
||||||
|
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.xservice.application.script.jntyzx.entity.pojo.UserTokenInfoDO;
|
||||||
|
import com.xiang.xservice.application.script.jntyzx.mapper.JntyzxUserTokenInfoMapper;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @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);
|
||||||
|
return baseMapper.selectOne(lambdaQueryWrapper);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
package com.xiang.xservice.application.script.jntyzx.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.xiang.xservice.application.script.jntyzx.entity.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,21 @@
|
|||||||
|
package com.xiang.xservice.application.script.jntyzx.schedule;
|
||||||
|
|
||||||
|
import com.xiang.xservice.application.script.jntyzx.service.IUserTokenInfoService;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: xiang
|
||||||
|
* @Date: 2025-12-16 09:15
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class JtTokenHealthSchedule {
|
||||||
|
|
||||||
|
private final IUserTokenInfoService userTokenInfoService;
|
||||||
|
@Scheduled(cron = "0 30 0/2 * * ?")
|
||||||
|
public void flushToken() {
|
||||||
|
userTokenInfoService.flushToken();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.xiang.xservice.application.script.jntyzx.service;
|
package com.xiang.xservice.application.script.jntyzx.service;
|
||||||
|
|
||||||
import com.xiang.xservice.application.script.jntyzx.entity.pojo.VenueInfoDO;
|
import com.xiang.xservice.application.script.jntyzx.entity.pojo.VenueInfoDO;
|
||||||
|
import com.xiang.xservice.application.script.jntyzx.entity.resp.JntyzxResponse;
|
||||||
import com.xiang.xservice.application.script.jntyzx.entity.resp.query.SitePositionList;
|
import com.xiang.xservice.application.script.jntyzx.entity.resp.query.SitePositionList;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -9,7 +10,7 @@ import java.util.List;
|
|||||||
* @Author: xiang
|
* @Author: xiang
|
||||||
* @Date: 2025-12-15 14:47
|
* @Date: 2025-12-15 14:47
|
||||||
*/
|
*/
|
||||||
public interface IVenueServiceHttp {
|
public interface IJntyzxHttpService {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询今日可用场地
|
* 查询今日可用场地
|
||||||
@@ -22,4 +23,13 @@ public interface IVenueServiceHttp {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
Boolean createOrder(List<VenueInfoDO> venueInfos);
|
Boolean createOrder(List<VenueInfoDO> venueInfos);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 心跳监测
|
||||||
|
* @param token token
|
||||||
|
* @param openId openid
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
JntyzxResponse<Void> healthDeclaration(String token, String openId);
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
package com.xiang.xservice.application.script.jntyzx.service;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: xiang
|
||||||
|
* @Date: 2025-12-16 09:22
|
||||||
|
*/
|
||||||
|
public interface IUserTokenInfoService {
|
||||||
|
|
||||||
|
boolean flushSingleToken(String name);
|
||||||
|
boolean flushToken();
|
||||||
|
}
|
||||||
@@ -9,6 +9,7 @@ import com.xiang.xservice.application.script.jntyzx.constants.UrlConstant;
|
|||||||
import com.xiang.xservice.application.script.jntyzx.entity.pojo.VenueInfoDO;
|
import com.xiang.xservice.application.script.jntyzx.entity.pojo.VenueInfoDO;
|
||||||
import com.xiang.xservice.application.script.jntyzx.entity.req.SubscribeRequest;
|
import com.xiang.xservice.application.script.jntyzx.entity.req.SubscribeRequest;
|
||||||
import com.xiang.xservice.application.script.jntyzx.entity.req.SubscribeVo;
|
import com.xiang.xservice.application.script.jntyzx.entity.req.SubscribeVo;
|
||||||
|
import com.xiang.xservice.application.script.jntyzx.entity.resp.JntyzxResponse;
|
||||||
import com.xiang.xservice.application.script.jntyzx.entity.resp.query.SitePositionList;
|
import com.xiang.xservice.application.script.jntyzx.entity.resp.query.SitePositionList;
|
||||||
import com.xiang.xservice.application.script.jntyzx.entity.resp.query.VenueList;
|
import com.xiang.xservice.application.script.jntyzx.entity.resp.query.VenueList;
|
||||||
import com.xiang.xservice.basic.utils.Base64;
|
import com.xiang.xservice.basic.utils.Base64;
|
||||||
@@ -31,7 +32,7 @@ import java.util.Objects;
|
|||||||
@Service
|
@Service
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class VenueServiceHttpImpl implements IVenueServiceHttp {
|
public class JntyzxHttpServiceImpl implements IJntyzxHttpService {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<SitePositionList> queryAvailable(String isWeekend, String token) {
|
public List<SitePositionList> queryAvailable(String isWeekend, String token) {
|
||||||
@@ -140,6 +141,21 @@ public class VenueServiceHttpImpl implements IVenueServiceHttp {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JntyzxResponse<Void> healthDeclaration(String token, String openId) {
|
||||||
|
Map<String, String> headers = Maps.newHashMap();
|
||||||
|
headers.put("X-Access-Token", token);
|
||||||
|
Map<String, String> params = Maps.newHashMap();
|
||||||
|
params.put("openId", openId);
|
||||||
|
|
||||||
|
String respStr = HttpHelper.doGet(UrlConstant.HEALTH_DECLARATION, headers, params);
|
||||||
|
if (StringUtils.isBlank(respStr)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
JntyzxResponse jntyzxResponse = JSON.parseObject(respStr, JntyzxResponse.class);
|
||||||
|
return jntyzxResponse;
|
||||||
|
}
|
||||||
|
|
||||||
private static JSONObject buildParamJsonObj() {
|
private static JSONObject buildParamJsonObj() {
|
||||||
JSONObject jsonObject = new JSONObject();
|
JSONObject jsonObject = new JSONObject();
|
||||||
jsonObject.put("id", "1702581215097257986");
|
jsonObject.put("id", "1702581215097257986");
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
package com.xiang.xservice.application.script.jntyzx.service;
|
||||||
|
|
||||||
|
import com.xiang.xservice.application.script.jntyzx.entity.pojo.UserTokenInfoDO;
|
||||||
|
import com.xiang.xservice.application.script.jntyzx.entity.resp.JntyzxResponse;
|
||||||
|
import com.xiang.xservice.application.script.jntyzx.manage.IUserTokenInfoManage;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: xiang
|
||||||
|
* @Date: 2025-12-16 09:22
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@Slf4j
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class UserTokenInfoServiceImpl implements IUserTokenInfoService {
|
||||||
|
|
||||||
|
private final IUserTokenInfoManage userTokenInfoManage;
|
||||||
|
private final IJntyzxHttpService jntyzxHttpService;
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean flushSingleToken(String name) {
|
||||||
|
UserTokenInfoDO userTokenInfoDO = userTokenInfoManage.getByName(name);
|
||||||
|
if (Objects.isNull(userTokenInfoDO)) {
|
||||||
|
log.info("用户信息不存在,无需进行监测!");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return healthDeclaration(userTokenInfoDO);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean flushToken() {
|
||||||
|
List<UserTokenInfoDO> userTokenInfoDOS = userTokenInfoManage.listUser();
|
||||||
|
if (CollectionUtils.isEmpty(userTokenInfoDOS)) {
|
||||||
|
log.info("【心跳监测】查询用户信息为空,无需操作");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
userTokenInfoDOS.parallelStream().forEach(this::healthDeclaration);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean healthDeclaration(UserTokenInfoDO userTokenInfoDO) {
|
||||||
|
JntyzxResponse<Void> jntyzxResponse = jntyzxHttpService.healthDeclaration(userTokenInfoDO.getToken(), userTokenInfoDO.getOpenId());
|
||||||
|
if (Objects.isNull(jntyzxResponse)) {
|
||||||
|
log.info("用户名:{}心跳监测失败!", userTokenInfoDO.getName());
|
||||||
|
}
|
||||||
|
boolean flag = StringUtils.contains(jntyzxResponse.getMessage(), "已存在");
|
||||||
|
if (flag) {
|
||||||
|
log.info("用户名:{}心跳成功✅✅✅✅✅✅", userTokenInfoDO.getName());
|
||||||
|
}
|
||||||
|
return flag;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -27,13 +27,13 @@ import java.util.stream.Collectors;
|
|||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class VenueServiceImpl implements IVenueService {
|
public class VenueServiceImpl implements IVenueService {
|
||||||
|
|
||||||
private final static String STATIC_TOKEN = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3NjU3ODQ1NjMsInVzZXJuYW1lIjoid3hfb3Blbl9pZF9vMjFNWDR5N3doWENHanZVVEdQNkNUejJIYkQ4In0.QBzNQNvJZQPZZnzmbU8K5Liz0piHwercrDIq3kirUJk";
|
private final static String STATIC_TOKEN = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3NjU4NTI4MjYsInVzZXJuYW1lIjoid3hfb3Blbl9pZF9vMjFNWDR5N3doWENHanZVVEdQNkNUejJIYkQ4In0.pI1tK1imZdKZWXdHRxseqq87_IarHhiRt-hUdBq8hkg";
|
||||||
private final IVenueServiceHttp venueServiceHttp;
|
private final IJntyzxHttpService jntyzxHttpService;
|
||||||
private final IVenueInfoManage venueInfoManage;
|
private final IVenueInfoManage venueInfoManage;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<SitePositionList> queryVenueService() {
|
public List<SitePositionList> queryVenueService() {
|
||||||
List<SitePositionList> sitePositionLists = venueServiceHttp.queryAvailable("1", STATIC_TOKEN);
|
List<SitePositionList> sitePositionLists = jntyzxHttpService.queryAvailable("1", STATIC_TOKEN);
|
||||||
if (CollectionUtils.isEmpty(sitePositionLists)) {
|
if (CollectionUtils.isEmpty(sitePositionLists)) {
|
||||||
return Lists.newArrayList();
|
return Lists.newArrayList();
|
||||||
}
|
}
|
||||||
@@ -42,7 +42,7 @@ public class VenueServiceImpl implements IVenueService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public List<SitePositionList> queryTomorrowVenue() {
|
public List<SitePositionList> queryTomorrowVenue() {
|
||||||
List<SitePositionList> sitePositionLists = venueServiceHttp.queryAvailableTomorrow("1", STATIC_TOKEN);
|
List<SitePositionList> sitePositionLists = jntyzxHttpService.queryAvailableTomorrow("1", STATIC_TOKEN);
|
||||||
if (CollectionUtils.isEmpty(sitePositionLists)) {
|
if (CollectionUtils.isEmpty(sitePositionLists)) {
|
||||||
return Lists.newArrayList();
|
return Lists.newArrayList();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user