ソースを参照

增加权限导入接口

hgw 3 年 前
コミット
8241fac82b

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/TemplateTypeEnum.java

@@ -8,7 +8,8 @@ public enum TemplateTypeEnum implements BaseEnum<String, TemplateTypeEnum> {
     FINANCIAL_EXPENDITURE("FINANCIAL_EXPENDITURE","财务支出导入模板"),
     REDEMPTIONCODE("REDEMPTION_CODE", "兑换码分配模板表"),
     OA_QUIT_MUSIC_GROUP("OA_QUIT_MUSIC_GROUP", "乐团退费模板"),
-    EXTERNAL_STUDENT_IMPORT_MUSIC_GROUP("EXTERNAL_STUDENT_IMPORT_MUSIC_GROUP", "外部学生入团导入模板");
+    EXTERNAL_STUDENT_IMPORT_MUSIC_GROUP("EXTERNAL_STUDENT_IMPORT_MUSIC_GROUP", "外部学生入团导入模板"),
+    LIVE_ROOM_PURVIEW_USER("LIVE_ROOM_PURVIEW_USER", "直播间用户观看权限表");
 
     private String code;
 

+ 5 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/ImLiveRoomPurviewService.java

@@ -5,8 +5,8 @@ import com.ym.mec.biz.dal.dao.ImLiveRoomPurviewDao;
 import com.ym.mec.biz.dal.dto.SysUserDto;
 import com.ym.mec.biz.dal.entity.ImGroup;
 import com.ym.mec.biz.dal.entity.ImLiveRoomPurview;
-import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomVo;
 import com.ym.mec.common.page.PageInfo;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.util.Map;
 
@@ -86,5 +86,9 @@ public interface ImLiveRoomPurviewService extends IService<ImLiveRoomPurview> {
      */
     PageInfo<ImGroup> selectRoomPurviewGroup(Map<String, Object> param);
 
+    /**
+     * 导入观看权限-人员
+     */
+    String importPurviewUser(MultipartFile file, String roomUid) throws Exception;
 }
 

+ 58 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveRoomPurviewServiceImpl.java

@@ -11,6 +11,7 @@ import com.ym.mec.biz.dal.dto.SysUserDto;
 import com.ym.mec.biz.dal.entity.ImGroup;
 import com.ym.mec.biz.dal.entity.ImLiveBroadcastRoom;
 import com.ym.mec.biz.dal.entity.ImLiveRoomPurview;
+import com.ym.mec.biz.dal.enums.TemplateTypeEnum;
 import com.ym.mec.biz.service.ImLiveBroadcastRoomService;
 import com.ym.mec.biz.service.ImLiveRoomPurviewService;
 import com.ym.mec.common.exception.BizException;
@@ -18,12 +19,20 @@ import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.PageUtil;
 import com.ym.mec.common.page.WrapperUtil;
 import com.ym.mec.common.tenant.TenantContextHolder;
+import com.ym.mec.util.excel.POIUtil;
+import com.ym.mec.util.ini.IniFileUtil;
 import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.dao.DuplicateKeyException;
 import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
 
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
 import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
@@ -198,6 +207,55 @@ public class ImLiveRoomPurviewServiceImpl extends ServiceImpl<ImLiveRoomPurviewD
         return PageUtil.pageInfo(baseMapper.selectRoomPurviewGroup(pageInfo, param));
     }
 
+    /**
+     * 导入观看权限-人员n
+     */
+    @Override
+    public String importPurviewUser(MultipartFile file, String roomUid) throws Exception {
+        Map<String, List<Map<String, Object>>> sheetsListMap = POIUtil.importExcel(
+                new ByteArrayInputStream(file.getBytes()), 0, file.getOriginalFilename());
+        InputStream inputStream = new ClassPathResource("columnMapper.ini").getInputStream();
+        Map<String, String> columns = IniFileUtil.readIniFile(inputStream, TemplateTypeEnum.LIVE_ROOM_PURVIEW_USER.getMsg());
+        List<ImLiveRoomPurview> purviewList = new ArrayList<>();
+        Integer id = getSysUser().getId();
+        Date now = new Date();
+        for (String e : sheetsListMap.keySet()) {
+            List<Map<String, Object>> sheet = sheetsListMap.get(e);
+            for (Map<String, Object> row : sheet) {
+                if (row.size() == 0) {
+                    continue;
+                }
+                ImLiveRoomPurview obj = new ImLiveRoomPurview();
+                obj.setRoomUid(roomUid);
+                obj.setType("STUDENT");
+                obj.setCreatedBy(id);
+                obj.setCreatedTime(now);
+                for (String s : row.keySet()) {
+                    if (!columns.containsKey(s)) {
+                        continue;
+                    }
+                    if (columns.get(s).equals("userId")) {
+                        if (null == row.get(s) || StringUtils.isBlank(row.get(s).toString())) {
+                            log.error("导入异常:{}不可为空", s);
+                            continue;
+                        }
+                        obj.setUserId(Integer.valueOf(row.get(s).toString()));
+                    }
+                }
+                purviewList.add(obj);
+            }
+        }
+        try {
+            baseMapper.insertBatch(purviewList);
+        } catch (DuplicateKeyException dupKeyEx) {
+            log.error("数据导入重复: " + dupKeyEx.getCause());
+            throw new BizException("数据重复:" + dupKeyEx.getCause());
+        } catch (Exception ex) {
+            throw new BizException("导入数据出错:" + ex, ex);
+        }
+        return "成功导入 " + purviewList.size() + "条";
+    }
+
     private SysUser getSysUser() {
         //修改机构基础信息
         return Optional.ofNullable(sysUserFeignService.queryUserInfo())

+ 3 - 0
mec-biz/src/main/resources/config/mybatis/ImLiveRoomPurviewMapper.xml

@@ -22,6 +22,9 @@
         <foreach collection="entities" item="entity" separator=",">
             (#{entity.roomUid}, #{entity.userId}, #{entity.type}, #{entity.createdBy}, #{entity.createdTime})
         </foreach>
+        ON DUPLICATE KEY UPDATE
+        created_by_ = VALUES(created_by_),
+        created_time_ = VALUES(created_time_)
     </insert>
 
     <select id="selectRoomPurviewStudent" parameterType="map" resultType="com.ym.mec.biz.dal.dto.SysUserDto">

+ 11 - 1
mec-web/src/main/java/com/ym/mec/web/controller/ImLiveRoomPurviewController.java

@@ -11,6 +11,7 @@ import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import java.util.Map;
@@ -42,7 +43,7 @@ public class ImLiveRoomPurviewController extends BaseController {
     @ApiOperation("批量添加/根据查询条件添加房间观看权限")
     @PostMapping("/addByCondition")
     @PreAuthorize("@pcs.hasPermissions('imLiveRoomPurview/addByCondition')")
-    public HttpResponseResult<Object> addByCondition(@RequestBody Map<String, Object> param){
+    public HttpResponseResult<Object> addByCondition(@RequestBody Map<String, Object> param) {
         imLiveRoomPurviewService.addByCondition(param);
         return succeed();
     }
@@ -120,5 +121,14 @@ public class ImLiveRoomPurviewController extends BaseController {
         return succeed(imLiveRoomPurviewService.selectRoomPurviewGroup(param));
     }
 
+    @ApiOperation(value = "导入观看权限-人员")
+    @PostMapping(value = "/importPurviewUser")
+    public HttpResponseResult<String> importPurviewUser(@RequestParam("file") MultipartFile file, String roomUid) throws Exception {
+        String msg = imLiveRoomPurviewService.importPurviewUser(file, roomUid);
+        HttpResponseResult<String> succeed = succeed();
+        succeed.setMsg(msg);
+        return succeed;
+    }
+
 }
 

+ 5 - 1
mec-web/src/main/resources/columnMapper.ini

@@ -61,4 +61,8 @@
 
 [兑换码分配模板表]
 代码 = code
-链接地址 = url
+链接地址 = url
+
+[直播间用户观看权限表]
+编号 = userId
+名称 = userName