ソースを参照

添加工具类

yq 3 年 前
コミット
4e46231baa

+ 1 - 1
src/main/java/com/usky/dxtop/MysqlGenerator.java

@@ -43,7 +43,7 @@
 //        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
 //        // strategy.setTablePrefix("t_"); // 表名前缀
 //        strategy.setEntityLombokModel(true); //使用lombok
-//        strategy.setInclude("staff_radio");  // 逆向工程使用的表   如果要生成多个,这里可以传入String[]
+//        strategy.setInclude("staff","dept");  // 逆向工程使用的表   如果要生成多个,这里可以传入String[]
 //        mpg.setStrategy(strategy);
 //
 //        //5、执行

+ 27 - 21
src/main/java/com/usky/dxtop/common/utils/http/HttpUtils.java

@@ -1,25 +1,17 @@
 package com.usky.dxtop.common.utils.http;
 
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.PrintWriter;
+import com.usky.dxtop.common.constant.Constants;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.net.ssl.*;
+import java.io.*;
 import java.net.ConnectException;
 import java.net.SocketTimeoutException;
 import java.net.URL;
 import java.net.URLConnection;
 import java.security.cert.X509Certificate;
-import javax.net.ssl.HostnameVerifier;
-import javax.net.ssl.HttpsURLConnection;
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLSession;
-import javax.net.ssl.TrustManager;
-import javax.net.ssl.X509TrustManager;
-
-import com.usky.dxtop.common.constant.Constants;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import java.util.Map;
 
 
 /**
@@ -38,9 +30,9 @@ public class HttpUtils
      * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
      * @return 所代表远程资源的响应结果
      */
-    public static String sendGet(String url, String param)
+    public static String sendGet(String url, String param, Map<String,String> map)
     {
-        return sendGet(url, param, Constants.UTF8);
+        return sendGet(url, param, Constants.UTF8,map);
     }
 
     /**
@@ -51,7 +43,7 @@ public class HttpUtils
      * @param contentType 编码类型
      * @return 所代表远程资源的响应结果
      */
-    public static String sendGet(String url, String param, String contentType)
+    public static String sendGet(String url, String param, String contentType, Map<String,String> map)
     {
         StringBuilder result = new StringBuilder();
         BufferedReader in = null;
@@ -64,6 +56,11 @@ public class HttpUtils
             connection.setRequestProperty("accept", "*/*");
             connection.setRequestProperty("connection", "Keep-Alive");
             connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
+            if (null != map && !map.isEmpty()){
+                for (String key:map.keySet()) {
+                    connection.setRequestProperty(key,map.get(key));
+                }
+            }
             connection.connect();
             in = new BufferedReader(new InputStreamReader(connection.getInputStream(), contentType));
             String line;
@@ -113,7 +110,7 @@ public class HttpUtils
      * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
      * @return 所代表远程资源的响应结果
      */
-    public static String sendPost(String url, String param)
+    public static String sendPost(String url, String param, Map<String,String> map)
     {
         PrintWriter out = null;
         BufferedReader in = null;
@@ -131,6 +128,11 @@ public class HttpUtils
             conn.setRequestProperty("contentType", "utf-8");
             conn.setDoOutput(true);
             conn.setDoInput(true);
+            if (null != map && !map.isEmpty()){
+                for (String key:map.keySet()) {
+                    conn.setRequestProperty(key,map.get(key));
+                }
+            }
             out = new PrintWriter(conn.getOutputStream());
             out.print(param);
             out.flush();
@@ -179,7 +181,7 @@ public class HttpUtils
         return result.toString();
     }
 
-    public static String sendSSLPost(String url, String param)
+    public static String sendSSLPost(String url, String param, Map<String,String> map)
     {
         StringBuilder result = new StringBuilder();
         String urlNameString = url + "?" + param;
@@ -195,9 +197,13 @@ public class HttpUtils
             conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
             conn.setRequestProperty("Accept-Charset", "utf-8");
             conn.setRequestProperty("contentType", "utf-8");
+            if (null != map && !map.isEmpty()){
+                for (String key:map.keySet()) {
+                    conn.setRequestProperty(key,map.get(key));
+                }
+            }
             conn.setDoOutput(true);
             conn.setDoInput(true);
-
             conn.setSSLSocketFactory(sc.getSocketFactory());
             conn.setHostnameVerifier(new TrustAnyHostnameVerifier());
             conn.connect();

+ 1 - 1
src/main/java/com/usky/dxtop/common/utils/ip/AddressUtils.java

@@ -36,7 +36,7 @@ public class AddressUtils
         {
             try
             {
-                String rspStr = HttpUtils.sendGet(IP_URL, "ip=" + ip + "&json=true", Constants.GBK);
+                String rspStr = HttpUtils.sendGet(IP_URL, "ip=" + ip + "&json=true", Constants.GBK,null);
                 if (StringUtils.isEmpty(rspStr))
                 {
                     log.error("获取地理位置异常 {}", ip);

+ 38 - 0
src/main/java/com/usky/dxtop/common/utils/sign/Sha1.java

@@ -0,0 +1,38 @@
+package com.usky.dxtop.common.utils.sign;
+
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+
+/**
+ * @author yq
+ * @date 2021/9/28 15:07
+ */
+public class Sha1 {
+
+    public static String getSha1(String str) {
+
+        MessageDigest md = null;
+        String outStr = null;
+        try {
+            md = MessageDigest.getInstance("SHA-1");
+            byte[] digest = md.digest(str.getBytes());
+            outStr = byteToString(digest);
+        } catch (NoSuchAlgorithmException e) {
+            throw new RuntimeException(e);
+        }
+        return outStr;
+    }
+
+    private static String byteToString(byte[] digest) {
+        StringBuilder buf = new StringBuilder();
+        for (int i = 0; i < digest.length; i++) {
+            String tempStr = Integer.toHexString(digest[i] & 0xff);
+            if (tempStr.length() == 1) {
+                buf.append("0").append(tempStr);
+            } else {
+                buf.append(tempStr);
+            }
+        }
+        return buf.toString().toLowerCase();
+    }
+}

+ 21 - 0
src/main/java/com/usky/dxtop/controller/web/DeptController.java

@@ -0,0 +1,21 @@
+package com.usky.dxtop.controller.web;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author yq
+ * @since 2021-09-28
+ */
+@Controller
+@RequestMapping("/dxtop/dept")
+public class DeptController {
+
+}
+

+ 10 - 41
src/main/java/com/usky/dxtop/controller/web/StaffController.java

@@ -1,52 +1,21 @@
 package com.usky.dxtop.controller.web;
 
-import com.usky.dxtop.common.core.domain.AjaxResult;
-import com.usky.dxtop.model.StaffRadio;
-import com.usky.dxtop.service.StaffRadioService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
 
-import java.util.List;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
 
 /**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
  * @author yq
- * @date 2021/9/23 13:34
+ * @since 2021-09-28
  */
-@RestController
+@Controller
 @RequestMapping("/dxtop/staff")
 public class StaffController {
 
-    @Autowired
-    private StaffRadioService staffRadioService;
-
-    /**
-     * TODO 人员信息后面要写到人员模块的controller
-     * @return
-     */
-    @RequestMapping("count")
-    public AjaxResult count(){
-        return AjaxResult.success(100);
-    }
-
-
-    /**
-     * 批量新增
-     * @param list
-     * @return
-     */
-    @PostMapping()
-    public AjaxResult addList(@RequestBody List<StaffRadio> list){
-        staffRadioService.addList(list);
-        return AjaxResult.success();
-    }
-
-    /**
-     * 人员比例
-     * @return
-     */
-    @GetMapping("staffRadio")
-    public AjaxResult staffRadio(){
-        return AjaxResult.success(staffRadioService.staffRadio());
-    }
-
 }
+

+ 29 - 0
src/main/java/com/usky/dxtop/controller/web/TestController.java

@@ -0,0 +1,29 @@
+package com.usky.dxtop.controller.web;
+
+import com.alibaba.fastjson.JSONObject;
+import com.usky.dxtop.service.api.SmApi;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.TreeMap;
+
+/**
+ * @author yq
+ * @date 2021/9/28 15:39
+ */
+@RestController
+public class TestController {
+
+
+    @RequestMapping("test")
+    public void test(){
+        String personUrl = String.format("%s?page=%s&size=%s", SmApi.PERSON_URL, 1, 100);
+        TreeMap<String, Object> treeMap = SmApi.generatePersonParam(null, null, null, null);
+        System.out.println(personUrl);
+        System.out.println(JSONObject.toJSONString(treeMap));
+        System.out.println(SmApi.sign(treeMap));
+//        String s = HttpUtils.sendPost(personUrl, JSONObject.toJSONString(treeMap), SmApi.sign(treeMap));
+//        System.out.println(s);
+
+    }
+}

+ 1 - 1
src/main/java/com/usky/dxtop/controller/web/WxController.java

@@ -32,7 +32,7 @@ public class WxController {
         treeMap.put("secret", TopApi.WX_APP_SECRET);
         treeMap.put("js_code", jsCode);
         treeMap.put("grant_type", "authorization_code");
-        String result = HttpUtils.sendGet(WX_LOGIN_URL, TopApi.joinParam(treeMap));
+        String result = HttpUtils.sendGet(WX_LOGIN_URL, TopApi.joinParam(treeMap),null);
         JSONObject obj= JSON.parseObject(result);
         log.info("获取到的相应"+obj);
         String openId = "";

+ 17 - 0
src/main/java/com/usky/dxtop/mapper/DeptMapper.java

@@ -0,0 +1,17 @@
+package com.usky.dxtop.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.usky.dxtop.model.Dept;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author yq
+ * @since 2021-09-28
+ */
+public interface DeptMapper extends BaseMapper<Dept> {
+
+}

+ 17 - 0
src/main/java/com/usky/dxtop/mapper/StaffMapper.java

@@ -0,0 +1,17 @@
+package com.usky.dxtop.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.usky.dxtop.model.Staff;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author yq
+ * @since 2021-09-28
+ */
+public interface StaffMapper extends BaseMapper<Staff> {
+
+}

+ 61 - 0
src/main/java/com/usky/dxtop/model/Dept.java

@@ -0,0 +1,61 @@
+package com.usky.dxtop.model;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author yq
+ * @since 2021-09-28
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class Dept implements Serializable {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * id
+     */
+    private Long id;
+
+    private Integer deptSort;
+
+    private Integer enabled;
+
+    private Integer subCount;
+
+    private Integer hasChildren;
+
+    /**
+     * 部门
+     */
+    private String label;
+
+    private String name;
+
+    private Integer pid;
+
+    private Integer leaf;
+
+    private LocalDateTime createTime;
+
+    /**
+     * 创建人
+     */
+    private String createBy;
+
+    private String updateBy;
+
+    private LocalDateTime updateTime;
+
+
+}

+ 61 - 0
src/main/java/com/usky/dxtop/model/Staff.java

@@ -0,0 +1,61 @@
+package com.usky.dxtop.model;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author yq
+ * @since 2021-09-28
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class Staff implements Serializable {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * id
+     */
+    private Long id;
+
+    private Integer deptSort;
+
+    private Integer enabled;
+
+    private Integer subCount;
+
+    private Integer hasChildren;
+
+    /**
+     * 部门
+     */
+    private String label;
+
+    private String name;
+
+    private Integer pid;
+
+    private Integer leaf;
+
+    private LocalDateTime createTime;
+
+    /**
+     * 创建人
+     */
+    private String createBy;
+
+    private String updateBy;
+
+    private LocalDateTime updateTime;
+
+
+}

+ 17 - 0
src/main/java/com/usky/dxtop/service/DeptService.java

@@ -0,0 +1,17 @@
+package com.usky.dxtop.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.usky.dxtop.model.Dept;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author yq
+ * @since 2021-09-28
+ */
+public interface DeptService extends IService<Dept> {
+
+}

+ 17 - 0
src/main/java/com/usky/dxtop/service/StaffService.java

@@ -0,0 +1,17 @@
+package com.usky.dxtop.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.usky.dxtop.model.Staff;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author yq
+ * @since 2021-09-28
+ */
+public interface StaffService extends IService<Staff> {
+
+}

+ 90 - 0
src/main/java/com/usky/dxtop/service/api/SmApi.java

@@ -0,0 +1,90 @@
+package com.usky.dxtop.service.api;
+
+import com.usky.dxtop.common.utils.sign.Sha1;
+import com.usky.dxtop.common.utils.uuid.IdUtils;
+
+import java.util.*;
+
+/**
+ * @author yq
+ * @date 2021/9/28 14:17
+ */
+public class SmApi {
+
+    private static final String URL = "http://114.55.24.6:8086";
+
+
+    private static final String KEY = "DMERPYT!@#$QWER2021+{:>";
+
+    private static final String SIGN_HEAD = "X_YT_ACCESS_TOKEN";
+    /**
+     * 人员信息
+     */
+    public static final String PERSON_URL = String.format("%s%s",URL,"/api/thirdparty/v1/user/getzkusers");
+    /**
+     * 部门信息
+     */
+    public static final String DEPT_URL = String.format("%s%s",URL,"/api/thirdparty/v1/user/getzkdeps");
+
+
+
+    public static Map<String,String> sign(TreeMap<String,Object> treeMap){
+        TreeMap<String,Object> signMap = new TreeMap<>();
+        signMap.put("timestamp",treeMap.get("timestamp"));
+        signMap.put("nonce", treeMap.get("nonce"));
+        signMap.put("key", KEY);
+        StringBuilder buf = new StringBuilder();
+        for (Map.Entry<String, Object> entry : signMap.entrySet()) {
+            buf.append(entry.getValue());
+        }
+        System.out.println(signMap);
+        System.out.println(buf.toString());
+        Map<String,String> head = new HashMap<>();
+        head.put(SIGN_HEAD, Sha1.getSha1(buf.toString()));
+        return head;
+    }
+
+
+    /**
+     * 公用请求体
+     * @return
+     */
+    public static TreeMap<String, Object> commonQuery(){
+        TreeMap<String, Object> tMap = new TreeMap<>();
+        tMap.put("timestamp", System.currentTimeMillis());
+        tMap.put("nonce", IdUtils.simpleUUID());
+        return tMap;
+    }
+
+    /**
+     * 人员信息接口
+     * @param id
+     * @param deptIds
+     * @param createTime
+     * @param blurry
+     * @return
+     */
+    public static TreeMap<String, Object> generatePersonParam(String id, List<String> deptIds, List<Date> createTime,String blurry){
+        TreeMap<String, Object> data = new TreeMap<>();
+        data.put("id",id);
+        data.put("createTime",createTime);
+        data.put("deptIds",deptIds);
+        data.put("blurry",blurry);
+        TreeMap<String, Object> treeMap = commonQuery();
+        treeMap.put("query",data);
+        return treeMap;
+    }
+
+
+    public static TreeMap<String, Object> generateDeptParam(List<Date> createTime,String name,Long pid,Boolean enabled){
+        TreeMap<String, Object> data = new TreeMap<>();
+        data.put("createTime",createTime);
+        data.put("name",name);
+        data.put("pid",pid);
+        data.put("enabled",enabled);
+        TreeMap<String, Object> treeMap = commonQuery();
+        treeMap.put("query",data);
+        return treeMap;
+    }
+
+}

+ 21 - 0
src/main/java/com/usky/dxtop/service/impl/DeptServiceImpl.java

@@ -0,0 +1,21 @@
+package com.usky.dxtop.service.impl;
+
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.usky.dxtop.mapper.DeptMapper;
+import com.usky.dxtop.model.Dept;
+import com.usky.dxtop.service.DeptService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author yq
+ * @since 2021-09-28
+ */
+@Service
+public class DeptServiceImpl extends ServiceImpl<DeptMapper, Dept> implements DeptService {
+
+}

+ 2 - 2
src/main/java/com/usky/dxtop/service/impl/OrderServiceImpl.java

@@ -178,7 +178,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
     public String callTopFindOrderInfoApi(String orderNumber) {
         TreeMap<String, String> param = TopApi.generateDealSelectParam(orderNumber, null, null, null);
         String format = TopApi.generateParam(param);
-        String result = HttpUtils.sendGet(TopApi.DEAL_SELECT_URL, format);
+        String result = HttpUtils.sendGet(TopApi.DEAL_SELECT_URL, format,null);
         Order order = one(orderNumber);
         //处理订单
         checkOrder(order, result,JSONObject.toJSONString(param));
@@ -404,7 +404,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                 null,null,openId,order.getTopPayType(),null,appId,
                 null,null,null,null);
         String unify = TopApi.generateParam(params);
-        String result = HttpUtils.sendGet(TopApi.UNIFY_URL, unify);
+        String result = HttpUtils.sendGet(TopApi.UNIFY_URL, unify,null);
         JSONObject obj= JSON.parseObject(result);
         String payInfo;
         if ("0000".equals(obj.get("status"))){

+ 21 - 0
src/main/java/com/usky/dxtop/service/impl/StaffServiceImpl.java

@@ -0,0 +1,21 @@
+package com.usky.dxtop.service.impl;
+
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.usky.dxtop.mapper.StaffMapper;
+import com.usky.dxtop.model.Staff;
+import com.usky.dxtop.service.StaffService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author yq
+ * @since 2021-09-28
+ */
+@Service
+public class StaffServiceImpl extends ServiceImpl<StaffMapper, Staff> implements StaffService {
+
+}

+ 33 - 0
src/main/java/com/usky/dxtop/service/job/SmJob.java

@@ -0,0 +1,33 @@
+package com.usky.dxtop.service.job;
+
+import com.alibaba.fastjson.JSONObject;
+import com.usky.dxtop.common.utils.http.HttpUtils;
+import com.usky.dxtop.service.api.SmApi;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import java.util.TreeMap;
+
+/**
+ * 世贸定时任务
+ * @author yq
+ * @date 2021/9/28 14:47
+ */
+@Component
+@Slf4j
+public class SmJob {
+
+
+    public void personExecute(){
+        boolean isNext = true;
+        int page = 1;
+        int size = 100;
+        while (isNext){
+            String personUrl = String.format("%s?page=%s&size=%s", SmApi.PERSON_URL, page, size);
+            TreeMap<String, Object> treeMap = SmApi.generatePersonParam(null, null, null, null);
+            String s = HttpUtils.sendPost(personUrl, JSONObject.toJSONString(treeMap), SmApi.sign(treeMap));
+            System.out.println(s);
+            break;
+        }
+    }
+}

+ 22 - 0
src/main/resources/mapper/DeptMapper.xml

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.usky.dxtop.mapper.DeptMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.usky.dxtop.model.Dept">
+        <id column="id" property="id" />
+        <result column="dept_sort" property="deptSort" />
+        <result column="enabled" property="enabled" />
+        <result column="sub_count" property="subCount" />
+        <result column="has_children" property="hasChildren" />
+        <result column="label" property="label" />
+        <result column="name" property="name" />
+        <result column="pid" property="pid" />
+        <result column="leaf" property="leaf" />
+        <result column="create_time" property="createTime" />
+        <result column="create_by" property="createBy" />
+        <result column="update_by" property="updateBy" />
+        <result column="update_time" property="updateTime" />
+    </resultMap>
+
+</mapper>

+ 22 - 0
src/main/resources/mapper/StaffMapper.xml

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.usky.dxtop.mapper.StaffMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.usky.dxtop.model.Staff">
+        <id column="id" property="id" />
+        <result column="dept_sort" property="deptSort" />
+        <result column="enabled" property="enabled" />
+        <result column="sub_count" property="subCount" />
+        <result column="has_children" property="hasChildren" />
+        <result column="label" property="label" />
+        <result column="name" property="name" />
+        <result column="pid" property="pid" />
+        <result column="leaf" property="leaf" />
+        <result column="create_time" property="createTime" />
+        <result column="create_by" property="createBy" />
+        <result column="update_by" property="updateBy" />
+        <result column="update_time" property="updateTime" />
+    </resultMap>
+
+</mapper>

+ 25 - 0
src/test/java/com/usky/dxtop/SmApiTest.java

@@ -0,0 +1,25 @@
+package com.usky.dxtop;
+
+import com.usky.dxtop.service.job.SmJob;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+/**
+ * @author yq
+ * @date 2021/9/28 15:11
+ */
+@RunWith(SpringRunner.class)
+@SpringBootTest
+public class SmApiTest {
+
+    @Autowired
+    private SmJob smJob;
+
+    @Test
+    public void personJob(){
+        smJob.personExecute();
+    }
+}