瀏覽代碼

Merge remote-tracking branch 'origin/20221010' into 20221010

zouxuan 2 年之前
父節點
當前提交
23144d1af8
共有 73 個文件被更改,包括 1715 次插入587 次删除
  1. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ActivityUserMapperDao.java
  2. 0 9
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentAttendanceDao.java
  3. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentDao.java
  4. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRegistrationDao.java
  5. 0 50
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ActivityMemberPayParamDto.java
  6. 50 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ActivityPayParamDto.java
  7. 97 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ActivityUserMapperDetailDto.java
  8. 160 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ActivityUserMapperSumDto.java
  9. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/BasicUserDto.java
  10. 0 12
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MemberPayParamDto.java
  11. 12 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/PayParamBasicDto.java
  12. 0 23
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/PracticeGroupBuyParamsDto.java
  13. 0 12
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/RegisterPayDto.java
  14. 0 27
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/RenewParamDto.java
  15. 0 12
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/SporadicPayDto.java
  16. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentManageListDto.java
  17. 13 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentStandardDto.java
  18. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ActivityUserMapper.java
  19. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/Student.java
  20. 0 14
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentRepair.java
  21. 23 4
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/VipGroupActivity.java
  22. 5 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java
  23. 68 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/ActivityUserMapperDetailQueryInfo.java
  24. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/RepairStudentQueryInfo.java
  25. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentManageQueryInfo.java
  26. 7 1
      mec-biz/src/main/java/com/ym/mec/biz/service/ActivityUserMapperService.java
  27. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/CloudTeacherOrderService.java
  28. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/service/PracticeGroupSellPriceService.java
  29. 0 2
      mec-biz/src/main/java/com/ym/mec/biz/service/SporadicChargeInfoService.java
  30. 0 1
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentAttendanceService.java
  31. 23 0
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentService.java
  32. 11 12
      mec-biz/src/main/java/com/ym/mec/biz/service/SysUserCashAccountService.java
  33. 23 0
      mec-biz/src/main/java/com/ym/mec/biz/service/VipGroupActivityService.java
  34. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/service/VipGroupDefaultClassesUnitPriceService.java
  35. 53 5
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ActivityUserMapperServiceImpl.java
  36. 13 5
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CloudTeacherOrderServiceImpl.java
  37. 1 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MemberRankSettingServiceImpl.java
  38. 1 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderDetailServiceImpl.java
  39. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderServiceImpl.java
  40. 108 74
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  41. 78 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/PayServiceImpl.java
  42. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/PracticeGroupSellPriceServiceImpl.java
  43. 1 9
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/PracticeGroupServiceImpl.java
  44. 1 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentAttendanceServiceImpl.java
  45. 89 48
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderServiceImpl.java
  46. 10 8
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRepairServiceImpl.java
  47. 21 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServiceImpl.java
  48. 9 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysUserCashAccountLogServiceImpl.java
  49. 44 71
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysUserCashAccountServiceImpl.java
  50. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java
  51. 317 17
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupActivityServiceImpl.java
  52. 12 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupDefaultClassesUnitPriceServiceImpl.java
  53. 19 19
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java
  54. 113 4
      mec-biz/src/main/resources/config/mybatis/ActivityUserMapperMapper.xml
  55. 2 1
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  56. 3 1
      mec-biz/src/main/resources/config/mybatis/CourseScheduleStudentPaymentMapper.xml
  57. 5 1
      mec-biz/src/main/resources/config/mybatis/StudentManageDao.xml
  58. 6 0
      mec-biz/src/main/resources/config/mybatis/StudentMapper.xml
  59. 7 0
      mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml
  60. 15 9
      mec-biz/src/main/resources/config/mybatis/StudentRepairMapper.xml
  61. 4 1
      mec-biz/src/main/resources/config/mybatis/VipGroupActivityMapper.xml
  62. 77 39
      mec-student/src/main/java/com/ym/mec/student/controller/ActivityController.java
  63. 15 4
      mec-student/src/main/java/com/ym/mec/student/controller/StudentOrderController.java
  64. 6 0
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/ActivityUserMapperController.java
  65. 3 1
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/ClassGroupController.java
  66. 23 0
      mec-web/src/main/java/com/ym/mec/web/controller/ActivityUserMapperController.java
  67. 0 7
      mec-web/src/main/java/com/ym/mec/web/controller/CloudTeacherOrderController.java
  68. 21 14
      mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupController.java
  69. 3 6
      mec-web/src/main/java/com/ym/mec/web/controller/VipGroupActivityController.java
  70. 2 1
      mec-web/src/main/java/com/ym/mec/web/controller/education/EduActivityUserMapperController.java
  71. 12 51
      mec-web/src/main/java/com/ym/mec/web/controller/education/EduRepairController.java
  72. 7 2
      mec-web/src/main/java/com/ym/mec/web/controller/education/EduStudentController.java
  73. 0 1
      mec-web/src/main/java/com/ym/mec/web/controller/education/EduStudentStudentController.java

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

@@ -130,4 +130,12 @@ public interface ActivityUserMapperDao extends BaseDAO<Integer, ActivityUserMapp
     void batchUpdateFree(@Param("useActivityUserMappers") List<ActivityUserMapper> useActivityUserMappers);
 
     List<ActivityUserMapper> findByIds(@Param("activityUserMapperIds") String activityUserMapperIds);
+
+    List<ActivityUserMapperDetailDto> queryDetailPage(Map<String, Object> params);
+
+    int countDetailPage(Map<String, Object> params);
+
+    int countSumPage(Map<String, Object> params);
+
+    List<ActivityUserMapperSumDto> querySumPage(Map<String, Object> params);
 }

+ 0 - 9
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentAttendanceDao.java

@@ -118,15 +118,6 @@ public interface StudentAttendanceDao extends BaseDAO<Long, StudentAttendance> {
      */
     int queryStudentPersonalAttendancesCount(Map<String,Object> params);
 
-
-    /**
-     * @Author: Joburgess
-     * @Date: 2019/9/18
-     * 统计正常签到的学生数量
-     */
-    @Select("SELECT COUNT(*) FROM student_attendance WHERE class_group_id_=#{classGroupID} AND status_=\"NORMAL\"")
-    int countNormalAttendanceStudentNums(Long classGroupID);
-
     /**
      * @Author: Joburgess
      * @Date: 2019/10/16

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

@@ -426,4 +426,6 @@ public interface StudentDao extends com.ym.mec.common.dal.BaseDAO<Integer, Stude
     List<BaseMapDto> queryStuSubjectId(@Param("organIds") String organIds);
 
     List<BaseMapDto> queryStuSubjectIdByTeacherId(@Param("userId") Integer userId);
+
+    void updateRepairFlag(@Param("userIdList") List<Integer> userIdList, @Param("repairFlag") boolean repairFlag);
 }

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRegistrationDao.java

@@ -772,4 +772,13 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
     List<StudentRegistration> queryServiceStudentByMusicGroupStatus(@Param("nextMonday") String nextMonday,@Param("tenantId") Integer tenantId);
     
     List<StudentOrganDto> queryEffectiveStudent(@Param("organIds") List<Integer> organIds);
+
+    /**
+    * @description: 获取学员乐团主管列表
+     * @param userId
+    * @return java.util.Map<java.lang.Integer,java.lang.String>
+    * @author zx
+    * @date 2022/10/9 18:11
+    */
+    List<Map<Integer, String>> queryStudentEduMap(Integer userId);
 }

+ 0 - 50
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ActivityMemberPayParamDto.java

@@ -1,50 +0,0 @@
-package com.ym.mec.biz.dal.dto;
-
-import java.io.Serializable;
-import java.math.BigDecimal;
-
-public class ActivityMemberPayParamDto extends PayParamBasicDto implements Serializable {
-
-    //前端录入实际缴费金额
-    private BigDecimal amount;
-
-    private Long paymentId;
-
-    //购买数量
-    private Integer val;
-
-    //如果isRepeatPay = true 则需要传入订单号
-    private String orderNo;
-
-    public BigDecimal getAmount() {
-        return amount;
-    }
-
-    public void setAmount(BigDecimal amount) {
-        this.amount = amount;
-    }
-
-    public Long getPaymentId() {
-        return paymentId;
-    }
-
-    public void setPaymentId(Long paymentId) {
-        this.paymentId = paymentId;
-    }
-
-    public Integer getVal() {
-        return val;
-    }
-
-    public void setVal(Integer val) {
-        this.val = val;
-    }
-
-    public String getOrderNo() {
-        return orderNo;
-    }
-
-    public void setOrderNo(String orderNo) {
-        this.orderNo = orderNo;
-    }
-}

+ 50 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ActivityPayParamDto.java

@@ -0,0 +1,50 @@
+package com.ym.mec.biz.dal.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+public class ActivityPayParamDto extends PayParamBasicDto implements Serializable {
+
+    @ApiModelProperty(value = "购买数量",required = false)
+    private Integer buyNum = 1;
+
+    @ApiModelProperty(value = "活动编号",required = false)
+    private Integer vipGroupActivityId;
+
+    private Integer userId;
+
+    private Integer organId;
+
+    public Integer getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(Integer organId) {
+        this.organId = organId;
+    }
+
+    public Integer getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
+
+    public Integer getBuyNum() {
+        return buyNum;
+    }
+
+    public void setBuyNum(Integer buyNum) {
+        this.buyNum = buyNum;
+    }
+
+    public Integer getVipGroupActivityId() {
+        return vipGroupActivityId;
+    }
+
+    public void setVipGroupActivityId(Integer vipGroupActivityId) {
+        this.vipGroupActivityId = vipGroupActivityId;
+    }
+}

+ 97 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ActivityUserMapperDetailDto.java

@@ -0,0 +1,97 @@
+package com.ym.mec.biz.dal.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class ActivityUserMapperDetailDto{
+
+    @ApiModelProperty(value = "活动编号")
+    private Integer activityId;
+
+    @ApiModelProperty(value = "来源")
+    private String addMemo;
+
+    @ApiModelProperty(value = "购买时间")
+    private Date createTime;
+
+    @ApiModelProperty(value = "是否免费")
+    private Boolean freeFlag;
+
+    @ApiModelProperty(value = "剩余课程次数")
+    private Integer subCourseNum;
+
+    @ApiModelProperty(value = "总课次")
+    private Integer totalCourseNum;
+
+    @ApiModelProperty(value = "剩余未排课价值")
+    private BigDecimal subCoursePrice;
+
+    @ApiModelProperty(value = "课类型")
+    private String categoryName = "网管课";
+
+    public Integer getActivityId() {
+        return activityId;
+    }
+
+    public void setActivityId(Integer activityId) {
+        this.activityId = activityId;
+    }
+
+    public String getAddMemo() {
+        return addMemo;
+    }
+
+    public void setAddMemo(String addMemo) {
+        this.addMemo = addMemo;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Boolean getFreeFlag() {
+        return freeFlag;
+    }
+
+    public void setFreeFlag(Boolean freeFlag) {
+        this.freeFlag = freeFlag;
+    }
+
+    public Integer getSubCourseNum() {
+        return subCourseNum;
+    }
+
+    public void setSubCourseNum(Integer subCourseNum) {
+        this.subCourseNum = subCourseNum;
+    }
+
+    public Integer getTotalCourseNum() {
+        return totalCourseNum;
+    }
+
+    public void setTotalCourseNum(Integer totalCourseNum) {
+        this.totalCourseNum = totalCourseNum;
+    }
+
+    public BigDecimal getSubCoursePrice() {
+        return subCoursePrice;
+    }
+
+    public void setSubCoursePrice(BigDecimal subCoursePrice) {
+        this.subCoursePrice = subCoursePrice;
+    }
+
+    public String getCategoryName() {
+        return categoryName;
+    }
+
+    public void setCategoryName(String categoryName) {
+        this.categoryName = categoryName;
+    }
+}

+ 160 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ActivityUserMapperSumDto.java

@@ -0,0 +1,160 @@
+package com.ym.mec.biz.dal.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+
+public class ActivityUserMapperSumDto {
+
+    @ApiModelProperty(value = "手机号")
+    private String phone;
+
+    @ApiModelProperty(value = "学员姓名")
+    private String username;
+
+    @ApiModelProperty(value = "学员编号")
+    private Integer userId;
+
+    @ApiModelProperty(value = "分部")
+    private Integer organId;
+
+    @ApiModelProperty(value = "分部")
+    private String organName;
+
+    @ApiModelProperty(value = "1v1")
+    private String one;
+
+    @ApiModelProperty(value = "1v2")
+    private String two;
+
+    @ApiModelProperty(value = "1v3")
+    private String three;
+
+    @ApiModelProperty(value = "1v4")
+    private String four;
+
+    @ApiModelProperty(value = "1v5")
+    private String five;
+
+    @ApiModelProperty(value = "1v6")
+    private String six;
+
+    @ApiModelProperty(value = "1v7")
+    private String seven;
+
+    @ApiModelProperty(value = "乐理")
+    private String theory;
+
+    @ApiModelProperty(value = "网管")
+    private String practice;
+
+    public Integer getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(Integer organId) {
+        this.organId = organId;
+    }
+
+    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 Integer getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
+
+    public String getOrganName() {
+        return organName;
+    }
+
+    public void setOrganName(String organName) {
+        this.organName = organName;
+    }
+
+    public String getOne() {
+        return one;
+    }
+
+    public void setOne(String one) {
+        this.one = one;
+    }
+
+    public String getTwo() {
+        return two;
+    }
+
+    public void setTwo(String two) {
+        this.two = two;
+    }
+
+    public String getThree() {
+        return three;
+    }
+
+    public void setThree(String three) {
+        this.three = three;
+    }
+
+    public String getFour() {
+        return four;
+    }
+
+    public void setFour(String four) {
+        this.four = four;
+    }
+
+    public String getFive() {
+        return five;
+    }
+
+    public void setFive(String five) {
+        this.five = five;
+    }
+
+    public String getSix() {
+        return six;
+    }
+
+    public void setSix(String six) {
+        this.six = six;
+    }
+
+    public String getSeven() {
+        return seven;
+    }
+
+    public void setSeven(String seven) {
+        this.seven = seven;
+    }
+
+    public String getTheory() {
+        return theory;
+    }
+
+    public void setTheory(String theory) {
+        this.theory = theory;
+    }
+
+    public String getPractice() {
+        return practice;
+    }
+
+    public void setPractice(String practice) {
+        this.practice = practice;
+    }
+}

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

@@ -40,6 +40,17 @@ public class BasicUserDto {
 
     private Integer tenantId;
 
+    @ApiModelProperty(value = "是否需要乐器维修")
+    private Boolean repairFlag = false;
+
+    public Boolean getRepairFlag() {
+        return repairFlag;
+    }
+
+    public void setRepairFlag(Boolean repairFlag) {
+        this.repairFlag = repairFlag;
+    }
+
     public Integer getTenantId() {
         return tenantId;
     }

+ 0 - 12
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MemberPayParamDto.java

@@ -4,13 +4,9 @@ import com.ym.mec.biz.dal.enums.PeriodEnum;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.io.Serializable;
-import java.math.BigDecimal;
 
 public class MemberPayParamDto extends PayParamBasicDto implements Serializable {
 
-    @ApiModelProperty(value = "前端录入实际缴费金额",required = false)
-    private BigDecimal amount;
-
     @ApiModelProperty(value = "用于后台创建的团练宝订单购买",required = false)
     private Long paymentId;
 
@@ -55,14 +51,6 @@ public class MemberPayParamDto extends PayParamBasicDto implements Serializable
         this.periodEnum = periodEnum;
     }
 
-    public BigDecimal getAmount() {
-        return amount;
-    }
-
-    public void setAmount(BigDecimal amount) {
-        this.amount = amount;
-    }
-
     public Long getPaymentId() {
         return paymentId;
     }

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/PayParamBasicDto.java

@@ -3,6 +3,7 @@ package com.ym.mec.biz.dal.dto;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.util.List;
 
 import com.ym.mec.common.entity.BaseEntity;
@@ -17,6 +18,17 @@ public class PayParamBasicDto extends BaseEntity implements Serializable {
     @ApiModelProperty(value = "优惠券列表", required = false)
     private List<Integer> couponIdList;
 
+    @ApiModelProperty(value = "前端录入实际缴费金额",required = false)
+    private BigDecimal amount;
+
+    public BigDecimal getAmount() {
+        return amount;
+    }
+
+    public void setAmount(BigDecimal amount) {
+        this.amount = amount;
+    }
+
     public List<Integer> getCouponIdList() {
         return couponIdList;
     }

+ 0 - 23
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/PracticeGroupBuyParamsDto.java

@@ -2,8 +2,6 @@ package com.ym.mec.biz.dal.dto;
 
 import io.swagger.annotations.ApiModelProperty;
 
-import java.math.BigDecimal;
-
 public class PracticeGroupBuyParamsDto extends PayParamBasicDto{
 
     @ApiModelProperty(value = "课程组ID")
@@ -18,21 +16,8 @@ public class PracticeGroupBuyParamsDto extends PayParamBasicDto{
     @ApiModelProperty(value = "营销活动编号")
     private Integer activityId;
 
-    private BigDecimal amount;
-
     private Integer organId;
 
-//    @ApiModelProperty(value = "购买的会员数量")
-//    private Integer buyMemberNum = 1;
-
-//    public Integer getBuyMemberNum() {
-//        return buyMemberNum;
-//    }
-//
-//    public void setBuyMemberNum(Integer buyMemberNum) {
-//        this.buyMemberNum = buyMemberNum;
-//    }
-
     public Integer getOrganId() {
         return organId;
     }
@@ -41,14 +26,6 @@ public class PracticeGroupBuyParamsDto extends PayParamBasicDto{
         this.organId = organId;
     }
 
-    public BigDecimal getAmount() {
-        return amount;
-    }
-
-    public void setAmount(BigDecimal amount) {
-        this.amount = amount;
-    }
-
     public Integer getActivityId() {
         return activityId;
     }

+ 0 - 12
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/RegisterPayDto.java

@@ -2,7 +2,6 @@ package com.ym.mec.biz.dal.dto;
 
 import io.swagger.annotations.ApiModelProperty;
 
-import java.math.BigDecimal;
 import java.util.List;
 import java.util.Map;
 
@@ -10,8 +9,6 @@ import java.util.Map;
  * 学团注册支付
  */
 public class RegisterPayDto extends PayParamBasicDto{
-    //总金额
-    private BigDecimal amount;
     //报名id
     private Integer registerId;
     //乐器id->type
@@ -91,15 +88,6 @@ public class RegisterPayDto extends PayParamBasicDto{
         this.registerId = registerId;
     }
 
-
-    public BigDecimal getAmount() {
-        return amount;
-    }
-
-    public void setAmount(BigDecimal amount) {
-        this.amount = amount;
-    }
-
     public Map<Long, String> getGoodsGroups() {
         return goodsGroups;
     }

+ 0 - 27
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/RenewParamDto.java

@@ -1,27 +0,0 @@
-package com.ym.mec.biz.dal.dto;
-
-import io.swagger.annotations.ApiModelProperty;
-
-public class RenewParamDto extends PayParamBasicDto{
-    @ApiModelProperty(value = "缴费项目编号", required = false)
-    private Long calenderId;
-
-    @ApiModelProperty(value = "学员编号", required = false)
-    private Integer userId;
-
-    public Integer getUserId() {
-        return userId;
-    }
-
-    public void setUserId(Integer userId) {
-        this.userId = userId;
-    }
-
-    public Long getCalenderId() {
-        return calenderId;
-    }
-
-    public void setCalenderId(Long calenderId) {
-        this.calenderId = calenderId;
-    }
-}

+ 0 - 12
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/SporadicPayDto.java

@@ -2,11 +2,7 @@ package com.ym.mec.biz.dal.dto;
 
 import io.swagger.annotations.ApiModelProperty;
 
-import java.math.BigDecimal;
-
 public class SporadicPayDto extends PayParamBasicDto {
-    @ApiModelProperty(value = "金额",required = false)
-    private BigDecimal amount;
 
     @ApiModelProperty(value = "用户编号",required = false)
     private Integer userId;
@@ -17,14 +13,6 @@ public class SporadicPayDto extends PayParamBasicDto {
     @ApiModelProperty(value = "购买数量",required = false)
     private Integer num = 1;
 
-    public BigDecimal getAmount() {
-        return amount;
-    }
-
-    public void setAmount(BigDecimal amount) {
-        this.amount = amount;
-    }
-
     public Integer getUserId() {
         return userId;
     }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentManageListDto.java

@@ -125,6 +125,16 @@ public class StudentManageListDto {
 	
 	private String extSubjectIds;
 
+	private Boolean repairFlag;
+
+    public Boolean getRepairFlag() {
+        return repairFlag;
+    }
+
+    public void setRepairFlag(Boolean repairFlag) {
+        this.repairFlag = repairFlag;
+    }
+
     public String getAvatar() {
         return avatar;
     }

+ 13 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentStandardDto.java

@@ -1,5 +1,7 @@
 package com.ym.mec.biz.dal.dto;
 
+import io.swagger.annotations.ApiModelProperty;
+
 //学员学习是否达标
 public class StudentStandardDto {
 
@@ -23,6 +25,17 @@ public class StudentStandardDto {
 
     private Long studentAttendanceId;
 
+    @ApiModelProperty(value = "学员维修标识",required = false)
+    private Boolean repairFlag = false;
+
+    public Boolean getRepairFlag() {
+        return repairFlag;
+    }
+
+    public void setRepairFlag(Boolean repairFlag) {
+        this.repairFlag = repairFlag;
+    }
+
     public Long getCourseScheduleId() {
         return courseScheduleId;
     }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ActivityUserMapper.java

@@ -118,6 +118,17 @@ public class ActivityUserMapper extends BaseEntity {
 	@ApiModelProperty(value = "关联的云教练缴费项目编号")
 	private Long calenderId;
 
+	@ApiModelProperty(value = "分部")
+	private Integer organId;
+
+	public Integer getOrganId() {
+		return organId;
+	}
+
+	public void setOrganId(Integer organId) {
+		this.organId = organId;
+	}
+
 	public Long getCalenderId() {
 		return calenderId;
 	}

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/Student.java

@@ -88,6 +88,16 @@ public class Student extends SysUser {
 	@ApiModelProperty(value = "家长姓名")
 	private String parentName;
 
+	@ApiModelProperty(value = "学员是否需要维修乐器")
+	private Boolean repairFlag = false;
+
+	public Boolean getRepairFlag() {
+		return repairFlag;
+	}
+
+	public void setRepairFlag(Boolean repairFlag) {
+		this.repairFlag = repairFlag;
+	}
 
 	public Student(Integer userId, String subjectIdList) {
 		this.userId = userId;

+ 0 - 14
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentRepair.java

@@ -146,12 +146,6 @@ public class StudentRepair extends PayParamBasicDto {
     private String description;
 
     /**
-     * 维修金额
-     */
-    @ApiModelProperty(value = "维修金额", required = false)
-    private BigDecimal amount;
-
-    /**
      * 维修完成时间
      */
     @ApiModelProperty(value = "维修完成时间", required = false)
@@ -371,14 +365,6 @@ public class StudentRepair extends PayParamBasicDto {
         this.description = description;
     }
 
-    public BigDecimal getAmount() {
-        return amount;
-    }
-
-    public void setAmount(BigDecimal amount) {
-        this.amount = amount;
-    }
-
     public Date getFinishTime() {
         return finishTime;
     }

+ 23 - 4
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/VipGroupActivity.java

@@ -25,6 +25,9 @@ public class VipGroupActivity extends BaseEntity {
 	@ApiModelProperty(value = "活动类型,课程或者会员,0课程,1会员")
 	private Integer activityType = 0;
 
+	@ApiModelProperty(value = "活动类型,VIP、PRACTICE、MEMBER、THEORY")
+	private String activityTypeEnum;
+
 	@ApiModelProperty(value = "单节课时长")
 	private Integer singleCourseTime = 45;
 
@@ -52,9 +55,6 @@ public class VipGroupActivity extends BaseEntity {
 	@ApiModelProperty(value = "可排课截至时间")
 	private java.util.Date coursesEndTime;
 
-//	@ApiModelProperty(value = "活动类型(基础活动、折扣、赠送课时)")
-//	private VipGroupActivityTypeEnum type;
-
 	@ApiModelProperty(value = "折扣)")
 	private BigDecimal discount = new BigDecimal(100);
 
@@ -162,7 +162,7 @@ public class VipGroupActivity extends BaseEntity {
 	//用于标记活动类型,购买的活动类型1、1v1 20节,2、1v1 40节,3、1v2 20节,4、1v2 40节,5、乐理课
 	private Integer code;
 
-	@ApiModelProperty(value = "活动渠道,1乐团渠道,2常规活动")
+	@ApiModelProperty(value = "活动渠道,1乐团渠道,2常规活动,3学员购买")
 	private Integer activityChannel;
 
 	@ApiModelProperty(value = "赠送的优惠券的编号")
@@ -171,6 +171,25 @@ public class VipGroupActivity extends BaseEntity {
 	@ApiModelProperty(value = "赠送的优惠券的数量")
 	private Integer giveCouponNum;
 
+	@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;
 	}

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java

@@ -25,6 +25,11 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
 //    SMS_WITHDRAW_SUCCESS("SMS_WITHDRAW_SUCCESS", "提现成功"),
 //    SMS_MUSIC_GROUP_CLOSE("SMS_MUSIC_GROUP_CLOSE", "乐团关闭(关闭后)"),
 
+    PUSH_STUDENT_BUY_MEMBER_ACTIVITY("PUSH_STUDENT_BUY_MEMBER_ACTIVITY", "活动购买成功"),
+    PUSH_SYSTEM_ACTIVITY_MEMBER("PUSH_SYSTEM_ACTIVITY_MEMBER", "待激活通知"),
+    PUSH_STUDENT_BUY_ACTIVITY("PUSH_STUDENT_BUY_ACTIVITY", "活动购买成功"),
+    PUSH_SYSTEM_ACTIVITY_COURSE("PUSH_SYSTEM_ACTIVITY_COURSE", "待排课通知"),
+    PUSH_TEACHER_ACTIVITY_COURSE("PUSH_TEACHER_ACTIVITY_COURSE", "待排课通知"),
     STUDENT_SMS_PUSH_PAYMENT_SUCCESS("STUDENT_SMS_PUSH_PAYMENT_SUCCESS", "缴费成功结果通知"),
     STUDENT_SMS_BALANCE_CONSUME("STUDENT_SMS_BALANCE_CONSUME", "余额消费"),
     STUDENT_PUSH_VIP_BUY("STUDENT_PUSH_VIP_BUY", "VIP课购买"),

+ 68 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/ActivityUserMapperDetailQueryInfo.java

@@ -0,0 +1,68 @@
+package com.ym.mec.biz.dal.page;
+
+import com.ym.mec.common.page.QueryInfo;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.List;
+
+/**
+* @author zx
+* @date 2021/9/26 15:52
+*/
+public class ActivityUserMapperDetailQueryInfo extends QueryInfo {
+
+    @ApiModelProperty(value = "分部")
+    private String organId;
+
+    @ApiModelProperty(value = "是否退费")
+    private Boolean returnFee;
+
+    @ApiModelProperty(value = "是否有剩余为排课次数")
+    private Boolean hasSubCourse;
+
+    @ApiModelProperty(value = "指导老师编号")
+    private Integer teacherId;
+
+    @ApiModelProperty(value = "学员编号")
+    private Integer userId;
+
+    public Integer getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
+
+    public String getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(String organId) {
+        this.organId = organId;
+    }
+
+    public Boolean getReturnFee() {
+        return returnFee;
+    }
+
+    public void setReturnFee(Boolean returnFee) {
+        this.returnFee = returnFee;
+    }
+
+    public Boolean getHasSubCourse() {
+        return hasSubCourse;
+    }
+
+    public void setHasSubCourse(Boolean hasSubCourse) {
+        this.hasSubCourse = hasSubCourse;
+    }
+
+    public Integer getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(Integer teacherId) {
+        this.teacherId = teacherId;
+    }
+}

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/RepairStudentQueryInfo.java

@@ -37,6 +37,16 @@ public class RepairStudentQueryInfo extends QueryInfo {
     @ApiModelProperty(value = "是否有减免金额0-否 1-是",required = false)
     private Integer hasExemptionAmount;
 
+    @ApiModelProperty(value = "是否乐器维修",required = false)
+    private Boolean repairFlag;
+
+    public Boolean getRepairFlag() {
+        return repairFlag;
+    }
+
+    public void setRepairFlag(Boolean repairFlag) {
+        this.repairFlag = repairFlag;
+    }
 
     public Integer getSubjectId() {
         return subjectId;

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentManageQueryInfo.java

@@ -55,6 +55,16 @@ public class StudentManageQueryInfo extends QueryInfo {
     //是否使用过云教练
     private Integer isRecord;
 
+    private Boolean repairFlag;
+
+    public Boolean getRepairFlag() {
+        return repairFlag;
+    }
+
+    public void setRepairFlag(Boolean repairFlag) {
+        this.repairFlag = repairFlag;
+    }
+
     public Integer getIsRecord() {
         return isRecord;
     }

+ 7 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/ActivityUserMapperService.java

@@ -4,11 +4,13 @@ import com.ym.mec.biz.dal.dao.ActivityUserMapperDao;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.page.ActivityStudentQueryInfo;
+import com.ym.mec.biz.dal.page.ActivityUserMapperDetailQueryInfo;
 import com.ym.mec.biz.dal.page.ActivityUserQueryInfo;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 import org.apache.ibatis.annotations.Param;
+import org.snaker.engine.access.Page;
 
 import java.math.BigDecimal;
 import java.util.List;
@@ -199,9 +201,13 @@ public interface ActivityUserMapperService extends BaseService<Integer, Activity
     * @author zx
     * @date 2022/8/3 13:44
     */
-    void subCourseConvert(List<CourseScheduleStudentPayment> studentPayments, Integer studentId, Integer singleClassMinutes,Integer categoryId);
+    void subCourseConvert(List<CourseScheduleStudentPayment> studentPayments, Integer studentId, VipGroup vipGroup);
 
     ActivityUserMapperDao getDao();
 
     void use(List<ActivityUserMapper> activityUserMappers, List<ActivityUserMapper> freeActivityUserMappers, BaseMapDto<Integer,Integer> indexDto,Long groupId,CourseScheduleStudentPayment courseScheduleStudentPayment);
+
+    PageInfo<ActivityUserMapperDetailDto> queryDetailPage(ActivityUserMapperDetailQueryInfo queryInfo);
+
+    PageInfo<ActivityUserMapperSumDto> querySumPage(ActivityUserMapperDetailQueryInfo queryInfo);
 }

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

@@ -41,7 +41,7 @@ public interface CloudTeacherOrderService extends BaseService<Long, CloudTeacher
     */
     void activationMember(Date now, CloudTeacherOrder cloudTeacherOrder);
 
-    Date calcCloudTeacherOrderTime(CloudTeacherOrder cloudTeacherOrder, Date startTime, Date endTime);
+    Date calcCloudTeacherOrderTime(CloudTeacherOrder cloudTeacherOrder, Date startTime);
 
     /**
      * 获取乐团云教练订单

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/PracticeGroupSellPriceService.java

@@ -3,6 +3,17 @@ package com.ym.mec.biz.service;
 import com.ym.mec.biz.dal.entity.PracticeGroupSellPrice;
 import com.ym.mec.common.service.BaseService;
 
+import java.math.BigDecimal;
+
 public interface PracticeGroupSellPriceService extends BaseService<Integer, PracticeGroupSellPrice> {
 
+    /**
+    * @description: 获取网管课价格
+     * @param organId 分部
+     * @param courseNum 课程数量
+    * @return java.math.BigDecimal
+    * @author zx
+    * @date 2022/10/9 15:47
+    */
+    BigDecimal getAmount(Integer organId, BigDecimal courseNum);
 }

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

@@ -1,12 +1,10 @@
 package com.ym.mec.biz.service;
 
-import com.ym.mec.biz.dal.entity.Organization;
 import com.ym.mec.biz.dal.entity.SporadicChargeInfo;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
 import com.ym.mec.biz.dal.page.SporadicChargeInfoQueryInfo;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
-import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 

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

@@ -108,7 +108,6 @@ public interface StudentAttendanceService extends BaseService<Long, StudentAtten
 	 */
 	void repairStudentAttendance(Integer month);
 
-
 	/**
 	 * 学员考勤导出列表
 	 * @author zouxuan

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

@@ -6,6 +6,7 @@ import java.util.List;
 import java.util.Map;
 
 import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.StudentDao;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.GradeTypeEnum;
@@ -16,6 +17,8 @@ import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.BaseService;
 
 public interface StudentService extends BaseService<Integer, Student> {
+
+    StudentDao getDao();
 	
 	boolean register(StudentPreRegistration studentPreRegistration);
 
@@ -180,4 +183,24 @@ public interface StudentService extends BaseService<Integer, Student> {
     * @date 2022/7/19 15:21
     */
     List<BaseMapDto> queryStuSubjectId(String organIds);
+
+    /**
+    * @description: 更新学员维修标记
+     * @param userIdList
+ * @param repairFlag
+    * @return void
+    * @author zx
+    * @date 2022/10/11 11:03
+    */
+    void updateRepairFlag(List<Integer> userIdList, boolean repairFlag);
+
+    /**
+    * @description: 更新学员维修标记
+     * @param userId
+ * @param repairFlag
+    * @return void
+    * @author zx
+    * @date 2022/10/11 11:03
+    */
+    void updateRepairFlag(Integer userId, boolean repairFlag);
 }

+ 11 - 12
mec-biz/src/main/java/com/ym/mec/biz/service/SysUserCashAccountService.java

@@ -1,5 +1,7 @@
 package com.ym.mec.biz.service;
 
+import com.ym.mec.biz.dal.dto.PayParamBasicDto;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
 import com.ym.mec.biz.dal.entity.SysUserCashAccount;
 import com.ym.mec.biz.dal.enums.PlatformCashAccountDetailTypeEnum;
 import com.ym.mec.common.service.BaseService;
@@ -53,18 +55,6 @@ public interface SysUserCashAccountService extends BaseService<Integer, SysUserC
 	 */
 	boolean appendCourseBalance(Integer userId, BigDecimal decimal, PlatformCashAccountDetailTypeEnum type, String description);
 
-	/**
-	 * @describe 从账户金额与课程金额中扣减指定金额
-	 * 优先课程金额,不够再扣减账户金额
-	 * @author Joburgess
-	 * @date 2021/1/20 0020
-	 * @param userId:
-	 * @param decimal:
-	 * @param type:
-	 * @param description:
-	 * @return void
-	 */
-	void subtractFromCourseBalanceAndBalance(Integer userId, BigDecimal decimal, PlatformCashAccountDetailTypeEnum type, String description,Long vipGroupId);
 
 	/**
 	 * 将课程余额转入到可用余额
@@ -79,4 +69,13 @@ public interface SysUserCashAccountService extends BaseService<Integer, SysUserC
 	 * @return
 	 */
 	SysUserCashAccount getLocked(Integer userId);
+
+	/**
+	* @description: 余额消耗
+	 * @param
+	* @return java.lang.Boolean
+	* @author zx
+	* @date 2022/10/9 16:29
+	*/
+	Boolean use(PayParamBasicDto payParam, StudentPaymentOrder studentPaymentOrder);
 }

+ 23 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/VipGroupActivityService.java

@@ -1,17 +1,25 @@
 package com.ym.mec.biz.service;
 
+import com.ym.mec.biz.dal.dao.VipGroupActivityDao;
 import com.ym.mec.biz.dal.dto.*;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
 import com.ym.mec.biz.dal.entity.VipGroupActivity;
 import com.ym.mec.biz.dal.page.ActivityStudentQueryInfo;
 import com.ym.mec.biz.dal.page.DoubleEleven2021QueryInfo;
 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> {
 
+    VipGroupActivityDao getDao();
+
     /**
      * @Author: Joburgess
      * @Date: 2019/10/1
@@ -33,6 +41,8 @@ public interface VipGroupActivityService extends BaseService<Integer, VipGroupAc
      */
     List<VipGroupActivity> findByVipGroupCategory(ActivityQueryDto activityQueryDto);
 
+    BigDecimal getActivityPrice(VipGroupActivity vipGroupActivity, Integer organId, BigDecimal buyNum);
+
     /**
      * 导出vip活动
      * @param queryInfo
@@ -96,4 +106,17 @@ public interface VipGroupActivityService extends BaseService<Integer, VipGroupAc
     * @date 2021/10/26 11:38
     */
     PageInfo<DoubleEleven2021OrderDetailDto> doubleEleven2021OrderDetail(DoubleEleven2021QueryInfo queryInfo);
+
+    /**
+    * @description: 通用活动购买
+     * @param activityPayParamDto
+    * @return com.ym.mec.common.entity.HttpResponseResult
+    * @author zx
+    * @date 2022/10/9 14:38
+    */
+    HttpResponseResult buy(ActivityPayParamDto activityPayParamDto) throws Exception;
+
+    void orderCallback(StudentPaymentOrder studentPaymentOrder);
+
+    void setActivityType(VipGroupActivity activity);
 }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/VipGroupDefaultClassesUnitPriceService.java

@@ -3,6 +3,17 @@ package com.ym.mec.biz.service;
 import com.ym.mec.biz.dal.entity.VipGroupDefaultClassesUnitPrice;
 import com.ym.mec.common.service.BaseService;
 
+import java.math.BigDecimal;
+
 public interface VipGroupDefaultClassesUnitPriceService extends BaseService<Integer, VipGroupDefaultClassesUnitPrice> {
 
+    /**
+    * @description: 获取课程价格
+     * @param organId
+     * @param courseNum
+    * @return java.math.BigDecimal
+    * @author zx
+    * @date 2022/10/9 15:56
+    */
+    BigDecimal getAmount(Integer categoryId,Integer organId, BigDecimal courseNum);
 }

+ 53 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ActivityUserMapperServiceImpl.java

@@ -9,6 +9,7 @@ import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.page.ActivityStudentQueryInfo;
+import com.ym.mec.biz.dal.page.ActivityUserMapperDetailQueryInfo;
 import com.ym.mec.biz.dal.page.ActivityUserQueryInfo;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.controller.BaseController;
@@ -173,7 +174,7 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
 		SysUser sysUser = sysUserFeignService.queryUserInfo();
 		Integer operatorId = sysUser.getId();
 		String operatorName = sysUser.getRealName();
-		Integer minCourseNum = activity.getMinCourseNum();
+//		Integer minCourseNum = activity.getMinCourseNum();
 
 		List<Integer> studentIds = activityStudentAdjustDtos.stream().map(e -> e.getUserId()).collect(Collectors.toList());
 		List<Student> studentTeacher = studentDao.findByStudentIds(studentIds);
@@ -219,6 +220,7 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
 				activityUserMapper.setReturnFee(false);
 				activityUserMapper.setTeacherId(teacherId);
 				activityUserMapper.setAddMemo(memo);
+				activityUserMapper.setOrganId(sysUser.getOrganId());
 				boolean buyFlag = adjustDto.getCourseNum() > i;
 				if(buyFlag){
 					if("VIP".equals(courseType)){
@@ -347,6 +349,7 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
 			activityUserMapper.setTeacherId(student.getTeacherId());
 			activityUserMapper.setPaymentOrderId(studentPaymentOrder.getId());
 			activityUserMapper.setCalenderId(calenderId);
+			activityUserMapper.setOrganId(studentPaymentOrder.getOrganId());
 			if(orderDetail.getType() == OrderDetailTypeEnum.VIP){
 				activityUserMapper.setVipFlag(1);
 			}else {
@@ -1083,19 +1086,19 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
     }
 
 	@Override
-	public void subCourseConvert(List<CourseScheduleStudentPayment> studentPayments, Integer studentId, Integer singleClassMinutes,Integer categoryId) {
+	public void subCourseConvert(List<CourseScheduleStudentPayment> studentPayments, Integer studentId,VipGroup vipGroup) {
 		studentPayments = studentPayments.stream().filter(e->e.getActualPrice().compareTo(ZERO) > 0).collect(Collectors.toList());
 		if(CollectionUtils.isEmpty(studentPayments)){
 			return;
 		}
 		ActivityUserMapper activityUserMapper = new ActivityUserMapper();
 		activityUserMapper.setReturnFee(false);
-		activityUserMapper.setSingleCourseTime(singleClassMinutes);
+		activityUserMapper.setSingleCourseTime(vipGroup.getSingleClassMinutes());
 		activityUserMapper.setTotalCourseNum(studentPayments.size());
 		activityUserMapper.setSubCourseNum(studentPayments.size());
-		if(Objects.nonNull(categoryId)){
+		if(Objects.nonNull(vipGroup.getVipGroupCategoryId())){
 			activityUserMapper.setVipFlag(1);
-			activityUserMapper.setCategoryId(categoryId);
+			activityUserMapper.setCategoryId(vipGroup.getVipGroupCategoryId());
 			activityUserMapper.setAddMemo("学员休学转化排课资格:" + studentPayments.get(0).getMusicGroupId());
 		}else {
 			activityUserMapper.setPracticeFlag(1);
@@ -1108,6 +1111,7 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
 		activityUserMapper.setTenantId(student.getTenantId());
 		activityUserMapper.setTeacherId(student.getTeacherId());
 		activityUserMapper.setUserId(studentId);
+		activityUserMapper.setOrganId(vipGroup.getOrganId());
 		activityUserMapperDao.insert(activityUserMapper);
 	}
 
@@ -1157,4 +1161,48 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
 		}
 	}
 
+	@Override
+	public PageInfo<ActivityUserMapperDetailDto> queryDetailPage(ActivityUserMapperDetailQueryInfo queryInfo) {
+		PageInfo<ActivityUserMapperDetailDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+		Map<String, Object> params = new HashMap<String, Object>();
+		MapUtil.populateMap(params, queryInfo);
+
+		List<ActivityUserMapperDetailDto> dataList = null;
+		int count = activityUserMapperDao.countDetailPage(params);
+		if (count > 0) {
+			pageInfo.setTotal(count);
+			params.put("offset", pageInfo.getOffset());
+			dataList = activityUserMapperDao.queryDetailPage(params);
+		}
+		if (count == 0) {
+			dataList = new ArrayList<>();
+		}
+		pageInfo.setRows(dataList);
+		return pageInfo;
+	}
+
+	@Override
+	public PageInfo<ActivityUserMapperSumDto> querySumPage(ActivityUserMapperDetailQueryInfo queryInfo) {
+		PageInfo<ActivityUserMapperSumDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+		Map<String, Object> params = new HashMap<String, Object>();
+		MapUtil.populateMap(params, queryInfo);
+
+		List<ActivityUserMapperSumDto> dataList = null;
+		int count = activityUserMapperDao.countSumPage(params);
+		if (count > 0) {
+			pageInfo.setTotal(count);
+			params.put("offset", pageInfo.getOffset());
+			dataList = activityUserMapperDao.querySumPage(params);
+			List<Integer> organIds = dataList.stream().map(e -> e.getOrganId()).distinct().collect(Collectors.toList());
+			Map<Integer, String> organNameMap = this.getMap("organization", "id_", "name_", organIds, queryInfo.getTenantId(), Integer.class, String.class);
+			for (ActivityUserMapperSumDto sumDto : dataList) {
+				sumDto.setOrganName(organNameMap.get(sumDto.getOrganId()));
+			}
+		}
+		if (count == 0) {
+			dataList = new ArrayList<>();
+		}
+		pageInfo.setRows(dataList);
+		return pageInfo;
+	}
 }

+ 13 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CloudTeacherOrderServiceImpl.java

@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.ym.mec.biz.dal.dao.CloudTeacherOrderDao;
 import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderDao;
+import com.ym.mec.biz.dal.dao.SysConfigDao;
 import com.ym.mec.biz.dal.dto.CloudTeacherOrderDto;
 import com.ym.mec.biz.dal.dto.Mapper;
 import com.ym.mec.biz.dal.entity.*;
@@ -55,6 +56,8 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
     private TenantOrderRecordService tenantOrderRecordService;
     @Autowired
     private MusicGroupPaymentCalenderDao musicGroupPaymentCalenderDao;
+    @Autowired
+    private SysConfigDao sysConfigDao;
 
     @Override
     public BaseDAO<Long, CloudTeacherOrder> getDAO() {
@@ -180,7 +183,7 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
         //生成订单编号
         String orderNo = idGenerator.generatorId("payment") + "";
         TenantOrderRecordEnum tenantEnum = TenantOrderRecordEnum.CLOUD_TEACHER;
-
+        String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
         Map<String, Object> payMap = new HashMap<>();
         int orderState = 0;
         //消费大于0元则拉起支付
@@ -190,8 +193,8 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
                     payAmount,
                     BigDecimal.ZERO,
                     orderNo,
-                    null,
-                    null,
+                    baseApiUrl + "/api-student/studentOrder/callback",
+                    baseApiUrl + "/api-student/studentOrder/paymentResult?orderNo=" + orderNo,
                     tenantEnum.getMsg(),
                     tenantEnum.getMsg()
             );
@@ -298,8 +301,12 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void activationMember(Date now,CloudTeacherOrder cloudTeacherOrder){
+        Student student = studentService.get(cloudTeacherOrder.getStudentId());
+        if(student.getMembershipEndTime() != null && student.getMembershipEndTime().compareTo(now) > 0){
+            now = student.getMembershipEndTime();
+        }
         Date startTime = DateUtil.trunc(now);
-        Date endTime = this.calcCloudTeacherOrderTime(cloudTeacherOrder, startTime, now);
+        Date endTime = this.calcCloudTeacherOrderTime(cloudTeacherOrder, startTime);
         cloudTeacherOrder.setStartTime(startTime);
         cloudTeacherOrder.setEndTime(DateUtil.addDays(endTime,1));
         cloudTeacherOrder.setStatus(2);
@@ -311,7 +318,8 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
         studentService.updateMemberRank(cloudTeacherOrder.getStudentId(), cloudTeacherOrder.getType(), cloudTeacherOrder.getTime(), 1);
     }
 
-    public Date calcCloudTeacherOrderTime(CloudTeacherOrder cloudTeacherOrder, Date startTime, Date endTime) {
+    public Date calcCloudTeacherOrderTime(CloudTeacherOrder cloudTeacherOrder, Date startTime) {
+        Date endTime = startTime;
         if (cloudTeacherOrder.getType() == DAY) { // 日
             endTime = DateUtil.addDays(startTime, cloudTeacherOrder.getTime());
         } else if (cloudTeacherOrder.getType() == MONTH) { // 月

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

@@ -707,6 +707,7 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
             activityUserMapper.setActualPrice(BigDecimal.ZERO);
             activityUserMapper.setSubNoCoursePrice(BigDecimal.ZERO);
             activityUserMapper.setReturnFee(false);
+            activityUserMapper.setOrganId(studentPaymentOrder.getOrganId());
             //如果是买的商品1那么赠送陪练课和训练营
             if(Objects.equals(studentPaymentOrder.getClassGroupId(),1)){
                 //赠送陪练课

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

@@ -296,6 +296,7 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
                         Student student = studentDao.get(studentId);
                         activityUserMapper.setUserId(studentId);
                         activityUserMapper.setTeacherId(student.getTeacherId());
+                        activityUserMapper.setOrganId(musicGroup.getOrganId());
                         VipGroupActivity activity = collect.get(activityUserMapper.getActivityId());
                         activityUserMapperService.copyProperty(activityUserMapper,activity,false,true);
                         if ("网管课".equals(calenderActivity.getCategoryName())) {

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

@@ -747,7 +747,6 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
                         cloudTeacherOrder.setOrganId(musicGroup.getOrganId());
                         cloudTeacherOrder.setType(calenderMember.getPeriod());
                         cloudTeacherOrder.setStudentId(Integer.parseInt(studentId));
-                        cloudTeacherOrder.setOrderId(musicGroup.getOrganId().longValue());
                         cloudTeacherOrder.setTime(calenderMember.getNum().intValue());
                         cloudTeacherOrder.setAmount(BigDecimal.ZERO);
                         cloudTeacherOrder.setStatus(1);
@@ -766,6 +765,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
                             Student student = studentDao.get(Integer.parseInt(studentId));
                             activityUserMapper.setUserId(Integer.parseInt(studentId));
                             activityUserMapper.setTeacherId(student.getTeacherId());
+                            activityUserMapper.setOrganId(musicGroup.getOrganId());
                             if ("网管课".equals(calenderActivity.getCategoryName())) {
                                 activityUserMapper.setPracticeFlag(1);
                             } else {

+ 108 - 74
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -1553,7 +1553,15 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         }
         Date date = new Date();
         
-        MusicGroup musicGroup = saveLog(musicGroupId, MusicGroupStatusEnum.DRAFT);
+        MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
+        if (musicGroup == null) {
+            throw new BizException("乐团信息不存在");
+        }
+        
+        if (musicGroup.getStatus() != MusicGroupStatusEnum.DRAFT) {
+            throw new BizException("当前乐团状态不支持此操作");
+        }
+        
         //记录操作日志
         musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId, "提交审核(草稿 -> 审核中)", sysUser.getId(), ""));
         musicGroup.setStatus(MusicGroupStatusEnum.AUDIT);
@@ -1587,28 +1595,42 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         if (sysUser == null) {
             throw new BizException("用户信息获取失败");
         }
+        MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
+        if (musicGroup == null) {
+            throw new BizException("乐团信息不存在");
+        }
+        if (musicGroup.getTenantId() == null) {
+            throw new BizException("乐团机构信息异常,请联系管理员");
+        }
+        if (musicGroup.getStatus() != MusicGroupStatusEnum.AUDIT || musicGroup.getStatus() != MusicGroupStatusEnum.FEE_AUDIT) {
+            throw new BizException("当前乐团状态不支持此操作");
+        }
+        
         Date date = new Date();
         
-        MusicGroup musicGroup = saveLog(musicGroupId, MusicGroupStatusEnum.AUDIT);
         //记录操作日志
-        musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId, "乐团审核失败(审核中 -> 审核失败)", sysUser.getId(), memo));
-        musicGroup.setMemo(memo);
-        musicGroup.setStatus(MusicGroupStatusEnum.AUDIT_FAILED);
-        musicGroup.setUpdateTime(date);
-        musicGroupDao.update(musicGroup);
-        
-        List<PaymentCalenderStatusEnum> statusList = new ArrayList<MusicGroupPaymentCalender.PaymentCalenderStatusEnum>();
-        statusList.add(PaymentCalenderStatusEnum.AUDITING);
-        //修改乐团报名缴费项目状态
-        List<MusicGroupPaymentCalender> musicGroupPaymentCalenderList = musicGroupPaymentCalenderDao.queryByPaymentStatus(musicGroupId, statusList, null);
-        
-        musicGroupPaymentCalenderList.forEach(t -> {
-        	t.setStatus(PaymentCalenderStatusEnum.REJECT);
-        	t.setUpdateTime(date);
-        	t.setMemo(memo);
-        });
+        if (musicGroup.getStatus() == MusicGroupStatusEnum.AUDIT){
+        	musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId, "乐团审核失败(审核中 -> 审核失败)", sysUser.getId(), memo));
+        	musicGroup.setStatus(MusicGroupStatusEnum.AUDIT_FAILED);
+            musicGroup.setMemo(memo);
+            musicGroup.setUpdateTime(date);
+            musicGroupDao.update(musicGroup);
+        }else if(musicGroup.getStatus() == MusicGroupStatusEnum.FEE_AUDIT){
+        	musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId, "乐团审核失败(费用审核中 -> 费用审核失败)", sysUser.getId(), memo));
+        	List<PaymentCalenderStatusEnum> statusList = new ArrayList<MusicGroupPaymentCalender.PaymentCalenderStatusEnum>();
+            statusList.add(PaymentCalenderStatusEnum.AUDITING);
+            //修改乐团报名缴费项目状态
+            List<MusicGroupPaymentCalender> musicGroupPaymentCalenderList = musicGroupPaymentCalenderDao.queryByPaymentStatus(musicGroupId, statusList, null);
+            
+            musicGroupPaymentCalenderList.forEach(t -> {
+            	t.setStatus(PaymentCalenderStatusEnum.REJECT);
+            	t.setUpdateTime(date);
+            	t.setMemo(memo);
+            });
+            
+            musicGroupPaymentCalenderDao.batchUpdate(musicGroupPaymentCalenderList);
+        }
         
-        musicGroupPaymentCalenderDao.batchUpdate(musicGroupPaymentCalenderList);
     }
 
     @Override
@@ -1618,72 +1640,84 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         if (sysUser == null) {
             throw new BizException("用户信息获取失败");
         }
-        MusicGroup musicGroup = saveLog(musicGroupId, MusicGroupStatusEnum.AUDIT);
+        MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
+        if (musicGroup == null) {
+            throw new BizException("乐团信息不存在");
+        }
         if (musicGroup.getTenantId() == null) {
             throw new BizException("乐团机构信息异常,请联系管理员");
         }
+        if (musicGroup.getStatus() != MusicGroupStatusEnum.AUDIT || musicGroup.getStatus() != MusicGroupStatusEnum.FEE_AUDIT) {
+            throw new BizException("当前乐团状态不支持此操作");
+        }
         
         Date date = new Date();
         
-        //记录操作日志
-        musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId, "审核通过(审核中 -> 预报名)", sysUser.getId(), ""));
-        musicGroup.setStatus(MusicGroupStatusEnum.PRE_APPLY);
-        musicGroup.setUpdateTime(date);
-        musicGroupDao.update(musicGroup);
-        
-        List<PaymentCalenderStatusEnum> statusList = new ArrayList<MusicGroupPaymentCalender.PaymentCalenderStatusEnum>();
-        statusList.add(PaymentCalenderStatusEnum.AUDITING);
-        //修改乐团报名缴费项目状态
-        List<MusicGroupPaymentCalender> musicGroupPaymentCalenderList = musicGroupPaymentCalenderDao.queryByPaymentStatus(musicGroupId, statusList, null);
-        
-        musicGroupPaymentCalenderList.forEach(t -> {
-            if (t.getPayUserType() == SCHOOL) {
-                if (t.getCurrentTotalAmount().compareTo(BigDecimal.ZERO) > 0) {
+        if(musicGroup.getStatus() == MusicGroupStatusEnum.AUDIT){
+            //记录操作日志
+            musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId, "审核通过(审核中 -> 费用审核中)", sysUser.getId(), ""));
+            musicGroup.setStatus(MusicGroupStatusEnum.FEE_AUDIT);
+        }else if(musicGroup.getStatus() == MusicGroupStatusEnum.FEE_AUDIT){
+            musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId, "审核通过(费用审核中 -> 预报名)", sysUser.getId(), ""));
+            musicGroup.setStatus(MusicGroupStatusEnum.PRE_APPLY);
+            
+
+            List<PaymentCalenderStatusEnum> statusList = new ArrayList<MusicGroupPaymentCalender.PaymentCalenderStatusEnum>();
+            statusList.add(PaymentCalenderStatusEnum.AUDITING);
+            //修改乐团报名缴费项目状态
+            List<MusicGroupPaymentCalender> musicGroupPaymentCalenderList = musicGroupPaymentCalenderDao.queryByPaymentStatus(musicGroupId, statusList, null);
+            
+            musicGroupPaymentCalenderList.forEach(t -> {
+                if (t.getPayUserType() == SCHOOL) {
+                    if (t.getCurrentTotalAmount().compareTo(BigDecimal.ZERO) > 0) {
+                        t.setStatus(PaymentCalenderStatusEnum.OPEN);
+                    } else {
+                        t.setStatus(PaymentCalenderStatusEnum.PAID);
+                    }
+                } else if (date.after(t.getStartPaymentDate())) {
                     t.setStatus(PaymentCalenderStatusEnum.OPEN);
+                } else if (date.after(t.getDeadlinePaymentDate())) {
+                    t.setStatus(PaymentCalenderStatusEnum.OVER);
                 } else {
-                    t.setStatus(PaymentCalenderStatusEnum.PAID);
+                    t.setStatus(PaymentCalenderStatusEnum.NO);
                 }
-            } else if (date.after(t.getStartPaymentDate())) {
-                t.setStatus(PaymentCalenderStatusEnum.OPEN);
-            } else if (date.after(t.getDeadlinePaymentDate())) {
-                t.setStatus(PaymentCalenderStatusEnum.OVER);
-            } else {
-                t.setStatus(PaymentCalenderStatusEnum.NO);
+            	t.setUpdateTime(date);
+            });
+            
+            musicGroupPaymentCalenderDao.batchUpdate(musicGroupPaymentCalenderList);
+            
+            // 创建群
+            imGroupService.create(musicGroupId, null, "乐团预报名", null,
+                    musicGroup.getName(), musicGroup.getName(), null, GroupType.MUSIC.getCode(), ImGroup.GroupTypeEnum.PARENT_MEETING);
+            
+            Map<Integer, String> userRoleMap = new HashMap<Integer, String>();
+
+            if (musicGroup.getTeamTeacherId() != null) {
+                userRoleMap.put(musicGroup.getTeamTeacherId(), "运营主管");
+            }
+            if (musicGroup.getEducationalTeacherId() != null) {
+                userRoleMap.put(musicGroup.getEducationalTeacherId(), "乐团主管");
+            }
+            if (musicGroup.getDirectorUserId() != null) {
+                userRoleMap.put(musicGroup.getDirectorUserId(), "乐队指导");
+            }
+            if (musicGroup.getTransactionTeacherId() != null) {
+                userRoleMap.put(musicGroup.getTransactionTeacherId(), "衔接老师");
+            }
+            // 添加成员
+            imGroupMemberService.join(musicGroupId, userRoleMap);
+            //缴费老师推送消息
+            sendSeoMessageSource.sendSeoMessage(musicGroup.getOrganId(), null,
+                    null, musicGroup.getEducationalTeacherId(), MessageTypeEnum.BACKSTAGE_CREATE_MUSIC_GROUP_ADJUST_SUCCESS, musicGroup.getName());
+            Map<Integer, String> map = new HashMap<>(1);
+            map.put(musicGroup.getEducationalTeacherId(), musicGroup.getEducationalTeacherId().toString());
+            if (map != null && map.size() > 0) {
+                sysMessageService.batchSendMessage(MessageSender.JIGUANG, MessageTypeEnum.BACKSTAGE_CREATE_MUSIC_GROUP_ADJUST_SUCCESS,
+                        map, null, 0, null, "SYSTEM", musicGroup.getName());
             }
-        	t.setUpdateTime(date);
-        });
-        
-        musicGroupPaymentCalenderDao.batchUpdate(musicGroupPaymentCalenderList);
-
-        // 创建群
-        imGroupService.create(musicGroupId, null, "乐团预报名", null,
-                musicGroup.getName(), musicGroup.getName(), null, GroupType.MUSIC.getCode(), ImGroup.GroupTypeEnum.PARENT_MEETING);
-
-        Map<Integer, String> userRoleMap = new HashMap<Integer, String>();
-
-        if (musicGroup.getTeamTeacherId() != null) {
-            userRoleMap.put(musicGroup.getTeamTeacherId(), "运营主管");
-        }
-        if (musicGroup.getEducationalTeacherId() != null) {
-            userRoleMap.put(musicGroup.getEducationalTeacherId(), "乐团主管");
-        }
-        if (musicGroup.getDirectorUserId() != null) {
-            userRoleMap.put(musicGroup.getDirectorUserId(), "乐队指导");
-        }
-        if (musicGroup.getTransactionTeacherId() != null) {
-            userRoleMap.put(musicGroup.getTransactionTeacherId(), "衔接老师");
-        }
-        // 添加成员
-        imGroupMemberService.join(musicGroupId, userRoleMap);
-        //缴费老师推送消息
-        sendSeoMessageSource.sendSeoMessage(musicGroup.getOrganId(), null,
-                null, musicGroup.getEducationalTeacherId(), MessageTypeEnum.BACKSTAGE_CREATE_MUSIC_GROUP_ADJUST_SUCCESS, musicGroup.getName());
-        Map<Integer, String> map = new HashMap<>(1);
-        map.put(musicGroup.getEducationalTeacherId(), musicGroup.getEducationalTeacherId().toString());
-        if (map != null && map.size() > 0) {
-            sysMessageService.batchSendMessage(MessageSender.JIGUANG, MessageTypeEnum.BACKSTAGE_CREATE_MUSIC_GROUP_ADJUST_SUCCESS,
-                    map, null, 0, null, "SYSTEM", musicGroup.getName());
         }
+        musicGroup.setUpdateTime(date);
+        musicGroupDao.update(musicGroup);
     }
 
     @Override

+ 78 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/PayServiceImpl.java

@@ -20,6 +20,7 @@ import org.springframework.stereotype.Service;
 import com.alibaba.fastjson.JSON;
 import com.ym.mec.biz.dal.dao.GoodsProcurementDao;
 import com.ym.mec.biz.dal.dao.HfMemberDao;
+import com.ym.mec.biz.dal.dao.StudentPaymentOrderDao;
 import com.ym.mec.biz.dal.dao.StudentPaymentRouteOrderDao;
 import com.ym.mec.biz.dal.dao.SysConfigDao;
 import com.ym.mec.biz.dal.dto.AmountChannelDto;
@@ -31,6 +32,7 @@ import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrderDetail;
 import com.ym.mec.biz.dal.entity.StudentPaymentRouteOrder;
 import com.ym.mec.biz.dal.entity.SysPaymentConfig;
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender.PaymentCalenderStatusEnum;
 import com.ym.mec.biz.dal.enums.FeeTypeEnum;
 import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
 import com.ym.mec.biz.dal.enums.OrderTypeEnum;
@@ -82,6 +84,9 @@ public class PayServiceImpl implements PayService {
     private RedisCache<String, Object> redisCache;
     @Autowired
     private GoodsProcurementDao goodsProcurementDao;
+    
+    @Autowired
+    private StudentPaymentOrderDao studentPaymentOrderDao;
 
     @Override
     public Map<String, Object> getPayMap(BigDecimal amount, BigDecimal balanceAmount, String orderNo, String notifyUrl, String returnUrl, String orderSubject, String orderBody, Integer organId, String receiver) throws Exception {
@@ -896,6 +901,79 @@ public class PayServiceImpl implements PayService {
             }
             newRouteScaleDtos.add(routeScaleDto);
         }
+        
+        /**
+         * 2022-10-14日添加规则
+         * 如果是武汉分部,且 服务收入选择的是“武汉小学”,服务费逻辑会发生变更
+         * 1.课程费用进入“武汉市武昌大雅艺术培训学校”-H004215
+         * 2.其他费用进入“武汉大雅文化艺术有限公司”-H004219
+         * 
+         */
+		if (organId == 1) {
+			//删除服务费用
+			Iterator<RouteScaleDto> routeScaleDtoIterator = newRouteScaleDtos.iterator();
+			RouteScaleDto dto = null;
+			
+			BigDecimal totalCashAmount = BigDecimal.ZERO;
+			BigDecimal totalBalanceAmount = BigDecimal.ZERO;
+			
+			while(routeScaleDtoIterator.hasNext()){
+				dto = routeScaleDtoIterator.next();
+				if(dto != null && dto.getFeeType() == FeeTypeEnum.SERVICE && dto.getOrganId() == 39){
+					totalCashAmount = totalCashAmount.add(dto.getAmount());
+					totalBalanceAmount = totalBalanceAmount.add(dto.getBalance());
+					routeScaleDtoIterator.remove();
+				}
+			}
+			
+			if(totalCashAmount.add(totalBalanceAmount).compareTo(BigDecimal.ZERO) <= 0){
+				return newRouteScaleDtos;
+			}
+			
+			StudentPaymentOrder order = studentPaymentOrderDao.findOrderByOrderNo(orderNo);
+			if (order == null) {
+				return null;
+			}
+			
+			BigDecimal musicGroupCourseTotalAmount = BigDecimal.ZERO;
+			
+			List<StudentPaymentOrderDetail> studentPaymentOrderDetailList = studentPaymentOrderDetailService.queryOrderDetail(order.getId());
+			if (studentPaymentOrderDetailList != null) {
+				musicGroupCourseTotalAmount = studentPaymentOrderDetailList
+						.stream()
+						.filter(t -> (t.getType() == OrderDetailTypeEnum.COURSE || t.getType() == OrderDetailTypeEnum.HIGH_ONLINE_COURSE
+								|| t.getType() == OrderDetailTypeEnum.SINGLE || t.getType() == OrderDetailTypeEnum.MIX
+								|| t.getType() == OrderDetailTypeEnum.HIGH || t.getType() == OrderDetailTypeEnum.COMPREHENSIVE
+								|| t.getType() == OrderDetailTypeEnum.ENLIGHTENMENT || t.getType() == OrderDetailTypeEnum.TRAINING_SINGLE
+								|| t.getType() == OrderDetailTypeEnum.TRAINING_MIX || t.getType() == OrderDetailTypeEnum.HIGH_ONLINE
+								|| t.getType() == OrderDetailTypeEnum.MUSIC_NETWORK || t.getType() == OrderDetailTypeEnum.CLASSROOM)).map(t -> t.getPrice())
+						.reduce(BigDecimal.ZERO, BigDecimal::add);
+			}
+			
+			RouteScaleDto routeScaleDto1 = new RouteScaleDto();
+			routeScaleDto1.setAmount(totalCashAmount.multiply(musicGroupCourseTotalAmount).divide(totalBalanceAmount.add(totalCashAmount), 2, BigDecimal.ROUND_DOWN));
+            routeScaleDto1.setBalance(totalBalanceAmount.multiply(musicGroupCourseTotalAmount).divide(totalBalanceAmount.add(totalCashAmount), 2, BigDecimal.ROUND_DOWN));
+            routeScaleDto1.setSaleAmount(BigDecimal.ZERO);
+            routeScaleDto1.setServiceAmount(routeScaleDto1.getAmount());
+            routeScaleDto1.setOrganId(50);
+            routeScaleDto1.setFeeType(FeeTypeEnum.SERVICE);
+            routeScaleDto1.setMerNo("H004215");
+            routeScaleDto1.setPayType(PaymentChannelEnum.ADAPAY);
+            newRouteScaleDtos.add(routeScaleDto1);
+			
+			RouteScaleDto routeScaleDto2 = new RouteScaleDto();
+			routeScaleDto2.setAmount(totalCashAmount.subtract(routeScaleDto1.getAmount()));
+            routeScaleDto2.setBalance(totalBalanceAmount.subtract(routeScaleDto1.getBalance()));
+            routeScaleDto2.setSaleAmount(BigDecimal.ZERO);
+            routeScaleDto2.setServiceAmount(routeScaleDto2.getAmount());
+            routeScaleDto2.setOrganId(52);
+            routeScaleDto2.setFeeType(FeeTypeEnum.SERVICE);
+            routeScaleDto2.setMerNo("H004219");
+            routeScaleDto2.setPayType(PaymentChannelEnum.ADAPAY);
+            newRouteScaleDtos.add(routeScaleDto2);
+			
+		}
+        
         return newRouteScaleDtos;
     }
 

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

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.service.impl;
 
+import com.ym.mec.common.exception.BizException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -9,6 +10,9 @@ import com.ym.mec.biz.service.PracticeGroupSellPriceService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 
+import java.math.BigDecimal;
+import java.util.Optional;
+
 @Service
 public class PracticeGroupSellPriceServiceImpl extends BaseServiceImpl<Integer, PracticeGroupSellPrice> implements PracticeGroupSellPriceService {
 	
@@ -20,4 +24,10 @@ public class PracticeGroupSellPriceServiceImpl extends BaseServiceImpl<Integer,
 		return practiceGroupSellPriceDao;
 	}
 
+	@Override
+	public BigDecimal getAmount(Integer organId, BigDecimal courseNum) {
+		PracticeGroupSellPrice practiceGroupSellPrice = Optional.ofNullable(practiceGroupSellPriceDao.get(organId)).
+				orElseThrow(()->new BizException("请配置网管课价格"));
+		return practiceGroupSellPrice.getSingleClassMinutesPrice().multiply(courseNum);
+	}
 }

+ 1 - 9
mec-biz/src/main/java/com/ym/mec/biz/service/impl/PracticeGroupServiceImpl.java

@@ -3,7 +3,6 @@ package com.ym.mec.biz.service.impl;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
-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.*;
@@ -85,8 +84,6 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
     @Autowired
     private ClassGroupStudentMapperDao classGroupStudentMapperDao;
     @Autowired
-    private SysUserFeignService sysUserFeignService;
-    @Autowired
     private SysUserService sysUserService;
     @Autowired
     private TeacherDao teacherDao;
@@ -142,12 +139,6 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
     @Autowired
     private ActivityUserMapperService activityUserMapperService;
     @Autowired
-    private CourseScheduleTeacherSalaryService courseScheduleTeacherSalaryService;
-    @Autowired
-    private VipGroupDao vipGroupDao;
-    @Autowired
-    private VipGroupCategoryDao vipGroupCategoryDao;
-    @Autowired
     private SysUserCashAccountLogService sysUserCashAccountLogService;
     @Autowired
     private OrganizationService organizationService;
@@ -4348,6 +4339,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
             activityUserMapper.setActualPrice(order.getExpectAmount());
             activityUserMapper.setSubNoCoursePrice(order.getExpectAmount());
             activityUserMapper.setTenantId(order.getTenantId());
+            activityUserMapper.setOrganId(order.getOrganId());
             activityUserMapperService.copyProperty(activityUserMapper,activity,false,true);
             if (activity.isPayToBalance()) {
                 sysUserCashAccountService.appendCourseBalance(userId, studentPaymentOrder.getExpectAmount(), PlatformCashAccountDetailTypeEnum.RECHARGE, "通用营销活动购买");

+ 1 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentAttendanceServiceImpl.java

@@ -752,8 +752,7 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
         }
     }
 
-    @Override
-    public PageInfo<ExportStudentAttendanceDto> exportStudentAttendancesQueryPage(ExportStudentAttendanceQueryInfo queryInfo) {
+    @Override    public PageInfo<ExportStudentAttendanceDto> exportStudentAttendancesQueryPage(ExportStudentAttendanceQueryInfo queryInfo) {
         PageInfo<ExportStudentAttendanceDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
         Map<String, Object> params = new HashMap<>();
         MapUtil.populateMap(params, queryInfo);

+ 89 - 48
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderServiceImpl.java

@@ -107,7 +107,7 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
     @Autowired
     private SysCouponCodeService sysCouponCodeService;
     @Autowired
-    private VipGroupActivityDao vipGroupActivityDao;
+    private VipGroupActivityService vipGroupActivityService;
     @Autowired
     private ActivityUserMapperService activityUserMapperService;
     @Autowired
@@ -525,42 +525,46 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
 
     //调用相应业务回调接口
     public void callOrderCallBack(StudentPaymentOrder order) throws Exception {
-        if (order.getType().equals(OrderTypeEnum.APPLY)) { //报名订单
-            studentRegistrationService.updateApplyOrder(order);
-        } else if (order.getType().equals(OrderTypeEnum.SMALL_CLASS_TO_BUY)) {
-            vipGroupService.orderCallback(order);
-        } else if (order.getType().equals(OrderTypeEnum.RENEW) || order.getType().equals(OrderTypeEnum.ADD_STUDENT)) {
-            musicGroupService.renewForCallback(order);
-        } else if (order.getType().equals(OrderTypeEnum.SPORADIC) || order.getType().equals(OrderTypeEnum.LUCK) || order.getType().equals(OrderTypeEnum.DOUBLE_ELEVEN2020)) {
-            sporadicChargeInfoService.renewForCallback(order);
-        } else if (order.getType().equals(OrderTypeEnum.PRACTICE_GROUP_BUY) || order.getType().equals(OrderTypeEnum.PRACTICE_GROUP_RENEW)) {
-            practiceGroupService.orderCallback(order);
-        } else if (order.getType().equals(OrderTypeEnum.REPAIR)) {
-            studentRepairService.orderCallback(order);
-        } else if (order.getType().equals(OrderTypeEnum.GOODS_SELL)) {
-            studentRepairService.goodsSellOrderCallback(order);
-        } else if (order.getType().equals(OrderTypeEnum.SUBJECT_CHANGE)) {
-            subjectChangeService.orderCallback(order);
-        } else if (order.getType().equals(OrderTypeEnum.DEGREE_REGISTRATION)) {
-            degreeRegistrationService.updateStatus(order);
-        } else if (order.getType().equals(OrderTypeEnum.MAINTENANCE)) {
-            studentInstrumentService.orderCallback(order);
-        } else if (order.getType().equals(OrderTypeEnum.REPLACEMENT)) {
-            replacementInstrumentActivityService.orderCallback(order);
-        } else if (order.getType().equals(OrderTypeEnum.DEGREE)) {
-            childrenDayReserveService.orderCallback(order);
-        } else if (order.getType().equals(OrderTypeEnum.MEMBER)) {
-            //购买团练宝
-            memberRankSettingService.orderCallback(order);
-        } else if (order.getType().equals(OrderTypeEnum.ACTIVITY)) {
-            //购买活动
-            practiceGroupService.activityOrderCallback(order);
-        } else if (order.getType().equals(OrderTypeEnum.LIVE_BUY)) {
-            //直播课购买回调
-            memberRankSettingService.liveBuyOrderCallback(order);
-        } else if (order.getType().equals(OrderTypeEnum.MALL_BUY)) {
-            // 商城购买订单回调
-            studentPaymentOrderService.mallBuyOrderCallback(order);
+        if(order.getGroupType() == GroupType.ACTIVITY){
+            vipGroupActivityService.orderCallback(order);
+        }else {
+            if (order.getType().equals(OrderTypeEnum.APPLY)) { //报名订单
+                studentRegistrationService.updateApplyOrder(order);
+            } else if (order.getType().equals(OrderTypeEnum.SMALL_CLASS_TO_BUY)) {
+                vipGroupService.orderCallback(order);
+            } else if (order.getType().equals(OrderTypeEnum.RENEW) || order.getType().equals(OrderTypeEnum.ADD_STUDENT)) {
+                musicGroupService.renewForCallback(order);
+            } else if (order.getType().equals(OrderTypeEnum.SPORADIC) || order.getType().equals(OrderTypeEnum.LUCK) || order.getType().equals(OrderTypeEnum.DOUBLE_ELEVEN2020)) {
+                sporadicChargeInfoService.renewForCallback(order);
+            } else if (order.getType().equals(OrderTypeEnum.PRACTICE_GROUP_BUY) || order.getType().equals(OrderTypeEnum.PRACTICE_GROUP_RENEW)) {
+                practiceGroupService.orderCallback(order);
+            } else if (order.getType().equals(OrderTypeEnum.REPAIR)) {
+                studentRepairService.orderCallback(order);
+            } else if (order.getType().equals(OrderTypeEnum.GOODS_SELL)) {
+                studentRepairService.goodsSellOrderCallback(order);
+            } else if (order.getType().equals(OrderTypeEnum.SUBJECT_CHANGE)) {
+                subjectChangeService.orderCallback(order);
+            } else if (order.getType().equals(OrderTypeEnum.DEGREE_REGISTRATION)) {
+                degreeRegistrationService.updateStatus(order);
+            } else if (order.getType().equals(OrderTypeEnum.MAINTENANCE)) {
+                studentInstrumentService.orderCallback(order);
+            } else if (order.getType().equals(OrderTypeEnum.REPLACEMENT)) {
+                replacementInstrumentActivityService.orderCallback(order);
+            } else if (order.getType().equals(OrderTypeEnum.DEGREE)) {
+                childrenDayReserveService.orderCallback(order);
+            } else if (order.getType().equals(OrderTypeEnum.MEMBER)) {
+                //购买团练宝
+                memberRankSettingService.orderCallback(order);
+            } else if (order.getType().equals(OrderTypeEnum.ACTIVITY)) {
+                //购买活动
+                practiceGroupService.activityOrderCallback(order);
+            } else if (order.getType().equals(OrderTypeEnum.LIVE_BUY)) {
+                //直播课购买回调
+                memberRankSettingService.liveBuyOrderCallback(order);
+            } else if (order.getType().equals(OrderTypeEnum.MALL_BUY)) {
+                // 商城购买订单回调
+                studentPaymentOrderService.mallBuyOrderCallback(order);
+            }
         }
     }
 
@@ -798,7 +802,7 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
     public Integer activityGive(Integer vipGroupActivityId, StudentPaymentOrder studentPaymentOrder, String vipGroupId, String practiceGroupId, Integer teacherId) {
         Integer activityUserMapperId = null;
         if (vipGroupActivityId != null) {
-            VipGroupActivity activity = vipGroupActivityDao.get(vipGroupActivityId);
+            VipGroupActivity activity = vipGroupActivityService.get(vipGroupActivityId);
             ActivityUserMapper activityUserMapper = new ActivityUserMapper();
             activityUserMapper.setVipGroupId(vipGroupId);
             activityUserMapper.setPracticeGroupId(practiceGroupId);
@@ -807,15 +811,54 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
             activityUserMapper.setActivityId(vipGroupActivityId);
             activityUserMapper.setTeacherId(teacherId);
             activityUserMapper.setActualPrice(studentPaymentOrder.getExpectAmount());
-            if (vipGroupId != null) {
-                activityUserMapper.setVipFlag(2);
-            } else {
-                activityUserMapper.setPracticeFlag(2);
+            activityUserMapper.setAddMemo(activity.getName());
+            activityUserMapper.setOrganId(studentPaymentOrder.getOrganId());
+            //如果是课程活动
+            if(activity.getActivityType().equals(0)){
+                activityUserMapper.setSubNoCoursePrice(activityUserMapper.getActualPrice());
+                activityUserMapper.setTotalCourseNum(studentPaymentOrder.getActivityBuyNum());
+                activityUserMapper.setSubCourseNum(studentPaymentOrder.getActivityBuyNum());
+                activityUserMapper.setSingleCourseTime(activity.getSingleCourseTime());
+                //vip课
+                if(StringUtils.isNotEmpty(activity.getVipGroupCategoryIdList())){
+                    activityUserMapper.setVipFlag(1);
+                    activityUserMapper.setCategoryId(Integer.parseInt(activity.getVipGroupCategoryIdList()));
+                }else {
+                    //网管课
+                    activityUserMapper.setPracticeFlag(1);
+                }
+                if (vipGroupId != null) {
+                    activityUserMapper.setVipFlag(2);
+                    activityUserMapper.setSubNoCoursePrice(BigDecimal.ZERO);
+                    activityUserMapper.setSubCourseNum(0);
+                }
+                if(practiceGroupId != null) {
+                    activityUserMapper.setPracticeFlag(2);
+                    activityUserMapper.setSubNoCoursePrice(BigDecimal.ZERO);
+                    activityUserMapper.setSubCourseNum(0);
+                }
+            }else {
+                CloudTeacherOrder cloudTeacherOrder = new CloudTeacherOrder();
+                cloudTeacherOrder.setStatus(1);
+                cloudTeacherOrder.setAmount(activityUserMapper.getActualPrice());
+                cloudTeacherOrder.setOrderId(studentPaymentOrder.getId());
+                cloudTeacherOrder.setRemark(studentPaymentOrder.getMemo());
+                cloudTeacherOrder.setLevel(activity.getMemberRankId());
+                cloudTeacherOrder.setStudentId(studentPaymentOrder.getUserId());
+                cloudTeacherOrder.setType(activity.getPeriodEnum());
+                cloudTeacherOrder.setOrganId(studentPaymentOrder.getOrganId());
+                cloudTeacherOrder.setTime(studentPaymentOrder.getActivityBuyNum());
+                cloudTeacherOrderService.save(cloudTeacherOrder,tenantConfigService.autoActivationFlag(cloudTeacherOrder.getTenantId()));
+                activityUserMapper.setMemberFlag(1);
+                activityUserMapper.setMemberOrderId(cloudTeacherOrder.getId());
             }
-            activityUserMapperService.copyProperty(activityUserMapper,activity,false,true);
-            activityUserMapper.setSubCourseNum(0);
+//            activityUserMapperService.copyProperty(activityUserMapper,activity,false,true);
+
             //是否达到满赠标准
             if (activity.getFullMinusCourseTimes() == -1 || studentPaymentOrder.getActivityBuyNum() < activity.getFullMinusCourseTimes()) {
+                if(activity.getActivityType().equals(1)){
+                    return null;
+                }
                 activityUserMapperService.insert(activityUserMapper);
                 return activityUserMapper.getId();
             }
@@ -834,14 +877,12 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
             }
             //是否赠送会员(会员立即生效)
             if (activity.getGiveMemberTime() > 0) {
-                Date now = new Date();
                 // 查询会员订单信息
                 CloudTeacherOrder cloudTeacherOrder = new CloudTeacherOrder();
                 cloudTeacherOrder.setStatus(1);
-                cloudTeacherOrder.setUpdateTime(now);
                 cloudTeacherOrder.setAmount(BigDecimal.ZERO);
                 cloudTeacherOrder.setOrderId(studentPaymentOrder.getId());
-                cloudTeacherOrder.setRemark("购买vip活动赠送会员");
+                cloudTeacherOrder.setRemark(studentPaymentOrder.getMemo() + "赠送会员");
                 cloudTeacherOrder.setLevel(activity.getGiveMemberRankId());
                 cloudTeacherOrder.setStudentId(studentPaymentOrder.getUserId());
                 cloudTeacherOrder.setType(activity.getGivePeriodEnum());
@@ -849,7 +890,7 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
                 cloudTeacherOrder.setTime(activity.getGiveMemberTime());
                 cloudTeacherOrderService.save(cloudTeacherOrder,tenantConfigService.autoActivationFlag(cloudTeacherOrder.getTenantId()));
                 // 添加会员有效时长
-                activityUserMapper.setGiveMemberFlag(2);
+                activityUserMapper.setGiveMemberFlag(1);
                 activityUserMapper.setGiveMemberOrderId(cloudTeacherOrder.getId());
             }
             activityUserMapperService.insert(activityUserMapper);

+ 10 - 8
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRepairServiceImpl.java

@@ -88,7 +88,7 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
     @Autowired
     private SysMessageService sysMessageService;
     @Autowired
-    private StudentDao studentDao;
+    private StudentService studentService;
     @Autowired
     private StudentPaymentRouteOrderService studentPaymentRouteOrderService;
     @Autowired
@@ -262,8 +262,8 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
             throw new BizException("请指定学员");
         }
 
-        studentDao.lockUser(studentId);
-        SysUser student = studentDao.getUser(studentId);
+        studentService.getDao().lockUser(studentId);
+        SysUser student = studentService.getDao().getUser(studentId);
         //如果教务老师为空,代表学员自己创建的订单
         if (studentGoodsSell.getTeacherId() == null) {
             //获取学生关联的所有教务老师列表
@@ -475,7 +475,7 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
     public Map studentPaymentGoodsOrder(Integer goodsSellId) throws Exception {
         StudentGoodsSell studentGoodsSell = studentGoodsSellDao.get(goodsSellId);
         Integer studentId = studentGoodsSell.getUserId();
-        studentDao.lockUser(studentId);
+        studentService.getDao().lockUser(studentId);
         List<GoodsSellDto> goodsSellDtos = JSONObject.parseArray(studentGoodsSell.getGoodsJson(), GoodsSellDto.class);
         List<Integer> goodsIds = goodsSellDtos.stream().map(e -> e.getGoodsId()).collect(Collectors.toList());
         Map<Integer, String> integerStringMap = getMap("goods", "id_", "type_", goodsIds, studentGoodsSell.getTenantId(), Integer.class, String.class);
@@ -592,7 +592,7 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Map addRepair(StudentRepair repairInfo) throws Exception {
-        studentDao.lockUser(repairInfo.getEmployeeId());
+        studentService.getDao().lockUser(repairInfo.getEmployeeId());
         if (repairInfo.getSendType() != null && repairInfo.getSendType().equals(1) &&
                 (repairInfo.getContactName() == null || repairInfo.getContactName().isEmpty()) &&
                 (repairInfo.getContactMobile() == null || repairInfo.getContactMobile().isEmpty()) &&
@@ -614,7 +614,9 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
         if (studentInstrument != null && studentInstrument.getEndTime() != null && studentInstrument.getEndTime().compareTo(date) > 0) {
             repairInfo.setMaintenanceStatus(1);
         }
-        SysUser student = studentDao.getUser(repairInfo.getStudentId());
+        //修改维修标记
+        studentService.updateRepairFlag(repairInfo.getStudentId(),false);
+        SysUser student = studentService.getDao().getUser(repairInfo.getStudentId());
         repairInfo.setOrganId(student.getOrganId());
 
         BigDecimal amount = repairInfo.getAmount();
@@ -816,7 +818,7 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
         if (sysUser == null) {
             throw new BizException("用户信息获取失败");
         }
-        studentDao.lockUser(sysUser.getId());
+        studentService.getDao().lockUser(sysUser.getId());
         StudentRepair studentRepair = studentRepairDao.getRepairInfo(id);
         if (studentRepair == null) {
             throw new BizException("维修信息不存在");
@@ -882,7 +884,7 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
         List<RepairGoodsDto> repairGoodsDtos = null;
         Date date = new Date();
         StudentRepair studentRepair = studentRepairDao.get(repairInfo.getId());
-        studentDao.lockUser(studentRepair.getStudentId());
+        studentService.getDao().lockUser(studentRepair.getStudentId());
         BigDecimal amount = studentRepair.getAmount();
         String goodsJson = studentRepair.getGoodsJson();
         if (StringUtils.isNotEmpty(goodsJson)) {

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

@@ -112,6 +112,11 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
     }
 
     @Override
+    public StudentDao getDao() {
+        return studentDao;
+    }
+
+    @Override
     @Transactional(rollbackFor = Exception.class)
 	public boolean register(StudentPreRegistration studentPreRegistration) {
         TenantContextHolder.setTenantId(studentPreRegistration.getTenantId());
@@ -1341,6 +1346,22 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
         return studentDao.queryStuSubjectId(organIds);
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateRepairFlag(List<Integer> userIdList, boolean repairFlag) {
+        if(!CollectionUtils.isEmpty(userIdList)){
+            studentDao.updateRepairFlag(userIdList,repairFlag);
+        }
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateRepairFlag(Integer userId, boolean repairFlag) {
+        List<Integer> userIdList = new ArrayList<>(1);
+        userIdList.add(userId);
+        studentDao.updateRepairFlag(userIdList,repairFlag);
+    }
+
     @Transactional(rollbackFor = Exception.class)
     public  <T extends BaseStudentDto> void insertStudent(T baseStudent){
         Student student = new Student();

+ 9 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysUserCashAccountLogServiceImpl.java

@@ -28,7 +28,7 @@ public class SysUserCashAccountLogServiceImpl extends BaseServiceImpl<Long, SysU
 	public BigDecimal musicReturnFeeCharges(BigDecimal returnFee, Integer size) {
 		String configName = SysConfigService.MUSIC_COURSE_START_RETURN_FEE_CHARGES;
 		if(size == null || size == 0){
-			configName = SysConfigService.MUSIC_RETURN_FEE_CHARGES;
+			return calcCharges1(returnFee,SysConfigService.MUSIC_RETURN_FEE_CHARGES);
 		}
 		return calcCharges(returnFee,configName);
 	}
@@ -49,4 +49,12 @@ public class SysUserCashAccountLogServiceImpl extends BaseServiceImpl<Long, SysU
 		}
 		return returnFee.multiply(new BigDecimal(returnFeeCharges)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
 	}
+
+	private BigDecimal calcCharges1(BigDecimal returnFee,String configValue){
+		double returnFeeCharges = 1;
+		if(StringUtils.isNotEmpty(configValue)){
+			returnFeeCharges = Double.parseDouble(configValue) / 1000;
+		}
+		return returnFee.subtract(returnFee.multiply(new BigDecimal(returnFeeCharges)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP));
+	}
 }

+ 44 - 71
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysUserCashAccountServiceImpl.java

@@ -5,15 +5,18 @@ import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.SysUserCashAccountDao;
 import com.ym.mec.biz.dal.dao.SysUserCashAccountDetailDao;
 import com.ym.mec.biz.dal.dao.SysUserCoursesAccountDetailDao;
-import com.ym.mec.biz.dal.entity.SysUserCashAccount;
-import com.ym.mec.biz.dal.entity.SysUserCashAccountDetail;
-import com.ym.mec.biz.dal.entity.SysUserCoursesAccountDetail;
+import com.ym.mec.biz.dal.dto.ActivityPayParamDto;
+import com.ym.mec.biz.dal.dto.PayParamBasicDto;
+import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.DealStatusEnum;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.dal.enums.PlatformCashAccountDetailTypeEnum;
 import com.ym.mec.biz.dal.enums.PlatformCashAccountStatusEnum;
+import com.ym.mec.biz.service.StudentPaymentOrderService;
+import com.ym.mec.biz.service.StudentPaymentRouteOrderService;
 import com.ym.mec.biz.service.SysMessageService;
 import com.ym.mec.biz.service.SysUserCashAccountService;
+import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
@@ -38,11 +41,14 @@ public class SysUserCashAccountServiceImpl extends BaseServiceImpl<Integer, SysU
     private SysUserFeignService sysUserFeignService;
     @Autowired
     private SysMessageService sysMessageService;
-
     @Autowired
     private SysUserCashAccountDetailDao sysUserCashAccountDetailDao;
     @Autowired
     private SysUserCoursesAccountDetailDao sysUserCoursesAccountDetailDao;
+    @Autowired
+    private StudentPaymentRouteOrderService studentPaymentRouteOrderService;
+    @Autowired
+    private StudentPaymentOrderService studentPaymentOrderService;
 
     @Override
     public BaseDAO<Integer, SysUserCashAccount> getDAO() {
@@ -256,73 +262,6 @@ public class SysUserCashAccountServiceImpl extends BaseServiceImpl<Integer, SysU
     }
 
     @Override
-    public void subtractFromCourseBalanceAndBalance(Integer userId, BigDecimal decimal, PlatformCashAccountDetailTypeEnum type, String description,Long vipGroupId) {
-        SysUserCashAccount cashAccount = sysUserCashAccountDao.getLocked(userId);
-        if (cashAccount == null) {
-            throw new BizException("用户[{}]现金账户不存在", userId);
-        }
-        decimal = decimal.abs();
-        BigDecimal allBalance = cashAccount.getCourseBalance().add(cashAccount.getBalance());
-        BigDecimal changeMoney = decimal;
-        if (changeMoney.compareTo(allBalance)>0) {
-            throw new BizException("现金账户[{}]课程余额不足,可用余额剩{}元", userId, allBalance.doubleValue());
-        }
-
-        if (changeMoney.compareTo(BigDecimal.ZERO) == 0) {
-            return;
-        }
-
-        Date date = new Date();
-        SysUserCoursesAccountDetail sysUserCoursesAccountDetail = new SysUserCoursesAccountDetail();
-        if(changeMoney.compareTo(cashAccount.getCourseBalance())>0){
-            changeMoney = changeMoney.subtract(cashAccount.getCourseBalance());
-            sysUserCoursesAccountDetail.setAmount(cashAccount.getCourseBalance());
-            cashAccount.setCourseBalance(BigDecimal.ZERO);
-        }else{
-            cashAccount.setCourseBalance(cashAccount.getCourseBalance().subtract(changeMoney));
-            sysUserCoursesAccountDetail.setAmount(changeMoney);
-            changeMoney = BigDecimal.ZERO;
-        }
-        cashAccount.setUpdateTime(date);
-
-        String comment = description;
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if(sysUser != null && sysUser.getId()!=null){
-            comment +=  "-" + sysUser.getId();
-        }
-        sysUserCoursesAccountDetail.setUserId(userId);
-        sysUserCoursesAccountDetail.setBalance(cashAccount.getCourseBalance());
-        sysUserCoursesAccountDetail.setComment(comment);
-        sysUserCoursesAccountDetail.setDescription("总扣费金额:"+decimal);
-        sysUserCoursesAccountDetail.setStatus(DealStatusEnum.SUCCESS);
-        sysUserCoursesAccountDetail.setType(type);
-        sysUserCoursesAccountDetail.setUpdateTime(date);
-        sysUserCoursesAccountDetail.setCreateTime(date);
-        sysUserCoursesAccountDetail.setGroupId(vipGroupId);
-        sysUserCoursesAccountDetailDao.insert(sysUserCoursesAccountDetail);
-
-        if(changeMoney.compareTo(BigDecimal.ZERO)==0){
-            sysUserCashAccountDao.update(cashAccount);
-            return;
-        }
-        cashAccount.setBalance(cashAccount.getBalance().subtract(changeMoney));
-        sysUserCashAccountDao.update(cashAccount);
-
-        SysUserCashAccountDetail detail = new SysUserCashAccountDetail();
-        detail.setAmount(changeMoney);
-        detail.setBalance(cashAccount.getBalance());
-        detail.setComment(comment);
-        detail.setCreateTime(date);
-        detail.setDescription("总扣费金额:"+decimal);
-        detail.setStatus(DealStatusEnum.SUCCESS);
-        detail.setType(type);
-        detail.setUpdateTime(date);
-        detail.setUserId(userId);
-        detail.setGroupId(vipGroupId);
-        sysUserCashAccountDetailDao.insert(detail);
-    }
-
-    @Override
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
     public boolean transferCourseBalanceToBalance(Integer userId, BigDecimal money) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
@@ -383,4 +322,38 @@ public class SysUserCashAccountServiceImpl extends BaseServiceImpl<Integer, SysU
         return sysUserCashAccountDao.getLocked(userId);
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean use(PayParamBasicDto payParam, StudentPaymentOrder studentPaymentOrder) {
+        BigDecimal amount = payParam.getAmount();
+        if (payParam.getUseBalancePayment() || payParam.getAmount().doubleValue() == 0) {
+            SysUserCashAccount userCashAccount = sysUserCashAccountDao.getLocked(studentPaymentOrder.getUserId());
+            if (userCashAccount == null) {
+                throw new BizException("用户账户找不到");
+            }
+            studentPaymentOrder.setPaymentChannel("BALANCE");
+            if (userCashAccount.getBalance().subtract(amount).doubleValue() >= 0) {
+                studentPaymentRouteOrderService.addRouteOrder(studentPaymentOrder.getOrderNo(), studentPaymentOrder.getOrganId(),amount);
+                // 更新订单信息
+                studentPaymentOrder.setActualAmount(new BigDecimal(0));
+                studentPaymentOrder.setBalancePaymentAmount(amount);
+                studentPaymentOrder.setStatus(DealStatusEnum.SUCCESS);
+                studentPaymentOrder.setRoutingOrganId(studentPaymentOrder.getOrganId());
+//                studentPaymentOrderService.orderCallback(studentPaymentOrder);
+
+                this.updateBalance(studentPaymentOrder.getUserId(), amount.negate(), PlatformCashAccountDetailTypeEnum.PAY_FEE, studentPaymentOrder.getMemo());
+                return true;
+            } else {
+                if (userCashAccount.getBalance().doubleValue() > 0) {
+                    this.updateBalance(studentPaymentOrder.getUserId(), userCashAccount.getBalance().negate(), PlatformCashAccountDetailTypeEnum.PAY_FEE,studentPaymentOrder.getMemo());
+                    amount = amount.subtract(userCashAccount.getBalance());
+                    studentPaymentOrder.setActualAmount(amount);
+                    studentPaymentOrder.setBalancePaymentAmount(userCashAccount.getBalance());
+                } else {
+                    studentPaymentOrder.setBalancePaymentAmount(new BigDecimal(0));
+                }
+            }
+        }
+        return false;
+    }
 }

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java

@@ -74,6 +74,8 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 	private StudentServeService studentServeService;
 	@Autowired
 	private SysTenantConfigService sysTenantConfigService;
+	@Autowired
+	private StudentService studentService;
 
 	@Override
 	public BaseDAO<Long, TeacherAttendance> getDAO() {
@@ -106,6 +108,11 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 			studentAttendanceDao.updateQualified(courseScheduleId,studentIds,1);
 			this.sendMessage(studentIds,type,courseDate,MessageTypeEnum.SMS_STANDARD_QUALIFIED);
 		}
+		//记录学员是否需要维修
+		List<Integer> repairUser = studentStandardDtos.stream().filter(e -> e.getRepairFlag()).map(e -> e.getUserId()).collect(Collectors.toList());
+		List<Integer> notRepairUser = studentStandardDtos.stream().filter(e -> !e.getRepairFlag()).map(e -> e.getUserId()).collect(Collectors.toList());
+		studentService.updateRepairFlag(repairUser,true);
+		studentService.updateRepairFlag(notRepairUser,false);
 		//标记当前课程为已评价
 		courseScheduleDao.updateEvaluate(courseScheduleId);
 	}

+ 317 - 17
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupActivityServiceImpl.java

@@ -1,32 +1,41 @@
 package com.ym.mec.biz.service.impl;
 
 import com.alibaba.fastjson.JSON;
+import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.*;
-import com.ym.mec.biz.dal.entity.ActivityApplyStudentType;
-import com.ym.mec.biz.dal.entity.Teacher;
-import com.ym.mec.biz.dal.entity.VipGroupActivity;
-import com.ym.mec.biz.dal.entity.VipGroupCategory;
+import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.page.ActivityStudentQueryInfo;
 import com.ym.mec.biz.dal.page.DoubleEleven2021QueryInfo;
 import com.ym.mec.biz.dal.page.VipGroupActivityQueryInfo;
-import com.ym.mec.biz.service.VipGroupActivityService;
+import com.ym.mec.biz.service.*;
+import com.ym.mec.common.constant.CommonConstants;
+import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.dal.BaseDAO;
+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.common.service.IdGeneratorService;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.common.tenant.TenantContextHolder;
+import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.util.collection.MapUtil;
-
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Isolation;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
 
 import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
 
+import static com.ym.mec.biz.dal.enums.SysUserRoleEnum.ORGAN_MANAGER;
+import static java.math.BigDecimal.ROUND_DOWN;
+import static java.math.BigDecimal.ROUND_UP;
+
 @Service
 public class VipGroupActivityServiceImpl extends BaseServiceImpl<Integer, VipGroupActivity>  implements VipGroupActivityService {
 	
@@ -39,7 +48,37 @@ public class VipGroupActivityServiceImpl extends BaseServiceImpl<Integer, VipGro
 	@Autowired
 	private VipGroupCategoryDao vipGroupCategoryDao;
 	@Autowired
+	private StudentPaymentOrderService studentPaymentOrderService;
+	@Autowired
+	private ActivityUserMapperService activityUserMapperService;
+	@Autowired
+	private SysCouponCodeService sysCouponCodeService;
+	@Autowired
+	private MemberFeeSettingService memberFeeSettingService;
+	@Autowired
+	private PracticeGroupSellPriceService practiceGroupSellPriceService;
+	@Autowired
+	private VipGroupDefaultClassesUnitPriceService vipGroupDefaultClassesUnitPriceService;
+	@Autowired
+	private IdGeneratorService idGeneratorService;
+	@Autowired
+	private SysUserCashAccountService sysUserCashAccountService;
+	@Autowired
+	private SysUserCashAccountDetailService sysUserCashAccountDetailService;
+	@Autowired
 	private SysConfigDao sysConfigDao;
+	@Autowired
+	private PayService payService;
+	@Autowired
+	private StudentRegistrationDao studentRegistrationDao;
+	@Autowired
+	private SysEmployeePositionService employeePositionService;
+	@Autowired
+	private SysMessageService sysMessageService;
+	@Autowired
+	private StudentDao studentDao;
+	@Autowired
+	private TenantConfigService tenantConfigService;
 
 	@Override
 	public BaseDAO<Integer, VipGroupActivity> getDAO() {
@@ -62,7 +101,12 @@ public class VipGroupActivityServiceImpl extends BaseServiceImpl<Integer, VipGro
 		}
 	}
 
-	@Override
+    @Override
+    public VipGroupActivityDao getDao() {
+        return vipGroupActivityDao;
+    }
+
+    @Override
 	public VipGroupActivityAddDto addVipGroupActivity(VipGroupActivityAddDto vipGroupActivityAddDto) {
 
 		if(Objects.isNull(vipGroupActivityAddDto.getOrganId())){
@@ -147,19 +191,47 @@ public class VipGroupActivityServiceImpl extends BaseServiceImpl<Integer, VipGro
 
 	@Override
 	public List<VipGroupActivity> findByVipGroupCategory(ActivityQueryDto activityQueryDto) {
-		Teacher teacher = teacherDao.get(activityQueryDto.getTeacherId());
-		if(Objects.isNull(teacher)){
-			throw new BizException("未找到指定教师");
+		if(activityQueryDto.getTeacherId() != null){
+			Teacher teacher = teacherDao.get(activityQueryDto.getTeacherId());
+			if(Objects.isNull(teacher)){
+				throw new BizException("未找到指定教师");
+			}
+			String organId = activityQueryDto.getOrganId();
+			if(StringUtils.isBlank(organId)){
+				organId = teacher.getTeacherOrganId().toString();
+				if (StringUtils.isNotEmpty(teacher.getFlowOrganRange())) {
+					organId += "," + teacher.getFlowOrganRange();
+				}
+				activityQueryDto.setOrganId(organId);
+			}
 		}
-		String organId = activityQueryDto.getOrganId();
-		if(StringUtils.isBlank(organId)){
-			organId = teacher.getTeacherOrganId().toString();
-			if (StringUtils.isNotEmpty(teacher.getFlowOrganRange())) {
-				organId += "," + teacher.getFlowOrganRange();
+		List<VipGroupActivity> activityList = vipGroupActivityDao.findByCategory(activityQueryDto);
+		if(!CollectionUtils.isEmpty(activityList) && activityQueryDto.getActivityChannel().equals(3)){
+			Integer organId = Integer.parseInt(activityQueryDto.getOrganId());
+			BigDecimal buyNum = new BigDecimal(1);
+			activityList.stream().forEach(e->e.setSinglePrice(this.getActivityPrice(e,organId,buyNum)));
+		}
+		return activityList;
+	}
+
+	@Override
+	public BigDecimal getActivityPrice(VipGroupActivity vipGroupActivity, Integer organId, BigDecimal buyNum){
+		BigDecimal actualAmount;
+		if(vipGroupActivity.getActivityType().equals(1)){
+			//获取团练宝价格
+			actualAmount = memberFeeSettingService.getAmount(organId,1,
+					vipGroupActivity.getPeriodEnum(),buyNum,
+					MemberFeeSettingServiceImpl::getCurrentFee);
+		}else {
+			if (StringUtils.isEmpty(vipGroupActivity.getVipGroupCategoryIdList())){
+				//获取分部网管课价格
+				actualAmount = practiceGroupSellPriceService.getAmount(organId,buyNum);
+			}else {
+				//获取分部vip课价格
+				actualAmount = vipGroupDefaultClassesUnitPriceService.getAmount(Integer.parseInt(vipGroupActivity.getVipGroupCategoryIdList()),organId,buyNum);
 			}
-			activityQueryDto.setOrganId(organId);
 		}
-		return vipGroupActivityDao.findByCategory(activityQueryDto);
+		return actualAmount;
 	}
 
 	@Override
@@ -398,4 +470,232 @@ public class VipGroupActivityServiceImpl extends BaseServiceImpl<Integer, VipGro
 		pageInfo.setRows(dataList);
 		return pageInfo;
 	}
+
+	private VipGroupActivity checkActivityBuy(ActivityPayParamDto payParam){
+		VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(payParam.getVipGroupActivityId());
+		if (Objects.nonNull(vipGroupActivity.getStudentMaxUsedTimes()) && vipGroupActivity.getStudentMaxUsedTimes() != -1) {
+			int useNum = activityUserMapperService.countActivityBuyNum(vipGroupActivity.getId(), payParam.getUserId());
+			if (useNum >= vipGroupActivity.getStudentMaxUsedTimes()) {
+				throw new BizException("您已超过该活动购买限制{}次", vipGroupActivity.getStudentMaxUsedTimes());
+			}
+		}
+		if (Objects.nonNull(vipGroupActivity.getMinCourseNum())
+				&& vipGroupActivity.getMinCourseNum() != -1 && Objects.nonNull(vipGroupActivity.getMaxCourseNum())
+				&& vipGroupActivity.getMaxCourseNum() != -1) {
+			if (payParam.getBuyNum().compareTo(vipGroupActivity.getMinCourseNum()) < 0 || payParam.getBuyNum().compareTo(vipGroupActivity.getMaxCourseNum()) > 0) {
+				throw new BizException("该活动课时数为{}节~{}节", vipGroupActivity.getMinCourseNum(), vipGroupActivity.getMaxCourseNum());
+			}
+		}
+		return vipGroupActivity;
+	}
+
+    @Override
+	@Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
+    public HttpResponseResult buy(ActivityPayParamDto payParam) throws Exception {
+		//校验购买资格
+		VipGroupActivity vipGroupActivity = this.checkActivityBuy(payParam);
+		//判断购买类型
+		OrderTypeEnum type;
+		CouponDetailTypeEnum couponType;
+		if(vipGroupActivity.getActivityType().equals(1)){
+			type = OrderTypeEnum.MEMBER;
+			couponType = CouponDetailTypeEnum.MEMBER;
+		}else {
+			if (StringUtils.isEmpty(vipGroupActivity.getVipGroupCategoryIdList())){
+				type = OrderTypeEnum.PRACTICE_GROUP_BUY;
+				couponType = CouponDetailTypeEnum.PRACTICE;
+			}else {
+				type = OrderTypeEnum.SMALL_CLASS_TO_BUY;
+				couponType = CouponDetailTypeEnum.VIP;
+			}
+		}
+		//计算支付金额
+		BigDecimal actualAmount = this.getActivityPrice(vipGroupActivity,payParam.getOrganId(),new BigDecimal(1));
+		actualAmount = actualAmount.multiply(vipGroupActivity.getDiscount()).divide(new BigDecimal(100), 0, ROUND_UP);
+		actualAmount = actualAmount.multiply(new BigDecimal(payParam.getBuyNum()));
+		// 判断是否存在支付中的记录
+		List<StudentPaymentOrder> list = studentPaymentOrderService
+				.queryByCondition(GroupType.ACTIVITY,
+						payParam.getVipGroupActivityId().toString(),
+						payParam.getUserId(),
+						DealStatusEnum.ING,type);
+
+		if (list.size() > 0) {
+			StudentPaymentOrder applyOrder = list.get(list.size() - 1);
+			//校验重复支付
+			HttpResponseResult result = studentPaymentOrderService.checkRepeatPay(applyOrder, payParam.getRepeatPay());
+			if (result.getCode() != 200) {
+				return result;
+			}
+		}
+
+		//校验优惠券
+		String[] checkCoupon = CouponDetailTypeEnum.getAllowType(couponType);
+		StudentPaymentOrder studentPaymentOrder = sysCouponCodeService.use(payParam.getCouponIdList(), actualAmount, true, checkCoupon);
+		if(payParam.getAmount().compareTo(studentPaymentOrder.getActualAmount()) != 0){
+			throw new BizException("非法请求");
+		}
+		studentPaymentOrder.setUserId(payParam.getUserId());
+		studentPaymentOrder.setGroupType(GroupType.ACTIVITY);
+		String orderNo = idGeneratorService.generatorId("payment") + "";
+		studentPaymentOrder.setOrderNo(orderNo);
+		studentPaymentOrder.setStatus(DealStatusEnum.ING);
+		studentPaymentOrder.setType(type);
+		studentPaymentOrder.setMusicGroupId(payParam.getVipGroupActivityId().toString());
+		studentPaymentOrder.setOrganId(payParam.getOrganId());
+		studentPaymentOrder.setRoutingOrganId(payParam.getOrganId());
+		studentPaymentOrder.setVersion(0);
+		studentPaymentOrder.setActivityBuyNum(payParam.getBuyNum());
+		studentPaymentOrder.setActivityId(payParam.getVipGroupActivityId().toString());
+		studentPaymentOrder.setMemo("学员活动购买");
+		studentPaymentOrderService.insert(studentPaymentOrder);
+
+		//余额消耗
+		Boolean success = sysUserCashAccountService.use(payParam,studentPaymentOrder);
+		if(success){
+			this.orderCallback(studentPaymentOrder);
+			Map<String, Object> result = new HashMap<>();
+			result.put("orderNo", studentPaymentOrder.getOrderNo());
+			return BaseController.succeed(result);
+		}
+
+		BigDecimal amount = studentPaymentOrder.getActualAmount();
+		BigDecimal balance = BigDecimal.ZERO;
+		String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
+		//分类费用 course,instrument,accessories,other
+		Map<String, BigDecimal> classFee = new HashMap<>();
+		classFee.put("course", amount);
+		classFee.put("instrument", BigDecimal.ZERO);
+		classFee.put("accessories", BigDecimal.ZERO);
+		classFee.put("other", BigDecimal.ZERO);
+		Map<String, Object> payMap = payService.getPayMap(
+				amount,
+				balance,
+				orderNo,
+				baseApiUrl + "/api-student/studentOrder/callback",
+				baseApiUrl + "/api-student/studentOrder/paymentResult?orderNo=" + orderNo,
+				"学员活动购买",
+				vipGroupActivity.getName(),
+				payParam.getOrganId(),
+				"activityBuy"
+		);
+
+		studentPaymentOrder.setMerNos((String) payMap.get("routingMerNos"));
+		studentPaymentOrder.setPaymentChannel((String) payMap.get("type"));
+		studentPaymentOrderService.update(studentPaymentOrder);
+		return BaseController.succeed(payMap);
+    }
+
+
+	@Override
+	@Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
+	public void orderCallback(StudentPaymentOrder studentPaymentOrder) {
+		//更新订单状态
+		int updateCount = studentPaymentOrderService.update(studentPaymentOrder);
+		if (updateCount <= 0) {
+			throw new BizException("订单更新失败");
+		}
+		if (studentPaymentOrder.getStatus() == DealStatusEnum.SUCCESS) {
+			Student student = studentDao.get(studentPaymentOrder.getUserId());
+			//活动赠送
+			studentPaymentOrderService.activityGive(Integer.parseInt(studentPaymentOrder.getActivityId()), studentPaymentOrder,
+					null, null, student.getTeacherId());
+			//保存账户信息
+			sysUserCashAccountDetailService.saveSysUserCashAccountDetail(studentPaymentOrder,studentPaymentOrder.getMemo());
+			//发送短信
+			this.sendSuccessMsg(studentPaymentOrder);
+		}else {
+			if (Objects.nonNull(studentPaymentOrder.getBalancePaymentAmount()) && studentPaymentOrder.getBalancePaymentAmount().compareTo(BigDecimal.ZERO) > 0) {
+				sysUserCashAccountService.updateBalance(studentPaymentOrder.getUserId(), studentPaymentOrder.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, studentPaymentOrder.getMemo() + "支付失败,退还余额");
+			}
+			sysCouponCodeService.quit(studentPaymentOrder.getCouponCodeId());
+			return;
+		}
+	}
+
+    @Override
+    public void setActivityType(VipGroupActivity activity) {
+		//如果是会员活动
+		if(activity.getActivityType().equals(1)){
+			activity.setActivityTypeEnum("MEMBER");
+		}else {
+			if(StringUtils.isEmpty(activity.getVipGroupCategoryIdList())){
+				activity.setActivityTypeEnum("PRACTICE");
+			}else {
+				if(StringUtils.equals(activity.getVipGroupCategoryNames(),"乐理课")){
+					activity.setActivityTypeEnum("THEORY");
+				}else{
+					activity.setActivityTypeEnum(activity.getVipGroupCategoryNames());
+				}
+			}
+		}
+		String giveCourseType = activity.getGiveCourseType();
+		if(StringUtils.isNotEmpty(giveCourseType)){
+			if(StringUtils.equals(giveCourseType,"VIP")){
+				if(StringUtils.equals(activity.getGiveCategoryName(),"乐理课")){
+					activity.setGiveCourseType("THEORY");
+				}
+			}
+		}
+    }
+
+    private void sendSuccessMsg(StudentPaymentOrder studentPaymentOrder){
+		Integer userId = studentPaymentOrder.getUserId();
+		VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(Integer.parseInt(studentPaymentOrder.getActivityId()));
+		String activityName = vipGroupActivity.getName();
+		if(vipGroupActivity.getActivityType().equals(0)) {
+			SysUser user = teacherDao.getUser(userId);
+			String username = StringUtils.isEmpty(user.getUsername()) ? user.getRealName() : user.getUsername();
+			Map<Integer, String> map = new HashMap<>(1);
+			map.put(userId, userId.toString());
+			sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.PUSH_STUDENT_BUY_ACTIVITY, map, null, 0, null, "STUDENT",
+					activityName);
+			//获取乐团主管
+			Map<Integer, String> eduMap = MapUtil.convertMybatisMap(studentRegistrationDao.queryStudentEduMap(userId));
+			if (CollectionUtils.isEmpty(eduMap)) {
+				Set<Integer> integers = employeePositionService.queryUserIdByRoleId(new SysUserRoleEnum[]{ORGAN_MANAGER}, studentPaymentOrder.getOrganId());
+				eduMap = new HashMap<>(integers.size());
+				if (!CollectionUtils.isEmpty(integers)) {
+					for (Integer integer : integers) {
+						eduMap.put(integer, integer.toString());
+					}
+				}
+			}
+			if (!CollectionUtils.isEmpty(eduMap)) {
+				sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.PUSH_SYSTEM_ACTIVITY_COURSE,
+						eduMap, null, 0, null, "SYSTEM", username, activityName);
+			}
+			Student student = studentDao.get(userId);
+			if (Objects.nonNull(student) && student.getTeacherId() != null) {
+				Map<Integer, String> teacherMap = new HashMap<>(1);
+				teacherMap.put(student.getTeacherId(), student.getTeacherId().toString());
+				sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.PUSH_TEACHER_ACTIVITY_COURSE,
+						teacherMap, null, 0, null, "TEACHER", username, activityName);
+			}
+		}else {
+			SysUser user = teacherDao.getUser(userId);
+			String username = StringUtils.isEmpty(user.getUsername()) ? user.getRealName() : user.getUsername();
+			Map<Integer, String> map = new HashMap<>(1);
+			map.put(userId, userId.toString());
+			sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.PUSH_STUDENT_BUY_MEMBER_ACTIVITY, map, null, 0, null, "STUDENT",
+					activityName);
+			if(!tenantConfigService.autoActivationFlag(user.getTenantId())){
+				//获取乐团主管
+				Map<Integer, String> eduMap = MapUtil.convertMybatisMap(studentRegistrationDao.queryStudentEduMap(userId));
+				if (CollectionUtils.isEmpty(eduMap)) {
+					Set<Integer> integers = employeePositionService.queryUserIdByRoleId(new SysUserRoleEnum[]{ORGAN_MANAGER}, studentPaymentOrder.getOrganId());
+					eduMap = new HashMap<>(integers.size());
+					if (!CollectionUtils.isEmpty(integers)) {
+						for (Integer integer : integers) {
+							eduMap.put(integer, integer.toString());
+						}
+					}
+				}
+				if (!CollectionUtils.isEmpty(eduMap)) {
+					sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.PUSH_SYSTEM_ACTIVITY_MEMBER,
+							eduMap, null, 0, null, "SYSTEM", username, activityName);
+				}
+			}
+		}
+	}
 }

+ 12 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupDefaultClassesUnitPriceServiceImpl.java

@@ -1,16 +1,17 @@
 package com.ym.mec.biz.service.impl;
 
-import com.ym.mec.common.exception.BizException;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
 import com.ym.mec.biz.dal.dao.VipGroupDefaultClassesUnitPriceDao;
 import com.ym.mec.biz.dal.entity.VipGroupDefaultClassesUnitPrice;
 import com.ym.mec.biz.service.VipGroupDefaultClassesUnitPriceService;
 import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
 import java.util.Objects;
+import java.util.Optional;
 
 @Service
 public class VipGroupDefaultClassesUnitPriceServiceImpl extends BaseServiceImpl<Integer, VipGroupDefaultClassesUnitPrice>  implements VipGroupDefaultClassesUnitPriceService {
@@ -35,4 +36,11 @@ public class VipGroupDefaultClassesUnitPriceServiceImpl extends BaseServiceImpl<
 			return super.insert(bean);
 		}
 	}
+
+	@Override
+	public BigDecimal getAmount(Integer categoryId,Integer organId, BigDecimal courseNum) {
+		VipGroupDefaultClassesUnitPrice vipGroupDefaultClassesUnitPrice = Optional.ofNullable(vipGroupDefaultClassesUnitPriceDao.getByVipGroupCategory(categoryId,organId)).
+				orElseThrow(()->new BizException("课程单价设置错误"));
+		return vipGroupDefaultClassesUnitPrice.getOnlineClassesUnitPrice().multiply(courseNum);
+	}
 }

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

@@ -2308,21 +2308,21 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 
     @Override
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
-    public void orderCallback(StudentPaymentOrder studentPaymentOrder) {
-        Integer userId = studentPaymentOrder.getUserId();
-        Integer tenantId = studentPaymentOrder.getTenantId();
-        StudentPaymentOrder order = studentPaymentOrderDao.lockOrder(studentPaymentOrder.getId());
+    public void orderCallback(StudentPaymentOrder order) {
+        Integer userId = order.getUserId();
+        Integer tenantId = order.getTenantId();
+        /*StudentPaymentOrder order = studentPaymentOrderDao.lockOrder(studentPaymentOrder.getId());
         if (!order.getStatus().equals(DealStatusEnum.ING)) {
             return;
-        }
+        }*/
         //更新订单状态
-        int updateCount = studentPaymentOrderService.update(studentPaymentOrder);
+        int updateCount = studentPaymentOrderService.update(order);
         if (updateCount <= 0) {
             throw new BizException("订单更新失败");
         }
         Date date = new Date();
         ClassGroup classGroup = classGroupDao.get(order.getClassGroupId());
-        if (studentPaymentOrder.getStatus() == DealStatusEnum.SUCCESS) {
+        if (order.getStatus() == DealStatusEnum.SUCCESS) {
             VipGroup vipGroup = vipGroupDao.get(Long.parseLong(classGroup.getMusicGroupId()));
             if (vipGroup.getStatus() == VipGroupStatusEnum.DELETE ||
                     vipGroup.getStatus() == VipGroupStatusEnum.CANCEL ||
@@ -2335,7 +2335,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
                 sysCouponCodeService.quit(order.getCouponCodeId());
             } else {
                 //活动赠送
-                Integer activityUserMapperId = studentPaymentOrderService.activityGive(vipGroup.getVipGroupActivityId(), studentPaymentOrder,
+                Integer activityUserMapperId = studentPaymentOrderService.activityGive(vipGroup.getVipGroupActivityId(), order,
                         vipGroup.getId().toString(), null, vipGroup.getUserId());
 
                 //生成班级学员关联
@@ -2448,9 +2448,9 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
                 sysUserIncomeCashAccountDetail.setAmount(order.getActualAmount());
                 sysUserIncomeCashAccountDetail.setBalance(sysUserCashAccount.getBalance().add(order.getActualAmount()));
                 sysUserIncomeCashAccountDetail.setAttribute(order.getTransNo());
-                sysUserIncomeCashAccountDetail.setChannel(studentPaymentOrder.getPaymentChannel());
-                sysUserIncomeCashAccountDetail.setComAmount(studentPaymentOrder.getComAmount());
-                sysUserIncomeCashAccountDetail.setPerAmount(studentPaymentOrder.getPerAmount());
+                sysUserIncomeCashAccountDetail.setChannel(order.getPaymentChannel());
+                sysUserIncomeCashAccountDetail.setComAmount(order.getComAmount());
+                sysUserIncomeCashAccountDetail.setPerAmount(order.getPerAmount());
 
                 //支出
                 SysUserCashAccountDetail sysUserExpendCashAccountDetail = new SysUserCashAccountDetail();
@@ -2460,12 +2460,12 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
                 sysUserExpendCashAccountDetail.setAmount(order.getActualAmount().negate());
                 sysUserExpendCashAccountDetail.setBalance(sysUserCashAccount.getBalance());
                 sysUserExpendCashAccountDetail.setAttribute(order.getTransNo());
-                sysUserExpendCashAccountDetail.setChannel(studentPaymentOrder.getPaymentChannel());
-                if (studentPaymentOrder.getComAmount() != null) {
-                    sysUserExpendCashAccountDetail.setComAmount(studentPaymentOrder.getComAmount().negate());
+                sysUserExpendCashAccountDetail.setChannel(order.getPaymentChannel());
+                if (order.getComAmount() != null) {
+                    sysUserExpendCashAccountDetail.setComAmount(order.getComAmount().negate());
                 }
-                if (studentPaymentOrder.getPerAmount() != null) {
-                    sysUserExpendCashAccountDetail.setPerAmount(studentPaymentOrder.getPerAmount().negate());
+                if (order.getPerAmount() != null) {
+                    sysUserExpendCashAccountDetail.setPerAmount(order.getPerAmount().negate());
                 }
 
                 sysUserCashAccountDetailService.insert(sysUserIncomeCashAccountDetail);
@@ -2491,8 +2491,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
             }
         } else {
             classGroup.setStudentNum(classGroup.getStudentNum() - 1);
-            if (studentPaymentOrder.getBalancePaymentAmount() != null && studentPaymentOrder.getBalancePaymentAmount().doubleValue() > 0) {
-                sysUserCashAccountService.updateBalance(userId, studentPaymentOrder.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS,
+            if (order.getBalancePaymentAmount() != null && order.getBalancePaymentAmount().doubleValue() > 0) {
+                sysUserCashAccountService.updateBalance(userId, order.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS,
                         "VIP课购买失败");
             }
             sysCouponCodeService.quit(order.getCouponCodeId());
@@ -2895,7 +2895,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
         List<CourseScheduleStudentPayment> studentPayments = courseScheduleStudentPaymentDao.findNotStartCourseStudentPaymentsWithClassGroupAndStudent(classGroup.getId(), studentId);
         if (!CollectionUtils.isEmpty(studentPayments)) {
             //学员休学转化排课资格
-            activityUserMapperService.subCourseConvert(studentPayments,studentId,vipGroup.getSingleClassMinutes(),vipGroup.getVipGroupCategoryId());
+            activityUserMapperService.subCourseConvert(studentPayments,studentId,vipGroup);
             List<Integer> studentPaymentIds = studentPayments.stream().map(e -> e.getId().intValue()).collect(Collectors.toList());
             courseScheduleStudentPaymentDao.batchDeleteWithID(studentPaymentIds);
         }

+ 113 - 4
mec-biz/src/main/resources/config/mybatis/ActivityUserMapperMapper.xml

@@ -40,6 +40,7 @@
 		<result column="give_coupon_id_" property="giveCouponId" />
 		<result column="create_time_" property="createTime" />
 		<result column="calender_id_" property="calenderId" />
+		<result column="organ_id_" property="organId" />
 		<result column="update_time_" property="updateTime" />
 		<result column="tenant_id_" property="tenantId" />
 	</resultMap>
@@ -61,13 +62,13 @@
 										  vip_group_id_,give_vip_group_id_,practice_group_id_,give_practice_group_id_,return_fee_,
 		                                  member_order_id_,give_member_order_id_,teacher_id_,actual_price_,add_memo_,cut_memo_,tenant_id_,give_coupon_id_,
 										  total_course_num_,total_give_course_num_,sub_course_num_,sub_give_course_num_,sub_no_course_price_,single_course_time_,
-		                                  give_single_course_time_,category_id_,give_category_id_,calender_id_)
+		                                  give_single_course_time_,category_id_,give_category_id_,calender_id_,organ_id_)
 		                                  VALUES(#{activityId},#{userId},#{vipFlag},#{giveVipFlag},#{practiceFlag},
 		                                         #{givePracticeFlag},#{memberFlag},#{giveMemberFlag},NOW(),NOW(),#{paymentOrderId},#{vipGroupId},
 		                                         #{giveVipGroupId},#{practiceGroupId},#{givePracticeGroupId},#{returnFee},
 		                                         #{memberOrderId},#{giveMemberOrderId},#{teacherId},#{actualPrice},#{addMemo},#{cutMemo},#{tenantId},#{giveCouponId},
 		                                         #{totalCourseNum},#{totalGiveCourseNum},#{subCourseNum},#{subGiveCourseNum},#{subNoCoursePrice},
-		                                         #{singleCourseTime},#{giveSingleCourseTime},#{categoryId},#{giveCategoryId},#{calenderId})
+		                                         #{singleCourseTime},#{giveSingleCourseTime},#{categoryId},#{giveCategoryId},#{calenderId},#{organId})
 	</insert>
     <insert id="batchInsert">
 		INSERT INTO activity_user_mapper (activity_id_,user_id_,vip_flag_,give_vip_flag_,
@@ -75,7 +76,7 @@
 		vip_group_id_,give_vip_group_id_,practice_group_id_,give_practice_group_id_,return_fee_,member_order_id_,
 		                                  give_member_order_id_,teacher_id_,actual_price_,add_memo_,cut_memo_,tenant_id_,give_coupon_id_,
 		total_course_num_,total_give_course_num_,sub_course_num_,sub_give_course_num_,sub_no_course_price_,single_course_time_,
-		                                  give_single_course_time_,category_id_,give_category_id_,calender_id_)
+		                                  give_single_course_time_,category_id_,give_category_id_,calender_id_,organ_id_)
 		VALUES
 		<foreach collection="activityUserMappers" item="item" separator=",">
 			(#{item.activityId},#{item.userId},#{item.vipFlag},#{item.giveVipFlag},#{item.practiceFlag},
@@ -84,7 +85,7 @@
 			 #{item.memberOrderId},#{item.giveMemberOrderId},#{item.teacherId},#{item.actualPrice},#{item.addMemo},#{item.cutMemo},
 			 #{item.tenantId},#{item.giveCouponId},#{item.totalCourseNum},#{item.totalGiveCourseNum},#{item.subCourseNum},
 			 #{item.subGiveCourseNum},#{item.subNoCoursePrice},#{item.singleCourseTime},#{item.giveSingleCourseTime},
-			 #{item.categoryId},#{item.giveCategoryId},#{item.calenderId})
+			 #{item.categoryId},#{item.giveCategoryId},#{item.calenderId},#{item.organId})
 		</foreach>
 	</insert>
     <!-- 根据主键查询一条记录 -->
@@ -589,4 +590,112 @@
 	<select id="findByIds" resultMap="ActivityUserMapper">
 		SELECT * FROM activity_user_mapper aum WHERE FIND_IN_SET(aum.id_,#{activityUserMapperIds})
 	</select>
+	<resultMap id="ActivityUserMapperDetailDto" type="com.ym.mec.biz.dal.dto.ActivityUserMapperDetailDto">
+		<result property="activityId" column="activity_id_"/>
+		<result property="addMemo" column="add_memo_"/>
+		<result property="subCourseNum" column="sub_course_num_"/>
+		<result property="totalCourseNum" column="total_course_num_"/>
+		<result property="createTime" column="create_time_"/>
+		<result property="freeFlag" column="free_flag_"/>
+		<result property="subCoursePrice" column="sub_no_course_price_"/>
+		<result property="categoryName" column="name_"/>
+	</resultMap>
+    <select id="queryDetailPage" resultMap="ActivityUserMapperDetailDto">
+		select aum.id_,aum.activity_id_,aum.add_memo_,vga.name_,aum.sub_course_num_,aum.total_course_num_,
+		aum.create_time_,false free_flag_,aum.sub_no_course_price_ from activity_user_mapper aum
+		left join vip_group_category vga ON vga.id_ = aum.category_id_
+		where (aum.vip_flag_ > 0 OR aum.practice_flag_ > 0) AND aum.return_fee_ = 0
+		<include refid="countDetailPageSql"/>
+		UNION ALL
+		select aum.id_,aum.activity_id_,aum.add_memo_,vga.name_,aum.sub_give_course_num_ sub_course_num_,
+		aum.total_give_course_num_ total_course_num_,aum.create_time_,true free_flag_,0 sub_no_course_price_ from activity_user_mapper aum
+		left join vip_group_category vga ON vga.id_ = aum.give_category_id_
+		where (aum.give_vip_flag_ > 0 OR aum.give_practice_flag_ > 0) AND aum.return_fee_ = 0
+		<include refid="countDetailPageSql"/>
+		order by id_ DESC
+		<include refid="global.limit"/>
+	</select>
+	<select id="countDetailPage" resultType="java.lang.Integer">
+		select COUNT(aum.id_) from (select aum.id_ from activity_user_mapper aum
+		where (aum.vip_flag_ > 0 OR aum.practice_flag_ > 0) AND aum.return_fee_ = 0
+		<include refid="countDetailPageSql"/>
+		UNION ALL
+		select aum.id_ from activity_user_mapper aum
+		where (aum.give_vip_flag_ > 0 OR aum.give_practice_flag_ > 0) AND aum.return_fee_ = 0
+		<include refid="countDetailPageSql"/>
+		) aum
+	</select>
+	<sql id="countDetailPageSql">
+		<if test="search != null and search != ''">
+			AND (aum.activity_id_ = #{search} OR aum.add_memo_ LIKE CONCAT('%',#{search},'%'))
+		</if>
+		<if test="userId != null">
+			AND aum.user_id_ = #{userId}
+		</if>
+	</sql>
+	<resultMap id="ActivityUserMapperSumDto" type="com.ym.mec.biz.dal.dto.ActivityUserMapperSumDto">
+		<result property="organId" column="organ_id_"/>
+		<result property="userId" column="user_id_"/>
+		<result property="username" column="username_"/>
+		<result property="phone" column="phone_"/>
+		<result property="one" column="one"/>
+		<result property="two" column="two"/>
+		<result property="three" column="three"/>
+		<result property="four" column="four"/>
+		<result property="five" column="five"/>
+		<result property="six" column="six"/>
+		<result property="seven" column="seven"/>
+		<result property="theory" column="theory"/>
+		<result property="practice" column="practice"/>
+	</resultMap>
+	<sql id="querySumPageSql">
+		<where>
+			<if test="organId != null and organId != ''">
+				AND FIND_IN_SET(su.organ_id_,#{organId})
+			</if>
+			<if test="search != null and search != ''">
+				AND (su.username_ LIKE CONCAT('%',#{search},'%') OR su.phone_ LIKE CONCAT('%',#{search},'%') OR su.id_ = #{search})
+			</if>
+		</where>
+	</sql>
+	<select id="countSumPage" resultType="java.lang.Integer">
+		select COUNT(DISTINCT aum.user_id_)
+		from (select aum.user_id_,aum.category_id_,aum.sub_course_num_,aum.total_course_num_
+		from activity_user_mapper aum
+		left join vip_group_category vgc ON vgc.id_ = aum.category_id_
+		where aum.return_fee_ = 0 and aum.total_course_num_ > 0
+		UNION ALL
+		select aum.user_id_,aum.give_category_id_ category_id_,aum.sub_give_course_num_,aum.total_give_course_num_
+		from activity_user_mapper aum
+		left join vip_group_category vgc ON vgc.id_ = aum.category_id_
+		where aum.return_fee_ = 0 and aum.total_give_course_num_ > 0) aum
+		left join sys_user su ON su.id_ = aum.user_id_
+		<include refid="querySumPageSql"/>
+	</select>
+	<select id="querySumPage" resultType="com.ym.mec.biz.dal.dto.ActivityUserMapperSumDto">
+		select aum.user_id_,su.organ_id_,su.username_,su.phone_,
+		CONCAT(SUM(CASE WHEN vgc.name_ = '1v1' THEN aum.total_course_num_ - aum.sub_course_num_ ELSE 0 END) ,'/',SUM(CASE WHEN vgc.name_ = '1v1' THEN aum.total_course_num_ ELSE 0 END)) 'one',
+		CONCAT(SUM(CASE WHEN vgc.name_ = '1v2' THEN aum.total_course_num_ - aum.sub_course_num_ ELSE 0 END) ,'/',SUM(CASE WHEN vgc.name_ = '1v2' THEN aum.total_course_num_ ELSE 0 END)) 'two',
+		CONCAT(SUM(CASE WHEN vgc.name_ = '1v3' THEN aum.total_course_num_ - aum.sub_course_num_ ELSE 0 END) ,'/',SUM(CASE WHEN vgc.name_ = '1v3' THEN aum.total_course_num_ ELSE 0 END)) 'three',
+		CONCAT(SUM(CASE WHEN vgc.name_ = '1v4' THEN aum.total_course_num_ - aum.sub_course_num_ ELSE 0 END) ,'/',SUM(CASE WHEN vgc.name_ = '1v4' THEN aum.total_course_num_ ELSE 0 END)) 'four',
+		CONCAT(SUM(CASE WHEN vgc.name_ = '1v5' THEN aum.total_course_num_ - aum.sub_course_num_ ELSE 0 END) ,'/',SUM(CASE WHEN vgc.name_ = '1v5' THEN aum.total_course_num_ ELSE 0 END)) 'five',
+		CONCAT(SUM(CASE WHEN vgc.name_ = '1v6' THEN aum.total_course_num_ - aum.sub_course_num_ ELSE 0 END) ,'/',SUM(CASE WHEN vgc.name_ = '1v6' THEN aum.total_course_num_ ELSE 0 END)) 'six',
+		CONCAT(SUM(CASE WHEN vgc.name_ = '1v7' THEN aum.total_course_num_ - aum.sub_course_num_ ELSE 0 END) ,'/',SUM(CASE WHEN vgc.name_ = '1v7' THEN aum.total_course_num_ ELSE 0 END)) 'seven',
+		CONCAT(SUM(CASE WHEN vgc.name_ = '乐理课' THEN aum.total_course_num_ - aum.sub_course_num_ ELSE 0 END) ,'/',SUM(CASE WHEN vgc.name_ = '乐理课' THEN aum.total_course_num_ ELSE 0 END)) 'theory',
+		CONCAT(SUM(CASE WHEN vgc.name_ IS NULL THEN aum.total_course_num_ - aum.sub_course_num_ ELSE 0 END) ,'/',SUM(CASE WHEN vgc.name_ IS NULL THEN aum.total_course_num_ ELSE 0 END)) 'practice'
+		from (select aum.user_id_,aum.category_id_,aum.sub_course_num_,aum.total_course_num_
+		from activity_user_mapper aum
+		left join vip_group_category vgc ON vgc.id_ = aum.category_id_
+		where aum.return_fee_ = 0 and aum.total_course_num_ > 0
+		UNION ALL
+		select aum.user_id_,aum.give_category_id_ category_id_,aum.sub_give_course_num_,aum.total_give_course_num_
+		from activity_user_mapper aum
+		left join vip_group_category vgc ON vgc.id_ = aum.category_id_
+		where aum.return_fee_ = 0 and aum.total_give_course_num_ > 0) aum
+		left join vip_group_category vgc ON vgc.id_ = aum.category_id_
+		left join sys_user su ON su.id_ = aum.user_id_
+		<include refid="querySumPageSql"/>
+		group by aum.user_id_
+		<include refid="global.limit"/>
+	</select>
 </mapper>

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

@@ -4020,9 +4020,10 @@
         <result property="courseScheduleReviewId" column="course_schedule_review_id_"/>
         <result property="classDate" column="class_date_"/>
         <result property="studentAttendanceId" column="student_attendance_id_"/>
+        <result property="repairFlag" column="repair_flag_"/>
     </resultMap>
     <select id="queryStudyStandard" resultMap="StudentStandardDto">
-        SELECT su.avatar_,su.username_,sa.user_id_,sb.name_ subject_name_,sa.qualified_flag_
+        SELECT su.avatar_,su.username_,sa.user_id_,sb.name_ subject_name_,sa.qualified_flag_,s.repair_flag_
         FROM student_attendance sa
         LEFT JOIN student s ON s.user_id_ = sa.user_id_
         LEFT JOIN `subject` sb ON sb.id_ = s.subject_id_list_

+ 3 - 1
mec-biz/src/main/resources/config/mybatis/CourseScheduleStudentPaymentMapper.xml

@@ -820,7 +820,9 @@
 			su.organ_id_
 	</select>
     <select id="getCourseStudents" resultType="com.ym.mec.biz.dal.dto.BasicUserDto">
-		SELECT cssp.user_id_ userId,st.member_rank_setting_id_ memberRankSettingId,s.name_ subjectName,su.avatar_ headUrl,su.username_ name,st.subject_id_list_ subjectIdList
+		SELECT cssp.user_id_ userId,st.member_rank_setting_id_ memberRankSettingId,
+		       s.name_ subjectName,su.avatar_ headUrl,su.username_ name,
+		       st.subject_id_list_ subjectIdList,st.repair_flag_ repairFlag
 		FROM course_schedule_student_payment cssp
 		LEFT JOIN sys_user su ON su.id_ = cssp.user_id_
 		LEFT JOIN student st ON st.user_id_ = cssp.user_id_

+ 5 - 1
mec-biz/src/main/resources/config/mybatis/StudentManageDao.xml

@@ -80,6 +80,7 @@
         <result column="experience_membership_end_time_" property="experienceMembershipEndTime"/>
         <result column="record_user_id_" property="recordUserId"/>
         <result column="ext_subject_ids_" property="extSubjectIds"/>
+        <result column="repair_flag_" property="repairFlag"/>
     </resultMap>
 
     <update id="updateUser" parameterType="com.ym.mec.auth.api.entity.SysUser">
@@ -147,7 +148,7 @@
     </update>
 
     <select id="findStudentsByOrganId" resultMap="studentManageListDto">
-        SELECT o.`name_` organ_name_,o.grade_type_,s.`user_id_` ,su.`username_` ,su.`phone_` parents_phone_,s.ext_subject_ids_,
+        SELECT o.`name_` organ_name_,o.grade_type_,s.`user_id_`,s.repair_flag_ ,su.`username_` ,su.`phone_` parents_phone_,s.ext_subject_ids_,
         sut.name_ real_name_,su.`gender_` , su.organ_id_,su.avatar_,
 		tu.`real_name_` teacher_name_,CASE s.service_tag_ WHEN 2 THEN 0 ELSE s.service_tag_ END service_tag_ ,s.`operating_tag_` ,
         s.care_package_, s.come_on_package_, suca.`course_balance_` ,suca.balance_,
@@ -198,6 +199,9 @@
             <if test="isActive != null and isActive == true">
                 AND su.password_ is not null
             </if>
+            <if test="repairFlag != null">
+                AND s.repair_flag_ = #{repairFlag}
+            </if>
             <if test="isActive != null and isActive == false">
                 AND su.password_ is null
             </if>

+ 6 - 0
mec-biz/src/main/resources/config/mybatis/StudentMapper.xml

@@ -1372,6 +1372,12 @@
         AND sr.music_group_status_ = 'NORMAL' AND mg.course_view_type_ != 2 AND mg.`status_` = 'PROGRESS'
         GROUP BY sr.user_id_)t)
     </update>
+    <update id="updateRepairFlag">
+        update student set repair_flag_ = #{repairFlag} where user_id_ IN
+        <foreach collection="userIdList" open="(" close=")" item="id" separator=",">
+            #{id}
+        </foreach>
+    </update>
 
     <select id="queryStudent" resultMap="Student">
         SELECT s.*,su.username_,su.phone_,o.name_ organ_name_,sb.name_ subject_name_ FROM student s

+ 7 - 0
mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml

@@ -1831,4 +1831,11 @@
         </foreach>
         group by sr.user_id_ , u.organ_id_
     </select>
+    <select id="queryStudentEduMap" resultType="java.util.Map">
+        select mg.educational_teacher_id_ 'key',su.real_name_ 'value' from student_registration sr
+        left join music_group mg ON mg.id_ = sr.music_group_id_
+        left join sys_user su ON su.id_ = mg.educational_teacher_id_
+        where sr.music_group_status_ = 'NORMAL' AND mg.status_ = 'PROGRESS' AND sr.user_id_ = #{userId}
+        group by mg.educational_teacher_id_
+    </select>
 </mapper>

+ 15 - 9
mec-biz/src/main/resources/config/mybatis/StudentRepairMapper.xml

@@ -151,23 +151,29 @@
         SELECT su.username_ ,su.id_ user_id_,su.avatar_ head_url_,su.gender_,su.phone_,s.care_package_,s.come_on_package_,su.organ_id_
         FROM sys_user su
         LEFT JOIN student s ON su.id_=s.user_id_
-        WHERE FIND_IN_SET(organ_id_,#{organIdList})
-        AND user_type_ LIKE '%STUDENT%'
+        WHERE FIND_IN_SET(su.organ_id_,#{organIdList})
+        AND su.user_type_ LIKE '%STUDENT%' AND su.del_flag_ = 0
         <if test="search">
-            AND (username_ LIKE CONCAT(#{search},'%') OR phone_ LIKE CONCAT(#{search},'%'))
+            AND (su.username_ LIKE CONCAT(#{search},'%') OR su.phone_ LIKE CONCAT(#{search},'%'))
+        </if>
+        <if test="repairFlag != null">
+            AND s.repair_flag_ = #{repairFlag}
         </if>
-        AND del_flag_ = 0
         <include refid="global.limit"/>
     </select>
 
     <select id="getStudentsCount" resultType="java.lang.Integer">
-        SELECT COUNT(*) FROM sys_user
-        WHERE FIND_IN_SET(organ_id_,#{organIdList})
-        AND user_type_ LIKE '%STUDENT%'
+        SELECT COUNT(su.id_) FROM sys_user su
+        <if test="repairFlag != null">
+            LEFT JOIN student s ON su.id_=s.user_id_
+        </if>
+        WHERE FIND_IN_SET(su.organ_id_,#{organIdList}) AND su.user_type_ LIKE '%STUDENT%' AND su.del_flag_ = 0
         <if test="search">
-            AND (username_ LIKE CONCAT(#{search},'%') OR phone_ LIKE CONCAT(#{search},'%'))
+            AND (su.username_ LIKE CONCAT(#{search},'%') OR su.phone_ LIKE CONCAT(#{search},'%'))
+        </if>
+        <if test="repairFlag != null">
+            AND s.repair_flag_ = #{repairFlag}
         </if>
-        AND del_flag_ = 0
     </select>
 
     <select id="queryPage" resultMap="StudentRepair">

+ 4 - 1
mec-biz/src/main/resources/config/mybatis/VipGroupActivityMapper.xml

@@ -196,8 +196,11 @@
 			vip_group_activity vga
 			LEFT JOIN activity_apply_student_type ast ON vga.id_ = ast.activity_id_
 		WHERE vga.status_ = 'PROGRESS'
-		AND vga.del_flag_ = 0 AND vga.course_type_ = #{activityQueryDto.courseType}
+		AND vga.del_flag_ = 0
 		AND FIND_IN_SET(#{activityQueryDto.organId},vga.organ_id_)
+		<if test="activityQueryDto.courseType != null and activityQueryDto.courseType != ''">
+			AND vga.course_type_ = #{activityQueryDto.courseType}
+		</if>
 		<if test="activityQueryDto.enable != null and activityQueryDto.enable == true">
 			AND ((NOW() &lt; vga.end_time_ AND NOW() > vga.start_time_) OR vga.end_time_ IS NULL)
 		</if>

+ 77 - 39
mec-student/src/main/java/com/ym/mec/student/controller/ActivityController.java

@@ -1,18 +1,23 @@
 package com.ym.mec.student.controller;
 
 import com.alibaba.fastjson.JSONArray;
-import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.StudentDao;
 import com.ym.mec.biz.dal.dao.StudentPaymentOrderDao;
 import com.ym.mec.biz.dal.dao.SysConfigDao;
-import com.ym.mec.biz.dal.dao.VipGroupActivityDao;
-import com.ym.mec.biz.dal.dto.BuyDoubleEleven2021Dto;
+import com.ym.mec.biz.dal.dao.VipGroupCategoryDao;
+import com.ym.mec.biz.dal.dto.ActivityPayParamDto;
+import com.ym.mec.biz.dal.dto.ActivityQueryDto;
 import com.ym.mec.biz.dal.dto.Cloud2022ActivityDto;
+import com.ym.mec.biz.dal.dto.ConditionDto;
 import com.ym.mec.biz.dal.entity.ActivityDetailDto;
 import com.ym.mec.biz.dal.entity.SporadicChargeInfo;
+import com.ym.mec.biz.dal.entity.Student;
 import com.ym.mec.biz.dal.entity.VipGroupActivity;
 import com.ym.mec.biz.service.MarketActivityService;
 import com.ym.mec.biz.service.SporadicChargeInfoService;
+import com.ym.mec.biz.service.SysUserService;
+import com.ym.mec.biz.service.VipGroupActivityService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.yonge.log.model.AuditLogAnnotation;
@@ -20,9 +25,11 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
+import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -31,7 +38,7 @@ import java.util.stream.Collectors;
 @RestController
 public class ActivityController extends BaseController {
     @Autowired
-    private SysUserFeignService sysUserFeignService;
+    private SysUserService sysUserService;
     @Autowired
     private SysConfigDao sysConfigDao;
     @Autowired
@@ -41,19 +48,17 @@ public class ActivityController extends BaseController {
     @Autowired
     private StudentPaymentOrderDao studentPaymentOrderDao;
     @Autowired
-    private VipGroupActivityDao vipGroupActivityDao;
+    private VipGroupActivityService vipGroupActivityService;
+    @Autowired
+    private StudentDao studentDao;
+    @Autowired
+    private VipGroupCategoryDao vipGroupCategoryDao;
 
     @ApiOperation(value = "分部双11活动信息")
     @GetMapping("/doubleEleven2020")
     public HttpResponseResult<List<SporadicChargeInfo>> doubleEleven2020(){
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null || sysUser.getId() == null) {
-            return failed("请先登录");
-        }
-        if (sysUser.getOrganId() == null) {
-            return failed("用户信息有误,没有分部信息");
-        }
-        Integer organId = sysUser.getOrganId();
+        SysUser user = sysUserService.getUser();
+        Integer organId = user.getOrganId();
 
         List<SporadicChargeInfo> activeInfos = sporadicChargeInfoService.getOrganActiveInfo(organId, 12);
         activeInfos.sort(Comparator.comparing(SporadicChargeInfo::getAmount).reversed());
@@ -66,13 +71,7 @@ public class ActivityController extends BaseController {
     @ApiOperation(value = "分部双11活动信息")
     @RequestMapping("/doubleEleven2021")
     public HttpResponseResult doubleEleven2021(){
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null || sysUser.getId() == null) {
-            return failed("请先登录");
-        }
-        if (sysUser.getOrganId() == null) {
-            return failed("用户信息有误,没有分部信息");
-        }
+        SysUser sysUser = sysUserService.getUser();
         Map<String,Object> resultMap = new HashMap<>(1);
         List<ActivityDetailDto> activityDetailDtos = marketActivityService.queryActivity(2, sysUser.getOrganId());
         resultMap.put("activityDetailList",activityDetailDtos);
@@ -83,22 +82,17 @@ public class ActivityController extends BaseController {
             resultMap.put("startTime",activityDetailDto.getStartTime());
             resultMap.put("endTime",activityDetailDto.getEndTime());
         }
-//        resultMap.put("horseRaceLampList",luckDrawPrizeService.queryHorseRaceLampDto(2));
-//        LuckDrawCount luckDrawCount = luckDrawCountService.findByIdAndGroupId(sysUser.getId(),2);
-//        if(luckDrawCount != null){
-//            resultMap.put("drawNum",luckDrawCount.getAvailableCount());
-//        }else {
-//            resultMap.put("drawNum",0);
-//        }
         return succeed(resultMap);
     }
 
-    @ApiOperation("2021双十一活动购买")
-    @PostMapping(value = "/buyDoubleEleven2021")
-    @AuditLogAnnotation(operateName = "2021双十一活动购买")
-    public HttpResponseResult buyDoubleEleven2021(@RequestBody BuyDoubleEleven2021Dto buyDoubleEleven2021Dto) throws Exception {
-//        return practiceGroupService.buyDoubleEleven2021(buyDoubleEleven2021Dto);
-        return failed("购买入口已关闭,请联系管理员");
+    @ApiOperation("活动购买")
+    @PostMapping(value = "/buy")
+    @AuditLogAnnotation(operateName = "活动购买")
+    public HttpResponseResult buy(@RequestBody ActivityPayParamDto activityPayParamDto) throws Exception {
+        SysUser user = sysUserService.getUser();
+        activityPayParamDto.setUserId(user.getId());
+        activityPayParamDto.setOrganId(user.getOrganId());
+        return vipGroupActivityService.buy(activityPayParamDto);
     }
 
     @ApiOperation("获取2022云教练活动列表")
@@ -108,16 +102,13 @@ public class ActivityController extends BaseController {
         String configValue = sysConfigDao.findConfigValue("2022_cloud_activity_config");
         List<Cloud2022ActivityDto> cloud2022ActivityDtos = JSONArray.parseArray(configValue, Cloud2022ActivityDto.class);
         String collect = cloud2022ActivityDtos.stream().map(e -> e.getActivityId()).collect(Collectors.joining(","));
-        return succeed(vipGroupActivityDao.queryByIds(collect));
+        return succeed(vipGroupActivityService.getDao().queryByIds(collect));
     }
 
     @ApiOperation(value = "学员已购买的双十一活动信息")
     @GetMapping("/queryStudentDoubleEleven2021Order")
     public Object queryStudentDoubleEleven2021Order() {
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if (user == null) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
+        SysUser user = sysUserService.getUser();
         List<ActivityDetailDto> activityDetailDtos = marketActivityService.queryActivity(2, user.getOrganId());
         String activitys = studentPaymentOrderDao.queryStudentDoubleEleven2021Order(user.getId());
         List<Integer> activityList = new ArrayList<>();
@@ -147,4 +138,51 @@ public class ActivityController extends BaseController {
         }
         return succeed("");
     }
+
+    @ApiOperation(value = "获取活动方案")
+    @GetMapping("/get")
+    public HttpResponseResult<VipGroupActivity> get(Integer id){
+        VipGroupActivity vipGroupActivity = vipGroupActivityService.get(id);
+        SysUser user = sysUserService.getUser();
+        vipGroupActivity.setSinglePrice(vipGroupActivityService.getActivityPrice(vipGroupActivity,user.getOrganId(),new BigDecimal(1)));
+        Map<String, String> categoryMap = vipGroupCategoryDao.findConditionCategorys().stream().collect(Collectors.toMap(e-> e.getId().toString(), ConditionDto::getName));
+        vipGroupActivity.setVipGroupCategoryNames(categoryMap.get(vipGroupActivity.getVipGroupCategoryIdList()));
+        vipGroupActivity.setGiveCategoryName(categoryMap.get(vipGroupActivity.getGiveCategoryId()));
+        vipGroupActivityService.setActivityType(vipGroupActivity);
+        return succeed(vipGroupActivity);
+    }
+
+    @ApiOperation(value = "根据课程类型获取对应课程活动方案")
+    @GetMapping("/findByVipGroupCategory")
+    public HttpResponseResult<List<VipGroupActivity>> findByVipGroupCategory(){
+        SysUser user = sysUserService.getUser();
+        ActivityQueryDto activityQueryDto = new ActivityQueryDto();
+        activityQueryDto.setStudentIds(user.getId().toString());
+        activityQueryDto.setCourseType(null);
+        activityQueryDto.setActivityChannel(3);
+        Student student = studentDao.get(user.getId());
+        Boolean isNewUser = student.getIsNewUser();
+        if(isNewUser){
+            activityQueryDto.setNewStudentNum(0);
+        }else {
+            activityQueryDto.setNewStudentNum(1);
+        }
+        if(student.getMemberRankSettingId() == null){
+            activityQueryDto.setMemberNum(1);
+        }else {
+            activityQueryDto.setMemberNum(0);
+        }
+        activityQueryDto.setOrganId(user.getOrganId().toString());
+        activityQueryDto.setEnable(true);
+        List<VipGroupActivity> vipGroupActivities = vipGroupActivityService.findByVipGroupCategory(activityQueryDto);
+        if(!CollectionUtils.isEmpty(vipGroupActivities)){
+            Map<String, String> categoryMap = vipGroupCategoryDao.findConditionCategorys().stream().collect(Collectors.toMap(e-> e.getId().toString(), ConditionDto::getName));
+            for (VipGroupActivity activity : vipGroupActivities) {
+                activity.setVipGroupCategoryNames(categoryMap.get(activity.getVipGroupCategoryIdList()));
+                activity.setGiveCategoryName(categoryMap.get(activity.getGiveCategoryId()));
+                vipGroupActivityService.setActivityType(activity);
+            }
+        }
+        return succeed(vipGroupActivities);
+    }
 }

+ 15 - 4
mec-student/src/main/java/com/ym/mec/student/controller/StudentOrderController.java

@@ -89,7 +89,7 @@ public class StudentOrderController extends BaseController {
     @Autowired
     private StudentRegistrationDao studentRegistrationDao;
     @Autowired
-    private VipGroupActivityDao vipGroupActivityDao;
+    private VipGroupActivityService vipGroupActivityService;
     @Autowired
     private SellOrderService sellOrderService;
     @Autowired
@@ -102,6 +102,8 @@ public class StudentOrderController extends BaseController {
     private TenantConfigService tenantConfigService;
     @Autowired
     private OrganizationService organizationService;
+    @Autowired
+    private VipGroupCategoryDao vipGroupCategoryDao;
 
     @Value("${spring.profiles.active:dev}")
     private String profiles;
@@ -283,7 +285,7 @@ public class StudentOrderController extends BaseController {
             }
         } else if (orderByOrderNo.getGroupType().equals(GroupType.VIP)) {
             if(orderByOrderNo.getType() == OrderTypeEnum.ACTIVITY){
-                orderDetail.put("activity", vipGroupActivityDao.queryByIds(orderByOrderNo.getActivityId()));
+                orderDetail.put("activity", vipGroupActivityService.getDao().queryByIds(orderByOrderNo.getActivityId()));
             }else if (StringUtils.isNotEmpty(orderByOrderNo.getMusicGroupId())) {
                 VipBuyResultDto vipBuyResultInfo = vipGroupService.findVipBuyResultInfo(Integer.valueOf(orderByOrderNo.getMusicGroupId()));
                 orderDetail.put("detail", vipBuyResultInfo);
@@ -312,7 +314,16 @@ public class StudentOrderController extends BaseController {
         } else if (orderByOrderNo.getGroupType().equals(GroupType.DEGREE)) {
             orderDetail.put("detail", childrenDayDegreeDetailDao.getByOrderId(orderByOrderNo.getId()));
         } else if (orderByOrderNo.getGroupType().equals(GroupType.ACTIVITY)) {
-            orderDetail.put("detail", vipGroupActivityDao.queryByIds(orderByOrderNo.getActivityId()));
+            List<VipGroupActivity> vipGroupActivities = vipGroupActivityService.getDao().queryByIds(orderByOrderNo.getActivityId());
+            if(CollectionUtils.isNotEmpty(vipGroupActivities)){
+                Map<String, String> categoryMap = vipGroupCategoryDao.findConditionCategorys().stream().collect(Collectors.toMap(e-> e.getId().toString(), ConditionDto::getName));
+                for (VipGroupActivity vipGroupActivity : vipGroupActivities) {
+                    vipGroupActivity.setVipGroupCategoryNames(categoryMap.get(vipGroupActivity.getVipGroupCategoryIdList()));
+                    vipGroupActivity.setGiveCategoryName(categoryMap.get(vipGroupActivity.getGiveCategoryId()));
+                    vipGroupActivityService.setActivityType(vipGroupActivity);
+                }
+            }
+            orderDetail.put("detail", vipGroupActivities);
         } else if (orderByOrderNo.getGroupType().equals(GroupType.MEMBER)) {
             CloudTeacherOrderDto orderDto = cloudTeacherOrderService.queryOrderInfoByOrderId(orderByOrderNo.getId());
             orderDetail.put("detail", orderDto);
@@ -322,7 +333,7 @@ public class StudentOrderController extends BaseController {
                 orderDetail.put("couponList", sysCouponCodeDao.querySysCouponUseList(map));
             }
         } else if (orderByOrderNo.getGroupType().equals(GroupType.LIVE_BUY)) {
-            orderDetail.put("detail", vipGroupActivityDao.queryByIds(orderByOrderNo.getActivityId()));
+            orderDetail.put("detail", vipGroupActivityService.getDao().queryByIds(orderByOrderNo.getActivityId()));
             orderDetail.put("goodsId",orderByOrderNo.getClassGroupId());
         }
         return succeed(orderDetail);

+ 6 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/controller/ActivityUserMapperController.java

@@ -75,6 +75,9 @@ public class ActivityUserMapperController extends BaseController {
     @PostMapping("/createVipGroup")
     public HttpResponseResult createVipGroup(@RequestBody VipGroupApplyDto vipGroupApplyDto){
         VipGroupApplyBaseInfoDto applyBaseInfo = vipGroupApplyDto.getVipGroupApplyBaseInfo();
+        if(Objects.isNull(applyBaseInfo.getEducationalTeacherId())){
+            throw new BizException("请选择乐团主管");
+        }
         applyBaseInfo.setUserId(sysUserService.getUserId());
         Teacher teacher = teacherDao.get(applyBaseInfo.getUserId());
         applyBaseInfo.setOrganId(teacher.getTeacherOrganId());
@@ -91,6 +94,9 @@ public class ActivityUserMapperController extends BaseController {
     @PostMapping("/createPracticeGroup")
     public HttpResponseResult createPracticeGroup(@RequestBody PracticeGroupApplyDto practiceGroupApplyDto){
         PracticeGroupApplyBaseInfoDto applyBaseInfo = practiceGroupApplyDto.getPracticeGroupApplyBaseInfoDto();
+        if(Objects.isNull(applyBaseInfo.getEducationalTeacherId())){
+            throw new BizException("请选择乐团主管");
+        }
         applyBaseInfo.setUserId(sysUserService.getUserId());
         Teacher teacher = teacherDao.get(applyBaseInfo.getUserId());
         applyBaseInfo.setOrganId(teacher.getTeacherOrganId());

+ 3 - 1
mec-teacher/src/main/java/com/ym/mec/teacher/controller/ClassGroupController.java

@@ -3,6 +3,7 @@ package com.ym.mec.teacher.controller;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.CourseScheduleStudentPaymentDao;
+import com.ym.mec.biz.dal.dto.BasicUserDto;
 import com.ym.mec.biz.dal.entity.CourseScheduleEvaluate;
 import com.ym.mec.biz.dal.page.CourseScheduleQueryInfo;
 import com.ym.mec.biz.dal.page.ImGroupNoticeQueryInfo;
@@ -18,6 +19,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.List;
 import java.util.Objects;
 
 /**
@@ -60,7 +62,7 @@ public class ClassGroupController extends BaseController {
 
     @ApiOperation(value = "获取课程学员列表")
     @GetMapping("/getCourseStudents")
-    public HttpResponseResult getCourseStudents(Long courseScheduleId){
+    public HttpResponseResult<List<BasicUserDto>> getCourseStudents(Long courseScheduleId){
         return succeed(courseScheduleStudentPaymentDao.getCourseStudents(courseScheduleId));
     }
 

+ 23 - 0
mec-web/src/main/java/com/ym/mec/web/controller/ActivityUserMapperController.java

@@ -1,11 +1,16 @@
 package com.ym.mec.web.controller;
 
 import com.ym.mec.biz.dal.dto.ActivityUserMapperAddDto;
+import com.ym.mec.biz.dal.dto.ActivityUserMapperDetailDto;
+import com.ym.mec.biz.dal.dto.ActivityUserMapperSumDto;
 import com.ym.mec.biz.dal.entity.ActivityUserMapper;
 import com.ym.mec.biz.dal.page.ActivityStudentQueryInfo;
+import com.ym.mec.biz.dal.page.ActivityUserMapperDetailQueryInfo;
 import com.ym.mec.biz.service.ActivityUserMapperService;
+import com.ym.mec.biz.service.OrganizationService;
 import com.ym.mec.biz.service.SysUserCashAccountLogService;
 import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.page.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -28,6 +33,8 @@ public class ActivityUserMapperController extends BaseController {
     private ActivityUserMapperService activityUserMapperService;
     @Autowired
     private SysUserCashAccountLogService sysUserCashAccountLogService;
+    @Autowired
+    private OrganizationService organizationService;
 
     @ApiOperation(value = "添加活动排课资格")
     @PostMapping("/add")
@@ -65,4 +72,20 @@ public class ActivityUserMapperController extends BaseController {
         }
         return succeed(pageInfo);
     }
+
+    @ApiOperation(value = "获取列表")
+    @PostMapping("/queryDetailPage")
+    @PreAuthorize("@pcs.hasPermissions('activityUserMapper/queryDetailPage')")
+    public HttpResponseResult<PageInfo<ActivityUserMapperDetailDto>> queryDetailPage(@RequestBody ActivityUserMapperDetailQueryInfo queryInfo){
+        queryInfo.setOrganId(organizationService.getEmployeeOrgan(queryInfo.getOrganId()));
+        return succeed(activityUserMapperService.queryDetailPage(queryInfo));
+    }
+
+    @ApiOperation(value = "获取列表")
+    @PostMapping("/querySumPage")
+    @PreAuthorize("@pcs.hasPermissions('activityUserMapper/querySumPage')")
+    public HttpResponseResult<PageInfo<ActivityUserMapperSumDto>> querySumPage(@RequestBody ActivityUserMapperDetailQueryInfo queryInfo){
+        queryInfo.setOrganId(organizationService.getEmployeeOrgan(queryInfo.getOrganId()));
+        return succeed(activityUserMapperService.querySumPage(queryInfo));
+    }
 }

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

@@ -93,11 +93,4 @@ public class CloudTeacherOrderController extends BaseController {
     public HttpResponseResult<Boolean> payCheck(@RequestParam String orderNo) {
         return succeed(cloudTeacherOrderService.payCheck(orderNo));
     }
-
-    @ApiOperation(value = "测试短信")
-    @GetMapping("/testsms")
-    public HttpResponseResult<Integer> testsms(@RequestParam String orderNo) throws Exception {
-        TenantOrderRecord tor = tenantOrderRecordService.getOne(new WrapperUtil<TenantOrderRecord>().hasEq("order_no_", orderNo).queryWrapper());
-        return succeed(cloudTeacherOrderService.sendSms(tor));
-    }
 }

+ 21 - 14
mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupController.java

@@ -1,5 +1,24 @@
 package com.ym.mec.web.controller;
 
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
 import com.ym.mec.biz.dal.dto.CloseMusicGroupDto;
 import com.ym.mec.biz.dal.dto.MusicGroupRegsDto;
 import com.ym.mec.biz.dal.dto.SubFeeSettingDto;
@@ -11,25 +30,13 @@ import com.ym.mec.biz.dal.page.MusicGroupQueryInfo;
 import com.ym.mec.biz.dal.page.MusicMemberQueryInfo;
 import com.ym.mec.biz.service.MusicGroupService;
 import com.ym.mec.biz.service.OrganizationService;
+import com.ym.mec.biz.service.SysEmployeePositionService;
 import com.ym.mec.biz.service.SysUserService;
 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.yonge.log.model.AuditLogAnnotation;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiOperation;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
 
 @RequestMapping("musicGroup")
 @Api(tags = "乐团服务")
@@ -42,7 +49,7 @@ public class MusicGroupController extends BaseController {
 	private SysUserService sysUserService;
 	@Autowired
 	private OrganizationService organizationService;
-
+	
 	@ApiOperation(value = "修改乐团基本信息")
 	@PostMapping("/update")
 	@AuditLogAnnotation(operateName = "乐团基本信息修改",interfaceURL = "musicGroup/update")

+ 3 - 6
mec-web/src/main/java/com/ym/mec/web/controller/VipGroupActivityController.java

@@ -12,6 +12,7 @@ import com.ym.mec.biz.dal.entity.VipGroupActivity;
 import com.ym.mec.biz.dal.page.DoubleEleven2021QueryInfo;
 import com.ym.mec.biz.dal.page.VipGroupActivityQueryInfo;
 import com.ym.mec.biz.service.OrganizationService;
+import com.ym.mec.biz.service.SysUserService;
 import com.ym.mec.biz.service.VipGroupActivityService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
@@ -44,7 +45,7 @@ public class VipGroupActivityController extends BaseController {
     @Autowired
     private VipGroupActivityService vipGroupActivityService;
     @Autowired
-    private SysUserFeignService sysUserFeignService;
+    private SysUserService sysUserService;
 	@Autowired
 	private OrganizationService organizationService;
 	@Autowired
@@ -108,11 +109,7 @@ public class VipGroupActivityController extends BaseController {
     @PostMapping("/update")
     @PreAuthorize("@pcs.hasPermissions('vipGroupActivity/update')")
     public Object update(@RequestBody VipGroupActivityAddDto vipGroupActivityAddDto){
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if(sysUser == null){
-            return failed("用户信息获取失败");
-        }
-        return succeed(vipGroupActivityService.updateVipGroupActivity(vipGroupActivityAddDto, sysUser.getId()));
+        return succeed(vipGroupActivityService.updateVipGroupActivity(vipGroupActivityAddDto,sysUserService.getUserId()));
     }
 
     @ApiOperation(value = "删除活动方案")

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

@@ -88,13 +88,14 @@ public class EduActivityUserMapperController extends BaseController {
         return activityUserMapperService.createActivityVipGroup(vipGroupApplyDto);
     }
 
-    @ApiOperation(value = "教师端网管课活动排课")
+    @ApiOperation(value = "管理端网管课活动排课")
     @PostMapping("/createPracticeGroup")
     public Object createPracticeGroup(@RequestBody PracticeGroupApplyDto practiceGroupApplyDto){
         PracticeGroupApplyBaseInfoDto applyBaseInfo = practiceGroupApplyDto.getPracticeGroupApplyBaseInfoDto();
         if(Objects.isNull(applyBaseInfo.getUserId())){
             throw new BizException("请选择指导老师");
         }
+        applyBaseInfo.setEducationalTeacherId(sysUserService.getUserId());
         for (CourseSchedule courseSchedule : practiceGroupApplyDto.getCourseSchedules()) {
             courseSchedule.setEndClassTime(DateUtil.addMinutes(courseSchedule.getStartClassTime(), applyBaseInfo.getSingleClassMinutes()));
         }

+ 12 - 51
mec-web/src/main/java/com/ym/mec/web/controller/education/EduRepairController.java

@@ -1,7 +1,6 @@
 package com.ym.mec.web.controller.education;
 
 
-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.dao.StudentInstrumentDao;
@@ -14,7 +13,6 @@ import com.ym.mec.biz.dal.page.*;
 import com.ym.mec.biz.service.*;
 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.common.page.QueryInfo;
 import com.ym.mec.util.date.DateUtil;
@@ -36,7 +34,7 @@ import java.util.Objects;
 public class EduRepairController extends BaseController {
 
     @Autowired
-    private SysUserFeignService sysUserFeignService;
+    private SysUserService sysUserService;
     @Autowired
     private EmployeeDao employeeDao;
     @Autowired
@@ -59,15 +57,12 @@ public class EduRepairController extends BaseController {
     @ApiOperation("获取学生列表")
     @GetMapping(value = "/getStudents")
     public HttpResponseResult<PageInfo<BasicUserDto>> getStudents(RepairStudentQueryInfo queryInfo) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        Employee employee = employeeDao.get(sysUser.getId());
+        Integer userId = sysUserService.getUserId();
+        Employee employee = employeeDao.get(userId);
         if (Objects.isNull(employee)) {
             return failed(HttpStatus.NOT_ACCEPTABLE, "员工信息不存在");
         }
-        queryInfo.setEmployeeId(sysUser.getId());
+        queryInfo.setEmployeeId(userId);
         queryInfo.setOrganIdList(employee.getOrganIdList());
         return succeed(studentRepairService.getStudents(queryInfo));
     }
@@ -81,10 +76,6 @@ public class EduRepairController extends BaseController {
     @ApiOperation("添加商品销售订单")
     @PostMapping(value = "/addGoodsSellOrder")
     public HttpResponseResult addGoodsSellOrder(@RequestBody StudentGoodsSell studentGoodsSell) throws Exception {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            throw new BizException("请登录");
-        }
         if (studentGoodsSell.getIsRepeatPay() == false) {
             List<StudentPaymentOrder> list = studentPaymentOrderService.queryByCondition(GroupType.GOODS_SELL, null,studentGoodsSell.getUserId(), DealStatusEnum.ING,
                     OrderTypeEnum.RENEW);
@@ -92,8 +83,9 @@ public class EduRepairController extends BaseController {
                 return failed(HttpStatus.CONTINUE, "该学员有待支付的订单");
             }
         }
-        studentGoodsSell.setTeacherId(sysUser.getId());
-        studentGoodsSell.setAuthorUser(sysUser.getId());
+        Integer userId = sysUserService.getUserId();
+        studentGoodsSell.setTeacherId(userId);
+        studentGoodsSell.setAuthorUser(userId);
         Map map = studentRepairService.addGoodsSellOrder(studentGoodsSell);
         if(map.containsKey("tradeState")){
             return failed(HttpStatus.CREATED, map,"恭喜您,购买成功!");
@@ -104,10 +96,7 @@ public class EduRepairController extends BaseController {
     @ApiOperation("添加维修单")
     @PostMapping(value = "/addRepair")
     public HttpResponseResult addRepair(@RequestBody StudentRepair repairInfo) throws Exception {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
+        SysUser sysUser = sysUserService.getUser();
         repairInfo.setEmployeeId(sysUser.getId());
         repairInfo.setEmployeeName(sysUser.getRealName());
 //        if(repairInfo.getSendType().equals(1)){
@@ -122,11 +111,7 @@ public class EduRepairController extends BaseController {
     @ApiOperation("获取学生的维修记录")
     @GetMapping(value = "/getStudentRepairList")
     public HttpResponseResult getStudentRepairList(RepairStudentQueryInfo queryInfo) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
-        queryInfo.setEmployeeId(sysUser.getId());
+        queryInfo.setEmployeeId(sysUserService.getUserId());
         queryInfo.setPayStatus(2);
         return succeed(studentRepairService.queryPage(queryInfo));
     }
@@ -134,30 +119,18 @@ public class EduRepairController extends BaseController {
     @ApiOperation("获取乐器种类")
     @GetMapping(value = "/findSubSubjects")
     public HttpResponseResult findSubSubjects() {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
         return succeed(subjectService.findSubSubjects( null));
     }
 
     @ApiOperation("获取学生信息")
     @GetMapping(value = "/getStudentInfo")
     public HttpResponseResult getStudentInfo(Integer studentId) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
         return succeed(studentRepairService.getStudentInfo(studentId));
     }
 
     @ApiOperation("获取维修记录详情")
     @GetMapping(value = "/getRepairInfo")
     public HttpResponseResult getRepairInfo(Integer id) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
         return succeed(studentRepairService.getRepairInfo(id));
     }
 
@@ -165,11 +138,7 @@ public class EduRepairController extends BaseController {
     @ApiOperation("获取维修列表")
     @GetMapping(value = "/queryPage")
     public HttpResponseResult queryPage(RepairStudentQueryInfo queryInfo) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
-        queryInfo.setEmployeeId(sysUser.getId());
+        queryInfo.setEmployeeId(sysUserService.getUserId());
         Date endTime = queryInfo.getEndTime();
         if(endTime != null){
             queryInfo.setEndTime(DateUtil.addDays(endTime, 1));
@@ -190,11 +159,7 @@ public class EduRepairController extends BaseController {
     @GetMapping("/queryGoodsPage")
     public Object queryPage(GoodsQueryInfo queryInfo){
         queryInfo.setOrganId(null);
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
-        Employee employee = employeeDao.get(sysUser.getId());
+        Employee employee = employeeDao.get(sysUserService.getUserId());
         if (queryInfo.getStudentShowOrganId() == null &&
                 queryInfo.getEducationShowOrganId() == null &&
                 queryInfo.getCourseFeeShowOrganId() == null &&
@@ -216,11 +181,7 @@ public class EduRepairController extends BaseController {
     @ApiOperation(value = "分页查询教务老师关联的学员商品订单")
     @GetMapping("/queryStudentGoodsOrders")
     public Object queryStudentGoodsOrders(GoodsSellQueryInfo queryInfo) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        queryInfo.setTeacherId(sysUser.getId());
+        queryInfo.setTeacherId(sysUserService.getUserId());
         return succeed(studentGoodsSellService.queryStudentGoodsOrders(queryInfo));
     }
 

+ 7 - 2
mec-web/src/main/java/com/ym/mec/web/controller/education/EduStudentController.java

@@ -4,7 +4,6 @@ import com.ym.mec.biz.dal.dto.BaseMapDto;
 import com.ym.mec.biz.dal.dto.EduOrganStudentDataDto;
 import com.ym.mec.biz.dal.dto.StatDto;
 import com.ym.mec.biz.dal.entity.Organization;
-import com.ym.mec.biz.dal.entity.Subject;
 import com.ym.mec.biz.dal.page.StudentQueryInfo;
 import com.ym.mec.biz.service.OrganizationService;
 import com.ym.mec.biz.service.StudentManageService;
@@ -15,7 +14,6 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -69,4 +67,11 @@ public class EduStudentController extends BaseController {
     public HttpResponseResult<List<BaseMapDto>> queryStuSubjectId(){
         return succeed(studentService.queryStuSubjectId(organizationService.getEmployeeOrgan(null)));
     }
+
+    @ApiOperation(value = "修改学员维修标记")
+    @GetMapping("/updateRepairFlag")
+    public HttpResponseResult updateRepairFlag(Integer userId,Boolean repairFlag){
+        studentService.updateRepairFlag(userId,repairFlag);
+        return succeed();
+    }
 }

+ 0 - 1
mec-web/src/main/java/com/ym/mec/web/controller/education/EduStudentStudentController.java

@@ -118,5 +118,4 @@ public class EduStudentStudentController extends BaseController {
         queryInfo.setIsExport(false);
         return succeed(studentManageService.findStudentsByOrganId(queryInfo));
     }
-
 }