diff --git a/kn-service-api/biz-vordm-api/src/main/java/com/kening/vordm/vo/UserVo.java b/kn-service-api/biz-vordm-api/src/main/java/com/kening/vordm/vo/UserVo.java new file mode 100644 index 0000000..032b5e8 --- /dev/null +++ b/kn-service-api/biz-vordm-api/src/main/java/com/kening/vordm/vo/UserVo.java @@ -0,0 +1,41 @@ +package com.kening.vordm.vo; + +import lombok.Data; + +@Data +public class UserVo { + + private Long id; + + /** + * 验证码 + */ + private String code; + + + /** + * 邮箱 + */ + private String email; + + /** + * 密码1 + */ + private String password; + + /** + * 密码2 + */ + private String password2; + + /** + * 验证码key + */ + private String key; + + /** + * 机构Id + */ + private String tenantId; + +} diff --git a/kn-service/biz-vordm/src/main/java/com/kening/vordm/VoRdmApplication.java b/kn-service/biz-vordm/src/main/java/com/kening/vordm/VoRdmApplication.java index 60d7530..8464ead 100644 --- a/kn-service/biz-vordm/src/main/java/com/kening/vordm/VoRdmApplication.java +++ b/kn-service/biz-vordm/src/main/java/com/kening/vordm/VoRdmApplication.java @@ -11,7 +11,7 @@ import org.springframework.cloud.client.SpringCloudApplication; @SpringCloudApplication public class VoRdmApplication { public static void main(String[] args) { - BladeApplication.run("yyhouc-"+CommonConstant.KN_VORDM_MODULE_NAME, VoRdmApplication.class, args); + BladeApplication.run("glj-"+CommonConstant.KN_VORDM_MODULE_NAME, VoRdmApplication.class, args); // BladeApplication.run("zqq-" + CommonConstant.KN_VORDM_MODULE_NAME, VoRdmApplication.class, args); } } diff --git a/kn-service/biz-vordm/src/main/java/com/kening/vordm/controller/LoginController.java b/kn-service/biz-vordm/src/main/java/com/kening/vordm/controller/LoginController.java new file mode 100644 index 0000000..f4d446b --- /dev/null +++ b/kn-service/biz-vordm/src/main/java/com/kening/vordm/controller/LoginController.java @@ -0,0 +1,50 @@ +package com.kening.vordm.controller; + +import com.kening.vordm.service.DisasterInfoService; +import com.kening.vordm.service.EmailService; +import com.kening.vordm.vo.UserVo; +import lombok.RequiredArgsConstructor; +import org.springblade.core.tool.api.R; +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.mail.MessagingException; + +@RestController +@RequiredArgsConstructor +@RequestMapping("/ui/login") +public class LoginController { + + + //实体数据服务层 + private final DisasterInfoService disasterInfoService; + + + //邮箱发送服务 + private final EmailService emailService; + + /** + * 新增用户信息 + * + * @param userVo + * @return + */ + @PostMapping("/saveUserData") + public R saveUserData(@RequestBody UserVo userVo) { + return disasterInfoService.saveUserData(userVo); + } + + + /** + * 邮箱发送 + * @param userVo + * @return + * @throws MessagingException + */ + @PostMapping("/sendUserPasswordEmail") + public R sendUserPasswordEmail(@RequestBody UserVo userVo) throws MessagingException { + return emailService.sendUserPasswordEmail(userVo); + } +} diff --git a/kn-service/biz-vordm/src/main/java/com/kening/vordm/mapper/DisasterInfoMapper.java b/kn-service/biz-vordm/src/main/java/com/kening/vordm/mapper/DisasterInfoMapper.java index 9051bd0..af4d11d 100644 --- a/kn-service/biz-vordm/src/main/java/com/kening/vordm/mapper/DisasterInfoMapper.java +++ b/kn-service/biz-vordm/src/main/java/com/kening/vordm/mapper/DisasterInfoMapper.java @@ -4,12 +4,10 @@ package com.kening.vordm.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.kening.vordm.entity.DisasterInfo; -import com.kening.vordm.vo.CallForHelpVo; -import com.kening.vordm.vo.DisasterMangerInfo; -import com.kening.vordm.vo.GroupByUse; -import com.kening.vordm.vo.UserTenantVo; +import com.kening.vordm.vo.*; import org.apache.ibatis.annotations.Param; import org.apache.poi.ss.formula.functions.T; +import org.springblade.core.secure.BladeUser; import java.util.List; @@ -49,4 +47,10 @@ public interface DisasterInfoMapper extends BaseMapper { List getLeft2Data(); List page(IPage page,@Param("callForHelpVo" )CallForHelpVo callForHelpVo); + + Integer getUserEmail(@Param("email") String email); + + Integer saveUserData(@Param("userVo") UserVo userVo); + + UserVo getUserByEmail(String email); } diff --git a/kn-service/biz-vordm/src/main/java/com/kening/vordm/mapper/DisasterInfoMapper.xml b/kn-service/biz-vordm/src/main/java/com/kening/vordm/mapper/DisasterInfoMapper.xml index f253c31..6092c73 100644 --- a/kn-service/biz-vordm/src/main/java/com/kening/vordm/mapper/DisasterInfoMapper.xml +++ b/kn-service/biz-vordm/src/main/java/com/kening/vordm/mapper/DisasterInfoMapper.xml @@ -37,6 +37,10 @@ d.disaster_type,d.disaster_time,d.disaster_country, m.organization + + insert into blade_user (tenant_id,password,email,status,is_deleted) + values (#{userVo.tenantId},#{userVo.password},#{userVo.email},1,0); + + + + + + diff --git a/kn-service/biz-vordm/src/main/java/com/kening/vordm/service/DisasterInfoService.java b/kn-service/biz-vordm/src/main/java/com/kening/vordm/service/DisasterInfoService.java index d852563..49001c7 100644 --- a/kn-service/biz-vordm/src/main/java/com/kening/vordm/service/DisasterInfoService.java +++ b/kn-service/biz-vordm/src/main/java/com/kening/vordm/service/DisasterInfoService.java @@ -4,10 +4,8 @@ package com.kening.vordm.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import com.kening.vordm.entity.DisasterInfo; -import com.kening.vordm.vo.CallForHelpVo; -import com.kening.vordm.vo.DisasterMangerInfo; -import com.kening.vordm.vo.GroupByUse; -import com.kening.vordm.vo.UserTenantVo; +import com.kening.vordm.vo.*; +import org.springblade.core.tool.api.R; import java.util.List; @@ -55,4 +53,6 @@ public interface DisasterInfoService extends IService { Boolean addVisitCount(Long id); IPage page(IPage page, CallForHelpVo callForHelpVo); + + R saveUserData(UserVo userVo); } diff --git a/kn-service/biz-vordm/src/main/java/com/kening/vordm/service/EmailService.java b/kn-service/biz-vordm/src/main/java/com/kening/vordm/service/EmailService.java index 2c8f205..2761b64 100644 --- a/kn-service/biz-vordm/src/main/java/com/kening/vordm/service/EmailService.java +++ b/kn-service/biz-vordm/src/main/java/com/kening/vordm/service/EmailService.java @@ -2,6 +2,8 @@ package com.kening.vordm.service; import com.kening.vordm.entity.Email; +import com.kening.vordm.vo.UserVo; +import org.springblade.core.tool.api.R; import javax.mail.MessagingException; @@ -14,4 +16,6 @@ public interface EmailService { void sendMimeMessage(Email email) throws MessagingException; void sendTemplate(Email email) throws MessagingException; + + R sendUserPasswordEmail(UserVo userVo) throws MessagingException; } diff --git a/kn-service/biz-vordm/src/main/java/com/kening/vordm/service/impl/DisasterInfoServiceImpl.java b/kn-service/biz-vordm/src/main/java/com/kening/vordm/service/impl/DisasterInfoServiceImpl.java index a65ebc4..ba99c1a 100644 --- a/kn-service/biz-vordm/src/main/java/com/kening/vordm/service/impl/DisasterInfoServiceImpl.java +++ b/kn-service/biz-vordm/src/main/java/com/kening/vordm/service/impl/DisasterInfoServiceImpl.java @@ -6,11 +6,15 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.kening.vordm.entity.DisasterInfo; import com.kening.vordm.mapper.DisasterInfoMapper; import com.kening.vordm.service.DisasterInfoService; -import com.kening.vordm.vo.CallForHelpVo; -import com.kening.vordm.vo.DisasterMangerInfo; -import com.kening.vordm.vo.GroupByUse; -import com.kening.vordm.vo.UserTenantVo; +import com.kening.vordm.service.EmailService; +import com.kening.vordm.vo.*; import lombok.RequiredArgsConstructor; +import org.springblade.common.cache.CacheNames; +import org.springblade.core.redis.cache.BladeRedis; +import org.springblade.core.secure.BladeUser; +import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.DigestUtil; +import org.springblade.core.tool.utils.StringUtil; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; @@ -18,49 +22,53 @@ import java.util.ArrayList; import java.util.List; /** -* @author G1393 -* @description 针对表【disaster_info(灾害信息表,存储灾害信息)】的数据库操作Service实现 -* @createDate 2023-04-04 15:54:30 -*/ + * @author G1393 + * @description 针对表【disaster_info(灾害信息表,存储灾害信息)】的数据库操作Service实现 + * @createDate 2023-04-04 15:54:30 + */ @Service @RequiredArgsConstructor public class DisasterInfoServiceImpl extends ServiceImpl -implements DisasterInfoService { + implements DisasterInfoService { + + private final BladeRedis bladeRedis; /** * 返回指定的灾害条目 + * * @param type * @param country * @param time * @param name * @return */ - public List getConditionData(String type, String country, String time, String name){ - List disasterInfos=this.baseMapper.getSelectCondition(type,country,time,name); + public List getConditionData(String type, String country, String time, String name) { + List disasterInfos = this.baseMapper.getSelectCondition(type, country, time, name); return disasterInfos; } /** * 用于获取灾害id类型 + * * @param disasterInfo * @return */ - public List getDisasterId(DisasterInfo disasterInfo){ + public List getDisasterId(DisasterInfo disasterInfo) { QueryWrapper qw = new QueryWrapper<>(); - if (disasterInfo.getDisasterType()!=null){ - qw.eq("disaster_type",disasterInfo.getDisasterType()); + if (disasterInfo.getDisasterType() != null) { + qw.eq("disaster_type", disasterInfo.getDisasterType()); } - if (disasterInfo.getDisasterCountry()!=null){ - qw.eq("disaster_country",disasterInfo.getDisasterCountry()); + if (disasterInfo.getDisasterCountry() != null) { + qw.eq("disaster_country", disasterInfo.getDisasterCountry()); } - if (disasterInfo.getDisasterTime()!=null){ - qw.eq("disaster_time",disasterInfo.getDisasterTime()); + if (disasterInfo.getDisasterTime() != null) { + qw.eq("disaster_time", disasterInfo.getDisasterTime()); } List disasterInfos = this.baseMapper.selectList(qw); List ids = new ArrayList<>(); - if (!disasterInfos.isEmpty()){ + if (!disasterInfos.isEmpty()) { disasterInfos.stream().forEach(disasterInfo1 -> { - ids .add(disasterInfo1.getId()); + ids.add(disasterInfo1.getId()); }); return ids; } @@ -69,6 +77,7 @@ implements DisasterInfoService { /** * 获取债害详情信息 + * * @param id * @return */ @@ -79,14 +88,15 @@ implements DisasterInfoService { /** * 进行灾害信息的统计,国家,类型 + * * @param name * @return */ - public List getDisasterStatistics(String name){ + public List getDisasterStatistics(String name) { return this.baseMapper.getDisasterStatistics(name); } - public IPage getHomeDisaster(IPage page, Integer respondStatus){ + public IPage getHomeDisaster(IPage page, Integer respondStatus) { List disasterMangerInfos = this.baseMapper.getHomeDisaster(page, respondStatus); return page.setRecords(disasterMangerInfos); } @@ -128,8 +138,30 @@ implements DisasterInfoService { @Override public IPage page(IPage page, CallForHelpVo callForHelpVo) { - return page.setRecords(this.baseMapper.page(page,callForHelpVo)); + return page.setRecords(this.baseMapper.page(page, callForHelpVo)); + } + + @Override + public R saveUserData(UserVo userVo) { + //通过邮箱判断当前用户是否存在 + Integer userEmail = this.baseMapper.getUserEmail(userVo.getEmail()); + if (userEmail > 0) { + return R.data(1405, "The current email is already bound to a user"); + } + + // 获取验证码 + String redisCode = bladeRedis.get(CacheNames.CAPTCHA_KEY + userVo.getKey()); + // 判断验证码 + if (userVo.getCode() == null || !StringUtil.equalsIgnoreCase(redisCode, userVo.getCode())) { + return R.data(1404, "Verification code error"); + } + + //密码 + userVo.setPassword(DigestUtil.encrypt(userVo.getPassword())); + Integer integer = this.baseMapper.saveUserData(userVo); + return R.status(integer > 0); } + } diff --git a/kn-service/biz-vordm/src/main/java/com/kening/vordm/service/impl/EmailServiceImpl.java b/kn-service/biz-vordm/src/main/java/com/kening/vordm/service/impl/EmailServiceImpl.java index fbd7a74..7218d63 100644 --- a/kn-service/biz-vordm/src/main/java/com/kening/vordm/service/impl/EmailServiceImpl.java +++ b/kn-service/biz-vordm/src/main/java/com/kening/vordm/service/impl/EmailServiceImpl.java @@ -1,8 +1,14 @@ package com.kening.vordm.service.impl; import com.kening.vordm.entity.Email; +import com.kening.vordm.mapper.DisasterInfoMapper; +import com.kening.vordm.service.DisasterInfoService; import com.kening.vordm.service.EmailService; +import com.kening.vordm.vo.UserVo; import lombok.RequiredArgsConstructor; +import org.springblade.core.secure.BladeUser; +import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.DigestUtil; import org.springblade.core.tool.utils.StringUtil; import org.springframework.beans.factory.annotation.Value; import org.springframework.mail.javamail.JavaMailSender; @@ -30,6 +36,8 @@ public class EmailServiceImpl implements EmailService { private final TemplateEngine templateEngine; + private final DisasterInfoMapper disasterInfoMapper; + @Value("${spring.mail.username}") private String from; @@ -44,6 +52,23 @@ public class EmailServiceImpl implements EmailService { javaMailSender.send(buildTemplateMail(email)); } + @Override + public R sendUserPasswordEmail(UserVo userVo) throws MessagingException { + //通过邮箱判断当前用户是否存在 + UserVo bladeUser = disasterInfoMapper.getUserByEmail(userVo.getEmail()); + if (bladeUser == null || bladeUser.getPassword()==null){ + return R.data(1405, "There are currently no bound users for this email"); + } + Email email = new Email(); + email.setSubject("您的登录密码"); + String encrypt = DigestUtil.encrypt(bladeUser.getPassword()); + email.setText("邮箱为"+ userVo.getEmail()+ "的用户登录密码为:"+encrypt); + email.setHtmlText(false); + email.setTos(userVo.getEmail().split(",")); + javaMailSender.send(buildMimeMessage(email)); + return R.status(true); + } + /** * 构建模板邮件 * @param email