充值代理星级

This commit is contained in:
2024-12-12 17:27:50 +08:00
committed by hokli
parent f69244192a
commit 96139fa06c
13 changed files with 113 additions and 15 deletions

View File

@@ -27,6 +27,8 @@ public class RechargeUserAdminDto {
*/
@ApiModelProperty("代充地区")
private String userRegions;
@ApiModelProperty("星级")
private Integer starLevel;
public List<RechargeUserRegionAdminDto> getUserRegions() {
if (StrUtil.isNotEmpty(userRegions)) {

View File

@@ -42,4 +42,7 @@ public class RechargeUserAdminVo extends RechargeUser {
@ApiModelProperty("地区")
private List<RechargeUserRegion> userRegions;
@ApiModelProperty("星级")
private Integer starLevel;
}

View File

@@ -135,6 +135,7 @@ public class RechargeUserAdminServiceImpl implements RechargeUserAdminService {
}
}
}
rechargeUser.setStarLevel(param.getStarLevel());
rechargeUser.setType(type);
rechargeUser.setUpdateTime(now);
rechargeUserService.saveOrUpdate(rechargeUser);

View File

@@ -39,6 +39,9 @@ public class RechargeUser {
@ApiModelProperty("地区类型 0b1 台湾 0b10 新加坡 0b100 马来西亚 0b1000 香港")
private Integer type;
@ApiModelProperty("星级")
private Integer starLevel;
/**
* 创建时间
*/

View File

@@ -5,6 +5,8 @@ import com.accompany.payment.model.RechargeUser;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author: liaozetao
* @date: 2023/8/17 19:02
@@ -50,4 +52,6 @@ public class RechargeUserVo extends RechargeUser {
@ApiModelProperty("排序")
private Integer seq = 0;
@ApiModelProperty("近三十天转赠的金币")
private Long giveGold;
}

View File

@@ -1,11 +1,15 @@
package com.accompany.payment.service;
import com.accompany.common.result.BusiResult;
import com.accompany.payment.model.RechargeUser;
import com.accompany.payment.vo.RechargeUserVo;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.web.bind.annotation.RequestHeader;
import java.util.List;
import static com.accompany.common.constant.ApplicationConstant.PublicParameters.PUB_UID;
/**
* @author: liaozetao
* @date: 2023/8/15 11:20
@@ -32,4 +36,6 @@ public interface RechargeUserService extends IService<RechargeUser> {
* @return
*/
Boolean isRechargeUser(Long uid);
BusiResult<RechargeUserVo> info(Long uid);
}

View File

@@ -3,6 +3,7 @@ package com.accompany.payment.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.accompany.common.constant.Constant;
import com.accompany.common.redis.RedisKey;
import com.accompany.common.result.BusiResult;
import com.accompany.core.model.Users;
import com.accompany.core.service.common.JedisService;
import com.accompany.core.service.user.UsersBaseService;
@@ -15,6 +16,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
@@ -56,12 +58,10 @@ public class RechargeUserServiceImpl extends ServiceImpl<RechargeUserMapper, Rec
if (CollectionUtil.isEmpty(list)) {
return Collections.emptyList();
}
if (CollectionUtil.isNotEmpty(list)) {
for (RechargeUserVo user : list) {
user.setIsOnline(jedisService.hget(RedisKey.user_online_status.getKey(), user.getUid().toString()) != null ? Constant.Yes1No0.YES : Constant.Yes1No0.NO);
}
for (RechargeUserVo user : list) {
user.setIsOnline(jedisService.hget(RedisKey.user_online_status.getKey(), user.getUid().toString()) != null ? Constant.Yes1No0.YES : Constant.Yes1No0.NO);
}
return list.stream().sorted(Comparator.comparing(RechargeUserVo::getIsOnline).reversed().thenComparing(RechargeUserVo::getSeq)).collect(Collectors.toList());
return list;
}
@Override
@@ -90,4 +90,23 @@ public class RechargeUserServiceImpl extends ServiceImpl<RechargeUserMapper, Rec
.eq(RechargeUser::getUid, uid)) > 0;
}
@Override
public BusiResult<RechargeUserVo> info(Long uid) {
RechargeUser rechargeUser = baseMapper.selectOne(Wrappers.<RechargeUser>lambdaQuery()
.eq(RechargeUser::getUid, uid)
.ne(RechargeUser::getType, 0), false);
if (rechargeUser == null) {
return BusiResult.success(null);
}
RechargeUserVo rechargeUserVo = new RechargeUserVo();
BeanUtils.copyProperties(rechargeUser, rechargeUserVo);
Users usersByUid = usersBaseService.getUsersByUid(uid);
if (usersByUid != null) {
rechargeUserVo.setAvatar(usersByUid.getAvatar());
rechargeUserVo.setErbanNo(usersByUid.getErbanNo().toString());
rechargeUserVo.setNick(usersByUid.getNick());
}
return BusiResult.success(rechargeUserVo);
}
}

View File

@@ -8,7 +8,8 @@
u.nick,
rur.seq,
cr.type,
r.room_id as roomId
r.room_id as roomId,
ru.star_level starLevel
from recharge_user as ru
left join users as u on u.uid = ru.uid
left join charge_region as cr on ((ru.`type` <![CDATA[ & ]]> cr.`type`) != 0)
@@ -20,7 +21,9 @@
<select id="listByPartitionId" resultType="com.accompany.payment.vo.RechargeUserVo">
select u.uid,
u.erban_no as erbanNo,
u.nick, u.avatar
u.nick,
u.avatar,
ru.star_level starLevel
from recharge_user ru
inner join users u on ru.uid = u.uid
where u.partition_id = #{partitionId}

View File

@@ -23,6 +23,8 @@ public interface DiamondGiveHistoryMapper extends BaseMapper<DiamondGiveHistory>
List<DiamondGiveHistoryVo> getUserGiveDiamondRecordVos(@Param("uid") Long uid, @Param("date") Date date);
List<DiamondGiveHistoryVo> getUserGiveTotalDiamond(@Param("fromUids") List<Long> fromUids, @Param("startDate") Date startDate, @Param("endDate") Date endDate);
List<DiamondGiveHistoryVo> giveRecordVoByType(@Param("uid") Long uid, @Param("toUid") Long toUid, @Param("date") Date date, @Param("type") Byte type);
IPage<DiamondGiveHistoryVo> listRecordVoByType(@Param("page") Page<DiamondGiveHistoryVo> page, @Param("type") Byte type, @Param("fromUid") Long fromUid);

View File

@@ -196,7 +196,8 @@ public class GuildUsdChannelService {
}
Map<Long, BigDecimal> recordMap = recordList.stream().collect(Collectors.toMap(GuildUsdBillRecord::getTargetUid, GuildUsdBillRecord::getOperateCurrency));
List<RechargeUserVo> voList = rechargeUserVoList.stream().sorted(Comparator.comparing(rechargeUserVo -> recordMap.getOrDefault(rechargeUserVo.getUid(), BigDecimal.ZERO)))
List<RechargeUserVo> voList = rechargeUserVoList.stream().sorted(Comparator.comparing(RechargeUserVo::getStarLevel).reversed()
.thenComparing(rechargeUserVo -> recordMap.getOrDefault(rechargeUserVo.getUid(), BigDecimal.ZERO), Comparator.reverseOrder()))
.collect(Collectors.toList());
Collections.reverse(voList);
return voList;

View File

@@ -534,4 +534,16 @@ public class DiamondGiveHistoryService extends ServiceImpl<DiamondGiveHistoryMap
}
return diamondGiveHistoryVos.stream().collect(Collectors.toMap(DiamondGiveHistoryVo::getTargetUid, x->x.getDiamondNum()));
}
public Map<Long, Long> getFromUserGiveGoldMap(List<Long> fromUids, Date startDate, Date endDate) {
List<DiamondGiveHistoryVo> userGiveTotalDiamond = diamondGiveHistoryMapper.getUserGiveTotalDiamond(fromUids, startDate, endDate);
Map<Long, Long> resultMap = new HashMap<>();
if (CollectionUtils.isEmpty(userGiveTotalDiamond)) {
return resultMap;
}
for (DiamondGiveHistoryVo diamondGiveHistoryVo : userGiveTotalDiamond) {
resultMap.put(diamondGiveHistoryVo.getFromUid(), diamondGiveHistoryVo.getDiamondNum());
}
return resultMap;
}
}

View File

@@ -41,6 +41,20 @@
group by from_uid, to_uid)
order by dgh.create_time desc
</select>
<select id="getUserGiveTotalDiamond" resultType="com.accompany.business.vo.DiamondGiveHistoryVo">
select
from_uid fromUid,
sum(ifnull(diamond_num, 0)) diamondNum
from diamond_give_history
where create_time >= #{startDate}
and create_time &lt; #{endDate}
<foreach collection="fromUids" close=")" item="uidTemp" open="and from_uid in(" separator=",">
#{uidTemp}
</foreach>
group by from_uid
</select>
<select id="giveRecordVoByType" resultType="com.accompany.business.vo.DiamondGiveHistoryVo">
select
dgh.id,

View File

@@ -1,18 +1,24 @@
package com.accompany.business.controller.recharge;
import cn.hutool.core.date.DateUtil;
import com.accompany.business.service.purse.DiamondGiveHistoryService;
import com.accompany.common.result.BusiResult;
import com.accompany.core.service.common.JedisService;
import com.accompany.payment.model.RechargeUser;
import com.accompany.payment.service.RechargeUserService;
import com.accompany.payment.vo.RechargeUserVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static com.accompany.common.constant.ApplicationConstant.PublicParameters.PUB_UID;
/**
* @author: liaozetao
@@ -28,7 +34,13 @@ public class RechargeUserController {
private RechargeUserService rechargeUserService;
@Autowired
private JedisService jedisService;
private DiamondGiveHistoryService diamondGiveHistoryService;
@ApiOperation("代充身份信息")
@GetMapping("/info")
public BusiResult<RechargeUserVo> info(@RequestHeader(value = PUB_UID) Long uid) {
return rechargeUserService.info(uid);
}
/**
* 列表
@@ -39,7 +51,23 @@ public class RechargeUserController {
@ApiOperation("列表")
@GetMapping("list")
public BusiResult<List<RechargeUserVo>> list(@RequestParam("regionCode") String regionCode) {
return BusiResult.success(rechargeUserService.selectList(regionCode));
List<RechargeUserVo> rechargeUserVos = rechargeUserService.selectList(regionCode);
if (CollectionUtils.isNotEmpty(rechargeUserVos)) {
List<Long> uids = rechargeUserVos.stream().map(RechargeUser::getUid).collect(Collectors.toList());
Date date = new Date();
Map<Long, Long> fromUserGiveGoldMap = diamondGiveHistoryService.getFromUserGiveGoldMap(uids, DateUtil.offsetDay(date, -30), date);
for (RechargeUserVo rechargeUserVo : rechargeUserVos) {
Long goldNum = fromUserGiveGoldMap.get(rechargeUserVo.getUid());
goldNum = goldNum == null ? 0 : goldNum;
rechargeUserVo.setGiveGold(goldNum);
}
Comparator<RechargeUserVo> comparator2 = Comparator.comparing(RechargeUserVo::getStarLevel).reversed();
comparator2 = comparator2.thenComparing(RechargeUserVo::getIsOnline, Comparator.reverseOrder());
comparator2 = comparator2.thenComparing(RechargeUserVo::getGiveGold, Comparator.reverseOrder());
rechargeUserVos.stream().sorted(comparator2) .collect(Collectors.toList());
}
return BusiResult.success(rechargeUserVos);
}
}