diff --git a/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/constants/UrlConstant.java b/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/constants/UrlConstant.java index f359af6..18244aa 100644 --- a/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/constants/UrlConstant.java +++ b/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/constants/UrlConstant.java @@ -15,6 +15,9 @@ public class UrlConstant { * 查询当天的场地信息 */ 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"; /** @@ -32,4 +35,13 @@ public class UrlConstant { */ 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"; } diff --git a/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/entity/pojo/UserRestrictionInfo.java b/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/entity/pojo/UserRestrictionInfo.java new file mode 100644 index 0000000..e27b6ba --- /dev/null +++ b/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/entity/pojo/UserRestrictionInfo.java @@ -0,0 +1,29 @@ +package com.xiang.app.modules.jntyzx.entity.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; +} diff --git a/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/entity/pojo/UserTokenInfoDO.java b/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/entity/pojo/UserTokenInfoDO.java index d25b084..1b0144d 100644 --- a/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/entity/pojo/UserTokenInfoDO.java +++ b/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/entity/pojo/UserTokenInfoDO.java @@ -1,10 +1,13 @@ package com.xiang.app.modules.jntyzx.entity.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 @@ -34,4 +37,21 @@ public class UserTokenInfoDO { * 状态(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; } diff --git a/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/entity/resp/query/UserInfoResponse.java b/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/entity/resp/query/UserInfoResponse.java new file mode 100644 index 0000000..2fca3bf --- /dev/null +++ b/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/entity/resp/query/UserInfoResponse.java @@ -0,0 +1,106 @@ +package com.xiang.app.modules.jntyzx.entity.resp.query; + +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; + /** + * 封禁截止日期 + */ + private String restrictionDeadline; + /** + * 封禁原因 + */ + private String restrictionDescription; + /** + * 封禁截止日期 + */ + private String RestrictionDeadline; +} diff --git a/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/manage/IUserRestrictionManage.java b/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/manage/IUserRestrictionManage.java new file mode 100644 index 0000000..1786a1b --- /dev/null +++ b/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/manage/IUserRestrictionManage.java @@ -0,0 +1,9 @@ +package com.xiang.app.modules.jntyzx.manage; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.xiang.app.modules.jntyzx.entity.pojo.UserRestrictionInfo; + +public interface IUserRestrictionManage extends IService { + + UserRestrictionInfo queryByUserId(Long userId); +} diff --git a/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/manage/IUserTokenInfoManage.java b/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/manage/IUserTokenInfoManage.java index 903cc51..cf8da61 100644 --- a/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/manage/IUserTokenInfoManage.java +++ b/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/manage/IUserTokenInfoManage.java @@ -12,4 +12,7 @@ import java.util.List; public interface IUserTokenInfoManage extends IService { List listUser(); UserTokenInfoDO getByName(String name); + + List listCanOrder(); + } diff --git a/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/manage/UserRestrictionManageImpl.java b/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/manage/UserRestrictionManageImpl.java new file mode 100644 index 0000000..b441e92 --- /dev/null +++ b/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/manage/UserRestrictionManageImpl.java @@ -0,0 +1,18 @@ +package com.xiang.app.modules.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.app.modules.jntyzx.entity.pojo.UserRestrictionInfo; +import com.xiang.app.modules.jntyzx.mapper.JntyzxUserRestrictionInfoMapper; +import org.springframework.stereotype.Service; + +@Service +public class UserRestrictionManageImpl extends ServiceImpl implements IUserRestrictionManage { + @Override + public UserRestrictionInfo queryByUserId(Long userId) { + LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); + lambdaQueryWrapper.eq(UserRestrictionInfo::getUserId, userId); + return baseMapper.selectOne(lambdaQueryWrapper); + } +} diff --git a/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/manage/UserTokenInfoManageImpl.java b/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/manage/UserTokenInfoManageImpl.java index 0305886..5c513fc 100644 --- a/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/manage/UserTokenInfoManageImpl.java +++ b/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/manage/UserTokenInfoManageImpl.java @@ -29,4 +29,12 @@ public class UserTokenInfoManageImpl extends ServiceImpl listCanOrder() { + LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); + lambdaQueryWrapper.eq(UserTokenInfoDO::getStatus, 1); + lambdaQueryWrapper.eq(UserTokenInfoDO::getIsOrder, 1); + return baseMapper.selectList(lambdaQueryWrapper); + } } diff --git a/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/mapper/JntyzxUserRestrictionInfoMapper.java b/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/mapper/JntyzxUserRestrictionInfoMapper.java new file mode 100644 index 0000000..6aa682a --- /dev/null +++ b/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/mapper/JntyzxUserRestrictionInfoMapper.java @@ -0,0 +1,11 @@ +package com.xiang.app.modules.jntyzx.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.xiang.app.modules.jntyzx.entity.pojo.UserRestrictionInfo; +import org.apache.ibatis.annotations.Mapper; +import org.springframework.stereotype.Repository; + +@Mapper +@Repository +public interface JntyzxUserRestrictionInfoMapper extends BaseMapper { +} diff --git a/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/service/IJntyzxHttpService.java b/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/service/IJntyzxHttpService.java index aa2a1a2..177d520 100644 --- a/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/service/IJntyzxHttpService.java +++ b/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/service/IJntyzxHttpService.java @@ -5,6 +5,7 @@ import com.xiang.app.modules.jntyzx.entity.pojo.VenueInfoDO; import com.xiang.app.modules.jntyzx.entity.resp.JntyzxResponse; import com.xiang.app.modules.jntyzx.entity.resp.OrderCreateResp; import com.xiang.app.modules.jntyzx.entity.resp.query.SitePositionList; +import com.xiang.app.modules.jntyzx.entity.resp.query.UserInfoResponse; import java.util.List; @@ -40,4 +41,20 @@ public interface IJntyzxHttpService { * @return */ JntyzxResponse healthDeclaration(String token, String openId); + + /** + * 根据openid查询 + * @param token token + * @param openId openId + * @return + */ + JntyzxResponse queryByOpenId(String token, String openId); + + /** + * 校验会员卡状态 + * @param token token + * @param cardNo 会员卡号 + * @return + */ + JntyzxResponse checkDefaultNums(String token, String cardNo); } diff --git a/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/service/IUserTokenInfoService.java b/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/service/IUserTokenInfoService.java index a1f4fea..525aac1 100644 --- a/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/service/IUserTokenInfoService.java +++ b/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/service/IUserTokenInfoService.java @@ -11,6 +11,7 @@ import java.util.List; public interface IUserTokenInfoService { List getAvailableUser(); + List getCanOrderUser(); String getToken(String name); boolean flushSingleToken(String name); boolean flushToken(); diff --git a/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/service/impl/JntyzxHttpServiceImpl.java b/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/service/impl/JntyzxHttpServiceImpl.java index e53495e..778a4fe 100644 --- a/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/service/impl/JntyzxHttpServiceImpl.java +++ b/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/service/impl/JntyzxHttpServiceImpl.java @@ -14,6 +14,7 @@ import com.xiang.app.modules.jntyzx.entity.req.SubscribeVo; import com.xiang.app.modules.jntyzx.entity.resp.JntyzxResponse; import com.xiang.app.modules.jntyzx.entity.resp.OrderCreateResp; import com.xiang.app.modules.jntyzx.entity.resp.query.SitePositionList; +import com.xiang.app.modules.jntyzx.entity.resp.query.UserInfoResponse; import com.xiang.app.modules.jntyzx.entity.resp.query.VenueList; import com.xiang.app.modules.jntyzx.manage.IOrderCreateInfoManage; import com.xiang.app.modules.jntyzx.service.IJntyzxHttpService; @@ -179,6 +180,37 @@ public class JntyzxHttpServiceImpl implements IJntyzxHttpService { return JSON.parseObject(respStr, JntyzxResponse.class); } + @Override + public JntyzxResponse queryByOpenId(String token, String openId) { + Map params = Maps.newHashMap(); + params.put("openId", openId); + Map headers = Maps.newHashMap(); + headers.put("X-Access-Token", token); + + String resp = HttpHelper.doGet(UrlConstant.QUERY_BY_OPEN_ID, headers, params); + JntyzxResponse response = JSON.parseObject(resp, new TypeReference>() { + }); + if (Objects.isNull(response)) { + log.info("请求结果为空!"); + return null; + } + return response; + } + + @Override + public JntyzxResponse checkDefaultNums(String token, String cardNo) { + Map params = Maps.newHashMap(); + params.put("consNumber", cardNo); + Map headers = Maps.newHashMap(); + headers.put("X-Access-Token", token); + + String resp = HttpHelper.doGet(UrlConstant.CHECK_NUM, headers, params); + if (StringUtils.isBlank(resp)) { + return null; + } + return JSON.parseObject(resp, JntyzxResponse.class); + } + private static JSONObject buildParamJsonObj(String openId) { JSONObject jsonObject = new JSONObject(); jsonObject.put("id", "1702581215097257986"); diff --git a/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/service/impl/UserTokenInfoServiceImpl.java b/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/service/impl/UserTokenInfoServiceImpl.java index 668401a..e8e24fb 100644 --- a/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/service/impl/UserTokenInfoServiceImpl.java +++ b/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/service/impl/UserTokenInfoServiceImpl.java @@ -1,11 +1,15 @@ package com.xiang.app.modules.jntyzx.service.impl; import com.xiang.app.common.service.dingtalk.JtDingTalkFactory; +import com.xiang.app.modules.jntyzx.entity.pojo.UserRestrictionInfo; import com.xiang.app.modules.jntyzx.entity.pojo.UserTokenInfoDO; import com.xiang.app.modules.jntyzx.entity.resp.JntyzxResponse; +import com.xiang.app.modules.jntyzx.entity.resp.query.UserInfoResponse; +import com.xiang.app.modules.jntyzx.manage.IUserRestrictionManage; import com.xiang.app.modules.jntyzx.manage.IUserTokenInfoManage; import com.xiang.app.modules.jntyzx.service.IJntyzxHttpService; import com.xiang.app.modules.jntyzx.service.IUserTokenInfoService; +import com.xiang.xservice.basic.utils.DateUtils; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; @@ -27,6 +31,7 @@ public class UserTokenInfoServiceImpl implements IUserTokenInfoService { private final IUserTokenInfoManage userTokenInfoManage; private final IJntyzxHttpService jntyzxHttpService; private final JtDingTalkFactory jtDingTalkFactory; + private final IUserRestrictionManage userRestrictionManage; @Override @@ -43,6 +48,11 @@ public class UserTokenInfoServiceImpl implements IUserTokenInfoService { return userTokenInfoDO.getToken(); } + @Override + public List getCanOrderUser() { + return userTokenInfoManage.listCanOrder(); + } + @Override public boolean flushSingleToken(String name) { UserTokenInfoDO userTokenInfoDO = userTokenInfoManage.getByName(name); @@ -62,6 +72,7 @@ public class UserTokenInfoServiceImpl implements IUserTokenInfoService { return true; } userTokenInfoDOS.parallelStream().forEach(this::healthDeclaration); + userTokenInfoDOS.parallelStream().forEach(this::queryMemberCardInfo); return true; } @@ -94,4 +105,34 @@ public class UserTokenInfoServiceImpl implements IUserTokenInfoService { } return flag; } + + private boolean queryMemberCardInfo(UserTokenInfoDO userTokenInfoDO) { + JntyzxResponse response = jntyzxHttpService.queryByOpenId(userTokenInfoDO.getToken(), userTokenInfoDO.getOpenId()); + if (Objects.isNull(response)) { + return false; + } + if (response.getSuccess()) { + UserInfoResponse userInfoResponse = response.getResult(); + userTokenInfoDO.setMemberCardNo(userInfoResponse.getConsCard()); + if (StringUtils.isNotBlank(userInfoResponse.getRestrictionDeadline())) { + userTokenInfoDO.setIsRestriction(1); + UserRestrictionInfo userRestrictionInfo = userRestrictionManage.queryByUserId(userTokenInfoDO.getId()); + if (Objects.isNull(userRestrictionInfo)) { + userRestrictionInfo = new UserRestrictionInfo(); + userRestrictionInfo.setUserId(userTokenInfoDO.getId()); + userRestrictionInfo.setRestrictionDeadline(DateUtils.getDateTimeFromStr(userInfoResponse.getRestrictionDeadline())); + userRestrictionInfo.setRestrictionDesc(userInfoResponse.getRestrictionDescription()); + userTokenInfoManage.save(userTokenInfoDO); + } else { + userRestrictionInfo.setRestrictionDeadline(DateUtils.getDateTimeFromStr(userInfoResponse.getRestrictionDeadline())); + userRestrictionInfo.setRestrictionDesc(userInfoResponse.getRestrictionDescription()); + userTokenInfoManage.updateById(userTokenInfoDO); + } + } else { + userTokenInfoDO.setIsRestriction(0); + } + return userTokenInfoManage.updateById(userTokenInfoDO); + } + return false; + } } diff --git a/xservice-server/src/main/java/com/xiang/app/schedule/jntyzx/JtCheckUserOrderTask.java b/xservice-server/src/main/java/com/xiang/app/schedule/jntyzx/JtCheckUserOrderTask.java new file mode 100644 index 0000000..584a196 --- /dev/null +++ b/xservice-server/src/main/java/com/xiang/app/schedule/jntyzx/JtCheckUserOrderTask.java @@ -0,0 +1,32 @@ +package com.xiang.app.schedule.jntyzx; + +import com.xiang.app.modules.jntyzx.entity.pojo.UserTokenInfoDO; +import com.xiang.app.modules.jntyzx.service.IUserTokenInfoService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * 校验是否可以下单定时任务 + */ +@Component +@Slf4j +@RequiredArgsConstructor +public class JtCheckUserOrderTask { + + private final IUserTokenInfoService userTokenInfoService; + + + public void handle() { + List users = userTokenInfoService.getAvailableUser(); + if (CollectionUtils.isEmpty(users)) { + return; + } + users.forEach(item -> { + + }); + } +} diff --git a/xservice-server/src/main/java/com/xiang/app/schedule/jntyzx/JtVenueSubscribeTask.java b/xservice-server/src/main/java/com/xiang/app/schedule/jntyzx/JtVenueSubscribeTask.java index a1084e9..e35f3af 100644 --- a/xservice-server/src/main/java/com/xiang/app/schedule/jntyzx/JtVenueSubscribeTask.java +++ b/xservice-server/src/main/java/com/xiang/app/schedule/jntyzx/JtVenueSubscribeTask.java @@ -32,7 +32,7 @@ public class JtVenueSubscribeTask { public void handle() { log.info("【Subscribe】 江体场地预定定时任务启动!!! time:{}", System.currentTimeMillis()); - List users = userTokenInfoService.getAvailableUser(); + List users = userTokenInfoService.getCanOrderUser(); List venueInfoDOS = venueService.queryTomorrowCanBuyVenue(); Map> venueInfoMap = venueInfoDOS.stream().filter(VenueInfoUtils::get8210VenueInfo).collect(Collectors.groupingByConcurrent(VenueInfoDO::getPlaceName)); @@ -48,8 +48,5 @@ public class JtVenueSubscribeTask { } }); }); - - - } }