From bbc55de9bb0f6e5d3d8267c628d25780c19ebf36 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期六, 08 二月 2025 17:20:06 +0800 Subject: [PATCH] 冥想2.0新增代码 --- xinquan-api/xinquan-api-meditation/src/main/java/com/xinquan/meditation/api/factory/RemoteMeditationFallbackFactory.java | 5 xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/domain/vo/ClientMeditationEverydayVO.java | 5 xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/domain/vo/ClientHomeBackgroundMusicVO.java | 9 + xinquan-modules/xinquan-system/src/main/java/com/xinquan/system/controller/VersionController.java | 24 +++ xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/mapper/MeditationVideoMapper.java | 25 +++ xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/service/MeditationVideoService.java | 17 ++ xinquan-auth/pom.xml | 5 xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/domain/MeditationVideo.java | 52 +++++++ xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/service/impl/MeditationVideoServiceImpl.java | 40 +++++ xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/controller/client/ClientHomeController.java | 26 +++ xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/controller/client/ClientMeditationEverydayController.java | 47 +++++- xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/domain/MeditationEveryday.java | 2 xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/controller/client/ClientOrderController.java | 95 +++++++++++++ xinquan-auth/src/main/java/com/xinquan/auth/controller/TokenController.java | 4 xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/service/impl/AppUserServiceImpl.java | 20 ++ xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/domain/HomeBackgroundMusic.java | 10 + xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/service/impl/MeditationEverydayServiceImpl.java | 14 ++ xinquan-api/xinquan-api-meditation/src/main/java/com/xinquan/meditation/api/feign/RemoteMeditationService.java | 2 18 files changed, 382 insertions(+), 20 deletions(-) diff --git a/xinquan-api/xinquan-api-meditation/src/main/java/com/xinquan/meditation/api/factory/RemoteMeditationFallbackFactory.java b/xinquan-api/xinquan-api-meditation/src/main/java/com/xinquan/meditation/api/factory/RemoteMeditationFallbackFactory.java index 8e2b803..acfac4e 100644 --- a/xinquan-api/xinquan-api-meditation/src/main/java/com/xinquan/meditation/api/factory/RemoteMeditationFallbackFactory.java +++ b/xinquan-api/xinquan-api-meditation/src/main/java/com/xinquan/meditation/api/factory/RemoteMeditationFallbackFactory.java @@ -21,6 +21,11 @@ public RemoteMeditationService create(Throwable cause) { return new RemoteMeditationService() { @Override + public R addHomeBackgroundMusicDefault(Long id) { + return null; + } + + @Override public R<MeditationQuestion> getMeditationQuestion(String id) { return null; } diff --git a/xinquan-api/xinquan-api-meditation/src/main/java/com/xinquan/meditation/api/feign/RemoteMeditationService.java b/xinquan-api/xinquan-api-meditation/src/main/java/com/xinquan/meditation/api/feign/RemoteMeditationService.java index 77a5689..01e327f 100644 --- a/xinquan-api/xinquan-api-meditation/src/main/java/com/xinquan/meditation/api/feign/RemoteMeditationService.java +++ b/xinquan-api/xinquan-api-meditation/src/main/java/com/xinquan/meditation/api/feign/RemoteMeditationService.java @@ -20,6 +20,8 @@ */ @FeignClient(contextId = "remoteMeditationService", value = ServiceNameConstants.MEDITATION_SERVICE, fallbackFactory = RemoteMeditationFallbackFactory.class) public interface RemoteMeditationService { + @GetMapping("/client/meditation/home/addHomeBackgroundMusicDefault/{id}") + public R addHomeBackgroundMusicDefault(@PathVariable("id") Long id); @GetMapping("/client/meditation/meditation-question/getMeditationQuestion/{id}") public R<MeditationQuestion> getMeditationQuestion(@PathVariable("id") String id); /** diff --git a/xinquan-auth/pom.xml b/xinquan-auth/pom.xml index 8c83322..81ae024 100644 --- a/xinquan-auth/pom.xml +++ b/xinquan-auth/pom.xml @@ -37,6 +37,11 @@ <artifactId>xinquan-api-user</artifactId> <version>3.6.2</version> </dependency> + <dependency> + <groupId>com.xinquan</groupId> + <artifactId>xinquan-api-meditation</artifactId> + <version>3.6.2</version> + </dependency> <!-- SpringCloud Alibaba Nacos --> <dependency> <groupId>com.alibaba.cloud</groupId> diff --git a/xinquan-auth/src/main/java/com/xinquan/auth/controller/TokenController.java b/xinquan-auth/src/main/java/com/xinquan/auth/controller/TokenController.java index 2faacf9..b087158 100644 --- a/xinquan-auth/src/main/java/com/xinquan/auth/controller/TokenController.java +++ b/xinquan-auth/src/main/java/com/xinquan/auth/controller/TokenController.java @@ -14,6 +14,7 @@ import com.xinquan.common.security.auth.AuthUtil; import com.xinquan.common.security.service.TokenService; import com.xinquan.common.security.utils.SecurityUtils; +import com.xinquan.meditation.api.feign.RemoteMeditationService; import com.xinquan.system.api.domain.AppUser; import com.xinquan.system.api.domain.SysMenu; import com.xinquan.system.api.domain.SysRole; @@ -63,7 +64,8 @@ private SysUserClient userClient; @Resource private RemoteAppUserService remoteAppUserService; - + @Resource + private RemoteMeditationService remoteMeditationService; /** * 发送验证码 diff --git a/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/controller/client/ClientHomeController.java b/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/controller/client/ClientHomeController.java index e99612d..620bd94 100644 --- a/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/controller/client/ClientHomeController.java +++ b/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/controller/client/ClientHomeController.java @@ -1,6 +1,7 @@ package com.xinquan.meditation.controller.client; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.xinquan.common.core.constant.SecurityConstants; import com.xinquan.common.core.domain.R; @@ -63,7 +64,21 @@ private HomeBackgroundMusicUserService homeBackgroundMusicUserService; @Autowired private TokenService tokenService; - + // 新增需求 用户注册默认给一个背景音频设置 + @GetMapping("/addHomeBackgroundMusicDefault/{id}") + public R addHomeBackgroundMusicDefault(@PathVariable("id") Long id) { + List<HomeBackgroundMusic> list = homeBackgroundMusicService.list(); + if (!list.isEmpty()) { + List<HomeBackgroundMusicUser> homeBackgroundMusicUserList = homeBackgroundMusicUserService.lambdaQuery().eq(HomeBackgroundMusicUser::getAppUserId, id).list(); + if (homeBackgroundMusicUserList.isEmpty()) { + HomeBackgroundMusicUser homeBackgroundMusicUser = new HomeBackgroundMusicUser(); + homeBackgroundMusicUser.setAppUserId(id); + homeBackgroundMusicUser.setHomeBackgroundMusicId(list.get(0).getId()); + homeBackgroundMusicUserService.save(homeBackgroundMusicUser); + } + } + return R.ok(); + } @GetMapping("/listHomeBackgroundMusic") @ApiOperation(value = "背景音乐列表查询-分页", tags = "管理后台-首页背景音乐管理") @ApiImplicitParams({ @@ -88,7 +103,6 @@ @PostMapping("/addHomeBackgroundMusic") @Log(title = "【首页背景音乐管理】新增", businessType = BusinessType.INSERT) @ApiOperation(value = "新增背景", tags = "管理后台-首页背景音乐管理") - public R addHomeBackgroundMusic(@RequestBody HomeBackgroundMusic homeBackgroundMusic) { return R.ok(homeBackgroundMusicService.save(homeBackgroundMusic)); } @@ -101,7 +115,13 @@ @ApiOperation(value = "修改背景", tags = "管理后台-首页背景音乐管理") @Log(title = "【首页背景音乐管理】修改", businessType = BusinessType.UPDATE) public R updateHomeBackgroundMusic(@RequestBody HomeBackgroundMusic homeBackgroundMusic) { - return R.ok(homeBackgroundMusicService.updateById(homeBackgroundMusic)); + homeBackgroundMusicService.updateById(homeBackgroundMusic); + LambdaUpdateWrapper<HomeBackgroundMusic> homeBackgroundMusicLambdaUpdateWrapper = new LambdaUpdateWrapper<>(); + if (homeBackgroundMusic.getBackUrl()==null){ + homeBackgroundMusicLambdaUpdateWrapper.set(HomeBackgroundMusic::getBackUrl,null); + homeBackgroundMusicLambdaUpdateWrapper.set(HomeBackgroundMusic::getBackName,null); + } + return R.ok(); } @PostMapping("/deleteHomeBackgroundMusic") @ApiOperation(value = "批量删除", tags = "管理后台-首页背景音乐管理") diff --git a/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/controller/client/ClientMeditationEverydayController.java b/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/controller/client/ClientMeditationEverydayController.java index 2a9f1e3..b6ab3bd 100644 --- a/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/controller/client/ClientMeditationEverydayController.java +++ b/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/controller/client/ClientMeditationEverydayController.java @@ -13,10 +13,9 @@ import com.xinquan.meditation.domain.MeditationEveryday; import com.xinquan.meditation.domain.MeditationEveryday; import com.xinquan.meditation.domain.MeditationTag; +import com.xinquan.meditation.domain.MeditationVideo; +import com.xinquan.meditation.service.*; import com.xinquan.meditation.service.MeditationEverydayService; -import com.xinquan.meditation.service.MeditationEverydayService; -import com.xinquan.meditation.service.MeditationService; -import com.xinquan.meditation.service.MeditationTagService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; @@ -45,6 +44,8 @@ private MeditationService meditationService; @Autowired private MeditationTagService meditationTagService; + @Autowired + private MeditationVideoService meditationVideoService; @PostMapping("/meditationCategoryManagementList") @ApiOperation(value = "每日冥想库列表-分页", tags = {"管理后台-每日冥想库管理"}) @ApiImplicitParams({ @@ -86,6 +87,32 @@ homeBackgroundMusic.setCreateTime(LocalDateTime.now()); return R.ok(meditationEverydayService.save(homeBackgroundMusic)); } + @PostMapping("/addMeditationVideo") + @ApiOperation(value = "新增/编辑微电影", tags = "2.0新增 管理后台") + public R addMeditationVideo(@RequestBody MeditationVideo meditationVideo) { + meditationVideo.setCreateBy(SecurityUtils.getUsername()); + meditationVideo.setCreateTime(LocalDateTime.now()); + return R.ok(meditationVideoService.saveOrUpdate(meditationVideo)); + } + @PostMapping("/getMeditationVideo") + @ApiOperation(value = "获取微电影", tags = "2.0新增") + public R<MeditationVideo> getMeditationVideo() { + return R.ok(meditationVideoService.getOne(null)); + } + @GetMapping("/setVideoIsShow") + @ApiOperation(value = "设置是否展示微电影 0否1是", tags = "2.0新增 管理后台") + public R<MeditationVideo> setVideoIsShow(Integer isShow) { + MeditationVideo one = meditationVideoService.getOne(null); + one.setIsShow(isShow); + meditationVideoService.updateById(one); + return R.ok(); + } +// @GetMapping("/getVideoIsShow") +// @ApiOperation(value = "是否展示微电影 0否1是 返回0展示每日疗愈 1展示微电影", tags = "2.0新增 移动端") +// public R<Integer> getVideoIsShow() { +// MeditationVideo one = meditationVideoService.getOne(null); +// return R.ok(one.getIsShow()); +// } @GetMapping("/detailMeditationEveryday") @ApiOperation(value = "查看详情每日冥想库管理", tags = "管理后台-每日冥想库管理") public R<MeditationEveryday> detailMeditationEveryday(String uid) { @@ -104,12 +131,14 @@ List<Long> list = Arrays.asList(ids.split(",")).stream().map(Long::valueOf).collect(Collectors.toList()); List<MeditationEveryday> list1 = meditationEverydayService.lambdaQuery().in(MeditationEveryday::getId, list).list(); for (MeditationEveryday l : list1) { - Meditation byId = meditationService.getById(l.getMeditationId()); - if (byId!=null){ - byId.setIsEveryday(2); - meditationService.updateById(byId); - meditationTagService.remove(new LambdaQueryWrapper<>(MeditationTag.class) - .eq(MeditationTag::getMeditationId,byId.getId())); + if (l.getMeditationId()!=null){ + Meditation byId = meditationService.getById(l.getMeditationId()); + if (byId!=null){ + byId.setIsEveryday(2); + meditationService.updateById(byId); + meditationTagService.remove(new LambdaQueryWrapper<>(MeditationTag.class) + .eq(MeditationTag::getMeditationId,byId.getId())); + } } } return R.ok(meditationEverydayService.removeBatchByIds(Arrays.asList(ids.split(",")).stream().map(Long::valueOf).collect(Collectors.toList()))); diff --git a/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/domain/HomeBackgroundMusic.java b/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/domain/HomeBackgroundMusic.java index 3b6050c..f0239e6 100644 --- a/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/domain/HomeBackgroundMusic.java +++ b/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/domain/HomeBackgroundMusic.java @@ -30,7 +30,7 @@ @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "背景图片") + @ApiModelProperty(value = "背景图片/背景视频封面图") @TableField("image_url") private String imageUrl; @ApiModelProperty(value = "背景名称") @@ -52,5 +52,13 @@ @TableField("sort_num") private Integer sortNum; + @ApiModelProperty(value = "背景视频 与背景图片二选一") + @TableField("back_url") + private String backUrl; + + @ApiModelProperty(value = "背景视频文件名称") + @TableField("back_name") + private String backName; + } diff --git a/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/domain/MeditationEveryday.java b/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/domain/MeditationEveryday.java index 2879b4d..deae175 100644 --- a/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/domain/MeditationEveryday.java +++ b/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/domain/MeditationEveryday.java @@ -55,6 +55,4 @@ @ApiModelProperty(value = "每日冥想背景图片") @TableField("image_url") private String imageUrl; - - } diff --git a/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/domain/MeditationVideo.java b/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/domain/MeditationVideo.java new file mode 100644 index 0000000..9e6b1d2 --- /dev/null +++ b/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/domain/MeditationVideo.java @@ -0,0 +1,52 @@ +package com.xinquan.meditation.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.xinquan.common.core.web.domain.BaseModel; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalTime; + +/** + * <p> + * 每日冥想库表 + * </p> + * + * @author mitao + * @since 2024-08-21 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("t_meditation_video") +@ApiModel(value="MeditationVideo对象", description="微电影") +public class MeditationVideo extends BaseModel { + private static final long serialVersionUID = 1L; + @ApiModelProperty(value = "id") + @TableId(value = "id",type = IdType.ASSIGN_ID) + private Long id; + @ApiModelProperty(value = "微电影url") + @TableField("video_url") + private String videoUrl; + @ApiModelProperty(value = "微电影封面") + @TableField("image_url") + private String imageUrl; + @ApiModelProperty(value = "视频文件名称") + @TableField("video_name") + private String videoName; + @ApiModelProperty(value = "视频时长 单位秒") + @TableField("video_second") + private Integer videoSecond; + @ApiModelProperty(value = "微电影是否展示在首页0否1是 web端忽略") + @TableField("is_show") + private Integer isShow; + @ApiModelProperty(value = "标题") + @TableField("title") + private String title; + +} diff --git a/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/domain/vo/ClientHomeBackgroundMusicVO.java b/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/domain/vo/ClientHomeBackgroundMusicVO.java index 10826fa..ff440c8 100644 --- a/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/domain/vo/ClientHomeBackgroundMusicVO.java +++ b/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/domain/vo/ClientHomeBackgroundMusicVO.java @@ -1,5 +1,6 @@ package com.xinquan.meditation.domain.vo; +import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.io.Serializable; @@ -18,7 +19,7 @@ @ApiModelProperty(value = "首页背景音乐id") private Long id; - @ApiModelProperty(value = "背景图片") + @ApiModelProperty(value = "背景图片/背景视频封面") private String imageUrl; @ApiModelProperty(value = "音频文件") @@ -26,4 +27,10 @@ @ApiModelProperty(value = "文件名称") private String audioFileName; + + @ApiModelProperty(value = "背景视频 与背景图片二选一") + private String backUrl; + @ApiModelProperty(value = "背景视频文件名称") + private String backName; + } diff --git a/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/domain/vo/ClientMeditationEverydayVO.java b/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/domain/vo/ClientMeditationEverydayVO.java index a00b974..fc83556 100644 --- a/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/domain/vo/ClientMeditationEverydayVO.java +++ b/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/domain/vo/ClientMeditationEverydayVO.java @@ -1,6 +1,7 @@ package com.xinquan.meditation.domain.vo; import com.fasterxml.jackson.annotation.JsonFormat; +import com.xinquan.meditation.domain.MeditationVideo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.io.Serializable; @@ -38,4 +39,8 @@ @ApiModelProperty(value = "每日冥想") private ClientMeditationVO clientMeditationVO; + @ApiModelProperty(value = "0展示每日疗愈 1展示微电影") + private Integer isShow; + @ApiModelProperty(value = "微电影") + private MeditationVideo meditationVideo; } diff --git a/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/mapper/MeditationVideoMapper.java b/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/mapper/MeditationVideoMapper.java new file mode 100644 index 0000000..123f7d3 --- /dev/null +++ b/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/mapper/MeditationVideoMapper.java @@ -0,0 +1,25 @@ +package com.xinquan.meditation.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.xinquan.common.core.web.page.PageInfo; +import com.xinquan.meditation.api.domain.Meditation; +import com.xinquan.meditation.domain.MeditationHall; +import com.xinquan.meditation.domain.MeditationVideo; +import com.xinquan.meditation.domain.vo.ClientMeditationVO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Set; + +/** + * <p> + * 冥想音频表 Mapper 接口 + * </p> + * + * @author mitao + * @since 2024-08-21 + */ +public interface MeditationVideoMapper extends BaseMapper<MeditationVideo> { + + +} diff --git a/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/service/MeditationVideoService.java b/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/service/MeditationVideoService.java new file mode 100644 index 0000000..47735c2 --- /dev/null +++ b/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/service/MeditationVideoService.java @@ -0,0 +1,17 @@ +package com.xinquan.meditation.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.xinquan.meditation.domain.MeditationMusic; +import com.xinquan.meditation.domain.MeditationVideo; + +/** + * <p> + * 冥想音频背景音乐表 服务类 + * </p> + * + * @author mitao + * @since 2024-08-21 + */ +public interface MeditationVideoService extends IService<MeditationVideo> { + +} diff --git a/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/service/impl/MeditationEverydayServiceImpl.java b/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/service/impl/MeditationEverydayServiceImpl.java index ae3fdeb..7dc0320 100644 --- a/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/service/impl/MeditationEverydayServiceImpl.java +++ b/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/service/impl/MeditationEverydayServiceImpl.java @@ -2,16 +2,19 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.xinquan.common.core.domain.R; import com.xinquan.common.core.utils.DateUtils; import com.xinquan.common.core.utils.page.BeanUtils; import com.xinquan.meditation.api.domain.Meditation; import com.xinquan.meditation.domain.MeditationEveryday; import com.xinquan.meditation.domain.MeditationMusic; +import com.xinquan.meditation.domain.MeditationVideo; import com.xinquan.meditation.domain.vo.ClientMeditationEverydayVO; import com.xinquan.meditation.domain.vo.ClientMeditationVO; import com.xinquan.meditation.mapper.MeditationEverydayMapper; import com.xinquan.meditation.mapper.MeditationMapper; import com.xinquan.meditation.mapper.MeditationMusicMapper; +import com.xinquan.meditation.mapper.MeditationVideoMapper; import com.xinquan.meditation.service.MeditationEverydayService; import java.util.List; @@ -40,6 +43,8 @@ @Resource private RemoteAppUserService remoteAppUserService; + @Resource + private MeditationVideoMapper meditationVideoMapper; /** * 查询每日冥想 @@ -49,6 +54,8 @@ @Override public ClientMeditationEverydayVO getTodayMeditation() { ClientMeditationEverydayVO vo = new ClientMeditationEverydayVO(); + + // 当前时间 String now = DateUtils.dateTimeNow("HH:mm:ss"); // 查询播放时间段在当前时间的每日冥想 @@ -98,6 +105,13 @@ vo.setImageUrl(meditationEveryday.getImageUrl()); } + MeditationVideo meditationVideo = meditationVideoMapper.selectOne(null); + if (meditationVideo==null){ + vo.setIsShow(0); + }else{ + vo.setIsShow(meditationVideo.getIsShow()); + vo.setMeditationVideo(meditationVideo); + } return vo; } } diff --git a/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/service/impl/MeditationVideoServiceImpl.java b/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/service/impl/MeditationVideoServiceImpl.java new file mode 100644 index 0000000..2c9b0dc --- /dev/null +++ b/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/service/impl/MeditationVideoServiceImpl.java @@ -0,0 +1,40 @@ +package com.xinquan.meditation.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.xinquan.common.core.utils.DateUtils; +import com.xinquan.common.core.utils.page.BeanUtils; +import com.xinquan.meditation.api.domain.Meditation; +import com.xinquan.meditation.domain.MeditationEveryday; +import com.xinquan.meditation.domain.MeditationMusic; +import com.xinquan.meditation.domain.MeditationVideo; +import com.xinquan.meditation.domain.vo.ClientMeditationEverydayVO; +import com.xinquan.meditation.domain.vo.ClientMeditationVO; +import com.xinquan.meditation.mapper.MeditationEverydayMapper; +import com.xinquan.meditation.mapper.MeditationMapper; +import com.xinquan.meditation.mapper.MeditationMusicMapper; +import com.xinquan.meditation.mapper.MeditationVideoMapper; +import com.xinquan.meditation.service.MeditationEverydayService; +import com.xinquan.meditation.service.MeditationVideoService; +import com.xinquan.user.api.feign.RemoteAppUserService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Optional; + +/** + * <p> + * 每日冥想库表 服务实现类 + * </p> + * + * @author mitao + * @since 2024-08-21 + */ +@Service +@RequiredArgsConstructor +public class MeditationVideoServiceImpl extends ServiceImpl<MeditationVideoMapper, MeditationVideo> implements MeditationVideoService { + + +} diff --git a/xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/controller/client/ClientOrderController.java b/xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/controller/client/ClientOrderController.java index 0e6e7d2..8dfb209 100644 --- a/xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/controller/client/ClientOrderController.java +++ b/xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/controller/client/ClientOrderController.java @@ -471,6 +471,101 @@ return R.ok(); } + /** + * 处理苹果退款 回调通知 + * @param request + * @param response + */ + @ResponseBody + @PostMapping("/refundApple") + public void refundApple(HttpServletRequest request, HttpServletResponse response) { + try { + System.err.println("请求"+request); + BufferedReader reader = request.getReader(); + String string1 = reader.toString(); + System.err.println("请求reader"+string1); + StringBuilder requestBody = new StringBuilder(); + String line; + while ((line = reader.readLine()) != null) { + requestBody.append(line); + } + System.err.println("全部请求体"+requestBody); + org.json.JSONObject jsonObject1 = new org.json.JSONObject(requestBody.toString()); + System.err.println("json串"+jsonObject1); + String o = jsonObject1.getString("signedPayload"); + com.alibaba.fastjson.JSONObject payload = verifyAndGet(o); + String notificationType = payload.get("notificationType").toString(); + + com.alibaba.fastjson.JSONObject data = payload.getJSONObject("data"); + String signedTransactionInfo = data.get("signedTransactionInfo").toString(); + com.alibaba.fastjson.JSONObject transactionInfo = verifyAndGet(signedTransactionInfo); + System.err.println("解签后的json串"+transactionInfo); + System.err.println("data"+data); + // 苹果流水号 + String string = transactionInfo.getString("originalTransactionId"); + OrderPaymentRecord one = orderPaymentRecordService.getOne(new QueryWrapper<OrderPaymentRecord>() + .eq("pay_order_no", string) + .eq("payment_type", 3)); + Order order = orderService.getById(one.getOrderId()); + + if (one!=null && one.getPaymentStatus() == 2){ + one.setPaymentStatus(3); + + switch (order.getOrderFrom()){ + case 1: + // 冥想订单 删除 + break; + case 2: + // 删除用户与课程的关系表 + remoteAppUserService.deleteAppUserCourse(order.getBusinessId(),order.getAppUserId()); + break; + case 3: + // 会员订单 将用户会员到期时间回退 + if (order.getBuyContent().contains("月")){ + remoteAppUserService.subVipExpireTime(order.getAppUserId(),1); + }else if (order.getBuyContent().contains("季")){ + remoteAppUserService.subVipExpireTime(order.getAppUserId(),2); + }else if (order.getBuyContent().contains("年")){ + remoteAppUserService.subVipExpireTime(order.getAppUserId(),3); + } + break; + } + // 内购+余额支付 需要退回余额 并删除余额支付记录 + if (order.getPayType() == 7){ + // 查询余额支付 + OrderPaymentRecord two = orderPaymentRecordService.getOne(new QueryWrapper<OrderPaymentRecord>() + .eq("order_id", order.getId()) + .eq("payment_type", 4) + .eq("payment_status", 2) + ); + two.setPaymentStatus(3); + orderPaymentRecordService.updateById(two); + AppUserWalletRecord appUserWalletRecord = new AppUserWalletRecord(); + appUserWalletRecord.setAppUserId(order.getAppUserId()); + appUserWalletRecord.setChangeType(1); + appUserWalletRecord.setReason("后台退款"); + appUserWalletRecord.setOrderId(order.getId()); + appUserWalletRecord.setAmount(two.getPayAmount()); + remoteAppUserService.addBalanceRecord(appUserWalletRecord); + remoteAppUserService.addBalance(order.getAppUserId(),two.getPayAmount()); + } + order.setRefundStatus(3); + order.setRefundRemark("后台退款"); + order.setRefundTime(LocalDateTime.now()); + order.setPaymentStatus(3); + order.setCancelTime(LocalDateTime.now()); + orderPaymentRecordService.updateById(one); + orderService.updateById(order); + } + System.err.println("苹果流水号"+string); + PrintWriter out = response.getWriter(); + out.write("success"); + out.flush(); + out.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } private static final TrustManager myX509TrustManager = new X509TrustManager() { @Override public X509Certificate[] getAcceptedIssuers() { diff --git a/xinquan-modules/xinquan-system/src/main/java/com/xinquan/system/controller/VersionController.java b/xinquan-modules/xinquan-system/src/main/java/com/xinquan/system/controller/VersionController.java index 64b224e..1880ffa 100644 --- a/xinquan-modules/xinquan-system/src/main/java/com/xinquan/system/controller/VersionController.java +++ b/xinquan-modules/xinquan-system/src/main/java/com/xinquan/system/controller/VersionController.java @@ -3,6 +3,7 @@ import com.alibaba.nacos.shaded.org.checkerframework.checker.units.qual.A; import com.alibaba.nacos.shaded.org.checkerframework.checker.units.qual.C; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.xinquan.common.core.domain.R; import com.xinquan.common.core.utils.page.PageDTO; @@ -45,13 +46,22 @@ @Autowired private RemoteAppUserService remoteAppUserService; @GetMapping("/detailVersionApp") - @ApiOperation(value = "查看详情版本管理", tags = "安卓版本管理") + @ApiOperation(value = "获取最新安卓安装包", tags = "2.0新增 安卓版本管理") public R<Version> detailVersionApp() { - List<Version> list = versionService.lambdaQuery().orderByDesc(BaseModel::getCreateTime).list(); + List<Version> list = versionService.lambdaQuery().isNotNull(Version::getAndroidFile).orderByDesc(BaseModel::getCreateTime).list(); if (!list.isEmpty()){ return R.ok(list.get(0)); } - return R.ok(); + return R.ok(new Version()); + } + @GetMapping("/detailVersionAppIos") + @ApiOperation(value = "获取最新ios安装包", tags = "2.0新增 ios版本管理") + public R<Version> detailVersionAppIos() { + List<Version> list = versionService.lambdaQuery().isNotNull(Version::getIosFile).orderByDesc(BaseModel::getCreateTime).list(); + if (!list.isEmpty()){ + return R.ok(list.get(0)); + } + return R.ok(new Version()); } @GetMapping("/versionList") @ApiOperation(value = "版本管理列表-分页", tags = {"管理后台-版本管理"}) @@ -93,6 +103,9 @@ noticeRecord.setContent("APP已更新至【"+homeBackgroundMusic.getVersionNo()+"】版本,请及时更新!"); remoteAppUserService.addNoticeReplay(noticeRecord); } + List<Version> list = versionService.list(new LambdaQueryWrapper<Version>() + .eq(Version::getVersionNo, homeBackgroundMusic.getVersionNo())); + if (!list.isEmpty())return R.fail("版本号不可重复"); return R.ok(versionService.save(homeBackgroundMusic)); } @GetMapping("/detailVersion") @@ -105,6 +118,11 @@ @Log(title = "【版本管理】修改", businessType = BusinessType.UPDATE) public R updateVersion(@RequestBody Version homeBackgroundMusic) { + List<Version> list = versionService.list(new LambdaQueryWrapper<Version>() + .eq(Version::getVersionNo, homeBackgroundMusic.getVersionNo()) + .ne(Version::getId,homeBackgroundMusic.getId()) + ); + if (!list.isEmpty())return R.fail("版本号不可重复"); homeBackgroundMusic.setUpdateBy(SecurityUtils.getUsername()); homeBackgroundMusic.setUpdateTime(LocalDateTime.now()); return R.ok(versionService.updateById(homeBackgroundMusic)); diff --git a/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/service/impl/AppUserServiceImpl.java b/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/service/impl/AppUserServiceImpl.java index 13e3a58..783ad39 100644 --- a/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/service/impl/AppUserServiceImpl.java +++ b/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/service/impl/AppUserServiceImpl.java @@ -18,6 +18,7 @@ import com.xinquan.common.core.utils.page.CollUtils; import com.xinquan.common.security.service.TokenService; import com.xinquan.common.security.utils.SecurityUtils; +import com.xinquan.meditation.api.feign.RemoteMeditationService; import com.xinquan.system.api.RemoteUserService; import com.xinquan.system.api.domain.SysUser; import com.xinquan.system.api.feignClient.SysUserClient; @@ -46,6 +47,8 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; +import javax.annotation.Resource; + /** * <p> * 用户信息表 服务实现类 @@ -63,6 +66,8 @@ private final AppUserTreeService appUserTreeService; private final AppUserQuestionService appUserQuestionService; private final TagService tagService; + @Resource + private RemoteMeditationService remoteMeditationService; /** * 获取用户信息 * @@ -119,6 +124,7 @@ .ne(AppUser::getUserStatus,3).oneOpt(); } + /** * app用户注册 * @param appUserDTO @@ -137,6 +143,7 @@ String randomCode = String.valueOf((int) ((Math.random() * 9 + 1) * 1000)); appUser.setCode("YH"+format+randomCode); this.save(appUser); + remoteMeditationService.addHomeBackgroundMusicDefault(appUser.getId()); initUserTree(appUser.getId()); return appUser; }else{ @@ -157,6 +164,8 @@ String randomCode = String.valueOf((int) ((Math.random() * 9 + 1) * 1000)); appUser.setCode("YH"+format+randomCode); this.save(appUser); + remoteMeditationService.addHomeBackgroundMusicDefault(appUser.getId()); + initUserTree(appUser.getId()); return appUser; } @@ -233,6 +242,8 @@ appUser.setLevelSettingId(TreeLevelEnum.SEED.getCode()); appLoginUser.setBindStatus(DisabledEnum.YES.getCode()); this.save(appUser); + remoteMeditationService.addHomeBackgroundMusicDefault(appUser.getId()); + // 初始化用户树苗 initUserTree(appUser.getId()); } @@ -274,6 +285,8 @@ appUser.setLevelSettingId(TreeLevelEnum.SEED.getCode()); appLoginUser.setBindStatus(DisabledEnum.YES.getCode()); this.save(appUser); + remoteMeditationService.addHomeBackgroundMusicDefault(appUser.getId()); + // 初始化用户树苗 initUserTree(appUser.getId()); } @@ -352,6 +365,8 @@ String randomCode = String.valueOf((int) ((Math.random() * 9 + 1) * 1000)); appUser.setCode("YH" + format + randomCode); this.save(appUser); + remoteMeditationService.addHomeBackgroundMusicDefault(appUser.getId()); + // 初始化用户树苗 initUserTree(appUser.getId()); } @@ -391,6 +406,8 @@ String randomCode = String.valueOf((int) ((Math.random() * 9 + 1) * 1000)); appUser.setCode("YH" + format + randomCode); this.save(appUser); + remoteMeditationService.addHomeBackgroundMusicDefault(appUser.getId()); + // 初始化用户树苗 initUserTree(appUser.getId()); } @@ -462,6 +479,7 @@ String randomCode = String.valueOf((int) ((Math.random() * 9 + 1) * 1000)); appUser.setCode("YH" + format + randomCode); this.save(appUser); + remoteMeditationService.addHomeBackgroundMusicDefault(appUser.getId()); // 初始化用户树苗 initUserTree(appUser.getId()); } @@ -500,6 +518,8 @@ String randomCode = String.valueOf((int) ((Math.random() * 9 + 1) * 1000)); appUser.setCode("YH" + format + randomCode); this.save(appUser); + remoteMeditationService.addHomeBackgroundMusicDefault(appUser.getId()); + // 初始化用户树苗 initUserTree(appUser.getId()); } -- Gitblit v1.7.1