From 030f7971cee2aa77408678f51b2f11e1a451fbb7 Mon Sep 17 00:00:00 2001 From: MrShi <1878285526@qq.com> Date: 星期二, 14 十月 2025 18:26:22 +0800 Subject: [PATCH] 钉钉通知 --- server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HkSyncCloudController.java | 254 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 247 insertions(+), 7 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 index fa30516..65d569e 100644 --- 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 @@ -1,33 +1,64 @@ 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.model.ApiResponse; +import com.doumee.core.haikang.model.param.respose.PageRegionInfoResponse; +import com.doumee.core.haikang.service.HKService; +import com.doumee.dao.web.response.platformReport.CarmeraListVO; +import com.doumee.service.business.third.BoardService; +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 BoardService boardService; @Autowired private HkSyncParkServiceImpl hkSyncParkService; @Autowired @@ -35,14 +66,69 @@ @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 AcsDeviceListRequest param,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){ - String result = hkSyncDeviceService.syncHkDevices(param); + 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 @@ -72,29 +158,183 @@ // @PreventRepeat @ApiOperation("銆愭捣搴枫�戦棬绂佷簨浠惰闃呮帹閫佸鎺ュ鐞嗘帴鍙�") @PostMapping("/push/acs") - public ApiResponse pushAcs( HttpServletRequest request,@RequestBody EventAcsRequest param, HttpServletResponse response,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){ + @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") - public ApiResponse pushVisit(@RequestBody EventVisitRequest param, HttpServletResponse response,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){ + @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") - public ApiResponse pushParks(@RequestBody EventParkRequest param, HttpServletResponse response,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){ + @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") - public ApiResponse cancelEventSub(@RequestBody EventSubRequest param, HttpServletResponse response,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){ + @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("銆愭捣搴枫�戣幏鍙栧叏閮ㄧ洃鎺у尯鍩熸爲褰㈢粨鏋�") + @PostMapping("/regionList") + public ApiResponse<List<PageRegionInfoResponse> > getRegionList(HttpServletResponse response, @RequestHeader(Constants.HEADER_USER_TOKEN) String token ){ + CarmeraListVO param =new CarmeraListVO(); + param.setWithCameras(0); + List<PageRegionInfoResponse> result = new ArrayList<>(); + try { +// result = boardService.getRegionTree( param); + //------TODO---------娴嬭瘯妯℃嫙鏁版嵁----start----- + for (int i = 0; i < 5; i++) { + PageRegionInfoResponse t = new PageRegionInfoResponse(); + t.setName("鎬诲尯鍩焈"+i); + t.setIndexCode(i+"_code"); + t.setChildList(new ArrayList<>()); + for (int j = 0; j < 5; j++) { + PageRegionInfoResponse t1 = new PageRegionInfoResponse(); + t1.setName("瀛愬尯鍩焈"+i+"_"+j); + t1.setIndexCode(i+"_"+j+"_ChildCode"); + t1.setParentIndexCode(t.getIndexCode()); + t.getChildList().add(t1); + } + result.add(t); + } + //------TODO---------娴嬭瘯妯℃嫙鏁版嵁----end----- + }catch (Exception e){ + + } + 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