房间日奖励-agent预生成
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
package com.accompany.business.model.room;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
@TableName("room_day_send_rank_reward")
|
||||
public class RoomDaySendRankReward {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 等级名称
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 房间流水金额下限
|
||||
*/
|
||||
private BigDecimal serialValue;
|
||||
|
||||
/**
|
||||
* 房主奖励数量
|
||||
*/
|
||||
private Long roomOwnerReward;
|
||||
|
||||
/**
|
||||
* 前10奖励总数量
|
||||
*/
|
||||
private Long topTenTotalReward;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updateTime;
|
||||
}
|
@@ -0,0 +1,61 @@
|
||||
package com.accompany.business.model.room;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
@TableName("room_day_send_rank_room_record")
|
||||
public class RoomDaySendRankRoomRecord {
|
||||
|
||||
/**
|
||||
* 统计日期
|
||||
*/
|
||||
private Date statDate;
|
||||
|
||||
/**
|
||||
* 房间ID
|
||||
*/
|
||||
private Long roomUid;
|
||||
|
||||
/**
|
||||
* 分区ID
|
||||
*/
|
||||
private Integer partitionId;
|
||||
|
||||
/**
|
||||
* 房间流水
|
||||
*/
|
||||
private BigDecimal serialValue;
|
||||
|
||||
/**
|
||||
* 奖励档位ID
|
||||
*/
|
||||
private Long rewardId;
|
||||
|
||||
/**
|
||||
* 房主奖励
|
||||
*/
|
||||
private BigDecimal ownerReward;
|
||||
|
||||
/**
|
||||
* 房主已领取奖励
|
||||
*/
|
||||
private BigDecimal ownerReceiveReward;
|
||||
|
||||
/**
|
||||
* 前十名奖励总数
|
||||
*/
|
||||
private BigDecimal topTenTotalReward;
|
||||
|
||||
/**
|
||||
* 领取时间
|
||||
*/
|
||||
private Date receiveTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updateTime;
|
||||
}
|
@@ -0,0 +1,76 @@
|
||||
package com.accompany.business.model.room;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
@TableName("room_day_send_rank_user_record")
|
||||
public class RoomDaySendRankUserRecord {
|
||||
|
||||
/**
|
||||
* 统计日期
|
||||
*/
|
||||
private Date statDate;
|
||||
|
||||
/**
|
||||
* 房间ID
|
||||
*/
|
||||
private Long roomUid;
|
||||
|
||||
/**
|
||||
* 分区ID
|
||||
*/
|
||||
private Integer partitionId;
|
||||
|
||||
/**
|
||||
* 用户ID
|
||||
*/
|
||||
private Long uid;
|
||||
|
||||
/**
|
||||
* 房间总流水
|
||||
*/
|
||||
private BigDecimal serialValue;
|
||||
|
||||
/**
|
||||
* 奖励档位ID
|
||||
*/
|
||||
private Long rewardId;
|
||||
|
||||
/**
|
||||
* 用户排名
|
||||
*/
|
||||
private Integer rank;
|
||||
|
||||
/**
|
||||
* 用户贡献值
|
||||
*/
|
||||
private BigDecimal userSerialValue;
|
||||
|
||||
/**
|
||||
* 用户奖励比例
|
||||
*/
|
||||
private BigDecimal userRewardRatio;
|
||||
|
||||
/**
|
||||
* 用户奖励金币
|
||||
*/
|
||||
private BigDecimal userReward;
|
||||
|
||||
/**
|
||||
* 用户已领取奖励
|
||||
*/
|
||||
private BigDecimal userReceiveReward;
|
||||
|
||||
/**
|
||||
* 领取时间
|
||||
*/
|
||||
private Date receiveTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updateTime;
|
||||
}
|
@@ -0,0 +1,49 @@
|
||||
package com.accompany.business.vo.room;
|
||||
|
||||
import com.accompany.business.common.vo.ActivityRankItemVo;
|
||||
import com.accompany.business.common.vo.ActivityUserVo;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@ApiModel("房间日流水奖励首页信息")
|
||||
public class RoomDaySendRankHomeVo {
|
||||
|
||||
@ApiModelProperty("房间信息")
|
||||
private ActivityUserVo roomInfo;
|
||||
|
||||
@ApiModelProperty("奖励信息")
|
||||
private RewardInfoVo rewardInfo;
|
||||
|
||||
@ApiModelProperty("排行榜列表")
|
||||
private List<ActivityRankItemVo> rankList;
|
||||
|
||||
@ApiModelProperty("我的排名信息")
|
||||
private ActivityRankItemVo myRank;
|
||||
|
||||
@Data
|
||||
@ApiModel("奖励信息")
|
||||
public static class RewardInfoVo {
|
||||
|
||||
@ApiModelProperty("当前流水值")
|
||||
private BigDecimal serialValue;
|
||||
|
||||
@ApiModelProperty("当前奖励等级")
|
||||
private String curLevel;
|
||||
|
||||
@ApiModelProperty("下一级奖励信息")
|
||||
private String nextLevel;
|
||||
|
||||
@ApiModelProperty("下一级奖励下限")
|
||||
private Long nextLevelLimit;
|
||||
|
||||
@ApiModelProperty("前10用户瓜分奖励")
|
||||
private BigDecimal topTenReward;
|
||||
|
||||
@ApiModelProperty("房主奖励")
|
||||
private BigDecimal ownerReward;
|
||||
}
|
||||
}
|
@@ -0,0 +1,8 @@
|
||||
package com.accompany.business.mybatismapper.room;
|
||||
|
||||
import com.accompany.business.model.room.RoomDaySendRankReward;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
public interface RoomDaySendRankRewardMapper extends BaseMapper<RoomDaySendRankReward> {
|
||||
// 根据业务需要添加自定义方法
|
||||
}
|
@@ -0,0 +1,8 @@
|
||||
package com.accompany.business.mybatismapper.room;
|
||||
|
||||
import com.accompany.business.model.room.RoomDaySendRankRoomRecord;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
public interface RoomDaySendRankRoomRecordMapper extends BaseMapper<RoomDaySendRankRoomRecord> {
|
||||
// 根据业务需要添加自定义方法
|
||||
}
|
@@ -0,0 +1,8 @@
|
||||
package com.accompany.business.mybatismapper.room;
|
||||
|
||||
import com.accompany.business.model.room.RoomDaySendRankUserRecord;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
public interface RoomDaySendRankUserRecordMapper extends BaseMapper<RoomDaySendRankUserRecord> {
|
||||
// 根据业务需要添加自定义方法
|
||||
}
|
@@ -0,0 +1,75 @@
|
||||
package com.accompany.business.service.room;
|
||||
|
||||
import com.accompany.business.service.user.UsersService;
|
||||
import com.accompany.business.vo.room.RoomDaySendRankHomeVo;
|
||||
import com.accompany.common.status.BusiStatus;
|
||||
import com.accompany.common.utils.DateTimeUtil;
|
||||
import com.accompany.core.enumeration.PartitionEnum;
|
||||
import com.accompany.core.exception.ServiceException;
|
||||
import com.accompany.core.model.Room;
|
||||
import com.accompany.core.model.Users;
|
||||
import com.accompany.core.util.PartitionUtil;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.time.ZonedDateTime;
|
||||
import java.util.Date;
|
||||
|
||||
@Component
|
||||
public class RoomDaySendRankRewardManager {
|
||||
|
||||
@Autowired
|
||||
private RoomService roomService;
|
||||
@Autowired
|
||||
private RoomDaySendRankRewardService roomDaySendRankRewardService;
|
||||
@Autowired
|
||||
private RoomDaySendRankRoomRecordService roomDaySendRankRoomRecordService;
|
||||
@Autowired
|
||||
private RoomDaySendRankUserRecordService roomDaySendRankUserRecordService;
|
||||
@Autowired
|
||||
private UsersService usersService;
|
||||
|
||||
/**
|
||||
* 获取房间日流水奖励首页信息
|
||||
*
|
||||
* @param uid
|
||||
* @param roomUid 房间ID
|
||||
* @param isToday 是否今天
|
||||
* @return 首页信息VO
|
||||
*/
|
||||
public RoomDaySendRankHomeVo getHomeInfo(Long uid, Long roomUid, Boolean isToday) {
|
||||
// 实现获取首页信息逻辑
|
||||
// 1. 获取房间信息(使用ActivityUserVo)
|
||||
|
||||
Users u = usersService.getNotNullUsersByUid(uid);
|
||||
|
||||
PartitionEnum partitionEnum = PartitionEnum.getByPartitionId(u.getPartitionId());
|
||||
if (!PartitionEnum.ARAB.equals(partitionEnum)){
|
||||
throw new ServiceException(BusiStatus.PARTITION_ERROR);
|
||||
}
|
||||
|
||||
Room room = roomService.getRoomByUid(roomUid);
|
||||
if (null == room){
|
||||
throw new ServiceException(BusiStatus.PARAMERROR);
|
||||
} else if (!PartitionUtil.equalsPartition(u.getPartitionId(), room.getPartitionId())){
|
||||
throw new ServiceException(BusiStatus.PARTITION_ERROR);
|
||||
}
|
||||
|
||||
Date todayTime = new Date();
|
||||
Date statTime = Boolean.TRUE.equals(isToday)? todayTime: DateTimeUtil.addDays(todayTime, -1);
|
||||
|
||||
// 2. 计算奖励信息
|
||||
// 3. 获取排行榜列表前3名(使用ActivityRankItemVo)
|
||||
// 4. 获取我的排名信息(使用ActivityRankItemVo)
|
||||
// 5. 组装返回结果
|
||||
return new RoomDaySendRankHomeVo();
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算每日奖励(供定时任务调用)
|
||||
*/
|
||||
public void calculateDailyRewards() {
|
||||
// 具体业务逻辑由您手动实现
|
||||
// 这里只提供接口供定时任务调用
|
||||
}
|
||||
}
|
@@ -0,0 +1,9 @@
|
||||
package com.accompany.business.service.room;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class RoomDaySendRankRewardService {
|
||||
|
||||
// 根据业务需要添加自定义方法
|
||||
}
|
@@ -0,0 +1,9 @@
|
||||
package com.accompany.business.service.room;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class RoomDaySendRankRoomRecordService {
|
||||
|
||||
// 根据业务需要添加自定义方法
|
||||
}
|
@@ -0,0 +1,9 @@
|
||||
package com.accompany.business.service.room;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class RoomDaySendRankUserRecordService {
|
||||
|
||||
// 根据业务需要添加自定义方法
|
||||
}
|
@@ -0,0 +1,5 @@
|
||||
<?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.room.RoomDaySendRankRewardMapper">
|
||||
|
||||
</mapper>
|
@@ -0,0 +1,5 @@
|
||||
<?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.room.RoomDaySendRankRoomRecordMapper">
|
||||
|
||||
</mapper>
|
@@ -0,0 +1,5 @@
|
||||
<?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.room.RoomDaySendRankUserRecordMapper">
|
||||
|
||||
</mapper>
|
@@ -0,0 +1,36 @@
|
||||
package com.accompany.business.controller.room;
|
||||
|
||||
import com.accompany.business.service.room.RoomDaySendRankRewardManager;
|
||||
import com.accompany.business.vo.room.RoomDaySendRankHomeVo;
|
||||
import com.accompany.common.annotation.Authorization;
|
||||
import com.accompany.common.result.BusiResult;
|
||||
import com.accompany.core.base.UidContextHolder;
|
||||
import io.swagger.annotations.*;
|
||||
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;
|
||||
|
||||
@Api(tags = "房间日流水奖励")
|
||||
@RestController
|
||||
@RequestMapping("/roomSendRank/dayReward")
|
||||
public class RoomDaySendRankRewardController {
|
||||
|
||||
@Autowired
|
||||
private RoomDaySendRankRewardManager roomDaySendRankRewardManager;
|
||||
|
||||
@Authorization
|
||||
@ApiOperation("获取房间日流水奖励首页信息")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "roomUid", value = "房间UID", required = true),
|
||||
@ApiImplicitParam(name = "isToday", value = "是否今天", required = true, dataType = "boolean", defaultValue = "true")
|
||||
})
|
||||
@GetMapping("/home")
|
||||
public BusiResult<RoomDaySendRankHomeVo> getHomeInfo(Long roomUid, Boolean isToday) {
|
||||
Long uid = UidContextHolder.get();
|
||||
// 调用Manager处理业务逻辑
|
||||
RoomDaySendRankHomeVo result = roomDaySendRankRewardManager.getHomeInfo(uid, roomUid, isToday);
|
||||
return BusiResult.success(result);
|
||||
}
|
||||
}
|
@@ -0,0 +1,24 @@
|
||||
package com.accompany.scheduler.task.room;
|
||||
|
||||
import com.accompany.business.service.room.RoomDaySendRankRewardManager;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class RoomDaySendRankRewardTask {
|
||||
|
||||
@Autowired
|
||||
private RoomDaySendRankRewardManager roomDaySendRankRewardManager;
|
||||
|
||||
/**
|
||||
* 每天利雅得时间零点执行奖励计算任务
|
||||
* 利雅得时间比UTC时间快3小时
|
||||
* Cron表达式: 0 0 0 * * ? (UTC时间21:00,即利雅得时间00:00)
|
||||
*/
|
||||
@Scheduled(cron = "0 0 21 * * ?", zone = "Asia/Riyadh")
|
||||
public void calculateDailyRewards() {
|
||||
// 调用Manager处理每日奖励计算
|
||||
roomDaySendRankRewardManager.calculateDailyRewards();
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user