package com.yami.trading.admin.controller.data; import cn.hutool.core.thread.ThreadUtil; import cn.hutool.core.util.StrUtil; import com.yami.trading.admin.controller.service.SysUserOperService; import com.yami.trading.bean.item.domain.Item; import com.yami.trading.common.domain.Result; import com.yami.trading.common.exception.YamiShopBindException; import com.yami.trading.huobi.data.internal.KlineInitService; import com.yami.trading.huobi.data.internal.KlineService; import com.yami.trading.security.common.model.YamiSysUser; import com.yami.trading.security.common.util.SecurityUtils; import com.yami.trading.service.item.ItemService; import com.yami.trading.sys.model.SysUser; import com.yami.trading.sys.service.SysUserService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.validation.constraints.NotBlank; import java.util.Objects; import java.util.stream.Collectors; @Validated @RestController @CrossOrigin @RequestMapping("normal/adminItemAction!") @Api(tags = "行情数据") @Slf4j public class AdminKlineController { @Resource private KlineInitService klineInitService; @Resource private ItemService itemService; @Resource private KlineService klineService; @Resource private SysUserService sysUserService; @Resource private SysUserOperService sysUserOperService; /** * kline初始化 */ @ApiOperation(value = "kline初始化") @GetMapping(value = {"klineInit.action", "klineInitConfig.action"}) public Result klineInit(@RequestParam @NotBlank String paraInitSymbol, @RequestParam(required = false) String symbolType) { String symbols; if (StringUtils.isNotEmpty(symbolType)) { symbols = itemService.findByType(symbolType).stream().filter(i -> !Objects.equals("1", i.getFake()) && i.isActive()) .map(Item::getSymbol) .collect(Collectors.joining(",")); } else { symbols = paraInitSymbol; } try { ThreadUtil.execAsync(() -> klineInitService.klineInit(symbols)); YamiSysUser sysUser = SecurityUtils.getSysUser(); if (sysUser != null) { SysUser secUser = sysUserService.getByUserName(sysUser.getUsername()); if (secUser != null) { sysUserOperService.saveLog(secUser, secUser.getUsername(), StrUtil.format("kline初始化:{}", symbols)); } } } catch (Exception e) { log.error("k线图初始化失败", e); throw new YamiShopBindException("k线图初始化失败"); } return Result.succeed("K线图初始化完成"); } @ApiOperation(value = "kline清理") @GetMapping(value = {"clean.action"}) public Result clean() { klineService.clean(); return Result.succeed("kline清理完成"); } }