x用户-fixedAll

This commit is contained in:
2025-09-28 16:52:35 +08:00
parent 1226992c78
commit 3d2e6d9cfd
4 changed files with 43 additions and 25 deletions

View File

@@ -24,6 +24,7 @@ import java.io.IOException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
@@ -47,9 +48,12 @@ public class ChargeUserXDetailAdminController extends BaseController {
@GetMapping(value = "/list")
public BusiResult<IPage<ChargeUserXDetailVo>> listPage(Long erbanNo, String ip,
String device, Integer identity, Integer pageNo, Integer pageSize) {
String device, Integer identity, Integer pageNo, Integer pageSize, Integer partitionId) {
List<Integer> allPartitionId = adminPartitionService.getAllPartitionId(getAdminId());
IPage<ChargeUserXDetailVo> ipage = chargeUserXDetailService.listPage(allPartitionId, erbanNo, ip, device, identity, pageNo, pageSize);
if (!allPartitionId.contains(partitionId)) {
throw new AdminServiceException(5001, "无权查看该区数据权限");
}
IPage<ChargeUserXDetailVo> ipage = chargeUserXDetailService.listPage(Arrays.asList(partitionId), erbanNo, ip, device, identity, pageNo, pageSize);
return BusiResult.success(ipage);
}
@@ -84,9 +88,12 @@ public class ChargeUserXDetailAdminController extends BaseController {
@ApiOperation(value = "导出", httpMethod = "POST")
@PostMapping("/export")
public void export(Long erbanNo, String ip, String device, Integer identity, HttpServletResponse response) throws IOException {
public void export(Long erbanNo, String ip, String device, Integer identity, Integer partitionId, HttpServletResponse response) throws IOException {
List<Integer> allPartitionId = adminPartitionService.getAllPartitionId(getAdminId());
IPage<ChargeUserXDetailVo> ipage = chargeUserXDetailService.listPage(allPartitionId, erbanNo, ip, device, identity, -1, -1);
if (!allPartitionId.contains(partitionId)) {
throw new AdminServiceException(5001, "无权查看该区数据权限");
}
IPage<ChargeUserXDetailVo> ipage = chargeUserXDetailService.listPage(Arrays.asList(partitionId), erbanNo, ip, device, identity, -1, -1);
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
// 这里URLEncoder.encode可以防止中文乱码

View File

@@ -75,7 +75,7 @@ public class ChargeUserXDetailService extends ServiceImpl<ChargeUserXDetailMappe
record.setAdminAdd(1);
this.updateById(record);
this.delCache(uid);
chargeUserXRecordService.saveRecord(uid);
chargeUserXRecordService.saveRecord(uid, null, null);
}
} else {
@@ -92,7 +92,7 @@ public class ChargeUserXDetailService extends ServiceImpl<ChargeUserXDetailMappe
chargeUserXDetail.setRemark(remark);
this.save(chargeUserXDetail);
this.delCache(uid);
chargeUserXRecordService.saveRecord(uid);
chargeUserXRecordService.saveRecord(uid, null, null);
}
}
}
@@ -102,6 +102,7 @@ public class ChargeUserXDetailService extends ServiceImpl<ChargeUserXDetailMappe
ChargeUserXDetail record = this.baseMapper.getRecord(uid);
record.setIdentity(3);
record.setUpdateTime(new Date());
removeReason = removeReason == null ? "" : removeReason;
record.setRemoveReason("后台移除:" + username + ":" + removeReason);
record.setAdminId(adminId);
this.updateById(record);
@@ -137,9 +138,7 @@ public class ChargeUserXDetailService extends ServiceImpl<ChargeUserXDetailMappe
public Long selectMaxId() {
LambdaQueryWrapper<ChargeUserXDetail> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ChargeUserXDetail::getIdentity, 1)
.gt(ChargeUserXDetail::getRefStatus, 0)
.orderByDesc(ChargeUserXDetail::getId)
queryWrapper.orderByDesc(ChargeUserXDetail::getId)
.last("limit 1");
ChargeUserXDetail chargeUserXDetail = this.baseMapper.selectOne(queryWrapper);
return chargeUserXDetail == null ? 0 : chargeUserXDetail.getId();

View File

@@ -3,6 +3,7 @@ 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.accompany.core.util.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -10,10 +11,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -32,16 +30,23 @@ public class ChargeUserXRecordService extends ServiceImpl<ChargeUserXRecordMappe
return this.baseMapper.listPage(page,uid, type);
}
public void saveRecord(Long uid) {
public void saveRecord(Long uid, String lastLoginIp, String lastLoginDevice) {
List<String> ips = this.baseMapper.getLastThirtyXIp(uid);
Date updateTime = new Date();
if (!CollectionUtils.isEmpty(ips)){
Set<String> ipSet = new HashSet<>();
if (StringUtils.isNoneEmpty(lastLoginIp)) {
ipSet.add(lastLoginIp);
}
if (CollectionUtils.isEmpty(ips)) {
ips.addAll(ips);
}
if (!CollectionUtils.isEmpty(ipSet)){
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) {
for (String ip : ipSet) {
ChargeUserXRecord xRecord = ipRecordMap.get(ip);
if (xRecord != null) {
xRecord.setStatus(1);
@@ -56,16 +61,23 @@ public class ChargeUserXRecordService extends ServiceImpl<ChargeUserXRecordMappe
chargeUserXRecord.setCreateTime(updateTime);
ipRecordMap.put(ip, chargeUserXRecord);
}
this.saveBatch(ipRecordMap.values());
this.saveOrUpdateBatch(ipRecordMap.values());
}
List<String> devices = this.baseMapper.getLastThirtyXDevice(uid);
if (!CollectionUtils.isEmpty(devices)){
Set<String> deviceSet = new HashSet<>();
if (StringUtils.isNotEmpty(lastLoginDevice)) {
deviceSet.add(lastLoginDevice);
}
if (CollectionUtils.isEmpty(devices)) {
deviceSet.addAll(devices);
}
if (!CollectionUtils.isEmpty(deviceSet)){
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) {
for (String device : deviceSet) {
ChargeUserXRecord xRecord = deviceRecordMap.get(device);
if (xRecord != null) {
xRecord.setStatus(1);
@@ -79,7 +91,7 @@ public class ChargeUserXRecordService extends ServiceImpl<ChargeUserXRecordMappe
chargeUserXRecord.setCreateTime(updateTime);
deviceRecordMap.put(device, chargeUserXRecord);
}
this.saveBatch(deviceRecordMap.values());
this.saveOrUpdateBatch(deviceRecordMap.values());
}
}

View File

@@ -154,7 +154,7 @@ public class ChargeUserXService {
tipUids.add(uid);
}
chargeUserXDetailService.detailCache().put(uid, chargeUserXDetail);
chargeUserXRecordService.saveRecord(uid);
chargeUserXRecordService.saveRecord(uid, chargeUserXDetail.getIp(), chargeUserXDetail.getDeviceId());
}
if (CollectionUtils.isNotEmpty(tipUser)) {
@@ -187,7 +187,7 @@ public class ChargeUserXService {
chargeUserXDetail.setRefStatus(1);
chargeUserXDetailService.save(chargeUserXDetail);
chargeUserXDetailService.delCache(uid);
chargeUserXRecordService.saveRecord(uid);
chargeUserXRecordService.saveRecord(uid, chargeUserXDetail.getIp(), chargeUserXDetail.getDeviceId());
String regionName = "";
if (users.getRegionId() != null) {
RegionInfo regionInfo = regionInfoService.getById(users.getRegionId());
@@ -202,7 +202,7 @@ public class ChargeUserXService {
chargeUserXDetail.setRefStatus(1);
chargeUserXDetailService.save(chargeUserXDetail);
chargeUserXDetailService.delCache(uid);
chargeUserXRecordService.saveRecord(uid);
chargeUserXRecordService.saveRecord(uid, chargeUserXDetail.getIp(), chargeUserXDetail.getDeviceId());
String regionName = "";
if (users.getRegionId() != null) {
RegionInfo regionInfo = regionInfoService.getById(users.getRegionId());
@@ -218,7 +218,7 @@ public class ChargeUserXService {
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";
key = "ce275432-117d-4016-9f24-3410f1d54e4d";
} else {
key = "10879113-5e0e-4385-8c52-faa6a96417d9";
}
@@ -233,7 +233,7 @@ public class ChargeUserXService {
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("累计差额(退出-进入) " + winGold.subtract(payGold)));
if (refValue != null) {
msg.add(MarkdownMessage.getReferenceText("关联值: " + refValue));
}