Przeglądaj źródła

Merge remote-tracking branch 'origin/saas_2022_05_17_activity' into saas_2022_05_17_activity

zouxuan 3 lat temu
rodzic
commit
e01e9289db

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TempLittleArtistTrainingCampDao.java

@@ -34,6 +34,8 @@ public interface TempLittleArtistTrainingCampDao extends BaseMapper<TempLittleAr
      */
     <T> IPage<T> queryUserTrainingDetail(Page<T> page, @Param("param") Map<String, Object> param);
 
+    <T> List<T> queryUserTrainingDetail(@Param("param") Map<String, Object> param);
+
     List<ImGroup> queryCampImGroup(String imGroupIds);
 
     Integer queryUserTrainingPlayTime(@Param("param") Map<String, Object> param);

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/vo/TempCampUserQualificationsVo.java

@@ -21,6 +21,9 @@ public class TempCampUserQualificationsVo {
     @ApiModelProperty(value = "训练营id")
     private Integer campId;
 
+    @ApiModelProperty(value = "训练营url")
+    private String url;
+
     public Integer getQualifications() {
         return qualifications;
     }
@@ -60,4 +63,12 @@ public class TempCampUserQualificationsVo {
     public void setCampId(Integer campId) {
         this.campId = campId;
     }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
 }

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/TempLittleArtistTrainingCampService.java

@@ -11,6 +11,8 @@ import com.ym.mec.biz.dal.vo.TempCampUserVo;
 import com.ym.mec.biz.dal.vo.TempUserTrainingTimeDetailVo;
 import com.ym.mec.common.page.PageInfo;
 
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
@@ -109,6 +111,11 @@ public interface TempLittleArtistTrainingCampService extends IService<TempLittle
      * 云教练训练是否达标
      */
     TempCampUserTrainingPlayTimeVo queryUserTrainingPlayTime();
+
+    /**
+     * 导出小小训练营想详情
+     */
+    void exportUserTrainingDetail(Map<String, Object> param, HttpServletResponse response) throws IOException;
 }
 
 

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/TempLittleArtistTrainingCampUserRelationService.java

@@ -16,6 +16,13 @@ public interface TempLittleArtistTrainingCampUserRelationService extends IServic
     TempLittleArtistTrainingCampUserRelationDao getDao();
 
     /**
+     * 参与训练营
+     *
+     * @param campId 训练营id
+     */
+    void add(Integer campId);
+
+    /**
      * 查询当前登录学生有没有资格参加训练营
      */
     TempCampUserQualificationsVo checkCampQualifications();

+ 10 - 9
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveBroadcastRoomServiceImpl.java

@@ -599,16 +599,10 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
             if (!onlineUserInfo.isExists()) {
                 return;
             }
-            //在线人数
-            int count = 0;
-            //大于1就发送实际人数,如果是最后一个人离开房间则发送一条0人数消息给主播
-            if (onlineUserInfo.size() > 1) {
-                count = onlineUserInfo.size();
-            }
-            //向直播间发送当前在线人数消息
-            this.sendOnlineUserCount(roomUid, userId, count);
             //从在线人员列表删除该人员
             onlineUserInfo.fastRemove(userId);
+            //向直播间发送当前在线人数消息
+            this.sendOnlineUserCount(roomUid, userId, onlineUserInfo.size());
             log.info("opsRoom>>>> looker userInfo: {}", JSONObject.toJSONString(userInfo));
         });
     }
@@ -740,7 +734,7 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
         //进入房间写如在线人员列表
         onlineUserInfo.fastPut(userId, JSONObject.toJSONString(userInfo));
         //向直播间发送当前在线人数消息
-//        this.sendOnlineUserCount(roomUid, userId, count);
+        this.sendOnlineUserCount(roomUid, userId, onlineUserInfo.size());
         log.info("joinRoom>>>> userInfo: {}", JSONObject.toJSONString(userInfo));
     }
 
@@ -993,6 +987,13 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
      * 测试
      */
     public Map<String, Object> test(String roomUid) {
+        List<ImUserState> userStateList = new ArrayList<>();
+        ImUserState userState1 = new ImUserState();
+        userState1.setStatus("3");
+        userState1.setUserid("100071");
+        userStateList.add(userState1);
+        opsRoom(userStateList);
+
         //test
         Map<String, Object> result = new HashMap<>();
         //点赞数

+ 43 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TempLittleArtistTrainingCampServiceImpl.java

@@ -22,7 +22,9 @@ 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.util.date.DateUtil;
+import com.ym.mec.util.excel.POIUtil;
 import org.apache.commons.collections.CollectionUtils;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
@@ -30,6 +32,9 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.OutputStream;
 import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.util.*;
@@ -67,7 +72,7 @@ public class TempLittleArtistTrainingCampServiceImpl extends ServiceImpl<TempLit
         BeanUtils.copyProperties(dto, entity);
         Date now = new Date();
         //训练时间必需大于报名时间
-        if (dto.getTrainStartDate().getTime() > dto.getApplyStartDate().getTime()) {
+        if (dto.getApplyStartDate().getTime() > dto.getTrainStartDate().getTime()) {
             throw new BizException("训练时间必需大于报名时间");
         }
         entity.setState(TempLittleArtistTrainingCamp.NOT_START);
@@ -186,7 +191,7 @@ public class TempLittleArtistTrainingCampServiceImpl extends ServiceImpl<TempLit
             }
             TempUserTrainingTimeDetailVo tempUserTrainingTimeDetailVo = new TempUserTrainingTimeDetailVo();
             tempUserTrainingTimeDetailVo.setUserId(userId);
-            tempUserTrainingTimeDetailVo.setTrainingDate(camp.getTrainStartDate());
+            tempUserTrainingTimeDetailVo.setTrainingDate(DateUtil.toDate(generateDate.toString()));
             tempUserTrainingTimeDetailVo.setPlayTime(BigDecimal.ZERO);
             tempUserTrainingTimeDetailVo.setIsFinish(0);
             resultList.add(tempUserTrainingTimeDetailVo);
@@ -257,6 +262,9 @@ public class TempLittleArtistTrainingCampServiceImpl extends ServiceImpl<TempLit
         //查询该学员是否购买过该训练营
         TempLittleArtistTrainingCampUserRelation userRelation = tempLittleArtistTrainingCampUserRelationService.getOne(Wrappers.<TempLittleArtistTrainingCampUserRelation>lambdaQuery()
                 .eq(TempLittleArtistTrainingCampUserRelation::getUserId, user.getId()));
+        if (Objects.isNull(userRelation)) {
+            throw new BizException("没有参与资格!");
+        }
         Map<String, Object> result = new HashMap<>();
         result.put("user", userRelation);
         if (CollectionUtils.isNotEmpty(campList)) {
@@ -307,7 +315,7 @@ public class TempLittleArtistTrainingCampServiceImpl extends ServiceImpl<TempLit
         List<TempLittleArtistTrainingCamp> list = stateMap.get(oldState);
         if (CollectionUtils.isNotEmpty(list)) {
             list.forEach(camp -> {
-                if ( now.getTime() >=  dateField.apply(camp).getTime()) {
+                if (now.getTime() >= dateField.apply(camp).getTime()) {
                     camp.setState(newState);
                 }
             });
@@ -347,6 +355,38 @@ public class TempLittleArtistTrainingCampServiceImpl extends ServiceImpl<TempLit
         return vo;
     }
 
+    /**
+     * 导出小小训练营想详情
+     */
+    public void exportUserTrainingDetail(Map<String, Object> param, HttpServletResponse response) throws IOException {
+        List<TempCampUserTrainingDetailVo> list = baseMapper.queryUserTrainingDetail(param);
+        OutputStream outputStream = response.getOutputStream();
+        HSSFWorkbook workbook = null;
+        try {
+            String[] header = {"学员编号", "学员姓名", "手机号", "群组", "打卡天数", "训练时长(分钟)"};
+            String[] body = {"id", "username", "phone", "imGroupName", "playDay", "playTime"};
+            workbook = POIUtil.exportExcel(header, body, list);
+            response.setContentType("application/octet-stream");
+            response.setHeader("Content-Disposition", "attachment;filename=replacement-" + DateUtil.getDate(new Date()) + ".xls");
+            response.flushBuffer();
+            outputStream = response.getOutputStream();
+            workbook.write(outputStream);
+            outputStream.flush();
+            workbook.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if (outputStream != null) {
+                try {
+                    workbook.close();
+                    outputStream.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
+
     private SysUser getUser() {
         return Optional.ofNullable(sysUserFeignService.queryUserInfo())
                 .orElseThrow(() -> new BizException("用户信息获取失败,请刷新页面或者重新登录!"));

+ 15 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TempLittleArtistTrainingCampUserRelationServiceImpl.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.TempLittleArtistTrainingCampUserRelationDao;
+import com.ym.mec.biz.dal.entity.ImLiveBroadcastRoom;
 import com.ym.mec.biz.dal.entity.TempLittleArtistTrainingCampUserRelation;
 import com.ym.mec.biz.dal.vo.TempCampUserQualificationsVo;
 import com.ym.mec.biz.service.SysConfigService;
@@ -41,6 +42,19 @@ public class TempLittleArtistTrainingCampUserRelationServiceImpl extends Service
     }
 
     /**
+     * 参与训练营
+     *
+     * @param campId 训练营id
+     */
+    public void add(Integer campId) {
+        SysUser user = getUser();
+        this.update(Wrappers.<TempLittleArtistTrainingCampUserRelation>lambdaUpdate()
+                .set(TempLittleArtistTrainingCampUserRelation::getActivityId, campId)
+                .set(TempLittleArtistTrainingCampUserRelation::getState, TempLittleArtistTrainingCampUserRelation.APPLY)
+                .eq(TempLittleArtistTrainingCampUserRelation::getUserId, user.getId()));
+    }
+
+    /**
      * 查询当前登录学生有没有资格参加训练营
      */
     @Override
@@ -68,6 +82,7 @@ public class TempLittleArtistTrainingCampUserRelationServiceImpl extends Service
         //取配置中的文案及标题
         this.setValue("temp_little_artist_training_camp_content", vo::setContent);
         this.setValue("temp_little_artist_training_camp_title", vo::setCampTitle);
+        this.setValue("temp_little_artist_training_camp_url", vo::setUrl);
 
         vo.setCampId(relation.getActivityId());
         vo.setUserName(user.getUsername());

+ 8 - 0
mec-student/src/main/java/com/ym/mec/student/controller/TempLittleArtistTrainingCampController.java

@@ -135,5 +135,13 @@ public class TempLittleArtistTrainingCampController extends BaseController {
     public HttpResponseResult<TempCampUserQualificationsVo> checkCampQualifications(){
         return succeed(tempLittleArtistTrainingCampUserRelationService.checkCampQualifications());
     }
+
+    @ApiOperation(value="参与训练营")
+    @GetMapping(value = "/addCamp")
+    public HttpResponseResult<Object> addCamp(Integer campId){
+        tempLittleArtistTrainingCampUserRelationService.add(campId);
+        return succeed();
+    }
+
 }
 

+ 19 - 0
mec-web/src/main/java/com/ym/mec/web/controller/TempLittleArtistTrainingCampController.java

@@ -13,7 +13,9 @@ import io.swagger.annotations.*;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
@@ -136,5 +138,22 @@ public class TempLittleArtistTrainingCampController extends BaseController {
         return succeed(tempLittleArtistTrainingCampUserRelationService.checkCampQualifications());
     }
 
+    @ApiOperation(value="参与训练营")
+    @GetMapping(value = "/addCamp")
+    public HttpResponseResult<Object> addCamp(Integer campId){
+        tempLittleArtistTrainingCampUserRelationService.add(campId);
+        return succeed();
+    }
+
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "search", dataType = "String", value = "学员姓名/手机号/编号-模糊搜索"),
+            @ApiImplicitParam(name = "imGroupId", dataType = "Integer", value = "所在群组Id"),
+    })
+    @ApiOperation(value="导出训练营详情")
+    @PostMapping(value = "/exportUserTrainingDetail")
+    public void exportUserTrainingDetail(@RequestBody Map<String, Object> param, HttpServletResponse response) throws IOException{
+        tempLittleArtistTrainingCampService.exportUserTrainingDetail(param, response);
+    }
+
 }