package com.jflyfox.api.controller; import com.jfinal.kit.PathKit; import com.jflyfox.api.form.ApiResp; import com.jflyfox.api.service.ApiCache; import com.jflyfox.api.util.VerifyImageUtil; import com.jflyfox.component.base.BaseProjectController; import com.jflyfox.jfinal.component.annotation.ControllerBind; import java.io.File; import java.util.*; /** * 滑动验证码控制器 * * @author likai * @date Created in 2020/6/12 9:54 */ @ControllerBind(controllerKey = "/api/verify_code") public class VerifyCodeController extends BaseProjectController { private static final Long IMG_CACHE_EX_TIME = 120L; private static final String TEMP_IMG_PATH = "/image/verify_code"; public void get() { // new ApiResp().setData() renderJson(); } /** * 获取文件路径 * * @param path 文件地址 * @return */ public List queryFileList(String path) { File file = new File(PathKit.getWebRootPath() + TEMP_IMG_PATH); File[] files = file.listFiles(); return Arrays.asList(files); } /** * 获取滑动图片 */ public void getImageVerifyCode() { // 读取图库目录 List tempimgList = queryFileList(TEMP_IMG_PATH); File tempImgFile = tempimgList.get(new Random().nextInt(tempimgList.size())); // 根据模板裁剪图片 Map resultMap = new HashMap<>(); try { VerifyImageUtil.createImage(tempImgFile, resultMap); } catch (Exception e) { e.printStackTrace(); } int xWidth = (int) resultMap.get("xWidth"); // sessionId 为key,value滑动距离X轴,缓存120秒 String checkMoveId = UUID.randomUUID().toString().replaceAll("-", ""); ApiCache.addCache(checkMoveId, xWidth, IMG_CACHE_EX_TIME); // 移除map的滑动距离,不返回给前端 resultMap.remove("xWidth"); resultMap.put("checkMoveId", checkMoveId); renderJson(new ApiResp().setData(resultMap)); } }