diff --git a/src/main/java/com/sqx/modules/app/controller/app/AdController.java b/src/main/java/com/sqx/modules/app/controller/app/AdController.java index 877d755e..b3cbbdd2 100644 --- a/src/main/java/com/sqx/modules/app/controller/app/AdController.java +++ b/src/main/java/com/sqx/modules/app/controller/app/AdController.java @@ -4,25 +4,35 @@ import com.sqx.common.utils.Result; import com.sqx.modules.app.annotation.Login; import com.sqx.modules.app.service.AdService; import com.sqx.modules.callback.service.UniAdCallbackRecordService; +import com.sqx.modules.redisService.RedisService; import com.sqx.modules.sys.controller.AbstractController; import org.springframework.web.bind.annotation.*; +import java.util.HashMap; + @RestController @RequestMapping("/app/ad") public class AdController extends AbstractController { private final UniAdCallbackRecordService callbackRecordService; private final AdService adService; + private final RedisService redisService; - public AdController(UniAdCallbackRecordService callbackRecordService, AdService adService) { + public AdController(UniAdCallbackRecordService callbackRecordService, AdService adService, RedisService redisService) { this.callbackRecordService = callbackRecordService; this.adService = adService; + this.redisService = redisService; } @Login @GetMapping("/state") public Result getAdState(@RequestParam String extraKey, @RequestAttribute Long userId) { - return Result.success(callbackRecordService.getStateByExtraKey(userId, extraKey)); + HashMap info = callbackRecordService.getStateByExtraKey(userId, extraKey); + if (info.get("isEnded") == 0 && !redisService.isCanCash(userId)) { + redisService.setCanCashFlag(userId, -1L); + info.put("isEnded", 1); + } + return Result.success(); } @Login diff --git a/src/main/java/com/sqx/modules/app/controller/app/AppController.java b/src/main/java/com/sqx/modules/app/controller/app/AppController.java index 4735bb84..9da79c04 100644 --- a/src/main/java/com/sqx/modules/app/controller/app/AppController.java +++ b/src/main/java/com/sqx/modules/app/controller/app/AppController.java @@ -16,6 +16,7 @@ import com.sqx.common.utils.DesensitizedUtil; import com.sqx.common.utils.Result; import com.sqx.modules.app.annotation.Login; import com.sqx.modules.app.annotation.LoginUser; +import com.sqx.modules.app.dto.AuthDTO; import com.sqx.modules.app.dto.AuthRespDTO; import com.sqx.modules.app.entity.TbUserBlacklist; import com.sqx.modules.app.entity.UserEntity; @@ -112,7 +113,7 @@ public class AppController { if (StrUtil.isAllBlank(zhiFuBao, certName)) { return Result.error("支付宝账号或姓名不能为空"); } - if(zhiFuBao.contains("*") || certName.contains("*")){ + if (zhiFuBao.contains("*") || certName.contains("*")) { return Result.success(); } UserEntity userEntity = userService.getById(userId); @@ -146,12 +147,21 @@ public class AppController { return Result.success(); } + @Login + @PostMapping(value = "/realNameAuth/v2") + @ApiOperation("实名认证") + @ResponseBody + @Debounce(interval = 3000, value = "#userId") + public Result realNameAuth(@RequestAttribute("userId") Long userId, @RequestBody AuthDTO auth) { + return realNameAuth(userId, auth.getCertName(), auth.getCertNum(), auth.getAccountNo(), auth.getMobile()); + } + @Login @RequestMapping(value = "/realNameAuth", method = RequestMethod.POST) @ApiOperation("实名认证") @ResponseBody @Debounce(interval = 3000, value = "#userId") - public Result bindAlipay(@RequestAttribute("userId") Long userId, + public Result realNameAuth(@RequestAttribute("userId") Long userId, @RequestParam String certName, @RequestParam String certNum, @RequestParam String accountNo, @@ -160,7 +170,7 @@ public class AppController { if (StrUtil.isAllBlank(certName, certNum, accountNo, mobile)) { return Result.error("真实姓名、身份证号码、银行卡号、银行预留手机号缺一不可"); } - if(certNum.contains("*") || accountNo.contains("*") || mobile.contains("*")){ + if (certNum.contains("*") || accountNo.contains("*") || mobile.contains("*")) { return Result.success(); } int count = userInfoService.count(Wrappers.lambdaQuery() @@ -268,7 +278,7 @@ public class AppController { } Map map = BeanUtil.beanToMap(user); map.putAll(BeanUtil.beanToMap(userInfo)); - map.put("userId",map.get("userId").toString()); + map.put("userId", map.get("userId").toString()); if (StrUtil.isBlank(user.getZhiFuBaoName()) && StrUtil.isNotBlank(userInfo.getCertName())) { map.put("zhiFuBaoName", userInfo.getCertName()); } diff --git a/src/main/java/com/sqx/modules/app/dto/AuthDTO.java b/src/main/java/com/sqx/modules/app/dto/AuthDTO.java index 4e395504..735a9c70 100644 --- a/src/main/java/com/sqx/modules/app/dto/AuthDTO.java +++ b/src/main/java/com/sqx/modules/app/dto/AuthDTO.java @@ -11,6 +11,11 @@ public class AuthDTO { @NotBlank private String idNum; + @NotBlank + private String certName; + @NotBlank + private String certNum; + @NotBlank private String accountNo; diff --git a/src/main/java/com/sqx/modules/callback/service/UniAdCallbackRecordService.java b/src/main/java/com/sqx/modules/callback/service/UniAdCallbackRecordService.java index 301aabbb..e04a81b6 100644 --- a/src/main/java/com/sqx/modules/callback/service/UniAdCallbackRecordService.java +++ b/src/main/java/com/sqx/modules/callback/service/UniAdCallbackRecordService.java @@ -16,5 +16,5 @@ public interface UniAdCallbackRecordService extends IService adCallBack(UniAdCallBackDTO callBackDTO); - HashMap getStateByExtraKey(Long userId, String extraKey); + HashMap getStateByExtraKey(Long userId, String extraKey); } diff --git a/src/main/java/com/sqx/modules/callback/service/impl/UniAdCallbackRecordServiceImpl.java b/src/main/java/com/sqx/modules/callback/service/impl/UniAdCallbackRecordServiceImpl.java index 2174a5f9..4ca16e2b 100644 --- a/src/main/java/com/sqx/modules/callback/service/impl/UniAdCallbackRecordServiceImpl.java +++ b/src/main/java/com/sqx/modules/callback/service/impl/UniAdCallbackRecordServiceImpl.java @@ -129,10 +129,10 @@ public class UniAdCallbackRecordServiceImpl extends ServiceImpl getStateByExtraKey(Long userId, String extraKey) { + public HashMap getStateByExtraKey(Long userId, String extraKey) { UniAdCallbackRecord one = getOne(new LambdaQueryWrapper().eq(UniAdCallbackRecord::getUserId, userId) .eq(UniAdCallbackRecord::getExtra, extraKey)); - return new HashMap(){{ + return new HashMap(){{ put("isEnded", one == null ? 0 : 1); }}; } diff --git a/src/main/java/com/sqx/modules/course/service/impl/CourseDetailsServiceImpl.java b/src/main/java/com/sqx/modules/course/service/impl/CourseDetailsServiceImpl.java index 5fc1a065..fcb99135 100644 --- a/src/main/java/com/sqx/modules/course/service/impl/CourseDetailsServiceImpl.java +++ b/src/main/java/com/sqx/modules/course/service/impl/CourseDetailsServiceImpl.java @@ -171,6 +171,13 @@ public class CourseDetailsServiceImpl extends ServiceImpl 3 && (CollectionUtil.isEmpty(finalDetailsId) || !finalDetailsId.contains(s.getCourseDetailsId())) && courseUser == null) { + if (!freeWatch && s.getSort() > 3 && (CollectionUtil.isEmpty(finalDetailsId) || !finalDetailsId.contains(s.getCourseDetailsId())) && courseUser == null && !isVip) { s.setVideoUrl(null); } if (s.getSort() > finalStartSort && s.getSort() < finalEndSort) { @@ -239,7 +246,7 @@ public class CourseDetailsServiceImpl extends ServiceImpl(discSpinningService.list( - new QueryWrapper().eq("disc_type", source).orderByAsc("disc_type", "odds"))), true) - ); + List list = discSpinningService.list( + new QueryWrapper().eq("disc_type", source).orderByAsc("disc_type", "odds")); + for (DiscSpinning discSpinning : list) { + discSpinning.setOdds(null); + discSpinning.setNumber(null); + discSpinning.setDiscType(null); + } + return Result.success().put("data", PageUtils.page(new PageInfo<>(list), true)); } @@ -225,9 +231,16 @@ public class DiscSpinningController { } redisKey = RedisKeys.getDateKey("spinning:draw:taskW") + userId; } else if (source.equals(3)) { + Integer spinningCount = recordService.countSourceRecord(null, userId, "taskM"); + if (spinningCount != null && spinningCount > 0) { + return Result.error("月抽奖用户仅可参加一次"); + } redisKey = RedisKeys.getDateKey("spinning:draw:taskM") + userId; } Map week = redisUtils.get(redisKey, Map.class); + if (CollectionUtil.isEmpty(week)) { + return Result.error("请求失败,请联系管理员"); + } for (Map.Entry entry : week.entrySet()) { int value = new BigDecimal(entry.getValue().toString()).intValue(); if (value > 1) { @@ -239,10 +252,10 @@ public class DiscSpinningController { TaskCenterRecord centerRecord = new TaskCenterRecord(); centerRecord.setUserId(userId); centerRecord.setTaskId(Long.valueOf(entry.getKey())); - if (source.equals(2)) { +// if (source.equals(2)) { sourceId = Long.valueOf(entry.getKey()); centerRecord.setSourceId(sourceId); - } +// } centerRecord.setName(source.equals(2) ? "周任务奖励" : "月任务奖励"); centerRecord.setType(9); centerRecord.setNumber(1); diff --git a/src/main/java/com/sqx/modules/discSpinning/service/impl/DiscSpinningServiceImpl.java b/src/main/java/com/sqx/modules/discSpinning/service/impl/DiscSpinningServiceImpl.java index ee7d9a50..2be718c9 100644 --- a/src/main/java/com/sqx/modules/discSpinning/service/impl/DiscSpinningServiceImpl.java +++ b/src/main/java/com/sqx/modules/discSpinning/service/impl/DiscSpinningServiceImpl.java @@ -48,6 +48,8 @@ public class DiscSpinningServiceImpl extends ServiceImpl amounts = new ArrayList<>(); Map> amountMaps = redisUtils.getMapData(RedisKeys.getDateKey("spinning:amount:") + source, "setDiscSpinningAmounts", DiscSpinningAmount.class); if (CollectionUtil.isNotEmpty(amountMaps)) { @@ -134,14 +136,12 @@ public class DiscSpinningServiceImpl extends ServiceImpl list = recordService.list(recordQueryWrapper); ThreadUtil.execAsync(() -> { diff --git a/src/main/java/com/sqx/modules/orders/service/impl/OrdersServiceImpl.java b/src/main/java/com/sqx/modules/orders/service/impl/OrdersServiceImpl.java index 7f008505..8bc1d483 100644 --- a/src/main/java/com/sqx/modules/orders/service/impl/OrdersServiceImpl.java +++ b/src/main/java/com/sqx/modules/orders/service/impl/OrdersServiceImpl.java @@ -553,8 +553,8 @@ public class OrdersServiceImpl extends ServiceImpl implements UserMoneyDetails userMoneyDetails = new UserMoneyDetails(); userMoneyDetails.setMoney(orders.getPayDiamond()); userMoneyDetails.setUserId(orders.getUserId()); - userMoneyDetails.setContent("金币解锁视频"); - userMoneyDetails.setTitle("解锁成功,订单号:" + orders.getOrdersNo()); + userMoneyDetails.setContent("解锁成功"); + userMoneyDetails.setTitle("金币解锁视频"); userMoneyDetails.setType(2); // ✅ userMoneyDetails.setClassify(3); diff --git a/src/main/java/com/sqx/modules/pay/controller/app/AppCashController.java b/src/main/java/com/sqx/modules/pay/controller/app/AppCashController.java index d3fcba43..05647f96 100644 --- a/src/main/java/com/sqx/modules/pay/controller/app/AppCashController.java +++ b/src/main/java/com/sqx/modules/pay/controller/app/AppCashController.java @@ -113,6 +113,7 @@ public class AppCashController { ret = cashOutService.withdraw(userId, amount, null, false); int code = Convert.toInt(ret.get("code"), -1); if (code == 0) { + redisService.removeCanCashFlag(userId); redisUtils.set(intervalKey, true, 60 * 3); } } catch (Exception e) { diff --git a/src/main/java/com/sqx/modules/redisService/RedisService.java b/src/main/java/com/sqx/modules/redisService/RedisService.java index f486f5ab..a81dc759 100644 --- a/src/main/java/com/sqx/modules/redisService/RedisService.java +++ b/src/main/java/com/sqx/modules/redisService/RedisService.java @@ -32,4 +32,7 @@ public interface RedisService { boolean isCanCash(Long userId); boolean setCreateOrderFlagAndCheckLimit(Long userId, Long orderId); + + void removeCanCashFlag(Long userId); + } diff --git a/src/main/java/com/sqx/modules/redisService/impl/RedisServiceImpl.java b/src/main/java/com/sqx/modules/redisService/impl/RedisServiceImpl.java index b2129794..be06f1b2 100644 --- a/src/main/java/com/sqx/modules/redisService/impl/RedisServiceImpl.java +++ b/src/main/java/com/sqx/modules/redisService/impl/RedisServiceImpl.java @@ -338,7 +338,7 @@ public class RedisServiceImpl implements RedisService { @Override public void setCanCashFlag(Long userId, Long id) { String key = "cash:canCash:" + userId; - redisUtils.set(key, id, 30); + redisUtils.set(key, id, 300); } @Override @@ -348,6 +348,12 @@ public class RedisServiceImpl implements RedisService { return StrUtil.isNotBlank(s); } + @Override + public void removeCanCashFlag(Long userId) { + String key = "cash:canCash:" + userId; + redisUtils.delete(key); + } + @Override public boolean setCreateOrderFlagAndCheckLimit(Long userId, Long orderId) { String key = "createOrder:" + userId + ":" + orderId; diff --git a/src/main/java/com/sqx/modules/taskCenter/controller/TaskCenterController.java b/src/main/java/com/sqx/modules/taskCenter/controller/TaskCenterController.java index a8191819..dbb28317 100644 --- a/src/main/java/com/sqx/modules/taskCenter/controller/TaskCenterController.java +++ b/src/main/java/com/sqx/modules/taskCenter/controller/TaskCenterController.java @@ -124,7 +124,7 @@ public class TaskCenterController { @ApiImplicitParam(name = "sourceId", value = "实物(物品Id)", dataTypeClass = Long.class, paramType = "body") }) @Debounce(interval = 600000, value = "#userId,#record.taskId") - public Result receiveGoods(@ApiIgnore @RequestAttribute("userId") Long userId,@ApiIgnore TaskCenterRecord record) { + public Result receiveGoods(@ApiIgnore @RequestAttribute("userId") Long userId,@ApiIgnore @RequestBody TaskCenterRecord record) { TaskCenter task = taskCenterService.getById(record.getTaskId()); if (Objects.isNull(task)) { return Result.error("任务不存在。"); diff --git a/src/main/java/com/sqx/modules/taskCenter/controller/TaskCenterRewardController.java b/src/main/java/com/sqx/modules/taskCenter/controller/TaskCenterRewardController.java index 5bc0d5c8..4cb81d41 100644 --- a/src/main/java/com/sqx/modules/taskCenter/controller/TaskCenterRewardController.java +++ b/src/main/java/com/sqx/modules/taskCenter/controller/TaskCenterRewardController.java @@ -2,18 +2,17 @@ package com.sqx.modules.taskCenter.controller; import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import com.sqx.common.utils.DateUtils; import com.sqx.common.utils.PageUtils; +import com.sqx.common.utils.Result; import com.sqx.modules.app.annotation.Login; import com.sqx.modules.taskCenter.entity.TaskCenterRecord; import com.sqx.modules.taskCenter.entity.TaskCenterReward; import com.sqx.modules.taskCenter.service.TaskCenterRecordService; import com.sqx.modules.taskCenter.service.TaskCenterRewardService; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.sqx.common.utils.DateUtils; -import com.sqx.common.utils.Result; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -83,9 +82,10 @@ public class TaskCenterRewardController { @GetMapping("/selectTaskCenterReward") @ApiOperation("查询任务奖励") public Result selectTaskCenterReward(Integer page, Integer limit, TaskCenterReward taskCenterReward) { - PageHelper.startPage(page,limit); + PageHelper.startPage(page == null ? 0 : page, limit == null ? 10 : limit); List list = taskCenterRewardService.list(new QueryWrapper<>(taskCenterReward).orderByDesc("id")); - return Result.success().put("data",PageUtils.page(new PageInfo<>(list),true)); + PageInfo pageInfo = new PageInfo<>(list); + return Result.success().put("data", PageUtils.page(pageInfo, true)); } @Login @@ -111,7 +111,7 @@ public class TaskCenterRewardController { } } map.put("receive", record.getSourceId()); - map.put("record", record.getId()); + map.put("record", record.getId()+""); } map.put("data", list); return Result.success(map); diff --git a/src/main/java/com/sqx/modules/taskCenter/entity/TaskCenterReward.java b/src/main/java/com/sqx/modules/taskCenter/entity/TaskCenterReward.java index c6bff50a..592fb8ca 100644 --- a/src/main/java/com/sqx/modules/taskCenter/entity/TaskCenterReward.java +++ b/src/main/java/com/sqx/modules/taskCenter/entity/TaskCenterReward.java @@ -29,7 +29,7 @@ public class TaskCenterReward extends Model { private String img; @ApiModelProperty("奖励名称") private String name; - @ApiModelProperty("奖励类型 1 金币 2 现金红包 3 4 5 9 大转盘抽奖次数") + @ApiModelProperty("奖励类型 1 金币 2 现金红包 3实物 4 5 9 大转盘抽奖次数") private Integer type; @TableField(exist = false) @JsonSerialize(using = ToStringSerializer.class) diff --git a/src/main/java/com/sqx/modules/taskCenter/service/impl/TaskCenterServiceImpl.java b/src/main/java/com/sqx/modules/taskCenter/service/impl/TaskCenterServiceImpl.java index bec84e0e..f1a7c8b2 100644 --- a/src/main/java/com/sqx/modules/taskCenter/service/impl/TaskCenterServiceImpl.java +++ b/src/main/java/com/sqx/modules/taskCenter/service/impl/TaskCenterServiceImpl.java @@ -100,10 +100,11 @@ public class TaskCenterServiceImpl extends ServiceImpl 0) { - s.setButtonTitle("已领取"); - s.setDisabled(false); - s.setNumber(null); - break; +// s.setButtonTitle("已领取"); +// s.setDisabled(false); +// s.setNumber(null); +// break; + continue; } boolean isBreak = false; //抽奖次数 @@ -127,9 +128,10 @@ public class TaskCenterServiceImpl extends ServiceImpl 0) { @@ -199,6 +202,9 @@ public class TaskCenterServiceImpl extends ServiceImpl 0) { + continue; + } Integer sumOrderNum = 0; if (inviteAchievement != null) { sumOrderNum = inviteAchievement.getCount(); @@ -206,9 +212,6 @@ public class TaskCenterServiceImpl extends ServiceImpl 0) { - continue; } else { s.setDiscNumber(null); s.setNumber(null); @@ -251,6 +254,8 @@ public class TaskCenterServiceImpl extends ServiceImpl 0) return Result.error("同一实名算一个新用户,不可重复领取"); } + }else { + return Result.error("异常领取,已记录"); } List records = new ArrayList<>(); Long targetId = null; diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 930d7734..b20560aa 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -158,4 +158,4 @@ sqx: expire: 604800 header: token uni: - adSecret: 122e4ff1edc66dcf8761f7f7ffc81e0f8773cbfafb58aed29c72fbd092c77315 + adSecret: cbc34e14ee6d64738557c96623dd6da89f77cac8ae519c6a5c87191d614d386a