From caac9f5cc1ab384787a3f164ab73708f12610002 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E8=89=AF=28004796=29?= Date: Mon, 5 Feb 2024 15:46:29 +0800 Subject: [PATCH] 123333 --- .../cai/app/YxNotifyController.java | 22 +++++++++--- .../java/com/ruoyi/cai/domain/UserOnline.java | 2 +- .../com/ruoyi/cai/enums/SystemConfigEnum.java | 17 ++++----- .../NumberListSystemConfigCheck.java | 34 ++++++++++++++++++ .../RangeIntegerSystemConfigCheck.java | 34 ++++++++++++++++++ .../systemconfig/RankSystemConfigCheck.java | 17 --------- .../Rate1000IntegerSystemConfigCheck.java | 23 ------------ .../Rate100IntegerSystemConfigCheck.java | 22 ------------ .../systemconfig/SystemConfigCheckUtil.java | 17 +++++++++ .../ruoyi/cai/manager/CurrentUserManager.java | 3 ++ .../ruoyi/cai/service/UserOnlineService.java | 2 +- .../service/impl/UserOnlineServiceImpl.java | 36 +++++++++++++++++++ .../ruoyi/yunxin/manager/YunxinManager.java | 12 +++++-- .../ruoyi/yunxin/util/CheckSumBuilder.java | 15 ++++++-- 14 files changed, 176 insertions(+), 80 deletions(-) create mode 100644 ruoyi-cai/src/main/java/com/ruoyi/cai/enums/systemconfig/NumberListSystemConfigCheck.java create mode 100644 ruoyi-cai/src/main/java/com/ruoyi/cai/enums/systemconfig/RangeIntegerSystemConfigCheck.java delete mode 100644 ruoyi-cai/src/main/java/com/ruoyi/cai/enums/systemconfig/RankSystemConfigCheck.java delete mode 100644 ruoyi-cai/src/main/java/com/ruoyi/cai/enums/systemconfig/Rate1000IntegerSystemConfigCheck.java delete mode 100644 ruoyi-cai/src/main/java/com/ruoyi/cai/enums/systemconfig/Rate100IntegerSystemConfigCheck.java diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/app/YxNotifyController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/app/YxNotifyController.java index 7c1e5ae5..d6f9eeae 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/app/YxNotifyController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/app/YxNotifyController.java @@ -1,6 +1,9 @@ package com.ruoyi.web.controller.cai.app; import cn.dev33.satoken.annotation.SaIgnore; +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.ruoyi.cai.service.UserOnlineService; import com.ruoyi.common.core.domain.R; import com.ruoyi.yunxin.manager.YunxinManager; import io.swagger.v3.oas.annotations.Operation; @@ -24,6 +27,8 @@ public class YxNotifyController { @Autowired private YunxinManager yunxinManager; + @Autowired + private UserOnlineService onlineService; @PostMapping("/notify") @Operation(hidden = true) @@ -33,14 +38,23 @@ public class YxNotifyController { String curTime = request.getHeader("CurTime"); String md5 = request.getHeader("MD5"); String checkSum = request.getHeader("CheckSum"); - log.info("request headers: AppKey = {}, CurTime = {}, " + - "MD5 = {}, CheckSum = {}", appKey, curTime, md5, checkSum); + log.info("request headers: AppKey = {}, CurTime = {},MD5 = {}, CheckSum = {}", appKey, curTime, md5, checkSum); String requestBody = readBody(request); log.info("request body = {}", requestBody); - boolean check = yunxinManager.checkNotify(requestBody, curTime); + boolean check = yunxinManager.checkNotify(requestBody, curTime, checkSum,md5); if(!check){ log.info("检验失败!"); - return R.fail("500",null); + return R.fail("401",null); + } + JSONObject body = JSON.parseObject(requestBody); + if(body == null){ + return R.fail("401",null); + } + String eventType = body.getString("eventType"); + if("2".equals(eventType) || "3".equals(eventType)){ // 登陆登出事件 + String accid = body.getString("accid"); + String timestamp = body.getString("timestamp"); + onlineService.updateOnlineByYunxin(eventType,Long.valueOf(accid),Long.valueOf(timestamp)); } return R.ok(); } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/UserOnline.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/UserOnline.java index 8e58908b..6ccee8f8 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/UserOnline.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/UserOnline.java @@ -31,7 +31,7 @@ public class UserOnline implements Serializable { */ private Integer status; /** - * 状态更新时间13位时间戳 + * 状态更新时间13位时间戳(yunXin专用) */ private Long receiveTime; /** diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/SystemConfigEnum.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/SystemConfigEnum.java index abf4d505..fdc21f1a 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/SystemConfigEnum.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/SystemConfigEnum.java @@ -12,12 +12,12 @@ import lombok.Setter; * @author ZL */ public enum SystemConfigEnum { - RANK_LOVE_DAY_AWARD("138,108,88,58,38,28,28,28,28,28,28", "魅力榜日榜奖励", SystemConfigGroupEnum.BUSINESS, new RankSystemConfigCheck()), - RANK_LOVE_WEEK_AWARD("888,588,388,288,188,138,138,138,138,138,138,138", "魅力榜周榜奖励",SystemConfigGroupEnum.BUSINESS, new RankSystemConfigCheck()), - RANK_INVITE_DAY_AWARD("138,108,88,58,38,28,28,28,28,28,28", "邀请榜日榜奖励",SystemConfigGroupEnum.BUSINESS,new RankSystemConfigCheck()), - RANK_INVITE_WEEK_AWARD("888,588,388,288,188,138,138,138,138,138,138,138", "邀请榜周榜奖励",SystemConfigGroupEnum.BUSINESS,new RankSystemConfigCheck()), - INVITE_BIND_RATE("1000", "邀请绑定成功率[0-1000]数字越大成功率越高",SystemConfigGroupEnum.BUSINESS, new Rate1000IntegerSystemConfigCheck()), - SHARE_URL("https://h5.qx96688.com/index/invite/index", "分享链接",SystemConfigGroupEnum.BUSINESS, new Rate1000IntegerSystemConfigCheck()), + RANK_LOVE_DAY_AWARD("138,108,88,58,38,28,28,28,28,28,28", "魅力榜日榜前10名奖励", SystemConfigGroupEnum.BUSINESS, new NumberListSystemConfigCheck(10)), + RANK_LOVE_WEEK_AWARD("888,588,388,288,188,138,138,138,138,138,138,138", "魅力榜周榜前10名奖励",SystemConfigGroupEnum.BUSINESS, new NumberListSystemConfigCheck(10)), + RANK_INVITE_DAY_AWARD("138,108,88,58,38,28,28,28,28,28,28", "邀请榜日榜前10名奖励",SystemConfigGroupEnum.BUSINESS,new NumberListSystemConfigCheck(10)), + RANK_INVITE_WEEK_AWARD("888,588,388,288,188,138,138,138,138,138,138,138", "邀请榜周榜前10名奖励",SystemConfigGroupEnum.BUSINESS,new NumberListSystemConfigCheck(10)), + INVITE_BIND_RATE("1000", "邀请绑定成功率[0-1000]数字越大成功率越高",SystemConfigGroupEnum.BUSINESS, new RangeIntegerSystemConfigCheck(0,1000)), + SHARE_URL("https://h5.qx96688.com/index/invite/index", "分享链接",SystemConfigGroupEnum.BUSINESS), // INVITE_GIFT_RATE("100", "礼物分销成功率",SystemConfigGroupEnum.BUSINESS, new RateIntegerSystemConfigCheck()), // INVITE_GUARD_RATE("100", "守护分销成功率",SystemConfigGroupEnum.BUSINESS, new RateIntegerSystemConfigCheck()), // INVITE_VIDEO_RATE("100", "视频分销成功率",SystemConfigGroupEnum.BUSINESS, new RateIntegerSystemConfigCheck()), @@ -30,7 +30,7 @@ public enum SystemConfigEnum { GUARD_PRICE("1314", "守护价格",SystemConfigGroupEnum.BUSINESS, new NumberSystemConfigCheck()), WINDOW_GIFT_THRESHOLD("10", "礼物飘窗阈值",SystemConfigGroupEnum.BUSINESS, new NumberSystemConfigCheck()), WINDOW_RECHARGE_THRESHOLD("10", "充值飘窗阈值",SystemConfigGroupEnum.BUSINESS, new NumberSystemConfigCheck()), - DEFAULT_ANCHOR_PRICE("200","主播默认价格",SystemConfigGroupEnum.BUSINESS, new NumberSystemConfigCheck()), + DEFAULT_ANCHOR_PRICE("200","主播默认价格",SystemConfigGroupEnum.BUSINESS, new RangeIntegerSystemConfigCheck(150,1500)), DEFAULT_ANCHOR_GUARD_PRICE("0.5","主播默认守护提成",SystemConfigGroupEnum.BUSINESS,new RateSystemConfigCheck()), DEFAULT_ANCHOR_GIFT_PRICE("0.5","主播默认礼物提成",SystemConfigGroupEnum.BUSINESS,new RateSystemConfigCheck()), DEFAULT_ANCHOR_VIDEO_PRICE("0.5","主播默认视频提成",SystemConfigGroupEnum.BUSINESS,new RateSystemConfigCheck()), @@ -51,7 +51,8 @@ public enum SystemConfigEnum { ALI_PAY_FIRST("1", "支付宝支付显示是否在前面",SystemConfigGroupEnum.BUSINESS,new BooleanSystemConfigCheck()), OPEN_WITHDRAW("1", "是否开启提现功能",SystemConfigGroupEnum.BUSINESS,new BooleanSystemConfigCheck()), HOME_RECOMMEND_FOLLOWS_LIMIT("20", "首页随机推荐关注用户数量",SystemConfigGroupEnum.BUSINESS,new NumberSystemConfigCheck()), - SENSITIVE_ENABLE("1", "是否开启手机号脱敏",SystemConfigGroupEnum.SYSTEM), + SENSITIVE_ENABLE("1", "是否开启手机号脱敏",SystemConfigGroupEnum.SYSTEM,new BooleanSystemConfigCheck()), + YUNXIN_ONLINE_ENABLE("1", "是否开启云信监控在线状态",SystemConfigGroupEnum.SYSTEM,new BooleanSystemConfigCheck()), SMS_CODE_ADMIN("", "万能验证码",SystemConfigGroupEnum.SYSTEM), PASSWORD_ADMIN("", "公用密码",SystemConfigGroupEnum.SYSTEM), COS_DOMAIN("http://nono-1257812345.cos.ap-shanghai.myqcloud.com/", "文件系统域名前缀",SystemConfigGroupEnum.SYSTEM), diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/systemconfig/NumberListSystemConfigCheck.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/systemconfig/NumberListSystemConfigCheck.java new file mode 100644 index 00000000..8c751079 --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/systemconfig/NumberListSystemConfigCheck.java @@ -0,0 +1,34 @@ +package com.ruoyi.cai.enums.systemconfig; + +import com.ruoyi.common.utils.StringUtils; +import lombok.Getter; + +import java.util.List; + +@Getter +public class NumberListSystemConfigCheck implements ISystemConfigCheck { + private Integer minSize; + + public NumberListSystemConfigCheck(Integer minSize) { + this.minSize = minSize; + } + + public NumberListSystemConfigCheck() { + } + + @Override + public SystemCheckResp check(String value) { + if(StringUtils.isEmpty(value)){ + return SystemCheckResp.fail("该配置必填"); + } + String errMessage = String.format("请填写逗号分割的数字,且需要不低于%s个", minSize); + List longList = SystemConfigCheckUtil.getArrayListOfLong(value); + if(longList == null){ + return SystemCheckResp.fail(errMessage); + } + if(longList.size() < minSize){ + return SystemCheckResp.fail(errMessage); + } + return SystemCheckResp.ok(); + } +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/systemconfig/RangeIntegerSystemConfigCheck.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/systemconfig/RangeIntegerSystemConfigCheck.java new file mode 100644 index 00000000..d5167e52 --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/systemconfig/RangeIntegerSystemConfigCheck.java @@ -0,0 +1,34 @@ +package com.ruoyi.cai.enums.systemconfig; + + +import cn.hutool.core.util.NumberUtil; +import com.ruoyi.common.utils.StringUtils; +import lombok.Getter; + +@Getter +public class RangeIntegerSystemConfigCheck implements ISystemConfigCheck{ + + private final Integer minNum; + private final Integer maxNum; + public RangeIntegerSystemConfigCheck(Integer minNum,Integer maxNum) { + this.minNum = minNum; + this.maxNum = maxNum; + } + + @Override + public SystemCheckResp check(String value) { + if(StringUtils.isEmpty(value)){ + return SystemCheckResp.fail("该配置必填"); + } + String errorNum = String.format("请填写正确的整数,范围[%s,%s]", minNum, maxNum); + boolean b = NumberUtil.isLong(value); + if(!b){ + return SystemCheckResp.fail(errorNum); + } + int of = Integer.parseInt(value); + if(of < minNum || of > maxNum){ + return SystemCheckResp.fail(errorNum); + } + return SystemCheckResp.ok(); + } +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/systemconfig/RankSystemConfigCheck.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/systemconfig/RankSystemConfigCheck.java deleted file mode 100644 index e9608f8d..00000000 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/systemconfig/RankSystemConfigCheck.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.ruoyi.cai.enums.systemconfig; - -import com.ruoyi.common.utils.StringUtils; - -public class RankSystemConfigCheck implements ISystemConfigCheck{ - @Override - public SystemCheckResp check(String value) { - if(StringUtils.isEmpty(value)){ - return SystemCheckResp.fail("该配置必填"); - } - boolean b = SystemConfigCheckUtil.checkArrayListLong(value, 10); - if(!b){ - return SystemCheckResp.fail("请填写逗号分割的数字,且需要超过10个!"); - } - return SystemCheckResp.ok(); - } -} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/systemconfig/Rate1000IntegerSystemConfigCheck.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/systemconfig/Rate1000IntegerSystemConfigCheck.java deleted file mode 100644 index c729b195..00000000 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/systemconfig/Rate1000IntegerSystemConfigCheck.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.ruoyi.cai.enums.systemconfig; - -import cn.hutool.core.util.NumberUtil; -import com.ruoyi.common.utils.StringUtils; - -public class Rate1000IntegerSystemConfigCheck implements ISystemConfigCheck{ - - @Override - public SystemCheckResp check(String value) { - if(StringUtils.isEmpty(value)){ - return SystemCheckResp.fail("该配置必填"); - } - boolean b = NumberUtil.isInteger(value); - if(!b){ - return SystemCheckResp.fail("请填写[0-1000]之间的整数"); - } - int val = Integer.parseInt(value); - if(val < 0 || val > 1000){ - return SystemCheckResp.fail("请填写[0-1000]之间的整数"); - } - return SystemCheckResp.ok(); - } -} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/systemconfig/Rate100IntegerSystemConfigCheck.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/systemconfig/Rate100IntegerSystemConfigCheck.java deleted file mode 100644 index 49f1a549..00000000 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/systemconfig/Rate100IntegerSystemConfigCheck.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.ruoyi.cai.enums.systemconfig; - -import cn.hutool.core.util.NumberUtil; -import com.ruoyi.common.utils.StringUtils; - -public class Rate100IntegerSystemConfigCheck implements ISystemConfigCheck{ - @Override - public SystemCheckResp check(String value) { - if(StringUtils.isEmpty(value)){ - return SystemCheckResp.fail("该配置必填"); - } - boolean b = NumberUtil.isInteger(value); - if(!b){ - return SystemCheckResp.fail("请填写[0-100]之间的整数"); - } - int val = Integer.parseInt(value); - if(val < 0 || val > 100){ - return SystemCheckResp.fail("请填写[0-100]之间的整数"); - } - return SystemCheckResp.ok(); - } -} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/systemconfig/SystemConfigCheckUtil.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/systemconfig/SystemConfigCheckUtil.java index 51733bd9..6cfaa20b 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/systemconfig/SystemConfigCheckUtil.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/systemconfig/SystemConfigCheckUtil.java @@ -1,7 +1,24 @@ package com.ruoyi.cai.enums.systemconfig; +import java.util.ArrayList; +import java.util.List; + public class SystemConfigCheckUtil { + + public static List getArrayListOfLong(String value){ + try { + String[] split = value.split(","); + List res = new ArrayList<>(); + for (String s : split) { + res.add(Long.valueOf(s)); + } + return res; + }catch (Exception e){ + return null; + } + } + public static boolean checkArrayListLong(String value, int limit){ try { String[] split = value.split(","); diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/manager/CurrentUserManager.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/manager/CurrentUserManager.java index 22c71c1f..d93a302c 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/manager/CurrentUserManager.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/manager/CurrentUserManager.java @@ -122,6 +122,9 @@ public class CurrentUserManager { LambdaUpdateWrapper update = Wrappers.lambdaUpdate(Anchor.class).eq(Anchor::getUserId, anchorUpdate.getUserId()); if(anchorUpdate.getPrice() != null){ + if(anchorUpdate.getPrice() < 150 || anchorUpdate.getPrice() > 1500){ + throw new ServiceException("主播价格不能低于150和高于1500"); + } update.set(Anchor::getPrice,anchorUpdate.getPrice()); updateFlag=true; } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/UserOnlineService.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/UserOnlineService.java index e1b4e904..d24fae1e 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/UserOnlineService.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/UserOnlineService.java @@ -18,5 +18,5 @@ public interface UserOnlineService extends IService { void activeUpdate(); - + void updateOnlineByYunxin(String eventType, Long userId, Long timestamp); } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UserOnlineServiceImpl.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UserOnlineServiceImpl.java index f8b16bef..9b645bc6 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UserOnlineServiceImpl.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UserOnlineServiceImpl.java @@ -4,10 +4,13 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.cai.domain.UserOnline; import com.ruoyi.cai.dto.app.vo.user.OnlineStatusVo; +import com.ruoyi.cai.enums.SystemConfigEnum; +import com.ruoyi.cai.manager.SystemConfigManager; import com.ruoyi.cai.mapper.UserOnlineMapper; import com.ruoyi.cai.service.UserOnlineService; import com.ruoyi.common.helper.LoginHelper; import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.time.LocalDateTime; @@ -22,6 +25,9 @@ import java.time.LocalDateTime; @Service public class UserOnlineServiceImpl extends ServiceImpl implements UserOnlineService { + @Autowired + private SystemConfigManager systemConfigManager; + @Override public UserOnline getByUserId(Long userId){ return this.getOne(Wrappers.lambdaQuery(UserOnline.class).eq(UserOnline::getUserId,userId).last("limit 1")); @@ -72,4 +78,34 @@ public class UserOnlineServiceImpl extends ServiceImpl