package com.sercurityControl.proteam.callInterface.controller; import com.alibaba.fastjson2.JSONObject; import com.alibaba.nacos.common.utils.CollectionUtils; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.securityControl.common.core.utils.AESCBCUtils; import com.securityControl.common.core.utils.StringUtils; import com.sercurityControl.proteam.callInterface.domain.TeamEvaDto; import com.sercurityControl.proteam.callInterface.domain.TeamEvaVo; import com.sercurityControl.proteam.callInterface.service.CallInterfaceService; import com.sercurityControl.proteam.util.DateTimeHelper; import lombok.extern.slf4j.Slf4j; import org.slf4j.Logger; import org.slf4j.LoggerFactory; 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.RestController; import javax.annotation.Resource; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; /** * 第三方调用接口web层 */ @RestController @RequestMapping("/pot/api") @Slf4j public class CallInterfaceController { Logger logger = LoggerFactory.getLogger(CallInterfaceController.class); @Resource(name = "CallInterfaceService") private CallInterfaceService service; /** * @return com.securityControl.common.core.web.domain.AjaxResult * @author cw chen * @description 获取班组评价数据 * @Param bean * @date 2023-06-06 10:29 */ @PostMapping("getTeamEvaList") public Map getTeamEvaList(@RequestBody TeamEvaDto dto) { Map map = new HashMap<>(16); try { boolean flag = verifyParam(dto); if(!flag){ map.put("code", 500); map.put("msg", "参数未加密"); }else{ TeamEvaDto teamEvaDto = setValue(dto); PageHelper.startPage(Integer.parseInt(teamEvaDto.getPage()), Integer.parseInt(teamEvaDto.getLimit())); PageInfo pageInfo = service.getTeamEvaList(teamEvaDto); List list = pageInfo.getList(); if(CollectionUtils.isNotEmpty(list)){ // JSONObject jsonObject = new JSONObject(); String jsonStrList = JSONObject.toJSONString(list); map.put("data", AESCBCUtils.encrypt(jsonStrList, AESCBCUtils.sKey)); }else{ map.put("data",list); } map.put("code", 200); map.put("msg", "获取数据成功"); map.put("total", pageInfo.getTotal()); } } catch (Exception e) { logger.error("服务异常,请稍后重试", e); map.put("code", 500); map.put("msg", "服务异常,请稍后重试"); } return map; } /** * @return java.lang.String * @author cw chen * @description 解析参数 * @Param value * @date 2023-06-07 15:05 */ public String decryptString(String value) { if (StringUtils.isNotBlank(value)) { try { return AESCBCUtils.decrypt(value); } catch (Exception e) { logger.error("参数未加密", e); return "error"; } } return null; } /** * @return boolean * @author cw chen * @description 校验班组评价参数是否加密 * @Param dto * @date 2023-06-07 15:43 */ public boolean verifyParam(TeamEvaDto dto) throws Exception { boolean flag = true; Field[] fields = dto.getClass().getDeclaredFields(); for (int i = 0; i < fields.length; i++) { String name = fields[i].getName(); name = name.substring(0, 1).toUpperCase() + name.substring(1); Method method = dto.getClass().getMethod("get" + name); String value = (String) method.invoke(dto); if (StringUtils.isNotBlank(value)) { String ds = decryptString(value); if (Objects.equals(ds, "error") || Objects.equals("",ds)) { flag = false; break; } } } return flag; } /** * @return com.sercurityControl.proteam.callInterface.domain.TeamEvaDto * @author cw chen * @description 设置班组评价参数值 * @Param dto * @date 2023-06-07 15:56 */ public TeamEvaDto setValue(TeamEvaDto dto) throws Exception { TeamEvaDto teamEvaDto = new TeamEvaDto(); if (StringUtils.isBlank(dto.getPage())) { teamEvaDto.setPage("1"); } else { teamEvaDto.setPage(decryptString(dto.getPage())); } if (StringUtils.isBlank(dto.getLimit())) { teamEvaDto.setLimit("100000"); } else { teamEvaDto.setLimit(decryptString(dto.getLimit())); } if (StringUtils.isBlank(dto.getStartTime()) && StringUtils.isBlank(dto.getEndTime())) { teamEvaDto.setStartTime(DateTimeHelper.getNowDate()); teamEvaDto.setEndTime(DateTimeHelper.getNowDate()); } else if (StringUtils.isNotBlank(dto.getStartTime()) && StringUtils.isNotBlank(dto.getEndTime())) { teamEvaDto.setStartTime(decryptString(dto.getStartTime())); teamEvaDto.setEndTime(decryptString(dto.getEndTime())); } else if (StringUtils.isNotBlank(dto.getStartTime()) && StringUtils.isBlank(dto.getEndTime())) { teamEvaDto.setStartTime(decryptString(dto.getStartTime())); } else if (StringUtils.isBlank(dto.getStartTime()) && StringUtils.isNotBlank(dto.getEndTime())) { teamEvaDto.setEndTime(decryptString(dto.getEndTime())); } return teamEvaDto; } }