package com.doumee.cloud.web.cabinet; 
 | 
  
 | 
import com.alibaba.fastjson.JSONArray; 
 | 
import com.alibaba.fastjson.JSONObject; 
 | 
import com.doumee.api.BaseController; 
 | 
import com.doumee.config.annotation.LoginNoRequired; 
 | 
import com.doumee.core.annotation.trace.Trace; 
 | 
import com.doumee.core.haikang.model.HKConstants; 
 | 
import com.doumee.core.utils.Constants; 
 | 
import com.doumee.dao.business.JkVersionMapper; 
 | 
import com.doumee.dao.business.dto.CloseGridDTO; 
 | 
import com.doumee.dao.business.dto.GetDriverGridDTO; 
 | 
import com.doumee.dao.business.dto.OpenGridDriverDTO; 
 | 
import com.doumee.dao.business.dto.OptGridDTO; 
 | 
import com.doumee.dao.business.model.InterfaceLog; 
 | 
import com.doumee.dao.business.model.JkCabinetGrid; 
 | 
import com.doumee.dao.business.model.JkVersion; 
 | 
import com.doumee.dao.business.vo.AdminCabinetVO; 
 | 
import com.doumee.dao.business.vo.CabinetDetailVO; 
 | 
import com.doumee.dao.business.vo.CabinetFaceVO; 
 | 
import com.doumee.dao.business.vo.CabinetInfoVO; 
 | 
import com.doumee.dao.web.response.DriverHomeVO; 
 | 
import com.doumee.service.business.*; 
 | 
import com.doumee.service.business.third.model.ApiResponse; 
 | 
import com.hikvision.artemis.sdk.config.ArtemisConfig; 
 | 
import io.swagger.annotations.Api; 
 | 
import io.swagger.annotations.ApiOperation; 
 | 
import io.swagger.models.auth.In; 
 | 
import lombok.extern.slf4j.Slf4j; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.web.bind.annotation.*; 
 | 
  
 | 
import java.util.Date; 
 | 
import java.util.HashMap; 
 | 
import java.util.List; 
 | 
import java.util.Map; 
 | 
  
 | 
/** 
 | 
 * Created by IntelliJ IDEA. 
 | 
 * 
 | 
 * @Author : Rk 
 | 
 * @create 2025/10/15 9:10 
 | 
 */ 
 | 
@Api(tags = "【钥匙柜】钥匙柜业务") 
 | 
@Trace(exclude = true) 
 | 
@RestController 
 | 
@RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/web/cabinet") 
 | 
@Slf4j 
 | 
public class CabinetController extends BaseController { 
 | 
  
 | 
    @Autowired 
 | 
    private JkCabinetService jkCabinetService; 
 | 
  
 | 
    @Autowired 
 | 
    private JkCabinetGridService jkCabinetGridService; 
 | 
  
 | 
    @Autowired 
 | 
    private InterfaceLogService interfaceLogService; 
 | 
  
 | 
    @Autowired 
 | 
    private JkIccardService jkIccardService; 
 | 
  
 | 
    @Autowired 
 | 
    private JkVersionService jkVersionService; 
 | 
  
 | 
    @LoginNoRequired 
 | 
    @ApiOperation("获取钥匙柜APK最新版本") 
 | 
    @GetMapping("/getLastVersion") 
 | 
    public ApiResponse<JkVersion> getLastVersion () { 
 | 
        JkVersion jkVersion = jkVersionService.getLastVersion(); 
 | 
        this.saveInterfaceLog(null, JSONObject.toJSONString(jkVersion),"getLastVersion","获取钥匙柜APK最新版本"); 
 | 
        return ApiResponse.success(jkVersion); 
 | 
    } 
 | 
  
 | 
    @LoginNoRequired 
 | 
    @ApiOperation("获取钥匙柜基本信息 - 司机") 
 | 
    @GetMapping("/getCabinetInfoForDriver") 
 | 
    public ApiResponse<CabinetInfoVO> getCabinetInfoForDriver (@RequestParam String code) { 
 | 
        CabinetInfoVO cabinetInfoVO = jkCabinetService.getCabinetInfoForDriver(code); 
 | 
        this.saveInterfaceLog(Constants.strToJson("code",code), JSONObject.toJSONString(cabinetInfoVO),"getCabinetInfoForDriver","获取钥匙柜基本信息 - 司机"); 
 | 
        return ApiResponse.success(cabinetInfoVO); 
 | 
    } 
 | 
  
 | 
    @LoginNoRequired 
 | 
    @ApiOperation("更新钥匙柜在线状态") 
 | 
    @GetMapping("/updateRunStatusById") 
 | 
    public ApiResponse updateRunStatusById (@RequestParam Integer id) { 
 | 
        jkCabinetService.updateRunStatusById(id); 
 | 
        this.saveInterfaceLog(Constants.strToJson("id",id.toString()), null,"updateRunStatusById","更新钥匙柜在线状态"); 
 | 
        return ApiResponse.success("更新成功"); 
 | 
    } 
 | 
  
 | 
  
 | 
  
 | 
    @ApiOperation("获取可管理的钥匙柜列表 - 管理员") 
 | 
    @GetMapping("/getAdminCabinetInfo") 
 | 
    public ApiResponse<List<AdminCabinetVO>> getAdminCabinetInfo (@RequestHeader(Constants.HEADER_USER_TOKEN) String token) { 
 | 
        List<AdminCabinetVO> list = jkCabinetService.getAdminCabinetInfo(getLoginUser(token)); 
 | 
        this.saveInterfaceLog(null, JSONArray.toJSONString(list),"getAdminCabinetInfo","获取可管理的钥匙柜列表 - 管理员"); 
 | 
        return ApiResponse.success(list); 
 | 
    } 
 | 
  
 | 
  
 | 
    @ApiOperation("获取钥匙柜详情 - 管理员") 
 | 
    @GetMapping("/getCabinetDetail") 
 | 
    public ApiResponse<CabinetDetailVO> getCabinetDetail (@RequestParam Integer cabinetId, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) { 
 | 
        CabinetDetailVO cabinetDetailVO = jkCabinetService.getCabinetDetail(cabinetId,getLoginUser(token)); 
 | 
        this.saveInterfaceLog(Constants.strToJson("cabinetId",cabinetId.toString()), JSONObject.toJSONString(cabinetDetailVO),"getCabinetDetail","获取钥匙柜详情 - 管理员"); 
 | 
        return ApiResponse.success(cabinetDetailVO); 
 | 
    } 
 | 
  
 | 
    @ApiOperation("标记柜格故障 - 管理员") 
 | 
    @PostMapping("/markFault") 
 | 
    public ApiResponse markFault(@RequestBody OptGridDTO dto, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) { 
 | 
        dto.setLoginUserInfo(getLoginUser(token)); 
 | 
        jkCabinetGridService.markFault(dto); 
 | 
        this.saveInterfaceLog(JSONObject.toJSONString(dto), null,"markFault","标记柜格故障 - 管理员"); 
 | 
        return ApiResponse.success("操作成功"); 
 | 
    } 
 | 
  
 | 
    @ApiOperation("标记柜格正常 - 管理员") 
 | 
    @PostMapping("/cancelFault") 
 | 
    public ApiResponse cancelFault(@RequestBody OptGridDTO dto, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) { 
 | 
        dto.setLoginUserInfo(getLoginUser(token)); 
 | 
        jkCabinetGridService.cancelFault(dto); 
 | 
        this.saveInterfaceLog(JSONObject.toJSONString(dto), null,"cancelFault","标记柜格正常 - 管理员"); 
 | 
        return ApiResponse.success("操作成功"); 
 | 
    } 
 | 
  
 | 
    @ApiOperation("标记维修保养 - 管理员") 
 | 
    @PostMapping("/markRepair") 
 | 
    public ApiResponse markRepair(@RequestBody OptGridDTO dto, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) { 
 | 
        dto.setLoginUserInfo(getLoginUser(token)); 
 | 
        jkCabinetGridService.markRepair(dto); 
 | 
        this.saveInterfaceLog(JSONObject.toJSONString(dto), null,"markRepair","标记维修保养 - 管理员"); 
 | 
        return ApiResponse.success("操作成功"); 
 | 
    } 
 | 
  
 | 
    @ApiOperation("关闭柜门") 
 | 
    @PostMapping("/closeGrid") 
 | 
    public ApiResponse closeGrid(@RequestBody CloseGridDTO dto) { 
 | 
        jkCabinetGridService.closeGrid(dto); 
 | 
        this.saveInterfaceLog(JSONObject.toJSONString(dto), null,"closeGrid","关闭柜门"); 
 | 
        return ApiResponse.success("操作成功"); 
 | 
    } 
 | 
  
 | 
    @ApiOperation("批量开门 - 管理员") 
 | 
    @PostMapping("/batchOpenGridAdmin") 
 | 
    public ApiResponse batchOpenGridAdmin(@RequestBody OptGridDTO dto, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) { 
 | 
        dto.setLoginUserInfo(getLoginUser(token)); 
 | 
        jkCabinetGridService.batchOpenGridAdmin(dto); 
 | 
        this.saveInterfaceLog(JSONObject.toJSONString(dto), null,"batchOpenGridAdmin","批量开门 - 管理员"); 
 | 
        return ApiResponse.success("操作成功"); 
 | 
    } 
 | 
  
 | 
  
 | 
    @ApiOperation("获取钥匙柜人脸数据") 
 | 
    @GetMapping("/getCabinetFaceVO") 
 | 
    public ApiResponse<CabinetFaceVO> getCabinetFaceVO(@RequestParam String code) { 
 | 
        CabinetFaceVO cabinetFaceVO = jkCabinetService.getCabinetFaceVO(code); 
 | 
        this.saveInterfaceLog(Constants.strToJson("code",code), JSONObject.toJSONString(cabinetFaceVO),"getCabinetFaceVO","获取钥匙柜人脸数据"); 
 | 
        return ApiResponse.success(cabinetFaceVO); 
 | 
    } 
 | 
  
 | 
  
 | 
  
 | 
    @ApiOperation("获取可操作柜格 - 司机") 
 | 
    @PostMapping("/getDriverGrid") 
 | 
    public ApiResponse<List<JkCabinetGrid>> getDriverGrid(@RequestBody GetDriverGridDTO dto) { 
 | 
        List<JkCabinetGrid> jkCabinetGridList = jkCabinetGridService.getDriverGrid(dto); 
 | 
        this.saveInterfaceLog(JSONObject.toJSONString(dto), JSONObject.toJSONString(jkCabinetGridList),"getDriverGrid","获取可操作柜格 - 司机"); 
 | 
        return ApiResponse.success(jkCabinetGridList); 
 | 
    } 
 | 
  
 | 
    @ApiOperation("开启柜格 - 司机") 
 | 
    @PostMapping("/openGridDriver") 
 | 
    public ApiResponse openGridDriver(@RequestBody OpenGridDriverDTO dto) { 
 | 
        jkCabinetGridService.openGridDriver(dto); 
 | 
        this.saveInterfaceLog(JSONObject.toJSONString(dto), null,"openGridDriver","开启柜格 - 司机"); 
 | 
        return ApiResponse.success("操作成功"); 
 | 
    } 
 | 
  
 | 
    @ApiOperation("获取IC卡用户主键 - 司机") 
 | 
    @PostMapping("/getMemberIdByCode") 
 | 
    public ApiResponse<Integer> getMemberIdByCode(@RequestParam String code) { 
 | 
        this.saveInterfaceLog(Constants.strToJson("code",code), null,"getMemberIdByCode","获取IC卡用户主键 - 司机"); 
 | 
        return ApiResponse.success(jkIccardService.getMemberIdByCode(code)); 
 | 
    } 
 | 
  
 | 
    private void saveInterfaceLog(String s, String result,String url,String name) { 
 | 
        InterfaceLog hkMonitoryLogDO=new InterfaceLog(); 
 | 
        hkMonitoryLogDO.setType(0); 
 | 
        hkMonitoryLogDO.setCreateDate(new Date()); 
 | 
        hkMonitoryLogDO.setIsdeleted(0); 
 | 
        hkMonitoryLogDO.setRequest(s); 
 | 
        hkMonitoryLogDO.setRepose(result); 
 | 
        hkMonitoryLogDO.setName("【钥匙柜】"+name); 
 | 
        hkMonitoryLogDO.setUrl(url); 
 | 
        interfaceLogService.create(hkMonitoryLogDO); 
 | 
    } 
 | 
  
 | 
  
 | 
} 
 |