Kaynağa Gözat

会议小程序

孙永军 1 yıl önce
ebeveyn
işleme
fb29e80ab6
33 değiştirilmiş dosya ile 747 ekleme ve 71 silme
  1. 21 0
      src/main/java/com/smcic/api/conference/controller/ConferenceAclDataController.java
  2. 20 0
      src/main/java/com/smcic/api/conference/controller/ConferenceAclModuleController.java
  3. 20 0
      src/main/java/com/smcic/api/conference/controller/ConferenceAdminModuleController.java
  4. 9 3
      src/main/java/com/smcic/api/conference/controller/ConferenceAgendaController.java
  5. 9 2
      src/main/java/com/smcic/api/conference/controller/ConferenceAgendaDetailController.java
  6. 4 2
      src/main/java/com/smcic/api/conference/controller/ConferenceAgendaSeatController.java
  7. 10 2
      src/main/java/com/smcic/api/conference/controller/ConferenceConfController.java
  8. 11 3
      src/main/java/com/smcic/api/conference/controller/ConferenceController.java
  9. 33 0
      src/main/java/com/smcic/api/conference/entity/ConferenceAclData.java
  10. 33 0
      src/main/java/com/smcic/api/conference/entity/ConferenceAclModule.java
  11. 32 0
      src/main/java/com/smcic/api/conference/entity/ConferenceAdminModule.java
  12. 3 0
      src/main/java/com/smcic/api/conference/entity/ConferenceAgendaDetail.java
  13. 16 0
      src/main/java/com/smcic/api/conference/mapper/ConferenceAclDataMapper.java
  14. 16 0
      src/main/java/com/smcic/api/conference/mapper/ConferenceAclModuleMapper.java
  15. 16 0
      src/main/java/com/smcic/api/conference/mapper/ConferenceAdminModuleMapper.java
  16. 16 0
      src/main/java/com/smcic/api/conference/service/IConferenceAclDataService.java
  17. 16 0
      src/main/java/com/smcic/api/conference/service/IConferenceAclModuleService.java
  18. 16 0
      src/main/java/com/smcic/api/conference/service/IConferenceAdminModuleService.java
  19. 49 0
      src/main/java/com/smcic/api/conference/service/impl/ConferenceAclDataServiceImpl.java
  20. 20 0
      src/main/java/com/smcic/api/conference/service/impl/ConferenceAclModuleServiceImpl.java
  21. 20 0
      src/main/java/com/smcic/api/conference/service/impl/ConferenceAdminModuleServiceImpl.java
  22. 41 0
      src/main/java/com/smcic/api/conference/service/impl/ConferenceAgendaDetailServiceImpl.java
  23. 16 0
      src/main/java/com/smcic/api/conference/service/impl/ConferenceAgendaSeatServiceImpl.java
  24. 34 0
      src/main/java/com/smcic/api/conference/service/impl/ConferenceAgendaServiceImpl.java
  25. 21 0
      src/main/java/com/smcic/api/conference/service/impl/ConferenceConfServiceImpl.java
  26. 48 0
      src/main/java/com/smcic/api/conference/service/impl/ConferenceServiceImpl.java
  27. 2 0
      src/main/java/com/smcic/api/user/entity/User.java
  28. 3 10
      src/main/java/com/smcic/api/user/service/impl/UserServiceImpl.java
  29. 9 0
      src/main/java/com/smcic/core/advice/APIResponseAdvice.java
  30. 31 0
      src/main/java/com/smcic/core/advice/BizException.java
  31. 11 0
      src/main/java/com/smcic/core/auth/CmsLoginRequired.java
  32. 24 12
      src/main/java/com/smcic/core/auth/LoginInterceptor.java
  33. 117 37
      src/test/java/conference.http

+ 21 - 0
src/main/java/com/smcic/api/conference/controller/ConferenceAclDataController.java

@@ -0,0 +1,21 @@
+package com.smcic.api.conference.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author syj
+ * @since 2024-04-08
+ */
+@RestController
+@RequestMapping("/conference/conference-acl-data")
+public class ConferenceAclDataController {
+
+
+}

+ 20 - 0
src/main/java/com/smcic/api/conference/controller/ConferenceAclModuleController.java

@@ -0,0 +1,20 @@
+package com.smcic.api.conference.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author syj
+ * @since 2024-04-08
+ */
+@RestController
+@RequestMapping("/conference/conference-acl-module")
+public class ConferenceAclModuleController {
+
+}

+ 20 - 0
src/main/java/com/smcic/api/conference/controller/ConferenceAdminModuleController.java

@@ -0,0 +1,20 @@
+package com.smcic.api.conference.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author syj
+ * @since 2024-04-08
+ */
+@RestController
+@RequestMapping("/conference/conference-admin-module")
+public class ConferenceAdminModuleController {
+
+}

+ 9 - 3
src/main/java/com/smcic/api/conference/controller/ConferenceAgendaController.java

@@ -3,6 +3,7 @@ package com.smcic.api.conference.controller;
 
 import com.smcic.api.conference.entity.ConferenceAgenda;
 import com.smcic.api.conference.service.impl.ConferenceAgendaServiceImpl;
+import com.smcic.core.auth.CmsLoginRequired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
@@ -25,10 +26,15 @@ public class ConferenceAgendaController {
     private ConferenceAgendaServiceImpl conferenceAgendaService;
 
     @PostMapping("create")
+    @CmsLoginRequired
     public ConferenceAgenda create(@RequestBody ConferenceAgenda conferenceAgenda){
-        conferenceAgenda.setCreateTime(LocalDateTime.now());
-        conferenceAgendaService.save(conferenceAgenda);
-        return conferenceAgenda;
+        return  conferenceAgendaService.create(conferenceAgenda);
+    }
+
+    @PostMapping("update")
+    @CmsLoginRequired
+    public void update(@RequestBody ConferenceAgenda conferenceAgenda){
+        conferenceAgendaService.update(conferenceAgenda);
     }
 
     @GetMapping("list/{id}")

+ 9 - 2
src/main/java/com/smcic/api/conference/controller/ConferenceAgendaDetailController.java

@@ -3,6 +3,7 @@ package com.smcic.api.conference.controller;
 
 import com.smcic.api.conference.entity.ConferenceAgendaDetail;
 import com.smcic.api.conference.service.impl.ConferenceAgendaDetailServiceImpl;
+import com.smcic.core.auth.CmsLoginRequired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
@@ -24,9 +25,15 @@ public class ConferenceAgendaDetailController {
     private ConferenceAgendaDetailServiceImpl conferenceAgendaDetailService;
 
     @PostMapping("create")
+    @CmsLoginRequired
     public ConferenceAgendaDetail create(@RequestBody ConferenceAgendaDetail conferenceAgendaDetail){
-        conferenceAgendaDetailService.save(conferenceAgendaDetail);
-        return conferenceAgendaDetail;
+        return conferenceAgendaDetailService.create(conferenceAgendaDetail);
+    }
+
+    @PostMapping("update")
+    @CmsLoginRequired
+    public void update(@RequestBody ConferenceAgendaDetail conferenceAgendaDetail){
+        conferenceAgendaDetailService.update(conferenceAgendaDetail);
     }
 
     @GetMapping("list/{id}")

+ 4 - 2
src/main/java/com/smcic/api/conference/controller/ConferenceAgendaSeatController.java

@@ -4,6 +4,7 @@ package com.smcic.api.conference.controller;
 import com.smcic.api.conference.entity.ConferenceAgendaSeat;
 import com.smcic.api.conference.service.impl.ConferenceAgendaSeatServiceImpl;
 import com.smcic.api.conference.service.impl.ConferenceAgendaServiceImpl;
+import com.smcic.core.auth.CmsLoginRequired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
@@ -24,9 +25,10 @@ public class ConferenceAgendaSeatController {
     private ConferenceAgendaSeatServiceImpl conferenceAgendaSeatService;
 
     @PostMapping("create")
+    @CmsLoginRequired
     public ConferenceAgendaSeat create(@RequestBody ConferenceAgendaSeat conferenceAgendaSeat){
-        conferenceAgendaSeatService.save(conferenceAgendaSeat);
-        return conferenceAgendaSeat;
+        return conferenceAgendaSeatService.create(conferenceAgendaSeat);
+
     }
 
     @GetMapping("info/{id}")

+ 10 - 2
src/main/java/com/smcic/api/conference/controller/ConferenceConfController.java

@@ -3,6 +3,7 @@ package com.smcic.api.conference.controller;
 
 import com.smcic.api.conference.entity.ConferenceConf;
 import com.smcic.api.conference.service.impl.ConferenceConfServiceImpl;
+import com.smcic.core.auth.CmsLoginRequired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
@@ -40,8 +41,15 @@ public class ConferenceConfController {
 
 
     @PostMapping("create")
+    @CmsLoginRequired
     public  ConferenceConf create(@RequestBody ConferenceConf conferenceConf){
-        conferenceConfService.save(conferenceConf);
-        return conferenceConf;
+        return  conferenceConfService.create(conferenceConf);
+
+    }
+
+    @PostMapping("update")
+    @CmsLoginRequired
+    public  void update(@RequestBody ConferenceConf conferenceConf){
+        conferenceConfService.update(conferenceConf);
     }
 }

+ 11 - 3
src/main/java/com/smcic/api/conference/controller/ConferenceController.java

@@ -3,6 +3,7 @@ package com.smcic.api.conference.controller;
 
 import com.smcic.api.conference.entity.Conference;
 import com.smcic.api.conference.service.impl.ConferenceServiceImpl;
+import com.smcic.core.auth.CmsLoginRequired;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -27,14 +28,21 @@ public class ConferenceController {
     private ConferenceServiceImpl conferenceService;
 
     @PostMapping("create")
+    @CmsLoginRequired
     public Conference create(@RequestBody Conference conference){
-        conferenceService.save(conference);
-        return conference;
+        return conferenceService.create(conference);
+    }
+
+    @PostMapping("update")
+    @CmsLoginRequired
+    public void update(@RequestBody Conference conference){
+        conferenceService.update(conference);
     }
 
     @GetMapping("list")
+    @CmsLoginRequired
     public List<Conference> list(){
-        return conferenceService.list();
+        return conferenceService.ls();
     }
 
     @GetMapping("info/{id}")

+ 33 - 0
src/main/java/com/smcic/api/conference/entity/ConferenceAclData.java

@@ -0,0 +1,33 @@
+package com.smcic.api.conference.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author syj
+ * @since 2024-04-08
+ */
+@Getter
+@Setter
+@TableName("conference_acl_data")
+public class ConferenceAclData implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    private Long conferenceId;
+
+    private Long adminId;
+
+
+}

+ 33 - 0
src/main/java/com/smcic/api/conference/entity/ConferenceAclModule.java

@@ -0,0 +1,33 @@
+package com.smcic.api.conference.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author syj
+ * @since 2024-04-08
+ */
+@Getter
+@Setter
+@TableName("conference_acl_module")
+public class ConferenceAclModule implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    private Long adminModuleId;
+
+    private Long adminId;
+
+
+}

+ 32 - 0
src/main/java/com/smcic/api/conference/entity/ConferenceAdminModule.java

@@ -0,0 +1,32 @@
+package com.smcic.api.conference.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author syj
+ * @since 2024-04-08
+ */
+@Getter
+@Setter
+@TableName("conference_admin_module")
+public class ConferenceAdminModule implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private String moduleId;
+
+    private String moduleName;
+
+    private String route;
+
+    private Integer sortNum;
+
+
+}

+ 3 - 0
src/main/java/com/smcic/api/conference/entity/ConferenceAgendaDetail.java

@@ -1,5 +1,7 @@
 package com.smcic.api.conference.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import java.io.Serializable;
 import java.time.LocalDateTime;
@@ -23,6 +25,7 @@ public class ConferenceAgendaDetail implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
+    @TableId(value = "id", type = IdType.AUTO)
     private Long id;
 
     private Long agendaId;

+ 16 - 0
src/main/java/com/smcic/api/conference/mapper/ConferenceAclDataMapper.java

@@ -0,0 +1,16 @@
+package com.smcic.api.conference.mapper;
+
+import com.smcic.api.conference.entity.ConferenceAclData;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author syj
+ * @since 2024-04-08
+ */
+public interface ConferenceAclDataMapper extends BaseMapper<ConferenceAclData> {
+
+}

+ 16 - 0
src/main/java/com/smcic/api/conference/mapper/ConferenceAclModuleMapper.java

@@ -0,0 +1,16 @@
+package com.smcic.api.conference.mapper;
+
+import com.smcic.api.conference.entity.ConferenceAclModule;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author syj
+ * @since 2024-04-08
+ */
+public interface ConferenceAclModuleMapper extends BaseMapper<ConferenceAclModule> {
+
+}

+ 16 - 0
src/main/java/com/smcic/api/conference/mapper/ConferenceAdminModuleMapper.java

@@ -0,0 +1,16 @@
+package com.smcic.api.conference.mapper;
+
+import com.smcic.api.conference.entity.ConferenceAdminModule;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author syj
+ * @since 2024-04-08
+ */
+public interface ConferenceAdminModuleMapper extends BaseMapper<ConferenceAdminModule> {
+
+}

+ 16 - 0
src/main/java/com/smcic/api/conference/service/IConferenceAclDataService.java

@@ -0,0 +1,16 @@
+package com.smcic.api.conference.service;
+
+import com.smcic.api.conference.entity.ConferenceAclData;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author syj
+ * @since 2024-04-08
+ */
+public interface IConferenceAclDataService extends IService<ConferenceAclData> {
+
+}

+ 16 - 0
src/main/java/com/smcic/api/conference/service/IConferenceAclModuleService.java

@@ -0,0 +1,16 @@
+package com.smcic.api.conference.service;
+
+import com.smcic.api.conference.entity.ConferenceAclModule;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author syj
+ * @since 2024-04-08
+ */
+public interface IConferenceAclModuleService extends IService<ConferenceAclModule> {
+
+}

+ 16 - 0
src/main/java/com/smcic/api/conference/service/IConferenceAdminModuleService.java

@@ -0,0 +1,16 @@
+package com.smcic.api.conference.service;
+
+import com.smcic.api.conference.entity.ConferenceAdminModule;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author syj
+ * @since 2024-04-08
+ */
+public interface IConferenceAdminModuleService extends IService<ConferenceAdminModule> {
+
+}

+ 49 - 0
src/main/java/com/smcic/api/conference/service/impl/ConferenceAclDataServiceImpl.java

@@ -0,0 +1,49 @@
+package com.smcic.api.conference.service.impl;
+
+import com.smcic.api.conference.entity.ConferenceAclData;
+import com.smcic.api.conference.mapper.ConferenceAclDataMapper;
+import com.smcic.api.conference.service.IConferenceAclDataService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.smcic.api.user.entity.User;
+import com.smcic.api.user.service.impl.UserServiceImpl;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author syj
+ * @since 2024-04-08
+ */
+@Service
+public class ConferenceAclDataServiceImpl extends ServiceImpl<ConferenceAclDataMapper, ConferenceAclData> implements IConferenceAclDataService {
+
+    @Resource
+    private UserServiceImpl userService;
+
+    public void create(Long uid, Long cid){
+        ConferenceAclData aclData = new ConferenceAclData();
+        aclData.setAdminId(uid);
+        aclData.setConferenceId(cid);
+        save(aclData);
+    }
+
+    public List<Long> getAcl(Long uid){
+        return lambdaQuery().eq(ConferenceAclData::getAdminId, uid).list().stream().map(ConferenceAclData::getConferenceId).collect(Collectors.toList());
+    }
+
+    public boolean hasDataAcl(Long cid){
+        User loginUser = userService.getLoginUser();
+        if(loginUser.getRoleId() == 1){
+            return true;
+        }
+        return getAcl(loginUser.getId()).contains(cid);
+    }
+
+
+}

+ 20 - 0
src/main/java/com/smcic/api/conference/service/impl/ConferenceAclModuleServiceImpl.java

@@ -0,0 +1,20 @@
+package com.smcic.api.conference.service.impl;
+
+import com.smcic.api.conference.entity.ConferenceAclModule;
+import com.smcic.api.conference.mapper.ConferenceAclModuleMapper;
+import com.smcic.api.conference.service.IConferenceAclModuleService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author syj
+ * @since 2024-04-08
+ */
+@Service
+public class ConferenceAclModuleServiceImpl extends ServiceImpl<ConferenceAclModuleMapper, ConferenceAclModule> implements IConferenceAclModuleService {
+
+}

+ 20 - 0
src/main/java/com/smcic/api/conference/service/impl/ConferenceAdminModuleServiceImpl.java

@@ -0,0 +1,20 @@
+package com.smcic.api.conference.service.impl;
+
+import com.smcic.api.conference.entity.ConferenceAdminModule;
+import com.smcic.api.conference.mapper.ConferenceAdminModuleMapper;
+import com.smcic.api.conference.service.IConferenceAdminModuleService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author syj
+ * @since 2024-04-08
+ */
+@Service
+public class ConferenceAdminModuleServiceImpl extends ServiceImpl<ConferenceAdminModuleMapper, ConferenceAdminModule> implements IConferenceAdminModuleService {
+
+}

+ 41 - 0
src/main/java/com/smcic/api/conference/service/impl/ConferenceAgendaDetailServiceImpl.java

@@ -1,10 +1,16 @@
 package com.smcic.api.conference.service.impl;
 
+import com.smcic.api.conference.entity.ConferenceAgenda;
 import com.smcic.api.conference.entity.ConferenceAgendaDetail;
 import com.smcic.api.conference.mapper.ConferenceAgendaDetailMapper;
 import com.smcic.api.conference.service.IConferenceAgendaDetailService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.smcic.core.advice.APIException;
+import com.smcic.core.advice.BizException;
 import org.springframework.stereotype.Service;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import javax.annotation.Resource;
 
 /**
  * <p>
@@ -17,4 +23,39 @@ import org.springframework.stereotype.Service;
 @Service
 public class ConferenceAgendaDetailServiceImpl extends ServiceImpl<ConferenceAgendaDetailMapper, ConferenceAgendaDetail> implements IConferenceAgendaDetailService {
 
+    @Resource
+    private ConferenceAgendaServiceImpl agendaService;
+
+    @Resource
+    private ConferenceAclDataServiceImpl aclDataService;
+
+    public ConferenceAgendaDetail create(ConferenceAgendaDetail conferenceAgendaDetail){
+        ConferenceAgenda agenda = agendaService.getById(conferenceAgendaDetail.getAgendaId());
+
+        if(!aclDataService.hasDataAcl(agenda.getConferenceId())){
+            throw new BizException("没有该会议的权限");
+        }
+
+        save(conferenceAgendaDetail);
+        return conferenceAgendaDetail;
+    }
+
+    public void update(ConferenceAgendaDetail conferenceAgendaDetail){
+        ConferenceAgendaDetail detail = getById(conferenceAgendaDetail.getId());
+        ConferenceAgenda agenda = agendaService.getById(detail.getAgendaId());
+
+        if(!aclDataService.hasDataAcl(agenda.getConferenceId())){
+            throw new BizException("没有该会议的权限");
+        }
+
+        detail.setTitle(conferenceAgendaDetail.getTitle());
+        detail.setSpeaker(conferenceAgendaDetail.getSpeaker());
+        detail.setSpeakerTags(conferenceAgendaDetail.getSpeakerTags());
+        detail.setStartTime(conferenceAgendaDetail.getStartTime());
+        detail.setEndTime(conferenceAgendaDetail.getEndTime());
+
+        updateById(detail);
+    }
+
+
 }

+ 16 - 0
src/main/java/com/smcic/api/conference/service/impl/ConferenceAgendaSeatServiceImpl.java

@@ -1,11 +1,15 @@
 package com.smcic.api.conference.service.impl;
 
+import com.smcic.api.conference.entity.ConferenceAgenda;
 import com.smcic.api.conference.entity.ConferenceAgendaSeat;
 import com.smcic.api.conference.mapper.ConferenceAgendaSeatMapper;
 import com.smcic.api.conference.service.IConferenceAgendaSeatService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.smcic.core.advice.BizException;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
+
 /**
  * <p>
  *  服务实现类
@@ -17,11 +21,23 @@ import org.springframework.stereotype.Service;
 @Service
 public class ConferenceAgendaSeatServiceImpl extends ServiceImpl<ConferenceAgendaSeatMapper, ConferenceAgendaSeat> implements IConferenceAgendaSeatService {
 
+    @Resource
+    private ConferenceAgendaServiceImpl agendaService;
+
+    @Resource
+    private ConferenceAclDataServiceImpl aclDataService;
+
     public ConferenceAgendaSeat info(Long aid){
         return lambdaQuery().eq(ConferenceAgendaSeat::getAgendaId, aid).eq(ConferenceAgendaSeat::getStatus, 1).one();
     }
 
     public ConferenceAgendaSeat create(ConferenceAgendaSeat conferenceAgendaSeat){
+        ConferenceAgenda agenda = agendaService.getById(conferenceAgendaSeat.getAgendaId());
+
+        if(!aclDataService.hasDataAcl(agenda.getConferenceId())){
+            throw new BizException("没有该会议的权限");
+        }
+
         ConferenceAgendaSeat one = lambdaQuery().eq(ConferenceAgendaSeat::getAgendaId, conferenceAgendaSeat.getAgendaId()).eq(ConferenceAgendaSeat::getStatus, 1).one();
         if (one != null){
             one.setStatus(0);

+ 34 - 0
src/main/java/com/smcic/api/conference/service/impl/ConferenceAgendaServiceImpl.java

@@ -5,9 +5,13 @@ import com.smcic.api.conference.entity.ConferenceAgendaDetail;
 import com.smcic.api.conference.mapper.ConferenceAgendaMapper;
 import com.smcic.api.conference.service.IConferenceAgendaService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.smcic.core.advice.APIException;
+import com.smcic.core.advice.BizException;
 import org.springframework.stereotype.Service;
+import org.springframework.web.bind.annotation.RequestBody;
 
 import javax.annotation.Resource;
+import java.time.LocalDateTime;
 import java.util.List;
 
 /**
@@ -23,6 +27,10 @@ public class ConferenceAgendaServiceImpl extends ServiceImpl<ConferenceAgendaMap
     @Resource
     private ConferenceAgendaDetailServiceImpl conferenceAgendaDetailService;
 
+    @Resource
+    private ConferenceAclDataServiceImpl aclDataService;
+
+
     public List<ConferenceAgenda>  listByCid(Long id){
         return lambdaQuery().eq(ConferenceAgenda::getConferenceId, id).orderByAsc(ConferenceAgenda::getAgendaTime).list();
     }
@@ -32,4 +40,30 @@ public class ConferenceAgendaServiceImpl extends ServiceImpl<ConferenceAgendaMap
         conferenceAgenda.setDetails(conferenceAgendaDetailService.lambdaQuery().eq(ConferenceAgendaDetail::getAgendaId, id).list());
         return conferenceAgenda;
     }
+
+    public ConferenceAgenda create(ConferenceAgenda conferenceAgenda){
+        if(!aclDataService.hasDataAcl(conferenceAgenda.getConferenceId())){
+            throw new BizException("没有该会议的权限");
+        }
+        conferenceAgenda.setCreateTime(LocalDateTime.now());
+        save(conferenceAgenda);
+        return conferenceAgenda;
+    }
+
+    public void update(ConferenceAgenda conferenceAgenda){
+        ConferenceAgenda data = getById(conferenceAgenda.getId());
+        if(!aclDataService.hasDataAcl(conferenceAgenda.getConferenceId())){
+            throw new BizException("没有该会议的权限");
+        }
+
+        data.setAgendaName(conferenceAgenda.getAgendaName());
+        data.setAgendaCover(conferenceAgenda.getAgendaCover());
+        data.setAgendaDesc(conferenceAgenda.getAgendaDesc());
+        data.setAgendaTime(conferenceAgenda.getAgendaTime());
+        data.setAgendaContent(conferenceAgenda.getAgendaContent());
+        data.setAgendaVideo(conferenceAgenda.getAgendaVideo());
+        data.setWxVideoUid(conferenceAgenda.getWxVideoUid());
+
+        updateById(data);
+    }
 }

+ 21 - 0
src/main/java/com/smcic/api/conference/service/impl/ConferenceConfServiceImpl.java

@@ -4,8 +4,11 @@ import com.smcic.api.conference.entity.ConferenceConf;
 import com.smcic.api.conference.mapper.ConferenceConfMapper;
 import com.smcic.api.conference.service.IConferenceConfService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.smcic.core.advice.APIException;
+import com.smcic.core.advice.BizException;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
 import java.util.List;
 
 /**
@@ -19,6 +22,9 @@ import java.util.List;
 @Service
 public class ConferenceConfServiceImpl extends ServiceImpl<ConferenceConfMapper, ConferenceConf> implements IConferenceConfService {
 
+    @Resource
+    private ConferenceAclDataServiceImpl aclDataService;
+
     public ConferenceConf info(Long id, String key) {
         return lambdaQuery().eq(ConferenceConf::getConferenceId, id).eq(ConferenceConf::getConfKey, key).one();
     }
@@ -30,4 +36,19 @@ public class ConferenceConfServiceImpl extends ServiceImpl<ConferenceConfMapper,
     public List<ConferenceConf> listByType(Long id, String type){
         return lambdaQuery().eq(ConferenceConf::getConferenceId, id).eq(ConferenceConf::getConfType, type).list();
     }
+
+    public ConferenceConf create(ConferenceConf conferenceConf){
+        if(!aclDataService.hasDataAcl(conferenceConf.getConferenceId())){
+            throw new BizException("没有该会议的权限");
+        }
+        save(conferenceConf);
+        return conferenceConf;
+    }
+
+    public void update(ConferenceConf conferenceConf){
+        if(!aclDataService.hasDataAcl(conferenceConf.getConferenceId())){
+            throw new BizException("没有该会议的权限");
+        }
+        updateById(conferenceConf);
+    }
 }

+ 48 - 0
src/main/java/com/smcic/api/conference/service/impl/ConferenceServiceImpl.java

@@ -7,12 +7,20 @@ import com.smcic.api.conference.mapper.ConferenceMapper;
 import com.smcic.api.conference.service.IConferenceService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.smcic.api.operate.service.OSSService;
+import com.smcic.api.user.entity.User;
+import com.smcic.api.user.service.impl.UserServiceImpl;
+import com.smcic.core.advice.APIException;
+import com.smcic.core.advice.BizException;
+import com.smcic.core.auth.AESUtil;
+import com.smcic.core.auth.HttpContextUtil;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
 
 /**
  * <p>
@@ -28,6 +36,12 @@ public class ConferenceServiceImpl extends ServiceImpl<ConferenceMapper, Confere
     @Resource
     private OSSService ossService;
 
+    @Resource
+    private ConferenceAclDataServiceImpl aclDataService;
+
+    @Resource
+    private UserServiceImpl userService;
+
     public String upload(MultipartFile file, Long cid){
         String path = "operate/cenference/" + cid + "/" + (new DateTime().toString("yyyyMMdd")) + "/"+ UUID.randomUUID() + file.getOriginalFilename();
         ossService.put("smcic-index", path, file);
@@ -42,4 +56,38 @@ public class ConferenceServiceImpl extends ServiceImpl<ConferenceMapper, Confere
         }
         return urls;
     }
+
+    @Transactional
+    public Conference create( Conference conference){
+        Optional<String> token = HttpContextUtil.getToken();
+        if (!token.isPresent()) {
+            throw new BizException("获取token异常");
+        }
+        String userId = AESUtil.decryptStr(token.get());
+        save(conference);
+        aclDataService.create(Long.valueOf(userId), conference.getId());
+        return conference;
+    }
+
+    public void update(Conference conference){
+        if(!aclDataService.hasDataAcl(conference.getId())){
+            throw new BizException("没有该会议的权限");
+        }
+
+        updateById(conference);
+    }
+
+    public  List<Conference> ls(){
+        User loginUser = userService.getLoginUser();
+        if(loginUser.getRoleId() == 1){
+            return list();
+        }else{
+            List<Long> conferenceIds = aclDataService.getAcl(loginUser.getId());
+            if(conferenceIds.isEmpty()){
+                return new ArrayList<>();
+            }
+            return lambdaQuery().in(Conference::getId, conferenceIds).list();
+        }
+
+    }
 }

+ 2 - 0
src/main/java/com/smcic/api/user/entity/User.java

@@ -29,6 +29,8 @@ public class User implements Serializable {
 
     private String loginName;
 
+    private String phone;
+
     @JsonIgnore
     private String loginPassword;
     @JsonIgnore

+ 3 - 10
src/main/java/com/smcic/api/user/service/impl/UserServiceImpl.java

@@ -18,20 +18,13 @@ import org.springframework.stereotype.Service;
 import java.time.LocalDateTime;
 import java.util.Optional;
 
-/**
- * <p>
- * 服务实现类
- * </p>
- *
- * @author zyx
- * @since 2023-02-15
- */
 @Service
 public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {
 
     public TokenDto login(LoginDto dto) {
 
-        Optional<User> optionalUser = lambdaQuery().eq(User::getLoginName, dto.getLoginName())
+        Optional<User> optionalUser = lambdaQuery()
+                .and(wq -> wq.eq(User::getLoginName, dto.getLoginName()).or().eq(User::getPhone, dto.getLoginName()))
                 .eq(User::getLoginPassword, dto.getLoginPassword())
                 .oneOpt();
 
@@ -91,7 +84,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
     public void logout(){
         Optional<String> token = HttpContextUtil.getToken();
         if (!token.isPresent()) {
-            throw new RuntimeException("获取token异常");
+            throw new APIException("获取token异常");
         }
         String userId = AESUtil.decryptStr(token.get());
         User user = this.lambdaQuery().eq(User::getId, Long.parseLong(userId)).one();

+ 9 - 0
src/main/java/com/smcic/core/advice/APIResponseAdvice.java

@@ -37,6 +37,15 @@ public class APIResponseAdvice implements ResponseBodyAdvice<Object> {
         return apiNoDataResponse;
     }
 
+    @ExceptionHandler(BizException.class)
+    public APIResponse handleBizException(HttpServletRequest request, BizException ex, HttpServletResponse response) {
+        log.warn("error", ex);
+        APIResponse apiNoDataResponse = new APIResponse();
+        apiNoDataResponse.setCode(ex.getErrorCode());
+        apiNoDataResponse.setMessage(ex.getErrorMessage());
+        return apiNoDataResponse;
+    }
+
     /**
      * 拦截未知的运行时异常
      *

+ 31 - 0
src/main/java/com/smcic/core/advice/BizException.java

@@ -0,0 +1,31 @@
+package com.smcic.core.advice;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class BizException extends RuntimeException {
+
+    private int errorCode;
+
+    private String errorMessage;
+
+    public BizException(String errorMessage) {
+        super(errorMessage);
+        this.errorCode = -1;
+        this.errorMessage = errorMessage;
+    }
+
+    public BizException(int errorCode, String errorMessage) {
+        super(errorMessage);
+        this.errorCode = errorCode;
+        this.errorMessage = errorMessage;
+    }
+
+    public BizException(Throwable cause, int errorCode, String errorMessage) {
+        super(errorMessage, cause);
+        this.errorCode = errorCode;
+        this.errorMessage = errorMessage;
+    }
+}

+ 11 - 0
src/main/java/com/smcic/core/auth/CmsLoginRequired.java

@@ -0,0 +1,11 @@
+package com.smcic.core.auth;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target({ElementType.METHOD})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface CmsLoginRequired {
+}

+ 24 - 12
src/main/java/com/smcic/core/auth/LoginInterceptor.java

@@ -6,12 +6,15 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 import com.smcic.api.operate.entity.UserAuth;
 import com.smcic.core.advice.APIException;
 import com.smcic.core.conf.Constant;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.web.method.HandlerMethod;
 import org.springframework.web.servlet.AsyncHandlerInterceptor;
 
+import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.lang.reflect.Method;
+import java.util.Arrays;
 
 public class LoginInterceptor implements AsyncHandlerInterceptor {
 
@@ -26,21 +29,30 @@ public class LoginInterceptor implements AsyncHandlerInterceptor {
         Method method = handlerMethod.getMethod();
 
         LoginRequired methodAnnotation = method.getAnnotation(LoginRequired.class);
-        if (methodAnnotation == null) {
-            return true;
+        if (methodAnnotation != null) {
+            // 这写你拦截需要干的事儿,比如取缓存,SESSION,权限判断等
+            String token = request.getHeader(Constant.TOKEN_HEADER_NAME);
+            try {
+                String ds = AESUtil.decryptStr(token);
+                UserAuth userAuth = objectMapper.readValue(ds, UserAuth.class);
+                HttpContextUtil.setUser(userAuth);
+            } catch (Exception e) {
+                throw new APIException("没有登录");
+            }
+
+            HttpContextUtil.setToken(token);
         }
 
-        // 这写你拦截需要干的事儿,比如取缓存,SESSION,权限判断等
-        String token = request.getHeader(Constant.TOKEN_HEADER_NAME);
-        try {
-            String ds = AESUtil.decryptStr(token);
-            UserAuth userAuth = objectMapper.readValue(ds, UserAuth.class);
-            HttpContextUtil.setUser(userAuth);
-        } catch (Exception e) {
-            throw new APIException("没有登录");
-        }
+        CmsLoginRequired cmsLoginRequired = method.getAnnotation(CmsLoginRequired.class);
+        if(cmsLoginRequired != null) {
 
-        HttpContextUtil.setToken(token);
+            String token = request.getHeader(Constant.TOKEN_HEADER_NAME);
+
+            if (!AESUtil.isOk(token)) {
+                throw new APIException(40001, "没有登录");
+            }
+            HttpContextUtil.setToken(token);
+        }
 
         return true;
     }

+ 117 - 37
src/test/java/conference.http

@@ -1,6 +1,20 @@
+### 登陆
+POST {{ ip }}/user/login
+Content-Type: application/json;charset=UTF-8
+
+{
+  "loginName": "liyongli",
+  "loginPassword": "9ee095c2692b48a8ab063d5e50ef35a9620b61f2748a967ed31fcd704deb6d1d"
+}
+
+> {%
+    client.global.set("token", response.body.data.token)
+%}
+
 ### 会议创建
 POST {{ ip }}/conference/conference/create
 Content-Type: application/json
+Authorization: {{token}}
 
 {
   "conferenceName": "数字丝路发展论坛",
@@ -19,21 +33,47 @@ Content-Type: application/json
   "manual": "https://cxzx.smcic.net/topic/tool/pdf/%E4%B8%89%E5%86%9C%E4%B8%AD%E5%BF%83%E4%BB%8B%E7%BB%8D.pdf"
 }
 
-### 会议列表
-GET {{ip}}/conference/conference/list
+### 会议修改
+POST {{ ip }}/conference/conference/update
+Content-Type: application/json
+Authorization: {{token}}
+
+{
+  "id": 1069,
+  "conferenceName": "数字丝路发展论坛",
+  "conferenceDesc": "大会介绍",
+  "subtitle": "副标题",
+  "addr": "陕西西安",
+  "sponsor": "主办方",
+  "organizer": "承办方",
+  "coOrganizer": "协办单位",
+  "cover": "大会封面图地址",
+  "theme": "green",
+  "logo": "logo",
+  "startTime": "2024-04-16 10:00:00",
+  "endTime": "2024-04-20 18:00:00",
+  "wxVideoUid": "微信视频号id",
+  "manual": "https://cxzx.smcic.net/topic/tool/pdf/%E4%B8%89%E5%86%9C%E4%B8%AD%E5%BF%83%E4%BB%8B%E7%BB%8D.pdf"
+}
+
 
 
+### 会议列表,加了token只会获取自己的
+GET {{ip}}/conference/conference/list
+Authorization: {{token}}
+
 ### 会议查询,根据ID
-GET {{ip}}/conference/conference/info/1066
+GET {{ip}}/conference/conference/info/1067
 
 
 ### 会议配置
 ### 配置创建
 POST {{ip}}/conference/conf/create
+Authorization: {{token}}
 Content-Type: application/json
 
 {
-  "conferenceId": 1066,
+  "conferenceId": 1067,
   "confKey": "MANUAL",
   "confName": "会议手册",
   "confContent": "<div>手册内容xxxxxx</div>"
@@ -41,22 +81,23 @@ Content-Type: application/json
 
 
 ### 配置列表,根据会议id查询
-GET {{ip}}/conference/conf/list/1066
+GET {{ip}}/conference/conf/list/1067
 
 ### 配置详情,根据会议id/key查询
-GET {{ip}}/conference/conf/info/1066/MANUAL
+GET {{ip}}/conference/conf/info/1067/MANUAL
 
 ### 会议服务
-GET {{ip}}/conference/conf/type/service/1066
+GET {{ip}}/conference/conf/type/service/1067
 
 
 ### 会议议程
 ### 日程添加
 POST {{ip}}/conference/agenda/create
 Content-Type: application/json
+Authorization: {{token}}
 
 {
-  "conferenceId": 1066,
+  "conferenceId": 1069,
   "agendaName": "第一场",
   "agendaCover": "封面地址",
   "agendaDesc": "议程简述xxxx",
@@ -66,15 +107,38 @@ Content-Type: application/json
   "wxVideoUid": "视频号id"
 }
 
+### 日程修改
+POST {{ip}}/conference/agenda/update
+Content-Type: application/json
+Authorization: {{token}}
+
+{
+  "id": 7,
+  "agendaName": "第一场",
+  "agendaCover": "封面地址",
+  "agendaDesc": "议程简述xxxx",
+  "agendaTime": "2024-04-16 10:00",
+  "agendaContent": "<div>议程详细内容,xxxxxxxxxxxx</div>",
+  "agendaVideo": "会议视频,结束后才有",
+  "wxVideoUid": "视频号id"
+}
+
+
+
 ### 日程列表
-GET {{ip}}/conference/agenda/list/1066
+GET {{ip}}/conference/agenda/list/1067
+
+### 日程详情,包含议程列表
+GET {{ip}}/conference/agenda/info/2
+
 
 ### 议程添加
 POST {{ip}}/conference/agenda-detail/create
 Content-Type: application/json
+Authorization: {{token}}
 
 {
-  "agendaId": 1,
+  "agendaId": 7,
   "title": "大语言模型让我们更聪明还是更愚蠢?",
   "speaker": "宗成庆",
   "speakerTags": "中国科学院自动化研究所研究员",
@@ -82,22 +146,38 @@ Content-Type: application/json
   "endTime": "2024-04-16 10:40"
 }
 
+
+### 议程修改
+POST {{ip}}/conference/agenda-detail/update
+Content-Type: application/json
+Authorization: {{token}}
+
+{
+  "id":52,
+  "title": "111大语言模型让我们更聪明还是更愚蠢?",
+  "speaker": "宗成庆",
+  "speakerTags": "中国科学院自动化研究所研究员",
+  "startTime": "2024-04-16 10:30",
+  "endTime": "2024-04-16 10:40"
+}
+
 ### 根据日程查询议程列表
 GET {{ip}}/conference/agenda-detail/list/1
 
 
 ### 座次安排
-### 座次配置
+### 座次配置  每场日程对应一个座次安排,针对同一日程添加会覆盖原来的
 POST {{ip}}/conference/agenda/seat/create
 Content-Type: application/json
+Authorization: {{token}}
 
 {
-  "agendaId": 1,
-  "content": "<img src='一张座位图' />"
+  "agendaId": 7,
+  "content": "http://cxzx.smcic.net/operate/cenference/1066/20240403/seat.jpg"
 }
 
 ### 座次查询, 根据议程id查询
-GET {{ip}}/conference/agenda/seat/info/1
+GET {{ip}}/conference/agenda/seat/info/7
 
 ### 新闻咨询 type: 1.图文 2.视频 3.链接 4.视频号
 ### 新闻创建
@@ -105,8 +185,8 @@ POST {{ip}}/conference/news/create
 Content-Type: application/json
 
 {
-  "conferenceId": 1066,
-  "cover": "http://cxzx.smcic.net/operate/cenference/1066/20240402/70637aea795b4beaa352b18f7e5c74ba.png",
+  "conferenceId": 1067,
+  "cover": "http://cxzx.smcic.net/operate/cenference/1067/20240402/70637aea795b4beaa352b18f7e5c74ba.png",
   "title": "世界互联网大会数字丝路发展论坛缘何落地陕西?",
   "summary": "世界互联网大会数字丝路发展论坛缘何落地陕西?",
   "content": "<div>中国日报网3月30日 3月27日,世界互联网大会数字丝路发展论坛发布会在北京举行。陕西省委常委、宣传部部长孙大光在接受中国日报网记者采访时表示,论坛将有助于推动陕西抢占数字经济的新蓝海,更好地融入一带一路大格局,展现开放包容的新形象。他提到,世界互联网大会数字丝路发展论坛既是一场在古丝绸之路起点,拥抱世界,畅想未来的深邃思考,同时也是一场跨越文明跨越国界的碰撞交流。</div>",
@@ -119,10 +199,10 @@ Content-Type: application/json
 
 
 ### 新闻分页
-GET {{ip}}/conference/news/list/1066?page=1&pageSize=20&category=
+GET {{ip}}/conference/news/list/1067?page=1&pageSize=20&category=
 
 ### 新闻详情
-GET {{ip}}/conference/news/info/1
+GET {{ip}}/conference/news/info/2
 
 
 ### 会议嘉宾 type类型:1.主讲嘉宾, 2.参会嘉宾,3.参会人员
@@ -131,10 +211,10 @@ POST {{ip}}/conference/guest/create
 Content-Type: application/json
 
 {
-  "conferenceId": 1066,
+  "conferenceId": 1067,
   "userName": "梁昊",
   "tags": "世界互联网大会常务副秘书长",
-  "photo": "https://cxzx.smcic.net/operate/cenference/1066/20240329/942aa221-321f-4bbc-b176-3d8d872eec36v2.jpg",
+  "photo": "https://cxzx.smcic.net/operate/cenference/1067/20240329/942aa221-321f-4bbc-b176-3d8d872eec36v2.jpg",
   "sortNumber": 4,
   "userDesc": "",
   "userType": 1,
@@ -143,7 +223,7 @@ Content-Type: application/json
 }
 
 ### 嘉宾查询,根据会议id和类型
-GET {{ip}}/conference/guest/list/1066?type=1
+GET {{ip}}/conference/guest/list/1067?type=1
 
 ### 根据id查询嘉宾详情
 GET {{ip}}/conference/guest/info/2
@@ -154,16 +234,16 @@ POST {{ip}}/conference/partner/create
 Content-Type: application/json
 
 {
-  "conferenceId": 1066,
+  "conferenceId": 1067,
   "partnerName": "哔哩哔哩",
-  "logo": "http://cxzx.smcic.net/operate/cenference/1066/20240401/%E5%93%94%E5%93%A9%E5%93%94%E5%93%A9.png",
+  "logo": "http://cxzx.smcic.net/operate/cenference/1067/20240401/%E5%93%94%E5%93%A9%E5%93%94%E5%93%A9.png",
   "partnerType": "特别战略合作伙伴",
   "website": "http://www.bilibili.com",
   "sortNo": 11
 }
 
 ### 合作伙伴查询
-GET {{ip}}/conference/partner/list/1066
+GET {{ip}}/conference/partner/list/1067
 
 
 ### 单文件上传
@@ -179,7 +259,7 @@ Content-Type: multipart/form-data
 Content-Disposition: form-data; name="id"
 Content-Type: text/plain
 
-1066
+1067
 --WebAppBoundary
 
 
@@ -201,7 +281,7 @@ Content-Type: multipart/form-data
 Content-Disposition: form-data; name="id"
 Content-Type: text/plain
 
-1066
+1067
 --WebAppBoundary
 
 ### 精彩视频 type: 1.小程序视频  2.视频号视频。 小程序,video是个url,如果视频号,video是俩id(fnderUserName,feedId)视频号id,视频id
@@ -209,7 +289,7 @@ POST {{ip}}/conference/live-video/create
 Content-Type: application/json
 
 {
-"conferenceId": 1066,
+"conferenceId": 1067,
   "agendaId": 1,
   "title": "精彩片段",
   "cover": "封面",
@@ -219,19 +299,19 @@ Content-Type: application/json
 }
 
 ### 精彩视频列表
-GET {{ip}}/conference/live-video/list/1066?page=1&pageSize=20
+GET {{ip}}/conference/live-video/list/1067?page=1&pageSize=20
 
 ### 直播图片, 批量
 POST {{ip}}/conference/live-photo/create-batch
 Content-Type: application/json
 
 {
-"conferenceId": 1066,
+"conferenceId": 1067,
   "agendaId": 1,
   "title": "批图",
   "photo": [
-    "https://cxzx.smcic.net/operate/cenference/1066/20240328/1d9b500f-1785-4e22-9e77-815d21df2820v2.jpg",
-    "https://cxzx.smcic.net/operate/cenference/1066/20240328/6b387a7c-f0f5-405a-acb1-87a93f7d6403v3.jpg"
+    "https://cxzx.smcic.net/operate/cenference/1067/20240328/1d9b500f-1785-4e22-9e77-815d21df2820v2.jpg",
+    "https://cxzx.smcic.net/operate/cenference/1067/20240328/6b387a7c-f0f5-405a-acb1-87a93f7d6403v3.jpg"
   ]
 }
 
@@ -240,11 +320,11 @@ GET {{ip}}/conference/live-photo/list/1?page=1&pageSize=20
 
 
 ### 直播图片实时推送sse
-GET {{ip}}/conference/photo-sse/1066
+GET {{ip}}/conference/photo-sse/1067
 
 
 ### 获取手机号
-GET {{ip}}/conference/user-third/getPhone/1066?code=3436bbfa4ebcf3b98d79e0dda4f62f8c7312c65e11c998f4163fad2b3cada9d4
+GET {{ip}}/conference/user-third/getPhone/1067?code=3436bbfa4ebcf3b98d79e0dda4f62f8c7312c65e11c998f4163fad2b3cada9d4
 
 
 ### 补充用户信息
@@ -252,11 +332,11 @@ POST {{ip}}/conference/user-third/create?code=xxx
 Content-Type: application/json
 
 {
-  "conferenceId": 1066,
+  "conferenceId": 1067,
   "openId": "微信open_id",
   "source": "微信",
   "userName": "李勇利",
-  "photo": "http://cxzx.smcic.net/operate/cenference/1066/20240402/0.png",
+  "photo": "http://cxzx.smcic.net/operate/cenference/1067/20240402/0.png",
   "phone": "手机号",
   "email": "xxx",
   "company": "公司",
@@ -272,12 +352,12 @@ POST {{ip}}/conference/subscription/create?code=xxx
 Content-Type: application/json
 
 {
-  "conferenceId": 1066,
+  "conferenceId": 1067,
   "agendaId": 1,
   "status": 1
 }
 
 ### 我的订阅
-GET {{ip}}/conference/subscription/get/1066?code=xxx
+GET {{ip}}/conference/subscription/get/1067?code=xxx