Bläddra i källkod

Merge branch 'zx_saas_5-17' of http://git.dayaedu.com/yonge/mec into master_saas

 Conflicts:
	mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupQuitDao.java
	mec-biz/src/main/java/com/ym/mec/biz/service/StudentService.java
	mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServiceImpl.java
	mec-biz/src/main/resources/config/mybatis/MusicGroupQuitMapper.xml
	mec-web/src/main/java/com/ym/mec/web/controller/StudentManageController.java
zouxuan 2 år sedan
förälder
incheckning
6776ae87c7
30 ändrade filer med 411 tillägg och 501 borttagningar
  1. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleStudentPaymentDao.java
  2. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupQuitDao.java
  3. 20 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentMemberUpdateLogDao.java
  4. 0 11
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ExportTeacherSalaryDto.java
  5. 56 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentMemberUpdateLog.java
  6. 8 432
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/VipGroupActivity.java
  7. 17 0
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentMemberUpdateLogService.java
  8. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentPaymentOrderService.java
  9. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentService.java
  10. 1 3
      mec-biz/src/main/java/com/ym/mec/biz/service/VipGroupActivityService.java
  11. 1 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  12. 3 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java
  13. 17 10
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExportServiceImpl.java
  14. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  15. 28 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentMemberUpdateLogServiceImpl.java
  16. 122 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderServiceImpl.java
  17. 26 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServiceImpl.java
  18. 42 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupActivityServiceImpl.java
  19. 9 0
      mec-biz/src/main/resources/config/mybatis/CourseScheduleStudentPaymentMapper.xml
  20. 2 2
      mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml
  21. 3 0
      mec-biz/src/main/resources/config/mybatis/MusicGroupQuitMapper.xml
  22. 4 0
      mec-biz/src/main/resources/config/mybatis/StudentMemberUpdateLogMapper.xml
  23. 7 0
      mec-web/src/main/java/com/ym/mec/web/controller/APIController.java
  24. 2 1
      mec-web/src/main/java/com/ym/mec/web/controller/EmployeeController.java
  25. 7 17
      mec-web/src/main/java/com/ym/mec/web/controller/EmployeeInfoController.java
  26. 2 2
      mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java
  27. 0 14
      mec-web/src/main/java/com/ym/mec/web/controller/SellOrderController.java
  28. 10 0
      mec-web/src/main/java/com/ym/mec/web/controller/StudentManageController.java
  29. 2 1
      mec-web/src/main/java/com/ym/mec/web/controller/VipGroupActivityController.java
  30. 4 4
      mec-web/src/main/resources/exportColumnMapper.ini

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleStudentPaymentDao.java

@@ -617,4 +617,6 @@ public interface CourseScheduleStudentPaymentDao extends BaseDAO<Long, CourseSch
      * @return
      */
     List<StudentOrganDto> queryRemainCourseStudent(@Param("organIds") List<Integer> organIds);
+
+    List<Map> statCourseFee(@Param("cutFirstDayOfMonth") String cutFirstDayOfMonth, @Param("cutLastDayOfMonth") String cutLastDayOfMonth);
 }

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupQuitDao.java

@@ -71,4 +71,6 @@ public interface MusicGroupQuitDao extends BaseDAO<Long, MusicGroupQuit> {
     List<MusicGroupQuitPageDto> queryPageBySchool(Map<String, Object> params);
 
     Boolean countRedPointBySchool(@Param("musicGroupIds") List<String> musicGroupIds);
+
+    void finish(@Param("musicGroupId") String musicGroupId);
 }

+ 20 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentMemberUpdateLogDao.java

@@ -0,0 +1,20 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ym.mec.biz.dal.entity.StudentMemberUpdateLog;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 学员云教练时长修改记录(StudentMemberUpdateLog)表数据库访问层
+ *
+ * @author zx
+ * @since 2023-05-17 11:13:43
+ */
+public interface StudentMemberUpdateLogDao extends BaseMapper<StudentMemberUpdateLog> {
+
+   int insertBatch(@Param("entities") List<StudentMemberUpdateLog> entities);
+   
+}
+

+ 0 - 11
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ExportTeacherSalaryDto.java

@@ -116,17 +116,6 @@ public class ExportTeacherSalaryDto{
     @ApiModelProperty(value = "课程收入")
     private BigDecimal courseIncome;
 
-    @ApiModelProperty(value = "云教练转结")
-    private BigDecimal cloudReverse;
-
-    public BigDecimal getCloudReverse() {
-        return cloudReverse;
-    }
-
-    public void setCloudReverse(BigDecimal cloudReverse) {
-        this.cloudReverse = cloudReverse;
-    }
-
     public BigDecimal getCourseIncome() {
         return courseIncome;
     }

+ 56 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentMemberUpdateLog.java

@@ -0,0 +1,56 @@
+package com.ym.mec.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 lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 学员云教练时长修改记录(StudentMemberUpdateLog)表实体类
+ *
+ * @author zx
+ * @since 2023-05-17 11:13:43
+ */
+@ApiModel(value = "student_member_update_log-学员云教练时长修改记录")
+@Data
+public class StudentMemberUpdateLog implements Serializable {
+    @TableId(value = "id_", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("student_id_")
+    @ApiModelProperty(value = "学员编号")
+    private Integer studentId;
+
+    @TableField("operator_id_")
+    @ApiModelProperty(value = "操作人")
+    private Integer operatorId;
+
+    @TableField("old_start_time_")
+    @ApiModelProperty(value = "原会员开始时间")
+    private Date oldStartTime;
+
+    @TableField("old_end_time_")
+    @ApiModelProperty(value = "原会员截止时间")
+    private Date oldEndTime;
+
+    @TableField("new_start_time_")
+    @ApiModelProperty(value = "修改后的开始时间")
+    private Date newStartTime;
+
+    @TableField("new_end_time_")
+    @ApiModelProperty(value = "修改后的截止时间")
+    private Date newEndTime;
+
+    @TableField("create_time_")
+    private Date createTime;
+
+    @TableField("memo_")
+    private String memo;
+}
+

+ 8 - 432
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/VipGroupActivity.java

@@ -3,7 +3,9 @@ package com.ym.mec.biz.dal.entity;
 import com.ym.mec.biz.dal.enums.PeriodEnum;
 import com.ym.mec.common.entity.BaseEntity;
 
+import com.ym.mec.common.tenant.TenantContextHolder;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 
 import java.math.BigDecimal;
 import java.util.Date;
@@ -14,7 +16,8 @@ import static com.ym.mec.biz.dal.enums.PeriodEnum.MONTH;
 /**
  * 对应数据库表(vip_group_activity):
  */
-public class VipGroupActivity extends BaseEntity {
+@Data
+public class VipGroupActivity{
 
 	@ApiModelProperty(value = "活动编号")
 	private Integer id;
@@ -49,6 +52,9 @@ public class VipGroupActivity extends BaseEntity {
 	@ApiModelProperty(value = "适用分部")
 	private String organId;
 
+	@ApiModelProperty(value = "适用分部")
+	private String organName;
+
 	@ApiModelProperty(value = "可排课开始时间")
 	private java.util.Date coursesStartTime;
 
@@ -174,435 +180,5 @@ public class VipGroupActivity extends BaseEntity {
 	@ApiModelProperty(value = "单价")
 	private BigDecimal singlePrice;
 
-	public String getActivityTypeEnum() {
-		return activityTypeEnum;
-	}
-
-	public void setActivityTypeEnum(String activityTypeEnum) {
-		this.activityTypeEnum = activityTypeEnum;
-	}
-
-	public BigDecimal getSinglePrice() {
-		return singlePrice;
-	}
-
-	public void setSinglePrice(BigDecimal singlePrice) {
-		this.singlePrice = singlePrice;
-	}
-
-	public Integer getGiveCouponId() {
-		return giveCouponId;
-	}
-
-	public void setGiveCouponId(Integer giveCouponId) {
-		this.giveCouponId = giveCouponId;
-	}
-
-	public Integer getGiveCouponNum() {
-		return giveCouponNum;
-	}
-
-	public void setGiveCouponNum(Integer giveCouponNum) {
-		this.giveCouponNum = giveCouponNum;
-	}
-
-	public BigDecimal getOriginalPrice() {
-		return originalPrice;
-	}
-
-	public void setOriginalPrice(BigDecimal originalPrice) {
-		this.originalPrice = originalPrice;
-	}
-
-	public Integer getActivityChannel() {
-		return activityChannel;
-	}
-
-	public void setActivityChannel(Integer activityChannel) {
-		this.activityChannel = activityChannel;
-	}
-
-	public Integer getCode() {
-		return code;
-	}
-
-	public void setCode(Integer code) {
-		this.code = code;
-	}
-
-	public Integer getGivePrizeNum() {
-		return givePrizeNum;
-	}
-
-	public void setGivePrizeNum(Integer givePrizeNum) {
-		this.givePrizeNum = givePrizeNum;
-	}
-
-	public Integer getGiveAllowOnlineToOffline() {
-		return giveAllowOnlineToOffline;
-	}
-
-	public void setGiveAllowOnlineToOffline(Integer giveAllowOnlineToOffline) {
-		this.giveAllowOnlineToOffline = giveAllowOnlineToOffline;
-	}
-
-	public BigDecimal getMarketPrice() {
-		return marketPrice;
-	}
-
-	public void setMarketPrice(BigDecimal marketPrice) {
-		this.marketPrice = marketPrice;
-	}
-
-	public Integer getGiveCategoryNum() {
-		return giveCategoryNum;
-	}
-
-	public void setGiveCategoryNum(Integer giveCategoryNum) {
-		this.giveCategoryNum = giveCategoryNum;
-	}
-
-	public Integer getVipGroupCategoryNum() {
-		return vipGroupCategoryNum;
-	}
-
-	public void setVipGroupCategoryNum(Integer vipGroupCategoryNum) {
-		this.vipGroupCategoryNum = vipGroupCategoryNum;
-	}
-
-	public String getGiveCategoryName() {
-		return giveCategoryName;
-	}
-
-	public void setGiveCategoryName(String giveCategoryName) {
-		this.giveCategoryName = giveCategoryName;
-	}
-
-	public String getStatus() {
-		return status;
-	}
-
-	public void setStatus(String status) {
-		this.status = status;
-	}
-
-	public Integer getId() {
-		return id;
-	}
-
-	public void setId(Integer id) {
-		this.id = id;
-	}
-
-	public String getName() {
-		return name;
-	}
-
-	public void setName(String name) {
-		this.name = name;
-	}
-
-	public Integer getActivityType() {
-		return activityType;
-	}
-
-	public void setActivityType(Integer activityType) {
-		this.activityType = activityType;
-	}
-
-	public Integer getSingleCourseTime() {
-		return singleCourseTime;
-	}
-
-	public void setSingleCourseTime(Integer singleCourseTime) {
-		this.singleCourseTime = singleCourseTime;
-	}
-
-	public Integer getGiveSingleCourseTime() {
-		return giveSingleCourseTime;
-	}
-
-	public void setGiveSingleCourseTime(Integer giveSingleCourseTime) {
-		this.giveSingleCourseTime = giveSingleCourseTime;
-	}
-
-	public String getDescription() {
-		return description;
-	}
-
-	public void setDescription(String description) {
-		this.description = description;
-	}
-
-	public String getVipGroupCategoryIdList() {
-		return vipGroupCategoryIdList;
-	}
-
-	public void setVipGroupCategoryIdList(String vipGroupCategoryIdList) {
-		this.vipGroupCategoryIdList = vipGroupCategoryIdList;
-	}
-
-	public Date getStartTime() {
-		return startTime;
-	}
-
-	public void setStartTime(Date startTime) {
-		this.startTime = startTime;
-	}
-
-	public Date getEndTime() {
-		return endTime;
-	}
-
-	public void setEndTime(Date endTime) {
-		this.endTime = endTime;
-	}
-
-	public String getOrganId() {
-		return organId;
-	}
-
-	public void setOrganId(String organId) {
-		this.organId = organId;
-	}
-
-	public Date getCoursesStartTime() {
-		return coursesStartTime;
-	}
-
-	public void setCoursesStartTime(Date coursesStartTime) {
-		this.coursesStartTime = coursesStartTime;
-	}
-
-	public Date getCoursesEndTime() {
-		return coursesEndTime;
-	}
-
-	public void setCoursesEndTime(Date coursesEndTime) {
-		this.coursesEndTime = coursesEndTime;
-	}
-
-	public BigDecimal getDiscount() {
-		return discount;
-	}
-
-	public void setDiscount(BigDecimal discount) {
-		this.discount = discount;
-	}
-
-	public Integer getFullMinusCourseTimes() {
-		return fullMinusCourseTimes;
-	}
-
-	public void setFullMinusCourseTimes(Integer fullMinusCourseTimes) {
-		this.fullMinusCourseTimes = fullMinusCourseTimes;
-	}
-
-	public String getGiveCourseType() {
-		return giveCourseType;
-	}
-
-	public void setGiveCourseType(String giveCourseType) {
-		this.giveCourseType = giveCourseType;
-	}
-
-	public String getCourseType() {
-		return courseType;
-	}
-
-	public void setCourseType(String courseType) {
-		this.courseType = courseType;
-	}
-
-	public String getGiveCategoryId() {
-		return giveCategoryId;
-	}
-
-	public void setGiveCategoryId(String giveCategoryId) {
-		this.giveCategoryId = giveCategoryId;
-	}
-
-	public Integer getGiveCourseNum() {
-		return giveCourseNum;
-	}
-
-	public void setGiveCourseNum(Integer giveCourseNum) {
-		this.giveCourseNum = giveCourseNum;
-	}
-
-	public Integer getMemberRankId() {
-		return memberRankId;
-	}
-
-	public void setMemberRankId(Integer memberRankId) {
-		this.memberRankId = memberRankId;
-	}
-
-	public Integer getMemberTime() {
-		return memberTime;
-	}
-
-	public void setMemberTime(Integer memberTime) {
-		this.memberTime = memberTime;
-	}
-
-	public Integer getGiveMemberRankId() {
-		return giveMemberRankId;
-	}
-
-	public void setGiveMemberRankId(Integer giveMemberRankId) {
-		this.giveMemberRankId = giveMemberRankId;
-	}
-
-	public Integer getGiveMemberTime() {
-		return giveMemberTime;
-	}
-
-	public void setGiveMemberTime(Integer giveMemberTime) {
-		this.giveMemberTime = giveMemberTime;
-	}
-
-	public boolean isPayToBalance() {
-		return isPayToBalance;
-	}
-
-	public void setPayToBalance(boolean payToBalance) {
-		isPayToBalance = payToBalance;
-	}
-
-	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;
-	}
-
-	public String getSalarySettlementJson() {
-		return salarySettlementJson;
-	}
-
-	public void setSalarySettlementJson(String salarySettlementJson) {
-		this.salarySettlementJson = salarySettlementJson;
-	}
-
-	public String getVipGroupCategoryNames() {
-		return vipGroupCategoryNames;
-	}
-
-	public void setVipGroupCategoryNames(String vipGroupCategoryNames) {
-		this.vipGroupCategoryNames = vipGroupCategoryNames;
-	}
-
-	public Boolean getDelFlag() {
-		return delFlag;
-	}
-
-	public void setDelFlag(Boolean delFlag) {
-		this.delFlag = delFlag;
-	}
-
-	public Boolean getEnable() {
-		return enable;
-	}
-
-	public void setEnable(Boolean enable) {
-		this.enable = enable;
-	}
-
-	public Integer getOnlineClassJoinGradientRewards() {
-		return onlineClassJoinGradientRewards;
-	}
-
-	public void setOnlineClassJoinGradientRewards(Integer onlineClassJoinGradientRewards) {
-		this.onlineClassJoinGradientRewards = onlineClassJoinGradientRewards;
-	}
-
-	public Integer getOfflineClassJoinGradientRewards() {
-		return offlineClassJoinGradientRewards;
-	}
-
-	public void setOfflineClassJoinGradientRewards(Integer offlineClassJoinGradientRewards) {
-		this.offlineClassJoinGradientRewards = offlineClassJoinGradientRewards;
-	}
-
-	public Integer getMinCourseNum() {
-		return minCourseNum;
-	}
-
-	public void setMinCourseNum(Integer minCourseNum) {
-		this.minCourseNum = minCourseNum;
-	}
-
-	public Integer getMaxCourseNum() {
-		return maxCourseNum;
-	}
-
-	public void setMaxCourseNum(Integer maxCourseNum) {
-		this.maxCourseNum = maxCourseNum;
-	}
-
-	public Integer getStudentMaxUsedTimes() {
-		return studentMaxUsedTimes;
-	}
-
-	public void setStudentMaxUsedTimes(Integer studentMaxUsedTimes) {
-		this.studentMaxUsedTimes = studentMaxUsedTimes;
-	}
-
-	public String getApplyToStudentType() {
-		return applyToStudentType;
-	}
-
-	public void setApplyToStudentType(String applyToStudentType) {
-		this.applyToStudentType = applyToStudentType;
-	}
-
-	public Integer getAllowOnlineToOffline() {
-		return allowOnlineToOffline;
-	}
-
-	public void setAllowOnlineToOffline(Integer allowOnlineToOffline) {
-		this.allowOnlineToOffline = allowOnlineToOffline;
-	}
-
-	public Integer getTeachMode() {
-		return teachMode;
-	}
-
-	public void setTeachMode(Integer teachMode) {
-		this.teachMode = teachMode;
-	}
-
-	public Integer getGiveTeachMode() {
-		return giveTeachMode;
-	}
-
-	public void setGiveTeachMode(Integer giveTeachMode) {
-		this.giveTeachMode = giveTeachMode;
-	}
-
-	public PeriodEnum getPeriodEnum() {
-		return periodEnum;
-	}
-
-	public void setPeriodEnum(PeriodEnum periodEnum) {
-		this.periodEnum = periodEnum;
-	}
-
-	public PeriodEnum getGivePeriodEnum() {
-		return givePeriodEnum;
-	}
-
-	public void setGivePeriodEnum(PeriodEnum givePeriodEnum) {
-		this.givePeriodEnum = givePeriodEnum;
-	}
+	private Integer tenantId = TenantContextHolder.getTenantId();
 }

+ 17 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentMemberUpdateLogService.java

@@ -0,0 +1,17 @@
+package com.ym.mec.biz.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ym.mec.biz.dal.dao.StudentMemberUpdateLogDao;
+import com.ym.mec.biz.dal.entity.StudentMemberUpdateLog;
+
+/**
+ * 学员云教练时长修改记录(StudentMemberUpdateLog)表服务接口
+ *
+ * @author zx
+ * @since 2023-05-17 11:13:44
+ */
+public interface StudentMemberUpdateLogService extends IService<StudentMemberUpdateLog> {
+
+    StudentMemberUpdateLogDao getDao();
+}
+

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentPaymentOrderService.java

@@ -253,6 +253,8 @@ public interface StudentPaymentOrderService extends BaseService<Long, StudentPay
 
     void mallBuyOrderCallback(StudentPaymentOrder order);
 
+    void mallBuyOrderCallback1(Long orderId);
+
     void mallSaveOrderInfo(MallCreateOrderModel model);
 
     OrderCancelModel cancelOrder(StudentPaymentOrder orderByOrderNo, String reason);

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentService.java

@@ -232,4 +232,14 @@ public interface StudentService extends BaseService<Integer, Student> {
     StudentWrapper.StudentStat userCount(StudentWrapper.StudentQuery queryInfo);
 
     Map<Integer,Student> getMapByIds(List<Integer> studentIds);
+
+    /**
+    * @description: 修改学员云教练时间
+     * @param userId
+     * @param endTime
+    * @return void
+    * @author zx
+    * @date 2023/5/17 11:25
+    */
+    void updateStudentMember(Integer userId, Date endTime,String memo,Integer operatorId);
 }

+ 1 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/VipGroupActivityService.java

@@ -1,6 +1,5 @@
 package com.ym.mec.biz.service;
 
-import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.VipGroupActivityDao;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
@@ -11,13 +10,12 @@ import com.ym.mec.biz.dal.page.VipGroupActivityQueryInfo;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
-import org.springframework.transaction.annotation.Isolation;
-import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.util.List;
 
 public interface VipGroupActivityService extends BaseService<Integer, VipGroupActivity> {
+    PageInfo<VipGroupActivity> queryPage(VipGroupActivityQueryInfo queryInfo);
 
     VipGroupActivityDao getDao();
 

+ 1 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -1517,6 +1517,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public void courseAdjustOnlyWithClassDate(List<CourseSchedule> courseSchedules, Integer operatorId) {
     	if(CollectionUtils.isEmpty(courseSchedules)){
     		throw new BizException("请指定课程");

+ 3 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java

@@ -1027,11 +1027,11 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                 courseIncomeMap = courseScheduleStudentPayments.stream().collect(Collectors.groupingBy(CourseScheduleStudentPayment::getCourseScheduleId, Collectors.mapping(CourseScheduleStudentPayment::getActualPrice, Collectors.reducing(BigDecimal.ZERO, BigDecimal::add))));
             }
         }
-        Map<Long,BigDecimal> courseCast = MapUtil.convertIntegerMap(cloudTeacherFreeCourseDao.queryMapByClassDate(month));
+//        Map<Long,BigDecimal> courseCast = MapUtil.convertIntegerMap(cloudTeacherFreeCourseDao.queryMapByClassDate(month));
 
         for (ExportTeacherSalaryDto exportTeacherSalaryDto : exportTeacherSalaryDtos) {
-            BigDecimal castOrDefault = courseCast.getOrDefault(exportTeacherSalaryDto.getCourseScheduleId(), BigDecimal.ZERO);
-            exportTeacherSalaryDto.setCloudReverse(castOrDefault);
+//            BigDecimal castOrDefault = courseCast.getOrDefault(exportTeacherSalaryDto.getCourseScheduleId(), BigDecimal.ZERO);
+//            exportTeacherSalaryDto.setCloudReverse(castOrDefault);
             if(!courseIncomeMap.containsKey(exportTeacherSalaryDto.getCourseScheduleId())){
                 exportTeacherSalaryDto.setCourseIncome(BigDecimal.ZERO);
             }else{

+ 17 - 10
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExportServiceImpl.java

@@ -2335,12 +2335,17 @@ public class ExportServiceImpl implements ExportService {
         List<OperatingTotalIncomeDto> incomeDtos = new ArrayList<>();
         //承担课程的云教练收入
         String month = params.get("month").toString();
-        String firstDayOfMonth = DateUtil.dateToString(DateUtil.getFirstDayOfMonth(DateUtil.stringToDate(month,DateUtil.ISO_YEAR_MONTH_FORMAT)),DateUtil.ISO_EXPANDED_DATE_FORMAT);
-        String lastDayOfMonth = DateUtil.dateToString(DateUtil.getLastDayOfMonth(DateUtil.stringToDate(month,DateUtil.ISO_YEAR_MONTH_FORMAT)),DateUtil.ISO_EXPANDED_DATE_FORMAT);
-        Map<Integer, BigDecimal> groupCloudAmount = MapUtil.convertIntegerMap(cloudTeacherOrderDao.sumGroupCloudAmount(month,firstDayOfMonth,lastDayOfMonth));
-        //不承担课程的云教练收入
-        Map<Integer, BigDecimal> personalCloudAmount = MapUtil.convertIntegerMap(cloudTeacherOrderDao.sumPersonalCloudAmount(month,firstDayOfMonth,lastDayOfMonth));
+//        String firstDayOfMonth = DateUtil.dateToString(DateUtil.getFirstDayOfMonth(DateUtil.stringToDate(month,DateUtil.ISO_YEAR_MONTH_FORMAT)),DateUtil.ISO_EXPANDED_DATE_FORMAT);
+//        String lastDayOfMonth = DateUtil.dateToString(DateUtil.getLastDayOfMonth(DateUtil.stringToDate(month,DateUtil.ISO_YEAR_MONTH_FORMAT)),DateUtil.ISO_EXPANDED_DATE_FORMAT);
 
+        String cutMonth = DateUtil.dateToString(DateUtil.addMonths(DateUtil.stringToDate(month,DateUtil.ISO_YEAR_MONTH_FORMAT),-1),DateUtil.ISO_YEAR_MONTH_FORMAT);
+        String cutFirstDayOfMonth = DateUtil.dateToString(DateUtil.getFirstDayOfMonth(DateUtil.stringToDate(cutMonth,DateUtil.ISO_YEAR_MONTH_FORMAT)),DateUtil.ISO_EXPANDED_DATE_FORMAT);
+        String cutLastDayOfMonth = DateUtil.dateToString(DateUtil.getLastDayOfMonth(DateUtil.stringToDate(cutMonth,DateUtil.ISO_YEAR_MONTH_FORMAT)),DateUtil.ISO_EXPANDED_DATE_FORMAT);
+        Map<Integer, BigDecimal> groupCloudAmount = MapUtil.convertIntegerMap(cloudTeacherOrderDao.sumGroupCloudAmount(cutMonth,cutFirstDayOfMonth,cutLastDayOfMonth));
+        //不承担课程的云教练收入
+        Map<Integer, BigDecimal> personalCloudAmount = MapUtil.convertIntegerMap(cloudTeacherOrderDao.sumPersonalCloudAmount(cutMonth,cutFirstDayOfMonth,cutLastDayOfMonth));
+        List<Map> courseFeeStat = courseScheduleStudentPaymentDao.statCourseFee(cutFirstDayOfMonth,cutLastDayOfMonth);
+        Map<Integer, BigDecimal> courseIncome = courseFeeStat.stream().collect(Collectors.toMap(s -> Integer.parseInt(s.get("key").toString()), s -> BigDecimal.valueOf(Double.parseDouble(s.get("value").toString()))));
         for (Integer organId : listMap.keySet()) {
             OperatingTotalIncomeDto incomeDto = new OperatingTotalIncomeDto();
             incomeDto.setOrganName(userOrganNameMap.get(organId));
@@ -2530,11 +2535,11 @@ public class ExportServiceImpl implements ExportService {
                 row.setOrderAmount(row.getExpectAmount().add(row.getCouponRemitFee()));
                 i++;
                 //学员指导课费
-                incomeDto.setStudentGuidanceIncome(incomeDto.getStudentGuidanceIncome()
-                        .add(row.getMusicGroupCourseFee())
-                        .add(row.getVipCourseFee())
-                        .add(row.getPracticeCourseFee())
-                        .add(row.getTheoryCourseFee()));
+//                incomeDto.setStudentGuidanceIncome(incomeDto.getStudentGuidanceIncome()
+//                        .add(row.getMusicGroupCourseFee())
+//                        .add(row.getVipCourseFee())
+//                        .add(row.getPracticeCourseFee())
+//                        .add(row.getTheoryCourseFee()));
                 //学校课程采买
                 incomeDto.setCoursePurchaseIncome(incomeDto.getCoursePurchaseIncome()
                         .add(row.getCourseSchoolBuyAmount()));
@@ -2581,6 +2586,8 @@ public class ExportServiceImpl implements ExportService {
                 incomeDto.setLargeInstruments(incomeDto.getLargeInstruments()
                         .add(row.getLargeMusicalFee()));
             }
+            //学员指导课费
+            incomeDto.setStudentGuidanceIncome(incomeDto.getStudentGuidanceIncome().add(courseIncome.getOrDefault(organId,BigDecimal.ZERO)));
             incomeDto.setCloudCoachIncome(incomeDto.getCloudCoachIncome().add(groupCloudAmount.getOrDefault(organId,BigDecimal.ZERO)));
             incomeDto.setSaleCloudCoachIncome(incomeDto.getSaleCloudCoachIncome().add(personalCloudAmount.getOrDefault(organId,BigDecimal.ZERO)));
             //服务收入

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

@@ -4040,6 +4040,8 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         if (registrations.size() > 0 && studentRegistrationService.quitAllStudent(musicGroup.getId(), "退团(乐团关闭)") <= 0) {
             throw new BizException("处理学生退团失败,请重试");
         }*/
+		//完结所有未处理的退团审批
+		musicGroupQuitDao.finish(musicGroup.getId());
 
         //清除剩余未排课时长
         musicGroupPaymentStudentCourseDetailService.clearRemainCourseMinutesByMusicGroupId(musicGroupId);

+ 28 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentMemberUpdateLogServiceImpl.java

@@ -0,0 +1,28 @@
+package com.ym.mec.biz.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ym.mec.biz.dal.dao.StudentMemberUpdateLogDao;
+import com.ym.mec.biz.dal.entity.StudentMemberUpdateLog;
+import com.ym.mec.biz.service.StudentMemberUpdateLogService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+/**
+ * 学员云教练时长修改记录(StudentMemberUpdateLog)表服务实现类
+ *
+ * @author zx
+ * @since 2023-05-17 11:13:44
+ */
+@Service("studentMemberUpdateLogService")
+public class StudentMemberUpdateLogServiceImpl extends ServiceImpl<StudentMemberUpdateLogDao, StudentMemberUpdateLog> implements StudentMemberUpdateLogService {
+
+    private final static Logger log = LoggerFactory.getLogger(StudentMemberUpdateLogServiceImpl.class);
+
+    @Override
+    public StudentMemberUpdateLogDao getDao(){
+            return this.baseMapper;
+    }
+
+}
+

+ 122 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderServiceImpl.java

@@ -1471,6 +1471,128 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
 
     @Override
     @Transactional
+    public void mallBuyOrderCallback1(Long orderId) {
+        StudentPaymentOrder studentPaymentOrder = studentPaymentOrderService.get(orderId);
+
+        Integer userId = studentPaymentOrder.getUserId();
+
+        Map<Integer, String> map = new HashMap<>();
+        map.put(userId, userId.toString());
+
+            try {
+                contractService.transferProduceContract(userId, null, studentPaymentOrder.getType());
+            } catch (Exception e) {
+                logger.error("产品协议生成失败", e);
+            }
+            Long paymentOrderId = studentPaymentOrder.getId();
+            Integer organId = studentPaymentOrder.getOrganId();
+            String transNo = studentPaymentOrder.getTransNo();
+            String orderNo = studentPaymentOrder.getOrderNo();
+            BigDecimal balancePaymentAmount = studentPaymentOrder.getBalancePaymentAmount();
+            //解析student_goods_sell字段goodsJson,生成订单详情和sellOrder
+            StudentGoodsSellDto studentGoodsSellDto = studentGoodsSellDao.getStudentGoodsSellDto(studentPaymentOrder.getOrderNo());
+            if(Objects.nonNull(studentGoodsSellDto)){
+                if(StringUtils.isNotEmpty(studentGoodsSellDto.getGoodsJson())){
+                    JSONObject jsonObject = JSON.parseObject(studentGoodsSellDto.getGoodsJson());
+                    String orderItemList = jsonObject.getString("orderItemList");
+                    if(StringUtils.isNotEmpty(orderItemList)){
+                        List<GoodsOrderItemVO> goodsOrderItemVOS = JSON.parseArray(orderItemList, GoodsOrderItemVO.class);
+                        long count = goodsOrderItemVOS.stream().filter(e -> StringUtils.isEmpty(e.getOrderSn())).count();
+                        //如果有空的商品货号,不处理
+                        if(count == 0l){
+                            List<String> productSns = goodsOrderItemVOS.stream().map(e -> e.getProductSn()).distinct().collect(Collectors.toList());
+                            List<Goods> goodsList = goodsDao.findBySns(productSns);
+                            //如果有不匹配的商品货号,不处理
+                            if(CollectionUtils.isEmpty(goodsList) || goodsList.size() < productSns.size()){
+                                return;
+                            }
+                            Map<String, Goods> goodsSnMap = goodsList.stream().collect(Collectors.groupingBy(e -> e.getSn(),
+                                    Collectors.collectingAndThen(Collectors.toList(), v -> v.get(0))));
+                            List<StudentPaymentOrderDetail> orderDetails = new ArrayList<>();
+                            List<SellOrder> sellOrders = new ArrayList<>();
+                            BigDecimal subjectBalance = balancePaymentAmount;
+                            for (int i = 0; i < goodsOrderItemVOS.size(); i++) {
+                                GoodsOrderItemVO goodsVo = goodsOrderItemVOS.get(i);
+                                Goods goods = goodsSnMap.get(goodsVo.getProductSn());
+                                for (int j = 0; j < goodsVo.getProductQuantity(); j++) {
+                                    StudentPaymentOrderDetail detail = new StudentPaymentOrderDetail();
+                                    detail.setType(OrderDetailTypeEnum.valueOf(goods.getType() == GoodsType.INSTRUMENT?"MUSICAL":goods.getType().getCode()));
+                                    detail.setGoodsIdList(goods.getId().toString());
+                                    detail.setPrice(goodsVo.getRealAmount());
+                                    detail.setRemitFee(BigDecimal.ZERO);
+                                    detail.setPaymentOrderId(paymentOrderId);
+                                    orderDetails.add(detail);
+                                }
+
+                                BigDecimal totalAmount = goodsVo.getRealAmount().multiply(new BigDecimal(goodsVo.getProductQuantity()));
+                                SellOrder sellOrder = new SellOrder();
+                                sellOrder.setOrganId(organId);
+                                sellOrder.setTransNo(transNo);
+                                sellOrder.setOrderId(paymentOrderId);
+                                sellOrder.setOrderNo(orderNo);
+                                sellOrder.setExpectAmount(totalAmount);
+                                if(goodsOrderItemVOS.size() - 1 == i){
+                                    sellOrder.setBalanceAmount(subjectBalance);
+                                }else {
+                                    //获取比例
+                                    BigDecimal ratioAmount = totalAmount.divide(studentGoodsSellDto.getExpectAmount(), 6, BigDecimal.ROUND_HALF_UP);
+                                    BigDecimal multiply = balancePaymentAmount.multiply(ratioAmount).setScale(2, BigDecimal.ROUND_HALF_UP);
+                                    subjectBalance = subjectBalance.subtract(multiply);
+                                    sellOrder.setBalanceAmount(multiply);
+                                }
+                                sellOrder.setActualAmount(totalAmount.subtract(sellOrder.getBalanceAmount()));
+
+                                AccountType accountType = sysPaymentConfigService.checkAccountType(PaymentChannelEnum.valueOf(studentPaymentOrder.getPaymentChannel()), studentPaymentOrder.getMerNos(), studentPaymentOrder.getTenantId());
+                                GoodsProcurement goodsProcurement = null;
+                                if(StockType.INTERNAL.equals(goods.getStockType())||(StockType.ALL.equals(goods.getStockType())&&AccountType.INTERNAL.equals(accountType))){
+                                    goodsProcurement = goodsProcurementDao.getWithStockSurplusProcurement(goods.getId());
+                                    if(Objects.nonNull(goodsProcurement)){
+                                        goodsProcurement.setStockSoldNum(new AtomicInteger(goodsProcurement.getStockSoldNum()).incrementAndGet());
+                                    }
+                                }else if(StockType.EXTERNAL.equals(goods.getStockType())||(StockType.ALL.equals(goods.getStockType())&&AccountType.EXTERNAL.equals(accountType))){
+                                    goodsProcurement = goodsProcurementDao.getWithTaxStockSurplusProcurement(goods.getId());
+                                    if(Objects.nonNull(goodsProcurement)){
+                                        goodsProcurement.setTaxStockSoldNum(new AtomicInteger(goodsProcurement.getTaxStockSoldNum()).incrementAndGet());
+                                    }
+                                }
+
+                                //如果有采购清单,初始化总部成本价
+                                if(Objects.nonNull(goodsProcurement)){
+                                    goodsProcurementDao.update(goodsProcurement);
+                                    sellOrder.setBatchNo(goodsProcurement.getBatchNo());
+                                    sellOrder.setSellCost(goodsProcurement.getDiscountPrice());
+                                    Map<String, BigDecimal> CostMap = new HashMap<>();
+                                    CostMap.put("sellCost", goodsProcurement.getDiscountPrice());
+                                    if (Objects.nonNull(goodsProcurement.getAgreeCostPrice())) {
+                                        CostMap.put("SellCost2", goodsProcurement.getAgreeCostPrice());
+                                    }
+                                    sellOrder.setSellCost2(JSON.toJSONString(CostMap));
+                                    sellOrder.setBatchNo(goodsProcurement.getBatchNo());
+                                    sellOrder.setOrganSellCost(goods.getOrganCostPrice());
+                                }
+                                sellOrder.setNum(goodsVo.getProductQuantity());
+                                sellOrder.setUserId(userId);
+                                sellOrder.setPaymentChannel(studentPaymentOrder.getPaymentChannel());
+                                sellOrder.setMerNo(studentPaymentOrder.getMerNos());
+                                sellOrder.setStockType(goods.getStockType());
+                                sellOrder.setAccountType(accountType);
+                                sellOrder.setStatus(SellStatus.NORMAL);
+                                sellOrder.setSellTime(studentPaymentOrder.getPayTime());
+                                sellOrder.setGoodsId(goods.getId());
+                                sellOrder.setGoodsName(goods.getName());
+                                sellOrder.setType(SellTypeEnum.valueOf(goods.getType().getCode()));
+                                sellOrders.add(sellOrder);
+                            }
+                            sellOrderDao.batchInsert(sellOrders);
+                            studentPaymentOrderDetailService.batchAdd(orderDetails);
+                        }
+                    }
+                }
+            }
+    }
+
+    @Override
+    @Transactional
     public void mallSaveOrderInfo(MallCreateOrderModel model) {
 
         StudentGoodsSell studentGoodsSell = studentGoodsSellDao.findByOrderNo(model.getOrderNo());

+ 26 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServiceImpl.java

@@ -90,6 +90,8 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
     private ImFeignService imFeignService;
     @Autowired
     private StudentOperatingVisitDao studentOperatingVisitDao;
+    @Autowired
+    private StudentMemberUpdateLogDao studentMemberUpdateLogDao;
 
     @Autowired
     private StudentPlusMapper studentPlusMapper;
@@ -1579,6 +1581,30 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
         return students.stream().collect(Collectors.toMap(Student::getUserId, Function.identity()));
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateStudentMember(Integer userId, Date endTime,String memo,Integer operatorId) {
+        Student student = studentDao.get(userId);
+        if(Objects.isNull(student)){
+            throw new BizException("学员信息不存在");
+        }
+        StudentMemberUpdateLog studentMemberUpdateLog = new StudentMemberUpdateLog();
+        studentMemberUpdateLog.setStudentId(userId);
+        studentMemberUpdateLog.setOldStartTime(student.getMembershipStartTime());
+        studentMemberUpdateLog.setOldEndTime(student.getMembershipEndTime());
+        studentMemberUpdateLog.setMemo(memo);
+        if (endTime == null || endTime.compareTo(new Date()) < 0){
+            studentDao.cleanMember(userId);
+        }else {
+            student.setMembershipEndTime(endTime);
+            studentDao.updateStudentMember(student);
+            studentMemberUpdateLog.setNewStartTime(student.getMembershipStartTime());
+            studentMemberUpdateLog.setNewEndTime(student.getMembershipEndTime());
+        }
+        //添加修改日志
+        studentMemberUpdateLogDao.insert(studentMemberUpdateLog);
+    }
+
     @Transactional(rollbackFor = Exception.class)
     public  <T extends BaseStudentDto> void insertStudent(T baseStudent){
         Student student = new Student();

+ 42 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupActivityServiceImpl.java

@@ -23,7 +23,6 @@ import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.string.MessageFormatter;
-
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -124,6 +123,47 @@ public class VipGroupActivityServiceImpl extends BaseServiceImpl<Integer, VipGro
         return vipGroupActivityDao;
     }
 
+	@Override
+	public PageInfo<VipGroupActivity> queryPage(VipGroupActivityQueryInfo queryInfo){
+		PageInfo<VipGroupActivity> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+		Map<String, Object> params = new HashMap<String, Object>();
+		MapUtil.populateMap(params, queryInfo);
+
+		List<VipGroupActivity> dataList = null;
+		int count = this.findCount(params);
+		if (count > 0) {
+			pageInfo.setTotal(count);
+			params.put("offset", pageInfo.getOffset());
+			dataList = this.getDAO().queryPage(params);
+			String organIds = dataList.stream().map(e -> e.getOrganId()).filter(e -> StringUtils.isNotEmpty(e)).collect(Collectors.joining(","));
+			Set<Integer> organIdList = Arrays.stream(organIds.split(",")).map(e -> Integer.parseInt(e)).collect(Collectors.toSet());
+			Map<Integer, String> organNameMap = new HashMap<>();
+			if(!CollectionUtils.isEmpty(organIdList)){
+				organNameMap = this.getMap("organization", "id_", "name_", organIdList, queryInfo.getTenantId(), Integer.class, String.class);
+			}
+			for (VipGroupActivity activity : dataList) {
+				if(StringUtils.isNotEmpty(activity.getOrganId())){
+					StringBuffer sb = new StringBuffer();
+					for (String organId : activity.getOrganId().split(",")) {
+						String s = organNameMap.get(Integer.parseInt(organId));
+						if(StringUtils.isNotEmpty(s)){
+							if(sb.length() > 0){
+								sb.append(",");
+							}
+							sb.append(s);
+						}
+					}
+					activity.setOrganName(sb.toString());
+				}
+			}
+		}
+		if (count == 0) {
+			dataList = new ArrayList<>();
+		}
+		pageInfo.setRows(dataList);
+		return pageInfo;
+	}
+
     @Override
 	public VipGroupActivityAddDto addVipGroupActivity(VipGroupActivityAddDto vipGroupActivityAddDto) {
 
@@ -183,6 +223,7 @@ public class VipGroupActivityServiceImpl extends BaseServiceImpl<Integer, VipGro
 			throw new BizException("活动不存在!");
 		}
 		if("PROGRESS".equals(oldVipGroupActivity.getStatus())){
+			oldVipGroupActivity.setOrganId(vipGroupActivityAddDto.getOrganId());
 			oldVipGroupActivity.setCoursesStartTime(vipGroupActivityAddDto.getCoursesStartTime());
 			oldVipGroupActivity.setCoursesEndTime(vipGroupActivityAddDto.getCoursesEndTime());
 			oldVipGroupActivity.setStartTime(vipGroupActivityAddDto.getStartTime());

+ 9 - 0
mec-biz/src/main/resources/config/mybatis/CourseScheduleStudentPaymentMapper.xml

@@ -1109,4 +1109,13 @@
         </foreach>
         group by cssp.user_id_ , u.organ_id_
 	</select>
+    <select id="statCourseFee" resultType="java.util.Map">
+		select cs.organ_id_ 'key',SUM(cssp.actual_price_) 'value' from course_schedule cs
+		left join course_schedule_student_payment cssp ON cssp.course_schedule_id_ = cs.id_
+		left join course_schedule_teacher_salary csts ON csts.course_schedule_id_ = cs.id_
+		LEFT JOIN teacher t ON t.id_ = csts.user_id_
+		where cs.class_date_ BETWEEN #{cutFirstDayOfMonth} AND #{cutLastDayOfMonth} AND cssp.actual_price_ > 0
+		AND cs.del_flag_ = 0 AND cs.is_lock_ = 0 and cs.pre_course_flag_ = 0 AND t.is_settlement_salary_ = 1 AND csts.settlement_time_ IS NOT NULL AND cs.tenant_id_ = 1
+		group by cs.organ_id_
+	</select>
 </mapper>

+ 2 - 2
mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml

@@ -841,8 +841,8 @@
 		left join vip_group_category vgc on vgc.id_ = vg.vip_group_category_id_
 		left join teacher t on t.id_ = csts.user_id_ 
 		WHERE cs.`group_type_` = 'VIP'
-		  AND csts.settlement_time_ IS NULL
-		  and cs.class_date_ between #{startDate} and #{endDate} and csts.tenant_id_ = #{tenantId}
+		AND csts.settlement_time_ IS NULL
+		and cs.class_date_ between #{startDate} and #{endDate} and csts.tenant_id_ = #{tenantId}
 	</select>
 
     <select id="isTeacher" resultType="java.lang.Boolean">

+ 3 - 0
mec-biz/src/main/resources/config/mybatis/MusicGroupQuitMapper.xml

@@ -252,4 +252,7 @@
             #{musicGroupId}
         </foreach>
     </select>
+    <select id="finish">
+        update music_group_quit set status_ = 'CANCELED',reason_ = '乐团关闭,批量关闭退团审批' where status_ = 'PROCESSING' AND music_group_id_ = #{musicGroupId}
+    </select>
 </mapper>

+ 4 - 0
mec-biz/src/main/resources/config/mybatis/StudentMemberUpdateLogMapper.xml

@@ -0,0 +1,4 @@
+<?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.StudentMemberUpdateLogDao">
+</mapper>

+ 7 - 0
mec-web/src/main/java/com/ym/mec/web/controller/APIController.java

@@ -136,6 +136,13 @@ public class APIController extends BaseController {
 		return succeed(studentPaymentOrderService.createOrder(model));
 	}
 
+	// 历史商城订单数据修复
+	@GetMapping("/initMallOrder")
+	public HttpResponseResult<Map> initMallOrder(Long orderId) throws Exception {
+		studentPaymentOrderService.mallBuyOrderCallback1(orderId);
+		return succeed();
+	}
+
 	// 商城订单优惠券金额
 	@PostMapping("/couponAmount")
 	public HttpResponseResult<Map> couponAmount(@RequestBody MallCreateOrderModel model) {

+ 2 - 1
mec-web/src/main/java/com/ym/mec/web/controller/EmployeeController.java

@@ -16,6 +16,7 @@ import com.ym.mec.biz.service.StudentManageService;
 import com.ym.mec.biz.service.SysEmployeePositionService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.tenant.TenantContextHolder;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -63,7 +64,7 @@ public class EmployeeController extends BaseController {
     @ApiOperation(value = "根据部门获取下面的员工")
     @GetMapping("/queryEmployByOrganId")
     @PreAuthorize("@pcs.hasPermissions('employee/queryEmployByOrganId')")
-    public Object queryEmployByOrganId(EmployeeQueryInfo queryInfo) throws Exception {
+    public HttpResponseResult<PageInfo> queryEmployByOrganId(EmployeeQueryInfo queryInfo) throws Exception {
         queryInfo.setOrganId(organizationService.getEmployeeOrgan(queryInfo.getOrganId()));
         return succeed(employeeService.queryEmployByOrganId(queryInfo));
     }

+ 7 - 17
mec-web/src/main/java/com/ym/mec/web/controller/EmployeeInfoController.java

@@ -1,5 +1,6 @@
 package com.ym.mec.web.controller;
 
+import com.ym.mec.biz.service.SysUserService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 
@@ -35,21 +36,18 @@ public class EmployeeInfoController extends BaseController {
     private EmployeeVisitService employeeVisitService;
 
 	@Autowired
-	private SysUserFeignService sysUserFeignService;
+	private SysUserService sysUserService;
 
 
     @ApiOperation(value = "新增员工信息")
     @PostMapping("/insert")
     @PreAuthorize("@pcs.hasPermissions('employeeInfo/insert')")
     public Object insert(@RequestBody EmployeeInfo employeeInfo) {
-    	SysUser sysUser = sysUserFeignService.queryUserInfo();
-		if (sysUser == null) {
-			return failed("用户信息获取失败");
-		}
+        Integer userId = sysUserService.getUserId();
         EmployeeInfo info = employeeInfoService.findByPhone(employeeInfo.getMobileNo());
 		if(info != null){
 		    if(employeeInfo.getCover()){
-                employeeInfo.setOperatorId(sysUser.getId());
+                employeeInfo.setOperatorId(userId);
                 employeeInfo.setId(info.getId());
                 Date date = new Date();
                 employeeInfo.setUpdateTime(date);
@@ -60,7 +58,7 @@ public class EmployeeInfoController extends BaseController {
                 return failed(HttpStatus.PARTIAL_CONTENT,"该手机号已在系统中,是否更新原有数据");
             }
         }
-		employeeInfo.setOperatorId(sysUser.getId());
+		employeeInfo.setOperatorId(userId);
     	Date date = new Date();
     	employeeInfo.setUpdateTime(date);
     	employeeInfo.setCreateTime(date);
@@ -72,15 +70,11 @@ public class EmployeeInfoController extends BaseController {
     @PostMapping("/update")
     @PreAuthorize("@pcs.hasPermissions('employeeInfo/update')")
     public Object update(@RequestBody EmployeeInfo employeeInfo) {
-    	SysUser sysUser = sysUserFeignService.queryUserInfo();
-		if (sysUser == null) {
-			return failed("用户信息获取失败");
-		}
         EmployeeInfo info = employeeInfoService.findByPhone(employeeInfo.getMobileNo());
 		if(info != null && !info.getId().equals(employeeInfo.getId())){
             return failed("该手机号已存在");
         }
-		employeeInfo.setOperatorId(sysUser.getId());
+		employeeInfo.setOperatorId(sysUserService.getUserId());
     	Date date = new Date();
     	employeeInfo.setUpdateTime(date);
     	employeeInfoService.update(employeeInfo);
@@ -105,11 +99,7 @@ public class EmployeeInfoController extends BaseController {
     @PostMapping("/insertVisit")
     @PreAuthorize("@pcs.hasPermissions('employeeInfo/insertVisit')")
     public Object insertVisit(@RequestBody EmployeeVisit employeeVisit) {
-    	SysUser sysUser = sysUserFeignService.queryUserInfo();
-		if (sysUser == null) {
-			return failed("用户信息获取失败");
-		}
-		employeeVisit.setOperatorId(sysUser.getId());
+		employeeVisit.setOperatorId(sysUserService.getUserId());
     	Date date = new Date();
     	employeeVisit.setCreateTime(date);
     	employeeVisitService.insert(employeeVisit);

+ 2 - 2
mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java

@@ -1983,10 +1983,10 @@ public class ExportController extends BaseController {
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{
                     "交易流水号", "订单号", "销售日期", "销售类型", "商品名称", "数量", "订单金额(元)", "应付金额(元)", "余额支付(元)",
-                    "现金支付(元)", "优惠金额(元)", "销售成本(元)", "学员姓名", "交易方式", "收款账户", "账户类型", "扣减库存", "所属分部",
+                    "现金支付(元)", "优惠金额(元)", "总部销售成本(元)", "分部销售成本(元)", "学员姓名", "交易方式", "收款账户", "账户类型", "扣减库存", "所属分部",
                     "所属学校", "教务老师", "确认收货", "状态"}, new String[]{
                     "transNo", "orderNo", "sellTime", "type.desc", "goodsName", "num", "orderAmount", "expectAmount", "balanceAmount",
-                    "actualAmount", "couponRemitAmount", "sellCost", "userName", "paymentChannelStr", "merNo", "accountTypeStr", "stockType.msg", "organName",
+                    "actualAmount", "couponRemitAmount", "sellCost",  "organSellCost", "userName", "paymentChannelStr", "merNo", "accountTypeStr", "stockType.msg", "organName",
                     "schoolName", "eduTeacher", "receiveStatusStr", "status.msg"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");

+ 0 - 14
mec-web/src/main/java/com/ym/mec/web/controller/SellOrderController.java

@@ -1,27 +1,18 @@
 package com.ym.mec.web.controller;
 
 
-import com.ym.mec.auth.api.client.SysUserFeignService;
-import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.dao.EmployeeDao;
-import com.ym.mec.biz.dal.entity.Employee;
 import com.ym.mec.biz.dal.entity.SellOrder;
 import com.ym.mec.biz.dal.enums.SellStatus;
 import com.ym.mec.biz.dal.enums.SellTypeEnum;
-import com.ym.mec.biz.dal.page.RepairStudentQueryInfo;
 import com.ym.mec.biz.dal.page.SellOrderQueryInfo;
 import com.ym.mec.biz.service.OrganizationService;
 import com.ym.mec.biz.service.SellOrderService;
-import com.ym.mec.biz.service.StudentRepairService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
-import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.util.date.DateUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.apache.commons.lang3.StringUtils;
-import org.snaker.engine.access.Page;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -30,10 +21,7 @@ import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.math.BigDecimal;
 import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
 import java.util.List;
 
 @RequestMapping("sellOrder")
@@ -42,8 +30,6 @@ import java.util.List;
 public class SellOrderController extends BaseController {
 
     @Autowired
-    private SysUserFeignService sysUserFeignService;
-    @Autowired
     private SellOrderService sellOrderService;
     @Autowired
     private OrganizationService organizationService;

+ 10 - 0
mec-web/src/main/java/com/ym/mec/web/controller/StudentManageController.java

@@ -42,6 +42,8 @@ public class StudentManageController extends BaseController {
     private OrganizationService organizationService;
     @Autowired
     private StudentService studentService;
+    @Autowired
+    private SysUserService sysUserService;
 
     @Autowired
     private SysUserService sysUserService;
@@ -514,4 +516,12 @@ public class StudentManageController extends BaseController {
         return succeed(musicGroupService.getSubjectListByIdAndCoopId(musicGroupId, coopId));
     }
 
+
+    @ApiOperation(value = "修改学员会员时长")
+    @PostMapping("/updateStudentMember")
+    @PreAuthorize("@pcs.hasPermissions('studentManage/updateStudentMember')")
+    public HttpResponseResult updateStudentMember(Integer userId,Date endTime,String memo) throws Exception {
+        studentService.updateStudentMember(userId,endTime,memo,sysUserService.getUserId());
+        return succeed();
+    }
 }

+ 2 - 1
mec-web/src/main/java/com/ym/mec/web/controller/VipGroupActivityController.java

@@ -16,6 +16,7 @@ import com.ym.mec.biz.service.VipGroupActivityService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.exception.BizException;
+import com.ym.mec.common.page.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
@@ -114,7 +115,7 @@ public class VipGroupActivityController extends BaseController {
     @ApiOperation(value = "分页查询活动方案")
     @GetMapping("/queryPage")
     @PreAuthorize("@pcs.hasPermissions('vipGroupActivity/queryPage')")
-    public Object queryPage(VipGroupActivityQueryInfo queryInfo){
+    public HttpResponseResult<PageInfo<VipGroupActivity>> queryPage(VipGroupActivityQueryInfo queryInfo){
         queryInfo.setOrganId(organizationService.getEmployeeOrgan(queryInfo.getOrganId()));
         Integer applyToStudentType = queryInfo.getApplyToStudentType();
         if(applyToStudentType != null){

+ 4 - 4
mec-web/src/main/resources/exportColumnMapper.ini

@@ -67,8 +67,8 @@ headColumns = ["交易流水号", "订单号", "订单日期", "交易类型", "
 fieldColumns = ["transNo", "orderNo", "createTime", "type.desc", "expectAmount", "actualAmount", "user.username", "user.phone", "paymentChannel", "merNos", "status.msg", "memo", "paymentChannel.desc"]
 
 [导出老师课酬]
-headColumns = ["课时编号", "老师编号", "老师姓名", "老师分部", "工作类别","课程分部", "课程组编号", "课程班名称", "乐团模式", "vip活动名称", "Vip课程类型", "阶梯奖励名称", "线上课/线下课", "线上课单价", "线下课单价","课程类别", "课时时长", "实际上课时长", "上课日期","上课时间", "教师签到状态", "教师签退状态", "教师签到时间", "教师签退时间", "考勤申诉处理状态", "处理意见","主辅", "上课地点", "应到学员", "学员签到时间", "学员签退时间", "课时课酬", "阶梯奖励", "扣款原因", "收入", "云教练转结"]
-fieldColumns = ["courseScheduleId", "teacherId", "teacherName", "teacherOrganName", "jobType", "courseScheduleOrganName", "groupId", "groupName", "changeType", "vipActiveName", "vipCategoryName", "activeName", "teachMode", "onlineClassesUnitPrice", "offlineClassesUnitPrice", "courseScheduleType", "signCourseScheduleTime", "currentTime", "classDate", "courseScheduleStartTime", "signInStatus", "signOutStatus", "signInTime", "signOutTime", "complaintsStatus", "disposeContent", "teacherRole", "address", "studentNum", "studentSignInTime", "studentSignOutTime", "price", "rewards", "deductionReason", "courseIncome", "cloudReverse"]
+headColumns = ["课时编号", "老师编号", "老师姓名", "老师分部", "工作类别","课程分部", "课程组编号", "课程班名称", "乐团模式", "vip活动名称", "Vip课程类型", "阶梯奖励名称", "线上课/线下课", "线上课单价", "线下课单价","课程类别", "课时时长", "实际上课时长", "上课日期","上课时间", "教师签到状态", "教师签退状态", "教师签到时间", "教师签退时间", "考勤申诉处理状态", "处理意见","主辅", "上课地点", "应到学员", "学员签到时间", "学员签退时间", "课时课酬", "阶梯奖励", "扣款原因", "收入"]
+fieldColumns = ["courseScheduleId", "teacherId", "teacherName", "teacherOrganName", "jobType", "courseScheduleOrganName", "groupId", "groupName", "changeType", "vipActiveName", "vipCategoryName", "activeName", "teachMode", "onlineClassesUnitPrice", "offlineClassesUnitPrice", "courseScheduleType", "signCourseScheduleTime", "currentTime", "classDate", "courseScheduleStartTime", "signInStatus", "signOutStatus", "signInTime", "signOutTime", "complaintsStatus", "disposeContent", "teacherRole", "address", "studentNum", "studentSignInTime", "studentSignOutTime", "price", "rewards", "deductionReason", "courseIncome"]
 
 [导出老师结转奖励]
 headColumns = ["课程组编号", "课程组名称", "分部", "指导老师", "是否结转", "结转金额", "结转日期", "备注"]
@@ -199,8 +199,8 @@ headColumns = ["学员编号", "学员姓名", "指导老师", "教务老师", "
 fieldColumns = ["studentId", "studentName", "teacherName", "eduTeacherName", "createTime", "orderType.msg", "actualAmount"]
 
 [销售列表导出]
-headColumns = ["交易流水号", "订单号", "销售日期", "销售类型", "商品名称", "数量", "订单金额(元)", "应付金额(元)", "余额支付(元)","现金支付(元)", "优惠金额(元)", "销售成本(元)", "学员姓名", "交易方式", "收款账户", "账户类型", "扣减库存", "所属分部","所属学校", "教务老师", "确认收货", "状态"]
-fieldColumns = ["transNo", "orderNo", "sellTime", "type.desc", "goodsName", "num", "orderAmount", "expectAmount", "balanceAmount", "actualAmount", "couponRemitAmount", "sellCost", "userName", "paymentChannelStr", "merNo", "accountTypeStr", "stockType.msg", "organName", "schoolName", "eduTeacher", "receiveStatusStr", "status.msg"]
+headColumns = ["交易流水号", "订单号", "销售日期", "销售类型", "商品名称", "数量", "订单金额(元)", "应付金额(元)", "余额支付(元)","现金支付(元)", "优惠金额(元)", "总部销售成本(元)",  "分部销售成本(元)", "学员姓名", "交易方式", "收款账户", "账户类型", "扣减库存", "所属分部","所属学校", "教务老师", "确认收货", "状态"]
+fieldColumns = ["transNo", "orderNo", "sellTime", "type.desc", "goodsName", "num", "orderAmount", "expectAmount", "balanceAmount", "actualAmount", "couponRemitAmount", "sellCost","organSellCost", "userName", "paymentChannelStr", "merNo", "accountTypeStr", "stockType.msg", "organName", "schoolName", "eduTeacher", "receiveStatusStr", "status.msg"]
 
 [欠费学员列表导出]
 headColumns = ["学员编号", "学员姓名", "所属分部", "合作单位", "所在乐团", "乐团主管", "声部", "性别", "家长姓名", "家长联系电话", "欠费金额"]