Browse Source

add 保利威直播

he2802 3 năm trước cách đây
mục cha
commit
85d361049f
29 tập tin đã thay đổi với 395 bổ sung25 xóa
  1. 5 0
      zhongzheng-admin/src/main/resources/application.yml
  2. 50 0
      zhongzheng-api/src/main/java/com/zhongzheng/controller/polyv/PolyvLiveController.java
  3. 1 1
      zhongzheng-api/src/main/java/com/zhongzheng/controller/user/UserController.java
  4. 5 1
      zhongzheng-api/src/main/resources/application.yml
  5. 6 2
      zhongzheng-common/pom.xml
  6. 20 5
      zhongzheng-common/src/main/java/com/zhongzheng/common/utils/spring/SpringUtils.java
  7. 2 0
      zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/TokenService.java
  8. 42 0
      zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/UserServiceImpl.java
  9. 12 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/CourseSectionAddBo.java
  10. 12 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/CourseSectionEditBo.java
  11. 12 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/CourseSectionQueryBo.java
  12. 8 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseSection.java
  13. 16 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/vo/CourseSectionVo.java
  14. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/impl/GoodsServiceImpl.java
  15. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/vo/GoodsUserQuestionVo.java
  16. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeServiceImpl.java
  17. 4 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeUserServiceImpl.java
  18. 2 2
      zhongzheng-system/src/main/java/com/zhongzheng/modules/polyv/bo/PolyvLiveQueryBo.java
  19. 32 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/polyv/service/IPolyvLiveService.java
  20. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/polyv/service/IPolyvVideoService.java
  21. 127 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/polyv/service/impl/PolyvLiveServiceImpl.java
  22. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/IUserService.java
  23. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserSubscribeServiceImpl.java
  24. 2 0
      zhongzheng-system/src/main/resources/mapper/modules/bank/QuestionMapper.xml
  25. 8 0
      zhongzheng-system/src/main/resources/mapper/modules/course/CourseSectionMapper.xml
  26. 2 0
      zhongzheng-system/src/main/resources/mapper/modules/goods/GoodsMapper.xml
  27. 6 11
      zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeMapper.xml
  28. 6 1
      zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeUserMapper.xml
  29. 4 1
      zhongzheng-system/src/main/resources/mapper/modules/user/UserSubscribeMapper.xml

+ 5 - 0
zhongzheng-admin/src/main/resources/application.yml

@@ -247,6 +247,11 @@ feign:
   hystrix:
     enabled: true
 
+poliv:
+  sdk:
+    userid: egsxlptzdq
+    appId: ezl5uy4zei
+    appSecret: 2bf5bb3c31d34531943df10284edd50b
 
 tencent:
   cloud:

+ 50 - 0
zhongzheng-api/src/main/java/com/zhongzheng/controller/polyv/PolyvLiveController.java

@@ -0,0 +1,50 @@
+package com.zhongzheng.controller.polyv;
+
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.utils.ServletUtils;
+import com.zhongzheng.framework.web.service.WxTokenService;
+import com.zhongzheng.modules.polyv.bo.PolyvLiveQueryBo;
+import com.zhongzheng.modules.polyv.service.IPolyvLiveService;
+import com.zhongzheng.modules.polyv.service.IPolyvVideoService;
+import com.zhongzheng.modules.user.entity.ClientLoginUser;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 保利威视频信息Controller
+ *
+ * @author change
+ * @date 2021-06-11
+ */
+@Api(value = "保利威直播信息控制器", tags = {"保利威视频信息管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/polyv/live")
+public class PolyvLiveController extends BaseController {
+
+    private final IPolyvLiveService iPolyvLiveService;
+
+    @Autowired
+    private WxTokenService wxTokenService;
+
+
+    @ApiOperation("获取保利威直播播放凭证")
+    @GetMapping("/sign")
+    public AjaxResult getPlayMobileSign(PolyvLiveQueryBo bo) throws Exception {
+        ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
+        String viewerId = String.valueOf(loginUser.getUser().getUserId());
+        Map<String,Object> map = iPolyvLiveService.getLiveSign(bo);
+        return AjaxResult.success(map);
+    }
+
+}

+ 1 - 1
zhongzheng-api/src/main/java/com/zhongzheng/controller/user/UserController.java

@@ -47,7 +47,7 @@ public class UserController extends BaseController {
     public AjaxResult<Void> edit(@RequestBody UserEditBo bo) throws IllegalAccessException {
         ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
         bo.setUserId(loginUser.getUser().getUserId());
-        return toAjax(iUserService.updateByEditBo(bo) ? 1 : 0);
+        return toAjax(iUserService.appUpdateByEditBo(bo) ? 1 : 0);
     }
 
     /**

+ 5 - 1
zhongzheng-api/src/main/resources/application.yml

@@ -241,7 +241,11 @@ feign:
   hystrix:
     enabled: true
 
-
+poliv:
+  sdk:
+    userid: egsxlptzdq
+    appId: ezl5uy4zei
+    appSecret: 2bf5bb3c31d34531943df10284edd50b
 
 tencent:
   cloud:

+ 6 - 2
zhongzheng-common/pom.xml

@@ -59,8 +59,12 @@
             <artifactId>jackson-databind</artifactId>
         </dependency>
 
-
-
+        <!-- 保利威 -->
+        <dependency>
+            <groupId>net.polyv</groupId>
+            <artifactId>polyv-java-live-sdk</artifactId>
+            <version>1.2.0</version>
+        </dependency>
         <!-- 二维码 -->
         <dependency>
             <groupId>com.google.zxing</groupId>

+ 20 - 5
zhongzheng-common/src/main/java/com/zhongzheng/common/utils/spring/SpringUtils.java

@@ -1,9 +1,11 @@
 package com.zhongzheng.common.utils.spring;
 
 import cn.hutool.core.lang.Validator;
+import net.polyv.live.v1.config.LiveGlobalConfig;
 import org.springframework.aop.framework.AopContext;
 import org.springframework.beans.BeansException;
 import org.springframework.beans.factory.NoSuchBeanDefinitionException;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
 import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
 import org.springframework.context.ApplicationContext;
@@ -12,27 +14,40 @@ import org.springframework.stereotype.Component;
 
 /**
  * spring工具类 方便在非spring管理环境中获取bean
- * 
+ *
  * @author zhongzheng
  */
 @Component
-public final class SpringUtils implements BeanFactoryPostProcessor, ApplicationContextAware 
+public final class SpringUtils implements BeanFactoryPostProcessor, ApplicationContextAware
 {
     /** Spring应用上下文环境 */
     private static ConfigurableListableBeanFactory beanFactory;
 
     private static ApplicationContext applicationContext;
 
+    @Value("${poliv.sdk.userid}")
+    private String poliv_sdk_userid;
+
+    @Value("${poliv.sdk.appId}")
+    private String poliv_sdk_appId;
+
+    @Value("${poliv.sdk.appSecret}")
+    private String poliv_sdk_appSecret;
+
     @Override
-    public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException 
+    public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException
     {
         SpringUtils.beanFactory = beanFactory;
     }
 
     @Override
-    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException 
+    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException
     {
         SpringUtils.applicationContext = applicationContext;
+        String userId = "egsxlptzdq";
+        String appId = "ezl5uy4zei";
+        String appSecret = "2bf5bb3c31d34531943df10284edd50b";
+        LiveGlobalConfig.init(appId,userId,appSecret);
     }
 
     /**
@@ -113,7 +128,7 @@ public final class SpringUtils implements BeanFactoryPostProcessor, ApplicationC
 
     /**
      * 获取aop代理对象
-     * 
+     *
      * @param invoker
      * @return
      */

+ 2 - 0
zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/TokenService.java

@@ -86,6 +86,8 @@ public class TokenService
         if (Validator.isNotEmpty(token))
         {
             String uuid = "";
+            System.out.println(token);
+            System.out.println("我的令牌");
             Claims claims = parseToken(token);
             // 解析对应的权限以及用户信息
             uuid = (String) claims.get(Constants.LOGIN_USER_KEY);

+ 42 - 0
zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/UserServiceImpl.java

@@ -298,7 +298,49 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
         return this.updateById(update);
     }
 
+    @Override
+    public Boolean appUpdateByEditBo(UserEditBo bo) throws IllegalAccessException {
+        User update = BeanUtil.toBean(bo, User.class);
+        validEntityBeforeUpdate(update);
+        update.setUpdateTime(DateUtils.getNowTime());
+        UserUpdateAddBo userUpdateAddBo = new UserUpdateAddBo();
+        userUpdateAddBo.setModifierName("用户本人操作");
+        UserVo oldUser = queryById(bo.getUserId());
+        if (!StringUtils.isBlank(update.getRealname())){
+            if(Validator.isEmpty(oldUser.getRealname()) || !oldUser.getRealname().equals(update.getRealname())){
+                userUpdateAddBo.setUserId(bo.getUserId());
+                userUpdateAddBo.setRealname(update.getRealname());
+            }
+        }
+        if (!StringUtils.isBlank(update.getTelphone())){
+            //手机号变更
+            if(Validator.isEmpty(oldUser.getTelphone()) || !oldUser.getTelphone().equals(update.getTelphone())){
+                User user = getOne(new LambdaQueryWrapper<User>()
+                        .eq(User::getTelphone,update.getTelphone()).ne(User::getUserId,update.getUserId()).last("limit 1"));
+                if(Validator.isNotNull(user)){
+                    throw new CustomException("该手机号已注册");
+                }
+                userUpdateAddBo.setUserId(bo.getUserId());
+                userUpdateAddBo.setTelphone(update.getTelphone());
+            }
 
+        }
+        if (!StringUtils.isBlank(update.getIdCard())){
+            //身份证变更
+            if(Validator.isEmpty(oldUser.getIdCard()) || !oldUser.getIdCard().equals(update.getIdCard())){
+                Long list = iClassGradeUserService.selectList(update);
+                if (list > 0){
+                    throw new IllegalAccessException("身份证已经被使用注册为学员");
+                }
+                userUpdateAddBo.setUserId(bo.getUserId());
+                userUpdateAddBo.setIdCard(update.getIdCard());
+            }
+        }
+        if (Validator.isNotEmpty(userUpdateAddBo.getUserId())) {
+            userUpdateService.insertByAddBo(userUpdateAddBo);
+        }
+        return this.updateById(update);
+    }
 
 
     private Boolean increaseUser(UserVo userVo,Long score){

+ 12 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/CourseSectionAddBo.java

@@ -72,4 +72,16 @@ public class CourseSectionAddBo {
     /** 导入编号 */
     @ApiModelProperty("导入编号")
     private String importNo;
+    /** 保利威直播场次ID */
+    @ApiModelProperty("保利威直播场次ID")
+    private String sessionId;
+    /** 保利威真实直播开始时间 */
+    @ApiModelProperty("保利威真实直播开始时间")
+    private Long realLiveStartTime;
+    /** 保利威真实直播结束时间 */
+    @ApiModelProperty("保利威真实直播结束时间")
+    private Long realLiveEndTime;
+    /** 保利威真实直播时长,单位秒 */
+    @ApiModelProperty("保利威真实直播时长,单位秒")
+    private Long realDuration;
 }

+ 12 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/CourseSectionEditBo.java

@@ -79,5 +79,16 @@ public class CourseSectionEditBo {
     /** 封面地址 */
     @ApiModelProperty("封面地址")
     private String coverUrl;
-
+    /** 保利威直播场次ID */
+    @ApiModelProperty("保利威直播场次ID")
+    private String sessionId;
+    /** 保利威真实直播开始时间 */
+    @ApiModelProperty("保利威真实直播开始时间")
+    private Long realLiveStartTime;
+    /** 保利威真实直播结束时间 */
+    @ApiModelProperty("保利威真实直播结束时间")
+    private Long realLiveEndTime;
+    /** 保利威真实直播时长,单位秒 */
+    @ApiModelProperty("保利威真实直播时长,单位秒")
+    private Long realDuration;
 }

+ 12 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/CourseSectionQueryBo.java

@@ -85,4 +85,16 @@ public class CourseSectionQueryBo extends BaseEntity {
 	private String importNo;
 	@ApiModelProperty("节ID数组")
 	private List<Long> sectionIds;
+	/** 保利威直播场次ID */
+	@ApiModelProperty("保利威直播场次ID")
+	private String sessionId;
+	/** 保利威真实直播开始时间 */
+	@ApiModelProperty("保利威真实直播开始时间")
+	private Long realLiveStartTime;
+	/** 保利威真实直播结束时间 */
+	@ApiModelProperty("保利威真实直播结束时间")
+	private Long realLiveEndTime;
+	/** 保利威真实直播时长,单位秒 */
+	@ApiModelProperty("保利威真实直播时长,单位秒")
+	private Long realDuration;
 }

+ 8 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseSection.java

@@ -62,4 +62,12 @@ private static final long serialVersionUID=1L;
     private String importBy;
     /** 导入编号 */
     private String importNo;
+    /** 保利威直播场次ID */
+    private String sessionId;
+    /** 保利威真实直播开始时间 */
+    private Long realLiveStartTime;
+    /** 保利威真实直播结束时间 */
+    private Long realLiveEndTime;
+    /** 保利威真实直播时长,单位秒 */
+    private Long realDuration;
 }

+ 16 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/vo/CourseSectionVo.java

@@ -98,4 +98,20 @@ public class CourseSectionVo {
 	@ApiModelProperty("修改时间")
 	@Excel(name = "修改时间")
 	private Long updateTime;
+	/** 保利威直播场次ID */
+	@Excel(name = "保利威直播场次ID")
+	@ApiModelProperty("保利威直播场次ID")
+	private String sessionId;
+	/** 保利威真实直播开始时间 */
+	@Excel(name = "保利威真实直播开始时间")
+	@ApiModelProperty("保利威真实直播开始时间")
+	private Long realLiveStartTime;
+	/** 保利威真实直播结束时间 */
+	@Excel(name = "保利威真实直播结束时间")
+	@ApiModelProperty("保利威真实直播结束时间")
+	private Long realLiveEndTime;
+	/** 保利威真实直播时长,单位秒 */
+	@Excel(name = "保利威真实直播时长,单位秒")
+	@ApiModelProperty("保利威真实直播时长,单位秒")
+	private Long realDuration;
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/impl/GoodsServiceImpl.java

@@ -6,6 +6,7 @@ import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.zhongzheng.common.annotation.DataScope;
 import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.common.utils.ServletUtils;
@@ -107,6 +108,7 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
     }
 
     @Override
+    @DataScope(businessAlias = "cb")
     public List<GoodsVo> selectList(GoodsQueryBo bo) {
         List<GoodsVo> list = baseMapper.selectAllList(bo);
         if(Validator.isNotEmpty(bo.getGoodsType())&&bo.getGoodsType()==2){

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/vo/GoodsUserQuestionVo.java

@@ -270,4 +270,6 @@ public class GoodsUserQuestionVo {
 	private Long doExamNum;
 	@ApiModelProperty("总的试卷数量")
 	private Long totalExamNum;
+	@ApiModelProperty("用户ID")
+	private Long userId;
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeServiceImpl.java

@@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.zhongzheng.common.annotation.DataScope;
 import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.common.utils.SecurityUtils;
@@ -127,6 +128,7 @@ public class ClassGradeServiceImpl extends ServiceImpl<ClassGradeMapper, ClassGr
     }
 
     @Override
+    @DataScope(businessAlias = "cb")
     public List<ClassGradeVo> queryList(ClassGradeQueryBo bo) {
         return entity2Vo(baseMapper.queryList(bo));
     }

+ 4 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeUserServiceImpl.java

@@ -10,6 +10,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.zhongzheng.common.annotation.DataScope;
 import com.zhongzheng.common.config.RuoYiConfig;
 import com.zhongzheng.common.core.domain.AjaxResult;
 import com.zhongzheng.common.core.redis.RedisCache;
@@ -705,6 +706,7 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
 
 
     @Override
+    @DataScope(businessAlias = "cb")
     public Map<String, Object> exportPo(ClassGradeUserQueryBo bo) {
         //查询班级学员信息
         List<ClassPeriodStudentVo> classPeriodStudentVos = baseMapper.listUserPeriodExport(bo);
@@ -880,6 +882,7 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
     }
 
     @Override
+    @DataScope(businessAlias = "cb")
     public List<ClassPeriodStudentVo> listUserPeriod(ClassGradeUserQueryBo bo) {
         //查询班级学员信息
         List<ClassPeriodStudentVo> classPeriodStudentVos = baseMapper.listUserPeriod(bo);
@@ -953,6 +956,7 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
     }
 
     @Override
+    @DataScope(businessAlias = "cb")
     public List<ClassPeriodStudentVo> listUserPeriodRecord(ClassGradeUserQueryBo bo) {
         //查询班级学员信息
         List<ClassPeriodStudentVo> classPeriodStudentVos = baseMapper.listUserPeriod(bo);

+ 2 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/polyv/bo/PolyvLiveQueryBo.java

@@ -20,8 +20,8 @@ public class PolyvLiveQueryBo extends BaseEntity {
 
 	@ApiModelProperty("频道号")
 	private String channelId;
-
-
+	@ApiModelProperty("用户ID")
+	private Long userId;
 
 
 }

+ 32 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/polyv/service/IPolyvLiveService.java

@@ -0,0 +1,32 @@
+package com.zhongzheng.modules.polyv.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import com.zhongzheng.modules.polyv.bo.PolyvLiveQueryBo;
+import com.zhongzheng.modules.polyv.bo.PolyvVideoAddBo;
+import com.zhongzheng.modules.polyv.bo.PolyvVideoEditBo;
+import com.zhongzheng.modules.polyv.bo.PolyvVideoQueryBo;
+import com.zhongzheng.modules.polyv.domain.PolyvVideo;
+import com.zhongzheng.modules.polyv.vo.PolyvCataData;
+import com.zhongzheng.modules.polyv.vo.PolyvVideoQuerVo;
+import com.zhongzheng.modules.polyv.vo.PolyvVideoVo;
+import com.zhongzheng.modules.polyv.vo.PolyvVo;
+
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.security.NoSuchAlgorithmException;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 保利威视频信息Service接口
+ *
+ * @author ruoyi
+ * @date 2021-06-11
+ */
+public interface IPolyvLiveService {
+
+
+	Map<String,Object> getLiveSign(PolyvLiveQueryBo bo) throws IOException, NoSuchAlgorithmException;
+}

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/polyv/service/IPolyvVideoService.java

@@ -64,4 +64,5 @@ public interface IPolyvVideoService extends IService<PolyvVideo> {
     List<PolyvCataData> queryCataList(PolyvVideoQueryBo bo) throws Exception;
 
 	TableDataInfo queryPolyv(PolyvVideoQueryBo bo) throws Exception;
+
 }

+ 127 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/polyv/service/impl/PolyvLiveServiceImpl.java

@@ -0,0 +1,127 @@
+package com.zhongzheng.modules.polyv.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.convert.Convert;
+import cn.hutool.core.lang.Validator;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.http.HttpStatus;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.github.pagehelper.Page;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import com.zhongzheng.common.core.redis.RedisCache;
+import com.zhongzheng.common.utils.DateUtils;
+import com.zhongzheng.common.utils.ServletUtils;
+import com.zhongzheng.common.utils.http.HttpUtils;
+import com.zhongzheng.common.utils.polyv.PolyvUtils;
+import com.zhongzheng.modules.course.bo.CourseStreamingBusinessAddBo;
+import com.zhongzheng.modules.course.bo.CourseStreamingQueryBo;
+import com.zhongzheng.modules.course.domain.CourseStreaming;
+import com.zhongzheng.modules.course.service.ICourseStreamingBusinessService;
+import com.zhongzheng.modules.course.service.ICourseStreamingService;
+import com.zhongzheng.modules.course.vo.CourseStreamingVo;
+import com.zhongzheng.modules.polyv.bo.*;
+import com.zhongzheng.modules.polyv.domain.PolyvCata;
+import com.zhongzheng.modules.polyv.domain.PolyvVideDo;
+import com.zhongzheng.modules.polyv.domain.PolyvVideo;
+import com.zhongzheng.modules.polyv.domain.TokenResponse;
+import com.zhongzheng.modules.polyv.mapper.PolyvVideoMapper;
+import com.zhongzheng.modules.polyv.service.IPolyvCataService;
+import com.zhongzheng.modules.polyv.service.IPolyvLiveService;
+import com.zhongzheng.modules.polyv.service.IPolyvVideoService;
+import com.zhongzheng.modules.polyv.vo.*;
+import io.jsonwebtoken.lang.Assert;
+import net.polyv.common.v1.exception.PloyvSdkException;
+import net.polyv.live.v1.constant.LiveConstant;
+import net.polyv.live.v1.entity.channel.operate.LiveChannelAuthTokenRequest;
+import net.polyv.live.v1.entity.channel.operate.LiveChannelAuthTokenResponse;
+import net.polyv.live.v1.service.channel.impl.LiveChannelOperateServiceImpl;
+import net.polyv.live.v1.util.LiveSignUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.security.NoSuchAlgorithmException;
+import java.util.*;
+import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
+
+import static com.squareup.okhttp.internal.Util.md5Hex;
+
+/**
+ * 保利威视频信息Service业务层处理
+ *
+ * @author change
+ * @date 2021-06-11
+ */
+@Service
+public class PolyvLiveServiceImpl implements IPolyvLiveService {
+
+    @Value("${poliv.sdk.userid}")
+    private String poliv_sdk_userid;
+
+    @Value("${poliv.sdk.appId}")
+    private String poliv_sdk_appId;
+
+    @Value("${poliv.sdk.appSecret}")
+    private String poliv_sdk_appSecret;
+
+    @Autowired
+    private RedisCache redisCache;
+
+    @Override
+    public Map<String, Object> getLiveSign(PolyvLiveQueryBo bo) throws IOException, NoSuchAlgorithmException {
+        Map<String, Object> map = new HashMap<>();
+        long timestamp = System.currentTimeMillis();
+        Map<String, String> paramMap = new HashMap<String, String>();
+        // 公共参数
+        paramMap.put("appId", poliv_sdk_appId);
+        paramMap.put("timestamp", Long.toString(timestamp));
+        // 业务参数
+        paramMap.put("channelId", bo.getChannelId());
+
+        // 一次性签名(可选参数)
+        // paramMap.put("signatureNonce", UUID.randomUUID().toString());
+        try{
+            // MD5签名(默认)
+            String sign = LiveSignUtil.getSign(paramMap, poliv_sdk_appSecret);
+            map.put("sign",sign);
+            map.put("timestamp",paramMap.get("timestamp"));
+            map.put("appId",paramMap.get("appId"));
+        }catch(UnsupportedEncodingException e){
+            throw e;
+        }catch (NoSuchAlgorithmException e){
+            throw e;
+        }
+        LiveChannelAuthTokenRequest liveChannelAuthTokenRequest = new LiveChannelAuthTokenRequest();
+        LiveChannelAuthTokenResponse liveChannelAuthTokenResponse;
+        try {
+            liveChannelAuthTokenRequest.setUserId(poliv_sdk_userid)
+                    .setChannelId(bo.getChannelId())
+                    .setRole(LiveConstant.Role.ADMIN.getDesc())
+                    .setOrigin(null);
+            liveChannelAuthTokenResponse = new LiveChannelOperateServiceImpl().getChannelAuthToken(
+                    liveChannelAuthTokenRequest);
+
+            if (liveChannelAuthTokenResponse != null) {
+                //to do something ......
+                map.put("token",liveChannelAuthTokenResponse.getToken());
+                map.put("mediaChannelKey",liveChannelAuthTokenResponse.getMediaChannelKey());
+            }
+        } catch (PloyvSdkException e) {
+            throw e;
+        } catch (Exception e) {
+            throw e;
+        }
+        return map;
+    }
+}

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/IUserService.java

@@ -56,6 +56,8 @@ public interface IUserService extends IService<User> {
 	 */
 	Boolean updateByEditBo(UserEditBo bo) throws IllegalAccessException;
 
+	Boolean appUpdateByEditBo(UserEditBo bo) throws IllegalAccessException;
+
 	/**
 	 * 校验并删除数据
 	 * @param ids 主键集合

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserSubscribeServiceImpl.java

@@ -8,6 +8,7 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.zhongzheng.common.annotation.DataScope;
 import com.zhongzheng.common.core.redis.RedisCache;
 import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.utils.DateUtils;
@@ -618,6 +619,7 @@ public class UserSubscribeServiceImpl extends ServiceImpl<UserSubscribeMapper, U
     }
 
     @Override
+    @DataScope(businessAlias = "cb")
     public List<UserSubscribeVo> listSubscribe(UserSubscribeQueryBo bo) {
         List<UserSubscribeVo> userSubscribeVos = baseMapper.listSubscribe(bo);
         return userSubscribeVos;

+ 2 - 0
zhongzheng-system/src/main/resources/mapper/modules/bank/QuestionMapper.xml

@@ -165,6 +165,7 @@
         <result property="orderGoodsId" column="order_goods_id"/>
         <result property="realName" column="realname"/>
         <result property="idCard" column="id_card"/>
+        <result property="userId" column="user_id"/>
         <result property="orderSn" column="order_sn"/>
 
         <result property="doStartTime" column="do_start_time"/>
@@ -441,6 +442,7 @@
         og.order_goods_id,
         u.realname,
         u.id_card,
+        u.user_id,
         (SELECT MIN(uer.update_time) from user_exam_record uer where uer.order_goods_id = og.order_goods_id) do_start_time,
         (SELECT MAX(uer.update_time) from user_exam_record uer where uer.order_goods_id = og.order_goods_id) do_end_time,
         (SELECT count(DISTINCT uer.exam_id) from user_exam_record uer where uer.order_goods_id = og.order_goods_id) do_exam_num

+ 8 - 0
zhongzheng-system/src/main/resources/mapper/modules/course/CourseSectionMapper.xml

@@ -23,6 +23,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="code" column="code"/>
         <result property="importBy" column="import_by"/>
         <result property="importNo" column="import_no"/>
+        <result property="sessionId" column="session_id"/>
+        <result property="realLiveStartTime" column="real_live_start_time"/>
+        <result property="realLiveEndTime" column="real_live_end_time"/>
+        <result property="realDuration" column="real_duration"/>
     </resultMap>
 
     <resultMap type="com.zhongzheng.modules.course.vo.CourseSectionVo" id="CourseSectionResultVo">
@@ -43,6 +47,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="code" column="code"/>
         <result property="createTime" column="create_time"/>
         <result property="updateTime" column="update_time"/>
+        <result property="sessionId" column="session_id"/>
+        <result property="realLiveStartTime" column="real_live_start_time"/>
+        <result property="realLiveEndTime" column="real_live_end_time"/>
+        <result property="realDuration" column="real_duration"/>
         <collection property="businessList" column="section_id" select="findBusinessList"/>
         <collection property="chapterList" column="section_id" select="findChapterList"/>
       <!--  <collection property="moduleList" javaType="java.util.List" resultMap="CourseModuleChapterListResult"/>

+ 2 - 0
zhongzheng-system/src/main/resources/mapper/modules/goods/GoodsMapper.xml

@@ -242,6 +242,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             AND qb.subject_id = #{subjectId}
             )
         </if>
+        <!-- 数据范围过滤 -->
+        ${params.dataScope}
         <if test="sortType != null and sortType == 2">
             ORDER BY g.stand_price
         </if>

+ 6 - 11
zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeMapper.xml

@@ -204,6 +204,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             (SELECT COUNT(a.id) FROM class_grade_user a where a.grade_id = g.grade_id and a.status =1 and period_plush =1) as period_plush_num
         FROM
             class_grade g
+        LEFT JOIN class_grade_goods cgg ON cgg.grade_id = g.grade_id
+        LEFT JOIN goods d ON cgg.goods_id = d.goods_id
+        LEFT JOIN course_business cb ON d.business_id = cb.id
         <if test="userId != null and userId !=0 ">
             LEFT JOIN class_grade_user gu on g.grade_id = gu.grade_id AND gu.status = 1
         </if>
@@ -270,17 +273,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             ) >0
         </if>
         <if test="businessId != null and businessId !='' ">
-            AND (
-            SELECT
-            COUNT(*)
-            FROM
-            class_grade_goods s
-            LEFT JOIN goods d ON s.goods_id = d.goods_id
-            WHERE
-            1 = 1
-            AND g.grade_id = s.grade_id
-            AND d.business_id =#{businessId}
-            ) >0
+            AND cb.business_id = #{businessId}
         </if>
         <if test="schoolId != null and schoolId !='' ">
             AND (
@@ -329,6 +322,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <if test="hasInterface != null and hasInterface == 2">
             AND g.no_interface_account_id is not null
         </if>
+        <!-- 数据范围过滤 -->
+        ${params.dataScope}
         order by g.create_time desc
     </select>
 

+ 6 - 1
zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeUserMapper.xml

@@ -335,6 +335,7 @@
         LEFT JOIN `user` u ON u.user_id = cgu.user_id
         LEFT JOIN user_profile up on u.user_id =up.user_id and up.goods_id = cgg.goods_id and cgu.order_goods_id = up.order_goods_id and up.type_status=1 and up.current_status = 1
         LEFT JOIN goods g on cgg.goods_id = g.goods_id
+        LEFT JOIN course_business cb ON g.business_id = cb.id
         LEFT JOIN (SELECT
         COUNT( m.id ) AS exam_num,
         c.goods_id
@@ -400,6 +401,8 @@
         <if test="searchEndTime != null and searchEndTime !='' ">
             AND #{searchEndTime} >= cgu.create_time
         </if>
+        <!-- 数据范围过滤 -->
+        ${params.dataScope}
         <if test="periodStatus != 2 and periodStatus != 3">
             order by cgu.update_time desc
         </if>
@@ -440,13 +443,13 @@
             up.key_value,
         </if>
         cgu.period_time as end_time
-
         FROM
         class_grade_user cgu
         LEFT JOIN class_grade cg ON cgu.grade_id = cg.grade_id
         LEFT JOIN class_grade_goods cgg on cg.grade_id=cgg.grade_id
         LEFT JOIN `user` u ON u.user_id = cgu.user_id
         LEFT JOIN goods g on cgg.goods_id = g.goods_id
+        LEFT JOIN course_business cb ON g.business_id = cb.id
         LEFT JOIN user_profile up on u.user_id =up.user_id and up.goods_id = g.goods_id and cgu.order_goods_id = up.order_goods_id and up.type_status=1 and up.current_status = 1
         where 1=1
         and cgu.`status` =1
@@ -501,6 +504,8 @@
         <if test="searchEndTime != null and searchEndTime !='' ">
             AND #{searchEndTime} >= cgu.create_time
         </if>
+        <!-- 数据范围过滤 -->
+        ${params.dataScope}
         <if test="periodStatus != 2 and periodStatus != 3">
             order by cgu.update_time desc
         </if>

+ 4 - 1
zhongzheng-system/src/main/resources/mapper/modules/user/UserSubscribeMapper.xml

@@ -84,7 +84,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             user_subscribe us
         LEFT JOIN  exam_before eb ON us.before_id = eb.before_id
         LEFT JOIN  `user` u ON us.user_id = u.user_id
-
+        LEFT JOIN goods g ON  us.goods_id = g.goods_id
+        LEFT JOIN course_business cb on g.business_id = cb.id
         WHERE
             1 =1
         <if test="applySiteAddress != null and applySiteAddress != '' ">
@@ -176,6 +177,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <if test="realname != null and realname != '' ">
             and (SELECT u.realname FROM `user` u where us.user_id = u.user_id) like concat('%', #{realname}, '%')
         </if>
+        <!-- 数据范围过滤 -->
+        ${params.dataScope}
         order by us.create_time desc
     </select>