From 69a1b3bf45738f048361ee4ccb6bdc64fce35720 Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期三, 12 三月 2025 11:31:46 +0800
Subject: [PATCH] 更新

---
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HkSyncCloudController.java |  305 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 305 insertions(+), 0 deletions(-)

diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HkSyncCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HkSyncCloudController.java
new file mode 100644
index 0000000..9e85f70
--- /dev/null
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HkSyncCloudController.java
@@ -0,0 +1,305 @@
+package com.doumee.cloud.admin;
+
+import com.alibaba.fastjson.JSONObject;
+import com.doumee.api.BaseController;
+import com.doumee.biz.system.SystemDictDataBiz;
+import com.doumee.config.annotation.CloudRequiredPermission;
+import com.doumee.config.annotation.LoginNoRequired;
+import com.doumee.config.jwt.JwtProperties;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.haikang.model.param.BaseResponse;
+import com.doumee.core.haikang.model.param.request.*;
+import com.doumee.core.haikang.model.param.request.event.acs.EventAcsRequest;
+import com.doumee.core.haikang.model.param.request.event.parks.EventParkRequest;
+import com.doumee.core.haikang.model.param.request.event.parks.EventPlatformCarsRequest;
+import com.doumee.core.haikang.model.param.request.event.parks.EventPlatformRequest;
+import com.doumee.core.haikang.model.param.request.event.visit.EventVisitIccmRequest;
+import com.doumee.core.haikang.model.param.request.event.visit.EventVisitRequest;
+import com.doumee.core.haikang.service.HKService;
+import com.doumee.service.business.third.model.ApiResponse;
+import com.doumee.service.business.third.model.LoginUserInfo;
+import com.doumee.core.utils.Constants;
+import com.doumee.core.utils.DESUtil;
+import com.doumee.dao.business.model.Device;
+import com.doumee.service.business.DeviceService;
+import com.doumee.service.business.impl.hksync.*;
+import com.doumee.service.business.impl.hksync.ferp.HkSyncOrgUserToHKServiceImpl;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.BufferedReader;
+import java.util.*;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * @author 姹熻箘韫�
+ * @date 2023/11/30 15:33
+ */
+@Api(tags = "娴峰悍鏁版嵁鍚屾鎺ュ彛")
+@RestController
+@Slf4j
+@RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/business/hksync")
+public class HkSyncCloudController extends BaseController {
+
+    @Autowired
+    private HkSyncPlatformsServiceImpl hkSyncPlatformsService;
+    @Autowired
+    private HkSyncDeviceServiceImpl hkSyncDeviceService;
+    @Autowired
+    private HkSyncParkServiceImpl hkSyncParkService;
+    @Autowired
+    private HkSyncPrivilegeServiceImpl hkSyncPrivilegeService;
+    @Autowired
+    private HkSyncPushServiceImpl hkSyncPushService;
+    @Autowired
+    private HkSyncOrgUserToHKServiceImpl hkSyncOrgUserToHKService;
+    @Autowired
+    private HkSyncNoticeServiceImpl hkSyncNoticeService;
+    @Autowired
+    private HkSyncLoginAuthServiceImpl hkSyncLoginAuthService;
+
+    @Autowired
+    private SystemDictDataBiz systemDictDataBiz;
+    @Autowired
+    private DeviceService deviceService;
+
+    @Autowired
+    private RedisTemplate<String,Object> redisTemplate;
+
+    @Autowired
+    private JwtProperties jwtProperties;
+
+    @PreventRepeat
+    @ApiOperation("銆愭捣搴枫�戝叏閲忓悓姝ユ湀鍙颁俊鎭帴鍙�")
+    @PostMapping("/syncPlatforms")
+    @CloudRequiredPermission("business:hksync:platforms")
+    public ApiResponse syncPlatforms(@RequestBody PlatformsListRequest param) {
+        String result = hkSyncPlatformsService.syncPlatforms(param);
+        return ApiResponse.success(result);
+    }
+    @PreventRepeat
+    @ApiOperation("銆愭捣搴枫�戝叏閲忓悓姝ユ湀鍙扮姸鎬佷俊鎭帴鍙�")
+    @PostMapping("/syncPlatformStatus")
+    @CloudRequiredPermission("business:hksync:platforms")
+    public ApiResponse syncPlatformStatus(@RequestBody PlatformStatusRequest param) {
+        String result = hkSyncPlatformsService.getPlatformStatus(param);
+        return ApiResponse.success(result);
+    }
+    @PreventRepeat
+    @ApiOperation("銆愭捣搴枫�戝叏閲忓悓姝ラ棬绂佽澶囨帴鍙�")
+    @PostMapping("/syncDevices")
+    @CloudRequiredPermission("business:hksync:device")
+    public ApiResponse syncHkDevices(@RequestBody Device param, @RequestHeader(Constants.HEADER_USER_TOKEN) String token){
+        String result = null;
+        if(Constants.equalsInteger(param.getType(),Constants.ZERO)){
+             result = hkSyncDeviceService.syncHkDevices(param);
+        }else if(Constants.equalsInteger(param.getType(),Constants.TWO)){
+            //鍚屾LED
+            result = hkSyncDeviceService.syncHkLed(param);
+        }else if(Constants.equalsInteger(param.getType(),Constants.THREE)){
+            //鍚屾骞挎挱
+            result = hkSyncDeviceService.syncHkBroadcast(param);
+        }
+        return ApiResponse.success(result);
+    }
+    @PreventRepeat
+    @ApiOperation("銆愭捣搴枫�戜繚瀛樻捣搴风敤鎴风粦瀹歰penid")
+    @PostMapping("/saveHkUserOpenid")
+    public ApiResponse syncHkUserOpenid( @RequestHeader(Constants.HEADER_USER_TOKEN) String token){
+        String result     = hkSyncOrgUserToHKService.syncHkUserOpenid(this.getLoginUser(token).getId());
+        return ApiResponse.success(result);
+    }
+    @PreventRepeat
+    @ApiOperation("銆愭捣搴枫�戞竻绌烘捣搴风敤鎴风粦瀹歰penid")
+    @PostMapping("/delHkUserOpenid")
+    @LoginNoRequired
+    public ApiResponse delHkUserOpenid( @RequestBody UserOpenidSaveRequest param){
+        String result     = hkSyncOrgUserToHKService.delHkUserOpenid(param);
+        return ApiResponse.success(result);
+    }
+    @PreventRepeat
+    @ApiOperation("銆愭捣搴枫�戣幏鍙栫粍浠舵巿鏉冪櫥褰曞湴鍧�鎺ュ彛")
+    @PostMapping("/getServiceUrl")
+    public ApiResponse getServiceUrl(@RequestBody HKGetServiceLoginUrlRequest param,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
+        param.setUsername(this.getLoginUser(token).getUsername());
+        String result = hkSyncLoginAuthService.getServiceUrl(param);
+        return ApiResponse.success(result);
+    }
+    @PreventRepeat
+    @ApiOperation("銆愭捣搴枫�戝叏閲忓悓姝ュ仠杞﹀簱鎺ュ彛")
+    @PostMapping("/syncParks")
+    @CloudRequiredPermission("business:hksync:park")
+    public ApiResponse syncHkParks(@RequestBody ParkListRequest param,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
+        String result = hkSyncParkService.syncHkParks(param);
+        return ApiResponse.success(result);
+    }
+    @PreventRepeat
+    @ApiOperation("銆愭捣搴枫�戝叏閲忓悓姝ヨ瀹㈡潈闄愮粍鎺ュ彛")
+    @PostMapping("/syncPrivilege")
+    @CloudRequiredPermission("business:hksync:privilege")
+    public ApiResponse syncPrivilege(@RequestBody PrivilegeGroupRequest param,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
+        String result = hkSyncPrivilegeService.syncPrivilege(param);
+        return ApiResponse.success(result);
+    }
+//    @PreventRepeat
+    @ApiOperation("銆愭捣搴枫�戦棬绂佷簨浠惰闃呮帹閫佸鎺ュ鐞嗘帴鍙�")
+    @PostMapping("/push/acs")
+    @LoginNoRequired
+    public ApiResponse pushAcs(  HttpServletRequest request,@RequestBody EventAcsRequest param, HttpServletResponse response ){
+        String result = hkSyncPushService.dealAcsEvent(param,response);
+        return ApiResponse.success(result);
+    }
+//    @PreventRepeat
+    @ApiOperation("銆愭捣搴枫�戣瀹簨浠惰闃呮帹閫佸鎺ュ鐞嗘帴鍙�")
+    @PostMapping("/push/visit")
+    @LoginNoRequired
+    public ApiResponse pushVisit(@RequestBody EventVisitRequest param, HttpServletResponse response){
+        String result = hkSyncPushService.dealVisitEvent(param,response);
+        return ApiResponse.success(result);
+    }
+    @ApiOperation("銆愭捣搴枫�戣瀹CCM浜嬩欢璁㈤槄鎺ㄩ�佸鎺ュ鐞嗘帴鍙�")
+    @PostMapping("/push/visitIccm")
+    @LoginNoRequired
+    public ApiResponse pushVisitIccm(@RequestBody EventVisitIccmRequest param, HttpServletResponse response) {
+        String result = hkSyncPushService.dealVisitEventIccm(param,response);
+        return ApiResponse.success(result);
+    }
+    @ApiOperation("銆愭捣搴枫�戞祴璇昄ED鏄剧ず灞�")
+    @PostMapping("/testLed")
+    @LoginNoRequired
+    public ApiResponse<BaseResponse> testLed(@RequestBody TransparentChannelBodyRequest request, HttpServletResponse response) {
+        TransparentChannelHeadRequest head = new TransparentChannelHeadRequest();
+        head.setAbility("cld");//鍥哄畾鍊�
+        head.setTreatyType("haixuan_led_net");//鍥哄畾鍊�
+        head.setDeviceIndexCode("6a5498e9df924befbb9530e467e5e809");
+        return ApiResponse.success(HKService.transparentchannel(head,request));
+    }
+    @ApiOperation("銆愭捣搴枫�戞祴璇曞箍鎾挱鎶�")
+    @PostMapping("/testBroadcast")
+    @LoginNoRequired
+    public ApiResponse<BaseResponse> testBroadcast(@RequestBody CustomBroadcastRequest request, HttpServletResponse response) {
+        return ApiResponse.success(  HKService.customBroadcast(request));
+    }
+//    @PreventRepeat
+    @ApiOperation("銆愭捣搴枫�戝仠杞﹀満浜嬩欢璁㈤槄鎺ㄩ�佸鎺ュ鐞嗘帴鍙�")
+    @PostMapping("/push/parks")
+    @LoginNoRequired
+    public ApiResponse pushParks(@RequestBody EventParkRequest param, HttpServletResponse response ){
+        String result = hkSyncPushService.dealParkEvent(param,response);
+        return ApiResponse.success(result);
+    }
+    @ApiOperation("銆愭捣搴枫�戞湀鍙板伐浣滅姸鎬佷簨浠惰闃呮帹閫佸鎺ュ鐞嗘帴鍙�")
+    @PostMapping("/push/platform/workstatus")
+    @LoginNoRequired
+    public ApiResponse pushPlatformStatus(@RequestBody EventPlatformRequest param, HttpServletResponse response ){
+        String result = hkSyncPushService.dealPlatformStatusEvent(param,response);
+        return ApiResponse.success(result);
+    }
+    @ApiOperation("銆愭捣搴枫�戞湀鍙拌溅杈嗙姸鎬佷簨浠惰闃呮帹閫佸鎺ュ鐞嗘帴鍙�")
+    @PostMapping("/push/platform/carstatus")
+    @LoginNoRequired
+    public ApiResponse pushPlatformCarStatus(@RequestBody EventPlatformCarsRequest param, HttpServletResponse response ){
+        String result = hkSyncPushService.dealPlatformCarsEvent(param,response);
+        return ApiResponse.success(result);
+    }
+    @ApiOperation("銆愭捣搴穞est銆戞湀鍙拌溅杈嗙姸鎬佷簨浠惰闃呮帹閫佸鎺ュ鐞嗘帴鍙�")
+    @PostMapping("/push/platform/carstatusTest")
+    @LoginNoRequired
+    public ApiResponse pushPlatformCarStatus(HttpServletRequest request, HttpServletResponse response ){
+        doPringParam(request,"銆愭捣搴穞est銆戞湀鍙拌溅杈嗙姸鎬佷簨浠惰闃呮帹閫佸鎺ュ鐞嗘帴鍙�:\n");
+         return ApiResponse.success(null);
+    }
+    public   void doPringParam(HttpServletRequest request,String name) {
+        try {
+            StringBuilder data =new StringBuilder();
+            String line;
+            BufferedReader reader =request.getReader();
+            while(null !=(line = reader.readLine())) {
+                data.append(line);
+            }
+            if(StringUtils.isNotBlank( data.toString())){
+                log.info(name+"=================鍙傛暟锛�"+ data.toString());
+            }else {
+                log.info(name+"=================锛氬弬鏁颁负绌�");
+            }
+        }catch (Exception e){
+
+            log.info(name+"================= 鍙傛暟寮傚父锛�"+e.getMessage());
+        }
+    }
+    @PreventRepeat
+    @ApiOperation("銆愭捣搴枫�戝彇娑堣闃呬簨浠�")
+    @PostMapping("/cancelEventSub")
+    @LoginNoRequired
+    public ApiResponse cancelEventSub(@RequestBody EventSubRequest param, HttpServletResponse response){
+         hkSyncPushService.cancelEventSub();
+        return ApiResponse.success(null);
+    }
+
+    /**
+     * 鑾峰彇瀹夐槻骞冲彴绯荤粺鍏嶅瘑鑿滃崟璋冩暣鍦板潃
+     * @return
+     */
+    @ApiOperation(value = "鑾峰彇瀹夐槻骞冲彴绯荤粺鍏嶅瘑鑿滃崟璋冩暣鍦板潃" )
+    @PostMapping("/getHkMenuLink/{type}")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "type",example = "0",value = "鑿滃崟绫诲瀷", required = true),
+    })
+    public ApiResponse<String> getHkMenuLink(@PathVariable Integer type,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
+        LoginUserInfo loginUserInfo = this.getLoginUser(token);
+        String hkToken = DESUtil.generateTokenToHk(loginUserInfo.getUsername(),Integer.valueOf(
+          systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.HK_TOKEN_VALIDITY).getCode()
+        ),redisTemplate);
+        String url = systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.HK_HTTPS).getCode() +
+        systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.HK_HOST).getCode()
+                 + HKService.getMenuUrl(type,hkToken);
+        try {
+            if(redisTemplate!=null&& jwtProperties!=null){
+                loginUserInfo.setHkMenuToken(hkToken);
+                redisTemplate.opsForValue().set(Constants.REDIS_TOKEN_KEY+token, JSONObject.toJSONString(loginUserInfo),jwtProperties.getExpiration(), TimeUnit.MILLISECONDS);
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+
+        return ApiResponse.success( url);
+    }
+
+    @ApiOperation(value = "鑾峰彇瀹夐槻骞冲彴绯荤粺鍏嶅瘑鑿滃崟閰嶇疆" )
+    @GetMapping("/getHkMenuConfig")
+    public ApiResponse<List<Integer>> getHkMenuConfig(@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
+        LoginUserInfo loginUserInfo = getLoginUser(token);
+        List<Integer> menuConfigList = new ArrayList<>();
+        if(Objects.nonNull(loginUserInfo) && StringUtils.isNotBlank(loginUserInfo.getUsername())){
+            menuConfigList = hkSyncPlatformsService.getMenuConfig(loginUserInfo.getUsername());
+        }
+        return ApiResponse.success(menuConfigList);
+    }
+
+
+    @ApiOperation("銆愭捣搴枫�戜唬鍔炴秷鎭暟鎹泦鍚堝鎺ュ鐞嗘帴鍙�")
+    @PostMapping("/notice/getList")
+    public ApiResponse getNoticeList( HttpServletResponse response,@RequestHeader(Constants.HEADER_USER_TOKEN) String token ){
+        String result = hkSyncNoticeService.syncHkNotices(this.getLoginUser(token).getUsername());
+        return ApiResponse.success(result);
+    }
+
+
+
+    @ApiOperation("銆愭捣搴枫�戣缃甃ED灞忔枃妗�")
+    @PostMapping("/setLedContent")
+    public ApiResponse<List<Map<String,Object>>> setLedContent(@RequestBody TransparentChannelSingleRequest body  , HttpServletResponse response) {
+        deviceService.setLedContent(body);
+        return ApiResponse.success(null);
+    }
+
+}

--
Gitblit v1.9.3