公会-h5邀请
This commit is contained in:
@@ -52,6 +52,10 @@ public class GuildConstant {
|
||||
public static final String GUILD_USD_ACCOUNT = "guild_usd_account";
|
||||
//退出家族
|
||||
public static final String QUIT = "quit";
|
||||
//邀请加入
|
||||
public static final String INVITE_JOIN_H5 = "invite_join_h5";
|
||||
//邀请申请公会
|
||||
public static final String INVITE_APPLY_GUILD_H5 = "invite_apply_guild_h5";
|
||||
}
|
||||
|
||||
public static class UsdTab {
|
||||
|
@@ -0,0 +1,95 @@
|
||||
package com.accompany.business.model.guild;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.Getter;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 公会H5邀请记录实体类
|
||||
*/
|
||||
@Data
|
||||
public class GuildH5InviteRecord {
|
||||
|
||||
@TableId
|
||||
@ApiModelProperty("邮箱")
|
||||
private String email;
|
||||
|
||||
@ApiModelProperty("邀请类型: 1-邀请申请公会 2-邀请加入公会")
|
||||
private Byte inviteType;
|
||||
|
||||
@ApiModelProperty("邀请人ID")
|
||||
private Long inviterUid;
|
||||
|
||||
@ApiModelProperty("邀请人分区ID")
|
||||
private Integer partitionId;
|
||||
|
||||
@ApiModelProperty
|
||||
private Date createTime;
|
||||
|
||||
//extend
|
||||
@ApiModelProperty("公会名称")
|
||||
private String guildName;
|
||||
|
||||
@ApiModelProperty("公会头像")
|
||||
private String guildAvatar;
|
||||
|
||||
@ApiModelProperty("公会联系方式类型")
|
||||
private String guildContactType;
|
||||
|
||||
@ApiModelProperty("公会联系方式")
|
||||
private String guildContact;
|
||||
|
||||
@ApiModelProperty("公会长身份证")
|
||||
private String idCard;
|
||||
|
||||
@ApiModelProperty("邀请人ID")
|
||||
private Long inviteErbanNo;
|
||||
|
||||
@ApiModelProperty("邀请人证明")
|
||||
private String inviteCheck;
|
||||
|
||||
/**
|
||||
* 公会H5邀请类型枚举
|
||||
*/
|
||||
@Getter
|
||||
public enum InviteTypeEnum {
|
||||
|
||||
/**
|
||||
* 普通邀请
|
||||
*/
|
||||
APPLY_GUILD((byte) 1, "邀请申请公会"),
|
||||
|
||||
/**
|
||||
* 特殊邀请
|
||||
*/
|
||||
INVITE_MEMBER((byte) 2, "邀请成为会员");
|
||||
|
||||
private final byte code;
|
||||
private final String description;
|
||||
|
||||
InviteTypeEnum(byte code, String description) {
|
||||
this.code = code;
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据code获取枚举实例
|
||||
*
|
||||
* @param code 枚举code
|
||||
* @return 对应的枚举实例,如果未找到返回null
|
||||
*/
|
||||
public static InviteTypeEnum fromCode(byte code) {
|
||||
for (InviteTypeEnum type : values()) {
|
||||
if (type.getCode() == code) {
|
||||
return type;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@@ -0,0 +1,13 @@
|
||||
package com.accompany.business.param;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class GuildH5ApplyParam extends GuildApplyParam {
|
||||
@ApiModelProperty("申请人email")
|
||||
private String email;
|
||||
@ApiModelProperty("邀请人uid")
|
||||
private Long inviterUid;
|
||||
|
||||
}
|
@@ -0,0 +1,12 @@
|
||||
package com.accompany.business.mybatismapper.guild;
|
||||
|
||||
import com.accompany.business.model.guild.GuildH5InviteRecord;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
/**
|
||||
* 公会H5邀请记录 Mapper接口
|
||||
*/
|
||||
@Repository
|
||||
public interface GuildH5InviteRecordMapper extends BaseMapper<GuildH5InviteRecord> {
|
||||
}
|
@@ -0,0 +1,142 @@
|
||||
package com.accompany.business.service.guild;
|
||||
|
||||
import com.accompany.business.constant.guild.GuildConstant;
|
||||
import com.accompany.business.model.guild.BdInfo;
|
||||
import com.accompany.business.model.guild.GuildApply;
|
||||
import com.accompany.business.model.guild.GuildH5InviteRecord;
|
||||
import com.accompany.business.model.guild.GuildMember;
|
||||
import com.accompany.business.mybatismapper.guild.GuildH5InviteRecordMapper;
|
||||
import com.accompany.business.param.GuildH5ApplyParam;
|
||||
import com.accompany.business.service.user.UsersService;
|
||||
import com.accompany.common.constant.Constant;
|
||||
import com.accompany.common.status.BusiStatus;
|
||||
import com.accompany.core.exception.ServiceException;
|
||||
import com.accompany.core.model.Users;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 公会申请审核表 服务实现类
|
||||
*
|
||||
* @author
|
||||
* @since 2024-12-04
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class GuildH5InviteService {
|
||||
|
||||
@Autowired
|
||||
private GuildH5InviteRecordMapper recordMapper;
|
||||
@Autowired
|
||||
private GuildService guildService;
|
||||
@Autowired
|
||||
private GuildMemberService guildMemberService;
|
||||
@Autowired
|
||||
private GuildAuthService guildAuthService;
|
||||
@Autowired
|
||||
private BdInfoService bdInfoService;
|
||||
@Autowired
|
||||
private UsersService usersService;
|
||||
@Autowired
|
||||
private GuildApplyService guildApplyService;
|
||||
|
||||
public void validInviter(Long inviterUid, Byte inviteType) {
|
||||
GuildH5InviteRecord.InviteTypeEnum inviteTypeEnum = GuildH5InviteRecord.InviteTypeEnum.fromCode(inviteType);
|
||||
if (null == inviteTypeEnum){
|
||||
throw new ServiceException(BusiStatus.PARAMETERILLEGAL);
|
||||
}
|
||||
GuildMember guildMember = guildMemberService.getVaildGuildMemberByUid(inviterUid);
|
||||
if (null == guildMember){
|
||||
throw new ServiceException(BusiStatus.FAMILY_NOT_EXIST);
|
||||
}
|
||||
if (inviteTypeEnum.equals(GuildH5InviteRecord.InviteTypeEnum.INVITE_MEMBER)
|
||||
&& !guildAuthService.hasAuthByRoleType(guildMember.getRoleType(), GuildConstant.AuthCode.INVITE_JOIN_H5)){
|
||||
throw new ServiceException(BusiStatus.NOAUTHORITY);
|
||||
}
|
||||
else if (inviteTypeEnum.equals(GuildH5InviteRecord.InviteTypeEnum.APPLY_GUILD)
|
||||
&& (!guildAuthService.hasAuthByRoleType(guildMember.getRoleType(), GuildConstant.AuthCode.INVITE_APPLY_GUILD_H5)
|
||||
|| null == bdInfoService.getValidByUid(inviterUid))) {
|
||||
throw new ServiceException(BusiStatus.NOAUTHORITY);
|
||||
}
|
||||
}
|
||||
|
||||
public void validEmailInviterStatus(String emailAddress, Long inviterUid, Byte inviteType) {
|
||||
GuildH5InviteRecord.InviteTypeEnum inviteTypeEnum = GuildH5InviteRecord.InviteTypeEnum.fromCode(inviteType);
|
||||
if (null == inviteTypeEnum){
|
||||
throw new ServiceException(BusiStatus.PARAMETERILLEGAL);
|
||||
}
|
||||
|
||||
GuildH5InviteRecord record = recordMapper.selectOne(Wrappers.<GuildH5InviteRecord>lambdaQuery()
|
||||
.eq(GuildH5InviteRecord::getEmail, emailAddress));
|
||||
if (null != record){
|
||||
throw new ServiceException(BusiStatus.SERVERERROR);
|
||||
}
|
||||
|
||||
GuildMember guildMember = guildMemberService.getVaildGuildMemberByUid(inviterUid);
|
||||
|
||||
if (inviteTypeEnum.equals(GuildH5InviteRecord.InviteTypeEnum.APPLY_GUILD)){
|
||||
|
||||
if (null != guildMember && guildAuthService.hasAuthByRoleType(guildMember.getRoleType(), GuildConstant.AuthCode.INVITE_APPLY_GUILD_H5)) {
|
||||
return;
|
||||
}
|
||||
|
||||
BdInfo bdInfo = bdInfoService.getValidByUid(inviterUid);
|
||||
if (null != bdInfo && Constant.status.valid.equals(bdInfo.getStatus())){
|
||||
return;
|
||||
}
|
||||
|
||||
throw new ServiceException(BusiStatus.NOAUTHORITY);
|
||||
|
||||
} else if (inviteTypeEnum.equals(GuildH5InviteRecord.InviteTypeEnum.INVITE_MEMBER)) {
|
||||
|
||||
if (null == guildMember || !guildAuthService.hasAuthByRoleType(guildMember.getRoleType(), GuildConstant.AuthCode.INVITE_JOIN_H5)) {
|
||||
throw new ServiceException(BusiStatus.NOAUTHORITY);
|
||||
}
|
||||
|
||||
record = new GuildH5InviteRecord();
|
||||
record.setEmail(emailAddress);
|
||||
record.setInviteType(GuildH5InviteRecord.InviteTypeEnum.INVITE_MEMBER.getCode());
|
||||
record.setInviterUid(inviterUid);
|
||||
record.setPartitionId(guildMember.getPartitionId());
|
||||
record.setCreateTime(new Date());
|
||||
recordMapper.insert(record);
|
||||
}
|
||||
}
|
||||
|
||||
public void applyGuild(GuildH5ApplyParam guildApplyParam) {
|
||||
String emailAddress = guildApplyParam.getEmail();
|
||||
validEmailInviterStatus(emailAddress, guildApplyParam.getInviterUid(), GuildH5InviteRecord.InviteTypeEnum.APPLY_GUILD.getCode());
|
||||
|
||||
Users inviter = usersService.getNotNullUsersByUid(guildApplyParam.getInviterUid());
|
||||
|
||||
GuildApply existNotAuditByGuildName = guildApplyService.getExistNotAuditByGuildName(guildApplyParam.getGuildName());
|
||||
if (existNotAuditByGuildName != null) {
|
||||
throw new ServiceException(BusiStatus.GUILD_APPLY_GUILD_NAME_CHECK);
|
||||
}
|
||||
boolean equalsName = guildService.checkGuildEqualsName(guildApplyParam.getGuildName(), null);
|
||||
if (equalsName) {
|
||||
throw new ServiceException(BusiStatus.GUILD_APPLY_GUILD_NAME_CHECK);
|
||||
}
|
||||
|
||||
GuildH5InviteRecord record = new GuildH5InviteRecord();
|
||||
record.setEmail(guildApplyParam.getEmail());
|
||||
record.setInviteType(GuildH5InviteRecord.InviteTypeEnum.APPLY_GUILD.getCode());
|
||||
record.setInviterUid(inviter.getUid());
|
||||
record.setPartitionId(inviter.getPartitionId());
|
||||
record.setCreateTime(new Date());
|
||||
|
||||
record.setGuildName(guildApplyParam.getGuildName());
|
||||
record.setGuildAvatar(guildApplyParam.getGuildAvatar());
|
||||
record.setGuildContactType(guildApplyParam.getGuildContactType());
|
||||
record.setGuildContact(guildApplyParam.getGuildContact());
|
||||
record.setIdCard(guildApplyParam.getIdCard());
|
||||
record.setInviteErbanNo(guildApplyParam.getInviteErbanNo());
|
||||
record.setInviteCheck(guildApplyParam.getInviteCheck());
|
||||
recordMapper.insert(record);
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.accompany.business.mybatismapper.guild.GuildH5InviteRecordMapper">
|
||||
|
||||
<!-- 该文件可根据业务需求添加SQL映射内容 -->
|
||||
|
||||
</mapper>
|
@@ -0,0 +1,80 @@
|
||||
package com.accompany.business.controller.guild;
|
||||
|
||||
import com.accompany.business.param.GuildH5ApplyParam;
|
||||
import com.accompany.business.service.guild.GuildH5InviteService;
|
||||
import com.accompany.business.service.user.UsersService;
|
||||
import com.accompany.business.vo.SimpleUserVo;
|
||||
import com.accompany.common.annotation.Authorization;
|
||||
import com.accompany.common.result.BusiResult;
|
||||
import com.accompany.common.status.BusiStatus;
|
||||
import com.accompany.core.exception.ServiceException;
|
||||
import com.accompany.email.service.EmailService;
|
||||
import io.swagger.annotations.*;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.util.StringUtils;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@Api(tags = "guild h5邀请")
|
||||
@RequestMapping("/guild/h5Invite")
|
||||
@RestController
|
||||
public class GuildH5InviteController {
|
||||
|
||||
@Autowired
|
||||
private GuildH5InviteService service;
|
||||
@Autowired
|
||||
private UsersService usersService;
|
||||
@Autowired
|
||||
private EmailService emailService;
|
||||
|
||||
@ApiOperation(value = "公会申请")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "inviterUid", value = "邀请人uid", required = true),
|
||||
@ApiImplicitParam(name = "inviteType", value = "邀请类型: 1-邀请申请公会 2-邀请加入公会", required = true, dataType = "Byte"),
|
||||
})
|
||||
@GetMapping("/getInviter")
|
||||
private BusiResult<SimpleUserVo> getInviteUser(Long inviterUid, Byte inviteType) {
|
||||
if (null == inviterUid || null == inviteType){
|
||||
return BusiResult.fail(BusiStatus.PARAMERROR);
|
||||
}
|
||||
service.validInviter(inviterUid, inviteType);
|
||||
SimpleUserVo simpleUserVo = usersService.getSimpleUserByUid(inviterUid);
|
||||
if (null == simpleUserVo) {
|
||||
return BusiResult.fail(BusiStatus.USERNOTEXISTS);
|
||||
}
|
||||
return BusiResult.success(simpleUserVo);
|
||||
}
|
||||
|
||||
@ApiParam("校验邮箱验证码")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "emailAddress", value = "邮箱地址", required = true, dataType = "String"),
|
||||
@ApiImplicitParam(name = "code", value = "验证码", required = true, dataType = "String"),
|
||||
@ApiImplicitParam(name = "inviterUid", value = "邀请人uid", required = true),
|
||||
@ApiImplicitParam(name = "inviteType", value = "邀请类型: 1-邀请申请公会 2-邀请加入公会", required = true, dataType = "Byte"),
|
||||
})
|
||||
@PostMapping(value = "/verifyEmailCode")
|
||||
public BusiResult<Void> verify(String emailAddress, String code, Long inviterUid, Byte inviteType) {
|
||||
boolean verify = emailService.verifyEmailCode(emailAddress, code);
|
||||
if (!verify) {
|
||||
return BusiResult.fail(BusiStatus.EMAIL_VERIFY_CODE_ERROR);
|
||||
}
|
||||
service.validEmailInviterStatus(emailAddress, inviterUid, inviteType);
|
||||
return BusiResult.success();
|
||||
}
|
||||
|
||||
@ApiOperation(value = "公会申请(传json格式)")
|
||||
@Authorization
|
||||
@PostMapping("/applyGuild")
|
||||
public BusiResult<Void> apply(@RequestBody GuildH5ApplyParam guildApplyParam) {
|
||||
if (!StringUtils.hasText(guildApplyParam.getEmail())
|
||||
|| null == guildApplyParam.getInviterUid()
|
||||
|| !StringUtils.hasText(guildApplyParam.getGuildName())
|
||||
|| !StringUtils.hasText(guildApplyParam.getGuildContact())
|
||||
|| !StringUtils.hasText(guildApplyParam.getGuildAvatar())
|
||||
|| !StringUtils.hasText(guildApplyParam.getIdCard())) {
|
||||
throw new ServiceException(BusiStatus.GUILD_APPLY_PARAM_CHECK);
|
||||
}
|
||||
service.applyGuild(guildApplyParam);
|
||||
return BusiResult.success();
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user