浏览代码

Merge branch 'zx_saas_0208' of http://git.dayaedu.com/yonge/mec into test_saas

zouxuan 3 年之前
父节点
当前提交
fd31199597

+ 7 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherContractsDao.java

@@ -1,11 +1,17 @@
 package com.ym.mec.biz.dal.dao;
 
-import com.ym.mec.common.dal.BaseDAO;
+import java.util.List;
+
 import com.ym.mec.biz.dal.entity.TeacherContracts;
+import com.ym.mec.common.dal.BaseDAO;
 
 public interface TeacherContractsDao extends BaseDAO<Long, TeacherContracts> {
 
 	TeacherContracts queryByUserId(Integer userId);
 	
 	TeacherContracts queryBySerialNo(String serialNo);
+	
+	List<TeacherContracts> queryNotUrlList();
+	
+	int batchUpdate(List<TeacherContracts> teacherContractsList);
 }

+ 1 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/ExportEnum.java

@@ -67,6 +67,7 @@ public enum ExportEnum implements BaseEnum<String, ExportEnum> {
     COUNT_CLOUD_TEACHER_ACTIVE("COUNT_CLOUD_TEACHER_ACTIVE", "分部云教练活动统计数据导出"),
     COUNT_CLOUD_TEACHER_ACTIVE_DETAIL("COUNT_CLOUD_TEACHER_ACTIVE_DETAIL", "云教练活动统计详情"),
     MUSIC_ENLIGHTENMENT_QUESTIONNAIRES("MUSIC_ENLIGHTENMENT_QUESTIONNAIRES", "启蒙课问卷导出"),
+    STUDENT_INSTRUMENT("STUDENT_INSTRUMENT", "乐保导出"),
     EXERCISES_SITUATION("EXERCISES_SITUATION", "服务指标导出");
 
     private String code;

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

@@ -31,6 +31,15 @@ public interface ExportService {
     Map<ExportEnum, Function<Map<String, Object>, List>> getExportFuncMap();
 
     /**
+    * @description: 乐保导出
+     * @param info
+    * @return void
+    * @author zx
+    * @date 2022/2/11 15:55
+    */
+    List exportStudentInstrument(Map<String, Object> info);
+
+    /**
     * @description: 班级列表导出
      * @param info
     * @return java.util.List

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

@@ -11,4 +11,6 @@ public interface TeacherContractsService extends BaseService<Long, TeacherContra
 	boolean sign(SysUser user);
 	
 	boolean callback(String jsonStr);
+	
+	public void queryTeacherContractSignStatus();
 }

+ 48 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExportServiceImpl.java

@@ -27,6 +27,7 @@ import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.IdGeneratorService;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.ini.IniFileUtil;
+import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -34,6 +35,7 @@ import org.springframework.boot.system.ApplicationHome;
 import org.springframework.core.io.ClassPathResource;
 import org.springframework.http.HttpStatus;
 import org.springframework.scheduling.annotation.Async;
+import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.stereotype.Service;
 
 import com.ym.mec.common.tenant.TenantContextHolder;
@@ -43,6 +45,7 @@ import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.excel.POIUtil;
 import com.ym.mec.util.upload.UploadUtil;
 import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.GetMapping;
 
 import javax.annotation.PostConstruct;
 import javax.servlet.http.HttpServletResponse;
@@ -93,6 +96,8 @@ public class ExportServiceImpl implements ExportService {
     @Autowired
     private OrganizationService organizationService;
     @Autowired
+    private StudentInstrumentDao studentInstrumentDao;
+    @Autowired
     private VipGroupService vipGroupService;
     @Autowired
     private PracticeGroupService practiceGroupService;
@@ -319,6 +324,7 @@ public class ExportServiceImpl implements ExportService {
         exportFuncMap.put(ExportEnum.COUNT_CLOUD_TEACHER_ACTIVE_DETAIL, info -> countCloudTeacherActiveDetail(info));
         exportFuncMap.put(ExportEnum.MUSIC_ENLIGHTENMENT_QUESTIONNAIRES, info -> musicEnlightenmentQuestionnaireService.queryPage(getQueryInfo(info,TeacherServeQueryInfo.class,false)).getRows());
         exportFuncMap.put(ExportEnum.EXERCISES_SITUATION, info -> studentExtracurricularExercisesSituationService.queryTeacherPerformanceIndicator(getQueryInfo(info,TeacherServeQueryInfo.class,false)));
+        exportFuncMap.put(ExportEnum.STUDENT_INSTRUMENT, info -> exportStudentInstrument(info));
 
         //导出到报表中心
 //        exportManageFuncMap.put(ExportEnum.SUPER_FIND_COURSE_SCHEDULES, (info,headColumns) -> this.superFindCourseSchedules(info,headColumns));
@@ -331,6 +337,43 @@ public class ExportServiceImpl implements ExportService {
 
     }
 
+    //乐保导出
+    @Override
+    public List exportStudentInstrument(Map<String, Object> info){
+        String startTimeStr = getParam(info, "startTime", String.class);
+        Date startTime = null;
+        if(StringUtils.isNotEmpty(startTimeStr)){
+            startTime = DateUtil.stringToDate(startTimeStr,DateUtil.ISO_EXPANDED_DATE_FORMAT);
+        }
+        Date endTime = null;
+        String endTimeStr = getParam(info, "endTime", String.class);
+        if(StringUtils.isNotEmpty(endTimeStr)){
+            endTime = DateUtil.stringToDate(endTimeStr,DateUtil.ISO_EXPANDED_DATE_FORMAT);
+        }
+        String organId = organizationService.getEmployeeOrgan("");
+
+        if (startTime != null) {
+            startTime = DateUtil.trunc(startTime);
+        }
+        if (endTime != null) {
+            endTime = DateUtil.getLastTimeWithDay(endTime);
+        }
+        List<StudentInstrumentExportDto> instruments = studentInstrumentDao.getInstruments(startTime, endTime, organId, TenantContextHolder.getTenantId());
+
+        if (instruments.size() <= 0) {
+            throw new BizException("没有可导出的记录");
+        }
+        for (StudentInstrumentExportDto instrument : instruments) {
+            StudentRegistration studentMusicGroup = studentInstrumentDao.findStudentMusicGroup(instrument.getStudentId());
+            if (studentMusicGroup != null) {
+                instrument.setRepairerName(studentMusicGroup.getParentsName());
+                instrument.setMusicGroupName(studentMusicGroup.getClassGroupName());
+                instrument.setStudentStatus(studentMusicGroup.getMusicGroupStatus());
+            }
+        }
+        return instruments;
+    }
+
     //班级列表导出
     @Override
     public List exportClassGroup(Map<String, Object> info){
@@ -775,7 +818,7 @@ public class ExportServiceImpl implements ExportService {
     @Override
     public List studentOrder(Map<String, Object> info){
         String organIds = getParam(info,"organIds",String.class);
-        Date date = getParam(info,"date",Date.class);
+        Date date = DateUtil.stringToDate(getParam(info,"date",String.class),DateUtil.ISO_EXPANDED_DATE_FORMAT);
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         organIds = organizationService.getEmployeeOrgan(sysUser.getId(), organIds, sysUser.getIsSuperAdmin());
         Date startTime = DateUtil.getFirstDayOfMonth(date);
@@ -983,8 +1026,8 @@ public class ExportServiceImpl implements ExportService {
         HashSet<Integer> added = new HashSet<>();
         //获取用户选择的表头和表字段
         Map<String, String> exportMap = getExportMap(exportDto);
-        Set<String> header = exportMap.keySet();
-        Collection<String> body = exportMap.values();
+        Set<String> header = new LinkedHashSet<>(exportMap.keySet());
+        Set<String> body = new LinkedHashSet<>(exportMap.values());
         for (RegisterSubjectDto registerSubject : registerSubjects) {
             if (!added.contains(registerSubject.getSubjectId())) {
                 added.add(registerSubject.getSubjectId());
@@ -1127,8 +1170,8 @@ public class ExportServiceImpl implements ExportService {
         HashSet<Integer> added = new HashSet<>();
         //获取用户选择的表头和表字段
         Map<String, String> exportMap = getExportMap(exportDto);
-        Set<String> header = exportMap.keySet();
-        Collection<String> body = exportMap.values();
+        Set<String> header = new LinkedHashSet<>(exportMap.keySet());
+        Set<String> body = new LinkedHashSet<>(exportMap.values());
         for (RegisterSubjectDto registerSubject : registerSubjects) {
             if (!added.contains(registerSubject.getSubjectId())) {
                 added.add(registerSubject.getSubjectId());

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

@@ -1,6 +1,8 @@
 package com.ym.mec.biz.service.impl;
 
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.List;
 
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -10,6 +12,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.JSONPath;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.TeacherContractsDao;
 import com.ym.mec.biz.dal.entity.TeacherContracts;
@@ -67,7 +70,7 @@ public class TeacherContractsServiceImpl extends BaseServiceImpl<Long, TeacherCo
 	public boolean callback(String jsonStr) {
 		JSONObject jsonObject = JSONObject.parseObject(jsonStr);
 
-		String serialNo = jsonObject.getString("serialNo");
+		String serialNo = (String) JSONPath.eval(jsonObject, "$.content.serialNo");
 
 		TeacherContracts teacherContracts = teacherContractsDao.queryBySerialNo(serialNo);
 		if (teacherContracts == null) {
@@ -80,8 +83,8 @@ public class TeacherContractsServiceImpl extends BaseServiceImpl<Long, TeacherCo
 			return true;
 		}
 
-		String contractResultNo = jsonObject.getString("contractResultNo");
-		String contractUrl = jsonObject.getString("contractUrl");
+		String contractResultNo = (String) JSONPath.eval(jsonObject, "$.content.contractResultNo");
+		String contractUrl = (String) JSONPath.eval(jsonObject, "$.content.contractUrl");
 
 		teacherContracts.setContractNo(contractResultNo);
 		teacherContracts.setUrl(contractUrl);
@@ -90,4 +93,29 @@ public class TeacherContractsServiceImpl extends BaseServiceImpl<Long, TeacherCo
 		return true;
 	}
 
+	@Override
+	public void queryTeacherContractSignStatus() {
+		
+		List<TeacherContracts> updateList = new ArrayList<TeacherContracts>();
+		
+		List<TeacherContracts> teacherContractsList = teacherContractsDao.queryNotUrlList();
+		
+		if(teacherContractsList != null && teacherContractsList.size() > 0){
+			for(TeacherContracts teacherContracts : teacherContractsList){
+				String url = contractSignService.querySignContractResult(teacherContracts.getSerialNo());
+				if(StringUtils.isNoneBlank(url)){
+					teacherContracts.setUrl(url);
+					updateList.add(teacherContracts);
+				}else{
+					teacherContractsDao.delete(teacherContracts.getId());
+				}
+			}
+			
+			if(updateList.size() > 0){
+				teacherContractsDao.batchUpdate(updateList);
+			}
+		}
+		
+	}
+
 }

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

@@ -83,6 +83,8 @@ import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.common.tenant.TenantContextHolder;
 import com.ym.mec.im.ImFeignService;
+import com.ym.mec.thirdparty.user.realname.RealnameAuthenticationPluginContext;
+import com.ym.mec.thirdparty.user.realname.provider.LinkfaceRealnameAuthenticationPlugin;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.idcard.IdcardValidator;
@@ -129,6 +131,9 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 	@Autowired
 	private TenantInfoService tenantInfoService;
 
+    @Autowired
+    private RealnameAuthenticationPluginContext realnameAuthenticationPluginContext;
+
 	@Override
 	public BaseDAO<Integer, Teacher> getDAO() {
 		return teacherDao;
@@ -721,6 +726,8 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 			throw new BizException("身份证校验失败");
 		}
 
+        realnameAuthenticationPluginContext.getRealnameAuthenticationPlugin(LinkfaceRealnameAuthenticationPlugin.getName()).verify(realName, idcardNo);
+
 		Date date = new Date();
 
 		teacher.setIdcardBackImg(idcardBackImg);

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

@@ -692,7 +692,7 @@
     <select id="queryChargeStandard" resultType="java.util.Map">
         SELECT `music_group_id_` 'key',`payment_amount_` 'value'  FROM `music_group_payment_calender` WHERE `id_` in
 		(
-		SELECT max(pc.`id_`)   FROM `music_group_payment_calender` pc WHERE pc.`payment_type_` in ('MUSIC_APPLY','MUSIC_RENEW') where pc.music_group_id_ = #{musicGroupIdList}
+		SELECT max(pc.`id_`)   FROM `music_group_payment_calender` pc WHERE pc.`payment_type_` in ('MUSIC_APPLY','MUSIC_RENEW') and pc.music_group_id_ in (#{musicGroupIdList})
 		GROUP BY pc.`music_group_id_` 
 		    )
     </select>

+ 31 - 3
mec-biz/src/main/resources/config/mybatis/TeacherContractsMapper.xml

@@ -44,9 +44,6 @@
 			<if test="userId != null">
 				user_id_ = #{userId},
 			</if>
-			<if test="id != null">
-				id_ = #{id},
-			</if>
 			<if test="serialNo != null">
 				serial_no_ = #{serialNo},
 			</if>
@@ -68,6 +65,33 @@
 		</set>
 		WHERE id_ = #{id}
 	</update>
+	
+	<update id="batchUpdate" parameterType="java.util.List">
+        <foreach collection="list" item="item" index="index" open="" close="" separator=";">
+			UPDATE teacher_contracts
+			<set>
+				<if test="item.userId != null">
+					user_id_ = #{item.userId},
+				</if>
+				<if test="item.serialNo != null">
+					serial_no_ = #{item.serialNo},
+				</if>
+				<if test="item.url != null">
+					url_ = #{item.url},
+				</if>
+				<if test="item.contractNo != null">
+					contract_no_ = #{item.contractNo},
+				</if>
+				<if test="item.type != null">
+					type_ = #{item.type},
+				</if>
+				<if test="item.createTime != null">
+					create_time_ = #{item.createTime},
+				</if>
+			</set>
+			WHERE id_ = #{item.id} and tenant_id_ = #{item.tenantId}
+        </foreach>
+	</update>
 
 	<!-- 根据主键删除一条记录 -->
 	<delete id="delete">
@@ -95,4 +119,8 @@
 	<select id="queryBySerialNo" resultMap="TeacherContracts">
 		SELECT * FROM teacher_contracts where serial_no_ = #{serialNo}
 	</select>
+
+	<select id="queryNotUrlList" resultMap="TeacherContracts">
+		SELECT * FROM teacher_contracts where url_ is null or url_ = ''
+	</select>
 </mapper>

+ 4 - 0
mec-client-api/src/main/java/com/ym/mec/task/TaskRemoteService.java

@@ -239,4 +239,8 @@ public interface TaskRemoteService {
 	/** 兑换码分配数量底告警 */
 	@GetMapping("task/redemptionCodeWarn")
 	void redemptionCodeWarn();
+
+	/** 查询老师协议签订状态 */
+	@GetMapping("task/queryTeacherContractSignStatus")
+	public void queryTeacherContractSignStatus();
 }

+ 5 - 0
mec-client-api/src/main/java/com/ym/mec/task/fallback/TaskRemoteServiceFallback.java

@@ -289,4 +289,9 @@ public class TaskRemoteServiceFallback implements TaskRemoteService {
     public void redemptionCodeWarn() {
         logger.error("兑换码分配数量底告警");
     }
+
+	@Override
+	public void queryTeacherContractSignStatus() {
+		logger.error("查询老师协议签订状态失败");
+	}
 }

+ 19 - 0
mec-task/src/main/java/com/ym/mec/task/jobs/TeacherContractTask.java

@@ -0,0 +1,19 @@
+package com.ym.mec.task.jobs;
+
+import com.ym.mec.task.TaskRemoteService;
+import com.ym.mec.task.core.BaseTask;
+import com.ym.mec.task.core.TaskException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class TeacherContractTask extends BaseTask {
+
+	@Autowired
+	private TaskRemoteService taskRemoteService;
+
+	@Override
+	public void execute() throws TaskException {
+		taskRemoteService.queryTeacherContractSignStatus();
+	}
+}

+ 17 - 2
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherContractController.java

@@ -3,6 +3,13 @@ package com.ym.mec.teacher.controller;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 
+import java.io.IOException;
+import java.io.PrintWriter;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.io.IOUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -58,8 +65,16 @@ public class TeacherContractController extends BaseController {
 
 	@ApiOperation(value = "异步通知")
 	@PostMapping("/callback")
-	public HttpResponseResult<String> callback(String jsonStr) {
+	public void callback(HttpServletRequest request, HttpServletResponse response) throws IOException {
+		String jsonStr = IOUtils.toString(request.getInputStream(), "UTF-8");
 		teacherContractsService.callback(jsonStr);
-		return succeed("success");
+		returnMsg("success", response);
+	}
+	
+	private void returnMsg(String msg, HttpServletResponse response) throws IOException {
+		response.addHeader("Content-Type", "text/html;charset=UTF-8");
+		PrintWriter print = response.getWriter();
+		print.print(msg);
+		print.flush();
 	}
 }

+ 3 - 2
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/lingxinpay/ContractSignService.java

@@ -108,11 +108,12 @@ public class ContractSignService {
 				return (String) JSONPath.eval(jsonObject, "$.content.contractUrl");
 			}
 
-			throw new ThirdpartyException("查询合同签署结果失败:{}", JSONPath.eval(jsonObject, "$.content.message"));
+			//throw new ThirdpartyException("查询合同签署结果失败:{}", JSONPath.eval(jsonObject, "$.content.message"));
 		} catch (IOException e) {
 			logger.error("请求[合同查询]接口报错", e);
-			throw new ThirdpartyException("请求[合同查询]接口报错:{}", e.getMessage());
+			//throw new ThirdpartyException("请求[合同查询]接口报错:{}", e.getMessage());
 		}
+		return null;
 	}
 
 	public static void main(String[] args) {

+ 6 - 0
mec-web/src/main/java/com/ym/mec/web/controller/TaskController.java

@@ -552,4 +552,10 @@ public class TaskController extends BaseController {
     public void checkTenantState(){
         tenantInfoService.checkTenantState();
     }
+
+    @ApiOperation("查询老师协议签订状态")
+    @GetMapping(value = "/queryTeacherContractSignStatus")
+    public void queryTeacherContractSignStatus(){
+    	
+    }
 }