浏览代码

Merge remote-tracking branch 'origin/master'

hgw 3 年之前
父节点
当前提交
d0e96d6dbd
共有 95 个文件被更改,包括 1518 次插入835 次删除
  1. 2 2
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/core/provider/PhoneAuthenticationProvider.java
  2. 24 0
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/core/service/CustomTokenServices.java
  3. 4 5
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/service/SysUserService.java
  4. 11 11
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/service/impl/SysUserServiceImpl.java
  5. 1 22
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/web/controller/TokenController.java
  6. 21 2
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/web/controller/UserController.java
  7. 13 13
      cooleshow-auth/auth-server/src/main/resources/config/mybatis/SysUserMapper.xml
  8. 12 3
      cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/controller/NewsController.java
  9. 12 1
      cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/controller/queryinfo/NewsInformationQueryInfo.java
  10. 2 3
      cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/dal/entity/SysNewsInformation.java
  11. 11 0
      cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/dto/AppHomeDto.java
  12. 25 0
      cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/dto/AppParam.java
  13. 8 2
      cooleshow-cms/src/main/resources/config/mybatis/SysNewsInformationMapper.xml
  14. 6 0
      cooleshow-task/src/main/java/com/yonge/cooleshow/task/feign/TeacherFeignService.java
  15. 5 0
      cooleshow-task/src/main/java/com/yonge/cooleshow/task/feign/fallback/TeacherFeignServiceFallback.java
  16. 22 0
      cooleshow-task/src/main/java/com/yonge/cooleshow/task/jobs/OpenCourseGroupTask.java
  17. 32 17
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/MemberPriceSettingsController.java
  18. 1 1
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/MusicAlbumController.java
  19. 0 86
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/UserBankCardController.java
  20. 1 1
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/UserOrderController.java
  21. 1 1
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/UserWithdrawalController.java
  22. 7 2
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/VideoLessonController.java
  23. 0 69
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/VipCardController.java
  24. 0 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseScheduleDao.java
  25. 31 3
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/MemberPriceSettingsDao.java
  26. 0 9
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/TeacherAuthEntryRecordDao.java
  27. 9 6
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/TeacherFreeTimeDao.java
  28. 16 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/VideoLessonAuthRecordDao.java
  29. 3 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/VideoLessonGroupDetailDao.java
  30. 0 27
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/VipCardDao.java
  31. 38 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/MusicSheetPayDto.java
  32. 3 3
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/PracticeScheduleDto.java
  33. 2 3
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/UserAccountRecordDto.java
  34. 14 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/MemberPriceSettingsSearch.java
  35. 83 91
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/MemberPriceSettings.java
  36. 10 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/MusicAlbum.java
  37. 27 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/MusicSheetPurchaseRecord.java
  38. 7 7
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/UserAccountRecord.java
  39. 113 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/VideoLessonAuthRecord.java
  40. 30 7
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/VideoLessonPurchaseRecord.java
  41. 13 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/PeriodEnum.java
  42. 49 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MemberPriceSettingsService.java
  43. 8 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicAlbumService.java
  44. 17 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicSheetService.java
  45. 3 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/VideoLessonGroupDetailService.java
  46. 0 49
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/VipCardService.java
  47. 7 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseGroupServiceImpl.java
  48. 27 10
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseScheduleServiceImpl.java
  49. 5 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/EmployeeServiceImpl.java
  50. 105 10
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MemberPriceSettingsServiceImpl.java
  51. 10 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicAlbumServiceImpl.java
  52. 118 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicSheetServiceImpl.java
  53. 6 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicTagServiceImpl.java
  54. 3 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherAuthEntryRecordServiceImpl.java
  55. 2 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherAuthMusicianRecordServiceImpl.java
  56. 17 6
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherServiceImpl.java
  57. 25 6
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderServiceImpl.java
  58. 1 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserWithdrawalServiceImpl.java
  59. 16 4
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/VideoLessonGroupDetailServiceImpl.java
  60. 46 4
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/VideoLessonGroupServiceImpl.java
  61. 54 10
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/VideoLessonPurchaseRecordServiceImpl.java
  62. 2 8
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/VipCardRecordServiceImpl.java
  63. 0 107
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/VipCardServiceImpl.java
  64. 11 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/AlbumDetailVo.java
  65. 26 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/CheckVo.java
  66. 35 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/MemberPriceSettingsVo.java
  67. 11 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/MusicSheetDetailVo.java
  68. 35 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/VideoLessonGroupDetailVo.java
  69. 12 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/VideoLessonStudentVo.java
  70. 1 1
      cooleshow-user/user-biz/src/main/resources/config/mybatis/ContractTemplateMapper.xml
  71. 0 1
      cooleshow-user/user-biz/src/main/resources/config/mybatis/EmployeeMapper.xml
  72. 33 70
      cooleshow-user/user-biz/src/main/resources/config/mybatis/MemberPriceSettingsMapper.xml
  73. 3 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicAlbumMapper.xml
  74. 3 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicSheetMapper.xml
  75. 5 4
      cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicTagMapper.xml
  76. 1 1
      cooleshow-user/user-biz/src/main/resources/config/mybatis/StudentMapper.xml
  77. 1 20
      cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherAuthEntryRecordMapper.xml
  78. 1 1
      cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherAuthMusicianRecordMapper.xml
  79. 14 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherFreeTimeMapper.xml
  80. 1 1
      cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherMapper.xml
  81. 9 6
      cooleshow-user/user-biz/src/main/resources/config/mybatis/UserAccountMapper.xml
  82. 2 2
      cooleshow-user/user-biz/src/main/resources/config/mybatis/UserAccountRecordMapper.xml
  83. 3 2
      cooleshow-user/user-biz/src/main/resources/config/mybatis/UserOrderMapper.xml
  84. 11 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/VideoLessonAuthRecordMapper.xml
  85. 24 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/VideoLessonGroupDetailMapper.xml
  86. 23 6
      cooleshow-user/user-biz/src/main/resources/config/mybatis/VideoLessonGroupMapper.xml
  87. 0 45
      cooleshow-user/user-biz/src/main/resources/config/mybatis/VipCardMapper.xml
  88. 44 0
      cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/MemberPriceSettingsController.java
  89. 44 0
      cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/MusicSheetController.java
  90. 1 4
      cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/TeacherController.java
  91. 5 1
      cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/VideoLessonController.java
  92. 0 43
      cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/VipCardController.java
  93. 3 2
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/VideoLessonGroupDetailController.java
  94. 12 0
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/task/TaskController.java
  95. 3 4
      toolset/utils/src/main/java/com/yonge/toolset/utils/date/DateUtil.java

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

@@ -94,9 +94,9 @@ public class PhoneAuthenticationProvider extends AbstractAuthenticationProvider
 
 					// 添加userType以及附加信息
 					if (StringUtils.equals("STUDENT", clientId)) {
-						sysUserService.saveStudent(user.getId());
+						sysUserService.saveStudent(user);
 					} else if (StringUtils.equals("TEACHER", clientId)) {
-						sysUserService.saveTeacher(user.getId());
+						sysUserService.saveTeacher(user);
 					}
 					sysUserService.update(user);
 				}

+ 24 - 0
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/core/service/CustomTokenServices.java

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.auth.core.service;
 
+import java.util.Collection;
 import java.util.Date;
 import java.util.Set;
 import java.util.UUID;
@@ -33,6 +34,8 @@ import org.springframework.security.web.authentication.preauth.PreAuthenticatedA
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.Assert;
 
+import com.yonge.cooleshow.common.security.SecurityConstants;
+
 /**
  * Base implementation for token services using random UUID values for the access token and refresh token values. The
  * main extension point for customizations is the {@link TokenEnhancer} which will be called after the access and
@@ -271,6 +274,27 @@ public class CustomTokenServices implements AuthorizationServerTokenServices, Re
 		}
 		return clientAuth.getClientId();
 	}
+	
+	public boolean revokeToken(String clientId, String phone){
+		Collection<OAuth2AccessToken> list = tokenStore.findTokensByClientIdAndUserName(clientId, SecurityConstants.PHONE_PRINCIPAL_PREFIX + phone);
+
+		if (list == null || list.size() == 0) {
+			list = tokenStore.findTokensByClientIdAndUserName(clientId, SecurityConstants.USERNAME_PRINCIPAL_PREFIX + phone);
+		} else {
+			list.addAll(tokenStore.findTokensByClientIdAndUserName(clientId, SecurityConstants.USERNAME_PRINCIPAL_PREFIX + phone));
+		}
+		if (list != null) {
+			for (OAuth2AccessToken accessToken : list) {
+				if (accessToken != null) {
+					if (accessToken.getRefreshToken() != null) {
+						tokenStore.removeRefreshToken(accessToken.getRefreshToken());
+					}
+					tokenStore.removeAccessToken(accessToken);
+				}
+			}
+		}
+		return true;
+	}
 
 	public boolean revokeToken(String tokenValue) {
 		OAuth2AccessToken accessToken = tokenStore.readAccessToken(tokenValue);

+ 4 - 5
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/service/SysUserService.java

@@ -1,5 +1,7 @@
 package com.yonge.cooleshow.auth.service;
 
+import java.util.List;
+
 import com.yonge.cooleshow.auth.api.dto.RealnameAuthReq;
 import com.yonge.cooleshow.auth.api.dto.SysUserInfo;
 import com.yonge.cooleshow.auth.api.dto.SysUserQueryInfo;
@@ -8,9 +10,6 @@ import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.auth.api.vo.UserSetVo;
 import com.yonge.cooleshow.common.entity.ImUserModel;
 import com.yonge.cooleshow.common.service.BaseService;
-import com.yonge.toolset.utils.idcard.IdcardInfoExtractor;
-
-import java.util.List;
 
 public interface SysUserService extends BaseService<Long, SysUser> {
 
@@ -138,14 +137,14 @@ public interface SysUserService extends BaseService<Long, SysUser> {
      *
      * @param userId
      */
-    void saveStudent(Long userId);
+    void saveStudent(SysUser sysUser);
 
     /**
      * 保存teacher数据
      *
      * @param userId
      */
-    void saveTeacher(Long userId);
+    void saveTeacher(SysUser sysUser);
 
     /***
      * 更新用户实名信息

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

@@ -36,8 +36,6 @@ public class SysUserServiceImpl extends BaseServiceImpl<Long, SysUser> implement
     @Autowired
     private SysRoleMenuService sysRoleMenuService;
     @Autowired
-    private SysUserService sysUserService;
-    @Autowired
     private SysConfigService sysConfigService;
 
     @Override
@@ -164,7 +162,7 @@ public class SysUserServiceImpl extends BaseServiceImpl<Long, SysUser> implement
         } else if (StringUtils.equalsIgnoreCase(clientId, "STUDENT")) {
             sysUser.setUserType("STUDENT");
             sysUserDao.insert(sysUser);
-            sysUserService.saveStudent(sysUser.getId());
+            saveStudent(sysUser);
             return queryUserInfoByPhone(phone);
         }
         return null;
@@ -178,19 +176,21 @@ public class SysUserServiceImpl extends BaseServiceImpl<Long, SysUser> implement
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void saveStudent(Long userId) {
-        sysUserDao.saveStudent(userId);
-        //创建老师账户
-        sysUserDao.createUserAccount(userId);
+    public void saveStudent(SysUser sysUser) {
+        sysUserDao.saveStudent(sysUser.getId());
+        if(!sysUser.getUserType().contains("TEACHER")){
+            sysUserDao.createUserAccount(sysUser.getId());
+        }
     }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void saveTeacher(Long userId) {
+    public void saveTeacher(SysUser sysUser) {
 
-        sysUserDao.saveTeacher(userId);
-        //创建老师账户
-        sysUserDao.createUserAccount(userId);
+        sysUserDao.saveTeacher(sysUser.getId());
+        if(!sysUser.getUserType().contains("STUDENT")){
+            sysUserDao.createUserAccount(sysUser.getId());
+        }
     }
 
     @Override

+ 1 - 22
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/web/controller/TokenController.java

@@ -7,7 +7,6 @@ import io.swagger.annotations.ApiOperation;
 
 import java.io.IOException;
 import java.util.Base64;
-import java.util.Collection;
 import java.util.Map;
 
 import javax.servlet.http.HttpServletRequest;
@@ -38,7 +37,6 @@ import com.yonge.cooleshow.auth.service.SysUserService;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.security.AuthUser;
-import com.yonge.cooleshow.common.security.SecurityConstants;
 import com.yonge.cooleshow.common.security.SecurityUtils;
 
 @RestController
@@ -159,30 +157,11 @@ public class TokenController extends BaseController {
 		return succeed("退出成功");
 	}
 
-
 	@PostMapping(value = "exit/{clientId}/{phone}", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
 	@ApiOperation(value = "指定用户退出登录")
 	public HttpResponseResult<String> exitByPhone(@PathVariable("clientId") String clientId, @PathVariable("phone") String phone) {
 
-		Collection<OAuth2AccessToken> list = tokenStore.findTokensByClientIdAndUserName(clientId, SecurityConstants.PHONE_PRINCIPAL_PREFIX + phone);
-
-		if (list == null || list.size() == 0) {
-			list = tokenStore.findTokensByClientIdAndUserName(clientId, SecurityConstants.USERNAME_PRINCIPAL_PREFIX + phone);
-		} else {
-			list.addAll(tokenStore.findTokensByClientIdAndUserName(clientId, SecurityConstants.USERNAME_PRINCIPAL_PREFIX + phone));
-		}
-		if (list != null) {
-			for (OAuth2AccessToken accessToken : list) {
-				if (accessToken != null) {
-					if (accessToken.getRefreshToken() != null) {
-						tokenStore.removeRefreshToken(accessToken.getRefreshToken());
-					}
-					tokenStore.removeAccessToken(accessToken);
-				}
-			}
-		}
-
-		return succeed("退出成功");
+		return tokenService.revokeToken(clientId, phone) ? succeed("退出成功") : failed();
 	}
 
 	@GetMapping(value = "/checkToken",consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)

+ 21 - 2
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/web/controller/UserController.java

@@ -32,6 +32,7 @@ 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.core.service.CustomTokenServices;
 import com.yonge.cooleshow.auth.service.SysConfigService;
 import com.yonge.cooleshow.auth.service.SysRoleService;
 import com.yonge.cooleshow.auth.service.SysUserRoleService;
@@ -64,8 +65,13 @@ public class UserController extends BaseController {
     private SysUserRoleService sysUserRoleService;
     @Autowired
     private IdGeneratorService smsCodeService;
+
+	@Autowired
+	private CustomTokenServices tokenService;
+	
     @Value("${message.debugMode}")
     private boolean debugMode;
+    
     @Autowired
     private RealnameAuthenticationPlugin realnameAuthenticationPlugin;
     @Autowired
@@ -305,10 +311,22 @@ public class UserController extends BaseController {
         if (sysUser == null) {
             return failed("用户不存在");
         }
-        if (sysUser.getId() != userId) {
+        if (sysUser.getId() != userId.longValue()) {
             return failed("非法操作");
         }
         sysUser.setLockFlag(lockFlag);
+        
+        if(lockFlag == 1){
+        	if(sysUser.getUserType().contains("STUDENT")){
+        		tokenService.revokeToken("STUDENT", sysUser.getPhone());
+        	}
+        	if(sysUser.getUserType().contains("TEACHER")){
+        		tokenService.revokeToken("TEACHER", sysUser.getPhone());
+        	}
+        	if(sysUser.getUserType().contains("SYSTEM")){
+        		tokenService.revokeToken("SYSTEM", sysUser.getPhone());
+        	}
+        }
         sysUser.setUpdateTime(new Date());
         sysUserService.update(sysUser);
         return succeed();
@@ -330,7 +348,7 @@ public class UserController extends BaseController {
         if (sysUser == null) {
             return failed("用户不存在");
         }
-        if (sysUser.getId() != userId) {
+        if (sysUser.getId() != userId.longValue()) {
             return failed("非法操作");
         }
 
@@ -552,6 +570,7 @@ public class UserController extends BaseController {
         user.setQqOpenid(
                 StringUtil.isEmpty(param.getQqOpenid()) ? user.getQqOpenid() : param.getQqOpenid()
         );
+        user.setUpdateTime(new Date());
         sysUserService.update(user);
         return HttpResponseResult.succeed(true);
     }

+ 13 - 13
cooleshow-auth/auth-server/src/main/resources/config/mybatis/SysUserMapper.xml

@@ -207,7 +207,7 @@
 
     <update id="updateUserCard">
         UPDATE sys_user
-        <set>
+        set
             <if test="param.realName != null and param.realName != ''">
                 real_name_ = #{param.realName},
             </if>
@@ -223,7 +223,7 @@
             <if test="param.avatar != null and param.avatar != ''">
                 avatar_ = #{param.avatar},
             </if>
-        </set>
+        update_time_ = now()
         WHERE id_ = #{param.userId}
     </update>
 
@@ -240,17 +240,17 @@
 
     <update id="updatetSetDetail">
         UPDATE sys_user
-        <set>
-            <if test="param.avatar != null and param.avatar != ''">
-                avatar_ = #{param.avatar},
-            </if>
-            <if test="param.username != null and param.username != ''">
-                username_ = #{param.username},
-            </if>
-            <if test="param.gender != null">
-                gender_ = #{param.gender},
-            </if>
-        </set>
+        set
+        <if test="param.avatar != null and param.avatar != ''">
+            avatar_ = #{param.avatar},
+        </if>
+        <if test="param.username != null and param.username != ''">
+            username_ = #{param.username},
+        </if>
+        <if test="param.gender != null">
+            gender_ = #{param.gender},
+        </if>
+        update_time_ = now()
         WHERE id_ = #{id}
     </update>
 

+ 12 - 3
cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/controller/NewsController.java

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.cms.controller;
 
 import com.yonge.cooleshow.cms.dal.entity.NewsStatusEnum;
 import com.yonge.cooleshow.cms.dto.AppHomeDto;
+import com.yonge.cooleshow.cms.dto.AppParam;
 import com.yonge.cooleshow.cms.dto.SysNewsInformationDto;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.page.PageInfo;
@@ -131,7 +132,7 @@ public class NewsController extends BaseController {
 
 	@ApiOperation("app首页banner、按钮、资讯")
 	@PostMapping(value = "/app/home")
-	public HttpResponseResult<AppHomeDto> appHome() {
+	public HttpResponseResult<AppHomeDto> appHome(@RequestBody AppParam param) {
 		AppHomeDto appHomeDto = new AppHomeDto();
 		NewsInformationQueryInfo queryInfo = new NewsInformationQueryInfo();
 		queryInfo.setStatus(NewsStatusEnum.SHOW);
@@ -145,18 +146,26 @@ public class NewsController extends BaseController {
 		List<SysNewsInformationDto> rows = sysNewsInformationService.selectPage(queryInfo).getRows();
 		appHomeDto.setInformation(rows);
 
+
+		// 查所有
+		queryInfo.setRows(999);
 		// 轮播图
 		queryInfo.setType(4);
-		queryInfo.setRows(999);
 		params = new HashMap<>();
 		MapUtil.populateMap(params, queryInfo);
 		appHomeDto.setBanner(sysNewsInformationService.selectPage(queryInfo).getRows());
 		// 闪页
 		queryInfo.setType(3);
-		queryInfo.setRows(999);
 		params = new HashMap<>();
 		MapUtil.populateMap(params, queryInfo);
 		appHomeDto.setFlashPage(sysNewsInformationService.selectPage(queryInfo).getRows());
+
+		// 按钮
+		queryInfo.setType(5);
+		queryInfo.setVersion(param.getVersion());
+		params = new HashMap<>();
+		MapUtil.populateMap(params, queryInfo);
+		appHomeDto.setAppMenu(sysNewsInformationService.selectPage(queryInfo).getRows());
 		return succeed(appHomeDto);
 	}
 }

+ 12 - 1
cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/controller/queryinfo/NewsInformationQueryInfo.java

@@ -13,7 +13,7 @@ import javax.validation.constraints.NotNull;
 
 public class NewsInformationQueryInfo extends QueryInfo {
 
-	@ApiModelProperty(value = "类型,1热门资讯,2开屏广告,3闪页管理,4轮播图管理", required = true)
+	@ApiModelProperty(value = "类型,1热门资讯,2开屏广告,3闪页管理,4轮播图管理 5按钮管理", required = true)
 	@NotNull(message = "类型不能为空")
 	private Integer type;
 
@@ -39,6 +39,9 @@ public class NewsInformationQueryInfo extends QueryInfo {
 	@ApiModelProperty(value = "需排除编号")
 	private List<Long> excludeIds;
 
+	@ApiModelProperty("版本号")
+	private String version;
+
 	private Date date;
 
 	public Integer getType() {
@@ -112,4 +115,12 @@ public class NewsInformationQueryInfo extends QueryInfo {
 	public void setPlatformType(String platformType) {
 		this.platformType = platformType;
 	}
+
+	public String getVersion() {
+		return version;
+	}
+
+	public void setVersion(String version) {
+		this.version = version;
+	}
 }

+ 2 - 3
cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/dal/entity/SysNewsInformation.java

@@ -24,7 +24,6 @@ public class SysNewsInformation {
 
 	/** 内容 */
 	@ApiModelProperty(value = "内容", required = true)
-	@NotBlank(message = "内容不能为空")
 	private String content;
 
 	/** 封面图片 */
@@ -36,7 +35,7 @@ public class SysNewsInformation {
 	private String videoCoverImage;
 
 	/** 类型 */
-	@ApiModelProperty(value = "类型,1热门资讯,2开屏广告,3闪页管理,4轮播图管理", required = true)
+	@ApiModelProperty(value = "类型,1热门资讯,2开屏广告,3闪页管理,4轮播图管理 5app按钮管理", required = true)
 	@NotNull(message = "类型不能为空")
 	private Integer type;
 	
@@ -57,7 +56,6 @@ public class SysNewsInformation {
 	private Integer order;
 	
 	@ApiModelProperty(value = "上线、生效时间", required = false)
-	@NotNull(message = "上线、生效时间不为空")
 	private Date onlineTime;
 	
 	@ApiModelProperty(value = "下线时间", required = false)
@@ -83,6 +81,7 @@ public class SysNewsInformation {
 
 	private Boolean delFlag= false;
 
+	@ApiModelProperty("版本号")
 	private String attribute1;
 	
 	private String attribute2;

+ 11 - 0
cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/dto/AppHomeDto.java

@@ -24,6 +24,9 @@ public class AppHomeDto {
     @ApiModelProperty("闪页")
     private List<SysNewsInformationDto> flashPage;
 
+    @ApiModelProperty("app按钮")
+    private List<SysNewsInformationDto> appMenu;
+
     public List<SysNewsInformationDto> getInformation() {
         return information;
     }
@@ -47,4 +50,12 @@ public class AppHomeDto {
     public void setFlashPage(List<SysNewsInformationDto> flashPage) {
         this.flashPage = flashPage;
     }
+
+    public List<SysNewsInformationDto> getAppMenu() {
+        return appMenu;
+    }
+
+    public void setAppMenu(List<SysNewsInformationDto> appMenu) {
+        this.appMenu = appMenu;
+    }
 }

+ 25 - 0
cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/dto/AppParam.java

@@ -0,0 +1,25 @@
+package com.yonge.cooleshow.cms.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-04-25
+ */
+@ApiModel("app首页查询参数")
+public class AppParam {
+
+    @ApiModelProperty("版本号")
+    private String version;
+
+    public String getVersion() {
+        return version;
+    }
+
+    public void setVersion(String version) {
+        this.version = version;
+    }
+}

+ 8 - 2
cooleshow-cms/src/main/resources/config/mybatis/SysNewsInformationMapper.xml

@@ -60,8 +60,11 @@
 			</if>
 			<if test="platformType != null and platformType != ''">
 				<if test="platformType != 'ADMIN'" >
-					and sni.status_ = 1 and sni.online_time_ &lt;= now()
-					and if(sni.offline_time_ is not null,sni.offline_time_ &gt;= now(),1=1)
+					and sni.status_ = 1
+					<if test="type != 5">
+						and sni.online_time_ &lt;= now()
+						and if(sni.offline_time_ is not null,sni.offline_time_ &gt;= now(),1=1)
+					</if>
 				</if>
 			</if>
 			<if test="excludeIds!=null and excludeIds.size()>0">
@@ -70,6 +73,9 @@
 					#{excludeId}
 				</foreach>
 			</if>
+			<if test="version != null and version != ''">
+				and sni.attribute1_ = #{version}
+			</if>
 		</where>
 	</sql>
 	

+ 6 - 0
cooleshow-task/src/main/java/com/yonge/cooleshow/task/feign/TeacherFeignService.java

@@ -16,4 +16,10 @@ public interface TeacherFeignService {
      */
     @GetMapping(value = "/task/queryTeacherTotal")
     Object queryTeacherTotal();
+
+    /***
+     * 定时任务-定时修改为报名中状态-每隔10分钟执行一次
+     */
+    @GetMapping(value = "/task/openCourseGroup")
+    Object openCourseGroup();
 }

+ 5 - 0
cooleshow-task/src/main/java/com/yonge/cooleshow/task/feign/fallback/TeacherFeignServiceFallback.java

@@ -10,4 +10,9 @@ public class TeacherFeignServiceFallback implements TeacherFeignService {
     public Object queryTeacherTotal() {
         return null;
     }
+
+    @Override
+    public Object openCourseGroup() {
+        return null;
+    }
 }

+ 22 - 0
cooleshow-task/src/main/java/com/yonge/cooleshow/task/jobs/OpenCourseGroupTask.java

@@ -0,0 +1,22 @@
+package com.yonge.cooleshow.task.jobs;
+
+import com.yonge.cooleshow.task.core.BaseTask;
+import com.yonge.cooleshow.task.core.TaskException;
+import com.yonge.cooleshow.task.feign.TeacherFeignService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * @Author: liweifan
+ * @Data: 2022/4/25 10:30
+ */
+@Service
+public class OpenCourseGroupTask extends BaseTask {
+    @Autowired
+    private TeacherFeignService teacherFeignService;
+
+    @Override
+    public void execute() throws TaskException {
+        Object o = teacherFeignService.openCourseGroup();
+    }
+}

+ 32 - 17
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/MemberPriceSettingsController.java

@@ -1,5 +1,9 @@
 package com.yonge.cooleshow.admin.controller;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yonge.cooleshow.biz.dal.dto.search.MemberPriceSettingsSearch;
+import com.yonge.cooleshow.biz.dal.support.PageUtil;
+import com.yonge.cooleshow.biz.dal.vo.MemberPriceSettingsVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 
@@ -9,11 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.MediaType;
 import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
@@ -24,35 +24,50 @@ import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.page.PageInfo;
 import com.yonge.cooleshow.common.page.QueryInfo;
 
+import javax.validation.Valid;
+
 @RequestMapping("memberPriceSettings")
 @Api(tags = "会员价格设置")
 @RestController
 public class MemberPriceSettingsController extends BaseController {
-
 	@Autowired
 	private MemberPriceSettingsService memberPriceSettingsService;
-
 	@Autowired
 	private SysUserFeignService sysUserFeignService;
 
-	@ApiOperation("分页查询")
-	@GetMapping(value = "/list")
+	/**
+	 * 查询单条
+	 */
+	@GetMapping("/detail/{id}")
+	@ApiOperation(value = "详情", notes = "传入id")
+	public HttpResponseResult<MemberPriceSettingsVo> detail(@PathVariable("id") Long id) {
+		return succeed(memberPriceSettingsService.detail(id));
+	}
+
+	/**
+	 * 查询分页
+	 */
+	@GetMapping("/list")
+	@ApiOperation(value = "查询分页", notes = "传入memberPriceSettingsSearch")
 	@PreAuthorize("@pcs.hasPermissions('memberPriceSettings/list')")
-	public HttpResponseResult<PageInfo<MemberPriceSettings>> getList(QueryInfo queryInfo) {
-		return succeed(memberPriceSettingsService.queryPage(queryInfo));
+	public HttpResponseResult<PageInfo<MemberPriceSettingsVo>> page(MemberPriceSettingsSearch query) {
+		IPage<MemberPriceSettingsVo> pages = memberPriceSettingsService.selectPage(PageUtil.getPage(query), query);
+		return succeed(PageUtil.pageInfo(pages));
 	}
 
-	@ApiOperation("更新")
+	/**
+	 * 修改
+	 */
 	@PostMapping(value = "/update", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
+	@ApiOperation(value = "修改", notes = "传入memberPriceSettings")
 	@PreAuthorize("@pcs.hasPermissions('memberPriceSettings/update')")
-	public HttpResponseResult<Object> update(@RequestBody MemberPriceSettings memberPriceSettings) {
+	public HttpResponseResult<Boolean> update(@Valid @RequestBody MemberPriceSettings memberPriceSettings) {
 		SysUser user = sysUserFeignService.queryUserInfo();
-
 		if (user == null || user.getId() == null) {
 			return failed(HttpStatus.FORBIDDEN, "请登录");
 		}
-		memberPriceSettings.setUpdateBy(user.getId()).setUpdateTime(new Date());
-		memberPriceSettingsService.update(memberPriceSettings);
-		return succeed();
+		memberPriceSettings.setUpdateBy(user.getId());
+		memberPriceSettings.setUpdateTime(new Date());
+		return status(memberPriceSettingsService.updateById(memberPriceSettings));
 	}
 }

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

@@ -64,7 +64,7 @@ public class MusicAlbumController extends BaseController {
             return failed("用户信息获取失败");
         }
 
-        return succeed(musicAlbumService.removeById(id));
+        return succeed(musicAlbumService.del(id));
     }
 
     @ApiOperation(value = "修改", httpMethod="POST", consumes="application/json", produces="application/json")

+ 0 - 86
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/UserBankCardController.java

@@ -1,86 +0,0 @@
-package com.yonge.cooleshow.admin.controller;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-
-import com.yonge.cooleshow.biz.dal.support.PageUtil;
-import com.yonge.cooleshow.common.controller.BaseController;
-import com.yonge.cooleshow.common.entity.HttpResponseResult;
-import com.yonge.cooleshow.common.page.PageInfo;
-import com.yonge.toolset.utils.string.StringUtil;
-import io.swagger.annotations.*;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-
-import javax.validation.Valid;
-
-import com.yonge.cooleshow.biz.dal.vo.UserBankCardVo;
-import com.yonge.cooleshow.biz.dal.dto.search.UserBankCardSearch;
-import com.yonge.cooleshow.biz.dal.entity.UserBankCard;
-import com.yonge.cooleshow.biz.dal.service.UserBankCardService;
-
-@RestController
-@RequestMapping("/userBankCard")
-@Api(value = "用户绑卡记录表", tags = "用户绑卡记录表")
-public class UserBankCardController extends BaseController {
-
-    @Autowired
-    private UserBankCardService userBankCardService;
-
-	/**
-     * 查询单条
-     */
-    @GetMapping("/detail/{id}")
-    @ApiOperation(value = "详情", notes = "传入id")
-    public HttpResponseResult<UserBankCardVo> detail(@PathVariable("id") Long id) {
-    	return succeed(userBankCardService.detail(id));
-	}
-    
-    /**
-     * 查询分页
-     */
-    @PostMapping("/page")
-    @ApiOperation(value = "查询分页", notes = "传入userBankCardSearch")
-    public HttpResponseResult<PageInfo<UserBankCardVo>> page(@RequestBody UserBankCardSearch query) {
-		IPage<UserBankCardVo> pages = userBankCardService.selectPage(PageUtil.getPage(query), query);
-        return succeed(PageUtil.pageInfo(pages));
-	}
-    
-    /**
-	 * 新增
-	 */
-	@PostMapping("/save")
-	@ApiOperation(value = "新增", notes = "传入userBankCard")
-	public HttpResponseResult save(@Valid @RequestBody UserBankCard userBankCard) {
-    	return status(userBankCardService.save(userBankCard));
-	}
-    
-    /**
-	 * 修改
-	 */
-	@PostMapping("/update")
-	@ApiOperation(value = "修改", notes = "传入userBankCard")
-	public HttpResponseResult update(@Valid @RequestBody UserBankCard userBankCard) {
-        return status(userBankCardService.updateById(userBankCard));
-	}
-    
-    /**
-	 * 新增或修改
-	 */
-    @PostMapping("/submit")
-    @ApiOperation(value = "新增或修改", notes = "传入userBankCard")
-	public HttpResponseResult submit(@Valid @RequestBody UserBankCard userBankCard) {
-        return status(userBankCardService.saveOrUpdate(userBankCard));
-    }
-
- 	/**
-	 * 删除
-	 */
-	@PostMapping("/remove")
-	@ApiOperation(value = "逻辑删除", notes = "传入ids")
-	public HttpResponseResult remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
-        if (StringUtil.isEmpty(ids)) {
-			return failed("参数不能为空");
-		}
-		return status(userBankCardService.removeByIds(StringUtil.toLongList(ids)));
-	}
-}

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

@@ -23,7 +23,7 @@ import java.util.List;
 
 @RestController
 @RequestMapping("/userOrder")
-@Api(value = "平台订单表", tags = "平台订单表")
+@Api(value = "订单管理", tags = "订单管理")
 public class UserOrderController extends BaseController {
 
     @Autowired

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

@@ -34,7 +34,7 @@ import java.util.*;
 
 @RestController
 @RequestMapping("/userWithdrawal")
-@Api(value = "用户账户提现", tags = "用户账户提现")
+@Api(value = "用户提现", tags = "用户提现")
 public class UserWithdrawalController extends BaseController {
     @Autowired
     private SysUserFeignService sysUserFeignService;

+ 7 - 2
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/VideoLessonController.java

@@ -88,7 +88,7 @@ public class VideoLessonController extends BaseController {
      */
     @ApiOperation(value = "老师详情-视频课详情-教学计划", httpMethod = "POST", consumes = "application/json", produces = "application/json")
     @PostMapping(value = "/teacher/plan", consumes = "application/json", produces = "application/json")
-    public HttpResponseResult<PageInfo<VideoLessonGroupDetail>> page(@Validated(SelectGroup.class) @RequestBody VideoLessonSearch search) {
+    public HttpResponseResult<PageInfo<VideoLessonGroupDetailVo>> page(@Validated(SelectGroup.class) @RequestBody VideoLessonSearch search) {
         return succeed(PageUtil.pageInfo(videoLessonGroupDetailService.selectPage(PageUtil.getPage(search), search)));
     }
 
@@ -108,7 +108,7 @@ public class VideoLessonController extends BaseController {
      * @Author: cy
      * @Date: 2022/4/20
      */
-    @ApiOperation(value = "审核-根据视频课组id查视频课详情", httpMethod = "POST", consumes = "application/json", produces = "application/json")
+    @ApiOperation(value = "审核-根据视频课组id查视频课详情")
     @GetMapping("/queryLessonInfo")
     public HttpResponseResult<List<VideoLessonGroupDetail>> queryLessonInfo(Integer groupId) {
         QueryWrapper<VideoLessonGroupDetail> queryWrapper = new QueryWrapper<>();
@@ -116,6 +116,11 @@ public class VideoLessonController extends BaseController {
         return succeed(videoLessonGroupDetailService.list(queryWrapper));
     }
 
+    /**
+     * @Description: 审核-修改视频课组审核状态
+     * @Author: cy
+     * @Date: 2022/4/25
+     */
     @ApiOperation(value = "审核-修改视频课组审核状态", httpMethod = "POST", consumes = "application/json", produces = "application/json")
     @PostMapping(value = "/updateGroup", consumes = "application/json", produces = "application/json")
     public HttpResponseResult<Object> update(@Validated @RequestBody VideoLessonExamineVo examineVo) {

+ 0 - 69
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/VipCardController.java

@@ -1,69 +0,0 @@
-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.common.controller.BaseController;
-import com.yonge.cooleshow.common.entity.HttpResponseResult;
-
-import io.swagger.annotations.*;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.*;
-
-import javax.validation.Valid;
-
-import com.yonge.cooleshow.biz.dal.vo.VipCardVo;
-import com.yonge.cooleshow.biz.dal.entity.VipCard;
-import com.yonge.cooleshow.biz.dal.service.VipCardService;
-
-import java.util.Date;
-import java.util.List;
-
-@RestController
-@RequestMapping("/vipCard")
-@Api(value = "会员卡表", tags = "会员卡表")
-public class VipCardController extends BaseController {
-
-    @Autowired
-    private VipCardService vipCardService;
-    @Autowired
-    private SysUserFeignService sysUserFeignService;
-
-	/**
-     * 查询单条
-     */
-    @GetMapping("/detail/{id}")
-    @ApiOperation(value = "详情", notes = "传入id")
-    @PreAuthorize("@pcs.hasPermissions('vipCard/detail')")
-    public HttpResponseResult<VipCardVo> detail(@PathVariable("id") Long id) {
-    	return succeed(vipCardService.detail(id));
-	}
-    
-    /**
-     * 查询分页
-     */
-    @PostMapping("/list")
-    @ApiOperation(value = "查询列表")
-    @PreAuthorize("@pcs.hasPermissions('vipCard/list')")
-    public HttpResponseResult<List<VipCardVo>> list() {
-		List<VipCardVo> list = vipCardService.selectList();
-        return succeed(list);
-	}
-    
-    /**
-	 * 修改
-	 */
-	@PostMapping("/update")
-	@ApiOperation(value = "修改", notes = "传入vipCard")
-    @PreAuthorize("@pcs.hasPermissions('vipCard/update')")
-    public HttpResponseResult update(@Valid @RequestBody VipCard vipCard) {
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if (user == null || null == user.getId()) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        vipCard.setUpdateBy(user.getId());
-        vipCard.setUpdateTime(new Date());
-        return status(vipCardService.updateById(vipCard));
-	}
-}

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

@@ -7,7 +7,6 @@ import com.yonge.cooleshow.biz.dal.dto.PracticeScheduleDto;
 import com.yonge.cooleshow.biz.dal.dto.search.HomeworkSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.MyCourseSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.PracticeTeacherSearch;
-import com.yonge.cooleshow.biz.dal.dto.search.VideoLessonGroupSearch;
 import com.yonge.cooleshow.biz.dal.entity.CourseSchedule;
 import com.yonge.cooleshow.biz.dal.vo.*;
 import org.apache.ibatis.annotations.Param;

+ 31 - 3
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/MemberPriceSettingsDao.java

@@ -1,9 +1,37 @@
 package com.yonge.cooleshow.biz.dal.dao;
 
-import com.yonge.cooleshow.common.dal.BaseDAO;
+import java.util.List;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
 import com.yonge.cooleshow.biz.dal.entity.MemberPriceSettings;
+import com.yonge.cooleshow.biz.dal.vo.MemberPriceSettingsVo;
+import com.yonge.cooleshow.biz.dal.dto.search.MemberPriceSettingsSearch;
+
 
-public interface MemberPriceSettingsDao extends BaseDAO<Integer, MemberPriceSettings> {
+public interface MemberPriceSettingsDao extends BaseMapper<MemberPriceSettings>{
+    /**
+     * 查询详情
+     * @author liweifan
+     * @date 2022-04-25 14:34:49
+     * @return: com.yonge.cooleshow.biz.dal.vo.MemberPriceSettingsVo
+     */
+    MemberPriceSettingsVo detail(@Param("id") Long id);
 
-	
+    /**
+     * 分页查询
+     * @author liweifan
+     * @date 2022-04-25 14:34:49
+     * @return: com.yonge.cooleshow.biz.dal.vo.MemberPriceSettingsVo
+     */
+    List<MemberPriceSettingsVo> selectPage(@Param("page") IPage page, @Param("param") MemberPriceSettingsSearch param);
+    /***
+     * 查询集合
+     * @author liweifan
+     * @param: param
+     * @updateTime 2022/4/25 14:58
+     * @return: java.util.List<com.yonge.cooleshow.biz.dal.vo.MemberPriceSettingsVo>
+     */
+    List<MemberPriceSettingsVo> selectList(@Param("param") MemberPriceSettingsSearch param);
 }

+ 0 - 9
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/TeacherAuthEntryRecordDao.java

@@ -18,15 +18,6 @@ public interface TeacherAuthEntryRecordDao extends BaseMapper<TeacherAuthEntryRe
 	List<TeacherAuthEntryRecordVo> selectPage(@Param("page")IPage page,@Param("param") AuthEntryRecordSearch search);
 
 	/***
-	 * 修改用户实名信息
-	 * @author liweifan
-	 * @param: teacherApplyDetailDto
-	 * @updateTime 2022/3/18 15:57
-	 * @return: java.lang.Integer
-	 */
-	Integer updateUserCard(@Param("param") TeacherApplyDetailReq teacherApplyDetailDto);
-
-	/***
 	 * 根据老师id查询详情
 	 * @author liweifan
 	 * @param: id

+ 9 - 6
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/TeacherFreeTimeDao.java

@@ -20,11 +20,11 @@ public interface TeacherFreeTimeDao extends BaseMapper<TeacherFreeTime> {
     int insertBatch(@Param("entities") List<TeacherFreeTime> entities);
 
     /**
-     * @description: 获取老师陪练课设置
      * @param teacherId
      * @param courseMinutes
      * @param freeMinutes
      * @return com.yonge.cooleshow.biz.dal.entity.TeacherFreeTime
+     * @description: 获取老师陪练课设置
      * @author zx
      * @date 2022/3/25 10:25
      */
@@ -33,12 +33,12 @@ public interface TeacherFreeTimeDao extends BaseMapper<TeacherFreeTime> {
                             @Param("freeMinutes") Integer freeMinutes);
 
     /**
-    * @description: 修改默认配置
      * @param defaultFlag
-    * @return void
-    * @author zx
-    * @date 2022/3/29 10:02
-    */
+     * @return void
+     * @description: 修改默认配置
+     * @author zx
+     * @date 2022/3/29 10:02
+     */
     void updateDefaultFlag(@Param("defaultFlag") boolean defaultFlag, @Param("teacherId") Long teacherId);
 
     //根据id删除关联表数据
@@ -52,5 +52,8 @@ public interface TeacherFreeTimeDao extends BaseMapper<TeacherFreeTime> {
 
     //根据id查声部售价
     List<TeacherSubjectPrice> getPrice(Long id);
+
+    //查询老师声部默认售价
+    TeacherSubjectPrice selectSubjectPrice(@Param("teacherId") Long teacherId, @Param("subjectId") Long subjectId);
 }
 

+ 16 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/VideoLessonAuthRecordDao.java

@@ -0,0 +1,16 @@
+package com.yonge.cooleshow.biz.dal.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yonge.cooleshow.biz.dal.entity.VideoLessonAuthRecord;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @Author: cy
+ * @Date: 2022/4/24
+ */
+public interface VideoLessonAuthRecordDao extends BaseMapper<VideoLessonAuthRecord> {
+    //更新审核视频课组id
+    void updateIds(@Param("list") List<Long> list, @Param("groupId") Long groupId);
+}

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

@@ -5,6 +5,7 @@ import com.yonge.cooleshow.biz.dal.dto.search.VideoLessonSearch;
 import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroupDetail;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupDetailUpVo;
+import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupDetailVo;
 import com.yonge.cooleshow.biz.dal.vo.VideoLessonPurchaseStudent;
 import org.apache.ibatis.annotations.Param;
 
@@ -31,4 +32,6 @@ public interface VideoLessonGroupDetailDao extends BaseMapper<VideoLessonGroupDe
 
     //根据组id删除视频课
     void deleteByGroupId(Long groupId);
+
+    List<VideoLessonGroupDetailVo> selectPageAuth(IPage page, @Param("param") VideoLessonSearch query);
 }

+ 0 - 27
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/VipCardDao.java

@@ -1,27 +0,0 @@
-package com.yonge.cooleshow.biz.dal.dao;
-
-import java.util.List;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Param;
-import com.yonge.cooleshow.biz.dal.entity.VipCard;
-import com.yonge.cooleshow.biz.dal.vo.VipCardVo;
-
-
-public interface VipCardDao extends BaseMapper<VipCard>{
-	/**
-	 * 查询详情
-     * @author liweifan
-     * @date 2022-04-13 13:36:48
-     * @return: com.yonge.cooleshow.biz.dal.vo.VipCardVo
-	 */
-	VipCardVo detail(@Param("id") Long id);
-	/***
-	 * 查询集合
-	 * @author liweifan
-	 * @updateTime 2022/4/13 14:02
-	 * @return: java.util.List<com.yonge.cooleshow.biz.dal.vo.VipCardVo>
-	 */
-	List<VipCardVo> selectList();
-	
-}

+ 38 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/MusicSheetPayDto.java

@@ -0,0 +1,38 @@
+package com.yonge.cooleshow.biz.dal.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+
+/**
+ * Description 曲目购买参数
+ *
+ * @author liujunchi
+ * @date 2022-04-21
+ */
+@ApiModel("曲目购买参数")
+public class MusicSheetPayDto {
+
+    @ApiModelProperty("曲目id")
+    private Long musicSheetId;
+
+    @ApiModelProperty("订单金额")
+    private BigDecimal actualPrice;
+
+    public Long getMusicSheetId() {
+        return musicSheetId;
+    }
+
+    public void setMusicSheetId(Long musicSheetId) {
+        this.musicSheetId = musicSheetId;
+    }
+
+    public BigDecimal getActualPrice() {
+        return actualPrice;
+    }
+
+    public void setActualPrice(BigDecimal actualPrice) {
+        this.actualPrice = actualPrice;
+    }
+}

+ 3 - 3
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/PracticeScheduleDto.java

@@ -28,7 +28,7 @@ public class PracticeScheduleDto implements Serializable {
     @ApiModelProperty(value = "课程组名称")
     private String courseGroupName;
     @ApiModelProperty(value = "声部id")
-    private String subjectId;
+    private Long subjectId;
     @ApiModelProperty(value = "单课时长")
     private Integer singleCourseMinutes;
     @ApiModelProperty(value = "课程数")
@@ -98,11 +98,11 @@ public class PracticeScheduleDto implements Serializable {
         this.courseGroupName = courseGroupName;
     }
 
-    public String getSubjectId() {
+    public Long getSubjectId() {
         return subjectId;
     }
 
-    public void setSubjectId(String subjectId) {
+    public void setSubjectId(Long subjectId) {
         this.subjectId = subjectId;
     }
 

+ 2 - 3
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/UserAccountRecordDto.java

@@ -7,7 +7,6 @@ import com.yonge.cooleshow.biz.dal.enums.InOrOutEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
-import java.io.Serializable;
 import java.math.BigDecimal;
 
 /**
@@ -35,14 +34,14 @@ public class UserAccountRecordDto extends UserAccountRecord {
     }
 
     public UserAccountRecordDto(Long userId, BigDecimal transAmount, InOrOutEnum inOrOut, AccountBizTypeEnum bizType,
-                                Long bizId, String bizName, Long orderId) {
+                                Long bizId, String bizName, String orderNo) {
         this.userId = userId;
         this.setTransAmount(transAmount);
         this.setInOrOut(inOrOut);
         this.setBizType(bizType);
         this.setBizId(bizId);
         this.setBizName(bizName);
-        this.setOrderId(orderId);
+        this.setOrderNo(orderNo);
     }
 
     public Long getUserId() {

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

@@ -0,0 +1,14 @@
+package com.yonge.cooleshow.biz.dal.dto.search;
+
+import com.yonge.cooleshow.common.page.QueryInfo;
+import io.swagger.annotations.ApiModel;
+
+/**
+ * @Author: liweifan
+ * @Data: 2022-04-25 14:34:49
+ */
+@ApiModel(value = "MemberPriceSettingsSearch对象", description = "查询对象")
+public class MemberPriceSettingsSearch extends QueryInfo{
+	private static final long serialVersionUID = 1L;
+
+}

+ 83 - 91
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/MemberPriceSettings.java

@@ -1,125 +1,117 @@
 package com.yonge.cooleshow.biz.dal.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.yonge.cooleshow.biz.dal.enums.PeriodEnum;
+import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-
-import com.yonge.cooleshow.biz.dal.enums.PeriodEnum;
+import java.io.Serializable;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
 
-/**
- * 对应数据库表(member_price_settings):
- */
-public class MemberPriceSettings {
+import javax.validation.constraints.PositiveOrZero;
+import java.math.BigDecimal;
 
-	@ApiModelProperty(value = "",required = false)
-	private Integer id;
-	
-	@ApiModelProperty(value = "周期",required = false)
+@TableName("member_price_settings")
+@ApiModel(value = "MemberPriceSettings对象", description = "")
+public class MemberPriceSettings implements Serializable {
+	private static final long serialVersionUID = 1L;
+	@TableId(value = "id_", type = IdType.AUTO)
+	private Long id;
+	@ApiModelProperty("周期 ")
+	@TableField(value = "period_")
 	private PeriodEnum period;
-	
-	@ApiModelProperty(value = "销售价",required = false)
-	private java.math.BigDecimal salePrice;
-	
-	@ApiModelProperty(value = "原价",required = false)
-	private java.math.BigDecimal originalPrice;
-	
-	@ApiModelProperty(value = "创建时间",required = false)
-	private java.util.Date createTime;
-	
-	@ApiModelProperty(value = "更新时间",required = false)
-	private java.util.Date updateTime;
-	
-	@ApiModelProperty(value = "创建人",required = false)
+	@PositiveOrZero(message = "销售价必须大于等于0")
+	@ApiModelProperty("销售价 ")
+	@TableField(value = "sale_price_")
+	private BigDecimal salePrice;
+	@PositiveOrZero(message = "原价必须大于等于0")
+	@ApiModelProperty("原价 ")
+	@TableField(value = "original_price_")
+	private BigDecimal originalPrice;
+	@ApiModelProperty("创建时间 ")
+	@TableField(value = "create_time_")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+	private Date createTime;
+	@ApiModelProperty("更新时间 ")
+	@TableField(value = "update_time_")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+	private Date updateTime;
+	@ApiModelProperty("创建人 ")
+	@TableField(value = "create_by_")
 	private Long createBy;
-	
-	@ApiModelProperty(value = "更新人",required = false)
+	@ApiModelProperty("更新人 ")
+	@TableField(value = "update_by_")
 	private Long updateBy;
-	
-	private String modifierName;
-	
-	public MemberPriceSettings setId(Integer id){
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
 		this.id = id;
-		return this;
 	}
-	
-	public Integer getId(){
-		return this.id;
+
+	public PeriodEnum getPeriod() {
+		return period;
 	}
-			
-	public MemberPriceSettings setPeriod(PeriodEnum period){
+
+	public void setPeriod(PeriodEnum period) {
 		this.period = period;
-		return this;
 	}
-	
-	public PeriodEnum getPeriod(){
-		return this.period;
+
+	public BigDecimal getSalePrice() {
+		return salePrice;
 	}
-			
-	public MemberPriceSettings setSalePrice(java.math.BigDecimal salePrice){
+
+	public void setSalePrice(BigDecimal salePrice) {
 		this.salePrice = salePrice;
-		return this;
 	}
-	
-	public java.math.BigDecimal getSalePrice(){
-		return this.salePrice;
+
+	public BigDecimal getOriginalPrice() {
+		return originalPrice;
 	}
-			
-	public MemberPriceSettings setOriginalPrice(java.math.BigDecimal originalPrice){
+
+	public void setOriginalPrice(BigDecimal originalPrice) {
 		this.originalPrice = originalPrice;
-		return this;
 	}
-	
-	public java.math.BigDecimal getOriginalPrice(){
-		return this.originalPrice;
+
+	public Date getCreateTime() {
+		return createTime;
 	}
-			
-	public MemberPriceSettings setCreateTime(java.util.Date createTime){
+
+	public void setCreateTime(Date createTime) {
 		this.createTime = createTime;
-		return this;
 	}
-	
-	public java.util.Date getCreateTime(){
-		return this.createTime;
+
+	public Date getUpdateTime() {
+		return updateTime;
 	}
-			
-	public MemberPriceSettings setUpdateTime(java.util.Date updateTime){
+
+	public void setUpdateTime(Date updateTime) {
 		this.updateTime = updateTime;
-		return this;
 	}
-	
-	public java.util.Date getUpdateTime(){
-		return this.updateTime;
+
+	public Long getCreateBy() {
+		return createBy;
 	}
-			
-	public MemberPriceSettings setCreateBy(Long createBy){
+
+	public void setCreateBy(Long createBy) {
 		this.createBy = createBy;
-		return this;
-	}
-	
-	public Long getCreateBy(){
-		return this.createBy;
-	}
-			
-	public MemberPriceSettings setUpdateBy(Long updateBy){
-		this.updateBy = updateBy;
-		return this;
-	}
-	
-	public Long getUpdateBy(){
-		return this.updateBy;
-	}
-			
-	public String getModifierName() {
-		return modifierName;
 	}
 
-	public void setModifierName(String modifierName) {
-		this.modifierName = modifierName;
+	public Long getUpdateBy() {
+		return updateBy;
 	}
 
-	@Override
-	public String toString() {
-		return ToStringBuilder.reflectionToString(this);
+	public void setUpdateBy(Long updateBy) {
+		this.updateBy = updateBy;
 	}
 
-}
+}

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

@@ -76,6 +76,9 @@ public class MusicAlbum extends BaseEntity {
     @ApiModelProperty(value = "更新人")
     private Long updateBy;  //更新人
 
+	@TableField("del_flag_")
+	@ApiModelProperty("假删除标识 0:未删除 1:已删除")
+	private Boolean delFlag;
 
 	public MusicAlbum setId(Long id) {
 	    this.id = id;
@@ -200,4 +203,11 @@ public class MusicAlbum extends BaseEntity {
         return ToStringBuilder.reflectionToString(this);
     }
 
+	public Boolean getDelFlag() {
+		return delFlag;
+	}
+
+	public void setDelFlag(Boolean delFlag) {
+		this.delFlag = delFlag;
+	}
 }

+ 27 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/MusicSheetPurchaseRecord.java

@@ -8,6 +8,8 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang3.builder.ToStringBuilder;
+
+import java.math.BigDecimal;
 import java.util.Date;
 
 /**
@@ -47,10 +49,35 @@ public class MusicSheetPurchaseRecord extends BaseEntity {
     @ApiModelProperty(value = "购买价格")
     private java.math.BigDecimal purchasePrice;  //购买价格
 
+
+	@TableField("original_price_")
+	@ApiModelProperty(value = "原价")
+	private BigDecimal originalPrice;
+
+
+	@TableField("music_sheet_service_fee")
+	@ApiModelProperty("服务费")
+	private BigDecimal musicSheetServiceFee;
+
     @TableField("order_status_")
     @ApiModelProperty(value = "订单状态(1:已完成;0:取消)")
     private YesOrNoEnum orderStatus;  //订单状态(1:已完成;0:取消)
 
+	public BigDecimal getOriginalPrice() {
+		return originalPrice;
+	}
+
+	public void setOriginalPrice(BigDecimal originalPrice) {
+		this.originalPrice = originalPrice;
+	}
+
+	public BigDecimal getMusicSheetServiceFee() {
+		return musicSheetServiceFee;
+	}
+
+	public void setMusicSheetServiceFee(BigDecimal musicSheetServiceFee) {
+		this.musicSheetServiceFee = musicSheetServiceFee;
+	}
 
 	public MusicSheetPurchaseRecord setId(Long id) {
 	    this.id = id;

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

@@ -46,9 +46,9 @@ public class UserAccountRecord implements Serializable {
     @ApiModelProperty("业务名称 ")
     @TableField(value = "biz_name_")
     private String bizName;
-    @ApiModelProperty("订单id ")
-    @TableField(value = "order_id_")
-    private Long orderId;
+    @ApiModelProperty("订单 ")
+    @TableField(value = "order_no_")
+    private String orderNo;
     @ApiModelProperty("创建时间 ")
     @TableField(value = "create_time_")
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@@ -119,12 +119,12 @@ public class UserAccountRecord implements Serializable {
         this.bizName = bizName;
     }
 
-    public Long getOrderId() {
-        return orderId;
+    public String getOrderNo() {
+        return orderNo;
     }
 
-    public void setOrderId(Long orderId) {
-        this.orderId = orderId;
+    public void setOrderNo(String orderNo) {
+        this.orderNo = orderNo;
     }
 
     public Date getCreateTime() {

+ 113 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/VideoLessonAuthRecord.java

@@ -0,0 +1,113 @@
+package com.yonge.cooleshow.biz.dal.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.yonge.cooleshow.common.entity.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+
+/**
+ * @Author: cy
+ * @Date: 2022/4/24
+ */
+@ApiModel(value = "videoLessonAuthRecord")
+public class VideoLessonAuthRecord extends BaseEntity {
+    @TableId(value = "id_", type = IdType.AUTO)
+    @ApiModelProperty(value = "主键id")
+    private Long id;
+
+    @TableField("video_group_id_")
+    @ApiModelProperty(value = "视频课组id")
+    private Long videoGroupId;
+
+    @TableField("audit_status_")
+    @ApiModelProperty(value = "审核状态(DOING:待审核,PASS:通过,UNPASS:拒绝)")
+    private String auditStatus;
+
+    @TableField("audit_name_")
+    @ApiModelProperty(value = "审批人姓名")
+    private String auditName;
+
+    @TableField("audit_id_")
+    @ApiModelProperty(value = "审批人id")
+    private Long auditId;
+
+    @TableField("remarks")
+    @ApiModelProperty(value = "备注")
+    private String remarks;
+
+    @TableField("create_time_")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+    @TableField("update_time_")
+    @ApiModelProperty(value = "修改时间")
+    private Date updateTime;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getVideoGroupId() {
+        return videoGroupId;
+    }
+
+    public void setVideoGroupId(Long videoGroupId) {
+        this.videoGroupId = videoGroupId;
+    }
+
+    public String getAuditStatus() {
+        return auditStatus;
+    }
+
+    public void setAuditStatus(String auditStatus) {
+        this.auditStatus = auditStatus;
+    }
+
+    public String getAuditName() {
+        return auditName;
+    }
+
+    public void setAuditName(String auditName) {
+        this.auditName = auditName;
+    }
+
+    public Long getAuditId() {
+        return auditId;
+    }
+
+    public void setAuditId(Long auditId) {
+        this.auditId = auditId;
+    }
+
+    public String getRemarks() {
+        return remarks;
+    }
+
+    public void setRemarks(String remarks) {
+        this.remarks = remarks;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+}

+ 30 - 7
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/VideoLessonPurchaseRecord.java

@@ -8,6 +8,8 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
+import java.math.BigDecimal;
+
 /**
  * 视频课购买记录表
  * @author yzp
@@ -31,20 +33,43 @@ public class VideoLessonPurchaseRecord extends BaseEntity {
 
     @TableField("purchase_time_")
     @ApiModelProperty(value = "购买时间")
-    private java.util.Date purchaseTime;  //购买时间
+    private java.util.Date purchaseTime;
+
+	@TableField("original_price_")
+	@ApiModelProperty(value = "原价")
+	private BigDecimal originalPrice;
+
+	@TableField("expect_price_")
+	@ApiModelProperty(value = "预计价格")
+	private BigDecimal expectPrice;
 
     @TableField("pay_money_")
     @ApiModelProperty(value = "支付金额")
-    private java.math.BigDecimal payMoney;  //支付金额
+    private BigDecimal payMoney;
 
     @TableField("order_no_")
     @ApiModelProperty(value = "订单流水号")
-    private String orderNo;  //订单流水号
+    private String orderNo;
 
     @TableField("order_status_")
-    @ApiModelProperty(value = "订单状态(1:已完成;0:取消)")
-    private Integer orderStatus;  //订单状态(1:已完成;0:取消)
+    @ApiModelProperty(value = "订单状态(1:已完成;0:取消/支付中)")
+    private Integer orderStatus;
+
+	public BigDecimal getOriginalPrice() {
+		return originalPrice;
+	}
+
+	public void setOriginalPrice(BigDecimal originalPrice) {
+		this.originalPrice = originalPrice;
+	}
+
+	public BigDecimal getExpectPrice() {
+		return expectPrice;
+	}
 
+	public void setExpectPrice(BigDecimal expectPrice) {
+		this.expectPrice = expectPrice;
+	}
 
 	public VideoLessonPurchaseRecord setId(Long id) {
 	    this.id = id;
@@ -109,10 +134,8 @@ public class VideoLessonPurchaseRecord extends BaseEntity {
 	    return this.orderStatus;
 	}
 
-
     @Override
     public String toString() {
         return ToStringBuilder.reflectionToString(this);
     }
-
 }

+ 13 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/PeriodEnum.java

@@ -1,19 +1,31 @@
 package com.yonge.cooleshow.biz.dal.enums;
 
+import com.baomidou.mybatisplus.annotation.EnumValue;
 import com.yonge.cooleshow.common.enums.BaseEnum;
 
 /**
  * 周期
  */
 public enum PeriodEnum implements BaseEnum<String, PeriodEnum> {
-	DAY("日"), MONTH("月"), QUARTERLY("季度"), YEAR_HALF("半年"), YEAR("年");
+	DAY("日"),
+	MONTH("月"),
+	QUARTERLY("季度"),
+	YEAR_HALF("半年"),
+	YEAR("年");
 
+	@EnumValue
+	private String code;
 	private String msg;
 
 	PeriodEnum(String msg) {
+		this.code = this.name();
 		this.msg = msg;
 	}
 
+	public void setCode(String code) {
+		this.code = code;
+	}
+
 	public String getMsg() {
 		return msg;
 	}

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

@@ -1,8 +1,55 @@
 package com.yonge.cooleshow.biz.dal.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yonge.cooleshow.biz.dal.dto.req.OrderReq;
+import com.yonge.cooleshow.biz.dal.vo.MemberPriceSettingsVo;
+import com.yonge.cooleshow.biz.dal.dto.search.MemberPriceSettingsSearch;
 import com.yonge.cooleshow.biz.dal.entity.MemberPriceSettings;
-import com.yonge.cooleshow.common.service.BaseService;
+import com.yonge.cooleshow.biz.dal.vo.UserOrderDetailVo;
+import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
 
-public interface MemberPriceSettingsService extends BaseService<Integer, MemberPriceSettings> {
+import java.util.List;
 
+/**
+ *  服务类
+ * @author liweifan
+ * @date 2022-04-25
+ */
+public interface MemberPriceSettingsService extends IService<MemberPriceSettings>  {
+    /**
+     * 查询详情
+     * @author liweifan
+     * @date 2022-04-25
+     */
+    MemberPriceSettingsVo detail(Long id);
+    /**
+     * 分页查询
+     * @author liweifan
+     * @date 2022-04-25
+     */
+    IPage<MemberPriceSettingsVo> selectPage(IPage<MemberPriceSettingsVo> page, MemberPriceSettingsSearch query);
+    /***
+     * 查询列表
+     * @author liweifan
+     * @updateTime 2022/4/25 14:55
+     * @return: java.util.List<com.yonge.cooleshow.biz.dal.vo.MemberPriceSettingsVo>
+     */
+    List<MemberPriceSettingsVo> selectList(MemberPriceSettingsSearch query);
+    /***
+     * 订单下单前操作
+     * @author liweifan
+     * @param: orderReq
+     * @updateTime 2022/3/31 15:47
+     * @return: com.yonge.cooleshow.common.entity.HttpResponseResult<java.lang.Boolean>
+     */
+    HttpResponseResult<OrderCreateRes> orderCreate(OrderReq.OrderReqInfo orderReqInfo);
+    /***
+     * 订单下单后操作
+     * @author liweifan
+     * @param: orderVo
+     * @updateTime 2022/3/31 17:24
+     */
+    void orderSuccess(UserOrderDetailVo orderDetailVo);
 }

+ 8 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicAlbumService.java

@@ -105,4 +105,12 @@ public interface MusicAlbumService extends IService<MusicAlbum> {
      * @return list
      */
     IPage<MusicAlbumVo> favoriteAlbum(IPage<MusicAlbumVo> page, StudentMusicAlbumSearch search);
+
+    /**
+     * 删除专辑
+     *
+     * @param id
+     * @return
+     */
+    boolean del(Long id);
 }

+ 17 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicSheetService.java

@@ -4,11 +4,14 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.auth.api.enums.SysUserType;
 import com.yonge.cooleshow.biz.dal.dto.MusicSheetDto;
+import com.yonge.cooleshow.biz.dal.dto.req.OrderReq;
 import com.yonge.cooleshow.biz.dal.dto.req.TeacherMusicSheetAuditReq;
 import com.yonge.cooleshow.biz.dal.dto.search.*;
 import com.yonge.cooleshow.biz.dal.entity.MusicSheet;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.yonge.cooleshow.biz.dal.vo.*;
+import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
 
 /**
  * MusicSheetService服务类
@@ -167,4 +170,18 @@ public interface MusicSheetService extends IService<MusicSheet> {
      */
     boolean saveMusicSheet(MusicSheetDto musicSheetDto,Long userId);
 
+    /**
+     * 曲目购买前的验证
+     *
+     * @param orderReqInfo 购买信息
+     * @return
+     */
+    HttpResponseResult<OrderCreateRes> buyMusicSheetCheck(OrderReq.OrderReqInfo orderReqInfo);
+
+    /**
+     * 曲目购买成功后的记录数据
+     *
+     * @param userOrderDetailVo
+     */
+    void buyMusicSheetSuccess(UserOrderDetailVo userOrderDetailVo);
 }

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

@@ -6,6 +6,7 @@ import com.yonge.cooleshow.biz.dal.dto.search.VideoLessonSearch;
 import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroupDetail;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupDetailUpVo;
+import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupDetailVo;
 import com.yonge.cooleshow.biz.dal.vo.VideoLessonPurchaseStudent;
 import com.yonge.cooleshow.biz.dal.vo.VideoLessonStudentVo;
 
@@ -18,7 +19,7 @@ import java.util.List;
  * @version v1.0
  **/
 public interface VideoLessonGroupDetailService extends IService<VideoLessonGroupDetail> {
-    IPage<VideoLessonGroupDetail> selectPage(IPage<VideoLessonGroupDetail> page, VideoLessonSearch query);
+    IPage<VideoLessonGroupDetailVo> selectPage(IPage<VideoLessonGroupDetailVo> page, VideoLessonSearch query);
 
     IPage<VideoLessonPurchaseStudent> selectPageStudent(IPage<VideoLessonPurchaseStudent> page, VideoLessonSearch query);
 
@@ -28,5 +29,5 @@ public interface VideoLessonGroupDetailService extends IService<VideoLessonGroup
 
     void deleteDetail(Long id);
 
-    VideoLessonStudentVo selectVideoLesson(Long groupId);
+    VideoLessonStudentVo selectVideoLesson(Long groupId,Long userId);
 }

+ 0 - 49
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/VipCardService.java

@@ -1,49 +0,0 @@
-package com.yonge.cooleshow.biz.dal.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.yonge.cooleshow.biz.dal.dto.req.OrderReq;
-import com.yonge.cooleshow.biz.dal.vo.UserOrderDetailVo;
-import com.yonge.cooleshow.biz.dal.vo.UserOrderVo;
-import com.yonge.cooleshow.biz.dal.vo.VipCardVo;
-import com.yonge.cooleshow.biz.dal.entity.VipCard;
-import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes;
-import com.yonge.cooleshow.common.entity.HttpResponseResult;
-
-import java.util.List;
-
-/**
- * 会员卡表 服务类
- * @author liweifan
- * @date 2022-04-13
- */
-public interface VipCardService extends IService<VipCard>  {
-
-	/**
-     * 查询详情
-     * @author liweifan
- 	 * @date 2022-04-13
-     */
-	VipCardVo detail(Long id);
-	/***
-	 * 查询页面
-	 * @author liweifan
-	 * @updateTime 2022/4/13 13:59
-	 * @return: java.util.List<com.yonge.cooleshow.biz.dal.vo.VipCardVo>
-	 */
-	List<VipCardVo> selectList();
-	/***
-	 * 订单下单前操作
-	 * @author liweifan
-	 * @param: orderReq
-	 * @updateTime 2022/3/31 15:47
-	 * @return: com.yonge.cooleshow.common.entity.HttpResponseResult<java.lang.Boolean>
-	 */
-	HttpResponseResult<OrderCreateRes> orderCreate(OrderReq.OrderReqInfo orderReqInfo);
-	/***
-	 * 订单下单后操作
-	 * @author liweifan
-	 * @param: orderVo
-	 * @updateTime 2022/3/31 17:24
-	 */
-	void orderSuccess(UserOrderDetailVo orderDetailVo);
-}

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

@@ -50,6 +50,8 @@ import org.springframework.transaction.annotation.Transactional;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
@@ -674,9 +676,13 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
      */
     public void openCourseGroup() {
         LocalDate toDay = LocalDate.now();
+        LocalDateTime startDay = LocalDateTime.of(toDay, LocalTime.MIN);
+        LocalDateTime endDay = LocalDateTime.of(toDay, LocalTime.MAX);
+
         //查询今天未开售的课程组
         List<CourseGroup> courseGroupList = this.list(Wrappers.<CourseGroup>lambdaQuery()
-                .eq(CourseGroup::getSalesStartDate, toDay.toString())
+                .ge(CourseGroup::getSalesStartDate, startDay)
+                .lt(CourseGroup::getSalesStartDate, endDay)
                 .eq(CourseGroup::getStatus, CourseGroupEnum.NOT_SALE.getCode()));
         if (CollectionUtils.isEmpty(courseGroupList)) {
             return;

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

@@ -12,6 +12,7 @@ import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dao.CourseScheduleDao;
 import com.yonge.cooleshow.biz.dal.dao.CourseScheduleRepliedDao;
 import com.yonge.cooleshow.biz.dal.dao.CourseScheduleStudentPaymentDao;
+import com.yonge.cooleshow.biz.dal.dao.TeacherFreeTimeDao;
 import com.yonge.cooleshow.biz.dal.dto.PracticeScheduleDto;
 import com.yonge.cooleshow.biz.dal.dto.req.OrderReq;
 import com.yonge.cooleshow.biz.dal.dto.search.HomeworkSearch;
@@ -39,6 +40,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 CourseScheduleStudentPaymentService courseScheduleStudentPaymentService;
     @Autowired
     private CourseScheduleTeacherSalaryService courseScheduleTeacherSalaryService;
+    @Autowired
+    private TeacherFreeTimeDao teacherFreeTimeDao;
 
     @Override
     public CourseScheduleDao getDao() {
@@ -808,7 +812,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
      */
     @Transactional(rollbackFor = Exception.class)
     public HttpResponseResult<OrderCreateRes> buyPracticeCourse(OrderReq.OrderReqInfo orderReqInfo) {
-        log.info("学生购买陪练课,请求参数:{}", JSON.toJSONString(orderReqInfo));
+        log.info("buyPracticeCourse  param:{}", JSON.toJSONString(orderReqInfo));
         Long studentId = orderReqInfo.getUserId();
 
         //校验学生信息
@@ -827,7 +831,11 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         baseMapper.addCourseGroup(scheduleDto);
         Long groupId = scheduleDto.getGroupId();
 
-        //获取每节课购买的价格
+        //根据老师id获取默认配置声部原价
+        TeacherSubjectPrice teacherSubjectPrice = teacherFreeTimeDao.selectSubjectPrice(scheduleDto.getTeacherId(), scheduleDto.getSubjectId());
+        BigDecimal subjectPrice = teacherSubjectPrice.getSubjectPrice();
+
+        //每课实际价格
         Map<Integer, BigDecimal> courseAveragePrice = WrapperUtil.getAveragePrice(scheduleDto.getCourseNum(), scheduleDto.getCoursePrice());
 
         List<CourseScheduleDate> classTime = scheduleDto.getClassTime();
@@ -854,9 +862,9 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
             payment.setCourseGroupId(groupId);
             payment.setCourseType(CourseScheduleEnum.PRACTICE.getCode());
             payment.setOrderNo(orderNo);
-            payment.setOriginalPrice(courseAveragePrice.get(i + 1));
-            payment.setExpectPrice(courseAveragePrice.get(i + 1));
-            payment.setActualPrice(courseAveragePrice.get(i + 1));
+            payment.setOriginalPrice(subjectPrice);//原价
+            payment.setExpectPrice(subjectPrice);//预计价格
+            payment.setActualPrice(courseAveragePrice.get(i + 1));//实际价格
             //写入course_schedule_student_payment
             courseScheduleStudentPaymentService.save(payment);
         }
@@ -871,6 +879,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         orderCreateRes.setGoodType(GoodTypeEnum.PRACTICE);
         HttpResponseResult<OrderCreateRes> httpResponseResult = new HttpResponseResult<>();
         httpResponseResult.setData(orderCreateRes);
+        log.info("buyPracticeCourse  return {}", httpResponseResult);
         return httpResponseResult;
     }
 
@@ -879,7 +888,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
      */
     @Transactional(rollbackFor = Exception.class)
     public void buyPracticeCourseSuccess(UserOrderDetailVo orderParam) {
-        log.info("学生购买陪练课-成功-回调,请求参数:{}", JSON.toJSONString(orderParam));
+        log.info("buyPracticeCourseSuccess  param:{}", JSON.toJSONString(orderParam));
         String orderNo = orderParam.getOrderNo();
         List<CourseScheduleStudentPaymentVo> paymentList = paymentDao.selectPaymentList(orderNo);
         if (paymentList.isEmpty()) {
@@ -890,10 +899,16 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         List<Long> scheduleIds = paymentList.stream().map(CourseScheduleStudentPayment::getCourseId).collect(Collectors.toList());
         baseMapper.updateLock(scheduleIds);
 
+        //查询陪练课服务费
+        String practiceServiceRateStr = sysConfigService.findConfigValue(SysConfigConstant.PRACTICE_SERVICE_FEE);
+        BigDecimal practiceServiceRate = new BigDecimal(practiceServiceRateStr).divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
+
         //写course_schedule_teacher_salary
         Date now = new Date();
         List<CourseScheduleTeacherSalary> teacherSalaryList = new ArrayList<>();
         for (CourseScheduleStudentPaymentVo payment : paymentList) {
+            BigDecimal expectPrice = payment.getExpectPrice();//预计价格
+
             CourseScheduleTeacherSalary teacherSalary = new CourseScheduleTeacherSalary();
             teacherSalary.setTeacherId(payment.getTeacherId());
             teacherSalary.setStudentId(payment.getUserId());
@@ -901,14 +916,17 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
             teacherSalary.setCourseGroupType(payment.getCourseType());
             teacherSalary.setCourseGroupId(payment.getCourseGroupId());
             teacherSalary.setClassNum(payment.getClassNum());
-            teacherSalary.setExpectSalary(payment.getExpectPrice());
-            teacherSalary.setActualSalary(payment.getActualPrice());
+            //预计获取学生支付单课全部课酬
+            teacherSalary.setExpectSalary(payment.getActualPrice());
+            //实际获取扣除手续费后课酬
+            teacherSalary.setActualSalary(expectPrice.subtract(expectPrice.multiply(practiceServiceRate)).setScale(2, RoundingMode.HALF_UP));//实际
             teacherSalary.setReduceSalary(BigDecimal.ZERO);
             teacherSalary.setStatus(TeacherSalaryEnum.NOT_START.getCode());
             teacherSalaryList.add(teacherSalary);
             teacherSalary.setCreateTime(now);
         }
         courseScheduleTeacherSalaryService.getDao().insertBatch(teacherSalaryList);
+        log.info("buyPracticeCourseSuccess ok");
     }
 
     /**
@@ -933,8 +951,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         this.removeByIds(scheduleIds);
         //删除course_group数据
         courseGroupService.removeById(courseGroupId);
-
-        //修改订单为失败
+        log.info("buyPracticeCourseFailed ok");
     }
 
     /**

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

@@ -10,6 +10,8 @@ import com.yonge.cooleshow.biz.dal.dto.EmployeeDto;
 import com.yonge.cooleshow.biz.dal.dto.search.EmployeeSearch;
 import com.yonge.cooleshow.biz.dal.vo.EmployeeVo;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
+
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
@@ -69,6 +71,9 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Long, Employee> impleme
                 return HttpResponseResult.failed("该手机号对应用户已经是员工");
             }
             sysUser.setUserType(SysUserType.SYSTEM.getCode() + "," + sysUser.getUserType());
+            if(StringUtils.isNotBlank(param.getUsername())){
+            	sysUser.setUsername(param.getUsername());
+            }
             sysUser.setUpdateTime(new Date());
             employeeDao.updateSysUser(sysUser);
         }

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

@@ -1,23 +1,118 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
-import com.yonge.cooleshow.common.dal.BaseDAO;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yonge.cooleshow.biz.dal.dto.req.OrderReq;
+import com.yonge.cooleshow.biz.dal.entity.VipCardRecord;
+import com.yonge.cooleshow.biz.dal.enums.PeriodEnum;
+import com.yonge.cooleshow.biz.dal.enums.TimeTypeEnum;
+import com.yonge.cooleshow.biz.dal.service.StudentService;
+import com.yonge.cooleshow.biz.dal.service.VipCardRecordService;
+import com.yonge.cooleshow.biz.dal.vo.StudentVo;
+import com.yonge.cooleshow.biz.dal.vo.UserOrderDetailVo;
+import com.yonge.cooleshow.biz.dal.vo.VipCardVo;
+import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import org.springframework.beans.factory.annotation.Autowired;
-import com.yonge.cooleshow.common.service.impl.BaseServiceImpl;
 import org.springframework.stereotype.Service;
-
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import com.yonge.cooleshow.biz.dal.entity.MemberPriceSettings;
-import com.yonge.cooleshow.biz.dal.service.MemberPriceSettingsService;
+import com.yonge.cooleshow.biz.dal.vo.MemberPriceSettingsVo;
+import com.yonge.cooleshow.biz.dal.dto.search.MemberPriceSettingsSearch;
 import com.yonge.cooleshow.biz.dal.dao.MemberPriceSettingsDao;
+import com.yonge.cooleshow.biz.dal.service.MemberPriceSettingsService;
+
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
 
 @Service
-public class MemberPriceSettingsServiceImpl extends BaseServiceImpl<Integer, MemberPriceSettings>  implements MemberPriceSettingsService {
-	
+public class MemberPriceSettingsServiceImpl extends ServiceImpl<MemberPriceSettingsDao, MemberPriceSettings> implements MemberPriceSettingsService {
+	private final static Logger log = LoggerFactory.getLogger(MemberPriceSettingsServiceImpl.class);
+	@Autowired
+	private StudentService studentService;
 	@Autowired
-	private MemberPriceSettingsDao memberPriceSettingsDao;
+	private VipCardRecordService vipCardRecordService;
 
 	@Override
-	public BaseDAO<Integer, MemberPriceSettings> getDAO() {
-		return memberPriceSettingsDao;
+	public MemberPriceSettingsVo detail(Long id) {
+		return baseMapper.detail(id);
 	}
-	
+
+	@Override
+	public IPage<MemberPriceSettingsVo> selectPage(IPage<MemberPriceSettingsVo> page, MemberPriceSettingsSearch query){
+		return page.setRecords(baseMapper.selectPage(page, query));
+	}
+
+	@Override
+	public List<MemberPriceSettingsVo> selectList(MemberPriceSettingsSearch query) {
+		return baseMapper.selectList(query);
+	}
+
+
+	@Override
+	public HttpResponseResult<OrderCreateRes> orderCreate(OrderReq.OrderReqInfo orderReqInfo) {
+		MemberPriceSettingsVo detail = detail(Long.parseLong(orderReqInfo.getBizContent().toString()));
+		if (null == detail) {
+			return HttpResponseResult.failed("未找到会员卡信息");
+		}
+		//插入会员卡信息到会员卡记录表
+		OrderCreateRes orderCreateRes = new OrderCreateRes();
+		orderCreateRes.setRes(true);
+		orderCreateRes.setBizId(detail.getId());
+		orderCreateRes.setBizContent("会员卡购买-" + detail.getPeriod().getMsg());
+		orderCreateRes.setGoodNum(1);
+		orderCreateRes.setOriginalPrice(detail.getOriginalPrice());
+		orderCreateRes.setExpectPrice(detail.getSalePrice());
+		return HttpResponseResult.succeed(orderCreateRes);
+	}
+
+
+	@Override
+	public void orderSuccess(UserOrderDetailVo orderDetailVo) {
+		MemberPriceSettingsVo detail = detail(orderDetailVo.getBizId());
+		if (null == detail) {
+			return;
+		}
+		StudentVo studentVo = studentService.detail(orderDetailVo.getUserId());
+		//修改用户会员时长
+		Date membershipEndTime = studentVo.getMembershipEndTime();
+		Calendar now = Calendar.getInstance();
+
+		VipCardRecord vipCardRecord = new VipCardRecord();
+		vipCardRecord.setUserId(orderDetailVo.getUserId());
+		vipCardRecord.setOrderId(orderDetailVo.getOrderId());
+		vipCardRecord.setVipCardId(detail.getId());
+
+		if (null == membershipEndTime || membershipEndTime.before(new Date())) {
+			//没有会员、会员已过期
+			studentVo.setMembershipStartTime(now.getTime());
+		} else {
+			now.setTime(studentVo.getMembershipEndTime());
+		}
+		vipCardRecord.setStartTime(now.getTime());
+
+		if(PeriodEnum.DAY.equals(detail.getPeriod())){
+			now.add(Calendar.DAY_OF_MONTH, 1);
+		}else if (PeriodEnum.MONTH.equals(detail.getPeriod())) {
+			now.add(Calendar.MONTH, 1);
+		} else if (PeriodEnum.QUARTERLY.equals(detail.getPeriod())) {
+			now.add(Calendar.MONTH, 3);
+		} else if (PeriodEnum.YEAR_HALF.equals(detail.getPeriod())) {
+			now.add(Calendar.MONTH, 6);
+		} else if (PeriodEnum.YEAR.equals(detail.getPeriod())) {
+			now.add(Calendar.YEAR, 1);
+		}
+
+		vipCardRecord.setEndTime(now.getTime());
+		studentVo.setMembershipEndTime(now.getTime());
+		studentVo.setMemberRankSettingId(1l);
+		studentVo.setUpdateTime(new Date());
+		studentService.updateById(studentVo);
+		//会员购买记录入库
+		vipCardRecordService.save(vipCardRecord);
+	}
+
 }

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

@@ -90,6 +90,7 @@ public class MusicAlbumServiceImpl extends ServiceImpl<MusicAlbumDao,MusicAlbum>
         albumDetailVo.setAlbumName(musicAlbum.getAlbumName());
         albumDetailVo.setAlbumDesc(musicAlbum.getAlbumDesc());
         albumDetailVo.setAlbumTag(musicAlbum.getAlbumTag());
+        albumDetailVo.setAlbumStatue(musicAlbum.getAlbumStatus());
         albumDetailVo.setMusicTagNames(musicTagService.getMusicTagNames(StringUtil.toLongList(musicAlbum.getAlbumTag())));
 
         IPage<MusicSheetVo> musicSheetVoIPage = musicSheetService.selectAlbumDetailPage(page,query);
@@ -125,6 +126,7 @@ public class MusicAlbumServiceImpl extends ServiceImpl<MusicAlbumDao,MusicAlbum>
         if (checkNameRepeat(musicAlbum.getAlbumName(),musicAlbum.getId())) {
             throw new BizException("专辑名称重复");
         }
+        musicAlbum.setDelFlag(false);
         return this.save(musicAlbum);
     }
 
@@ -177,6 +179,14 @@ public class MusicAlbumServiceImpl extends ServiceImpl<MusicAlbumDao,MusicAlbum>
         return iPage;
     }
 
+    @Override
+    public boolean del(Long id) {
+        MusicAlbum musicAlbum = new MusicAlbum();
+        musicAlbum.setDelFlag(true);
+        musicAlbum.setId(id);
+        return this.updateById(musicAlbum);
+    }
+
     private boolean checkNameRepeat(String albumName, Long id) {
         LambdaQueryChainWrapper<MusicAlbum> eq = this.lambdaQuery()
                                                    .eq(MusicAlbum::getAlbumName, albumName);

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

@@ -1,11 +1,17 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.auth.api.enums.SysUserType;
 import com.yonge.cooleshow.biz.dal.dao.MusicSheetDao;
 import com.yonge.cooleshow.biz.dal.dto.MusicSheetDto;
+import com.yonge.cooleshow.biz.dal.dto.MusicSheetPayDto;
+import com.yonge.cooleshow.biz.dal.dto.UserAccountRecordDto;
+import com.yonge.cooleshow.biz.dal.dto.req.OrderReq;
 import com.yonge.cooleshow.biz.dal.dto.req.TeacherMusicSheetAuditReq;
 import com.yonge.cooleshow.biz.dal.dto.search.*;
 import com.yonge.cooleshow.biz.dal.entity.*;
@@ -13,6 +19,9 @@ import com.yonge.cooleshow.biz.dal.enums.*;
 import com.yonge.cooleshow.biz.dal.service.*;
 import com.yonge.cooleshow.biz.dal.support.PageUtil;
 import com.yonge.cooleshow.biz.dal.vo.*;
+import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes;
+import com.yonge.cooleshow.common.constant.SysConfigConstant;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.exception.BizException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -22,9 +31,12 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.Optional;
 import java.util.stream.Collectors;
 
 /**
@@ -48,6 +60,9 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
     private MusicFavoriteService musicFavoriteService;
 
     @Autowired
+    private SysConfigService sysConfigService;
+
+    @Autowired
     private MusicSheetPurchaseRecordService musicSheetPurchaseRecordService;
 
     @Autowired
@@ -59,6 +74,12 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
     @Autowired
     private MusicSheetAuthRecordService musicSheetAuthRecordService;
 
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+    @Autowired
+    private UserAccountService userAccountService;
+
     public MusicSheetDao getDao() {
         return musicSheetDao;
     }
@@ -290,4 +311,101 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
             return this.saveOrUpdate(musicSheet);
         }
     }
+
+    @Override
+    public HttpResponseResult<OrderCreateRes> buyMusicSheetCheck(OrderReq.OrderReqInfo orderReqInfo) {
+
+        // 下单前的验证
+        getSysUser(orderReqInfo.getUserId());
+
+        MusicSheetPayDto musicSheetPayDto = JSON.parseObject(
+                JSON.toJSONString(orderReqInfo.getBizContent()), MusicSheetPayDto.class);
+
+        MusicSheet musicSheet = this.getById(musicSheetPayDto.getMusicSheetId());
+        OrderCreateRes orderCreateRes = new OrderCreateRes();
+        if (musicSheet == null) {
+            throw new BizException("不存在曲目信息");
+        }
+
+        // 检查已经购买
+        checkoutPay(orderReqInfo.getUserId(),musicSheetPayDto.getMusicSheetId());
+
+
+
+        orderCreateRes.setRes(true);
+        orderCreateRes.setMerchId(musicSheet.getUserId());
+        orderCreateRes.setGoodType(orderCreateRes.getGoodType());
+        orderCreateRes.setBizId(musicSheet.getId());
+        orderCreateRes.setGoodNum(1);
+        orderCreateRes.setOriginalPrice(musicSheet.getMusicPrice());
+        orderCreateRes.setExpectPrice(musicSheet.getMusicPrice());
+        return  HttpResponseResult.succeed(orderCreateRes);
+
+    }
+
+    /**
+     * 检查是否已购买当前曲目
+     *
+     * @param userId 用户id
+     * @param musicSheetId 曲目id
+     */
+    private void checkoutPay(Long userId, Long musicSheetId) {
+        List<MusicSheetPurchaseRecord> list = musicSheetPurchaseRecordService
+                .lambdaQuery()
+                .eq(MusicSheetPurchaseRecord::getMusicSheetId, musicSheetId)
+                .eq(MusicSheetPurchaseRecord::getStudentId, userId)
+                .eq(MusicSheetPurchaseRecord::getOrderStatus, YesOrNoEnum.YES)
+                .list();
+        if (!CollectionUtils.isEmpty(list)) {
+            throw  new BizException("已经购买了当前曲目");
+        }
+    }
+
+    @Override
+    @Transactional
+    public void buyMusicSheetSuccess(UserOrderDetailVo userOrderDetailVo) {
+
+
+        // 曲目服务费比例
+        String musicSheetServiceFee= sysConfigService.findConfigValue(SysConfigConstant.MUSIC_SHEET_SERVICE_FEE);
+        BigDecimal serviceFee = new BigDecimal(musicSheetServiceFee).divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
+        //支付金额
+        BigDecimal actualPrice = userOrderDetailVo.getActualPrice();
+
+        //服务费
+        BigDecimal serviceFeeAmount = actualPrice.multiply(serviceFee).setScale(2, RoundingMode.HALF_UP);
+
+        // 保存购买记录
+        MusicSheetPurchaseRecord musicSheetPurchaseRecord = new MusicSheetPurchaseRecord();
+        musicSheetPurchaseRecord.setMusicSheetId(userOrderDetailVo.getBizId());
+        musicSheetPurchaseRecord.setOrderNo(userOrderDetailVo.getOrderNo());
+        musicSheetPurchaseRecord.setPurchasePrice(actualPrice);
+        musicSheetPurchaseRecord.setPurchaseTime(new Date());
+        musicSheetPurchaseRecord.setTeacherId(userOrderDetailVo.getMerchId());
+        musicSheetPurchaseRecord.setOriginalPrice(userOrderDetailVo.getOriginalPrice());
+        musicSheetPurchaseRecord.setMusicSheetServiceFee(serviceFeeAmount);
+        musicSheetPurchaseRecord.setOrderStatus(YesOrNoEnum.YES);
+        musicSheetPurchaseRecord.setStudentId(userOrderDetailVo.getUserId());
+        musicSheetPurchaseRecordService.save(musicSheetPurchaseRecord);
+
+        // 加入账户
+        UserAccountRecordDto userAccountRecordDto = new UserAccountRecordDto();
+        userAccountRecordDto.setUserId(userOrderDetailVo.getMerchId());
+        userAccountRecordDto.setFrozenType(FrozenTypeEnum.NONE);
+
+        //
+        userAccountRecordDto.setTransAmount(actualPrice.subtract(serviceFeeAmount).setScale(2, RoundingMode.HALF_UP));
+        userAccountRecordDto.setInOrOut(InOrOutEnum.IN);
+        userAccountRecordDto.setBizType(AccountBizTypeEnum.MUSIC);
+        userAccountRecordDto.setBizId(musicSheetPurchaseRecord.getMusicSheetId());
+        userAccountRecordDto.setBizName(userOrderDetailVo.getGoodName());
+        userAccountRecordDto.setOrderNo(userOrderDetailVo.getOrderNo());
+        userAccountService.accountChange(userAccountRecordDto);
+    }
+
+    private SysUser getSysUser(Long userId) {
+        return Optional.ofNullable(userId)
+                       .map(sysUserFeignService::queryUserById)
+                       .orElseThrow(() -> new BizException("用户不存在"));
+    }
 }

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

@@ -83,7 +83,7 @@ public class MusicTagServiceImpl extends ServiceImpl<MusicTagDao, MusicTag> impl
     public boolean del(Long musicTagId) {
 
         // 有关联的曲目或专辑不让删除
-        if (checkTagBeUserd(musicTagId)) {
+        if (checkTagBeUsed(musicTagId)) {
             throw  new BizException("当前标签或子集标签已被使用,不可删除");
         }
 
@@ -102,13 +102,17 @@ public class MusicTagServiceImpl extends ServiceImpl<MusicTagDao, MusicTag> impl
      * @param musicTagId 标签id
      * @return
      */
-    private boolean checkTagBeUserd(Long musicTagId) {
+    private boolean checkTagBeUsed(Long musicTagId) {
 
         List<MusicTag> list = this.lambdaQuery()
                                   .eq(MusicTag::getParentTagId, musicTagId)
                                   .eq(MusicTag::getDelFlag, false)
                                   .list();
         List<Long> longs = list.stream().map(MusicTag::getId).collect(Collectors.toList());
+        if (CollectionUtils.isEmpty(longs)) {
+            longs = new ArrayList<>();
+        }
+        longs.add(musicTagId);
         if (baseMapper.checkTagBeUsedMusicAblum(longs) >0) return true;
         if (baseMapper.checkTagBeUsedMusicSheet(longs) >0) return true;
 

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

@@ -47,13 +47,14 @@ public class TeacherAuthEntryRecordServiceImpl extends ServiceImpl<TeacherAuthEn
         build.setTeacherAuthStatus(authOperaReq.getPass() ? AuthStatusEnum.PASS : AuthStatusEnum.UNPASS);
         build.setReason(authOperaReq.getReason());
         build.setVerifyUserId(sysUser.getId());
+        build.setUpdateTime(new Date());
 
         //修改teacher表
         Teacher teacher = teacherDao.selectById(build.getUserId());
         if (null == teacher) {
             return HttpResponseResult.failed("未找到用户信息");
         }
-        if (AuthStatusEnum.PASS.equals(authOperaReq.getPass())) {
+        if (authOperaReq.getPass()) {
             teacher.setSubjectId(StringUtil.isEmpty(teacher.getSubjectId()) ? build.getSubjectId() : teacher.getSubjectId());
             teacher.setIntroduction(StringUtil.isEmpty(teacher.getIntroduction()) ? build.getIntroduction() : teacher.getIntroduction());
             teacher.setGraduateSchool(StringUtil.isEmpty(teacher.getGraduateSchool()) ? build.getGraduateSchool() : teacher.getGraduateSchool());
@@ -64,6 +65,7 @@ public class TeacherAuthEntryRecordServiceImpl extends ServiceImpl<TeacherAuthEn
         }
         teacher.setEntryFlag(authOperaReq.getPass() ? YesOrNoEnum.YES : YesOrNoEnum.NO);
         teacher.setEntryAuthDate(new Date());
+        teacher.setUpdateTime(new Date());
         teacherDao.updateById(teacher);
         return HttpResponseResult.succeed(baseMapper.updateById(build) > 0);
     }

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

@@ -74,12 +74,14 @@ public class TeacherAuthMusicianRecordServiceImpl extends ServiceImpl<TeacherAut
         build.setTeacherAuthStatus(authOperaReq.getPass() ? AuthStatusEnum.PASS : AuthStatusEnum.UNPASS);
         build.setReason(authOperaReq.getReason());
         build.setVerifyUserId(sysUser.getId());
+        build.setUpdateTime(new Date());
 
         //修改teacher表
         Teacher teacher = new Teacher();
         teacher.setUserId(build.getUserId());
         teacher.setMusicianFlag(authOperaReq.getPass() ? YesOrNoEnum.YES : YesOrNoEnum.NO);
         teacher.setMusicianDate(new Date());
+        teacher.setUpdateTime(new Date());
         teacherDao.updateById(teacher);
 
         return HttpResponseResult.succeed(baseMapper.updateById(build) > 0);

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

@@ -1,6 +1,7 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.dto.RealnameAuthReq;
@@ -108,9 +109,9 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
         teacherHomeVo.setPhone(ValueUtil.fuzzyMobile(teacherHomeVo.getPhone()));
         teacherHomeVo.setHeardUrl(user.getAvatar());
 
-        if(YesOrNoEnum.YES.equals(teacher.getEntryFlag())){
+        if (YesOrNoEnum.YES.equals(teacher.getEntryFlag())) {
             teacherHomeVo.setEntryStatus(AuthStatusEnum.PASS);
-        }else{
+        } else {
             TeacherAuthEntryRecordVo entryRecord = entryRecordService.getLastRecordByUserId(user.getId());
             if (null == entryRecord) {
                 teacherHomeVo.setEntryStatus(AuthStatusEnum.UNPAALY);
@@ -119,9 +120,9 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
             }
         }
 
-        if(YesOrNoEnum.YES.equals(teacher.getMusicianFlag())){
+        if (YesOrNoEnum.YES.equals(teacher.getMusicianFlag())) {
             teacherHomeVo.setMusicianAuthStatus(AuthStatusEnum.PASS);
-        }else{
+        } else {
             TeacherAuthMusicianRecord musicianRecord = musicianRecordService.getLastRecordByUserId(user.getId());
             if (null == musicianRecord) {
                 teacherHomeVo.setMusicianAuthStatus(AuthStatusEnum.UNPAALY);
@@ -157,6 +158,7 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
             teacher.setUserId(id);
             teacher.setLiveFlag(YesOrNoEnum.YES);
             teacher.setLiveDate(new Date());
+            teacher.setUpdateTime(new Date());
             baseMapper.updateById(teacher);
             return HttpResponseResult.status(true);
         } else {
@@ -208,8 +210,17 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
 
         Teacher teacher = baseMapper.selectById(teacherSubmitReq.getUserId());
         teacher = getTeacherDetil(teacher, teacherSubmitReq);
+        teacher.setUpdateTime(new Date());
         baseMapper.updateById(teacher);
+        if (null == teacher.getEntryAuthDate() || null == teacher.getMusicianDate()) {
+            baseMapper.update(teacher, Wrappers.<Teacher>lambdaUpdate()
+                    .set(Teacher::getEntryAuthDate, teacher.getEntryAuthDate())
+                    .set(Teacher::getMusicianDate, teacher.getMusicianDate())
+                    .eq(Teacher::getUserId, teacher.getUserId())
+            );
+        }
 
+        sysUser.setUpdateTime(new Date());
         employeeDao.updateSysUser(sysUser);
         return HttpResponseResult.succeed(true);
     }
@@ -285,10 +296,10 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
     public HttpResponseResult<TeacherVo> queryTeacherStyle(Long id) {
         TeacherVo detail = detail(id);
         LiveRoom liveRoom = liveRoomService.getliveingRoomBySpeakerId(id);
-        if(null != liveRoom){
+        if (null != liveRoom) {
             detail.setRoomUid(liveRoom.getRoomUid());
             detail.setLiveing(YesOrNoEnum.YES);
-        }else{
+        } else {
             detail.setLiveing(YesOrNoEnum.NO);
         }
         return HttpResponseResult.succeed(detail);

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

@@ -42,7 +42,7 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
     private final static Logger log = LoggerFactory.getLogger(UserOrderServiceImpl.class);
 
     @Autowired
-    private VipCardService vipCardService;
+    private MemberPriceSettingsService memberPriceSettingsService;
     @Autowired
     private SysConfigService sysConfigService;
     @Autowired
@@ -60,6 +60,9 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
     @Autowired
     private VideoLessonPurchaseRecordService recordService;
 
+    @Autowired
+    private MusicSheetService musicSheetService;
+
     //验证订单是否可以下单
     private static final Map<GoodTypeEnum, Function<OrderReq.OrderReqInfo, HttpResponseResult<OrderCreateRes>>> orderCreate = new HashMap<>();
     //插入订单后执行
@@ -73,26 +76,36 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
     private void init() {
         /**********订单生成前******************/
         //vip开通缴费
-        orderCreate.put(GoodTypeEnum.VIP, vipCardService::orderCreate);
+        orderCreate.put(GoodTypeEnum.VIP, memberPriceSettingsService::orderCreate);
         //直播课程购买
         orderCreate.put(GoodTypeEnum.LIVE, courseGroupService::buyLiveCourse);
+
         //陪练课购买
         orderCreate.put(GoodTypeEnum.PRACTICE, scheduleService::buyPracticeCourse);
         //视频课购买
         orderCreate.put(GoodTypeEnum.VIDEO, recordService::buyVideoCourse);
 
+        //曲目购买
+        orderCreate.put(GoodTypeEnum.MUSIC,musicSheetService::buyMusicSheetCheck);
+
+
         /**********订单生成后******************/
 
         /**********订单完成后******************/
         //vip开通缴费
-        orderSuccess.put(GoodTypeEnum.VIP, vipCardService::orderSuccess);
+        orderSuccess.put(GoodTypeEnum.VIP, memberPriceSettingsService::orderSuccess);
         //直播课程购买
         orderSuccess.put(GoodTypeEnum.LIVE, courseGroupService::buyLiveCourseSuccess);
+
         //陪练课购买
         orderSuccess.put(GoodTypeEnum.PRACTICE, scheduleService::buyPracticeCourseSuccess);
         //视频课购买
         orderSuccess.put(GoodTypeEnum.VIDEO, recordService::buyVideoCourseSuccess);
 
+
+        //曲目购买
+        orderSuccess.put(GoodTypeEnum.MUSIC,musicSheetService::buyMusicSheetSuccess);
+
         /**********订单取消后******************/
         //陪练课购买
         orderCancel.put(GoodTypeEnum.PRACTICE, scheduleService::buyPracticeCourseFailed);
@@ -204,7 +217,7 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
         if (null == detail || !payReq.getUserId().equals(detail.getUserId())) {
             return HttpResponseResult.failed("订单不存在");
         }
-        if (OrderStatusEnum.WAIT_PAY.equals(detail.getStatus()) || OrderStatusEnum.FAIL.equals(detail.getStatus())) {
+        if (OrderStatusEnum.WAIT_PAY.equals(detail.getStatus())) {
             //处于待支付状态,需要调用汇付发起付款请求接口
             return orderPayWaitPay(payReq, detail);
         } else if (OrderStatusEnum.PAYING.equals(detail.getStatus())) {
@@ -396,6 +409,7 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
         }
         orderPayment.setPayFailMsg(responseResult.getMsg());
         orderPayment.setStatus(PayStatusEnum.failed);
+        orderPayment.setUpdateTime(new Date());
 
         orderPaymentService.saveOrUpdate(orderPayment);
         return orderPayment;
@@ -580,6 +594,7 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
     @Transactional(rollbackFor = Exception.class)
     void orderCancel(UserOrderVo userOrder) {
         userOrder.setStatus(OrderStatusEnum.CLOSE);
+        userOrder.setUpdateTime(new Date());
         baseMapper.updateById(userOrder);
 
         UserOrderPayment orderPayment = orderPaymentService.detailByOrderNo(userOrder.getOrderNo());
@@ -587,6 +602,7 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
             //更新付款单
             orderPayment.setStatus(PayStatusEnum.failed);
             orderPayment.setPayFailMsg("交易取消");
+            orderPayment.setUpdateTime(new Date());
             orderPaymentService.updateById(orderPayment);
         }
         List<UserOrderDetailVo> orderDetailList = orderDetailService.getOrderDetilListByOrderNo(userOrder.getOrderNo());
@@ -614,13 +630,16 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
      */
     @Transactional(rollbackFor = Exception.class)
     void orderSuccess(UserOrderVo detail, JSONObject hfRes) {
+        Date now = new Date();
         detail.setStatus(OrderStatusEnum.PAID);
-        detail.setPayTime(new Date());
+        detail.setPayTime(now);
+        detail.setUpdateTime(now);
         updateById(detail);
         //更新付款单
         UserOrderPayment orderPayment = orderPaymentService.detailByOrderNo(detail.getOrderNo());
         orderPayment.setStatus(PayStatusEnum.succeeded);
-        orderPayment.setArrivalTime(new Date());
+        orderPayment.setArrivalTime(now);
+        orderPayment.setUpdateTime(now);
         if (null != hfRes) {
             try {
                 orderPayment.setPayAmt(new BigDecimal(hfRes.getString("pay_amt")));

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

@@ -166,6 +166,7 @@ public class UserWithdrawalServiceImpl extends ServiceImpl<UserWithdrawalDao, Us
             userWithdrawal.setVerifyReason(data.getVerifyReason());
             userWithdrawal.setVerifyUserId(userId);
             userWithdrawal.setTransferTime(new Date());
+            userWithdrawal.setUpdateTime(new Date());
             userWithdrawalList.add(userWithdrawal);
         }
         if (!CollectionUtils.isEmpty(errMsgList)) {

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

@@ -1,17 +1,21 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dao.VideoLessonGroupDao;
+import com.yonge.cooleshow.biz.dal.dao.VideoLessonPurchaseRecordDao;
 import com.yonge.cooleshow.biz.dal.dto.search.VideoLessonGroupSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.VideoLessonSearch;
 import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroup;
 import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroupDetail;
 import com.yonge.cooleshow.biz.dal.dao.VideoLessonGroupDetailDao;
-import com.yonge.cooleshow.biz.dal.enums.AuditEnum;
+import com.yonge.cooleshow.biz.dal.entity.VideoLessonPurchaseRecord;
 import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
 import com.yonge.cooleshow.biz.dal.service.VideoLessonGroupDetailService;
 import com.yonge.cooleshow.biz.dal.vo.*;
+import com.yonge.cooleshow.common.exception.BizException;
+import com.yonge.toolset.utils.obj.ObjectUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
@@ -39,6 +43,8 @@ public class VideoLessonGroupDetailServiceImpl extends ServiceImpl<VideoLessonGr
     private VideoLessonGroupDetailDao videoLessonGroupDetailDao;
     @Autowired
     private VideoLessonGroupDao videoLessonGroupDao;
+    @Autowired
+    private VideoLessonPurchaseRecordDao videoLessonPurchaseRecordDao;
 
     public VideoLessonGroupDetailDao getDao() {
         return videoLessonGroupDetailDao;
@@ -50,8 +56,8 @@ public class VideoLessonGroupDetailServiceImpl extends ServiceImpl<VideoLessonGr
     * @Date: 2022/3/31
     */
     @Override
-    public IPage<VideoLessonGroupDetail> selectPage(IPage<VideoLessonGroupDetail> page, VideoLessonSearch query) {
-        return page.setRecords(baseMapper.selectPage(page,query));
+    public IPage<VideoLessonGroupDetailVo> selectPage(IPage<VideoLessonGroupDetailVo> page, VideoLessonSearch query) {
+        return page.setRecords(baseMapper.selectPageAuth(page,query));
     }
 
     /**
@@ -131,9 +137,15 @@ public class VideoLessonGroupDetailServiceImpl extends ServiceImpl<VideoLessonGr
     * @Date: 2022/4/2
     */
     @Override
-    public VideoLessonStudentVo selectVideoLesson(Long groupId) {
+    public VideoLessonStudentVo selectVideoLesson(Long groupId,Long userId) {
         VideoLessonStudentVo lessonStudentVo = new VideoLessonStudentVo();
 
+        //校验课程是否购买
+        VideoLessonPurchaseRecord isAlreadyBuy= videoLessonPurchaseRecordDao.selectOne(Wrappers.<VideoLessonPurchaseRecord>lambdaQuery()
+                .eq(VideoLessonPurchaseRecord::getStudentId, userId)
+                .eq(VideoLessonPurchaseRecord::getVideoLessonGroupId, groupId));
+        lessonStudentVo.setAlreadyBuy(!ObjectUtil.isEmpty(isAlreadyBuy));
+
         VideoLessonGroupSearch query = new VideoLessonGroupSearch();
         //筛选已审核的视频课
         query.setAuditStatus(AuthStatusEnum.PASS);

+ 46 - 4
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/VideoLessonGroupServiceImpl.java

@@ -1,16 +1,16 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dao.SubjectDao;
+import com.yonge.cooleshow.biz.dal.dao.VideoLessonAuthRecordDao;
 import com.yonge.cooleshow.biz.dal.dao.VideoLessonGroupDetailDao;
 import com.yonge.cooleshow.biz.dal.dto.search.VideoGroupSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.VideoLessonGroupSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.VideoLessonSearch;
-import com.yonge.cooleshow.biz.dal.entity.Subject;
-import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroup;
+import com.yonge.cooleshow.biz.dal.entity.*;
 import com.yonge.cooleshow.biz.dal.dao.VideoLessonGroupDao;
-import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroupDetail;
 import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
 import com.yonge.cooleshow.biz.dal.service.VideoLessonGroupService;
 import com.yonge.cooleshow.biz.dal.vo.*;
@@ -22,6 +22,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * VideoLessonGroupService服务实现类
@@ -41,6 +42,8 @@ public class VideoLessonGroupServiceImpl extends ServiceImpl<VideoLessonGroupDao
     private VideoLessonGroupDetailDao videoLessonGroupDetailDao;
     @Autowired
     private SubjectDao subjectDao;
+    @Autowired
+    private VideoLessonAuthRecordDao recordDao;
 
     public VideoLessonGroupDao getDao() {
         return videoLessonGroupDao;
@@ -63,7 +66,7 @@ public class VideoLessonGroupServiceImpl extends ServiceImpl<VideoLessonGroupDao
      */
     public VideoLessonGroup selectGroup(Long groupId) {
         VideoLessonGroup lessonGroup = videoLessonGroupDao.selectById(groupId);
-        Subject subject=subjectDao.selectSubjectById(lessonGroup.getLessonSubject());
+        Subject subject = subjectDao.selectSubjectById(lessonGroup.getLessonSubject());
         lessonGroup.setLessonSubjectName(subject.getName());
         return lessonGroup;
     }
@@ -79,10 +82,30 @@ public class VideoLessonGroupServiceImpl extends ServiceImpl<VideoLessonGroupDao
         videoLessonGroupDao.updateGroup(lessonGroupUpVo);
     }
 
+    /**
+     * @Description: 审核-修改视频课组审核状态
+     * @Author: cy
+     * @Date: 2022/4/24
+     */
     @Transactional(rollbackFor = Exception.class)
     @Override
     public void updateGroup(VideoLessonExamineVo examineVo) {
+        //改主表
         videoLessonGroupDao.updateExamine(examineVo);
+
+        //插从表
+        VideoLessonAuthRecord record = new VideoLessonAuthRecord();
+        record.setAuditStatus(examineVo.getAuditStatus());
+        record.setVideoGroupId(examineVo.getId());
+        record.setAuditId(examineVo.getAuditId());
+        record.setAuditName(examineVo.getAuditName());
+        record.setRemarks(examineVo.getRemarks());
+        recordDao.insert(record);
+
+        //清状态
+        recordDao.delete(Wrappers.<VideoLessonAuthRecord>lambdaQuery()
+                .eq(VideoLessonAuthRecord::getVideoGroupId, examineVo.getId())
+                .eq(VideoLessonAuthRecord::getAuditStatus, AuthStatusEnum.DOING));
     }
 
     /**
@@ -124,6 +147,12 @@ public class VideoLessonGroupServiceImpl extends ServiceImpl<VideoLessonGroupDao
         VideoLessonGroupUpVo groupUpVo = new VideoLessonGroupUpVo();
         groupUpVo.setId(lessonGroup.getId());
         videoLessonGroupDao.updateGroup(groupUpVo);
+
+        //记录video_lesson_auth_record
+        VideoLessonAuthRecord record = new VideoLessonAuthRecord();
+        record.setVideoGroupId(lessonGroup.getId());
+        record.setAuditStatus(AuthStatusEnum.DOING.getCode());
+        recordDao.insert(record);
     }
 
     /**
@@ -189,6 +218,10 @@ public class VideoLessonGroupServiceImpl extends ServiceImpl<VideoLessonGroupDao
         VideoLessonGroup lessonGroup = lessonVo.getLessonGroup();
         List<VideoLessonGroupDetail> lessonList = lessonVo.getLessonList();
 
+        //查询原评审信息
+        List<VideoLessonAuthRecord> recordList = recordDao.selectList(Wrappers.<VideoLessonAuthRecord>lambdaQuery().eq(VideoLessonAuthRecord::getVideoGroupId, lessonGroup.getId()));
+        List<Long> recoreIds = recordList.stream().map(VideoLessonAuthRecord::getId).collect(Collectors.toList());
+
         //清除原有组&课
         videoLessonGroupDao.deleteById(lessonGroup.getId());
         videoLessonGroupDetailDao.deleteByGroupId(lessonGroup.getId());
@@ -209,6 +242,15 @@ public class VideoLessonGroupServiceImpl extends ServiceImpl<VideoLessonGroupDao
         VideoLessonGroupUpVo groupUpVo = new VideoLessonGroupUpVo();
         groupUpVo.setId(lessonGroup.getId());
         videoLessonGroupDao.updateGroup(groupUpVo);
+
+        //更新历史记录的组id
+        recordDao.updateIds(recoreIds, lessonGroup.getId());
+
+        //重新提审
+        VideoLessonAuthRecord record = new VideoLessonAuthRecord();
+        record.setVideoGroupId(lessonGroup.getId());
+        record.setAuditStatus(AuthStatusEnum.DOING.getCode());
+        recordDao.insert(record);
     }
 
     /**

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

@@ -6,15 +6,22 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dao.VideoLessonGroupDao;
+import com.yonge.cooleshow.biz.dal.dto.UserAccountRecordDto;
 import com.yonge.cooleshow.biz.dal.dto.req.OrderReq;
 import com.yonge.cooleshow.biz.dal.entity.*;
 import com.yonge.cooleshow.biz.dal.dao.VideoLessonPurchaseRecordDao;
+import com.yonge.cooleshow.biz.dal.enums.AccountBizTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.GoodTypeEnum;
+import com.yonge.cooleshow.biz.dal.enums.InOrOutEnum;
+import com.yonge.cooleshow.biz.dal.service.SysConfigService;
+import com.yonge.cooleshow.biz.dal.service.UserAccountService;
 import com.yonge.cooleshow.biz.dal.service.VideoLessonPurchaseRecordService;
 import com.yonge.cooleshow.biz.dal.vo.UserOrderDetailVo;
 import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes;
+import com.yonge.cooleshow.common.constant.SysConfigConstant;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.exception.BizException;
+import com.yonge.toolset.utils.obj.ObjectUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
@@ -23,6 +30,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.*;
 
 /**
@@ -43,6 +51,10 @@ public class VideoLessonPurchaseRecordServiceImpl extends ServiceImpl<VideoLesso
     private VideoLessonPurchaseRecordDao videoLessonPurchaseRecordDao;
     @Autowired
     private VideoLessonGroupDao videoLessonGroupDao;
+    @Autowired
+    private UserAccountService userAccountService;
+    @Autowired
+    private SysConfigService sysConfigService;
 
     public VideoLessonPurchaseRecordDao getDao() {
         return videoLessonPurchaseRecordDao;
@@ -55,7 +67,7 @@ public class VideoLessonPurchaseRecordServiceImpl extends ServiceImpl<VideoLesso
      */
     @Transactional(rollbackFor = Exception.class)
     public HttpResponseResult<OrderCreateRes> buyVideoCourse(OrderReq.OrderReqInfo orderReqInfo) {
-        log.info("学生购买视频课程组,请求参数:{}", JSON.toJSONString(orderReqInfo));
+        log.info("buyVideoCourse  param:{}", JSON.toJSONString(orderReqInfo));
         Long studentId = orderReqInfo.getUserId();
         String orderNo = orderReqInfo.getOrderNo();
 
@@ -72,23 +84,33 @@ public class VideoLessonPurchaseRecordServiceImpl extends ServiceImpl<VideoLesso
             throw new BizException("课程组不存在!");
         }
 
-        orderNo="999";
+        //校验课程是否购买
+        VideoLessonPurchaseRecord isAlreadyBuy= videoLessonPurchaseRecordDao.selectOne(Wrappers.<VideoLessonPurchaseRecord>lambdaQuery()
+                .eq(VideoLessonPurchaseRecord::getStudentId, studentId)
+                .eq(VideoLessonPurchaseRecord::getVideoLessonGroupId, groupId));
+        if (!ObjectUtil.isEmpty(isAlreadyBuy)){
+            throw new BizException("已购买过该课程");
+        }
+
         purchaseRecord.setOrderNo(orderNo);
         purchaseRecord.setStudentId(studentId);
         purchaseRecord.setOrderStatus(0);
+        purchaseRecord.setOriginalPrice(BigDecimal.valueOf(lessonGroup.getLessonPrice()));//原价
+        purchaseRecord.setExpectPrice(BigDecimal.valueOf(lessonGroup.getLessonPrice()));//预计价格
         videoLessonPurchaseRecordDao.insert(purchaseRecord);
 
         OrderCreateRes orderCreateRes = new OrderCreateRes();
         orderCreateRes.setRes(true);
         orderCreateRes.setMerchId(lessonGroup.getTeacherId());
         orderCreateRes.setBizId(orderReqInfo.getCouponId());
-        orderCreateRes.setOriginalPrice(BigDecimal.valueOf(lessonGroup.getLessonPrice()));
-        orderCreateRes.setExpectPrice(BigDecimal.valueOf(lessonGroup.getLessonPrice()));
-        orderCreateRes.setActualPrice(purchaseRecord.getPayMoney());
+        orderCreateRes.setOriginalPrice(BigDecimal.valueOf(lessonGroup.getLessonPrice()));//原价
+        orderCreateRes.setExpectPrice(BigDecimal.valueOf(lessonGroup.getLessonPrice()));//预计价格
+        orderCreateRes.setActualPrice(purchaseRecord.getPayMoney());//实际价格
         orderCreateRes.setGoodNum(lessonGroup.getLessonCount());
         orderCreateRes.setGoodType(GoodTypeEnum.VIDEO);
         HttpResponseResult<OrderCreateRes> httpResponseResult = new HttpResponseResult<>();
         httpResponseResult.setData(orderCreateRes);
+        log.info("buyVideoCourse  return {}", httpResponseResult);
         return httpResponseResult;
     }
 
@@ -99,17 +121,38 @@ public class VideoLessonPurchaseRecordServiceImpl extends ServiceImpl<VideoLesso
      */
     @Transactional(rollbackFor = Exception.class)
     public void buyVideoCourseSuccess(UserOrderDetailVo orderParam) {
-        log.info("学生购买视频课-成功-回调,请求参数:{}", JSON.toJSONString(orderParam));
+        log.info("buyVideoCourseSuccess  param:{}", JSON.toJSONString(orderParam));
         String orderNo = orderParam.getOrderNo();
 
-        VideoLessonPurchaseRecord videoGroup = videoLessonPurchaseRecordDao.selectOne(Wrappers.<VideoLessonPurchaseRecord>lambdaQuery()
+        VideoLessonPurchaseRecord purchaseRecord = videoLessonPurchaseRecordDao.selectOne(Wrappers.<VideoLessonPurchaseRecord>lambdaQuery()
                 .eq(VideoLessonPurchaseRecord::getOrderNo, orderNo));
-        if (videoGroup == null) {
-            throw new BizException("课程组不存在!");
+        if (purchaseRecord == null) {
+            throw new BizException("课程组购买记录不存在!");
         }
 
-        //video_lesson_purchase_record中order_status_改为1
+        //支付状态改为1
         videoLessonPurchaseRecordDao.updateStatus(orderNo);
+
+        //查询直播课服务费
+        String videoServiceRateStr = sysConfigService.findConfigValue(SysConfigConstant.VIDEO_LESSON_SERVICE_FEE);
+        BigDecimal liveServiceRate = new BigDecimal(videoServiceRateStr).divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
+
+        //查询组信息
+        VideoLessonGroup lessonGroup = videoLessonGroupDao.selectById(purchaseRecord.getVideoLessonGroupId());
+
+        //记录流水
+        BigDecimal payMoney = purchaseRecord.getPayMoney();//学生支付金额
+        UserAccountRecordDto userAccountRecord = new UserAccountRecordDto();
+        userAccountRecord.setUserId(lessonGroup.getTeacherId());
+        //扣除手续费后所得金额
+        userAccountRecord.setTransAmount(payMoney.subtract(payMoney.multiply(liveServiceRate)).setScale(2, RoundingMode.HALF_UP));
+        userAccountRecord.setInOrOut(InOrOutEnum.IN);
+        userAccountRecord.setBizType(AccountBizTypeEnum.VIDEO);
+        userAccountRecord.setBizId(lessonGroup.getTeacherId());
+        userAccountRecord.setBizName(lessonGroup.getLessonName());
+        userAccountRecord.setOrderNo(orderNo);
+        userAccountService.accountChange(userAccountRecord);
+        log.info("buyVideoCourseSuccess ok");
     }
 
     /**
@@ -130,6 +173,7 @@ public class VideoLessonPurchaseRecordServiceImpl extends ServiceImpl<VideoLesso
         //删除video_lesson_purchase_record数据
         videoLessonPurchaseRecordDao.delete(Wrappers.<VideoLessonPurchaseRecord>lambdaQuery()
                 .eq(VideoLessonPurchaseRecord::getOrderNo, orderNo));
+        log.info("buyVideoCourseFailed ok");
     }
 
     /**

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

@@ -2,13 +2,7 @@ package com.yonge.cooleshow.biz.dal.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.yonge.cooleshow.biz.dal.dto.req.OrderReq;
-import com.yonge.cooleshow.biz.dal.entity.VipCard;
-import com.yonge.cooleshow.biz.dal.service.VipCardService;
-import com.yonge.cooleshow.biz.dal.vo.VipCardVo;
-import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes;
-import com.yonge.cooleshow.biz.dal.vo.UserOrderVo;
-import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.cooleshow.biz.dal.service.MemberPriceSettingsService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.yonge.cooleshow.biz.dal.entity.VipCardRecord;
@@ -21,7 +15,7 @@ import com.yonge.cooleshow.biz.dal.service.VipCardRecordService;
 @Service
 public class VipCardRecordServiceImpl extends ServiceImpl<VipCardRecordDao, VipCardRecord> implements VipCardRecordService {
     @Autowired
-    private VipCardService vipCardService;
+    private MemberPriceSettingsService memberPriceSettingsService;
 	@Override
     public VipCardRecordVo detail(Long id) {
         VipCardRecordVo detail = baseMapper.detail(id);

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

@@ -1,107 +0,0 @@
-package com.yonge.cooleshow.biz.dal.service.impl;
-
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.yonge.cooleshow.biz.dal.dto.req.OrderReq;
-import com.yonge.cooleshow.biz.dal.entity.VipCardRecord;
-import com.yonge.cooleshow.biz.dal.enums.TimeTypeEnum;
-import com.yonge.cooleshow.biz.dal.service.StudentService;
-import com.yonge.cooleshow.biz.dal.service.VipCardRecordService;
-import com.yonge.cooleshow.biz.dal.vo.StudentVo;
-import com.yonge.cooleshow.biz.dal.vo.UserOrderDetailVo;
-import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes;
-import com.yonge.cooleshow.common.entity.HttpResponseResult;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import com.yonge.cooleshow.biz.dal.entity.VipCard;
-import com.yonge.cooleshow.biz.dal.vo.VipCardVo;
-import com.yonge.cooleshow.biz.dal.dao.VipCardDao;
-import com.yonge.cooleshow.biz.dal.service.VipCardService;
-
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
-
-
-@Service
-public class VipCardServiceImpl extends ServiceImpl<VipCardDao, VipCard> implements VipCardService {
-    private final static Logger log = LoggerFactory.getLogger(VipCardServiceImpl.class);
-    @Autowired
-    private VipCardRecordService vipCardRecordService;
-    @Autowired
-    private StudentService studentService;
-
-    @Override
-    public VipCardVo detail(Long id) {
-        VipCardVo detail = baseMapper.detail(id);
-        detail.setTimeTypeName(detail.getTimeType().name());
-        return detail;
-    }
-
-    @Override
-    public List<VipCardVo> selectList() {
-        List<VipCardVo> vipCardVos = baseMapper.selectList();
-        vipCardVos.forEach(o -> o.setTimeTypeName(o.getTimeType().name()));
-        return vipCardVos;
-    }
-
-    @Override
-    public HttpResponseResult<OrderCreateRes> orderCreate(OrderReq.OrderReqInfo orderReqInfo) {
-        VipCardVo detail = detail(Long.parseLong(orderReqInfo.getBizContent().toString()));
-        if (null == detail) {
-            return HttpResponseResult.failed("未找到会员卡信息");
-        }
-        //插入会员卡信息到会员卡记录表
-        OrderCreateRes orderCreateRes = new OrderCreateRes();
-        orderCreateRes.setRes(true);
-        orderCreateRes.setBizId(detail.getId());
-        orderCreateRes.setBizContent("会员卡购买-" + detail.getTimeTypeName());
-        orderCreateRes.setGoodNum(1);
-        orderCreateRes.setOriginalPrice(detail.getOriginalPrice());
-        orderCreateRes.setExpectPrice(detail.getActualPrice());
-        return HttpResponseResult.succeed(orderCreateRes);
-    }
-
-
-    @Override
-    public void orderSuccess(UserOrderDetailVo orderDetailVo) {
-        VipCardVo detail = detail(orderDetailVo.getBizId());
-        if (null == detail) {
-            return;
-        }
-        StudentVo studentVo = studentService.detail(orderDetailVo.getUserId());
-        //修改用户会员时长
-        Date membershipEndTime = studentVo.getMembershipEndTime();
-        Calendar now = Calendar.getInstance();
-
-        VipCardRecord vipCardRecord = new VipCardRecord();
-        vipCardRecord.setUserId(orderDetailVo.getUserId());
-        vipCardRecord.setOrderId(orderDetailVo.getOrderId());
-        vipCardRecord.setVipCardId(detail.getId());
-
-
-        if (null == membershipEndTime || membershipEndTime.before(new Date())) {
-            //没有会员、会员已过期
-            studentVo.setMembershipStartTime(now.getTime());
-        } else {
-            now.setTime(studentVo.getMembershipEndTime());
-        }
-        vipCardRecord.setStartTime(now.getTime());
-        if (TimeTypeEnum.MONTH.equals(detail.getTimeType())) {
-            now.add(Calendar.MONTH, 1);
-        } else if (TimeTypeEnum.QUARTER.equals(detail.getTimeType())) {
-            now.add(Calendar.MONTH, 3);
-        } else if (TimeTypeEnum.YEAR.equals(detail.getTimeType())) {
-            now.add(Calendar.YEAR, 1);
-        }
-        vipCardRecord.setEndTime(now.getTime());
-        studentVo.setMembershipEndTime(now.getTime());
-        studentVo.setMemberRankSettingId(1l);
-        studentService.updateById(studentVo);
-        //会员购买记录入库
-        vipCardRecordService.save(vipCardRecord);
-    }
-
-
-}

+ 11 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/AlbumDetailVo.java

@@ -37,6 +37,17 @@ public class AlbumDetailVo {
     @ApiModelProperty("教材标签")
     private String musicTagNames;
 
+    public YesOrNoEnum getAlbumStatue() {
+        return albumStatue;
+    }
+
+    public void setAlbumStatue(YesOrNoEnum albumStatue) {
+        this.albumStatue = albumStatue;
+    }
+
+    @ApiModelProperty("专辑状态 0:停用1:启用")
+    private YesOrNoEnum albumStatue;
+
     public String getAlbumTag() {
         return albumTag;
     }

+ 26 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/CheckVo.java

@@ -0,0 +1,26 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * Description 检查功能返回
+ *
+ * @author liujunchi
+ * @date 2022-04-21
+ */
+@ApiModel("返回检查结果")
+public class CheckVo {
+
+    @ApiModelProperty("检查结果 1:是,0:否 ")
+    private YesOrNoEnum check;
+
+    public YesOrNoEnum getCheck() {
+        return check;
+    }
+
+    public void setCheck(YesOrNoEnum check) {
+        this.check = check;
+    }
+}

+ 35 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/MemberPriceSettingsVo.java

@@ -0,0 +1,35 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import com.yonge.cooleshow.biz.dal.entity.MemberPriceSettings;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import org.apache.commons.beanutils.BeanUtils;
+
+/**
+ * @Author: liweifan
+ * @Data: 2022-04-25 14:34:49
+ */
+@ApiModel(value = "MemberPriceSettingsVo对象", description = "查询视图对象")
+public class MemberPriceSettingsVo extends MemberPriceSettings{
+    private static final long serialVersionUID = 1L;
+    @ApiModelProperty("更新人 ")
+    private String modifierName;
+
+    public String getModifierName() {
+        return modifierName;
+    }
+
+    public void setModifierName(String modifierName) {
+        this.modifierName = modifierName;
+    }
+
+    public MemberPriceSettingsVo buildVo(MemberPriceSettings memberPriceSettings){
+        try {
+            BeanUtils.copyProperties(this,memberPriceSettings);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return this;
+    }
+
+}

+ 11 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/MusicSheetDetailVo.java

@@ -24,12 +24,23 @@ public class MusicSheetDetailVo extends MusicSheet {
     @ApiModelProperty("上传老师名称")
     private String userName;
 
+    @ApiModelProperty("上传用户头像")
+    private String userAvatar;
+
     @ApiModelProperty("标签名")
     private String musicTagNames;
 
     @ApiModelProperty("声部名")
     private String subjectNames;
 
+    public String getUserAvatar() {
+        return userAvatar;
+    }
+
+    public void setUserAvatar(String userAvatar) {
+        this.userAvatar = userAvatar;
+    }
+
     public String getMusicTagNames() {
         return musicTagNames;
     }

+ 35 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/VideoLessonGroupDetailVo.java

@@ -0,0 +1,35 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroupDetail;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Author: cy
+ * @Date: 2022/4/25
+ */
+@ApiModel(value = "VideoLessonGroupDetailVo")
+public class VideoLessonGroupDetailVo extends VideoLessonGroupDetail {
+
+    @ApiModelProperty(value = "老师姓名")
+    private String teacherName;  //主键ID
+
+    @ApiModelProperty(value = "老师手机号")
+    private String teacherPhone;
+
+    public String getTeacherName() {
+        return teacherName;
+    }
+
+    public void setTeacherName(String teacherName) {
+        this.teacherName = teacherName;
+    }
+
+    public String getTeacherPhone() {
+        return teacherPhone;
+    }
+
+    public void setTeacherPhone(String teacherPhone) {
+        this.teacherPhone = teacherPhone;
+    }
+}

+ 12 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/VideoLessonStudentVo.java

@@ -3,6 +3,7 @@ package com.yonge.cooleshow.biz.dal.vo;
 import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroupDetail;
 import com.yonge.cooleshow.common.entity.BaseEntity;
 import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 
 import java.util.List;
 
@@ -16,6 +17,17 @@ public class VideoLessonStudentVo extends BaseEntity {
 
     private List<VideoLessonGroupDetail> detailList;
 
+    @ApiModelProperty(value = "true已买,false未买")
+    private Boolean isAlreadyBuy;
+
+    public Boolean getAlreadyBuy() {
+        return isAlreadyBuy;
+    }
+
+    public void setAlreadyBuy(Boolean alreadyBuy) {
+        isAlreadyBuy = alreadyBuy;
+    }
+
     public VideoLessonGroupVo getLessonGroup() {
         return lessonGroup;
     }

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

@@ -106,7 +106,7 @@
 	<!-- 分页查询 -->
 	<select id="queryPageList" resultMap="ContractTemplateDto"
 		parameterType="map">
-		SELECT tct.*,u.real_name_ latest_operator_ FROM contract_template tct left join sys_user u on tct.modify_by_ = u.id_ 
+		SELECT tct.*,ifnull(u.real_name_,u.username_) latest_operator_ FROM contract_template tct left join sys_user u on tct.modify_by_ = u.id_ 
 		<where>
 			<if test="status != null">
 				and tct.status_ = #{status}

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

@@ -264,7 +264,6 @@
         UPDATE employee SET demission_date_ = IF(demission_date_ IS NULL,now(),NULL) WHERE user_id_=#{userID}
     </update>
 
-
     <!-- 根据主键查询一条记录 -->
     <select id="get" resultMap="Employee">
 		SELECT * FROM employee WHERE user_id_ = #{userId}

+ 33 - 70
cooleshow-user/user-biz/src/main/resources/config/mybatis/MemberPriceSettingsMapper.xml

@@ -1,87 +1,50 @@
 <?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<!-- 这个文件是自动生成的。 不要修改此文件。所有改动将在下次重新自动生成时丢失。 -->
+<!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.MemberPriceSettingsDao">
-
-	<resultMap type="com.yonge.cooleshow.biz.dal.entity.MemberPriceSettings"
-		id="BaseResultMap">
+	<resultMap id="BaseResultMap" type="com.yonge.cooleshow.biz.dal.entity.MemberPriceSettings">
 		<result column="id_" property="id" />
-		<result column="period_" property="period" typeHandler="com.yonge.cooleshow.common.dal.CustomEnumTypeHandler" />
+		<result column="period_" property="period" />
 		<result column="sale_price_" property="salePrice" />
 		<result column="original_price_" property="originalPrice" />
 		<result column="create_time_" property="createTime" />
 		<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>
 
-	<!-- 根据主键查询一条记录 -->
-	<select id="get" resultMap="BaseResultMap">
-		SELECT * FROM member_price_settings WHERE id_ = #{id}
-	</select>
-
-	<!-- 全查询 -->
-	<select id="findAll" resultMap="BaseResultMap">
-		SELECT * FROM member_price_settings ORDER BY id_
+	<!-- 表字段 -->
+	<sql id="baseColumns">
+         t.id_ as id
+        , t.period_ as period
+        , t.sale_price_ as salePrice
+        , t.original_price_ as originalPrice
+        , t.create_time_ as createTime
+        , t.update_time_ as updateTime
+        , t.create_by_ as createBy
+        , t.update_by_ as updateBy
+        </sql>
+
+	<select id="detail" resultType="com.yonge.cooleshow.biz.dal.vo.MemberPriceSettingsVo">
+		SELECT
+			<include refid="baseColumns"/>,
+			ifnull(u.real_name_,u.username_) modifierName
+		FROM member_price_settings t
+		where t.id_ = #{id}
 	</select>
 
-	<!-- 向数据库增加一条记录 -->
-	<insert id="insert"
-		parameterType="com.yonge.cooleshow.biz.dal.entity.MemberPriceSettings"
-		useGeneratedKeys="true" keyColumn="id" keyProperty="id">
-		INSERT INTO
-		member_price_settings
-		(id_,period_,sale_price_,original_price_,create_time_,update_time_,create_by_,update_by_)
-		VALUES(#{id},#{period, typeHandler=com.yonge.cooleshow.common.dal.CustomEnumTypeHandler},#{salePrice},#{originalPrice},#{createTime},#{updateTime},#{createBy},#{updateBy})
-	</insert>
-
-	<!-- 根据主键查询一条记录 -->
-	<update id="update"
-		parameterType="com.yonge.cooleshow.biz.dal.entity.MemberPriceSettings">
-		UPDATE member_price_settings
-		<set>
-			<if test="salePrice != null">
-				sale_price_ = #{salePrice},
-			</if>
-			<if test="updateBy != null">
-				update_by_ = #{updateBy},
-			</if>
-			<if test="createBy != null">
-				create_by_ = #{createBy},
-			</if>
-			<if test="id != null">
-				id_ = #{id},
-			</if>
-			<if test="period != null">
-				period_ = #{period, typeHandler=com.yonge.cooleshow.common.dal.CustomEnumTypeHandler},
-			</if>
-			<if test="updateTime != null">
-				update_time_ = #{updateTime},
-			</if>
-			<if test="originalPrice != null">
-				original_price_ = #{originalPrice},
-			</if>
-			<if test="createTime != null">
-				create_time_ = #{createTime},
-			</if>
-		</set>
-		WHERE id_ = #{id}
-	</update>
-
-	<!-- 根据主键删除一条记录 -->
-	<delete id="delete">
-		DELETE FROM member_price_settings WHERE id_ = #{id}
-	</delete>
+	<sql id="selectSql">
+		SELECT
+			<include refid="baseColumns" />,
+		ifnull(u.real_name_,u.username_) as modifierName
+		FROM member_price_settings t
+		LEFT JOIN sys_user u on t.update_by_ = u.id_
+	</sql>
 
-	<!-- 分页查询 -->
-	<select id="queryPage" resultMap="BaseResultMap" parameterType="map">
-		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 id="selectPage" resultType="com.yonge.cooleshow.biz.dal.vo.MemberPriceSettingsVo">
+		<include refid="selectSql"/>
 	</select>
 
-	<!-- 查询当前表的总记录数 -->
-	<select id="queryCount" resultType="int">
-		SELECT COUNT(*) FROM member_price_settings
+	<select id="selectList" resultType="com.yonge.cooleshow.biz.dal.vo.MemberPriceSettingsVo">
+		<include refid="selectSql"/>
 	</select>
-</mapper>
+</mapper>

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

@@ -44,6 +44,7 @@
         left join (select count(1) as num,amr.album_id_ from album_music_relate amr group by amr.album_id_) t1 on t1.album_id_ = t.id_
         left join (select count(1) as num,af.album_id_ from album_favorite af group by af.album_id_) t2 on t2.album_id_ = t.id_
         <where>
+            t.del_flag_ = 0
             <if test="query.idAndName != null and query.idAndName != ''">
                 and (t.id_ like concat('%',#{query.idAndName},'%') or
                     t.album_name_ like concat('%',#{query.idAndName},'%'))
@@ -77,6 +78,7 @@
         from music_album t
         left join album_favorite af2 on af2.album_id_ = t.id_
         <where>
+            t.del_flag_ = 0
             <if test="query.studentId != null">
                 and af2.user_id_ = #{query.studentId}
             </if>
@@ -105,6 +107,7 @@
         left join (select count(1) as num,amr.album_id_ from album_music_relate amr group by amr.album_id_) t1 on t1.album_id_ = t.id_
         left join (select count(1) as num,af.album_id_ from album_favorite af group by af.album_id_) t2 on t2.album_id_ = t.id_
         <where>
+            t.del_flag_ = 0
             <if test="records != null and records.size() != 0">
                 and t.id_ in
                 <foreach collection="records" item="item" open="(" close=")" separator=",">

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

@@ -50,6 +50,7 @@
         t.audio_file_url_ as audioFileUrl,
         t.xml_file_url_ as xmlFileUrl,
         t.has_beat_ as hasBeat,
+        t.mp3_type_ as mp3Type,
         t.create_time_ as createTime,
         t.create_by_ as createBy,
         t.update_time_ as updateTime,
@@ -169,6 +170,7 @@
         ,msa.metronome_url_ as accompanimentMetronomeUrl
         ,msa.track_ as track
         ,su.username_ as userName
+        ,su.avatar_ as userAvatar
         ,(select group_concat(mt.name_) from music_tag mt
         where find_in_set(mt.id_,t.music_tag_) and mt.del_flag_ = 0) as musicTagNames
         ,(select group_concat(s.name_) from subject s
@@ -211,6 +213,7 @@
         <result column="url" jdbcType="BOOLEAN" property="url"/>
         <result column="metronomeUrl" jdbcType="BOOLEAN" property="metronomeUrl"/>
         <result column="midiUrl" jdbcType="BOOLEAN" property="midiUrl"/>
+        <result column="mp3Type" jdbcType="BOOLEAN" property="mp3Type"/>
         <result column="remark" jdbcType="VARCHAR" property="remark"/>
         <result column="userName" jdbcType="VARCHAR" property="userName"/>
         <collection property="background" ofType="com.yonge.cooleshow.biz.dal.entity.MusicSheetAccompaniment">

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

@@ -104,8 +104,8 @@
             ms.del_flag_ = 0
             <if test="longs != null and longs.size() != 0">
                 and
-                <foreach collection="longs" item="item" open="" close="" >
-                    find_in_set(ms.music_tag_)
+                <foreach collection="longs" item="item" open="(" close=")"  separator="or">
+                    find_in_set(#{item},ms.music_tag_)
                 </foreach>
             </if>
         </where>
@@ -115,10 +115,11 @@
 
         select count(1) from music_album ms
         <where>
+            ms.del_flag_ = 0
             <if test="longs != null and longs.size() != 0">
                 and
-                <foreach collection="longs" item="item" open="" close="" >
-                    find_in_set(ms.album_tag_)
+                <foreach collection="longs" item="item" open="(" close=")"  separator="or">
+                    find_in_set(#{item},ms.album_tag_)
                 </foreach>
             </if>
         </where>

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

@@ -27,7 +27,7 @@
         , t.update_time_ as "updateTime"
         </sql>
     <update id="setSubject">
-        update student set subject_id_ = #{subjectIds} where user_id_ = #{id}
+        update student set subject_id_ = #{subjectIds},update_time_ = now() where user_id_ = #{id}
     </update>
     <select id="detail" resultType="com.yonge.cooleshow.biz.dal.vo.StudentVo">
         SELECT

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

@@ -36,25 +36,6 @@
         , t.update_time_ as "updateTime"
         </sql>
 
-    <update id="updateUserCard">
-        UPDATE sys_user
-        <set>
-            <if test="param.realName != null and param.realName != ''">
-                real_name_ = #{param.realName},
-            </if>
-            <if test="param.idCardNo != null and param.idCardNo != ''">
-                id_card_no_ = #{param.idCardNo},
-            </if>
-            <if test="param.gender != null">
-                gender_ = #{param.gender},
-            </if>
-            <if test="param.birthdate != null">
-                birthdate_ = #{param.birthdate},
-            </if>
-        </set>
-        WHERE id_ = #{param.userId}
-    </update>
-
     <!-- 分页查询 -->
     <select id="selectPage" resultType = "com.yonge.cooleshow.biz.dal.vo.TeacherAuthEntryRecordVo">
         SELECT
@@ -91,7 +72,7 @@
                 AND t.teacher_auth_status_ = #{param.authStatus}
             </if>
         </where>
-        order by t.create_time_ desc
+        order by field(t.teacher_auth_status_,'DOING') desc, t.create_time_ desc
     </select>
 
     <select id="detail" resultType="com.yonge.cooleshow.biz.dal.vo.TeacherAuthEntryRecordVo">

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

@@ -67,7 +67,7 @@
                 AND t.teacher_auth_status_ = #{param.authStatus}
             </if>
         </where>
-        order by t.create_time_ desc
+        order by field(t.teacher_auth_status_,'DOING') desc, t.create_time_ desc
     </select>
     <select id="getLastRecordByUserId"
             resultType="com.yonge.cooleshow.biz.dal.entity.TeacherAuthMusicianRecord">

+ 14 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherFreeTimeMapper.xml

@@ -81,4 +81,18 @@
             parameterType="java.lang.Long">
         SELECT * FROM teacher_subject_price WHERE teacher_free_time_id = #{id}
     </select>
+    <select id="selectSubjectPrice" resultType="com.yonge.cooleshow.biz.dal.entity.TeacherSubjectPrice">
+        SELECT
+            p.id_ AS id,
+            p.teacher_free_time_id AS teacherFreeTimeId,
+            p.teacher_id_ AS teacherId,
+            p.free_minutes_ AS freeMinutes,
+            p.course_minutes_ AS courseMinutes,
+            p.subject_id_ AS subjectId,
+            p.subject_name_ AS subjectName,
+            p.subject_price_ AS subjectPrice
+        FROM teacher_free_time f
+        LEFT JOIN teacher_subject_price p ON f.id_=p.teacher_free_time_id
+        WHERE f.teacher_id_=#{teacherId} AND f.default_flag_=1 AND p.subject_id_=#{subjectId}
+    </select>
 </mapper>

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

@@ -134,7 +134,7 @@
     </select>
 
     <update id="setSubject">
-        update teacher set subject_id_ = #{subjectIds} where user_id_ = #{id}
+        update teacher set subject_id_ = #{subjectIds},update_time_ = now() where user_id_ = #{id}
     </update>
 
     <update id="addHomeBrowse">

+ 9 - 6
cooleshow-user/user-biz/src/main/resources/config/mybatis/UserAccountMapper.xml

@@ -26,36 +26,39 @@
         update user_cash_account
         <choose>
             <when test="null != inOrOut and inOrOut == 'IN'">
-                set amount_total_ = (amount_total_ + #{transAmount}),amount_frozen_ = (amount_frozen_ + #{transAmount})
+                set amount_total_ = (amount_total_ + #{transAmount}),amount_frozen_ = (amount_frozen_ + #{transAmount}),
             </when>
             <otherwise>
-                set amount_usable_ = (amount_usable_ - #{transAmount}),amount_frozen_ = (amount_frozen_ + #{transAmount})
+                set amount_usable_ = (amount_usable_ - #{transAmount}),amount_frozen_ = (amount_frozen_ + #{transAmount}),
             </otherwise>
         </choose>
+        update_time_ = now()
         where user_id_ = #{userId}
     </update>
     <update id="unfrozenChangeAccount">
         update user_cash_account
         <choose>
             <when test="null != inOrOut and inOrOut == 'IN'">
-                set amount_usable_ = (amount_usable_ + #{transAmount}),amount_frozen_ = (amount_frozen_ - #{transAmount})
+                set amount_usable_ = (amount_usable_ + #{transAmount}),amount_frozen_ = (amount_frozen_ - #{transAmount}),
             </when>
             <otherwise>
-                set amount_total_ = (amount_total_ - #{transAmount}),amount_frozen_ = (amount_frozen_ - #{transAmount})
+                set amount_total_ = (amount_total_ - #{transAmount}),amount_frozen_ = (amount_frozen_ - #{transAmount}),
             </otherwise>
         </choose>
+        update_time_ = now()
         where user_id_ = #{userId}
     </update>
     <update id="changeAccount">
         update user_cash_account
         <choose>
             <when test="null != inOrOut and inOrOut == 'IN'">
-                set amount_total_ = (amount_total_ + #{transAmount}),amount_usable_ = (amount_usable_ + #{transAmount})
+                set amount_total_ = (amount_total_ + #{transAmount}),amount_usable_ = (amount_usable_ + #{transAmount}),
             </when>
             <otherwise>
-                set amount_total_ = (amount_total_ - #{transAmount}),amount_usable_ = (amount_usable_ - #{transAmount})
+                set amount_total_ = (amount_total_ - #{transAmount}),amount_usable_ = (amount_usable_ - #{transAmount}),
             </otherwise>
         </choose>
+        update_time_ = now()
         where user_id_ = #{userId}
     </update>
 

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

@@ -10,7 +10,7 @@
         <result column="biz_type_" property="bizType" />
         <result column="biz_id_" property="bizId" />
         <result column="biz_name_" property="bizName" />
-        <result column="order_id_" property="orderId" />
+        <result column="order_no_" property="orderNo" />
         <result column="create_time_" property="createTime" />
     </resultMap>
 
@@ -24,7 +24,7 @@
         , t.biz_type_ as bizType
         , t.biz_id_ as bizId
         , t.biz_name_ as bizName
-        , t.order_id_ as orderId
+        , t.order_no_ as orderNo
         , t.create_time_ as createTime
         </sql>
 

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

@@ -148,11 +148,12 @@
 
     <select id="selectPendingList" resultType="com.yonge.cooleshow.biz.dal.vo.UserOrderVo">
         SELECT * FROM user_order t
+        left join user_order_payment p on t.order_no_ = p.order_no_
         where (t.status_ = 'WAIT_PAY' and t.create_time_ &lt;= date_sub(now(), interval 30 minute))
-        or ( t.status_ = 'PAYING' and t.create_time_ &lt;= date_sub(now(), interval 120 minute))
+        or ( t.status_ = 'PAYING' and p.create_time_ &lt;= date_sub(now(), interval 120 minute))
     </select>
 
     <update id="updateStatusByOrderNo">
-        update user_order set status_ = #{orderStatus} where order_no_ = #{orderNo}
+        update user_order set status_ = #{orderStatus},update_time_ = now() where order_no_ = #{orderNo}
     </update>
 </mapper>

+ 11 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/VideoLessonAuthRecordMapper.xml

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!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.VideoLessonAuthRecordDao">
+    <update id="updateIds" parameterType="java.util.List">
+        UPDATE video_lesson_auth_record SET video_group_id_ = #{groupId} WHERE id_ IN
+        <foreach collection="list" item="item" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+    </update>
+</mapper>

+ 24 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/VideoLessonGroupDetailMapper.xml

@@ -71,6 +71,30 @@
 		FROM video_lesson_purchase_record
 		WHERE video_lesson_group_id_ = #{param.videoLessonGroupId})
 	</select>
+	<select id="selectPageAuth" resultType="com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupDetailVo">
+			SELECT
+			d.id_ AS id,
+			d.video_lesson_group_id_ AS videoLessonGroupId,
+			d.video_title_ AS videoTitle,
+			d.video_content_ AS videoContent,
+			d.video_url_ AS videoUrl,
+			d.cover_url_ AS coverUrl,
+			d.charge_flag_ AS chargeFlag,
+			d.sort_number_ AS sortNumber,
+			d.teacher_id_ AS teacherId,
+			u.username_ AS teacherName,
+			u.phone_ AS teacherPhone,
+			d.create_time_ AS createTime,
+			d.update_by_ AS updateBy,
+			d.update_time_ AS updateTime
+			FROM video_lesson_group_detail d
+			LEFT JOIN sys_user u ON d.teacher_id_=u.id_
+			<where>
+				<if test="param.videoLessonGroupId !=null">
+					AND video_lesson_group_id_ = #{param.videoLessonGroupId}
+				</if>
+			</where>
+	</select>
 	<insert id="insertVideoLesson" parameterType="java.util.List">
 		INSERT INTO video_lesson_group_detail (video_lesson_group_id_,video_title_,video_content_,video_url_,cover_url_,teacher_id_)
 		VALUES

+ 23 - 6
cooleshow-user/user-biz/src/main/resources/config/mybatis/VideoLessonGroupMapper.xml

@@ -41,6 +41,24 @@
 		g.audit_id_ AS auditId,
 		g.audit_name_ AS auditName,
 	</sql>
+	<sql id="recordColumns">
+		g.id_ AS id,
+		g.lesson_name_ AS lessonName,
+		g.lesson_subject_ AS lessonSubject,
+		g.lesson_desc_ AS lessonDesc,
+		g.lesson_price_ AS lessonPrice,
+		g.lesson_cover_url_ AS lessonCoverUrl,
+		g.teacher_id_ AS teacherId,
+		g.lesson_count_ AS lessonCount,
+		g.sort_number_ AS sortNumber,
+		g.lesson_tag_ AS lessonTag,
+		g.top_flag_ AS topFlag,
+		g.hot_flag_ AS hotFlag,
+		g.create_time_ AS createTime,
+		g.update_time_ AS updateTime,
+		g.audit_id_ AS auditId,
+		g.audit_name_ AS auditName,
+	</sql>
 
 	<update id="updateGroup" parameterType="com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupUpVo">
 		UPDATE video_lesson_group
@@ -232,13 +250,15 @@
 	</select>
 	<select id="queryGroupList" resultType="com.yonge.cooleshow.biz.dal.vo.VideoLessonAuthGroup">
 		SELECT
-		<include refid="baseColumns"/>
+		<include refid="recordColumns"/>
+		r.audit_status_ AS auditStatus,
 		s.name_ AS subjectName,
 		t.username_ AS teacherName,
 		t.phone_ AS teacherPhone
 		FROM video_lesson_group g
 		LEFT JOIN `subject` s ON g.lesson_subject_=s.id_
 		LEFT JOIN sys_user t ON g.teacher_id_=t.id_
+		LEFT JOIN video_lesson_auth_record r ON g.id_=r.video_group_id_
 		<where>
 			<if test="null != param.search and '' != param.search">
 				AND (
@@ -250,13 +270,13 @@
 				)
 			</if>
 			<if test="param.auditStatus !=null and param.auditStatus !=''">
-				AND g.audit_status_ = #{param.auditStatus}
+				AND r.audit_status_ = #{param.auditStatus}
 			</if>
 			<if test="param.subjectId !=null">
 				AND g.lesson_subject_ = #{param.subjectId}
 			</if>
 			<if test="param.auditName !=null and param.auditName !=''">
-				AND g.audit_name_ LIKE CONCAT('%', #{param.auditName}, '%')
+				AND r.audit_name_ LIKE CONCAT('%', #{param.auditName}, '%')
 			</if>
 			<if test="param.startTime !=null">
 				<![CDATA[AND g.create_time_ >= #{param.startTime} ]]>
@@ -266,7 +286,4 @@
 			</if>
 		</where>
 	</select>
-	<select id="selectLessonGroupById" resultType="com.yonge.cooleshow.biz.dal.vo.LessonGroupVo">
-
-	</select>
 </mapper>

+ 0 - 45
cooleshow-user/user-biz/src/main/resources/config/mybatis/VipCardMapper.xml

@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!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.VipCardDao">
-	<resultMap id="BaseResultMap" type="com.yonge.cooleshow.biz.dal.entity.VipCard">
-            <result column="id_" property="id" />
-	        <result column="time_type_" property="timeType" />
-	        <result column="original_price_" property="originalPrice" />
-	        <result column="actual_price_" property="actualPrice" />
-	        <result column="create_time_" property="createTime" />
-	        <result column="create_by__" property="createBy" />
-	        <result column="update_time_" property="updateTime" />
-	        <result column="update_by_" property="updateBy" />
-		</resultMap>  
-    
-    <!-- 表字段 -->
-    <sql id="baseColumns">
-         t.id_ as id
-        , t.time_type_ as timeType
-        , t.original_price_ as originalPrice
-        , t.actual_price_ as actualPrice
-        , t.create_time_ as createTime
-        , t.create_by__ as createBy
-        , t.update_time_ as updateTime
-        , t.update_by_ as updateBy
-        </sql> 
-    
-    <select id="detail" resultType="com.yonge.cooleshow.biz.dal.vo.VipCardVo">
-        SELECT
-            <include refid="baseColumns"/>,
-            (
-                SELECT u.username_ FROM sys_user u WHERE u.id_ = t.update_by_
-            ) as updateByName
-        FROM vip_card t
-        where t.id_ = #{id}
-    </select>
-
-    <select id="selectList" resultType="com.yonge.cooleshow.biz.dal.vo.VipCardVo">
-        SELECT
-            <include refid="baseColumns" />,
-            (
-                SELECT u.username_ FROM sys_user u WHERE u.id_ = t.update_by_
-            ) as updateByName
-        FROM vip_card t
-    </select>
-</mapper>

+ 44 - 0
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/MemberPriceSettingsController.java

@@ -0,0 +1,44 @@
+package com.yonge.cooleshow.student.controller;
+
+import com.yonge.cooleshow.biz.dal.dto.search.MemberPriceSettingsSearch;
+import com.yonge.cooleshow.biz.dal.entity.SysConfig;
+import com.yonge.cooleshow.biz.dal.service.MemberPriceSettingsService;
+import com.yonge.cooleshow.biz.dal.service.SysConfigService;
+import com.yonge.cooleshow.biz.dal.vo.MemberPriceSettingsVo;
+import com.yonge.cooleshow.common.controller.BaseController;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@RequestMapping("memberPriceSettings")
+@Api(tags = "会员价格设置")
+@RestController
+public class MemberPriceSettingsController extends BaseController {
+
+	@Autowired
+	private MemberPriceSettingsService memberPriceSettingsService;
+	@Autowired
+	private SysConfigService sysConfigService;
+
+	@PostMapping("/list")
+	@ApiOperation(value = "查询列表")
+	public HttpResponseResult<List<MemberPriceSettingsVo>> list(@RequestBody MemberPriceSettingsSearch query) {
+		List<MemberPriceSettingsVo> list = memberPriceSettingsService.selectList(query);
+		return succeed(list);
+	}
+
+	@PostMapping("/vipPermissions")
+	@ApiOperation(value = "查询vip权限")
+	public HttpResponseResult<List<SysConfig>> vipPermissions() {
+		Map<String,Object> params = new HashMap<>();
+		params.put("group", "VIP_PERMISSION");
+		List<SysConfig> configs = sysConfigService.findAll(params);
+		return succeed(configs);
+	}
+}

+ 44 - 0
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/MusicSheetController.java

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.student.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
+import com.yonge.cooleshow.auth.api.dto.RealnameAuthReq;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.auth.api.enums.SysUserType;
 import com.yonge.cooleshow.biz.dal.dto.search.StudentMusicSheetSearch;
@@ -9,18 +10,23 @@ import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
 import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
 import com.yonge.cooleshow.biz.dal.service.MusicSheetService;
 import com.yonge.cooleshow.biz.dal.support.PageUtil;
+import com.yonge.cooleshow.biz.dal.vo.CheckVo;
 import com.yonge.cooleshow.biz.dal.vo.MusicSheetDetailVo;
 import com.yonge.cooleshow.biz.dal.vo.MusicSheetVo;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.page.PageInfo;
 import com.yonge.cooleshow.common.page.QueryInfo;
+import com.yonge.toolset.utils.idcard.IdcardInfoExtractor;
+import com.yonge.toolset.utils.string.StringUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import javax.validation.Valid;
+
 /**
  * 曲谱表 web 控制层
  * @author yzp
@@ -138,4 +144,42 @@ public class MusicSheetController extends BaseController {
         return succeed(PageUtil.pageInfo(sheetVoIPage));
     }
 
+
+    /**
+     * 最近练习
+     */
+    @GetMapping("/realNameAuth/check")
+    @ApiOperation(value = "检查实名认证")
+    public HttpResponseResult<CheckVo> realNameAuthCheck() {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null  || sysUser.getId() == null) {
+            return failed("用户信息获取失败");
+        }
+
+        CheckVo checkVo = new CheckVo();
+        if (StringUtil.isEmpty(sysUser.getIdCardNo())) {
+            checkVo.setCheck(YesOrNoEnum.NO);
+        }  else {
+            checkVo.setCheck(YesOrNoEnum.YES);
+        }
+        return succeed(checkVo);
+    }
+
+
+    /**
+     * 实名认证
+     */
+    @PostMapping(value = "/realNameAuth" ,consumes="application/json", produces="application/json")
+    @ApiOperation(value = "实名认证", httpMethod="POST",consumes="application/json", produces="application/json")
+    public HttpResponseResult<IdcardInfoExtractor> realNameAuth(@Valid @RequestBody RealnameAuthReq realNameAuthDto) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null  || sysUser.getId() == null) {
+            return failed("用户信息获取失败");
+        }
+
+        return sysUserFeignService.realNameAuth(realNameAuthDto);
+    }
+
+
+
 }

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

@@ -3,12 +3,10 @@ package com.yonge.cooleshow.student.controller;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 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;
@@ -17,7 +15,6 @@ import com.yonge.cooleshow.common.page.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
-import org.redisson.api.RedissonClient;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.*;
@@ -55,7 +52,7 @@ public class TeacherController extends BaseController {
     }
 
     @ApiOperation(value = "增加视频浏览量")
-    @GetMapping("/queryTeacherStyle")
+    @GetMapping("/addVideoBrowse")
     public HttpResponseResult<Boolean> addVideoBrowse(@ApiParam(value = "视频ID", required = true) @RequestParam("videoId") Long videoId) {
         if(null == videoId){
             return failed("缺少videoId");

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

@@ -52,7 +52,11 @@ public class VideoLessonController extends BaseController {
     @ApiOperation(value = "根据组id查询视频课")
     @GetMapping(value = "/selectVideoLesson")
     public HttpResponseResult<VideoLessonStudentVo> selectVideoLesson(@NotNull(message = "视频组id不能为空") Long groupId) {
-        return succeed(detailService.selectVideoLesson(groupId));
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        return succeed(detailService.selectVideoLesson(groupId,user.getId()));
     }
 
     /**

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

@@ -1,43 +0,0 @@
-package com.yonge.cooleshow.student.controller;
-
-import com.yonge.cooleshow.biz.dal.entity.SysConfig;
-import com.yonge.cooleshow.biz.dal.service.SysConfigService;
-import com.yonge.cooleshow.biz.dal.service.VipCardService;
-import com.yonge.cooleshow.biz.dal.vo.VipCardVo;
-import com.yonge.cooleshow.common.controller.BaseController;
-import com.yonge.cooleshow.common.entity.HttpResponseResult;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-@RestController
-@RequestMapping("/vipCard")
-@Api(value = "会员卡表", tags = "会员卡表")
-public class VipCardController extends BaseController {
-
-    @Autowired
-    private VipCardService vipCardService;
-    @Autowired
-    private SysConfigService sysConfigService;
-
-    @PostMapping("/list")
-    @ApiOperation(value = "查询列表")
-    public HttpResponseResult<List<VipCardVo>> list() {
-		List<VipCardVo> list = vipCardService.selectList();
-        return succeed(list);
-	}
-
-    @PostMapping("/vipPermissions")
-    @ApiOperation(value = "查询vip权限")
-    public HttpResponseResult<List<SysConfig>> vipPermissions() {
-        Map<String,Object> params = new HashMap<>();
-        params.put("group", "VIP_PERMISSION");
-        List<SysConfig> configs = sysConfigService.findAll(params);
-        return succeed(configs);
-    }
-}

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

@@ -9,6 +9,7 @@ import com.yonge.cooleshow.biz.dal.support.PageUtil;
 import com.yonge.cooleshow.biz.dal.valid.impl.ValidList;
 import com.yonge.cooleshow.biz.dal.vo.VideoLessonEvaluateVo;
 import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupDetailUpVo;
+import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupDetailVo;
 import com.yonge.cooleshow.biz.dal.vo.VideoLessonPurchaseStudent;
 import com.yonge.cooleshow.common.page.PageInfo;
 import io.swagger.annotations.Api;
@@ -50,8 +51,8 @@ public class VideoLessonGroupDetailController extends BaseController {
      */
     @ApiOperation(value = "查询视频课", httpMethod = "POST", consumes = "application/json", produces = "application/json")
     @PostMapping(value = "/page", consumes = "application/json", produces = "application/json")
-    public HttpResponseResult<PageInfo<VideoLessonGroupDetail>> page(@RequestBody VideoLessonSearch query) {
-        IPage<VideoLessonGroupDetail> pages = videoLessonGroupDetailService.selectPage(PageUtil.getPage(query), query);
+    public HttpResponseResult<PageInfo<VideoLessonGroupDetailVo>> page(@RequestBody VideoLessonSearch query) {
+        IPage<VideoLessonGroupDetailVo> pages = videoLessonGroupDetailService.selectPage(PageUtil.getPage(query), query);
         return succeed(PageUtil.pageInfo(pages));
     }
 

+ 12 - 0
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/task/TaskController.java

@@ -1,6 +1,7 @@
 package com.yonge.cooleshow.teacher.task;
 
 import com.yonge.cooleshow.biz.dal.entity.TeacherTotal;
+import com.yonge.cooleshow.biz.dal.service.CourseGroupService;
 import com.yonge.cooleshow.biz.dal.service.TeacherService;
 import com.yonge.cooleshow.biz.dal.service.TeacherTotalService;
 import com.yonge.cooleshow.biz.dal.vo.TeacherTotalVo;
@@ -22,6 +23,8 @@ import java.util.List;
 public class TaskController extends BaseController {
     @Autowired
     private TeacherTotalService teacherTotalService;
+    @Autowired
+    private CourseGroupService courseGroupService;
 
     /***
      * 查询所有老师统计数据
@@ -34,6 +37,15 @@ public class TaskController extends BaseController {
         return succeed(teacherTotalService.queryTeacherTotal());
     }
 
+    /***
+     * 定时任务-定时修改为报名中状态-每隔10分钟执行一次
+     */
+    @GetMapping("/openCourseGroup")
+    public HttpResponseResult openCourseGroup(){
+        courseGroupService.openCourseGroup();
+        return HttpResponseResult.succeed();
+    }
+
     @GetMapping("/getRedisValueByKey")
     public HttpResponseResult<Object> getRedisValueByKey(String key) {
         return succeed(teacherTotalService.getRedisValueByKey(key));

+ 3 - 4
toolset/utils/src/main/java/com/yonge/toolset/utils/date/DateUtil.java

@@ -718,11 +718,10 @@ public class DateUtil {
 	public static Date dayEnd(Date date) {
 		Calendar c1 = Calendar.getInstance();
 		c1.setTime(date);
-		Calendar c2 = (Calendar) c1.clone();
 		c1.clear();
-		c1.set(Calendar.YEAR, c2.get(Calendar.YEAR));
-		c1.set(Calendar.MONTH, c2.get(Calendar.MONTH));
-		c1.set(Calendar.DAY_OF_MONTH, c2.get(Calendar.DAY_OF_MONTH));
+		c1.set(Calendar.YEAR, c1.get(Calendar.YEAR));
+		c1.set(Calendar.MONTH, c1.get(Calendar.MONTH));
+		c1.set(Calendar.DAY_OF_MONTH, c1.get(Calendar.DAY_OF_MONTH));
 		// 23:59:59
 		c1.set(Calendar.HOUR_OF_DAY, 23);
 		c1.set(Calendar.MINUTE, 59);