zjk
2026-07-31 dc2872d6d346a7de629b3b0686057ab54f216f09
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
package com.ruoyi.web.controller.api;
 
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.system.dto.SysVisitorMachineAddRequest;
import com.ruoyi.system.dto.SysVisitorMachineDeleteRequest;
import com.ruoyi.system.dto.SysVisitorMachineDetailRequest;
import com.ruoyi.system.dto.SysVisitorMachineEditRequest;
import com.ruoyi.system.dto.SysVisitorMachineLogoutRequest;
import com.ruoyi.system.dto.SysVisitorMachinePageRequest;
import com.ruoyi.system.dto.SysVisitorMachineStatusRequest;
import com.ruoyi.system.service.ISysVisitorMachineService;
import com.ruoyi.web.controller.tool.MiddlePlatformDataQuery;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
import java.io.IOException;
 
/**
 * 访客机管理接口
 *
 * @author ruoyi
 */
@RestController
@RequestMapping("/system/visitor/machine")
public class SysVisitorMachineController extends BaseController
{
    @Autowired
    private ISysVisitorMachineService visitorMachineService;
 
    @Autowired
    private RuoYiConfig ruoyiConfig;
 
    /**
     * 分页查询访客机列表
     */
    @Log(title = "访客机管理", businessType = BusinessType.SELECT)
    @PreAuthorize("@ss.hasPermi('visitor:machine:view')")
    @PostMapping("/page")
    public AjaxResult page(@RequestBody(required = false) SysVisitorMachinePageRequest request)
    {
        // 集群版对接中台时,访客机设备查询使用中台海康设备列表。
        if (ruoyiConfig.isConnectMiddlePlatform())
        {
            try
            {
                return success(MiddlePlatformDataQuery.visitorMachinePage(request));
            }
            catch (IOException e)
            {
                return middlePlatformError(e);
            }
        }
        return success(visitorMachineService.pageList(request));
    }
 
    /**
     * 查看访客机详情
     */
    @Log(title = "访客机管理", businessType = BusinessType.SELECT)
    @PreAuthorize("@ss.hasPermi('visitor:machine:view')")
    @PostMapping("/detail")
    public AjaxResult detail(@RequestBody SysVisitorMachineDetailRequest request)
    {
        // 详情接口按中台设备标识查询,并由适配器补齐前端使用的 machineId/deviceId 字段。
        if (ruoyiConfig.isConnectMiddlePlatform())
        {
            try
            {
                return success(MiddlePlatformDataQuery.visitorMachineDetail(request.getMachineId()));
            }
            catch (IOException e)
            {
                return middlePlatformError(e);
            }
        }
        return success(visitorMachineService.detail(request));
    }
 
    /**
     * 新增访客机
     */
    @Log(title = "访客机管理", businessType = BusinessType.INSERT)
    @PreAuthorize("@ss.hasPermi('visitor:machine:add')")
    @PostMapping("/add")
    public AjaxResult add(@RequestBody SysVisitorMachineAddRequest request)
    {
        return toAjax(visitorMachineService.add(request, getUsername()));
    }
 
    /**
     * 编辑访客机
     */
    @Log(title = "访客机管理", businessType = BusinessType.UPDATE)
    @PreAuthorize("@ss.hasPermi('visitor:machine:edit')")
    @PostMapping("/edit")
    public AjaxResult edit(@RequestBody SysVisitorMachineEditRequest request)
    {
        return toAjax(visitorMachineService.edit(request, getUsername()));
    }
 
    /**
     * 启用或禁用访客机
     */
    @Log(title = "访客机管理", businessType = BusinessType.UPDATE)
    @PreAuthorize("@ss.hasPermi('visitor:machine:status')")
    @PostMapping("/changeStatus")
    public AjaxResult changeStatus(@RequestBody SysVisitorMachineStatusRequest request)
    {
        return toAjax(visitorMachineService.changeStatus(request, getUsername()));
    }
 
    /**
     * 注销访客机
     */
    @Log(title = "访客机管理", businessType = BusinessType.UPDATE)
    @PreAuthorize("@ss.hasPermi('visitor:machine:logout')")
    @PostMapping("/logout")
    public AjaxResult logout(@RequestBody SysVisitorMachineLogoutRequest request)
    {
        return toAjax(visitorMachineService.logout(request, getUsername()));
    }
 
    /**
     * 删除访客机
     */
    @Log(title = "访客机管理", businessType = BusinessType.DELETE)
    @PreAuthorize("@ss.hasPermi('visitor:machine:remove')")
    @PostMapping("/delete")
    public AjaxResult delete(@RequestBody SysVisitorMachineDeleteRequest request)
    {
        return toAjax(visitorMachineService.delete(request, getUsername()));
    }
 
    /**
     * 目的:中台查询异常时返回统一业务错误,避免异常栈直接暴露给前端。
     */
    private AjaxResult middlePlatformError(IOException e)
    {
        return error("中台数据查询失败:" + e.getMessage());
    }
}