瀏覽代碼

Merge remote-tracking branch 'origin/master'

Joburgess 5 年之前
父節點
當前提交
c2c48507e4
共有 17 個文件被更改,包括 415 次插入25 次删除
  1. 14 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleTeacherSalaryDao.java
  2. 110 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherSalaryDto.java
  3. 5 5
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/VipGroupCategory.java
  4. 64 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/CourseScheduleTeacherSalaryQueryInfo.java
  5. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleTeacherSalaryService.java
  6. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentRegistrationService.java
  7. 16 10
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  8. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupStudentMapperServiceImpl.java
  9. 12 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ContractServiceImpl.java
  10. 23 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java
  11. 6 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
  12. 6 0
      mec-biz/src/main/resources/config/contracts/courses.ftl
  13. 6 0
      mec-biz/src/main/resources/config/contracts/goods.ftl
  14. 57 3
      mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml
  15. 2 2
      mec-biz/src/main/resources/config/mybatis/StudentManageDao.xml
  16. 2 2
      mec-thirdparty/src/main/java/com/ym/mec/thirdparty/eseal/provider/TsignPlugin.java
  17. 72 0
      mec-web/src/main/java/com/ym/mec/web/controller/CourseScheduleTeacherSalaryController.java

+ 14 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleTeacherSalaryDao.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.biz.dal.dto.CourseScheduleTeachersDto;
+import com.ym.mec.biz.dal.dto.TeacherSalaryDto;
 import com.ym.mec.biz.dal.dto.VipGroupSalaryDto;
 import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
 import com.ym.mec.common.dal.BaseDAO;
@@ -142,4 +143,17 @@ public interface CourseScheduleTeacherSalaryDao extends BaseDAO<Long, CourseSche
 	 */
 	List<Map<String, BigDecimal>> countTeacherOnlineOfflineSalaryByClass(@Param("classGroupId") Integer classGroupId);
 
+	/**
+	 * count教师薪酬
+	 * @param params
+	 * @return
+	 */
+	int countSalaries(Map<String, Object> params);
+
+	/**
+	 * query教师薪酬
+	 * @param params
+	 * @return
+	 */
+	List<TeacherSalaryDto> querySalaries(Map<String, Object> params);
 }

+ 110 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherSalaryDto.java

@@ -0,0 +1,110 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.entity.CourseSchedule;
+import com.ym.mec.biz.dal.enums.TeachTypeEnum;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class TeacherSalaryDto{
+
+    @ApiModelProperty(value = "用户名编号",required = false)
+    private Integer userId;
+
+    @ApiModelProperty(value = "用户名",required = false)
+    private String username;
+
+    @ApiModelProperty(value = "手机号",required = false)
+    private String phone;
+
+    @ApiModelProperty(value = "课程类型",required = false)
+    private CourseSchedule.CourseScheduleType type;
+
+    @ApiModelProperty(value = "课程名",required = false)
+    private String name;
+
+    @ApiModelProperty(value = "实际薪水",required = false)
+    private BigDecimal actualSalary;
+
+    @ApiModelProperty(value = "补助",required = false)
+    private BigDecimal subsidy;
+
+    @ApiModelProperty(value = "结算时间",required = false)
+    private Date settlementTime;
+
+    @ApiModelProperty(value = "教师类型",required = false)
+    private TeachTypeEnum teacherRole;
+
+    public Integer getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
+
+    public String getUsername() {
+        return username;
+    }
+
+    public void setUsername(String username) {
+        this.username = username;
+    }
+
+    public String getPhone() {
+        return phone;
+    }
+
+    public void setPhone(String phone) {
+        this.phone = phone;
+    }
+
+    public CourseSchedule.CourseScheduleType getType() {
+        return type;
+    }
+
+    public void setType(CourseSchedule.CourseScheduleType type) {
+        this.type = type;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public BigDecimal getActualSalary() {
+        return actualSalary;
+    }
+
+    public void setActualSalary(BigDecimal actualSalary) {
+        this.actualSalary = actualSalary;
+    }
+
+    public BigDecimal getSubsidy() {
+        return subsidy;
+    }
+
+    public void setSubsidy(BigDecimal subsidy) {
+        this.subsidy = subsidy;
+    }
+
+    public Date getSettlementTime() {
+        return settlementTime;
+    }
+
+    public void setSettlementTime(Date settlementTime) {
+        this.settlementTime = settlementTime;
+    }
+
+    public TeachTypeEnum getTeacherRole() {
+        return teacherRole;
+    }
+
+    public void setTeacherRole(TeachTypeEnum teacherRole) {
+        this.teacherRole = teacherRole;
+    }
+}

+ 5 - 5
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/VipGroupCategory.java

@@ -1,11 +1,11 @@
 package com.ym.mec.biz.dal.entity;
 
-import com.fasterxml.jackson.annotation.JsonInclude;
 import io.swagger.annotations.ApiModelProperty;
-import org.apache.commons.lang3.builder.ToStringBuilder;
 
 import java.math.BigDecimal;
 
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
 /**
  * 对应数据库表(vip_group_category):
  */
@@ -27,7 +27,7 @@ public class VipGroupCategory {
 	private java.util.Date updateTime;
 	
 	@ApiModelProperty(value = "单节课时",required = false)
-	private Integer singleClassMinutes;
+	private String singleClassMinutes;
 	
 	@ApiModelProperty(value = "学生数",required = false)
 	private Integer studentNum;
@@ -94,11 +94,11 @@ public class VipGroupCategory {
 		return this.updateTime;
 	}
 			
-	public void setSingleClassMinutes(Integer singleClassMinutes){
+	public void setSingleClassMinutes(String singleClassMinutes){
 		this.singleClassMinutes = singleClassMinutes;
 	}
 	
-	public Integer getSingleClassMinutes(){
+	public String getSingleClassMinutes(){
 		return this.singleClassMinutes;
 	}
 			

+ 64 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/CourseScheduleTeacherSalaryQueryInfo.java

@@ -0,0 +1,64 @@
+package com.ym.mec.biz.dal.page;
+
+import com.ym.mec.common.page.QueryInfo;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+
+public class CourseScheduleTeacherSalaryQueryInfo extends QueryInfo {
+
+    @ApiModelProperty(value = "分部编号",required = false)
+    private Integer organId;
+
+    @ApiModelProperty(value = "结算开始时间",required = false)
+    private Date startTime;
+
+    @ApiModelProperty(value = "结算结束时间",required = false)
+    private Date endTime;
+
+    @ApiModelProperty(value = "教师编号",required = false)
+    private Integer teacherId;
+
+    @ApiModelProperty(value = "课程类型",required = false)
+    private String courseScheduleType;
+
+    public Integer getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(Integer organId) {
+        this.organId = organId;
+    }
+
+    public Date getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(Date startTime) {
+        this.startTime = startTime;
+    }
+
+    public Date getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(Date endTime) {
+        this.endTime = endTime;
+    }
+
+    public Integer getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(Integer teacherId) {
+        this.teacherId = teacherId;
+    }
+
+    public String getCourseScheduleType() {
+        return courseScheduleType;
+    }
+
+    public void setCourseScheduleType(String courseScheduleType) {
+        this.courseScheduleType = courseScheduleType;
+    }
+}

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleTeacherSalaryService.java

@@ -1,8 +1,11 @@
 package com.ym.mec.biz.service;
 
+import com.ym.mec.biz.dal.dto.TeacherSalaryDto;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
 import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
 import com.ym.mec.biz.dal.entity.VipGroup;
+import com.ym.mec.biz.dal.page.CourseScheduleTeacherSalaryQueryInfo;
+import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 
 import java.math.BigDecimal;
@@ -51,4 +54,10 @@ public interface CourseScheduleTeacherSalaryService extends BaseService<Long, Co
      */
     void musicGroupTeacherSalarySettlement();
 
+    /**
+     * 获取教师薪酬列表
+     * @param queryInfo
+     * @return
+     */
+    PageInfo<TeacherSalaryDto> querySalaries(CourseScheduleTeacherSalaryQueryInfo queryInfo);
 }

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

@@ -143,7 +143,7 @@ public interface StudentRegistrationService extends BaseService<Long, StudentReg
 	 * @param studentPaymentOrder
 	 * @return
 	 */
-	StudentPaymentOrder updateApplyOrder(StudentPaymentOrder studentPaymentOrder);
+	StudentPaymentOrder updateApplyOrder(StudentPaymentOrder studentPaymentOrder) throws Exception;
 
 	/**
 	 * 获取乐团科目的学生

+ 16 - 10
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -261,16 +261,18 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         MusicGroup musicGroup = musicGroupDao.get(highClassGroupList.get(0).getMusicGroupId());
 
         List<ClassGroup> classGroups = classGroupDao.findClassGroupByMusicGroupIdAndType(musicGroup.getId(), ClassGroupTypeEnum.HIGH);
-        List<Integer> classGroupIds = classGroups.stream().map(classGroup -> classGroup.getId()).collect(Collectors.toList());
-        //删除基础提高班
-        classGroupDao.batchSoftDelete(classGroupIds);
-        //删除基础提高班课程
-        courseScheduleDao.deleteCourseSchedulesByClassGroupIds(classGroupIds);
-        //删除基础提高老师
-        classGroupTeacherMapperDao.delClassGroupTeacherMapper(classGroupIds);
-
-        for (ClassGroup classGroup : classGroups) {
-            imFeignService.groupDismiss(new ImGroupModel(classGroup.getId().toString(), null, classGroup.getName()));
+        if (classGroups.size() > 0) {
+            List<Integer> classGroupIds = classGroups.stream().map(classGroup -> classGroup.getId()).collect(Collectors.toList());
+            //删除基础提高班
+            classGroupDao.batchSoftDelete(classGroupIds);
+            //删除基础提高班课程
+            courseScheduleDao.deleteCourseSchedulesByClassGroupIds(classGroupIds);
+            //删除基础提高老师
+            classGroupTeacherMapperDao.delClassGroupTeacherMapper(classGroupIds);
+
+            for (ClassGroup classGroup : classGroups) {
+                imFeignService.groupDismiss(new ImGroupModel(classGroup.getId().toString(), null, classGroup.getName()));
+            }
         }
 
         Integer schoolId = musicGroup.getSchoolId();
@@ -665,6 +667,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         classGroupRelationDao.deleteBySubClassId(classGroupId);
         //删除班级
         classGroupDao.delete(classGroupId);
+        //删除im群组
+        imFeignService.groupQuit(new ImGroupModel(classGroupId.toString(), null, null));
     }
 
     @Override
@@ -676,6 +680,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         classGroupRelationDao.deleteByClassId(classGroupId);
         //删除合奏班
         classGroupDao.delete(classGroupId);
+        //删除im群组
+        imFeignService.groupQuit(new ImGroupModel(classGroupId.toString(), null, null));
     }
 
     @Override

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

@@ -139,6 +139,8 @@ public class ClassGroupStudentMapperServiceImpl extends BaseServiceImpl<Long, Cl
 
         //1、班级关系添加
         List<ClassGroupStudentMapper> classGroupStudentMappers = new ArrayList<>();
+        List<ImGroupMember> imGroupMemberList = new ArrayList<>();
+
         for (String userIdStr : userIdStrSet) {
             ClassGroupStudentMapper classGroupStudentMapper = new ClassGroupStudentMapper();
             classGroupStudentMapper.setMusicGroupId(classGroup.getMusicGroupId());
@@ -152,9 +154,14 @@ public class ClassGroupStudentMapperServiceImpl extends BaseServiceImpl<Long, Cl
                 studentRegistration.setClassGroupId(classGroupId);
                 studentRegistrationService.update(studentRegistration);
             }
+            imGroupMemberList.add(new ImGroupMember(userIdStr));
         }
         classGroupStudentMapperDao.classGroupStudentsInsert(classGroupStudentMappers);
 
+        //添加进IM群组
+        ImGroupMember[] imGroupMembers = imGroupMemberList.toArray(new ImGroupMember[imGroupMemberList.size()]);
+        imFeignService.groupJoin(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
+
         //2、班级人数调整
         classGroupService.updateClassStudentNum(classGroupId.longValue(), userIdStrSet.size());
 
@@ -168,6 +175,9 @@ public class ClassGroupStudentMapperServiceImpl extends BaseServiceImpl<Long, Cl
             classGroupService.updateClassStudentNum(classGroupRelation.getClassGroupId().longValue(), userIdStrSet.size());
             List<CourseSchedule> mixCourseScheduleList = courseScheduleService.findNoStartCoursesByClassGroupId(classGroupRelation.getClassGroupId());
             courseScheduleList.addAll(mixCourseScheduleList);
+
+            //添加进合奏班IM群组
+            imFeignService.groupJoin(new ImGroupModel(classGroupRelation.getClassGroupId().toString(), imGroupMembers, null));
         }
 
         BigDecimal coursePrice = new BigDecimal("0");

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ContractServiceImpl.java

@@ -265,6 +265,8 @@ public class ContractServiceImpl implements ContractService {
 		} else {
 			params.put("paymentcalender", calenders.stream().map(cal -> cal.getPaymentMonth().toString()).collect(Collectors.joining(",")));
 		}
+		
+		params.put("isShowVisualSeal", false);
 
 		templateEngine.render(params, "courses.ftl", srcFile);
 
@@ -340,6 +342,8 @@ public class ContractServiceImpl implements ContractService {
 		} else {
 			params.put("paymentcalender", calenders.stream().map(cal -> cal.getPaymentMonth().toString()).collect(Collectors.joining(",")));
 		}
+		
+		params.put("isShowVisualSeal", true);
 
 		templateEngine.render(params, "courses.ftl", srcFile);
 
@@ -397,6 +401,8 @@ public class ContractServiceImpl implements ContractService {
 
 		// 收费形式
 		params.put("paymentcalender", "一次性");
+		
+		params.put("isShowVisualSeal", false);
 
 		templateEngine.render(params, "courses.ftl", srcFile);
 
@@ -461,6 +467,8 @@ public class ContractServiceImpl implements ContractService {
 
 		// 收费形式
 		params.put("paymentcalender", "一次性");
+		
+		params.put("isShowVisualSeal", true);
 
 		templateEngine.render(params, "courses.ftl", srcFile);
 
@@ -521,6 +529,8 @@ public class ContractServiceImpl implements ContractService {
 		}
 		params.put("depositFee", musicGroupSubjectPlan.getDepositFee().doubleValue());
 		params.put("depositFeeFmt", MoneyUtil.toChinese(musicGroupSubjectPlan.getDepositFee().toString()));
+		
+		params.put("isShowVisualSeal", false);
 
 		templateEngine.render(params, "goods.ftl", srcFile);
 
@@ -589,6 +599,8 @@ public class ContractServiceImpl implements ContractService {
 		}
 		params.put("depositFee", musicGroupSubjectPlan.getDepositFee().doubleValue());
 		params.put("depositFeeFmt", MoneyUtil.toChinese(musicGroupSubjectPlan.getDepositFee().toString()));
+		
+		params.put("isShowVisualSeal", true);
 
 		templateEngine.render(params, "goods.ftl", srcFile);
 

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

@@ -1,11 +1,14 @@
 package com.ym.mec.biz.service.impl;
 
 import com.ym.mec.biz.dal.dao.*;
+import com.ym.mec.biz.dal.dto.TeacherSalaryDto;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.*;
+import com.ym.mec.biz.dal.page.CourseScheduleTeacherSalaryQueryInfo;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
+import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
@@ -467,4 +470,24 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
         });
         sysUserCashAccountDetailDao.batchInsert(userCashAccountDetails);
     }
+
+    @Override
+    public PageInfo<TeacherSalaryDto> querySalaries(CourseScheduleTeacherSalaryQueryInfo queryInfo) {
+        PageInfo<TeacherSalaryDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<>();
+        MapUtil.populateMap(params, queryInfo);
+
+        List<TeacherSalaryDto> dataList = null;
+        int count = courseScheduleTeacherSalaryDao.countSalaries(params);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            dataList = courseScheduleTeacherSalaryDao.querySalaries(params);
+        }
+        if (count == 0) {
+            dataList = new ArrayList<>();
+        }
+        pageInfo.setRows(dataList);
+        return pageInfo;
+    }
 }

+ 6 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java

@@ -80,6 +80,8 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     private SysUserCashAccountDetailService sysUserCashAccountDetailService;
     @Autowired
     private SysUserCashAccountService sysUserCashAccountService;
+    @Autowired
+    private ClassGroupStudentMapperService classGroupStudentMapperService;
 
     @Override
     public BaseDAO<Long, StudentRegistration> getDAO() {
@@ -534,7 +536,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public StudentPaymentOrder updateApplyOrder(StudentPaymentOrder studentPaymentOrder) {
+    public StudentPaymentOrder updateApplyOrder(StudentPaymentOrder studentPaymentOrder) throws Exception {
         //更新订单状态
         studentPaymentOrderService.update(studentPaymentOrder);
         Date nowDate = new Date();
@@ -549,6 +551,8 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
                 StudentPaymentOrder waitPayOrder = studentPaymentOrderService.findMusicGroupApplyOrderByStatus(studentRegistration.getUserId(), studentRegistration.getMusicGroupId(), DealStatusEnum.WAIT_PAY);
                 waitPayOrder.setStatus(DealStatusEnum.CLOSE);
                 studentPaymentOrderService.update(waitPayOrder);
+                //添加学生
+                classGroupStudentMapperService.addStudents(studentRegistration.getClassGroupId(),studentRegistration.getUserId().toString());
             }
 
             if (studentRegistration.getTemporaryCourseFee() == null) {
@@ -577,9 +581,9 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
                 musicGroupStudentFee.setSubjectId(studentRegistration.getActualSubjectId());
                 musicGroupStudentFee.setPaymentStatus(MusicGroupStudentFee.PaymentStatus.PAID_COMPLETED);
                 musicGroupStudentFeeDao.insert(musicGroupStudentFee);
-                studentRegistration.setTemporaryCourseFee(new BigDecimal(0));
             }
 
+            studentRegistration.setTemporaryCourseFee(new BigDecimal(0));
             studentRegistration.setPaymentStatus(PaymentStatusEnum.YES);
             studentRegistration.setMusicGroupStatus(ClassGroupStudentStatusEnum.NORMAL);
             studentRegistrationDao.update(studentRegistration);

+ 6 - 0
mec-biz/src/main/resources/config/contracts/courses.ftl

@@ -156,9 +156,15 @@
         6、双方因履行本协议而相互发出或者提供的所有通知、文件、资料,均以本协议中所列明的电话、APP推送消息送达,乙方如果变更电话号码的,应当自变更后1日内通知甲方且获得甲方确认,甲方通过电话、APP方式无法联系乙方或者甲方认为必要时,甲方也可以通过特快专递至乙方住址的方式向乙方发出上述任何通知、文件、资料等,并在甲方寄出特快专递后第5日视为送达成功。
         
         <div class="signature">
+        	<#if isShowVisualSeal>
             <div class="sign">甲方签章:深圳大雅乐盟网络教育股份有限公司<img class="cachet" src="https://daya-online.oss-cn-beijing.aliyuncs.com/website/cachet.png" alt="" />
                 <span>日期:${.now?string("yyyy年MM月dd日")}</span>
             </div>
+        	<#else>
+            <div class="sign">甲方签章:深圳大雅乐盟网络教育股份有限公司
+                <span>日期:${.now?string("yyyy年MM月dd日")}</span>
+            </div>
+        	</#if>
             <div class="sign">乙方签字:${studentInfo.realName!}
                 <span>日期:${.now?string("yyyy年MM月dd日")} </span>
             </div>

+ 6 - 0
mec-biz/src/main/resources/config/contracts/goods.ftl

@@ -135,9 +135,15 @@
         3、本协议未尽事宜或对本协议的任何修改、补充,由双方另行协商后以签订补充协议的方式解决,补充协议与本协议具有同等法律效力;双方没有约定也没有协商一致的,遵照相关法律法规规定执行。<br/>
         4、双方因履行本协议而相互发出或者提供的所有通知、文件、资料,均以本协议中所列明的电话、APP推送消息送达,乙方如果变更电话号码的,应当自变更后1日内通知甲方且获得甲方确认,甲方通过电话、APP方式无法联系乙方或者甲方认为必要时,甲方也可以通过特快专递至乙方住址的方式向乙方发出上述任何通知、文件、资料等,并在甲方寄出特快专递后第5日视为送达成功。
         <div class="signature">
+        	<#if isShowVisualSeal>
             <div class="sign">甲方签章:深圳大雅乐盟网络教育股份有限公司<img class="cachet" src="https://daya-online.oss-cn-beijing.aliyuncs.com/website/cachet.png" alt="" />
                 <span>日期:${.now?string("yyyy年MM月dd日")}</span>
             </div>
+        	<#else>
+            <div class="sign">甲方签章:深圳大雅乐盟网络教育股份有限公司
+                <span>日期:${.now?string("yyyy年MM月dd日")}</span>
+            </div>
+            </#if>
             <div class="sign">乙方签字:${studentInfo.realName!}
                 <span>日期:${.now?string("yyyy年MM月dd日")} </span>
             </div>

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

@@ -94,14 +94,68 @@
 		</foreach>
 	</delete>
 
+	<sql id="courseScheduleTeacherSalaryQueryPage">
+		<where>
+			csts.settlement_time_ IS NOT NULL AND csts.teacher_role_ IS NOT NULL AND cs.type_ IS NOT NULL
+			<if test="organId != null">
+				AND su.organ_id_ = #{organId}
+			</if>
+			<if test="search != null">
+				AND (su.username_ LIKE CONCAT('%',#{search},'%') OR su.phone_ LIKE CONCAT('%',#{search},'%'))
+			</if>
+			<if test="startTime != null">
+				AND csts.settlement_time_ &gt;= DATE_FORMAT(#{startTime},'%Y-%m-%d')
+			</if>
+			<if test="endTime != null">
+				AND csts.settlement_time_ &lt;= DATE_FORMAT(#{endTime},'%Y-%m-%d')
+			</if>
+			<if test="courseScheduleType != null">
+				AND cs.type_ = #{courseScheduleType}
+			</if>
+			<if test="teacherId != null">
+				AND csts.user_id_ = #{teacherId}
+			</if>
+		</where>
+	</sql>
+
     <!-- 分页查询 -->
 	<select id="queryPage" resultMap="CourseScheduleTeacherSalary" parameterType="map">
-		SELECT * FROM course_schedule_teacher_salary ORDER BY id_ <include refid="global.limit"/>
+		SELECT * FROM course_schedule_teacher_salary
+		<include refid="global.limit"/>
 	</select>
 	
 	<!-- 查询当前表的总记录数 -->
 	<select id="queryCount" resultType="int">
-		SELECT COUNT(*) FROM course_schedule_teacher_salary
+		SELECT COUNT(id_) FROM course_schedule_teacher_salary
+	</select>
+
+	<select id="countSalaries" resultType="java.lang.Integer">
+		SELECT COUNT(csts.id_) FROM course_schedule_teacher_salary csts
+		LEFT JOIN sys_user su ON su.id_ = csts.user_id_
+		LEFT JOIN course_schedule cs ON csts.course_schedule_id_ = cs.id_
+		<include refid="courseScheduleTeacherSalaryQueryPage"/>
+	</select>
+
+	<resultMap id="TeacherSalaryDtoMap" type="com.ym.mec.biz.dal.dto.TeacherSalaryDto">
+		<result property="username" column="username"/>
+		<result property="userId" column="user_id_"/>
+		<result property="phone" column="phone_"/>
+		<result property="type" column="type_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+		<result property="name" column="name_"/>
+		<result property="actualSalary" column="actual_salary_"/>
+		<result property="subsidy" column="subsidy_"/>
+		<result property="settlementTime" column="settlement_time_"/>
+		<result property="teacherRole" column="teacher_role_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+	</resultMap>
+
+	<select id="querySalaries" resultMap="TeacherSalaryDtoMap">
+		SELECT su.id_ user_id_,su.username_,su.phone_,cs.type_,cs.name_,csts.actual_salary_,csts.subsidy_,csts.settlement_time_,csts.teacher_role_
+		FROM course_schedule_teacher_salary csts
+		LEFT JOIN sys_user su ON su.id_ = csts.user_id_
+		LEFT JOIN course_schedule cs ON csts.course_schedule_id_ = cs.id_
+		<include refid="courseScheduleTeacherSalaryQueryPage"/>
+		ORDER BY csts.settlement_time_ DESC
+		<include refid="global.limit"/>
 	</select>
 
 	<resultMap id="VipGroupSalaryDto" type="com.ym.mec.biz.dal.dto.VipGroupSalaryDto" extends="CourseScheduleTeacherSalary">
@@ -244,7 +298,7 @@
 		GROUP BY cs.teach_mode_
     </select>
 
-    <update id="batchUpdateWages" parameterType="map">
+	<update id="batchUpdateWages" parameterType="map">
 		UPDATE course_schedule_teacher_salary set
 			subsidy_ = #{subsidy},
 			expect_salary_ = #{salary},

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

@@ -427,7 +427,7 @@
         FROM student_attendance sa
         LEFT JOIN sys_user su ON sa.user_id_ = su.id_
         LEFT JOIN course_schedule cs ON sa.course_schedule_id_ = cs.id_
-        WHERE (cs.type_ = 'NORMAL' OR cs.type_ = 'MIX') AND sa.music_group_id_ = #{search}
+        WHERE sa.music_group_id_ = #{search}
         <include refid="global.limit"/>
     </select>
     <select id="countMusicGroupStudentsSign" resultType="java.lang.Integer">
@@ -435,7 +435,7 @@
         FROM student_attendance sa
         LEFT JOIN sys_user su ON sa.user_id_ = su.id_
         LEFT JOIN course_schedule cs ON sa.course_schedule_id_ = cs.id_
-        WHERE (cs.type_ = 'NORMAL' OR cs.type_ = 'MIX') AND sa.music_group_id_ = #{search}
+        WHERE sa.music_group_id_ = #{search}
     </select>
 
 </mapper>

+ 2 - 2
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/eseal/provider/TsignPlugin.java

@@ -180,7 +180,7 @@ public class TsignPlugin implements ESealPlugin, InitializingBean, DisposableBea
 		SignType signType = SignType.Key;
 		// 设置接口调用方(平台方)签章位置信息
 		posBean.setPosPage("1");// 签署页码,若为多页签章,支持页码格式“1-3,5,8“,若为坐标定位时,不可空
-		posBean.setKey("甲方(签字)");
+		posBean.setKey("甲方签章");
 		// 签署位置X坐标,默认值为0,以pdf页面的左下角作为原点,控制距离页面左端的横向移动距离,单位为px
 		posBean.setPosX(100);
 		// 签署位置Y坐标,默认值为0,以pdf页面的左下角作为原点,控制距离页面底端的纵向移动距离,单位为px
@@ -217,7 +217,7 @@ public class TsignPlugin implements ESealPlugin, InitializingBean, DisposableBea
 		posBean.setPosPage("1");
 		posBean.setPosType(1);
 		posBean.setWidth(80);
-		posBean.setKey("乙方签字");
+		posBean.setKey("乙方签字");
 		posBean.setPosX(100);
 		posBean.setPosY(0);
 

+ 72 - 0
mec-web/src/main/java/com/ym/mec/web/controller/CourseScheduleTeacherSalaryController.java

@@ -0,0 +1,72 @@
+package com.ym.mec.web.controller;
+
+import com.ym.mec.biz.dal.dto.TeacherSalaryDto;
+import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
+import com.ym.mec.biz.dal.page.CourseScheduleTeacherSalaryQueryInfo;
+import com.ym.mec.biz.service.CourseScheduleTeacherSalaryService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.util.collection.MapUtil;
+import com.ym.mec.util.date.DateUtil;
+import com.ym.mec.util.excel.POIUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+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.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@RequestMapping("courseScheduleTeacherSalary")
+@Api(tags = "教师薪酬服务")
+@RestController
+public class CourseScheduleTeacherSalaryController extends BaseController {
+
+    @Autowired
+    private CourseScheduleTeacherSalaryService courseScheduleTeacherSalaryService;
+
+    @ApiOperation(value = "分页导出教师薪酬列表")
+    @GetMapping("/export")
+    @PreAuthorize("@pcs.hasPermissions('courseScheduleTeacherSalary/export')")
+    public void export(CourseScheduleTeacherSalaryQueryInfo queryInfo, HttpServletResponse response) {
+        List<TeacherSalaryDto> teacherSalaries = courseScheduleTeacherSalaryService.querySalaries(queryInfo).getRows();
+        OutputStream ouputStream = null;
+        try {
+            HSSFWorkbook workbook = POIUtil.exportExcel(new String[] { "用户编号","用户名", "手机号", "课程类型", "实际薪水", "补助", "结算时间", "教师角色"}, new String[] {
+                    "userId","username", "phone", "type.msg", "name", "actualSalary", "subsidy", "settlementTime", "teacherRole.msg"}, teacherSalaries);
+            response.setContentType("application/msexcel");
+            response.setHeader("Content-disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
+            ouputStream = response.getOutputStream();
+            workbook.write(ouputStream);
+            ouputStream.flush();
+        } catch (Exception e) {
+            e.printStackTrace();
+//            LOGGER.error("导出借款人列表出现异常", e);
+        } finally {
+            if (ouputStream != null) {
+                try {
+                    ouputStream.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+//                    LOGGER.error("输出流关闭异常", e);
+                }
+            }
+        }
+    }
+
+    @ApiOperation(value = "分页查询教师薪酬列表")
+    @GetMapping("/queryPage")
+    @PreAuthorize("@pcs.hasPermissions('courseScheduleTeacherSalary/queryPage')")
+    public Object queryPage(CourseScheduleTeacherSalaryQueryInfo queryInfo) {
+        return succeed(courseScheduleTeacherSalaryService.querySalaries(queryInfo));
+    }
+}