diff --git a/backend/src/main/java/com/yfd/platform/data/domain/FishDraftData.java b/backend/src/main/java/com/yfd/platform/data/domain/FishDraftData.java index 9ac6698..dc6d5a4 100644 --- a/backend/src/main/java/com/yfd/platform/data/domain/FishDraftData.java +++ b/backend/src/main/java/com/yfd/platform/data/domain/FishDraftData.java @@ -95,6 +95,19 @@ public class FishDraftData implements Serializable { */ private String picpth; + /** + * 过鱼视频文件路径 + */ + @TableField(exist = false) + private String vdpthName; + + /** + * 图片文件路径 + */ + @TableField(exist = false) + private String picpthName; + + /** * 是否鱼苗(0否 1是) */ diff --git a/backend/src/main/java/com/yfd/platform/data/domain/FishImportResult.java b/backend/src/main/java/com/yfd/platform/data/domain/FishImportResult.java index b0ffa2a..ce589a5 100644 --- a/backend/src/main/java/com/yfd/platform/data/domain/FishImportResult.java +++ b/backend/src/main/java/com/yfd/platform/data/domain/FishImportResult.java @@ -42,16 +42,21 @@ public class FishImportResult { private FishDraftData data; private List unrecognizedFields; private List warnings; - + private List vdpthsWarnings; + private List picpthsWarnings; public FishImportRow() { this.unrecognizedFields = new ArrayList<>(); this.warnings = new ArrayList<>(); + this.vdpthsWarnings = new ArrayList<>(); + this.picpthsWarnings = new ArrayList<>(); } public FishImportRow(int rowIndex) { this.rowIndex = rowIndex; this.unrecognizedFields = new ArrayList<>(); this.warnings = new ArrayList<>(); + this.vdpthsWarnings = new ArrayList<>(); + this.picpthsWarnings = new ArrayList<>(); } } } \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/data/service/AttachmentUploadService.java b/backend/src/main/java/com/yfd/platform/data/service/AttachmentUploadService.java index 5cb5e08..e34f6b6 100644 --- a/backend/src/main/java/com/yfd/platform/data/service/AttachmentUploadService.java +++ b/backend/src/main/java/com/yfd/platform/data/service/AttachmentUploadService.java @@ -1,8 +1,12 @@ package com.yfd.platform.data.service; +import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import javax.net.ssl.SSLContext; +import javax.net.ssl.TrustManager; +import javax.net.ssl.X509TrustManager; import java.io.File; import java.io.IOException; import java.net.URI; @@ -10,6 +14,8 @@ import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.nio.file.Files; +import java.security.SecureRandom; +import java.security.cert.X509Certificate; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @@ -42,37 +48,51 @@ public class AttachmentUploadService { "Content-Type: application/octet-stream\r\n\r\n"; String footer = "\r\n--" + boundary + "--\r\n"; - byte[] body; - if (fileName.toLowerCase().endsWith(".mp4") || fileName.toLowerCase().endsWith(".avi") || - fileName.toLowerCase().endsWith(".mov") || fileName.toLowerCase().endsWith(".wmv")) { - body = new byte[header.getBytes().length + fileContent.length + footer.getBytes().length]; - System.arraycopy(header.getBytes(), 0, body, 0, header.getBytes().length); - System.arraycopy(fileContent, 0, body, header.getBytes().length, fileContent.length); - System.arraycopy(footer.getBytes(), 0, body, header.getBytes().length + fileContent.length, footer.getBytes().length); - } else { - body = new byte[header.getBytes().length + fileContent.length + footer.getBytes().length]; - System.arraycopy(header.getBytes(), 0, body, 0, header.getBytes().length); - System.arraycopy(fileContent, 0, body, header.getBytes().length, fileContent.length); - System.arraycopy(footer.getBytes(), 0, body, header.getBytes().length + fileContent.length, footer.getBytes().length); - } + byte[] body = new byte[header.getBytes().length + fileContent.length + footer.getBytes().length]; + System.arraycopy(header.getBytes(), 0, body, 0, header.getBytes().length); + System.arraycopy(fileContent, 0, body, header.getBytes().length, fileContent.length); + System.arraycopy(footer.getBytes(), 0, body, header.getBytes().length + fileContent.length, footer.getBytes().length); - HttpRequest request = HttpRequest.newBuilder() - .uri(URI.create(UPLOAD_URL)) - .header("Content-Type", "multipart/form-data; boundary=" + boundary) - .POST(HttpRequest.BodyPublishers.ofByteArray(body)) - .build(); + try { + // 1. 创建信任所有证书的 TrustManager + TrustManager[] trustAllCerts = new TrustManager[]{ + new X509TrustManager() { + public void checkClientTrusted(X509Certificate[] chain, String authType) {} + public void checkServerTrusted(X509Certificate[] chain, String authType) {} + public X509Certificate[] getAcceptedIssuers() { return new X509Certificate[0]; } + } + }; - HttpResponse response = httpClient.send(request, HttpResponse.BodyHandlers.ofString()); + // 2. 初始化 SSLContext + SSLContext sc = SSLContext.getInstance("TLS"); + sc.init(null, trustAllCerts, new SecureRandom()); - if (response.statusCode() == 200) { - String responseBody = response.body(); - return parseAttachmentId(responseBody); - } else { - log.error("上传文件失败: {}, 状态码: {}", fileName, response.statusCode()); + // 3. 构建支持 HTTPS 且忽略证书验证的 HttpClient + HttpClient secureClient = HttpClient.newBuilder() + .sslContext(sc) + .build(); + + HttpRequest request = HttpRequest.newBuilder() + .uri(URI.create(UPLOAD_URL)) + .header("Content-Type", "multipart/form-data; boundary=" + boundary) + .POST(HttpRequest.BodyPublishers.ofByteArray(body)) + .build(); + + // 4. 使用新的 secureClient 发送请求 + HttpResponse response = secureClient.send(request, HttpResponse.BodyHandlers.ofString()); + + if (response.statusCode() == 200) { + String responseBody = response.body(); + return parseAttachmentId(responseBody); + } else { + log.error("上传文件失败: {}, 状态码: {}", fileName, response.statusCode()); + return null; + } + } catch (Exception e) { + log.error("文件上传过程中发生异常: {}", e.getMessage(), e); return null; } } - public String uploadVideo(File file) throws IOException, InterruptedException { return uploadFile(file); } @@ -137,19 +157,14 @@ public class AttachmentUploadService { } try { - if (jsonResponse.contains("\"message\":")) { - int start = jsonResponse.indexOf("\"message\":\"") + 11; - int end = jsonResponse.indexOf("\"", start); - if (start > 10 && end > start) { - return jsonResponse.substring(start, end); - } - } - if (jsonResponse.contains("\"message\":\"")) { - int start = jsonResponse.indexOf("\"message\":\"") + 11; - int end = jsonResponse.indexOf("\"", start); - if (start > 10 && end > start) { - return jsonResponse.substring(start, end); - } + JSONObject json = JSONObject.parseObject(jsonResponse); + // 尝试从常见的返回字段中获取 ID,根据实际接口返回调整 key + if (json.containsKey("message")) { + return json.getString("message"); + } else if (json.containsKey("data")) { + return json.getString("data"); + } else if (json.containsKey("id")) { + return json.getString("id"); } } catch (Exception e) { log.error("解析附件ID失败: {}", jsonResponse, e); diff --git a/backend/src/main/java/com/yfd/platform/data/service/impl/FishImportServiceImpl.java b/backend/src/main/java/com/yfd/platform/data/service/impl/FishImportServiceImpl.java index d2f2e1b..67ce0a9 100644 --- a/backend/src/main/java/com/yfd/platform/data/service/impl/FishImportServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/data/service/impl/FishImportServiceImpl.java @@ -22,6 +22,7 @@ import org.springframework.web.multipart.MultipartFile; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; +import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; @@ -105,6 +106,8 @@ public class FishImportServiceImpl implements IFishImportService { EXCEL_COLUMN_INDEX_MAPPING.put(8, "fsz"); EXCEL_COLUMN_INDEX_MAPPING.put(9, "fwet"); EXCEL_COLUMN_INDEX_MAPPING.put(10, "wt"); + EXCEL_COLUMN_INDEX_MAPPING.put(11, "picpth"); + EXCEL_COLUMN_INDEX_MAPPING.put(12, "vdpth"); } @Override @@ -269,6 +272,19 @@ public class FishImportServiceImpl implements IFishImportService { data.setFcnt(fcnt); } break; + case "wt": + if (!StringUtils.hasText(cellValue)) { + importRow.getWarnings().add(fieldName); + data.setWt(parseBigDecimal(cellValue)); + } else { + BigDecimal wt = parseBigDecimal(cellValue); + if (wt == null) { + importRow.getWarnings().add(fieldName); + data.setWt(parseBigDecimal(cellValue)); + } + data.setWt(wt); + } + break; case "fwet": data.setFwet(cellValue.trim()); break; @@ -303,14 +319,16 @@ public class FishImportServiceImpl implements IFishImportService { break; case "vdpth": data.setVdpth(cellValue.trim()); + data.setVdpthName(cellValue.trim()); break; case "picpth": data.setPicpth(cellValue.trim()); + data.setPicpthName(cellValue.trim()); break; case "isfs": if (StringUtils.hasText(cellValue)) { String isfs = resolveIsfs(cellValue.trim(), importRow); - data.setIsfs("是".equals(isfs) ? 1 : 0); + data.setIsfs("1".equals(isfs) ? 1 : 0); } break; case "sourceType": @@ -525,13 +543,13 @@ public class FishImportServiceImpl implements IFishImportService { String lowerName = direction.toLowerCase().trim(); if (lowerName.contains("上行") && lowerName.contains("折返")) { - return "03"; + return "2"; } else if (lowerName.contains("下行") && lowerName.contains("折返")) { - return "04"; + return "3"; } else if (lowerName.contains("上行")) { - return "01"; + return "0"; } else if (lowerName.contains("下行")) { - return "02"; + return "1"; } importRow.getWarnings().add("direction"); return direction; @@ -677,6 +695,23 @@ public class FishImportServiceImpl implements IFishImportService { } } + /** + * 解析 BigDecimal 类型数据 + * @param value 字符串数值 + * @return BigDecimal 对象,解析失败或为空时返回 null + */ + private BigDecimal parseBigDecimal(String value) { + if (!StringUtils.hasText(value)) { + return null; + } + try { + return new BigDecimal(value.trim()); + } catch (NumberFormatException e) { + return null; + } + } + + private String parseSourceType(String value) { if (!StringUtils.hasText(value)) { return "IMPORT"; @@ -732,8 +767,24 @@ public class FishImportServiceImpl implements IFishImportService { } private void processAttachments(FishImportResult result, ZipFileUtil.ZipContent zipContent) { - if (result.getSuccessRows() == null || result.getSuccessRows().isEmpty()) { - return; + for (FishImportResult.FishImportRow importRow : result.getFailedRows()) { + FishDraftData data = importRow.getData(); + if (data == null) { + continue; + } + + String vdpth = data.getVdpth(); + String picpth = data.getPicpth(); + + if (StringUtils.hasText(vdpth)) { + String uploadedVdpth = processVideoAttachments(importRow,vdpth, zipContent.videos); + data.setVdpth(uploadedVdpth); + } + + if (StringUtils.hasText(picpth)) { + String uploadedPicpth = processImageAttachments(importRow,picpth, zipContent.images); + data.setPicpth(uploadedPicpth); + } } for (FishImportResult.FishImportRow importRow : result.getSuccessRows()) { @@ -746,18 +797,18 @@ public class FishImportServiceImpl implements IFishImportService { String picpth = data.getPicpth(); if (StringUtils.hasText(vdpth)) { - String uploadedVdpth = processVideoAttachments(vdpth, zipContent.videos); + String uploadedVdpth = processVideoAttachments(importRow,vdpth, zipContent.videos); data.setVdpth(uploadedVdpth); } if (StringUtils.hasText(picpth)) { - String uploadedPicpth = processImageAttachments(picpth, zipContent.images); + String uploadedPicpth = processImageAttachments(importRow,picpth, zipContent.images); data.setPicpth(uploadedPicpth); } } } - private String processVideoAttachments(String videoNames, Map videoMap) { + private String processVideoAttachments(FishImportResult.FishImportRow importRow, String videoNames, Map videoMap) { if (videoNames == null || videoNames.isEmpty() || videoMap == null || videoMap.isEmpty()) { return videoNames; } @@ -778,20 +829,24 @@ public class FishImportServiceImpl implements IFishImportService { if (attachmentId != null) { attachmentIds.add(attachmentId); } else { - attachmentIds.add(fileName); + importRow.getVdpthsWarnings().add(fileName); +// attachmentIds.add(fileName); } } catch (Exception e) { - attachmentIds.add(fileName); + e.printStackTrace(); + importRow.getVdpthsWarnings().add(fileName); +// attachmentIds.add(fileName); } } else { - attachmentIds.add(fileName); + importRow.getVdpthsWarnings().add(fileName); +// attachmentIds.add(fileName); } } return String.join(",", attachmentIds); } - private String processImageAttachments(String imageNames, Map imageMap) { + private String processImageAttachments(FishImportResult.FishImportRow importRow,String imageNames, Map imageMap) { if (imageNames == null || imageNames.isEmpty() || imageMap == null || imageMap.isEmpty()) { return imageNames; } @@ -812,13 +867,17 @@ public class FishImportServiceImpl implements IFishImportService { if (attachmentId != null) { attachmentIds.add(attachmentId); } else { - attachmentIds.add(fileName); + importRow.getPicpthsWarnings().add(fileName); +// attachmentIds.add(fileName); } } catch (Exception e) { - attachmentIds.add(fileName); + e.printStackTrace(); + importRow.getPicpthsWarnings().add(fileName); +// attachmentIds.add(fileName); } } else { - attachmentIds.add(fileName); + importRow.getPicpthsWarnings().add(fileName); +// attachmentIds.add(fileName); } } diff --git a/backend/src/main/java/com/yfd/platform/env/controller/SdHbrvDicController.java b/backend/src/main/java/com/yfd/platform/env/controller/SdHbrvDicController.java index fef61cc..a91acea 100644 --- a/backend/src/main/java/com/yfd/platform/env/controller/SdHbrvDicController.java +++ b/backend/src/main/java/com/yfd/platform/env/controller/SdHbrvDicController.java @@ -96,4 +96,12 @@ public class SdHbrvDicController { boolean result = hbrvDicService.deleteHbrvDic(hbrvcd, baseid); return result ? ResponseResult.success("删除成功") : ResponseResult.error("删除失败"); } + + @GetMapping("/selectForDropdown") + @Operation(summary = "下拉框列表查询") + public ResponseResult selectForDropdown( + @RequestParam(required = false) String hbrvnm, + @RequestParam(required = false) String baseid) { + return ResponseResult.successData(hbrvDicService.selectForDropdown(hbrvnm, baseid)); + } } \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/env/service/ISdHbrvDicService.java b/backend/src/main/java/com/yfd/platform/env/service/ISdHbrvDicService.java index f94d28a..f54a5ce 100644 --- a/backend/src/main/java/com/yfd/platform/env/service/ISdHbrvDicService.java +++ b/backend/src/main/java/com/yfd/platform/env/service/ISdHbrvDicService.java @@ -47,4 +47,9 @@ public interface ISdHbrvDicService extends IService { * 删除流域 */ boolean deleteHbrvDic(String hbrvcd, String baseid); + + /** + * 下拉框列表查询(支持名称模糊查询) + */ + List selectForDropdown(String hbrvnm, String baseid); } \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/env/service/impl/SdHbrvDicServiceImpl.java b/backend/src/main/java/com/yfd/platform/env/service/impl/SdHbrvDicServiceImpl.java index 3773116..0f3a64d 100644 --- a/backend/src/main/java/com/yfd/platform/env/service/impl/SdHbrvDicServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/env/service/impl/SdHbrvDicServiceImpl.java @@ -71,4 +71,14 @@ public class SdHbrvDicServiceImpl extends ServiceImpl selectForDropdown(String hbrvnm, String baseid) { + return this.lambdaQuery() + .like(hbrvnm != null && !hbrvnm.isEmpty(), SdHbrvDic::getHbrvnm, hbrvnm) + .eq(baseid != null && !baseid.isEmpty(), SdHbrvDic::getBaseid, baseid) + .eq(SdHbrvDic::getEnabled, 1) + .orderByAsc(SdHbrvDic::getOrderIndex) + .list(); + } } \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/system/controller/SmsVerifyCodeController.java b/backend/src/main/java/com/yfd/platform/system/controller/SmsVerifyCodeController.java index 1e6549b..98b329a 100644 --- a/backend/src/main/java/com/yfd/platform/system/controller/SmsVerifyCodeController.java +++ b/backend/src/main/java/com/yfd/platform/system/controller/SmsVerifyCodeController.java @@ -1,19 +1,30 @@ package com.yfd.platform.system.controller; +import cn.hutool.json.JSONUtil; +import cn.hutool.jwt.JWTUtil; import com.yfd.platform.config.ResponseResult; -import com.yfd.platform.system.domain.SmsVerifyCode; -import com.yfd.platform.system.domain.SysUser; +import com.yfd.platform.config.WebConfig; +import com.yfd.platform.system.domain.*; import com.yfd.platform.system.service.ISmsVerifyCodeService; +import com.yfd.platform.system.service.ISysLogService; import com.yfd.platform.system.service.IUserService; +import com.yfd.platform.utils.RequestHolder; +import com.yfd.platform.utils.StringUtils; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Value; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.web.bind.annotation.*; import java.sql.Timestamp; import java.util.Date; +import java.util.HashMap; +import java.util.Map; /** *

@@ -31,6 +42,12 @@ public class SmsVerifyCodeController { @Resource private IUserService userService; + @Resource + private WebConfig webConfig; + + @Resource + private ISysLogService sysLogService; + @Value("${rsa.private_key}") private String privateKey; @@ -39,8 +56,9 @@ public class SmsVerifyCodeController { */ @PostMapping("/sendCode") @Operation(summary = "发送验证码") - public ResponseResult sendVerifyCode(@RequestParam String phone, - @RequestParam Integer type) { + public ResponseResult sendVerifyCode(@RequestBody SmsVerifyCodeRequest smsVerifyCodeRequest) { + String phone = smsVerifyCodeRequest.getPhone(); + Integer type = smsVerifyCodeRequest.getType(); if (phone == null || phone.isEmpty()) { return ResponseResult.error("手机号不能为空"); } @@ -75,8 +93,9 @@ public class SmsVerifyCodeController { */ @PostMapping("/register") @Operation(summary = "注册用户") - public ResponseResult register(@RequestBody SysUser user, - @RequestParam String code) { + public ResponseResult register(@RequestBody SmsVerifyCodeRequest smsVerifyCodeRequest) { + SysUser user = smsVerifyCodeRequest.getUser(); + String code = smsVerifyCodeRequest.getCode(); if (user.getPhone() == null || user.getPhone().isEmpty()) { return ResponseResult.error("手机号不能为空"); } @@ -126,9 +145,10 @@ public class SmsVerifyCodeController { */ @PostMapping("/resetPassword") @Operation(summary = "找回密码") - public ResponseResult resetPassword(@RequestParam String phone, - @RequestParam String code, - @RequestParam String password) { + public ResponseResult resetPassword(@RequestBody SmsVerifyCodeRequest smsVerifyCodeRequest) { + String password = smsVerifyCodeRequest.getPassword(); + String phone = smsVerifyCodeRequest.getPhone(); + String code = smsVerifyCodeRequest.getCode(); if (phone == null || phone.isEmpty()) { return ResponseResult.error("手机号不能为空"); } @@ -165,9 +185,10 @@ public class SmsVerifyCodeController { */ @GetMapping("/verifyCode") @Operation(summary = "验证验证码") - public ResponseResult verifyCode(@RequestParam String phone, - @RequestParam String code, - @RequestParam Integer type) { + public ResponseResult verifyCode(@RequestBody SmsVerifyCodeRequest smsVerifyCodeRequest) { + String phone = smsVerifyCodeRequest.getPhone(); + String code = smsVerifyCodeRequest.getCode(); + Integer type = smsVerifyCodeRequest.getType(); boolean valid = smsVerifyCodeService.verifyCode(phone, code, type); if (valid) { return ResponseResult.success(); @@ -175,4 +196,87 @@ public class SmsVerifyCodeController { return ResponseResult.error("验证码错误或已过期"); } } + + /** + * 短信验证码登录 + */ + @PostMapping("/login") + @Operation(summary = "短信验证码登录") + public ResponseResult smsLogin(@RequestBody SmsVerifyCodeRequest smsVerifyCodeRequest) { + String phone = smsVerifyCodeRequest.getPhone(); + String code = smsVerifyCodeRequest.getCode(); + if (phone == null || phone.isEmpty()) { + return ResponseResult.error("手机号不能为空"); + } + if (code == null || code.isEmpty()) { + return ResponseResult.error("验证码不能为空"); + } + + boolean verified = smsVerifyCodeService.verifyCode(phone, code, SmsVerifyCode.TYPE_REGISTER); + if (!verified) { + return ResponseResult.error("验证码错误或已过期"); + } + + SysUser user = userService.getUserByPhone(phone); + if (user == null) { + return ResponseResult.error("该手机号未注册"); + } + + if (user.getStatus() != null && user.getStatus() == 0) { + return ResponseResult.error("账号已停用"); + } + + if (user.getRegStatus() != null && user.getRegStatus() == 0) { + return ResponseResult.error("账号待审核,请联系管理员"); + } + + if (user.getRegStatus() != null && user.getRegStatus() == 2) { + return ResponseResult.error("账号审核未通过"); + } + + UsernamePasswordAuthenticationToken authenticationToken = + new UsernamePasswordAuthenticationToken(user.getUsername(), user.getPassword()); + Authentication authenticate = new UsernamePasswordAuthenticationToken(user, null, authenticationToken.getAuthorities()); + SecurityContextHolder.getContext().setAuthentication(authenticate); + + LoginUser loginUser = new LoginUser(); + loginUser.setUser(user); + loginUser.setUsername(user.getUsername()); + + HttpServletRequest request = RequestHolder.getHttpServletRequest(); + SysLog sysLog = new SysLog(); + sysLog.setUsercode(user.getUsername()); + sysLog.setUsername(user.getNickname()); + sysLog.setRequestip(StringUtils.getIp(request)); + sysLog.setBrowser(StringUtils.getBrowser(request)); + sysLog.setOpttype("登录(login)"); + sysLog.setModule("短信验证码登录"); + sysLog.setMethod(this.getClass().getName() + ".smsLogin()"); + sysLog.setDescription(user.getNickname() + "使用短信验证码登录系统!"); + sysLog.setLogtime(new Timestamp(System.currentTimeMillis())); + sysLogService.save(sysLog); + + String userId = user.getId(); + Map map = new HashMap<>(10) { + private static final long serialVersionUID = 1L; + + { + put("userid", userId); + put("username", loginUser.getUsername()); + long expireTime = System.currentTimeMillis() + (30L * 24L * 60L * 60L * 1000L); + put("expire_time", expireTime); + } + }; + + String token = JWTUtil.createToken(map, "12345678".getBytes()); + map.put("token", token); + + String jsonStr = JSONUtil.toJsonStr(loginUser); + webConfig.loginuserCache().put("login:" + userId, jsonStr); + webConfig.loginuserCache().put("expire_time:" + userId, map.get("expire_time").toString()); + + map.put("user", user); + + return ResponseResult.successData(map); + } } \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/system/domain/LoginUser.java b/backend/src/main/java/com/yfd/platform/system/domain/LoginUser.java index 44cfb35..902c628 100644 --- a/backend/src/main/java/com/yfd/platform/system/domain/LoginUser.java +++ b/backend/src/main/java/com/yfd/platform/system/domain/LoginUser.java @@ -20,6 +20,8 @@ public class LoginUser implements UserDetails { private SysUser user; + private String username; + private List permissions; public LoginUser(SysUser user, List permissions) { diff --git a/backend/src/main/java/com/yfd/platform/system/domain/SmsVerifyCodeRequest.java b/backend/src/main/java/com/yfd/platform/system/domain/SmsVerifyCodeRequest.java new file mode 100644 index 0000000..d11c12f --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/system/domain/SmsVerifyCodeRequest.java @@ -0,0 +1,31 @@ +package com.yfd.platform.system.domain; + + +import lombok.Data; + +@Data +public class SmsVerifyCodeRequest { + + /** + * 验证码类型 + */ + private Integer type; + /** + * 手机号 + */ + private String phone; + /** + * 验证码 + */ + private String code; + + /** + * 密码 + */ + private String password; + + /** + * 用户 + */ + private SysUser user; +} diff --git a/backend/src/main/java/com/yfd/platform/system/service/impl/SmsVerifyCodeServiceImpl.java b/backend/src/main/java/com/yfd/platform/system/service/impl/SmsVerifyCodeServiceImpl.java index 2b939eb..8e0c91f 100644 --- a/backend/src/main/java/com/yfd/platform/system/service/impl/SmsVerifyCodeServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/system/service/impl/SmsVerifyCodeServiceImpl.java @@ -21,7 +21,7 @@ import java.util.Random; @Service public class SmsVerifyCodeServiceImpl extends ServiceImpl implements ISmsVerifyCodeService { - private static final int CODE_VALID_MINUTES = 5; + private static final int CODE_VALID_MINUTES = 1; private static final Random RANDOM = new Random(); @Resource diff --git a/backend/src/main/resources/application.yml b/backend/src/main/resources/application.yml index f3b5aa4..cfbf0b8 100644 --- a/backend/src/main/resources/application.yml +++ b/backend/src/main/resources/application.yml @@ -1,6 +1,6 @@ spring: profiles: - active: prod + active: devtw jasypt: encryptor: diff --git a/backend/src/main/resources/mapper/data/FishDraftDataMapper.xml b/backend/src/main/resources/mapper/data/FishDraftDataMapper.xml index fc47cec..8fba01e 100644 --- a/backend/src/main/resources/mapper/data/FishDraftDataMapper.xml +++ b/backend/src/main/resources/mapper/data/FishDraftDataMapper.xml @@ -6,6 +6,7 @@ +