浏览代码

Merge branch 'saas-1009' into saas

Eric 1 年之前
父节点
当前提交
ad03f656a5

+ 6 - 1
audio-analysis/src/main/java/com/yonge/netty/server/service/AudioCompareHandler.java

@@ -3,6 +3,8 @@ package com.yonge.netty.server.service;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONPath;
+import com.microsvc.toolkit.middleware.oss.OssPluginContext;
+import com.microsvc.toolkit.middleware.oss.impl.TencentOssPlugin;
 import com.ym.mec.biz.dal.entity.SysMusicCompareRecord;
 import com.ym.mec.biz.dal.enums.DeviceTypeEnum;
 import com.ym.mec.biz.dal.enums.FeatureType;
@@ -41,6 +43,8 @@ public class AudioCompareHandler implements MessageHandler {
 	
 	private static final Logger LOGGER = LoggerFactory.getLogger(AudioCompareHandler.class);
 
+    @Autowired
+    private OssPluginContext ossPluginContext;
 	@Autowired
 	private UserChannelContextService userChannelContextService;
 
@@ -192,7 +196,8 @@ public class AudioCompareHandler implements MessageHandler {
 		            String url = null;
 		            try {
 		                String folder = UploadUtil.getFileFloder();
-		                url = storagePluginContext.asyncUploadFile(KS3StoragePlugin.PLUGIN_NAME,"cloud-coach/" + folder, waveFileProcessor.getFile(), true);
+//                        url = storagePluginContext.asyncUploadFile(KS3StoragePlugin.PLUGIN_NAME,"cloud-coach/" + folder, waveFileProcessor.getFile(), true);
+		                url = ossPluginContext.getPluginService(TencentOssPlugin.PLUGIN_NAME).asyncUploadFile("cloud-coach/" + folder, waveFileProcessor.getFile(), true);
 		            } catch (Exception e) {
 		                LOGGER.error("录音文件上传失败:{}", e);
 		            }

+ 11 - 0
mec-biz/pom.xml

@@ -83,6 +83,17 @@
             <artifactId>microsvc-middleware-im</artifactId>
             <version>1.0.0</version>
         </dependency>
+		<dependency>
+			<groupId>com.microsvc.toolkit.middleware</groupId>
+			<artifactId>microsvc-middleware-oss</artifactId>
+			<version>1.0.0</version>
+		</dependency>
+
+		<dependency>
+			<groupId>com.alibaba</groupId>
+			<artifactId>fastjson</artifactId>
+			<version>1.2.70</version>
+		</dependency>
 
 	</dependencies>
 </project>

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java

@@ -2019,7 +2019,7 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      * @param courseScheduleId 课程ID
      * @param muteAll 全员静音状态
      */
-    void updateGroupMuteAllStatus(@Param("courseScheduleId") Long courseScheduleId, @Param("muteAll") Boolean muteAll);
+    void updateGroupMuteAllStatus(@Param("courseScheduleId") Long courseScheduleId, @Param("muteAll") Boolean muteAll, @Param("cancelMute") Boolean cancelMute);
 
     void updateTeachingPointByClassGroupId(@Param("classGroupId") Integer classGroupId, @Param("teachingPoint") String teachingPoint);
 

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseSchedule.java

@@ -9,6 +9,7 @@ import com.ym.mec.common.enums.BaseEnum;
 
 import io.swagger.annotations.ApiModelProperty;
 
+import lombok.Getter;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
@@ -218,6 +219,10 @@ public class CourseSchedule  extends BaseEntity{
 	@ApiModelProperty("全员静音")
 	private Boolean muteAll;
 
+	@Getter
+	@ApiModelProperty("取消静音")
+	private Boolean cancelMuteFlag;
+
     @ApiModelProperty("教学点")
     private String teachingPoint;
 
@@ -765,6 +770,10 @@ public class CourseSchedule  extends BaseEntity{
 		this.shareMode = shareMode;
 	}
 
+	public void setCancelMuteFlag(Boolean cancelMuteFlag) {
+		this.cancelMuteFlag = cancelMuteFlag;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

+ 23 - 9
mec-biz/src/main/java/com/ym/mec/biz/service/UploadFileService.java

@@ -1,6 +1,9 @@
 package com.ym.mec.biz.service;
 
-import com.ksyun.ks3.dto.PostObjectFormFields;
+import com.alibaba.fastjson.JSON;
+import com.microsvc.toolkit.middleware.oss.OssPluginContext;
+import com.microsvc.toolkit.middleware.oss.impl.TencentOssPlugin;
+import com.microsvc.toolkit.middleware.oss.wrapper.OssWrapper;
 import com.ym.mec.thirdparty.entity.UploadSign;
 import com.ym.mec.common.entity.UploadReturnBean;
 import com.ym.mec.common.exception.BizException;
@@ -26,6 +29,9 @@ public class UploadFileService {
 	@Autowired
 	private StoragePluginContext storagePluginContext;
 
+	@Autowired
+	private OssPluginContext ossPluginContext;
+
 	/** 最大上传大小,单位kb */
 	@Value("${common.upload.maxSize:153600}")
 	private int maxSize;
@@ -54,7 +60,7 @@ public class UploadFileService {
 			return uploadReturn;
 		}
 
-		String staticFloder = "";
+		String staticFloder = "daya";
 
 		String folder = UploadUtil.getFileFloder();
 		String filePath = UploadUtil.getFilePath(root, staticFloder, folder);
@@ -66,7 +72,9 @@ public class UploadFileService {
 		}
 
 		//String url = storagePlugin.uploadFile(staticFloder + folder, file);
-		String url = storagePluginContext.uploadFile(KS3StoragePlugin.PLUGIN_NAME,staticFloder + folder, file);
+		//String url = storagePluginContext.uploadFile(KS3StoragePlugin.PLUGIN_NAME,staticFloder + folder, file);
+
+		String url = ossPluginContext.getPluginService(TencentOssPlugin.PLUGIN_NAME).uploadFile(staticFloder + folder, file);
 
 		FileUtils.deleteQuietly(file);
 		uploadReturn.setStatus(true);
@@ -87,11 +95,13 @@ public class UploadFileService {
 			return uploadReturn;
 		}
 
-		String staticFloder = "";
+		String staticFloder = "daya";
 		String folder = UploadUtil.getFileFloder();
 		String filePath = UploadUtil.getFilePath(root, staticFloder, folder);
 		File file = uploadFile(in, filePath, fileName);
-		String url = storagePluginContext.uploadFile(KS3StoragePlugin.PLUGIN_NAME,staticFloder + folder, file);
+		//String url = storagePluginContext.uploadFile(KS3StoragePlugin.PLUGIN_NAME,staticFloder + folder, file);
+
+		String url = ossPluginContext.getPluginService(TencentOssPlugin.PLUGIN_NAME).uploadFile(staticFloder + folder, file);
 
 		FileUtils.deleteQuietly(file);
 
@@ -106,8 +116,8 @@ public class UploadFileService {
 
 	/**
 	 * 上传文件的工具方法
-	 * @param in
-	 * @param path
+	 * @param inputStream InputStream
+	 * @param filePath String
 	 * @return
 	 */
 	private File uploadFile(InputStream inputStream, String filePath, String fileName) {
@@ -135,7 +145,11 @@ public class UploadFileService {
 	 * @param uploadSign
 	 * @return
 	 */
-	public PostObjectFormFields getUploadSign(UploadSign uploadSign) {
-		return storagePluginContext.getUploadSign(KS3StoragePlugin.PLUGIN_NAME, uploadSign);
+	public OssWrapper.ResponseSign getUploadSign(UploadSign uploadSign) {
+		//return storagePluginContext.getUploadSign(KS3StoragePlugin.PLUGIN_NAME, uploadSign);
+		// 请求授权签名
+		OssWrapper.RequestSign requestSign = JSON.parseObject(JSON.toJSONString(uploadSign), OssWrapper.RequestSign.class);
+
+		return ossPluginContext.getPluginService(uploadSign.getPluginName()).getUploadSign(requestSign);
 	}
 }

+ 10 - 1
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -46,6 +46,7 @@
         <result column="settlement_report_flag_" property="settlementReportFlag"/>
         <result column="service_provider_" property="serviceProvider"/>
         <result column="mute_all_" property="muteAll"/>
+        <result column="cancel_mute_flag_" property="cancelMuteFlag"/>
         <result column="live_remind_" property="liveRemind"/>
         <result column="live_room_id_" property="liveRoomId" />
         <result column="continuous_course_" property="continuousCourse" />
@@ -189,6 +190,7 @@
         cs.evaluate_flag_,
         cs.service_provider_,
         cs.mute_all_,
+        cs.cancel_mute_flag_,
         cs.live_room_id_,
         cs.continuous_course_,
         cs.share_mode_
@@ -4285,8 +4287,15 @@
     <!--更新全员静音状态-->
     <update id="updateGroupMuteAllStatus">
         UPDATE course_schedule
-        SET mute_all_ = #{muteAll},
+        <set>
+            <if test="muteAll != null">
+                mute_all_ = #{muteAll},
+            </if>
+            <if test="cancelMute != null">
+                cancel_mute_flag_ = #{cancelMute},
+            </if>
             update_time_ = NOW()
+        </set>
         WHERE id_ = #{courseScheduleId}
     </update>
     <!--更新全员静音状态-->

+ 2 - 1
mec-biz/src/main/resources/config/mybatis/courseScheduleStudentMusicScoreMapper.xml

@@ -113,7 +113,8 @@
             resultMap="CourseScheduleStudentMusicScore">
         SELECT cssm.*,
         CASE WHEN smsa.metronome_mp3_url_ IS NULL OR smsa.metronome_mp3_url_ = '' THEN smsa.mp3_url_ ELSE smsa.metronome_mp3_url_ END url_,
-        sms.url_ mp3_url_,sms.name_ music_score_name_
+        CASE WHEN sms.metronome_url_ IS NULL OR sms.metronome_url_ = '' THEN sms.url_ ELSE sms.metronome_url_ END mp3_url_,
+        sms.name_ music_score_name_
         FROM course_schedule_student_music_score cssm
         LEFT JOIN sys_music_score_accompaniment smsa ON cssm.music_score_accompaniment_id_ = smsa.id_
         LEFT JOIN sys_music_score sms ON sms.id_ = smsa.exam_song_id_

+ 8 - 10
mec-im/src/main/java/com/ym/dao/RoomMemberDao.java

@@ -2,12 +2,10 @@ package com.ym.dao;
 
 import com.ym.pojo.RoomMember;
 import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.Lock;
 import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.stereotype.Repository;
 
-import javax.persistence.LockModeType;
 import java.util.List;
 
 /**
@@ -60,21 +58,21 @@ public interface RoomMemberDao extends JpaRepository<RoomMember, Long> {
     boolean existsByRidAndUid(String rid, String uid);
 
     @Modifying
-    @Query(value = "update rongyun_room_member set camera=?3 where rid=?1 and role=?2", nativeQuery = true)
-    void updateCameraByRidAndRole(String roomId, int role, boolean enable);
+    @Query(value = "update rongyun_room_member set camera=?2 where id IN (?1)", nativeQuery = true)
+    void updateCameraByRidAndRole(List<Long> memberIds, boolean enable);
 
 
     @Modifying
-    @Query(value = "update rongyun_room_member set mic=?3 where rid=?1 and role=?2", nativeQuery = true)
-    void updateMicByRidAndRole(String roomId, int role, boolean enable);
+    @Query(value = "update rongyun_room_member set mic=?2 where id IN (?1)", nativeQuery = true)
+    void updateMicByRidAndRole(List<Long> memberIds, boolean enable);
 
 
     @Modifying
-    @Query(value = "update rongyun_room_member set music_mode=?3 where rid=?1 and role=?2", nativeQuery = true)
-    void updateMusicByRidAndRole(String roomId, int role, boolean enable);
+    @Query(value = "update rongyun_room_member set music_mode=?2 where id IN (?1)", nativeQuery = true)
+    void updateMusicByRidAndRole(List<Long> memberIds, boolean enable);
 
 
     @Modifying
-    @Query(value = "update rongyun_room_member set hand=?3 where rid=?1 and role=?2", nativeQuery = true)
-    void updateHandByRidAndRole(String roomId, int role, boolean enable);
+    @Query(value = "update rongyun_room_member set hand=?2 where id IN (?1)", nativeQuery = true)
+    void updateHandByRidAndRole(List<Long> memberIds,  boolean enable);
 }

+ 2 - 1
mec-im/src/main/java/com/ym/enums/DeviceTypeEnum.java

@@ -7,7 +7,8 @@ public enum DeviceTypeEnum {
     HandUp(4),
     ExamSong(5),
     MusicScore(6),
-    MusicScoreAccompaniment(7),;
+    MusicScoreAccompaniment(7),
+    ;
 
 
     private int value;

+ 2 - 0
mec-im/src/main/java/com/ym/pojo/ReqDeviceControlData.java

@@ -27,6 +27,8 @@ public class ReqDeviceControlData {
 	private Integer soundVolume = 100;
 	// 服务提供方
 	private String serviceProvider;
+	// 取消静音
+	private Boolean cancelMuteFlag;
 	// 发送用户信息
 	private String sendUserId;
 	private String sendUserName;

+ 1 - 1
mec-im/src/main/java/com/ym/pojo/RoomMember.java

@@ -14,7 +14,7 @@ import java.util.Date;
 public class RoomMember {
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
-    private long id;
+    private @Getter @Setter long id;
 
     private @Getter @Setter String uid;
     private @Getter @Setter String rid;

+ 81 - 18
mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java

@@ -12,6 +12,7 @@ import com.microsvc.toolkit.middleware.rtc.impl.RongCloudRTCPlugin;
 import com.microsvc.toolkit.middleware.rtc.impl.TencentCloudRTCPlugin;
 import com.microsvc.toolkit.middleware.rtc.message.ImGroupMemberWrapper;
 import com.microsvc.toolkit.middleware.rtc.message.RTCRoomMessage;
+import com.microsvc.toolkit.middleware.rtc.message.TencentRequest;
 import com.ym.common.ApiException;
 import com.ym.common.BaseResponse;
 import com.ym.common.DisplayEnum;
@@ -695,6 +696,9 @@ public class RoomServiceImpl implements RoomService {
                     // 生成群组
                     pluginService.chatRoomCreate(roomId, courseSchedule.getName(), courseSchedule.getTeacherId().toString());
 
+                    // 更新群自定义字段
+                    updateChatRoomGroupData(roomId, courseSchedule, pluginService);
+
                     // 群组老师信息
                     List<ImGroupMemberWrapper.ImGroupMember> groupMembers = Lists.newArrayList(ImGroupMemberWrapper.ImGroupMember
                             .builder()
@@ -737,6 +741,39 @@ public class RoomServiceImpl implements RoomService {
 
         }
     }
+
+    /**
+     * 更新群自定义字段
+     * @param roomId 群ID
+     * @param courseSchedule CourseSchedule
+     * @param pluginService RTCRoomPluginService
+     */
+    private void updateChatRoomGroupData(String roomId, CourseSchedule courseSchedule, RTCRoomPluginService pluginService) {
+        // 生成群组自定义字段
+        List<TencentRequest.ChatRoomGroupDefinedData> definedDataList = Lists.newArrayList();
+
+        // 全员静音
+        definedDataList.add(TencentRequest.ChatRoomGroupDefinedData.builder()
+                        .key("isMuteAll").value(courseSchedule.getMuteAll().toString())
+                .build());
+        // 取消静音
+        definedDataList.add(TencentRequest.ChatRoomGroupDefinedData.builder()
+                .key("cancelMuteFlag").value(courseSchedule.getCancelMuteFlag().toString())
+                .build());
+
+        if (CollectionUtils.isNotEmpty(definedDataList)) {
+
+            try {
+                pluginService.chatRoomGroupDefinedData(TencentRequest.ChatRoomGroup.builder()
+                        .groupId(roomId)
+                        .appDefinedData(definedDataList)
+                        .build());
+            } catch (Exception e) {
+                log.error("直播网管课自定义字段设置失败: roomId={}", roomId, e);
+            }
+        }
+    }
+
     private void dismissImGroup(String userId,String roomId, String serviceProvider) throws Exception {
         log.info("dismissImGroup: roomId = {}, userId = {}", roomId, userId);
         String joinImGroupKey = "joinImGroup:" + roomId;
@@ -1818,9 +1855,27 @@ public class RoomServiceImpl implements RoomService {
         }
         data.setServiceProvider(courseSchedule.getServiceProvider());
 
-        // 同步全员静音状态
-        if (Objects.nonNull(data.getMicrophoneOn())) {
-            courseScheduleDao.updateGroupMuteAllStatus(courseScheduleId, !data.getMicrophoneOn());
+        // 同步全员静音状态, 取消静音
+        if (Objects.nonNull(data.getMicrophoneOn()) || Objects.nonNull(data.getCancelMuteFlag())) {
+
+            Boolean muteAll = null;
+            if (Objects.nonNull(data.getMicrophoneOn())) {
+                muteAll = !data.getMicrophoneOn();
+            }
+            courseScheduleDao.updateGroupMuteAllStatus(courseScheduleId, muteAll, data.getCancelMuteFlag());
+
+            CourseSchedule newCourseSchedule = courseScheduleDao.get(courseScheduleId);
+            // 修改网管课群自定义属性
+            RTCRoomPluginService pluginService = rtcRoomPluginContext.getPluginService(courseSchedule.getServiceProvider());
+            if (Objects.nonNull(pluginService) && Objects.nonNull(newCourseSchedule)) {
+                // 更新群自定义字段
+                updateChatRoomGroupData(data.getRoomId(), newCourseSchedule, pluginService);
+            }
+
+            // 取消网络课群静音
+            if (Objects.isNull(data.getMicrophoneOn())) {
+                return true;
+            }
         }
 
         // 课程老师信息
@@ -1857,21 +1912,29 @@ public class RoomServiceImpl implements RoomService {
             data.setUserId(e.getUid());
             controlDevice(data);
         }
-        boolean enable;
-        if (data.getCameraOn() != null) {
-            enable = data.getCameraOn();
-            roomMemberDao.updateCameraByRidAndRole(data.getRoomId(), RoleStudent.getValue(), enable);
-        } else if (data.getMicrophoneOn() != null) {
-            enable = data.getMicrophoneOn();
-            roomMemberDao.updateMicByRidAndRole(data.getRoomId(), RoleStudent.getValue(), enable);
-        } else if (data.getMusicModeOn() != null) {
-            enable = data.getMusicModeOn();
-            roomMemberDao.updateMusicByRidAndRole(data.getRoomId(), RoleStudent.getValue(), enable);
-        } else if (data.getHandUpOn() != null) {
-            enable = data.getHandUpOn();
-            roomMemberDao.updateHandByRidAndRole(data.getRoomId(), RoleStudent.getValue(), enable);
-        }  else
-            return true;
+
+        // 批量修复学生端设备状态
+        List<Long> collect = roomMemberDao.findByRidAndRole(data.getRoomId(), RoleStudent.getValue()).stream()
+                .map(RoomMember::getId).distinct().collect(Collectors.toList());
+        if (CollectionUtils.isNotEmpty(collect)) {
+
+            boolean enable;
+            if (data.getCameraOn() != null) {
+                enable = data.getCameraOn();
+                roomMemberDao.updateCameraByRidAndRole(collect, enable);
+            } else if (data.getMicrophoneOn() != null) {
+                enable = data.getMicrophoneOn();
+                roomMemberDao.updateMicByRidAndRole(collect, enable);
+            } else if (data.getMusicModeOn() != null) {
+                enable = data.getMusicModeOn();
+                roomMemberDao.updateMusicByRidAndRole(collect, enable);
+            } else if (data.getHandUpOn() != null) {
+                enable = data.getHandUpOn();
+                roomMemberDao.updateHandByRidAndRole(collect, enable);
+            }  else {
+                return true;
+            }
+        }
 
         return true;
     }

+ 7 - 2
mec-student/src/main/java/com/ym/mec/student/controller/StudentManageController.java

@@ -1,6 +1,6 @@
 package com.ym.mec.student.controller;
 
-import com.ksyun.ks3.dto.PostObjectFormFields;
+import com.microsvc.toolkit.middleware.oss.wrapper.OssWrapper;
 import com.ym.mec.thirdparty.entity.UploadSign;
 import io.swagger.annotations.*;
 
@@ -123,6 +123,7 @@ public class StudentManageController extends BaseController {
             @ApiImplicitParam(name = "postData", dataType = "Map", value = "1.如果使用js sdk上传的时候设置了ACL请设置,例\"acl\":\"public-read\"值要与SDK中一致,没有则删除该项</br>" +
                     "2.提供js sdk中的key值,例\"key\":\"20150115/中文/${filename}\""),
             @ApiImplicitParam(name = "unknowValueField", dataType = "List", value = "对于用户无法确定表单值的放在unknownValueField中(比如有的上传控件会添加一些表单项,但表单项的值可能是随机的)"),
+            @ApiImplicitParam(name = "pluginName", dataType = "String", value = "插件名称,默认ks3,可选值:ks3,aliyun,tencent"),
     })
     @ApiOperation(value = "获取上传文件签名", notes = "{\n" +
             "    \"bucketName\":\"\",\n" +
@@ -134,7 +135,11 @@ public class StudentManageController extends BaseController {
             "    \"unknowValueField\":[\"test\"]\n" +
             "}")
     @PostMapping("/getUploadSign")
-    public HttpResponseResult<PostObjectFormFields> getUploadSign(@RequestBody UploadSign uploadSign) {
+    public HttpResponseResult<OssWrapper.ResponseSign> getUploadSign(@RequestParam(defaultValue = "ks3") String pluginName,
+                                                                     @RequestBody UploadSign uploadSign) {
+        // 设置默认文件存储服务方
+        uploadSign.setPluginName(pluginName);
+
         return succeed(uploadFileService.getUploadSign(uploadSign));
     }
 

+ 33 - 17
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherManageController.java

@@ -1,31 +1,42 @@
 package com.ym.mec.teacher.controller;
 
-import com.ksyun.ks3.dto.PostObjectFormFields;
-import com.ym.mec.biz.dal.entity.CooperationOrgan;
-import com.ym.mec.biz.dal.enums.SuggestionType;
-import com.ym.mec.biz.service.*;
-import com.ym.mec.common.entity.HttpResponseResult;
-import com.ym.mec.thirdparty.entity.UploadSign;
-import io.swagger.annotations.*;
-
-import org.apache.commons.lang3.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
-
+import com.microsvc.toolkit.middleware.oss.wrapper.OssWrapper;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dto.CashAccountDetail;
+import com.ym.mec.biz.dal.entity.CooperationOrgan;
 import com.ym.mec.biz.dal.entity.SysSuggestion;
 import com.ym.mec.biz.dal.entity.SysUserBankCard;
+import com.ym.mec.biz.service.ClassGroupService;
+import com.ym.mec.biz.service.CooperationOrganService;
+import com.ym.mec.biz.service.StudentRegistrationService;
+import com.ym.mec.biz.service.SysSuggestionService;
+import com.ym.mec.biz.service.SysUserBankCardService;
+import com.ym.mec.biz.service.SysUserCashAccountDetailService;
+import com.ym.mec.biz.service.SysUserCashAccountService;
+import com.ym.mec.biz.service.UploadFileService;
 import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.entity.UploadReturnBean;
+import com.ym.mec.thirdparty.entity.UploadSign;
 import com.ym.mec.util.upload.UploadUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.util.List;
-import java.util.Objects;
 
 @Api(tags = "教师管理")
 @RestController
@@ -75,6 +86,7 @@ public class TeacherManageController extends BaseController {
             @ApiImplicitParam(name = "postData", dataType = "Map", value = "1.如果使用js sdk上传的时候设置了ACL请设置,例\"acl\":\"public-read\"值要与SDK中一致,没有则删除该项</br>" +
                     "2.提供js sdk中的key值,例\"key\":\"20150115/中文/${filename}\""),
             @ApiImplicitParam(name = "unknowValueField", dataType = "List", value = "对于用户无法确定表单值的放在unknownValueField中(比如有的上传控件会添加一些表单项,但表单项的值可能是随机的)"),
+            @ApiImplicitParam(name = "pluginName", dataType = "String", value = "插件名称,默认ks3,可选值:ks3,aliyun,tencent"),
     })
     @ApiOperation(value = "获取上传文件签名", notes = "{\n" +
             "    \"bucketName\":\"\",\n" +
@@ -86,7 +98,11 @@ public class TeacherManageController extends BaseController {
             "    \"unknowValueField\":[\"test\"]\n" +
             "}")
     @PostMapping("/getUploadSign")
-    public HttpResponseResult<PostObjectFormFields> getUploadSign(@RequestBody UploadSign uploadSign) {
+    public HttpResponseResult<OssWrapper.ResponseSign> getUploadSign(@RequestParam(defaultValue = "ks3") String pluginName,
+                                                                     @RequestBody UploadSign uploadSign) {
+        // 设置默认文件存储服务方
+        uploadSign.setPluginName(pluginName);
+
         return succeed(uploadFileService.getUploadSign(uploadSign));
     }
 

+ 11 - 0
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/entity/UploadSign.java

@@ -3,6 +3,7 @@ package com.ym.mec.thirdparty.entity;
 import java.io.Serializable;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 
 /**
  * @Author: cy
@@ -17,6 +18,8 @@ public class UploadSign implements Serializable {
 
     private List<String> unknowValueField;
 
+    private String pluginName;
+
     public String getBucketName() {
         return bucketName;
     }
@@ -48,5 +51,13 @@ public class UploadSign implements Serializable {
     public void setUnknowValueField(List<String> unknowValueField) {
         this.unknowValueField = unknowValueField;
     }
+
+    public String getPluginName() {
+        return Optional.ofNullable(pluginName).orElse("ks3");
+    }
+
+    public void setPluginName(String pluginName) {
+        this.pluginName = pluginName;
+    }
 }
 

+ 7 - 2
mec-web/src/main/java/com/ym/mec/web/controller/UploadFileController.java

@@ -1,6 +1,6 @@
 package com.ym.mec.web.controller;
 
-import com.ksyun.ks3.dto.PostObjectFormFields;
+import com.microsvc.toolkit.middleware.oss.wrapper.OssWrapper;
 import com.ym.mec.thirdparty.entity.UploadSign;
 import com.ym.mec.biz.service.UploadFileService;
 import com.ym.mec.common.controller.BaseController;
@@ -94,6 +94,7 @@ public class UploadFileController extends BaseController {
 			@ApiImplicitParam(name = "postData", dataType = "Map", value = "1.如果使用js sdk上传的时候设置了ACL请设置,例\"acl\":\"public-read\"值要与SDK中一致,没有则删除该项</br>" +
 					"2.提供js sdk中的key值,例\"key\":\"20150115/中文/${filename}\""),
 			@ApiImplicitParam(name = "unknowValueField", dataType = "List", value = "对于用户无法确定表单值的放在unknownValueField中(比如有的上传控件会添加一些表单项,但表单项的值可能是随机的)"),
+			@ApiImplicitParam(name = "pluginName", dataType = "String", value = "插件名称,默认ks3,可选值:ks3,aliyun,tencent"),
 	})
 	@ApiOperation(value = "获取上传文件签名", notes = "{\n" +
 			"    \"bucketName\":\"\",\n" +
@@ -105,7 +106,11 @@ public class UploadFileController extends BaseController {
 			"    \"unknowValueField\":[\"test\"]\n" +
 			"}")
 	@PostMapping("/getUploadSign")
-	public HttpResponseResult<PostObjectFormFields> getUploadSign(@RequestBody UploadSign uploadSign) {
+	public HttpResponseResult<OssWrapper.ResponseSign> getUploadSign(@RequestParam(defaultValue = "ks3") String pluginName,
+																	 @RequestBody UploadSign uploadSign) {
+		// 设置默认文件存储服务方
+		uploadSign.setPluginName(pluginName);
+
 		return succeed(uploadFileService.getUploadSign(uploadSign));
 	}
 }