package com.artfess.base.controller; import com.artfess.base.annotation.ApiGroup; import com.artfess.base.cache.CacheManager; import com.artfess.base.constants.ApiGroupConsts; import com.artfess.base.constants.WebsocketConst; import com.artfess.base.id.IdGenerator; import com.artfess.base.model.CommonResult; import com.artfess.base.util.AppUtil; import com.artfess.base.util.JsonUtil; import com.artfess.base.util.PinyinUtil; import com.artfess.base.util.time.DateUtil; import com.artfess.base.vo.DruidEncryptDTO; import com.artfess.base.webSocket.PushService; import com.baomidou.dynamic.datasource.toolkit.CryptoUtils; import com.fasterxml.jackson.databind.node.ObjectNode; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.security.core.AuthenticationException; 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.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.util.Map; import java.util.Optional; @RestController @RequestMapping("/base/tools/v1/") @Api(tags="工具接口") @ApiGroup(group= {ApiGroupConsts.GROUP_BPM,ApiGroupConsts.GROUP_FORM,ApiGroupConsts.GROUP_SYSTEM,ApiGroupConsts.GROUP_UC}) public class ToolsController{ @Value("${spring.profiles.version:''}") String platformVersion; @Autowired PushService pushService; @Resource IdGenerator idGenerator; @RequestMapping(value = "getPinyin", method = RequestMethod.GET, produces={"application/json; charset=utf-8" }) @ApiOperation(value = "获取拼音", httpMethod = "GET", notes = "获取拼音") public CommonResult getPinyin( @ApiParam(required = true, name = "chinese", value = "中文内容") @RequestParam String chinese, @ApiParam(name = "type", value = "类型是1 则为全拼,否则为首字母") @RequestParam Optional type ) throws AuthenticationException { Integer ptype = type.orElse(1); String pinying = ""; //如果是类型是1 则为全拼,否则为首字母 if(ptype == 1){ pinying = PinyinUtil.getPinyin(chinese); }else{ pinying = PinyinUtil.getPinYinHeadChar(chinese); } return new CommonResult(true,"获取拼音成功!",pinying); } @RequestMapping(value = "getPlatformVersion", method = RequestMethod.GET, produces={"application/json; charset=utf-8" }) @ApiOperation(value = "获取平台版本", httpMethod = "GET", notes = "获取平台版本") public CommonResult getPlatformVersion() { return new CommonResult(true, "", platformVersion); } @RequestMapping(value = "encryptDbPassword", method = RequestMethod.POST, produces={"application/json; charset=utf-8" }) @ApiOperation(value = "获取数据库密码加密字符串", httpMethod = "POST", notes = "获取数据库密码加密信息") public CommonResult encryptDbPassword(@ApiParam(required = true, name = "password", value = "待加密密码") @RequestBody Map map) throws Exception { String[] arr = CryptoUtils.genKeyPair(512); DruidEncryptDTO druidEncryptDTO = new DruidEncryptDTO(); druidEncryptDTO.setPassword(CryptoUtils.encrypt(arr[0], map.get("password"))); druidEncryptDTO.setPublicKey(arr[1]); return new CommonResult(true,"获取拼音成功!",druidEncryptDTO); } @RequestMapping(value = "clearCacheByKey", method = RequestMethod.GET, produces={"application/json; charset=utf-8" }) @ApiOperation(value = "根据缓存key清除缓存", httpMethod = "GET", notes = "根据缓存key清除缓存") public CommonResult clearCacheByKey(@ApiParam(required = true, name = "key", value = "缓存key") @RequestParam String key) throws AuthenticationException { CacheManager manager = AppUtil.getBean(CacheManager.class); manager.clearCascadeByKey(key); return new CommonResult(true,"操作成功!"); } @RequestMapping(value = "getCurrentDate", method = RequestMethod.GET, produces={"application/json; charset=utf-8" }) @ApiOperation(value = "获取当前服务器的时间", httpMethod = "GET", notes = "获取当前服务器的时间") public CommonResult getCurrentDate(@ApiParam(required = true, name = "valFormat", value = "日期格式") @RequestParam String valFormat) throws AuthenticationException { String date = DateUtil.getCurrentTime(valFormat);//取当前系统日期,并按指定格式或者是默认格式返回 return new CommonResult(true,"获取成功",date); } @PostMapping("/webSocket/sendAll") @ApiOperation("websocket群发消息") public CommonResult sendAll(@RequestBody ObjectNode jsonObject) throws Exception { String message =jsonObject.get("message").asText(); ObjectNode obj = JsonUtil.getMapper().createObjectNode(); obj.put(WebsocketConst.MSG_CMD, WebsocketConst.CMD_TOPIC); obj.put(WebsocketConst.MSG_ID, idGenerator.nextId()); obj.put(WebsocketConst.MSG_TXT, message); pushService.pushMsgToAll(obj.toString()); //webSocket.sendAllMessage(obj.toString()); return new CommonResult<>("群发!"); } @PostMapping("/webSocket/sendUser") @ApiOperation("websocket单发消息") public CommonResult sendUser(@RequestBody ObjectNode jsonObject) throws Exception { String userId = JsonUtil.getString(jsonObject, "userId"); String message = JsonUtil.getString(jsonObject, "message"); ObjectNode obj = JsonUtil.getMapper().createObjectNode(); obj.put(WebsocketConst.MSG_CMD, WebsocketConst.CMD_USER); obj.put(WebsocketConst.MSG_USER_ID, userId); obj.put(WebsocketConst.MSG_ID, idGenerator.nextId()); obj.put(WebsocketConst.MSG_TXT, message); pushService.pushMsgToAccount(userId,obj.toString()); //webSocket.sendOneMessage(userId, obj.toString()); return new CommonResult<>("单发!"); } }