15 Commits

Author SHA1 Message Date
04b91a88a7 公会小时流水统计 2025-10-17 19:03:58 +08:00
254fb07b16 公会小时流水模型 2025-10-17 18:58:10 +08:00
230f81fd98 独联体发放的钻石奖励加上对应发放的额外钻石数量 2025-10-17 15:31:37 +08:00
4564cfbbf2 boom后台分区支持 2025-10-14 19:36:03 +08:00
3ebfa34e88 h5_LOGIN 2025-10-14 18:50:43 +08:00
bccd82f021 h5-recharge-login 2025-10-14 16:30:55 +08:00
b4a3e3f37a h5登录返回分区id 2025-10-14 16:30:55 +08:00
7819a92f27 h5登录取消限制 2025-10-14 16:30:55 +08:00
4184e3210c 用户等级生效fixed 2025-10-14 16:24:15 +08:00
89bea63b86 用户等级生效 2025-10-14 16:24:15 +08:00
d4c256c522 独联体boom 2025-10-14 16:24:14 +08:00
37fc0a79c3 独联体公会列表 2025-10-14 16:24:14 +08:00
a788956f90 角标配置入口-财富等级限制生效范围 2025-10-14 16:24:14 +08:00
c19589c674 独联体开启财富魅力公会榜 2025-10-14 16:24:14 +08:00
c22cb3e2a5 公会-提现-账户-独联体usdt 2025-10-14 16:09:55 +08:00
38 changed files with 559 additions and 68 deletions

View File

@@ -0,0 +1,61 @@
package com.accompany.admin.service.guild;
import cn.hutool.core.date.DateUtil;
import com.accompany.business.model.guild.Guild;
import com.accompany.business.service.guild.GuildDiamondStatisticsHourService;
import com.accompany.business.service.guild.GuildService;
import com.accompany.business.service.user.UsersService;
import com.accompany.business.vo.guild.GuildDiamondStatisticsHourVo;
import com.accompany.common.status.BusiStatus;
import com.accompany.core.enumeration.PartitionEnum;
import com.accompany.core.exception.ServiceException;
import com.accompany.core.model.Users;
import com.accompany.core.util.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
@Service
public class GuildDiamondStatisticsHourAdminService {
@Autowired
private GuildService guildService;
@Autowired
private UsersService usersService;
@Autowired
private GuildDiamondStatisticsHourService guildDiamondStatisticsHourService;
public Page<GuildDiamondStatisticsHourVo> list(String startDate, String endDate,
Integer partitionId, Integer regionId,
Integer guildId, Long ownerErbanNo,
Integer pageNo, Integer pageSize, Long inviteUid) {
if (StringUtils.isEmpty(startDate) || StringUtils.isEmpty(endDate)) {
Date date = new Date();
startDate = DateUtil.formatDate(DateUtil.offsetDay(date, -30));
endDate = DateUtil.formatDate(date);
}
if (guildId == null && ownerErbanNo != null) {
Users users = usersService.getUserByErbanNo(ownerErbanNo);
if (users == null) {
throw new ServiceException(BusiStatus.SERVERERROR,"公会长信息不存在");
}
Long ownerUid = users.getUid();
Guild guild = guildService.getVaildGuildByOwnerUid(ownerUid);
if (guild == null) {
throw new ServiceException(BusiStatus.SERVERERROR,"公会不存在");
}
guildId = guild.getId();
}
Page<GuildDiamondStatisticsHourVo> guildDiamondStatisticsHourVoPage =
guildDiamondStatisticsHourService.listGuildByStatDate(startDate, endDate, partitionId, regionId, guildId, pageNo, pageSize, inviteUid);
if (!CollectionUtils.isEmpty(guildDiamondStatisticsHourVoPage.getRecords())) {
for (GuildDiamondStatisticsHourVo vo: guildDiamondStatisticsHourVoPage.getRecords()) {
vo.setPartitionDesc(PartitionEnum.getByPartitionId(vo.getPartitionId()).getDesc());
}
}
return guildDiamondStatisticsHourVoPage;
}
}

View File

@@ -73,34 +73,33 @@ public class RoomBoomAwardRecordAdminController extends BaseController {
//1 创建IPage分页对象,设置分页参数
IPage<RoomBoomSign> page=new Page<>(params.getPageNo(),params.getPageSize());
LambdaQueryWrapper<RoomBoomSign> wrapper = new LambdaQueryWrapper<>();
Long uid = null;
Long roomUid = null;
if (params.getRoomErbanNo() != null){
Users erbanNo = usersService.getUserByErbanNo(params.getRoomErbanNo());
if (erbanNo == null) {
throw new AdminServiceException(BusiStatus.SERVERERROR, "房间id不存在");
}
wrapper.eq(RoomBoomSign::getRoomUid,erbanNo.getUid());
roomUid = erbanNo.getUid();
}
if (params.getErbanNo() != null){
Users erbanNo = usersService.getUserByErbanNo(params.getErbanNo());
if (erbanNo == null) {
throw new AdminServiceException(BusiStatus.SERVERERROR, "触发者id不存在");
}
wrapper.eq(RoomBoomSign::getUid,erbanNo.getUid());
uid = erbanNo.getUid();
}
if (params.getLevel() != null){
wrapper.eq(RoomBoomSign::getLevel,params.getLevel());
Date startTime = null, endTime = null;
if (StringUtils.isNotEmpty(params.getStartTime())) {
startTime = DateUtil.parseDateTime(params.getStartTime());
}
if (StringUtils.isNotEmpty(params.getStartTime())){
wrapper.ge(RoomBoomSign::getCreateTime, (Date)DateUtil.parseDateTime(params.getStartTime()));
if (StringUtils.isNotEmpty(params.getEndTime())) {
endTime = DateUtil.parseDateTime(params.getEndTime());
}
if (StringUtils.isNotEmpty(params.getEndTime())){
wrapper.le(RoomBoomSign::getCreateTime, (Date)DateUtil.parseDateTime(params.getEndTime()));
}
wrapper.eq(RoomBoomSign::getStatus,2);
wrapper.orderByDesc(RoomBoomSign::getId);
//2 执行分页查询
IPage<RoomBoomSign> boomSignIPage = roomBoomSignService.page(page, wrapper);
IPage<RoomBoomSign> boomSignIPage = roomBoomSignService.list(page, uid, roomUid, params.getLevel(),
startTime, endTime, params.getPartitionId());
Page<RoomBoomSignVO> resultVo = new Page<>();
resultVo.setTotal(boomSignIPage.getTotal());
List<RoomBoomSignVO> roomBoomSignVOS = new ArrayList<>();

View File

@@ -0,0 +1,74 @@
package com.accompany.admin.controller.guild;
import com.accompany.admin.service.guild.GuildDiamondStatisticsHourAdminService;
import com.accompany.business.param.BasePageParams;
import com.accompany.business.vo.guild.GuildDiamondStatisticsHourVo;
import com.accompany.core.vo.BaseResponseVO;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.support.ExcelTypeEnum;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
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.RestController;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
@Api(tags = "公会小时钻石流水")
@RestController
@RequestMapping("/admin/guild/diamondStatistics")
public class GuildDiamondStatisticsHourAdminController {
@Autowired
private GuildDiamondStatisticsHourAdminService guildDiamondStatisticsHourAdminService;
@ApiImplicitParams({
@ApiImplicitParam(name = "partitionId", value = "分区id", required = true),
@ApiImplicitParam(name = "ownerErbanNo", value = "公会长id"),
@ApiImplicitParam(name = "guildId", value = "公会id"),
@ApiImplicitParam(name = "startTime", value = "开始时间 yyyy-mm-dd", dataType = "string"),
@ApiImplicitParam(name = "endTime", value = "结束时间 yyyy-mm-dd", dataType = "string"),
@ApiImplicitParam(name = "pageNo", value = "页码", required = true),
@ApiImplicitParam(name = "pageSize", value = "页长", required = true)
})
@ApiOperation(value = "公会小时钻石流水列表", httpMethod = "GET")
@GetMapping("")
public BaseResponseVO<Page<GuildDiamondStatisticsHourVo>> list(BasePageParams basePageParams,
int partitionId, Integer regionId,
Integer guildId, Long ownerErbanNo) {
return new BaseResponseVO<>(guildDiamondStatisticsHourAdminService.list(basePageParams.getStartTime(), basePageParams.getEndTime(),
partitionId, regionId, guildId, ownerErbanNo, basePageParams.getPageNo(), basePageParams.getPageSize(), null));
}
@ApiImplicitParams({
@ApiImplicitParam(name = "partitionId", value = "分区id", required = true),
@ApiImplicitParam(name = "ownerErbanNo", value = "公会长id"),
@ApiImplicitParam(name = "guildId", value = "公会id"),
@ApiImplicitParam(name = "startTime", value = "开始时间 yyyy-mm-dd", dataType = "string"),
@ApiImplicitParam(name = "endTime", value = "结束时间 yyyy-mm-dd", dataType = "string"),
@ApiImplicitParam(name = "pageNo", value = "页码", required = true),
@ApiImplicitParam(name = "pageSize", value = "页长", required = true)
})
@ApiOperation(value = "公会小时钻石流水列表-导出", httpMethod = "GET")
@GetMapping("/export")
public void export(HttpServletResponse response, BasePageParams basePageParams,
Integer regionId,
Integer guildId, Long ownerErbanNo) throws IOException {
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
// 这里URLEncoder.encode可以防止中文乱码
String excelName = URLEncoder.encode("公会小时钻石流水列表", StandardCharsets.UTF_8);
Page<GuildDiamondStatisticsHourVo> list = guildDiamondStatisticsHourAdminService.list(basePageParams.getStartTime(), basePageParams.getEndTime(),
basePageParams.getPartitionId(), regionId, guildId, ownerErbanNo, 1, -1, null);
response.setHeader("Content-disposition", "attachment;filename=" + excelName + ExcelTypeEnum.XLSX.getValue());
EasyExcel.write(response.getOutputStream(), GuildDiamondStatisticsHourVo.class).sheet("公会小时钻石流水列表").doWrite(list.getRecords());
}
}

View File

@@ -76,4 +76,6 @@ public interface UsersMapper {
List<Users> listUid(@Param("start") Integer start, @Param("len") Integer len);
Integer recharegeCount(@Param("uid") Long uid);
}

View File

@@ -22,7 +22,6 @@ import com.google.gson.reflect.TypeToken;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import org.springframework.util.CollectionUtils;
@@ -523,4 +522,9 @@ public class UsersBaseService extends BaseService {
deleteUserRelateCache(uid.toString());
}
public Integer rechargeUserCount(Long uid) {
return usersMapper.recharegeCount(uid);
}
}

View File

@@ -1082,4 +1082,8 @@
/* SHARDINGSPHERE_HINT: WRITE_ROUTE_ONLY=true */
select uid, partition_id partitionId from users order by uid asc limit #{start},#{len}
</select>
<select id="recharegeCount" resultType="java.lang.Integer">
select ifnull(count(1),0) from recharge_user where uid = #{uid}
</select>
</mapper>

View File

@@ -990,6 +990,7 @@ public enum BusiStatus {
ROOM_DAY_DIAMOND_REWARD_DATE_CHECK(500, "TODAY NOT ALLOW RECEIVE"),
GUILD_USD_OPT_LIMIT(500, "该交易类型已达到本周交易次数上限"),
GUILD_MEMBER_REMOVE_LIMIT(500, "仅在每个月1号、2号、3号才可以移除主播"),
H5_RECHARGE_USER_NOT_OPEN(1404, "Your account has not enabled this function yet, so it cannot be used."),
;
private final int value;

View File

@@ -38,6 +38,7 @@ public class DateTimeUtil {
public static final String DEFAULT_DATE_PATTERN__ = "yyyyMMddHHmmss";
public static final String DEFAULT_TIME_PATTERN = "HH:mm:ss";
public static final String DEFAULT_DATE_MINUTE_PATTERN = "yyyy-MM-dd HH:mm";
public static final String DEFAULT_DATE_HOUR_PATTERN = "yyyy-MM-dd HH";
public static final String SIMPLE_MONTH_DATE_PATTERN = "M月d日";
public static final String DATE_HOUR_PATTERN = "yyyyMMddHH";
public static final String DATE_FORMAT_YEAR_MONTH = "yyyyMM";

View File

@@ -319,9 +319,9 @@ public enum I18nAlertEnum {
GOLD_BEAN_NAME("Gold Bean"),
DIAMOND_NAME("DIAMOND"),
GUILD_CREATE_TASK_MSG("你在公会的卓越表现,获得了精美奖励。快去背包看看吧!"),
EXTRA_GUILD_MSG("你的钻石奖励已经发放,请注意查收"),
EXTRA_GUILD_MEMBER_MSG("你的钻石奖励已经发放,请注意查收"),
EXTRA_ROOM_MSG("你的钻石奖励已经发放,请注意查收"),
EXTRA_GUILD_MSG("尊敬的用户,根据政策,您的公会长次日奖励{0}钻石已到账,您可以前往【我的钱包】查看"),
EXTRA_GUILD_MEMBER_MSG("尊敬的用户,根据政策,您的主播次日奖励{0}钻石已到账,您可以前往【我的钱包】查看"),
EXTRA_ROOM_MSG("尊敬的用户,根据政策,您每周一结算的奖励{0}钻石已到账,您可以前往【我的钱包】查看"),
;
private final String defaultStr;

View File

@@ -115,10 +115,12 @@ public interface RoomBoomConstant {
* 土耳其普通100%+lucky5%+Bravo2%
* 英语区普通100%+lucky2%+Bravo2%
* 英语2区普通100%+lucky5%+Bravo2%
* 独联体普通礼物100%+幸运礼物4%
* @return
*/
BigDecimal NORMAL_GIFT_BOOM_RATE = BigDecimal.valueOf(1.0D);
BigDecimal SUPER_GIFT_BOOM_RATE_AR = BigDecimal.valueOf(0.05D);
BigDecimal SUPER_GIFT_BOOM_RATE_SO = BigDecimal.valueOf(0.04D);
BigDecimal SUPER_GIFT_BOOM_RATE_EN = BigDecimal.valueOf(0.02D);
BigDecimal BRAVO_GIFT_BOOM_RATE_EN = BigDecimal.valueOf(0.02D);
@@ -127,6 +129,8 @@ public interface RoomBoomConstant {
LUCKY((type, partition) -> {
if (PartitionEnum.ENGLISH.getId() == partition || PartitionEnum.CHINESE.getId() == partition) {
return SUPER_GIFT_BOOM_RATE_EN;
} else if (PartitionEnum.SOVIET.getId() == partition) {
return SUPER_GIFT_BOOM_RATE_SO;
}
return SUPER_GIFT_BOOM_RATE_AR;
}),

View File

@@ -64,7 +64,7 @@ public enum GuildWithdrawAccountTypeEnum {
SWIFT_CODE("swiftcode", PartitionEnum.ENGLISH2.getId(), List.of(CountryEnum.NG),
List.of(GuildWithdrawAccountFieldEnum.COUNTRY, GuildWithdrawAccountFieldEnum.ACCOUNT_NO, GuildWithdrawAccountFieldEnum.ACCOUNT_NAME, GuildWithdrawAccountFieldEnum.SWIFT_CODE)),
USDT_SOVIET("usdt", PartitionEnum.SOVIET.getId(), List.of(CountryEnum.RU,CountryEnum.UZ,CountryEnum.BY,CountryEnum.UA,CountryEnum.KG,CountryEnum.TJ,CountryEnum.TM,
USDT_SOVIET("USDT/Binance/Volet", PartitionEnum.SOVIET.getId(), List.of(CountryEnum.RU,CountryEnum.UZ,CountryEnum.BY,CountryEnum.UA,CountryEnum.KG,CountryEnum.TJ,CountryEnum.TM,
CountryEnum.MD,CountryEnum.GE,CountryEnum.AM,CountryEnum.KZ,CountryEnum.Other),
List.of(GuildWithdrawAccountFieldEnum.COUNTRY, GuildWithdrawAccountFieldEnum.ACCOUNT)),

View File

@@ -28,6 +28,9 @@ public enum RuleCodeEnum {
//用户等级
USER_LEVEL,
//用户等级限制身份,1-全部用户2非主播身份
USER_LEVEL_LIMIT_ROLE,
//备用字段
RESERVE,;

View File

@@ -0,0 +1,44 @@
package com.accompany.business.model.guild;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* 公会钻石流水统计按小时实体类
*
* @author
* @since 2025-10-17
*/
@Data
public class GuildDiamondStatisticsHour implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id" , type = IdType.AUTO)
private Long id;
private String statDate;
private Integer partitionId;
/**
* 统计日期yyyy--MM-dd HH
*/
private String statHour;
private Long guildMemberId;
private Long uid;
/**
* 所属厅id
*/
private Integer guildId;
private BigDecimal diamondNum;
/**
* 创建时间
*/
private Date createTime;
private Date updateTime;
}

View File

@@ -0,0 +1,27 @@
package com.accompany.business.vo.guild;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
@Data
public class GuildDiamondStatisticsHourVo {
@ExcelProperty("分区")
private String partitionDesc;
@ExcelProperty("公会id")
private Integer guildId;
@ExcelProperty("公会昵称")
private String guildName;
@ExcelProperty("公会长id")
private Long ownerErbanNo;
@ExcelProperty("公会长地区")
private String ownerRegionDesc;
@ExcelProperty("公会操作人")
private String adminUsername;
@ExcelProperty("主播人数")
private Integer memberNum;
@ExcelIgnore
private Integer partitionId;
@ExcelProperty("钻石流水")
private Double diamondNum;
}

View File

@@ -10,6 +10,7 @@ public class SimpleGuildVo {
private Integer guildId;
private String guildName;
private Long ownerUid;
private SimpleUserVo owner;
private Double weekIncome;
private String markScore;

View File

@@ -4,6 +4,7 @@ import com.accompany.business.model.guild.GuildDiamondStatisticsDay;
import com.accompany.business.vo.guild.GuildDiamondStatisticsDayVo;
import com.accompany.business.vo.guild.GuildInfoVo;
import com.accompany.business.vo.guild.GuildMemberDiamondStatisticsDayVo;
import com.accompany.business.vo.guild.SimpleGuildVo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -49,4 +50,6 @@ public interface GuildDiamondStatisticsDayMapper extends BaseMapper<GuildDiamond
List<GuildDiamondStatisticsDayVo> listByStatDateGuildIds(@Param("startDate")String startDate, @Param("endDate")String endDate,
@Param("guildIds") List<Integer> guildIds, @Param("partitionId") Integer partitionId);
List<SimpleGuildVo> listRank(@Param("ipage") IPage<SimpleGuildVo> ipage, @Param("partitionId") Integer partitionId, @Param("startDate")String startDate);
}

View File

@@ -0,0 +1,29 @@
package com.accompany.business.mybatismapper.guild;
import com.accompany.business.model.guild.GuildDiamondStatisticsHour;
import com.accompany.business.vo.guild.GuildDiamondStatisticsHourVo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
/**
* 公会钻石流水统计按小时 Mapper 接口
*
* @author
* @since 2025-10-17
*/
public interface GuildDiamondStatisticsHourMapper extends BaseMapper<GuildDiamondStatisticsHour> {
int updateHourDiamondStatistics(@Param("statDate")String statDate, @Param("hourDate")String hourDate,
@Param("guildMemberId")Long guildMemberId, @Param("partitionId") Integer partitionId, @Param("guildId")Integer guildId, @Param("uid")Long uid,
@Param("diamond")Double diamond, @Param("time") Date time);
Page<GuildDiamondStatisticsHourVo> listGuildByStatDate(@Param("ipage") Page<GuildDiamondStatisticsHourVo> ipage,
@Param("startDate")String startDate, @Param("endDate")String endDate,
@Param("guildId") Integer guildId,
@Param("partitionId") Integer partitionId,
@Param("regionId") Integer regionId,
@Param("inviteUid") Long inviteUid);
}

View File

@@ -2,8 +2,10 @@ package com.accompany.business.mybatismapper.room;
import com.accompany.business.model.room.RoomBoomSign;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
/**
@@ -34,4 +36,8 @@ public interface RoomBoomSignMapper extends BaseMapper<RoomBoomSign> {
* @return 开奖情况
*/
RoomBoomSign getOneByRecordIdAndLevel(@Param("recordId") Long recordId, @Param("level") Integer level);
IPage<RoomBoomSign> list(@Param("page") IPage<RoomBoomSign> page, @Param("roomUid") Long roomUid, @Param("uid") Long uid,
@Param("level") Integer level, @Param("startTime") Date startTime, @Param("endTime") Date endTime,
@Param("partitionId") Integer partitionId);
}

View File

@@ -5,6 +5,7 @@ import com.accompany.business.model.guild.GuildMember;
import com.accompany.business.vo.guild.GuildDiamondStatisticsDayVo;
import com.accompany.business.vo.guild.GuildInfoVo;
import com.accompany.business.vo.guild.GuildMemberDiamondStatisticsDayVo;
import com.accompany.business.vo.guild.SimpleGuildVo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
@@ -40,4 +41,6 @@ public interface GuildDiamondStatisticsDayService extends IService<GuildDiamondS
Map<Integer, Double> mapByStatDate(String statDate, String endDate, int partitionId, List<Integer> guildIds);
RMap<Integer, BigDecimal> guildStatDateDiamondMap(Integer partitionId, String statDate);
List<SimpleGuildVo> listRank(Integer partitionId, String startDate, Integer pageNo, Integer pageSize);
}

View File

@@ -7,6 +7,7 @@ import com.accompany.business.mybatismapper.guild.GuildDiamondStatisticsDayMappe
import com.accompany.business.vo.guild.GuildDiamondStatisticsDayVo;
import com.accompany.business.vo.guild.GuildInfoVo;
import com.accompany.business.vo.guild.GuildMemberDiamondStatisticsDayVo;
import com.accompany.business.vo.guild.SimpleGuildVo;
import com.accompany.core.enumeration.PartitionEnum;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -100,4 +101,10 @@ public class GuildDiamondStatisticsDayServiceImpl extends ServiceImpl<GuildDiamo
new TypedJsonJacksonCodec(Integer.class, BigDecimal.class));
}
@Override
public List<SimpleGuildVo> listRank(Integer partitionId, String startDate, Integer pageNo, Integer pageSize) {
IPage<SimpleGuildVo> page = new Page<>(pageNo, pageSize, false);
return baseMapper.listRank(page, partitionId, startDate);
}
}

View File

@@ -0,0 +1,33 @@
package com.accompany.business.service.guild;
import com.accompany.business.model.guild.GuildDiamondStatisticsHour;
import com.accompany.business.model.guild.GuildMember;
import com.accompany.business.mybatismapper.guild.GuildDiamondStatisticsHourMapper;
import com.accompany.business.vo.guild.GuildDiamondStatisticsHourVo;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.util.Date;
/**
* 公会钻石流水统计按小时 服务实现类
*
* @author
* @since 2025-10-17
*/
@Service
public class GuildDiamondStatisticsHourService extends ServiceImpl<GuildDiamondStatisticsHourMapper, GuildDiamondStatisticsHour> {
public int updateHourDiamondStatistics(String statDate, String hourDate, GuildMember guildMember, double diamond) {
Date time = new Date();
int updated = baseMapper.updateHourDiamondStatistics(statDate, hourDate, guildMember.getId(), guildMember.getPartitionId(), guildMember.getGuildId(), guildMember.getUid(), diamond, time);
return updated;
}
public Page<GuildDiamondStatisticsHourVo> listGuildByStatDate(String statDate, String endDate, Integer partitionId, Integer regionId,
Integer guildId, Integer pageNo, Integer pageSize, Long inviteUid) {
Page<GuildDiamondStatisticsHourVo> page = new Page<>(pageNo, pageSize);
return baseMapper.listGuildByStatDate(page, statDate, endDate, guildId, partitionId, regionId, inviteUid);
}
}

View File

@@ -52,6 +52,8 @@ public class GuildGiftRecordService extends ServiceImpl<GuildGiftRecordMapper, G
private GuildDiamondStatisticsPolicy2Service guildDiamondStatisticsPolicy2Service;
@Autowired
private ExtraDiamondDayService extraDiamondDayService;
@Autowired
private GuildDiamondStatisticsHourService guildDiamondStatisticsHourService;
@Async
public void insertGuildGiftRecord(GiftSendRecord giftSendRecord) {
@@ -97,6 +99,8 @@ public class GuildGiftRecordService extends ServiceImpl<GuildGiftRecordMapper, G
statDate = CycleTimeUtil.getCycleDay(createTime, partitionInfo.getZoneId());
extraDiamondDayService.updateGuildExtraDiamond(guildMember, cycleDate, statDate, totalDiamondNum, 0D, createTime);
}
String dayHourDate = CycleTimeUtil.getDayHourDate(createTime, partitionInfo.getZoneId());
guildDiamondStatisticsHourService.updateHourDiamondStatistics(statDate, dayHourDate, guildMember, totalDiamondNum);
guildRankService.updateRank(guildGiftRecord);

View File

@@ -1,5 +1,6 @@
package com.accompany.business.service.guild;
import cn.hutool.core.date.DateUtil;
import com.accompany.business.constant.guild.GuildConstant;
import com.accompany.business.event.GuildMemberStatusChangeEvent;
import com.accompany.business.model.UserPurse;
@@ -93,6 +94,8 @@ public class GuildManagerService {
private UserPurseService userPurseService;
@Autowired
private UploadAvatarService uploadAvatarService;
@Autowired
private GuildDiamondStatisticsDayService guildDiamondStatisticsDayService;
@SneakyThrows
public GuildVo getGuildVo(Long uid) {
@@ -484,7 +487,7 @@ public class GuildManagerService {
return listGuildMember(guildMember.getGuildId(), GuildConstant.RoleType.MANAGER);
}
public List<SimpleGuildVo> listRank(Long uid) {
public List<SimpleGuildVo> listRank(Long uid, Integer pageNo, Integer pageSize) {
GuildMember guildMember = guildMemberService.getVaildGuildMemberByUid(uid);
if (null != guildMember){
throw new ServiceException(BusiStatus.HAS_ONE_HALL);
@@ -495,12 +498,48 @@ public class GuildManagerService {
throw new ServiceException(BusiStatus.USERNOTEXISTS);
}
List<Guild> guildList = guildService.listVaildGuildByPartitionId(u.getPartitionId());
Integer partitionId = u.getPartitionId();
List<SimpleGuildVo> simpleGuildVos;
if (PartitionEnum.SOVIET.getId() == partitionId) {
Date offsetDay = DateUtil.offsetDay(new Date(), -60);
simpleGuildVos = guildDiamondStatisticsDayService.listRank(partitionId, DateUtil.formatDate(offsetDay), pageNo, pageSize);
} else {
simpleGuildVos = this.listRank(partitionId);
}
if (CollectionUtils.isEmpty(simpleGuildVos)) {
return Collections.emptyList();
}
List<Integer> guildIds = simpleGuildVos.stream().map(SimpleGuildVo::getGuildId).collect(Collectors.toList());
Map<Integer, GuildSSRankDetailVo> ssMarkMap = ssGuildService.getSSMarkByGuildId(partitionId, guildIds);
Map<Integer, Integer> memberNumMap = guildService.getGuildMemberNumMapByGuildIds(guildIds);
List<Long> ownerUids = simpleGuildVos.stream().map(SimpleGuildVo::getOwnerUid).collect(Collectors.toList());
Map<Long, SimpleUserVo> ownerErbanNoMap = usersService.getSimpleUsersByUid(ownerUids);
for (SimpleGuildVo simpleGuildVo : simpleGuildVos) {
Integer guildId = simpleGuildVo.getGuildId();
simpleGuildVo.setOwner(ownerErbanNoMap.get(simpleGuildVo.getOwnerUid()));
GuildSSRankDetailVo guildSSRankDetailVo = ssMarkMap.get(guildId);
if (guildSSRankDetailVo != null) {
simpleGuildVo.setMarkScore(guildSSRankDetailVo.getMarkScore());
simpleGuildVo.setSsLevel(guildSSRankDetailVo.getSsLevel());
}
Integer memberNum = memberNumMap.get(guildId);
memberNum = memberNum == null ? 0 : memberNum;
simpleGuildVo.setMemberNum(memberNum);
}
return simpleGuildVos;
}
public List<SimpleGuildVo> listRank(Integer partitionId) {
List<Guild> guildList = guildService.listVaildGuildByPartitionId(partitionId);
if (CollectionUtils.isEmpty(guildList)){
return Collections.emptyList();
}
PartitionInfo partitionInfo = partitionInfoService.getById(u.getPartitionId());
Map<Integer, Double> weekIncomeMap = guildRankService.getWeekRankScoreMap(u.getPartitionId(),
PartitionInfo partitionInfo = partitionInfoService.getById(partitionId);
Map<Integer, Double> weekIncomeMap = guildRankService.getWeekRankScoreMap(partitionId,
null != partitionInfo? partitionInfo.getZoneId(): ZoneId.systemDefault().getId());
List<SimpleGuildVo> voList = new ArrayList<>();
@@ -516,18 +555,8 @@ public class GuildManagerService {
vo.setGuildId(guild.getId());
vo.setGuildName(guild.getName());
vo.setMemberNumLimit(guild.getMemberNumLimit());
SimpleUserVo ownerVo = usersService.getSimpleUserByUid(guild.getOwnerUid());
vo.setOwner(ownerVo);
vo.setWeekIncome(weekIncomeMap.getOrDefault(guild.getId(), 0D));
GuildSSRankDetailVo guildSSRankDetailVo = ssMarkMap.get(guild.getId());
if (guildSSRankDetailVo != null) {
vo.setMarkScore(guildSSRankDetailVo.getMarkScore());
vo.setSsLevel(guildSSRankDetailVo.getSsLevel());
}
Integer memberNum = memberNumMap.get(guild.getId());
memberNum = memberNum == null ? 0 : memberNum;
vo.setMemberNum(memberNum);
voList.add(vo);
}

View File

@@ -138,19 +138,20 @@ public class ExtraDiamondDayService {
boolean updateBatchById = guildExtraDiamondDayService.updateBatchById(guildExtraDiamondDays);
if (!updateBatchById) {
}
HashSet<Long> uids = new HashSet<>();
Map<Long, BigDecimal> sendGoldMap = new HashMap<>();
for (GuildExtraDiamondDay extraDiamondDay : guildExtraDiamondDays) {
BigDecimal sendGold = BigDecimal.ZERO;
if (extraDiamondDay.getAnchorExtraNum().compareTo(BigDecimal.ZERO) > 0) {
userPurseService.addGold(extraDiamondDay.getUid(), extraDiamondDay.getAnchorExtraNum().doubleValue(), ANCHOR_EXTRA_GOLD);
uids.add(extraDiamondDay.getUid());
sendGold = sendGold.add(extraDiamondDay.getAnchorExtraNum());
}
if (extraDiamondDay.getAnchorExtraLuckyNum().compareTo(BigDecimal.ZERO) > 0) {
userPurseService.addGold(extraDiamondDay.getUid(), extraDiamondDay.getAnchorExtraLuckyNum().doubleValue(), ANCHOR_EXTRA_LUCKY_GOLD);
uids.add(extraDiamondDay.getUid());
sendGold = sendGold.add(extraDiamondDay.getAnchorExtraLuckyNum());
}
sendGoldMap.put(extraDiamondDay.getUid(), sendGold);
}
String message = I18NMessageSourceUtil.getMessage(I18nAlertEnum.EXTRA_GUILD_MEMBER_MSG, partitionId);
this.sendMessage(message, uids);
this.sendMessage(I18nAlertEnum.EXTRA_GUILD_MEMBER_MSG, sendGoldMap, partitionId);
}
} catch (Exception e) {
log.error("sendGuildMemberExtraDiamondTask anchor error" , e);
@@ -204,15 +205,14 @@ public class ExtraDiamondDayService {
ownerExtra = ownerExtra == null ? add : ownerExtra.add(add);
ownerExtraMap.put(ownerUid, ownerExtra);
}
HashSet<Long> uids = new HashSet<>();
Map<Long, BigDecimal> sendGoldMap = new HashMap<>();
for (Map.Entry<Long, BigDecimal> decimalEntry : ownerExtraMap.entrySet()) {
if (decimalEntry.getValue().compareTo(BigDecimal.ZERO) > 0) {
userPurseService.addGold(decimalEntry.getKey(), decimalEntry.getValue().doubleValue(), OWNER_EXTRA_GOLD);
uids.add(decimalEntry.getKey());
sendGoldMap.put(decimalEntry.getKey(), decimalEntry.getValue());
}
}
String message = I18NMessageSourceUtil.getMessage(I18nAlertEnum.EXTRA_GUILD_MSG, partitionId);
this.sendMessage(message, uids);
this.sendMessage(I18nAlertEnum.EXTRA_GUILD_MSG, sendGoldMap, partitionId);
}
} catch (Exception e) {
log.error("sendGuildExtraDiamondTask anchor error" , e);
@@ -258,18 +258,17 @@ public class ExtraDiamondDayService {
},
BigDecimal::add
));
HashSet<Long> uids = new HashSet<>();
Map<Long, BigDecimal> sendGoldMap = new HashMap<>();
extraDiamondMap.entrySet().stream()
.filter(entry -> entry.getValue().compareTo(BigDecimal.ZERO) > 0)
.forEach(entry -> {
Long roomUid = entry.getKey();
BigDecimal extraDiamond = entry.getValue();
userPurseService.addGold(roomUid, extraDiamond.doubleValue(), ROOM_EXTRA_GOLD);
uids.add(roomUid);
sendGoldMap.put(roomUid, extraDiamond);
});
String message = I18NMessageSourceUtil.getMessage(I18nAlertEnum.EXTRA_GUILD_MEMBER_MSG, partitionId);
this.sendMessage(message, uids);
this.sendMessage(I18nAlertEnum.EXTRA_ROOM_MSG, sendGoldMap, partitionId);
} catch (Exception e) {
log.error("sendLastDayDiamondtask room error" , e);
} finally {
@@ -280,9 +279,13 @@ public class ExtraDiamondDayService {
}
@Async
public void sendMessage(String msg, Set<Long> uids) {
uids.forEach(uid -> {
baseSendService.sendSystemMsg(uid.toString(), msg);
public void sendMessage(I18nAlertEnum msg, Map<Long, BigDecimal> sendGoldMap, Integer partitionId) {
sendGoldMap.entrySet().forEach(entry -> {
if (entry.getValue().compareTo(BigDecimal.ZERO) <= 0) {
return;
}
String message = I18NMessageSourceUtil.getMessage(msg, new Object[]{entry.getValue()}, partitionId);
baseSendService.sendSystemMsg(entry.getKey().toString(), message);
});
}
}

View File

@@ -6,10 +6,12 @@ import com.accompany.business.dto.resource.ResourceContext;
import com.accompany.business.enums.resource.ResourceTypeEnum;
import com.accompany.business.enums.resource.RuleCodeEnum;
import com.accompany.business.model.UserLevelExperience;
import com.accompany.business.model.guild.GuildMember;
import com.accompany.business.model.resource.Resource;
import com.accompany.business.model.resource.ResourceRule;
import com.accompany.business.mybatismapper.resource.ResourceMapper;
import com.accompany.business.service.fillstrategy.strategy.FillFactory;
import com.accompany.business.service.guild.GuildMemberService;
import com.accompany.business.service.level.LevelService;
import com.accompany.business.service.resource.ResourceRuleService;
import com.accompany.business.service.resource.ResourceService;
@@ -64,6 +66,9 @@ public class ResourceServiceImpl extends ServiceImpl<ResourceMapper, Resource> i
@Autowired
private HighRechargeUserService highRechargeUserService;
@Autowired
private GuildMemberService guildMemberService;
@Override
public boolean isOpen(String code) {
return getResource(code) != null;
@@ -96,6 +101,7 @@ public class ResourceServiceImpl extends ServiceImpl<ResourceMapper, Resource> i
}
context.setNotChannels(channel);
Integer partitionId = null;
GuildMember guildMember = null;
if (uid != null) {
UserLevelExperience userExperience = levelService.getUserExper(uid);
if (userExperience != null && userExperience.getLevelExperience() != null) {
@@ -109,6 +115,7 @@ public class ResourceServiceImpl extends ServiceImpl<ResourceMapper, Resource> i
}
partitionId = users.getPartitionId();
}
guildMember = guildMemberService.getVaildGuildMemberByUid(uid);
boolean isHighRechargeUser = highRechargeUserService.isHighRechargeUser(uid);
context.setHighRechargeUser(isHighRechargeUser? "大R": "普通");
}
@@ -156,10 +163,13 @@ public class ResourceServiceImpl extends ServiceImpl<ResourceMapper, Resource> i
}
//动态校验规则
JSONObject jsonObject = JSONObject.parseObject(ruleValueJson);
boolean limitUserLevel = !(guildMember != null
&& jsonObject.containsKey(RuleCodeEnum.USER_LEVEL_LIMIT_ROLE.name())
&& "2".equals(jsonObject.getString(RuleCodeEnum.USER_LEVEL_LIMIT_ROLE.name())));
for (Map.Entry<String, Object> entry : jsonObject.entrySet()) {
String key = entry.getKey();
Object ruleValue = entry.getValue();
if (CollectionUtil.isEmpty(rules)) {
if (CollectionUtil.isEmpty(rules) || RuleCodeEnum.USER_LEVEL_LIMIT_ROLE.name().equals(key)) {
continue;
}
if (ruleValue == null || StrUtil.isEmpty(ruleValue.toString())) {
@@ -198,11 +208,13 @@ public class ResourceServiceImpl extends ServiceImpl<ResourceMapper, Resource> i
isSkip = Integer.parseInt(val1) > Integer.parseInt(val2);
}
} else if (OperateType.GE.name().equals(kind)) {
//版本号
if (targetValue.toString().contains(StrUtil.DOT) && !targetValue.toString().startsWith(StrUtil.DELIM_START) && !targetValue.toString().startsWith(StrUtil.DELIM_END)){
isSkip = AppVersionUtil.compareVersion(val1, val2) < 0;
} else {
isSkip = Integer.parseInt(val1) < Integer.parseInt(val2);
boolean needLimit = RuleCodeEnum.USER_LEVEL.name().equals(key) && limitUserLevel;
if (needLimit) {
if (targetValue.toString().contains(StrUtil.DOT) && !targetValue.toString().startsWith(StrUtil.DELIM_START) && !targetValue.toString().startsWith(StrUtil.DELIM_END)){
isSkip = AppVersionUtil.compareVersion(val1, val2) < 0;
} else {
isSkip = Integer.parseInt(val1) < Integer.parseInt(val2);
}
}
} else if (OperateType.LEFT_LIKE.name().equals(kind)) {
if (StrUtil.isNotEmpty(val1) && StrUtil.isNotEmpty(description) && val2.equals(YES_ZH)) {

View File

@@ -4,7 +4,6 @@ import cn.hutool.core.date.DateUtil;
import com.accompany.business.constant.RoomBoomConstant;
import com.accompany.business.dto.room.RoomBoomPrizeMsgDTO;
import com.accompany.business.message.GiftMessage;
import com.accompany.business.message.SuperLuckyGiftDiamondIncomeMessage;
import com.accompany.business.model.room.RoomBoomLevel;
import com.accompany.business.model.room.RoomBoomLevelAward;
import com.accompany.business.model.room.RoomBoomSign;
@@ -27,7 +26,6 @@ import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Lists;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.redisson.api.*;
@@ -44,7 +42,6 @@ import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.time.ZonedDateTime;
import java.util.*;
import java.util.function.BiFunction;
import java.util.function.Function;
import java.util.stream.Collectors;

View File

@@ -1,8 +1,10 @@
package com.accompany.business.service.room;
import com.accompany.business.model.room.RoomBoomSign;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.Date;
import java.util.List;
@@ -41,5 +43,7 @@ public interface RoomBoomSignService extends IService<RoomBoomSign> {
* @return 记录
*/
RoomBoomSign getOneByRecordIdAndLevel(Long recordId, Integer level);
IPage<RoomBoomSign> list(IPage<RoomBoomSign> page, Long roomUid, Long uid, Integer level, Date startTime, Date endTime, Integer partitionId);
}

View File

@@ -23,6 +23,7 @@ import com.accompany.core.model.Users;
import com.accompany.core.util.I18NMessageSourceUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.nacos.common.utils.CollectionUtils;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.redisson.api.RList;
@@ -382,6 +383,11 @@ public class RoomBoomSignServiceImpl extends ServiceImpl<RoomBoomSignMapper, Roo
return roomBoomSignMapper.getOneByRecordIdAndLevel(recordId, level);
}
@Override
public IPage<RoomBoomSign> list(IPage<RoomBoomSign> page, Long roomUid, Long uid, Integer level, Date startTime, Date endTime, Integer partitionId) {
return baseMapper.list(page, roomUid, uid, level, startTime, endTime, partitionId);
}
private void sendAward(RoomBoomLevelAward award, Long uid, Long roomUid) {
try {
RewardDto rewardDto = new RewardDto();

View File

@@ -26,7 +26,6 @@ import com.accompany.business.service.headwear.HeadwearService;
import com.accompany.business.service.level.LevelService;
import com.accompany.business.service.live.LiveAttestationService;
import com.accompany.business.service.nameplate.UserNameplateService;
import com.accompany.business.service.netease.YidunCheckUtil;
import com.accompany.business.service.purse.UserPurseService;
import com.accompany.business.service.room.QueryRoomService;
import com.accompany.business.service.room.RoomService;
@@ -77,7 +76,6 @@ import com.accompany.email.service.EmailService;
import com.accompany.payment.service.RechargeUserService;
import com.accompany.sms.service.SmsService;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
@@ -845,6 +843,24 @@ public class UsersService extends BaseService {
return simpleUserVo;
}
public Map<Long, SimpleUserVo> getSimpleUsersByUid(List<Long> uids) {
Map<Long, SimpleUserVo> resultMap = new HashMap<>();
Map<Long, Users> usersMap = getUsersMapByUids(uids);
if (usersMap == null || usersMap.isEmpty()) {
return null;
}
usersMap.forEach((uid, user) -> {
SimpleUserVo simpleUserVo = new SimpleUserVo();
simpleUserVo.setAvatar(user.getAvatar());
simpleUserVo.setErbanNo(user.getErbanNo());
simpleUserVo.setGender(user.getGender());
simpleUserVo.setNick(user.getNick());
simpleUserVo.setUid(user.getUid());
resultMap.put(uid, simpleUserVo);
});
return resultMap;
}
public BusiResult isBindPhone(Long uid) {
BusiResult busiResult = new BusiResult(BusiStatus.SUCCESS);
Users users = getUsersByUid(uid);

View File

@@ -16,6 +16,7 @@ import java.util.List;
public class CycleTimeUtil {
private static final DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern(DateTimeUtil.DEFAULT_DATE_PATTERN);
private static final DateTimeFormatter dateHourFormatter = DateTimeFormatter.ofPattern(DateTimeUtil.DEFAULT_DATE_HOUR_PATTERN);
public static String getCurCycleDateByZoneId(String zoneId) {
ZonedDateTime zdt = DateTimeUtil.getDateTimeByZoneId(zoneId);
@@ -148,4 +149,9 @@ public class CycleTimeUtil {
Date cycleBeginDate = getAgencyCycleBeginDate(now);
return DateUtil.formatDate(cycleBeginDate);
}
public static String getDayHourDate(Date time, String zoneId) {
ZonedDateTime zdt = DateTimeUtil.convertWithZoneId(time, zoneId);
return zdt.format(dateHourFormatter);
}
}

View File

@@ -160,4 +160,24 @@
</foreach>
group by gd.guild_id
</select>
<select id="listRank" resultType="com.accompany.business.vo.guild.SimpleGuildVo">
SELECT
g.id guildId,
g.`name` guildName,
g.owner_uid ownerUid,
g.member_num_limit memberNumLimit,
a.diamond_num weekIncome
FROM
guild g
LEFT JOIN (select guild_id, sum(diamond_num+lucky_diamond_num) diamond_num
from guild_extra_diamond_day
where partition_id = #{partitionId}
and stat_date &gt;= #{startDate}
group by guild_id) a on a.guild_id = g.id
where g.partition_id = #{partitionId}
and g.`enable` = 1
ORDER BY weekIncome desc
</select>
</mapper>

View File

@@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.accompany.business.mybatismapper.guild.GuildDiamondStatisticsHourMapper">
<update id="updateHourDiamondStatistics">
INSERT INTO `guild_diamond_statistics_hour` (`stat_date`, `stat_hour`, `guild_member_id`, `partition_id`, `uid`,
`guild_id`, `diamond_num`, `create_time`, `update_time`)
VALUES (#{statDate}, #{hourDate}, #{guildMemberId}, #{partitionId}, #{uid}, #{guildId}, #{diamond}, #{time},
#{time}) ON DUPLICATE KEY
UPDATE
diamond_num = diamond_num +
values (diamond_num), update_time =
values (update_time)
</update>
<select id="listGuildByStatDate" resultType="com.accompany.business.vo.guild.GuildDiamondStatisticsHourVo">
select gd.guild_id guildId,
ANY_VALUE(g.name) guildName,
sum(gd.diamond_num) diamondNum,
ANY_VALUE(u.erban_no) ownerErbanNo,
ANY_VALUE(ri.name) ownerRegionDesc,
ANY_VALUE(au.username) adminUsername,
ifnull(a.memberNum, 0) memberNum,
gd.partition_id partitionId
from guild_diamond_statistics_hour gd
inner join guild g on g.id = gd.guild_id
inner join users u on u.uid = g.owner_uid
left join region_info ri on ri.id = u.region_id
left join admin_user au on au.id = g.admin_id
left join (select guild_id, count(distinct uid) memberNum from guild_member where `enable` = 1 and role_type != 1 GROUP BY guild_id) a on a.guild_id = g.id
where gd.stat_hour &gt;= #{startDate}
and gd.stat_hour &lt;= #{endDate}
<if test="partitionId != null and partitionId != 0">
and gd.partition_id = #{partitionId}
</if>
<if test="regionId != null and regionId != 0">
and u.region_id = #{regionId}
</if>
<if test="guildId != null">
and gd.guild_id = #{guildId}
</if>
<if test="inviteUid != null">
and g.invite_uid = #{inviteUid}
</if>
group by gd.guild_id
ORDER BY diamondNum desc,memberNum desc, gd.guild_id desc
</select>
</mapper>

View File

@@ -33,4 +33,32 @@
select * from room_boom_sign where record_id = #{recordId} and level = #{level} order by id limit 1
</select>
<select id="list" resultType="com.accompany.business.model.room.RoomBoomSign">
select r.*
from room_boom_sign r
left join users u on u.uid = r.room_uid
<where>
<if test="startTime != null">
and r.create_time >= #{startTime}
</if>
<if test="endTime != null">
and r.create_time &lt;= #{endTime}
</if>
<if test="partitionId != null">
and u.partition_id = #{partitionId}
</if>
<if test="level != null">
and r.level = #{level}
</if>
<if test="roomUid != null">
and r.room_uid = #{roomUid}
</if>
<if test="uid != null">
and r.uid = #{uid}
</if>
and r.`status` = 2
</where>
order by r.id desc
</select>
</mapper>

View File

@@ -14,10 +14,7 @@ import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@@ -111,9 +108,9 @@ public class GuildController {
@ApiOperation("公会排行列表")
@Authorization
@GetMapping("/listRank")
public BusiResult<List<SimpleGuildVo>> listGuild(){
public BusiResult<List<SimpleGuildVo>> listGuild(@RequestParam(defaultValue = "1") Integer pageNo, @RequestParam(defaultValue = "20") Integer pageSize){
Long uid = UidContextHolder.get();
List<SimpleGuildVo> guildList = guildManagerService.listRank(uid);
List<SimpleGuildVo> guildList = guildManagerService.listRank(uid, pageNo, pageSize);
return BusiResult.success(guildList);
}

View File

@@ -33,6 +33,7 @@ public class DiamondGiveHistoryController extends BaseController {
private DiamondGiveHistoryService diamondGiveHistoryService;
@H5Authorization
@Authorization
@ApiOperation(value = "用户转赠记录", httpMethod = "GET")
@GetMapping("/giveRecord")
@@ -49,6 +50,7 @@ public class DiamondGiveHistoryController extends BaseController {
* @param pageSize
* @return
*/
@H5Authorization
@Authorization
@ApiOperation(value = "用户转赠详情记录", httpMethod = "GET")
@GetMapping("/giveRecordVoByType")
@@ -58,6 +60,7 @@ public class DiamondGiveHistoryController extends BaseController {
}
@H5Authorization
@Authorization
@ApiOperation(value = "用户转赠钻石操作", httpMethod = "POST")
@PostMapping("/give")
@@ -67,6 +70,7 @@ public class DiamondGiveHistoryController extends BaseController {
return new BusiResult(BusiStatus.SUCCESS);
}
@H5Authorization
@Authorization
@ApiOperation(value = "用户转赠礼物操作", httpMethod = "POST")
@PostMapping("/giveGift")
@@ -89,6 +93,7 @@ public class DiamondGiveHistoryController extends BaseController {
return new BusiResult<>(diamondGiveHistoryService.searchUser(uid, erbanNo));
}
@H5Authorization
@Authorization
@ApiOperation(value = "用户转赠历史", httpMethod = "GET")
@ApiImplicitParams({

View File

@@ -3,13 +3,13 @@ package com.accompany.oauth2.service.account;
import com.accompany.common.redis.RedisKey;
import com.accompany.common.status.BusiStatus;
import com.accompany.core.base.SpringContextHolder;
import com.accompany.core.enumeration.PartitionEnum;
import com.accompany.core.exception.ServiceException;
import com.accompany.core.model.Users;
import com.accompany.core.mybatismapper.AccountLoginRecordMapperExpand;
import com.accompany.core.service.common.JedisService;
import com.accompany.core.service.user.UsersBaseService;
import com.accompany.core.util.JwtUtils;
import com.accompany.core.util.PartitionUtil;
import com.accompany.oauth2.support.h5.H5TokenGranter;
import com.accompany.oauth2.token.H5AccessToken;
import lombok.extern.slf4j.Slf4j;
@@ -61,11 +61,18 @@ public class AccountH5LoginService {
if (null == u){
throw new ServiceException(BusiStatus.USERNOTEXISTS);
}
PartitionUtil.checkInPartition(4, u.getPartitionId());
if (u.getPartitionId() != PartitionEnum.CHINESE.getId()) {
Integer userCount = usersBaseService.rechargeUserCount(uid);
if (userCount <= 0) {
throw new ServiceException(BusiStatus.H5_RECHARGE_USER_NOT_OPEN);
}
}
String jwtToken = createJwtToken(uid);
saveH5LoginJwtToken(uid, jwtToken);
H5AccessToken accessToken = new H5AccessToken();
accessToken.setPartitionId(u.getPartitionId());
accessToken.setAccess_token(jwtToken);
accessToken.setUid(uid);
accessToken.setExpires_in(H5_JWT_TOKEN_EX);

View File

@@ -19,6 +19,9 @@ public class H5AccessToken {
@ApiModelProperty("用户ID")
private Long uid;
@ApiModelProperty("分区id")
private Integer partitionId;
/**
* 令牌
*/

View File

@@ -61,7 +61,7 @@ public class MonthRankTask extends BaseTask {
public void monthRankTaskGMT8() {
Date date = new Date();
Date lastMonthDate = DateUtil.offsetMonth(date, -1);
List<PartitionEnum> partitionEnumList = List.of(PartitionEnum.ENGLISH, PartitionEnum.ENGLISH2);
List<PartitionEnum> partitionEnumList = List.of(PartitionEnum.ENGLISH, PartitionEnum.ENGLISH2, PartitionEnum.SOVIET);
for (PartitionEnum partitionEnum : partitionEnumList) {
try {
log.info("=-=monthRankTaskGMT8.krypton_rank=-=:date:{},lastMonthDate:{}", DateUtil.formatDateTime(date), lastMonthDate);