提交 1da4cc0e 编写于 作者: 街头小贩's avatar 街头小贩

增加邀请码是否可用异步查询

上级 25d1588f
......@@ -158,15 +158,7 @@ public class MemberServiceImpl implements MemberService{
@Override
public Optional<Member> signUp(String memberNames, String unEncryptPswd, String inviteCode, String nickname, MemberActionDescriptor actionDescriptor)throws IllegalArgumentException,IllegalStateException { //ASP-M3
//--------------------------------------------------------------邀请码检查
long inviteCodeId = 0L;
if (Commons.isNotBlank(inviteCode)) {
RegisteInviteCode ic = registeInviteCodeDao.findOne(inviteCode).orElseThrow(()->new IllegalArgumentException("邀请码不存在或已经失效"));
//邀请码只能是当天有效的
if(DateTimeUtils.isSameDay(ic.getBuildDateTime(), LocalDateTime.now())){
throw new IllegalArgumentException("当前邀请码已经过期");
}
inviteCodeId = ic.getId();
}
long inviteCodeId = verifyInviteCode(inviteCode);
//--------------------------------------------------------------登录帐号的唯一性|名称保护检查
checkNamesUnique(memberNames).orElseThrow(()->new IllegalArgumentException("会员唯一性检查失败"));
//--------------------------------------------------------------
......@@ -318,6 +310,15 @@ public class MemberServiceImpl implements MemberService{
return memberDao.groupMemberForGroup();
}
@Override
public Map<String, String> getActiveInviteCode(String inviteCode) {
long inviteCodeId = 0;
try{
inviteCodeId = verifyInviteCode(inviteCode);
}catch(IllegalArgumentException e){}
return Map.ofEntries(Map.entry("code", inviteCode), Map.entry("id", String.valueOf(inviteCodeId)));
}
private Optional<Member> securityMember(Member member) {
if (null == member) {
return Optional.empty();
......@@ -385,4 +386,17 @@ public class MemberServiceImpl implements MemberService{
private CompletableFuture<Stream<ForumScoreRole>> getScoleRolesAsync(){
return CompletableFuture.supplyAsync(()->forumScoreRoleDao.findAllUsed().filter(Objects::nonNull)).completeOnTimeout(Stream.empty(), 1, TimeUnit.SECONDS);
}
private long verifyInviteCode(String inviteCode)throws IllegalArgumentException{
long inviteCodeId = 0L;
if (Commons.isNotBlank(inviteCode)) {
RegisteInviteCode ic = registeInviteCodeDao.findOne(inviteCode).orElseThrow(()->new IllegalArgumentException("邀请码不存在或已经失效"));
//邀请码只能是当天有效的
if(DateTimeUtils.isSameDay(ic.getBuildDateTime(), LocalDateTime.now())){
throw new IllegalArgumentException("当前邀请码已经过期");
}
inviteCodeId = ic.getId();
}
return inviteCodeId;
}
}
\ No newline at end of file
......@@ -231,4 +231,12 @@ public interface MemberService {
* @return Key=Member.mgroup, Value=会员数量
*/
Map<MemberGroupEnum, Long> groupMemberForGroup();
/**
* 查看指定的邀请码是否可用
*
* @param inviteCode 邀请码
* @return 返回的key:code(参数),id(可用时大于0,反之0)
*/
Map<String,String> getActiveInviteCode(String inviteCode);
}
\ No newline at end of file
......@@ -23,7 +23,6 @@ import com.apobates.forum.member.storage.core.MemberSessionBean;
import com.apobates.forum.thrones.controller.form.LoginForm;
import com.apobates.forum.thrones.controller.form.RegisteForm;
import com.apobates.forum.thrones.controller.helper.OnlineDescriptor;
import com.apobates.forum.thrones.exception.BorbidMemberRegisterException;
import com.apobates.forum.thrones.exception.ResourceNotFoundException;
import com.apobates.forum.thrones.vo.MemberModel;
import com.apobates.forum.thrones.vo.TopicStatsCollect;
......@@ -327,7 +326,7 @@ public class MemberController {
boolean symbol = false;
//
try{
Boolean result = memberService.checkNamesUnique(names).orElse(false);
boolean result = memberService.checkNamesUnique(names).orElse(false);
if(result){
tipMessage = "可以使用"; symbol = true;
}
......@@ -340,6 +339,26 @@ public class MemberController {
HttpStatus hs = symbol ? HttpStatus.OK : HttpStatus.BAD_REQUEST;
return new ResponseEntity<>(tipMessage, responseHeaders, hs);
}
//配合:Bootstrap validator使用@see:https://github.com/1000hz/bootstrap-validator@BS3
//配合:parsley.js使用@see:http://parsleyjs.org/@BS4
//检查注册邀请码是否可用
@GetMapping(path = "/detection/invite")
public ResponseEntity<String> checkMemberInviteCode(
@RequestParam("code") String inviteCode,
HttpServletRequest request,
Model model){
String tipMessage="验证码不可用";
boolean symbol = false;
//
Map<String,String> result = memberService.getActiveInviteCode(inviteCode);
if(!result.get("id").equals("0")){
tipMessage = "可以使用"; symbol = true;
}
HttpHeaders responseHeaders = new HttpHeaders();
responseHeaders.set("Content-Type", "text/plain; charset=UTF-8"); //Content-Type: text/plain;charset=ISO-8859-1
HttpStatus hs = symbol ? HttpStatus.OK : HttpStatus.BAD_REQUEST;
return new ResponseEntity<>(tipMessage, responseHeaders, hs);
}
//校验uid时的
@GetMapping(path = "/detection/uid")
@ResponseBody
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册