x用户-后台fixed
This commit is contained in:
@@ -6,6 +6,7 @@ import lombok.Getter;
|
|||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
@@ -78,5 +79,7 @@ public class ChargeUserXDetailVo {
|
|||||||
@ExcelProperty("取消X身份标记原因")
|
@ExcelProperty("取消X身份标记原因")
|
||||||
@ApiModelProperty("取消X身份标记原因")
|
@ApiModelProperty("取消X身份标记原因")
|
||||||
private String removeReason;
|
private String removeReason;
|
||||||
|
private Date createTime;
|
||||||
|
private Date updateTime;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -0,0 +1,28 @@
|
|||||||
|
|
||||||
|
package com.accompany.business.event.listener;
|
||||||
|
|
||||||
|
import com.accompany.business.event.NewUserEvent;
|
||||||
|
import com.accompany.business.service.game.ChargeUserXService;
|
||||||
|
import com.accompany.core.model.Users;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.context.ApplicationListener;
|
||||||
|
import org.springframework.scheduling.annotation.Async;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
@Slf4j
|
||||||
|
public class NewUserListener implements ApplicationListener<NewUserEvent> {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ChargeUserXService chargeUserXService;
|
||||||
|
|
||||||
|
@Async
|
||||||
|
@Override
|
||||||
|
public void onApplicationEvent(NewUserEvent event) {
|
||||||
|
Users user = (Users) event.getSource();
|
||||||
|
chargeUserXService.check(user);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@@ -1,7 +1,6 @@
|
|||||||
package com.accompany.business.service.game;
|
package com.accompany.business.service.game;
|
||||||
|
|
||||||
import com.accompany.business.model.game.ChargeUserXDetail;
|
import com.accompany.business.model.game.ChargeUserXDetail;
|
||||||
import com.accompany.business.model.game.ChargeUserXRecord;
|
|
||||||
import com.accompany.business.mybatismapper.game.ChargeUserXDetailMapper;
|
import com.accompany.business.mybatismapper.game.ChargeUserXDetailMapper;
|
||||||
import com.accompany.business.service.AccountLoginRecordService;
|
import com.accompany.business.service.AccountLoginRecordService;
|
||||||
import com.accompany.business.service.user.UsersService;
|
import com.accompany.business.service.user.UsersService;
|
||||||
@@ -21,7 +20,6 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
import java.text.MessageFormat;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -126,7 +124,7 @@ public class ChargeUserXDetailService extends ServiceImpl<ChargeUserXDetailMappe
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void delCache(Long uid) {
|
public void delCache(Long uid) {
|
||||||
detailCache().remove(uid);
|
detailCache().remove(uid);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -144,35 +142,6 @@ public class ChargeUserXDetailService extends ServiceImpl<ChargeUserXDetailMappe
|
|||||||
return chargeUserXDetail;
|
return chargeUserXDetail;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void check(Long uid) {
|
|
||||||
ChargeUserXDetail chargeUserXDetail = new ChargeUserXDetail();
|
|
||||||
AccountLoginRecord lastLogin = accountLoginRecordService.getLastLoginRecord(uid);
|
|
||||||
if (lastLogin != null) {
|
|
||||||
chargeUserXDetail.setUid(uid);
|
|
||||||
chargeUserXDetail.setIp(lastLogin.getLoginIp());
|
|
||||||
chargeUserXDetail.setDeviceId(lastLogin.getDeviceId());
|
|
||||||
chargeUserXDetail.setIdentity(1);
|
|
||||||
//进行iP检测
|
|
||||||
ChargeUserXRecord recordByIp = chargeUserXRecordService.getRecordByIp(lastLogin.getLoginIp());
|
|
||||||
String remark = "注册关联,关联记录id:{0}";
|
|
||||||
ChargeUserXRecord recordByDevice = chargeUserXRecordService.getRecordByDevice(lastLogin.getDeviceId());
|
|
||||||
if (recordByDevice != null) {
|
|
||||||
chargeUserXDetail.setRemark(MessageFormat.format(remark, recordByDevice.getId()));
|
|
||||||
this.save(chargeUserXDetail);
|
|
||||||
this.delCache(uid);
|
|
||||||
chargeUserXRecordService.saveRecord(uid);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (recordByIp != null) {
|
|
||||||
chargeUserXDetail.setRemark(MessageFormat.format(remark, recordByIp.getId()));
|
|
||||||
this.save(chargeUserXDetail);
|
|
||||||
this.delCache(uid);
|
|
||||||
chargeUserXRecordService.saveRecord(uid);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<ChargeUserXDetail> listExistAutoRecord() {
|
public List<ChargeUserXDetail> listExistAutoRecord() {
|
||||||
LambdaQueryWrapper<ChargeUserXDetail> queryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<ChargeUserXDetail> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
@@ -1,18 +1,30 @@
|
|||||||
package com.accompany.business.service.game;
|
package com.accompany.business.service.game;
|
||||||
|
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
import com.accompany.business.model.game.ChargeUserXDetail;
|
import com.accompany.business.model.game.ChargeUserXDetail;
|
||||||
|
import com.accompany.business.model.game.ChargeUserXRecord;
|
||||||
import com.accompany.business.model.game.GameDayStatData;
|
import com.accompany.business.model.game.GameDayStatData;
|
||||||
import com.accompany.business.service.AccountLoginRecordService;
|
import com.accompany.business.service.AccountLoginRecordService;
|
||||||
import com.accompany.business.service.user.UsersService;
|
import com.accompany.business.service.user.UsersService;
|
||||||
import com.accompany.common.constant.Constant;
|
import com.accompany.common.constant.Constant;
|
||||||
import com.accompany.common.constant.GameConstant;
|
import com.accompany.common.constant.GameConstant;
|
||||||
|
import com.accompany.common.push.MarkdownMessage;
|
||||||
|
import com.accompany.common.utils.EnvComponent;
|
||||||
|
import com.accompany.core.enumeration.PartitionEnum;
|
||||||
|
import com.accompany.core.model.AccountLoginRecord;
|
||||||
|
import com.accompany.core.model.RegionInfo;
|
||||||
|
import com.accompany.core.model.Users;
|
||||||
import com.accompany.core.service.SysConfService;
|
import com.accompany.core.service.SysConfService;
|
||||||
|
import com.accompany.core.service.message.MessageRobotPushService;
|
||||||
|
import com.accompany.core.service.region.RegionInfoService;
|
||||||
import com.accompany.payment.model.UserRechargeLevel;
|
import com.accompany.payment.model.UserRechargeLevel;
|
||||||
import com.accompany.payment.service.UserRechargeLevelService;
|
import com.accompany.payment.service.UserRechargeLevelService;
|
||||||
import org.apache.commons.collections.CollectionUtils;
|
import org.apache.commons.collections.CollectionUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.text.MessageFormat;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@@ -39,8 +51,16 @@ public class ChargeUserXService {
|
|||||||
private ChargeUserXDetailService chargeUserXDetailService;
|
private ChargeUserXDetailService chargeUserXDetailService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private UserRechargeLevelService rechargeLevelService;
|
private UserRechargeLevelService rechargeLevelService;
|
||||||
|
@Autowired
|
||||||
|
private ChargeUserXRecordService chargeUserXRecordService;
|
||||||
|
@Autowired
|
||||||
|
private EnvComponent envComponent;
|
||||||
|
@Autowired
|
||||||
|
private MessageRobotPushService messageRobotPushService;
|
||||||
|
@Autowired
|
||||||
|
private RegionInfoService regionInfoService;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void updateUserX(Date date) {
|
public void updateUserX(Date date) {
|
||||||
List<UserRechargeLevel> zeroChargeList = rechargeLevelService.listByZeroTotalGold();
|
List<UserRechargeLevel> zeroChargeList = rechargeLevelService.listByZeroTotalGold();
|
||||||
List<ChargeUserXDetail> chargeUserXDetails = chargeUserXDetailService.listExistAutoRecord();
|
List<ChargeUserXDetail> chargeUserXDetails = chargeUserXDetailService.listExistAutoRecord();
|
||||||
@@ -88,10 +108,28 @@ public class ChargeUserXService {
|
|||||||
|
|
||||||
if (CollectionUtils.isNotEmpty(zeroChargeList)) {
|
if (CollectionUtils.isNotEmpty(zeroChargeList)) {
|
||||||
for (UserRechargeLevel zeroCharge : zeroChargeList) {
|
for (UserRechargeLevel zeroCharge : zeroChargeList) {
|
||||||
if (existXMap.containsKey(zeroCharge.getUid())) {
|
Long uid = zeroCharge.getUid();
|
||||||
|
if (existXMap.containsKey(uid)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
GameDayStatData gameDayStatData = gameDayStatDataMap.get(uid);
|
||||||
|
if (gameDayStatData == null) {//游戏获奖未达标
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
ChargeUserXDetail chargeUserXDetail = new ChargeUserXDetail();
|
||||||
|
AccountLoginRecord lastLoginRecord = accountLoginRecordService.getLastLoginRecord(uid);
|
||||||
|
if (lastLoginRecord != null) {
|
||||||
|
chargeUserXDetail.setIp(lastLoginRecord.getLoginIp());
|
||||||
|
chargeUserXDetail.setDeviceId(lastLoginRecord.getDeviceId());
|
||||||
|
}
|
||||||
|
chargeUserXDetail.setUid(uid);
|
||||||
|
chargeUserXDetail.setWinGold(gameDayStatData.getWinGold());
|
||||||
|
chargeUserXDetail.setPayGold(gameDayStatData.getPayGold());
|
||||||
|
chargeUserXDetail.setAdminAdd(0);
|
||||||
|
chargeUserXDetail.setIdentity(1);
|
||||||
|
chargeUserXDetail.setCreateTime(date);
|
||||||
|
chargeUserXDetail.setUpdateTime(date);
|
||||||
|
chargeUserXDetails.add(chargeUserXDetail);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -105,11 +143,77 @@ public class ChargeUserXService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void sendMsg() {
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public void initDetail() {
|
public void initDetail() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void check(Users users) {
|
||||||
|
Long uid = users.getUid();
|
||||||
|
ChargeUserXDetail chargeUserXDetail = new ChargeUserXDetail();
|
||||||
|
AccountLoginRecord lastLogin = accountLoginRecordService.getLastLoginRecord(uid);
|
||||||
|
if (lastLogin != null) {
|
||||||
|
chargeUserXDetail.setUid(uid);
|
||||||
|
chargeUserXDetail.setIp(lastLogin.getLoginIp());
|
||||||
|
chargeUserXDetail.setDeviceId(lastLogin.getDeviceId());
|
||||||
|
chargeUserXDetail.setIdentity(1);
|
||||||
|
//进行iP检测
|
||||||
|
ChargeUserXRecord recordByIp = chargeUserXRecordService.getRecordByIp(String.valueOf(lastLogin.getLoginIp()));
|
||||||
|
String remark = "注册关联,关联记录id:{0},关联值:{1}";
|
||||||
|
ChargeUserXRecord recordByDevice = chargeUserXRecordService.getRecordByDevice(String.valueOf(lastLogin.getDeviceId()));
|
||||||
|
if (recordByDevice != null) {
|
||||||
|
chargeUserXDetail.setRemark(MessageFormat.format(remark, recordByDevice.getId(), recordByDevice.getDeviceId()));
|
||||||
|
chargeUserXDetail.setRefStatus(1);
|
||||||
|
chargeUserXDetailService.save(chargeUserXDetail);
|
||||||
|
chargeUserXDetailService.delCache(uid);
|
||||||
|
chargeUserXRecordService.saveRecord(uid);
|
||||||
|
String regionName = "";
|
||||||
|
if (users.getRegionId() != null) {
|
||||||
|
RegionInfo regionInfo = regionInfoService.getById(users.getRegionId());
|
||||||
|
regionName = regionInfo.getName();
|
||||||
|
}
|
||||||
|
this.sendRobotMsg(users.getPartitionId(), users.getErbanNo(), regionName, BigDecimal.ZERO, BigDecimal.ZERO, lastLogin.getDeviceId());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (recordByIp != null) {
|
||||||
|
chargeUserXDetail.setRemark(MessageFormat.format(remark, recordByIp.getId(),recordByIp.getIp()));
|
||||||
|
chargeUserXDetail.setRefStatus(1);
|
||||||
|
chargeUserXDetailService.save(chargeUserXDetail);
|
||||||
|
chargeUserXDetailService.delCache(uid);
|
||||||
|
chargeUserXRecordService.saveRecord(uid);
|
||||||
|
String regionName = "";
|
||||||
|
if (users.getRegionId() != null) {
|
||||||
|
RegionInfo regionInfo = regionInfoService.getById(users.getRegionId());
|
||||||
|
regionName = regionInfo.getName();
|
||||||
|
}
|
||||||
|
this.sendRobotMsg(users.getPartitionId(), users.getErbanNo(), regionName, BigDecimal.ZERO, BigDecimal.ZERO, lastLogin.getDeviceId());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sendRobotMsg(Integer partitionId, Long erbanNo, String regionName, BigDecimal payGold, BigDecimal winGold, String refValue) {
|
||||||
|
String key;
|
||||||
|
if (envComponent.getDevOrNativeEnv()) {
|
||||||
|
key = "474c92e5-385d-4b6a-b606-b33769f59457";
|
||||||
|
} else {
|
||||||
|
key = "10879113-5e0e-4385-8c52-faa6a96417d9";
|
||||||
|
}
|
||||||
|
PartitionEnum partitionEnum = PartitionEnum.getByPartitionId(partitionId);
|
||||||
|
String title = "首次被标记为“X”";
|
||||||
|
MarkdownMessage msg = new MarkdownMessage();
|
||||||
|
msg.add(MarkdownMessage.getHeaderText(3, title));
|
||||||
|
msg.add(MarkdownMessage.getReferenceText("新增用户特殊标识: X"));
|
||||||
|
msg.add(MarkdownMessage.getReferenceText("标识含义: 垃圾嫌疑用户"));
|
||||||
|
msg.add(MarkdownMessage.getReferenceText("用户 ID: " + erbanNo));
|
||||||
|
msg.add(MarkdownMessage.getReferenceText("分区: " + partitionEnum.getDesc()));
|
||||||
|
msg.add(MarkdownMessage.getReferenceText("用户国家: " + regionName));
|
||||||
|
msg.add(MarkdownMessage.getReferenceText("累计进入金币: " + payGold));
|
||||||
|
msg.add(MarkdownMessage.getReferenceText("累计退出金币: " + winGold));
|
||||||
|
msg.add(MarkdownMessage.getReferenceText("累计差额: " + payGold.subtract(winGold)));
|
||||||
|
msg.add(MarkdownMessage.getReferenceText("关联值: " + refValue));
|
||||||
|
msg.add(MarkdownMessage.getReferenceText("标记时间(GMT+8): " + DateUtil.formatDateTime(new Date())));
|
||||||
|
messageRobotPushService.pushMessageByKey(key, msg, false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -37,10 +37,10 @@
|
|||||||
<if test="identity != null and identity != 1">
|
<if test="identity != null and identity != 1">
|
||||||
and not cuxd.identity = 1
|
and not cuxd.identity = 1
|
||||||
</if>
|
</if>
|
||||||
<if test="ip != null">
|
<if test="ip != null and ip != ''">
|
||||||
and cuxd.uid in (select uid from charge_user_x_record where type = 1 and ip = #{ip})
|
and cuxd.uid in (select uid from charge_user_x_record where type = 1 and ip = #{ip})
|
||||||
</if>
|
</if>
|
||||||
<if test="device != null">
|
<if test="device != null device ip != ''">
|
||||||
and cuxd.uid in (select uid from charge_user_x_record where type = 2 and device_id = #{device})
|
and cuxd.uid in (select uid from charge_user_x_record where type = 2 and device_id = #{device})
|
||||||
</if>
|
</if>
|
||||||
order by cuxd.update_time desc
|
order by cuxd.update_time desc
|
||||||
|
Reference in New Issue
Block a user