Explorar el Código

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

liujunchi hace 3 años
padre
commit
0d126d5a28
Se han modificado 100 ficheros con 2485 adiciones y 1090 borrados
  1. 1 2
      .gitignore
  2. 1 1
      cooleshow-auth/auth-api/src/main/java/com/yonge/cooleshow/auth/api/client/SysUserFeignService.java
  3. 2 2
      cooleshow-auth/auth-api/src/main/java/com/yonge/cooleshow/auth/api/client/fallback/SysUserFeignServiceFallback.java
  4. 1 1
      cooleshow-auth/auth-api/src/main/java/com/yonge/cooleshow/auth/api/dto/MenuQueryInfo.java
  5. 32 0
      cooleshow-auth/auth-api/src/main/java/com/yonge/cooleshow/auth/api/dto/RealnameAuthReq.java
  6. 115 0
      cooleshow-auth/auth-api/src/main/java/com/yonge/cooleshow/auth/api/entity/SysConfig.java
  7. 1 2
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/config/WebSecurityConfig.java
  8. 4 2
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/core/provider/PhoneAuthenticationProvider.java
  9. 24 0
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/dal/dao/SysConfigDao.java
  10. 119 107
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/dal/dao/SysUserDao.java
  11. 11 0
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/service/SysConfigService.java
  12. 1 1
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/service/SysUserService.java
  13. 33 0
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/service/impl/SysConfigServiceImpl.java
  14. 14 14
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/service/impl/SysUserServiceImpl.java
  15. 33 35
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/web/controller/UserController.java
  16. 88 0
      cooleshow-auth/auth-server/src/main/resources/config/mybatis/SysConfigMapper.xml
  17. 12 1
      cooleshow-auth/auth-server/src/main/resources/config/mybatis/SysRoleMapper.xml
  18. 9 7
      cooleshow-auth/auth-server/src/main/resources/config/mybatis/SysUserMapper.xml
  19. 6 0
      cooleshow-common/src/main/java/com/yonge/cooleshow/common/constant/CommonConstants.java
  20. 7 11
      cooleshow-common/src/main/java/com/yonge/cooleshow/common/constant/SysConfigConstant.java
  21. 7 13
      cooleshow-common/src/main/java/com/yonge/cooleshow/common/entity/HttpResponseResult.java
  22. 9 7
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/EmployeeController.java
  23. 2 2
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/HomeController.java
  24. 1 1
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/MusicSheetController.java
  25. 3 0
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/StudentController.java
  26. 8 8
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/SubjectController.java
  27. 9 0
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/SysConfigController.java
  28. 4 9
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/TeacherAuthEntryRecordController.java
  29. 4 12
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/TeacherAuthMusicianRecordController.java
  30. 4 14
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/TeacherController.java
  31. 18 18
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/UserWithdrawalController.java
  32. 9 1
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/VideoLessonController.java
  33. 109 109
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/VideoLessonEvaluateController.java
  34. 108 108
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/VideoLessonPurchaseRecordController.java
  35. 108 108
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/VideoLessonStudyRecordController.java
  36. 11 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseScheduleDao.java
  37. 9 14
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/EmployeeDao.java
  38. 20 11
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/StudentDao.java
  39. 6 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/SubjectDao.java
  40. 9 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/TeacherDao.java
  41. 16 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/TeacherStyleVideoDao.java
  42. 29 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/UserAccountDao.java
  43. 17 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/UserBankCardDao.java
  44. 5 5
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/UserWithdrawalDao.java
  45. 9 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/VideoLessonEvaluateDao.java
  46. 3 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/VideoLessonGroupDao.java
  47. 6 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/VideoLessonPurchaseRecordDao.java
  48. 27 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/TeacherDto.java
  49. 63 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/UserAccountRecordDto.java
  50. 4 5
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/req/OrderReq.java
  51. 37 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/req/WithdrawalReq.java
  52. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/EmployeeSearch.java
  53. 23 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/VideoLessonEvaluateSearch.java
  54. 19 6
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/VideoLessonGroupSearch.java
  55. 5 4
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/VideoLessonSearch.java
  56. 83 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/CourseCalendarEntity.java
  57. 101 17
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/CourseSchedule.java
  58. 2 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/MusicSheet.java
  59. 2 4
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/Subject.java
  60. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/Teacher.java
  61. 16 15
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TeacherStyleVideo.java
  62. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/UserAccount.java
  63. 48 35
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/UserAccountRecord.java
  64. 5 8
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/UserBankCard.java
  65. 0 11
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/UserOrderPayment.java
  66. 25 36
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/UserWithdrawal.java
  67. 18 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/VideoLessonEvaluate.java
  68. 161 146
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/VideoLessonGroup.java
  69. 5 3
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/VideoLessonGroupDetail.java
  70. 53 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/AccountBizTypeEnum.java
  71. 2 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/CacheNameEnum.java
  72. 40 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/FrozenTypeEnum.java
  73. 16 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/GenderEnum.java
  74. 40 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/InOrOutEnum.java
  75. 39 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/TeacherTypeEnum.java
  76. 28 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/props/HuifuProperties.java
  77. 3 4
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/queryInfo/SubjectQueryInfo.java
  78. 38 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/sdk/PaymentSdk.java
  79. 17 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseScheduleService.java
  80. 9 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/StudentService.java
  81. 2 3
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/SubjectService.java
  82. 27 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/TeacherService.java
  83. 17 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/TeacherStyleVideoService.java
  84. 0 29
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/TeacherWithdrawalService.java
  85. 11 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserAccountService.java
  86. 7 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserOrderService.java
  87. 49 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserWithdrawalService.java
  88. 6 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/VideoLessonEvaluateService.java
  89. 10 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/VideoLessonGroupService.java
  90. 1 8
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseGroupServiceImpl.java
  91. 218 21
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseScheduleServiceImpl.java
  92. 6 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/EmployeeServiceImpl.java
  93. 2 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/LiveRoomServiceImpl.java
  94. 7 11
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/StudentServiceImpl.java
  95. 10 26
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/SubjectServiceImpl.java
  96. 2 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherAuthEntryRecordServiceImpl.java
  97. 49 14
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherServiceImpl.java
  98. 10 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherStyleVideoServiceImpl.java
  99. 0 27
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherWithdrawalServiceImpl.java
  100. 62 5
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserAccountServiceImpl.java

+ 1 - 2
.gitignore

@@ -23,6 +23,7 @@ mvnw.cmd
 *.ipr
 /toolset/codegen/src/main/resources/generateConfigration.xml
 **/bootstrap-dev.yml
+**/bootstrap-dev.properties
 
 
 ### 忽略子模块的文件 ###
@@ -55,5 +56,3 @@ target
 **/bootstrap-local.yml
 **/bootstrap-local.properties
 **/logback-spring.xml
-/.gitignore
-/.gitignore

+ 1 - 1
cooleshow-auth/auth-api/src/main/java/com/yonge/cooleshow/auth/api/client/SysUserFeignService.java

@@ -38,7 +38,7 @@ public interface SysUserFeignService {
 	public List<String> queryRoleCodeListByUserId(@RequestParam("userId") Long userId);
 
 	@PostMapping(value = "user/updateSysUser", consumes = MediaType.APPLICATION_JSON_VALUE)
-	public Boolean updateSysUser(SysUser user);
+	public HttpResponseResult<Boolean> updateSysUser(SysUser user);
 
 	@PostMapping(value = "exit/{clientId}/{phone}", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
 	public HttpResponseResult<String> exitByPhone(@PathVariable("clientId") String clientId, @PathVariable("phone") String phone);

+ 2 - 2
cooleshow-auth/auth-api/src/main/java/com/yonge/cooleshow/auth/api/client/fallback/SysUserFeignServiceFallback.java

@@ -43,8 +43,8 @@ public class SysUserFeignServiceFallback implements SysUserFeignService {
 	}
 
 	@Override
-	public Boolean updateSysUser(SysUser user) {
-		return false;
+	public HttpResponseResult<Boolean> updateSysUser(SysUser user) {
+		return null;
 	}
 
 	@Override

+ 1 - 1
cooleshow-auth/auth-api/src/main/java/com/yonge/cooleshow/auth/api/dto/MenuQueryInfo.java

@@ -14,7 +14,7 @@ public class MenuQueryInfo extends QueryInfo{
     @ApiModelProperty(value = "节点状态,默认0显示,1不显示",required = false)
     private Integer hid;
 
-    @ApiModelProperty(value = "科目编号",required = false)
+    @ApiModelProperty(value = "声部编号",required = false)
     private Integer subjectId;
 
     private Long userId;

+ 32 - 0
cooleshow-auth/auth-api/src/main/java/com/yonge/cooleshow/auth/api/dto/RealnameAuthReq.java

@@ -6,6 +6,7 @@ import io.swagger.annotations.ApiModelProperty;
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 import java.io.Serializable;
+import java.util.Date;
 
 /**
  * 实名认证请求对象
@@ -28,6 +29,13 @@ public class RealnameAuthReq implements Serializable {
     @ApiModelProperty(value = "是否修改用户信息", required = true)
     private Boolean isSave;
 
+    // 性别(1,男 0,女)
+    private int gender;
+    // 出生日期
+    private Date birthday;
+    // 头像
+    private String avatar;
+
     public String getRealName() {
         return realName;
     }
@@ -51,4 +59,28 @@ public class RealnameAuthReq implements Serializable {
     public void setSave(Boolean save) {
         isSave = save;
     }
+
+    public int getGender() {
+        return gender;
+    }
+
+    public void setGender(int gender) {
+        this.gender = gender;
+    }
+
+    public Date getBirthday() {
+        return birthday;
+    }
+
+    public void setBirthday(Date birthday) {
+        this.birthday = birthday;
+    }
+
+    public String getAvatar() {
+        return avatar;
+    }
+
+    public void setAvatar(String avatar) {
+        this.avatar = avatar;
+    }
 }

+ 115 - 0
cooleshow-auth/auth-api/src/main/java/com/yonge/cooleshow/auth/api/entity/SysConfig.java

@@ -0,0 +1,115 @@
+package com.yonge.cooleshow.auth.api.entity;
+
+import com.yonge.cooleshow.common.entity.BaseEntity;
+import io.swagger.annotations.ApiModelProperty;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+/**
+ * 对应数据库表(sys_config):
+ */
+public class SysConfig extends BaseEntity {
+
+	/**  */
+	private Long id;
+	
+	/** 参数名称 */
+	@ApiModelProperty(value = "参数名称", required = true)
+	private String paramName;
+	
+	/** 参数值 */
+	@ApiModelProperty(value = "参数值", required = true)
+	private String paramValue;
+	
+	/** 描述 */
+	@ApiModelProperty(value = "描述", required = true)
+	private String description;
+	
+	/** 创建时间 */
+	private java.util.Date createOn;
+	
+	/** 修改时间 */
+	private java.util.Date modifyOn;
+	
+	private Long modifyBy;
+	
+	@ApiModelProperty(value = "消息组", required = true)
+	private String group;
+	
+	public void setId(Long id){
+		this.id = id;
+	}
+	
+	public Long getId(){
+		return this.id;
+	}
+			
+	public void setParamName(String paramName){
+		this.paramName = paramName;
+	}
+	
+	public String getParamName(){
+		return this.paramName;
+	}
+			
+	public void setParamValue(String paramValue){
+		this.paramValue = paramValue;
+	}
+	
+	public String getParamValue(){
+		return this.paramValue;
+	}
+
+	public <T> T getParamValue(Class<T> cla){
+		try {
+			return cla.cast(cla.getMethod("valueOf", String.class).invoke(cla.getInterfaces(),this.paramValue));
+		} catch (Exception e) {
+			return (T)this.paramValue.getClass();
+		}
+	}
+			
+	public void setDescription(String description){
+		this.description = description;
+	}
+	
+	public String getDescription(){
+		return this.description;
+	}
+			
+	public void setCreateOn(java.util.Date createOn){
+		this.createOn = createOn;
+	}
+	
+	public java.util.Date getCreateOn(){
+		return this.createOn;
+	}
+			
+	public void setModifyOn(java.util.Date modifyOn){
+		this.modifyOn = modifyOn;
+	}
+	
+	public java.util.Date getModifyOn(){
+		return this.modifyOn;
+	}
+			
+	public String getGroup() {
+		return group;
+	}
+
+	public void setGroup(String group) {
+		this.group = group;
+	}
+
+	public Long getModifyBy() {
+		return modifyBy;
+	}
+
+	public void setModifyBy(Long modifyBy) {
+		this.modifyBy = modifyBy;
+	}
+
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
+
+}

+ 1 - 2
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/config/WebSecurityConfig.java

@@ -47,7 +47,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
 	
 	@Autowired
 	private SysUserDeviceService sysUserDeviceService;
-	
+
 	@Override
 	protected void configure(AuthenticationManagerBuilder auth) throws Exception {
 		auth.authenticationProvider(daoAuthenticationProvider());
@@ -110,7 +110,6 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
         provider.setSysUserDeviceService(sysUserDeviceService);
 		// 禁止隐藏用户未找到异常
 		provider.setHideUserNotFoundExceptions(false);
-		
         return provider;
     }
 

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

@@ -2,6 +2,9 @@ package com.yonge.cooleshow.auth.core.provider;
 
 import java.util.Date;
 
+import com.yonge.cooleshow.auth.api.entity.SysConfig;
+import com.yonge.cooleshow.auth.service.SysConfigService;
+import com.yonge.cooleshow.common.constant.SysConfigConstant;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.security.authentication.BadCredentialsException;
 import org.springframework.security.authentication.InternalAuthenticationServiceException;
@@ -30,7 +33,7 @@ public class PhoneAuthenticationProvider extends AbstractAuthenticationProvider
 	private SysUserService sysUserService;
 	
 	private SysUserDeviceService sysUserDeviceService;
-	
+
 	@Override
 	protected void additionalAuthenticationChecks(UserDetails userDetails, Authentication authentication) throws AuthenticationException {
 
@@ -42,7 +45,6 @@ public class PhoneAuthenticationProvider extends AbstractAuthenticationProvider
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	protected UserDetails retrieveUser(String username, Authentication authentication) throws AuthenticationException {
-
 		LoginEntity loginEntity = (LoginEntity) authentication.getCredentials();
 		if (loginEntity == null) {
 			throw new BadCredentialsException("Bad credentials");

+ 24 - 0
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/dal/dao/SysConfigDao.java

@@ -0,0 +1,24 @@
+package com.yonge.cooleshow.auth.dal.dao;
+
+import com.yonge.cooleshow.auth.api.entity.SysConfig;
+import com.yonge.cooleshow.common.dal.BaseDAO;
+import java.util.List;
+
+public interface SysConfigDao extends BaseDAO<Long, SysConfig> {
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/10/9
+     * @params [paramName]
+     * @return com.yonge.cooleshow.biz.dal.entity.SysConfig
+     * @describe 根据配置名称获取配置信息
+     */
+    SysConfig findByParamName(String paramName);
+
+    /**
+     * 获取value
+     * @param paramName
+     * @return
+     */
+    String findConfigValue(String paramName);
+}

+ 119 - 107
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/dal/dao/SysUserDao.java

@@ -15,113 +15,125 @@ import com.yonge.cooleshow.common.entity.ImUserModel;
 
 public interface SysUserDao extends BaseDAO<Long, SysUser> {
 
-	/**
-	 * 根据用户名查询对象
-	 * @param username
-	 * @return
-	 */
-	SysUser queryByUsername(String username);
-
-	/**
-	 * 根据手机号查询对象
-	 * @param phone
-	 * @return
-	 */
-	SysUser queryByPhone(String phone);
-
-	/**
-	 * 根据手机号查询对象
-	 * @param phone
-	 * @return
-	 */
-	SysUser queryLockByPhone(String phone);
-
-	/**
-	 * 根据手机号查询对象
-	 * @param phone
-	 * @return
-	 */
-	SysUser queryByPhoneAndClient(@Param("phone") String phone, @Param("client") String client);
-
-	/**
-	 * 修改密码
-	 * @param mobile
-	 * @param password
-	 */
-	void updatePassword(@Param("mobile") String mobile, @Param("password") String password);
-
-	/**
-	 * 获取用户基本信息
-	 * @param userId
-	 * @return
-	 */
-	ImUserModel getBasic(Long userId);
-
-	/**
-	 * 根据状态查询
-	 * @param status
-	 * @return
-	 */
-	List<SysUser> queryByStatus(UserLockFlag status);
-
-	/**
-	 * 获取随机盐不为null的一条数据
-	 * @param userType
-	 * @return
-	 */
-	SysUser findUserBySalt(String userType);
-
-	/**
-	 * 创建teacher表
-	 * @param userId
-	 * @param lesseeOrganId
-	 */
-	void insertTeacher(@Param("userId") Long userId);
-
-	/**
-	 * 获取教师分部编号
-	 * @param userId
-	 * @return
-	 */
-	Integer getTeacherOrganId(Long userId);
-
-	/**
-	 * 刷新用户token
-	 * @param userId
-	 * @param imToken
-	 */
-	void refreshImToken(@Param("userId") Long userId, @Param("imToken") String imToken);
-
-	/**
-	 * 保存student
-	 * @param userId
-	 */
+    /**
+     * 根据用户名查询对象
+     *
+     * @param username
+     * @return
+     */
+    SysUser queryByUsername(String username);
+
+    /**
+     * 根据手机号查询对象
+     *
+     * @param phone
+     * @return
+     */
+    SysUser queryByPhone(String phone);
+
+    /**
+     * 根据手机号查询对象
+     *
+     * @param phone
+     * @return
+     */
+    SysUser queryLockByPhone(String phone);
+
+    /**
+     * 根据手机号查询对象
+     *
+     * @param phone
+     * @return
+     */
+    SysUser queryByPhoneAndClient(@Param("phone") String phone, @Param("client") String client);
+
+    /**
+     * 修改密码
+     *
+     * @param mobile
+     * @param password
+     */
+    void updatePassword(@Param("mobile") String mobile, @Param("password") String password);
+
+    /**
+     * 获取用户基本信息
+     *
+     * @param userId
+     * @return
+     */
+    ImUserModel getBasic(Long userId);
+
+    /**
+     * 根据状态查询
+     *
+     * @param status
+     * @return
+     */
+    List<SysUser> queryByStatus(UserLockFlag status);
+
+    /**
+     * 获取随机盐不为null的一条数据
+     *
+     * @param userType
+     * @return
+     */
+    SysUser findUserBySalt(String userType);
+
+    /**
+     * 获取教师分部编号
+     *
+     * @param userId
+     * @return
+     */
+    Integer getTeacherOrganId(Long userId);
+
+    /**
+     * 刷新用户token
+     *
+     * @param userId
+     * @param imToken
+     */
+    void refreshImToken(@Param("userId") Long userId, @Param("imToken") String imToken);
+
+    /**
+     * 创建teacher表
+     *
+     * @param userId
+     */
+    void saveTeacher(@Param("userId") Long userId);
+
+    /**
+     * 保存student
+     *
+     * @param userId
+     */
     void saveStudent(@Param("userId") Long userId);
 
-	/***
-	 * 修改用户实名信息
-	 * @author liweifan
-	 * @param: teacherApplyDetailDto
-	 * @updateTime 2022/3/18 15:57
-	 * @return: java.lang.Integer
-	 */
-	Integer updateUserCard(@Param("param")RealnameAuthReq param,@Param("idcardInfo") IdcardInfoExtractor idcardInfo);
-
-	/***
-	 * 查询老师设置详情
-	 * @author liweifan
-	 * @param: id
-	 * @updateTime 2022/3/22 10:24
-	 * @return: com.yonge.cooleshow.biz.dal.vo.TeacherVo
-	 */
-	UserSetVo getSetDetail(@Param("id") Long id);
-
-	/***
-	 * 修改老师设置信息
-	 * @author liweifan
-	 * @param: setReq
-	 * @param: id
-	 * @updateTime 2022/3/22 11:06
-	 */
-	void updatetSetDetail(@Param("param") UserSetReq setReq, @Param("id") Long id);
+
+    /***
+     * 修改用户实名信息
+     * @author liweifan
+     * @param: teacherApplyDetailDto
+     * @updateTime 2022/3/18 15:57
+     * @return: java.lang.Integer
+     */
+    Integer updateUserCard(@Param("param") RealnameAuthReq param);
+
+    /***
+     * 查询老师设置详情
+     * @author liweifan
+     * @param: id
+     * @updateTime 2022/3/22 10:24
+     * @return: com.yonge.cooleshow.biz.dal.vo.TeacherVo
+     */
+    UserSetVo getSetDetail(@Param("id") Long id);
+
+    /***
+     * 修改老师设置信息
+     * @author liweifan
+     * @param: setReq
+     * @param: id
+     * @updateTime 2022/3/22 11:06
+     */
+    void updatetSetDetail(@Param("param") UserSetReq setReq, @Param("id") Long id);
 }

+ 11 - 0
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/service/SysConfigService.java

@@ -0,0 +1,11 @@
+package com.yonge.cooleshow.auth.service;
+
+import com.yonge.cooleshow.auth.api.entity.SysConfig;
+import com.yonge.cooleshow.common.service.BaseService;
+
+public interface SysConfigService extends BaseService<Long, SysConfig> {
+
+    SysConfig findByParamName(String paramName);
+
+    String findConfigValue(String paramName);
+}

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

@@ -152,7 +152,7 @@ public interface SysUserService extends BaseService<Long, SysUser> {
      * @updateTime 2022/3/22 15:11
      * @return: java.lang.Integer
      */
-    void updateUserCard(RealnameAuthReq realNameAuthDto, IdcardInfoExtractor idcardInfoExtractor);
+    void updateUserCard(RealnameAuthReq realNameAuthDto);
 
     /***
      * 用户设置页面详情

+ 33 - 0
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/service/impl/SysConfigServiceImpl.java

@@ -0,0 +1,33 @@
+package com.yonge.cooleshow.auth.service.impl;
+
+import com.yonge.cooleshow.auth.api.entity.SysConfig;
+import com.yonge.cooleshow.auth.dal.dao.SysConfigDao;
+import com.yonge.cooleshow.auth.service.SysConfigService;
+import com.yonge.cooleshow.common.dal.BaseDAO;
+import com.yonge.cooleshow.common.service.impl.BaseServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class SysConfigServiceImpl extends BaseServiceImpl<Long, SysConfig> implements SysConfigService {
+
+	@Autowired
+	private SysConfigDao sysConfigDao;
+
+	@Override
+	public BaseDAO<Long, SysConfig> getDAO() {
+		return sysConfigDao;
+	}
+
+	@Override
+	public SysConfig findByParamName(String paramName) {
+		return sysConfigDao.findByParamName(paramName);
+	}
+
+    @Override
+    public String findConfigValue(String paramName){
+        return sysConfigDao.findConfigValue(paramName);
+    }
+
+
+}

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

@@ -6,15 +6,17 @@ import java.util.List;
 import com.yonge.cooleshow.auth.api.dto.RealnameAuthReq;
 import com.yonge.cooleshow.auth.api.dto.UserSetReq;
 import com.yonge.cooleshow.auth.api.vo.UserSetVo;
+import com.yonge.cooleshow.auth.service.SysConfigService;
+import com.yonge.cooleshow.common.constant.SysConfigConstant;
 import com.yonge.toolset.utils.idcard.IdcardInfoExtractor;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import com.yonge.cooleshow.auth.api.dto.SysUserInfo;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
-import com.yonge.cooleshow.auth.api.enums.YesOrNoEnum;
 import com.yonge.cooleshow.auth.dal.dao.SysUserDao;
 import com.yonge.cooleshow.auth.service.SysRoleMenuService;
 import com.yonge.cooleshow.auth.service.SysUserRoleService;
@@ -22,7 +24,6 @@ import com.yonge.cooleshow.auth.service.SysUserService;
 import com.yonge.cooleshow.common.dal.BaseDAO;
 import com.yonge.cooleshow.common.entity.ImUserModel;
 import com.yonge.cooleshow.common.exception.BizException;
-import com.yonge.cooleshow.common.service.IdGeneratorService;
 import com.yonge.cooleshow.common.service.impl.BaseServiceImpl;
 
 @Service
@@ -30,16 +31,14 @@ public class SysUserServiceImpl extends BaseServiceImpl<Long, SysUser> implement
 
     @Autowired
     private SysUserDao sysUserDao;
-
     @Autowired
     private SysUserRoleService sysUserRoleService;
-
     @Autowired
     private SysRoleMenuService sysRoleMenuService;
     @Autowired
     private SysUserService sysUserService;
     @Autowired
-    private IdGeneratorService smsCodeService;
+    private SysConfigService sysConfigService;
 
     @Override
     public BaseDAO<Long, SysUser> getDAO() {
@@ -144,9 +143,13 @@ public class SysUserServiceImpl extends BaseServiceImpl<Long, SysUser> implement
     @Override
     @Transactional(rollbackFor = Exception.class)
     public SysUserInfo registerUser(String phone, String clientId) {
+        SysUser sysUser = new SysUser();
+        sysUser.setPhone(phone);
+        String password = sysUser.getPhone().substring(sysUser.getPhone().length() - 6);
+        sysUser.setPassword(new BCryptPasswordEncoder().encode(password));
+        String defaultHeard = sysConfigService.findConfigValue(SysConfigConstant.DEFAULT_HEARD);
+        sysUser.setAvatar(defaultHeard);
         if (StringUtils.equalsIgnoreCase(clientId, "TEACHER")) {
-            SysUser sysUser = new SysUser();
-            sysUser.setPhone(phone);
             sysUser.setUserType("TEACHER");
             sysUserDao.insert(sysUser);
             //添加用户现金账户
@@ -154,13 +157,10 @@ public class SysUserServiceImpl extends BaseServiceImpl<Long, SysUser> implement
             //userFeignService.createCashAccount(sysUser.getId());
             //sysTenantAccount
             //创建teacher表
-            sysUserDao.insertTeacher(sysUser.getId());
+            sysUserDao.saveTeacher(sysUser.getId());
             return queryUserInfoByPhone(phone);
         } else if (StringUtils.equalsIgnoreCase(clientId, "STUDENT")) {
-            SysUser sysUser = new SysUser();
-            sysUser.setPhone(phone);
             sysUser.setUserType("STUDENT");
-
             sysUserDao.insert(sysUser);
             sysUserService.saveStudent(sysUser.getId());
             return queryUserInfoByPhone(phone);
@@ -181,12 +181,12 @@ public class SysUserServiceImpl extends BaseServiceImpl<Long, SysUser> implement
 
     @Override
     public void saveTeacher(Long userId) {
-        sysUserDao.insertTeacher(userId);
+        sysUserDao.saveTeacher(userId);
     }
 
     @Override
-    public void updateUserCard(RealnameAuthReq realNameAuthDto, IdcardInfoExtractor idcardInfoExtractor) {
-        sysUserDao.updateUserCard(realNameAuthDto, idcardInfoExtractor);
+    public void updateUserCard(RealnameAuthReq realNameAuthDto) {
+        sysUserDao.updateUserCard(realNameAuthDto);
     }
 
     @Override

+ 33 - 35
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/web/controller/UserController.java

@@ -3,8 +3,12 @@ package com.yonge.cooleshow.auth.web.controller;
 import com.yonge.cooleshow.auth.api.dto.RealnameAuthReq;
 import com.yonge.cooleshow.auth.api.dto.UpdatePasswordDto;
 import com.yonge.cooleshow.auth.api.dto.UserSetReq;
+import com.yonge.cooleshow.auth.api.entity.SysConfig;
+import com.yonge.cooleshow.auth.api.entity.SysRole;
 import com.yonge.cooleshow.auth.api.vo.UserSetVo;
+import com.yonge.cooleshow.auth.service.SysConfigService;
 import com.yonge.cooleshow.common.constant.CommonConstants;
+import com.yonge.cooleshow.common.constant.SysConfigConstant;
 import com.yonge.toolset.thirdparty.user.realname.RealnameAuthenticationPlugin;
 import com.yonge.toolset.utils.idcard.IdcardInfoExtractor;
 import com.yonge.toolset.utils.idcard.IdcardValidator;
@@ -15,6 +19,7 @@ import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 
 import java.util.Date;
+import java.util.List;
 
 import org.apache.commons.lang3.StringUtils;
 import org.apache.ibatis.annotations.Param;
@@ -52,8 +57,6 @@ public class UserController extends BaseController {
     private SysUserService sysUserService;
     @Autowired
     private SysRoleService sysRoleService;
-    /*@Autowired
-    private ImFeignService imFeignService;*/
     @Autowired
     private SysUserRoleService sysUserRoleService;
     @Autowired
@@ -62,6 +65,8 @@ public class UserController extends BaseController {
     private boolean debugMode;
     @Autowired
     private RealnameAuthenticationPlugin realnameAuthenticationPlugin;
+    @Autowired
+    private SysConfigService sysConfigService;
 
     @ApiOperation(value = "分页查询用户信息")
     @ApiImplicitParams({@ApiImplicitParam(name = "userType", value = "用户类型", required = false, dataType = "String"),
@@ -118,10 +123,10 @@ public class UserController extends BaseController {
     }
 
     @PostMapping(value = "/updateSysUser", consumes = MediaType.APPLICATION_JSON_VALUE)
-    public boolean updateSysUser(@RequestBody SysUser user) {
+    public HttpResponseResult<Boolean> updateSysUser(@RequestBody SysUser user) {
         user.setUpdateTime(new Date());
         sysUserService.update(user);
-        return true;
+        return HttpResponseResult.succeed(true);
     }
 
     @ApiOperation(value = "新增用户")
@@ -130,33 +135,19 @@ public class UserController extends BaseController {
         return succeed(sysUserService.add(sysUser));
     }
 
-    @ApiOperation(value = "设置密码")
+    @ApiOperation(value = "设置用户密码")
     @PostMapping(value = "/setPassword", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
     @ApiImplicitParams({@ApiImplicitParam(name = "password", value = "密码", required = true, dataType = "String"),
-            @ApiImplicitParam(name = "username", value = "用户名", required = true, dataType = "String")})
-    public Object setPassword(String password, String username) {
-        if (StringUtils.isEmpty(password)) {
+            @ApiImplicitParam(name = "id", value = "用户id", required = true, dataType = "Long")})
+    public Object setPassword(String password, Long id) {
+        if (StringUtils.isEmpty(password) || null == id) {
             return failed("参数校验失败");
         }
-        AuthUser authUser = SecurityUtils.getUser();
-        if (authUser == null) {
-            return failed("获取用户信息失败");
-        }
-        SysUser sysUser = sysUserService.get(authUser.getUserId());
+        SysUser sysUser = sysUserService.get(id);
         if (sysUser == null) {
             return failed("用户不存在");
         }
-        if (sysUser.getUserType().contains("TEACHER") || sysUser.getUserType().contains("SYSTEM")) {
-            sysUser.setRealName(username);
-        } else {
-            sysUser.setUsername(username);
-        }
-		/*if(StringUtils.isEmpty(sysUser.getImToken())){
-			ImResult register = imFeignService.register(new ImUserModel(sysUser.getId().toString(), username, sysUser.getAvatar()));
-			sysUser.setImToken(register.getToken());
-		}else {
-			imFeignService.update(new ImUserModel(sysUser.getId().toString(),username,sysUser.getAvatar()));
-		}*/
+
         password = new BCryptPasswordEncoder().encode(password);
         sysUser.setPassword(password);
         sysUser.setUpdateTime(new Date());
@@ -199,8 +190,7 @@ public class UserController extends BaseController {
         if (sysUser == null) {
             return failed("用户不存在");
         }
-        String oldPassword = new BCryptPasswordEncoder().encode(updatePasswordDto.getOldPassword());
-        if (!oldPassword.equals(sysUser.getPassword())) {
+        if (!new BCryptPasswordEncoder().matches(updatePasswordDto.getOldPassword(), sysUser.getPassword())) {
             return failed("原密码错误");
         }
         sysUser.setPassword(new BCryptPasswordEncoder().encode(updatePasswordDto.getNewPasswordFirst()));
@@ -324,12 +314,13 @@ public class UserController extends BaseController {
                 throw new BizException("出生日期不可超过当前时间");
             }
             //手机号不能被占用
-            if(!StringUtil.isEmpty(sysUser.getPhone())){
+            if (!StringUtil.isEmpty(sysUser.getPhone())) {
                 SysUser newSysUser = sysUserService.queryByPhone(sysUser.getPhone());
                 if (newSysUser != null && !newSysUser.getId().equals(sysUser.getId())) {
                     return failed("手机号被占用");
                 }
             }
+            sysUser.setIsSuperAdmin(null);
             sysUserService.updateBaseInfo(sysUser);
             return succeed();
         }
@@ -387,7 +378,7 @@ public class UserController extends BaseController {
     @ApiOperation(value = "获取用户角色列表")
     @GetMapping("/getRole")
     @PreAuthorize("@pcs.hasPermissions('user/getRole')")
-    public Object getRole() {
+    public HttpResponseResult<List<SysRole>> getRole() {
         AuthUser user = SecurityUtils.getUser();
         if (user != null) {
             SysUser sysUser = sysUserService.get(user.getUserId());
@@ -406,12 +397,11 @@ public class UserController extends BaseController {
             @ApiImplicitParam(name = "roleIds", value = "角色id,逗号分隔", required = true, dataType = "String")})
     @PostMapping(value = "/addRole", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
     @PreAuthorize("@pcs.hasPermissions('user/addRole')")
-    public Object getRole(String userId, String roleIds) {
+    public HttpResponseResult<Boolean> getRole(String userId, String roleIds) {
         if (StringUtils.isEmpty(userId) || StringUtils.isEmpty(roleIds)) {
             return failed(SecurityConstants.PARAM_VERIFY_EXCEPTION);
         }
-        sysUserRoleService.batchInsert(Long.parseLong(userId), roleIds);
-        return succeed();
+        return status(sysUserRoleService.batchInsert(Long.parseLong(userId), roleIds));
     }
 
     @ApiOperation(value = "用户角色删除")
@@ -437,7 +427,7 @@ public class UserController extends BaseController {
             return failed(HttpStatus.FORBIDDEN, "请登录");
         }
         SysUser user = sysUserService.get(authUser.getUserId());
-        if (user == null) {
+        if (user == null || null == user.getId()) {
             return failed("用户不存在");
         }
         IdcardValidator idcardValidator = new IdcardValidator();
@@ -454,8 +444,16 @@ public class UserController extends BaseController {
             return failed("未通过实名认证");
         }
         if (realNameAuthDto.getSave()) {
+            String defaultHeard = sysConfigService.findConfigValue(SysConfigConstant.DEFAULT_HEARD);
+            if (StringUtil.isEmpty(user.getAvatar()) || user.getAvatar().equals(defaultHeard)) {
+                user.setAvatar(
+                        0 == idcardInfoExtractor.getGender() ? sysConfigService.findConfigValue(SysConfigConstant.DEFAULT_HEARD_GIRL) : sysConfigService.findConfigValue(SysConfigConstant.DEFAULT_HEARD_BOY));
+            }
+            realNameAuthDto.setGender(idcardInfoExtractor.getGender());
+            realNameAuthDto.setBirthday(idcardInfoExtractor.getBirthday());
+            realNameAuthDto.setAvatar(user.getAvatar());
             //实名认证通过后立刻保存
-            sysUserService.updateUserCard(realNameAuthDto, idcardInfoExtractor);
+            sysUserService.updateUserCard(realNameAuthDto);
         }
         return succeed(idcardInfoExtractor);
     }
@@ -468,7 +466,7 @@ public class UserController extends BaseController {
             return failed(HttpStatus.FORBIDDEN, "请登录");
         }
         SysUser user = sysUserService.get(authUser.getUserId());
-        if (user == null) {
+        if (user == null || null == user.getId()) {
             return failed("用户不存在");
         }
         UserSetVo detail = sysUserService.getSetDetail(user.getId());
@@ -483,7 +481,7 @@ public class UserController extends BaseController {
             return failed(HttpStatus.FORBIDDEN, "请登录");
         }
         SysUser user = sysUserService.get(authUser.getUserId());
-        if (user == null) {
+        if (user == null || null == user.getId()) {
             return failed("用户不存在");
         }
         //设置

+ 88 - 0
cooleshow-auth/auth-server/src/main/resources/config/mybatis/SysConfigMapper.xml

@@ -0,0 +1,88 @@
+<?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.auth.dal.dao.SysConfigDao">
+
+	<resultMap type="com.yonge.cooleshow.auth.api.entity.SysConfig" id="SysConfig">
+		<result column="id_" property="id" />
+		<result column="param_name_" property="paramName" />
+		<result column="param_value_" property="paramValue" />
+		<result column="description_" property="description" />
+		<result column="create_on_" property="createOn" />
+		<result column="modify_on_" property="modifyOn" />
+		<result column="group_" property="group" />
+		<result column="modify_by_" property="modifyBy" />
+	</resultMap>
+
+	<!-- 根据主键查询一条记录 -->
+	<select id="get" resultMap="SysConfig">
+		SELECT * FROM sys_config WHERE id_ = #{id}
+	</select>
+
+	<!-- 全查询 -->
+	<select id="findAll" resultMap="SysConfig">
+		SELECT * FROM sys_config where 1=1
+		<if test="group != null">
+			and group_ = #{group}
+		</if>
+		ORDER BY id_
+	</select>
+
+	<!-- 向数据库增加一条记录 -->
+	<insert id="insert" parameterType="com.yonge.cooleshow.auth.api.entity.SysConfig"
+		useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+		<!-- <selectKey resultClass="int" keyProperty="id" > SELECT SEQ_WSDEFINITION_ID.nextval
+			AS ID FROM DUAL </selectKey> -->
+		INSERT INTO sys_config
+		(id_,param_name_,param_value_,description_,create_on_,modify_on_,group_,modify_by_)
+		VALUES(#{id},#{paramName},#{paramValue},#{description},#{createOn},#{modifyOn},#{group},#{modifyBy})
+	</insert>
+
+	<!-- 根据主键查询一条记录 -->
+	<update id="update" parameterType="com.yonge.cooleshow.auth.api.entity.SysConfig">
+		UPDATE sys_config
+		<set>
+			<if test="modifyOn != null">
+				modify_on_ = #{modifyOn},
+			</if>
+			<if test="paramValue != null">
+				param_value_ = #{paramValue},
+			</if>
+			<if test="description != null">
+				description_ = #{description},
+			</if>
+			<if test="paramName != null">
+				param_name_ = #{paramName},
+			</if>
+			<if test="group != null">
+				group_ = #{group},
+			</if>
+			<if test="modifyBy != null">
+				modify_by_ = #{modifyBy},
+			</if>
+		</set>
+		WHERE id_ = #{id}
+	</update>
+
+    <!-- 根据主键删除一条记录 -->
+	<delete id="delete">
+		DELETE FROM sys_config WHERE id_ = #{id}
+	</delete>
+
+	<!-- 分页查询 -->
+	<select id="queryPage" resultMap="SysConfig" parameterType="map">
+		SELECT * FROM sys_config ORDER BY id_
+		<include refid="global.limit" />
+	</select>
+
+	<!-- 查询当前表的总记录数 -->
+	<select id="queryCount" resultType="int">
+		SELECT COUNT(*) FROM sys_config
+	</select>
+
+	<select id="findByParamName" resultMap="SysConfig">
+		SELECT * FROM sys_config WHERE param_name_ = #{paramName}
+	</select>
+    <select id="findConfigValue" resultType="java.lang.String">
+		SELECT param_value_ FROM sys_config WHERE param_name_ = #{paramName}
+	</select>
+</mapper>

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

@@ -67,13 +67,24 @@
 
     <!-- 分页查询 -->
     <select id="queryPage" resultMap="SysRole" parameterType="map">
-        SELECT * FROM sys_role WHERE del_flag_ = 0 ORDER BY update_time_ DESC
+        SELECT * FROM sys_role WHERE del_flag_ = 0
+        <where>
+        	<if test="search != null and search != ''">
+        		role_name_ like CONCAT('%',#{search},'%')
+        	</if>
+        </where>
+        ORDER BY update_time_ DESC
         <include refid="global.limit"/>
     </select>
 
     <!-- 查询当前表的总记录数 -->
     <select id="queryCount" resultType="int">
 		SELECT COUNT(*) FROM sys_role WHERE del_flag_ = 0
+        <where>
+        	<if test="search != null and search != ''">
+        		role_name_ like CONCAT('%',#{search},'%')
+        	</if>
+        </where>
 	</select>
 
     <select id="findRoleByUserId" resultMap="SysRole">

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

@@ -65,9 +65,8 @@
         VALUES(#{isSuperAdmin},#{imToken},#{id},#{username},#{salt},#{phone},#{avatar},now(),now(),#{wxOpenid},#{qqOpenid},#{userType},
         #{gender},#{nation},#{birthdate},#{email},#{idCardNo},#{wechatId},#{realName},#{certificateType})
     </insert>
-    <insert id="insertTeacher">
-        INSERT INTO teacher
-        (user_id_,create_time_,update_time_)VALUES(#{userId},NOW(),NOW())
+    <insert id="saveTeacher">
+        INSERT INTO teacher (user_id_,create_time_,update_time_)VALUES(#{userId},NOW(),NOW())
     </insert>
     <insert id="saveStudent">
         INSERT INTO student (user_id_,create_time_,update_time_) VALUES(#{userId},NOW(),NOW())
@@ -212,11 +211,14 @@
             <if test="param.idCardNo != null and param.idCardNo != ''">
                 id_card_no_ = #{param.idCardNo},
             </if>
-            <if test="idcardInfo.gender != null">
-                gender_ = #{idcardInfo.gender},
+            <if test="param.gender != null">
+                gender_ = #{param.gender},
+            </if>
+            <if test="param.birthdate != null and param.birthdate != ''">
+                birthdate_ = #{param.birthdate},
             </if>
-            <if test="idcardInfo.birthdate != null and idcardInfo.birthdate != ''">
-                birthdate_ = #{idcardInfo.birthdate},
+            <if test="param.avatar != null and param.avatar != ''">
+                avatar_ = #{param.avatar},
             </if>
         </set>
         WHERE id_ = #{param.userId}

+ 6 - 0
cooleshow-common/src/main/java/com/yonge/cooleshow/common/constant/CommonConstants.java

@@ -46,4 +46,10 @@ public interface CommonConstants {
 	 * @updateTime 2022/3/28 16:29
 	 */
 	String REDIS_SPLIT = ":";
+	/***
+	 * 微信授权类型
+	 * @author liweifan
+	 * @updateTime 2022/4/8 15:48
+	 */
+	String WECHAT_GRANT_TYPE = "authorization_code";
 }

+ 7 - 11
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/constant/SysConfigConstant.java → cooleshow-common/src/main/java/com/yonge/cooleshow/common/constant/SysConfigConstant.java

@@ -1,4 +1,4 @@
-package com.yonge.cooleshow.biz.dal.constant;
+package com.yonge.cooleshow.common.constant;
 
 /**
  * 系统配置常量
@@ -97,20 +97,16 @@ public interface SysConfigConstant {
     String AUTO_PLANNING_COURSE_MAX_WEEK = "auto_planning_course_max_week";
 
     /**
-     * 管理端默认头像
+     * 默认头像
      */
-    String DEFAULT_HEARD_ADMIN = "default_heard_admin";
+    String DEFAULT_HEARD = "default_heard";
     /**
-     * 老师默认头像
+     * 默认头像-男
      */
-    String DEFAULT_HEARD_TEACHER = "default_heard_teacher";
+    String DEFAULT_HEARD_BOY = "default_heard_boy";
     /**
-     * 学生默认头像-男
+     * 默认头像-女
      */
-    String DEFAULT_HEARD_STUDENT_BOY = "default_heard_student_boy";
-    /**
-     * 学生默认头像-女
-     */
-    String DEFAULT_HEARD_STUDENT_GIRL = "default_heard_student_girl";
+    String DEFAULT_HEARD_GIRL = "default_heard_girl";
 
 }

+ 7 - 13
cooleshow-common/src/main/java/com/yonge/cooleshow/common/entity/HttpResponseResult.java

@@ -2,28 +2,17 @@ package com.yonge.cooleshow.common.entity;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.serializer.SerializerFeature;
 import com.yonge.cooleshow.common.exception.BizException;
 import com.yonge.toolset.thirdparty.exception.ThirdpartyException;
 import com.yonge.toolset.utils.http.HttpUtil;
+import com.yonge.toolset.utils.json.JsonUtil;
 import org.apache.commons.codec.binary.Base64;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.exception.ExceptionUtils;
 import org.springframework.context.support.DefaultMessageSourceResolvable;
 import org.springframework.http.HttpStatus;
-import org.springframework.security.access.AccessDeniedException;
-import org.springframework.validation.BindException;
-import org.springframework.validation.FieldError;
-import org.springframework.web.bind.MethodArgumentNotValidException;
-import org.springframework.web.bind.annotation.ExceptionHandler;
-
-import javax.crypto.Mac;
-import javax.crypto.spec.SecretKeySpec;
-import javax.servlet.http.HttpServletRequest;
-import java.net.URLEncoder;
 import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.stream.Collectors;
 
 /**
  * HttpResponse 返回结果
@@ -146,4 +135,9 @@ public class HttpResponseResult<T> {
 		obj.setMsg(message);
 		return obj;
 	}
+
+	@Override
+	public String toString(){
+	    return JsonUtil.toJSONString(this, SerializerFeature.PrettyFormat);
+    }
 }

+ 9 - 7
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/EmployeeController.java

@@ -6,11 +6,9 @@ import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dao.EmployeeDao;
 import com.yonge.cooleshow.biz.dal.dto.EmployeeDto;
 import com.yonge.cooleshow.biz.dal.dto.search.EmployeeSearch;
-import com.yonge.cooleshow.biz.dal.dto.search.StudentSearch;
+import com.yonge.cooleshow.biz.dal.enums.GenderEnum;
 import com.yonge.cooleshow.biz.dal.support.PageUtil;
 import com.yonge.cooleshow.biz.dal.vo.EmployeeVo;
-import com.yonge.cooleshow.biz.dal.vo.StudentVo;
-import com.yonge.cooleshow.common.page.QueryInfo;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.page.PageInfo;
 import io.swagger.annotations.Api;
@@ -20,7 +18,7 @@ import io.swagger.annotations.ApiOperation;
 
 import java.util.Date;
 
-import org.apache.commons.beanutils.BeanUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
@@ -47,7 +45,8 @@ public class EmployeeController extends BaseController {
     @ApiImplicitParams({
             @ApiImplicitParam(name = "id", value = "id", paramType = "path", dataType = "long", required = true),
     })
-    public HttpResponseResult<EmployeeVo> detail(@PathVariable("id") Long id){
+    @PreAuthorize("@pcs.hasPermissions('employee/detail')")
+    public HttpResponseResult<EmployeeVo> detail(@PathVariable("id") Long id) {
         EmployeeVo detail = employeeService.detail(id);
         return succeed(detail);
     }
@@ -76,7 +75,7 @@ public class EmployeeController extends BaseController {
     @ApiOperation(value = "修改员工")
     @PostMapping("/update")
     @PreAuthorize("@pcs.hasPermissions('employee/update')")
-    public HttpResponseResult<EmployeeDto> update(@Valid @RequestBody EmployeeDto employee) throws Exception{
+    public HttpResponseResult<EmployeeDto> update(@Valid @RequestBody EmployeeDto employee) throws Exception {
         employee.setUpdateTime(new Date());
         return employeeService.updateEmployee(employee);
     }
@@ -85,10 +84,13 @@ public class EmployeeController extends BaseController {
     @GetMapping("/queryUserInfo")
     public HttpResponseResult<EmployeeVo> apiQueryUserInfo() {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if(sysUser != null && sysUser.getId() != null){
+        if (sysUser != null && sysUser.getId() != null) {
             Employee employee = employeeService.get(sysUser.getId());
             EmployeeVo employeeVo = new EmployeeVo().buildVo(employee);
             employeeVo.setRoleIds(employeeDao.queryUserRole(sysUser.getId()));
+
+            BeanUtils.copyProperties(sysUser, employeeVo, "gender");
+            employeeVo.setGender(GenderEnum.valueOf(sysUser.getGender()));
             return succeed(employeeVo);
         }
         return failed("获取用户信息失败");

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

@@ -23,11 +23,11 @@ public class HomeController extends BaseController {
     private SysUserFeignService sysUserFeignService;
 
     @ApiOperation(value = "查询用户待办事项数")
-    @GetMapping("/getUserToDoNum ")
+    @GetMapping("/getUserToDoNum")
     @PreAuthorize("@pcs.hasPermissions('home/getUserToDoNum')")
     public HttpResponseResult<HomeTotalVo> getUserToDoNum() {
         SysUser user = sysUserFeignService.queryUserInfo();
-        if (user == null) {
+        if (user == null || null == user.getId()) {
             return failed(HttpStatus.FORBIDDEN, "请登录");
         }
         return succeed(homeService.getUserToDoNum(user.getId()));

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

@@ -81,7 +81,7 @@ public class MusicSheetController extends BaseController {
             return failed("曲目声部不能为空");
         }
 
-        musicSheetDto.setUserId(0L);
+        musicSheetDto.setUserId(sysUser.getId());
         musicSheetDto.setAuditStatus(AuthStatusEnum.PASS);
         musicSheetDto.setDelFlag(false);
         List<MusicSheetAccompaniment> list;

+ 3 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/StudentController.java

@@ -10,6 +10,7 @@ import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.page.PageInfo;
 import io.swagger.annotations.*;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
 @RestController
@@ -24,6 +25,7 @@ public class StudentController extends BaseController {
     @ApiImplicitParams({
             @ApiImplicitParam(name = "id", value = "id", paramType = "path", dataType = "long", required = true),
     })
+    @PreAuthorize("@pcs.hasPermissions('student/detail')")
     public HttpResponseResult<StudentVo> detail(@PathVariable("id") Long id){
 		StudentVo detail = studentService.detail(id);
 		return succeed(detail);
@@ -31,6 +33,7 @@ public class StudentController extends BaseController {
 
     @PostMapping("/page")
     @ApiOperation(value = "查询分页", notes = "传入StudentSearch")
+    @PreAuthorize("@pcs.hasPermissions('student/page')")
     public HttpResponseResult<PageInfo<StudentVo>> page(@RequestBody StudentSearch query) {
 		IPage<StudentVo> pages = studentService.selectPage(PageUtil.getPage(query), query);
         return succeed(PageUtil.pageInfo(pages));

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

@@ -24,21 +24,21 @@ import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.page.PageInfo;
 
 @RequestMapping("subject")
-@Api(tags = "科目服务")
+@Api(tags = "声部服务")
 @RestController
 public class SubjectController extends BaseController {
 
 	@Autowired
 	private SubjectService subjectService;
 
-	@ApiOperation(value = "根据科目编号查询科目")
+	@ApiOperation(value = "根据声部编号查询声部")
 	@GetMapping("/get/{id}")
 	@PreAuthorize("@pcs.hasPermissions('subject/get')")
-	public HttpResponseResult<Subject> get(@ApiParam(value = "科目编号", required = true) @PathVariable("id") Long id) {
+	public HttpResponseResult<Subject> get(@ApiParam(value = "声部编号", required = true) @PathVariable("id") Long id) {
 		return succeed(subjectService.get(id));
 	}
 
-	@ApiOperation(value = "分页查询科目列表")
+	@ApiOperation(value = "分页查询声部列表")
 	@GetMapping("/queryPage")
 	@PreAuthorize("@pcs.hasPermissions('subject/queryPage')")
 	public HttpResponseResult<PageInfo<Subject>> queryPage(SubjectQueryInfo queryInfo) {
@@ -55,14 +55,14 @@ public class SubjectController extends BaseController {
 		return succeed(pageInfo);
 	}
 
-	@ApiOperation(value = "分页查询科目树状列表")
+	@ApiOperation(value = "分页查询声部树状列表")
 	@GetMapping("/queryPageTree")
 	@PreAuthorize("@pcs.hasPermissions('subject/queryPageTree')")
 	public HttpResponseResult<PageInfo<Subject>> queryPageTree(SubjectQueryInfo queryInfo) {
 		return succeed(subjectService.queryPageTree(queryInfo));
 	}
 
-	@ApiOperation(value = "修改、新增科目")
+	@ApiOperation(value = "修改、新增声部")
 	@PostMapping("/upset")
 	@PreAuthorize("@pcs.hasPermissions('subject/upset')")
 	public Object update(@RequestBody Subject subject) {
@@ -70,10 +70,10 @@ public class SubjectController extends BaseController {
 		return succeed();
 	}
 
-	@ApiOperation(value = "删除指定科目")
+	@ApiOperation(value = "删除指定声部")
 	@PostMapping("/delete/{id}")
 	@PreAuthorize("@pcs.hasPermissions('subject/get')")
-	public HttpResponseResult<Subject> delete(@ApiParam(value = "科目编号", required = true) @PathVariable("id") Long id) {
+	public HttpResponseResult<Subject> delete(@ApiParam(value = "声部编号", required = true) @PathVariable("id") Long id) {
 		subjectService.deleteById(id);
 		return succeed();
 	}

+ 9 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/SysConfigController.java

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.admin.controller;
 
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 
@@ -97,4 +98,12 @@ public class SysConfigController extends BaseController {
 		}
 		return succeed(sysConfigService.findByParamName(paramName));
 	}
+
+	@GetMapping(value = "findConfigValue")
+	public HttpResponseResult<String> findConfigValue(String paramName) {
+		if(StringUtils.isBlank(paramName)){
+			return failed("参数不能为空");
+		}
+		return succeed(sysConfigService.findConfigValue(paramName));
+	}
 }

+ 4 - 9
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/TeacherAuthEntryRecordController.java

@@ -14,6 +14,7 @@ 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.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
@@ -32,6 +33,7 @@ public class TeacherAuthEntryRecordController extends BaseController {
     @ApiImplicitParams({
             @ApiImplicitParam(name = "id", value = "id", paramType = "path", dataType = "long", required = true),
     })
+    @PreAuthorize("@pcs.hasPermissions('teacherAuthEntryRecord/detail')")
     public HttpResponseResult<TeacherAuthEntryRecordVo> detail(@PathVariable("id") Long id) {
         TeacherAuthEntryRecordVo detail = teacherAuthEntryRecordService.detail(id);
         return succeed(detail);
@@ -39,6 +41,7 @@ public class TeacherAuthEntryRecordController extends BaseController {
 
     @PostMapping("/page")
     @ApiOperation(value = "查询分页", notes = "传入AuthEntryRecordSearch")
+    @PreAuthorize("@pcs.hasPermissions('teacherAuthEntryRecord/page')")
     public HttpResponseResult<PageInfo<TeacherAuthEntryRecordVo>> page(@RequestBody AuthEntryRecordSearch search) {
         IPage<TeacherAuthEntryRecordVo> pages = teacherAuthEntryRecordService.selectPage(PageUtil.getPage(search), search);
         return succeed(PageUtil.pageInfo(pages));
@@ -46,17 +49,9 @@ public class TeacherAuthEntryRecordController extends BaseController {
 
     @PostMapping("/doAuth")
     @ApiOperation(value = "审核", notes = "传入authOperaDto")
+    @PreAuthorize("@pcs.hasPermissions('teacherAuthEntryRecord/doAuth')")
     public HttpResponseResult<Boolean> doAuth(@Valid @RequestBody AuthOperaReq authOperaReq) throws Exception {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         return teacherAuthEntryRecordService.doAuth(authOperaReq, sysUser);
     }
-
-    @PostMapping("/remove")
-    @ApiOperation(value = "删除", notes = "传入ids")
-    public HttpResponseResult remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
-        if (StringUtil.isEmpty(ids)) {
-            return failed("参数不能为空");
-        }
-        return status(teacherAuthEntryRecordService.removeByIds(StringUtil.toLongList(ids)));
-    }
 }

+ 4 - 12
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/TeacherAuthMusicianRecordController.java

@@ -14,6 +14,7 @@ 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.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
@@ -35,6 +36,7 @@ public class TeacherAuthMusicianRecordController extends BaseController {
 	@ApiImplicitParams({
 			@ApiImplicitParam(name = "id", value = "id", paramType = "path", dataType = "long", required = true),
 	})
+	@PreAuthorize("@pcs.hasPermissions('teacherAuthMusicianRecord/detail')")
 	public HttpResponseResult<MusicianAuthEntryRecordVo> detail(@PathVariable("id") Long id) {
 		MusicianAuthEntryRecordVo detail = teacherAuthMusicianRecordService.detail(id);
 		return succeed(detail);
@@ -45,6 +47,7 @@ public class TeacherAuthMusicianRecordController extends BaseController {
 	 */
 	@PostMapping("/page")
 	@ApiOperation(value = "查询分页", notes = "传入AuthEntryRecordSearch")
+	@PreAuthorize("@pcs.hasPermissions('teacherAuthMusicianRecord/page')")
 	public HttpResponseResult<PageInfo<MusicianAuthEntryRecordVo>> page(@RequestBody AuthEntryRecordSearch query) {
 		IPage<MusicianAuthEntryRecordVo> pages = teacherAuthMusicianRecordService.selectPage(PageUtil.getPage(query), query);
 		return succeed(PageUtil.pageInfo(pages));
@@ -52,20 +55,9 @@ public class TeacherAuthMusicianRecordController extends BaseController {
 
 	@PostMapping("/doAuth")
 	@ApiOperation(value = "审核", notes = "传入authOperaDto")
+	@PreAuthorize("@pcs.hasPermissions('teacherAuthMusicianRecord/doAuth')")
 	public HttpResponseResult<Boolean> doAuth(@Valid @RequestBody AuthOperaReq authOperaReq) throws Exception {
 		SysUser sysUser = sysUserFeignService.queryUserInfo();
 		return teacherAuthMusicianRecordService.doAuth(authOperaReq, sysUser);
 	}
-
- 	/**
-	 * 删除
-	 */
-	@PostMapping("/remove")
-	@ApiOperation(value = "逻辑删除", notes = "传入ids")
-	public HttpResponseResult remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
-        if (StringUtil.isEmpty(ids)) {
-			return failed("参数不能为空");
-		}
-		return status(teacherAuthMusicianRecordService.removeByIds(StringUtil.toLongList(ids)));
-	}
 }

+ 4 - 14
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/TeacherController.java

@@ -6,9 +6,9 @@ import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.page.PageInfo;
 import com.yonge.cooleshow.biz.dal.support.PageUtil;
 
-import com.yonge.toolset.utils.string.StringUtil;
 import io.swagger.annotations.*;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
@@ -34,6 +34,7 @@ public class TeacherController extends BaseController {
     @ApiImplicitParams({
             @ApiImplicitParam(name = "id", value = "id", paramType = "path", dataType = "long", required = true),
     })
+    @PreAuthorize("@pcs.hasPermissions('teacher/detail')")
     public HttpResponseResult<TeacherVo> detail(@PathVariable("id") Long userId) {
         TeacherVo detail = teacherService.detail(userId);
         return succeed(detail);
@@ -44,6 +45,7 @@ public class TeacherController extends BaseController {
      */
     @PostMapping("/page")
     @ApiOperation(value = "查询分页", notes = "传入teacher")
+    @PreAuthorize("@pcs.hasPermissions('teacher/page')")
     public HttpResponseResult<PageInfo<TeacherVo>> page(@RequestBody TeacherSearch query) {
         IPage<TeacherVo> pages = teacherService.selectPage(PageUtil.getPage(query), query);
         return succeed(PageUtil.pageInfo(pages));
@@ -54,20 +56,8 @@ public class TeacherController extends BaseController {
      */
     @PostMapping("/submit")
     @ApiOperation(value = "新增或修改", notes = "传入teacher")
+    @PreAuthorize("@pcs.hasPermissions('teacher/submit')")
     public HttpResponseResult<Boolean> submit(@Valid @RequestBody TeacherSubmitReq teacherSubmitReq) {
         return teacherService.submit(teacherSubmitReq);
     }
-
-    /**
-     * 删除
-     */
-    @PostMapping("/remove")
-    @ApiOperation(value = "逻辑删除", notes = "传入ids")
-    public HttpResponseResult remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
-        if (StringUtil.isEmpty(ids)) {
-            return failed("参数不能为空");
-        }
-        return status(teacherService.removeByIds(StringUtil.toLongList(ids)));
-    }
-
 }

+ 18 - 18
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/TeacherWithdrawalController.java → cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/UserWithdrawalController.java

@@ -13,26 +13,26 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
 
-import com.yonge.cooleshow.biz.dal.vo.TeacherWithdrawalVo;
+import com.yonge.cooleshow.biz.dal.vo.UserWithdrawalVo;
 import com.yonge.cooleshow.biz.dal.dto.search.TeacherWithdrawalSearch;
-import com.yonge.cooleshow.biz.dal.entity.TeacherWithdrawal;
-import com.yonge.cooleshow.biz.dal.service.TeacherWithdrawalService;
+import com.yonge.cooleshow.biz.dal.entity.UserWithdrawal;
+import com.yonge.cooleshow.biz.dal.service.UserWithdrawalService;
 
 @RestController
-@RequestMapping("/teacherWithdrawal")
-@Api(value = "老师账户提现表", tags = "老师账户提现表")
-public class TeacherWithdrawalController extends BaseController {
+@RequestMapping("/userWithdrawal")
+@Api(value = "用户账户提现表", tags = "用户账户提现表")
+public class UserWithdrawalController extends BaseController {
 
     @Autowired
-    private TeacherWithdrawalService teacherWithdrawalService;
+    private UserWithdrawalService userWithdrawalService;
 
 	/**
      * 查询单条
      */
     @GetMapping("/detail/{id}")
     @ApiOperation(value = "详情", notes = "传入id")
-    public HttpResponseResult<TeacherWithdrawalVo> detail(@PathVariable("id") Long id) {
-    	return succeed(teacherWithdrawalService.detail(id));
+    public HttpResponseResult<UserWithdrawalVo> detail(@PathVariable("id") Long id) {
+    	return succeed(userWithdrawalService.detail(id));
 	}
     
     /**
@@ -40,8 +40,8 @@ public class TeacherWithdrawalController extends BaseController {
      */
     @PostMapping("/page")
     @ApiOperation(value = "查询分页", notes = "传入teacherWithdrawalSearch")
-    public HttpResponseResult<PageInfo<TeacherWithdrawalVo>> page(@RequestBody TeacherWithdrawalSearch query) {
-		IPage<TeacherWithdrawalVo> pages = teacherWithdrawalService.selectPage(PageUtil.getPage(query), query);
+    public HttpResponseResult<PageInfo<UserWithdrawalVo>> page(@RequestBody TeacherWithdrawalSearch query) {
+		IPage<UserWithdrawalVo> pages = userWithdrawalService.selectPage(PageUtil.getPage(query), query);
         return succeed(PageUtil.pageInfo(pages));
 	}
     
@@ -50,8 +50,8 @@ public class TeacherWithdrawalController extends BaseController {
 	 */
 	@PostMapping("/save")
 	@ApiOperation(value = "新增", notes = "传入teacherWithdrawal")
-	public HttpResponseResult save(@Valid @RequestBody TeacherWithdrawal teacherWithdrawal) {
-    	return status(teacherWithdrawalService.save(teacherWithdrawal));
+	public HttpResponseResult save(@Valid @RequestBody UserWithdrawal userWithdrawal) {
+    	return status(userWithdrawalService.save(userWithdrawal));
 	}
     
     /**
@@ -59,8 +59,8 @@ public class TeacherWithdrawalController extends BaseController {
 	 */
 	@PostMapping("/update")
 	@ApiOperation(value = "修改", notes = "传入teacherWithdrawal")
-	public HttpResponseResult update(@Valid @RequestBody TeacherWithdrawal teacherWithdrawal) {
-        return status(teacherWithdrawalService.updateById(teacherWithdrawal));
+	public HttpResponseResult update(@Valid @RequestBody UserWithdrawal userWithdrawal) {
+        return status(userWithdrawalService.updateById(userWithdrawal));
 	}
     
     /**
@@ -68,8 +68,8 @@ public class TeacherWithdrawalController extends BaseController {
 	 */
     @PostMapping("/submit")
     @ApiOperation(value = "新增或修改", notes = "传入teacherWithdrawal")
-	public HttpResponseResult submit(@Valid @RequestBody TeacherWithdrawal teacherWithdrawal) {
-        return status(teacherWithdrawalService.saveOrUpdate(teacherWithdrawal));
+	public HttpResponseResult submit(@Valid @RequestBody UserWithdrawal userWithdrawal) {
+        return status(userWithdrawalService.saveOrUpdate(userWithdrawal));
     }
 
  	/**
@@ -81,6 +81,6 @@ public class TeacherWithdrawalController extends BaseController {
         if (StringUtil.isEmpty(ids)) {
 			return failed("参数不能为空");
 		}
-		return status(teacherWithdrawalService.removeByIds(StringUtil.toLongList(ids)));
+		return status(userWithdrawalService.removeByIds(StringUtil.toLongList(ids)));
 	}
 }

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

@@ -1,7 +1,7 @@
 package com.yonge.cooleshow.admin.controller;
 
-import com.baomidou.mybatisplus.core.metadata.IPage;
 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.service.VideoLessonGroupDetailService;
 import com.yonge.cooleshow.biz.dal.service.VideoLessonGroupService;
@@ -20,6 +20,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
+import javax.validation.constraints.NotNull;
+
 /**
  * @Author: cy
  * @Date: 2022/4/2
@@ -34,6 +36,12 @@ public class VideoLessonController extends BaseController {
     @Autowired
     private VideoLessonGroupDetailService videoLessonGroupDetailService;
 
+    @ApiOperation(value = "根据视频课组id查详情")
+    @GetMapping(value = "/selectGroupById")
+    public HttpResponseResult<VideoLessonGroup> selectGroupById(@NotNull Long groupId) {
+        return succeed(lessonGroupService.selectGroup(groupId));
+    }
+
     /**
      * @Description: 学员详情-查询视频课列表
      * @Author: cy

+ 109 - 109
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/VideoLessonEvaluateController.java

@@ -1,109 +1,109 @@
-package com.yonge.cooleshow.admin.controller;
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import javax.validation.Valid;
-
-import com.yonge.cooleshow.biz.dal.dto.VideoLessonEvaluateDto;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RequestMapping;
-import com.yonge.cooleshow.common.controller.BaseController;
-import com.yonge.cooleshow.common.entity.HttpResponseResult;
-import com.yonge.cooleshow.biz.dal.entity.VideoLessonEvaluate;
-import com.yonge.cooleshow.biz.dal.service.VideoLessonEvaluateService;
-import com.yonge.cooleshow.auth.api.entity.SysUser;
-import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
-
-/**
- * 视频课学员评价 web 控制层
- * @author yzp
- * @date 2022-03-26 00:21:46
- * @version v1.0
- **/
-@RestController
-@RequestMapping("/video/lesson/evaluate")
-@Api(tags = "视频课学员评价 API接口")
-public class VideoLessonEvaluateController extends BaseController {
-    @Autowired
-    private SysUserFeignService sysUserFeignService;
-
-	@Autowired
-	private VideoLessonEvaluateService videoLessonEvaluateService;
-
-	@ApiOperation(value = "新增", httpMethod="POST", consumes="application/json", produces="application/json")
-    @PostMapping(value="/create", consumes="application/json", produces="application/json")
-    public HttpResponseResult<Object> create(@Valid @RequestBody VideoLessonEvaluate videoLessonEvaluate) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
-
-        //videoLessonEvaluate.setCreateBy(sysUser.getId());
-        //videoLessonEvaluate.setCreateTime(new Date());
-        videoLessonEvaluateService.save(videoLessonEvaluate);
-        return succeed();
-    }
-
-    @ApiOperation(value = "删除", httpMethod="POST", consumes="application/json", produces="application/json")
-    @PostMapping("/delete/{id}")
-    public Object delete(@PathVariable Long id) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
-
-        videoLessonEvaluateService.removeById(id);
-        return succeed();
-    }
-
-    @ApiOperation(value = "修改", httpMethod="POST", consumes="application/json", produces="application/json")
-    @PostMapping(value="/update", consumes="application/json", produces="application/json")
-    public HttpResponseResult<Object> update(@Valid @RequestBody VideoLessonEvaluate videoLessonEvaluate) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
-        if (videoLessonEvaluate.getId()==null){
-            return failed("缺少ID");
-        }
-
-        //videoLessonEvaluate.setUpdateBy(sysUser.getId());
-        //videoLessonEvaluate.setUpdateTime(new Date());
-        videoLessonEvaluateService.updateById(videoLessonEvaluate);
-        return succeed();
-    }
-
-    @ApiOperation(value = "分页查询", httpMethod="POST", consumes="application/json", produces="application/json")
-    @PostMapping(value="/list", consumes="application/json", produces="application/json")
-    public HttpResponseResult<Object> list(@RequestBody VideoLessonEvaluateDto videoLessonEvaluateDto) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
-
-        int pageNo = videoLessonEvaluateDto.getPageNo();
-        int pageSize = videoLessonEvaluateDto.getPageSize();
-
-        try {
-            if (pageNo==0) {
-                pageNo = 1;
-            }
-            if (pageSize==0) {
-                pageSize = 10;
-            }
-
-            LambdaQueryWrapper<VideoLessonEvaluate> lambdaQueryWrapper = Wrappers.lambdaQuery();
-            //lambdaQueryWrapper.like(VideoLessonEvaluate::getName , "k");
-
-            Page<VideoLessonEvaluate> page = new Page<>(pageNo,pageSize);
-            return succeed(videoLessonEvaluateService.page(page, lambdaQueryWrapper));
-        } catch (Exception e) {
-            e.printStackTrace();
-            return HttpResponseResult.failed(e.getMessage());
-        }
-    }
-}
+//package com.yonge.cooleshow.admin.controller;
+//
+//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+//import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+//import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+//import javax.validation.Valid;
+//
+//import com.yonge.cooleshow.biz.dal.dto.VideoLessonEvaluateDto;
+//import io.swagger.annotations.Api;
+//import io.swagger.annotations.ApiOperation;
+//import org.springframework.web.bind.annotation.*;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.web.bind.annotation.RequestMapping;
+//import com.yonge.cooleshow.common.controller.BaseController;
+//import com.yonge.cooleshow.common.entity.HttpResponseResult;
+//import com.yonge.cooleshow.biz.dal.entity.VideoLessonEvaluate;
+//import com.yonge.cooleshow.biz.dal.service.VideoLessonEvaluateService;
+//import com.yonge.cooleshow.auth.api.entity.SysUser;
+//import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
+//
+///**
+// * 视频课学员评价 web 控制层
+// * @author yzp
+// * @date 2022-03-26 00:21:46
+// * @version v1.0
+// **/
+//@RestController
+//@RequestMapping("/video/lesson/evaluate")
+//@Api(tags = "视频课学员评价 API接口")
+//public class VideoLessonEvaluateController extends BaseController {
+//    @Autowired
+//    private SysUserFeignService sysUserFeignService;
+//
+//	@Autowired
+//	private VideoLessonEvaluateService videoLessonEvaluateService;
+//
+//	@ApiOperation(value = "新增", httpMethod="POST", consumes="application/json", produces="application/json")
+//    @PostMapping(value="/create", consumes="application/json", produces="application/json")
+//    public HttpResponseResult<Object> create(@Valid @RequestBody VideoLessonEvaluate videoLessonEvaluate) {
+//        SysUser sysUser = sysUserFeignService.queryUserInfo();
+//        if (sysUser == null) {
+//            return failed("用户信息获取失败");
+//        }
+//
+//        //videoLessonEvaluate.setCreateBy(sysUser.getId());
+//        //videoLessonEvaluate.setCreateTime(new Date());
+//        videoLessonEvaluateService.save(videoLessonEvaluate);
+//        return succeed();
+//    }
+//
+//    @ApiOperation(value = "删除", httpMethod="POST", consumes="application/json", produces="application/json")
+//    @PostMapping("/delete/{id}")
+//    public Object delete(@PathVariable Long id) {
+//        SysUser sysUser = sysUserFeignService.queryUserInfo();
+//        if (sysUser == null) {
+//            return failed("用户信息获取失败");
+//        }
+//
+//        videoLessonEvaluateService.removeById(id);
+//        return succeed();
+//    }
+//
+//    @ApiOperation(value = "修改", httpMethod="POST", consumes="application/json", produces="application/json")
+//    @PostMapping(value="/update", consumes="application/json", produces="application/json")
+//    public HttpResponseResult<Object> update(@Valid @RequestBody VideoLessonEvaluate videoLessonEvaluate) {
+//        SysUser sysUser = sysUserFeignService.queryUserInfo();
+//        if (sysUser == null) {
+//            return failed("用户信息获取失败");
+//        }
+//        if (videoLessonEvaluate.getId()==null){
+//            return failed("缺少ID");
+//        }
+//
+//        //videoLessonEvaluate.setUpdateBy(sysUser.getId());
+//        //videoLessonEvaluate.setUpdateTime(new Date());
+//        videoLessonEvaluateService.updateById(videoLessonEvaluate);
+//        return succeed();
+//    }
+//
+//    @ApiOperation(value = "分页查询", httpMethod="POST", consumes="application/json", produces="application/json")
+//    @PostMapping(value="/list", consumes="application/json", produces="application/json")
+//    public HttpResponseResult<Object> list(@RequestBody VideoLessonEvaluateDto videoLessonEvaluateDto) {
+//        SysUser sysUser = sysUserFeignService.queryUserInfo();
+//        if (sysUser == null) {
+//            return failed("用户信息获取失败");
+//        }
+//
+//        int pageNo = videoLessonEvaluateDto.getPageNo();
+//        int pageSize = videoLessonEvaluateDto.getPageSize();
+//
+//        try {
+//            if (pageNo==0) {
+//                pageNo = 1;
+//            }
+//            if (pageSize==0) {
+//                pageSize = 10;
+//            }
+//
+//            LambdaQueryWrapper<VideoLessonEvaluate> lambdaQueryWrapper = Wrappers.lambdaQuery();
+//            //lambdaQueryWrapper.like(VideoLessonEvaluate::getName , "k");
+//
+//            Page<VideoLessonEvaluate> page = new Page<>(pageNo,pageSize);
+//            return succeed(videoLessonEvaluateService.page(page, lambdaQueryWrapper));
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//            return HttpResponseResult.failed(e.getMessage());
+//        }
+//    }
+//}

+ 108 - 108
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/VideoLessonPurchaseRecordController.java

@@ -1,108 +1,108 @@
-package com.yonge.cooleshow.admin.controller;
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import javax.validation.Valid;
-import com.yonge.cooleshow.biz.dal.dto.VideoLessonPurchaseRecordDto;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RequestMapping;
-import com.yonge.cooleshow.common.controller.BaseController;
-import com.yonge.cooleshow.common.entity.HttpResponseResult;
-import com.yonge.cooleshow.biz.dal.entity.VideoLessonPurchaseRecord;
-import com.yonge.cooleshow.biz.dal.service.VideoLessonPurchaseRecordService;
-import com.yonge.cooleshow.auth.api.entity.SysUser;
-import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
-
-/**
- * 视频课购买记录表 web 控制层
- * @author yzp
- * @date 2022-03-26 00:21:46
- * @version v1.0
- **/
-@RestController
-@RequestMapping("/video/lesson/purchase/record")
-@Api(tags = "视频课购买记录表 API接口")
-public class VideoLessonPurchaseRecordController extends BaseController {
-    @Autowired
-    private SysUserFeignService sysUserFeignService;
-
-	@Autowired
-	private VideoLessonPurchaseRecordService videoLessonPurchaseRecordService;
-
-	@ApiOperation(value = "新增", httpMethod="POST", consumes="application/json", produces="application/json")
-    @PostMapping(value="/create", consumes="application/json", produces="application/json")
-    public HttpResponseResult<Object> create(@Valid @RequestBody VideoLessonPurchaseRecord videoLessonPurchaseRecord) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
-
-        //videoLessonPurchaseRecord.setCreateBy(sysUser.getId());
-        //videoLessonPurchaseRecord.setCreateTime(new Date());
-        videoLessonPurchaseRecordService.save(videoLessonPurchaseRecord);
-        return succeed();
-    }
-
-    @ApiOperation(value = "删除", httpMethod="POST", consumes="application/json", produces="application/json")
-    @PostMapping("/delete/{id}")
-    public Object delete(@PathVariable Long id) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
-
-        videoLessonPurchaseRecordService.removeById(id);
-        return succeed();
-    }
-
-    @ApiOperation(value = "修改", httpMethod="POST", consumes="application/json", produces="application/json")
-    @PostMapping(value="/update", consumes="application/json", produces="application/json")
-    public HttpResponseResult<Object> update(@Valid @RequestBody VideoLessonPurchaseRecord videoLessonPurchaseRecord) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
-        if (videoLessonPurchaseRecord.getId()==null){
-            return failed("缺少ID");
-        }
-
-        //videoLessonPurchaseRecord.setUpdateBy(sysUser.getId());
-        //videoLessonPurchaseRecord.setUpdateTime(new Date());
-        videoLessonPurchaseRecordService.updateById(videoLessonPurchaseRecord);
-        return succeed();
-    }
-
-    @ApiOperation(value = "分页查询", httpMethod="POST", consumes="application/json", produces="application/json")
-    @PostMapping(value="/list", consumes="application/json", produces="application/json")
-    public HttpResponseResult<Object> list(@RequestBody VideoLessonPurchaseRecordDto videoLessonPurchaseRecordDto) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
-
-        int pageNo = videoLessonPurchaseRecordDto.getPageNo();
-        int pageSize = videoLessonPurchaseRecordDto.getPageSize();
-
-        try {
-            if (pageNo==0) {
-                pageNo = 1;
-            }
-            if (pageSize==0) {
-                pageSize = 10;
-            }
-
-            LambdaQueryWrapper<VideoLessonPurchaseRecord> lambdaQueryWrapper = Wrappers.lambdaQuery();
-            //lambdaQueryWrapper.like(VideoLessonPurchaseRecord::getName , "k");
-
-            Page<VideoLessonPurchaseRecord> page = new Page<>(pageNo,pageSize);
-            return succeed(videoLessonPurchaseRecordService.page(page, lambdaQueryWrapper));
-        } catch (Exception e) {
-            e.printStackTrace();
-            return HttpResponseResult.failed(e.getMessage());
-        }
-    }
-}
+//package com.yonge.cooleshow.admin.controller;
+//
+//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+//import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+//import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+//import javax.validation.Valid;
+//import com.yonge.cooleshow.biz.dal.dto.VideoLessonPurchaseRecordDto;
+//import io.swagger.annotations.Api;
+//import io.swagger.annotations.ApiOperation;
+//import org.springframework.web.bind.annotation.*;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.web.bind.annotation.RequestMapping;
+//import com.yonge.cooleshow.common.controller.BaseController;
+//import com.yonge.cooleshow.common.entity.HttpResponseResult;
+//import com.yonge.cooleshow.biz.dal.entity.VideoLessonPurchaseRecord;
+//import com.yonge.cooleshow.biz.dal.service.VideoLessonPurchaseRecordService;
+//import com.yonge.cooleshow.auth.api.entity.SysUser;
+//import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
+//
+///**
+// * 视频课购买记录表 web 控制层
+// * @author yzp
+// * @date 2022-03-26 00:21:46
+// * @version v1.0
+// **/
+//@RestController
+//@RequestMapping("/video/lesson/purchase/record")
+//@Api(tags = "视频课购买记录表 API接口")
+//public class VideoLessonPurchaseRecordController extends BaseController {
+//    @Autowired
+//    private SysUserFeignService sysUserFeignService;
+//
+//	@Autowired
+//	private VideoLessonPurchaseRecordService videoLessonPurchaseRecordService;
+//
+//	@ApiOperation(value = "新增", httpMethod="POST", consumes="application/json", produces="application/json")
+//    @PostMapping(value="/create", consumes="application/json", produces="application/json")
+//    public HttpResponseResult<Object> create(@Valid @RequestBody VideoLessonPurchaseRecord videoLessonPurchaseRecord) {
+//        SysUser sysUser = sysUserFeignService.queryUserInfo();
+//        if (sysUser == null) {
+//            return failed("用户信息获取失败");
+//        }
+//
+//        //videoLessonPurchaseRecord.setCreateBy(sysUser.getId());
+//        //videoLessonPurchaseRecord.setCreateTime(new Date());
+//        videoLessonPurchaseRecordService.save(videoLessonPurchaseRecord);
+//        return succeed();
+//    }
+//
+//    @ApiOperation(value = "删除", httpMethod="POST", consumes="application/json", produces="application/json")
+//    @PostMapping("/delete/{id}")
+//    public Object delete(@PathVariable Long id) {
+//        SysUser sysUser = sysUserFeignService.queryUserInfo();
+//        if (sysUser == null) {
+//            return failed("用户信息获取失败");
+//        }
+//
+//        videoLessonPurchaseRecordService.removeById(id);
+//        return succeed();
+//    }
+//
+//    @ApiOperation(value = "修改", httpMethod="POST", consumes="application/json", produces="application/json")
+//    @PostMapping(value="/update", consumes="application/json", produces="application/json")
+//    public HttpResponseResult<Object> update(@Valid @RequestBody VideoLessonPurchaseRecord videoLessonPurchaseRecord) {
+//        SysUser sysUser = sysUserFeignService.queryUserInfo();
+//        if (sysUser == null) {
+//            return failed("用户信息获取失败");
+//        }
+//        if (videoLessonPurchaseRecord.getId()==null){
+//            return failed("缺少ID");
+//        }
+//
+//        //videoLessonPurchaseRecord.setUpdateBy(sysUser.getId());
+//        //videoLessonPurchaseRecord.setUpdateTime(new Date());
+//        videoLessonPurchaseRecordService.updateById(videoLessonPurchaseRecord);
+//        return succeed();
+//    }
+//
+//    @ApiOperation(value = "分页查询", httpMethod="POST", consumes="application/json", produces="application/json")
+//    @PostMapping(value="/list", consumes="application/json", produces="application/json")
+//    public HttpResponseResult<Object> list(@RequestBody VideoLessonPurchaseRecordDto videoLessonPurchaseRecordDto) {
+//        SysUser sysUser = sysUserFeignService.queryUserInfo();
+//        if (sysUser == null) {
+//            return failed("用户信息获取失败");
+//        }
+//
+//        int pageNo = videoLessonPurchaseRecordDto.getPageNo();
+//        int pageSize = videoLessonPurchaseRecordDto.getPageSize();
+//
+//        try {
+//            if (pageNo==0) {
+//                pageNo = 1;
+//            }
+//            if (pageSize==0) {
+//                pageSize = 10;
+//            }
+//
+//            LambdaQueryWrapper<VideoLessonPurchaseRecord> lambdaQueryWrapper = Wrappers.lambdaQuery();
+//            //lambdaQueryWrapper.like(VideoLessonPurchaseRecord::getName , "k");
+//
+//            Page<VideoLessonPurchaseRecord> page = new Page<>(pageNo,pageSize);
+//            return succeed(videoLessonPurchaseRecordService.page(page, lambdaQueryWrapper));
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//            return HttpResponseResult.failed(e.getMessage());
+//        }
+//    }
+//}

+ 108 - 108
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/VideoLessonStudyRecordController.java

@@ -1,108 +1,108 @@
-package com.yonge.cooleshow.admin.controller;
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import javax.validation.Valid;
-import com.yonge.cooleshow.biz.dal.dto.VideoLessonStudyRecordDto;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RequestMapping;
-import com.yonge.cooleshow.common.controller.BaseController;
-import com.yonge.cooleshow.common.entity.HttpResponseResult;
-import com.yonge.cooleshow.biz.dal.entity.VideoLessonStudyRecord;
-import com.yonge.cooleshow.biz.dal.service.VideoLessonStudyRecordService;
-import com.yonge.cooleshow.auth.api.entity.SysUser;
-import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
-
-/**
- * 视频课学习记录表 web 控制层
- * @author yzp
- * @date 2022-03-26 00:21:46
- * @version v1.0
- **/
-@RestController
-@RequestMapping("/video/lesson/study/record")
-@Api(tags = "视频课学习记录表 API接口")
-public class VideoLessonStudyRecordController extends BaseController {
-    @Autowired
-    private SysUserFeignService sysUserFeignService;
-
-	@Autowired
-	private VideoLessonStudyRecordService videoLessonStudyRecordService;
-
-	@ApiOperation(value = "新增", httpMethod="POST", consumes="application/json", produces="application/json")
-    @PostMapping(value="/create", consumes="application/json", produces="application/json")
-    public HttpResponseResult<Object> create(@Valid @RequestBody VideoLessonStudyRecord videoLessonStudyRecord) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
-
-        //videoLessonStudyRecord.setCreateBy(sysUser.getId());
-        //videoLessonStudyRecord.setCreateTime(new Date());
-        videoLessonStudyRecordService.save(videoLessonStudyRecord);
-        return succeed();
-    }
-
-    @ApiOperation(value = "删除", httpMethod="POST", consumes="application/json", produces="application/json")
-    @PostMapping("/delete/{id}")
-    public Object delete(@PathVariable Long id) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
-
-        videoLessonStudyRecordService.removeById(id);
-        return succeed();
-    }
-
-    @ApiOperation(value = "修改", httpMethod="POST", consumes="application/json", produces="application/json")
-    @PostMapping(value="/update", consumes="application/json", produces="application/json")
-    public HttpResponseResult<Object> update(@Valid @RequestBody VideoLessonStudyRecord videoLessonStudyRecord) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
-        if (videoLessonStudyRecord.getId()==null){
-            return failed("缺少ID");
-        }
-
-        //videoLessonStudyRecord.setUpdateBy(sysUser.getId());
-        //videoLessonStudyRecord.setUpdateTime(new Date());
-        videoLessonStudyRecordService.updateById(videoLessonStudyRecord);
-        return succeed();
-    }
-
-    @ApiOperation(value = "分页查询", httpMethod="POST", consumes="application/json", produces="application/json")
-    @PostMapping(value="/list", consumes="application/json", produces="application/json")
-    public HttpResponseResult<Object> list(@RequestBody VideoLessonStudyRecordDto videoLessonStudyRecordDto) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
-
-        int pageNo = videoLessonStudyRecordDto.getPageNo();
-        int pageSize = videoLessonStudyRecordDto.getPageSize();
-
-        try {
-            if (pageNo==0) {
-                pageNo = 1;
-            }
-            if (pageSize==0) {
-                pageSize = 10;
-            }
-
-            LambdaQueryWrapper<VideoLessonStudyRecord> lambdaQueryWrapper = Wrappers.lambdaQuery();
-            //lambdaQueryWrapper.like(VideoLessonStudyRecord::getName , "k");
-
-            Page<VideoLessonStudyRecord> page = new Page<>(pageNo,pageSize);
-            return succeed(videoLessonStudyRecordService.page(page, lambdaQueryWrapper));
-        } catch (Exception e) {
-            e.printStackTrace();
-            return HttpResponseResult.failed(e.getMessage());
-        }
-    }
-}
+//package com.yonge.cooleshow.admin.controller;
+//
+//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+//import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+//import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+//import javax.validation.Valid;
+//import com.yonge.cooleshow.biz.dal.dto.VideoLessonStudyRecordDto;
+//import io.swagger.annotations.Api;
+//import io.swagger.annotations.ApiOperation;
+//import org.springframework.web.bind.annotation.*;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.web.bind.annotation.RequestMapping;
+//import com.yonge.cooleshow.common.controller.BaseController;
+//import com.yonge.cooleshow.common.entity.HttpResponseResult;
+//import com.yonge.cooleshow.biz.dal.entity.VideoLessonStudyRecord;
+//import com.yonge.cooleshow.biz.dal.service.VideoLessonStudyRecordService;
+//import com.yonge.cooleshow.auth.api.entity.SysUser;
+//import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
+//
+///**
+// * 视频课学习记录表 web 控制层
+// * @author yzp
+// * @date 2022-03-26 00:21:46
+// * @version v1.0
+// **/
+//@RestController
+//@RequestMapping("/video/lesson/study/record")
+//@Api(tags = "视频课学习记录表 API接口")
+//public class VideoLessonStudyRecordController extends BaseController {
+//    @Autowired
+//    private SysUserFeignService sysUserFeignService;
+//
+//	@Autowired
+//	private VideoLessonStudyRecordService videoLessonStudyRecordService;
+//
+//	@ApiOperation(value = "新增", httpMethod="POST", consumes="application/json", produces="application/json")
+//    @PostMapping(value="/create", consumes="application/json", produces="application/json")
+//    public HttpResponseResult<Object> create(@Valid @RequestBody VideoLessonStudyRecord videoLessonStudyRecord) {
+//        SysUser sysUser = sysUserFeignService.queryUserInfo();
+//        if (sysUser == null) {
+//            return failed("用户信息获取失败");
+//        }
+//
+//        //videoLessonStudyRecord.setCreateBy(sysUser.getId());
+//        //videoLessonStudyRecord.setCreateTime(new Date());
+//        videoLessonStudyRecordService.save(videoLessonStudyRecord);
+//        return succeed();
+//    }
+//
+//    @ApiOperation(value = "删除", httpMethod="POST", consumes="application/json", produces="application/json")
+//    @PostMapping("/delete/{id}")
+//    public Object delete(@PathVariable Long id) {
+//        SysUser sysUser = sysUserFeignService.queryUserInfo();
+//        if (sysUser == null) {
+//            return failed("用户信息获取失败");
+//        }
+//
+//        videoLessonStudyRecordService.removeById(id);
+//        return succeed();
+//    }
+//
+//    @ApiOperation(value = "修改", httpMethod="POST", consumes="application/json", produces="application/json")
+//    @PostMapping(value="/update", consumes="application/json", produces="application/json")
+//    public HttpResponseResult<Object> update(@Valid @RequestBody VideoLessonStudyRecord videoLessonStudyRecord) {
+//        SysUser sysUser = sysUserFeignService.queryUserInfo();
+//        if (sysUser == null) {
+//            return failed("用户信息获取失败");
+//        }
+//        if (videoLessonStudyRecord.getId()==null){
+//            return failed("缺少ID");
+//        }
+//
+//        //videoLessonStudyRecord.setUpdateBy(sysUser.getId());
+//        //videoLessonStudyRecord.setUpdateTime(new Date());
+//        videoLessonStudyRecordService.updateById(videoLessonStudyRecord);
+//        return succeed();
+//    }
+//
+//    @ApiOperation(value = "分页查询", httpMethod="POST", consumes="application/json", produces="application/json")
+//    @PostMapping(value="/list", consumes="application/json", produces="application/json")
+//    public HttpResponseResult<Object> list(@RequestBody VideoLessonStudyRecordDto videoLessonStudyRecordDto) {
+//        SysUser sysUser = sysUserFeignService.queryUserInfo();
+//        if (sysUser == null) {
+//            return failed("用户信息获取失败");
+//        }
+//
+//        int pageNo = videoLessonStudyRecordDto.getPageNo();
+//        int pageSize = videoLessonStudyRecordDto.getPageSize();
+//
+//        try {
+//            if (pageNo==0) {
+//                pageNo = 1;
+//            }
+//            if (pageSize==0) {
+//                pageSize = 10;
+//            }
+//
+//            LambdaQueryWrapper<VideoLessonStudyRecord> lambdaQueryWrapper = Wrappers.lambdaQuery();
+//            //lambdaQueryWrapper.like(VideoLessonStudyRecord::getName , "k");
+//
+//            Page<VideoLessonStudyRecord> page = new Page<>(pageNo,pageSize);
+//            return succeed(videoLessonStudyRecordService.page(page, lambdaQueryWrapper));
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//            return HttpResponseResult.failed(e.getMessage());
+//        }
+//    }
+//}

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

@@ -45,6 +45,17 @@ public interface CourseScheduleDao extends BaseMapper<CourseSchedule> {
      */
     List<CourseSchedule> queryStudentCourse(@Param("studentId") Long studentId, @Param("classDate") String classDate);
 
+    /**
+     * 查询老师直播课程
+     *
+     * @param param 传入参数
+     *              <p> - teacherId 老师id
+     *              <p> - status 课程状态 NOT_START未开始 ING进行中 COMPLETE已完成
+     *              <p> - type  PRACTICE 陪练课 LIVE 直播课
+     *              <p> - startDate 开始时间
+     *              <p> - endDate 结束时间
+     *              <p> - subjectId 声部id
+     */
     <T> IPage<T> queryLiveTeacherCourse(Page<T> page, @Param("param") Map<String, Object> param);
 
 }

+ 9 - 14
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/EmployeeDao.java

@@ -51,14 +51,13 @@ public interface EmployeeDao extends BaseDAO<Long, Employee> {
      * @return: long
      */
     int updateSysUser(SysUser user);
-
     /**
-     * 删除用户角色
+     * 获取用户权限列表
      *
      * @param userId
+     * @return
      */
-    void delEmployeeRole(Long userId);
-
+    List<Long> queryUserRole(Long userId);
     /**
      * 批量新增用户角色
      *
@@ -66,7 +65,12 @@ public interface EmployeeDao extends BaseDAO<Long, Employee> {
      * @param roleIds
      */
     void batchAddEmployeeRole(@Param("userId") Long id, @Param("roleIds") List<Long> roleIds);
-
+    /**
+     * 删除用户角色
+     *
+     * @param userId
+     */
+    void delEmployeeRole(Long userId);
     /***
      * 通过手机号查询用户
      * @author liweifan
@@ -89,15 +93,6 @@ public interface EmployeeDao extends BaseDAO<Long, Employee> {
      * @return
      */
     SysUser querySysUserById(@Param("id") Long id);
-
-    /**
-     * 获取用户权限列表
-     *
-     * @param userId
-     * @return
-     */
-    List<Long> queryUserRole(Long userId);
-
     /**
      * @Author: Joburgess
      * @Date: 2019/9/25

+ 20 - 11
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/StudentDao.java

@@ -9,18 +9,27 @@ import com.yonge.cooleshow.biz.dal.entity.Student;
 import com.yonge.cooleshow.biz.dal.vo.StudentVo;
 import org.apache.ibatis.annotations.Param;
 
-public interface StudentDao extends BaseMapper<Student>{
+public interface StudentDao extends BaseMapper<Student> {
+    /***
+     * 查询详情
+     * @author liweifan
+     * @param: userId
+     * @updateTime 2022/3/24 18:14
+     * @return: com.yonge.cooleshow.biz.dal.vo.StudentVo
+     */
+    StudentVo detail(@Param("userId") Long userId);
+
+    /**
+     * 自定义分页
+     */
+    List<StudentVo> selectPage(@Param("page") IPage page, @Param("param") StudentSearch studentSearch);
 	/***
-	 * 查询详情
+	 * 设置学员声部
 	 * @author liweifan
-	 * @param: userId
-	 * @updateTime 2022/3/24 18:14
-	 * @return: com.yonge.cooleshow.biz.dal.vo.StudentVo
-	 */
-	StudentVo detail(@Param("userId") Long userId);
-	/**
-	 * 自定义分页
+	 * @param: id
+	 * @param: subjectIds
+	 * @updateTime 2022/4/7 10:12
+	 * @return: java.lang.Integer
 	 */
-	List<StudentVo> selectPage(@Param("page") IPage page,@Param("param") StudentSearch studentSearch);
-
+    Integer setSubject(@Param("id") Long id, @Param("subjectIds") String subjectIds);
 }

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

@@ -17,6 +17,7 @@ public interface SubjectDao extends BaseDAO<Long, Subject> {
      * @return: java.util.List<com.yonge.cooleshow.biz.dal.entity.Subject>
      */
     List<Subject> findBySubjectIds(@Param("subjectIds") List<Long> subjectIds);
+
     /***
      * 通过声部id(字符串拼接)查询声部
      * @param: subjectIdList
@@ -24,6 +25,7 @@ public interface SubjectDao extends BaseDAO<Long, Subject> {
      * @return: java.util.List<com.yonge.cooleshow.biz.dal.entity.Subject>
      */
     List<Subject> findBySubjectByIdList(@Param("subjectIdList") String subjectIdList);
+
     /***
      * 根据父级id查询子级列表
      * @param: parentId
@@ -31,7 +33,8 @@ public interface SubjectDao extends BaseDAO<Long, Subject> {
      * @updateTime 2022/4/6 11:40
      * @return: java.util.List<com.yonge.cooleshow.biz.dal.entity.Subject>
      */
-    List<Subject> findByParentId(@Param("parentId") Long parentId, @Param("delFlag") YesOrNoEnum delFlag);
+    List<Subject> findByParentId(@Param("parentId") Long parentId, @Param("delFlag") Boolean delFlag);
+
     /***
      * 通过id删除
      * @param: id
@@ -40,4 +43,6 @@ public interface SubjectDao extends BaseDAO<Long, Subject> {
      */
     int deleteById(Long id);
 
+    //根据声部id查详情
+    Subject selectSubjectById(String lessonSubject);
 }

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

@@ -50,4 +50,13 @@ public interface TeacherDao extends BaseMapper<Teacher> {
      * @date 2022/3/25 09:38
      */
     List<Subject> querySubject(@Param("userId") Long userId);
+    /***
+     * 设置学员声部
+     * @author liweifan
+     * @param: id
+     * @param: subjectIds
+     * @updateTime 2022/4/7 10:12
+     * @return: java.lang.Integer
+     */
+    Integer setSubject(@Param("id") Long id, @Param("subjectIds") String subjectIds);
 }

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

@@ -8,7 +8,21 @@ import com.yonge.cooleshow.biz.dal.entity.TeacherStyleVideo;
 import org.apache.ibatis.annotations.Param;
 
 public interface TeacherStyleVideoDao extends BaseMapper<TeacherStyleVideo>{
-
+    /***
+     * 查询老师风采视频
+     * @author liweifan
+     * @param: userId
+     * @updateTime 2022/4/8 15:09
+     * @return: java.util.List<com.yonge.cooleshow.biz.dal.entity.TeacherStyleVideo>
+     */
     List<TeacherStyleVideo> selectListByUserId(@Param("userId") Long userId);
-
+    /***
+     * 删除老师风采视频,留下oldIds
+     * @author liweifan
+     * @param: userId
+     * @param: oldIds
+     * @updateTime 2022/4/8 15:09
+     * @return: java.lang.Integer
+     */
+    Integer removeByUserIdAndOldIds(@Param("userId")Long userId,@Param("oldIds") List<Long> oldIds);
 }

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

@@ -1,9 +1,11 @@
 package com.yonge.cooleshow.biz.dal.dao;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yonge.cooleshow.biz.dal.enums.InOrOutEnum;
 import org.apache.ibatis.annotations.Param;
 import com.yonge.cooleshow.biz.dal.entity.UserAccount;
 import com.yonge.cooleshow.biz.dal.vo.UserAccountVo;
@@ -26,5 +28,31 @@ public interface UserAccountDao extends BaseMapper<UserAccount>{
      * @return: com.yonge.cooleshow.biz.dal.vo.UserAccountVo
 	 */
 	List<UserAccountVo> selectPage(@Param("page") IPage page, @Param("param") UserAccountSearch userAccount);
-	
+	/***
+	 * 账户变更(冻结)
+	 * @author liweifan
+	 * @param: userId
+	 * @param: transAmount
+	 * @updateTime 2022/4/7 17:54
+	 * @return: java.lang.Integer
+	 */
+    Integer frozenChangeAccount(@Param("userId") Long userId, @Param("transAmount") BigDecimal transAmount,@Param("inOrOut") InOrOutEnum inOrOut);
+	/***
+	 * 账户变更(解冻)
+	 * @author liweifan
+	 * @param: userId
+	 * @param: transAmount
+	 * @updateTime 2022/4/7 17:54
+	 * @return: java.lang.Integer
+	 */
+	Integer unfrozenChangeAccount(@Param("userId") Long userId, @Param("transAmount") BigDecimal transAmount,@Param("inOrOut") InOrOutEnum inOrOut);
+	/***
+	 * 账户变更(余额)
+	 * @author liweifan
+	 * @param: userId
+	 * @param: transAmount
+	 * @updateTime 2022/4/7 19:11
+	 * @return: java.lang.Integer
+	 */
+	Integer changeAccount(@Param("userId") Long userId, @Param("transAmount") BigDecimal transAmount,@Param("inOrOut") InOrOutEnum inOrOut);
 }

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

@@ -26,5 +26,21 @@ public interface UserBankCardDao extends BaseMapper<UserBankCard>{
      * @return: com.yonge.cooleshow.biz.dal.vo.UserBankCardVo
 	 */
 	List<UserBankCardVo> selectPage(@Param("page") IPage page, @Param("param") UserBankCardSearch userBankCard);
-	
+	/***
+	 * 查询用户默认银行卡
+	 * @author liweifan
+	 * @param: userId
+	 * @updateTime 2022/4/7 14:37
+	 * @return: com.yonge.cooleshow.biz.dal.vo.UserBankCardVo
+	 */
+	UserBankCardVo getDefaultBankByUserId(@Param("userId") Long userId);
+	/***
+	 * 获取用户银行卡
+	 * @author liweifan
+	 * @param: userId
+	 * @param: bankCardId
+	 * @updateTime 2022/4/7 15:36
+	 * @return: com.yonge.cooleshow.biz.dal.vo.UserBankCardVo
+	 */
+    UserBankCardVo getBankByUserIdAndCardId(@Param("userId") Long userId,@Param("bankCardId")  Long bankCardId);
 }

+ 5 - 5
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/TeacherWithdrawalDao.java → cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/UserWithdrawalDao.java

@@ -5,19 +5,19 @@ 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.TeacherWithdrawal;
-import com.yonge.cooleshow.biz.dal.vo.TeacherWithdrawalVo;
+import com.yonge.cooleshow.biz.dal.entity.UserWithdrawal;
+import com.yonge.cooleshow.biz.dal.vo.UserWithdrawalVo;
 import com.yonge.cooleshow.biz.dal.dto.search.TeacherWithdrawalSearch;
 
 
-public interface TeacherWithdrawalDao extends BaseMapper<TeacherWithdrawal>{
+public interface UserWithdrawalDao extends BaseMapper<UserWithdrawal>{
 	/**
 	 * 查询详情
      * @author liweifan
      * @date 2022-03-30 13:53:51
      * @return: com.yonge.cooleshow.biz.dal.vo.TeacherWithdrawalVo
 	 */
-	TeacherWithdrawalVo detail(@Param("id") Long id);
+	UserWithdrawalVo detail(@Param("id") Long id);
 
 	/**
 	 * 分页查询
@@ -25,6 +25,6 @@ public interface TeacherWithdrawalDao extends BaseMapper<TeacherWithdrawal>{
      * @date 2022-03-30 13:53:51
      * @return: com.yonge.cooleshow.biz.dal.vo.TeacherWithdrawalVo
 	 */
-	List<TeacherWithdrawalVo> selectPage(@Param("page") IPage page, @Param("param") TeacherWithdrawalSearch teacherWithdrawal);
+	List<UserWithdrawalVo> selectPage(@Param("page") IPage page, @Param("param") TeacherWithdrawalSearch teacherWithdrawal);
 	
 }

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

@@ -1,7 +1,14 @@
 package com.yonge.cooleshow.biz.dal.dao;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yonge.cooleshow.biz.dal.dto.search.VideoLessonEvaluateSearch;
+import com.yonge.cooleshow.biz.dal.dto.search.VideoLessonGroupSearch;
 import com.yonge.cooleshow.biz.dal.entity.VideoLessonEvaluate;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yonge.cooleshow.biz.dal.vo.VideoLessonEvaluateVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * VideoLessonEvaluateDao数据库访问类
@@ -10,5 +17,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @version v1.0
  **/
 public interface VideoLessonEvaluateDao extends BaseMapper<VideoLessonEvaluate> {
-
+    //查询视频课评论
+    List<VideoLessonEvaluateVo> selectEvaluate(IPage<VideoLessonEvaluateVo> page, @Param("param") VideoLessonEvaluateSearch search);
 }

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

@@ -31,4 +31,7 @@ public interface VideoLessonGroupDao extends BaseMapper<VideoLessonGroup> {
 
     //老师详情-视频课详情-查询购买学员列表
     List<VideoLessonPurchaseVo> selectPurchaseStudent(IPage page, @Param("param") VideoLessonSearch search);
+
+    //查询视频课组
+    List<LessonGroupVo> selectLessonGroup(IPage page,@Param("param") VideoLessonGroupSearch search);
 }

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

@@ -3,6 +3,8 @@ package com.yonge.cooleshow.biz.dal.dao;
 import com.yonge.cooleshow.biz.dal.entity.VideoLessonPurchaseRecord;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
+import java.util.List;
+
 /**
  * VideoLessonPurchaseRecordDao数据库访问类
  * @author yzp
@@ -10,5 +12,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @version v1.0
  **/
 public interface VideoLessonPurchaseRecordDao extends BaseMapper<VideoLessonPurchaseRecord> {
+    //根据视频课id查购买学生
+    List<Long> selectStudentByDetail(Long videoId);
 
+    //根据课程id查询老师id
+    Long selectTeacherByDetail(Long videoId);
 }

+ 27 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/TeacherDto.java

@@ -0,0 +1,27 @@
+package com.yonge.cooleshow.biz.dal.dto;
+
+import com.yonge.cooleshow.biz.dal.entity.Teacher;
+import com.yonge.cooleshow.biz.dal.entity.TeacherStyleVideo;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.List;
+
+/**
+ * @Author: liweifan
+ * @Data: 2022/3/22 10:10
+ */
+@ApiModel(value = "TeacherVo对象", description = "教师详情")
+public class TeacherDto extends Teacher {
+    private static final long serialVersionUID = 1L;
+    @ApiModelProperty(value = "老师风采视频")
+    private List<TeacherStyleVideo> styleVideo;
+
+    public List<TeacherStyleVideo> getStyleVideo() {
+        return styleVideo;
+    }
+
+    public void setStyleVideo(List<TeacherStyleVideo> styleVideo) {
+        this.styleVideo = styleVideo;
+    }
+}

+ 63 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/UserAccountRecordDto.java

@@ -0,0 +1,63 @@
+package com.yonge.cooleshow.biz.dal.dto;
+
+import com.yonge.cooleshow.biz.dal.entity.UserAccountRecord;
+import com.yonge.cooleshow.biz.dal.enums.AccountBizTypeEnum;
+import com.yonge.cooleshow.biz.dal.enums.FrozenTypeEnum;
+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;
+
+/**
+ * 账户变更传输对象
+ *
+ * @Author: liweifan
+ * @Data: 2022/4/7 15:46
+ */
+@ApiModel(value = "UserAccountRecordDto对象", description = "账户变更传输对象")
+public class UserAccountRecordDto extends UserAccountRecord {
+
+    @ApiModelProperty(value = "用户id", required = true)
+    private Long userId;
+    @ApiModelProperty(value = "变更冻结类型 NONE 无 FROZEN 冻结 UNFROZEN 解冻")
+    private FrozenTypeEnum frozenType;
+
+    public UserAccountRecordDto() {
+    }
+
+    public UserAccountRecordDto(Long userId, BigDecimal transAmount, InOrOutEnum inOrOut, AccountBizTypeEnum bizType) {
+        this.userId = userId;
+        this.setTransAmount(transAmount);
+        this.setInOrOut(inOrOut);
+        this.setBizType(bizType);
+    }
+
+    public UserAccountRecordDto(Long userId, BigDecimal transAmount, InOrOutEnum inOrOut, AccountBizTypeEnum bizType,
+                                Long bizId, String bizName, Long orderId) {
+        this.userId = userId;
+        this.setTransAmount(transAmount);
+        this.setInOrOut(inOrOut);
+        this.setBizType(bizType);
+        this.setBizId(bizId);
+        this.setBizName(bizName);
+        this.setOrderId(orderId);
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public FrozenTypeEnum getFrozenType() {
+        return frozenType;
+    }
+
+    public void setFrozenType(FrozenTypeEnum frozenType) {
+        this.frozenType = frozenType;
+    }
+}

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

@@ -27,10 +27,6 @@ public class OrderReq {
     @NotNull(message = "订单类型不能为空")
     @ApiModelProperty(value = "订单类型:  VIP、开通会员  PRACTICE、陪练课购买  LIVE、直播课购买 VIDEO、视频课购买 MUSIC、单曲点播 ", required = true)
     private OrderTypeEnum orderType;
-    @ApiModelProperty(value = "业务id ")
-    private Long bizId;
-    @ApiModelProperty(value = "业务内容 ")
-    private String bizContent;
     @NotNull(message = "原价不能为空")
     @ApiModelProperty(value = "原价 ", required = true)
     private BigDecimal originalPrice;
@@ -43,10 +39,13 @@ public class OrderReq {
     @NotNull(message = "优惠金额不能为空")
     @ApiModelProperty(value = "优惠金额 ", required = true)
     private BigDecimal couponAmount;
-
     @ApiModelProperty("用户备注 ")
     private String userNote;
 
+    @ApiModelProperty(value = "业务id ")
+    private Long bizId;
+    @ApiModelProperty(value = "业务内容 ")
+    private String bizContent;
     public Long getUserId() {
         return userId;
     }

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

@@ -0,0 +1,37 @@
+package com.yonge.cooleshow.biz.dal.dto.req;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+/**
+ * @Author: liweifan
+ * @Data: 2022/4/7 15:07
+ */
+@ApiModel(value = "WithdrawalReq对象", description = "用户发起提现申请对象")
+public class WithdrawalReq {
+    @NotNull(message = "缺少用户银行卡id")
+    @ApiModelProperty("用户银行卡id")
+    private Long bankCardId;
+    @NotNull(message = "缺少提现金额")
+    @ApiModelProperty("提现金额")
+    private BigDecimal amountWithdrawal;
+
+    public Long getBankCardId() {
+        return bankCardId;
+    }
+
+    public void setBankCardId(Long bankCardId) {
+        this.bankCardId = bankCardId;
+    }
+
+    public BigDecimal getAmountWithdrawal() {
+        return amountWithdrawal;
+    }
+
+    public void setAmountWithdrawal(BigDecimal amountWithdrawal) {
+        this.amountWithdrawal = amountWithdrawal;
+    }
+}

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/EmployeeSearch.java

@@ -14,7 +14,7 @@ import java.util.Date;
  * @Author: liweifan
  * @Data: 2022/3/21 15:26
  */
-@ApiModel(value = "StudentSearch", description = "学院管理查询")
+@ApiModel(value = "EmployeeSearch", description = "学院管理查询")
 public class EmployeeSearch extends QueryInfo{
     @ApiModelProperty(value = "学院编号/昵称/电话")
     private String search;

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

@@ -0,0 +1,23 @@
+package com.yonge.cooleshow.biz.dal.dto.search;
+
+import com.yonge.cooleshow.common.page.QueryInfo;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Author: cy
+ * @Date: 2022/4/11
+ */
+@ApiModel(value = "VideoLessonEvaluateSearch")
+public class VideoLessonEvaluateSearch extends QueryInfo{
+    @ApiModelProperty(value = "视频课id")
+    private Long videoId;
+
+    public Long getVideoId() {
+        return videoId;
+    }
+
+    public void setVideoId(Long videoId) {
+        this.videoId = videoId;
+    }
+}

+ 19 - 6
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/VideoLessonGroupSearch.java

@@ -1,6 +1,6 @@
 package com.yonge.cooleshow.biz.dal.dto.search;
 
-import com.yonge.cooleshow.biz.dal.enums.AuditEnum;
+import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
 import com.yonge.cooleshow.common.page.QueryInfo;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -10,18 +10,21 @@ import io.swagger.annotations.ApiModelProperty;
  * @date: 2022/3/30 11:32
  */
 @ApiModel(value = "VideoLessonGroupSearch", description = "视频课组列表查询")
-public class VideoLessonGroupSearch extends QueryInfo{
-    @ApiModelProperty(value = "审核状态(0:待审核 1:通过 2:未通过)")
-    private AuditEnum auditStatus;
+public class VideoLessonGroupSearch extends QueryInfo {
+    @ApiModelProperty(value = "审核状态(DOING:待审核 PASS:通过 UNPASS:未通过)")
+    private AuthStatusEnum auditStatus;
 
     @ApiModelProperty(value = "视频课组id")
     private Long groupId;
 
-    public AuditEnum getAuditStatus() {
+    @ApiModelProperty(value = "筛选条件")
+    private String search;
+
+    public AuthStatusEnum getAuditStatus() {
         return auditStatus;
     }
 
-    public void setAuditStatus(AuditEnum auditStatus) {
+    public void setAuditStatus(AuthStatusEnum auditStatus) {
         this.auditStatus = auditStatus;
     }
 
@@ -32,4 +35,14 @@ public class VideoLessonGroupSearch extends QueryInfo{
     public void setGroupId(Long groupId) {
         this.groupId = groupId;
     }
+
+    @Override
+    public String getSearch() {
+        return search;
+    }
+
+    @Override
+    public void setSearch(String search) {
+        this.search = search;
+    }
 }

+ 5 - 4
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/VideoLessonSearch.java

@@ -1,6 +1,7 @@
 package com.yonge.cooleshow.biz.dal.dto.search;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
 import com.yonge.cooleshow.biz.dal.valid.AddGroup;
 import com.yonge.cooleshow.biz.dal.valid.SelectGroup;
 import com.yonge.cooleshow.common.page.QueryInfo;
@@ -34,8 +35,8 @@ public class VideoLessonSearch extends QueryInfo {
     @ApiModelProperty("课程声部")
     private String lessonSubject;
 
-    @ApiModelProperty(value = "审核状态(0:待审核 1:通过 2:未通过)")
-    private Integer auditStatus;
+    @ApiModelProperty(value = "审核状态(DOING:待审核 PASS:通过 UNPASS:未通过)")
+    private AuthStatusEnum auditStatus;
 
     @ApiModelProperty(value = "申请开始时间")
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@@ -89,11 +90,11 @@ public class VideoLessonSearch extends QueryInfo {
         this.lessonSubject = lessonSubject;
     }
 
-    public Integer getAuditStatus() {
+    public AuthStatusEnum getAuditStatus() {
         return auditStatus;
     }
 
-    public void setAuditStatus(Integer auditStatus) {
+    public void setAuditStatus(AuthStatusEnum auditStatus) {
         this.auditStatus = auditStatus;
     }
 

+ 83 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/CourseCalendarEntity.java

@@ -0,0 +1,83 @@
+package com.yonge.cooleshow.biz.dal.entity;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author hgw
+ * Created by 2022-04-07
+ */
+@ApiModel(value = "课程日历实体")
+public class CourseCalendarEntity implements Serializable {
+
+    @ApiModelProperty(value = "日期-年月日")
+    private String date;
+
+    @ApiModelProperty(value = "是否是节假日  0:不是 1是")
+    private Integer holiday;
+
+    @ApiModelProperty(value = "当日课程是否排满  0:未满 1满")
+    private Integer fullCourse;
+
+    @ApiModelProperty(value = "当日课程时间-满课或跳过节假日的无数据")
+    private List<CourseTimeEntity> courseTime;
+
+    public static CourseCalendarEntity build() {
+        return new CourseCalendarEntity();
+    }
+
+    public String getDate() {
+        return date;
+    }
+
+    public void setDate(String date) {
+        this.date = date;
+    }
+
+    public CourseCalendarEntity date(String date) {
+        this.date = date;
+        return this;
+    }
+
+    public Integer getHoliday() {
+        return holiday;
+    }
+
+    public void setHoliday(Integer holiday) {
+        this.holiday = holiday;
+    }
+
+    public CourseCalendarEntity holiday(Integer holiday) {
+        this.holiday = holiday;
+        return this;
+    }
+
+    public Integer getFullCourse() {
+        return fullCourse;
+    }
+
+    public void setFullCourse(Integer fullCourse) {
+        this.fullCourse = fullCourse;
+    }
+
+    public CourseCalendarEntity fullCourse(Integer fullCourse) {
+        this.fullCourse = fullCourse;
+        return this;
+    }
+
+    public List<CourseTimeEntity> getCourseTime() {
+        return courseTime;
+    }
+
+    public void setCourseTime(List<CourseTimeEntity> courseTime) {
+        this.courseTime = courseTime;
+    }
+
+    public CourseCalendarEntity courseTime(List<CourseTimeEntity> courseTime) {
+        this.courseTime = courseTime;
+        return this;
+    }
+}

+ 101 - 17
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/CourseSchedule.java

@@ -81,6 +81,9 @@ public class CourseSchedule implements Serializable {
     @ApiModelProperty(value = "更新时间")
     private Date updatedTime;
 
+    public static CourseSchedule build() {
+        return new CourseSchedule();
+    }
 
     public Long getId() {
         return id;
@@ -90,12 +93,9 @@ public class CourseSchedule implements Serializable {
         this.id = id;
     }
 
-    public Long getCourseGroupId() {
-        return courseGroupId;
-    }
-
-    public void setCourseGroupId(Long courseGroupId) {
-        this.courseGroupId = courseGroupId;
+    public CourseSchedule id(Long id) {
+        this.id = id;
+        return this;
     }
 
     public String getType() {
@@ -106,12 +106,9 @@ public class CourseSchedule implements Serializable {
         this.type = type;
     }
 
-    public Integer getClassNum() {
-        return classNum;
-    }
-
-    public void setClassNum(Integer classNum) {
-        this.classNum = classNum;
+    public CourseSchedule type(String type) {
+        this.type = type;
+        return this;
     }
 
     public Long getTeacherId() {
@@ -122,6 +119,11 @@ public class CourseSchedule implements Serializable {
         this.teacherId = teacherId;
     }
 
+    public CourseSchedule teacherId(Long teacherId) {
+        this.teacherId = teacherId;
+        return this;
+    }
+
     public Date getClassDate() {
         return classDate;
     }
@@ -130,6 +132,50 @@ public class CourseSchedule implements Serializable {
         this.classDate = classDate;
     }
 
+    public CourseSchedule classDate(Date classDate) {
+        this.classDate = classDate;
+        return this;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public CourseSchedule status(String status) {
+        this.status = status;
+        return this;
+    }
+
+    public Long getCourseGroupId() {
+        return courseGroupId;
+    }
+
+    public void setCourseGroupId(Long courseGroupId) {
+        this.courseGroupId = courseGroupId;
+    }
+
+    public CourseSchedule courseGroupId(Long courseGroupId) {
+        this.courseGroupId = courseGroupId;
+        return this;
+    }
+
+    public Integer getClassNum() {
+        return classNum;
+    }
+
+    public void setClassNum(Integer classNum) {
+        this.classNum = classNum;
+    }
+
+    public CourseSchedule classNum(Integer classNum) {
+        this.classNum = classNum;
+        return this;
+    }
+
     public Date getStartTime() {
         return startTime;
     }
@@ -138,6 +184,11 @@ public class CourseSchedule implements Serializable {
         this.startTime = startTime;
     }
 
+    public CourseSchedule startTime(Date startTime) {
+        this.startTime = startTime;
+        return this;
+    }
+
     public Date getEndTime() {
         return endTime;
     }
@@ -146,6 +197,11 @@ public class CourseSchedule implements Serializable {
         this.endTime = endTime;
     }
 
+    public CourseSchedule endTime(Date endTime) {
+        this.endTime = endTime;
+        return this;
+    }
+
     public Integer getLock() {
         return lock;
     }
@@ -154,6 +210,11 @@ public class CourseSchedule implements Serializable {
         this.lock = lock;
     }
 
+    public CourseSchedule lock(Integer lock) {
+        this.lock = lock;
+        return this;
+    }
+
     public Date getLockTime() {
         return lockTime;
     }
@@ -162,6 +223,11 @@ public class CourseSchedule implements Serializable {
         this.lockTime = lockTime;
     }
 
+    public CourseSchedule lockTime(Date lockTime) {
+        this.lockTime = lockTime;
+        return this;
+    }
+
     public Integer getExStudentNum() {
         return exStudentNum;
     }
@@ -170,6 +236,11 @@ public class CourseSchedule implements Serializable {
         this.exStudentNum = exStudentNum;
     }
 
+    public CourseSchedule exStudentNum(Integer exStudentNum) {
+        this.exStudentNum = exStudentNum;
+        return this;
+    }
+
     public Long getCreatedBy() {
         return createdBy;
     }
@@ -178,6 +249,11 @@ public class CourseSchedule implements Serializable {
         this.createdBy = createdBy;
     }
 
+    public CourseSchedule createdBy(Long createdBy) {
+        this.createdBy = createdBy;
+        return this;
+    }
+
     public Date getCreatedTime() {
         return createdTime;
     }
@@ -186,6 +262,11 @@ public class CourseSchedule implements Serializable {
         this.createdTime = createdTime;
     }
 
+    public CourseSchedule createdTime(Date createdTime) {
+        this.createdTime = createdTime;
+        return this;
+    }
+
     public Long getUpdatedBy() {
         return updatedBy;
     }
@@ -194,6 +275,11 @@ public class CourseSchedule implements Serializable {
         this.updatedBy = updatedBy;
     }
 
+    public CourseSchedule updatedBy(Long updatedBy) {
+        this.updatedBy = updatedBy;
+        return this;
+    }
+
     public Date getUpdatedTime() {
         return updatedTime;
     }
@@ -202,12 +288,10 @@ public class CourseSchedule implements Serializable {
         this.updatedTime = updatedTime;
     }
 
-    public String getStatus() {
-        return status;
+    public CourseSchedule updatedTime(Date updatedTime) {
+        this.updatedTime = updatedTime;
+        return this;
     }
 
-    public void setStatus(String status) {
-        this.status = status;
-    }
 }
 

+ 2 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/MusicSheet.java

@@ -34,8 +34,8 @@ public class MusicSheet implements Serializable {
     private String musicSheetName;  //曲谱名称
 
     @TableField("user_id_")
-    @ApiModelProperty(value = "曲谱来源(0:平台;非0:老师ID)")
-    private Long userId;  //曲谱来源(0:平台;非0:老师ID)
+    @ApiModelProperty(value = "曲谱来源(平台用户ID或者是老师ID)")
+    private Long userId;  //曲谱来源(平台用户ID或者是老师ID)
 
     @NotBlank(message = "作曲人不能为空!")
     @Size(max = 32, message = "作曲人长度不能超过32位!")

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

@@ -6,8 +6,6 @@ import java.util.List;
 
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
-import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
-
 /**
  * 对应数据库表(subject):
  */
@@ -17,11 +15,11 @@ public class Subject {
 	private Long id;
 	
 	/**  */
-	@ApiModelProperty(value = "科目名称",required = false)
+	@ApiModelProperty(value = "声部名称",required = false)
 	private String name;
 	
 	/**  */
-	@ApiModelProperty(value = "科目编号",required = false)
+	@ApiModelProperty(value = "声部编号",required = false)
 	private String code;
 	
 	/**  */

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

@@ -56,7 +56,7 @@ public class Teacher implements Serializable {
 	@TableField(value = "work_unit_")
     private String workUnit;
     /** 
-    * 专业技能(支持多个,用逗号分隔),对应科目表编号 
+    * 专业技能(支持多个,用逗号分隔),对应声部表编号
     */
     @ApiModelProperty("声部id(支持多个,用逗号分隔) ")
 	@TableField(value = "subject_id_")

+ 16 - 15
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TeacherStyleVideo.java

@@ -16,11 +16,17 @@ import org.springframework.format.annotation.DateTimeFormat;
 @ApiModel(value = "TeacherStyleVideo对象", description = "教师风采视频表")
 public class TeacherStyleVideo implements Serializable {
 	private static final long serialVersionUID = 1L;
-    /** 
+    /**
+     * 视频id
+     */
+    @ApiModelProperty("视频id ")
+    @TableId(value = "id_", type = IdType.AUTO)
+    private Long id;
+    /**
     * 对应user表用户编号 
     */
     @ApiModelProperty("对应user表用户编号 ")
-    @TableId(value = "user_id_", type = IdType.AUTO)
+    @TableField(value = "user_id_")
     private Long userId;
     /** 
     * 视频地址 
@@ -49,6 +55,14 @@ public class TeacherStyleVideo implements Serializable {
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
     private Date updateTime;
 
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
     public Long getUserId() {
         return userId;
     }
@@ -96,17 +110,4 @@ public class TeacherStyleVideo implements Serializable {
     public void setUpdateTime(Date updateTime) {
         this.updateTime = updateTime;
     }
-
-    @Override
-    public String toString() {
-        return "TeacherStyleVideo{" +
-				"userId=" + userId +
-						",videoUrl='" + videoUrl + "'" + 
-						",describe='" + describe + "'" + 
-						",browse='" + browse + "'" + 
-						",createTime='" + createTime + "'" + 
-						",updateTime='" + updateTime + "'" + 
-		                '}';
-    }
-	
 }

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

@@ -16,7 +16,7 @@ import java.math.BigDecimal;
 /**
  * 用户账户表
  */
-@TableName("user_account")
+@TableName("user_cash_account")
 @ApiModel(value = "UserAccount对象", description = "用户账户表")
 public class UserAccount implements Serializable {
 	private static final long serialVersionUID = 1L;

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

@@ -4,6 +4,8 @@ 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.AccountBizTypeEnum;
+import com.yonge.cooleshow.biz.dal.enums.InOrOutEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -16,110 +18,121 @@ import java.math.BigDecimal;
 /**
  * 用户账户流水表
  */
-@TableName("user_account_record")
+@TableName("user_cash_account_record")
 @ApiModel(value = "UserAccountRecord对象", description = "用户账户流水表")
 public class UserAccountRecord implements Serializable {
-	private static final long serialVersionUID = 1L;
-    @ApiModelProperty("用户表id ")
+    private static final long serialVersionUID = 1L;
+    @ApiModelProperty("id ")
     @TableId(value = "id_", type = IdType.AUTO)
     private Long id;
+    @ApiModelProperty("账户id ")
+    @TableField(value = "account_id_")
+    private Long accountId;
     @ApiModelProperty("交易金额 ")
-	@TableField(value = "trans_amount_")
+    @TableField(value = "trans_amount_")
     private BigDecimal transAmount;
     @ApiModelProperty("账户余额 ")
-	@TableField(value = "account_balance_")
+    @TableField(value = "account_balance_")
     private BigDecimal accountBalance;
-    @ApiModelProperty("收支类型:1、收入 2、支出 ")
-	@TableField(value = "in_or_out_")
-    private Integer inOrOut;
-    @ApiModelProperty("业务类型:1、陪练课 2、直播课 3、乐谱 4、提现 ")
-	@TableField(value = "biz_type_")
-    private Integer bizType;
+    @ApiModelProperty("收支类型:IN、收入 OUT、支出 ")
+    @TableField(value = "in_or_out_")
+    private InOrOutEnum inOrOut;
+    @ApiModelProperty("业务类型:PRACTICE、陪练课 LIVE、直播课 MUSIC、乐谱 WITHDRAWAL、提现 ")
+    @TableField(value = "biz_type_")
+    private AccountBizTypeEnum bizType;
     @ApiModelProperty("业务id ")
-	@TableField(value = "biz_id_")
+    @TableField(value = "biz_id_")
     private Long bizId;
     @ApiModelProperty("业务名称 ")
-	@TableField(value = "biz_name_")
+    @TableField(value = "biz_name_")
     private String bizName;
     @ApiModelProperty("订单id ")
-	@TableField(value = "order_id_")
+    @TableField(value = "order_id_")
     private Long orderId;
     @ApiModelProperty("创建时间 ")
-	@TableField(value = "create_time_")
+    @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;
 
-	public Long getId() {
+    public Long getId() {
         return id;
     }
 
     public void setId(Long id) {
         this.id = id;
     }
-    
-	public BigDecimal getTransAmount() {
+
+    public Long getAccountId() {
+        return accountId;
+    }
+
+    public void setAccountId(Long accountId) {
+        this.accountId = accountId;
+    }
+
+    public BigDecimal getTransAmount() {
         return transAmount;
     }
 
     public void setTransAmount(BigDecimal transAmount) {
         this.transAmount = transAmount;
     }
-    
-	public BigDecimal getAccountBalance() {
+
+    public BigDecimal getAccountBalance() {
         return accountBalance;
     }
 
     public void setAccountBalance(BigDecimal accountBalance) {
         this.accountBalance = accountBalance;
     }
-    
-	public Integer getInOrOut() {
+
+    public InOrOutEnum getInOrOut() {
         return inOrOut;
     }
 
-    public void setInOrOut(Integer inOrOut) {
+    public void setInOrOut(InOrOutEnum inOrOut) {
         this.inOrOut = inOrOut;
     }
-    
-	public Integer getBizType() {
+
+    public AccountBizTypeEnum getBizType() {
         return bizType;
     }
 
-    public void setBizType(Integer bizType) {
+    public void setBizType(AccountBizTypeEnum bizType) {
         this.bizType = bizType;
     }
-    
-	public Long getBizId() {
+
+    public Long getBizId() {
         return bizId;
     }
 
     public void setBizId(Long bizId) {
         this.bizId = bizId;
     }
-    
-	public String getBizName() {
+
+    public String getBizName() {
         return bizName;
     }
 
     public void setBizName(String bizName) {
         this.bizName = bizName;
     }
-    
-	public Long getOrderId() {
+
+    public Long getOrderId() {
         return orderId;
     }
 
     public void setOrderId(Long orderId) {
         this.orderId = orderId;
     }
-    
-	public Date getCreateTime() {
+
+    public Date getCreateTime() {
         return createTime;
     }
 
     public void setCreateTime(Date createTime) {
         this.createTime = createTime;
     }
-    
+
 }

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

@@ -1,9 +1,6 @@
 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.baomidou.mybatisplus.annotation.*;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -40,9 +37,6 @@ public class UserBankCard implements Serializable {
     @ApiModelProperty("开户行编码 ")
 	@TableField(value = "bank_code_")
     private String bankCode;
-    @ApiModelProperty("逻辑删除 ")
-	@TableField(value = "del_flag_")
-    private Byte delFlag;
     @ApiModelProperty("是否默认 ")
 	@TableField(value = "is_default_")
     private Byte isDefault;
@@ -56,7 +50,10 @@ public class UserBankCard implements Serializable {
     @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 = "del_flag_")
+    @TableLogic
+    private Byte delFlag;
 	public Long getId() {
         return id;
     }

+ 0 - 11
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/UserOrderPayment.java

@@ -47,9 +47,6 @@ public class UserOrderPayment implements Serializable {
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
     private Date arrivalTime;
-    @ApiModelProperty("失败信息 ")
-	@TableField(value = "pay_fail_msg_")
-    private String payFailMsg;
 
     @ApiModelProperty("创建时间 ")
     @TableField(value = "create_time_")
@@ -125,14 +122,6 @@ public class UserOrderPayment implements Serializable {
     public void setArrivalTime(Date arrivalTime) {
         this.arrivalTime = arrivalTime;
     }
-    
-	public String getPayFailMsg() {
-        return payFailMsg;
-    }
-
-    public void setPayFailMsg(String payFailMsg) {
-        this.payFailMsg = payFailMsg;
-    }
 
     public Date getCreateTime() {
         return createTime;

+ 25 - 36
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TeacherWithdrawal.java → cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/UserWithdrawal.java

@@ -4,6 +4,7 @@ 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.AuthStatusEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -14,11 +15,11 @@ import org.springframework.format.annotation.DateTimeFormat;
 import java.math.BigDecimal;
 
 /**
- * 老师账户提现表
+ * 用户账户提现表
  */
-@TableName("teacher_withdrawal")
-@ApiModel(value = "TeacherWithdrawal对象", description = "老师账户提现表")
-public class TeacherWithdrawal implements Serializable {
+@TableName("user_withdrawal")
+@ApiModel(value = "UserWithdrawal对象", description = "用户账户提现表")
+public class UserWithdrawal implements Serializable {
 	private static final long serialVersionUID = 1L;
     @ApiModelProperty("提现id ")
     @TableId(value = "id_", type = IdType.AUTO)
@@ -26,9 +27,6 @@ public class TeacherWithdrawal implements Serializable {
     @ApiModelProperty("用户表id ")
 	@TableField(value = "user_id_")
     private Long userId;
-    @ApiModelProperty("账户变动记录id ")
-	@TableField(value = "user_account_record_id_")
-    private Long userAccountRecordId;
     @ApiModelProperty("提现金额 ")
 	@TableField(value = "amount_")
     private BigDecimal amount;
@@ -37,13 +35,10 @@ public class TeacherWithdrawal implements Serializable {
     private BigDecimal plantformFee;
     @ApiModelProperty("实际到账金额 ")
 	@TableField(value = "actual_amount_")
-    private String actualAmount;
+    private BigDecimal actualAmount;
     @ApiModelProperty("银行卡 ")
 	@TableField(value = "bank_card_")
     private String bankCard;
-    @ApiModelProperty("开户行 ")
-	@TableField(value = "bank_name_")
-    private String bankName;
     @ApiModelProperty("银行流水号 ")
 	@TableField(value = "bank_flow_no_")
     private String bankFlowNo;
@@ -52,6 +47,11 @@ public class TeacherWithdrawal implements Serializable {
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
     private Date transferTime;
+    @ApiModelProperty("提现状态 DOING、审核中 PASS、通过 UNPASS、不通过")
+    @TableField(value = "status_")
+    private AuthStatusEnum status;
+    @ApiModelProperty("审核人")
+    private Long verifyUserId;
     @ApiModelProperty("发起时间 ")
 	@TableField(value = "create_time_")
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@@ -62,9 +62,7 @@ public class TeacherWithdrawal implements Serializable {
     @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 = "status_")
-    private Byte status;
+
 
 	public Long getId() {
         return id;
@@ -82,14 +80,6 @@ public class TeacherWithdrawal implements Serializable {
         this.userId = userId;
     }
     
-	public Long getUserAccountRecordId() {
-        return userAccountRecordId;
-    }
-
-    public void setUserAccountRecordId(Long userAccountRecordId) {
-        this.userAccountRecordId = userAccountRecordId;
-    }
-    
 	public BigDecimal getAmount() {
         return amount;
     }
@@ -106,11 +96,11 @@ public class TeacherWithdrawal implements Serializable {
         this.plantformFee = plantformFee;
     }
     
-	public String getActualAmount() {
+	public BigDecimal getActualAmount() {
         return actualAmount;
     }
 
-    public void setActualAmount(String actualAmount) {
+    public void setActualAmount(BigDecimal actualAmount) {
         this.actualAmount = actualAmount;
     }
     
@@ -121,15 +111,7 @@ public class TeacherWithdrawal implements Serializable {
     public void setBankCard(String bankCard) {
         this.bankCard = bankCard;
     }
-    
-	public String getBankName() {
-        return bankName;
-    }
 
-    public void setBankName(String bankName) {
-        this.bankName = bankName;
-    }
-    
 	public String getBankFlowNo() {
         return bankFlowNo;
     }
@@ -161,13 +143,20 @@ public class TeacherWithdrawal implements Serializable {
     public void setUpdateTime(Date updateTime) {
         this.updateTime = updateTime;
     }
-    
-	public Byte getStatus() {
+
+    public AuthStatusEnum getStatus() {
         return status;
     }
 
-    public void setStatus(Byte status) {
+    public void setStatus(AuthStatusEnum status) {
         this.status = status;
     }
-    
+
+    public Long getVerifyUserId() {
+        return verifyUserId;
+    }
+
+    public void setVerifyUserId(Long verifyUserId) {
+        this.verifyUserId = verifyUserId;
+    }
 }

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

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.biz.dal.entity;
 
+import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
 import com.yonge.cooleshow.common.entity.BaseEntity;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
@@ -7,6 +8,9 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang3.builder.ToStringBuilder;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
 import java.util.Date;
 
 /**
@@ -24,20 +28,33 @@ public class VideoLessonEvaluate extends BaseEntity {
 
     @TableField("video_id_")
     @ApiModelProperty(value = "视频ID")
+	@NotNull(message = "视频id不能为空;")
     private Long videoId;  //视频ID
 
     @TableField("student_id_")
     @ApiModelProperty(value = "学生ID")
-    private Long studentId;  //学生ID
+    private Long studentId;
+
+	@TableField("is_teacher_")
+	@ApiModelProperty(value = "是否为老师 0:否 1:是")
+    private YesOrNoEnum isTeacher;
 
     @TableField("content_")
     @ApiModelProperty(value = "评价内容")
+	@NotBlank(message = "评价内容不能为空;")
     private String content;  //评价内容
 
     @TableField("evaluate_time_")
     @ApiModelProperty(value = "评价时间")
     private java.util.Date evaluateTime;  //评价时间
 
+	public YesOrNoEnum getIsTeacher() {
+		return isTeacher;
+	}
+
+	public void setIsTeacher(YesOrNoEnum isTeacher) {
+		this.isTeacher = isTeacher;
+	}
 
 	public VideoLessonEvaluate setId(Long id) {
 	    this.id = id;

+ 161 - 146
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/VideoLessonGroup.java

@@ -1,5 +1,8 @@
 package com.yonge.cooleshow.biz.dal.entity;
 
+import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
+import com.yonge.cooleshow.biz.dal.valid.AddGroup;
+import com.yonge.cooleshow.biz.dal.valid.UpdateGroup;
 import com.yonge.cooleshow.common.entity.BaseEntity;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
@@ -13,39 +16,45 @@ import javax.validation.constraints.NotNull;
 
 /**
  * 视频课基本信息表
+ *
  * @author yzp
- * @date 2022-03-25 23:46:28
  * @version v1.0
+ * @date 2022-03-25 23:46:28
  **/
 @ApiModel(value = "video_lesson_group-视频课基本信息表")
 public class VideoLessonGroup extends BaseEntity {
 
     @TableId(value = "id_", type = IdType.AUTO)
     @ApiModelProperty(value = "主键id")
+    @NotNull(message = "组id不能为空;", groups = {UpdateGroup.class})
     private Long id;  //主键ID
 
     @TableField("lesson_name_")
-    @ApiModelProperty(value = "课程名称",required = true)
-	@NotBlank(message = "课程名称不能为空;")
+    @ApiModelProperty(value = "课程名称", required = true)
+    @NotBlank(message = "课程名称不能为空;", groups = {AddGroup.class, UpdateGroup.class})
     private String lessonName;  //课程名称
 
     @TableField("lesson_subject_")
-    @ApiModelProperty(value = "课程声部")
+    @ApiModelProperty(value = "课程声部id")
     private String lessonSubject;  //课程声部
 
+    @TableField(exist = false)
+    @ApiModelProperty(value = "声部名称")
+    private String lessonSubjectName;
+
     @TableField("lesson_desc_")
-    @ApiModelProperty(value = "课程介绍",required = true)
-	@NotBlank(message = "课程介绍不能为空;")
+    @ApiModelProperty(value = "课程介绍", required = true)
+    @NotBlank(message = "课程介绍不能为空;", groups = {AddGroup.class, UpdateGroup.class})
     private String lessonDesc;  //课程介绍
 
     @TableField("lesson_price_")
-    @ApiModelProperty(value = "课程价格",required = true)
-	@NotNull(message = "课程价格不能为空;")
+    @ApiModelProperty(value = "课程价格", required = true)
+    @NotNull(message = "课程价格不能为空;", groups = {AddGroup.class, UpdateGroup.class})
     private Integer lessonPrice;  //课程价格
 
     @TableField("lesson_cover_url_")
-    @ApiModelProperty(value = "课程封面图片URL",required = true)
-	@NotBlank(message = "课程封面图片URL不能为空;")
+    @ApiModelProperty(value = "课程封面图片URL", required = true)
+    @NotBlank(message = "课程封面图片URL不能为空;", groups = {AddGroup.class, UpdateGroup.class})
     private String lessonCoverUrl;  //课程封面图片URL
 
     @TableField("teacher_id_")
@@ -73,8 +82,8 @@ public class VideoLessonGroup extends BaseEntity {
     private Integer hotFlag;  //是否热门课程
 
     @TableField("audit_status_")
-    @ApiModelProperty(value = "审核状态(0:待审核;1:通过;2:未通过)")
-    private Integer auditStatus;  //审核状态
+    @ApiModelProperty(value = "审核状态(DOING:待审核 PASS:通过 UNPASS:未通过)")
+    private AuthStatusEnum auditStatus;  //审核状态
 
     @TableField("create_time_")
     @ApiModelProperty(value = "创建时间")
@@ -84,141 +93,147 @@ public class VideoLessonGroup extends BaseEntity {
     @ApiModelProperty(value = "更新时间")
     private java.util.Date updateTime;  //更新时间
 
-	public VideoLessonGroup setId(Long id) {
-	    this.id = id;
-	    return this;
-	}
-
-	public Long getId() {
-	    return this.id;
-	}
-
-	public VideoLessonGroup setLessonName(String lessonName) {
-	    this.lessonName = lessonName;
-	    return this;
-	}
-
-	public String getLessonName() {
-	    return this.lessonName;
-	}
-
-	public VideoLessonGroup setLessonSubject(String lessonSubject) {
-	    this.lessonSubject = lessonSubject;
-	    return this;
-	}
-
-	public String getLessonSubject() {
-	    return this.lessonSubject;
-	}
-
-	public VideoLessonGroup setLessonDesc(String lessonDesc) {
-	    this.lessonDesc = lessonDesc;
-	    return this;
-	}
-
-	public String getLessonDesc() {
-	    return this.lessonDesc;
-	}
-
-	public VideoLessonGroup setLessonPrice(Integer lessonPrice) {
-	    this.lessonPrice = lessonPrice;
-	    return this;
-	}
-
-	public Integer getLessonPrice() {
-	    return this.lessonPrice;
-	}
-
-	public VideoLessonGroup setLessonCoverUrl(String lessonCoverUrl) {
-	    this.lessonCoverUrl = lessonCoverUrl;
-	    return this;
-	}
-
-	public String getLessonCoverUrl() {
-	    return this.lessonCoverUrl;
-	}
-
-	public VideoLessonGroup setTeacherId(Long teacherId) {
-	    this.teacherId = teacherId;
-	    return this;
-	}
-
-	public Long getTeacherId() {
-	    return this.teacherId;
-	}
-
-	public VideoLessonGroup setLessonCount(Integer lessonCount) {
-	    this.lessonCount = lessonCount;
-	    return this;
-	}
-
-	public Integer getLessonCount() {
-	    return this.lessonCount;
-	}
-
-	public VideoLessonGroup setSortNumber(Integer sortNumber) {
-	    this.sortNumber = sortNumber;
-	    return this;
-	}
-
-	public Integer getSortNumber() {
-	    return this.sortNumber;
-	}
-
-	public VideoLessonGroup setLessonTag(String lessonTag) {
-	    this.lessonTag = lessonTag;
-	    return this;
-	}
-
-	public String getLessonTag() {
-	    return this.lessonTag;
-	}
-
-	public VideoLessonGroup setTopFlag(Integer topFlag) {
-	    this.topFlag = topFlag;
-	    return this;
-	}
-
-	public Integer getTopFlag() {
-	    return this.topFlag;
-	}
-
-	public VideoLessonGroup setHotFlag(Integer hotFlag) {
-	    this.hotFlag = hotFlag;
-	    return this;
-	}
-
-	public Integer getHotFlag() {
-	    return this.hotFlag;
-	}
-
-	public VideoLessonGroup setAuditStatus(Integer auditStatus) {
-	    this.auditStatus = auditStatus;
-	    return this;
-	}
-
-	public Integer getAuditStatus() {
-	    return this.auditStatus;
-	}
-
-	public VideoLessonGroup setCreateTime(java.util.Date createTime) {
-	    this.createTime = createTime;
-	    return this;
-	}
-
-	public java.util.Date getCreateTime() {
-	    return this.createTime;
-	}
-
-	public VideoLessonGroup setUpdateTime(java.util.Date updateTime) {
-	    this.updateTime = updateTime;
-	    return this;
-	}
-
-	public java.util.Date getUpdateTime() {
-	    return this.updateTime;
-	}
+    public VideoLessonGroup setId(Long id) {
+        this.id = id;
+        return this;
+    }
 
+    public String getLessonSubjectName() {
+        return lessonSubjectName;
+    }
+
+    public void setLessonSubjectName(String lessonSubjectName) {
+        this.lessonSubjectName = lessonSubjectName;
+    }
+
+    public Long getId() {
+        return this.id;
+    }
+
+    public VideoLessonGroup setLessonName(String lessonName) {
+        this.lessonName = lessonName;
+        return this;
+    }
+
+    public String getLessonName() {
+        return this.lessonName;
+    }
+
+    public VideoLessonGroup setLessonSubject(String lessonSubject) {
+        this.lessonSubject = lessonSubject;
+        return this;
+    }
+
+    public String getLessonSubject() {
+        return this.lessonSubject;
+    }
+
+    public VideoLessonGroup setLessonDesc(String lessonDesc) {
+        this.lessonDesc = lessonDesc;
+        return this;
+    }
+
+    public String getLessonDesc() {
+        return this.lessonDesc;
+    }
+
+    public VideoLessonGroup setLessonPrice(Integer lessonPrice) {
+        this.lessonPrice = lessonPrice;
+        return this;
+    }
+
+    public Integer getLessonPrice() {
+        return this.lessonPrice;
+    }
+
+    public VideoLessonGroup setLessonCoverUrl(String lessonCoverUrl) {
+        this.lessonCoverUrl = lessonCoverUrl;
+        return this;
+    }
+
+    public String getLessonCoverUrl() {
+        return this.lessonCoverUrl;
+    }
+
+    public VideoLessonGroup setTeacherId(Long teacherId) {
+        this.teacherId = teacherId;
+        return this;
+    }
+
+    public Long getTeacherId() {
+        return this.teacherId;
+    }
+
+    public VideoLessonGroup setLessonCount(Integer lessonCount) {
+        this.lessonCount = lessonCount;
+        return this;
+    }
+
+    public Integer getLessonCount() {
+        return this.lessonCount;
+    }
+
+    public VideoLessonGroup setSortNumber(Integer sortNumber) {
+        this.sortNumber = sortNumber;
+        return this;
+    }
+
+    public Integer getSortNumber() {
+        return this.sortNumber;
+    }
+
+    public VideoLessonGroup setLessonTag(String lessonTag) {
+        this.lessonTag = lessonTag;
+        return this;
+    }
+
+    public String getLessonTag() {
+        return this.lessonTag;
+    }
+
+    public VideoLessonGroup setTopFlag(Integer topFlag) {
+        this.topFlag = topFlag;
+        return this;
+    }
+
+    public Integer getTopFlag() {
+        return this.topFlag;
+    }
+
+    public VideoLessonGroup setHotFlag(Integer hotFlag) {
+        this.hotFlag = hotFlag;
+        return this;
+    }
+
+    public Integer getHotFlag() {
+        return this.hotFlag;
+    }
+
+    public AuthStatusEnum getAuditStatus() {
+        return auditStatus;
+    }
+
+    public void setAuditStatus(AuthStatusEnum auditStatus) {
+        this.auditStatus = auditStatus;
+    }
+
+    public VideoLessonGroup setCreateTime(java.util.Date createTime) {
+        this.createTime = createTime;
+        return this;
+    }
+
+    public java.util.Date getCreateTime() {
+        return this.createTime;
+    }
+
+    public VideoLessonGroup setUpdateTime(java.util.Date updateTime) {
+        this.updateTime = updateTime;
+        return this;
+    }
+
+    public java.util.Date getUpdateTime() {
+        return this.updateTime;
+    }
 
     @Override
     public String toString() {

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

@@ -1,5 +1,7 @@
 package com.yonge.cooleshow.biz.dal.entity;
 
+import com.yonge.cooleshow.biz.dal.valid.AddGroup;
+import com.yonge.cooleshow.biz.dal.valid.UpdateGroup;
 import com.yonge.cooleshow.common.entity.BaseEntity;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
@@ -30,17 +32,17 @@ public class VideoLessonGroupDetail extends BaseEntity {
 
     @TableField("video_title_")
     @ApiModelProperty(value = "视频标题", required = true)
-    @NotBlank(message = "课程标题不能为空;")
+    @NotBlank(message = "课程标题不能为空;",groups = {AddGroup.class,UpdateGroup.class})
     private String videoTitle;  //视频标题
 
     @TableField("video_content_")
     @ApiModelProperty(value = "视频内容", required = true)
-    @NotBlank(message = "课程内容不能为空;")
+    @NotBlank(message = "课程内容不能为空;",groups = {AddGroup.class,UpdateGroup.class})
     private String videoContent;  //视频内容
 
     @TableField("video_url_")
     @ApiModelProperty(value = "视频文件URL", required = true)
-    @NotBlank(message = "课程视频URL不能为空;")
+    @NotBlank(message = "课程视频URL不能为空;",groups = {AddGroup.class,UpdateGroup.class})
     private String videoUrl;  //视频文件URL
 
     @TableField("cover_url_")

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

@@ -0,0 +1,53 @@
+package com.yonge.cooleshow.biz.dal.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.yonge.cooleshow.common.enums.BaseEnum;
+
+/**
+ * 账户流水枚举
+ * @Author: liweifan
+ * @Data: 2022/4/7 15:48
+ */
+public enum AccountBizTypeEnum implements BaseEnum<String, AccountBizTypeEnum> {
+
+    PRACTICE("陪练课", InOrOutEnum.IN),
+    LIVE("直播课", InOrOutEnum.IN),
+    MUSIC("乐谱", InOrOutEnum.IN),
+    WITHDRAWAL("提现", InOrOutEnum.OUT);
+    @EnumValue
+    private String code;
+    private String msg;
+    //收入、支出
+    private InOrOutEnum inOrOut;
+
+    AccountBizTypeEnum(String msg, InOrOutEnum inOrOut) {
+        this.code = getCode();
+        this.msg = msg;
+        this.inOrOut = inOrOut;
+    }
+
+    @Override
+    public String getCode() {
+        return this.name();
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
+    public InOrOutEnum getInOrOut() {
+        return inOrOut;
+    }
+
+    public void setInOrOut(InOrOutEnum inOrOut) {
+        this.inOrOut = inOrOut;
+    }
+}

+ 2 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/CacheNameEnum.java

@@ -17,7 +17,8 @@ public enum CacheNameEnum implements BaseEnum<String, CacheNameEnum> {
     STUDENT_HOME_TOTAL("学生首页统计缓存"),
 
     LOCK_EXECUTE_ORDER("用户下单锁"),
-    LOCK_PAY_ORDER("用户付款锁")
+    LOCK_PAY_ORDER("用户付款锁"),
+    LOCK_CHANGE_ACCOUNT("账户变更锁"),
     ;
     /***
      * 缓存描述

+ 40 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/FrozenTypeEnum.java

@@ -0,0 +1,40 @@
+package com.yonge.cooleshow.biz.dal.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.yonge.cooleshow.common.enums.BaseEnum;
+
+/**
+ * 账户变更冻结类型
+ * @Author: liweifan
+ * @Data: 2022/4/7 20:07
+ */
+public enum  FrozenTypeEnum implements BaseEnum<String, FrozenTypeEnum> {
+    NONE("无"),
+    FROZEN("冻结"),
+    UNFROZEN("解冻");
+    @EnumValue
+    private String code;
+    private String msg;
+
+    FrozenTypeEnum(String msg) {
+        this.code = getCode();
+        this.msg = msg;
+    }
+
+    @Override
+    public String getCode() {
+        return this.name();
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+}

+ 16 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/GenderEnum.java

@@ -3,14 +3,18 @@ package com.yonge.cooleshow.biz.dal.enums;
 import com.baomidou.mybatisplus.annotation.EnumValue;
 import com.yonge.cooleshow.common.enums.BaseEnum;
 
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
 /***
  * 性别
  * @author liweifan
  * @updateTime 2022/4/2 14:53
  */
 public enum GenderEnum implements BaseEnum<Integer, GenderEnum> {
-    GIRL(0,"女"),
-    BOY(1,"男");
+    GIRL(0, "女"),
+    BOY(1, "男");
     @EnumValue
     private Integer code;
     private String msg;
@@ -36,4 +40,14 @@ public enum GenderEnum implements BaseEnum<Integer, GenderEnum> {
     public Integer getCode() {
         return this.code;
     }
+
+    public static GenderEnum valueOf(Integer code) {
+        GenderEnum[] values = GenderEnum.values();
+        for (GenderEnum value : values) {
+            if(value.getCode().equals(code)){
+                return value;
+            }
+        }
+        return null;
+    }
 }

+ 40 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/InOrOutEnum.java

@@ -0,0 +1,40 @@
+package com.yonge.cooleshow.biz.dal.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.yonge.cooleshow.common.enums.BaseEnum;
+
+/**
+ * 收入支出枚举
+ * @Author: liweifan
+ * @Data: 2022/4/7 15:48
+ */
+public enum InOrOutEnum implements BaseEnum<String, InOrOutEnum> {
+
+    IN("收入"),
+    OUT("支出");
+    @EnumValue
+    private String code;
+    private String msg;
+
+    InOrOutEnum(String msg) {
+        this.code = getCode();
+        this.msg = msg;
+    }
+
+    @Override
+    public String getCode() {
+        return this.name();
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+}

+ 39 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/TeacherTypeEnum.java

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.biz.dal.enums;
 
 import com.baomidou.mybatisplus.annotation.EnumValue;
 import com.yonge.cooleshow.common.enums.BaseEnum;
+import com.yonge.toolset.utils.string.StringUtil;
 
 /***
  * 老师类型枚举
@@ -29,4 +30,42 @@ public enum TeacherTypeEnum implements BaseEnum<String, TeacherTypeEnum> {
         return msg;
     }
 
+    /***
+     * 字符串teacherType判断是否包含
+     * @author liweifan
+     * @param: teacherType
+     * @updateTime 2022/4/7 9:41
+     * @return: com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum
+     */
+    public YesOrNoEnum hasTeacherType(String teacherType) {
+        if (StringUtil.isEmpty(teacherType)) {
+            return YesOrNoEnum.NO;
+        }
+        if (teacherType.indexOf(this.getCode()) < 0) {
+            return YesOrNoEnum.NO;
+        }
+        return YesOrNoEnum.YES;
+    }
+
+    /***
+     * teacherType转字符串
+     * @author liweifan
+     * @param: entryFlag
+     * @param: musicianFlag
+     * @updateTime 2022/4/7 9:41
+     * @return: java.lang.String
+     */
+    public static String getTeacherType(YesOrNoEnum entryFlag, YesOrNoEnum musicianFlag) {
+        String teacherType = "";
+        if (YesOrNoEnum.YES.equals(entryFlag)) {
+            teacherType += "," + TeacherTypeEnum.ENTRY.getCode();
+        }
+        if (YesOrNoEnum.YES.equals(musicianFlag)) {
+            teacherType += "," + TeacherTypeEnum.MUSICIAN.getCode();
+        }
+        if (teacherType.length() > 0) {
+            teacherType = teacherType.substring(1);
+        }
+        return teacherType;
+    }
 }

+ 28 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/props/HuifuProperties.java

@@ -33,6 +33,18 @@ public class HuifuProperties {
      * @updateTime 2022/3/31 11:24
      */
     private String rsaPrivateKey;
+    /***
+     * 微信appid
+     * @author liweifan
+     * @updateTime 2022/3/31 11:24
+     */
+    private String wxAppid;
+    /***
+     * 微信secret
+     * @author liweifan
+     * @updateTime 2022/3/31 11:24
+     */
+    private String wxSecret;
 
     public String getApiKey() {
         return apiKey;
@@ -65,4 +77,20 @@ public class HuifuProperties {
     public void setAppId(String appId) {
         this.appId = appId;
     }
+
+    public String getWxAppid() {
+        return wxAppid;
+    }
+
+    public void setWxAppid(String wxAppid) {
+        this.wxAppid = wxAppid;
+    }
+
+    public String getWxSecret() {
+        return wxSecret;
+    }
+
+    public void setWxSecret(String wxSecret) {
+        this.wxSecret = wxSecret;
+    }
 }

+ 3 - 4
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/queryInfo/SubjectQueryInfo.java

@@ -2,7 +2,6 @@ package com.yonge.cooleshow.biz.dal.queryInfo;
 
 import io.swagger.annotations.ApiModelProperty;
 
-import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
 import com.yonge.cooleshow.common.page.QueryInfo;
 
 public class SubjectQueryInfo extends QueryInfo {
@@ -13,13 +12,13 @@ public class SubjectQueryInfo extends QueryInfo {
     private String queryType;
 
     @ApiModelProperty(value = "节点状态,默认0未删除,1删除",required = false)
-    private YesOrNoEnum delFlag = YesOrNoEnum.NO;
+    private Boolean delFlag = false;
 
-    public YesOrNoEnum getDelFlag() {
+    public Boolean getDelFlag() {
         return delFlag;
     }
 
-    public void setDelFlag(YesOrNoEnum delFlag) {
+    public void setDelFlag(Boolean delFlag) {
         this.delFlag = delFlag;
     }
 

+ 38 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/sdk/PaymentSdk.java

@@ -8,8 +8,12 @@ import com.huifu.adapay.model.PaymentConfirm;
 import com.yonge.cooleshow.biz.dal.config.HuifuConfiguration;
 import com.yonge.cooleshow.biz.dal.sdk.req.PaymentReq;
 import com.yonge.cooleshow.biz.dal.service.impl.ImGroupMemberServiceImpl;
+import com.yonge.cooleshow.common.constant.CommonConstants;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.cooleshow.common.exception.BizException;
 import com.yonge.toolset.thirdparty.exception.ThirdpartyException;
 import com.yonge.toolset.utils.collection.MapUtil;
+import com.yonge.toolset.utils.http.HttpUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
@@ -52,7 +56,7 @@ public class PaymentSdk {
         String errorCode = (String) res.get("error_code");
         if (null != errorCode) {
             String errorMsg = (String) res.get("error_msg");
-            throw new ThirdpartyException(errorMsg);
+            throw new BizException(errorMsg);
         }
         return res;
     }
@@ -128,6 +132,39 @@ public class PaymentSdk {
         System.out.println("=======query payment end=======");
         return payment;
     }
+    /***
+     * 获取openId
+     * @author liweifan
+     * @param: js_code
+     * @updateTime 2022/4/8 15:49
+     * @return: java.lang.Object
+     */
+    public HttpResponseResult<Map<String, Object>> getOpenId(String js_code) {
+        Map<String, Object> param = new HashMap<>();
+        param.put("appid", HuifuConfiguration.getHuifuProperties().getWxAppid());
+        param.put("secret", HuifuConfiguration.getHuifuProperties().getWxSecret());
+        param.put("js_code", js_code);
+        param.put("grant_type", CommonConstants.WECHAT_GRANT_TYPE);
+
+        try {
+            String res = HttpUtil.get("https://api.weixin.qq.com/sns/jscode2session", param);
+            JSONObject jsonObject = JSONObject.parseObject(res);
+
+            String errcode = jsonObject.getString("errcode");
+            if("0".equals(errcode)){
+                Map<String, Object> resMap = new HashMap<>();
+                resMap.put("openid", jsonObject.getString("openid"));
+                resMap.put("session_key", jsonObject.getString("session_key"));
+                resMap.put("unionid", jsonObject.getString("unionid"));
+                return HttpResponseResult.succeed(resMap);
+            }else{
+                return HttpResponseResult.failed(jsonObject.getString("errmsg"));
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            return HttpResponseResult.failed("请求失败");
+        }
+    }
 
 /*
     public static Map<String, Object> queryList(Integer pageIndex, Long createdGte, Long createdLte) throws Exception {

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

@@ -2,8 +2,8 @@ package com.yonge.cooleshow.biz.dal.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.yonge.cooleshow.biz.dal.dao.CourseScheduleDao;
+import com.yonge.cooleshow.biz.dal.entity.CourseCalendarEntity;
 import com.yonge.cooleshow.biz.dal.entity.CourseSchedule;
-import com.yonge.cooleshow.biz.dal.vo.CourseGroupVo;
 import com.yonge.cooleshow.biz.dal.vo.TeacherLiveCourseInfoVo;
 import com.yonge.cooleshow.common.page.PageInfo;
 
@@ -101,5 +101,21 @@ public interface CourseScheduleService extends IService<CourseSchedule> {
      */
     void add(@Valid CourseSchedule course);
 
+
+    /**
+     * 创建直播课时选课时的日历
+     * <P>主要查询该老师目前的课程时间
+     * <P>根据传入的单课时时长将时间分片后来匹配数据库中课程时间,得到每日空余时间
+     *
+     * @param param 传入参数
+     *              <p> - teacherId 老师id
+     *              <p> - year 年
+     *              <p> - month 月
+     *              <p> - day 日
+     *              <p> - singleCourseMinutes 单课时时长(包含休息时间)
+     * @return 返回传入时间当月每日的剩余时间段
+     */
+    List<CourseCalendarEntity> createLiveCourseCalendar(Map<String, Object> param);
+
 }
 

+ 9 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/StudentService.java

@@ -47,4 +47,13 @@ public interface StudentService extends IService<Student>  {
      */
     StudentHomeVo queryUserInfo(SysUser user);
 
+    /***
+     * 设置声部
+     * @author liweifan
+     * @param: id
+     * @param: toLongList
+     * @updateTime 2022/4/7 9:56
+     * @return: java.lang.Integer
+     */
+    Integer setSubject(Long id, String subjectIds);
 }

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

@@ -4,7 +4,6 @@ import java.util.List;
 
 import com.yonge.cooleshow.biz.dal.entity.Subject;
 import com.yonge.cooleshow.biz.dal.queryInfo.SubjectQueryInfo;
-import com.yonge.cooleshow.biz.dal.vo.SubjectSelectVo;
 import com.yonge.cooleshow.common.page.PageInfo;
 import com.yonge.cooleshow.common.service.BaseService;
 
@@ -46,10 +45,10 @@ public interface SubjectService extends BaseService<Long, Subject> {
 	 */
     int deleteById(Long id);
 	/***
-	 * 查询科目选择框
+	 * 查询声部选择框
 	 * @author liweifan
 	 * @updateTime 2022/3/21 17:23
 	 * @return: java.util.List<com.yonge.cooleshow.biz.dal.vo.SubjectSelectVo>
 	 */
-	List<SubjectSelectVo> subjectSelect();
+	List<Subject> subjectSelect();
 }

+ 27 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/TeacherService.java

@@ -3,6 +3,7 @@ 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.auth.api.entity.SysUser;
+import com.yonge.cooleshow.biz.dal.dto.TeacherDto;
 import com.yonge.cooleshow.biz.dal.dto.req.UserSetReq;
 import com.yonge.cooleshow.biz.dal.dto.req.TeacherSubmitReq;
 import com.yonge.cooleshow.biz.dal.dto.search.TeacherSearch;
@@ -85,4 +86,30 @@ public interface TeacherService extends IService<Teacher>  {
      * @return: java.lang.Object
      */
     Object getRedisValueByKey(String key);
+
+    /***
+     * 设置声部
+     * @author liweifan
+     * @param: id
+     * @param: toLongList
+     * @updateTime 2022/4/7 9:56
+     * @return: java.lang.Integer
+     */
+    Integer setSubject(Long id, String subjectIds);
+    /***
+     * 查询老师个人风采
+     * @author liweifan
+     * @param: id
+     * @updateTime 2022/4/8 14:11
+     * @return: com.yonge.cooleshow.common.entity.HttpResponseResult<com.yonge.cooleshow.biz.dal.vo.TeacherVo>
+     */
+    HttpResponseResult<TeacherVo> queryTeacherStyle(Long id);
+    /***
+     * 保存老师风采信息
+     * @author liweifan
+     * @param: teacherDto
+     * @updateTime 2022/4/8 14:21
+     * @return: com.yonge.cooleshow.common.entity.HttpResponseResult<com.yonge.cooleshow.biz.dal.vo.TeacherVo>
+     */
+    HttpResponseResult<TeacherVo> saveTeacherStyle(TeacherDto teacherDto);
 }

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

@@ -21,5 +21,21 @@ public interface TeacherStyleVideoService extends IService<TeacherStyleVideo>  {
      * @return: com.yonge.cooleshow.biz.dal.entity.TeacherStyleVideo
      */
     List<TeacherStyleVideo> selectListByUserId(Long userId);
-
+    /***
+     * 删除老师风采视频,留下oldIds
+     * @author liweifan
+     * @param: userId
+     * @param: oldIds
+     * @updateTime 2022/4/8 15:08
+     * @return: java.lang.Integer
+     */
+    Integer removeByUserIdAndOldIds(Long userId, List<Long> oldIds);
+    /***
+     * 批量新增老师风采视频
+     * @author liweifan
+     * @param: createList
+     * @updateTime 2022/4/8 15:18
+     * @return: java.lang.Integer
+     */
+    boolean batchAddStyleVideo(List<TeacherStyleVideo> createList);
 }

+ 0 - 29
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/TeacherWithdrawalService.java

@@ -1,29 +0,0 @@
-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.vo.TeacherWithdrawalVo;
-import com.yonge.cooleshow.biz.dal.dto.search.TeacherWithdrawalSearch;
-import com.yonge.cooleshow.biz.dal.entity.TeacherWithdrawal;
-
-/**
- * 老师账户提现表 服务类
- * @author liweifan
- * @date 2022-03-30
- */
-public interface TeacherWithdrawalService extends IService<TeacherWithdrawal>  {
-
-	/**
-     * 查询详情
-     * @author liweifan
- 	 * @date 2022-03-30
-     */
-	TeacherWithdrawalVo detail(Long id);
-
-    /**
-     * 分页查询
-     * @author liweifan
- 	 * @date 2022-03-30
-     */
-    IPage<TeacherWithdrawalVo> selectPage(IPage<TeacherWithdrawalVo> page, TeacherWithdrawalSearch query);
-}

+ 11 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserAccountService.java

@@ -2,9 +2,12 @@ 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.UserAccountRecordDto;
+import com.yonge.cooleshow.biz.dal.entity.UserAccountRecord;
 import com.yonge.cooleshow.biz.dal.vo.UserAccountVo;
 import com.yonge.cooleshow.biz.dal.dto.search.UserAccountSearch;
 import com.yonge.cooleshow.biz.dal.entity.UserAccount;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
 
 /**
  * 用户账户表 服务类
@@ -26,4 +29,12 @@ public interface UserAccountService extends IService<UserAccount>  {
  	 * @date 2022-03-30
      */
     IPage<UserAccountVo> selectPage(IPage<UserAccountVo> page, UserAccountSearch query);
+    /***
+     * 账户变更(账户变更使用该方法,有分布式锁)
+     * @author liweifan
+     * @param: accountRecordDto
+     * @updateTime 2022/4/7 16:40
+     * @return: java.lang.Integer
+     */
+    HttpResponseResult<UserAccountRecord> accountChange(UserAccountRecordDto accountRecordDto);
 }

+ 7 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserOrderService.java

@@ -51,4 +51,11 @@ public interface UserOrderService extends IService<UserOrder>  {
 	 * @return: com.yonge.cooleshow.common.entity.HttpResponseResult
 	 */
     HttpResponseResult<OrderPayRes> orderPay(OrderPayReq payReq);
+	/***
+	 * 用户付款回调
+	 * @author liweifan
+	 * @param: data
+	 * @updateTime 2022/4/8 18:24
+	 */
+	void orderCallback(String data);
 }

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

@@ -0,0 +1,49 @@
+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.WithdrawalReq;
+import com.yonge.cooleshow.biz.dal.vo.UserWithdrawalVo;
+import com.yonge.cooleshow.biz.dal.dto.search.TeacherWithdrawalSearch;
+import com.yonge.cooleshow.biz.dal.entity.UserWithdrawal;
+import com.yonge.cooleshow.biz.dal.vo.res.WithdrawalInfoRes;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+
+/**
+ * 用户账户提现表 服务类
+ * @author liweifan
+ * @date 2022-03-30
+ */
+public interface UserWithdrawalService extends IService<UserWithdrawal>  {
+
+	/**
+     * 查询详情
+     * @author liweifan
+ 	 * @date 2022-03-30
+     */
+	UserWithdrawalVo detail(Long id);
+
+    /**
+     * 分页查询
+     * @author liweifan
+ 	 * @date 2022-03-30
+     */
+    IPage<UserWithdrawalVo> selectPage(IPage<UserWithdrawalVo> page, TeacherWithdrawalSearch query);
+	/***
+	 * 查询提现页面信息
+	 * @author liweifan
+	 * @param: userId
+	 * @updateTime 2022/4/7 14:31
+	 * @return: com.yonge.cooleshow.common.entity.HttpResponseResult<com.yonge.cooleshow.biz.dal.vo.res.WithdrawalInfoRes>
+	 */
+    HttpResponseResult<WithdrawalInfoRes> getWithdrawalInfo(Long userId);
+	/***
+	 * 用户发起提现申请
+	 * @author liweifan
+	 * @param: userId
+	 * @param: withdrawalReq
+	 * @updateTime 2022/4/7 15:26
+	 * @return: com.yonge.cooleshow.common.entity.HttpResponseResult<java.lang.Boolean>
+	 */
+	HttpResponseResult<Boolean> withdrawal(Long userId, WithdrawalReq withdrawalReq);
+}

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

@@ -1,7 +1,11 @@
 package com.yonge.cooleshow.biz.dal.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.biz.dal.dto.search.VideoLessonEvaluateSearch;
 import com.yonge.cooleshow.biz.dal.entity.VideoLessonEvaluate;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.yonge.cooleshow.biz.dal.vo.VideoLessonEvaluateVo;
 
 /**
  * VideoLessonEvaluateService服务类
@@ -10,5 +14,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
  * @version v1.0
  **/
 public interface VideoLessonEvaluateService extends IService<VideoLessonEvaluate> {
-
+    void evaluate(VideoLessonEvaluate evaluate, SysUser sysUser);
+    IPage<VideoLessonEvaluateVo> selectEvaluate(IPage<VideoLessonEvaluateVo> page, VideoLessonEvaluateSearch search);
 }

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

@@ -10,13 +10,16 @@ import com.yonge.cooleshow.biz.dal.vo.*;
 
 /**
  * VideoLessonGroupService服务类
+ *
  * @author yzp
- * @date 2022-03-25 23:46:28
  * @version v1.0
+ * @date 2022-03-25 23:46:28
  **/
 public interface VideoLessonGroupService extends IService<VideoLessonGroup> {
     IPage<VideoLessonGroupVo> selectPage(IPage<VideoLessonGroupVo> page, VideoLessonGroupSearch query);
 
+    VideoLessonGroup selectGroup(Long groupId);
+
     void updateGroup(VideoLessonGroupUpVo lessonGroupUpVo);
 
     void deleteGroup(Long id);
@@ -28,4 +31,10 @@ public interface VideoLessonGroupService extends IService<VideoLessonGroup> {
     IPage<VideoLessonTeacherVo> selectTeacherPage(IPage<VideoLessonTeacherVo> page, VideoLessonSearch search);
 
     IPage<VideoLessonPurchaseVo> selectPurchaseStudent(IPage<VideoLessonPurchaseVo> page, VideoLessonSearch search);
+
+    VideoLessonStudentVo selectVideoLesson(Long groupId);
+
+    void update(VideoLessonVo lessonVo, SysUser sysUser);
+
+    IPage<LessonGroupVo> selectLessonGroup(IPage<LessonGroupVo> page, VideoLessonGroupSearch query);
 }

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

@@ -1,12 +1,5 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
-import java.math.BigDecimal;
-
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.google.common.collect.Lists;
-
-import java.util.Date;
-
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -14,7 +7,7 @@ import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.constant.CourseConstant;
 import com.yonge.cooleshow.biz.dal.constant.LiveRoomConstant;
-import com.yonge.cooleshow.biz.dal.constant.SysConfigConstant;
+import com.yonge.cooleshow.common.constant.SysConfigConstant;
 import com.yonge.cooleshow.biz.dal.dao.CourseGroupDao;
 import com.yonge.cooleshow.biz.dal.dto.CheckLiveCourseTimeDto;
 import com.yonge.cooleshow.biz.dal.dto.LiveCourseGroupDto;

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

@@ -6,19 +6,24 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.common.constant.SysConfigConstant;
 import com.yonge.cooleshow.biz.dal.dao.CourseScheduleDao;
+import com.yonge.cooleshow.biz.dal.entity.CourseCalendarEntity;
 import com.yonge.cooleshow.biz.dal.entity.CourseSchedule;
+import com.yonge.cooleshow.biz.dal.entity.CourseTimeEntity;
+import com.yonge.cooleshow.biz.dal.entity.HolidaysFestivals;
 import com.yonge.cooleshow.biz.dal.enums.CourseScheduleEnum;
-import com.yonge.cooleshow.biz.dal.service.CourseGroupService;
 import com.yonge.cooleshow.biz.dal.service.CourseScheduleService;
+import com.yonge.cooleshow.biz.dal.service.HolidaysFestivalsService;
+import com.yonge.cooleshow.biz.dal.service.SysConfigService;
 import com.yonge.cooleshow.biz.dal.support.PageUtil;
 import com.yonge.cooleshow.biz.dal.support.WrapperUtil;
-import com.yonge.cooleshow.biz.dal.vo.CourseGroupVo;
 import com.yonge.cooleshow.biz.dal.vo.TeacherLiveCourseInfoVo;
 import com.yonge.cooleshow.common.exception.BizException;
 import com.yonge.cooleshow.common.page.PageInfo;
 import com.yonge.toolset.utils.date.DateUtil;
 import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -29,10 +34,7 @@ import org.springframework.validation.annotation.Validated;
 import javax.validation.Valid;
 import java.time.LocalDate;
 import java.time.temporal.TemporalAdjusters;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
+import java.util.*;
 import java.util.function.Function;
 
 /**
@@ -50,7 +52,9 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
     @Autowired
     private SysUserFeignService sysUserFeignService;
     @Autowired
-    private CourseGroupService courseGroupService;
+    private HolidaysFestivalsService holidaysFestivalsService;
+    @Autowired
+    private SysConfigService sysConfigService;
 
     @Override
     public CourseScheduleDao getDao() {
@@ -127,19 +131,18 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
     }
 
     /**
-     * 查询这个课程列表中时间是否有重叠
-     * <p>案例:1
-     * <p>已有9:00~ 10:00 课程
+     * 检查传入时间列表的时间是否与新增课程时间有交集
+     * <p>案例1:
+     * <p>list列表
+     * <p> 8:00 ~ 09:00 课程
+     * <p> 9:00 ~ 10:00 课程
      * <p>新增课程 09:10~ 09:40
      * <p>返回 true
      *
-     * <p>案例:2
-     * <p>已有9:00~ 10:00 课程
-     * <p>新增课程 08:45~ 09:40
-     * <p>返回 true
-     *
-     * <p>案例:3
-     * <p>已有9:00~ 10:00 课程
+     * <p>案例2:
+     * <p>list列表
+     * <p> 8:00 ~ 09:00 课程
+     * <p> 9:00 ~ 10:00 课程
      * <p>新增课程 10:00~ 10:40
      * <p>返回 false
      *
@@ -148,7 +151,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
      * @param endTimeFun   获取现课程结束时间
      * @param startTime    新增课程开始时间
      * @param endTime      新增课程结束时间
-     * @return true 被占用 false 没有被占用
+     * @return true 有交集 false 没有交集
      */
     public <T> boolean checkCourseTime(List<T> list, Function<T, Date> startTimeFun, Function<T, Date> endTimeFun,
                                        Date startTime, Date endTime) {
@@ -210,13 +213,207 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
     }
 
     /**
-     * 课程日历
+     * 创建直播课时选课时的日历
+     * <P>主要查询该老师目前的课程时间
+     * <P>根据传入的单课时时长将时间分片后来匹配数据库中课程时间,得到每日空余时间
+     *
+     * @param param 传入参数
+     *              <p> - teacherId 老师id
+     *              <p> - year 年
+     *              <p> - month 月
+     *              <p> - day 日
+     *              <p> - singleCourseMinutes 单课时时长(包含休息时间)
+     * @return 返回传入时间当月每日的剩余时间段
+     */
+    public List<CourseCalendarEntity> createLiveCourseCalendar(Map<String, Object> param) {
+        //校验数据
+        Long teacherId = WrapperUtil.toLong(param, "teacherId", "老师id不能为空!");
+        Integer year = WrapperUtil.toInt(param, "year", "日历的时间年份不能为空!");
+        Integer month = WrapperUtil.toInt(param, "month", "日历的时间月份不能为空!");
+        Integer day = WrapperUtil.toInt(param, "month", "日历的时间日期不能为空!");
+        Integer singleCourseMinutes = WrapperUtil.toInt(param, "singleCourseMinutes", "单课时时长不能为空!");
+
+        //传入的日期+1天开始
+        LocalDate firstDay = LocalDate.of(year, month, day).plusDays(1L);
+        //根据firstDay计算出该月的最后一天
+        LocalDate lastDay = firstDay.with(TemporalAdjusters.lastDayOfMonth());
+        //获取老师的课程  key:日期-年月日 value:课程时间-开始时间,结束时间
+        Map<String, List<CourseTimeEntity>> nowCourseMap = getTeacherCourseTime(teacherId, firstDay.toString(), lastDay.toString());
+        //储存节假日数据,避免重复查询
+        Map<Integer, List<String>> holidayMap = new HashMap<>();
+        //生成日历数据
+        List<CourseCalendarEntity> courseCalendarEntities = generateCourseData(firstDay, lastDay, singleCourseMinutes);
+        courseCalendarEntities.forEach(calendarEntity -> {
+            //获取课程数据,并剔除交集时间段数据,
+            List<CourseTimeEntity> nowCourse = nowCourseMap.get(calendarEntity.getDate());
+            if (CollectionUtils.isEmpty(nowCourse)) {
+                //当日没课
+                calendarEntity.setFullCourse(0);//  0:未满 1满
+            } else {
+                //将日历时间与课程时间进行对比,如果有交集则将日历的时间数据删除
+                Iterator<CourseTimeEntity> iterator = calendarEntity.getCourseTime().iterator();
+                while (iterator.hasNext()) {
+                    CourseTimeEntity next = iterator.next();
+                    boolean flag = checkCourseTime(nowCourse, CourseTimeEntity::getStartTime, CourseTimeEntity::getEndTime, next.getStartTime(), next.getEndTime());
+                    if (flag) {
+                        iterator.remove();
+                    }
+                }
+                //如果日历时间集合数据删没了,那么就证明当天课程已经满了  0:未满 1满
+                if (CollectionUtils.isEmpty(calendarEntity.getCourseTime())) {
+                    calendarEntity.setFullCourse(1);
+                } else {
+                    calendarEntity.setFullCourse(0);
+                }
+            }
+            //获取节假日信息
+            int calendarYear = LocalDate.parse(calendarEntity.getDate()).getYear();
+            List<String> holiday = Optional.of(calendarYear)
+                    .map(holidayMap::get)
+                    .filter(Objects::nonNull)
+                    .orElseGet(() -> {
+                        List<String> list = getHoliday(calendarYear);
+                        holidayMap.put(calendarYear, list);
+                        return list;
+                    });
+            //是否是节假日  0:不是 1是
+            calendarEntity.setHoliday(holiday.contains(calendarEntity.getDate()) ? 1 : 0);
+        });
+
+        return courseCalendarEntities;
+    }
+
+    /**
+     * 获取老师的课程时间数据
      *
      * @param teacherId 老师id
-     * @param date      年月日 yyyy-MM-dd 都是1号
+     * @param startDate 开始时间
+     * @param endDate   结束时间
+     * @return key:日期-年月日 value:课程时间-开始时间,结束时间
      */
-    public void courseCalendar(Long teacherId, String date) {
+    private Map<String, List<CourseTimeEntity>> getTeacherCourseTime(Long teacherId, String startDate, String endDate) {
+        //查询该老师指定时间段的课程
+        List<CourseSchedule> courseList = this.list(Wrappers.<CourseSchedule>lambdaQuery()
+                .eq(CourseSchedule::getTeacherId, teacherId)
+                .ge(CourseSchedule::getClassDate, startDate)
+                .le(CourseSchedule::getClassDate, endDate)
+        );
+        //老师课程 key:日期-年月日  value:课程
+        Map<String, List<CourseTimeEntity>> nowCourse = new HashMap<>();
+        if (CollectionUtils.isNotEmpty(courseList)) {
+            WrapperUtil.groupList(courseList, CourseSchedule::getClassDate)
+                    .forEach((k, v) -> {
+                                List<CourseTimeEntity> value = new ArrayList<>();
+                                v.forEach(course -> {
+                                    CourseTimeEntity courseTimeEntity = new CourseTimeEntity();
+                                    courseTimeEntity.setStartTime(course.getStartTime());
+                                    courseTimeEntity.setEndTime(course.getEndTime());
+                                    value.add(courseTimeEntity);
+                                });
+                                nowCourse.put(DateUtil.dateToString(k), value);
+                            }
+                    );
+        }
+        return nowCourse;
+    }
 
+    /**
+     * 根据开始日期 结束日期 单结课时长 生成一个周期的每日课程时间数据
+     *
+     * @param firstDay            开始日期年月日
+     * @param lastDay             最后一天的日期年月日
+     * @param singleCourseMinutes 单结课时长
+     */
+    public List<CourseCalendarEntity> generateCourseData(LocalDate firstDay, LocalDate lastDay, Integer singleCourseMinutes) {
+        //获取上课的最早时间和最晚时间,将每日时间切片
+        String sysStartTime = sysConfigService.findConfigValue(SysConfigConstant.COURSE_START_SETTING);
+        String sysEndTime = sysConfigService.findConfigValue(SysConfigConstant.COURSE_END_SETTING);
+        if (StringUtils.isBlank(sysStartTime) || StringUtils.isBlank(sysEndTime)) {
+            throw new BizException("未查询到平台设置的每日最早上/最晚上课时间设置!");
+        }
+        //每日最早上课时间
+        Date dayStartTime = DateUtil.toDateTime(firstDay + " " + sysStartTime + ":00");
+        //每日最晚下课时间
+        Date dayEndTime = DateUtil.toDateTime(firstDay + " " + sysEndTime + ":00");
+        //每日日期数据
+        List<CourseCalendarEntity> list = new ArrayList<>();
+        //生成每日课程时间段 -根据单节课时长 及每日最早最晚时间 生成一天的时间切片
+        List<CourseTimeEntity> dayTime = generateDayTime(singleCourseMinutes, dayStartTime, dayEndTime);
+        int addDay = 0;
+        //获取每日日期数据
+        while (firstDay.isBefore(lastDay) || firstDay.isEqual(lastDay)) {
+            CourseCalendarEntity entity = new CourseCalendarEntity();
+            List<CourseTimeEntity> times = new ArrayList<>();
+            //获取当前日期
+            entity.setDate(firstDay.toString());
+            int finalAddDay = addDay;
+            dayTime.forEach(time -> {
+                CourseTimeEntity courseTimeEntity = new CourseTimeEntity();
+                courseTimeEntity.setStartTime(DateUtil.addDays(time.getStartTime(), finalAddDay));
+                courseTimeEntity.setEndTime(DateUtil.addDays(time.getEndTime(), finalAddDay));
+                times.add(courseTimeEntity);
+            });
+            entity.courseTime(times);
+            list.add(entity);
+            firstDay = firstDay.plusDays(1L);
+            addDay++;
+        }
+
+        return list;
+    }
+
+    /**
+     * 生成每日课程时间段数据
+     * <p>根据单节课时长 及每日最早最晚时间 生成一天的时间切片
+     *
+     * @param singleCourseMinutes 单节课时长
+     * @param startTime           每日最早上课时间
+     * @param endTime             每日最晚下课时间
+     */
+    public List<CourseTimeEntity> generateDayTime(Integer singleCourseMinutes, Date startTime, Date endTime) {
+        List<CourseTimeEntity> result = new ArrayList<>();
+        //划分每日课程时间
+        Date edate = startTime;
+        boolean flag = true;
+        while (flag) {
+            if (edate.getTime() > endTime.getTime()) {
+                flag = false;
+            } else {
+                CourseTimeEntity timeEntity = new CourseTimeEntity();
+                timeEntity.setStartTime(edate);
+                //加时间得到课程结束时间
+                edate = DateUtil.addMinutes(edate, singleCourseMinutes);
+                timeEntity.setEndTime(edate);
+                result.add(timeEntity);
+            }
+        }
+        result.remove(result.size() - 1);
+        return result;
+    }
+
+    /**
+     * 根据年份获取当年节假日
+     *
+     * @param year 年
+     * @return 年月日
+     */
+    private List<String> getHoliday(int year) {
+        HolidaysFestivals holidaysFestivals = holidaysFestivalsService.queryByYear(year);
+        if (Objects.isNull(holidaysFestivals)) {
+            return Collections.emptyList();
+        }
+        if (StringUtils.isBlank(holidaysFestivals.getHolidaysFestivalsJson())) {
+            return Collections.emptyList();
+        }
+        return WrapperUtil.toList(holidaysFestivals.getHolidaysFestivalsJson());
+    }
+
+    /**
+     * 生成陪练课日历
+     */
+    public void generatePracticeCourseCalender() {
+        //todo 注意:如果是陪练课的日历需要查询老师设置的陪练课时间有哪些,不能直接根据时间段来
+        //获取周 int value = calendarDay.getDayOfWeek().getValue();
     }
 
     private SysUser getSysUser() {

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

@@ -44,7 +44,11 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Long, Employee> impleme
 
     @Override
     public EmployeeVo detail(Long id) {
-        return employeeDao.detail(id);
+        EmployeeVo detail = employeeDao.detail(id);
+        //用户角色
+        List<Long> longs = employeeDao.queryUserRole(id);
+        detail.setRoleIds(longs);
+        return detail;
     }
 
     @Override
@@ -90,7 +94,7 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Long, Employee> impleme
     public HttpResponseResult<EmployeeDto> updateEmployee(EmployeeDto param) throws Exception {
         SysUser sysUser = employeeDao.querySysUserById(param.getUserId());
         Employee employee = employeeDao.get(sysUser.getId());
-        if(null == sysUser || null == employee){
+        if (null == sysUser || null == employee) {
             return HttpResponseResult.failed("未找到用户");
         }
         SysUser oldPhoneUser = employeeDao.querySysUserByPhone(param.getPhone());

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

@@ -37,8 +37,8 @@ import java.util.function.BiFunction;
 import java.util.stream.Collectors;
 
 import static com.yonge.cooleshow.biz.dal.constant.LiveRoomConstant.*;
-import static com.yonge.cooleshow.biz.dal.constant.SysConfigConstant.DESTROY_EXPIRED_LIVE_ROOM_MINUTE;
-import static com.yonge.cooleshow.biz.dal.constant.SysConfigConstant.PRE_CREATE_LIVE_ROOM_MINUTE;
+import static com.yonge.cooleshow.common.constant.SysConfigConstant.DESTROY_EXPIRED_LIVE_ROOM_MINUTE;
+import static com.yonge.cooleshow.common.constant.SysConfigConstant.PRE_CREATE_LIVE_ROOM_MINUTE;
 
 /**
  * 直播房间与课程的关系表表(LiveRoom)表服务实现类

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

@@ -4,7 +4,7 @@ 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.entity.SysUser;
-import com.yonge.cooleshow.biz.dal.constant.SysConfigConstant;
+import com.yonge.cooleshow.common.constant.SysConfigConstant;
 import com.yonge.cooleshow.biz.dal.dao.CourseScheduleDao;
 import com.yonge.cooleshow.biz.dal.dao.StudentStarDao;
 import com.yonge.cooleshow.biz.dal.dto.search.StudentSearch;
@@ -98,16 +98,7 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, Student> impleme
         } catch (InvocationTargetException e) {
             e.printStackTrace();
         }
-        String avatar = "";
-        if (StringUtil.isEmpty(avatar)) {
-            if (UserGenderEnum.WOMAN.getCode().equals(user.getGender())) {
-                avatar = sysConfigService.findConfigValue(SysConfigConstant.DEFAULT_HEARD_STUDENT_GIRL);
-            } else {
-                avatar = sysConfigService.findConfigValue(SysConfigConstant.DEFAULT_HEARD_STUDENT_BOY);
-            }
-        }
-        studentHomeVo.setHeardUrl(avatar);
-
+        studentHomeVo.setHeardUrl(user.getAvatar());
         studentHomeVo.setUsername(user.getUsername());
         int num = DateUtil.daysBetween(new Date(), student.getMembershipEndTime());
         studentHomeVo.setMembershipDays(num < 0 ? 0 : num);
@@ -124,4 +115,9 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, Student> impleme
         studentHomeVo.setStarTeacherNum(null == totalVo.getStarTeacherNum() ? 0 : totalVo.getStarTeacherNum());
         return studentHomeVo;
     }
+
+    @Override
+    public Integer setSubject(Long id, String subjectIds) {
+        return baseMapper.setSubject(id,subjectIds);
+    }
 }

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

@@ -3,16 +3,11 @@ package com.yonge.cooleshow.biz.dal.service.impl;
 import java.util.*;
 import java.util.stream.Collectors;
 
-import com.yonge.cooleshow.biz.dal.vo.SubjectSelectVo;
-
-import org.apache.commons.beanutils.BeanUtils;
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import com.yonge.cooleshow.biz.dal.dao.SubjectDao;
 import com.yonge.cooleshow.biz.dal.entity.Subject;
-import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
 import com.yonge.cooleshow.biz.dal.queryInfo.SubjectQueryInfo;
 import com.yonge.cooleshow.biz.dal.service.SubjectService;
 import com.yonge.cooleshow.common.dal.BaseDAO;
@@ -70,49 +65,38 @@ public class SubjectServiceImpl extends BaseServiceImpl<Long, Subject> implement
     }
 
     @Override
-    public List<SubjectSelectVo> subjectSelect() {
+    public List<Subject> subjectSelect() {
         List<Subject> allList = subjectDao.findAll(new HashMap<>());
-        List<SubjectSelectVo> allListVo = new ArrayList<>();
-        allList.stream().forEach(o -> {
-            SubjectSelectVo subjectSelectVo = new SubjectSelectVo();
-            try {
-                BeanUtils.copyProperties(subjectSelectVo, o);
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-            allListVo.add(subjectSelectVo);
-        });
 
-        List<SubjectSelectVo> parents = allListVo.stream()
+        List<Subject> parents = allList.stream()
                 .filter(o -> (null == o.getParentSubjectId() || o.getParentSubjectId().equals(0L) ))
                 .collect(Collectors.toList());
 
-        List<SubjectSelectVo> subjects = allListVo.stream()
+        List<Subject> subjects = allList.stream()
                 .filter(o -> !(null == o.getParentSubjectId() || o.getParentSubjectId().equals(0L)))
                 .collect(Collectors.toList());
 
-        for (SubjectSelectVo parent : parents) {
+        for (Subject parent : parents) {
             if (null == parent.getId()) {
                 continue;
             }
-            for (SubjectSelectVo subject : subjects) {
+            for (Subject subject : subjects) {
                 if (null == subject.getId() || null == subject.getParentSubjectId()) {
                     continue;
                 }
                 if (subject.getParentSubjectId().equals(parent.getId())) {
-                    List<SubjectSelectVo> children = parent.getChildren();
+                    List<Subject> children = parent.getSubjects();
                     if(CollectionUtils.isEmpty(children)){
                         children = new ArrayList<>();
                     }
                     children.add(subject);
-                    parent.setChildren(children);
+                    parent.setSubjects(children);
                 }
             }
         }
         return parents;
     }
 
-
     /***
      * 新增、修改声部
      * @param: subject
@@ -139,17 +123,17 @@ public class SubjectServiceImpl extends BaseServiceImpl<Long, Subject> implement
      * @updateTime 2022/4/6 11:33
      * @return: com.yonge.cooleshow.biz.dal.entity.Subject
      */
-    private Subject getTree(Subject sub, YesOrNoEnum yesOrNoEnum) {
+    private Subject getTree(Subject sub, Boolean delFlag) {
         //得到根节点对象
         //获取子节点list
-        List<Subject> subjects = subjectDao.findByParentId(sub.getId(), yesOrNoEnum);
+        List<Subject> subjects = subjectDao.findByParentId(sub.getId(), delFlag);
         //如果存在子节点
         if (subjects != null && subjects.size() > 0) {
             //将子节点list放入父节点对象
             sub.setSubjects(subjects);
             //遍历子节点....
             for (Subject subject : subjects) {
-                getTree(subject, yesOrNoEnum);
+                getTree(subject, delFlag);
             }
         }
         return sub;

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

@@ -46,6 +46,7 @@ public class TeacherAuthEntryRecordServiceImpl extends ServiceImpl<TeacherAuthEn
         TeacherAuthEntryRecord build = baseMapper.selectById(authOperaReq.getId());
         build.setTeacherAuthStatus(authOperaReq.getPass() ? AuthStatusEnum.PASS : AuthStatusEnum.UNPASS);
         build.setReason(authOperaReq.getReason());
+        build.setVerifyUserId(sysUser.getId());
 
         //修改teacher表
         Teacher teacher = new Teacher();
@@ -70,11 +71,10 @@ public class TeacherAuthEntryRecordServiceImpl extends ServiceImpl<TeacherAuthEn
         if (YesOrNoEnum.YES.equals(teacher.getEntryFlag())) {
             return HttpResponseResult.failed("已经通过审批");
         }
-        //修改用户表
-        baseMapper.updateUserCard(teacherApplyDetailDto);
         //新增申请记录
         TeacherAuthEntryRecord teacherAuthEntryRecord = new TeacherAuthEntryRecord();
         BeanUtils.copyProperties(teacherAuthEntryRecord, teacherApplyDetailDto);
+        teacherAuthEntryRecord.setTeacherAuthStatus(AuthStatusEnum.DOING);
 
         return HttpResponseResult.status(baseMapper.insert(teacherAuthEntryRecord) > 0);
     }

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

@@ -7,10 +7,11 @@ 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.constant.SysConfigConstant;
+import com.yonge.cooleshow.common.constant.SysConfigConstant;
 import com.yonge.cooleshow.biz.dal.dao.CourseScheduleDao;
 import com.yonge.cooleshow.biz.dal.dao.EmployeeDao;
 import com.yonge.cooleshow.biz.dal.dao.StudentStarDao;
+import com.yonge.cooleshow.biz.dal.dto.TeacherDto;
 import com.yonge.cooleshow.biz.dal.dto.req.TeacherSubmitReq;
 import com.yonge.cooleshow.biz.dal.dto.search.TeacherSearch;
 import com.yonge.cooleshow.biz.dal.entity.*;
@@ -24,12 +25,11 @@ import com.yonge.cooleshow.biz.dal.vo.TeacherHomeVo;
 import com.yonge.cooleshow.biz.dal.vo.TeacherTotalVo;
 import com.yonge.cooleshow.biz.dal.vo.TeacherVo;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
-import com.yonge.cooleshow.common.enums.UserGenderEnum;
 import com.yonge.cooleshow.common.exception.BizException;
 import com.yonge.toolset.utils.idcard.IdcardInfoExtractor;
 import com.yonge.toolset.utils.string.StringUtil;
+import com.yonge.toolset.utils.string.ValueUtil;
 import org.apache.commons.beanutils.BeanUtils;
-import org.apache.poi.ss.formula.functions.T;
 import org.redisson.api.RedissonClient;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
@@ -38,7 +38,6 @@ import com.yonge.cooleshow.biz.dal.dao.TeacherDao;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
-import java.lang.reflect.InvocationTargetException;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -75,12 +74,15 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
         if (null != lastRecordByUserId) {
             detail.setVerifyUser(lastRecordByUserId.getVerifyUser());
         }
+        String teacherType = TeacherTypeEnum.getTeacherType(detail.getEntryFlag(), detail.getMusicianFlag());
+        detail.setTeacherType(teacherType);
         return detail;
     }
 
     @Override
     public IPage<TeacherVo> selectPage(IPage<TeacherVo> page, TeacherSearch search) {
-        return page.setRecords(baseMapper.selectPage(page, search));
+        List<TeacherVo> teacherVos = baseMapper.selectPage(page, search);
+        return page.setRecords(teacherVos);
     }
 
     @Override
@@ -107,13 +109,12 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
         } catch (Exception e) {
             e.printStackTrace();
         }
-        String avatar = user.getAvatar();
-        if (StringUtil.isEmpty(avatar)) {
-            avatar = sysConfigService.findConfigValue(SysConfigConstant.DEFAULT_HEARD_TEACHER);
-        }
-        teacherHomeVo.setHeardUrl(avatar);
+        //身份证号、手机号脱敏
+        teacherHomeVo.setIdCardNo(ValueUtil.fuzzyIdCard(teacherHomeVo.getIdCardNo()));
+        teacherHomeVo.setPhone(ValueUtil.fuzzyMobile(teacherHomeVo.getPhone()));
+        teacherHomeVo.setHeardUrl(user.getAvatar());
 
-        TeacherAuthEntryRecord entryRecord = entryRecordService.getLastRecordByUserId(user.getId());
+        TeacherAuthEntryRecordVo entryRecord = entryRecordService.getLastRecordByUserId(user.getId());
         if (null == entryRecord) {
             teacherHomeVo.setEntryStatus(AuthStatusEnum.UNPAALY);
         } else {
@@ -154,8 +155,10 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
             teacher.setUserId(id);
             teacher.setLiveFlag(YesOrNoEnum.YES);
             baseMapper.updateById(teacher);
+            return HttpResponseResult.status(true);
+        } else {
+            return HttpResponseResult.failed("不满足开通条件");
         }
-        return HttpResponseResult.status(true);
     }
 
     @Override
@@ -295,12 +298,14 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
      */
     private Teacher getTeacherDetil(Teacher teacher, TeacherSubmitReq teacherSubmitReq) {
         teacher.setSubjectId(teacherSubmitReq.getSubjectId());
-
-        String[] teacherTypes = teacherSubmitReq.getTeacherType().split(",");
         teacher.setEntryFlag(YesOrNoEnum.NO);
         teacher.setEntryAuthDate(null);
         teacher.setMusicianFlag(YesOrNoEnum.NO);
         teacher.setMusicianDate(null);
+        if (StringUtil.isEmpty(teacherSubmitReq.getTeacherType())) {
+            return teacher;
+        }
+        String[] teacherTypes = teacherSubmitReq.getTeacherType().split(",");
         for (String teacherType : teacherTypes) {
             if (TeacherTypeEnum.ENTRY.getCode().equals(teacherType)) {
                 teacher.setEntryFlag(YesOrNoEnum.YES);
@@ -313,4 +318,34 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
         }
         return teacher;
     }
+
+    @Override
+    public Integer setSubject(Long id, String subjectIds) {
+        return baseMapper.setSubject(id, subjectIds);
+    }
+
+    @Override
+    public HttpResponseResult<TeacherVo> queryTeacherStyle(Long id) {
+        return HttpResponseResult.succeed(detail(id));
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public HttpResponseResult<TeacherVo> saveTeacherStyle(TeacherDto teacherDto) {
+        //修改老师信息
+        int i = baseMapper.updateById(teacherDto);
+        List<TeacherStyleVideo> styleVideo = teacherDto.getStyleVideo();
+        List<TeacherStyleVideo> createList = styleVideo.stream().filter(o -> o.getId() == null)
+                .collect(Collectors.toList());
+
+        createList.forEach(o -> o.setUserId(teacherDto.getUserId()));
+
+        List<Long> oldIds = styleVideo.stream().filter(o -> o.getId() != null)
+                .map(TeacherStyleVideo::getId).collect(Collectors.toList());
+        //删除旧视频
+        teacherStyleVideoService.removeByUserIdAndOldIds(teacherDto.getUserId(), oldIds);
+        //保存新视频
+        teacherStyleVideoService.batchAddStyleVideo(createList);
+        return HttpResponseResult.succeed(detail(teacherDto.getUserId()));
+    }
 }

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

@@ -17,4 +17,14 @@ public class TeacherStyleVideoServiceImpl extends ServiceImpl<TeacherStyleVideoD
     public List<TeacherStyleVideo> selectListByUserId(Long userId) {
         return baseMapper.selectListByUserId(userId);
     }
+
+    @Override
+    public Integer removeByUserIdAndOldIds(Long userId, List<Long> oldIds) {
+        return baseMapper.removeByUserIdAndOldIds(userId, oldIds);
+    }
+
+    @Override
+    public boolean batchAddStyleVideo(List<TeacherStyleVideo> createList) {
+        return saveBatch(createList);
+    }
 }

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

@@ -1,27 +0,0 @@
-package com.yonge.cooleshow.biz.dal.service.impl;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
-import com.yonge.cooleshow.biz.dal.entity.TeacherWithdrawal;
-import com.yonge.cooleshow.biz.dal.vo.TeacherWithdrawalVo;
-import com.yonge.cooleshow.biz.dal.dto.search.TeacherWithdrawalSearch;
-import com.yonge.cooleshow.biz.dal.dao.TeacherWithdrawalDao;
-import com.yonge.cooleshow.biz.dal.service.TeacherWithdrawalService;
-
-
-@Service
-public class TeacherWithdrawalServiceImpl extends ServiceImpl<TeacherWithdrawalDao, TeacherWithdrawal> implements TeacherWithdrawalService {
-
-	@Override
-    public TeacherWithdrawalVo detail(Long id) {
-        TeacherWithdrawalVo detail = baseMapper.detail(id);
-        return detail;
-    }
-    
-     @Override
-    public IPage<TeacherWithdrawalVo> selectPage(IPage<TeacherWithdrawalVo> page, TeacherWithdrawalSearch query){
-        return page.setRecords(baseMapper.selectPage(page, query));
-    }
-	
-}

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

@@ -2,6 +2,16 @@ 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.UserAccountRecordDto;
+import com.yonge.cooleshow.biz.dal.entity.UserAccountRecord;
+import com.yonge.cooleshow.biz.dal.enums.CacheNameEnum;
+import com.yonge.cooleshow.biz.dal.enums.FrozenTypeEnum;
+import com.yonge.cooleshow.biz.dal.service.UserAccountRecordService;
+import com.yonge.cooleshow.biz.dal.support.DistributedLock;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.cooleshow.common.exception.BizException;
+import org.redisson.api.RedissonClient;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.yonge.cooleshow.biz.dal.entity.UserAccount;
 import com.yonge.cooleshow.biz.dal.vo.UserAccountVo;
@@ -9,19 +19,66 @@ import com.yonge.cooleshow.biz.dal.dto.search.UserAccountSearch;
 import com.yonge.cooleshow.biz.dal.dao.UserAccountDao;
 import com.yonge.cooleshow.biz.dal.service.UserAccountService;
 
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
+
 
 @Service
 public class UserAccountServiceImpl extends ServiceImpl<UserAccountDao, UserAccount> implements UserAccountService {
+    @Autowired
+    private UserAccountRecordService userAccountRecordService;
+    @Autowired
+    private RedissonClient redissonClient;
 
-	@Override
+    @Override
     public UserAccountVo detail(Long id) {
         UserAccountVo detail = baseMapper.detail(id);
+        if (null == detail) {
+            throw new BizException("用户没有开通账户");
+        }
         return detail;
     }
-    
-     @Override
-    public IPage<UserAccountVo> selectPage(IPage<UserAccountVo> page, UserAccountSearch query){
+
+    @Override
+    public IPage<UserAccountVo> selectPage(IPage<UserAccountVo> page, UserAccountSearch query) {
         return page.setRecords(baseMapper.selectPage(page, query));
     }
-	
+
+    @Override
+    public HttpResponseResult<UserAccountRecord> accountChange(UserAccountRecordDto accountRecordDto) {
+        if (null == accountRecordDto.getUserId() || null == accountRecordDto.getTransAmount()
+                || null == accountRecordDto.getInOrOut() || null == accountRecordDto.getBizType()) {
+            throw new BizException("缺少参数");
+        }
+
+        Future<HttpResponseResult<UserAccountRecord>> httpResponseResultFuture = DistributedLock.of(redissonClient)
+                .callIfLockCanGet(CacheNameEnum.LOCK_CHANGE_ACCOUNT.getRedisKey(accountRecordDto.getUserId())
+                        , () -> doAccountChange(accountRecordDto), 60L, TimeUnit.SECONDS);
+        try {
+            return httpResponseResultFuture.get();
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new BizException("账户变更失败");
+        }
+    }
+
+    private HttpResponseResult<UserAccountRecord> doAccountChange(UserAccountRecordDto accountRecordDto) {
+        if (FrozenTypeEnum.FROZEN.equals(accountRecordDto.getFrozenType())) {
+            baseMapper.frozenChangeAccount(accountRecordDto.getUserId(), accountRecordDto.getTransAmount(), accountRecordDto.getInOrOut());
+        } else if (FrozenTypeEnum.UNFROZEN.equals(accountRecordDto.getFrozenType())) {
+            baseMapper.unfrozenChangeAccount(accountRecordDto.getUserId(), accountRecordDto.getTransAmount(), accountRecordDto.getInOrOut());
+        } else {
+            baseMapper.changeAccount(accountRecordDto.getUserId(), accountRecordDto.getTransAmount(), accountRecordDto.getInOrOut());
+        }
+
+        UserAccountVo detail = detail(accountRecordDto.getUserId());
+        if (detail.getAmountTotal().doubleValue() < 0
+                || detail.getAmountUsable().doubleValue() < 0 || detail.getAmountFrozen().doubleValue() < 0) {
+            throw new BizException("账户变更失败");
+        }
+        //插入账户变更记录
+        userAccountRecordService.save(accountRecordDto);
+        return HttpResponseResult.succeed(accountRecordDto);
+    }
+
 }

Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio