1018653686@qq.com 1 year ago
parent
commit
1deef8d618

File diff suppressed because it is too large
+ 0 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/a-json/JdInfoApi.json


+ 33 - 10
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/controller/jd/JdApiController.java

@@ -1,14 +1,20 @@
 package com.fjhx.victoriatourist.controller.jd;
 
+import cn.hutool.core.thread.ThreadUtil;
+import cn.hutool.core.util.IdUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.http.HttpStatus;
 import com.alibaba.fastjson2.JSONObject;
 import com.fjhx.victoriatourist.service.jd.JdApiService;
 import com.ruoyi.system.utils.ConfigUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.view.RedirectView;
 
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 import java.util.Map;
 
 
@@ -21,7 +27,7 @@ import java.util.Map;
  * @since 2023-11-03
  */
 @Slf4j
-@RestController
+@Controller
 @RequestMapping("/open/jd")
 public class JdApiController {
 
@@ -32,12 +38,29 @@ public class JdApiController {
      * 京东登录回调
      */
     @RequestMapping("/callback")
-    public void callback(@RequestParam Map<String, String> inputValue) {
-        String inputValJson = JSONObject.toJSONString(inputValue);
-        log.info("京东回调鉴权信息:{}", inputValJson);
-        ConfigUtil.set("jd_callback_json", inputValJson);
-        //获取token
-//        jdApiService.getAccessTokenByCode(inputValue.get("code"));
+    public void callback(HttpServletResponse response, String code, String state) throws IOException {
+        log.info("京东回调code:{},state:{}", code, state);
+        if (StrUtil.isBlank(code) || StrUtil.isBlank(state)){
+            response.sendError(HttpStatus.HTTP_BAD_REQUEST, "参数错误");
+        }
+        //获取token并且入库
+        try{
+            jdApiService.getAccessTokenByCode(code);
+        }catch (Exception e){
+            log.error("京东获取token异常", e);
+            response.sendError(HttpStatus.HTTP_INTERNAL_ERROR, e.getMessage());
+        }
+        response.sendRedirect("http://127.0.0.1:80/callback.html");
+    }
+
+
+    @RequestMapping("/build2LoginUrl")
+    @ResponseBody
+    public String build2LoginUrl(){
+        String url = jdApiService.build2LoginUrl();
+//        String url = "http://127.0.0.1:80/testLogin.html?"+ IdUtil.getSnowflakeNextIdStr();
+
+        return url;
     }
 
 

+ 77 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/controller/jd/JdInfoController.java

@@ -0,0 +1,77 @@
+package com.fjhx.victoriatourist.controller.jd;
+
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.victoriatourist.entity.jd.vo.JdInfoVo;
+import com.fjhx.victoriatourist.entity.jd.dto.JdInfoSelectDto;
+import com.fjhx.victoriatourist.entity.jd.dto.JdInfoDto;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.fjhx.victoriatourist.service.jd.JdInfoService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 京东基本信息表 前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2023-12-09
+ */
+@RestController
+@RequestMapping("/jdInfo")
+public class JdInfoController {
+
+    @Autowired
+    private JdInfoService jdInfoService;
+
+    /**
+     * 京东基本信息表列表
+     */
+    @PostMapping("/list")
+    public List<JdInfoVo> list(@RequestBody JdInfoSelectDto dto) {
+        return jdInfoService.getList(dto);
+    }
+
+    /**
+     * 京东基本信息表分页
+     */
+    @PostMapping("/page")
+    public Page<JdInfoVo> page(@RequestBody JdInfoSelectDto dto) {
+        return jdInfoService.getPage(dto);
+    }
+
+    /**
+     * 京东基本信息表明细
+     */
+    @PostMapping("/detail")
+    public JdInfoVo detail(@RequestBody BaseSelectDto dto) {
+        return jdInfoService.detail(dto.getId());
+    }
+
+    /**
+     * 京东基本信息表新增
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody JdInfoDto jdInfoDto) {
+        jdInfoService.add(jdInfoDto);
+    }
+
+    /**
+     * 京东基本信息表编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@RequestBody JdInfoDto jdInfoDto) {
+        jdInfoService.edit(jdInfoDto);
+    }
+
+    /**
+     * 京东基本信息表删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        jdInfoService.delete(dto.getId());
+    }
+
+}

+ 17 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/dto/JdInfoDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.victoriatourist.entity.jd.dto;
+
+import com.fjhx.victoriatourist.entity.jd.po.JdInfo;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 京东基本信息表新增编辑入参实体
+ *
+ * @author 
+ * @since 2023-12-09
+ */
+@Getter
+@Setter
+public class JdInfoDto extends JdInfo {
+
+}

+ 17 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/dto/JdInfoSelectDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.victoriatourist.entity.jd.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 京东基本信息表列表查询入参实体
+ *
+ * @author 
+ * @since 2023-12-09
+ */
+@Getter
+@Setter
+public class JdInfoSelectDto extends BaseSelectDto {
+
+}

+ 43 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/po/JdInfo.java

@@ -0,0 +1,43 @@
+package com.fjhx.victoriatourist.entity.jd.po;
+
+import com.ruoyi.common.core.domain.BaseIdPo;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 京东基本信息表
+ * </p>
+ *
+ * @author 
+ * @since 2023-12-09
+ */
+@Getter
+@Setter
+@TableName("jd_info")
+public class JdInfo extends BaseIdPo {
+
+    private String accessToken;
+
+    private String refreshToken;
+
+    private int online;
+
+    /**
+     * 最后一次刷新时间
+     */
+    private Date lastRefreshTime;
+
+    /**
+     * 初始化查询时间
+     */
+    private Date initQueryDate;
+
+    /**
+     * 过期时间
+     */
+    private Date expireTime;
+
+}

+ 17 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/vo/JdInfoVo.java

@@ -0,0 +1,17 @@
+package com.fjhx.victoriatourist.entity.jd.vo;
+
+import com.fjhx.victoriatourist.entity.jd.po.JdInfo;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 京东基本信息表列表查询返回值实体
+ *
+ * @author 
+ * @since 2023-12-09
+ */
+@Getter
+@Setter
+public class JdInfoVo extends JdInfo {
+
+}

+ 32 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/mapper/jd/JdInfoMapper.java

@@ -0,0 +1,32 @@
+package com.fjhx.victoriatourist.mapper.jd;
+
+import com.fjhx.victoriatourist.entity.jd.po.JdInfo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.victoriatourist.entity.jd.vo.JdInfoVo;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 京东基本信息表 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-12-09
+ */
+public interface JdInfoMapper extends BaseMapper<JdInfo> {
+
+    /**
+     * 京东基本信息表列表
+     */
+    List<JdInfoVo> getList(@Param("ew") IWrapper<JdInfo> wrapper);
+
+    /**
+     * 京东基本信息表分页
+     */
+    Page<JdInfoVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<JdInfo> wrapper);
+
+}

+ 2 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/JdApiService.java

@@ -6,4 +6,6 @@ public interface JdApiService {
      * 获取AccessToken
      */
     void getAccessTokenByCode(String code);
+
+    String build2LoginUrl();
 }

+ 53 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/JdInfoService.java

@@ -0,0 +1,53 @@
+package com.fjhx.victoriatourist.service.jd;
+
+import com.fjhx.victoriatourist.entity.jd.po.JdInfo;
+import com.ruoyi.common.core.service.BaseService;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.victoriatourist.entity.jd.vo.JdInfoVo;
+import com.fjhx.victoriatourist.entity.jd.dto.JdInfoSelectDto;
+import com.fjhx.victoriatourist.entity.jd.dto.JdInfoDto;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 京东基本信息表 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-12-09
+ */
+public interface JdInfoService extends BaseService<JdInfo> {
+
+    /**
+     * 京东基本信息表列表
+     */
+    List<JdInfoVo> getList(JdInfoSelectDto dto);
+
+    /**
+     * 京东基本信息表分页
+     */
+    Page<JdInfoVo> getPage(JdInfoSelectDto dto);
+
+    /**
+     * 京东基本信息表明细
+     */
+    JdInfoVo detail(Long id);
+
+    /**
+     * 京东基本信息表新增
+     */
+    void add(JdInfoDto jdInfoDto);
+
+    /**
+     * 京东基本信息表编辑
+     */
+    void edit(JdInfoDto jdInfoDto);
+
+    /**
+     * 京东基本信息表删除
+     */
+    void delete(Long id);
+
+    JdInfoVo getOne();
+}

+ 85 - 38
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdApiServiceImpl.java

@@ -1,14 +1,19 @@
 package com.fjhx.victoriatourist.service.jd.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.date.DateUnit;
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.extra.spring.SpringUtil;
 import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
+import com.fjhx.victoriatourist.entity.jd.dto.JdInfoDto;
+import com.fjhx.victoriatourist.entity.jd.dto.JdInfoSelectDto;
 import com.fjhx.victoriatourist.entity.jd.po.JdBack;
 import com.fjhx.victoriatourist.entity.jd.po.JdBackDetails;
 import com.fjhx.victoriatourist.entity.jd.po.JdOrder;
 import com.fjhx.victoriatourist.entity.jd.po.JdOrderDetails;
+import com.fjhx.victoriatourist.entity.jd.vo.JdInfoVo;
 import com.fjhx.victoriatourist.service.jd.*;
 import com.jd.open.api.sdk.DefaultJdClient;
 import com.jd.open.api.sdk.JdClient;
@@ -38,8 +43,10 @@ import org.apache.http.client.methods.HttpGet;
 import org.apache.http.client.methods.HttpRequestBase;
 import org.apache.http.impl.client.HttpClients;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 import java.text.SimpleDateFormat;
@@ -53,7 +60,10 @@ public class JdApiServiceImpl implements JdApiService {
     private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
     private static final String appKey = "ECCD5CE82A501C7E0D8BB41C030C447D";
     private static final String appSecret = "5b55c3f3eb874b0d8746ff28e7f91f64";
+    private static final String redirect_uri = "/open/jd/callback";
     private final String tenantId = "prod".equals(SpringUtil.getActiveProfile()) ? "wdly" : "wdlytest";
+    private static final String ACCESS_TOKEN = "access_token";
+    private static final String REFRESH_TOKEN = "refresh_token";
 
     @Autowired
     private JdOrderService jdOrderService;
@@ -63,78 +73,77 @@ public class JdApiServiceImpl implements JdApiService {
     private JdBackService jdBackService;
     @Autowired
     private JdBackDetailsService jdBackDetailsService;
+    @Resource
+    private JdInfoService jdInfoService;
 
     /**
      * 获取AccessToken
      */
     @Override
     public void getAccessTokenByCode(String code) {
-        if (ObjectUtil.isEmpty(code)) {
-            log.error("获取AccessToken失败:code不能为空");
-            return;
-        }
-
         //获取AccessToken并存入数据库
         String path = "https://open-oauth.jd.com/oauth2/access_token?app_key=%s&app_secret=%s&grant_type=authorization_code&code=%s";
         path = String.format(path, appKey, appSecret, code);
         try {
             JSONObject responseJson = getJSON(new HttpGet(path));
-            if (ObjectUtil.isNotEmpty(responseJson.getString("access_token")) && ObjectUtil.isNotEmpty(responseJson.getString("refresh_token"))) {
-                log.info("成功获取AccessToken并保存" + responseJson);
-                ConfigUtil.set("jd_token_json", responseJson.toString());
-            } else {
-                log.error("获取AccessToken失败:" + responseJson);
-            }
+            dealJdResponse(responseJson);
         } catch (Exception e) {
             log.error("获取AccessToken出错:" + e.getMessage(), e);
         }
     }
 
+
+
+    @Override
+    public String build2LoginUrl() {
+        String url = "https://open-oauth.jd.com/oauth2/to_login?app_key=%s&response_type=code&redirect_uri=%s&state=%s&scope=snsapi_base";
+        //TODO redirect_uri需要加上项目的域名
+        url = String.format(url, appKey, redirect_uri, DateUtil.format(new Date(), "yyyyMMddHHmmss"));
+        return url;
+    }
+
     /**
      * 刷新Token
      */
-    private void refreshToken() {
-        String jdTokenJsonStr = ConfigUtil.get("jd_token_json");
-        if (ObjectUtil.isEmpty(jdTokenJsonStr)) {
-            log.error("jd_token_json为空无法刷新Token请检查");
+    private void refreshToken(JdInfoVo jdInfoVo) {
+        if (ObjectUtil.isEmpty(jdInfoVo.getAccessToken())) {
+            log.error("accessToken为空无法刷新Token请检查");
             return;
         }
-        JSONObject jdTokenJson = JSONObject.parseObject(jdTokenJsonStr);
-        if (ObjectUtil.isEmpty(jdTokenJson.get("refresh_token"))) {
-            log.error("refresh_token为空无法刷新Token请检查");
+        if (ObjectUtil.isEmpty(jdInfoVo.getRefreshToken())) {
+            log.error("refreshToken为空无法刷新Token请检查");
             return;
         }
         String path = "https://open-oauth.jd.com/oauth2/refresh_token?app_key=%s&app_secret=%s&grant_type=refresh_token&refresh_token=%s";
-        path = String.format(path, appKey, appSecret, jdTokenJson.get("refresh_token"));
+        path = String.format(path, appKey, appSecret, jdInfoVo.getRefreshToken());
         try {
             JSONObject responseJson = getJSON(new HttpGet(path));
-            if (ObjectUtil.isNotEmpty(responseJson.getString("access_token")) && ObjectUtil.isNotEmpty(responseJson.getString("refresh_token"))) {
-                log.info("成功刷新AccessToken并保存" + responseJson);
-                ConfigUtil.set("jd_token_json", responseJson.toString());
-            } else {
-                log.error("刷新AccessToken失败:" + responseJson);
-            }
+            dealJdResponse(responseJson);
         } catch (Exception e) {
             log.error("刷新AccessToken出错:" + e.getMessage(), e);
         }
     }
 
-    @DSTransactional
-        //项目启动时运行一次
-//    @PostConstruct
-        // 1分钟执行一次
+//    @DSTransactional
+    //每小时执行一次
+    @Scheduled(cron = "0 0 0/1  * * ? ")
+    //每分钟执行一次
 //    @Scheduled(cron = "0 0/1 *  * * ? ")
-    void orderSync() throws Exception {
-
-        JSONObject jdTokenJson = JSONObject.parseObject(ConfigUtil.get("jd_token_json"));
-        if (ObjectUtil.isEmpty(jdTokenJson)) {
-            log.error("京东token详细为空请检查");
-            return;
+    void orderSync(){
+        JdInfoVo jdInfoVo = jdInfoService.getOne();
+        //如果过期时间减去当前时间小于90分钟,则要刷新token
+        if(ObjectUtil.isNotNull(jdInfoVo.getExpireTime())){
+            long between = DateUtil.between(DateUtil.date(), jdInfoVo.getExpireTime(), DateUnit.MINUTE, false);
+            if(between <= 0){
+                if(jdInfoVo.getOnline()>0){
+                    jdInfoVo.setOnline(0);
+                    jdInfoService.updateById(jdInfoVo);
+                }
+            }else if(90 >= between){
+                refreshToken(jdInfoVo);
+            }
         }
 
-        JdClient client = new DefaultJdClient("http://api.jd.com/routerjson", jdTokenJson.getString("access_token"), appKey, appSecret);
-
-
     }
 
     /**
@@ -303,6 +312,44 @@ public class JdApiServiceImpl implements JdApiService {
         return calendar.getTime();
     }
 
+    /**
+     * 将jd返回的json对象转换成jdInfoVo
+     * @author hj
+     * @date 2023/12/10 22:03
+     * @param responseJson
+     * @param jdInfoVo
+     */
+    private void convertJdInfoVO(JSONObject responseJson, JdInfoVo jdInfoVo) {
+        jdInfoVo.setAccessToken(responseJson.getString(ACCESS_TOKEN));
+        jdInfoVo.setRefreshToken(responseJson.getString(REFRESH_TOKEN));
+        int expires_in = responseJson.getIntValue("expires_in", 0);
+        int offsetHour = 24;
+        if(expires_in>0){
+            offsetHour = expires_in/60/60;
+        }
+        jdInfoVo.setExpireTime(DateUtil.offsetHour(new Date(), offsetHour));
+        jdInfoVo.setLastRefreshTime(DateUtil.date());
+        jdInfoVo.setOnline(1);
+    }
+
+    /**
+     * 处理jd返回对象
+     * @author hj
+     * @date 2023/12/10 22:07
+     * @param responseJson 
+     */
+    private void dealJdResponse(JSONObject responseJson) {
+        if (ObjectUtil.isNotEmpty(responseJson.getString(ACCESS_TOKEN)) && ObjectUtil.isNotEmpty(responseJson.getString(REFRESH_TOKEN))) {
+            log.info("成功获取AccessToken并保存" + responseJson);
+            JdInfoVo jdInfoVo = jdInfoService.getOne();
+            convertJdInfoVO(responseJson, jdInfoVo);
+            JdInfoDto jdInfoDto = BeanUtil.copyProperties(jdInfoVo, JdInfoDto.class);
+            jdInfoService.add(jdInfoDto);
+        } else {
+            log.error("获取AccessToken失败:" + responseJson);
+        }
+    }
+
     public static void main(String[] args) throws Exception {
         JdClient client = new DefaultJdClient("http://api.jd.com/routerjson", "a1f79f4670fd43a28fa2de02abd86f03ytfm", appKey, appSecret);
 

+ 75 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdInfoServiceImpl.java

@@ -0,0 +1,75 @@
+package com.fjhx.victoriatourist.service.jd.impl;
+
+import cn.hutool.core.collection.CollectionUtil;
+import com.fjhx.victoriatourist.entity.jd.po.JdInfo;
+import com.fjhx.victoriatourist.mapper.jd.JdInfoMapper;
+import com.fjhx.victoriatourist.service.jd.JdInfoService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.victoriatourist.entity.jd.vo.JdInfoVo;
+import com.fjhx.victoriatourist.entity.jd.dto.JdInfoSelectDto;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.fjhx.victoriatourist.entity.jd.dto.JdInfoDto;
+import cn.hutool.core.bean.BeanUtil;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 京东基本信息表 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-12-09
+ */
+@Service
+public class JdInfoServiceImpl extends ServiceImpl<JdInfoMapper, JdInfo> implements JdInfoService {
+
+    @Override
+    public List<JdInfoVo> getList(JdInfoSelectDto dto) {
+        IWrapper<JdInfo> wrapper = getWrapper();
+        wrapper.orderByDesc("ji", JdInfo::getId);
+        List<JdInfoVo> list = this.baseMapper.getList(wrapper);
+        return list;
+    }
+
+    @Override
+    public Page<JdInfoVo> getPage(JdInfoSelectDto dto) {
+        IWrapper<JdInfo> wrapper = getWrapper();
+        wrapper.orderByDesc("ji", JdInfo::getId);
+        Page<JdInfoVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        return page;
+    }
+
+    @Override
+    public JdInfoVo detail(Long id) {
+        JdInfo JdInfo = this.getById(id);
+        JdInfoVo result = BeanUtil.toBean(JdInfo, JdInfoVo.class);
+        return result;
+    }
+
+    @Override
+    public void add(JdInfoDto jdInfoDto) {
+        this.save(jdInfoDto);
+    }
+
+    @Override
+    public void edit(JdInfoDto jdInfoDto) {
+        this.updateById(jdInfoDto);
+    }
+
+    @Override
+    public void delete(Long id) {
+        this.removeById(id);
+    }
+
+    @Override
+    public JdInfoVo getOne() {
+        List<JdInfoVo> list = getList(new JdInfoSelectDto());
+        if (CollectionUtil.isNotEmpty(list)){
+            return list.get(0);
+        }
+        return new JdInfoVo();
+    }
+}

+ 55 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/websocket/JdWebSocket.java

@@ -0,0 +1,55 @@
+package com.fjhx.victoriatourist.service.jd.websocket;
+
+import cn.hutool.core.collection.CollectionUtil;
+import com.alibaba.fastjson2.JSONObject;
+import com.fjhx.socket.core.WebSocketServer;
+import com.fjhx.socket.core.event.WebSocketOnMessageEvent;
+import com.fjhx.socket.core.event.WebSocketOnOpenEvent;
+import com.fjhx.victoriatourist.entity.jd.dto.JdInfoSelectDto;
+import com.fjhx.victoriatourist.entity.jd.vo.JdInfoVo;
+import com.fjhx.victoriatourist.service.jd.JdInfoService;
+import org.springframework.context.event.EventListener;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.Resource;
+import java.io.IOException;
+import java.util.List;
+import java.util.Random;
+
+@Component
+public class JdWebSocket {
+    @Resource
+    JdInfoService jdInfoService;
+
+    @EventListener
+    public void webSocketOnOpenEvent(WebSocketOnOpenEvent webSocketonOpenEvent) {
+        WebSocketServer websocketserver = webSocketonOpenEvent.getWebSocketServer();
+    }
+
+    @EventListener
+    public void webSocketOnMessageEvent(WebSocketOnMessageEvent webSocketOnMessageEvent){
+        String message = webSocketOnMessageEvent.getMessage();
+        JSONObject msgObj;
+        try {
+            msgObj = JSONObject.parseObject(message);
+            String cmd = msgObj.getString("cmd");
+            if ("jdStatus".equals(cmd)) {
+                WebSocketServer websocketserver = webSocketOnMessageEvent.getWebSocketServer();
+                JSONObject jsonObject = new JSONObject();
+                jsonObject.put("cmd", "jdStatus");
+                Random random = new Random();
+                //从数据库中获取并返回
+                JdInfoVo jdInfoVo = jdInfoService.getOne();
+                int status = jdInfoVo.getOnline();
+                jsonObject.put("status", status>0?true:false);
+                websocketserver.getSession().getBasicRemote().sendText(jsonObject.toJSONString());
+            }
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+}

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