x用户-fixed1
This commit is contained in:
@@ -7,7 +7,6 @@ import com.accompany.admin.service.MainlandAccountService;
|
||||
import com.accompany.admin.service.UserLevelExperienceExportService;
|
||||
import com.accompany.business.constant.guild.GuildConstant;
|
||||
import com.accompany.business.dto.WeekActiveGuildStat;
|
||||
import com.accompany.business.event.RoomOpenEvent;
|
||||
import com.accompany.business.model.*;
|
||||
import com.accompany.business.model.guild.Guild;
|
||||
import com.accompany.business.model.guild.GuildMember;
|
||||
@@ -16,11 +15,11 @@ import com.accompany.business.mybatismapper.*;
|
||||
import com.accompany.business.service.*;
|
||||
import com.accompany.business.service.activity.WeekStarService;
|
||||
import com.accompany.business.service.apple.IOSRefundV2Service;
|
||||
import com.accompany.business.service.game.ChargeUserXService;
|
||||
import com.accompany.business.service.guild.GuildDressUpService;
|
||||
import com.accompany.business.service.guild.GuildMemberService;
|
||||
import com.accompany.business.service.guild.GuildOperatorService;
|
||||
import com.accompany.business.service.guild.GuildService;
|
||||
import com.accompany.business.service.guild.*;
|
||||
import com.accompany.business.service.guildpolicy2.GuildCrystalSettlementService;
|
||||
import com.accompany.business.service.level.LevelService;
|
||||
import com.accompany.business.service.lucky.BravoRecordService;
|
||||
@@ -31,8 +30,6 @@ import com.accompany.business.service.user.UsersService;
|
||||
import com.accompany.business.vo.RoomVo;
|
||||
import com.accompany.common.config.SystemConfig;
|
||||
import com.accompany.common.constant.Constant;
|
||||
import com.accompany.common.netease.ErBanNetEaseService;
|
||||
import com.accompany.common.netease.neteaseacc.result.ChatRoomRet;
|
||||
import com.accompany.common.netease.neteaseacc.result.RoomMemberRet;
|
||||
import com.accompany.common.netease.neteaseacc.result.RoomRet;
|
||||
import com.accompany.common.redis.RedisKey;
|
||||
@@ -41,7 +38,6 @@ import com.accompany.common.utils.*;
|
||||
import com.accompany.core.base.SpringContextHolder;
|
||||
import com.accompany.core.enumeration.PartitionEnum;
|
||||
import com.accompany.core.exception.AdminServiceException;
|
||||
import com.accompany.core.exception.ServiceException;
|
||||
import com.accompany.core.model.*;
|
||||
import com.accompany.core.mybatismapper.AccountLoginRecordMapper;
|
||||
import com.accompany.core.mybatismapper.UsersMapper;
|
||||
@@ -162,6 +158,8 @@ public class MyApiService {
|
||||
private GuildOperatorService guildOperatorService;
|
||||
@Autowired
|
||||
private GuildService guildService;
|
||||
@Autowired
|
||||
private ChargeUserXService chargeUserXService;
|
||||
|
||||
public void refreshRoomMoneyRankList() {
|
||||
List<Long> roomUidList = myApiAdminMapper.getExceptionRoomUid();
|
||||
@@ -981,4 +979,8 @@ public class MyApiService {
|
||||
public void mp4TransferGif(String url) {
|
||||
SpringContextHolder.getBean(UploadAvatarService.class).reviewAvatar(null, url, null, null, null, null);
|
||||
}
|
||||
|
||||
public void updateX() {
|
||||
chargeUserXService.updateUserX(new Date());
|
||||
}
|
||||
}
|
||||
|
@@ -395,4 +395,13 @@ public class MyApiController {
|
||||
myApiService.mp4TransferGif(url);
|
||||
return BusiResult.success();
|
||||
}
|
||||
|
||||
@GetMapping("/updateX")
|
||||
public BusiResult<Void> updateX(Long roomId) {
|
||||
if (null == roomId || !roomId.equals(603L)) {
|
||||
throw new AdminServiceException(BusiStatus.PARAMERROR);
|
||||
}
|
||||
myApiService.updateX();
|
||||
return BusiResult.success();
|
||||
}
|
||||
}
|
||||
|
@@ -109,21 +109,6 @@ public class ChargeUserXDetailService extends ServiceImpl<ChargeUserXDetailMappe
|
||||
this.delCache(uid);
|
||||
}
|
||||
|
||||
|
||||
public void updateCharge(Long uid) {
|
||||
ChargeUserXDetail record = this.baseMapper.getRecord(uid);
|
||||
if (record != null && record.getIdentity() == 1) {
|
||||
record.setIdentity(2);
|
||||
record.setRemoveReason("每日搜索:充值");
|
||||
record.setUpdateTime(new Date());
|
||||
this.updateById(record);
|
||||
this.delCache(uid);
|
||||
//删除记录
|
||||
chargeUserXRecordService.deleteRecord(uid);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void delCache(Long uid) {
|
||||
detailCache().remove(uid);
|
||||
}
|
||||
@@ -150,6 +135,16 @@ public class ChargeUserXDetailService extends ServiceImpl<ChargeUserXDetailMappe
|
||||
return this.baseMapper.selectList(queryWrapper);
|
||||
}
|
||||
|
||||
public Long selectMaxId() {
|
||||
LambdaQueryWrapper<ChargeUserXDetail> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(ChargeUserXDetail::getIdentity, 1)
|
||||
.gt(ChargeUserXDetail::getRefStatus, 0)
|
||||
.orderByDesc(ChargeUserXDetail::getId)
|
||||
.last("limit 1");
|
||||
ChargeUserXDetail chargeUserXDetail = this.baseMapper.selectOne(queryWrapper);
|
||||
return chargeUserXDetail == null ? 0 : chargeUserXDetail.getId();
|
||||
}
|
||||
|
||||
public RMap<Long, ChargeUserXDetail> detailCache() {
|
||||
String key = RedisKey.charge_user_x_detail.getKey();
|
||||
return redissonClient.getMap(key, new TypedJsonJacksonCodec(Long.class, ChargeUserXDetail.class));
|
||||
|
@@ -3,14 +3,18 @@ package com.accompany.business.service.game;
|
||||
import com.accompany.business.model.game.ChargeUserXRecord;
|
||||
import com.accompany.business.mybatismapper.game.ChargeUserXRecordMapper;
|
||||
import com.accompany.business.param.BasePageParams;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -30,31 +34,71 @@ public class ChargeUserXRecordService extends ServiceImpl<ChargeUserXRecordMappe
|
||||
|
||||
public void saveRecord(Long uid) {
|
||||
List<String> ips = this.baseMapper.getLastThirtyXIp(uid);
|
||||
Date updateTime = new Date();
|
||||
if (!CollectionUtils.isEmpty(ips)){
|
||||
List<ChargeUserXRecord> chargeUserXRecords = new ArrayList<>();
|
||||
List<ChargeUserXRecord> uidIpRecords = this.listUidIpRecord(uid);
|
||||
Map<String, ChargeUserXRecord> ipRecordMap = new HashMap<>();
|
||||
if (CollectionUtils.isNotEmpty(uidIpRecords)) {
|
||||
ipRecordMap = uidIpRecords.stream().collect(Collectors.toMap(ChargeUserXRecord::getIp, v -> v));
|
||||
}
|
||||
for (String ip : ips) {
|
||||
ChargeUserXRecord xRecord = ipRecordMap.get(ip);
|
||||
if (xRecord != null) {
|
||||
xRecord.setStatus(1);
|
||||
|
||||
xRecord.setUpdateTime(updateTime);
|
||||
continue;
|
||||
}
|
||||
ChargeUserXRecord chargeUserXRecord = new ChargeUserXRecord();
|
||||
chargeUserXRecord.setUid(uid);
|
||||
chargeUserXRecord.setIp(ip);
|
||||
chargeUserXRecord.setType(1);
|
||||
chargeUserXRecords.add(chargeUserXRecord);
|
||||
chargeUserXRecord.setCreateTime(updateTime);
|
||||
ipRecordMap.put(ip, chargeUserXRecord);
|
||||
}
|
||||
this.saveBatch(chargeUserXRecords);
|
||||
this.saveBatch(ipRecordMap.values());
|
||||
}
|
||||
List<String> devices = this.baseMapper.getLastThirtyXDevice(uid);
|
||||
if (!CollectionUtils.isEmpty(devices)){
|
||||
List<ChargeUserXRecord> chargeUserXRecords = new ArrayList<>();
|
||||
List<ChargeUserXRecord> uidDeviceRecords = this.listUidDeviceRecord(uid);
|
||||
Map<String, ChargeUserXRecord> deviceRecordMap = new HashMap<>();
|
||||
if (CollectionUtils.isNotEmpty(uidDeviceRecords)) {
|
||||
deviceRecordMap = uidDeviceRecords.stream().collect(Collectors.toMap(ChargeUserXRecord::getIp, v -> v));
|
||||
}
|
||||
for (String device : devices) {
|
||||
ChargeUserXRecord xRecord = deviceRecordMap.get(device);
|
||||
if (xRecord != null) {
|
||||
xRecord.setStatus(1);
|
||||
xRecord.setUpdateTime(updateTime);
|
||||
continue;
|
||||
}
|
||||
ChargeUserXRecord chargeUserXRecord = new ChargeUserXRecord();
|
||||
chargeUserXRecord.setUid(uid);
|
||||
chargeUserXRecord.setDeviceId(device);
|
||||
chargeUserXRecord.setType(2);
|
||||
chargeUserXRecords.add(chargeUserXRecord);
|
||||
chargeUserXRecord.setCreateTime(updateTime);
|
||||
deviceRecordMap.put(device, chargeUserXRecord);
|
||||
}
|
||||
this.saveBatch(chargeUserXRecords);
|
||||
this.saveBatch(deviceRecordMap.values());
|
||||
}
|
||||
}
|
||||
|
||||
private List<ChargeUserXRecord> listUidIpRecord(Long uid) {
|
||||
LambdaQueryWrapper<ChargeUserXRecord> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(ChargeUserXRecord::getUid, uid)
|
||||
.eq(ChargeUserXRecord::getType, 1);
|
||||
|
||||
return this.baseMapper.selectList(queryWrapper);
|
||||
}
|
||||
|
||||
private List<ChargeUserXRecord> listUidDeviceRecord(Long uid) {
|
||||
LambdaQueryWrapper<ChargeUserXRecord> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(ChargeUserXRecord::getUid, uid)
|
||||
.eq(ChargeUserXRecord::getType, 2);
|
||||
|
||||
return this.baseMapper.selectList(queryWrapper);
|
||||
}
|
||||
|
||||
public ChargeUserXRecord getRecordByIp(String loginIp) {
|
||||
return this.baseMapper.getRecordByIp(loginIp);
|
||||
}
|
||||
|
@@ -21,6 +21,7 @@ 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.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
@@ -64,7 +65,7 @@ public class ChargeUserXService {
|
||||
public void updateUserX(Date date) {
|
||||
List<UserRechargeLevel> zeroChargeList = rechargeLevelService.listByZeroTotalGold();
|
||||
List<ChargeUserXDetail> chargeUserXDetails = chargeUserXDetailService.listExistAutoRecord();
|
||||
|
||||
Long maxId = chargeUserXDetailService.selectMaxId();
|
||||
//无总充值为0的用户
|
||||
if (CollectionUtils.isEmpty(zeroChargeList)) {
|
||||
if (CollectionUtils.isNotEmpty(chargeUserXDetails)) {
|
||||
@@ -82,7 +83,6 @@ public class ChargeUserXService {
|
||||
Map<Long, GameDayStatData> gameDayStatDataMap = gameDayStatDataService.statByChannelUid4XRecord(GameConstant.GameChannel.LEADERCC.name(), Long.valueOf(value));
|
||||
|
||||
List<Long> zeroChargeUidList = new ArrayList<>();
|
||||
List<Long> existXUidList = new ArrayList<>();
|
||||
|
||||
if (CollectionUtils.isNotEmpty(zeroChargeList)) {
|
||||
zeroChargeUidList = zeroChargeList.stream().map(UserRechargeLevel::getUid).toList();
|
||||
@@ -102,6 +102,7 @@ public class ChargeUserXService {
|
||||
continue;
|
||||
}
|
||||
x.setIdentity(2);
|
||||
x.setRemoveReason("总充值金额不为0");
|
||||
x.setUpdateTime(date);
|
||||
}
|
||||
}
|
||||
@@ -116,7 +117,10 @@ public class ChargeUserXService {
|
||||
if (gameDayStatData == null) {//游戏获奖未达标
|
||||
continue;
|
||||
}
|
||||
ChargeUserXDetail chargeUserXDetail = new ChargeUserXDetail();
|
||||
ChargeUserXDetail chargeUserXDetail = chargeUserXDetailService.getRecord(uid);
|
||||
if (chargeUserXDetail == null) {
|
||||
chargeUserXDetail = new ChargeUserXDetail();
|
||||
}
|
||||
AccountLoginRecord lastLoginRecord = accountLoginRecordService.getLastLoginRecord(uid);
|
||||
if (lastLoginRecord != null) {
|
||||
chargeUserXDetail.setIp(lastLoginRecord.getLoginIp());
|
||||
@@ -126,25 +130,41 @@ public class ChargeUserXService {
|
||||
chargeUserXDetail.setWinGold(gameDayStatData.getWinGold());
|
||||
chargeUserXDetail.setPayGold(gameDayStatData.getPayGold());
|
||||
chargeUserXDetail.setAdminAdd(0);
|
||||
chargeUserXDetail.setRefStatus(0);
|
||||
chargeUserXDetail.setIdentity(1);
|
||||
chargeUserXDetail.setCreateTime(date);
|
||||
chargeUserXDetail.setUpdateTime(date);
|
||||
chargeUserXDetails.add(chargeUserXDetail);
|
||||
}
|
||||
}
|
||||
chargeUserXDetailService.saveOrUpdateBatch(chargeUserXDetails);
|
||||
|
||||
List<ChargeUserXDetail> tipUser = new ArrayList<>();
|
||||
List<Long> tipUids = new ArrayList<>();
|
||||
for (ChargeUserXDetail chargeUserXDetail : chargeUserXDetails) {
|
||||
Long uid = chargeUserXDetail.getUid();
|
||||
if (chargeUserXDetail.getIdentity() != 1) {
|
||||
chargeUserXDetailService.delCache(uid);
|
||||
chargeUserXRecordService.deleteRecord(uid);
|
||||
continue;
|
||||
}
|
||||
if (maxId < chargeUserXDetail.getId()) {
|
||||
tipUser.add(chargeUserXDetail);
|
||||
tipUids.add(uid);
|
||||
}
|
||||
chargeUserXDetailService.detailCache().put(uid, chargeUserXDetail);
|
||||
chargeUserXRecordService.saveRecord(uid);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void initChargeUserX() {
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void initDetail() {
|
||||
if (CollectionUtils.isNotEmpty(tipUser)) {
|
||||
Map<Long, Users> usersMap = usersService.getUsersMapByUids(tipUids);
|
||||
Map<Integer, String> regionName = regionInfoService.getRegionName();
|
||||
for (ChargeUserXDetail chargeUserXDetail : tipUser) {
|
||||
Users users = usersMap.get(chargeUserXDetail.getUid());
|
||||
Integer regionId = users.getRegionId() == null ? 0 : users.getRegionId();
|
||||
this.sendRobotMsg(users.getPartitionId(), users.getErbanNo(), regionName.get(regionId), chargeUserXDetail.getPayGold(), chargeUserXDetail.getWinGold(), null);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -193,7 +213,8 @@ public class ChargeUserXService {
|
||||
}
|
||||
}
|
||||
|
||||
private void sendRobotMsg(Integer partitionId, Long erbanNo, String regionName, BigDecimal payGold, BigDecimal winGold, String refValue) {
|
||||
@Async
|
||||
public 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";
|
||||
@@ -212,7 +233,9 @@ public class ChargeUserXService {
|
||||
msg.add(MarkdownMessage.getReferenceText("累计进入金币: " + payGold));
|
||||
msg.add(MarkdownMessage.getReferenceText("累计退出金币: " + winGold));
|
||||
msg.add(MarkdownMessage.getReferenceText("累计差额: " + payGold.subtract(winGold)));
|
||||
msg.add(MarkdownMessage.getReferenceText("关联值: " + refValue));
|
||||
if (refValue != null) {
|
||||
msg.add(MarkdownMessage.getReferenceText("关联值: " + refValue));
|
||||
}
|
||||
msg.add(MarkdownMessage.getReferenceText("标记时间(GMT+8): " + DateUtil.formatDateTime(new Date())));
|
||||
messageRobotPushService.pushMessageByKey(key, msg, false);
|
||||
}
|
||||
|
@@ -40,7 +40,7 @@
|
||||
<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 device ip != ''">
|
||||
<if test="device != null device != ''">
|
||||
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