glj-代码提交

This commit is contained in:
glj 2023-07-08 13:50:19 +08:00
parent 63c4a85a5f
commit 1e73ec8c55
6 changed files with 122 additions and 12 deletions

View File

@ -1,17 +1,31 @@
package com.kening.vordm.controller; package com.kening.vordm.controller;
import com.kening.vordm.entity.Email;
import com.kening.vordm.mapper.GuestInfoMapper;
import com.kening.vordm.service.EmailService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.common.cache.CacheNames; import org.springblade.common.cache.CacheNames;
import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.cache.utils.CacheUtil;
import org.springblade.core.redis.cache.BladeRedis; import org.springblade.core.redis.cache.BladeRedis;
import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.R;
import org.springblade.core.tool.support.Kv;
import org.springblade.core.tool.utils.DigestUtil;
import org.springblade.core.tool.utils.StringUtil; import org.springblade.core.tool.utils.StringUtil;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import java.time.Duration;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import static org.springblade.core.cache.constant.CacheConstant.USER_CACHE;
/** /**
* @author wanghongqing * @author wanghongqing
@ -21,6 +35,7 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/ui/captcha") @RequestMapping("/ui/captcha")
@RequiredArgsConstructor @RequiredArgsConstructor
@Api(value = "验证码校验接口", tags = "验证码校验") @Api(value = "验证码校验接口", tags = "验证码校验")
@Slf4j
public class CaptchaController extends BladeController { public class CaptchaController extends BladeController {
private final BladeRedis bladeRedis; private final BladeRedis bladeRedis;
@ -37,4 +52,80 @@ public class CaptchaController extends BladeController {
} }
return R.success("OK"); return R.success("OK");
} }
private final EmailService emailService;
private final GuestInfoMapper guestInfoMapper;
//发送邮箱验证码
@GetMapping("/sendEmailCode")
@ApiOperation(value = "验证码校验", notes = "传入需要校验的邮箱")
public R sendEmailCode(String emailAccount) {
String verCode = makeRandomPassword(4);
bladeRedis.setEx(CacheNames.CAPTCHA_KEY + emailAccount, verCode, Duration.ofMinutes(5));
//发送邮件
Email email = new Email();
email.setSubject("Retrieve password and verify email address");
String text = "Code:" + verCode + "<br>";
text += "period of validity" + 5 + "minute" + "<br>";
email.setText(text);
String[] to = new String[]{emailAccount};
email.setTos(to);
email.setHtmlText(true);
try {
emailService.sendMimeMessage(email);
} catch (Exception e) {
log.error("发送邮件失败:{}", e);
return R.fail("发送失败");
}
// 将key返回给前端
return R.success("OK");
}
@GetMapping("/codeCheck")
@ApiOperation(value = "邮箱验证码校验", notes = "传入需要校验的验证码以及缓存Key")
public R codeCheck(String emailAccount, String code) {
// 获取验证码
String redisCode = bladeRedis.get(CacheNames.CAPTCHA_KEY + emailAccount);
// 判断验证码
if (code == null || !StringUtil.equalsIgnoreCase(redisCode, code)) {
return R.data(1404, "Verification code error");
}
String password = makeRandomPassword(8);
//修改用户密码
guestInfoMapper.updatePassword(emailAccount, DigestUtil.encrypt(password));
CacheUtil.clear(USER_CACHE);
//发送邮件
Email email = new Email();
email.setSubject("Retrieve password and verify email address");
String text = "Latest password:" + password + "<br>";
email.setText(text);
String[] to = new String[]{emailAccount};
email.setTos(to);
email.setHtmlText(true);
try {
emailService.sendMimeMessage(email);
} catch (Exception e) {
log.error("发送邮件失败:{}", e);
return R.fail("发送失败");
}
return R.success("OK");
}
public static String makeRandomPassword(int len) {
char charr[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890".toCharArray();
StringBuilder sb = new StringBuilder();
Random r = new Random();
for (int x = 0; x < len; ++x) {
sb.append(charr[r.nextInt(charr.length)]);
}
return sb.toString();
}
} }

View File

@ -346,6 +346,7 @@ public class DisasterInfoController {
Boolean flag = disasterInfoService.updateById(disasterInfo); Boolean flag = disasterInfoService.updateById(disasterInfo);
return R.data(flag); return R.data(flag);
} }
private final EmailService emailService; private final EmailService emailService;
@ApiOperationSupport(order = 6) @ApiOperationSupport(order = 6)
@ApiOperation(value = "提交", notes = "传入Tool") @ApiOperation(value = "提交", notes = "传入Tool")
@ -360,6 +361,7 @@ public class DisasterInfoController {
one.setStatus(1); one.setStatus(1);
one.setManagerId(chiefId); one.setManagerId(chiefId);
guestManageDisasterRefService.updateById(one); guestManageDisasterRefService.updateById(one);
disasterInfoService.updateById(disasterInfo);
//获得disasterInfo //获得disasterInfo
disasterInfo = disasterInfoService.getById(disasterInfo.getId()); disasterInfo = disasterInfoService.getById(disasterInfo.getId());
@ -368,7 +370,7 @@ public class DisasterInfoController {
Administrator user = administratorService.getById(chiefId); Administrator user = administratorService.getById(chiefId);
//发送邮件 //发送邮件
Email email = new Email(); Email email = new Email();
email.setSubject("You have a new pending disaster"); email.setSubject("You have a Disaster Response task pending");
String text ="Disaster Keyword:" + disasterInfo.getDisasterKeyword()+"<br>"; String text ="Disaster Keyword:" + disasterInfo.getDisasterKeyword()+"<br>";
text+= "Disaster Time:" + disasterInfo.getDisasterTime()+"<br>"; text+= "Disaster Time:" + disasterInfo.getDisasterTime()+"<br>";
//disaster_country //disaster_country

View File

@ -19,6 +19,7 @@ import java.time.LocalDate;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Random;
/** /**
* 管理员用户实现类 * 管理员用户实现类
@ -66,8 +67,11 @@ public class AdministratorServiceImpl extends BaseServiceImpl<AdministratorMappe
administrator.setTenantId(tenantId); administrator.setTenantId(tenantId);
administrator.setUserType(1); administrator.setUserType(1);
administrator.setRealName(administrator.getName()); administrator.setRealName(administrator.getName());
//随机密码
String s = makeRandomPassword(8);
System.out.println(s);
//密码默认为1234 //密码默认为1234
administrator.setPassword(DigestUtil.encrypt("1234")); administrator.setPassword(DigestUtil.encrypt(s));
//角色为chief //角色为chief
Long roleId = baseMapper.getChiefRole("chief"); Long roleId = baseMapper.getChiefRole("chief");
administrator.setRoleId(String.valueOf(roleId)); administrator.setRoleId(String.valueOf(roleId));
@ -75,12 +79,12 @@ public class AdministratorServiceImpl extends BaseServiceImpl<AdministratorMappe
save(administrator); save(administrator);
try{ try{
//设置标题 //设置标题
String subject = "Welcome to register"; String subject = "Welcome to become the operation and maintenance administrator of the VoRDM platform";
//设置要填充模板的参数 //设置要填充模板的参数
Map<String, Object> dataMap = new HashMap<>(); Map<String, Object> dataMap = new HashMap<>();
dataMap.put("account", administrator.getAccount()); dataMap.put("account", administrator.getAccount());
//默认密码 1234 //默认密码 1234
dataMap.put("password", "1234"); dataMap.put("password", s);
dataMap.put("link",link); dataMap.put("link",link);
dataMap.put("time", LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy/MM/dd"))); dataMap.put("time", LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy/MM/dd")));
Email email = new Email(); Email email = new Email();
@ -94,4 +98,16 @@ public class AdministratorServiceImpl extends BaseServiceImpl<AdministratorMappe
} }
return Boolean.TRUE; return Boolean.TRUE;
} }
public static String makeRandomPassword(int len) {
char charr[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890".toCharArray();
StringBuilder sb = new StringBuilder();
Random r = new Random();
for (int x = 0; x < len; ++x) {
sb.append(charr[r.nextInt(charr.length)]);
}
return sb.toString();
}
} }

View File

@ -61,7 +61,7 @@ public class EmailServiceImpl implements EmailService {
} }
disasterInfoMapper.updataUserByEmail(userVo.getEmail(),"1790ae2beb8e6c6a4c6744667e11c4ba26abeb09"); disasterInfoMapper.updataUserByEmail(userVo.getEmail(),"1790ae2beb8e6c6a4c6744667e11c4ba26abeb09");
Email email = new Email(); Email email = new Email();
email.setSubject("您的登录密码"); email.setSubject("Your login password has been updated");
String encrypt = DigestUtil.encrypt(bladeUser.getPassword()); String encrypt = DigestUtil.encrypt(bladeUser.getPassword());
email.setText("Your login password has been updated to“admin@#”"); email.setText("Your login password has been updated to“admin@#”");
email.setHtmlText(false); email.setHtmlText(false);

View File

@ -84,8 +84,9 @@ public class NewsServiceImpl extends ServiceImpl<NewsMapper, News>
@Override @Override
public R importTemplate(MultipartFile file, Integer typeData, Long disasterId) { public R importTemplate(MultipartFile file, Integer typeData, Long disasterId) {
List content; List content;
ExcelReader reader = null;
try { try {
ExcelReader reader = ExcelUtil.getReader(file.getInputStream()); reader = ExcelUtil.getReader(file.getInputStream());
content = reader.read(); content = reader.read();
} catch (Exception var30) { } catch (Exception var30) {
return R.fail("上传文件格式解析错误"); return R.fail("上传文件格式解析错误");

View File

@ -67,11 +67,11 @@
<a href="#" th:href="@{http://www.baidu.com/register/{id}(id=${id})}">激活账号</a>--> <a href="#" th:href="@{http://www.baidu.com/register/{id}(id=${id})}">激活账号</a>-->
<div class="container"> <div class="container">
<div class="content"> <div class="content">
<h2>Hello, thank you for your registration</h2> <!-- <h2>Hello, thank you for your registration</h2>-->
<p>Your account number<b><span th:text="${account}"></span></b></p> <p>Your account number<b><span th:text="${account}"></span></b></p>
<p>Your password<b><span th:text="${password}"></span></b></p> <p>Your password<b><span th:text="${password}"></span></b></p>
<p>The date you registered<b><span th:text="${time}"></span></b></p> <p>The date you registered<b><span th:text="${time}"></span></b></p>
<P><b>Please click login:<a th:href="${link}">Point-me jump</a></b></P> <P><b>Please click here to jump to the:<a th:href="${link}">login interface</a></b></P>
<p></p> <p></p>
</div> </div>
<div class="footer"> <div class="footer">