5 Commits

Author SHA1 Message Date
f723ba19cf 公会小时流水统计-bug 2025-10-20 16:49:19 +08:00
eb0956ff06 公会小时流水统计-bug 2025-10-20 16:00:50 +08:00
5cc879a868 公会小时流水统计 2025-10-20 14:35:38 +08:00
04b91a88a7 公会小时流水统计 2025-10-17 19:03:58 +08:00
254fb07b16 公会小时流水模型 2025-10-17 18:58:10 +08:00
28 changed files with 419 additions and 158 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

@@ -116,7 +116,7 @@ public class RoomBoomLevelAwardAdminController {
if (ObjectUtil.equal(RewardTypeEnum.DIAMOND.getType(), awardType)){
awardName = "coin";
awardPic = "https://cdn.moliparty.com/EPartycoins.png";
awardPic = "https://image.molistar.xyz/Molistarcoins.png";
}
if (ObjectUtil.equal(RewardTypeEnum.GIFT.getType(), awardType)){
Gift gift = giftService.getEachGiftById(awardId.intValue());

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/hourDiamondStatistics")
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

@@ -19,7 +19,7 @@ spring:
nacos:
config:
server-addr: 124.156.164.187:8848
namespace: aeb633ac-d6eb-4d3e-b40d-80b5458064b0
namespace: 5edc3246-3e69-4be5-a32a-273f0a09ddf6
file-extension: yml
shared-configs:
- data-id: application.yml
@@ -42,7 +42,7 @@ spring:
nacos:
config:
server-addr: 124.156.164.187:8848
namespace: aeb633ac-d6eb-4d3e-b40d-80b5458064b0
namespace: 5edc3246-3e69-4be5-a32a-273f0a09ddf6
file-extension: yml
shared-configs:
- data-id: application.yml
@@ -67,7 +67,7 @@ spring:
nacos:
config:
server-addr: 172.19.16.15:8848
namespace: aeb633ac-d6eb-4d3e-b40d-80b5458064b0
namespace: 0c9bf047-19ca-4969-bf5d-bbc1f86b501a
file-extension: yml
shared-configs:
- data-id: application.yml

View File

@@ -19,7 +19,7 @@ spring:
nacos:
config:
server-addr: 124.156.164.187:8848
namespace: aeb633ac-d6eb-4d3e-b40d-80b5458064b0
namespace: 5edc3246-3e69-4be5-a32a-273f0a09ddf6
file-extension: yml
shared-configs:
- data-id: application.yml
@@ -42,7 +42,7 @@ spring:
nacos:
config:
server-addr: 124.156.164.187:8848
namespace: aeb633ac-d6eb-4d3e-b40d-80b5458064b0
namespace: 5edc3246-3e69-4be5-a32a-273f0a09ddf6
file-extension: yml
shared-configs:
- data-id: application.yml
@@ -66,7 +66,7 @@ spring:
nacos:
config:
server-addr: 172.19.16.15:8848
namespace: aeb633ac-d6eb-4d3e-b40d-80b5458064b0
namespace: 0c9bf047-19ca-4969-bf5d-bbc1f86b501a
file-extension: yml
shared-configs:
- data-id: application.yml

View File

@@ -1,8 +1,6 @@
package com.accompany.common.constant;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;
@@ -18,12 +16,10 @@ public enum AppEnum {
Map.of(Pattern.compile("baishun.minigame.*"), "baishun.minigame.moliparty.com")),
molistar("molistar", "molistar google马甲包", "api.molistar.xyz", "image.molistar.xyz", "api.molistar.xyz", "molistar",
Map.of(Pattern.compile("baishun.minigame.*"), "baishun.minigame.molistar.xyz")),
moliparty("MoliParty", "moliparty google马甲包", "api.moliparty.com", "cdn.moliparty.com", "api.moliparty.com", "moliparty",
Map.of(Pattern.compile("baishun.minigame.*"), "baishun.minigame.moliparty.com")),
;
public static AppEnum getCurApp(){
return AppEnum.moliparty;
return AppEnum.molistar;
}
private String value;
@@ -78,15 +74,4 @@ public enum AppEnum {
return patternMap;
}
public static List<AppEnum> getOtherAppEnums(AppEnum currentApp) {
List<AppEnum> otherApps = new ArrayList<>();
// 遍历所有枚举,排除传入的 app 对应的枚举
for (AppEnum app : AppEnum.values()) {
if (!app.equals(currentApp)) {
otherApps.add(app);
}
}
return otherApps;
}
}

View File

@@ -1894,9 +1894,9 @@ public class Constant {
public static final Byte invalid = 0; //无效
}
public static String DEFAULT_DOMAIN = "https://cdn.moliparty.com";
public static String DEFAULT_DOMAIN = "https://img.molistar.xyz";
public static String DEFAULT_NICK = "Platform New User";
public static String DEFAULT_AVATAR = DEFAULT_DOMAIN + "/useavater_MP.png";
public static String DEFAULT_AVATAR = DEFAULT_DOMAIN + "/default_avatar_molistar.png";
public static String DEFAULT_CAR = DEFAULT_DOMAIN + "/default_car.png";
/**

View File

@@ -1473,6 +1473,10 @@ public enum RedisKey {
charge_user_x_detail,//嫌疑用户
;
public String getKey() {
return ("molistar_" + name()).toLowerCase();
}
public String getKey(String suffix) {
if (StringUtils.isEmpty(suffix)) {
return getKey();
@@ -1500,10 +1504,6 @@ public enum RedisKey {
}
}
public String getKey() {
return ("molistar_" + name()).toLowerCase();
}
public static String getCacheSign() {
return "molistar_";
}

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";
@@ -65,6 +66,7 @@ public class DateTimeUtil {
public static final DateTimeFormatter hoursFormatter = DateTimeFormatter.ofPattern(DateTimeUtil.DATE_HOUR_PATTERN);
public static final DateTimeFormatter monthWithoutZeroDateFormatter = DateTimeFormatter.ofPattern(DateTimeUtil.MONTH_WITHOUT_ZERO_DATE_PATTERN);
public static final DateTimeFormatter datetimeReverseFormatter = DateTimeFormatter.ofPattern(DateTimeUtil.ZONE_DATETIME_REVERSE_PATTERN);
public static final DateTimeFormatter dayHourFormatter = DateTimeFormatter.ofPattern(DateTimeUtil.DEFAULT_DATE_HOUR_PATTERN);
public static final DateTimeFormatter yyyyMMdd = DateTimeFormatter.ofPattern("yyyyMMdd");
@@ -1148,4 +1150,9 @@ public class DateTimeUtil {
return Date.from(eastEightZonedDateTime.toInstant());
}
public static String getDayHourDate(Date time, String zoneId) {
ZonedDateTime zdt = DateTimeUtil.convertWithZoneId(time, zoneId);
return zdt.format(dayHourFormatter);
}
}

View File

@@ -3,14 +3,14 @@ package com.accompany.business.constant.family;
public class FamilyConstant {
public static class SkipUrl {
public static final String MY_FAMILY_URL = "/moliparty/modules/guildAr/index.html";
public static final String FAMILY_LIST_URL = "/moliparty/modules/guildAr/guild.html";
public static final String MY_FAMILY_URL = "/molistar/modules/guildAr/index.html";
public static final String FAMILY_LIST_URL = "/molistar/modules/guildAr/guild.html";
}
public static class DefaultInfo {
public static final String DEFAULT_NAME_SUFFIX_I18N_ID = "Family.defaultNameSuffix";
public static final String DEFAULT_NAME_SUFFIX = "的家族";
public static final String DEFAULT_BACKGROUND_URL = "https://cdn.moliparty.com/family_default_background.png";
public static final String DEFAULT_BACKGROUND_URL = "https://image.molistar.xyz/family_default_background.png";
}
public static class RoleType {

View File

@@ -5,16 +5,16 @@ import java.math.BigDecimal;
public class GuildConstant {
public static class SkipUrl {
public static final String MY_FAMILY_URL = "/moliparty/modules/guild-ar/index.html";
public static final String FAMILY_LIST_URL = "/moliparty/modules/guild-ar/guild.html";
public static final String BILL_RECORD_URL = "/moliparty/modules/guild-ar/bill.html";
public static final String RECHARGE_USER_RECORD_URL = "/moliparty/modules/guild-ar/record.html";
public static final String MY_FAMILY_URL = "/molistar/modules/guild-ar/index.html";
public static final String FAMILY_LIST_URL = "/molistar/modules/guild-ar/guild.html";
public static final String BILL_RECORD_URL = "/molistar/modules/guild-ar/bill.html";
public static final String RECHARGE_USER_RECORD_URL = "/molistar/modules/guild-ar/record.html";
}
public static class DefaultInfo {
public static final String DEFAULT_NAME_SUFFIX_I18N_ID = "Family.defaultNameSuffix";
public static final String DEFAULT_NAME_SUFFIX = "的家族";
public static final String DEFAULT_BACKGROUND_URL = "https://cdn.moliparty.com/family_default_background.png";
public static final String DEFAULT_BACKGROUND_URL = "https://image.molistar.xyz/family_default_background.png";
}
public static class RoleType {

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

@@ -5,7 +5,7 @@ import com.accompany.common.redis.BaseRedisKey;
public interface UserEventConstant {
String H5_URL = "%s/moliparty/modules/eventDetails/index.html?eventId=%s&lang=en";
String H5_URL = "%s/molistar/modules/eventDetails/index.html?eventId=%s&lang=en";
interface EventStatus {
byte IN_REVIEW = 0; //待审核

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

@@ -3,10 +3,7 @@ package com.accompany.business.event.listener;
import com.accompany.business.event.SuperLuckyGiftDiamondIncomeMessageEvent;
import com.accompany.business.message.SuperLuckyGiftDiamondIncomeMessage;
import com.accompany.business.model.guild.GuildMember;
import com.accompany.business.service.guild.GuildDiamondStatisticsDayService;
import com.accompany.business.service.guild.GuildMemberDiamondStatisticsService;
import com.accompany.business.service.guild.GuildMemberService;
import com.accompany.business.service.guild.GuildRankService;
import com.accompany.business.service.guild.*;
import com.accompany.business.service.guildpolicy2.GuildDiamondStatisticsPolicy2Service;
import com.accompany.business.service.guildsoviet.ExtraDiamondDayService;
import com.accompany.business.service.user.UsersService;
@@ -45,6 +42,8 @@ public class SuperLuckyGiftDiamondIncomeListener implements ApplicationListener<
private GuildDiamondStatisticsPolicy2Service guildDiamondStatisticsPolicy2Service;
@Autowired
private ExtraDiamondDayService extraDiamondDayService;
@Autowired
private GuildDiamondStatisticsHourService guildDiamondStatisticsHourService;
@Async
@Override
@@ -84,6 +83,9 @@ public class SuperLuckyGiftDiamondIncomeListener implements ApplicationListener<
}
//todo 时区 zoneId
guildRankService.updateRank(guildMember.getGuildId(), guildMember.getUid(), totalDiamondNum, receiver.getPartitionId());
String dayHourDate = DateTimeUtil.getDayHourDate(time, partitionInfo.getZoneId());
guildDiamondStatisticsHourService.updateHourDiamondStatistics(statDate, dayHourDate, guildMember, totalDiamondNum);
}
if (Constant.ClanMode.SOVIET.equals(partitionInfo.getClanMode()) && roomUid != null && roomUid > 0L) {

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

@@ -60,7 +60,7 @@ public class AutoGenRobotService extends BaseService {
@Autowired
private SysConfService sysConfService;
private static final String DEFAULT_NICK = "Hello Nick";
private static final String DEFAULT_NICK = "Molistar";
public void batchGenRobAccount() throws Exception {
AutoGenRobotExample AutoGenRobotExample = new AutoGenRobotExample();

View File

@@ -324,7 +324,7 @@ public class ActivityH5LevelAwardServiceImpl extends ServiceImpl<ActivityH5Level
break;
case DIAMOND:
i18nValue = I18NMessageSourceUtil.getMessage(GOLD_NAME, partitionId);
vo.setPic("https://cdn.moliparty.com/moli_coin_rechage.png");
vo.setPic("https://image.molistar.xyz/moli_coin_rechage.png");
break;
case GOLD:
i18nValue = I18NMessageSourceUtil.getMessage(DIAMOND_NAME, partitionId);

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,9 +99,11 @@ public class GuildGiftRecordService extends ServiceImpl<GuildGiftRecordMapper, G
statDate = CycleTimeUtil.getCycleDay(createTime, partitionInfo.getZoneId());
extraDiamondDayService.updateGuildExtraDiamond(guildMember, cycleDate, statDate, totalDiamondNum, 0D, createTime);
}
guildRankService.updateRank(guildGiftRecord);
String dayHourDate = DateTimeUtil.getDayHourDate(createTime, partitionInfo.getZoneId());
guildDiamondStatisticsHourService.updateHourDiamondStatistics(statDate, dayHourDate, guildMember, totalDiamondNum);
Date zoneTime = DateTimeUtil.withZoneSameInstant(giftSendRecord.getCreateTime(), partitionInfo.getZoneId());
String monday = DateTimeUtil.convertDate(DateTimeUtil.getMondayDate(zoneTime), DateTimeUtil.DEFAULT_DATE_PATTERN);
guildMemberWeekLevelRewardSelectService.addProcess(guildMember.getId(), guildMember.getPartitionId(), monday, giftSendRecord.getTotalDiamondNum());

View File

@@ -547,12 +547,15 @@ public class GuildManagerService {
Collections.shuffle(guildList);
guildList = guildList.subList(0, 10);
}
List<Integer> guildIds = guildList.stream().map(Guild::getId).collect(Collectors.toList());
Map<Integer, GuildSSRankDetailVo> ssMarkMap = ssGuildService.getSSMarkByGuildId(partitionInfo.getId(), guildIds);
Map<Integer, Integer> memberNumMap = guildService.getGuildMemberNumMapByGuildIds(guildIds);
for (Guild guild: guildList){
SimpleGuildVo vo = new SimpleGuildVo();
vo.setGuildId(guild.getId());
vo.setGuildName(guild.getName());
vo.setMemberNumLimit(guild.getMemberNumLimit());
vo.setOwnerUid(guild.getOwnerUid());
vo.setWeekIncome(weekIncomeMap.getOrDefault(guild.getId(), 0D));
voList.add(vo);
}

View File

@@ -66,59 +66,54 @@ public class FaceJsonService extends BaseService {
*/
@SneakyThrows
public FaceJson getValidFaceJson(String appVersion) {
boolean afterVipFaceVer = AppVersionUtil.compareVersion(appVersion, VIP_FACE_VERSION) >= 0;
String json = jedisService.get(RedisKey.face_json.getKey());
FaceJson faceJson;
try {
boolean afterVipFaceVer = AppVersionUtil.compareVersion(appVersion, VIP_FACE_VERSION) >= 0;
String json = jedisService.get(RedisKey.face_json.getKey());
if (!BlankUtil.isBlank(json)) {
faceJson = gson.fromJson(json, FaceJson.class);
} else {
faceJson = getFaceJsonFromDB();
jedisService.set(RedisKey.face_json.getKey(), gson.toJson(faceJson));
}
/**
* 解密 -> 处理数据 -> 重新加密返回
* 不知道为啥非要全部信息加密返回给客户端,真是折磨
*/
String faceJsonString = DESUtils.DESAndBase64Decrypt(faceJson.getJson(), Constant.FaceJsonConfig.FACE_JSON_KEY);
FaceJsonDetail faceJsonDetail = JSONObject.parseObject(faceJsonString, FaceJsonDetail.class);
List<FaceInfo> faceList = faceJsonDetail.getFaces();
for (FaceInfo faceInfo : faceList) {
faceInfo.setName(StrUtil.EMPTY);
}
List<FaceInfo> normalFaceList = faceList.stream().filter(faceInfo ->
(faceInfo.getFaceKind() == null || Constant.FaceKind.NORMAL.equals(faceInfo.getFaceKind())))
.collect(Collectors.toList());
if (afterVipFaceVer) {
// 按照faceKind进行分组
List<FaceInfo> vipFaceList = faceList.stream().filter(faceInfo -> Constant.FaceKind.VIP_FACE.equals(faceInfo.getFaceKind()))
.collect(Collectors.toList());
List<FaceInfo> vipFaces = new ArrayList<>();
List<FaceInfo> finalVipFaces = vipFaces;
vipFaceList.forEach(faceInfo -> {
VipInfo vipInfo = vipAuthItemService.getVipInfoByTypeAndItemId(Constant.VipAuthType.FACE, faceInfo.getId().toString());
if (null != vipInfo) {
VipBaseInfoVO faceVipInfo = new VipBaseInfoVO();
faceVipInfo.setVipIcon(vipInfo.getVipIcon());
faceVipInfo.setVipLevel(vipInfo.getVipLevel());
faceVipInfo.setVipName(vipInfo.getVipName());
faceInfo.setFaceVipInfo(faceVipInfo);
finalVipFaces.add(faceInfo);
}
});
vipFaces = finalVipFaces.stream().sorted(Comparator.comparing(face -> face.getFaceVipInfo().getVipLevel())).collect(Collectors.toList());
faceJsonDetail.setVipFaces(vipFaces);
}
faceJsonDetail.setFaces(normalFaceList);
// 加密返回
String faceJsonDetailStr = JSONObject.toJSONString(faceJsonDetail);
String encryptStr = DESUtils.DESAndBase64Encrypt(faceJsonDetailStr, Constant.FaceJsonConfig.FACE_JSON_KEY);
faceJson.setJson(encryptStr);
return faceJson;
} catch (Exception e) {
logger.error("FaceJsonService.getValidFaceJson(java.lang.String)", e.getMessage(), e);
if (!BlankUtil.isBlank(json)) {
faceJson = gson.fromJson(json, FaceJson.class);
} else {
faceJson = getFaceJsonFromDB();
jedisService.set(RedisKey.face_json.getKey(), gson.toJson(faceJson));
}
return null;
/**
* 解密 -> 处理数据 -> 重新加密返回
* 不知道为啥非要全部信息加密返回给客户端,真是折磨
*/
String faceJsonString = DESUtils.DESAndBase64Decrypt(faceJson.getJson(), Constant.FaceJsonConfig.FACE_JSON_KEY);
FaceJsonDetail faceJsonDetail = JSONObject.parseObject(faceJsonString, FaceJsonDetail.class);
List<FaceInfo> faceList = faceJsonDetail.getFaces();
for (FaceInfo faceInfo : faceList) {
faceInfo.setName(StrUtil.EMPTY);
}
List<FaceInfo> normalFaceList = faceList.stream().filter(faceInfo ->
(faceInfo.getFaceKind() == null || Constant.FaceKind.NORMAL.equals(faceInfo.getFaceKind())))
.collect(Collectors.toList());
if (afterVipFaceVer) {
// 按照faceKind进行分组
List<FaceInfo> vipFaceList = faceList.stream().filter(faceInfo -> Constant.FaceKind.VIP_FACE.equals(faceInfo.getFaceKind()))
.collect(Collectors.toList());
List<FaceInfo> vipFaces = new ArrayList<>();
List<FaceInfo> finalVipFaces = vipFaces;
vipFaceList.forEach(faceInfo -> {
VipInfo vipInfo = vipAuthItemService.getVipInfoByTypeAndItemId(Constant.VipAuthType.FACE, faceInfo.getId().toString());
if (null != vipInfo) {
VipBaseInfoVO faceVipInfo = new VipBaseInfoVO();
faceVipInfo.setVipIcon(vipInfo.getVipIcon());
faceVipInfo.setVipLevel(vipInfo.getVipLevel());
faceVipInfo.setVipName(vipInfo.getVipName());
faceInfo.setFaceVipInfo(faceVipInfo);
finalVipFaces.add(faceInfo);
}
});
vipFaces = finalVipFaces.stream().sorted(Comparator.comparing(face -> face.getFaceVipInfo().getVipLevel())).collect(Collectors.toList());
faceJsonDetail.setVipFaces(vipFaces);
}
faceJsonDetail.setFaces(normalFaceList);
// 加密返回
String faceJsonDetailStr = JSONObject.toJSONString(faceJsonDetail);
String encryptStr = DESUtils.DESAndBase64Encrypt(faceJsonDetailStr, Constant.FaceJsonConfig.FACE_JSON_KEY);
faceJson.setJson(encryptStr);
return faceJson;
}

View File

@@ -25,7 +25,7 @@ import java.util.Map;
*/
public class QrCodeUtil {
private static final String LOGO_FILE = "MoliParty.png";
private static final String LOGO_FILE = "molistar.png";
/**
* 生成二维码

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

@@ -1,51 +0,0 @@
package com.accompany.business.interceptor;
import com.accompany.common.constant.AppEnum;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import org.springframework.web.util.ContentCachingResponseWrapper;
import javax.servlet.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
@Component
@Order(Ordered.HIGHEST_PRECEDENCE)
public class CustomResponseFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
ContentCachingResponseWrapper responseWrapper = new ContentCachingResponseWrapper((HttpServletResponse) response);
chain.doFilter(request, responseWrapper);
byte[] responseArray = responseWrapper.getContentAsByteArray();
String responseStr = new String(responseArray, "UTF-8");
// 在这里处理响应内容
String modifiedResponse = modifyResponse(responseStr);
response.getOutputStream().write(modifiedResponse.getBytes());
}
private String modifyResponse(String original) {
AppEnum curApp = AppEnum.getCurApp();
String apiDomain = curApp.getApiDomain();
String resourceDomain = curApp.getResourceDomain();
List<AppEnum> otherTwoAppEnums = AppEnum.getOtherAppEnums(curApp);
for (AppEnum otherApp : otherTwoAppEnums) {
String diffResourceDomain = otherApp.getResourceDomain();
String diffApiDomain = otherApp.getApiDomain();
if (original.contains(diffResourceDomain)) {
original = original.replaceAll(diffResourceDomain, resourceDomain);
}
if (original.contains(diffApiDomain)) {
original = original.replaceAll(diffApiDomain, apiDomain);
}
}
return original;
}
}

View File

@@ -19,7 +19,7 @@ spring:
nacos:
config:
server-addr: 124.156.164.187:8848
namespace: aeb633ac-d6eb-4d3e-b40d-80b5458064b0
namespace: 5edc3246-3e69-4be5-a32a-273f0a09ddf6
file-extension: yml
shared-configs:
- data-id: application.yml
@@ -42,7 +42,7 @@ spring:
nacos:
config:
server-addr: 124.156.164.187:8848
namespace: aeb633ac-d6eb-4d3e-b40d-80b5458064b0
namespace: 5edc3246-3e69-4be5-a32a-273f0a09ddf6
file-extension: yml
shared-configs:
- data-id: application.yml
@@ -66,7 +66,7 @@ spring:
nacos:
config:
server-addr: 172.19.16.15:8848
namespace: aeb633ac-d6eb-4d3e-b40d-80b5458064b0
namespace: 0c9bf047-19ca-4969-bf5d-bbc1f86b501a
file-extension: yml
shared-configs:
- data-id: application.yml

View File

@@ -19,7 +19,7 @@ spring:
nacos:
config:
server-addr: 124.156.164.187:8848
namespace: aeb633ac-d6eb-4d3e-b40d-80b5458064b0
namespace: 5edc3246-3e69-4be5-a32a-273f0a09ddf6
file-extension: yml
shared-configs:
- data-id: application.yml
@@ -42,7 +42,7 @@ spring:
nacos:
config:
server-addr: 124.156.164.187:8848
namespace: aeb633ac-d6eb-4d3e-b40d-80b5458064b0
namespace: 5edc3246-3e69-4be5-a32a-273f0a09ddf6
file-extension: yml
shared-configs:
- data-id: application.yml
@@ -66,7 +66,7 @@ spring:
nacos:
config:
server-addr: 172.19.16.15:8848
namespace: aeb633ac-d6eb-4d3e-b40d-80b5458064b0
namespace: 0c9bf047-19ca-4969-bf5d-bbc1f86b501a
file-extension: yml
shared-configs:
- data-id: application.yml

View File

@@ -16,7 +16,7 @@ spring:
nacos:
config:
server-addr: 124.156.164.187:8848
namespace: aeb633ac-d6eb-4d3e-b40d-80b5458064b0
namespace: 5edc3246-3e69-4be5-a32a-273f0a09ddf6
file-extension: yml
shared-configs:
- data-id: application.yml
@@ -39,7 +39,7 @@ spring:
nacos:
config:
server-addr: 124.156.164.187:8848
namespace: aeb633ac-d6eb-4d3e-b40d-80b5458064b0
namespace: 5edc3246-3e69-4be5-a32a-273f0a09ddf6
file-extension: yml
shared-configs:
- data-id: application.yml
@@ -63,7 +63,7 @@ spring:
nacos:
config:
server-addr: 172.19.16.15:8848
namespace: aeb633ac-d6eb-4d3e-b40d-80b5458064b0
namespace: 0c9bf047-19ca-4969-bf5d-bbc1f86b501a
file-extension: yml
shared-configs:
- data-id: application.yml