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