Browse Source

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

liujunchi 3 years ago
parent
commit
f74be601bb
83 changed files with 995 additions and 349 deletions
  1. 6 0
      cooleshow-auth/auth-server/pom.xml
  2. 24 0
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/config/RongCloudConfig.java
  3. 17 5
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/core/handler/BaseAuthenticationSuccessEventHandler.java
  4. 0 3
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/core/provider/PhoneAuthenticationProvider.java
  5. 3 4
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/dal/dao/SysUserDao.java
  6. 12 8
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/service/impl/SysUserServiceImpl.java
  7. 25 20
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/web/controller/UserController.java
  8. 16 0
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/web/controller/queryInfo/RoleQueryInfo.java
  9. 9 7
      cooleshow-auth/auth-server/src/main/resources/config/mybatis/SysRoleMapper.xml
  10. 1 1
      cooleshow-auth/auth-server/src/main/resources/config/mybatis/SysUserRoleMapper.xml
  11. 12 0
      cooleshow-common/src/main/java/com/yonge/cooleshow/common/controller/BaseController.java
  12. 3 0
      cooleshow-common/src/main/java/com/yonge/cooleshow/common/entity/HttpResponseResult.java
  13. 2 0
      cooleshow-task/src/main/java/com/yonge/cooleshow/task/jobs/PollingOrderTask.java
  14. 54 0
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/ImGroupController.java
  15. 1 1
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/SubjectController.java
  16. 0 49
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/UserAccountController.java
  17. 0 39
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/UserAccountRecordController.java
  18. 6 7
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/UserWithdrawalController.java
  19. 6 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseScheduleDao.java
  20. 6 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseScheduleStudentPaymentDao.java
  21. 0 4
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ImGroupDao.java
  22. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ImGroupMemberAuditDao.java
  23. 4 4
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ImGroupMemberDao.java
  24. 1 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/LiveRoomDao.java
  25. 2 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/SubjectDao.java
  26. 0 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/req/OrderReq.java
  27. 9 8
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/OrderSearch.java
  28. 67 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/UserAccountRecordSearch.java
  29. 5 5
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ImGroup.java
  30. 4 4
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ImGroupMember.java
  31. 5 4
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ImGroupMemberAudit.java
  32. 4 4
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ImGroupNotice.java
  33. 10 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/MemberPriceSettings.java
  34. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/UserAccountRecord.java
  35. 2 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/AccountBizTypeEnum.java
  36. 26 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/BizHttpStatus.java
  37. 3 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseScheduleService.java
  38. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ImGroupMemberAuditService.java
  39. 5 5
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ImGroupMemberService.java
  40. 2 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ImGroupService.java
  41. 3 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/LiveRoomService.java
  42. 1 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseGroupServiceImpl.java
  43. 69 10
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseScheduleServiceImpl.java
  44. 1 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/EmployeeServiceImpl.java
  45. 2 5
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImGroupMemberAuditServiceImpl.java
  46. 8 8
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImGroupMemberServiceImpl.java
  47. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImGroupNoticeServiceImpl.java
  48. 10 8
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImGroupServiceImpl.java
  49. 5 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/LiveRoomServiceImpl.java
  50. 3 3
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/StudentServiceImpl.java
  51. 16 29
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/SubjectServiceImpl.java
  52. 11 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherServiceImpl.java
  53. 7 20
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderServiceImpl.java
  54. 34 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/CourseScheduleStudentPaymentVo.java
  55. 246 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/StudentHomePage.java
  56. 10 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/StudentHomeVo.java
  57. 7 7
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TeacherStyleVideoVo.java
  58. 21 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TeacherVo.java
  59. 30 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/UserAccountRecordVo.java
  60. 11 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/VideoLessonExamineVo.java
  61. 35 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  62. 16 1
      cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleStudentPaymentMapper.xml
  63. 2 2
      cooleshow-user/user-biz/src/main/resources/config/mybatis/EmployeeMapper.xml
  64. 1 16
      cooleshow-user/user-biz/src/main/resources/config/mybatis/ImGroupMapper.xml
  65. 1 1
      cooleshow-user/user-biz/src/main/resources/config/mybatis/ImGroupMemberAuditMapper.xml
  66. 1 1
      cooleshow-user/user-biz/src/main/resources/config/mybatis/ImGroupMemberMapper.xml
  67. 1 1
      cooleshow-user/user-biz/src/main/resources/config/mybatis/ImGroupNoticeMapper.xml
  68. 6 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/LiveRoomMapper.xml
  69. 2 1
      cooleshow-user/user-biz/src/main/resources/config/mybatis/MemberPriceSettingsMapper.xml
  70. 6 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/SubjectMapper.xml
  71. 1 1
      cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherStyleVideoMapper.xml
  72. 23 3
      cooleshow-user/user-biz/src/main/resources/config/mybatis/UserAccountRecordMapper.xml
  73. 4 4
      cooleshow-user/user-biz/src/main/resources/config/mybatis/UserOrderMapper.xml
  74. 1 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/VideoLessonGroupMapper.xml
  75. 3 2
      cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/ImGroupMemberController.java
  76. 7 8
      cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/StudentCourseScheduleController.java
  77. 14 1
      cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/TeacherController.java
  78. 1 1
      cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/VipCardController.java
  79. 2 2
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/ImGroupController.java
  80. 5 6
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/ImGroupMemberAuditController.java
  81. 4 3
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/ImGroupMemberController.java
  82. 6 7
      toolset/utils/src/main/java/com/yonge/toolset/utils/easyexcel/ExcelDataReader.java
  83. 2 2
      toolset/utils/src/main/java/com/yonge/toolset/utils/easyexcel/ExcelUtils.java

+ 6 - 0
cooleshow-auth/auth-server/pom.xml

@@ -83,6 +83,12 @@
 			<groupId>com.yonge.toolset</groupId>
 			<artifactId>thirdparty-component</artifactId>
         </dependency>
+        <dependency>
+            <groupId>cn.rongcloud.im</groupId>
+            <artifactId>server-sdk-java</artifactId>
+            <version>3.2.17</version>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
 
     <build>

+ 24 - 0
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/config/RongCloudConfig.java

@@ -0,0 +1,24 @@
+package com.yonge.cooleshow.auth.config;
+
+import io.rong.RongCloud;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
+
+@Configuration
+public class RongCloudConfig {
+
+    @Value("${cn.rongcloud.im.appkey}")
+    private String appKey;
+    @Value("${cn.rongcloud.im.secret}")
+    private String appSecret;
+
+    public static RongCloud rongCloud;
+
+    @Bean
+    @Primary
+    public void getRongCloud() {
+        rongCloud = RongCloud.getInstance(appKey,appSecret);
+    }
+}

+ 17 - 5
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/core/handler/BaseAuthenticationSuccessEventHandler.java

@@ -9,6 +9,12 @@ import java.util.Map;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import com.yonge.cooleshow.auth.config.RongCloudConfig;
+import com.yonge.cooleshow.common.entity.ImResult;
+import com.yonge.cooleshow.common.entity.ImUserModel;
+import com.yonge.cooleshow.common.exception.BizException;
+import io.rong.models.response.TokenResult;
+import io.rong.models.user.UserModel;
 import org.apache.commons.collections.MapUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -51,7 +57,6 @@ public class BaseAuthenticationSuccessEventHandler extends SavedRequestAwareAuth
 	private SysUserService sysUserService;
 	@Autowired
 	private ObjectMapper objectMapper;
-	
 	@Autowired
 	private ClientDetailsService clientDetailsService;
 
@@ -83,10 +88,17 @@ public class BaseAuthenticationSuccessEventHandler extends SavedRequestAwareAuth
 			if(StringUtils.isEmpty(name)){
 				name = sysUser.getUsername();
 			}
-			/*ImResult register = imFeignService.register(new ImUserModel(sysUser.getId().toString(), name, sysUser.getAvatar()));
-			sysUser.setImToken(register.getToken());
-			sysUser.setUpdateTime(new Date());
-			sysUserService.update(sysUser);*/
+			try {
+				TokenResult result = RongCloudConfig.rongCloud.user.register(new UserModel(sysUser.getId().toString(), name, sysUser.getAvatar()));
+				if(!result.code.equals(200)){
+					logger.error("获取用户token失败:{}",result.errorMessage);
+				}
+				sysUser.setImToken(result.getToken());
+				sysUser.setUpdateTime(new Date());
+				sysUserService.update(sysUser);
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
 		}
 		Date date = new Date();
 		//修改添加登录信息

+ 0 - 3
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/core/provider/PhoneAuthenticationProvider.java

@@ -2,9 +2,6 @@ package com.yonge.cooleshow.auth.core.provider;
 
 import java.util.Date;
 
-import com.yonge.cooleshow.auth.api.entity.SysConfig;
-import com.yonge.cooleshow.auth.service.SysConfigService;
-import com.yonge.cooleshow.common.constant.SysConfigConstant;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.security.authentication.BadCredentialsException;
 import org.springframework.security.authentication.InternalAuthenticationServiceException;

+ 3 - 4
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/dal/dao/SysUserDao.java

@@ -2,15 +2,14 @@ package com.yonge.cooleshow.auth.dal.dao;
 
 import java.util.List;
 
+import org.apache.ibatis.annotations.Param;
+
 import com.yonge.cooleshow.auth.api.dto.RealnameAuthReq;
 import com.yonge.cooleshow.auth.api.dto.SysUserQueryInfo;
 import com.yonge.cooleshow.auth.api.dto.UserSetReq;
-import com.yonge.cooleshow.auth.api.vo.UserSetVo;
-import com.yonge.toolset.utils.idcard.IdcardInfoExtractor;
-import org.apache.ibatis.annotations.Param;
-
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.auth.api.enums.UserLockFlag;
+import com.yonge.cooleshow.auth.api.vo.UserSetVo;
 import com.yonge.cooleshow.common.dal.BaseDAO;
 import com.yonge.cooleshow.common.entity.ImUserModel;
 

+ 12 - 8
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/service/impl/SysUserServiceImpl.java

@@ -3,26 +3,24 @@ package com.yonge.cooleshow.auth.service.impl;
 import java.util.Date;
 import java.util.List;
 
-import com.yonge.cooleshow.auth.api.dto.RealnameAuthReq;
-import com.yonge.cooleshow.auth.api.dto.SysUserQueryInfo;
-import com.yonge.cooleshow.auth.api.dto.UserSetReq;
-import com.yonge.cooleshow.auth.api.vo.UserSetVo;
-import com.yonge.cooleshow.auth.service.SysConfigService;
-import com.yonge.cooleshow.common.constant.SysConfigConstant;
-import com.yonge.toolset.utils.idcard.IdcardInfoExtractor;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.core.userdetails.User;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import com.yonge.cooleshow.auth.api.dto.RealnameAuthReq;
 import com.yonge.cooleshow.auth.api.dto.SysUserInfo;
+import com.yonge.cooleshow.auth.api.dto.SysUserQueryInfo;
+import com.yonge.cooleshow.auth.api.dto.UserSetReq;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.auth.api.vo.UserSetVo;
 import com.yonge.cooleshow.auth.dal.dao.SysUserDao;
+import com.yonge.cooleshow.auth.service.SysConfigService;
 import com.yonge.cooleshow.auth.service.SysRoleMenuService;
 import com.yonge.cooleshow.auth.service.SysUserRoleService;
 import com.yonge.cooleshow.auth.service.SysUserService;
+import com.yonge.cooleshow.common.constant.SysConfigConstant;
 import com.yonge.cooleshow.common.dal.BaseDAO;
 import com.yonge.cooleshow.common.entity.ImUserModel;
 import com.yonge.cooleshow.common.exception.BizException;
@@ -179,14 +177,20 @@ public class SysUserServiceImpl extends BaseServiceImpl<Long, SysUser> implement
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void saveStudent(Long userId) {
         sysUserDao.saveStudent(userId);
+        //创建老师账户
+        sysUserDao.createUserAccount(userId);
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void saveTeacher(Long userId) {
 
         sysUserDao.saveTeacher(userId);
+        //创建老师账户
+        sysUserDao.createUserAccount(userId);
     }
 
     @Override

+ 25 - 20
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/web/controller/UserController.java

@@ -1,19 +1,5 @@
 package com.yonge.cooleshow.auth.web.controller;
 
-import com.alibaba.druid.sql.PagerUtils;
-import com.yonge.cooleshow.auth.api.dto.RealnameAuthReq;
-import com.yonge.cooleshow.auth.api.dto.UpdatePasswordDto;
-import com.yonge.cooleshow.auth.api.dto.UserSetReq;
-import com.yonge.cooleshow.auth.api.entity.SysRole;
-import com.yonge.cooleshow.auth.api.vo.UserSetVo;
-import com.yonge.cooleshow.auth.service.SysConfigService;
-import com.yonge.cooleshow.common.constant.CommonConstants;
-import com.yonge.cooleshow.common.constant.SysConfigConstant;
-import com.yonge.cooleshow.common.page.PageInfo;
-import com.yonge.toolset.thirdparty.user.realname.RealnameAuthenticationPlugin;
-import com.yonge.toolset.utils.idcard.IdcardInfoExtractor;
-import com.yonge.toolset.utils.idcard.IdcardValidator;
-import com.yonge.toolset.utils.string.StringUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
@@ -22,6 +8,8 @@ import io.swagger.annotations.ApiOperation;
 import java.util.Date;
 import java.util.List;
 
+import javax.validation.Valid;
+
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -29,24 +17,40 @@ import org.springframework.http.HttpStatus;
 import org.springframework.http.MediaType;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
 
+import com.yonge.cooleshow.auth.api.dto.RealnameAuthReq;
+import com.yonge.cooleshow.auth.api.dto.SysUserQueryInfo;
+import com.yonge.cooleshow.auth.api.dto.UpdatePasswordDto;
+import com.yonge.cooleshow.auth.api.dto.UserSetReq;
+import com.yonge.cooleshow.auth.api.entity.SysRole;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.auth.api.vo.UserSetVo;
+import com.yonge.cooleshow.auth.service.SysConfigService;
 import com.yonge.cooleshow.auth.service.SysRoleService;
 import com.yonge.cooleshow.auth.service.SysUserRoleService;
 import com.yonge.cooleshow.auth.service.SysUserService;
-import com.yonge.cooleshow.auth.api.dto.SysUserQueryInfo;
+import com.yonge.cooleshow.auth.web.controller.queryInfo.RoleQueryInfo;
+import com.yonge.cooleshow.common.constant.CommonConstants;
+import com.yonge.cooleshow.common.constant.SysConfigConstant;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.exception.BizException;
-import com.yonge.cooleshow.common.page.QueryInfo;
 import com.yonge.cooleshow.common.security.AuthUser;
 import com.yonge.cooleshow.common.security.SecurityConstants;
 import com.yonge.cooleshow.common.security.SecurityUtils;
 import com.yonge.cooleshow.common.service.IdGeneratorService;
+import com.yonge.toolset.thirdparty.user.realname.RealnameAuthenticationPlugin;
 import com.yonge.toolset.utils.date.DateUtil;
-
-import javax.validation.Valid;
+import com.yonge.toolset.utils.idcard.IdcardInfoExtractor;
+import com.yonge.toolset.utils.idcard.IdcardValidator;
+import com.yonge.toolset.utils.string.StringUtil;
 
 @RestController()
 @RequestMapping("user")
@@ -419,8 +423,9 @@ public class UserController extends BaseController {
         if (user != null) {
             SysUser sysUser = sysUserService.get(user.getUserId());
             if (sysUser.getIsSuperAdmin()) {
-                QueryInfo queryInfo = new QueryInfo();
+            	RoleQueryInfo queryInfo = new RoleQueryInfo();
                 queryInfo.setRows(9999);
+                queryInfo.setIsEnable(true);
                 return succeed(sysRoleService.queryPage(queryInfo).getRows());
             }
             return succeed(sysRoleService.findRoleByUserId(user.getUserId()));

+ 16 - 0
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/web/controller/queryInfo/RoleQueryInfo.java

@@ -0,0 +1,16 @@
+package com.yonge.cooleshow.auth.web.controller.queryInfo;
+
+import com.yonge.cooleshow.common.page.QueryInfo;
+
+public class RoleQueryInfo extends QueryInfo {
+
+	private Boolean isEnable;
+
+	public Boolean getIsEnable() {
+		return isEnable;
+	}
+
+	public void setIsEnable(Boolean isEnable) {
+		this.isEnable = isEnable;
+	}
+}

+ 9 - 7
cooleshow-auth/auth-server/src/main/resources/config/mybatis/SysRoleMapper.xml

@@ -68,11 +68,12 @@
     <!-- 分页查询 -->
     <select id="queryPage" resultMap="SysRole" parameterType="map">
         SELECT * FROM sys_role WHERE del_flag_ = 0
-        <where>
         	<if test="search != null and search != ''">
-        		role_name_ like CONCAT('%',#{search},'%')
+        		and role_name_ like CONCAT('%',#{search},'%')
+        	</if>
+        	<if test="isEnable != null">
+        		and is_enable_ = #{isEnable}
         	</if>
-        </where>
         ORDER BY update_time_ DESC
         <include refid="global.limit"/>
     </select>
@@ -80,15 +81,16 @@
     <!-- 查询当前表的总记录数 -->
     <select id="queryCount" resultType="int">
 		SELECT COUNT(*) FROM sys_role WHERE del_flag_ = 0
-        <where>
         	<if test="search != null and search != ''">
-        		role_name_ like CONCAT('%',#{search},'%')
+        		and role_name_ like CONCAT('%',#{search},'%')
+        	</if>
+        	<if test="isEnable != null">
+        		and is_enable_ = #{isEnable}
         	</if>
-        </where>
 	</select>
 
     <select id="findRoleByUserId" resultMap="SysRole">
-		SELECT sr.* FROM sys_user_role sur LEFT JOIN sys_role sr ON sur.role_id_ = sr.id_ WHERE sur.user_id_ = #{userId} AND sr.del_flag_ = 0
+		SELECT sr.* FROM sys_user_role sur LEFT JOIN sys_role sr ON sur.role_id_ = sr.id_ WHERE sur.user_id_ = #{userId} and sr.is_enable_ = 1 AND sr.del_flag_ = 0
 	</select>
 
     <select id="findRoleByCode" resultMap="SysRole">

+ 1 - 1
cooleshow-auth/auth-server/src/main/resources/config/mybatis/SysUserRoleMapper.xml

@@ -48,7 +48,7 @@
 		SELECT COUNT(*) FROM sys_user_role
 	</select>
 
-    <select id="queryRoleIdListByUserId" resultType="int" parameterType="long">
+    <select id="queryRoleIdListByUserId" resultType="long" parameterType="long">
 		SELECT ur.role_id_ FROM sys_user_role ur left join sys_role r on ur.role_id_ = r.id_ where ur.user_id_ = #{userId} and r.del_flag_ = 0
 	</select>
 

+ 12 - 0
cooleshow-common/src/main/java/com/yonge/cooleshow/common/controller/BaseController.java

@@ -62,6 +62,9 @@ public class BaseController {
 	public static <T> HttpResponseResult<T> failed(HttpStatus statusCode, String msg) {
 		return getResponseData(false, statusCode, null, msg);
 	}
+	public static <T> HttpResponseResult<T> failed(int code, String msg) {
+		return getResponseData(false, code, null, msg);
+	}
 
 	public static <T> HttpResponseResult<T> status(boolean flag) {
 			return flag ? succeed() : failed("操作失败");
@@ -80,6 +83,15 @@ public class BaseController {
 		return obj;
 	}
 
+	private static <T> HttpResponseResult<T> getResponseData(boolean status, int code, T data, String message) {
+		HttpResponseResult<T> obj = new HttpResponseResult<T>();
+		obj.setStatus(status);
+		obj.setCode(code);
+		obj.setData(data);
+		obj.setMsg(message);
+		return obj;
+	}
+
 	/**
 	 * 处理一般异常
 	 *

+ 3 - 0
cooleshow-common/src/main/java/com/yonge/cooleshow/common/entity/HttpResponseResult.java

@@ -126,6 +126,9 @@ public class HttpResponseResult<T> {
 	public static <T> HttpResponseResult<T> failed(HttpStatus statusCode, T data, String msg) {
 		return getResponseData(false, statusCode, data, msg);
 	}
+	public static <T> HttpResponseResult<T> failed(int code, T data, String msg) {
+		return new HttpResponseResult<>(false, code, data, msg);
+	}
 
 	private static <T> HttpResponseResult<T> getResponseData(boolean status, HttpStatus statusCode, T data, String message) {
 		HttpResponseResult<T> obj = new HttpResponseResult<T>();

+ 2 - 0
cooleshow-task/src/main/java/com/yonge/cooleshow/task/jobs/PollingOrderTask.java

@@ -4,12 +4,14 @@ import com.yonge.cooleshow.task.core.BaseTask;
 import com.yonge.cooleshow.task.core.TaskException;
 import com.yonge.cooleshow.task.feign.StudentFeignService;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
 
 /**
  * 订单轮询
  * @Author: liweifan
  * @Data: 2022/4/13 17:36
  */
+@Service
 public class PollingOrderTask extends BaseTask {
 
     @Autowired

+ 54 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/ImGroupController.java

@@ -0,0 +1,54 @@
+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.entity.ImGroup;
+import com.yonge.cooleshow.biz.dal.service.ImGroupService;
+import com.yonge.cooleshow.common.controller.BaseController;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import io.swagger.annotations.*;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 即时通讯群组(ImGroup)表控制层
+ *
+ * @author zx
+ * @since 2022-03-22 10:45:56
+ */
+@Api(tags = "即时通讯群组")
+@RestController
+@RequestMapping("/imGroup")
+public class ImGroupController extends BaseController {
+    /**
+     * 服务对象
+     */
+    @Resource
+    private ImGroupService imGroupService;
+    @Resource
+    private SysUserFeignService sysUserFeignService;
+
+    @ApiOperation("获取群详情")
+    @PostMapping(value = "/getDetail/{groupId}")
+    @PreAuthorize("@pcs.hasPermissions('imGroup/detail')")
+    public HttpResponseResult<ImGroup> getDetail(@ApiParam(value = "群编号", required = true) @PathVariable("groupId") Long groupId) throws Exception {
+        return succeed(imGroupService.getById(groupId));
+    }
+
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "search", dataType = "String", value = "根据群名称、编号、简介模糊查询"),
+    })
+    @ApiOperation("群列表")
+    @PostMapping(value = "/queryAll")
+    @PreAuthorize("@pcs.hasPermissions('imGroup/queryAll')")
+    public HttpResponseResult<List<ImGroup>> queryAll(@RequestBody Map<String,Object> params) throws Exception {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        params.put("userId",sysUser.getId());
+        return succeed(imGroupService.queryAll(params));
+    }
+}
+

+ 1 - 1
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/SubjectController.java

@@ -72,7 +72,7 @@ public class SubjectController extends BaseController {
 
 	@ApiOperation(value = "删除指定声部")
 	@PostMapping("/delete/{id}")
-	@PreAuthorize("@pcs.hasPermissions('subject/get')")
+	@PreAuthorize("@pcs.hasPermissions('subject/delete')")
 	public HttpResponseResult<Subject> delete(@ApiParam(value = "声部编号", required = true) @PathVariable("id") Long id) {
 		subjectService.deleteById(id);
 		return succeed();

+ 0 - 49
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/UserAccountController.java

@@ -34,53 +34,4 @@ public class UserAccountController extends BaseController {
     public HttpResponseResult<UserAccountVo> detail(@PathVariable("id") Long id) {
     	return succeed(userAccountService.detail(id));
 	}
-    
-    /**
-     * 查询分页
-     */
-    @PostMapping("/page")
-    @ApiOperation(value = "查询分页", notes = "传入userAccountSearch")
-    public HttpResponseResult<PageInfo<UserAccountVo>> page(@RequestBody UserAccountSearch query) {
-		IPage<UserAccountVo> pages = userAccountService.selectPage(PageUtil.getPage(query), query);
-        return succeed(PageUtil.pageInfo(pages));
-	}
-    
-    /**
-	 * 新增
-	 */
-	@PostMapping("/save")
-	@ApiOperation(value = "新增", notes = "传入userAccount")
-	public HttpResponseResult save(@Valid @RequestBody UserAccount userAccount) {
-    	return status(userAccountService.save(userAccount));
-	}
-    
-    /**
-	 * 修改
-	 */
-	@PostMapping("/update")
-	@ApiOperation(value = "修改", notes = "传入userAccount")
-	public HttpResponseResult update(@Valid @RequestBody UserAccount userAccount) {
-        return status(userAccountService.updateById(userAccount));
-	}
-    
-    /**
-	 * 新增或修改
-	 */
-    @PostMapping("/submit")
-    @ApiOperation(value = "新增或修改", notes = "传入userAccount")
-	public HttpResponseResult submit(@Valid @RequestBody UserAccount userAccount) {
-        return status(userAccountService.saveOrUpdate(userAccount));
-    }
-
- 	/**
-	 * 删除
-	 */
-	@PostMapping("/remove")
-	@ApiOperation(value = "逻辑删除", notes = "传入ids")
-	public HttpResponseResult remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
-        if (StringUtil.isEmpty(ids)) {
-			return failed("参数不能为空");
-		}
-		return status(userAccountService.removeByIds(StringUtil.toLongList(ids)));
-	}
 }

+ 0 - 39
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/UserAccountRecordController.java

@@ -44,43 +44,4 @@ public class UserAccountRecordController extends BaseController {
 		IPage<UserAccountRecordVo> pages = userAccountRecordService.selectPage(PageUtil.getPage(query), query);
         return succeed(PageUtil.pageInfo(pages));
 	}
-    
-    /**
-	 * 新增
-	 */
-	@PostMapping("/save")
-	@ApiOperation(value = "新增", notes = "传入userAccountRecord")
-	public HttpResponseResult save(@Valid @RequestBody UserAccountRecord userAccountRecord) {
-    	return status(userAccountRecordService.save(userAccountRecord));
-	}
-    
-    /**
-	 * 修改
-	 */
-	@PostMapping("/update")
-	@ApiOperation(value = "修改", notes = "传入userAccountRecord")
-	public HttpResponseResult update(@Valid @RequestBody UserAccountRecord userAccountRecord) {
-        return status(userAccountRecordService.updateById(userAccountRecord));
-	}
-    
-    /**
-	 * 新增或修改
-	 */
-    @PostMapping("/submit")
-    @ApiOperation(value = "新增或修改", notes = "传入userAccountRecord")
-	public HttpResponseResult submit(@Valid @RequestBody UserAccountRecord userAccountRecord) {
-        return status(userAccountRecordService.saveOrUpdate(userAccountRecord));
-    }
-
- 	/**
-	 * 删除
-	 */
-	@PostMapping("/remove")
-	@ApiOperation(value = "逻辑删除", notes = "传入ids")
-	public HttpResponseResult remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
-        if (StringUtil.isEmpty(ids)) {
-			return failed("参数不能为空");
-		}
-		return status(userAccountRecordService.removeByIds(StringUtil.toLongList(ids)));
-	}
 }

+ 6 - 7
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/UserWithdrawalController.java

@@ -7,6 +7,7 @@ import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.excel.UserWithdrawalExport;
 import com.yonge.cooleshow.biz.dal.enums.AuditStatusEnum;
 import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
+import com.yonge.cooleshow.biz.dal.enums.BizHttpStatus;
 import com.yonge.cooleshow.biz.dal.support.PageUtil;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
@@ -68,7 +69,7 @@ public class UserWithdrawalController extends BaseController {
         List<UserWithdrawalVo> withdrawalVoList = userWithdrawalService.selectList(query);
         List<UserWithdrawalExport> list = new ArrayList<>();
         withdrawalVoList.forEach(o -> {
-            if(AuthStatusEnum.PASS.equals(o.getStatus())){
+            if (AuthStatusEnum.PASS.equals(o.getStatus())) {
                 return;
             }
             UserWithdrawalExport export = new UserWithdrawalExport();
@@ -104,14 +105,12 @@ public class UserWithdrawalController extends BaseController {
         if (user == null || null == user.getId()) {
             return failed(HttpStatus.FORBIDDEN, "请登录");
         }
-        ExcelDataReader<UserWithdrawalExport> reader = ExcelUtils.getReader(UserWithdrawalExport.class, file);
         try {
-            userWithdrawalService.importExcel(reader.getDataList(),user.getId());
+            ExcelDataReader<UserWithdrawalExport> reader = ExcelUtils.getReader(UserWithdrawalExport.class, file);
+            userWithdrawalService.importExcel(reader.getDataList(), user.getId());
             return HttpResponseResult.succeed();
-        }catch (ExcelException e){
-            return HttpResponseResult.failed(HttpStatus.INTERNAL_SERVER_ERROR,e.getErrMsgList(),"导入文件异常");
+        } catch (ExcelException e) {
+            return HttpResponseResult.failed(BizHttpStatus.EXPORT.getCode(), e.getErrMsgList(), BizHttpStatus.EXPORT.getMsg());
         }
     }
-
-
 }

+ 6 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseScheduleDao.java

@@ -120,5 +120,11 @@ public interface CourseScheduleDao extends BaseMapper<CourseSchedule> {
 
     //根据课程id修改时间
     void courseAdjust(CourseAdjustVo adjustVo);
+
+    //学生端-首页-直播课
+    List<StudentHomePage.Live> selectLive();
+
+    //学生端-首页-视频课
+    List<StudentHomePage.Video> selectVideo();
 }
 

+ 6 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseScheduleStudentPaymentDao.java

@@ -2,6 +2,8 @@ package com.yonge.cooleshow.biz.dal.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.yonge.cooleshow.biz.dal.entity.CourseScheduleStudentPayment;
+import com.yonge.cooleshow.biz.dal.entity.CourseScheduleTeacherSalary;
+import com.yonge.cooleshow.biz.dal.vo.CourseScheduleStudentPaymentVo;
 import com.yonge.cooleshow.biz.dal.vo.LiveCourseInfoVo;
 import org.apache.ibatis.annotations.Param;
 
@@ -36,6 +38,10 @@ public interface CourseScheduleStudentPaymentDao extends BaseMapper<CourseSchedu
      */
     List<LiveCourseInfoVo.CourseBuyStudentVo> queryStudentInfoByGroupId(@Param("groupId") Long groupId);
 
+    //查询所有购买陪练课用户id
     List<Long> selectAll();
+
+    //根据查询锁定中的课程
+    List<CourseScheduleStudentPaymentVo> selectPaymentList(String orderNo);
 }
 

+ 0 - 4
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ImGroupDao.java

@@ -15,10 +15,6 @@ import java.util.Map;
  */
 public interface ImGroupDao extends BaseMapper<ImGroup> {
 
-    int insertBatch(@Param("entities") List<ImGroup> entities);
-
-    ImGroup getLock(@Param("groupId") Long groupId);
-
     List<ImGroup> findAll(Map<String, Object> params);
 }
 

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ImGroupMemberAuditDao.java

@@ -28,6 +28,6 @@ public interface ImGroupMemberAuditDao extends BaseMapper<ImGroupMemberAudit> {
 
     List<ImGroupMemberAudit> findByIds(@Param("auditIds") String auditIds);
 
-    void delByGroupId(@Param("groupId") Long groupId);
+    void delByGroupId(@Param("groupId") String groupId);
 }
 

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

@@ -19,7 +19,7 @@ public interface ImGroupMemberDao extends BaseMapper<ImGroupMember> {
 
     int insertBatch(@Param("entities") List<ImGroupMember> entities);
 
-    void delByGroupId(@Param("groupId") Long groupId);
+    void delByGroupId(@Param("groupId") String groupId);
 
     ImGroupMember findOne(Map<String, Object> params);
 
@@ -30,7 +30,7 @@ public interface ImGroupMemberDao extends BaseMapper<ImGroupMember> {
     * @author zx
     * @date 2022/3/23 15:17
     */
-    List<GroupMember> queryGroupMember(@Param("groupId") Long groupId);
+    List<GroupMember> queryGroupMember(@Param("groupId") String groupId);
 
     /**
      * @description: 获取群成员列表
@@ -41,10 +41,10 @@ public interface ImGroupMemberDao extends BaseMapper<ImGroupMember> {
      * @author zx
      * @date 2022/3/23 17:08
      */
-    List<ImGroupMember> initImGroupMember(@Param("imGroupId") Long imGroupId,
+    List<ImGroupMember> initImGroupMember(@Param("imGroupId") String imGroupId,
                                            @Param("userIds") Set<Long> userIds,
                                            @Param("roleType") String roleType);
 
-    ImGroupMember findByUserIdAndGroupId(@Param("userId") Long userId, @Param("groupId") Long groupId);
+    ImGroupMember findByUserIdAndGroupId(@Param("userId") Long userId, @Param("groupId") String groupId);
 }
 

+ 1 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/LiveRoomDao.java

@@ -17,5 +17,6 @@ public interface LiveRoomDao extends BaseMapper<LiveRoom> {
 
     int insertBatch(@Param("entities") List<LiveRoom> entities);
 
+    LiveRoom getliveingRoomBySpeakerId(@Param("speakerId") Long speakerId);
 }
 

+ 2 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/SubjectDao.java

@@ -1,12 +1,10 @@
 package com.yonge.cooleshow.biz.dal.dao;
 
 import java.util.List;
-import java.util.Map;
 
 import org.apache.ibatis.annotations.Param;
 
 import com.yonge.cooleshow.biz.dal.entity.Subject;
-import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
 import com.yonge.cooleshow.common.dal.BaseDAO;
 
 public interface SubjectDao extends BaseDAO<Long, Subject> {
@@ -45,4 +43,6 @@ public interface SubjectDao extends BaseDAO<Long, Subject> {
 
     //根据声部id查详情
     Subject selectSubjectById(String lessonSubject);
+    
+    Subject queryByName(String name);
 }

+ 0 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/req/OrderReq.java

@@ -1,6 +1,5 @@
 package com.yonge.cooleshow.biz.dal.dto.req;
 
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.yonge.cooleshow.biz.dal.enums.GoodTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.OrderTypeEnum;
 import io.swagger.annotations.ApiModel;

+ 9 - 8
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/OrderSearch.java

@@ -9,6 +9,7 @@ import io.swagger.annotations.ApiModelProperty;
 import org.springframework.format.annotation.DateTimeFormat;
 
 import java.util.Date;
+import java.util.List;
 
 /**
  * @Author: liweifan
@@ -19,10 +20,10 @@ public class OrderSearch extends QueryInfo{
 	private static final long serialVersionUID = 1L;
 	@ApiModelProperty("交易流水号/订单号")
 	private String searchNo;
-	@ApiModelProperty("订单类型:  VIP、开通会员  PRACTICE、陪练课购买  LIVE、直播课购买 VIDEO、视频课购买 MUSIC、单曲点播")
-	private OrderTypeEnum orderType;
-	@ApiModelProperty("订单状态 WAIT_PAY 待支付 PAYING 支付中  PAID 已付款 CLOSE 已关闭 FAIL 支付失败")
-	private OrderStatusEnum status;
+	@ApiModelProperty("订单类型:  VIP、开通会员  PRACTICE、陪练课购买  LIVE、直播课购买 VIDEO、视频课购买 MUSIC、单曲点播 (多选用,分割)")
+	private String orderType;
+	@ApiModelProperty("订单状态 WAIT_PAY 待支付 PAYING 支付中  PAID 已付款 CLOSE 已关闭 FAIL 支付失败 (多选用,分割)")
+	private String status;
 	@ApiModelProperty(value = "交易开始时间")
 	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
 	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@@ -47,19 +48,19 @@ public class OrderSearch extends QueryInfo{
 		this.searchNo = searchNo;
 	}
 
-	public OrderTypeEnum getOrderType() {
+	public String getOrderType() {
 		return orderType;
 	}
 
-	public void setOrderType(OrderTypeEnum orderType) {
+	public void setOrderType(String orderType) {
 		this.orderType = orderType;
 	}
 
-	public OrderStatusEnum getStatus() {
+	public String getStatus() {
 		return status;
 	}
 
-	public void setStatus(OrderStatusEnum status) {
+	public void setStatus(String status) {
 		this.status = status;
 	}
 

+ 67 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/UserAccountRecordSearch.java

@@ -1,7 +1,15 @@
 package com.yonge.cooleshow.biz.dal.dto.search;
 
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.yonge.cooleshow.biz.dal.enums.AccountBizTypeEnum;
+import com.yonge.cooleshow.biz.dal.enums.InOrOutEnum;
 import com.yonge.cooleshow.common.page.QueryInfo;
 import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
 
 /**
  * @Author: liweifan
@@ -9,6 +17,65 @@ import io.swagger.annotations.ApiModel;
  */
 @ApiModel(value = "UserAccountRecordSearch对象", description = "用户账户流水表查询对象")
 public class UserAccountRecordSearch extends QueryInfo{
+
 	private static final long serialVersionUID = 1L;
 
+	@ApiModelProperty("用户id ")
+	private Long userId;
+
+	@ApiModelProperty("收支类型:IN、收入 OUT、支出 ")
+	private InOrOutEnum inOrOut;
+
+	@ApiModelProperty("业务类型:PRACTICE、陪练课 LIVE、直播课 MUSIC、乐谱 WITHDRAWAL、提现 ")
+	private AccountBizTypeEnum bizType;
+
+	@ApiModelProperty(value = "交易开始时间")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+	private Date startTime;
+
+	@ApiModelProperty(value = "交易结束时间")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+	private Date endTime;
+
+	public Long getUserId() {
+		return userId;
+	}
+
+	public void setUserId(Long userId) {
+		this.userId = userId;
+	}
+
+	public InOrOutEnum getInOrOut() {
+		return inOrOut;
+	}
+
+	public void setInOrOut(InOrOutEnum inOrOut) {
+		this.inOrOut = inOrOut;
+	}
+
+	public AccountBizTypeEnum getBizType() {
+		return bizType;
+	}
+
+	public void setBizType(AccountBizTypeEnum bizType) {
+		this.bizType = bizType;
+	}
+
+	public Date getStartTime() {
+		return startTime;
+	}
+
+	public void setStartTime(Date startTime) {
+		this.startTime = startTime;
+	}
+
+	public Date getEndTime() {
+		return endTime;
+	}
+
+	public void setEndTime(Date endTime) {
+		this.endTime = endTime;
+	}
 }

+ 5 - 5
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ImGroup.java

@@ -21,10 +21,10 @@ import java.util.Date;
  */
 @ApiModel(value = "im_group-即时通讯群组")
 public class ImGroup implements Serializable {
-    @TableId(value = "id_", type = IdType.AUTO)
-    @NotNull(message = "群编号不可为空")
+    @TableId(value = "id_")
+    @NotBlank(message = "群编号不可为空")
     @ApiModelProperty(value = "主键;")
-    private Long id;
+    private String id;
 
     @NotBlank(message = "群名称不能为空")
     @TableField("name_")
@@ -103,11 +103,11 @@ public class ImGroup implements Serializable {
         this.createBy = createBy;
     }
 
-    public Long getId() {
+    public String getId() {
         return id;
     }
 
-    public void setId(Long id) {
+    public void setId(String id) {
         this.id = id;
     }
 

+ 4 - 4
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ImGroupMember.java

@@ -25,7 +25,7 @@ public class ImGroupMember implements Serializable {
 
     @TableField("group_id_")
     @ApiModelProperty(value = "群编号;")
-    private Long groupId;
+    private String groupId;
 
     @TableField("user_id_")
     @ApiModelProperty(value = "用户编号;")
@@ -58,7 +58,7 @@ public class ImGroupMember implements Serializable {
     public ImGroupMember() {
     }
 
-    public ImGroupMember(Long groupId, Long userId, String nickname, String avatar, Boolean isAdmin, ImGroupMemberRoleType roleType) {
+    public ImGroupMember(String groupId, Long userId, String nickname, String avatar, Boolean isAdmin, ImGroupMemberRoleType roleType) {
         this.groupId = groupId;
         this.userId = userId;
         this.avatar = avatar;
@@ -103,11 +103,11 @@ public class ImGroupMember implements Serializable {
         this.id = id;
     }
 
-    public Long getGroupId() {
+    public String getGroupId() {
         return groupId;
     }
 
-    public void setGroupId(Long groupId) {
+    public void setGroupId(String groupId) {
         this.groupId = groupId;
     }
 

+ 5 - 4
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ImGroupMemberAudit.java

@@ -8,6 +8,7 @@ import com.yonge.cooleshow.biz.dal.enums.AuditStatusEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
+import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 import java.util.Date;
@@ -33,9 +34,9 @@ public class ImGroupMemberAudit implements Serializable {
     private ImGroupMember.ImGroupMemberRoleType roleType;
 
     @TableField("group_id_")
-    @NotNull(message = "群编号不可为空")
+    @NotBlank(message = "群编号不可为空")
     @ApiModelProperty(value = "群组编号")
-    private Long groupId;
+    private String groupId;
 
     @TableField("desc_")
     @ApiModelProperty(value = "申请原因")
@@ -78,11 +79,11 @@ public class ImGroupMemberAudit implements Serializable {
         this.roleType = roleType;
     }
 
-    public Long getGroupId() {
+    public String getGroupId() {
         return groupId;
     }
 
-    public void setGroupId(Long groupId) {
+    public void setGroupId(String groupId) {
         this.groupId = groupId;
     }
 

+ 4 - 4
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ImGroupNotice.java

@@ -26,9 +26,9 @@ public class ImGroupNotice implements Serializable {
     private Long id;
 
     @TableField("group_id_")
-    @NotNull(message = "群编号不可为空")
+    @NotBlank(message = "群编号不可为空")
     @ApiModelProperty(value = "群编号;")
-    private Long groupId;
+    private String groupId;
 
     @TableField("title_")
     @NotBlank(message = "公告标题不可为空")
@@ -72,11 +72,11 @@ public class ImGroupNotice implements Serializable {
         this.id = id;
     }
 
-    public Long getGroupId() {
+    public String getGroupId() {
         return groupId;
     }
 
-    public void setGroupId(Long groupId) {
+    public void setGroupId(String groupId) {
         this.groupId = groupId;
     }
 

+ 10 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/MemberPriceSettings.java

@@ -35,6 +35,8 @@ public class MemberPriceSettings {
 	@ApiModelProperty(value = "更新人",required = false)
 	private Long updateBy;
 	
+	private String modifierName;
+	
 	public MemberPriceSettings setId(Integer id){
 		this.id = id;
 		return this;
@@ -107,6 +109,14 @@ public class MemberPriceSettings {
 		return this.updateBy;
 	}
 			
+	public String getModifierName() {
+		return modifierName;
+	}
+
+	public void setModifierName(String modifierName) {
+		this.modifierName = modifierName;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/UserAccountRecord.java

@@ -37,7 +37,7 @@ public class UserAccountRecord implements Serializable {
     @ApiModelProperty("收支类型:IN、收入 OUT、支出 ")
     @TableField(value = "in_or_out_")
     private InOrOutEnum inOrOut;
-    @ApiModelProperty("业务类型:PRACTICE、陪练课 LIVE、直播课 MUSIC、乐谱 WITHDRAWAL、提现 ")
+    @ApiModelProperty("业务类型:PRACTICE、陪练课 LIVE、直播课  MUSIC、乐谱 WITHDRAWAL、提现 ")
     @TableField(value = "biz_type_")
     private AccountBizTypeEnum bizType;
     @ApiModelProperty("业务id ")

+ 2 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/AccountBizTypeEnum.java

@@ -5,6 +5,7 @@ import com.yonge.cooleshow.common.enums.BaseEnum;
 
 /**
  * 账户流水枚举
+ *
  * @Author: liweifan
  * @Data: 2022/4/7 15:48
  */
@@ -12,6 +13,7 @@ public enum AccountBizTypeEnum implements BaseEnum<String, AccountBizTypeEnum> {
 
     PRACTICE("陪练课", InOrOutEnum.IN),
     LIVE("直播课", InOrOutEnum.IN),
+    VIDEO("视频课", InOrOutEnum.IN),
     MUSIC("乐谱", InOrOutEnum.IN),
     WITHDRAWAL("提现", InOrOutEnum.OUT);
     @EnumValue

+ 26 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/BizHttpStatus.java

@@ -0,0 +1,26 @@
+package com.yonge.cooleshow.biz.dal.enums;
+
+/**
+ * @Author: liweifan
+ * @Data: 2022/4/22 18:06
+ */
+public enum BizHttpStatus {
+    EXPORT(450, "导出异常"),
+    ;
+
+    private final int code;
+    private final String msg;
+
+    private BizHttpStatus(int code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    public int getCode() {
+        return code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+}

+ 3 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseScheduleService.java

@@ -180,8 +180,10 @@ public interface CourseScheduleService extends IService<CourseSchedule> {
 
     void buyPracticeCourseSuccess(UserOrderDetailVo orderParam);
 
-    void buyPracticeCourseFailed(String orderNo);
+    void buyPracticeCourseFailed(UserOrderDetailVo orderParam);
 
     void courseAdjust(CourseAdjustVo adjustVo);
+
+    StudentHomePage queryLiveAndVideo();
 }
 

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ImGroupMemberAuditService.java

@@ -37,7 +37,7 @@ public interface ImGroupMemberAuditService extends IService<ImGroupMemberAudit>
     * @author zx
     * @date 2022/3/22 19:58
     */
-    void applyAudit(String auditId, AuditStatusEnum auditStatus,Long groupId) throws Exception;
+    void applyAudit(String auditId, AuditStatusEnum auditStatus,String groupId) throws Exception;
 
     List<ImGroupMemberAudit> queryAll(ImGroupMemberAuditQueryInfo queryInfo);
 }

+ 5 - 5
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ImGroupMemberService.java

@@ -37,7 +37,7 @@ public interface ImGroupMemberService extends IService<ImGroupMember> {
     * @author zx
     * @date 2022/3/22 15:59
     */
-    List<GroupMember> initGroupMember(Long imGroupId, Long userId, Boolean isAdmin, ImGroupMember.ImGroupMemberRoleType roleType) throws Exception;
+    List<GroupMember> initGroupMember(String imGroupId, Long userId, Boolean isAdmin, ImGroupMember.ImGroupMemberRoleType roleType) throws Exception;
 
     /**
     * @description: 添加群成员
@@ -48,7 +48,7 @@ public interface ImGroupMemberService extends IService<ImGroupMember> {
     * @author zx
     * @date 2022/3/22 15:59
     */
-    List<GroupMember> initGroupMembers(Long imGroupId, Set<Long> userIds, ImGroupMember.ImGroupMemberRoleType roleType) throws Exception;
+    List<GroupMember> initGroupMembers(String imGroupId, Set<Long> userIds, ImGroupMember.ImGroupMemberRoleType roleType) throws Exception;
 
     /**
     * @description: 加入融云群
@@ -58,7 +58,7 @@ public interface ImGroupMemberService extends IService<ImGroupMember> {
     * @author zx
     * @date 2022/3/23 17:50
     */
-    void join(List<GroupMember> groupMemberList,Long imGroupId) throws Exception;
+    void join(List<GroupMember> groupMemberList,String imGroupId) throws Exception;
 
     /**
     * @description: 删除群成员
@@ -67,7 +67,7 @@ public interface ImGroupMemberService extends IService<ImGroupMember> {
     * @author zx
     * @date 2022/3/22 16:21
     */
-    void delByGroupId(Long groupId);
+    void delByGroupId(String groupId);
 
     /**
     * @description: 获取群成员基本信息
@@ -77,6 +77,6 @@ public interface ImGroupMemberService extends IService<ImGroupMember> {
     * @author zx
     * @date 2022/3/24 13:53
     */
-    ImGroupMember getUserDetail(Long userId, Long groupId);
+    ImGroupMember getUserDetail(Long userId, String groupId);
 }
 

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

@@ -39,7 +39,7 @@ public interface ImGroupService extends IService<ImGroup> {
     * @author zx
     * @date 2022/3/22 11:17
     */
-    void dismiss(Long groupId) throws Exception;
+    void dismiss(String groupId) throws Exception;
 
     /**
     * @description: 同步群成员数量
@@ -47,7 +47,7 @@ public interface ImGroupService extends IService<ImGroup> {
     * @author zx
     * @date 2022/3/22 11:17
     */
-    void syncGroupMemberNum(Long groupId) throws Exception;
+    void syncGroupMemberNum(String groupId) throws Exception;
 
     List<ImGroup> queryAll(Map<String, Object> params);
 }

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

@@ -86,5 +86,8 @@ public interface LiveRoomService extends IService<LiveRoom> {
      */
     Map<String, Object> test(String roomUid);
 
+
+    LiveRoom getliveingRoomBySpeakerId(Long speakerId);
+
 }
 

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

@@ -54,7 +54,6 @@ import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicInteger;
-import java.util.function.BiFunction;
 import java.util.function.Consumer;
 import java.util.function.Function;
 import java.util.stream.Collectors;
@@ -648,7 +647,7 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
         courseList.forEach(course -> {
             CourseScheduleTeacherSalary teacherSalary = new CourseScheduleTeacherSalary();
             teacherSalary.setTeacherId(course.getTeacherId());
-            teacherSalary.setStudentId(course.getTeacherId());
+            teacherSalary.setStudentId(studentPayment.getUserId());
             teacherSalary.setCourseScheduleId(course.getId());
             teacherSalary.setCourseGroupType(course.getType());
             teacherSalary.setCourseGroupId(course.getCourseGroupId());

+ 69 - 10
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseScheduleServiceImpl.java

@@ -21,6 +21,7 @@ import com.yonge.cooleshow.biz.dal.entity.*;
 import com.yonge.cooleshow.biz.dal.enums.CourseGroupEnum;
 import com.yonge.cooleshow.biz.dal.enums.CourseScheduleEnum;
 import com.yonge.cooleshow.biz.dal.enums.GoodTypeEnum;
+import com.yonge.cooleshow.biz.dal.enums.TeacherSalaryEnum;
 import com.yonge.cooleshow.biz.dal.service.*;
 import com.yonge.cooleshow.biz.dal.support.PageUtil;
 import com.yonge.cooleshow.biz.dal.support.WrapperUtil;
@@ -41,6 +42,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.time.LocalDate;
 import java.time.temporal.TemporalAdjusters;
 import java.util.*;
@@ -75,6 +77,8 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
     private CourseGroupService courseGroupService;
     @Autowired
     private CourseScheduleStudentPaymentService courseScheduleStudentPaymentService;
+    @Autowired
+    private CourseScheduleTeacherSalaryService courseScheduleTeacherSalaryService;
 
     @Override
     public CourseScheduleDao getDao() {
@@ -799,7 +803,29 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         pageInfo.setAsc(" cs.start_time_");
         return PageUtil.pageInfo(baseMapper.queryStudentLiveCourse(pageInfo, param));
     }
-
+    /**
+     * 计算课堂每节课价格
+     *
+     * @param totalCourseNum 总课程数
+     * @param totalRatePrice 总金额
+     * @return key 课堂数 value 课酬
+     */
+    private Map<Integer, BigDecimal> getCourseAveragePrice(Integer totalCourseNum, BigDecimal totalRatePrice) {
+        //每节课的单价 四舍五入
+        BigDecimal singerSalary = totalRatePrice.divide(BigDecimal.valueOf(totalCourseNum), 2, RoundingMode.HALF_UP);
+        //单价累计总额
+        BigDecimal cumulativeAmount = BigDecimal.ZERO;
+        Map<Integer, BigDecimal> map = new HashMap<>();
+        for (int i = 1; i <= totalCourseNum; i++) {
+            //最后一节课,直接用总课酬减去累计总额
+            if (i == totalCourseNum) {
+                singerSalary = totalRatePrice.subtract(cumulativeAmount);
+            }
+            cumulativeAmount = cumulativeAmount.add(singerSalary);
+            map.put(i, singerSalary);
+        }
+        return map;
+    }
     /**
      * @Description: 学生购买陪练课
      * @Author: cy
@@ -826,7 +852,9 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         baseMapper.addCourseGroup(scheduleDto);
         Long groupId = scheduleDto.getGroupId();
 
-        BigDecimal unitPrice = scheduleDto.getUnitPrice();
+        //获取每节课购买的价格
+        Map<Integer, BigDecimal> courseAveragePrice = getCourseAveragePrice(scheduleDto.getCourseNum(), scheduleDto.getCoursePrice());
+
         List<CourseScheduleDate> classTime = scheduleDto.getClassTime();
         for (int i = 0; i < classTime.size(); i++) {
             CourseScheduleDate date = classTime.get(i);
@@ -851,9 +879,9 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
             payment.setCourseGroupId(groupId);
             payment.setCourseType(CourseScheduleEnum.PRACTICE.getCode());
             payment.setOrderNo(orderNo);
-            payment.setOriginalPrice(unitPrice);
-            payment.setExpectPrice(unitPrice);
-            payment.setActualPrice(unitPrice);
+            payment.setOriginalPrice(courseAveragePrice.get(i+1));
+            payment.setExpectPrice(courseAveragePrice.get(i+1));
+            payment.setActualPrice(courseAveragePrice.get(i+1));
             //写入course_schedule_student_payment
             courseScheduleStudentPaymentService.save(payment);
         }
@@ -878,8 +906,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
     public void buyPracticeCourseSuccess(UserOrderDetailVo orderParam) {
         log.info("学生购买陪练课-成功-回调,请求参数:{}", JSON.toJSONString(orderParam));
         String orderNo = orderParam.getOrderNo();
-        List<CourseScheduleStudentPayment> paymentList = paymentDao.selectList(Wrappers.<CourseScheduleStudentPayment>lambdaQuery()
-                .eq(CourseScheduleStudentPayment::getOrderNo, orderNo));
+        List<CourseScheduleStudentPaymentVo> paymentList = paymentDao.selectPaymentList(orderNo);
         if (paymentList.isEmpty()) {
             throw new BizException("订单不存在!");
         }
@@ -887,13 +914,34 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         //course_schedule中lock_改为0
         List<Long> scheduleIds = paymentList.stream().map(CourseScheduleStudentPayment::getCourseId).collect(Collectors.toList());
         baseMapper.updateLock(scheduleIds);
+
+        //写course_schedule_teacher_salary
+        Date now = new Date();
+        List<CourseScheduleTeacherSalary> teacherSalaryList = new ArrayList<>();
+        for (CourseScheduleStudentPaymentVo payment : paymentList) {
+            CourseScheduleTeacherSalary teacherSalary = new CourseScheduleTeacherSalary();
+            teacherSalary.setTeacherId(payment.getTeacherId());
+            teacherSalary.setStudentId(payment.getUserId());
+            teacherSalary.setCourseScheduleId(payment.getCourseId());
+            teacherSalary.setCourseGroupType(payment.getCourseType());
+            teacherSalary.setCourseGroupId(payment.getCourseGroupId());
+            teacherSalary.setClassNum(payment.getClassNum());
+            teacherSalary.setExpectSalary(payment.getExpectPrice());
+            teacherSalary.setActualSalary(payment.getActualPrice());
+            teacherSalary.setReduceSalary(BigDecimal.ZERO);
+            teacherSalary.setStatus(TeacherSalaryEnum.NOT_START.getCode());
+            teacherSalaryList.add(teacherSalary);
+            teacherSalary.setCreateTime(now);
+        }
+        courseScheduleTeacherSalaryService.getDao().insertBatch(teacherSalaryList);
     }
 
     /**
      * 学生购买陪练课-失败-回调
      */
     @Transactional(rollbackFor = Exception.class)
-    public void buyPracticeCourseFailed(String orderNo) {
+    public void buyPracticeCourseFailed(UserOrderDetailVo orderParam) {
+        String orderNo = orderParam.getOrderNo();
         List<CourseScheduleStudentPayment> paymentList = paymentDao.selectList(Wrappers.<CourseScheduleStudentPayment>lambdaQuery()
                 .eq(CourseScheduleStudentPayment::getOrderNo, orderNo));
         if (paymentList.isEmpty()) {
@@ -924,5 +972,16 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         baseMapper.courseAdjust(adjustVo);
     }
 
-}
-
+    /**
+     * @Description: 学生-首页-直播课&视频课
+     * @Author: cy
+     * @Date: 2022/4/22
+     */
+    @Override
+    public StudentHomePage queryLiveAndVideo() {
+        StudentHomePage homePage = new StudentHomePage();
+        homePage.setLiveList(baseMapper.selectLive());
+        homePage.setVideoList(baseMapper.selectVideo());
+        return homePage;
+    }
+}

+ 1 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/EmployeeServiceImpl.java

@@ -59,6 +59,7 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Long, Employee> impleme
             //初始密码,手机号后6位
             String password = param.getPhone().substring(param.getPhone().length() - 6);
             sysUser.setPassword(new BCryptPasswordEncoder().encode(password));
+            sysUser.setGender(param.getGender().getCode());
             sysUser.setCreateTime(new Date());
             sysUser.setUpdateTime(new Date());
             employeeDao.insertSysUser(sysUser);

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

@@ -1,6 +1,5 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
@@ -13,9 +12,7 @@ import com.yonge.cooleshow.biz.dal.queryInfo.ImGroupMemberAuditQueryInfo;
 import com.yonge.cooleshow.biz.dal.service.ImGroupMemberAuditService;
 import com.yonge.cooleshow.biz.dal.service.ImGroupMemberService;
 import com.yonge.cooleshow.biz.dal.service.ImGroupService;
-import com.yonge.cooleshow.biz.dal.support.PageUtil;
 import com.yonge.cooleshow.common.exception.BizException;
-import com.yonge.cooleshow.common.page.PageInfo;
 import io.rong.models.group.GroupMember;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -52,7 +49,7 @@ public class ImGroupMemberAuditServiceImpl extends ServiceImpl<ImGroupMemberAudi
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void apply(ImGroupMemberAudit imGroupMemberAudit) throws Exception {
-        Long groupId = imGroupMemberAudit.getGroupId();
+        String groupId = imGroupMemberAudit.getGroupId();
         ImGroup imGroup = imGroupService.getById(groupId);
         if(Objects.isNull(imGroup)){
             throw new BizException("群组信息不存在");
@@ -92,7 +89,7 @@ public class ImGroupMemberAuditServiceImpl extends ServiceImpl<ImGroupMemberAudi
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void applyAudit(String auditIds, AuditStatusEnum auditStatus,Long groupId) throws Exception {
+    public void applyAudit(String auditIds, AuditStatusEnum auditStatus,String groupId) throws Exception {
         if(auditStatus == AuditStatusEnum.AUDITING ){
             throw new BizException("操作失败:审核状态异常");
         }

+ 8 - 8
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImGroupMemberServiceImpl.java

@@ -54,7 +54,7 @@ public class ImGroupMemberServiceImpl extends ServiceImpl<ImGroupMemberDao, ImGr
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public List<GroupMember> initGroupMember(Long imGroupId, Long userId, Boolean isAdmin, ImGroupMember.ImGroupMemberRoleType roleType) throws Exception {
+    public List<GroupMember> initGroupMember(String imGroupId, Long userId, Boolean isAdmin, ImGroupMember.ImGroupMemberRoleType roleType) throws Exception {
         //记录群成员
         BasicUserInfo basicUserInfo = teacherDao.getBasicUserInfo(userId);
         String username = roleType== ImGroupMember.ImGroupMemberRoleType.TEACHER?basicUserInfo.getRealName():basicUserInfo.getUsername();
@@ -65,13 +65,13 @@ public class ImGroupMemberServiceImpl extends ServiceImpl<ImGroupMemberDao, ImGr
         this.baseMapper.insert(imGroupMember);
         //加入融云群
         List<GroupMember> groupMemberList = new ArrayList<>();
-        groupMemberList.add(new GroupMember(userId.toString(),imGroupId.toString(),null));
+        groupMemberList.add(new GroupMember(userId.toString(),imGroupId,null));
         return groupMemberList;
     }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public List<GroupMember> initGroupMembers(Long imGroupId, Set<Long> userIds, ImGroupMember.ImGroupMemberRoleType roleType) throws Exception {
+    public List<GroupMember> initGroupMembers(String imGroupId, Set<Long> userIds, ImGroupMember.ImGroupMemberRoleType roleType) throws Exception {
         //记录群成员
         List<ImGroupMember> imGroupMembers = baseMapper.initImGroupMember(imGroupId,userIds,roleType.getCode());
         List<GroupMember> groupMemberList = new ArrayList<>();
@@ -79,7 +79,7 @@ public class ImGroupMemberServiceImpl extends ServiceImpl<ImGroupMemberDao, ImGr
             baseMapper.insertBatch(imGroupMembers);
             //加入融云群
             for (Long userId : userIds) {
-                groupMemberList.add(new GroupMember(userId.toString(),imGroupId.toString(),null));
+                groupMemberList.add(new GroupMember(userId.toString(),imGroupId,null));
             }
             return groupMemberList;
         }
@@ -87,9 +87,9 @@ public class ImGroupMemberServiceImpl extends ServiceImpl<ImGroupMemberDao, ImGr
     }
 
     @Transactional(rollbackFor = Exception.class)
-    public void join(List<GroupMember> groupMemberList,Long imGroupId) throws Exception {
+    public void join(List<GroupMember> groupMemberList,String imGroupId) throws Exception {
         GroupMember[] groupMembers = groupMemberList.toArray(new GroupMember[groupMemberList.size()]);
-        GroupModel groupModel = new GroupModel(imGroupId.toString(), 0);
+        GroupModel groupModel = new GroupModel(imGroupId, 0);
         groupModel.setMembers(groupMembers);
         ImGroup imGroup = imGroupDao.selectById(imGroupId);
         groupModel.setName(imGroup.getName());
@@ -102,12 +102,12 @@ public class ImGroupMemberServiceImpl extends ServiceImpl<ImGroupMemberDao, ImGr
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void delByGroupId(Long groupId) {
+    public void delByGroupId(String groupId) {
         this.baseMapper.delByGroupId(groupId);
     }
 
     @Override
-    public ImGroupMember getUserDetail(Long userId, Long groupId) {
+    public ImGroupMember getUserDetail(Long userId, String groupId) {
         ImGroupMember imGroupMember = baseMapper.findByUserIdAndGroupId(userId,groupId);
         if(Objects.isNull(imGroupMember)){
             throw new BizException("当前用户不在此群组");

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImGroupNoticeServiceImpl.java

@@ -85,7 +85,7 @@ public class ImGroupNoticeServiceImpl extends ServiceImpl<ImGroupNoticeDao, ImGr
         baseMapper.updateById(imGroupNotice);
     }
 
-    public Long checkAdmin(Long groupId){
+    public Long checkAdmin(String groupId){
         ImGroup imGroup = imGroupDao.selectById(groupId);
         if(Objects.isNull(imGroup)){
             throw new BizException("群信息不存在");

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

@@ -70,8 +70,9 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
         imGroup.setMemberNum(1);
         imGroup.setCreateTime(now);
         imGroup.setUpdateTime(now);
+        String imGroupId = UUID.randomUUID().toString() + imGroup.getType().getCode();
+        imGroup.setId(imGroupId);
         this.baseMapper.insert(imGroup);
-        Long imGroupId = imGroup.getId();
         //处理本地群成员列表
         List<GroupMember> groupMembers = imGroupMemberService.initGroupMember(imGroupId, imGroup.getCreateBy(), true, ImGroupMember.ImGroupMemberRoleType.TEACHER);
         //创建融云群
@@ -105,8 +106,9 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
         imGroup.setType(ImGroup.ImGroupType.COURSE);
         imGroup.setCreateTime(now);
         imGroup.setUpdateTime(now);
+        String imGroupId = UUID.randomUUID().toString() + imGroup.getType().getCode();
+        imGroup.setId(imGroupId);
         this.baseMapper.insert(imGroup);
-        Long imGroupId = imGroup.getId();
         //保存老师学员关联的通讯录
         imUserFriendService.saveUserFriend(teacherId,studentIds);
         //处理本地群成员列表
@@ -119,10 +121,10 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
     }
 
     //创建融云群
-    private void rtcCreate(Long userId,Long imGroupId,String imGroupName) throws Exception {
+    private void rtcCreate(Long userId,String imGroupId,String imGroupName) throws Exception {
         //创建融云群
-        GroupMember[] groupMembers = new GroupMember[]{new GroupMember(userId.toString(),imGroupId.toString(),null)};
-        GroupModel groupModel = new GroupModel(imGroupId.toString(),0);
+        GroupMember[] groupMembers = new GroupMember[]{new GroupMember(userId.toString(),imGroupId,null)};
+        GroupModel groupModel = new GroupModel(imGroupId,0);
         groupModel.setMembers(groupMembers);
         groupModel.setName(imGroupName);
         Result result = RongCloudConfig.rongCloud.group.create(groupModel);
@@ -134,7 +136,7 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void dismiss(Long groupId) throws Exception {
+    public void dismiss(String groupId) throws Exception {
         ImGroup imGroup = this.baseMapper.selectById(groupId);
         if(Objects.isNull(imGroup)){
             throw new BizException("操作失败:群组不存在");
@@ -152,7 +154,7 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
         //删除群成员
         imGroupMemberService.delByGroupId(groupId);
         //解散融云群
-        GroupModel groupModel = new GroupModel(groupId.toString(),0);
+        GroupModel groupModel = new GroupModel(groupId,0);
         GroupMember[] groupMembersArr = groupMembers.toArray(new GroupMember[groupMembers.size()]);
         groupModel.setMembers(groupMembersArr);
         Result result = RongCloudConfig.rongCloud.group.dismiss(groupModel);
@@ -164,7 +166,7 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void syncGroupMemberNum(Long groupId) throws Exception {
+    public void syncGroupMemberNum(String groupId) throws Exception {
         ImGroup imGroup = baseMapper.selectById(groupId);
         Integer memberNum = imGroupMemberService.getBaseMapper().
                 selectCount(new QueryWrapper<ImGroupMember>().eq("group_id_",groupId));

+ 5 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/LiveRoomServiceImpl.java

@@ -625,5 +625,10 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
         result.put("实时观看数", look);
         return result;
     }
+
+    @Override
+    public LiveRoom getliveingRoomBySpeakerId(Long speakerId) {
+        return baseMapper.getliveingRoomBySpeakerId(speakerId);
+    }
 }
 

+ 3 - 3
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/StudentServiceImpl.java

@@ -43,16 +43,16 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, Student> impleme
 
     @Override
     public StudentHomeVo queryUserInfo(SysUser user) {
-        Student student = getById(user.getId());
+        StudentVo detail = detail(user.getId());
         StudentHomeVo studentHomeVo = new StudentHomeVo();
         try {
-            BeanUtils.copyProperties(studentHomeVo, student);
+            BeanUtils.copyProperties(studentHomeVo, detail);
         } catch (Exception e) {
             e.printStackTrace();
         }
         studentHomeVo.setHeardUrl(user.getAvatar());
         studentHomeVo.setUsername(user.getUsername());
-        int num = DateUtil.daysBetween(new Date(), student.getMembershipEndTime());
+        int num = DateUtil.daysBetween(new Date(), detail.getMembershipEndTime());
         studentHomeVo.setMembershipDays(num < 0 ? 0 : num);
         StudentTotal total = (StudentTotal) redissonClient.getBucket(CacheNameEnum.STUDENT_TOTAL.getRedisKey(user.getId()))
                 .get();

+ 16 - 29
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/SubjectServiceImpl.java

@@ -11,8 +11,10 @@ import com.yonge.cooleshow.biz.dal.entity.Subject;
 import com.yonge.cooleshow.biz.dal.queryInfo.SubjectQueryInfo;
 import com.yonge.cooleshow.biz.dal.service.SubjectService;
 import com.yonge.cooleshow.common.dal.BaseDAO;
+import com.yonge.cooleshow.common.exception.BizException;
 import com.yonge.cooleshow.common.page.PageInfo;
 import com.yonge.cooleshow.common.service.impl.BaseServiceImpl;
+
 import org.springframework.util.CollectionUtils;
 
 @Service
@@ -51,16 +53,20 @@ public class SubjectServiceImpl extends BaseServiceImpl<Long, Subject> implement
 
 	@Override
     public void upSetSubject(Subject subject) {
-        if (subject.getDelFlag()) {
-            subjectDao.delete(subject.getId());
-            return;
-        }
-        Long parentId = upset(subject, null);
-        List<Subject> subjects = subject.getSubjects();
-        if (subjects != null && subjects.size() > 0) {
-            subjects.forEach(e -> {
-                upset(e, parentId);
-            });
+		
+		Subject orginSubject = subjectDao.queryByName(subject.getName());
+		
+		if(orginSubject != null){
+			if(orginSubject.getId() != subject.getId()){
+				throw new BizException("名称已存在,请修改名称");
+			}
+		}
+		
+		if (subject.getId() != null) {
+            subject.setUpdateTime(new Date());
+            subjectDao.update(subject);
+        } else {
+            subjectDao.insert(subject);
         }
     }
 
@@ -98,25 +104,6 @@ public class SubjectServiceImpl extends BaseServiceImpl<Long, Subject> implement
     }
 
     /***
-     * 新增、修改声部
-     * @param: subject
-     * @param: parentId
-     * @updateTime 2022/4/6 11:33
-     * @return: java.lang.Long
-     */
-    private Long upset(Subject subject, Long parentId) {
-        if (parentId != null) {
-            subject.setParentSubjectId(parentId);
-        }
-        if (subject.getId() != null) {
-            subject.setUpdateTime(new Date());
-            subjectDao.update(subject);
-        } else {
-            subjectDao.insert(subject);
-        }
-        return subject.getId();
-    }
-    /***
      * 查询声部树
      * @param: sub
      * @param: yesOrNoEnum

+ 11 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherServiceImpl.java

@@ -53,6 +53,8 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
     private RedissonClient redissonClient;
     @Autowired
     private SysConfigService sysConfigService;
+    @Autowired
+    private LiveRoomService liveRoomService;
 
     @Override
     public TeacherVo detail(Long userId) {
@@ -281,7 +283,15 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
 
     @Override
     public HttpResponseResult<TeacherVo> queryTeacherStyle(Long id) {
-        return HttpResponseResult.succeed(detail(id));
+        TeacherVo detail = detail(id);
+        LiveRoom liveRoom = liveRoomService.getliveingRoomBySpeakerId(id);
+        if(null == liveRoom){
+            detail.setRoomUid(liveRoom.getRoomUid());
+            detail.setLiveing(YesOrNoEnum.YES);
+        }else{
+            detail.setLiveing(YesOrNoEnum.NO);
+        }
+        return HttpResponseResult.succeed(detail);
     }
 
     @Override

+ 7 - 20
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderServiceImpl.java

@@ -9,7 +9,6 @@ import com.yonge.cooleshow.biz.dal.vo.UserOrderDetailVo;
 import com.yonge.cooleshow.common.constant.SysConfigConstant;
 import com.yonge.cooleshow.biz.dal.dto.req.OrderPayReq;
 import com.yonge.cooleshow.biz.dal.dto.req.OrderReq;
-import com.yonge.cooleshow.biz.dal.entity.UserOrderDetail;
 import com.yonge.cooleshow.biz.dal.entity.UserOrder;
 import com.yonge.cooleshow.biz.dal.entity.UserOrderPayment;
 import com.yonge.cooleshow.biz.dal.sdk.PaymentSdk;
@@ -30,7 +29,6 @@ import org.springframework.stereotype.Service;
 import com.yonge.cooleshow.biz.dal.dto.search.OrderSearch;
 import com.yonge.cooleshow.biz.dal.dao.UserOrderDao;
 import org.springframework.transaction.annotation.Transactional;
-import springfox.documentation.spring.web.json.Json;
 
 import javax.annotation.PostConstruct;
 import java.math.BigDecimal;
@@ -39,7 +37,6 @@ import java.util.*;
 import java.util.function.Consumer;
 import java.util.function.Function;
 
-
 @Service
 public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> implements UserOrderService {
     private final static Logger log = LoggerFactory.getLogger(UserOrderServiceImpl.class);
@@ -94,7 +91,7 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
         orderSuccess.put(GoodTypeEnum.PRACTICE, scheduleService::buyPracticeCourseSuccess);
 
         /**********订单取消后******************/
-        //orderCancel.put();
+        orderCancel.put(GoodTypeEnum.PRACTICE, scheduleService::buyPracticeCourseFailed);
     }
 
     @Override
@@ -176,7 +173,7 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
         }
 
         //验证成功后,订单入库
-        UserOrderVo orderVo = insertOrder(orderNo,orderReq, resList);
+        UserOrderVo orderVo = insertOrder(orderNo, orderReq, resList);
 
         List<UserOrderDetailVo> orderDetailList = orderVo.getOrderDetailList();
         for (UserOrderDetailVo orderDetailVo : orderDetailList) {
@@ -213,7 +210,7 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
     public HttpResponseResult<OrderPayRes> orderPaytoPaying(OrderPayReq payReq) {
         //查询订单
         UserOrderVo detail = detail(payReq.getOrderNo());
-        if(OrderStatusEnum.PAYING.equals(detail.getStatus())){
+        if (OrderStatusEnum.PAYING.equals(detail.getStatus())) {
             //处于付款中状态,需要拉起付款接口返回信息,并且去到汇付
             return orderPayPaying(payReq, detail);
         }
@@ -246,9 +243,6 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
         List<UserOrderVo> orderList = baseMapper.selectPendingList();
         for (UserOrderVo userOrder : orderList) {
             //待支付订单直接取消
-            if (OrderStatusEnum.FAIL.equals(userOrder.getStatus())) {
-                failPayOrderHandle(userOrder);
-            }
             if (OrderStatusEnum.WAIT_PAY.equals(userOrder.getStatus())) {
                 waitPayOrderHandle(userOrder);
             }
@@ -258,17 +252,6 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
         }
     }
 
-
-    /***
-     * 处理支付失败订单
-     * @author liweifan
-     * @param: userOrder
-     * @updateTime 2022/4/13 16:51
-     */
-    private void failPayOrderHandle(UserOrderVo userOrder) {
-        orderCancel(userOrder);
-    }
-
     /***
      * 处理待支付订单
      * @author liweifan
@@ -351,6 +334,7 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
             return HttpResponseResult.succeed(orderPayRes);
         } else {
             //入订单付款表,同时修改订单状态
+            orderCancel(detail);
             insertOrderPayment(responseResult, payReq);
             baseMapper.updateStatusByOrderNo(payReq.getOrderNo(), OrderStatusEnum.FAIL.getCode());
             return HttpResponseResult.failed(responseResult.getMsg());
@@ -443,6 +427,9 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
             orderDetail.setBizContent(res.getBizContent());
             orderDetail.setOriginalPrice(null != res.getOriginalPrice() ? res.getOriginalPrice() : BigDecimal.ZERO);
             orderDetail.setExpectPrice(null != res.getExpectPrice() ? res.getExpectPrice() : BigDecimal.ZERO);
+            orderDetail.setActualPrice(null != res.getActualPrice() ? res.getActualPrice() : BigDecimal.ZERO);
+            orderDetail.setCouponAmount(null != res.getCouponAmount() ? res.getCouponAmount() : BigDecimal.ZERO);
+
             orderDetail.setGoodNum(null != res.getGoodNum() ? res.getGoodNum() : 1);
             //商品单价计算,使用商品原价计算,退费计算公式(退费金额=实际订单金额-(商品单价 * 已经使用商品数))
             //其中,已经使用的商品单价按照原价算

+ 34 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/CourseScheduleStudentPaymentVo.java

@@ -0,0 +1,34 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import com.yonge.cooleshow.biz.dal.entity.CourseScheduleStudentPayment;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Author: cy
+ * @Date: 2022/4/22
+ */
+@ApiModel(value = "CourseScheduleStudentPaymentVo")
+public class CourseScheduleStudentPaymentVo extends CourseScheduleStudentPayment {
+    @ApiModelProperty(value = "老师id")
+    private Long teacherId;
+    @ApiModelProperty(value = "课程数")
+    private Integer classNum;
+
+    public Integer getClassNum() {
+        return classNum;
+    }
+
+    public void setClassNum(Integer classNum) {
+        this.classNum = classNum;
+    }
+
+    public Long getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(Long teacherId) {
+        this.teacherId = teacherId;
+    }
+}
+

+ 246 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/StudentHomePage.java

@@ -0,0 +1,246 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Author: cy
+ * @Date: 2022/4/22
+ */
+@ApiModel(value = "StudentHomePage")
+public class StudentHomePage implements Serializable {
+    @ApiModelProperty(value = "直播课")
+    private List<Live> liveList;
+    @ApiModelProperty(value = "视频课")
+    private List<Video> videoList;
+
+    public static class Live {
+        @ApiModelProperty(value = "老师id")
+        private Long teacherId;
+        @ApiModelProperty(value = "老师姓名")
+        private String teacherName;
+        @ApiModelProperty(value = "老师头像")
+        private String avatar;
+
+        @ApiModelProperty(value = "课程组id")
+        private Long courseGroupId;
+        @ApiModelProperty(value = "课程组名称")
+        private String courseGroupName;
+        @ApiModelProperty(value = "课程组售价")
+        private BigDecimal courseGroupPrice;
+        @ApiModelProperty(value = "开课时间")
+        private Date courseStartTime;
+        @ApiModelProperty(value = "直播背景图")
+        private String backgroundPic;
+        @ApiModelProperty(value = "课程数")
+        private Integer courseNum;
+
+        public Long getTeacherId() {
+            return teacherId;
+        }
+
+        public void setTeacherId(Long teacherId) {
+            this.teacherId = teacherId;
+        }
+
+        public String getTeacherName() {
+            return teacherName;
+        }
+
+        public void setTeacherName(String teacherName) {
+            this.teacherName = teacherName;
+        }
+
+        public String getAvatar() {
+            return avatar;
+        }
+
+        public void setAvatar(String avatar) {
+            this.avatar = avatar;
+        }
+
+        public Long getCourseGroupId() {
+            return courseGroupId;
+        }
+
+        public void setCourseGroupId(Long courseGroupId) {
+            this.courseGroupId = courseGroupId;
+        }
+
+        public String getCourseGroupName() {
+            return courseGroupName;
+        }
+
+        public void setCourseGroupName(String courseGroupName) {
+            this.courseGroupName = courseGroupName;
+        }
+
+        public BigDecimal getCourseGroupPrice() {
+            return courseGroupPrice;
+        }
+
+        public void setCourseGroupPrice(BigDecimal courseGroupPrice) {
+            this.courseGroupPrice = courseGroupPrice;
+        }
+
+        public Date getCourseStartTime() {
+            return courseStartTime;
+        }
+
+        public void setCourseStartTime(Date courseStartTime) {
+            this.courseStartTime = courseStartTime;
+        }
+
+        public String getBackgroundPic() {
+            return backgroundPic;
+        }
+
+        public void setBackgroundPic(String backgroundPic) {
+            this.backgroundPic = backgroundPic;
+        }
+
+        public Integer getCourseNum() {
+            return courseNum;
+        }
+
+        public void setCourseNum(Integer courseNum) {
+            this.courseNum = courseNum;
+        }
+    }
+
+    public static class Video {
+        @ApiModelProperty(value = "老师id")
+        private Long teacherId;
+        @ApiModelProperty(value = "老师姓名")
+        private String teacherName;
+        @ApiModelProperty(value = "老师头像")
+        private String avatar;
+
+        @ApiModelProperty(value = "视频课组id")
+        private Long videoGroupId;
+        @ApiModelProperty(value = "视频课组名称")
+        private String videoGroupName;
+        @ApiModelProperty(value = "视频课组售价")
+        private BigDecimal lessonPrice;
+        @ApiModelProperty(value = "创建时间")
+        private Date createTime;
+        @ApiModelProperty(value = "课程封面")
+        private String lessonCoverUrl;
+        @ApiModelProperty(value = "课程数")
+        private Integer lessonCount;
+        @ApiModelProperty(value = "声部id")
+        private Integer subjectId;
+        @ApiModelProperty(value = "声部名称")
+        private String subjectName;
+
+        public Long getTeacherId() {
+            return teacherId;
+        }
+
+        public void setTeacherId(Long teacherId) {
+            this.teacherId = teacherId;
+        }
+
+        public String getTeacherName() {
+            return teacherName;
+        }
+
+        public void setTeacherName(String teacherName) {
+            this.teacherName = teacherName;
+        }
+
+        public String getAvatar() {
+            return avatar;
+        }
+
+        public void setAvatar(String avatar) {
+            this.avatar = avatar;
+        }
+
+        public Long getVideoGroupId() {
+            return videoGroupId;
+        }
+
+        public void setVideoGroupId(Long videoGroupId) {
+            this.videoGroupId = videoGroupId;
+        }
+
+        public String getVideoGroupName() {
+            return videoGroupName;
+        }
+
+        public void setVideoGroupName(String videoGroupName) {
+            this.videoGroupName = videoGroupName;
+        }
+
+        public BigDecimal getLessonPrice() {
+            return lessonPrice;
+        }
+
+        public void setLessonPrice(BigDecimal lessonPrice) {
+            this.lessonPrice = lessonPrice;
+        }
+
+        public Date getCreateTime() {
+            return createTime;
+        }
+
+        public void setCreateTime(Date createTime) {
+            this.createTime = createTime;
+        }
+
+        public String getLessonCoverUrl() {
+            return lessonCoverUrl;
+        }
+
+        public void setLessonCoverUrl(String lessonCoverUrl) {
+            this.lessonCoverUrl = lessonCoverUrl;
+        }
+
+        public Integer getLessonCount() {
+            return lessonCount;
+        }
+
+        public void setLessonCount(Integer lessonCount) {
+            this.lessonCount = lessonCount;
+        }
+
+        public Integer getSubjectId() {
+            return subjectId;
+        }
+
+        public void setSubjectId(Integer subjectId) {
+            this.subjectId = subjectId;
+        }
+
+        public String getSubjectName() {
+            return subjectName;
+        }
+
+        public void setSubjectName(String subjectName) {
+            this.subjectName = subjectName;
+        }
+    }
+
+    public List<Live> getLiveList() {
+        return liveList;
+    }
+
+    public void setLiveList(List<Live> liveList) {
+        this.liveList = liveList;
+    }
+
+    public List<Video> getVideoList() {
+        return videoList;
+    }
+
+    public void setVideoList(List<Video> videoList) {
+        this.videoList = videoList;
+    }
+}
+

+ 10 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/StudentHomeVo.java

@@ -30,6 +30,8 @@ public class StudentHomeVo extends Student {
     private Integer unfinshClassHours;
     @ApiModelProperty("关注老师数")
     private Integer starTeacherNum;
+    @ApiModelProperty(value = "声部名称(支持多个,用逗号分隔) ")
+    private String subjectName;
 
     public String getHeardUrl() {
         return heardUrl;
@@ -102,4 +104,12 @@ public class StudentHomeVo extends Student {
     public void setMembershipDays(Integer membershipDays) {
         this.membershipDays = membershipDays;
     }
+
+    public String getSubjectName() {
+        return subjectName;
+    }
+
+    public void setSubjectName(String subjectName) {
+        this.subjectName = subjectName;
+    }
 }

+ 7 - 7
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TeacherStyleVideoVo.java

@@ -9,21 +9,21 @@ import io.swagger.annotations.ApiModelProperty;
  * @Author: liweifan
  * @Data: 2022/4/11 14:44
  */
-@ApiModel(value = "TeacherStyleVideoVo对象", description = "老师风采信息")
+@ApiModel(value = "TeacherStyleVideoVo", description = "老师风采信息")
 public class TeacherStyleVideoVo extends TeacherStyleVideo {
-    @ApiModelProperty(value = "是否直播 0否 1是")
-    private YesOrNoEnum liveFlag;
+    @ApiModelProperty(value = "老师是否直播 0否 1是")
+    private YesOrNoEnum liveing;
     @ApiModelProperty("头像地址")
     private String avatar;
     @ApiModelProperty("老师昵称")
     private String username;
 
-    public YesOrNoEnum getLiveFlag() {
-        return liveFlag;
+    public YesOrNoEnum getLiveing() {
+        return liveing;
     }
 
-    public void setLiveFlag(YesOrNoEnum liveFlag) {
-        this.liveFlag = liveFlag;
+    public void setLiveing(YesOrNoEnum liveing) {
+        this.liveing = liveing;
     }
 
     public String getAvatar() {

+ 21 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TeacherVo.java

@@ -52,6 +52,11 @@ public class TeacherVo extends Teacher {
     @ApiModelProperty(value = "老师风采视频")
     private List<TeacherStyleVideo> styleVideo;
 
+    @ApiModelProperty(value = "老师是否在直播中 0否 1是")
+    private YesOrNoEnum liveing;
+    @ApiModelProperty(value = "直播间房号")
+    private String roomUid;
+
     public String getAvatar() {
         return avatar;
     }
@@ -163,4 +168,20 @@ public class TeacherVo extends Teacher {
     public void setTeacherType(String teacherType) {
         this.teacherType = teacherType;
     }
+
+    public YesOrNoEnum getLiveing() {
+        return liveing;
+    }
+
+    public void setLiveing(YesOrNoEnum liveing) {
+        this.liveing = liveing;
+    }
+
+    public String getRoomUid() {
+        return roomUid;
+    }
+
+    public void setRoomUid(String roomUid) {
+        this.roomUid = roomUid;
+    }
 }

+ 30 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/UserAccountRecordVo.java

@@ -1,7 +1,12 @@
 package com.yonge.cooleshow.biz.dal.vo;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.yonge.cooleshow.biz.dal.entity.UserAccountRecord;
 import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
 
 /**
  * @Author: liweifan
@@ -11,4 +16,29 @@ import io.swagger.annotations.ApiModel;
 public class UserAccountRecordVo extends UserAccountRecord{
 	private static final long serialVersionUID = 1L;
 
+	@ApiModelProperty(value = "上课时间")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+	private Date startTime;
+
+	@ApiModelProperty(value = "下课时间")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+	private Date endTime;
+
+	public Date getStartTime() {
+		return startTime;
+	}
+
+	public void setStartTime(Date startTime) {
+		this.startTime = startTime;
+	}
+
+	public Date getEndTime() {
+		return endTime;
+	}
+
+	public void setEndTime(Date endTime) {
+		this.endTime = endTime;
+	}
 }

+ 11 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/VideoLessonExamineVo.java

@@ -1,6 +1,5 @@
 package com.yonge.cooleshow.biz.dal.vo;
 
-import com.yonge.cooleshow.biz.dal.valid.ListValue;
 import com.yonge.cooleshow.common.entity.BaseEntity;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -20,6 +19,17 @@ public class VideoLessonExamineVo extends BaseEntity {
     @ApiModelProperty(value = "审核状态  UNPAALY、未申请 DOING、审核中 PASS、通过 UNPASS、不通过")
     private String auditStatus;
 
+    @ApiModelProperty(value = "备注")
+    private String remarks;
+
+    public String getRemarks() {
+        return remarks;
+    }
+
+    public void setRemarks(String remarks) {
+        this.remarks = remarks;
+    }
+
     private Long auditId;
 
     private String auditName;

+ 35 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -454,4 +454,39 @@
         SET class_date_=#{classDate},start_time_=#{startTime},end_time_=#{endTime}
         WHERE id_ = #{courseId}
     </update>
+    <select id="selectLive" resultType="com.yonge.cooleshow.biz.dal.vo.StudentHomePage$Live">
+        SELECT
+            u.id_ AS teacherId,
+            u.username_ AS teacherName,
+            u.avatar_ AS avatar,
+            g.id_ AS courseGroupId,
+            g.name_ AS courseGroupName,
+            g.course_price_ AS courseGroupPrice,
+            g.course_start_time_ AS courseStartTime,
+            g.background_pic_ AS backgroundPic,
+            g.course_num_ AS courseNum
+        FROM course_group g
+        LEFT JOIN sys_user u ON g.teacher_id_=u.id_
+        WHERE type_='LIVE'
+        ORDER BY courseStartTime DESC LIMIT 4
+    </select>
+    <select id="selectVideo" resultType="com.yonge.cooleshow.biz.dal.vo.StudentHomePage$Video">
+        SELECT
+            u.id_ AS teacherId,
+            u.username_ AS teacherName,
+            u.avatar_ AS avatar,
+            g.id_ AS videoGroupId,
+            g.lesson_name_ AS videoGroupName,
+            g.lesson_price_ AS lessonPrice,
+            g.create_time_ AS createTime,
+            g.lesson_cover_url_ AS lessonCoverUrl,
+            g.lesson_count_ AS lessonCount,
+            g.lesson_subject_ AS subjectId,
+            s.name_ AS subjectName
+        FROM video_lesson_group g
+        LEFT JOIN sys_user u ON g.teacher_id_=u.id_
+        LEFT JOIN `subject` s ON g.lesson_subject_=s.id_
+        WHERE g.audit_status_='PASS'
+        ORDER BY g.create_time_ DESC LIMIT 4
+    </select>
 </mapper>

+ 16 - 1
cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleStudentPaymentMapper.xml

@@ -56,5 +56,20 @@
     <select id="selectAll" resultType="java.lang.Long">
         SELECT user_id_ FROM course_schedule_student_payment WHERE course_type_ = 'PRACTICE'
     </select>
-
+    <select id="selectPaymentList" resultType="com.yonge.cooleshow.biz.dal.vo.CourseScheduleStudentPaymentVo"
+            parameterType="java.lang.String">
+        SELECT
+            p.user_id_ AS userId,
+            p.course_group_id_ AS courseGroupId,
+            p.course_id_ AS courseId,
+            p.course_type_ AS courseType,
+            p.expect_price_ AS expectPrice,
+            p.actual_price_ AS actualPrice,
+            g.teacher_id_ AS teacherId,
+            s.class_num_ AS classNum
+        FROM course_schedule_student_payment p
+        LEFT JOIN course_group g ON p.course_group_id_ = g.id_
+        LEFT JOIN course_schedule s ON p.course_id_ = s.id_
+        WHERE p.order_no_=#{orderNo}
+    </select>
 </mapper>

+ 2 - 2
cooleshow-user/user-biz/src/main/resources/config/mybatis/EmployeeMapper.xml

@@ -107,9 +107,9 @@
             keyProperty="id">
         INSERT INTO sys_user
         (is_super_admin_,im_token_,id_,username_,salt_,phone_,avatar_,create_time_,update_time_,wx_openid_,qq_openid_,user_type_,
-        gender_,nation_,birthdate_,email_,id_card_no_,wechat_id_,real_name_,certificate_type_)
+        gender_,nation_,birthdate_,email_,id_card_no_,wechat_id_,real_name_,certificate_type_,password_)
         VALUES(#{isSuperAdmin},#{imToken},#{id},#{username},#{salt},#{phone},#{avatar},now(),now(),#{wxOpenid},#{qqOpenid},#{userType},
-        #{gender},#{nation},#{birthdate},#{email},#{idCardNo},#{wechatId},#{realName},#{certificateType})
+        #{gender},#{nation},#{birthdate},#{email},#{idCardNo},#{wechatId},#{realName},#{certificateType},#{password})
     </insert>
 
     <update id="updateSysUser" parameterType="com.yonge.cooleshow.auth.api.entity.SysUser">

+ 1 - 16
cooleshow-user/user-biz/src/main/resources/config/mybatis/ImGroupMapper.xml

@@ -2,7 +2,7 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.yonge.cooleshow.biz.dal.dao.ImGroupDao">
     <resultMap id="BaseResultMap" type="com.yonge.cooleshow.biz.dal.entity.ImGroup">
-        <id column="id_" jdbcType="INTEGER" property="id"/>
+        <id column="id_" jdbcType="VARCHAR" property="id"/>
         <result column="name_" jdbcType="VARCHAR" property="name"/>
         <result column="introduce_" jdbcType="VARCHAR" property="introduce"/>
         <result column="member_num_" jdbcType="INTEGER" property="memberNum"/>
@@ -34,9 +34,6 @@
         </set>
         where id_ = #{et.id}
     </update>
-    <select id="getLock" resultMap="BaseResultMap">
-        SELECT * FROM im_group WHERE id_ = #{groupId} LIMIT 1 FOR UPDATE
-    </select>
     <select id="findAll" resultMap="BaseResultMap">
         SELECT ig.* FROM im_group ig
         LEFT JOIN im_group_member igm ON igm.group_id_ = ig.id_
@@ -51,16 +48,4 @@
         </where>
         ORDER BY id_ DESC
     </select>
-
-    <insert id="insertBatch" keyColumn="id_" keyProperty="id" useGeneratedKeys="true"
-            parameterType="com.yonge.cooleshow.biz.dal.entity.ImGroup">
-        INSERT INTO im_group(name_, introduce_, member_num_, memo_, img_, type_,create_by_,auto_pass_flag_, create_time_, update_time_)
-        VALUES
-        <foreach collection="entities" item="entity" separator=",">
-            (#{entity.name}, #{entity.introduce}, #{entity.memberNum}, #{entity.memo}, #{entity.img},
-             #{entity.type,typeHandler=com.yonge.cooleshow.common.dal.CustomEnumTypeHandler},
-             #{entity.createBy},#{entity.autoPassFlag}, NOW(), NOW())
-        </foreach>
-    </insert>
-
 </mapper>

+ 1 - 1
cooleshow-user/user-biz/src/main/resources/config/mybatis/ImGroupMemberAuditMapper.xml

@@ -5,7 +5,7 @@
         <id column="id_" jdbcType="INTEGER" property="id"/>
         <result column="user_id_" jdbcType="INTEGER" property="userId"/>
         <result column="role_type_" jdbcType="VARCHAR" property="roleType" typeHandler="com.yonge.cooleshow.common.dal.CustomEnumTypeHandler"/>
-        <result column="group_id_" jdbcType="INTEGER" property="groupId"/>
+        <result column="group_id_" jdbcType="VARCHAR" property="groupId"/>
         <result column="desc_" jdbcType="VARCHAR" property="desc"/>
         <result column="audit_status_" jdbcType="VARCHAR" property="auditStatus" typeHandler="com.yonge.cooleshow.common.dal.CustomEnumTypeHandler"/>
         <result column="create_time_" jdbcType="TIMESTAMP" property="createTime"/>

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

@@ -3,7 +3,7 @@
 <mapper namespace="com.yonge.cooleshow.biz.dal.dao.ImGroupMemberDao">
     <resultMap id="BaseResultMap" type="com.yonge.cooleshow.biz.dal.entity.ImGroupMember">
         <id column="id_" jdbcType="INTEGER" property="id"/>
-        <result column="group_id_" jdbcType="INTEGER" property="groupId"/>
+        <result column="group_id_" jdbcType="VARCHAR" property="groupId"/>
         <result column="user_id_" jdbcType="INTEGER" property="userId"/>
         <result column="nickname_" jdbcType="VARCHAR" property="nickname"/>
         <result column="is_admin_" jdbcType="VARCHAR" property="isAdmin"/>

+ 1 - 1
cooleshow-user/user-biz/src/main/resources/config/mybatis/ImGroupNoticeMapper.xml

@@ -3,7 +3,7 @@
 <mapper namespace="com.yonge.cooleshow.biz.dal.dao.ImGroupNoticeDao">
     <resultMap id="BaseResultMap" type="com.yonge.cooleshow.biz.dal.entity.ImGroupNotice">
         <id column="id_" jdbcType="INTEGER" property="id"/>
-        <result column="group_id_" jdbcType="INTEGER" property="groupId"/>
+        <result column="group_id_" jdbcType="VARCHAR" property="groupId"/>
         <result column="title_" jdbcType="VARCHAR" property="title"/>
         <result column="content_" jdbcType="VARCHAR" property="content"/>
         <result column="top_flag_" property="topFlag"/>

+ 6 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/LiveRoomMapper.xml

@@ -40,4 +40,10 @@
         </foreach>
     </insert>
 
+    <select id="getliveingRoomBySpeakerId" resultType="com.yonge.cooleshow.biz.dal.entity.LiveRoom">
+        select * from live_room
+        where speaker_id_ = #{speakerId} and live_state_ = 1 and room_state_ = 0
+        order by live_start_time_ desc limit 1
+    </select>
+
 </mapper>

+ 2 - 1
cooleshow-user/user-biz/src/main/resources/config/mybatis/MemberPriceSettingsMapper.xml

@@ -13,6 +13,7 @@
 		<result column="update_time_" property="updateTime" />
 		<result column="create_by_" property="createBy" />
 		<result column="update_by_" property="updateBy" />
+		<result column="modifier_name_" property="modifierName" />
 	</resultMap>
 
 	<!-- 根据主键查询一条记录 -->
@@ -75,7 +76,7 @@
 
 	<!-- 分页查询 -->
 	<select id="queryPage" resultMap="BaseResultMap" parameterType="map">
-		SELECT * FROM member_price_settings ORDER BY id_
+		SELECT mps.*,ifnull(u.real_name_,u.username_) modifier_name_ FROM member_price_settings mps left join sys_user u on mps.update_by_ = u.id_ ORDER BY id_
 		<include refid="global.limit" />
 	</select>
 

+ 6 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/SubjectMapper.xml

@@ -124,9 +124,15 @@
             #{subjectId}
         </foreach>
     </select>
+    
     <select id="selectSubjectById" resultType="com.yonge.cooleshow.biz.dal.entity.Subject"
             parameterType="java.lang.String">
         SELECT * FROM subject WHERE del_flag_ = 0 and id_=#{lessonSubject}
     </select>
+    
+    <select id="queryByName" resultType="com.yonge.cooleshow.biz.dal.entity.Subject"
+            parameterType="java.lang.String">
+        SELECT * FROM subject WHERE del_flag_ = 0 and name_ = #{name}
+    </select>
 
 </mapper>

+ 1 - 1
cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherStyleVideoMapper.xml

@@ -44,7 +44,7 @@
 	<select id="stylePage" resultType="com.yonge.cooleshow.biz.dal.vo.TeacherStyleVideoVo">
 		SELECT
 			<include refid="baseColumns"/>,
-			ta.live_flag_ as liveFlag,
+			ta.live_flag_ as liveing,
 			u.avatar_ as avatar,
 			u.username_ as username
 		FROM teacher_style_video t

+ 23 - 3
cooleshow-user/user-biz/src/main/resources/config/mybatis/UserAccountRecordMapper.xml

@@ -30,14 +30,34 @@
 
     <select id="detail" resultType="com.yonge.cooleshow.biz.dal.vo.UserAccountRecordVo">
         SELECT
-        <include refid="baseColumns"/>
+            <include refid="baseColumns"/>
         FROM user_cash_account_record t
         where t.id_ = #{id}
     </select>
 
-    <select id="selectPage" resultMap="BaseResultMap">
+    <select id="selectPage" resultType="com.yonge.cooleshow.biz.dal.vo.UserAccountRecordVo">
         SELECT
-        <include refid="baseColumns" />
+            <include refid="baseColumns" />,
+            a.start_time_ as startTime,
+            a.end_time_ as endTime
         FROM user_cash_account_record t
+        left join course_schedule a on t.biz_id_ = a.id_ and t.biz_type_ in ('PRACTICE','LIVE')
+        <where>
+            <if test="null != param.userId">
+                AND t.account_id_ = #{param.userId}
+            </if>
+            <if test="null != param.inOrOut">
+                AND t.in_or_out_ = #{param.inOrOut}
+            </if>
+            <if test="null != param.bizType">
+                AND t.biz_type_ = #{param.bizType}
+            </if>
+            <if test="param.startTime !=null">
+                <![CDATA[AND t.create_time_ >= #{param.startTime} ]]>
+            </if>
+            <if test="param.endTime !=null">
+                <![CDATA[AND t.create_time_ <= #{param.endTime} ]]>
+            </if>
+        </where>
     </select>
 </mapper>

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

@@ -113,11 +113,11 @@
                 p.trans_no_ LIKE CONCAT('%', #{param.search}, '%')
                 )
             </if>
-            <if test="null != param.orderType">
-                AND t.order_type_ = #{param.orderType}
+            <if test="null != param.orderType and '' != param.orderType">
+                AND INTE_ARRAY(#{param.orderType},t.order_type_)
             </if>
-            <if test="null != param.status">
-                AND t.status_ = #{param.status}
+            <if test="null != param.status and '' != param.status">
+                AND INTE_ARRAY(#{param.status},t.status_)
             </if>
             <if test="param.startTime !=null">
                 <![CDATA[AND t.create_time_ >= #{param.startTime} ]]>

+ 1 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/VideoLessonGroupMapper.xml

@@ -66,6 +66,7 @@
 			<if test="auditStatus !=null and auditStatus !=''">audit_status_ = #{auditStatus},</if>
 			<if test="auditName !=null and auditName!=''">audit_name_ = #{auditName},</if>
 			<if test="auditId !=null">audit_id_ = #{auditId},</if>
+			<if test="remarks !=null and remarks !=''">remarks = #{remarks},</if>
 			update_time_ = SYSDATE()
 		</set>
 		WHERE id_ = #{id}

+ 3 - 2
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/ImGroupMemberController.java

@@ -44,11 +44,12 @@ public class ImGroupMemberController extends BaseController {
     })
     @ApiOperation("获取好友详情")
     @PostMapping(value = "/getUserDetail")
-    public HttpResponseResult<ImGroupMember> getUserDetail(@RequestBody Map<String,Long> params) throws Exception {
+    public HttpResponseResult<ImGroupMember> getUserDetail(@RequestBody Map<String,Object> params) throws Exception {
         if(Objects.isNull(params.get("groupId")) || Objects.isNull(params.get("userId"))){
             throw new BizException("参数校验失败");
         }
-        return succeed(imGroupMemberService.getUserDetail(params.get("userId"),params.get("groupId")));
+        return succeed(imGroupMemberService.getUserDetail(Long.parseLong(params.get("userId").toString()),
+                params.get("groupId").toString()));
     }
 
 

+ 7 - 8
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/StudentCourseScheduleController.java

@@ -10,9 +10,7 @@ import com.yonge.cooleshow.biz.dal.enums.CourseScheduleEnum;
 import com.yonge.cooleshow.biz.dal.service.CourseRepliedService;
 import com.yonge.cooleshow.biz.dal.service.CourseScheduleService;
 import com.yonge.cooleshow.biz.dal.support.PageUtil;
-import com.yonge.cooleshow.biz.dal.vo.CourseStudent;
-import com.yonge.cooleshow.biz.dal.vo.MyCourseVo;
-import com.yonge.cooleshow.biz.dal.vo.PracticeTeacherVo;
+import com.yonge.cooleshow.biz.dal.vo.*;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.page.PageInfo;
@@ -23,12 +21,8 @@ import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
-import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
@@ -129,5 +123,10 @@ public class StudentCourseScheduleController extends BaseController {
         return succeed(courseScheduleService.queryStudentLiveCourse(param));
     }
 
+    @ApiOperation("学生-首页-直播课&视频课")
+    @GetMapping("/queryLiveAndVideo")
+    public HttpResponseResult<StudentHomePage> queryLiveAndVideo() {
+        return succeed(courseScheduleService.queryLiveAndVideo());
+    }
 }
 

+ 14 - 1
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/TeacherController.java

@@ -5,10 +5,12 @@ import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.search.StudentSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.TeacherStyleSearch;
+import com.yonge.cooleshow.biz.dal.service.TeacherService;
 import com.yonge.cooleshow.biz.dal.service.TeacherStyleVideoService;
 import com.yonge.cooleshow.biz.dal.support.PageUtil;
 import com.yonge.cooleshow.biz.dal.vo.StudentVo;
 import com.yonge.cooleshow.biz.dal.vo.TeacherStyleVideoVo;
+import com.yonge.cooleshow.biz.dal.vo.TeacherVo;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.page.PageInfo;
@@ -26,8 +28,10 @@ public class TeacherController extends BaseController {
     private TeacherStyleVideoService styleVideoService;
     @Autowired
     private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private TeacherService teacherService;
 
-    @ApiOperation(value = "老师风采")
+    @ApiOperation(value = "老师风采-分页")
     @PostMapping("/stylePage")
     public HttpResponseResult<PageInfo<TeacherStyleVideoVo>> stylePage(@RequestBody TeacherStyleSearch query) {
         SysUser user = sysUserFeignService.queryUserInfo();
@@ -39,4 +43,13 @@ public class TeacherController extends BaseController {
         return succeed(PageUtil.pageInfo(pages));
     }
 
+    @ApiOperation(value = "个人风采-详情")
+    @GetMapping("/queryTeacherStyle")
+    public HttpResponseResult<TeacherVo> queryTeacherStyle(@RequestParam("userId") Long userId) {
+        if(null == userId){
+            return failed("缺少userId");
+        }
+        return teacherService.queryTeacherStyle(userId);
+    }
+
 }

+ 1 - 1
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/VipCardController.java

@@ -33,7 +33,7 @@ public class VipCardController extends BaseController {
 	}
 
     @PostMapping("/vipPermissions")
-    @ApiOperation(value = "查询列表")
+    @ApiOperation(value = "查询vip权限")
     public HttpResponseResult<List<SysConfig>> vipPermissions() {
         Map<String,Object> params = new HashMap<>();
         params.put("group", "VIP_PERMISSION");

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

@@ -47,14 +47,14 @@ public class ImGroupController extends BaseController {
 
     @ApiOperation("解散群聊")
     @PostMapping(value = "/dismiss/{groupId}")
-    public HttpResponseResult dismiss(@ApiParam(value = "群编号", required = true) @PathVariable("groupId") Long groupId) throws Exception {
+    public HttpResponseResult dismiss(@ApiParam(value = "群编号", required = true) @PathVariable("groupId") String groupId) throws Exception {
         imGroupService.dismiss(groupId);
         return succeed();
     }
 
     @ApiOperation("获取群详情")
     @PostMapping(value = "/getDetail/{groupId}")
-    public HttpResponseResult<ImGroup> getDetail(@ApiParam(value = "群编号", required = true) @PathVariable("groupId") Long groupId) throws Exception {
+    public HttpResponseResult<ImGroup> getDetail(@ApiParam(value = "群编号", required = true) @PathVariable("groupId") String groupId) throws Exception {
         return succeed(imGroupService.getById(groupId));
     }
 

+ 5 - 6
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/ImGroupMemberAuditController.java

@@ -11,7 +11,6 @@ import com.yonge.cooleshow.biz.dal.service.ImGroupMemberAuditService;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.exception.BizException;
-import com.yonge.cooleshow.common.page.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
@@ -56,19 +55,19 @@ public class ImGroupMemberAuditController extends BaseController {
     @ApiImplicitParams({
             @ApiImplicitParam(name = "auditIds", dataType = "String", value = "审核编号列表",required = true),
             @ApiImplicitParam(name = "auditStatus", dataType = "String", value = "审核状态",required = true),
-            @ApiImplicitParam(name = "groupId", dataType = "Long", value = "审核状态",required = true)
+            @ApiImplicitParam(name = "groupId", dataType = "String", value = "审核状态",required = true)
     })
     @ApiOperation("申请入群批量审核")
     @PostMapping(value = "/applyAudit")
-    public HttpResponseResult applyAudit(@RequestBody Map<String,Object> params) throws Exception {
+    public HttpResponseResult applyAudit(@RequestBody Map<String,String> params) throws Exception {
         if(Objects.isNull(params.get("auditIds"))
                 || Objects.isNull(params.get("auditStatus"))
                 || Objects.isNull(params.get("groupId"))){
             throw new BizException("参数校验失败");
         }
-        imGroupMemberAuditService.applyAudit(params.get("auditIds").toString(),
-                AuditStatusEnum.valueOf(params.get("auditStatus").toString()),
-                Long.parseLong(params.get("groupId").toString()));
+        imGroupMemberAuditService.applyAudit(params.get("auditIds"),
+                AuditStatusEnum.valueOf(params.get("auditStatus")),
+                params.get("groupId"));
         return succeed();
     }
 

+ 4 - 3
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/ImGroupMemberController.java

@@ -41,16 +41,17 @@ public class ImGroupMemberController extends BaseController {
     private ImGroupMemberService imGroupMemberService;
 
     @ApiImplicitParams({
-            @ApiImplicitParam(name = "groupId", dataType = "Long", value = "群编号",required = true),
+            @ApiImplicitParam(name = "groupId", dataType = "String", value = "群编号",required = true),
             @ApiImplicitParam(name = "userId", dataType = "Long", value = "用户编号",required = true),
     })
     @ApiOperation("获取好友详情")
     @PostMapping(value = "/getUserDetail")
-    public HttpResponseResult<ImGroupMember> getUserDetail(@RequestBody Map<String,Long> params) throws Exception {
+    public HttpResponseResult<ImGroupMember> getUserDetail(@RequestBody Map<String,Object> params) throws Exception {
         if(Objects.isNull(params.get("groupId")) || Objects.isNull(params.get("userId"))){
             throw new BizException("参数校验失败");
         }
-        return succeed(imGroupMemberService.getUserDetail(params.get("userId"),params.get("groupId")));
+        return succeed(imGroupMemberService.getUserDetail(Long.parseLong(params.get("userId").toString()),
+                params.get("groupId").toString()));
     }
 
     @ApiImplicitParams({

+ 6 - 7
toolset/utils/src/main/java/com/yonge/toolset/utils/easyexcel/ExcelDataReader.java

@@ -1,6 +1,5 @@
 package com.yonge.toolset.utils.easyexcel;
 
-import com.alibaba.excel.annotation.ExcelProperty;
 import com.alibaba.excel.context.AnalysisContext;
 import com.alibaba.excel.event.AnalysisEventListener;
 import org.apache.commons.collections.CollectionUtils;
@@ -10,10 +9,11 @@ import org.slf4j.LoggerFactory;
 import javax.validation.ConstraintViolation;
 import javax.validation.Validation;
 import javax.validation.Validator;
-import javax.websocket.Session;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+import java.util.Set;
 import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 
@@ -88,14 +88,13 @@ public class ExcelDataReader<T> extends AnalysisEventListener<T> {
     private ExcelDataReaderProperty<T> executed(T data, AnalysisContext context) {
         ExcelDataReaderProperty<T> property = new ExcelDataReaderProperty<>();
         property.setClazz(data);
-        Integer rowIndex = context.readRowHolder().getRowIndex();
-        property.setRowIndex(rowIndex);
+        property.setRowIndex(context.readRowHolder().getRowIndex());
         //执行注解校验
         Set<ConstraintViolation<T>> set = vf.validate(data);
         if (CollectionUtils.isNotEmpty(set)) {
             String collect = set.stream()
                     .map(ConstraintViolation::getMessage)
-                    .collect(Collectors.joining());
+                    .collect(Collectors.joining(", "));
             property.setErrorMessage(collect);
         }
         return property;

+ 2 - 2
toolset/utils/src/main/java/com/yonge/toolset/utils/easyexcel/ExcelUtils.java

@@ -133,9 +133,9 @@ public class ExcelUtils {
             response.setContentType("application/vnd.ms-excel");
             response.setCharacterEncoding(Charsets.UTF_8.name());
             fileName = URLEncoder.encode(fileName, Charsets.UTF_8.name());
-            response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
+            response.setHeader("Content-disposition", "attachment;filename=" + fileName + ExcelTypeEnum.XLS.getValue());
             if (!CollectionUtils.isEmpty(data)) {
-                EasyExcel.write(response.getOutputStream(), data.get(0).getClass()).sheet(sheetName).doWrite(data);
+                EasyExcel.write(response.getOutputStream(), data.get(0).getClass()).excelType(ExcelTypeEnum.XLS).sheet(sheetName).doWrite(data);
             } else {
                 throw new RuntimeException("没有数据导出!");
             }