Browse Source

Merge remote-tracking branch 'origin/master'

zouxuan 3 years ago
parent
commit
bfc63f3f1e
37 changed files with 579 additions and 216 deletions
  1. 0 3
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/core/provider/PhoneAuthenticationProvider.java
  2. 3 4
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/dal/dao/SysUserDao.java
  3. 12 8
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/service/impl/SysUserServiceImpl.java
  4. 25 20
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/web/controller/UserController.java
  5. 16 0
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/web/controller/queryInfo/RoleQueryInfo.java
  6. 9 7
      cooleshow-auth/auth-server/src/main/resources/config/mybatis/SysRoleMapper.xml
  7. 1 1
      cooleshow-auth/auth-server/src/main/resources/config/mybatis/SysUserRoleMapper.xml
  8. 2 0
      cooleshow-task/src/main/java/com/yonge/cooleshow/task/jobs/PollingOrderTask.java
  9. 1 1
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/SubjectController.java
  10. 0 49
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/UserAccountController.java
  11. 0 39
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/UserAccountRecordController.java
  12. 1 1
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/UserWithdrawalController.java
  13. 6 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseScheduleDao.java
  14. 2 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/SubjectDao.java
  15. 9 8
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/OrderSearch.java
  16. 67 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/UserAccountRecordSearch.java
  17. 10 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/MemberPriceSettings.java
  18. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/UserAccountRecord.java
  19. 2 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/AccountBizTypeEnum.java
  20. 3 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseScheduleService.java
  21. 14 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseScheduleServiceImpl.java
  22. 1 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/EmployeeServiceImpl.java
  23. 3 3
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/StudentServiceImpl.java
  24. 16 29
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/SubjectServiceImpl.java
  25. 7 20
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderServiceImpl.java
  26. 246 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/StudentHomePage.java
  27. 10 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/StudentHomeVo.java
  28. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TeacherStyleVideoVo.java
  29. 30 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/UserAccountRecordVo.java
  30. 35 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  31. 2 2
      cooleshow-user/user-biz/src/main/resources/config/mybatis/EmployeeMapper.xml
  32. 2 1
      cooleshow-user/user-biz/src/main/resources/config/mybatis/MemberPriceSettingsMapper.xml
  33. 6 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/SubjectMapper.xml
  34. 23 3
      cooleshow-user/user-biz/src/main/resources/config/mybatis/UserAccountRecordMapper.xml
  35. 4 4
      cooleshow-user/user-biz/src/main/resources/config/mybatis/UserOrderMapper.xml
  36. 7 5
      cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/StudentCourseScheduleController.java
  37. 2 2
      toolset/utils/src/main/java/com/yonge/toolset/utils/easyexcel/ExcelUtils.java

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

@@ -104,8 +104,8 @@ public class UserWithdrawalController extends BaseController {
         if (user == null || null == user.getId()) {
             return failed(HttpStatus.FORBIDDEN, "请登录");
         }
-        ExcelDataReader<UserWithdrawalExport> reader = ExcelUtils.getReader(UserWithdrawalExport.class, file);
         try {
+            ExcelDataReader<UserWithdrawalExport> reader = ExcelUtils.getReader(UserWithdrawalExport.class, file);
             userWithdrawalService.importExcel(reader.getDataList(),user.getId());
             return HttpResponseResult.succeed();
         }catch (ExcelException e){

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

@@ -893,7 +893,8 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
      * 学生购买陪练课-失败-回调
      */
     @Transactional(rollbackFor = Exception.class)
-    public void buyPracticeCourseFailed(String orderNo) {
+    public void buyPracticeCourseFailed(UserOrderDetailVo orderParam) {
+        String orderNo = orderParam.getOrderNo();
         List<CourseScheduleStudentPayment> paymentList = paymentDao.selectList(Wrappers.<CourseScheduleStudentPayment>lambdaQuery()
                 .eq(CourseScheduleStudentPayment::getOrderNo, orderNo));
         if (paymentList.isEmpty()) {
@@ -924,5 +925,17 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         baseMapper.courseAdjust(adjustVo);
     }
 
+    /**
+     * @Description: 学生-首页-直播课&视频课
+     * @Author: cy
+     * @Date: 2022/4/22
+     */
+    @Override
+    public StudentHomePage queryLiveAndVideo() {
+        StudentHomePage homePage = new StudentHomePage();
+        homePage.setLiveList(baseMapper.selectLive());
+        homePage.setVideoList(baseMapper.selectVideo());
+        return homePage;
+    }
 }
 

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

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

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

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

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

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

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

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

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

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

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

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

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

@@ -9,7 +9,7 @@ import io.swagger.annotations.ApiModelProperty;
  * @Author: liweifan
  * @Data: 2022/4/11 14:44
  */
-@ApiModel(value = "TeacherStyleVideoVo对象", description = "老师风采信息")
+@ApiModel(value = "TeacherStyleVideoVo", description = "老师风采信息")
 public class TeacherStyleVideoVo extends TeacherStyleVideo {
     @ApiModelProperty(value = "是否直播 0否 1是")
     private YesOrNoEnum liveFlag;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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