提交 afa0aaad authored 作者: renjiancai's avatar renjiancai

--no commit message

上级 c8925077
......@@ -97,6 +97,7 @@ public class Redis extends BaseRedis{
redisMember.getMember().setQqKey(null);
redisMember.getMember().setWechatKey(null);
redisMember.getMember().setPhone(null);
System.out.println(redisMember.getLoginVo().getToken());
this.set(redisMember.getLoginVo().getToken(), redisMember, DEFAULT_LOSE_TIME, TimeUnit.DAYS);
}
......
......@@ -19,6 +19,7 @@ import com.zrqx.core.exception.ValidateException;
import com.zrqx.core.util.datatype.StringUtils;
import com.zrqx.core.util.response.CallBack;
import com.zrqx.core.util.spring.SpringContextUtils;
import com.zrqx.member.commons.redis.Redis;
import com.zrqx.member.fg.captcha.commons.vo.CaptchaVO;
import com.zrqx.member.fg.captcha.service.CaptchaService;
......@@ -38,11 +39,16 @@ public class CaptchaController {
@Autowired
private SpringContextUtils springContextUtils;
@Autowired
@Qualifier("phoneCodeServiceImpl")
private CaptchaService phoneService;
@Autowired
@Qualifier("codeServiceImpl")
private CaptchaService codeService;
@Autowired
@Qualifier("blockPuzzleCaptchaServiceImpl")
private CaptchaService blockPuzzleCaptchaService;
private CaptchaService getService(CaptchaForm form) {
if (StringUtils.isEmpty(form.getType())) {
throw new ValidateException("type不能为空");
......@@ -50,7 +56,15 @@ public class CaptchaController {
CaptchaService service = springContextUtils.getEnumsBindBean(CaptchaTypeEnum.class, form.getType(), CaptchaService.class);
return service;
}
@ApiOperation("获取普通验证码:图形验证码")
@GetMapping("/code")
public CallBack<CaptchaVO> getCode() {
log.info("获取验证码start");
CaptchaVO vo = codeService.get(null);
log.info("获取验证码end,{}",vo);
return CallBack.success(vo);
}
@ApiOperation("获取普通验证码:滑块验证码")
@GetMapping("/block-puzzle")
public CallBack<CaptchaVO> getBlockPuzzle() {
......@@ -59,6 +73,17 @@ public class CaptchaController {
log.info("获取验证码end,{}",vo);
return CallBack.success(vo);
}
@ApiOperation("获取手机验证码,需要带有普通验证码的结果")
@GetMapping("/phone")
public CallBack<CaptchaVO> getPhoneCode(CaptchaForm form) {
log.info("获取手机验证码start");
CaptchaVO vo = phoneService.get(form);
log.info("获取手机验证码end,{}",vo);
return CallBack.success(vo);
}
@ApiOperation("校验验证码")
@GetMapping("/validate")
public CallBack<?> validate(CaptchaForm form){
......
package com.zrqx.member.fg.captcha.service.impl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.zrqx.core.components.captcha.form.CaptchaForm;
import com.zrqx.core.components.captcha.service.CodeCaptchaValidateServiceImpl;
import com.zrqx.core.components.message.form.PhoneMessageForm;
import com.zrqx.core.enums.captcha.CaptchaTypeEnum;
import com.zrqx.core.exception.ValidateException;
import com.zrqx.core.util.datatype.StringUtils;
import com.zrqx.core.util.datatype.UUIDUtil;
import com.zrqx.core.util.spring.SpringContextUtils;
import com.zrqx.member.fg.captcha.commons.vo.CaptchaVO;
import com.zrqx.member.fg.captcha.service.CaptchaService;
import com.zrqx.member.fg.captcha.service.message.MessageService;
/**
* @author lpf
* @date 2020-06-22
*/
@Service
public class PhoneCodeServiceImpl extends CodeCaptchaValidateServiceImpl implements CaptchaService {
private static final Logger log = LoggerFactory.getLogger(PhoneCodeServiceImpl.class);
@Autowired
private MessageService messageService;
@Autowired
private SpringContextUtils springContextUtils;
private CaptchaService getService(CaptchaForm form) {
if (StringUtils.isEmpty(form.getType())) {
throw new ValidateException("type不能为空");
}
CaptchaService service = springContextUtils.getEnumsBindBean(CaptchaTypeEnum.class, form.getType(), CaptchaService.class);
return service;
}
@Override
public CaptchaVO get(CaptchaForm form) {
// 校验普通验证码
log.info("生成手机验证码form:{}", form);
log.info("校验普通验证码");
CaptchaService service = this.getService(form);
service.validate(form);
log.info("校验普通验证码成功");
CaptchaVO vo = new CaptchaVO();
String uuid = UUIDUtil.getUUID();
vo.setUuid(uuid);
String code = messageService.sendPhoneCaptcha(this.map(form));
String key = String.format(REDIS_CAPTCHA_KEY, uuid);
log.info("缓存验证码:key:{},value:{}",key, code);
cacheService.set(key, code, EXPIRESIN_SECONDS);
return vo;
}
/**
* CaptchaForm -> PhoneMessageForm
* @param form
* @return
*/
private PhoneMessageForm map(CaptchaForm form) {
PhoneMessageForm result = new PhoneMessageForm();
result.setTarget(form.getPhone());
result.setBusinessType(form.getBusinessType());
return result;
}
}
package com.zrqx.member.fg.captcha.service.message;
import com.zrqx.core.components.message.form.PhoneMessageForm;
import com.zrqx.core.exception.BaseException;
/**
* 接口响应统一结果处理
* 接口响应失败抛出异常
* @author lpf
* @date 2020-06-22
*/
public interface MessageService{
/**
* 手机发送短信验证码,发送失败处理抛出异常
* @param form
* @return
* @throws BaseException
*/
String sendPhoneCaptcha(PhoneMessageForm form) throws BaseException;
}
package com.zrqx.member.fg.captcha.service.message;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.zrqx.core.components.message.form.PhoneMessageForm;
import com.zrqx.core.exception.BaseException;
import com.zrqx.core.util.response.CallBack;
import com.zrqx.member.fg.client.third.MessageClient;
/**
* @author lpf
* @date 2020-06-22
*/
@Component
public class MessageServiceImpl implements MessageService {
private final Logger log = LoggerFactory.getLogger(MessageServiceImpl.class);
@Autowired
private MessageClient client;
@Override
public String sendPhoneCaptcha(PhoneMessageForm form) throws BaseException {
CallBack<String> callBack = client.sendPhoneCaptcha(form);
if (callBack.hasEntity()) {
return callBack.getData();
}
throw new BaseException("手机发送短信验证码失败,失败原因:" + callBack.getMsg() + ";");
}
}
package com.zrqx.member.fg.client.third;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import com.zrqx.core.components.message.form.PhoneMessageForm;
import com.zrqx.core.util.response.CallBack;
/**
* 消息客户端
* @author lpf
* @date 2020-06-22
*/
@FeignClient(value="third",fallback=MessageHystric.class)
public interface MessageClient {
/**
* 手机短信验证码
* @param form
* @return
*/
@PostMapping("/phone/send-captcha")
CallBack<String> sendPhoneCaptcha(@RequestBody PhoneMessageForm form);
}
package com.zrqx.member.fg.client.third;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import com.zrqx.core.components.message.form.PhoneMessageForm;
import com.zrqx.core.util.response.CallBack;
/**
* @author lpf
* @date 2020-06-22
*/
@Component
public class MessageHystric implements MessageClient{
private final Logger log = LoggerFactory.getLogger(MessageHystric.class);
@Override
public CallBack<String> sendPhoneCaptcha(PhoneMessageForm form) {
log.info("熔断器-发送短信验证码失败,form:{}", form);
return CallBack.fail("熔断器-发送短信失败");
}
}
......@@ -30,6 +30,7 @@ import com.zrqx.core.model.member.Member;
import com.zrqx.core.model.member.OrganMember;
import com.zrqx.core.model.member.PersonalMember;
import com.zrqx.core.service.BaseServiceImpl;
import com.zrqx.core.util.datatype.UUIDUtil;
import com.zrqx.core.util.spring.SpringContextUtils;
import com.zrqx.core.vo.member.LoginVo;
import com.zrqx.core.vo.member.RedisMember;
......@@ -60,7 +61,14 @@ public class FgMemberServiceImpl extends BaseServiceImpl<Member, Integer> implem
public BaseMapper<Member> getMapper() {
return mapper;
}
@Autowired
private SpringContextUtils springContextUtils;
protected CaptchaValidateService getCaptchaValidateService(CaptchaForm form){
CaptchaValidateService service = springContextUtils.getEnumsBindBean(CaptchaTypeEnum.class, form.getType(), CaptchaValidateService.class);
return service;
}
@Override
public boolean isExistByAccount(Integer id, String account) {
return mapper.isExist(id, account, null) > 0;
......@@ -152,11 +160,7 @@ public class FgMemberServiceImpl extends BaseServiceImpl<Member, Integer> implem
return info;
}
private SpringContextUtils springContextUtils;
protected CaptchaValidateService getCaptchaValidateService(CaptchaForm form){
CaptchaValidateService service = springContextUtils.getEnumsBindBean(CaptchaTypeEnum.class, form.getType(), CaptchaValidateService.class);
return service;
}
@Override
public Optional<Member> getByAccountOrPhone(String text) {
......@@ -190,7 +194,7 @@ public class FgMemberServiceImpl extends BaseServiceImpl<Member, Integer> implem
public Member insertByPhone(BaseLoginForm<PhoneAbstractLoginForm> form){
String phone = form.getReqForm().getCaptchaForm().getPhone();
Member entity = this.initInsert(form);
entity.setNickName(entity.getAccount());
entity.setAccount("sc" + UUIDUtil.getUUID().substring(0, 6));
entity.setPhone(phone);
this.insert(entity);
return entity;
......@@ -277,7 +281,9 @@ public class FgMemberServiceImpl extends BaseServiceImpl<Member, Integer> implem
@Override
public RedisMember validateResetPassword(PhoneAbstractLoginForm form) {
CaptchaValidateService captchaValidateService = this.getCaptchaValidateService(form.getCaptchaForm());
captchaValidateService.validate(form.getCaptchaForm());
if(captchaValidateService!=null) {
captchaValidateService.validate(form.getCaptchaForm());
}
Member m = this.validateResetPasswordPhone(form.getCaptchaForm().getPhone());
RedisMember redisMember = RedisMember.build();
redisMember.setCanResetPassword(true);
......
......@@ -3,10 +3,8 @@ package com.zrqx.member.fg.permissions;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import java.util.regex.Matcher;
......@@ -340,12 +338,12 @@ public class FgPermissionsController {
redis.set(token, info);
return CallBack.success(true);
}
/*@ApiOperation(value = "前台用户登出", notes = "前台用户登出")
@ApiOperation(value = "前台用户登出", notes = "前台用户登出")
@GetMapping(value = MemberRequestPath.LOGOUT)
public CallBack<Boolean> logout() throws IOException {
redis.delete(Redis.getFgToken());
redis.delete(redis.getFgToken());
return CallBack.success(true);
}*/
}
@ApiOperation(value = "查询会员账号是否被注册", notes = "查询会员账号是否存在-普通用户和机构用户 共用此接口 0:可用; 99:已被注册;")
@GetMapping(value = MemberRequestPath.ISEXIST)
public CallBack<Boolean> isExistByAccount(Integer id, String account) {
......
......@@ -15,17 +15,15 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.zrqx.core.components.CacheService;
import com.zrqx.core.constant.member.MemberRequestPath;
import com.zrqx.core.enums.member.LevelEnum;
import com.zrqx.core.exception.BaseException;
import com.zrqx.core.form.member.fg.permissions.BindForm;
import com.zrqx.core.form.member.fg.permissions.LoginMemberInfo;
import com.zrqx.core.form.member.fg.personalcenter.UpdateMemberForm;
import com.zrqx.core.form.member.fg.personalcenter.UpdatePasswordForm;
import com.zrqx.core.form.member.fg.personalcenter.UpdatePhoneForm;
import com.zrqx.core.form.third.sdksms.SdkSmsForm;
import com.zrqx.core.form.third.sms.SmsForm;
import com.zrqx.core.model.member.ExpertMember;
import com.zrqx.core.model.member.Member;
import com.zrqx.core.model.member.Organ;
import com.zrqx.core.model.member.OrganMember;
......@@ -37,9 +35,7 @@ import com.zrqx.core.util.response.CallBack;
import com.zrqx.core.vo.member.RedisMember;
import com.zrqx.core.vo.member.fg.personalcenter.MemberInfo;
import com.zrqx.member.commons.redis.Redis;
import com.zrqx.member.fg.client.third.SdkSmsClient;
import com.zrqx.member.fg.client.third.SmsClient;
import com.zrqx.member.fg.emember.service.FgExpertMemberService;
import com.zrqx.member.fg.member.service.FgMemberService;
import com.zrqx.member.fg.omember.service.FgOrganMemberService;
import com.zrqx.member.fg.organ.service.FgOrganService;
......@@ -62,10 +58,6 @@ public class PersonalCenterConteroller {
@Autowired
private FgPersonalMemberService pmService;
@Autowired
private FgExpertMemberService emService;
@Autowired
private SdkSmsClient sdkSmsClient;
@Autowired
private SmsClient smsClient;
@Autowired
private Redis redis;
......@@ -73,7 +65,9 @@ public class PersonalCenterConteroller {
private FgOrganMemberService omService;
@Autowired
private FgOrganService oService;
@Autowired
protected CacheService cacheService;
@ApiOperation(value = "个人信息-查询", notes = "0:成功;")
@GetMapping(value = MemberRequestPath.GET + MemberRequestPath.MEMBER)
public CallBack<MemberInfo> getMember(@RequestParam(required = false) Integer id) {
......@@ -151,6 +145,8 @@ public class PersonalCenterConteroller {
@ApiOperation(value = "账户安全-更换手机号", notes = "0:成功;")
@PostMapping(value = MemberRequestPath.UPDATE + MemberRequestPath.PHONE)
public CallBack<String> updatePhone(@RequestBody UpdatePhoneForm form) throws IOException {
RedisMember redisMember = redis.getNotNullRedisMember();
final Member thirdMember =mService.notNull(redisMember.getMember().getId());
Example example = mService.createExample();
example.createCriteria().andEqualTo("phone", form.getPhone());
if (mService.selectCountByExample(example) != 0) {
......@@ -168,10 +164,9 @@ public class PersonalCenterConteroller {
m.setPhone(form.getPhone());
mService.updateByPrimaryKeySelective(m);
// 更新redis
memberInfo.setPhone(form.getPhone());
RedisMember redisMember = new RedisMember();
redisMember.setMember(memberInfo);
redis.setRedisMember(redisMember);
thirdMember.setPhone(form.getPhone());
redisMember.setMember(thirdMember);
redis.setRedisMember(redisMember);
return CallBack.success("成功");
}
......@@ -179,9 +174,13 @@ public class PersonalCenterConteroller {
@GetMapping(value = MemberRequestPath.CODE_PHONE)
public CallBack<String> code(String phone) throws Exception {
Member memberInfo = redis.getMember();
RedisMember redisMember = redis.getNotNullRedisMember();
if(phone.equals(memberInfo.getPhone())) {
throw new BaseException(15, "不能修改成当前手机号");
}
final Member thirdMember =mService.notNull(redisMember.getMember().getId());
Example example = mService.createExample();
example.createCriteria().andEqualTo("phone", phone);
if (mService.selectCountByExample(example) != 0) {
......@@ -205,6 +204,10 @@ public class PersonalCenterConteroller {
ssf.setType(1);
String sms = smsClient.sendSms(ssf);
if (sms != null) {
// 更新redis
thirdMember.setPhone(phone);
redisMember.setMember(thirdMember);
redis.setRedisMember(redisMember);
redis.set(phone, code, 60 * 5, TimeUnit.SECONDS);
sendPhoneCount = StringUtils.isBlank(sendPhoneCount) ? "1" : Integer.parseInt(sendPhoneCount) + 1 + "";
redis.set(key, sendPhoneCount, 60 * 5);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论