diff --git a/accompany-admin/accompany-admin-sdk/src/main/java/com/accompany/admin/vo/guild/GuildMemberAdminVo.java b/accompany-admin/accompany-admin-sdk/src/main/java/com/accompany/admin/vo/guild/GuildMemberAdminVo.java index a2885791f..86fab5195 100644 --- a/accompany-admin/accompany-admin-sdk/src/main/java/com/accompany/admin/vo/guild/GuildMemberAdminVo.java +++ b/accompany-admin/accompany-admin-sdk/src/main/java/com/accompany/admin/vo/guild/GuildMemberAdminVo.java @@ -47,6 +47,9 @@ public class GuildMemberAdminVo { @ExcelProperty("加入时间") @ApiModelProperty("加入时间") private Date createTime; + @ExcelProperty("操作/退出时间") + @ApiModelProperty("操作/退出时间") + private Date updateTime; @ExcelProperty("是否有效状态") @ApiModelProperty("是否有效状态") private Boolean enable; diff --git a/accompany-admin/accompany-admin-service/src/main/java/com/accompany/admin/service/guild/GuildManageAdminService.java b/accompany-admin/accompany-admin-service/src/main/java/com/accompany/admin/service/guild/GuildManageAdminService.java index dac20396c..58300d567 100644 --- a/accompany-admin/accompany-admin-service/src/main/java/com/accompany/admin/service/guild/GuildManageAdminService.java +++ b/accompany-admin/accompany-admin-service/src/main/java/com/accompany/admin/service/guild/GuildManageAdminService.java @@ -522,6 +522,7 @@ public class GuildManageAdminService { vo.setPartitionName(partitionNameMap.get(u.getPartitionId())); vo.setRoleType(guildMember.getRoleType()); vo.setCreateTime(guildMember.getCreateTime()); + vo.setUpdateTime(guildMember.getUpdateTime()); vo.setEnable(guildMember.getEnable()); if (guildMember.getAdminId() != null) { vo.setAdminName(adminUserMap.get(guildMember.getAdminId())); diff --git a/accompany-base/accompany-common/src/main/java/com/accompany/common/status/BusiStatus.java b/accompany-base/accompany-common/src/main/java/com/accompany/common/status/BusiStatus.java index f429f7b1d..e757064b1 100644 --- a/accompany-base/accompany-common/src/main/java/com/accompany/common/status/BusiStatus.java +++ b/accompany-base/accompany-common/src/main/java/com/accompany/common/status/BusiStatus.java @@ -989,6 +989,7 @@ public enum BusiStatus { RECHARGE_REGION_SALARY_LIMIT(500,"该代理暂不代理该区域业务"), ROOM_DAY_DIAMOND_REWARD_DATE_CHECK(500, "TODAY NOT ALLOW RECEIVE"), GUILD_USD_OPT_LIMIT(500, "该交易类型已达到本周交易次数上限"), + GUILD_MEMBER_REMOVE_LIMIT(500, "仅在每个月1号、2号、3号才可以移除主播"), ; private final int value; diff --git a/accompany-base/accompany-core/src/main/java/com/accompany/common/constant/Constant.java b/accompany-base/accompany-core/src/main/java/com/accompany/common/constant/Constant.java index 6e3d79c17..1d4ab459f 100644 --- a/accompany-base/accompany-core/src/main/java/com/accompany/common/constant/Constant.java +++ b/accompany-base/accompany-core/src/main/java/com/accompany/common/constant/Constant.java @@ -1397,7 +1397,9 @@ public class Constant { public static final String CP_MIC_SVGA_URL = "cp_mic_svga_url"; - public static String charge_user_x_gold = "charge_user_x_gold"; + public static final String CHARGE_USER_X_GOLD = "charge_user_x_gold"; + + public static final String GUILD_OPERATE_CONFIG = "guild_operate_config"; } public static class WithDrawStatus { diff --git a/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/dto/guild/GuildRemoveConfigDto.java b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/dto/guild/GuildRemoveConfigDto.java new file mode 100644 index 000000000..5797b4ff4 --- /dev/null +++ b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/dto/guild/GuildRemoveConfigDto.java @@ -0,0 +1,17 @@ +package com.accompany.business.dto.guild; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +public class GuildRemoveConfigDto { + private List acceptDays; + + private Map partitionMap; + + public GuildRemoveConfigDto getByPartitionId(int partitionId) { + return partitionMap.getOrDefault(partitionId, this); + } +} diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/game/ChargeUserXService.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/game/ChargeUserXService.java index 43e51a1f4..7d9a48e44 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/game/ChargeUserXService.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/game/ChargeUserXService.java @@ -80,7 +80,7 @@ public class ChargeUserXService { return; } - String value = sysConfService.getDefaultSysConfValueById(Constant.SysConfId.charge_user_x_gold, "200000"); + String value = sysConfService.getDefaultSysConfValueById(Constant.SysConfId.CHARGE_USER_X_GOLD, "200000"); Map gameDayStatDataMap = gameDayStatDataService.statByChannelUid4XRecord(GameConstant.GameChannel.LEADERCC.name(), Long.valueOf(value)); List zeroChargeUidList = new ArrayList<>(); diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guild/GuildRelationService.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guild/GuildRelationService.java index b5c225ddb..0fd602751 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guild/GuildRelationService.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guild/GuildRelationService.java @@ -1,6 +1,7 @@ package com.accompany.business.service.guild; import com.accompany.business.constant.guild.GuildConstant; +import com.accompany.business.dto.guild.GuildRemoveConfigDto; import com.accompany.business.event.GuildMemberStatusChangeEvent; import com.accompany.business.model.give.GiveUser; import com.accompany.business.model.guild.Guild; @@ -19,8 +20,10 @@ 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.service.SysConfService; import com.accompany.core.util.PartitionUtil; import com.accompany.payment.service.RechargeUserService; +import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; @@ -32,7 +35,9 @@ import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Isolation; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.StringUtils; +import java.time.ZonedDateTime; import java.util.Date; import java.util.List; import java.util.concurrent.TimeUnit; @@ -63,6 +68,8 @@ public class GuildRelationService { private GiveUserService giveUserService; @Autowired private ApplicationContext applicationContext; + @Autowired + private SysConfService sysConfService; public GuildSkipVo getGuildSkipVo(Long uid) { GuildSkipVo vo = new GuildSkipVo(); @@ -526,6 +533,17 @@ public class GuildRelationService { } else if (myGuildMember.getRoleType().compareTo(guildMember.getRoleType()) >= 0){ throw new ServiceException(BusiStatus.FAMILY_PERMISSION_DENIED); } + Date now = new Date(); + + Integer partitionId = guildMember.getPartitionId(); + if (PartitionEnum.TURKEY.getId() == partitionId) { + ZonedDateTime nowZonedDateTime = DateTimeUtil.convertWithZoneId(now, PartitionEnum.getByPartitionId(guildMember.getPartitionId()).getZoneId()); + int dayOfMonth = nowZonedDateTime.getDayOfMonth(); + GuildRemoveConfigDto config = this.getConfig(partitionId); + if (config != null && CollectionUtils.isNotEmpty(config.getAcceptDays()) &&!config.getAcceptDays().contains(dayOfMonth)) { + throw new ServiceException(BusiStatus.GUILD_MEMBER_REMOVE_LIMIT); + } + } Guild guild = guildService.getVaildGuildById(myGuildMember.getGuildId()); if (null == guild){ @@ -542,8 +560,6 @@ public class GuildRelationService { throw new ServiceException(BusiStatus.USERNOTEXISTS); } - Date now = new Date(); - guildMember.setEnable(Boolean.FALSE); guildMember.setUpdateTime(now); guildMember.setAdminId(null); @@ -715,4 +731,14 @@ public class GuildRelationService { } } + + public GuildRemoveConfigDto getConfig(Integer partitionId) { + String configStr = sysConfService.getSysConfValueById(Constant.SysConfId.GUILD_OPERATE_CONFIG); + if (!StringUtils.hasText(configStr)){ + throw new ServiceException(BusiStatus.SERVERERROR); + } + GuildRemoveConfigDto removeConfigDto = JSONObject.parseObject(configStr, GuildRemoveConfigDto.class); + return removeConfigDto.getByPartitionId(partitionId); + } + }