liujunchi 3 vuotta sitten
vanhempi
commit
8d56b7d651
26 muutettua tiedostoa jossa 579 lisäystä ja 20 poistoa
  1. 4 0
      cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/AdminFeignService.java
  2. 7 0
      cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/fallback/AdminFeignServiceFallback.java
  3. 5 0
      cooleshow-auth/auth-api/src/main/java/com/yonge/cooleshow/auth/api/client/SysUserFeignService.java
  4. 5 0
      cooleshow-auth/auth-api/src/main/java/com/yonge/cooleshow/auth/api/client/fallback/SysUserFeignServiceFallback.java
  5. 10 0
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/web/controller/TokenController.java
  6. 21 0
      cooleshow-common/src/main/java/com/yonge/cooleshow/common/constant/SysConfigConstant.java
  7. 3 0
      cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/impl/UmsAdminServiceImpl.java
  8. 5 0
      cooleshow-mall/mall-portal/pom.xml
  9. 24 2
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/controller/PmsPortalProductController.java
  10. 62 0
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/dto/ShareProductVo.java
  11. 10 0
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/PmsPortalProductService.java
  12. 22 0
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/PmsPortalProductServiceImpl.java
  13. 10 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseGroupService.java
  14. 11 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MemberPriceSettingsService.java
  15. 8 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicSheetService.java
  16. 9 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/VideoLessonGroupService.java
  17. 27 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseGroupServiceImpl.java
  18. 19 5
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MemberPriceSettingsServiceImpl.java
  19. 14 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicSheetServiceImpl.java
  20. 36 7
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/VideoLessonGroupServiceImpl.java
  21. 50 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/LiveCourseGroupShareVo.java
  22. 103 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/ShareProfitVo.java
  23. 68 0
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/MemberPriceSettingsController.java
  24. 17 1
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/MusicSheetController.java
  25. 13 0
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherCourseGroupController.java
  26. 16 4
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/VideoLessonGroupController.java

+ 4 - 0
cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/AdminFeignService.java

@@ -49,4 +49,8 @@ public interface AdminFeignService {
     //老师课酬
     @PostMapping(value = "/task/refreshBlackList")
     HttpResponseResult refreshBlackList();
+
+    @GetMapping(value = "/sysConfig/findConfigValue")
+    HttpResponseResult<String> findConfigValue(String paramName);
+
 }

+ 7 - 0
cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/fallback/AdminFeignServiceFallback.java

@@ -31,7 +31,14 @@ public class AdminFeignServiceFallback implements AdminFeignService {
     }
 
     @Override
+
     public HttpResponseResult refreshBlackList() {
+
+        return null;
+    }
+
+    public HttpResponseResult<String> findConfigValue(String paramName) {
+
         return null;
     }
 }

+ 5 - 0
cooleshow-auth/auth-api/src/main/java/com/yonge/cooleshow/auth/api/client/SysUserFeignService.java

@@ -12,6 +12,7 @@ import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.*;
 
+import java.io.IOException;
 import java.util.List;
 
 @FeignClient(contextId = "sysUserFeignService", name = "auth-server", configuration = { FeignConfiguration.class }, fallback = SysUserFeignServiceFallback.class)
@@ -60,4 +61,8 @@ public interface SysUserFeignService {
 	@PostMapping(value = "user/list")
 	HttpResponseResult<List<SysUser>> page(@RequestBody SysUserQueryInfo queryInfo);
 
+	@GetMapping("/client")
+	@ApiOperation(value = "获取登录用户client")
+	HttpResponseResult<String> client();
+
 }

+ 5 - 0
cooleshow-auth/auth-api/src/main/java/com/yonge/cooleshow/auth/api/client/fallback/SysUserFeignServiceFallback.java

@@ -79,4 +79,9 @@ public class SysUserFeignServiceFallback implements SysUserFeignService {
 		return HttpResponseResult.failed("请求失败");
 	}
 
+	@Override
+	public HttpResponseResult<String> client() {
+		return null;
+	}
+
 }

+ 10 - 0
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/web/controller/TokenController.java

@@ -298,4 +298,14 @@ public class TokenController extends BaseController {
         redissonClient.getBucket(CacheNameEnum.QR_LOGIN_CODE.getRedisKey(code)).set(dto, 5, TimeUnit.MINUTES);
         return HttpResponseResult.succeed(dto);
     }
+
+    @GetMapping("/client")
+    @ApiOperation(value = "获取登录用户client")
+    public HttpResponseResult<String> client() throws IOException {
+        AuthUser authUser = SecurityUtils.getUser();
+        if (authUser == null) {
+            return HttpResponseResult.failed("请先登录");
+        }
+        return succeed(authUser.getClientId());
+    }
 }

+ 21 - 0
cooleshow-common/src/main/java/com/yonge/cooleshow/common/constant/SysConfigConstant.java

@@ -234,4 +234,25 @@ public interface SysConfigConstant {
      * 敏感词-白名单
      */
     String WHITE_LIST = "white_list";
+
+
+    /** 老师分享曲目二维码跳转链接 */
+    String TEACHER_MUSIC_SHEET_SHARE_PROFIT_URL = "teacher_music_sheet_share_profit_url";
+
+
+    /** 老师分享直播课二维码跳转链接 */
+    String TEACHER_LIVE_GROUP_SHARE_PROFIT_URL = "teacher_live_group_share_profit_url";
+
+
+    /** 老师分享视频课二维码跳转链接 */
+    String TEACHER_VIDEO_GROUP_SHARE_PROFIT_URL = "teacher_video_group_share_profit_url";
+
+
+    /** 老师分享VIP二维码跳转链接 */
+    String TEACHER_VIP_SHARE_PROFIT_URL = "teacher_vip_share_profit_url";
+
+
+
+    /** 老师分享商品二维码跳转链接 */
+    String TEACHER_PRODUCT_SHARE_PROFIT_URL = "teacher_product_share_profit_url";
 }

+ 3 - 0
cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/impl/UmsAdminServiceImpl.java

@@ -272,6 +272,9 @@ public class UmsAdminServiceImpl implements UmsAdminService {
                                  .filter(id -> !finalHasRoleAdminIdList.contains(id))
                                  .collect(Collectors.toList());
 
+        if (CollectionUtils.isEmpty(adminIdList)) {
+            return true;
+        }
         // 设置权限
         List<UmsAdminRoleRelation> list = new ArrayList<>();
         for (Long adminId : adminIdList) {

+ 5 - 0
cooleshow-mall/mall-portal/pom.xml

@@ -40,6 +40,11 @@
             <groupId>com.yonge.cooleshow</groupId>
             <artifactId>auth-api</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.yonge.cooleshow</groupId>
+            <artifactId>cooleshow-api</artifactId>
+            <version>1.0</version>
+        </dependency>
 <!--        <dependency>-->
 <!--            <groupId>com.yonge.cooleshow</groupId>-->
 <!--            <artifactId>mall-pay</artifactId>-->

+ 24 - 2
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/controller/PmsPortalProductController.java

@@ -1,5 +1,10 @@
 package com.yonge.cooleshow.portal.controller;
 
+import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.cooleshow.common.security.AuthUser;
+import com.yonge.cooleshow.common.security.SecurityUtils;
 import com.yonge.cooleshow.mall.common.api.CommonPage;
 import com.yonge.cooleshow.mall.common.api.CommonResult;
 import com.yonge.cooleshow.mbg.mapper.OmsCartItemMapper;
@@ -12,6 +17,7 @@ import com.yonge.cooleshow.portal.dto.ProductSearch;
 import com.yonge.cooleshow.portal.dto.ProductSearchConditionVo;
 import com.yonge.cooleshow.portal.service.PmsPortalProductService;
 import com.yonge.cooleshow.portal.service.UmsMemberService;
+import com.yonge.toolset.base.util.StringUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -35,7 +41,8 @@ public class PmsPortalProductController {
     private UmsMemberService umsMemberService;
     @Autowired
     private PmsPortalProductService portalProductService;
-
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
     @Autowired
     private OmsCartItemMapper omsCartItemMapper;
 
@@ -85,8 +92,23 @@ public class PmsPortalProductController {
         }catch (Exception e) {
             return CommonResult.success(0);
         }
+    }
 
 
-
+    @ApiOperation(value = "老师商品分享分润")
+    @GetMapping(value="/profit/{productId}")
+    @ResponseBody
+    public CommonResult shareProductProfit(@PathVariable Long productId) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null  || sysUser.getId() == null) {
+            return CommonResult.failed("用户信息获取失败");
+        }
+        HttpResponseResult<String> client = sysUserFeignService.client();
+        if (client.getStatus()) {
+            if (!StringUtil.isEmpty(client.getData()) && "teacher".equals(client.getData())) {
+                return CommonResult.success(portalProductService.shareProductProfit(sysUser, productId));
+            }
+        }
+        return CommonResult.failed("分享功能暂未开放");
     }
 }

+ 62 - 0
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/dto/ShareProductVo.java

@@ -0,0 +1,62 @@
+package com.yonge.cooleshow.portal.dto;
+
+import com.yonge.cooleshow.portal.domain.PmsPortalProductDetail;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-07-21
+ */
+@ApiModel("分享商品信息")
+public class ShareProductVo implements Serializable {
+
+
+    @ApiModelProperty("推荐老师姓名")
+    private String name;
+
+    @ApiModelProperty("推荐老师头像")
+    private String avatar;
+
+    @ApiModelProperty("二维码链接")
+    private String url;
+
+    @ApiModelProperty("商品信息")
+    private PmsPortalProductDetail productDetail;
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getAvatar() {
+        return avatar;
+    }
+
+    public void setAvatar(String avatar) {
+        this.avatar = avatar;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    public PmsPortalProductDetail getProductDetail() {
+        return productDetail;
+    }
+
+    public void setProductDetail(PmsPortalProductDetail productDetail) {
+        this.productDetail = productDetail;
+    }
+}

+ 10 - 0
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/PmsPortalProductService.java

@@ -1,9 +1,11 @@
 package com.yonge.cooleshow.portal.service;
 
+import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.mbg.model.PmsProduct;
 import com.yonge.cooleshow.portal.domain.PmsPortalProductDetail;
 import com.yonge.cooleshow.portal.domain.PmsProductCategoryNode;
 import com.yonge.cooleshow.portal.dto.ProductSearchConditionVo;
+import com.yonge.cooleshow.portal.dto.ShareProductVo;
 
 import java.util.List;
 
@@ -33,4 +35,12 @@ public interface PmsPortalProductService {
      * @return ProductSearchConditionVo
      */
     ProductSearchConditionVo searchCondition();
+
+    /**
+     * 老师分享商品分润
+     *
+     * @param sysUser 推荐人信息
+     * @param productId 商品id
+     */
+    ShareProductVo shareProductProfit(SysUser sysUser, Long productId);
 }

+ 22 - 0
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/PmsPortalProductServiceImpl.java

@@ -3,6 +3,9 @@ package com.yonge.cooleshow.portal.service.impl;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
 import com.github.pagehelper.PageHelper;
+import com.yonge.cooleshow.api.feign.AdminFeignService;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.common.constant.SysConfigConstant;
 import com.yonge.cooleshow.mbg.mapper.*;
 import com.yonge.cooleshow.mbg.model.*;
 import com.yonge.cooleshow.portal.dao.PortalProductDao;
@@ -10,7 +13,9 @@ import com.yonge.cooleshow.portal.domain.PmsPortalProductDetail;
 import com.yonge.cooleshow.portal.domain.PmsProductCategoryNode;
 import com.yonge.cooleshow.portal.dto.ProductCategorySmallVo;
 import com.yonge.cooleshow.portal.dto.ProductSearchConditionVo;
+import com.yonge.cooleshow.portal.dto.ShareProductVo;
 import com.yonge.cooleshow.portal.service.PmsPortalProductService;
+import com.yonge.toolset.base.string.MessageFormatter;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -47,6 +52,9 @@ public class PmsPortalProductServiceImpl implements PmsPortalProductService {
     private PortalProductDao portalProductDao;
 
     @Autowired
+    private AdminFeignService adminFeignService;
+
+    @Autowired
     private PmsProductAttributeCategoryMapper productAttributeCategoryMapper;
 
     @Override
@@ -189,6 +197,20 @@ public class PmsPortalProductServiceImpl implements PmsPortalProductService {
         return result;
     }
 
+    @Override
+    public ShareProductVo shareProductProfit(SysUser sysUser, Long productId) {
+        PmsPortalProductDetail detail = detail(productId);
+        ShareProductVo  shareProductVo = new ShareProductVo();
+        shareProductVo.setProductDetail(detail);
+        shareProductVo.setAvatar(sysUser.getAvatar());
+        shareProductVo.setName(sysUser.getUsername());
+        String url = adminFeignService.findConfigValue(SysConfigConstant.TEACHER_PRODUCT_SHARE_PROFIT_URL).getData();
+
+        shareProductVo.setUrl(MessageFormatter.arrayFormat(url, detail.getProduct().getId(), sysUser.getId()));
+
+        return shareProductVo;
+    }
+
 
     private  List<PmsProductAttributeCategory>  getHomeProductAttributeCategory() {
         PmsProductAttributeCategoryExample example = new PmsProductAttributeCategoryExample();

+ 10 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseGroupService.java

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.biz.dal.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dao.CourseGroupDao;
 import com.yonge.cooleshow.biz.dal.dto.CheckCourseTimeDto;
 import com.yonge.cooleshow.biz.dal.dto.LiveCourseGroupDto;
@@ -320,5 +321,14 @@ public interface CourseGroupService extends IService<CourseGroup> {
      * @return
      */
     IPage<CourseGroupPianoDetailVo> selectPianoGroupTeacherDetail(IPage<CourseGroupPianoDetailVo> page, CourseGroupDetailSearch search);
+
+    /**
+     * 直播课分享分润
+     *
+     * @param sysUser 推荐人
+     * @param liveGroupId 直播课程组id
+     * @return
+     */
+    ShareProfitVo shareLiveCourseProfit(SysUser sysUser, Long liveGroupId);
 }
 

+ 11 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MemberPriceSettingsService.java

@@ -2,10 +2,12 @@ package com.yonge.cooleshow.biz.dal.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.req.OrderReq;
 import com.yonge.cooleshow.biz.dal.vo.MemberPriceSettingsVo;
 import com.yonge.cooleshow.biz.dal.dto.search.MemberPriceSettingsSearch;
 import com.yonge.cooleshow.biz.dal.entity.MemberPriceSettings;
+import com.yonge.cooleshow.biz.dal.vo.ShareProfitVo;
 import com.yonge.cooleshow.biz.dal.vo.UserOrderDetailVo;
 import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
@@ -53,4 +55,13 @@ public interface MemberPriceSettingsService extends IService<MemberPriceSettings
      */
     void orderSuccess(UserOrderDetailVo orderDetailVo);
 
+    /**
+     * 老师分享VIP 分润
+     *
+     * @param sysUser 推荐人信息
+     * @param vipId 会员id
+     * @return
+     */
+    ShareProfitVo shareVipProfit(SysUser sysUser, Long vipId);
+
 }

+ 8 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicSheetService.java

@@ -14,7 +14,6 @@ import com.yonge.cooleshow.biz.dal.vo.*;
 import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.toolset.utils.easyexcel.ExcelDataReaderProperty;
-import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -267,4 +266,12 @@ public interface MusicSheetService extends IService<MusicSheet> {
      * @param: userId
      */
     List<StudentTotalVo> queryStudentTotal(Long userId);
+
+    /**
+     * 老师乐谱分享分润
+     *
+     * @param sysUser 分享人
+     * @param musicSheetId 曲目id
+     */
+    ShareProfitVo shareMusicSheetProfit(SysUser sysUser, Long musicSheetId);
 }

+ 9 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/VideoLessonGroupService.java

@@ -50,4 +50,13 @@ public interface VideoLessonGroupService extends IService<VideoLessonGroup> {
     IPage<LessonGroupVo> selectLessonGroupById(IPage<LessonGroupVo> page, VideoLessonGroupSearch query);
 
     CountVideoGroupVo countVideoGroup();
+
+    /**
+     * 视频课分享分润
+     *
+     * @param sysUser 推荐人信息
+     * @param videoGroupId 课程组id
+     * @return
+     */
+    ShareProfitVo shareVideoCourseProfit(SysUser sysUser, Long videoGroupId);
 }

+ 27 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseGroupServiceImpl.java

@@ -26,6 +26,7 @@ import com.yonge.cooleshow.common.constant.SysConfigConstant;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.base.page.PageInfo;
+import com.yonge.toolset.base.string.MessageFormatter;
 import com.yonge.toolset.mybatis.support.PageUtil;
 import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
 import com.yonge.toolset.utils.date.DateUtil;
@@ -35,7 +36,9 @@ import org.redisson.api.RMap;
 import org.redisson.api.RedissonClient;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -1197,5 +1200,29 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
         }
         return detailPage;
     }
+
+    @Override
+    public ShareProfitVo shareLiveCourseProfit(SysUser sysUser, Long liveGroupId) {
+        CourseGroup courseGroup = this.getById(liveGroupId);
+        SysUser teacher = this.getSysUser(courseGroup.getTeacherId());
+
+        LiveCourseGroupShareVo liveCourseGroupShareVo = new LiveCourseGroupShareVo();
+        BeanUtils.copyProperties(courseGroup,liveCourseGroupShareVo);
+        liveCourseGroupShareVo.setTeacherAvatar(teacher.getAvatar());
+        liveCourseGroupShareVo.setTeacherName(teacher.getUsername());
+        Subject subject = subjectService.get(courseGroup.getSubjectId());
+
+        liveCourseGroupShareVo.setSubjectName(subject.getName());
+
+        String teacherLiveGroupShareProfitUrl= sysConfigService.findConfigValue(SysConfigConstant.TEACHER_LIVE_GROUP_SHARE_PROFIT_URL);
+
+        ShareProfitVo result = new ShareProfitVo();
+        result.setType("LIVE");
+        result.setLiveCourseGroup(liveCourseGroupShareVo);
+        result.setUrl(MessageFormatter.arrayFormat(teacherLiveGroupShareProfitUrl, courseGroup.getId(), sysUser.getId()));
+        result.setName(sysUser.getUsername());
+        result.setAvatar(sysUser.getAvatar());
+        return result;
+    }
 }
 

+ 19 - 5
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MemberPriceSettingsServiceImpl.java

@@ -2,18 +2,20 @@ package com.yonge.cooleshow.biz.dal.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.req.OrderReq;
 import com.yonge.cooleshow.biz.dal.entity.VipCardRecord;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.MessageTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.PeriodEnum;
-import com.yonge.cooleshow.biz.dal.service.StudentService;
-import com.yonge.cooleshow.biz.dal.service.SysMessageService;
-import com.yonge.cooleshow.biz.dal.service.VipCardRecordService;
+import com.yonge.cooleshow.biz.dal.service.*;
+import com.yonge.cooleshow.biz.dal.vo.ShareProfitVo;
 import com.yonge.cooleshow.biz.dal.vo.StudentVo;
 import com.yonge.cooleshow.biz.dal.vo.UserOrderDetailVo;
 import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes;
+import com.yonge.cooleshow.common.constant.SysConfigConstant;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.toolset.base.string.MessageFormatter;
 import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
 import com.yonge.toolset.utils.date.DateUtil;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -24,7 +26,6 @@ import com.yonge.cooleshow.biz.dal.entity.MemberPriceSettings;
 import com.yonge.cooleshow.biz.dal.vo.MemberPriceSettingsVo;
 import com.yonge.cooleshow.biz.dal.dto.search.MemberPriceSettingsSearch;
 import com.yonge.cooleshow.biz.dal.dao.MemberPriceSettingsDao;
-import com.yonge.cooleshow.biz.dal.service.MemberPriceSettingsService;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.*;
@@ -40,6 +41,8 @@ public class MemberPriceSettingsServiceImpl extends ServiceImpl<MemberPriceSetti
     @Autowired
     private SysMessageService sysMessageService;
 
+    @Autowired
+    private SysConfigService sysConfigService;
     @Override
     public MemberPriceSettingsVo detail(Long id) {
         return baseMapper.detail(id);
@@ -98,7 +101,18 @@ public class MemberPriceSettingsServiceImpl extends ServiceImpl<MemberPriceSetti
         authSend(studentVo.getUserId(), studentVo.getPhone(), DateUtil.format(vipCardRecord.getEndTime(), DateUtil.DEFAULT_PATTERN));
     }
 
-
+    @Override
+    public ShareProfitVo shareVipProfit(SysUser sysUser, Long vipId) {
+        ShareProfitVo result = new ShareProfitVo();
+        MemberPriceSettingsVo detail = detail(vipId);
+        result.setVip(detail);
+        result.setAvatar(sysUser.getAvatar());
+        result.setName(sysUser.getUsername());
+
+        String teacherVipShareProfitUrl= sysConfigService.findConfigValue(SysConfigConstant.TEACHER_VIP_SHARE_PROFIT_URL);
+        result.setUrl(MessageFormatter.arrayFormat(teacherVipShareProfitUrl, detail.getId(), sysUser.getId()));
+        return result;
+    }
 
 
     // 发送会员购买消息推送

+ 14 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicSheetServiceImpl.java

@@ -839,6 +839,20 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
         return baseMapper.queryStudentTotal(userId);
     }
 
+    @Override
+    public ShareProfitVo shareMusicSheetProfit(SysUser sysUser, Long musicSheetId) {
+        ShareProfitVo result = new ShareProfitVo();
+        MusicSheet musicSheet = getById(musicSheetId);
+
+        result.setType("MUSIC");
+        result.setMusicSheet(musicSheet);
+        result.setAvatar(sysUser.getAvatar());
+        result.setName(sysUser.getUsername());
+        String teacherMusicShareProfitUrl= sysConfigService.findConfigValue(SysConfigConstant.TEACHER_MUSIC_SHEET_SHARE_PROFIT_URL);
+        result.setUrl(MessageFormatter.arrayFormat(teacherMusicShareProfitUrl,musicSheetId, sysUser.getId()));
+        return result;
+    }
+
     private SysUser getSysUser(Long userId) {
         return Optional.ofNullable(userId)
                        .map(sysUserFeignService::queryUserById)

+ 36 - 7
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/VideoLessonGroupServiceImpl.java

@@ -20,11 +20,14 @@ import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroupDetail;
 import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.MessageTypeEnum;
+import com.yonge.cooleshow.biz.dal.service.SysConfigService;
 import com.yonge.cooleshow.biz.dal.service.SysMessageService;
 import com.yonge.cooleshow.biz.dal.service.VideoLessonGroupService;
 import com.yonge.cooleshow.biz.dal.vo.*;
+import com.yonge.cooleshow.common.constant.SysConfigConstant;
 import com.yonge.cooleshow.common.enums.YesOrNoEnum;
 import com.yonge.toolset.base.exception.BizException;
+import com.yonge.toolset.base.string.MessageFormatter;
 import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
 import org.apache.commons.collections.CollectionUtils;
 import org.slf4j.Logger;
@@ -64,6 +67,9 @@ public class VideoLessonGroupServiceImpl extends ServiceImpl<VideoLessonGroupDao
     @Autowired
     private SysUserFeignService sysUserFeignService;
 
+    @Autowired
+    private SysConfigService sysConfigService;
+
     public VideoLessonGroupDao getDao() {
         return videoLessonGroupDao;
     }
@@ -252,20 +258,26 @@ public class VideoLessonGroupServiceImpl extends ServiceImpl<VideoLessonGroupDao
     public VideoLessonStudentVo selectVideoLesson(Long groupId) {
         VideoLessonStudentVo lessonStudentVo = new VideoLessonStudentVo();
 
-        VideoLessonGroupSearch query = new VideoLessonGroupSearch();
-        query.setGroupId(groupId);
-        List<VideoLessonGroupVo> lessonGroup = videoLessonGroupDao.selectPage(null, query);
-        if (CollectionUtils.isEmpty(lessonGroup)) {
-            return lessonStudentVo;
-        }
-        lessonStudentVo.setLessonGroup(lessonGroup.get(0));
+        VideoLessonGroupVo videoLessonGroupVo = detail(groupId);
+        if (videoLessonGroupVo != null) return lessonStudentVo;
 
+        lessonStudentVo.setLessonGroup(videoLessonGroupVo);
         VideoLessonSearch search = new VideoLessonSearch();
         search.setVideoLessonGroupId(groupId);
         lessonStudentVo.setDetailList(videoLessonGroupDetailDao.selectPage(null, search));
         return lessonStudentVo;
     }
 
+    private VideoLessonGroupVo detail(Long groupId) {
+        VideoLessonGroupSearch query = new VideoLessonGroupSearch();
+        query.setGroupId(groupId);
+        List<VideoLessonGroupVo> lessonGroup = videoLessonGroupDao.selectPage(null, query);
+        if (CollectionUtils.isEmpty(lessonGroup)) {
+            return null;
+        }
+        return lessonGroup.get(0);
+    }
+
     /**
      * @Description: 修改视频课组&视频课
      * @Author: cy
@@ -352,4 +364,21 @@ public class VideoLessonGroupServiceImpl extends ServiceImpl<VideoLessonGroupDao
         countVideoGroup.setVideoLessonList(baseMapper.selectVideoLesson());
         return countVideoGroup;
     }
+
+    @Override
+    public ShareProfitVo shareVideoCourseProfit(SysUser sysUser, Long videoGroupId) {
+
+        VideoLessonGroupVo detail = detail(videoGroupId);
+
+        String teacherVideoGroupShareProfitUrl= sysConfigService.findConfigValue(SysConfigConstant.TEACHER_VIDEO_GROUP_SHARE_PROFIT_URL);
+
+        ShareProfitVo result = new ShareProfitVo();
+        result.setType("VIDEO");
+        result.setVideoGroup(detail);
+        result.setUrl(MessageFormatter.arrayFormat(teacherVideoGroupShareProfitUrl, detail.getId(), sysUser.getId()));
+        result.setName(sysUser.getUsername());
+        result.setAvatar(sysUser.getAvatar());
+        return result;
+
+    }
 }

+ 50 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/LiveCourseGroupShareVo.java

@@ -0,0 +1,50 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import com.yonge.cooleshow.biz.dal.entity.CourseGroup;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-07-20
+ */
+@ApiModel("直播课分享")
+public class LiveCourseGroupShareVo extends CourseGroup {
+
+
+    @ApiModelProperty("老师名称")
+    private String teacherName;
+
+    @ApiModelProperty("老师头像")
+    private String teacherAvatar;
+
+    @ApiModelProperty("声部名")
+    private String subjectName;
+
+
+    public String getSubjectName() {
+        return subjectName;
+    }
+
+    public void setSubjectName(String subjectName) {
+        this.subjectName = subjectName;
+    }
+
+    public String getTeacherName() {
+        return teacherName;
+    }
+
+    public void setTeacherName(String teacherName) {
+        this.teacherName = teacherName;
+    }
+
+    public String getTeacherAvatar() {
+        return teacherAvatar;
+    }
+
+    public void setTeacherAvatar(String teacherAvatar) {
+        this.teacherAvatar = teacherAvatar;
+    }
+}

+ 103 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/ShareProfitVo.java

@@ -0,0 +1,103 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import com.yonge.cooleshow.biz.dal.entity.MusicSheet;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * Description 老师乐谱分享信息
+ *
+ * @author liujunchi
+ * @date 2022-04-01
+ */
+@ApiModel( description = "老师分享分润信息")
+public class ShareProfitVo {
+
+    @ApiModelProperty("推荐老师姓名")
+    private String name;
+
+    @ApiModelProperty("推荐老师头像")
+    private String avatar;
+
+    @ApiModelProperty("二维码链接")
+    private String url;
+
+    @ApiModelProperty("曲目: MUSIC,直播课 :LIVE,视频课:VIDEO ,会员 :VIP")
+    private String type;
+
+    @ApiModelProperty("乐谱信息")
+    private MusicSheet musicSheet;
+
+    @ApiModelProperty("直播课程组信息")
+    private LiveCourseGroupShareVo liveCourseGroup;
+
+    @ApiModelProperty("视频课信息")
+    private VideoLessonGroupVo videoGroup;
+
+    @ApiModelProperty("会员信息")
+    private MemberPriceSettingsVo vip;
+
+    public MemberPriceSettingsVo getVip() {
+        return vip;
+    }
+
+    public void setVip(MemberPriceSettingsVo vip) {
+        this.vip = vip;
+    }
+
+    public VideoLessonGroupVo getVideoGroup() {
+        return videoGroup;
+    }
+
+    public void setVideoGroup(VideoLessonGroupVo videoGroup) {
+        this.videoGroup = videoGroup;
+    }
+
+    public LiveCourseGroupShareVo getLiveCourseGroup() {
+        return liveCourseGroup;
+    }
+
+    public void setLiveCourseGroup(LiveCourseGroupShareVo liveCourseGroup) {
+        this.liveCourseGroup = liveCourseGroup;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public MusicSheet getMusicSheet() {
+        return musicSheet;
+    }
+
+    public void setMusicSheet(MusicSheet musicSheet) {
+        this.musicSheet = musicSheet;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getAvatar() {
+        return avatar;
+    }
+
+    public void setAvatar(String avatar) {
+        this.avatar = avatar;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+}

+ 68 - 0
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/MemberPriceSettingsController.java

@@ -0,0 +1,68 @@
+package com.yonge.cooleshow.teacher.controller;
+
+import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.biz.dal.dto.search.MemberPriceSettingsSearch;
+import com.yonge.cooleshow.biz.dal.entity.SysConfig;
+import com.yonge.cooleshow.biz.dal.service.MemberPriceSettingsService;
+import com.yonge.cooleshow.biz.dal.service.SysConfigService;
+import com.yonge.cooleshow.biz.dal.vo.MemberPriceSettingsVo;
+import com.yonge.cooleshow.biz.dal.vo.ShareProfitVo;
+import com.yonge.cooleshow.common.controller.BaseController;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@RequestMapping("memberPriceSettings")
+@Api(tags = "会员价格设置")
+@RestController
+public class MemberPriceSettingsController extends BaseController {
+	@Autowired
+	private MemberPriceSettingsService memberPriceSettingsService;
+	@Autowired
+	private SysConfigService sysConfigService;
+	@Autowired
+	private SysUserFeignService sysUserFeignService;
+	/**
+	 * 查询单条
+	 */
+	@GetMapping("/detail/{id}")
+	@ApiOperation(value = "详情", notes = "传入id")
+	public HttpResponseResult<MemberPriceSettingsVo> detail(@PathVariable("id") Long id) {
+		return succeed(memberPriceSettingsService.detail(id));
+	}
+
+	@PostMapping("/list")
+	@ApiOperation(value = "查询列表")
+	public HttpResponseResult<List<MemberPriceSettingsVo>> list(@RequestBody MemberPriceSettingsSearch query) {
+		List<MemberPriceSettingsVo> list = memberPriceSettingsService.selectList(query);
+		return succeed(list);
+	}
+
+	@PostMapping("/vipPermissions")
+	@ApiOperation(value = "查询vip权限")
+	public HttpResponseResult<List<SysConfig>> vipPermissions() {
+		Map<String,Object> params = new HashMap<>();
+		params.put("group", "VIP_PERMISSION");
+		List<SysConfig> configs = sysConfigService.findAll(params);
+		return succeed(configs);
+	}
+
+
+
+	@ApiOperation(value = "老师VIP分享分润")
+	@GetMapping(value="/vipProfit/{vipId}")
+	public HttpResponseResult<ShareProfitVo> shareVipProfit(@PathVariable Long vipId) {
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		if (sysUser == null  || sysUser.getId() == null) {
+			return failed("用户信息获取失败");
+		}
+		return succeed(memberPriceSettingsService.shareVipProfit(sysUser,vipId));
+	}
+}

+ 17 - 1
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/MusicSheetController.java

@@ -3,9 +3,13 @@ package com.yonge.cooleshow.teacher.controller;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
+
 import com.yonge.cooleshow.biz.dal.dto.search.StudentMusicSheetSearch;
 import com.yonge.cooleshow.biz.dal.entity.Student;
 import com.yonge.cooleshow.biz.dal.service.AppVersionInfoService;
+
+import com.yonge.cooleshow.biz.dal.vo.ShareProfitVo;
+
 import com.yonge.cooleshow.common.enums.SysUserType;
 import com.yonge.cooleshow.biz.dal.dto.MusicSheetDto;
 import com.yonge.cooleshow.biz.dal.dto.search.MusicSheetSearch;
@@ -116,7 +120,7 @@ public class MusicSheetController extends BaseController {
         }
     }
 
-    @ApiOperation(value = "老师个人曲目分页查询", httpMethod="POST", consumes="application/json", produces="application/json")
+    @ApiOperation(value = "曲目分页查询", httpMethod="POST", consumes="application/json", produces="application/json")
     @PostMapping(value="/list", consumes="application/json", produces="application/json")
     public HttpResponseResult<PageInfo<MusicSheetVo>> list(@RequestBody StudentMusicSheetSearch query) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
@@ -184,4 +188,16 @@ public class MusicSheetController extends BaseController {
         }
         return succeed(musicSheetService.countTeacherMusicSheet(sysUser));
     }
+
+
+    @ApiOperation(value = "老师乐谱分享分润")
+    @GetMapping(value="/share/profit/{musicSheetId}")
+    public HttpResponseResult<ShareProfitVo> shareMusicSheetProfit(@PathVariable Long musicSheetId) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null  || sysUser.getId() == null) {
+            return failed("用户信息获取失败");
+        }
+        return succeed(musicSheetService.shareMusicSheetProfit(sysUser,musicSheetId));
+    }
+
 }

+ 13 - 0
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherCourseGroupController.java

@@ -11,6 +11,7 @@ import com.yonge.cooleshow.biz.dal.service.CourseGroupService;
 import com.yonge.cooleshow.biz.dal.support.WrapperUtil;
 import com.yonge.cooleshow.biz.dal.vo.CourseGroupVo;
 import com.yonge.cooleshow.biz.dal.vo.LiveCourseInfoVo;
+import com.yonge.cooleshow.biz.dal.vo.ShareProfitVo;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.enums.YesOrNoEnum;
@@ -121,5 +122,17 @@ public class TeacherCourseGroupController extends BaseController {
         return Optional.ofNullable(sysUserFeignService.queryUserInfo())
                 .orElseThrow(() -> new BizException("用户不存在"));
     }
+
+
+
+    @ApiOperation(value = "老师直播课分享分润")
+    @GetMapping(value= "/liveShareProfit/{liveGroupId}")
+    public HttpResponseResult<ShareProfitVo> shareLiveCourseProfit(@PathVariable Long liveGroupId) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null  || sysUser.getId() == null) {
+            return failed("用户信息获取失败");
+        }
+        return succeed(courseGroupService.shareLiveCourseProfit(sysUser, liveGroupId));
+    }
 }
 

+ 16 - 4
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/VideoLessonGroupController.java

@@ -2,14 +2,14 @@ package com.yonge.cooleshow.teacher.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yonge.cooleshow.biz.dal.dto.search.VideoLessonGroupSearch;
+
 import com.yonge.cooleshow.biz.dal.service.AppVersionInfoService;
+
+import com.yonge.cooleshow.biz.dal.vo.*;
+
 import com.yonge.toolset.mybatis.support.PageUtil;
 import com.yonge.cooleshow.biz.dal.valid.AddGroup;
 import com.yonge.cooleshow.biz.dal.valid.UpdateGroup;
-import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupUpVo;
-import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupVo;
-import com.yonge.cooleshow.biz.dal.vo.VideoLessonStudentVo;
-import com.yonge.cooleshow.biz.dal.vo.VideoLessonVo;
 import com.yonge.toolset.base.page.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -160,4 +160,16 @@ public class VideoLessonGroupController extends BaseController {
         videoLessonGroupService.update(lessonVo,sysUser);
         return succeed();
     }
+
+
+
+    @ApiOperation(value = "老师视频课分享分润")
+    @GetMapping(value= "/videoShareProfit/{videoGroupId}")
+    public HttpResponseResult<ShareProfitVo> shareVideoCourseProfit(@PathVariable Long videoGroupId) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null  || sysUser.getId() == null) {
+            return failed("用户信息获取失败");
+        }
+        return succeed(videoLessonGroupService.shareVideoCourseProfit(sysUser, videoGroupId));
+    }
 }