浏览代码

Merge branch 'master' of http://git.dayaedu.com/yonge/cooleshow

liujunchi 3 年之前
父节点
当前提交
16c6d04e82

+ 2 - 6
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/CourseGroupController.java

@@ -187,12 +187,8 @@ public class CourseGroupController extends BaseController {
 
     @ApiOperation("查询琴房剩余时长、冻结时长、统计学员人数")
     @GetMapping("/selectRemainTime")
-    public HttpResponseResult<PianoRoomTimeVo> selectRemainTime() {
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if (user == null || null == user.getId()) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        return succeed(courseScheduleService.selectRemainTime(user.getId()));
+    public HttpResponseResult<PianoRoomTimeVo> selectRemainTime(Long teacherId) {
+        return succeed(courseScheduleService.selectRemainTime(teacherId));
     }
 
     @ApiOperation(value = "老师管理-琴房课",notes = "{\n" +

+ 14 - 7
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/ImGroupController.java

@@ -1,22 +1,23 @@
 package com.yonge.cooleshow.admin.controller;
 
 
-import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
-import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.ImGroupSearchDto;
 import com.yonge.cooleshow.biz.dal.entity.ImGroup;
 import com.yonge.cooleshow.biz.dal.service.ImGroupService;
+import com.yonge.cooleshow.biz.dal.service.SysUserService;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.toolset.utils.validator.ValidationKit;
-import io.swagger.annotations.*;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.BindingResult;
 import org.springframework.web.bind.annotation.*;
+
 import javax.annotation.Resource;
 import javax.validation.Valid;
 import java.util.List;
-import java.util.Map;
 
 /**
  * 即时通讯群组(ImGroup)表控制层
@@ -34,7 +35,7 @@ public class ImGroupController extends BaseController {
     @Resource
     private ImGroupService imGroupService;
     @Resource
-    private SysUserFeignService sysUserFeignService;
+    private SysUserService sysUserService;
 
     @ApiOperation("获取群详情")
     @PostMapping(value = "/getDetail/{groupId}")
@@ -48,9 +49,15 @@ public class ImGroupController extends BaseController {
     @PreAuthorize("@pcs.hasPermissions('imGroup/queryAll')")
     public HttpResponseResult<List<ImGroup>> queryAll(@Valid @RequestBody ImGroupSearchDto imGroupSearchDto, BindingResult bindingResult) throws Exception {
         ValidationKit.ignoreFields(bindingResult,"createUserId");
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        imGroupSearchDto.setUserId(sysUser.getId());
+        imGroupSearchDto.setUserId(sysUserService.getUserId());
         return succeed(imGroupService.queryAll(imGroupSearchDto));
     }
+
+    @ApiOperation("退出群聊")
+    @PostMapping(value = "/quit/{groupId}")
+    public HttpResponseResult quit(@ApiParam(value = "群编号", required = true) @PathVariable("groupId") String groupId) throws Exception {
+        imGroupService.quit(groupId,sysUserService.getUserId());
+        return succeed();
+    }
 }
 

+ 3 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ImGroupMemberDao.java

@@ -46,5 +46,8 @@ public interface ImGroupMemberDao extends BaseMapper<ImGroupMember> {
                                            @Param("roleType") String roleType);
 
     ImGroupMember findByUserIdAndGroupId(@Param("userId") Long userId, @Param("groupId") String groupId);
+
+    //删除群成员
+    int delByGroupIdAndUserId(@Param("groupId") String groupId, @Param("userId") Long userId);
 }
 

+ 3 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ImGroupService.java

@@ -68,5 +68,8 @@ public interface ImGroupService extends IService<ImGroup> {
      * @return
      */
     ImGroup getByCourseGroupId(Long courseGroupId);
+
+    //退群
+    void quit(String groupId,Long userId) throws Exception;
 }
 

+ 18 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImGroupServiceImpl.java

@@ -9,6 +9,7 @@ import com.yonge.cooleshow.biz.dal.dto.ImGroupResultDto;
 import com.yonge.cooleshow.biz.dal.dto.ImGroupSearchDto;
 import com.yonge.cooleshow.biz.dal.entity.CourseGroup;
 import com.yonge.cooleshow.biz.dal.entity.ImGroup;
+import com.yonge.cooleshow.biz.dal.entity.ImGroupMember;
 import com.yonge.cooleshow.biz.dal.enums.ImGroupMemberRoleType;
 import com.yonge.cooleshow.biz.dal.enums.ImGroupType;
 import com.yonge.cooleshow.biz.dal.service.*;
@@ -170,13 +171,28 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
 
     @Override
     public ImGroup getByCourseGroupId(Long courseGroupId) {
-
         return this.lambdaQuery()
                 .eq(ImGroup::getCourseGroupId,courseGroupId)
                 .last("limit 1")
                 .one();
+    }
 
-
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void quit(String groupId, Long userId) throws Exception {
+        if(imGroupMemberService.getDao().delByGroupIdAndUserId(groupId, userId) < 1){
+            throw new BizException("操作失败:用户不在此群组");
+        }
+        //修改群成员数
+        baseMapper.updateMemberNum(groupId);
+        GroupModel groupModel = new GroupModel(groupId,0);
+        GroupMember[] groupMembers = new GroupMember[]{new GroupMember(userId.toString(),groupId,null)};
+        groupModel.setMembers(groupMembers);
+        Result result = RongCloudConfig.rongCloud.group.quit(groupModel);
+        if(!result.code.equals(200)){
+            log.error("退出群聊失败:{}",result.errorMessage);
+            throw new BizException("退出群聊失败,请联系管理员");
+        }
     }
 }
 

+ 22 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/CourseGroupPianoDetailVo.java

@@ -54,6 +54,12 @@ public class CourseGroupPianoDetailVo extends BaseEntity {
     @ApiModelProperty("老师签退状态 0:异常 1:正常")
     private Integer teacherOutSign;
 
+    @ApiModelProperty("学生签到状态 0:异常 1:正常")
+    private Integer studentInSign;
+
+    @ApiModelProperty("学生签退状态 0:异常 1:正常")
+    private Integer studentOutSign;
+
     @ApiModelProperty("学生状态 0:异常 1:正常")
     private Integer studentSign;
 
@@ -67,6 +73,22 @@ public class CourseGroupPianoDetailVo extends BaseEntity {
     @ApiModelProperty("学生真实姓名")
     private String studentRealName;
 
+    public Integer getStudentInSign() {
+        return studentInSign;
+    }
+
+    public void setStudentInSign(Integer studentInSign) {
+        this.studentInSign = studentInSign;
+    }
+
+    public Integer getStudentOutSign() {
+        return studentOutSign;
+    }
+
+    public void setStudentOutSign(Integer studentOutSign) {
+        this.studentOutSign = studentOutSign;
+    }
+
     public Long getStudentId() {
         return studentId;
     }

+ 4 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseGroupMapper.xml

@@ -818,6 +818,8 @@
         p.user_id_ AS studentId,
         (CASE WHEN cs.start_time_ &gt;= ta.sign_in_time_ THEN 1 ELSE 0 END) AS teacherInSign,
         (CASE WHEN cs.end_time_ &lt;= ta.sign_out_time_ THEN 1 ELSE 0 END) AS teacherOutSign,
+        (CASE WHEN cs.start_time_ &gt;= sa.sign_in_time_ THEN 1 ELSE 0 END) AS studentInSign,
+        (CASE WHEN cs.end_time_ &lt;= sa.sign_out_time_ THEN 1 ELSE 0 END) AS studentOutSign,
         (CASE WHEN cs.start_time_ &gt;= sa.sign_in_time_ AND cs.end_time_ &lt;= sa.sign_out_time_ THEN 1 ELSE 0 END) AS studentSign,
         (CASE WHEN cs.start_time_ &gt;= ta.sign_in_time_ AND cs.end_time_ &lt;= ta.sign_out_time_ THEN 1 ELSE 0 END) AS teacherSign
         FROM course_schedule cs
@@ -907,6 +909,8 @@
         su.real_name_ AS studentRealName,
         (CASE WHEN cs.start_time_ &gt;= ta.sign_in_time_ THEN 1 ELSE 0 END) AS teacherInSign,
         (CASE WHEN cs.end_time_ &lt;= ta.sign_out_time_ THEN 1 ELSE 0 END) AS teacherOutSign,
+        (CASE WHEN cs.start_time_ &gt;= sa.sign_in_time_ THEN 1 ELSE 0 END) AS studentInSign,
+        (CASE WHEN cs.end_time_ &lt;= sa.sign_out_time_ THEN 1 ELSE 0 END) AS studentOutSign,
         (CASE WHEN cs.start_time_ &gt;= sa.sign_in_time_ AND cs.end_time_ &lt;= sa.sign_out_time_ THEN 1 ELSE 0 END) AS studentSign,
         (CASE WHEN cs.start_time_ &gt;= ta.sign_in_time_ AND cs.end_time_ &lt;= ta.sign_out_time_ THEN 1 ELSE 0 END) AS teacherSign
         FROM course_schedule cs

+ 3 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/ImGroupMemberMapper.xml

@@ -32,6 +32,9 @@
     <delete id="delByGroupId">
         DELETE FROM im_group_member WHERE group_id_ = #{groupId}
     </delete>
+    <delete id="delByGroupIdAndUserId">
+        DELETE FROM im_group_member WHERE group_id_ = #{groupId} AND user_id_ = #{userId}
+    </delete>
     <select id="findOne" resultMap="BaseResultMap">
         SELECT <include refid="Base_Column_List"/> FROM im_group_member
         <where>

+ 10 - 5
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/ImGroupController.java

@@ -1,12 +1,11 @@
 package com.yonge.cooleshow.student.controller;
 
 
-import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
-import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.ImGroupResultDto;
 import com.yonge.cooleshow.biz.dal.dto.ImGroupSearchDto;
 import com.yonge.cooleshow.biz.dal.entity.ImGroup;
 import com.yonge.cooleshow.biz.dal.service.ImGroupService;
+import com.yonge.cooleshow.biz.dal.service.SysUserService;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.toolset.utils.validator.ValidationKit;
@@ -36,7 +35,7 @@ public class ImGroupController extends BaseController {
     @Resource
     private ImGroupService imGroupService;
     @Resource
-    private SysUserFeignService sysUserFeignService;
+    private SysUserService sysUserService;
 
     @ApiOperation("获取群详情")
     @PostMapping(value = "/getDetail/{groupId}")
@@ -48,8 +47,7 @@ public class ImGroupController extends BaseController {
     @PostMapping(value = "/queryAll")
     public HttpResponseResult<List<ImGroup>> queryAll(@Valid @RequestBody ImGroupSearchDto imGroupSearchDto, BindingResult bindingResult) throws Exception {
         ValidationKit.ignoreFields(bindingResult,"createUserId");
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        imGroupSearchDto.setUserId(sysUser.getId());
+        imGroupSearchDto.setUserId(sysUserService.getUserId());
         return succeed(imGroupService.queryAll(imGroupSearchDto));
     }
 
@@ -58,5 +56,12 @@ public class ImGroupController extends BaseController {
     public HttpResponseResult<List<ImGroupResultDto>> queryTeacherGroup(@RequestBody ImGroupSearchDto imGroupSearchDto) throws Exception {
         return succeed(imGroupService.queryTeacherFun(imGroupSearchDto));
     }
+
+    @ApiOperation("退出群聊")
+    @PostMapping(value = "/quit/{groupId}")
+    public HttpResponseResult quit(@ApiParam(value = "群编号", required = true) @PathVariable("groupId") String groupId) throws Exception {
+        imGroupService.quit(groupId,sysUserService.getUserId());
+        return succeed();
+    }
 }
 

+ 7 - 0
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/ImGroupController.java

@@ -53,6 +53,13 @@ public class ImGroupController extends BaseController {
         return succeed();
     }
 
+    @ApiOperation("退出群聊")
+    @PostMapping(value = "/quit/{groupId}")
+    public HttpResponseResult quit(@ApiParam(value = "群编号", required = true) @PathVariable("groupId") String groupId) throws Exception {
+        imGroupService.quit(groupId,sysUserService.getUserId());
+        return succeed();
+    }
+
     @ApiOperation("获取群详情")
     @PostMapping(value = "/getDetail/{groupId}")
     public HttpResponseResult<ImGroup> getDetail(@ApiParam(value = "群编号", required = true) @PathVariable("groupId") String groupId) throws Exception {