ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/handler/GlobalExceptionHandler.java
@@ -1,6 +1,7 @@ package com.ruoyi.common.security.handler; import com.ruoyi.common.core.constant.HttpStatus; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.exception.DemoModeException; import com.ruoyi.common.core.exception.GlobalException; import com.ruoyi.common.core.exception.InnerAuthException; @@ -143,8 +144,8 @@ * 捕获全局自定义异常 */ @ExceptionHandler(GlobalException.class) public AjaxResult globalExceptionHandler(GlobalException e) { return AjaxResult.error(e.getMessage()); public R<String> globalExceptionHandler(GlobalException e) { return R.fail(e.getMessage()); } } ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/TGoodsController.java
@@ -3,7 +3,6 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.goods.domain.*; @@ -165,8 +164,8 @@ */ @GetMapping("/exchangeRecord") @ApiOperation(value = "兑换记录", tags = {"兑换记录"}) public AjaxResult<List<TOrder>> exchangeRecord() { return AjaxResult.success(orderService.lambdaQuery().eq(TOrder::getUserId, tokenService.getLoginUserStudy().getUserid()) public R<List<TOrder>> exchangeRecord() { return R.ok(orderService.lambdaQuery().eq(TOrder::getUserId, tokenService.getLoginUserStudy().getUserid()) .orderByDesc(TOrder::getCreateTime).list()); } @@ -178,10 +177,10 @@ @ApiImplicitParams({ @ApiImplicitParam(value = "订单id", name = "id", dataType = "String", required = true) }) public AjaxResult confirm(@RequestParam Integer id) { public R<Boolean> confirm(@RequestParam Integer id) { TOrder byId = orderService.getById(id); byId.setState(3); return AjaxResult.success(orderService.updateById(byId)); return R.ok(orderService.updateById(byId)); } /** @@ -189,8 +188,8 @@ */ @GetMapping("/shopAddress") @ApiOperation(value = "获取用户收货地址", tags = {"获取用户收货地址"}) public AjaxResult<List<Recipient>> shopAddress() { return AjaxResult.success(recipientService.lambdaQuery().eq(Recipient::getUserId, public R<List<Recipient>> shopAddress() { return R.ok(recipientService.lambdaQuery().eq(Recipient::getUserId, tokenService.getLoginUserStudy().getUserid()).list()); } @@ -199,9 +198,9 @@ */ @PostMapping("/addressSaveOrUpdate") @ApiOperation(value = "新增收货地址/修改收货地址", tags = {"新增收货地址/修改收货地址"}) public AjaxResult<String> addressSave(@RequestBody Recipient recipient) { public R<String> addressSave(@RequestBody Recipient recipient) { recipient.setUserId(tokenService.getLoginUserStudy().getUserid()); return AjaxResult.success(recipientService.addressSaveOrUpdate(recipient)); return R.ok(recipientService.addressSaveOrUpdate(recipient)); } /** @@ -212,8 +211,8 @@ @ApiImplicitParams({ @ApiImplicitParam(value = "地址信息id", name = "id", dataType = "String", required = true) }) public AjaxResult<String> addressDelete(@RequestParam String id) { return AjaxResult.success(recipientService.removeById(id) ? "删除成功!" : "删除失败!"); public R<String> addressDelete(@RequestParam String id) { return R.ok(recipientService.removeById(id) ? "删除成功!" : "删除失败!"); } /** @@ -227,9 +226,9 @@ @ApiImplicitParam(value = "订单id", name = "orderId", dataType = "String", required = true), @ApiImplicitParam(value = "完整收货地址", name = "address", dataType = "String", required = true) }) public AjaxResult<Boolean> updateOrderAddress(@RequestParam String orderId, public R<Boolean> updateOrderAddress(@RequestParam String orderId, @RequestParam String address) { return AjaxResult.success(orderService.lambdaUpdate().set(TOrder::getConsigneeAddress, address) return R.ok(orderService.lambdaUpdate().set(TOrder::getConsigneeAddress, address) .eq(TOrder::getId, orderId).eq(TOrder::getState, 1).update()); } @@ -238,8 +237,8 @@ */ @GetMapping("/addressTree") @ApiOperation(value = "收货地址省市区三级联动", tags = {"收货地址省市区三级联动"}) public AjaxResult<List<Region>> addressTree() { return AjaxResult.success(regionService.addressTree()); public R<List<Region>> addressTree() { return R.ok(regionService.addressTree()); } /** @@ -262,14 +261,14 @@ @ApiImplicitParams({ @ApiImplicitParam(value = "商品id", name = "goodId", dataType = "String", required = true) }) public AjaxResult<GoodDetailVO> goodDetail(@RequestParam String goodId) { public R<GoodDetailVO> goodDetail(@RequestParam String goodId) { // 商品详情 TGoods goods = goodsService.lambdaQuery().eq(TGoods::getId, goodId).one(); // 商品分类详情 List<TGoodsType> goodsTypes = goodsTypeService.lambdaQuery().in(TGoodsType::getId, Arrays.asList(goods.getTypeIds().split(","))).list(); // 已兑换人数 int number = goods.getBasicCount() + orderService.getGoodBuyNumber(goods.getId()); return AjaxResult.success(new GoodDetailVO(goods, goodsTypes, number)); return R.ok(new GoodDetailVO(goods, goodsTypes, number)); } /** @@ -280,11 +279,11 @@ @ApiImplicitParams({ @ApiImplicitParam(value = "商品id", name = "goodId", dataType = "String", required = true) }) public AjaxResult<GoodDetailVO> redeemNow(@RequestParam String goodId) { public R<GoodDetailVO> redeemNow(@RequestParam String goodId) { Recipient recipient = recipientService.lambdaQuery() .eq(Recipient::getUserId, tokenService.getLoginUserStudy().getUserid()) .eq(Recipient::getIsDefault, 1).one(); return AjaxResult.success(goodsService.redeemNow(goodId, recipient)); return R.ok(goodsService.redeemNow(goodId, recipient)); } /** @@ -294,9 +293,9 @@ */ @PostMapping("/goodExchange") @ApiOperation(value = "商品兑换-确认", tags = {"商品兑换-确认"}) public AjaxResult<Object> goodExchange(@RequestBody GoodExchangeDTO goodExchange) { public R<Boolean> goodExchange(@RequestBody GoodExchangeDTO goodExchange) { Recipient recipient = recipientService.getById(goodExchange.getRecipientId()); return AjaxResult.success(goodsService.goodExchange(goodExchange, recipient)); return R.ok(goodsService.goodExchange(goodExchange, recipient)); } } ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/service/ITGoodsService.java
@@ -44,5 +44,5 @@ * @param recipient 收货地址 * @return 兑换结果 */ Object goodExchange(GoodExchangeDTO goodExchange, Recipient recipient); Boolean goodExchange(GoodExchangeDTO goodExchange, Recipient recipient); } ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/TGoodsServiceImpl.java
@@ -64,7 +64,7 @@ @Override @Transactional(rollbackFor = Exception.class) public Object goodExchange(GoodExchangeDTO goodExchange, Recipient recipient) { public Boolean goodExchange(GoodExchangeDTO goodExchange, Recipient recipient) { Integer number = goodExchange.getNumber(); Integer goodId = goodExchange.getGoodId(); TGoods good = this.getById(goodId); ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TStudyController.java
@@ -8,7 +8,6 @@ import com.ruoyi.common.core.constant.RedisConstants; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.exception.GlobalException; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.redis.service.RedisService; import com.ruoyi.common.security.service.TokenService; @@ -19,7 +18,10 @@ import com.ruoyi.study.service.*; import com.ruoyi.study.vo.*; import com.ruoyi.system.api.model.LoginUserParent; import io.swagger.annotations.*; 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.util.StringUtils; import org.springframework.web.bind.annotation.*; @@ -605,9 +607,9 @@ @ApiImplicitParam(value = "所属类型", name = "type", dataType = "Integer", required = true), @ApiImplicitParam(value = "季度", name = "quarter", dataType = "Integer", required = true) }) public AjaxResult<List<StudyWeekDTO>> weekList(@RequestParam(defaultValue = "1") Integer type, @RequestParam Integer quarter) { public R<List<StudyWeekDTO>> weekList(@RequestParam(defaultValue = "1") Integer type, @RequestParam Integer quarter) { List<StudyWeekDTO> result = studyService.weekList(type, quarter); return AjaxResult.success(result); return R.ok(result); } /** @@ -622,9 +624,9 @@ @ApiImplicitParam(value = "周目", name = "week", dataType = "Integer", required = true), @ApiImplicitParam(value = "所属day", name = "day", dataType = "Integer", required = true) }) public AjaxResult<TUserStudy> studySchedule(@RequestParam Integer week, @RequestParam Integer day) { public R<TUserStudy> studySchedule(@RequestParam Integer week, @RequestParam Integer day) { TUserStudy result = studyService.studySchedule(String.valueOf(tokenService.getLoginUserStudy().getUserid()), week, day); return AjaxResult.success(result); return R.ok(result); } /** @@ -632,8 +634,8 @@ */ @GetMapping("/goodRecommend") @ApiOperation(value = "可兑换商品推荐", tags = {"可兑换商品推荐"}) public AjaxResult<List<TGoodsVO>> studySchedule() { return AjaxResult.success(goodsClient.goodRecommend()); public R<List<TGoodsVO>> studySchedule() { return R.ok(goodsClient.goodRecommend().getData()); } /** @@ -641,9 +643,9 @@ */ @PostMapping("/exitLearning") @ApiOperation(value = "退出学习(记录学习进度等信息)", tags = {"退出学习(记录学习进度等信息)"}) public AjaxResult<Boolean> exitLearning(@RequestBody TUserStudy userStudy) { public R<Boolean> exitLearning(@RequestBody TUserStudy userStudy) { // 学习时长处理 return AjaxResult.success(userStudyService.updateById(userStudy)); return R.ok(userStudyService.updateById(userStudy)); } /** @@ -683,7 +685,7 @@ @ApiImplicitParam(value = "周目", name = "week", dataType = "Integer", required = true), @ApiImplicitParam(value = "所属day", name = "day", dataType = "Integer", required = true) }) public AjaxResult<StudyLookResultVO> pictureSelectVoice(@RequestParam Integer week, @RequestParam Integer day) { public R<StudyLookResultVO> pictureSelectVoice(@RequestParam Integer week, @RequestParam Integer day) { // 判断当前登录用户是否为 会员 Boolean isVip = userService.isVip(); LambdaQueryChainWrapper<TStudyLook> wrapper = studyLookService.lambdaQuery().eq(TStudyLook::getWeek, week) @@ -694,7 +696,7 @@ } List<TStudyLook> lookList = studyLookService.lambdaQuery().eq(TStudyLook::getWeek, week) .eq(TStudyLook::getDay, day).eq(TStudyLook::getDisabled, 0).list(); return AjaxResult.success(studyService.pictureSelectVoice(week, day, lookList)); return R.ok(studyService.pictureSelectVoice(week, day, lookList)); } /** @@ -709,7 +711,7 @@ @ApiImplicitParam(value = "周目", name = "week", dataType = "Integer", required = true), @ApiImplicitParam(value = "所属day", name = "day", dataType = "Integer", required = true) }) public AjaxResult<StudyInductionResultVO> induceExclude(@RequestParam Integer week, @RequestParam Integer day) { public R<StudyInductionResultVO> induceExclude(@RequestParam Integer week, @RequestParam Integer day) { // 判断当前登录用户是否为 会员 Boolean isVip = userService.isVip(); LambdaQueryChainWrapper<TStudyInduction> wrapper = studyInductionService.lambdaQuery().eq(TStudyInduction::getWeek, week) @@ -719,7 +721,7 @@ wrapper.eq(TStudyInduction::getIsVip, 0); } List<TStudyInduction> inductionList = wrapper.list(); return AjaxResult.success(studyService.induceExclude(week, day, inductionList)); return R.ok(studyService.induceExclude(week, day, inductionList)); } /** @@ -734,7 +736,7 @@ @ApiImplicitParam(value = "周目", name = "week", dataType = "Integer", required = true), @ApiImplicitParam(value = "所属day", name = "day", dataType = "Integer", required = true) }) public AjaxResult<StudyAnswerResultVO> questionsAndAnswers(@RequestParam Integer week, @RequestParam Integer day) { public R<StudyAnswerResultVO> questionsAndAnswers(@RequestParam Integer week, @RequestParam Integer day) { // 判断当前登录用户是否为 会员 Boolean isVip = userService.isVip(); LambdaQueryChainWrapper<TStudyAnswer> wrapper = studyAnswerService.lambdaQuery().eq(TStudyAnswer::getWeek, week) @@ -744,7 +746,7 @@ wrapper.eq(TStudyAnswer::getIsVip, 0); } List<TStudyAnswer> answerList = wrapper.list(); return AjaxResult.success(studyService.questionsAndAnswers(week, day, answerList)); return R.ok(studyService.questionsAndAnswers(week, day, answerList)); } /** @@ -759,7 +761,7 @@ @ApiImplicitParam(value = "周目", name = "week", dataType = "Integer", required = true), @ApiImplicitParam(value = "所属day", name = "day", dataType = "Integer", required = true) }) public AjaxResult<StudyPairResultVO> pictureMateVoice(@RequestParam Integer week, @RequestParam Integer day) { public R<StudyPairResultVO> pictureMateVoice(@RequestParam Integer week, @RequestParam Integer day) { // 判断当前登录用户是否为 会员 Boolean isVip = userService.isVip(); LambdaQueryChainWrapper<TStudyPair> wrapper = studyPairService.lambdaQuery().eq(TStudyPair::getWeek, week) @@ -769,7 +771,7 @@ wrapper.eq(TStudyPair::getIsVip, 0); } TStudyPair pair = wrapper.one(); return AjaxResult.success(studyService.pictureMateVoice(week, day, pair)); return R.ok(studyService.pictureMateVoice(week, day, pair)); } /** @@ -784,7 +786,7 @@ @ApiImplicitParam(value = "难度(0入门、1中级、2困难)", name = "difficulty", dataType = "Integer", required = true), @ApiImplicitParam(value = "所属周目", name = "week", dataType = "Integer", required = true) }) public AjaxResult<StudyGamerResultVO> gameHearing(@RequestParam Integer difficulty, @RequestParam Integer week) { public R<StudyGamerResultVO> gameHearing(@RequestParam Integer difficulty, @RequestParam Integer week) { TGame game = gameService.lambdaQuery().eq(TGame::getWeek, week) .eq(TGame::getDisabled, 0).one(); game.setIntegral(game.getIntegral().split(",")[difficulty]); @@ -808,7 +810,7 @@ // 获取对应的数据并加入结果列表 subjectData.add(subjectId.get(randomIndex)); } return AjaxResult.success(new StudyGamerResultVO(game, return R.ok(new StudyGamerResultVO(game, subjectService.lambdaQuery().in(TSubject::getId, subjectData).eq(TSubject::getState, 1).list())); } @@ -824,7 +826,7 @@ @ApiImplicitParam(value = "难度(0入门、1中级、2困难)", name = "difficulty", dataType = "Integer", required = true), @ApiImplicitParam(value = "所属周目", name = "week", dataType = "Integer", required = true) }) public AjaxResult<StudyGamerResultVO> gameMemory(@RequestParam Integer difficulty, @RequestParam Integer week) { public R<StudyGamerResultVO> gameMemory(@RequestParam Integer difficulty, @RequestParam Integer week) { TGame game = gameService.lambdaQuery().eq(TGame::getWeek, week).eq(TGame::getDisabled, 0).one(); // 检验是否完成难度 studyService.checkDifficulty(difficulty, week, game); @@ -845,7 +847,7 @@ // 获取对应的数据并加入结果列表 subjectData.add(subjectId.get(randomIndex)); } return AjaxResult.success(new StudyGamerResultVO(game, return R.ok(new StudyGamerResultVO(game, subjectService.lambdaQuery().in(TSubject::getId, subjectData).eq(TSubject::getState, 1).list())); } @@ -857,14 +859,14 @@ */ @PostMapping("/gameAchievement") @ApiOperation(value = "完成游戏-记录游戏测试成绩", tags = {"完成游戏-记录游戏测试成绩"}) public AjaxResult<Boolean> gameAchievement(@RequestBody CompleteGameDTO completeStudy) { public R<Boolean> gameAchievement(@RequestBody CompleteGameDTO completeStudy) { TGame game = gameService.getById(completeStudy.getGameId()); // 游戏测试记录 Boolean add = gameRecordService.add(completeStudy); // 添加积分明细记录 add = add && integralRecordService.add(game.getIntegral(), completeStudy.getMethod()); // 用户账户添加积分 return AjaxResult.success(add); return R.ok(add); } private List<String> getSubjectId(Integer week) { @@ -902,12 +904,12 @@ @ApiImplicitParams({ @ApiImplicitParam(value = "所属周目", name = "week", dataType = "Integer", required = true) }) public AjaxResult<StudyStoryListenResultVO> lookPictureDbu(@RequestParam Integer week) { public R<StudyStoryListenResultVO> lookPictureDbu(@RequestParam Integer week) { // 看图配音信息 TStoryListen listen = storyListenService.lambdaQuery().eq(TStoryListen::getWeek, week).one(); // 获取对应图片语音 List<String> list = Arrays.asList(listen.getLookStory().split(",")); return AjaxResult.success(new StudyStoryListenResultVO(listen, return R.ok(new StudyStoryListenResultVO(listen, subjectService.lambdaQuery().in(TSubject::getId, list).eq(TSubject::getState, 1).list())); } @@ -921,12 +923,12 @@ @ApiImplicitParams({ @ApiImplicitParam(value = "所属周目", name = "week", dataType = "Integer", required = true) }) public AjaxResult<StudyStoryListenResultVO> frameworkMemory(@RequestParam Integer week) { public R<StudyStoryListenResultVO> frameworkMemory(@RequestParam Integer week) { // 看图配音信息 TStoryListen listen = storyListenService.lambdaQuery().eq(TStoryListen::getWeek, week).one(); // 获取对应图片语音 List<String> list = Arrays.asList(listen.getStory().split(",")); return AjaxResult.success(new StudyStoryListenResultVO(listen, return R.ok(new StudyStoryListenResultVO(listen, subjectService.lambdaQuery().in(TSubject::getId, list).eq(TSubject::getState, 1).list())); } @@ -937,7 +939,7 @@ */ @PostMapping("/completeLearning") @ApiOperation(value = "完成学习", tags = {"完成学习/其他积分来源(分享...)"}) public AjaxResult<Boolean> completeLearning(@RequestBody CompleteStudyDTO completeStudy) { public R<Boolean> completeLearning(@RequestBody CompleteStudyDTO completeStudy) { // 登录用户id Integer userId = tokenService.getLoginUserStudy().getUserid(); // 获取user详细信息,改变积分 @@ -949,7 +951,7 @@ integralRecord.setIntegral(String.valueOf(completeStudy.getIntegral())); integralRecord.setMethod(completeStudy.getMethod()); integralRecord.setUserId(userId); return AjaxResult.success(update && integralRecordService.save(integralRecord)); return R.ok(update && integralRecordService.save(integralRecord)); } /** @@ -962,7 +964,7 @@ @ApiImplicitParam(value = "故事id", name = "storyId", dataType = "Integer", required = true), @ApiImplicitParam(value = "完成答题/完成听故事", name = "method", dataType = "String", required = true) }) public AjaxResult<Boolean> completeStory(@RequestParam Integer integral, @RequestParam Integer storyId, public R<Boolean> completeStory(@RequestParam Integer integral, @RequestParam Integer storyId, @RequestParam String method) { // 添加积分明细记录 Boolean add = integralRecordService.add(String.valueOf(integral), method); @@ -971,12 +973,12 @@ TUser user = userService.lambdaQuery().eq(TUser::getId, userId).one(); // 返回结果 user.setIntegral(user.getIntegral() + integral); return AjaxResult.success(add && userService.updateById(user)); return R.ok(add && userService.updateById(user)); } @GetMapping("/studyRecord") @ApiOperation(value = "个人中心-学习记录", tags = {"个人中心-学习记录"}) public AjaxResult<StudyRecordResultVO> studyRecord() { public R<StudyRecordResultVO> studyRecord() { Integer userId = tokenService.getLoginUserStudy().getUserid(); // 学习记录 TUserStudy studyRecord = userStudyService.lambdaQuery().eq(TUserStudy::getUserId, userId) @@ -984,7 +986,7 @@ // 游戏测试成绩 List<TGameRecord> gameRecordList = gameRecordService.lambdaQuery().eq(TGameRecord::getUserId, userId) .eq(TGameRecord::getDisabled, 0).list(); return AjaxResult.success(new StudyRecordResultVO(studyRecord,gameRecordList)); return R.ok(new StudyRecordResultVO(studyRecord,gameRecordList)); } @GetMapping("/integralDetail") @@ -994,10 +996,10 @@ @ApiImplicitParam(value = "页码", name = "pageNum", dataType = "Integer", required = true), @ApiImplicitParam(value = "每页显示条数", name = "pageSize", dataType = "Integer", required = true) }) public AjaxResult<IPage<TIntegralRecord>> integralDetail(String time, public R<IPage<TIntegralRecord>> integralDetail(String time, @RequestParam("pageNum") Integer pageNum, @RequestParam("pageSize") Integer pageSize) { return AjaxResult.success(integralRecordService.integralDetail(new Page<>(pageNum, pageSize), tokenService.getLoginUserStudy().getUserid(), time)); return R.ok(integralRecordService.integralDetail(new Page<>(pageNum, pageSize), tokenService.getLoginUserStudy().getUserid(), time)); } /** ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TUserController.java
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ruoyi.common.core.constant.RedisConstants; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.exception.GlobalException; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.redis.service.RedisService; @@ -65,9 +66,9 @@ @PostMapping("/vipInfo") @ApiOperation(value = "会员中心-获取会员说明、当前登录用户是否为会员、会员购买规格", tags = {"家长端-个人中心"}) public AjaxResult<List<VipInfoVO>> vipInfo() { public R<List<VipInfoVO>> vipInfo() { if (tokenService.getLoginUser1() == null) { return AjaxResult.tokenError("登录失效", new Object()); throw new GlobalException("登录失效!"); } List<VipInfoVO> vipInfoVOS = new ArrayList<>(); List<TVipSet> data = managementClient.getVipSet1().getData(); @@ -92,7 +93,7 @@ vipInfoVO.setAmount(datum.getAmount()); vipInfoVOS.add(vipInfoVO); } return AjaxResult.ok(vipInfoVOS); return R.ok(vipInfoVOS); } @Autowired @@ -308,38 +309,38 @@ @PostMapping("/getPage") @ApiOperation(value = "获取注意事项", tags = {"家长端-注意事项"}) public AjaxResult<String> getPage() { public R<String> getPage() { List<TPage> data = managementClient.getPage1().getData(); for (TPage datum : data) { if (datum.getType() == 4) { return AjaxResult.success(datum.getImg()); return R.ok(datum.getImg()); } } return AjaxResult.success(); return R.ok(); } @PostMapping("/parentPage") @ApiOperation(value = "平板", tags = {"家长端-启动页"}) public AjaxResult<String> parentPage() { public R<String> parentPage() { List<TPage> data = managementClient.getPage1().getData(); for (TPage datum : data) { if (datum.getType() == 3) { return AjaxResult.success(datum.getImg()); return R.ok(datum.getImg()); } } return AjaxResult.success(); return R.ok(); } @PostMapping("/parentPage1") @ApiOperation(value = "手机", tags = {"家长端-启动页"}) public AjaxResult<String> parentPage1() { public R<String> parentPage1() { List<TPage> data = managementClient.getPage1().getData(); for (TPage datum : data) { if (datum.getType() == 2) { return AjaxResult.success(datum.getImg()); return R.ok(datum.getImg()); } } return AjaxResult.success(); return R.ok(); } @PostMapping("/getProtocol") @@ -347,28 +348,28 @@ @ApiImplicitParams({ @ApiImplicitParam(value = "类型 1用户 2隐私 3注销", name = "type", dataType = "string", required = true), }) public AjaxResult<String> getProtocol(Integer type) { public R<String> getProtocol(Integer type) { String data = managementClient.agreement1(type).getData(); return AjaxResult.success(data); return R.ok(data); } @PostMapping("/useGuide") @ApiOperation(value = "使用指南", tags = {"家长端-使用指南"}) public AjaxResult<PageInfo<TUseGuide>> useGuide(@RequestBody UseGuideQuery query) { public R<PageInfo<TUseGuide>> useGuide(@RequestBody UseGuideQuery query) { PageInfo<TUseGuide> data = managementClient.useGuide1(query).getData(); return AjaxResult.success(data); return R.ok(data); } @PostMapping("/feedBack") @ApiOperation(value = "反馈", tags = {"家长端-意见反馈"}) public AjaxResult feedBack(@RequestBody TFeedback dto) { public R<String> feedBack(@RequestBody TFeedback dto) { if (tokenService.getLoginUser1() == null) { return AjaxResult.tokenError("登录失效", new Object()); throw new GlobalException("登录失效!"); } LoginUserParent loginUser1 = tokenService.getLoginUser1(); dto.setUserId(loginUser1.getUserid()); managementClient.addFeedBack(dto); return AjaxResult.success("反馈成功"); return R.ok("反馈成功"); } @PostMapping("/parentLogin") @@ -377,25 +378,25 @@ @ApiImplicitParam(value = "手机号", name = "phone", dataType = "string", required = true), @ApiImplicitParam(value = "验证码", name = "phoneCode", dataType = "string", required = true) }) public AjaxResult login(String phone, String phoneCode) { public R<Map<String,Object>> login(String phone, String phoneCode) { TUser tUser1 = userService.getOne(new QueryWrapper<TUser>() .ne("state", 3) .eq("phone", phone)); if (tUser1 != null) { if (tUser1.getState() == 2) { return AjaxResult.error("登录失败,您的账号已被冻结!"); throw new GlobalException("登录失败,您的账号已被冻结!"); } } else { // 手机验证码校验 Object redisPhoneCode = redisService.getCacheObject(RedisConstants.PHONE_CODE + phone); if (null == redisPhoneCode) { return AjaxResult.error("登录失败,手机验证码已过期!"); throw new GlobalException("登录失败,手机验证码已过期!"); } else { // redis 验证码的value 为 code:时间戳 String rCodeAndTime = String.valueOf(redisPhoneCode); String rCode = rCodeAndTime.split(":")[0]; if (!rCode.equalsIgnoreCase(phoneCode)) { return AjaxResult.error("登录失败,手机验证码输入有误!"); throw new GlobalException("登录失败,手机验证码输入有误!"); } else { tUser1 = getUser(phone); userService.save(tUser1); @@ -410,7 +411,7 @@ HashMap<String, Object> map = new HashMap<>(); map.put("token", tokenService.createToken1(loginUserParent)); // 获取登录token return AjaxResult.success(map); return R.ok(map); } /** @@ -420,7 +421,7 @@ */ @PostMapping("/studyLogin") @ApiOperation(value = "学习端-登录", tags = {"学习端-登录"}) public AjaxResult studyLogin(@RequestBody @Validated RegisterPhoneRequest phoneRequest) { public R<Map<String,Object>> studyLogin(@RequestBody @Validated RegisterPhoneRequest phoneRequest) { String phone = phoneRequest.getPhone(); String phoneCode = phoneRequest.getPhoneCode(); TUser user = userService.getOne(new QueryWrapper<TUser>() @@ -428,19 +429,19 @@ .eq("phone", phone)); if (user != null) { if (user.getState() == 2) { return AjaxResult.error("登录失败,您的账号已被冻结!"); throw new GlobalException("登录失败,您的账号已被冻结!"); } } else { // 手机验证码校验 Object redisPhoneCode = redisService.getCacheObject(RedisConstants.PHONE_CODE + phone); if (null == redisPhoneCode) { return AjaxResult.error("登录失败,手机验证码已过期!"); throw new GlobalException("登录失败,手机验证码已过期!"); } else { // redis 验证码的value 为 code:时间戳 String rCodeAndTime = String.valueOf(redisPhoneCode); String rCode = rCodeAndTime.split(":")[0]; if (!rCode.equalsIgnoreCase(phoneCode)) { return AjaxResult.error("登录失败,手机验证码输入有误!"); throw new GlobalException("登录失败,手机验证码输入有误!"); } else { user = getUser(phone); userService.save(user); @@ -456,7 +457,7 @@ HashMap<String, Object> map = new HashMap<>(); map.put("token", tokenService.createTokenStudy(loginUserParent)); // 获取登录token return AjaxResult.success(map); return R.ok(map); } private TUser getUser(String phone) { @@ -481,8 +482,8 @@ @ApiImplicitParams({ @ApiImplicitParam(value = "手机号", name = "phone", dataType = "string", required = true), }) public AjaxResult sendPhoneCode(@RequestParam String phone) { return userService.phoneCode(phone) ? AjaxResult.success() : AjaxResult.error(); public R sendPhoneCode(@RequestParam String phone) { return userService.phoneCode(phone) ? R.ok() : R.fail(); } /** @@ -490,7 +491,7 @@ */ @GetMapping("/shareInfo") @ApiOperation(value = "微信分享信息", tags = {"微信分享信息"}) public AjaxResult shareInfo() { public R<TSysSet> shareInfo() { // 分享信息 TSysSet data = managementClient.shareInfo().getData(); Integer userid = tokenService.getLoginUserStudy().getUserid(); @@ -508,7 +509,7 @@ record.setUserId(userid); userShareService.save(record); } return AjaxResult.success(); return R.ok(data); } /** @@ -527,9 +528,9 @@ @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer eyJhbGciOiJIUzUxMiJ....", required = true, paramType = "header"), }) public AjaxResult deleteUser() { public R<String> deleteUser() { if (tokenService.getLoginUser1() == null) { return AjaxResult.tokenError("登录失效"); throw new GlobalException("登录失效!"); } Integer userid = tokenService.getLoginUser1().getUserid(); TUser tUser = userService.getById(userid); @@ -538,7 +539,7 @@ userService.updateById(tUser); userService.removeById(tUser); return AjaxResult.success("注销成功"); return R.ok("注销成功"); } @PostMapping("/logout") @@ -546,9 +547,9 @@ @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer eyJhbGciOiJIUzUxMiJ....", required = true, paramType = "header"), }) public AjaxResult logout(HttpServletRequest request) { public R<String> logout(HttpServletRequest request) { if (tokenService.getLoginUser1() == null) { return AjaxResult.tokenError("登录失效"); throw new GlobalException("登录失效!"); } String token = SecurityUtils.getToken(request); if (com.ruoyi.common.core.utils.StringUtils.isNotEmpty(token)) { @@ -556,7 +557,7 @@ AuthUtil.logoutByToken1(token); } // todo 清除token return AjaxResult.success("退出登录成功"); return R.ok("退出登录成功"); } @PostMapping("/updateUserInfo") @@ -567,7 +568,7 @@ @ApiImplicitParam(name = "phone", value = "电话 改什么就只传什么"), @ApiImplicitParam(name = "headImg", value = "头像 改什么就只传什么"), }) public AjaxResult updateUserInfo(String name, String phone, String headImg) { public R<String> updateUserInfo(String name, String phone, String headImg) { // todo 获取用户id Integer userid = tokenService.getLoginUser1().getUserid(); TUser byId = userService.getById(userid); @@ -582,13 +583,13 @@ // } if (phone.equals(byId.getPhone())) { return AjaxResult.error("更换的手机号不能和原手机号相同"); return R.fail("更换的手机号不能和原手机号相同!"); } List<TUser> list = userService.list(new QueryWrapper<TUser>() .eq("phone", phone) .ne("state", 3)); if (list.size() > 0) { return AjaxResult.error("更换的手机号已被使用", new Object()); return R.fail("更换的手机号已被使用!"); } byId.setPhone(phone); } @@ -596,7 +597,7 @@ byId.setHeadImg(headImg); } userService.saveOrUpdate(byId); return AjaxResult.success("修改成功"); return R.ok("修改成功"); } @ResponseBody ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/domain/TStudyAnswer.java
@@ -58,4 +58,5 @@ * 非会员是否查看 0否1是 */ private Integer isVip; } ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TStudyServiceImpl.java
@@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.core.exception.GlobalException; import com.ruoyi.common.core.utils.bean.BeanUtils; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.study.domain.*; import com.ruoyi.study.dto.StudyWeekDTO; @@ -102,13 +103,27 @@ // 随机获取一组题 Random rand = new Random(); TStudyAnswer data = answerList.get(rand.nextInt(answerList.size())); AnswerVO one = new AnswerVO(); BeanUtils.copyProperties(data, one); answerList.remove(data); TStudyAnswer dataTwo = answerList.get(rand.nextInt(answerList.size())); AnswerVO two = new AnswerVO(); BeanUtils.copyProperties(dataTwo, two); // 获取问题题目 和 回答题目 List<String> ids = new ArrayList<>(); ids.add(String.valueOf(data.getSubject())); ids.add(String.valueOf(data.getAnswerSubject())); ids.add(String.valueOf(one.getSubject())); ids.add(String.valueOf(one.getAnswerSubject())); // 有问有答 List<TSubject> subjects = getSubjects(ids.toArray(ids.toArray(new String[0]))); return new StudyAnswerResultVO(data, subjects); List<TStudyAnswer> answers = new ArrayList<>(); answers.add(one); one.setSubjectList(getSubjects(ids.toArray(new String[0]))); // 第二题信息 List<String> twoIds = new ArrayList<>(); answers.add(two); twoIds.add(String.valueOf(two.getSubject())); twoIds.add(String.valueOf(two.getAnswerSubject())); two.setSubjectList(getSubjects(twoIds.toArray(new String[0]))); return new StudyAnswerResultVO(answers); } @Override ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/vo/AnswerVO.java
New file @@ -0,0 +1,29 @@ package com.ruoyi.study.vo; import com.baomidou.mybatisplus.annotation.TableField; import com.ruoyi.study.domain.TStudyAnswer; import com.ruoyi.study.domain.TSubject; import io.swagger.annotations.ApiModel; import lombok.Data; import lombok.EqualsAndHashCode; import java.util.List; /** * @author HJL * @version 1.0 * @since 2024-05-22 14:48 */ @EqualsAndHashCode(callSuper = true) @Data @ApiModel(value = "有问有答VO信息类") public class AnswerVO extends TStudyAnswer{ /** * 录音及图片信息 */ @TableField(exist = false) private List<TSubject> subjectList; } ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/vo/StudyAnswerResultVO.java
@@ -1,11 +1,9 @@ package com.ruoyi.study.vo; import com.ruoyi.study.domain.TStudyAnswer; import com.ruoyi.study.domain.TSubject; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import java.util.List; @@ -14,20 +12,17 @@ * @version 1.0 * @since 2024-05-22 14:48 */ @EqualsAndHashCode(callSuper = true) @Data @ApiModel("有问有答返回信息类") public class StudyAnswerResultVO extends StudyModelVO { @ApiModel(value = "有问有答返回信息类") public class StudyAnswerResultVO{ /** * 自主学习题目信息 */ @ApiModelProperty("自主学习题目信息") private TStudyAnswer data; private List<TStudyAnswer> data; public StudyAnswerResultVO(TStudyAnswer data, List<TSubject> subjectList) { public StudyAnswerResultVO(List<TStudyAnswer> data) { this.data = data; super.setSubjectList(subjectList); } } ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/vo/StudyAnswerSubjectVO.java
New file @@ -0,0 +1,34 @@ package com.ruoyi.study.vo; import com.baomidou.mybatisplus.annotation.TableField; import com.ruoyi.study.domain.TStudyAnswer; import com.ruoyi.study.domain.TSubject; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; /** * @author HJL * @version 1.0 * @since 2024-05-22 14:48 */ @Data @ApiModel(value = "有问有答返回信息类") public class StudyAnswerSubjectVO { /** * 自主学习题目信息 */ @ApiModelProperty("自主学习题目信息") private List<TStudyAnswer> data; /** * 录音及图片信息 */ @TableField(exist = false) private List<TSubject> subjectList; } ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/vo/StudyGamerResultVO.java
@@ -16,7 +16,7 @@ */ @EqualsAndHashCode(callSuper = true) @Data @ApiModel("超级听力&&超级记忆返回信息类") @ApiModel(value = "超级听力&&超级记忆返回信息类") public class StudyGamerResultVO extends StudyModelVO { /** ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/vo/StudyInductionResultVO.java
@@ -16,7 +16,7 @@ */ @EqualsAndHashCode(callSuper = true) @Data @ApiModel("归纳排除返回信息类") @ApiModel(value = "归纳排除返回信息类") public class StudyInductionResultVO extends StudyModelVO { /** ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/vo/StudyListenResultVO.java
@@ -16,7 +16,7 @@ */ @EqualsAndHashCode(callSuper = true) @Data @ApiModel("听音选图返回信息类") @ApiModel(value = "听音选图返回信息类") public class StudyListenResultVO extends StudyModelVO { /** ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/vo/StudyLookResultVO.java
@@ -16,7 +16,7 @@ */ @EqualsAndHashCode(callSuper = true) @Data @ApiModel("看图选音返回信息类") @ApiModel(value = "看图选音返回信息类") public class StudyLookResultVO extends StudyModelVO{ /** ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/vo/StudyPairResultVO.java
@@ -16,7 +16,7 @@ */ @EqualsAndHashCode(callSuper = true) @Data @ApiModel("音图相配返回信息类") @ApiModel(value = "音图相配返回信息类") public class StudyPairResultVO extends StudyModelVO { /** ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/vo/StudyRecordResultVO.java
@@ -14,7 +14,7 @@ * @since 2024-05-22 14:39 */ @Data @ApiModel("个人中心-学习记录返回信息类") @ApiModel(value = "个人中心-学习记录返回信息类") public class StudyRecordResultVO{ /** ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/vo/StudyStoryListenResultVO.java
@@ -16,7 +16,7 @@ */ @EqualsAndHashCode(callSuper = true) @Data @ApiModel("自主故事-看图配音&&框架记忆返回信息类") @ApiModel(value = "自主故事-看图配音&&框架记忆返回信息类") public class StudyStoryListenResultVO extends StudyModelVO { /**