yonge 5 лет назад
Родитель
Сommit
4853c1198a

+ 11 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupService.java

@@ -88,13 +88,22 @@ public interface MusicGroupService extends BaseService<String, MusicGroup> {
 	boolean approveQuitMusicGroup(Long id, ApprovalStatus status, String reason);
 
 	/**
+	 * 一键退团
+	 * @param musicGroupId
+	 * @param userId
+	 * @param reason
+	 * @return
+	 */
+	boolean directQuitMusicGroup(String musicGroupId, Integer userId, String reason);
+
+	/**
 	 *  续费
 	 * @param musicGroupId 乐团编号
 	 * @param userId 用户编号
 	 * @return
 	 */
 	Map renew(String musicGroupId, Integer userId);
-	
+
 	/**
 	 * 学生支付订单
 	 * @param studentPaymentOrder
@@ -124,5 +133,5 @@ public interface MusicGroupService extends BaseService<String, MusicGroup> {
 	 * 修改乐团基本信息
 	 * @param subFeeSettingDto
 	 */
-    void updateBaseInfo(SubFeeSettingDto subFeeSettingDto);
+	void updateBaseInfo(SubFeeSettingDto subFeeSettingDto);
 }

+ 51 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.service.impl;
 
+import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.BasicUserDto;
@@ -93,6 +94,9 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 	@Autowired
 	private PayService payService;
 
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
 	@Override
 	public BaseDAO<String, MusicGroup> getDAO() {
 		return musicGroupDao;
@@ -337,6 +341,53 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 
 	@Override
 	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
+	public boolean directQuitMusicGroup(String musicGroupId, Integer userId, String reason) {
+
+		SysUser sysUser = sysUserFeignService.queryUserById(userId);
+		if (sysUser == null) {
+			throw new BizException("获取用户信息失败");
+		}
+
+		Date date = new Date();
+
+		MusicGroupQuit musicGroupQuit = new MusicGroupQuit();
+		musicGroupQuit.setCreateTime(date);
+		musicGroupQuit.setJoinDate(sysUser.getCreateTime());
+		musicGroupQuit.setMusicGroupId(musicGroupId);
+		musicGroupQuit.setUserId(sysUser.getId());
+		musicGroupQuit.setStatus(ApprovalStatus.APPROVED);
+		musicGroupQuit.setReason(reason);
+		musicGroupQuit.setQuitDate(date);
+
+		musicGroupQuitDao.insert(musicGroupQuit);
+
+		classGroupStudentMapperDao.deleteStudentByMusicGroupId(musicGroupId, userId);
+
+		// 判断乐器是否是租赁
+		StudentRegistration studentRegistration = studentRegistrationService.queryByUserIdAndMusicGroupId(userId, musicGroupId);
+		if (studentRegistration == null) {
+			throw new BizException("用户注册信息不存在");
+		}
+		// 退团
+		studentRegistration.setMusicGroupStatus(ClassGroupStudentStatusEnum.QUIT);
+		studentRegistration.setUpdateTime(date);
+
+		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(), SysUserCashAccountDetailService.MUSIC_GROUP
+					+ musicGroupId, "", 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);

+ 16 - 6
mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupQuitController.java

@@ -27,34 +27,44 @@ public class MusicGroupQuitController extends BaseController {
 
 	@Autowired
 	private MusicGroupService musicGroupService;
-	
+
 	@Autowired
 	private MusicGroupQuitService musicGroupQuitService;
-	
+
 	@Autowired
 	private SysUserFeignService sysUserFeignService;
 
 	@ApiOperation(value = "分页查询")
 	@GetMapping("/queryPage")
-    @PreAuthorize("@pcs.hasPermissions('musicGroupQuit/queryPage')")
+	@PreAuthorize("@pcs.hasPermissions('musicGroupQuit/queryPage')")
 	public HttpResponseResult queryPage(QueryInfo queryInfo) throws Exception {
 		return succeed(musicGroupQuitService.queryPage(queryInfo));
 	}
-	
+
 	@ApiOperation(value = "单查询")
 	@GetMapping("/query")
-    @PreAuthorize("@pcs.hasPermissions('musicGroupQuit/query')")
+	@PreAuthorize("@pcs.hasPermissions('musicGroupQuit/query')")
 	public HttpResponseResult query(Long id) throws Exception {
 		return succeed(musicGroupQuitService.get(id));
 	}
 
 	@ApiOperation(value = "退团")
 	@PostMapping("/quitMusicGroup")
-    @PreAuthorize("@pcs.hasPermissions('musicGroupQuit/quitMusicGroup')")
+	@PreAuthorize("@pcs.hasPermissions('musicGroupQuit/quitMusicGroup')")
 	@ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "退团申请id", required = true, dataType = "Long"),
 			@ApiImplicitParam(name = "status", value = "审批状态(APPROVED, DENIED, PROCESSING)", required = true, dataType = "String"),
 			@ApiImplicitParam(name = "reason", value = "原因", required = true, dataType = "String") })
 	public HttpResponseResult quitMusicGroup(Long id, ApprovalStatus status, String reason) throws Exception {
 		return succeed(musicGroupService.approveQuitMusicGroup(id, status, reason));
 	}
+
+	@ApiOperation(value = "一键退团")
+	@PostMapping("/directQuitMusicGroup")
+	@PreAuthorize("@pcs.hasPermissions('musicGroupQuit/directQuitMusicGroup')")
+	@ApiImplicitParams({ @ApiImplicitParam(name = "musicGroupId", value = "乐团编号", required = true, dataType = "String"),
+			@ApiImplicitParam(name = "userId", value = "用户编号", required = true, dataType = "Integer"),
+			@ApiImplicitParam(name = "reason", value = "原因", required = true, dataType = "String") })
+	public HttpResponseResult directQuitMusicGroup(String musicGroupId, Integer userId, String reason) throws Exception {
+		return succeed(musicGroupService.directQuitMusicGroup(musicGroupId, userId, reason));
+	}
 }