Procházet zdrojové kódy

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/TeacherDao.java
#	cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/TeacherService.java
weifanli před 3 roky
rodič
revize
24e033f86e
33 změnil soubory, kde provedl 943 přidání a 62 odebrání
  1. 6 5
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/ContractTemplateController.java
  2. 2 1
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/HolidaysFestivalsController.java
  3. 44 0
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/MemberPriceSettingsController.java
  4. 28 2
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/MusicSheetController.java
  5. 7 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ImGroupMemberAuditDao.java
  6. 9 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/MemberPriceSettingsDao.java
  7. 9 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/TeacherDao.java
  8. 32 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/TeacherFreeTimeDao.java
  9. 33 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/PracticeTimesSetting.java
  10. 0 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ImGroupMemberAudit.java
  11. 115 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/MemberPriceSettings.java
  12. 21 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/MusicSheet.java
  13. 208 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TeacherFreeTime.java
  14. 29 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/PeriodEnum.java
  15. 4 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ImGroupMemberAuditService.java
  16. 0 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ImGroupService.java
  17. 8 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MemberPriceSettingsService.java
  18. 26 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/TeacherFreeTimeService.java
  19. 12 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/TeacherService.java
  20. 11 20
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImGroupMemberAuditServiceImpl.java
  21. 5 4
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImGroupServiceImpl.java
  22. 23 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MemberPriceSettingsServiceImpl.java
  23. 47 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherFreeTimeServiceImpl.java
  24. 6 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherServiceImpl.java
  25. 12 1
      cooleshow-user/user-biz/src/main/resources/config/mybatis/ImGroupMemberAuditMapper.xml
  26. 86 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/MemberPriceSettingsMapper.xml
  27. 45 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherFreeTimeMapper.xml
  28. 5 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherMapper.xml
  29. 1 1
      cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/ImGroupMemberController.java
  30. 20 7
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/ImGroupMemberAuditController.java
  31. 1 1
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/ImGroupMemberController.java
  32. 22 11
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherController.java
  33. 66 0
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherFreeTimeController.java

+ 6 - 5
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/ContractTemplateController.java

@@ -10,6 +10,7 @@ import org.springframework.http.MediaType;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -62,9 +63,9 @@ public class ContractTemplateController extends BaseController {
 	}
 
 	@ApiOperation("新增")
-	@PostMapping(value = "/add", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
+	@PostMapping(value = "/add", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
 	@PreAuthorize("@pcs.hasPermissions('contractTemplate/add')")
-	public Object add(ContractTemplate contractTemplate) {
+	public HttpResponseResult<Object> add(@RequestBody ContractTemplate contractTemplate) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         
         if(sysUser == null || sysUser.getId() == null){
@@ -78,9 +79,9 @@ public class ContractTemplateController extends BaseController {
 	}
 
 	@ApiOperation("更新")
-	@PostMapping(value = "/update", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
+	@PostMapping(value = "/update", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
 	@PreAuthorize("@pcs.hasPermissions('contractTemplate/update')")
-	public Object update(ContractTemplate tenantContractTemplate) {
+	public HttpResponseResult<Object> update(@RequestBody ContractTemplate tenantContractTemplate) {
 		contractTemplateService.update(tenantContractTemplate);
 		return succeed();
 	}
@@ -88,7 +89,7 @@ public class ContractTemplateController extends BaseController {
 	@ApiOperation("启用协议")
 	@PostMapping(value = "/updateStatus", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
 	@PreAuthorize("@pcs.hasPermissions('contractTemplate/updateStatus')")
-	public Object enableContract(int id) {
+	public HttpResponseResult<Object> enableContract(int id) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         
 		contractTemplateService.enableContract(id, sysUser.getId());

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

@@ -22,6 +22,7 @@ import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.entity.HolidaysFestivals;
 import com.yonge.cooleshow.biz.dal.service.HolidaysFestivalsService;
 import com.yonge.cooleshow.common.controller.BaseController;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.toolset.log.model.AuditLogAnnotation;
 
 @RequestMapping("holidaysFestivals")
@@ -38,7 +39,7 @@ public class HolidaysFestivalsController extends BaseController {
 	@ApiOperation("按年查询节假日")
 	@ApiImplicitParam(name = "year", value = "年份", required = false, dataType = "Integer", paramType = "path")
 	@GetMapping(value = "/query/{year}", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
-	public Object query(@PathVariable("year") Integer year) {
+	public HttpResponseResult<HolidaysFestivals> query(@PathVariable("year") Integer year) {
 		
 		HolidaysFestivals originHolidaysFestivals = holidaysFestivalsService.queryByYear(year);
 

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

@@ -0,0 +1,44 @@
+package com.yonge.cooleshow.admin.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.yonge.cooleshow.biz.dal.entity.MemberPriceSettings;
+import com.yonge.cooleshow.biz.dal.service.MemberPriceSettingsService;
+import com.yonge.cooleshow.common.controller.BaseController;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.cooleshow.common.page.PageInfo;
+import com.yonge.cooleshow.common.page.QueryInfo;
+
+@RequestMapping("memberPriceSettings")
+@Api(tags = "会员价格设置")
+@RestController
+public class MemberPriceSettingsController extends BaseController {
+
+	@Autowired
+	private MemberPriceSettingsService memberPriceSettingsService;
+
+	@ApiOperation("分页查询")
+	@GetMapping(value = "/list")
+	@PreAuthorize("@pcs.hasPermissions('memberPriceSettings/list')")
+	public HttpResponseResult<PageInfo<MemberPriceSettings>> getList(QueryInfo queryInfo) {
+		return succeed(memberPriceSettingsService.queryPage(queryInfo));
+	}
+
+	@ApiOperation("更新")
+	@PostMapping(value = "/update", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
+	@PreAuthorize("@pcs.hasPermissions('memberPriceSettings/update')")
+	public HttpResponseResult<Object> update(@RequestBody MemberPriceSettings memberPriceSettings) {
+		memberPriceSettingsService.update(memberPriceSettings);
+		return succeed();
+	}
+}

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

@@ -2,6 +2,8 @@ package com.yonge.cooleshow.admin.controller;
 
 import javax.validation.Valid;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.biz.dal.entity.MusicSheetAccompaniment;
+import com.yonge.cooleshow.biz.dal.service.MusicSheetAccompanimentService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.web.bind.annotation.*;
@@ -13,6 +15,7 @@ import com.yonge.cooleshow.biz.dal.entity.MusicSheet;
 import com.yonge.cooleshow.biz.dal.service.MusicSheetService;
 
 import java.util.Date;
+import java.util.List;
 
 /**
  * 曲谱表 web 控制层
@@ -30,18 +33,41 @@ public class MusicSheetController extends BaseController {
 	@Autowired
 	private MusicSheetService musicSheetService;
 
+	@Autowired
+    private MusicSheetAccompanimentService musicSheetAccompanimentService;
+
 	@ApiOperation(value = "新增曲谱")
-    @PostMapping("/create")
+    @RequestMapping(value = "/create", method = RequestMethod.POST, consumes="application/json", produces="application/json")
     public Object create(@Valid @RequestBody MusicSheet musicSheet) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null) {
             return failed("用户信息获取失败");
         }
 
+        List<MusicSheetAccompaniment> list = null;
+        if (!musicSheet.getAudioType().equalsIgnoreCase("midi")){
+            list = musicSheet.getBackground();
+            if (list.isEmpty()){
+                return failed("mp3音频文件对应的主音或者伴奏文件没有提供");
+            }
+        }
+
         musicSheet.setCreateBy(sysUser.getId());
         musicSheet.setCreateTime(new Date());
         musicSheetService.insert(musicSheet);
-        return succeed();
+
+        Long sheetId = musicSheet.getId();
+        if (!musicSheet.getAudioType().equalsIgnoreCase("midi")) {
+            for (int i = 0; i < list.size(); i++) {
+                MusicSheetAccompaniment musicSheetAccompaniment = list.get(i);
+                musicSheetAccompaniment.setCreateBy(sysUser.getId());
+                musicSheetAccompaniment.setCreateTime(new Date());
+                musicSheetAccompaniment.setMusicSheetId(sheetId);
+                musicSheetAccompanimentService.insert(musicSheetAccompaniment);
+            }
+        }
+
+        return succeed("曲谱创建成功");
     }
 
     @ApiOperation(value = "删除曲谱")

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

@@ -22,6 +22,12 @@ public interface ImGroupMemberAuditDao extends BaseMapper<ImGroupMemberAudit> {
 
     ImGroupMemberAudit findOne(Map<String, Object> params);
 
-    <T> IPage<T> queryPage(Page<T> pageInfo, @Param("params") ImGroupMemberAuditQueryInfo queryInfo);
+    List<ImGroupMemberAudit> queryAll(@Param("params") ImGroupMemberAuditQueryInfo queryInfo);
+
+    void batchUpdateAuditStatus(@Param("auditIds") String auditIds, @Param("auditStatus") String auditStatus);
+
+    List<ImGroupMemberAudit> findByIds(@Param("auditIds") String auditIds);
+
+    void delByGroupId(@Param("groupId") Long groupId);
 }
 

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

@@ -0,0 +1,9 @@
+package com.yonge.cooleshow.biz.dal.dao;
+
+import com.yonge.cooleshow.common.dal.BaseDAO;
+import com.yonge.cooleshow.biz.dal.entity.MemberPriceSettings;
+
+public interface MemberPriceSettingsDao extends BaseDAO<Integer, MemberPriceSettings> {
+
+	
+}

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

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yonge.cooleshow.biz.dal.dto.BasicUserInfo;
 import com.yonge.cooleshow.biz.dal.dto.req.UserSetReq;
 import com.yonge.cooleshow.biz.dal.dto.search.TeacherSearch;
+import com.yonge.cooleshow.biz.dal.entity.Subject;
 import com.yonge.cooleshow.biz.dal.entity.Teacher;
 import com.yonge.cooleshow.biz.dal.vo.TeacherVo;
 import com.yonge.cooleshow.biz.dal.vo.UserSetVo;
@@ -43,5 +44,12 @@ public interface TeacherDao extends BaseMapper<Teacher> {
      * @date 2022/3/22 13:52
      */
     List<BasicUserInfo> findBasicUserInfo(@Param("studentIds") Set<Long> studentIds);
-
+    /**
+     * @description: 获取老师可授课声部列表
+     * @param
+     * @return java.util.List<com.yonge.cooleshow.biz.dal.entity.Subject>
+     * @author zx
+     * @date 2022/3/25 09:38
+     */
+    List<Subject> querySubject(@Param("userId") Long userId);
 }

+ 32 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/TeacherFreeTimeDao.java

@@ -0,0 +1,32 @@
+package com.yonge.cooleshow.biz.dal.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yonge.cooleshow.biz.dal.entity.TeacherFreeTime;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 老师可排课时间表(TeacherFreeTime)表数据库访问层
+ *
+ * @author zx
+ * @since 2022-03-25 10:04:26
+ */
+public interface TeacherFreeTimeDao extends BaseMapper<TeacherFreeTime> {
+
+    int insertBatch(@Param("entities") List<TeacherFreeTime> entities);
+
+    /**
+     * @description: 获取老师陪练课设置
+     * @param teacherId
+     * @param courseMinutes
+     * @param freeMinutes
+     * @return com.yonge.cooleshow.biz.dal.entity.TeacherFreeTime
+     * @author zx
+     * @date 2022/3/25 10:25
+     */
+    TeacherFreeTime findOne(@Param("teacherId") Long teacherId,
+                            @Param("courseMinutes") Integer courseMinutes,
+                            @Param("freeMinutes") Integer freeMinutes);
+}
+

+ 33 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/PracticeTimesSetting.java

@@ -0,0 +1,33 @@
+package com.yonge.cooleshow.biz.dal.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotNull;
+
+//陪练课可选单课时时长配置
+public class PracticeTimesSetting {
+
+    @NotNull(message = "课间休息分钟数不可为空")
+    @ApiModelProperty(value = "课间休息分钟数")
+    private Integer freeMinutes;
+
+    @NotNull(message = "单课时分钟数不可为空")
+    @ApiModelProperty(value = "单课时分钟数")
+    private Integer courseMinutes;
+
+    public Integer getFreeMinutes() {
+        return freeMinutes;
+    }
+
+    public void setFreeMinutes(Integer freeMinutes) {
+        this.freeMinutes = freeMinutes;
+    }
+
+    public Integer getCourseMinutes() {
+        return courseMinutes;
+    }
+
+    public void setCourseMinutes(Integer courseMinutes) {
+        this.courseMinutes = courseMinutes;
+    }
+}

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

@@ -38,7 +38,6 @@ public class ImGroupMemberAudit implements Serializable {
     private Long groupId;
 
     @TableField("desc_")
-    @NotNull(message = "申请原因不可为空")
     @ApiModelProperty(value = "申请原因")
     private String desc;
 

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

@@ -0,0 +1,115 @@
+package com.yonge.cooleshow.biz.dal.entity;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+import com.yonge.cooleshow.biz.dal.enums.PeriodEnum;
+
+/**
+ * 对应数据库表(member_price_settings):
+ */
+public class MemberPriceSettings {
+
+	@ApiModelProperty(value = "",required = false)
+	private Integer id;
+	
+	@ApiModelProperty(value = "周期",required = false)
+	private PeriodEnum period;
+	
+	@ApiModelProperty(value = "销售价",required = false)
+	private java.math.BigDecimal salePrice;
+	
+	@ApiModelProperty(value = "原价",required = false)
+	private java.math.BigDecimal originalPrice;
+	
+	@ApiModelProperty(value = "创建时间",required = false)
+	private java.util.Date createTime;
+	
+	@ApiModelProperty(value = "更新时间",required = false)
+	private java.util.Date updateTime;
+	
+	@ApiModelProperty(value = "创建人",required = false)
+	private Long createBy;
+	
+	@ApiModelProperty(value = "更新人",required = false)
+	private Long updateBy;
+	
+	public MemberPriceSettings setId(Integer id){
+		this.id = id;
+		return this;
+	}
+	
+	public Integer getId(){
+		return this.id;
+	}
+			
+	public MemberPriceSettings setPeriod(PeriodEnum period){
+		this.period = period;
+		return this;
+	}
+	
+	public PeriodEnum getPeriod(){
+		return this.period;
+	}
+			
+	public MemberPriceSettings setSalePrice(java.math.BigDecimal salePrice){
+		this.salePrice = salePrice;
+		return this;
+	}
+	
+	public java.math.BigDecimal getSalePrice(){
+		return this.salePrice;
+	}
+			
+	public MemberPriceSettings setOriginalPrice(java.math.BigDecimal originalPrice){
+		this.originalPrice = originalPrice;
+		return this;
+	}
+	
+	public java.math.BigDecimal getOriginalPrice(){
+		return this.originalPrice;
+	}
+			
+	public MemberPriceSettings setCreateTime(java.util.Date createTime){
+		this.createTime = createTime;
+		return this;
+	}
+	
+	public java.util.Date getCreateTime(){
+		return this.createTime;
+	}
+			
+	public MemberPriceSettings setUpdateTime(java.util.Date updateTime){
+		this.updateTime = updateTime;
+		return this;
+	}
+	
+	public java.util.Date getUpdateTime(){
+		return this.updateTime;
+	}
+			
+	public MemberPriceSettings setCreateBy(Long createBy){
+		this.createBy = createBy;
+		return this;
+	}
+	
+	public Long getCreateBy(){
+		return this.createBy;
+	}
+			
+	public MemberPriceSettings setUpdateBy(Long updateBy){
+		this.updateBy = updateBy;
+		return this;
+	}
+	
+	public Long getUpdateBy(){
+		return this.updateBy;
+	}
+			
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
+
+}

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

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.biz.dal.entity;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.yonge.cooleshow.common.entity.BaseEntity;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
@@ -13,6 +14,7 @@ import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 import javax.validation.constraints.Size;
 import java.util.Date;
+import java.util.List;
 
 /**
  * 曲谱表
@@ -33,7 +35,6 @@ public class MusicSheet extends BaseEntity {
     @ApiModelProperty(value = "曲谱名称")
     private String musicSheetName;  //曲谱名称
 
-    @NotNull(message = "曲谱来源不能为空")
     @TableField("user_id_")
     @ApiModelProperty(value = "曲谱来源(老师ID或后台管理用户ID)")
     private Long userId;  //曲谱来源(老师ID或后台管理用户ID)
@@ -75,7 +76,6 @@ public class MusicSheet extends BaseEntity {
     @ApiModelProperty(value = "收费类型(0:免费;1:会员;2:单曲收费)")
     private Integer chargeType;  //收费类型(0:免费;1:会员;2:单曲收费)
 
-    @NotNull(message = "审核状态不能为空!")
     @TableField("audit_status_")
     @ApiModelProperty(value = "审核状态")
     private Integer auditStatus;  //审核状态
@@ -96,10 +96,12 @@ public class MusicSheet extends BaseEntity {
     @ApiModelProperty(value = "曲谱价格")
     private java.math.BigDecimal musicPrice;  //曲谱价格
 
+    @NotBlank(message = "音频文件存储路径不能为空!")
     @TableField("audio_file_url_")
     @ApiModelProperty(value = "音频文件存储路径")
     private String audioFileUrl;  //音频文件存储路径
 
+    @NotBlank(message = "XML文件存储路径不能为空!")
     @TableField("xml_file_url_")
     @ApiModelProperty(value = "XML文件存储路径")
     private String xmlFileUrl;  //XML文件存储路径
@@ -126,6 +128,7 @@ public class MusicSheet extends BaseEntity {
 
     @TableField("remark_")
     @ApiModelProperty(value = "备注")
+    @JsonIgnore
     private String remark;  //备注
 
 
@@ -322,10 +325,26 @@ public class MusicSheet extends BaseEntity {
 	    return this.remark;
 	}
 
+    @JsonIgnore
 	public int pageNo;
+
+    @JsonIgnore
     public int pageSize;
+
+    @JsonIgnore
     public String search;
 
+    public List<MusicSheetAccompaniment> getBackground() {
+        return background;
+    }
+
+    public void setBackground(List<MusicSheetAccompaniment> background) {
+        this.background = background;
+    }
+
+    @ApiModelProperty(value = "mp3关联的主音或者伴奏文件")
+    public List<MusicSheetAccompaniment> background; //mp3关联的主音或者伴奏文件
+
     public String getSearch() {
         return search;
     }

+ 208 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TeacherFreeTime.java

@@ -0,0 +1,208 @@
+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 io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 老师可排课时间表(TeacherFreeTime)表实体类
+ *
+ * @author zx
+ * @since 2022-03-25 10:04:27
+ */
+@ApiModel(value = "teacher_free_time-老师可排课时间表")
+public class TeacherFreeTime implements Serializable {
+    @TableId(value = "id_", type = IdType.AUTO)
+    @ApiModelProperty(value = "主键;")
+    private Long id;
+
+    @TableField("teacher_id_")
+    @ApiModelProperty(value = "老师编号;")
+    private Long teacherId;
+
+    @NotNull(message = "课间休息分钟数不可为空")
+    @TableField("free_minutes_")
+    @ApiModelProperty(value = "课间休息分钟数")
+    private Integer freeMinutes;
+
+    @NotNull(message = "单课时分钟数不可为空")
+    @TableField("course_minutes_")
+    @ApiModelProperty(value = "单课时分钟数")
+    private Integer courseMinutes;
+
+    @TableField("skip_holiday_flag_")
+    @ApiModelProperty(value = "是否跳过节假日1是0否")
+    private Boolean skipHolidayFlag = false;
+
+    @NotBlank(message = "声部单课时金额不可为空")
+    @TableField("subject_price_")
+    @ApiModelProperty(value = "声部单课时金额:[{'id':1,'price':100.1}]")
+    private String subjectPrice;
+
+    @TableField("monday_")
+    @ApiModelProperty(value = "周一;数据结构[{'startTime':'08:00:00'','endTime':'08:30:00'}];")
+    private String monday;
+
+    @TableField("tuesday_")
+    @ApiModelProperty(value = "周二;")
+    private String tuesday;
+
+    @TableField("wednesday_")
+    @ApiModelProperty(value = "周三;")
+    private String wednesday;
+
+    @TableField("thursday_")
+    @ApiModelProperty(value = "周四;")
+    private String thursday;
+
+    @TableField("friday_")
+    @ApiModelProperty(value = "周五;")
+    private String friday;
+
+    @TableField("saturday_")
+    @ApiModelProperty(value = "周六;")
+    private String saturday;
+
+    @TableField("sunday_")
+    @ApiModelProperty(value = "周日;")
+    private String sunday;
+
+    @TableField("create_time_")
+    @ApiModelProperty(value = "创建时间;")
+    private Date createTime;
+
+    @TableField("update_time_")
+    @ApiModelProperty(value = "修改时间;")
+    private Date updateTime;
+
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(Long teacherId) {
+        this.teacherId = teacherId;
+    }
+
+    public Integer getFreeMinutes() {
+        return freeMinutes;
+    }
+
+    public void setFreeMinutes(Integer freeMinutes) {
+        this.freeMinutes = freeMinutes;
+    }
+
+    public Integer getCourseMinutes() {
+        return courseMinutes;
+    }
+
+    public void setCourseMinutes(Integer courseMinutes) {
+        this.courseMinutes = courseMinutes;
+    }
+
+    public Boolean getSkipHolidayFlag() {
+        return skipHolidayFlag;
+    }
+
+    public void setSkipHolidayFlag(Boolean skipHolidayFlag) {
+        this.skipHolidayFlag = skipHolidayFlag;
+    }
+
+    public String getSubjectPrice() {
+        return subjectPrice;
+    }
+
+    public void setSubjectPrice(String subjectPrice) {
+        this.subjectPrice = subjectPrice;
+    }
+
+    public String getMonday() {
+        return monday;
+    }
+
+    public void setMonday(String monday) {
+        this.monday = monday;
+    }
+
+    public String getTuesday() {
+        return tuesday;
+    }
+
+    public void setTuesday(String tuesday) {
+        this.tuesday = tuesday;
+    }
+
+    public String getWednesday() {
+        return wednesday;
+    }
+
+    public void setWednesday(String wednesday) {
+        this.wednesday = wednesday;
+    }
+
+    public String getThursday() {
+        return thursday;
+    }
+
+    public void setThursday(String thursday) {
+        this.thursday = thursday;
+    }
+
+    public String getFriday() {
+        return friday;
+    }
+
+    public void setFriday(String friday) {
+        this.friday = friday;
+    }
+
+    public String getSaturday() {
+        return saturday;
+    }
+
+    public void setSaturday(String saturday) {
+        this.saturday = saturday;
+    }
+
+    public String getSunday() {
+        return sunday;
+    }
+
+    public void setSunday(String sunday) {
+        this.sunday = sunday;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+}
+

+ 29 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/PeriodEnum.java

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

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

@@ -8,6 +8,8 @@ import com.yonge.cooleshow.biz.dal.enums.AuditStatusEnum;
 import com.yonge.cooleshow.biz.dal.queryInfo.ImGroupMemberAuditQueryInfo;
 import com.yonge.cooleshow.common.page.PageInfo;
 
+import java.util.List;
+
 /**
  * (ImGroupMemberAudit)表服务接口
  *
@@ -35,8 +37,8 @@ public interface ImGroupMemberAuditService extends IService<ImGroupMemberAudit>
     * @author zx
     * @date 2022/3/22 19:58
     */
-    void applyAudit(Long auditId, AuditStatusEnum auditStatus) throws Exception;
+    void applyAudit(String auditId, AuditStatusEnum auditStatus,Long groupId) throws Exception;
 
-    PageInfo<ImGroupMemberAudit> queryPage(ImGroupMemberAuditQueryInfo queryInfo);
+    List<ImGroupMemberAudit> queryAll(ImGroupMemberAuditQueryInfo queryInfo);
 }
 

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

@@ -3,8 +3,6 @@ package com.yonge.cooleshow.biz.dal.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.yonge.cooleshow.biz.dal.dao.ImGroupDao;
 import com.yonge.cooleshow.biz.dal.entity.ImGroup;
-import com.yonge.cooleshow.common.page.PageInfo;
-
 import java.util.List;
 import java.util.Map;
 

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

@@ -0,0 +1,8 @@
+package com.yonge.cooleshow.biz.dal.service;
+
+import com.yonge.cooleshow.biz.dal.entity.MemberPriceSettings;
+import com.yonge.cooleshow.common.service.BaseService;
+
+public interface MemberPriceSettingsService extends BaseService<Integer, MemberPriceSettings> {
+
+}

+ 26 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/TeacherFreeTimeService.java

@@ -0,0 +1,26 @@
+package com.yonge.cooleshow.biz.dal.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yonge.cooleshow.biz.dal.dao.TeacherFreeTimeDao;
+import com.yonge.cooleshow.biz.dal.entity.TeacherFreeTime;
+
+/**
+ * 老师可排课时间表(TeacherFreeTime)表服务接口
+ *
+ * @author zx
+ * @since 2022-03-25 10:04:27
+ */
+public interface TeacherFreeTimeService extends IService<TeacherFreeTime> {
+
+    TeacherFreeTimeDao getDao();
+
+    /**
+    * @description: 更新陪练课排课设置
+     * @param teacherFreeTime
+    * @return void
+    * @author zx
+    * @date 2022/3/25 10:18
+    */
+    void upSet(TeacherFreeTime teacherFreeTime);
+}
+

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

@@ -5,11 +5,14 @@ import com.baomidou.mybatisplus.extension.service.IService;
 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;
+import com.yonge.cooleshow.biz.dal.entity.Subject;
 import com.yonge.cooleshow.biz.dal.entity.Teacher;
 import com.yonge.cooleshow.biz.dal.vo.TeacherVo;
 import com.yonge.cooleshow.biz.dal.vo.UserSetVo;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 
+import java.util.List;
+
 /**
  * 教师表 服务类
  * @author liweifan
@@ -46,4 +49,13 @@ public interface TeacherService extends IService<Teacher>  {
      * @updateTime 2022/3/22 11:04
      */
     HttpResponseResult<Boolean> openLive(Long id);
+
+    /**
+    * @description: 获取老师可授课声部列表
+     * @param userId
+    * @return com.yonge.cooleshow.common.entity.HttpResponseResult<java.util.List<com.yonge.cooleshow.biz.dal.entity.Subject>>
+    * @author zx
+    * @date 2022/3/25 09:37
+    */
+    List<Subject> querySubject(Long userId);
 }

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

@@ -6,6 +6,7 @@ import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dao.ImGroupMemberAuditDao;
 import com.yonge.cooleshow.biz.dal.entity.ImGroup;
+import com.yonge.cooleshow.biz.dal.entity.ImGroupMember;
 import com.yonge.cooleshow.biz.dal.entity.ImGroupMemberAudit;
 import com.yonge.cooleshow.biz.dal.enums.AuditStatusEnum;
 import com.yonge.cooleshow.biz.dal.queryInfo.ImGroupMemberAuditQueryInfo;
@@ -23,6 +24,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * (ImGroupMemberAudit)表服务实现类
@@ -90,18 +92,11 @@ public class ImGroupMemberAuditServiceImpl extends ServiceImpl<ImGroupMemberAudi
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void applyAudit(Long auditId, AuditStatusEnum auditStatus) throws Exception {
+    public void applyAudit(String auditIds, AuditStatusEnum auditStatus,Long groupId) throws Exception {
         if(auditStatus == AuditStatusEnum.AUDITING ){
             throw new BizException("操作失败:审核状态异常");
         }
-        ImGroupMemberAudit imGroupMemberAudit = baseMapper.selectById(auditId);
-        if(Objects.isNull(imGroupMemberAudit)){
-            throw new BizException("审核信息不存在");
-        }
-        if(imGroupMemberAudit.getAuditStatus() != AuditStatusEnum.AUDITING){
-            throw new BizException("该入群申请已审核,请勿重复提交");
-        }
-        ImGroup imGroup = imGroupService.getById(imGroupMemberAudit.getGroupId());
+        ImGroup imGroup = imGroupService.getById(groupId);
         if(Objects.isNull(imGroup)){
             throw new BizException("群组信息不存在");
         }
@@ -109,14 +104,12 @@ public class ImGroupMemberAuditServiceImpl extends ServiceImpl<ImGroupMemberAudi
         if(!sysUser.getId().equals(imGroup.getCreateBy())){
             throw new BizException("操作失败:您没有审核权限");
         }
-        imGroupMemberAudit.setAuditStatus(auditStatus);
-        imGroupMemberAudit.setUpdateTime(new Date());
-        baseMapper.updateById(imGroupMemberAudit);
+        //修改审核状态
+        baseMapper.batchUpdateAuditStatus(auditIds,auditStatus.getCode());
         if(auditStatus == AuditStatusEnum.OPEN){
-            //处理本地群成员
-            List<GroupMember> groupMembers = imGroupMemberService.initGroupMember(imGroup.getId(),
-                    imGroupMemberAudit.getUserId(), false,
-                    imGroupMemberAudit.getRoleType());
+            List<ImGroupMemberAudit> imGroupMemberAudit = baseMapper.findByIds(auditIds);
+            Set<Long> userIds = imGroupMemberAudit.stream().map(e -> e.getUserId()).collect(Collectors.toSet());
+            List<GroupMember> groupMembers = imGroupMemberService.initGroupMembers(groupId,userIds, ImGroupMember.ImGroupMemberRoleType.STUDENT);
             //同步群成员数量
             imGroupService.syncGroupMemberNum(imGroup.getId());
             //加入融云群
@@ -125,10 +118,8 @@ public class ImGroupMemberAuditServiceImpl extends ServiceImpl<ImGroupMemberAudi
     }
 
     @Override
-    public PageInfo<ImGroupMemberAudit> queryPage(ImGroupMemberAuditQueryInfo queryInfo) {
-        Page<ImGroupMemberAudit> pageInfo = PageUtil.getPage(queryInfo.getPage(), queryInfo.getRows());
-        pageInfo.setDesc("id_");
-        return PageUtil.pageInfo(baseMapper.queryPage(pageInfo,queryInfo));
+    public List<ImGroupMemberAudit> queryAll(ImGroupMemberAuditQueryInfo queryInfo) {
+        return baseMapper.queryAll(queryInfo);
     }
 }
 

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

@@ -6,10 +6,7 @@ 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.biz.dal.config.RongCloudConfig;
-import com.yonge.cooleshow.biz.dal.dao.CourseScheduleStudentPaymentDao;
-import com.yonge.cooleshow.biz.dal.dao.CourseScheduleTeacherSalaryDao;
-import com.yonge.cooleshow.biz.dal.dao.ImGroupDao;
-import com.yonge.cooleshow.biz.dal.dao.TeacherDao;
+import com.yonge.cooleshow.biz.dal.dao.*;
 import com.yonge.cooleshow.biz.dal.dto.BasicUserInfo;
 import com.yonge.cooleshow.biz.dal.entity.CourseGroup;
 import com.yonge.cooleshow.biz.dal.entity.ImGroup;
@@ -53,6 +50,8 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
     @Resource
     private ImGroupMemberService imGroupMemberService;
     @Resource
+    private ImGroupMemberAuditDao imGroupMemberAuditDao;
+    @Resource
     private SysUserFeignService sysUserFeignService;
     @Resource
     private CourseScheduleStudentPaymentDao courseScheduleStudentPaymentDao;
@@ -144,6 +143,8 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
         if(!sysUser.getId().equals(imGroup.getCreateBy())){
             throw new BizException("操作失败:您没有操作权限");
         }
+        //删除入群申请
+        imGroupMemberAuditDao.delByGroupId(groupId);
         //获取所有群成员
         List<GroupMember> groupMembers = imGroupMemberService.getDao().queryGroupMember(groupId);
         //销毁成功,删除群

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

@@ -0,0 +1,23 @@
+package com.yonge.cooleshow.biz.dal.service.impl;
+
+import com.yonge.cooleshow.common.dal.BaseDAO;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.yonge.cooleshow.common.service.impl.BaseServiceImpl;
+import org.springframework.stereotype.Service;
+
+import com.yonge.cooleshow.biz.dal.entity.MemberPriceSettings;
+import com.yonge.cooleshow.biz.dal.service.MemberPriceSettingsService;
+import com.yonge.cooleshow.biz.dal.dao.MemberPriceSettingsDao;
+
+@Service
+public class MemberPriceSettingsServiceImpl extends BaseServiceImpl<Integer, MemberPriceSettings>  implements MemberPriceSettingsService {
+	
+	@Autowired
+	private MemberPriceSettingsDao memberPriceSettingsDao;
+
+	@Override
+	public BaseDAO<Integer, MemberPriceSettings> getDAO() {
+		return memberPriceSettingsDao;
+	}
+	
+}

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

@@ -0,0 +1,47 @@
+package com.yonge.cooleshow.biz.dal.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yonge.cooleshow.biz.dal.dao.TeacherFreeTimeDao;
+import com.yonge.cooleshow.biz.dal.entity.TeacherFreeTime;
+import com.yonge.cooleshow.biz.dal.service.TeacherFreeTimeService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.Objects;
+
+/**
+ * 老师可排课时间表(TeacherFreeTime)表服务实现类
+ *
+ * @author zx
+ * @since 2022-03-25 10:04:27
+ */
+@Service("teacherFreeTimeService")
+public class TeacherFreeTimeServiceImpl extends ServiceImpl<TeacherFreeTimeDao, TeacherFreeTime> implements TeacherFreeTimeService {
+
+    private final static Logger log = LoggerFactory.getLogger(TeacherFreeTimeServiceImpl.class);
+
+    @Override
+    public TeacherFreeTimeDao getDao() {
+        return this.baseMapper;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void upSet(TeacherFreeTime teacherFreeTime) {
+        TeacherFreeTime oldTeacherFreeTime = baseMapper.findOne(teacherFreeTime.getTeacherId(),
+                teacherFreeTime.getCourseMinutes(),
+                teacherFreeTime.getFreeMinutes());
+        //删除原有设置
+        if(Objects.nonNull(oldTeacherFreeTime)){
+            baseMapper.deleteById(oldTeacherFreeTime.getId());
+        }
+        Date date = new Date();
+        teacherFreeTime.setCreateTime(date);
+        teacherFreeTime.setUpdateTime(date);
+        baseMapper.insert(teacherFreeTime);
+    }
+}
+

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

@@ -10,6 +10,7 @@ import com.yonge.cooleshow.biz.dal.dao.EmployeeDao;
 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;
+import com.yonge.cooleshow.biz.dal.entity.Subject;
 import com.yonge.cooleshow.biz.dal.entity.TeacherStyleVideo;
 import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
 import com.yonge.cooleshow.biz.dal.enums.TeacherTypeEnum;
@@ -81,6 +82,11 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
         return HttpResponseResult.status(true);
     }
 
+    @Override
+    public List<Subject> querySubject(Long userId) {
+        return baseMapper.querySubject(userId);
+    }
+
     private HttpResponseResult<Boolean> doCreate(TeacherSubmitReq teacherSubmitReq) throws BizException {
         //判断手机号
         SysUser sysUser = employeeDao.queryByPhone(teacherSubmitReq.getPhone());

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

@@ -31,6 +31,13 @@
             #{entity.auditStatus,typeHandler=com.yonge.cooleshow.common.dal.CustomEnumTypeHandler}, NOW(), NOW())
         </foreach>
     </insert>
+    <update id="batchUpdateAuditStatus">
+        UPDATE im_group_member_audit SET audit_status_ = #{auditStatus},update_time_ = NOW()
+        WHERE FIND_IN_SET(id_,#{auditIds})
+    </update>
+    <delete id="delByGroupId">
+        DELETE FROM im_group_member_audit WHERE group_id_ = #{groupId}
+    </delete>
     <select id="findOne" resultMap="BaseResultMap">
         SELECT <include refid="Base_Column_List"/> FROM im_group_member_audit
         <where>
@@ -46,7 +53,7 @@
         </where>
         LIMIT 1
     </select>
-    <select id="queryPage" resultMap="ImGroupMemberAuditDto">
+    <select id="queryAll" resultMap="ImGroupMemberAuditDto">
         SELECT gma.*,su.avatar_,CASE WHEN gma.role_type_ = 'STUDENT' THEN su.username_ ELSE su.real_name_ END username_
         FROM im_group_member_audit gma
         LEFT JOIN sys_user su ON su.id_ = gma.user_id_
@@ -61,6 +68,10 @@
                 AND gma.user_id_ = #{params.userId}
             </if>
         </where>
+        ORDER BY gma.id_ DESC
+    </select>
+    <select id="findByIds" resultMap="BaseResultMap">
+        SELECT <include refid="Base_Column_List"/> FROM im_group_member_audit WHERE FIND_IN_SET(id_,#{auditIds})
     </select>
 
 </mapper>

+ 86 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/MemberPriceSettingsMapper.xml

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

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

@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.yonge.cooleshow.biz.dal.dao.TeacherFreeTimeDao">
+    <resultMap id="BaseResultMap" type="com.yonge.cooleshow.biz.dal.entity.TeacherFreeTime">
+        <id column="id_" jdbcType="INTEGER" property="id"/>
+        <result column="teacher_id_" jdbcType="INTEGER" property="teacherId"/>
+        <result column="free_minutes_" jdbcType="INTEGER" property="freeMinutes"/>
+        <result column="course_minutes_" jdbcType="INTEGER" property="courseMinutes"/>
+        <result column="skip_holiday_flag_" property="skipHolidayFlag"/>
+        <result column="subject_price_" jdbcType="VARCHAR" property="subjectPrice"/>
+        <result column="monday_" jdbcType="VARCHAR" property="monday"/>
+        <result column="tuesday_" jdbcType="VARCHAR" property="tuesday"/>
+        <result column="wednesday_" jdbcType="VARCHAR" property="wednesday"/>
+        <result column="thursday_" jdbcType="VARCHAR" property="thursday"/>
+        <result column="friday_" jdbcType="VARCHAR" property="friday"/>
+        <result column="saturday_" jdbcType="VARCHAR" property="saturday"/>
+        <result column="sunday_" jdbcType="VARCHAR" property="sunday"/>
+        <result column="create_time_" jdbcType="TIMESTAMP" property="createTime"/>
+        <result column="update_time_" jdbcType="TIMESTAMP" property="updateTime"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id_
+        , teacher_id_, free_minutes_, course_minutes_, skip_holiday_flag_, subject_price_, monday_, tuesday_, wednesday_, thursday_, friday_, saturday_, sunday_, create_time_, update_time_
+    </sql>
+
+    <insert id="insertBatch" keyColumn="id_" keyProperty="id" useGeneratedKeys="true"
+            parameterType="com.yonge.cooleshow.biz.dal.entity.TeacherFreeTime">
+        insert into teacher_free_time(teacher_id_, free_minutes_, course_minutes_, skip_holiday_flag_, subject_price_,
+        monday_, tuesday_, wednesday_, thursday_, friday_, saturday_, sunday_, create_time_, update_time_)
+        values
+        <foreach collection="entities" item="entity" separator=",">
+            (#{entity.teacherId}, #{entity.freeMinutes}, #{entity.courseMinutes}, #{entity.skipHolidayFlag},
+            #{entity.subjectPrice}, #{entity.monday}, #{entity.tuesday}, #{entity.wednesday}, #{entity.thursday},
+            #{entity.friday}, #{entity.saturday}, #{entity.sunday}, #{entity.createTime}, #{entity.updateTime})
+        </foreach>
+    </insert>
+    <select id="findOne" resultMap="BaseResultMap">
+        SELECT <include refid="Base_Column_List"/>
+        FROM teacher_free_time WHERE teacher_id_ = #{teacherId}
+        AND free_minutes_ = #{freeMinutes}
+        AND course_minutes_ = #{courseMinutes} LIMIT 1
+    </select>
+
+</mapper>

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

@@ -112,4 +112,9 @@
         ) b on t.user_id_ = b.user_id_
         where t.user_id_ = #{userId}
     </select>
+    <select id="querySubject" resultMap="com.yonge.cooleshow.biz.dal.dao.SubjectDao.Subject">
+        SELECT s.* FROM teacher t
+        LEFT JOIN `subject` s ON FIND_IN_SET(s.id_,t.subject_id_)
+        WHERE t.user_id_ = #{userId}
+    </select>
 </mapper>

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

@@ -58,7 +58,7 @@ public class ImGroupMemberController extends BaseController {
     @ApiOperation("获取群成员列表")
     @PostMapping(value = "/queryAll")
     public HttpResponseResult<List<ImGroupMember>> queryAll(@RequestBody Map<String,Object> params) throws Exception {
-        if(Objects.isNull(params.get("search")) || Objects.isNull(params.get("groupId"))){
+        if(Objects.isNull(params.get("groupId"))){
             throw new BizException("参数校验失败");
         }
         List<ImGroupMember> iPage = imGroupMemberService.getBaseMapper().selectList(Wrappers.<ImGroupMember>query().lambda()

+ 20 - 7
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/ImGroupMemberAuditController.java

@@ -13,6 +13,8 @@ import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.exception.BizException;
 import com.yonge.cooleshow.common.page.PageInfo;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -21,6 +23,8 @@ import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
 import javax.validation.Valid;
+import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 
 /**
@@ -49,20 +53,29 @@ public class ImGroupMemberAuditController extends BaseController {
         return succeed();
     }
 
-    @ApiOperation("申请入群审核")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "auditIds", dataType = "String", value = "审核编号列表",required = true),
+            @ApiImplicitParam(name = "auditStatus", dataType = "String", value = "审核状态",required = true),
+            @ApiImplicitParam(name = "groupId", dataType = "Long", value = "审核状态",required = true)
+    })
+    @ApiOperation("申请入群批量审核")
     @PostMapping(value = "/applyAudit")
-    public HttpResponseResult applyAudit(@RequestBody ImGroupMemberAudit audit) throws Exception {
-        if(Objects.isNull(audit.getId()) || Objects.isNull(audit.getAuditStatus())){
+    public HttpResponseResult applyAudit(@RequestBody Map<String,Object> params) throws Exception {
+        if(Objects.isNull(params.get("auditIds"))
+                || Objects.isNull(params.get("auditStatus"))
+                || Objects.isNull(params.get("groupId"))){
             throw new BizException("参数校验失败");
         }
-        imGroupMemberAuditService.applyAudit(audit.getId(),audit.getAuditStatus());
+        imGroupMemberAuditService.applyAudit(params.get("auditIds").toString(),
+                AuditStatusEnum.valueOf(params.get("auditStatus").toString()),
+                Long.parseLong(params.get("groupId").toString()));
         return succeed();
     }
 
     @ApiOperation("申请入群列表")
-    @PostMapping(value = "/queryPage")
-    public HttpResponseResult<PageInfo<ImGroupMemberAudit>> queryPage(@Valid @RequestBody ImGroupMemberAuditQueryInfo queryInfo){
-        return succeed(imGroupMemberAuditService.queryPage(queryInfo));
+    @PostMapping(value = "/queryAll")
+    public HttpResponseResult<List<ImGroupMemberAudit>> queryAll(@Valid @RequestBody ImGroupMemberAuditQueryInfo queryInfo){
+        return succeed(imGroupMemberAuditService.queryAll(queryInfo));
     }
 
 }

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

@@ -58,7 +58,7 @@ public class ImGroupMemberController extends BaseController {
     @ApiOperation("获取群成员列表")
     @PostMapping(value = "/queryAll")
     public HttpResponseResult<List<ImGroupMember>> queryAll(@RequestBody Map<String,Object> params) throws Exception {
-        if(Objects.isNull(params.get("search")) || Objects.isNull(params.get("groupId"))){
+        if(Objects.isNull(params.get("groupId"))){
             throw new BizException("参数校验失败");
         }
         List<ImGroupMember> iPage = imGroupMemberService.getBaseMapper().selectList(Wrappers.<ImGroupMember>query().lambda()

+ 22 - 11
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherController.java

@@ -1,22 +1,23 @@
 package com.yonge.cooleshow.teacher.controller;
 
-import com.yonge.cooleshow.biz.dal.dto.req.UserSetReq;
-import com.yonge.cooleshow.biz.dal.vo.TeacherHomeVo;
-import com.yonge.cooleshow.biz.dal.vo.TeacherVo;
-import com.yonge.cooleshow.biz.dal.vo.UserSetVo;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.*;
-
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.biz.dal.entity.Subject;
 import com.yonge.cooleshow.biz.dal.entity.Teacher;
 import com.yonge.cooleshow.biz.dal.service.TeacherService;
+import com.yonge.cooleshow.biz.dal.vo.TeacherHomeVo;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
 
 @RestController
 @RequestMapping("/Teacher")
@@ -64,4 +65,14 @@ public class TeacherController extends BaseController {
         }
         return  teacherService.openLive(user.getId());
     }
+
+    @ApiOperation(value = "获取老师可授课声部列表")
+    @PostMapping("/querySubject")
+    public HttpResponseResult<List<Subject>> querySubject(){
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        return succeed(teacherService.querySubject(user.getId()));
+    }
 }

+ 66 - 0
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherFreeTimeController.java

@@ -0,0 +1,66 @@
+package com.yonge.cooleshow.teacher.controller;
+
+
+import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.biz.dal.dto.PracticeTimesSetting;
+import com.yonge.cooleshow.biz.dal.entity.Subject;
+import com.yonge.cooleshow.biz.dal.entity.TeacherFreeTime;
+import com.yonge.cooleshow.biz.dal.service.TeacherFreeTimeService;
+import com.yonge.cooleshow.common.controller.BaseController;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.http.HttpStatus;
+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 javax.annotation.Resource;
+import javax.validation.Valid;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 老师可排课时间表(TeacherFreeTime)表控制层
+ *
+ * @author zx
+ * @since 2022-03-25 10:04:26
+ */
+@Api(tags = "老师可排课时间表")
+@RestController
+@RequestMapping("/teacherFreeTime")
+public class TeacherFreeTimeController extends BaseController {
+    /**
+     * 服务对象
+     */
+    @Resource
+    private TeacherFreeTimeService teacherFreeTimeService;
+    @Resource
+    private SysUserFeignService sysUserFeignService;
+
+    @ApiOperation(value = "新增、修改老师陪练课设置")
+    @PostMapping("/upSet")
+    public HttpResponseResult upSet(@Valid @RequestBody TeacherFreeTime teacherFreeTime){
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        teacherFreeTime.setTeacherId(user.getId());
+        teacherFreeTimeService.upSet(teacherFreeTime);
+        return succeed();
+    }
+
+    @ApiOperation(value = "获取老师陪练课设置")
+    @PostMapping("/getDetail")
+    public HttpResponseResult<TeacherFreeTime> detDetail(@Valid @RequestBody PracticeTimesSetting practiceTimesSetting){
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        return succeed(teacherFreeTimeService.getDao().
+                findOne(user.getId(),practiceTimesSetting.getCourseMinutes(),practiceTimesSetting.getFreeMinutes()));
+    }
+}
+