日常任务-fixed
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
package com.accompany.business.service.guild;
|
||||
|
||||
import com.accompany.business.model.guild.GuildMember;
|
||||
import com.accompany.business.model.guild.GuildMemberWeekLevelReward;
|
||||
import com.accompany.business.vo.guild.GuildMemberWeekLevelRewardVo;
|
||||
import com.accompany.common.status.BusiStatus;
|
||||
import com.accompany.core.enumeration.PartitionEnum;
|
||||
@@ -47,16 +46,6 @@ public class GuildMemberWeekLevelRewardSelectService {
|
||||
}
|
||||
}
|
||||
|
||||
public void sendReward(Long uid, GuildMemberWeekLevelReward levelReward){
|
||||
GuildMember guildMember = guildMemberService.getVaildGuildMemberByUid(uid);
|
||||
Integer partitionId = guildMember.getPartitionId();
|
||||
if (PartitionEnum.ENGLISH2.getId() == partitionId) {
|
||||
guildMemberWeekLevelRewardV2Service.sendReward(uid, levelReward, true);
|
||||
} else {
|
||||
guildMemberWeekLevelRewardService.sendReward(uid, levelReward);
|
||||
}
|
||||
}
|
||||
|
||||
public void addProcess(Long uid, Integer partitionId, String monday, Number totalNum) {
|
||||
if (PartitionEnum.ENGLISH2.getId() == partitionId) {
|
||||
guildMemberWeekLevelRewardV2Service.addProcess(uid, partitionId, monday, totalNum);
|
||||
|
@@ -25,6 +25,7 @@ import com.accompany.core.exception.ServiceException;
|
||||
import com.accompany.core.service.SysConfService;
|
||||
import com.accompany.core.util.I18NMessageSourceUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.redisson.api.RMap;
|
||||
@@ -295,13 +296,12 @@ public class GuildMemberWeekLevelRewardV2Service extends ServiceImpl<GuildMember
|
||||
}
|
||||
}
|
||||
|
||||
this.sendReward(uid, levelReward, isBonus);
|
||||
|
||||
boolean isInsert = false;
|
||||
GuildMemberWeekLevelRewardRecord record = recordMapper.selectOne(Wrappers.<GuildMemberWeekLevelRewardRecord>lambdaQuery()
|
||||
LambdaQueryWrapper<GuildMemberWeekLevelRewardRecord> wrapper = Wrappers.<GuildMemberWeekLevelRewardRecord>lambdaQuery()
|
||||
.eq(GuildMemberWeekLevelRewardRecord::getGuildMemberId, guildMemberId)
|
||||
.eq(GuildMemberWeekLevelRewardRecord::getMonday, monday)
|
||||
.eq(GuildMemberWeekLevelRewardRecord::getLevel, levelReward.getLevel()));
|
||||
.eq(GuildMemberWeekLevelRewardRecord::getLevel, levelReward.getLevel());
|
||||
GuildMemberWeekLevelRewardRecord record = recordMapper.selectOne(wrapper);
|
||||
if (null == record) {
|
||||
record = new GuildMemberWeekLevelRewardRecord();
|
||||
record.setGuildMemberId(guildMemberId);
|
||||
@@ -315,29 +315,40 @@ public class GuildMemberWeekLevelRewardV2Service extends ServiceImpl<GuildMember
|
||||
isInsert = true;
|
||||
}
|
||||
|
||||
BigDecimal rewardNum;
|
||||
if (isBonus) {
|
||||
record.setMicValidDay(levelReward.getMicValidDay());
|
||||
record.setBonusNum(levelReward.getBonusNum());
|
||||
rewardNum = levelReward.getBonusNum();
|
||||
wrapper.le(GuildMemberWeekLevelRewardRecord::getBonusNum, 0);
|
||||
} else {
|
||||
record.setProcessNum(levelReward.getProcessNum());
|
||||
record.setRewardNum(levelReward.getRewardNum());
|
||||
rewardNum = levelReward.getRewardNum();
|
||||
wrapper.le(GuildMemberWeekLevelRewardRecord::getRewardNum, 0);
|
||||
}
|
||||
|
||||
if (isInsert) {
|
||||
record.setCreateTime(new Date());
|
||||
recordMapper.insert(record);
|
||||
} else {
|
||||
recordMapper.update(record, Wrappers.<GuildMemberWeekLevelRewardRecord>lambdaUpdate()
|
||||
.eq(GuildMemberWeekLevelRewardRecord::getGuildMemberId, guildMemberId)
|
||||
.eq(GuildMemberWeekLevelRewardRecord::getMonday, monday)
|
||||
.eq(GuildMemberWeekLevelRewardRecord::getLevel, levelReward.getLevel()));
|
||||
}
|
||||
if (levelReward.getLevel() == 0) {
|
||||
processMap.put(levelRField, guildMemberId);
|
||||
int update = recordMapper.update(record, wrapper);
|
||||
if (update <= 0) {
|
||||
throw new ServiceException(BusiStatus.CHARGE_RECEICVE_REPEAT);
|
||||
}
|
||||
}
|
||||
|
||||
this.sendReward(uid, level, rewardNum.doubleValue(), isBonus);
|
||||
|
||||
String tip = I18NMessageSourceUtil.getMessage(I18nAlertEnum.FAMILY_MEMBER_WEEK_LEVEL_REWARD,
|
||||
new Object[]{levelReward.getLevel(), levelReward.getRewardNum()}, partitionId);
|
||||
|
||||
if (levelReward.getLevel() == 0) {
|
||||
processMap.put(levelRField, guildMemberId);
|
||||
tip = I18NMessageSourceUtil.getMessage(I18nAlertEnum.FAMILY_MEMBER_WEEK_LEVEL_REWARD,
|
||||
new Object[]{levelReward.getLevelName(), levelReward.getRewardNum()}, partitionId);
|
||||
}
|
||||
|
||||
sendSysMsgService.sendPersonTextMsg(uid, tip);
|
||||
|
||||
processMap.expireAsync(30L, TimeUnit.DAYS);
|
||||
@@ -381,10 +392,9 @@ public class GuildMemberWeekLevelRewardV2Service extends ServiceImpl<GuildMember
|
||||
.map(map::get).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
public void sendReward(Long uid, GuildMemberWeekLevelReward levelReward, Boolean isBonus) {
|
||||
double rewardNum = !isBonus ? levelReward.getRewardNum().doubleValue() : levelReward.getBonusNum().doubleValue();
|
||||
String objId = !isBonus ? levelReward.getLevel().toString() : String.join("_" , levelReward.getLevel().toString(), "bonus");
|
||||
userPurseService.addDiamond(uid, levelReward.getRewardNum().doubleValue(), BillObjTypeEnum.GUILD_MEMBER_WEEK_LEVEL_REWARD,
|
||||
public void sendReward(Long uid, Integer level, Double rewardNum, Boolean isBonus) {
|
||||
String objId = !isBonus ? level.toString() : String.join("_" , level.toString(), "bonus");
|
||||
userPurseService.addDiamond(uid, rewardNum, BillObjTypeEnum.GUILD_MEMBER_WEEK_LEVEL_REWARD,
|
||||
(userPurse -> billRecordService.insertGeneralBillRecord(uid, objId, BillObjTypeEnum.GUILD_MEMBER_WEEK_LEVEL_REWARD, rewardNum, userPurse)));
|
||||
}
|
||||
|
||||
|
@@ -11,6 +11,7 @@ import com.accompany.business.model.guildtask.GuildTaskLevelInfo;
|
||||
import com.accompany.business.model.guildtask.GuildTaskLevelReward;
|
||||
import com.accompany.business.model.guildtask.GuildTaskLevelRewardRecord;
|
||||
import com.accompany.business.model.guildtask.GuildTaskReachRecord;
|
||||
import com.accompany.business.service.BaseSendService;
|
||||
import com.accompany.business.service.guild.GuildDiamondStatisticsDayService;
|
||||
import com.accompany.business.service.guild.GuildMemberService;
|
||||
import com.accompany.business.service.guild.GuildService;
|
||||
@@ -23,19 +24,23 @@ import com.accompany.common.result.BusiResult;
|
||||
import com.accompany.common.status.BusiStatus;
|
||||
import com.accompany.common.utils.DateTimeUtil;
|
||||
import com.accompany.core.enumeration.BillObjTypeEnum;
|
||||
import com.accompany.core.enumeration.I18nAlertEnum;
|
||||
import com.accompany.core.enumeration.PartitionEnum;
|
||||
import com.accompany.core.exception.ServiceException;
|
||||
import com.accompany.core.util.I18NMessageSourceUtil;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.redisson.api.RMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.DayOfWeek;
|
||||
import java.time.Duration;
|
||||
import java.time.ZonedDateTime;
|
||||
import java.time.temporal.TemporalAdjusters;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ThreadPoolExecutor;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.accompany.core.enumeration.BillObjTypeEnum.GUILD_TASK_DIAMOND;
|
||||
@@ -63,6 +68,10 @@ public class GuildTaskService {
|
||||
private UserGoldBeanService userGoldBeanService;
|
||||
@Autowired
|
||||
private RewardUtil rewardUtil;
|
||||
@Resource(name = "bizExecutor")
|
||||
private ThreadPoolExecutor bizExecutor;
|
||||
@Autowired
|
||||
private BaseSendService baseSendService;
|
||||
|
||||
public void updateTaskCreateProgress(Date now, PartitionEnum partitionEnum) {
|
||||
int partitionId = partitionEnum.getId();
|
||||
@@ -412,12 +421,14 @@ public class GuildTaskService {
|
||||
ZonedDateTime nowZonedDateTime = DateTimeUtil.convertWithZoneId(now, partitionEnum.getZoneId());
|
||||
boolean expired = true;
|
||||
DailyTaskTypeEnum dailyTaskTypeEnum = DailyTaskTypeEnum.valueOf(reachRecord.getTaskKey());
|
||||
Boolean needSendMessage = false;
|
||||
if (dailyTaskTypeEnum.equals(DailyTaskTypeEnum.GUILD_CREATE)) {
|
||||
ZonedDateTime guildCreateDate = DateTimeUtil.convertWithZoneId(guild.getCreateTime(), partitionEnum.getZoneId());
|
||||
ZonedDateTime createAfter14Day = guildCreateDate.plusDays(14).withHour(23).withMinute(59).withSecond(59);
|
||||
ZonedDateTime nowZoneDateTime = DateTimeUtil.convertWithZoneId(now, partitionEnum.getZoneId());
|
||||
ZonedDateTime nowZonedEndDateTime = nowZoneDateTime.withHour(23).withMinute(59).withSecond(59);
|
||||
expired = nowZonedEndDateTime.isAfter(createAfter14Day);
|
||||
needSendMessage = true;
|
||||
} else {
|
||||
String cycleDate = nowZonedDateTime.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY)).format(DateTimeUtil.dateFormatter);
|
||||
if (cycleDate.equals(reachRecord.getCycleDate())) {
|
||||
@@ -446,15 +457,13 @@ public class GuildTaskService {
|
||||
List<GuildTaskLevelRewardRecord> rewardRecords = new ArrayList<>();
|
||||
for (GuildTaskLevelReward configReward : levelRewards) {
|
||||
for (GuildMember guildMember : guildMembers) {
|
||||
GuildTaskLevelRewardRecord rewardRecord = guildTaskLevelRewardRecordService.calRecord(partitionId, guildMember.getUid(), guildId, guildMember.getId(),
|
||||
reachRecord.getGuildTaskId(), reachRecord.getLevel(), reachRecord.getCycleDate(),
|
||||
reachRecord.getStatDate(), configReward.getAwardType(), configReward.getAwardId(),
|
||||
configReward.getAwardNum());
|
||||
if (configReward.getAwardRole().equals(GuildConstant.RoleType.OWNER)) {//只给公会长发奖励
|
||||
if (guildMember.getRoleType().equals(GuildConstant.RoleType.OWNER)) {
|
||||
rewardRecords.add(rewardRecord);
|
||||
}
|
||||
} else {
|
||||
boolean isOwnerRewardOnly = configReward.getAwardRole().equals(GuildConstant.RoleType.OWNER);
|
||||
boolean isOwner = guildMember.getRoleType().equals(GuildConstant.RoleType.OWNER);
|
||||
if (!isOwnerRewardOnly || isOwner) {
|
||||
GuildTaskLevelRewardRecord rewardRecord = guildTaskLevelRewardRecordService.calRecord(partitionId, guildMember.getUid(), guildId, guildMember.getId(),
|
||||
reachRecord.getGuildTaskId(), reachRecord.getLevel(), reachRecord.getCycleDate(),
|
||||
reachRecord.getStatDate(), configReward.getAwardType(), configReward.getAwardId(),
|
||||
configReward.getAwardNum());
|
||||
rewardRecords.add(rewardRecord);
|
||||
}
|
||||
}
|
||||
@@ -481,6 +490,15 @@ public class GuildTaskService {
|
||||
configReward.getAwardId().intValue(), configReward.getAwardNum().intValue(),
|
||||
dailyTaskTypeEnum.name(), Boolean.FALSE, goldBillObjTypeEnum);
|
||||
}
|
||||
if (needSendMessage) {
|
||||
String tip = I18NMessageSourceUtil.getMessage(I18nAlertEnum.GUILD_CREATE_TASK_MSG, partitionId);
|
||||
for (GuildTaskLevelRewardRecord rewardRecord : rewardRecords) {
|
||||
bizExecutor.execute(()->{
|
||||
baseSendService.sendSystemMsg(rewardRecord.getUid().toString(), tip);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return BusiResult.success();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user