Explorar o código

管乐米需求迭代

zouxuan %!s(int64=3) %!d(string=hai) anos
pai
achega
4e47436e04

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysUserCashAccountLogDao.java

@@ -0,0 +1,8 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.ym.mec.biz.dal.entity.SysUserCashAccountLog;
+import com.ym.mec.common.dal.BaseDAO;
+
+public interface SysUserCashAccountLogDao extends BaseDAO<Long, SysUserCashAccountLog> {
+
+}

+ 274 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysUserCashAccountLog.java

@@ -0,0 +1,274 @@
+package com.ym.mec.biz.dal.entity;
+
+import com.ym.mec.biz.dal.enums.DealStatusEnum;
+import com.ym.mec.biz.dal.enums.PlatformCashAccountDetailTypeEnum;
+import com.ym.mec.biz.dal.enums.TransTypeEnum;
+import io.swagger.annotations.ApiModelProperty;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+import java.math.BigDecimal;
+
+/**
+ * 对应数据库表(sys_user_cash_account_log):
+ */
+public class SysUserCashAccountLog {
+
+	/** 序号 */
+	@ApiModelProperty(value = "序号",required = false)
+	private Long id;
+
+	/** 用户编号 */
+	@ApiModelProperty(value = "用户编号",required = false)
+	private Integer userId;
+
+	@ApiModelProperty(value = "手机号",required = false)
+	private String phone;
+
+	@ApiModelProperty(value = "姓名",required = false)
+	private String username;
+
+	@ApiModelProperty(value = "声部",required = false)
+	private String subjectName;
+
+	/** 交易流水号 */
+	@ApiModelProperty(value = "交易流水号",required = false)
+	private String transNo;
+
+	/** 交易类型 (RECHARGE 充值,WITHDRAW 提现,PAY_FEE 缴费,REFUNDS 退费,FILL_ACCOUNT 人工补账) */
+	@ApiModelProperty(value = "交易类型",required = false)
+	private PlatformCashAccountDetailTypeEnum type;
+
+	/** 交易方式1.微信,2支付宝,3快捷*/
+	@ApiModelProperty(value = "交易方式",required = false)
+	private TransTypeEnum transType;
+
+	/** 交易状态(1,交易中;2,成功交易;-1,交易失败;) */
+	@ApiModelProperty(value = "交易状态",required = false)
+	private DealStatusEnum status;
+
+	/** 交易金额 */
+	@ApiModelProperty(value = "交易金额",required = false)
+	private BigDecimal amount;
+
+	/** 公户金额 */
+	@ApiModelProperty(value = "公户金额",required = false)
+	private BigDecimal comAmount;
+
+	/** 私户金额 */
+	@ApiModelProperty(value = "私户金额",required = false)
+	private BigDecimal perAmount;
+
+	/** 账户可用余额 */
+	@ApiModelProperty(value = "账户可用余额",required = false)
+	private BigDecimal balance;
+
+	/** 描述 */
+	@ApiModelProperty(value = "描述",required = false)
+	private String description;
+
+	/** 后台备注 */
+	@ApiModelProperty(value = "后台备注",required = false)
+	private String comment;
+
+	/** 创建时间 */
+	private java.util.Date createTime;
+
+	/** 修改时间 */
+	private java.util.Date updateTime;
+
+	private String attribute;
+
+	/** 描述 */
+	@ApiModelProperty(value = "支付渠道",required = false)
+	private String channel;
+
+	/** 备注 */
+	@ApiModelProperty(value = "平台账户号",required = false)
+	private String platformAccountNo;
+
+	private String organName;
+
+	/** vip课程后台添加学员时关联的id */
+	private Long groupId;
+
+	public Long getGroupId() {
+		return groupId;
+	}
+
+	public void setGroupId(Long groupId) {
+		this.groupId = groupId;
+	}
+
+	public String getOrganName() {
+		return organName;
+	}
+
+	public void setOrganName(String organName) {
+		this.organName = organName;
+	}
+
+	public String getPhone() {
+		return phone;
+	}
+
+	public void setPhone(String phone) {
+		this.phone = phone;
+	}
+
+	public String getUsername() {
+		return username;
+	}
+
+	public void setUsername(String username) {
+		this.username = username;
+	}
+
+	public String getSubjectName() {
+		return subjectName;
+	}
+
+	public void setSubjectName(String subjectName) {
+		this.subjectName = subjectName;
+	}
+
+	public String getAttribute() {
+		return attribute;
+	}
+
+	public void setAttribute(String attribute) {
+		this.attribute = attribute;
+	}
+
+	public void setId(Long id){
+		this.id = id;
+	}
+
+	public Long getId(){
+		return this.id;
+	}
+
+	public void setUserId(Integer userId){
+		this.userId = userId;
+	}
+
+	public Integer getUserId(){
+		return this.userId;
+	}
+
+	public void setTransNo(String transNo){
+		this.transNo = transNo;
+	}
+
+	public String getTransNo(){
+		return this.transNo;
+	}
+
+	public PlatformCashAccountDetailTypeEnum getType() {
+		return type;
+	}
+
+	public void setType(PlatformCashAccountDetailTypeEnum type) {
+		this.type = type;
+	}
+
+	public DealStatusEnum getStatus() {
+		return status;
+	}
+
+	public void setStatus(DealStatusEnum status) {
+		this.status = status;
+	}
+
+	public BigDecimal getAmount() {
+		return amount;
+	}
+
+	public void setAmount(BigDecimal amount) {
+		this.amount = amount;
+	}
+
+	public BigDecimal getBalance() {
+		return balance;
+	}
+
+	public void setBalance(BigDecimal balance) {
+		this.balance = balance;
+	}
+
+	public void setDescription(String description){
+		this.description = description;
+	}
+
+	public String getDescription(){
+		return this.description;
+	}
+
+	public void setComment(String comment){
+		this.comment = comment;
+	}
+
+	public String getComment(){
+		return this.comment;
+	}
+
+	public void setCreateTime(java.util.Date createTime){
+		this.createTime = createTime;
+	}
+
+	public java.util.Date getCreateTime(){
+		return this.createTime;
+	}
+
+	public void setUpdateTime(java.util.Date updateTime){
+		this.updateTime = updateTime;
+	}
+
+	public java.util.Date getUpdateTime(){
+		return this.updateTime;
+	}
+
+	public TransTypeEnum getTransType() {
+		return transType;
+	}
+
+	public void setTransType(TransTypeEnum transType) {
+		this.transType = transType;
+	}
+
+	public String getChannel() {
+		return channel;
+	}
+
+	public void setChannel(String channel) {
+		this.channel = channel;
+	}
+
+	public String getPlatformAccountNo() {
+		return platformAccountNo;
+	}
+
+	public void setPlatformAccountNo(String platformAccountNo) {
+		this.platformAccountNo = platformAccountNo;
+	}
+
+	public BigDecimal getComAmount() {
+		return comAmount;
+	}
+
+	public void setComAmount(BigDecimal comAmount) {
+		this.comAmount = comAmount;
+	}
+
+	public BigDecimal getPerAmount() {
+		return perAmount;
+	}
+
+	public void setPerAmount(BigDecimal perAmount) {
+		this.perAmount = perAmount;
+	}
+
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
+}

+ 20 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/GroupClassServiceImpl.java

@@ -57,7 +57,7 @@ public class GroupClassServiceImpl implements GroupClassService {
     @Autowired
     private SysUserCashAccountService sysUserCashAccountService;
     @Autowired
-    private StudentPaymentOrderDao studentPaymentOrderDao;
+    private SysUserCashAccountLogDao sysUserCashAccountLogDao;
     @Autowired
     private CoursesGroupDao coursesGroupDao;
     @Autowired
@@ -173,17 +173,30 @@ public class GroupClassServiceImpl implements GroupClassService {
             if (!practiceGroup.getGroupStatus().equals(GroupStatusEnum.NORMAL) || practiceGroup.getCoursesExpireDate().before(now)) {
                 throw new BizException("当前课程组不可关闭");
             }
+            if(Objects.isNull(returnFeeDto.getAmount())){
+                throw new BizException("请确定退费金额");
+            }
+            if (Objects.nonNull(returnFeeDto.getAmount()) && returnFeeDto.getAmount().compareTo(BigDecimal.ZERO) > 0) {
+                Map<String, BigDecimal> studentSurplusCourseFee = practiceGroupService.getStudentSurplusCourseFee(groupId);
+                BigDecimal suplusCourseFee = studentSurplusCourseFee.get("suplusCourseOriginalFee");
+                if(returnFeeDto.getAmount().compareTo(suplusCourseFee) > 0){
+                    throw new BizException("学员最大可退费金额为{}元", suplusCourseFee.toString());
+                }
+                SysUserCashAccountLog sysUserCashAccountLog = new SysUserCashAccountLog();
+                sysUserCashAccountLog.setUserId(practiceGroup.getStudentId());
+                sysUserCashAccountLog.setType(PlatformCashAccountDetailTypeEnum.REFUNDS);
+                sysUserCashAccountLog.setStatus(DealStatusEnum.SUCCESS);
+                sysUserCashAccountLog.setAmount(returnFeeDto.getAmount());
+                sysUserCashAccountLog.setAttribute(practiceGroup.getStudentId().toString());
+                sysUserCashAccountLog.setDescription("后台关闭网管课");
+                sysUserCashAccountLog.setComment(groupId.toString());
+                sysUserCashAccountLogDao.insert(sysUserCashAccountLog);
+            }
             ActivityUserMapper activityUserMapper = activityUserMapperDao.findVipUserMapper(practiceGroup.getId(),"PRACTICE",null);
             HttpResponseResult result = quitActivityGive(activityUserMapper, returnFeeDto.getConfirmReturnActivityGive(), practiceGroup.getId(),GroupType.PRACTICE);
             if(result.getCode() != 200){
                 return result;
             }
-//            if (Objects.nonNull(refundAmount) && refundAmount.compareTo(BigDecimal.ZERO) > 0) {
-//                if (refundAmount.compareTo(orders.get(0).getExpectAmount()) > 0) {
-//                    throw new BizException("退款不可大于购买金额");
-//                }
-//                sysUserCashAccountService.updateBalance(practiceGroup.getStudentId(), refundAmount, PlatformCashAccountDetailTypeEnum.REFUNDS, "后台关闭网管课");
-//            }
             cleanGroupInfo(groupId.toString(), GroupType.PRACTICE);
             practiceGroup.setMemo("后台关闭网管课");
             practiceGroup.setGroupStatus(GroupStatusEnum.CANCEL);

+ 14 - 79
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -29,6 +29,8 @@ import java.util.Objects;
 import java.util.Set;
 import java.util.stream.Collectors;
 
+import com.ym.mec.biz.dal.dao.*;
+import com.ym.mec.biz.dal.entity.*;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -42,47 +44,6 @@ import com.alibaba.fastjson.TypeReference;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.auth.api.entity.SysUserRole;
-import com.ym.mec.biz.dal.dao.ChargeTypeDao;
-import com.ym.mec.biz.dal.dao.ClassGroupDao;
-import com.ym.mec.biz.dal.dao.ClassGroupStudentMapperDao;
-import com.ym.mec.biz.dal.dao.ClassGroupTeacherMapperDao;
-import com.ym.mec.biz.dal.dao.CooperationOrganDao;
-import com.ym.mec.biz.dal.dao.CourseScheduleDao;
-import com.ym.mec.biz.dal.dao.CourseScheduleTeacherSalaryDao;
-import com.ym.mec.biz.dal.dao.EmployeeDao;
-import com.ym.mec.biz.dal.dao.GoodsDao;
-import com.ym.mec.biz.dal.dao.MusicGroupBuildLogDao;
-import com.ym.mec.biz.dal.dao.MusicGroupDao;
-import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderCourseSettingsDao;
-import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderDao;
-import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderDetailDao;
-import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderStudentDetailDao;
-import com.ym.mec.biz.dal.dao.MusicGroupPaymentEntitiesDao;
-import com.ym.mec.biz.dal.dao.MusicGroupPaymentStudentCourseDetailDao;
-import com.ym.mec.biz.dal.dao.MusicGroupPurchaseListDao;
-import com.ym.mec.biz.dal.dao.MusicGroupQuitDao;
-import com.ym.mec.biz.dal.dao.MusicGroupSchoolTermCourseDetailDao;
-import com.ym.mec.biz.dal.dao.MusicGroupSchoolTermStudentCourseDetailDao;
-import com.ym.mec.biz.dal.dao.MusicGroupStudentFeeDao;
-import com.ym.mec.biz.dal.dao.MusicGroupSubjectGoodsGroupDao;
-import com.ym.mec.biz.dal.dao.MusicGroupSubjectPlanDao;
-import com.ym.mec.biz.dal.dao.OrganizationCloudTeacherFeeDao;
-import com.ym.mec.biz.dal.dao.OrganizationDao;
-import com.ym.mec.biz.dal.dao.SchoolDao;
-import com.ym.mec.biz.dal.dao.SporadicChargeInfoDao;
-import com.ym.mec.biz.dal.dao.StudentDao;
-import com.ym.mec.biz.dal.dao.StudentInstrumentDao;
-import com.ym.mec.biz.dal.dao.StudentPaymentOrderDao;
-import com.ym.mec.biz.dal.dao.StudentPaymentOrderDetailDao;
-import com.ym.mec.biz.dal.dao.StudentPreRegistrationDao;
-import com.ym.mec.biz.dal.dao.StudentRegistrationDao;
-import com.ym.mec.biz.dal.dao.StudentVisitDao;
-import com.ym.mec.biz.dal.dao.SubjectChangeDao;
-import com.ym.mec.biz.dal.dao.SubjectDao;
-import com.ym.mec.biz.dal.dao.SysConfigDao;
-import com.ym.mec.biz.dal.dao.SysUserCashAccountDao;
-import com.ym.mec.biz.dal.dao.TeacherAttendanceDao;
-import com.ym.mec.biz.dal.dao.TeacherDao;
 import com.ym.mec.biz.dal.dto.BasicUserDto;
 import com.ym.mec.biz.dal.dto.CloseMusicGroupDto;
 import com.ym.mec.biz.dal.dto.CourseScheduleTeachersDto;
@@ -96,48 +57,10 @@ import com.ym.mec.biz.dal.dto.StudentApplyInstrumentDto;
 import com.ym.mec.biz.dal.dto.SubFeeSettingDto;
 import com.ym.mec.biz.dal.dto.SubjectRegisterDto;
 import com.ym.mec.biz.dal.dto.UpdateExpectedNumDto;
-import com.ym.mec.biz.dal.entity.ApprovalStatus;
-import com.ym.mec.biz.dal.entity.ChargeType;
-import com.ym.mec.biz.dal.entity.ClassGroup;
-import com.ym.mec.biz.dal.entity.CloudTeacherOrder;
-import com.ym.mec.biz.dal.entity.CooperationOrgan;
-import com.ym.mec.biz.dal.entity.CourseSchedule;
-import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
-import com.ym.mec.biz.dal.entity.Goods;
-import com.ym.mec.biz.dal.entity.ImGroup;
-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.MusicGroupPaymentCalender.PayUserType;
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender.PaymentCalenderStatusEnum;
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender.PaymentType;
-import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderCourseSettings;
-import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderDetail;
-import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderStudentDetail;
-import com.ym.mec.biz.dal.entity.MusicGroupPaymentStudentCourseDetail;
-import com.ym.mec.biz.dal.entity.MusicGroupPurchaseList;
-import com.ym.mec.biz.dal.entity.MusicGroupQuit;
-import com.ym.mec.biz.dal.entity.MusicGroupReturnFeeDto;
-import com.ym.mec.biz.dal.entity.MusicGroupSchoolTermCourseDetail;
-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.MusicMemberDto;
-import com.ym.mec.biz.dal.entity.Organization;
-import com.ym.mec.biz.dal.entity.OrganizationCloudTeacherFee;
-import com.ym.mec.biz.dal.entity.School;
-import com.ym.mec.biz.dal.entity.SporadicChargeInfo;
-import com.ym.mec.biz.dal.entity.Student;
-import com.ym.mec.biz.dal.entity.StudentInstrument;
-import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
-import com.ym.mec.biz.dal.entity.StudentPaymentOrderDetail;
-import com.ym.mec.biz.dal.entity.StudentPreRegistration;
-import com.ym.mec.biz.dal.entity.StudentRegistration;
-import com.ym.mec.biz.dal.entity.Subject;
-import com.ym.mec.biz.dal.entity.SubjectChange;
-import com.ym.mec.biz.dal.entity.SysUserCashAccount;
-import com.ym.mec.biz.dal.entity.SysUserCashAccountDetail;
 import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
 import com.ym.mec.biz.dal.enums.CourseStatusEnum;
 import com.ym.mec.biz.dal.enums.CourseViewTypeEnum;
@@ -355,6 +278,9 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
     private StudentInstrumentDao studentInstrumentDao;
 
     @Autowired
+    private SysUserCashAccountLogDao sysUserCashAccountLogDao;
+
+    @Autowired
     private CloudTeacherOrderService cloudTeacherOrderService;
 
     @Autowired
@@ -2808,6 +2734,15 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         }
 
         if (amount.doubleValue() > 0) {
+            SysUserCashAccountLog sysUserCashAccountLog = new SysUserCashAccountLog();
+            sysUserCashAccountLog.setUserId(userId);
+            sysUserCashAccountLog.setType(PlatformCashAccountDetailTypeEnum.REFUNDS);
+            sysUserCashAccountLog.setStatus(DealStatusEnum.SUCCESS);
+            sysUserCashAccountLog.setAmount(amount);
+            sysUserCashAccountLog.setAttribute(userId.toString());
+            sysUserCashAccountLog.setDescription("退出乐团");
+            sysUserCashAccountLog.setComment(musicGroupId);
+            sysUserCashAccountLogDao.insert(sysUserCashAccountLog);
             // 增加交易流水
 //            sysUserCashAccountDetailService.addCashAccountDetail(userId, amount, SysUserCashAccountDetailService.MUSIC_GROUP + musicGroupId, "",
 //                    PlatformCashAccountDetailTypeEnum.REFUNDS, null, SUCCESS, "退出乐团", null);

+ 35 - 28
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -85,6 +85,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
     @Autowired
 	private SysUserCashAccountDetailDao sysUserCashAccountDetailDao;
     @Autowired
+	private SysUserCashAccountLogDao sysUserCashAccountLogDao;
+    @Autowired
 	private ClassGroupTeacherSalaryDao classGroupTeacherSalaryDao;
     @Autowired
 	private CourseScheduleStudentPaymentDao courseScheduleStudentPaymentDao;
@@ -3106,14 +3108,16 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 
 //		sysUserCashAccountService.updateBalance(studentId, amount);
 //		SysUserCashAccount sysUserCashAccount = sysUserCashAccountService.get(studentId);
-//		SysUserCashAccountDetail sysUserCashAccountDetail = new SysUserCashAccountDetail();
-//		sysUserCashAccountDetail.setUserId(studentId);
-//		sysUserCashAccountDetail.setType(PlatformCashAccountDetailTypeEnum.REFUNDS);
-//		sysUserCashAccountDetail.setStatus(DealStatusEnum.SUCCESS);
-//		sysUserCashAccountDetail.setAmount(amount);
-//		sysUserCashAccountDetail.setBalance(sysUserCashAccount.getBalance());
-//		sysUserCashAccountDetail.setAttribute(studentId.toString());
-//		sysUserCashAccountDetailDao.insert(sysUserCashAccountDetail);
+		//记录日志
+		SysUserCashAccountLog sysUserCashAccountLog = new SysUserCashAccountLog();
+		sysUserCashAccountLog.setUserId(studentId);
+		sysUserCashAccountLog.setType(PlatformCashAccountDetailTypeEnum.REFUNDS);
+		sysUserCashAccountLog.setStatus(DealStatusEnum.SUCCESS);
+		sysUserCashAccountLog.setAmount(amount);
+		sysUserCashAccountLog.setAttribute(studentId.toString());
+		sysUserCashAccountLog.setDescription("VIP退课");
+		sysUserCashAccountLog.setComment(vipGroupId.toString());
+		sysUserCashAccountLogDao.insert(sysUserCashAccountLog);
 
 		classStudentMapperByUserIdAndClassGroupId.setStatus(ClassGroupStudentStatusEnum.QUIT);
 		classGroupStudentMapperDao.update(classStudentMapperByUserIdAndClassGroupId);
@@ -3594,16 +3598,18 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		studentApplyRefundsDao.update(studentApplyRefunds);
 		switch (studentApplyRefunds.getStatus()) {
 			case DONE:
-				sysUserCashAccountService.updateBalance(studentApplyRefunds.getUserId(), studentApplyRefunds.getActualAmount());
-				SysUserCashAccount sysUserCashAccount = sysUserCashAccountService.get(studentApplyRefunds.getUserId().intValue());
-				SysUserCashAccountDetail sysUserCashAccountDetail = new SysUserCashAccountDetail();
-				sysUserCashAccountDetail.setUserId(studentApplyRefunds.getUserId());
-				sysUserCashAccountDetail.setType(PlatformCashAccountDetailTypeEnum.REFUNDS);
-				sysUserCashAccountDetail.setStatus(DealStatusEnum.SUCCESS);
-				sysUserCashAccountDetail.setAmount(amount);
-				sysUserCashAccountDetail.setBalance(sysUserCashAccount.getBalance());
-				sysUserCashAccountDetail.setAttribute(studentApplyRefunds.getId().toString());
-				sysUserCashAccountDetailDao.insert(sysUserCashAccountDetail);
+//				sysUserCashAccountService.updateBalance(studentApplyRefunds.getUserId(), studentApplyRefunds.getActualAmount());
+//				SysUserCashAccount sysUserCashAccount = sysUserCashAccountService.get(studentApplyRefunds.getUserId().intValue());
+				//记录日志
+				SysUserCashAccountLog sysUserCashAccountLog = new SysUserCashAccountLog();
+				sysUserCashAccountLog.setUserId(studentApplyRefunds.getUserId());
+				sysUserCashAccountLog.setType(PlatformCashAccountDetailTypeEnum.REFUNDS);
+				sysUserCashAccountLog.setStatus(DealStatusEnum.SUCCESS);
+				sysUserCashAccountLog.setAmount(amount);
+				sysUserCashAccountLog.setAttribute(studentApplyRefunds.getUserId().toString());
+				sysUserCashAccountLog.setDescription("VIP退课审核");
+				sysUserCashAccountLog.setComment(id.toString());
+				sysUserCashAccountLogDao.insert(sysUserCashAccountLog);
 
 				ClassGroupStudentMapper classStudentMapperByUserIdAndClassGroupId = classGroupStudentMapperDao.query(studentPaymentOrder.getClassGroupId(),
 						studentPaymentOrder.getUserId());
@@ -3803,16 +3809,17 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			if(null==studentPaymentOrder){
 				throw new BizException("无法停止课程,需要全部学员退学后,才能停止,请先操作学员退学。");
 			}
-			sysUserCashAccountService.updateBalance(userId.intValue(),studentSurplusClassFees.get(userId));
-			SysUserCashAccount sysUserCashAccount = sysUserCashAccountService.get(userId.intValue());
-			SysUserCashAccountDetail sysUserCashAccountDetail=new SysUserCashAccountDetail();
-			sysUserCashAccountDetail.setUserId(userId.intValue());
-			sysUserCashAccountDetail.setType(PlatformCashAccountDetailTypeEnum.REFUNDS);
-			sysUserCashAccountDetail.setStatus(DealStatusEnum.SUCCESS);
-			sysUserCashAccountDetail.setAmount(studentSurplusClassFees.get(userId));
-			sysUserCashAccountDetail.setBalance(sysUserCashAccount.getBalance());
-			sysUserCashAccountDetail.setAttribute(studentPaymentOrder.getOrderNo());
-			sysUserCashAccountDetailDao.insert(sysUserCashAccountDetail);
+//			sysUserCashAccountService.updateBalance(userId.intValue(),studentSurplusClassFees.get(userId));
+//			SysUserCashAccount sysUserCashAccount = sysUserCashAccountService.get(userId.intValue());
+			SysUserCashAccountLog sysUserCashAccountLog = new SysUserCashAccountLog();
+			sysUserCashAccountLog.setUserId(userId.intValue());
+			sysUserCashAccountLog.setType(PlatformCashAccountDetailTypeEnum.REFUNDS);
+			sysUserCashAccountLog.setStatus(DealStatusEnum.SUCCESS);
+			sysUserCashAccountLog.setAmount(studentSurplusClassFees.get(userId));
+			sysUserCashAccountLog.setAttribute(studentPaymentOrder.getOrderNo());
+			sysUserCashAccountLog.setDescription("VIP课关闭");
+			sysUserCashAccountLog.setComment(vipGroupId.toString());
+			sysUserCashAccountLogDao.insert(sysUserCashAccountLog);
 		}
 
 		vipGroup.setStatus(VipGroupStatusEnum.CANCEL);

+ 180 - 0
mec-biz/src/main/resources/config/mybatis/SysUserCashAccountLogMapper.xml

@@ -0,0 +1,180 @@
+<?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.ym.mec.biz.dal.dao.SysUserCashAccountLogDao">
+
+    <resultMap type="com.ym.mec.biz.dal.entity.SysUserCashAccountLog" id="SysUserCashAccountLog">
+        <result column="id_" property="id"/>
+        <result column="user_id_" property="userId"/>
+        <result column="phone_" property="phone"/>
+        <result column="username_" property="username"/>
+        <result column="subject_name_" property="subjectName"/>
+        <result column="trans_no_" property="transNo"/>
+        <result column="type_" property="type" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="trans_type_" property="transType" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="status_" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="amount_" property="amount"/>
+        <result column="com_amount_" property="comAmount"/>
+        <result column="per_amount_" property="perAmount"/>
+        <result column="balance_" property="balance"/>
+        <result column="description_" property="description"/>
+        <result column="comment_" property="comment"/>
+        <result column="create_time_" property="createTime"/>
+        <result column="update_time_" property="updateTime"/>
+        <result column="attribute1_" property="attribute"/>
+        <result column="channel_" property="channel"/>
+        <result column="organ_name_" property="organName"/>
+        <result column="platform_account_no_" property="platformAccountNo"/>
+    </resultMap>
+
+    <!-- 根据主键查询一条记录 -->
+    <select id="get" resultMap="SysUserCashAccountLog">
+        SELECT * FROM sys_user_cash_account_log WHERE id_ = #{id}
+    </select>
+
+    <!-- 全查询 -->
+    <select id="findAll" resultMap="SysUserCashAccountLog">
+        SELECT *
+        FROM sys_user_cash_account_log
+        ORDER BY id_
+    </select>
+
+    <!-- 向数据库增加一条记录 -->
+    <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.SysUserCashAccountLog" useGeneratedKeys="true"
+            keyColumn="id" keyProperty="id">
+        INSERT INTO sys_user_cash_account_log
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id!=null">id_,</if>
+            <if test="userId!=null">user_id_,</if>
+            <if test="transNo!=null">trans_no_,</if>
+            <if test="type!=null">type_,</if>
+            <if test="transType!=null">trans_type_,</if>
+            <if test="status!=null">status_,</if>
+            <if test="amount!=null">amount_,</if>
+            <if test="comAmount!=null">com_amount_,</if>
+            <if test="perAmount!=null">per_amount_,</if>
+            <if test="balance!=null">balance_,</if>
+            <if test="description!=null">description_,</if>
+            <if test="comment!=null">comment_,</if>
+            create_time_,
+            update_time_,
+            <if test="attribute!=null">attribute1_,</if>
+            <if test="channel!=null">channel_,</if>
+            <if test="platformAccountNo!=null">platform_account_no_,</if>
+        </trim>
+        VALUES
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id!=null">#{id},</if>
+            <if test="userId!=null">#{userId},</if>
+            <if test="transNo!=null">#{transNo},</if>
+            <if test="type!=null">#{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},</if>
+            <if test="transType!=null">#{transType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},</if>
+            <if test="status!=null">#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},</if>
+            <if test="amount!=null">#{amount},</if>
+            <if test="comAmount!=null">#{comAmount},</if>
+            <if test="perAmount!=null">#{perAmount},</if>
+            <if test="balance!=null">#{balance},</if>
+            <if test="description!=null">#{description},</if>
+            <if test="comment!=null">#{comment},</if>
+            NOW(),
+            NOW(),
+            <if test="attribute!=null">#{attribute},</if>
+            <if test="channel!=null">#{channel},</if>
+            <if test="platformAccountNo!=null">#{platformAccountNo},</if>
+        </trim>
+    </insert>
+
+    <!-- 根据主键查询一条记录 -->
+    <update id="update" parameterType="com.ym.mec.biz.dal.entity.SysUserCashAccountLog">
+        UPDATE sys_user_cash_account_log
+        <set>
+            <if test="status != null">
+                status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+            </if>
+            <if test="userId != null">
+                user_id_ = #{userId},
+            </if>
+            <if test="balance != null">
+                balance_ = #{balance},
+            </if>
+            <if test="comment != null">
+                comment_ = #{comment},
+            </if>
+                update_time_ = NOW(),
+            <if test="amount != null">
+                amount_ = #{amount},
+            </if>
+            <if test="comAmount != null">
+                com_amount_ = #{comAmount},
+            </if>
+            <if test="perAmount != null">
+                per_amount_ = #{perAmount},
+            </if>
+            <if test="description != null">
+                description_ = #{description},
+            </if>
+            <if test="transNo != null">
+                trans_no_ = #{transNo},
+            </if>
+            <if test="type != null">
+                type_ = #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+            </if>
+            <if test="transType != null">
+                trans_type_ = #{transType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+            </if>
+            <if test="attribute != null">
+                attribute1_ = #{attribute},
+            </if>
+            <if test="channel != null">
+                channel_ = #{channel},
+            </if>
+            <if test="platformAccountNo != null">
+                platform_account_no_ = #{platformAccountNo},
+            </if>
+        </set>
+        WHERE id_ = #{id}
+    </update>
+
+    <!-- 根据主键删除一条记录 -->
+    <delete id="delete">
+        DELETE FROM sys_user_cash_account_log WHERE id_ = #{id}
+    </delete>
+
+    <!-- 分页查询 -->
+    <select id="queryPage" resultMap="SysUserCashAccountLog" parameterType="map">
+        SELECT * FROM sys_user_cash_account_log
+        <where>
+            <if test="userId != null">
+                user_id_ = #{userId}
+            </if>
+            <if test="search != null and search != ''">
+                AND create_time_ LIKE CONCAT(#{search},'%')
+            </if>
+            <if test="channel != null ">
+                AND channel_ NOT IN (#{channel}) OR channel_ IS NULL
+            </if>
+        </where>
+        ORDER BY id_ DESC
+        <include refid="global.limit"/>
+    </select>
+
+    <!-- 查询当前表的总记录数 -->
+    <select id="queryCount" resultType="int">
+        SELECT COUNT(*) FROM sys_user_cash_account_log
+        <where>
+            <if test="userId != null">
+                user_id_ = #{userId}
+            </if>
+            <if test="search != null and search != ''">
+                AND create_time_ LIKE CONCAT(#{search},'%')
+            </if>
+            <if test="channel != null ">
+                AND channel_ NOT IN (#{channel}) OR channel_ IS NULL
+            </if>
+        </where>
+    </select>
+
+</mapper>