|
@@ -15,12 +15,14 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Propagation;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
+import com.ym.mec.auth.api.entity.SysUser;
|
|
|
import com.ym.mec.biz.dal.dao.ChargeTypeDao;
|
|
|
import com.ym.mec.biz.dal.dao.ClassGroupStudentMapperDao;
|
|
|
import com.ym.mec.biz.dal.dao.MusicGroupBuildLogDao;
|
|
|
import com.ym.mec.biz.dal.dao.MusicGroupDao;
|
|
|
import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderDao;
|
|
|
import com.ym.mec.biz.dal.dao.MusicGroupPaymentEntitiesDao;
|
|
|
+import com.ym.mec.biz.dal.dao.MusicGroupQuitDao;
|
|
|
import com.ym.mec.biz.dal.dao.MusicGroupStudentFeeDao;
|
|
|
import com.ym.mec.biz.dal.dao.MusicGroupSubjectGoodsGroupDao;
|
|
|
import com.ym.mec.biz.dal.dao.MusicGroupSubjectPlanDao;
|
|
@@ -30,23 +32,29 @@ import com.ym.mec.biz.dal.dao.TeacherDao;
|
|
|
import com.ym.mec.biz.dal.dto.BasicUserDto;
|
|
|
import com.ym.mec.biz.dal.dto.MusicCardDto;
|
|
|
import com.ym.mec.biz.dal.dto.SubFeeSettingDto;
|
|
|
+import com.ym.mec.biz.dal.entity.ApprovalStatus;
|
|
|
import com.ym.mec.biz.dal.entity.MusicGroup;
|
|
|
import com.ym.mec.biz.dal.entity.MusicGroupBuildLog;
|
|
|
import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender;
|
|
|
import com.ym.mec.biz.dal.entity.MusicGroupPaymentEntities;
|
|
|
+import com.ym.mec.biz.dal.entity.MusicGroupQuit;
|
|
|
import com.ym.mec.biz.dal.entity.MusicGroupStudentFee;
|
|
|
import com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus;
|
|
|
import com.ym.mec.biz.dal.entity.MusicGroupSubjectGoodsGroup;
|
|
|
import com.ym.mec.biz.dal.entity.MusicGroupSubjectPlan;
|
|
|
import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
|
|
|
+import com.ym.mec.biz.dal.entity.StudentRegistration;
|
|
|
import com.ym.mec.biz.dal.enums.ClassGroupStudentStatusEnum;
|
|
|
import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
|
|
|
import com.ym.mec.biz.dal.enums.DealStatusEnum;
|
|
|
import com.ym.mec.biz.dal.enums.MusicGroupStatusEnum;
|
|
|
import com.ym.mec.biz.dal.enums.OrderTypeEnum;
|
|
|
+import com.ym.mec.biz.dal.enums.PlatformCashAccountDetailTypeEnum;
|
|
|
import com.ym.mec.biz.dal.page.MusicGroupQueryInfo;
|
|
|
import com.ym.mec.biz.service.MusicGroupService;
|
|
|
import com.ym.mec.biz.service.PayService;
|
|
|
+import com.ym.mec.biz.service.StudentRegistrationService;
|
|
|
+import com.ym.mec.biz.service.SysUserCashAccountDetailService;
|
|
|
import com.ym.mec.biz.service.SysUserCashAccountService;
|
|
|
import com.ym.mec.common.dal.BaseDAO;
|
|
|
import com.ym.mec.common.entity.ImGroupMember;
|
|
@@ -86,19 +94,28 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
|
|
|
|
|
|
@Autowired
|
|
|
private MusicGroupStudentFeeDao musicGroupStudentFeeDao;
|
|
|
-
|
|
|
+
|
|
|
@Autowired
|
|
|
private ClassGroupStudentMapperDao classGroupStudentMapperDao;
|
|
|
-
|
|
|
+
|
|
|
@Autowired
|
|
|
private StudentPaymentOrderDao studentPaymentOrderDao;
|
|
|
-
|
|
|
+
|
|
|
@Autowired
|
|
|
private SysUserCashAccountService sysUserCashAccountService;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private PayService payService;
|
|
|
-
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private SysUserCashAccountDetailService sysUserCashAccountDetailService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private MusicGroupQuitDao musicGroupQuitDao;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private StudentRegistrationService studentRegistrationService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private PayService payService;
|
|
|
+
|
|
|
@Override
|
|
|
public BaseDAO<String, MusicGroup> getDAO() {
|
|
|
return musicGroupDao;
|
|
@@ -111,7 +128,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
|
|
|
List<MusicGroupPaymentEntities> musicGroupPaymentEntities = subFeeSettingDto.getMusicGroupPaymentEntities();
|
|
|
List<MusicGroupSubjectGoodsGroup> musicGroupSubjectGoodsGroups = subFeeSettingDto.getMusicGroupSubjectGoodsGroups();
|
|
|
List<MusicGroupSubjectPlan> musicGroupSubjectPlans = subFeeSettingDto.getMusicGroupSubjectPlans();
|
|
|
- String musicGroupId = idGeneratorService.generatorId()+"";
|
|
|
+ String musicGroupId = idGeneratorService.generatorId() + "";
|
|
|
musicGroup.setId(musicGroupId);
|
|
|
// 保存乐团基本信息
|
|
|
musicGroupDao.insert(musicGroup);
|
|
@@ -148,7 +165,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
|
|
|
musicGroupSubjectGoodsGroupDao.insert(e);
|
|
|
});
|
|
|
// 新增聊天群
|
|
|
-// ImGroupModel imGroupModel = new ImGroupModel(musicGroupId, musicGroup.getName());
|
|
|
+ // ImGroupModel imGroupModel = new ImGroupModel(musicGroupId, musicGroup.getName());
|
|
|
// 教务老师和运营主管加入群组
|
|
|
ImGroupMember[] imGroupMembers = { new ImGroupMember(musicGroup.getTeamTeacherId().toString()),
|
|
|
new ImGroupMember(musicGroup.getEducationalTeacherId().toString()) };
|
|
@@ -192,22 +209,25 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
|
|
|
} else {
|
|
|
throw new BizException("乐团当前状态是{},不能取消", musicGroup.getStatus().getMsg());
|
|
|
}
|
|
|
-
|
|
|
- //查询是否有中间状态的缴费信息
|
|
|
+
|
|
|
+ // 查询是否有中间状态的缴费信息
|
|
|
List<StudentPaymentOrder> studentPaymentOrders = studentPaymentOrderDao.queryByDealStatus(musicGroupId, OrderTypeEnum.APPLY, DealStatusEnum.ING);
|
|
|
-
|
|
|
- if(studentPaymentOrders != null && studentPaymentOrders.size()>0){
|
|
|
+
|
|
|
+ if (studentPaymentOrders != null && studentPaymentOrders.size() > 0) {
|
|
|
throw new BizException("缴费存在交易中的数据,不能取消乐团");
|
|
|
}
|
|
|
-
|
|
|
- //查询已缴费信息
|
|
|
+
|
|
|
+ // 查询已缴费信息
|
|
|
studentPaymentOrders = studentPaymentOrderDao.queryByDealStatus(musicGroupId, OrderTypeEnum.APPLY, DealStatusEnum.SUCCESS);
|
|
|
|
|
|
// 退费
|
|
|
- for(StudentPaymentOrder order : studentPaymentOrders){
|
|
|
+ for (StudentPaymentOrder order : studentPaymentOrders) {
|
|
|
sysUserCashAccountService.updateBalance(order.getUserId(), order.getActualAmount());
|
|
|
+ // 增加交易流水
|
|
|
+ sysUserCashAccountDetailService.addCashAccountDetail(order.getUserId(), order.getActualAmount(), "", "", PlatformCashAccountDetailTypeEnum.REFUNDS,
|
|
|
+ null, DealStatusEnum.SUCCESS, "取消乐团");
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
return true;
|
|
|
}
|
|
|
|
|
@@ -299,18 +319,63 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public boolean quitMusicGroup(String musicGroupId, Integer userId) {
|
|
|
+ @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
|
|
|
+ public boolean applyQuitMusicGroup(String musicGroupId, SysUser sysUser) {
|
|
|
MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
|
|
|
if (musicGroup == null) {
|
|
|
throw new BizException("乐团不存在");
|
|
|
}
|
|
|
-
|
|
|
- classGroupStudentMapperDao.updateUserStatusByMusicGroupId(musicGroupId, userId, ClassGroupStudentStatusEnum.QUIT);
|
|
|
-
|
|
|
+
|
|
|
+ MusicGroupQuit musicGroupQuit = new MusicGroupQuit();
|
|
|
+ musicGroupQuit.setCreateTime(new Date());
|
|
|
+ musicGroupQuit.setJoinDate(sysUser.getCreateTime());
|
|
|
+ musicGroupQuit.setMusicGroupId(musicGroupId);
|
|
|
+ musicGroupQuit.setUserId(sysUser.getId());
|
|
|
+ musicGroupQuit.setStatus(ApprovalStatus.PROCESSING);
|
|
|
+
|
|
|
+ musicGroupQuitDao.insert(musicGroupQuit);
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
+ @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
|
|
|
+ public boolean approveQuitMusicGroup(Long id, ApprovalStatus status, String reason) {
|
|
|
+ MusicGroupQuit musicGroupQuit = musicGroupQuitDao.get(id);
|
|
|
+ if (musicGroupQuit != null) {
|
|
|
+
|
|
|
+ String musicGroupId = musicGroupQuit.getMusicGroupId();
|
|
|
+ Integer userId = musicGroupQuit.getUserId();
|
|
|
+
|
|
|
+ musicGroupQuit.setStatus(status);
|
|
|
+ musicGroupQuit.setReason(reason);
|
|
|
+ musicGroupQuit.setQuitDate(new Date());
|
|
|
+ musicGroupQuitDao.update(musicGroupQuit);
|
|
|
+
|
|
|
+ if (status == ApprovalStatus.APPROVED) {
|
|
|
+ classGroupStudentMapperDao.updateUserStatusByMusicGroupId(musicGroupId, userId, ClassGroupStudentStatusEnum.QUIT);
|
|
|
+
|
|
|
+ // 判断乐器是否是租赁
|
|
|
+ StudentRegistration studentRegistration = studentRegistrationService.queryByUserIdAndMusicGroupId(userId, musicGroupId);
|
|
|
+ if (studentRegistration == null) {
|
|
|
+ throw new BizException("用户注册信息不存在");
|
|
|
+ }
|
|
|
+ Integer subjectId = studentRegistration.getActualSubjectId();
|
|
|
+ MusicGroupSubjectPlan musicGroupSubjectPlan = musicGroupSubjectPlanDao.getMusicOneSubjectClassPlan(musicGroupId, subjectId);
|
|
|
+ if (musicGroupSubjectPlan == null) {
|
|
|
+ throw new BizException("乐团声部费用设置不存在");
|
|
|
+ }
|
|
|
+ if (musicGroupSubjectPlan.getDepositFee().doubleValue() > 0) {
|
|
|
+ // 增加交易流水
|
|
|
+ sysUserCashAccountDetailService.addCashAccountDetail(userId, musicGroupSubjectPlan.getDepositFee(), "", "",
|
|
|
+ PlatformCashAccountDetailTypeEnum.REFUNDS, null, DealStatusEnum.SUCCESS, "退出乐团");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
|
|
|
public Map renew(String musicGroupId, Integer userId) {
|
|
|
|
|
|
MusicGroup musicGroup = this.get(musicGroupId);
|
|
@@ -345,39 +410,39 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
|
|
|
public PageInfo<MusicGroup> queryMusicGroupPage(MusicGroupQueryInfo queryInfo) {
|
|
|
PageInfo<MusicGroup> musicGroupPageInfo = queryPage(queryInfo);
|
|
|
List<MusicGroup> musicGroupList = musicGroupPageInfo.getRows();
|
|
|
- //获取学校编号列表
|
|
|
+ // 获取学校编号列表
|
|
|
Set<Integer> schoolIds = musicGroupList.stream().map(e -> e.getSchoolId()).collect(Collectors.toSet());
|
|
|
- List<Map<Integer,String>> schoolNames = schoolDao.queryNameByIds(schoolIds);
|
|
|
- //获取相关学校名称map
|
|
|
- Map<Integer,String> schoolNameMap = MapUtil.convertMybatisMap(schoolNames);
|
|
|
+ List<Map<Integer, String>> schoolNames = schoolDao.queryNameByIds(schoolIds);
|
|
|
+ // 获取相关学校名称map
|
|
|
+ Map<Integer, String> schoolNameMap = MapUtil.convertMybatisMap(schoolNames);
|
|
|
|
|
|
- //获取教务老师编号列表
|
|
|
+ // 获取教务老师编号列表
|
|
|
Set<Integer> educationalTeacherIds = musicGroupList.stream().map(e -> e.getEducationalTeacherId()).collect(Collectors.toSet());
|
|
|
- //获取相关老师的名字
|
|
|
- List<Map<Integer,String>> educationalTeacherNames = teacherDao.queryNameByIds(educationalTeacherIds);
|
|
|
- Map<Integer,String> educationalTeacherNameMap = MapUtil.convertMybatisMap(educationalTeacherNames);
|
|
|
+ // 获取相关老师的名字
|
|
|
+ List<Map<Integer, String>> educationalTeacherNames = teacherDao.queryNameByIds(educationalTeacherIds);
|
|
|
+ Map<Integer, String> educationalTeacherNameMap = MapUtil.convertMybatisMap(educationalTeacherNames);
|
|
|
|
|
|
- //获取运营主管编号列表
|
|
|
+ // 获取运营主管编号列表
|
|
|
Set<Integer> teamTeacherIds = musicGroupList.stream().map(e -> e.getTeamTeacherId()).collect(Collectors.toSet());
|
|
|
- List<Map<Integer,String>> teamTeacherNames = teacherDao.queryNameByIds(teamTeacherIds);
|
|
|
- Map<Integer,String> teamTeacherNameMap = MapUtil.convertMybatisMap(teamTeacherNames);
|
|
|
+ List<Map<Integer, String>> teamTeacherNames = teacherDao.queryNameByIds(teamTeacherIds);
|
|
|
+ Map<Integer, String> teamTeacherNameMap = MapUtil.convertMybatisMap(teamTeacherNames);
|
|
|
|
|
|
- //获取乐团编号列表
|
|
|
+ // 获取乐团编号列表
|
|
|
Set<String> musicGroupIds = musicGroupList.stream().map(e -> e.getId()).collect(Collectors.toSet());
|
|
|
- //统计乐团在读人数
|
|
|
- List<Map<String,Long>> payNums = musicGroupDao.countPayNum(musicGroupIds);
|
|
|
- Map<String,Long> payNumMap = MapUtil.convertMybatisMap(payNums);
|
|
|
+ // 统计乐团在读人数
|
|
|
+ List<Map<String, Long>> payNums = musicGroupDao.countPayNum(musicGroupIds);
|
|
|
+ Map<String, Long> payNumMap = MapUtil.convertMybatisMap(payNums);
|
|
|
|
|
|
- //获取收费类型编号列表
|
|
|
+ // 获取收费类型编号列表
|
|
|
Set<Integer> chargeTypeIds = musicGroupList.stream().map(e -> e.getChargeTypeId()).collect(Collectors.toSet());
|
|
|
- List<Map<Integer,String>> chargeTypeNames = chargeTypeDao.queryNameByIds(chargeTypeIds);
|
|
|
- Map<Integer,String> chargeTypeNameMap = MapUtil.convertMybatisMap(chargeTypeNames);
|
|
|
+ List<Map<Integer, String>> chargeTypeNames = chargeTypeDao.queryNameByIds(chargeTypeIds);
|
|
|
+ Map<Integer, String> chargeTypeNameMap = MapUtil.convertMybatisMap(chargeTypeNames);
|
|
|
|
|
|
- musicGroupList.forEach(e->{
|
|
|
+ musicGroupList.forEach(e -> {
|
|
|
e.setSchoolName(schoolNameMap.get(e.getSchoolId()));
|
|
|
e.setEducationalTeacherName(educationalTeacherNameMap.get(e.getEducationalTeacherId()));
|
|
|
e.setTeamTeacherName(teamTeacherNameMap.get(e.getTeamTeacherId()));
|
|
|
- e.setPayNum(payNumMap.get(e.getId())==null?0:payNumMap.get(e.getId()).intValue());
|
|
|
+ e.setPayNum(payNumMap.get(e.getId()) == null ? 0 : payNumMap.get(e.getId()).intValue());
|
|
|
e.setChargeTypeName(chargeTypeNameMap.get(e.getChargeTypeId()));
|
|
|
});
|
|
|
return musicGroupPageInfo;
|