xiongzhu 6 anni fa
parent
commit
743213d08c

+ 12 - 0
pom.xml

@@ -342,6 +342,18 @@
             <version>3.1.0</version>
         </dependency>
 
+
+        <dependency>
+            <groupId>com.google.zxing</groupId>
+            <artifactId>core</artifactId>
+            <version>3.3.0</version>
+        </dependency>
+        <dependency>
+            <groupId>com.google.zxing</groupId>
+            <artifactId>javase</artifactId>
+            <version>3.3.0</version>
+        </dependency>
+
     </dependencies>
 
 </project>

+ 2 - 1
src/main/java/com/izouma/zhumj/config/GenericProperties.java

@@ -6,5 +6,6 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
 @Data
 @ConfigurationProperties(prefix = "generic")
 public class GenericProperties {
-    private String host;
+    private String serverAddress;
+    private String mpAddress;
 }

+ 11 - 5
src/main/java/com/izouma/zhumj/service/AccessTicketService.java

@@ -1,5 +1,6 @@
 package com.izouma.zhumj.service;
 
+import com.izouma.zhumj.config.GenericProperties;
 import com.izouma.zhumj.domain.AccessTicket;
 import com.izouma.zhumj.domain.CheckinInfo;
 import com.izouma.zhumj.domain.User;
@@ -20,6 +21,8 @@ import org.springframework.stereotype.Service;
 import org.springframework.ui.Model;
 
 import javax.servlet.http.HttpServletResponse;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.util.Collections;
@@ -30,15 +33,16 @@ import java.util.UUID;
 @AllArgsConstructor
 @Slf4j
 public class AccessTicketService {
-    private AccessTicketRepo accessTicketRepo;
-    private CheckinInfoRepo  checkinInfoRepo;
+    private AccessTicketRepo  accessTicketRepo;
+    private CheckinInfoRepo   checkinInfoRepo;
+    private GenericProperties genericProperties;
 
-    public AccessTicket getTicket(Long checkinId) {
+    public String getTicket(Long checkinId) throws UnsupportedEncodingException {
         CheckinInfo checkinInfo = checkinInfoRepo.findById(checkinId).orElseThrow(new BusinessException("无入住信息"));
         if (StringUtils.isBlank(checkinInfo.getIdNo())) {
             throw new BusinessException("无身份证号");
         }
-        return accessTicketRepo.save(AccessTicket.builder()
+        AccessTicket accessTicket = accessTicketRepo.save(AccessTicket.builder()
                 .checkinId(checkinId)
                 .idNo(checkinInfo.getIdNo())
                 .name(checkinInfo.getName())
@@ -47,6 +51,8 @@ public class AccessTicketService {
                 .bedId(checkinInfo.getBedId())
                 .expireAt(LocalDateTime.now().plusMinutes(10))
                 .build());
+        return genericProperties.getServerAddress() + "/wx/redirect?redirectUrl=" +
+                URLEncoder.encode(genericProperties.getServerAddress() + "/temporalAccess?ticket=" + accessTicket
+                        .getId(), "UTF-8");
     }
-
 }

+ 2 - 1
src/main/java/com/izouma/zhumj/web/AccessTicketController.java

@@ -9,6 +9,7 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
+import java.io.UnsupportedEncodingException;
 
 @Controller
 @RequestMapping("/accessTicket")
@@ -18,7 +19,7 @@ public class AccessTicketController {
 
     @GetMapping("/getTicket")
     @ResponseBody
-    public AccessTicket getTicket(@RequestParam Long checkinId) {
+    public String getTicket(@RequestParam Long checkinId) throws UnsupportedEncodingException {
         return accessTicketService.getTicket(checkinId);
     }
 }

+ 1 - 3
src/main/java/com/izouma/zhumj/web/TemporalAccessController.java

@@ -6,7 +6,6 @@ import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 
 import java.io.IOException;
@@ -21,8 +20,7 @@ public class TemporalAccessController {
     public String tempAccess(Model model, @RequestParam Long ticket, @RequestParam String code) throws IOException {
         try {
             String token = userService.tempAccess(ticket, code);
-//            return "redirect:https://zmj.izouma.com/mp/?broker=true&ticket=" + ticket + "&token=" + token;
-            return "redirect:" + genericProperties.getHost() + "/?broker=true&ticket=" + ticket + "&token=" + token;
+            return "redirect:" + genericProperties.getMpAddress() + "/?broker=true&ticket=" + ticket + "&token=" + token;
         } catch (Exception e) {
             model.addAttribute("title", e.getMessage());
             model.addAttribute("body", e.getMessage());

+ 6 - 3
src/main/resources/application.yaml

@@ -125,7 +125,8 @@ aliyun:
     oss-bucket-name: zhumj
     oss-domain: https://zhumj.oss-cn-hangzhou.aliyuncs.com
 generic:
-    host: http://localhost:8082
+    server-address: http://192.168.50.34:8080
+    mp-address: http://192.168.50.34:8082
 ---
 
 spring:
@@ -133,7 +134,8 @@ spring:
     datasource:
         url: jdbc:mysql://rdsave1o67m1ido6gwp6public.mysql.rds.aliyuncs.com/zhu_meng_ju_test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2b8
 generic:
-    host: http://zmjtest.izouma.com
+    server-address: http://zmjtest.izouma.com
+    mp-address: http://zmjtest.izouma.com/mp
 ---
 
 spring:
@@ -141,4 +143,5 @@ spring:
     datasource:
         url: jdbc:mysql://rdsave1o67m1ido6gwp6public.mysql.rds.aliyuncs.com/zhu_meng_ju?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2b8
 generic:
-    host: https://zmj.izouma.com
+    server-address: https://zmj.izouma.com
+    mp-address: https://zmj.izouma.com/mp

+ 20 - 8
src/main/vue/src/views/Operation/RoomStatus.vue

@@ -774,15 +774,21 @@
 
         <el-dialog :visible.sync="showBedInfo" center width="600px" :before-close="handleClose">
             <div slot="title">
-                <el-popover placement="bottom" trigger="click">
-                    <div v-loading="qrCodeLoading">
-                        <qrcode :value="accessQrCode || 'none'" :options="{ width: 200, margin: 1 }"></qrcode>
-                        <div class="qr-tips">手机扫码查看可进行缴费等操作</div>
+                <el-popover
+                    placement="bottom"
+                    trigger="click"
+                    v-model="showQrCode"
+                    v-if="chooseBedInfo.checkinInfo && chooseBedInfo.checkinInfo.idNo"
+                >
+                    <div style="width:200px;min-height:200px;" v-loading="qrCodeLoading">
+                        <qrcode :value="accessQrCode || ' '" :options="{ width: 200, margin: 1 }"></qrcode>
                     </div>
+                    <div class="qr-tips">手机扫码查看可进行缴费等操作</div>
                     <span slot="reference" style="cursor:pointer" @click="getAccessTicket">
                         {{ chooseBedInfo.bedName }}
                     </span>
                 </el-popover>
+                <span v-else>{{ chooseBedInfo.bedName }}</span>
             </div>
             <div class="checkin-form" style="margin-bottom:0;">
                 <div class="info-item" v-if="chooseBed != 0 && chooseBedInfo.checkInStatus != 'CHECK_IN'">
@@ -1481,7 +1487,8 @@ export default {
             showChangeRoomLoading: false,
             showRentDialog: false,
             qrCodeLoading: false,
-            accessQrCode: ''
+            accessQrCode: '',
+            showQrCode: false
         };
     },
     computed: {
@@ -2818,6 +2825,13 @@ export default {
             }
         },
         getAccessTicket() {
+            if (this.showQrCode) {
+                return;
+            }
+            if (!(this.chooseBedInfo.checkinInfo && this.chooseBedInfo.checkinInfo.idNo)) {
+                this.showQrCode = false;
+                return;
+            }
             this.qrCodeLoading = true;
             this.$http
                 .get('/accessTicket/getTicket', {
@@ -2825,9 +2839,7 @@ export default {
                 })
                 .then(res => {
                     this.qrCodeLoading = false;
-                    this.accessQrCode =
-                        'https://zmj.izouma.com/wx/redirect?redirectUrl=' +
-                        encodeURIComponent('https://zmj.izouma.com/temporalAccess?ticket=' + res.id);
+                    this.accessQrCode = res;
                 })
                 .catch(e => {
                     console.log(e);