x用户-后台fixed
This commit is contained in:
@@ -6,6 +6,7 @@ import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -78,5 +79,7 @@ public class ChargeUserXDetailVo {
|
||||
@ExcelProperty("取消X身份标记原因")
|
||||
@ApiModelProperty("取消X身份标记原因")
|
||||
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;
|
||||
|
||||
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.service.AccountLoginRecordService;
|
||||
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.util.CollectionUtils;
|
||||
|
||||
import java.text.MessageFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
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);
|
||||
}
|
||||
|
||||
@@ -144,35 +142,6 @@ public class ChargeUserXDetailService extends ServiceImpl<ChargeUserXDetailMappe
|
||||
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() {
|
||||
LambdaQueryWrapper<ChargeUserXDetail> queryWrapper = new LambdaQueryWrapper<>();
|
||||
|
@@ -1,18 +1,30 @@
|
||||
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.ChargeUserXRecord;
|
||||
import com.accompany.business.model.game.GameDayStatData;
|
||||
import com.accompany.business.service.AccountLoginRecordService;
|
||||
import com.accompany.business.service.user.UsersService;
|
||||
import com.accompany.common.constant.Constant;
|
||||
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.message.MessageRobotPushService;
|
||||
import com.accompany.core.service.region.RegionInfoService;
|
||||
import com.accompany.payment.model.UserRechargeLevel;
|
||||
import com.accompany.payment.service.UserRechargeLevelService;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.text.MessageFormat;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -39,8 +51,16 @@ public class ChargeUserXService {
|
||||
private ChargeUserXDetailService chargeUserXDetailService;
|
||||
@Autowired
|
||||
private UserRechargeLevelService rechargeLevelService;
|
||||
@Autowired
|
||||
private ChargeUserXRecordService chargeUserXRecordService;
|
||||
@Autowired
|
||||
private EnvComponent envComponent;
|
||||
@Autowired
|
||||
private MessageRobotPushService messageRobotPushService;
|
||||
@Autowired
|
||||
private RegionInfoService regionInfoService;
|
||||
|
||||
|
||||
|
||||
public void updateUserX(Date date) {
|
||||
List<UserRechargeLevel> zeroChargeList = rechargeLevelService.listByZeroTotalGold();
|
||||
List<ChargeUserXDetail> chargeUserXDetails = chargeUserXDetailService.listExistAutoRecord();
|
||||
@@ -88,10 +108,28 @@ public class ChargeUserXService {
|
||||
|
||||
if (CollectionUtils.isNotEmpty(zeroChargeList)) {
|
||||
for (UserRechargeLevel zeroCharge : zeroChargeList) {
|
||||
if (existXMap.containsKey(zeroCharge.getUid())) {
|
||||
Long uid = zeroCharge.getUid();
|
||||
if (existXMap.containsKey(uid)) {
|
||||
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 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">
|
||||
and not cuxd.identity = 1
|
||||
</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})
|
||||
</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})
|
||||
</if>
|
||||
order by cuxd.update_time desc
|
||||
|
Reference in New Issue
Block a user