邀请码注册ip限制

This commit is contained in:
2024-12-24 16:12:05 +08:00
parent 06b76f5ee2
commit 2cfc8dc26e
6 changed files with 54 additions and 8 deletions

View File

@@ -430,7 +430,7 @@ public enum BusiStatus {
**/
INVITE_CODE_INVALID(211184, "邀請碼不存在"),
INVITE_CODE_DEVICE_DUPLICATED(211185, "該設備已填寫過邀請碼"),
INVITE_CODE_IP_DUPLICATED(211185, "設備已填寫過邀請碼"),
INVITE_CODE_IP_DUPLICATED(211185, "設備地址已填寫過邀請碼"),
TIME_OUT_TO_REFILL_INVITE_CODE(211186, "超出不填時間,無法補填邀請碼"),
/**
@@ -839,9 +839,9 @@ public enum BusiStatus {
INVITE_TIME_OUT(500, "邀请过期啦!"),
AT_LEAST_ONE_CARD(5210 , " Please select at least one tarot card "),
CHARGE_PROD_NOT_ALLOWED(5211 , " The product has been taken down and cannot be recharged "),
TAROT_CHARGE_LIMIT(5212 , " Today, Lucky Tarot recharge consumption has reached its limit "),
AT_LEAST_ONE_CARD(5210, " Please select at least one tarot card "),
CHARGE_PROD_NOT_ALLOWED(5211, " The product has been taken down and cannot be recharged "),
TAROT_CHARGE_LIMIT(5212, " Today, Lucky Tarot recharge consumption has reached its limit "),
PARTITION_ERROR(500, "暂不可用"),
PARTITION_ERROR_INTO_ROOM(500, "因區域不同,你無法進入該房間"),

View File

@@ -253,6 +253,7 @@ public enum I18nAlertEnum {
GUILD_APPLY_REJECT("很抱歉,您的公会申请未能通过审核,请联系官方客服了解更多。"),
GUILD_APPLY_PASS("恭喜!您的公会申请已成功通过审核。页面变为我的公会页面"),
BE_INVITE_REWARD_MSG("恭喜!您收到了一份奖励!"),
INVITE_COINS_REWARD_MSG("你已经成功领取邀请活动的充值奖励了。"),
;
private final String defaultStr;

View File

@@ -41,6 +41,7 @@ public class InviteFissionActConfig {
private LevelRewardConfig getLevel(List<LevelRewardConfig> levelList, long diamond) {
for (LevelRewardConfig level : levelList) {
long left = null != level.getLeftDiamond() ? level.getLeftDiamond() : 0L;
long right = null != level.getRightDiamond() ? level.getRightDiamond() : Long.MAX_VALUE;
if (diamond >= left && diamond < right) {

View File

@@ -1,22 +1,30 @@
package com.accompany.business.service.invite;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateUtil;
import com.accompany.business.model.UserInviteCode;
import com.accompany.business.model.UserInviteFissionRewardRecord;
import com.accompany.business.mybatismapper.UserInviteFissionRewardRecordMapper;
import com.accompany.business.service.BaseSendService;
import com.accompany.business.service.purse.UserPurseService;
import com.accompany.business.service.record.BillRecordService;
import com.accompany.business.vo.invite.UserInviteProfitVo;
import com.accompany.common.constant.Constant;
import com.accompany.common.push.MarkdownMessage;
import com.accompany.common.redis.RedisKey;
import com.accompany.common.result.BusiResult;
import com.accompany.common.status.BusiStatus;
import com.accompany.common.utils.EnvComponent;
import com.accompany.core.base.UidContextHolder;
import com.accompany.core.enumeration.BillObjTypeEnum;
import com.accompany.core.enumeration.I18nAlertEnum;
import com.accompany.core.enumeration.PartitionEnum;
import com.accompany.core.exception.AdminServiceException;
import com.accompany.core.exception.ServiceException;
import com.accompany.core.model.Users;
import com.accompany.core.service.message.MessageRobotPushService;
import com.accompany.core.service.user.UsersBaseService;
import com.accompany.core.util.I18NMessageSourceUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.incrementer.DefaultIdentifierGenerator;
@@ -55,6 +63,15 @@ public class UserInviteService {
private UserPurseService userPurseService;
@Autowired
private BillRecordService billRecordService;
@Autowired
private BaseSendService baseSendService;
@Autowired
private EnvComponent envComponent;
@Autowired
private MessageRobotPushService messageRobotPushService;
public static final String COIN_ROBOT_ENV = "2ba42959-22b6-4031-a6f5-24c9e8c6b6d7";
public static final String COIN_ROBOT_DEV = "f8bf7e8b-6af1-4bd0-8b5b-999a14c75d41";
public UserInviteProfitVo getUserProfit() {
UserInviteProfitVo profit = new UserInviteProfitVo();
@@ -144,6 +161,8 @@ public class UserInviteService {
Double amount = Double.valueOf(totalProfit);
userPurseService.addDiamond(uid, amount, BillObjTypeEnum.INVITE_FISSION_BEINVITE_REAWARD, (userPurse ->
billRecordService.insertGeneralBillRecord(uid, uid, null, recordIdStr, BillObjTypeEnum.INVITE_RECHARGE_RECEIVE_REAWARD, amount, userPurse)));
baseSendService.sendSystemMsg(uid.toString(), I18NMessageSourceUtil.getMessage(I18nAlertEnum.INVITE_COINS_REWARD_MSG, new Object[]{}, uid));
} catch (InterruptedException e) {
log.error("UserInviteService.receive,uid={},e={}", uid, e.getMessage(),e);
throw new ServiceException(BusiStatus.SERVERBUSY);
@@ -154,5 +173,24 @@ public class UserInviteService {
}
return BusiResult.success();
}
//
// private void sendCoinRecRobot(Date startDate, Date endDate) {
// String key;
// if (envComponent.getDevOrNativeEnv()) {
// key = COIN_ROBOT_DEV;
// } else {
// key = COIN_ROBOT_ENV;
// }
// PartitionEnum partitionEnum = PartitionEnum.getByPartitionId(partitionId);
// String title = " WEB-API代理充值(" + partitionEnum.getDesc() + "区)";
// MarkdownMessage msg = new MarkdownMessage();
// for (PartitionEnum value : PartitionEnum.values()) {
// msg.add(MarkdownMessage.getHeaderText(3, title));
// msg.add(MarkdownMessage.getReferenceText("充值用户ID " + erbanNo));
// msg.add(MarkdownMessage.getReferenceText("充值使用的代理ID " + agentErbanNo));
// msg.add(MarkdownMessage.getReferenceText("充值coins " + coins));
// msg.add(MarkdownMessage.getReferenceText("充值时间GMT+8 " + DateUtil.formatDateTime(new Date())));
// }
// messageRobotPushService.pushMessageByKey(key, msg, false);
// }
}

View File

@@ -6,6 +6,7 @@ import com.accompany.business.model.RoomInviteCode;
import com.accompany.business.model.UserInviteCode;
import com.accompany.business.mybatismapper.UserInviteCodeMapper;
import com.accompany.business.service.invite.UserInviteCodeService;
import com.accompany.business.service.invite.UserInviteFissionRecordService;
import com.accompany.business.service.room.RoomInviteCodeService;
import com.accompany.business.service.room.RoomService;
import com.accompany.business.vo.RoomVo;
@@ -55,6 +56,8 @@ public class InviteCodeService extends BaseService {
private RoomService roomService;
@Autowired
private AccountMapper accountMapper;
@Autowired
private UserInviteFissionRecordService recordService;
public Object getInviteCodeList(Long uid, DeviceInfo deviceInfo) {
@@ -123,9 +126,8 @@ public class InviteCodeService extends BaseService {
} catch (Exception e) {
return BusiStatus.INVITE_CODE_INVALID;
}
Integer registerIps = accountMapper.selectByRegisterIp(ipAddress);
// 检查ip是否绑定过邀请码
if (registerIps > 0) {
if (recordService.hasRepeatIp(ipAddress)) {
return BusiStatus.INVITE_CODE_IP_DUPLICATED;
}
return null;

View File

@@ -73,6 +73,7 @@ public class UsersV2Controller extends BaseController {
userParam.setInviteCode(userParam.getInviteCode().toUpperCase());
}
if (isNewUser(usersInfo) && !StringUtils.isEmpty(userParam.getInviteCode())) {
if (!StringUtils.isEmpty(deviceInfo.getDeviceId())) {
BusiStatus check = inviteCodeService.checkInviteCode(userParam.getInviteCode(), deviceInfo.getDeviceId());
if (check != null) {
@@ -81,7 +82,10 @@ public class UsersV2Controller extends BaseController {
}
String realIpAddress = IPUtils.getRealIpAddress(request);
if (org.apache.commons.lang.StringUtils.isNotEmpty(realIpAddress)) {
inviteCodeService.checkInviteCodeByIp(userParam.getInviteCode(), realIpAddress);
BusiStatus check = inviteCodeService.checkInviteCodeByIp(userParam.getInviteCode(), realIpAddress);
if (check != null) {
return new BusiResult(check);
}
}
Long inviteUid = inviteCodeService.getUidByInviteCode(userParam.getInviteCode());
userParam.setInviteUid(inviteUid);