package com.yami.trading.admin.controller.user; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yami.trading.admin.controller.user.model.SaveRiskClientModel; import com.yami.trading.admin.model.*; import com.yami.trading.bean.model.*; import com.yami.trading.bean.user.dto.RiskClientInfoDto; import com.yami.trading.common.domain.Result; import com.yami.trading.common.exception.BusinessException; import com.yami.trading.common.util.*; import com.yami.trading.security.common.manager.TokenStore; import com.yami.trading.security.common.util.RiskClientUtil; import com.yami.trading.service.user.RiskClientService; import com.yami.trading.service.user.UserService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.time.ZoneId; import java.util.*; @RestController @CrossOrigin @Api(tags = "风控配置管理") public class AdminRiskClientController { @Autowired private TokenStore tokenStore; @Autowired UserService userService; @Autowired private RiskClientService riskClientService; @PostMapping("/riskclient/pagelist") @ApiOperation("风控配置列表") public Result> pageListRiskConfig(@Valid @RequestBody RiskConfigListModel query) { Page page = new Page(query.getCurrent(), query.getSize()); QueryWrapper queryWrapper = new QueryWrapper(); if (query.getStatus() >= 0) { queryWrapper.eq("status", query.getStatus()); } if (StrUtil.isNotBlank(query.getClientType())) { queryWrapper.eq("client_type", query.getClientType()); } if (StrUtil.isNotBlank(query.getType())) { queryWrapper.eq("type", query.getType()); } if (StrUtil.isNotBlank(query.getKeyword())) { queryWrapper.like("client_key", query.getKeyword().trim()); } Page pageInfo = riskClientService.page(page, queryWrapper); List dtoPageList = new ArrayList<>(); if (CollectionUtil.isNotEmpty(pageInfo.getRecords())) { for (Object oneRiskEntity : pageInfo.getRecords()) { RiskClient oneRiskClient = (RiskClient)oneRiskEntity; RiskClientInfoDto oneDto = new RiskClientInfoDto(); BeanUtil.copyProperties(oneRiskClient, oneDto); oneDto.setId(oneRiskClient.getUuid()); // 字段值为空时,返回的json结构里没有该字段 oneDto.setBeginTime(""); oneDto.setEndTime(""); if (oneRiskClient.getBeginTimeTs() != null && oneRiskClient.getBeginTimeTs() > 0) { oneDto.setBeginTime(DateTimeTools.formatDateTime(new Date(oneRiskClient.getBeginTimeTs()))); } if (oneRiskClient.getEndTimeTs() != null && oneRiskClient.getEndTimeTs() > 0) { oneDto.setEndTime(DateTimeTools.formatDateTime(new Date(oneRiskClient.getEndTimeTs()))); } dtoPageList.add(oneDto); } pageInfo.setRecords(dtoPageList); } return Result.ok(pageInfo); } @ApiOperation(value = "删除风控配置") @GetMapping("/riskclient/deleteById") public Result deleteById(@RequestParam(name = "id") String id) { RiskClient riskClient = riskClientService.getById(id); if (riskClient == null) { return Result.failed("该记录不存在"); } RiskClientUtil.disableRiskConfig(riskClient.getType(), riskClient.getClientType(), riskClient.getClientKey()); riskClientService.removeById(id); return Result.succeed(); } @ApiOperation(value = "保存风控配置") @PostMapping("/riskclient/save") //@SysLog("保存风控配置") // 无token访问此处包错 public Result saveRiskClient(@Valid @RequestBody SaveRiskClientModel info) { String clientKey = info.getUserCode(); String clientType = "userCode"; String clientName = ""; if (StrUtil.isNotBlank(info.getIp())) { clientType = "ip"; clientKey = info.getIp(); clientName = ""; } else if (StrUtil.isNotBlank(info.getUserCode())) { clientType = "userCode"; clientKey = info.getUserCode(); User userEntity = userService.findUserByUserCode(info.getUserCode().trim()); if (userEntity == null) { throw new BusinessException("用户不存在"); } clientName = userEntity.getUserName(); } else { throw new BusinessException("不支持的类型"); } boolean isNew = false; Date now = new Date(); RiskClient existRiskClient = riskClientService.getRiskClient(clientKey, clientType, info.getType()); if (existRiskClient == null) { existRiskClient = new RiskClient(); existRiskClient.setCreateTime(now); isNew = true; } if (StrUtil.isBlank(info.getBeginTime()) || Objects.equals(info.getBeginTime(), RiskClient.INIT_TIME)) { existRiskClient.setBeginTimeTs(0L); } else { Date time = DateTimeTools.parseWithTimeZone(info.getBeginTime(), ZoneId.of("Asia/Shanghai")); existRiskClient.setBeginTimeTs(time.getTime()); } if (StrUtil.isBlank(info.getEndTime()) || Objects.equals(info.getEndTime(), RiskClient.INIT_TIME)) { existRiskClient.setEndTimeTs(0L); } else { Date time = DateTimeTools.parseWithTimeZone(info.getEndTime(), ZoneId.of("Asia/Shanghai")); existRiskClient.setEndTimeTs(time.getTime()); } existRiskClient.setClientName(clientName); existRiskClient.setClientKey(clientKey); existRiskClient.setClientType(clientType); existRiskClient.setType(info.getType()); existRiskClient.setStatus(1); if (info.getStatus() >= 0) { existRiskClient.setStatus(info.getStatus()); } existRiskClient.setLastOperaTime(now); if (isNew) { riskClientService.save(existRiskClient); } else { riskClientService.updateById(existRiskClient); } if (existRiskClient.getStatus() == 0) { RiskClientUtil.disableRiskConfig(info.getType(), clientType, clientKey); } else { RiskClientUtil.saveRiskConfig(existRiskClient); } return Result.ok(existRiskClient); } /** * 加载指定的风控配置信息 * * @param id * @return */ @GetMapping("/riskclient/loadConfig") @ApiOperation("风控配置信息") public Result loadRiskConfig(@RequestParam(name = "id") String id) { RiskClientInfoDto retDto = new RiskClientInfoDto(); RiskClient riskClient = riskClientService.getById(id); if (riskClient == null) { return Result.failed("记录不存在"); } BeanUtil.copyProperties(riskClient, retDto); retDto.setId(riskClient.getUuid()); // 字段值为空时,返回的json结构里没有该字段 retDto.setBeginTime(""); retDto.setEndTime(""); if (riskClient.getBeginTimeTs() != null && riskClient.getBeginTimeTs() > 0) { retDto.setBeginTime(DateTimeTools.formatDateTime(new Date(riskClient.getBeginTimeTs()))); } if (riskClient.getEndTimeTs() != null && riskClient.getEndTimeTs() > 0) { retDto.setEndTime(DateTimeTools.formatDateTime(new Date(riskClient.getEndTimeTs()))); } return Result.ok(retDto); } // /** // * 查询用户基本信息 // * @param userId // * @return // */ // @GetMapping("/riskclient/info") // @ApiOperation("风控配置信息") // public Result getRiskOfUser(@RequestParam(name = "userId") String userId) { // List list = Lists.newArrayList(); // User eUser = userService.findUserByUserCode(uid); // if(null == eUser) { // return Result.failed("用户不存在"); // } // UserBasicDto self = new UserBasicDto(); // self.setUserId(eUser.getUserId()); // self.setUserName(eUser.getUserName()); // self.setUid(eUser.getUserCode()); // self.setAccountType(Constants.ROLE_MAP.get(eUser.getRoleName())); // self.setRealNameAuthority(eUser.isRealNameAuthority()); // list.add(self); // List parents = userRecomService.getParents(eUser.getUserId()); // // // for (UserRecom userRecom: parents) { // User user = userService.getById(userRecom.getUserId()); // UserBasicDto userBasicDto = new UserBasicDto(); // userBasicDto.setUserId(user.getUserId()); // userBasicDto.setUserName(user.getUserName()); // userBasicDto.setUid(user.getUserCode()); // userBasicDto.setAccountType(Constants.ROLE_MAP.get(user.getRoleName())); // userBasicDto.setRealNameAuthority(user.isRealNameAuthority()); // list.add(userBasicDto); // } // // Collections.reverse(list); // // for(int level = 1;level<= list.size(); level++){ // list.get(level-1).setUserLevel(level); // } // return Result.ok(list); // } }