Explorar el Código

实现订单查询功能,完成微校学生信息获取

binguoc hace 4 años
padre
commit
2bb6de7ff3

+ 14 - 0
pom.xml

@@ -162,8 +162,22 @@
             <artifactId>java-jwt</artifactId>
             <version>3.8.2</version>
         </dependency>
+
+        <!--    配置缓存依赖-->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-cache</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>net.sf.ehcache</groupId>
+            <artifactId>ehcache</artifactId>
+        </dependency>
+
     </dependencies>
 
+
+
+
     <build>
         <plugins>
             <plugin>

+ 1 - 1
src/main/java/com/chuanghai/repair/RepairsApplication.java

@@ -4,13 +4,13 @@ import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.autoconfigure.domain.EntityScan;
+import org.springframework.cache.annotation.EnableCaching;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.scheduling.annotation.EnableScheduling;
 
 
 @SpringBootApplication
-//@EnableScheduling 设置定时任务
 public class RepairsApplication {
 
     public static void main(String[] args) {

+ 162 - 0
src/main/java/com/chuanghai/repair/auth/CrossInfoCache.java

@@ -0,0 +1,162 @@
+package com.chuanghai.repair.auth;
+
+import java.time.Duration;
+import java.time.LocalDateTime;
+import java.util.Map;
+import java.util.Set;
+import java.util.TimerTask;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.ScheduledThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * @Author: bingo
+ * @Date: 2022/3/2 星期三 9:28
+ * @Description: com.chuanghai.repair.auth
+ * @version: 1.0
+ */
+public class CrossInfoCache {
+    /**
+     * 默认缓存时长 单位s
+     */
+    private static final int DEFAULT_TIMEOUT = 3600;
+
+    /**
+     * 默认缓存容量
+     */
+    private static final int DEFAULT_SIZE = 10000;
+
+    /**
+     * 存储数据
+     */
+    private static final Map<String, Object> data;
+
+    /**
+     * 定时器  用来控制 缓存的超时时间
+     */
+    private static final ScheduledExecutorService executorService;
+
+    // 初始化
+    static {
+        data = new ConcurrentHashMap<>(DEFAULT_SIZE);
+        executorService = new ScheduledThreadPoolExecutor(2);
+    }
+
+    /**
+     * 私有化构造函数
+     */
+    private CrossInfoCache() {
+    }
+
+
+
+    /**
+     * 增加缓存 默认有效时长
+     *
+     * @param key
+     * @param value
+     */
+    public static void put(String key, Object value) {
+        data.put(key, value);
+        executorService.schedule(new TimerTask() {
+            @Override
+            public void run() {
+                remove(key);
+            }
+        }, DEFAULT_TIMEOUT, TimeUnit.SECONDS);
+    }
+
+    /**
+     * 增加缓存  并设置缓存时长 单位 s
+     *
+     * @param key
+     * @param value
+     * @param timeout 缓存时长 单位s
+     */
+    public static void put(String key, Object value, int timeout) {
+        data.put(key, value);
+
+        executorService.schedule(() -> remove(key), timeout, TimeUnit.SECONDS);
+    }
+
+    /**
+     * 增加缓存 并指定过期时间点
+     *
+     * @param key
+     * @param value
+     * @param expireTime 指定过期时间点
+     */
+    public static void put(String key, Object value, LocalDateTime expireTime) {
+        data.put(key, value);
+        LocalDateTime nowTime = LocalDateTime.now();
+        long seconds = Duration.between(nowTime, expireTime).getSeconds();
+        executorService.schedule(() -> remove(key), seconds, TimeUnit.SECONDS);
+    }
+
+    /**
+     * 获取缓存
+     *
+     * @param key
+     * @return
+     */
+    public static Object get(String key) {
+        return data.get(key);
+    }
+
+    /**
+     * 获取当前缓存中 所有的key
+     *
+     * @return
+     */
+    public static Set<String> cacheKeys() {
+        return data.keySet();
+    }
+
+    /**
+     * 获取当前缓存所有内容
+     *
+     * @return
+     */
+    public static Map<String, Object> allCache() {
+        return data;
+    }
+
+    /**
+     * 判断缓存是否包含key
+     *
+     * @param key
+     * @return
+     */
+    public boolean containKey(String key) {
+        return data.containsKey(key);
+    }
+
+    /**
+     * 获取当前缓存大小
+     *
+     * @return
+     */
+    public static int size() {
+        return data.size();
+    }
+
+    /**
+     * 删除缓存
+     *
+     * @param key
+     */
+    public static void remove(String key) {
+        data.remove(key);
+    }
+
+    /**
+     * 清空所有缓存
+     */
+    public static void clear() {
+        if (size() > 0) {
+            data.clear();
+        }
+    }
+
+}

+ 144 - 31
src/main/java/com/chuanghai/repair/controller/LoginController.java

@@ -1,22 +1,44 @@
 package com.chuanghai.repair.controller;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.auth0.jwt.JWT;
+import com.auth0.jwt.interfaces.DecodedJWT;
+import com.chuanghai.repair.auth.CrossInfoCache;
+import com.chuanghai.repair.auth.JSONAuthentication;
 import com.chuanghai.repair.entity.RepairsAdmin;
+import com.chuanghai.repair.entity.RepairsStudent;
 import com.chuanghai.repair.entity.RepairsWork;
 import com.chuanghai.repair.service.RepairsAdminService;
+import com.chuanghai.repair.service.RepairsStudentService;
 import com.chuanghai.repair.service.RepairsWorkService;
 import com.chuanghai.repair.utils.CreateTokenUtil;
+import com.sun.deploy.net.URLEncoder;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.client.RestTemplate;
 import org.springframework.web.context.request.RequestContextHolder;
 import org.springframework.web.context.request.ServletRequestAttributes;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpSession;
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.net.URI;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
 
 /**
  * @Author: bingo
@@ -35,6 +57,9 @@ public class LoginController {
     @Resource(name = "repairsWorkService")
     private RepairsWorkService repairsWorkService;
 
+    @Resource(name = "repairsStudentService")
+    private RepairsStudentService repairsStudentService;
+
     /**
      * 管理员登录
      *
@@ -43,22 +68,19 @@ public class LoginController {
      */
     @ApiOperation("管理员登录")
     @PostMapping(value = "/loginAdmin")
-    public RepairsAdmin loginAdmin(@ApiParam(name = "管理员手机号码", required = true)String phone,@ApiParam(name = "管理员密码", required = true) String password) {
-        RepairsAdmin repairsAdmin =null;
-
+    public String loginAdmin(@ApiParam(name = "管理员手机号码", required = true) String phone,
+                                   @ApiParam(name = "管理员密码", required = true) String password) {
+        String adminIdToken = "";
         try {
-            repairsAdmin =repairsAdminService.loginAdmin(phone, password);
-            String adminToken = CreateTokenUtil.token(repairsAdmin.getAdminName(), repairsAdmin.getAdminPassword());
-            System.out.println(adminToken);
-        }catch (Exception e){
+            RepairsAdmin repairsAdmin = repairsAdminService.loginAdmin(phone, password);
+            adminIdToken = CreateTokenUtil.getToken(String.valueOf(repairsAdmin.getAdminId()));
+        } catch (Exception e) {
             e.printStackTrace();
         }
-        return repairsAdmin;
+        return adminIdToken;
     }
 
 
-
-
     /**
      * 维修工登录
      *
@@ -67,37 +89,128 @@ public class LoginController {
      */
     @ApiOperation("维修工登录")
     @PostMapping(value = "/loginWork")
-    public RepairsWork loginWork(@ApiParam(name = "维修工手机号码", required = true) String phone,@ApiParam(name = "维修工登录密码", required = true) String password) {
-        RepairsWork repairsWork =null;
+    public String loginWork(@ApiParam(name = "维修工手机号码", required = true) String phone,
+                                 @ApiParam(name = "维修工登录密码", required = true) String password) {
+        String workIdToken = "";
         try {
-             repairsWork = repairsWorkService.loginWork(phone, password);
-
-
-        }catch (Exception e){
+            RepairsWork repairsWork = repairsWorkService.loginWork(phone, password);
+            workIdToken = CreateTokenUtil.getToken(String.valueOf(repairsWork.getWorkId()));
+        } catch (Exception e) {
             e.printStackTrace();
         }
-        return repairsWork;
+        return workIdToken;
     }
 
-   /* @RequestMapping(value = "/loginAdmin")
-    public Map<String,Object> loginAdmin(HttpServletRequest request, RepairsAdmin repairsAdmin){
-        HashMap<String,Object> map =new HashMap<String,Object>();
+
+    @GetMapping("/getCardNumber")
+    public JSONObject getCardNumber(String wxcode, String state) {
+        JSONObject cardNumberJson = new JSONObject();
         try {
-            RepairsAdmin loginAdmin = repairsAdminService.loginAdmin(repairsAdmin);
-            HttpSession session = request.getSession();
-            session.setAttribute("RepairsAdmin", loginAdmin);
+            wxcode = "wxcode=" + wxcode + "&";
+            String app_key = "app_key=EE28EE2C93296F4E&";
+            String app_secret = "app_secret=5071958561AA629530AAA31503088330&";
+            String grant_type = "grant_type=authorization_code&";
+            String redirect_uri = "redirect_uri=http://binguo.vaiwan.com/login/getCardNumber";
+            String url = "https://open.wecard.qq.com/connect/oauth2/token?";
+            String accessTokenUrl = url + wxcode + app_key + app_secret + grant_type + redirect_uri;
+            // -------------------------------> 获取Rest客户端实例
+            RestTemplate restTemplate = new RestTemplate();
+            // -------------------------------> (选择性设置)请求头信息
+            // HttpHeaders实现了MultiValueMap接口
+            HttpHeaders httpHeaders = new HttpHeaders();
+            // 设置contentType
+           // httpHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8);
+            httpHeaders.setContentType(MediaType.APPLICATION_JSON);
+            // 给请求header中添加一些数据
+            // ------------------------------->将请求头、请求体数据,放入HttpEntity中
+            // 请求体的类型任选即可;只要保证 请求体 的类型与HttpEntity类的泛型保持一致即可
+            Map<String, Object> paramMap = new HashMap<>();
+            HttpEntity<Map<String, Object>> httpEntity = new HttpEntity<>(paramMap, httpHeaders);
+            StringBuffer paramsURL = new StringBuffer(accessTokenUrl);
+            // 字符数据最好encoding一下;这样一来,某些特殊字符才能传过去(如:flag的参数值就是“&”,不encoding的话,传不过去)
+            // paramsURL.append("?flag=" + URLEncoder.encode("&&", "utf-8"));
+            URI uri = URI.create(paramsURL.toString());
+            //  -------------------------------> 执行请求并返回结果
+            // 此处的泛型  对应 响应体数据   类型;即:这里指定响应体的数据装配为String
+            ResponseEntity<String> response = restTemplate.postForEntity(uri, httpEntity, String.class);
+            JSONObject objParam = JSON.parseObject(response.getBody());
+            String access_token = "";
+            for (Map.Entry<String, Object> entry : objParam.entrySet()) {
+                Object o = entry.getValue();
+                if (o instanceof String) {
+                    if (entry.getKey().equals("access_token")) {
+                        access_token = (String) entry.getValue();
+                    }
+                }
+            }
+            String userInfoUrl = "https://open.wecard.qq.com/connect/oauth/get-user-info?access_token=" + access_token + "&scope=snsapi_base";
+            StringBuffer userInfoURl = new StringBuffer(userInfoUrl);
+            // 字符数据最好encoding一下;这样一来,某些特殊字符才能传过去(如:flag的参数值就是“&”,不encoding的话,传不过去)
+            // paramsURL.append("?flag=" + URLEncoder.encode("&&", "utf-8"));
+            URI urm = URI.create(userInfoURl.toString());
+            // 此处的泛型  对应 响应体数据   类型;即:这里指定响应体的数据装配为String
+            ResponseEntity<String> responsem = restTemplate.postForEntity(urm, httpEntity, String.class);
+            JSONObject obj = JSON.parseObject(responsem.getBody());
+            String studentId = "";
+            String studentName = "";
+            String studentSex = "";
+            String studentPhone = "";
+            String studentOtherPhone = "";
+            String studentClazz = "";
+            String dormNumber = "";
+            String studentDormitory = "";
+            String studentStatus = "1";
+            String studentCampus = "";
+            String cardNumber = "";
+            for (Map.Entry<String, Object> entry : obj.entrySet()) {
+                Object o = entry.getValue();
+                if (o instanceof String) {
+                    if (entry.getKey().equals("card_number")) {
+                        studentId = (String) entry.getValue();
+                    }
+                    if (entry.getKey().equals("gender")) {
+                        studentSex = (String) entry.getValue();
+                    }
+                    if (entry.getKey().equals("name")) {
+                        studentName = (String) entry.getValue();
+                    }
+                    if (entry.getKey().equals("telephone")) {
+                        studentPhone = (String) entry.getValue();
+                        studentPhone = studentPhone.substring(5);
+                    }
+                    if (entry.getKey().equals("class")) {
+                        studentClazz = (String) entry.getValue();
+                    }
+                    if (entry.getKey().equals("dorm_number")) {
+                        dormNumber = (String) entry.getValue();
+                    }
+                    if (entry.getKey().equals("dorm_number")) {
+                        studentDormitory = (String) entry.getValue();
+                    }
+                    if (entry.getKey().equals("campus")) {
+                        studentCampus = (String) entry.getValue();
+                    }
+                    if (entry.getKey().equals("card_number")) {
+                        cardNumber = (String) entry.getValue();
+                    }
+                }
 
-            if(loginAdmin==null) {
-                map.put("flag", false);
-            }else {
-                map.put("flag", true);
             }
-        }catch (Exception e) {
+            RepairsStudent repairsStudent = new RepairsStudent(studentId, studentName, studentSex,
+            studentPhone, studentOtherPhone, studentClazz, dormNumber,
+            studentDormitory, studentStatus, studentCampus,cardNumber);
+            System.out.println(studentId);
+            RepairsStudent student = repairsStudentService.queryByStudentId(studentId);
+            System.out.println(student);
+            if(student==null){
+                repairsStudentService.insertStudent(repairsStudent);
+            }
+            cardNumberJson.put("card_number",cardNumber);
+        } catch (Exception e) {
             e.printStackTrace();
-            map.put("flag", false);
         }
-        return map;}*/
-
+        return cardNumberJson;
+    }
 
 
 }

+ 88 - 1
src/main/java/com/chuanghai/repair/controller/OrderController.java

@@ -6,6 +6,7 @@ import com.chuanghai.repair.entity.RepairsStudent;
 import com.chuanghai.repair.entity.RepairsWork;
 import com.chuanghai.repair.service.RepairsOrderService;
 import com.chuanghai.repair.service.RepairsWorkService;
+import com.chuanghai.repair.utils.CreateTokenUtil;
 import com.sun.xml.internal.ws.encoding.XMLHTTPBindingCodec;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -20,6 +21,7 @@ import org.springframework.web.context.request.RequestContextHolder;
 import org.springframework.web.context.request.ServletRequestAttributes;
 import org.thymeleaf.util.DateUtils;
 import sun.util.calendar.BaseCalendar;
+import sun.util.calendar.CalendarUtils;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
@@ -207,7 +209,7 @@ public class OrderController {
 
             //后期在session中获取学生学号
             RepairsStudent repairsStudent = new RepairsStudent();
-            repairsStudent.setStudentId("200105030708");
+
 
             RepairsWork repairsWork = null;
             RepairsFault repairsFault = new RepairsFault(faultId,null,null,null,orderType);
@@ -226,4 +228,89 @@ public class OrderController {
         }
         return flag;
     }
+
+    /**
+     * 修改订单状态  已完成 orderStatus = 2
+     * @param orderStatus
+     * @param orderId
+     * @return
+     */
+    @ApiOperation("订单已完成")
+    @PostMapping(value = "/updateOrderFinish")
+    public Boolean updateOrderFinish(@ApiParam(name = "订单状态",required = true)String orderStatus,
+                                     @ApiParam(name = "订单ID",required = true)String orderId){
+        Boolean flag = Boolean.FALSE;
+        try{
+            RepairsWork repairsWork = new RepairsWork();
+            repairsWork.setWorkId(Integer.parseInt("1"));
+            RepairsOrder repairsOrder =new RepairsOrder(orderId,null,null,null,
+                    null,null,null,orderStatus,null,
+                    null,null,null,repairsWork,null,null);
+            System.out.println(repairsOrder);
+            ArrayList<RepairsOrder> orderArrayList = new ArrayList<>();
+            orderArrayList.add(repairsOrder);
+            repairsOrderService.updateOrderStatus(orderArrayList);
+            flag = Boolean.TRUE;
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        return flag;
+    }
+
+    /**
+     * 修改订单状态  退单+退单理由   orderStatus = 3
+     * @param orderStatus
+     * @param orderId
+     * @param orderBack
+     * @return
+     */
+    @ApiOperation("订单退回")
+    @PostMapping(value = "/updateOrderBack")
+    public Boolean updateOrderBack( @ApiParam(name = "订单状态",required = true)String orderStatus,
+                                    @ApiParam(name = "订单ID",required = true)String orderId,
+                                    @ApiParam(name = "退回理由",required = true)String orderBack){
+        Boolean flag = Boolean.FALSE;
+        try{
+            RepairsWork repairsWork = new RepairsWork();
+            repairsWork.setWorkId(Integer.parseInt("1"));
+            RepairsOrder repairsOrder =new RepairsOrder(orderId,null,null,null,
+                    null,null,null,orderStatus,null,
+                    null,orderBack,null,repairsWork,null,null);
+            System.out.println(repairsOrder);
+            ArrayList<RepairsOrder> orderArrayList = new ArrayList<>();
+            orderArrayList.add(repairsOrder);
+            repairsOrderService.updateOrderStatus(orderArrayList);
+            flag = Boolean.TRUE;
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        return flag;
+    }
+
+    /**
+     * 修改订单状态  维修工拒绝订单   orderStatus = 0
+     * @param orderStatus
+     * @param orderId
+     * @param
+     * @return
+     */
+    @ApiOperation("订单拒绝")
+    @PostMapping(value = "/updateOrderRefused")
+    public Boolean updateOrderRefused( @ApiParam(name = "订单状态",required = true)String orderStatus,
+                                    @ApiParam(name = "订单ID",required = true)String orderId){
+        Boolean flag = Boolean.FALSE;
+        try{
+            RepairsOrder repairsOrder =new RepairsOrder(orderId,null,null,null,
+                    null,null,null,orderStatus,null,
+                    null,null,null,null,null,null);
+            System.out.println(repairsOrder);
+            ArrayList<RepairsOrder> orderArrayList = new ArrayList<>();
+            orderArrayList.add(repairsOrder);
+            repairsOrderService.updateOrderStatus(orderArrayList);
+            flag = Boolean.TRUE;
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        return flag;
+    }
 }

+ 20 - 12
src/main/java/com/chuanghai/repair/entity/RepairsStudent.java

@@ -15,7 +15,7 @@ public class RepairsStudent {
     /**
      * 学生学号
      */
-    @ApiModelProperty(value = "学生学号")
+    @ApiModelProperty(value = "学生学号") //key:card_number,value:20200210260236
     @Id
     @Column(name = "student_id")
     private String studentId;
@@ -23,21 +23,21 @@ public class RepairsStudent {
     /**
      * 学生名称
      */
-    @ApiModelProperty(value = "学生名称")
+    @ApiModelProperty(value = "学生名称") //key:name,value:刘一凡
     @Column(name = "student_name")
     private String studentName;
 
     /**
      * 学生性别
      */
-    @ApiModelProperty(value = "学生性别 0(男) 1(女)")
+    @ApiModelProperty(value = "学生性别 0(男) 1(女)")//  grade
     @Column(name = "student_sex")
     private String studentSex;
 
     /**
      * 手机号码
      */
-    @ApiModelProperty(value = "学生手机号码")
+    @ApiModelProperty(value = "学生手机号码") //key:telephone,value:(+86)15179443822
     @Column(name = "student_phone")
     private String studentPhone;
 
@@ -51,21 +51,21 @@ public class RepairsStudent {
     /**
      * 学生专业年级班级
      */
-    @ApiModelProperty(value = "学生专业年级班级")
-    @Column(name = "student_professionl_grade_clazz")
-    private String studentProfessionlGradeClazz;
+    @ApiModelProperty(value = "学生专业年级班级")  //key:class,value:软工2020-2
+    @Column(name = "student_clazz")
+    private String studentClazz;
 
     /**
      * 学生宿舍
      */
-    @ApiModelProperty(value = "学生宿舍")
-    @Column(name = "student_build_floor_room")
-    private String studentBuildFloorRoom;
+    @ApiModelProperty(value = "学生宿舍")    // key:dorm_number,value:15栋413
+    @Column(name = "dorm_number")
+    private String dormNumber;
 
     /**
      * 宿舍ID拼接
      */
-    @ApiModelProperty(value = "宿舍ID拼接")
+    @ApiModelProperty(value = "宿舍ID拼接")   //key:dorm_number,value:15栋413
     @Column(name = "student_dormitory")
     private String studentDormitory;
 
@@ -79,7 +79,15 @@ public class RepairsStudent {
     /**
      * 学生校区0(南校区)1(北校区)
      */
-    @ApiModelProperty(value ="学生校区0(南校区)1(北校区)" )
+    @ApiModelProperty(value ="学生校区0(南校区)1(北校区)" ) //key:campus,value:
     @Column(name = "student_campus")
     private String studentCampus;
+
+
+    /**
+     * 校园卡编号
+     */
+    @ApiModelProperty(value ="校园卡编号" ) //key:campus,value:
+    @Column(name = "card_number")
+    private String cardNumber;
 }

+ 6 - 0
src/main/java/com/chuanghai/repair/mapper/RepairsOrderMapper.java

@@ -75,4 +75,10 @@ public interface RepairsOrderMapper  {
      */
     List<RepairsOrder> queryAllOrderById(String studentId,String workId,String campus);
 
+    /**
+     * 订单修改状态   已完成 退单状态
+     *
+     */
+    void updateOrderStatus(List<RepairsOrder> orderList);
+
 }

+ 12 - 0
src/main/java/com/chuanghai/repair/mapper/RepairsStudentMapper.java

@@ -5,4 +5,16 @@ import org.apache.ibatis.annotations.Mapper;
 
 @Mapper
 public interface RepairsStudentMapper {
+    /**
+     * 新增学生信息
+     * @param repairsStudent
+     */
+    void insertStudent(RepairsStudent repairsStudent);
+
+    /**
+     * 查询指定学号的学生
+     * @param studentId
+     * @return
+     */
+    RepairsStudent queryByStudentId(String studentId);
 }

+ 7 - 0
src/main/java/com/chuanghai/repair/service/RepairsOrderService.java

@@ -81,4 +81,11 @@ public interface RepairsOrderService {
      * @return
      */
     List<RepairsOrder> queryAllOrderById(String studentId,String workId,String campus)throws  Exception;
+
+    /**
+     * 订单修改状态   已完成 退单状态
+     * @param
+     * @param
+     */
+    void updateOrderStatus(List<RepairsOrder> orderList)throws Exception;
 }

+ 15 - 0
src/main/java/com/chuanghai/repair/service/RepairsStudentService.java

@@ -1,5 +1,7 @@
 package com.chuanghai.repair.service;
 
+import com.chuanghai.repair.entity.RepairsStudent;
+
 /**
  * @Author: bingo
  * @Date: 2022/2/23 星期三 17:30
@@ -7,4 +9,17 @@ package com.chuanghai.repair.service;
  * @version: 1.0
  */
 public interface RepairsStudentService {
+
+    /**
+     * 新增学生信息
+     * @param repairsStudent
+     */
+    void insertStudent(RepairsStudent repairsStudent)throws  Exception;
+
+    /**
+     * 查询指定学号的学生
+     * @param studentId
+     * @return
+     */
+    RepairsStudent queryByStudentId(String studentId)throws Exception;
 }

+ 4 - 1
src/main/java/com/chuanghai/repair/service/RepairsWorkService.java

@@ -1,6 +1,8 @@
 package com.chuanghai.repair.service;
 
 import com.chuanghai.repair.entity.RepairsWork;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.data.jpa.repository.JpaRepository;
 
 import java.util.List;
 
@@ -10,7 +12,7 @@ import java.util.List;
  * @Description: com.chuanghai.repair.service
  * @version: 1.0
  */
-public interface RepairsWorkService {
+public interface RepairsWorkService  {
 
     /**
      * 维修工登录
@@ -19,6 +21,7 @@ public interface RepairsWorkService {
      * @return
      * @throws Exception
      */
+
     RepairsWork loginWork(String phone, String password)throws Exception;
 
     /**

+ 9 - 0
src/main/java/com/chuanghai/repair/service/ServiceImpl/RepairsOrderServiceImpl.java

@@ -108,4 +108,13 @@ public class RepairsOrderServiceImpl implements RepairsOrderService {
         return repairsOrderMapper.queryAllOrderById(studentId,workId,campus);
     }
 
+
+    /**
+     * 订单修改状态   已完成 退单状态+退单理由
+     * @param
+     * @param
+     */
+   public void updateOrderStatus(List<RepairsOrder> orderList)throws Exception{
+        repairsOrderMapper.updateOrderStatus(orderList);
+    }
 }

+ 20 - 0
src/main/java/com/chuanghai/repair/service/ServiceImpl/RepairsStudentServiceImpl.java

@@ -1,5 +1,6 @@
 package com.chuanghai.repair.service.ServiceImpl;
 
+import com.chuanghai.repair.entity.RepairsStudent;
 import com.chuanghai.repair.mapper.RepairsStudentMapper;
 import com.chuanghai.repair.service.RepairsStudentService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -18,4 +19,23 @@ public class RepairsStudentServiceImpl implements RepairsStudentService {
 
     @Resource
     private RepairsStudentMapper repairsStudentMapper;
+
+    /**
+     * 新增学生信息
+     * @param repairsStudent
+     * @throws Exception
+     */
+    @Override
+    public void insertStudent(RepairsStudent repairsStudent) throws Exception {
+        repairsStudentMapper.insertStudent(repairsStudent);
+    }
+
+    /**
+     * 查询指定学号的学生
+     * @param studentId
+     * @return
+             */
+    public RepairsStudent queryByStudentId(String studentId)throws Exception{
+        return repairsStudentMapper.queryByStudentId(studentId);
+    }
 }

+ 3 - 1
src/main/java/com/chuanghai/repair/service/ServiceImpl/RepairsWorkServiceImpl.java

@@ -5,6 +5,7 @@ import com.chuanghai.repair.mapper.RepairsWorkMapper;
 import com.chuanghai.repair.service.RepairsWorkService;
 import io.swagger.annotations.ApiParam;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -17,7 +18,7 @@ import java.util.List;
  * @version: 1.0
  */
 @Service("repairsWorkService")
-public class RepairsWorkServiceImpl implements RepairsWorkService {
+public class RepairsWorkServiceImpl implements RepairsWorkService  {
 
     @Resource
     private RepairsWorkMapper repairsWorkMapper;
@@ -28,6 +29,7 @@ public class RepairsWorkServiceImpl implements RepairsWorkService {
      * @param password
      * @return
      */
+
     @Override
     public RepairsWork loginWork(String phone, String password) throws Exception{
         return repairsWorkMapper.loginWork(phone,password);

+ 11 - 24
src/main/java/com/chuanghai/repair/utils/CreateTokenUtil.java

@@ -22,7 +22,7 @@ public class CreateTokenUtil {
     //token秘钥
     private static final String TOKEN_SECRET = "ZCfasfhuaUUHufguGuwu2020BQWE";
 
-    public static String token (String username,String password){
+    public static String getToken (String userId){
 
         String token = "";
         try {
@@ -37,8 +37,8 @@ public class CreateTokenUtil {
             //携带username,password信息,生成签名
             token = JWT.create()
                     .withHeader(header)
-                    .withClaim("username",username)
-                    .withClaim("password",password).withExpiresAt(date)
+                  //  .withClaim("username",username)
+                    .withClaim("userId",userId).withExpiresAt(date)
                     .sign(algorithm);
         }catch (Exception e){
             e.printStackTrace();
@@ -47,32 +47,19 @@ public class CreateTokenUtil {
         return token;
     }
 
-    public static Boolean verify(String token){
-        /**
-         * @desc   验证token,通过返回true
-         * @params [token]需要校验的串
-         **/
 
-        try {
-            Algorithm algorithm = Algorithm.HMAC256(TOKEN_SECRET);
-                JWTVerifier verifier = JWT.require(algorithm).build();
-            DecodedJWT jwt = verifier.verify(token);
-            return true;
-        }catch (Exception e){
-            e.printStackTrace();
-            return  false;
-        }
-    }
-    public static void decryption(String token){
 
+    public static String verify(String token,String userId) {
+        return JWT.decode(token).getClaim(userId).asString();
     }
+
     public static void main(String[] args) {
-        String username ="18214982265";
-        String password = "123456";
-        String token = token(username,password);
+        String id ="1003";
+        String userId = "userId";
+        String token = getToken(id);
         System.out.println(token);
-        boolean b = verify("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwYXNzd29yZCI6IjEyMzQ1NiIsImV4cCI6MTY0NjIxMTI0N30.IUO7y5SYxY9vDm6u7p-uUnswH630W-vTkay3kE-3BqY");
-        System.out.println(b);
+        String s = verify(token,userId);
+        System.out.println(s);
     }
 }
 

+ 32 - 7
src/main/resources/mapper/RepairsOrderMapper.xml

@@ -36,7 +36,7 @@
 <!--        订单与学生之间是  N:1 关系-->
         <association  property="repairsStudent"  javaType="com.chuanghai.repair.entity.RepairsStudent">
             <id column="student_id" property="studentId"></id>
-            <result column="student_build_floor_room" property="studentBuildFloorRoom" jdbcType="VARCHAR"/>
+            <result column="dorm_number" property="dormNumber" jdbcType="VARCHAR"/>
         </association >
 <!--        订单与维修工之间是  N:1 关系-->
         <association  property="repairsWork"  javaType="com.chuanghai.repair.entity.RepairsWork">
@@ -52,7 +52,7 @@
 
 <!--    通过时间查询订单信息-->
         <select id="queryAllOrderByDate" parameterType="java.lang.String" resultMap="OrderFaultStudentMap">
-            select od.order_id, od.order_status,od.order_commit_time, fa.fault_name,st.student_build_floor_room, od.order_expected_time
+            select od.order_id, od.order_status,od.order_commit_time, fa.fault_name,st.dorm_number, od.order_expected_time
                 from repairs_order od ,repairs_student st ,repairs_fault fa
             <trim prefix="where" prefixOverrides="and" suffix="" suffixOverrides="">
                 od.student_id = st.student_id
@@ -65,7 +65,7 @@
 
     <!--    通过ID查询订单信息-->
     <select id="queryAllOrderById" parameterType="java.lang.String" resultMap="OrderFaultStudentMap">
-        select od.order_id, od.order_status,od.order_commit_time, fa.fault_name,st.student_build_floor_room, od.order_expected_time
+        select od.order_id, od.order_status,od.order_commit_time, fa.fault_name,st.dorm_number, od.order_expected_time
         from repairs_order od ,repairs_student st ,repairs_fault fa
         <trim prefix="where" prefixOverrides="and" suffix="" suffixOverrides="">
             od.student_id = st.student_id
@@ -156,10 +156,7 @@
 
 <!--    查询各个校区、类型的订单  木工  水电工  空调工-->
     <select id="queryOrderByType" parameterType="java.lang.String" resultType="java.lang.String" >
-<!--        select od.order_id from repairs_order od,repairs_fault fa-->
-<!--        where od.fault_id = fa.fault_id-->
-<!--        and order_status = 0-->
-<!--        and fa.fault_type =#{orderType}-->
+
 
         select od.order_id from repairs_order od ,repairs_student st
         where od.student_id = st.student_id
@@ -168,5 +165,33 @@
         and st.student_campus = #{campus}
     </select>
 
+<!--    订单修改状态   已完成 退单  拒绝状态-->
+    <update id="updateOrderStatus" parameterType="java.util.List" >
+        update repairs_order
+        <trim prefix="set" suffixOverrides=",">
+            <trim prefix="order_status=case" suffix="end,">
+                <foreach collection="list" item="item" index="index">
+                    when order_id = #{item.orderId} then #{item.orderStatus}
+                </foreach>
+            </trim>
+            <trim prefix="order_back=case" suffix="end,">
+                <foreach collection="list" item="item" index="index">
+                    when order_id = #{item.orderId} then #{item.orderBack}
+                </foreach>
+            </trim>
+            <trim prefix="work_id=case" suffix="end,">
+                <foreach collection="list" item="item" index="index">
+                    <if test="item.repairsWork.workId==null “">
+                        when order_id = #{item.orderId} then #{item.repairsWork.workId}
+                    </if>
+                </foreach>
+            </trim>
+        </trim>
+        where order_id in
+        <foreach collection="list" index="index" item="item"
+                 separator="," open="(" close=")">
+            #{item.orderId,jdbcType=VARCHAR}
+        </foreach>
+    </update>
 
 </mapper>

+ 13 - 2
src/main/resources/mapper/RepairsStudentMapper.xml

@@ -10,10 +10,21 @@
         <result column="student_sex" property="studentSex" jdbcType="VARCHAR"/>
         <result column="student_phone" property="studentPhone" jdbcType="VARCHAR"/>
         <result column="student_other_phone" property="studentOtherPhone" jdbcType="VARCHAR"/>
-        <result column="student_professionl_grade_clazz" property="studentProfessionlGradeClazz" jdbcType="VARCHAR"/>
-        <result column="student_build_floor_room" property="studentBuildFloorRoom" jdbcType="VARCHAR"/>
+        <result column="student_clazz" property="studentClazz" jdbcType="VARCHAR"/>
+        <result column="dorm_number" property="dormNumber" jdbcType="VARCHAR"/>
         <result column="student_dormitory" property="studentDormitory" jdbcType="VARCHAR"/>
         <result column="student_status" property="studentStatus" jdbcType="VARCHAR"/>
         <result column="student_campus" property="studentCampus" jdbcType="VARCHAR"/>
+        <result column="card_number" property="cardNumber" jdbcType="VARCHAR"/>
     </resultMap>
+<!--    新增学生信息-->
+    <insert id="insertStudent" parameterType="com.chuanghai.repair.entity.RepairsStudent">
+        insert into repairs_student values(#{studentId},#{studentName},#{studentSex},#{studentPhone},#{studentOtherPhone},
+                        #{studentClazz},#{dormNumber},#{studentDormitory},#{studentStatus},#{studentCampus},#{cardNumber})
+    </insert>
+
+<!--    查询指定学号-->
+    <select id="queryByStudentId" parameterType="java.lang.String" resultMap="BaseResultMap">
+        select * from  repairs_student where student_id = #{studentId}
+    </select>
 </mapper>