Procházet zdrojové kódy

Merge remote-tracking branch 'origin/master'

Joburgess před 5 roky
rodič
revize
86cc0b02d7
57 změnil soubory, kde provedl 1209 přidání a 619 odebrání
  1. 10 0
      mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/entity/SysUser.java
  2. 1 7
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/config/WebMvcConfig.java
  3. 12 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/EmployeeDao.java
  4. 51 43
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentOrderDao.java
  5. 18 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRegistrationDao.java
  6. 20 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysAccountDao.java
  7. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherDao.java
  8. 25 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/NamesDto.java
  9. 15 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/Employee.java
  10. 0 28
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentRegistration.java
  11. 93 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysAccount.java
  12. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/Teacher.java
  13. 26 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/PaymentChannelEnum.java
  14. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/EmployeeService.java
  15. 18 54
      mec-biz/src/main/java/com/ym/mec/biz/service/PayService.java
  16. 5 0
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentPaymentOrderService.java
  17. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentRegistrationService.java
  18. 18 0
      mec-biz/src/main/java/com/ym/mec/biz/service/SysAccountService.java
  19. 17 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/EmployeeServiceImpl.java
  20. 70 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/PayServiceImpl.java
  21. 5 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderServiceImpl.java
  22. 12 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
  23. 31 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysAccountServiceImpl.java
  24. 13 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherServiceImpl.java
  25. 5 5
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  26. 109 101
      mec-biz/src/main/resources/config/mybatis/EmployeeMapper.xml
  27. 2 2
      mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml
  28. 36 19
      mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml
  29. 34 11
      mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml
  30. 114 0
      mec-biz/src/main/resources/config/mybatis/SysAccountMapper.xml
  31. 2 2
      mec-biz/src/main/resources/config/mybatis/SysMessageMapper.xml
  32. 12 2
      mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml
  33. 2 10
      mec-education/src/main/java/com/ym/mec/education/config/WebMvcConfig.java
  34. 22 23
      mec-im/src/main/java/com/ym/config/WebMvcConfig.java
  35. 1 1
      mec-student/src/main/java/com/ym/mec/student/config/ResourceServerConfig.java
  36. 13 6
      mec-student/src/main/java/com/ym/mec/student/config/WebMvcConfig.java
  37. 36 15
      mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupController.java
  38. 9 2
      mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupRegisterController.java
  39. 0 7
      mec-task/src/main/java/com/ym/mec/task/config/WebMvcConfig.java
  40. 1 1
      mec-teacher/src/main/java/com/ym/mec/teacher/TeacherApplication.java
  41. 0 7
      mec-teacher/src/main/java/com/ym/mec/teacher/config/WebMvcConfig.java
  42. 14 13
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/OrderController.java
  43. 41 127
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/TaskController.java
  44. 5 2
      mec-thirdparty/pom.xml
  45. 19 13
      mec-thirdparty/src/main/java/com/ym/mec/thirdparty/union/H5.java
  46. 2 3
      mec-thirdparty/src/main/java/com/ym/mec/thirdparty/union/Mp.java
  47. 0 64
      mec-thirdparty/src/main/java/com/ym/mec/thirdparty/union/Qrcode.java
  48. 145 0
      mec-thirdparty/src/main/java/com/ym/mec/thirdparty/union/UnionPay.java
  49. 15 0
      mec-thirdparty/src/main/java/com/ym/mec/thirdparty/union/UnionPayFeignService.java
  50. 56 21
      mec-thirdparty/src/main/java/com/ym/mec/thirdparty/yqpay/YqPayUtil.java
  51. 0 7
      mec-web/src/main/java/com/ym/mec/web/config/WebMvcConfig.java
  52. 3 3
      mec-web/src/main/java/com/ym/mec/web/controller/education/EmployeeController.java
  53. 1 7
      mec-workflow/src/main/java/com/ym/mec/workfow/config/WebMvcConfig.java
  54. 8 3
      mec-workflow/src/main/java/com/ym/mec/workfow/controller/web/LeaveController.java
  55. 7 0
      workflowy/src/main/java/org/snaker/engine/IOrderService.java
  56. 8 1
      workflowy/src/main/java/org/snaker/engine/core/OrderService.java
  57. 1 1
      workflowy/src/main/java/org/snaker/engine/handlers/impl/EndProcessHandler.java

+ 10 - 0
mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/entity/SysUser.java

@@ -98,6 +98,9 @@ public class SysUser implements Serializable{
 	@ApiModelProperty(value = "微信号",required = false)
 	private String wechatId;
 
+	@ApiModelProperty(value = "e签宝唯一编号",required = false)
+	private String esignId;
+
 	public String getRealName() {
 		return realName;
 	}
@@ -274,6 +277,13 @@ public class SysUser implements Serializable{
 		this.wechatId = wechatId;
 	}
 
+	public String getEsignId() {
+		return esignId;
+	}
+
+	public void setEsignId(String esignId) {
+		this.esignId = esignId;
+	}
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

+ 1 - 7
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/config/WebMvcConfig.java

@@ -9,7 +9,6 @@ import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
 import java.util.Date;
 
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Primary;
@@ -58,12 +57,7 @@ public class WebMvcConfig implements WebMvcConfigurer {
 		objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
 		// 序列化BigDecimal时不使用科学计数法输出
 		objectMapper.configure(JsonGenerator.Feature.WRITE_BIGDECIMAL_AS_PLAIN, true);
-		objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>() {
-			@Override
-			public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
-				jsonGenerator.writeString(StringUtils.EMPTY);
-			}
-		});
+
 		// 日期和时间格式化
 		JavaTimeModule javaTimeModule = new JavaTimeModule();
 		javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/EmployeeDao.java

@@ -53,4 +53,16 @@ public interface EmployeeDao extends BaseDAO<Integer, Employee> {
      */
     SysUser queryByPhone(String phone);
 
+    /**
+     * 删除用户角色
+     * @param userId
+     */
+    void delEmployeeRole(Integer userId);
+
+    /**
+     * 批量新增用户角色
+     * @param id
+     * @param roleIds
+     */
+    void batchAddEmployeeRole(@Param("userId") Integer id, @Param("roleIds")List<Integer> roleIds);
 }

+ 51 - 43
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentOrderDao.java

@@ -13,47 +13,55 @@ import com.ym.mec.common.dal.BaseDAO;
 
 public interface StudentPaymentOrderDao extends BaseDAO<Long, StudentPaymentOrder> {
 
-	/**
-	 * 查询商品列表
-	 *
-	 * @param musicGroupId
-	 * @param type
-	 * @return
-	 */
-	List<Goods> queryApplyGoodsList(@Param("musicGroupId") String musicGroupId, @Param("type") OrderDetailTypeEnum type);
-
-	/**
-	 * @Author: Joburgess
-	 * @Date: 2019/10/3
-	 * 根据学生vip课获取缴费订单
-	 */
-	StudentPaymentOrder findByStudentVipGroup(@Param("vipGroupId") Long vipGroupId, @Param("userId") Long userId);
-
-	/**
-	 * 查询乐团报名的订单
-	 *
-	 * @param userId
-	 * @param musicGroupId
-	 * @param status
-	 * @return
-	 */
-	StudentPaymentOrder findMusicGroupApplyOrderByStatus(@Param("userId") Integer userId, @Param("musicGroupId") String musicGroupId,
-			@Param("status") DealStatusEnum status);
-
-	/**
-	 * 根据订单号查询订单
-	 * @param orderNo
-	 * @return
-	 */
-	StudentPaymentOrder findOrderByOrderNo(@Param("orderNo") String orderNo);
-
-	/**
-	 * 查询指定交易状态的乐团报名的订单信息
-	 * @param musicGroupId 乐团编号
-	 * @param type 订单类型
-	 * @param status 订单状态
-	 * @return
-	 */
-	List<StudentPaymentOrder> queryByDealStatus(@Param("musicGroupId") String musicGroupId, @Param("type") OrderTypeEnum type,
-			@Param("status") DealStatusEnum status);
+    /**
+     * 查询商品列表
+     *
+     * @param musicGroupId
+     * @param type
+     * @return
+     */
+    List<Goods> queryApplyGoodsList(@Param("musicGroupId") String musicGroupId, @Param("type") OrderDetailTypeEnum type);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/10/3
+     * 根据学生vip课获取缴费订单
+     */
+    StudentPaymentOrder findByStudentVipGroup(@Param("vipGroupId") Long vipGroupId, @Param("userId") Long userId);
+
+    /**
+     * 查询乐团报名的订单
+     *
+     * @param userId
+     * @param musicGroupId
+     * @param status
+     * @return
+     */
+    StudentPaymentOrder findMusicGroupApplyOrderByStatus(@Param("userId") Integer userId, @Param("musicGroupId") String musicGroupId,
+                                                         @Param("status") DealStatusEnum status);
+
+    /**
+     * 根据订单号查询订单
+     *
+     * @param orderNo
+     * @return
+     */
+    StudentPaymentOrder findOrderByOrderNo(@Param("orderNo") String orderNo);
+
+    /**
+     * 查询指定交易状态的乐团报名的订单信息
+     *
+     * @param musicGroupId 乐团编号
+     * @param type         订单类型
+     * @param status       订单状态
+     * @return
+     */
+    List<StudentPaymentOrder> queryByDealStatus(@Param("musicGroupId") String musicGroupId, @Param("type") OrderTypeEnum type,
+                                                @Param("status") DealStatusEnum status);
+
+    /**
+     * 查找支付成功和支付中订单
+     * @return
+     */
+    int findPayOrderNum();
 }

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

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.dao;
 
+import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dto.StudentApplyDetailDto;
 import com.ym.mec.biz.dal.dto.StudentFeeDto;
 import com.ym.mec.biz.dal.dto.StudentInfo;
@@ -86,4 +87,21 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
 	 * @return
 	 */
 	StudentRegistration queryByUserIdAndMusicGroupId(@Param("userId") Integer userId, @Param("musicGroupId") String musicGroupId);
+
+
+	/**
+	 * 查询手机是否已注册
+	 *
+	 * @param musicGroupId
+	 * @param parentsPhone
+	 * @return
+	 */
+	StudentRegistration getByPhoneAndMusicGroupId(@Param("musicGroupId") String musicGroupId, @Param("parentsPhone") String parentsPhone);
+
+	/**
+	 * 查询用户是否存在
+	 * @param phone
+	 * @return
+	 */
+	SysUser getSysUserByPhone(String phone);
 }

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

@@ -0,0 +1,20 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.ym.mec.biz.dal.entity.SysAccount;
+import com.ym.mec.common.dal.BaseDAO;
+import org.apache.ibatis.annotations.Param;
+
+import java.math.BigDecimal;
+
+public interface SysAccountDao extends BaseDAO<Integer, SysAccount> {
+
+    int updateByPrimaryKey(SysAccount record);
+
+    /**
+     * 获取一个私户
+     *
+     * @param amount
+     * @return
+     */
+    SysAccount getPerAccount(@Param("amount") BigDecimal amount);
+}

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

@@ -2,6 +2,7 @@ package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dto.BasicUserDto;
+import com.ym.mec.biz.dal.dto.NamesDto;
 import com.ym.mec.biz.dal.entity.Teacher;
 import com.ym.mec.common.dal.BaseDAO;
 
@@ -9,6 +10,7 @@ import com.ym.mec.common.entity.ImGroupModel;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
 
 public interface TeacherDao extends BaseDAO<Integer, Teacher> {
 
@@ -38,4 +40,10 @@ public interface TeacherDao extends BaseDAO<Integer, Teacher> {
      * @return
      */
     List<BasicUserDto> queryGroupStudents(@Param("teacherId") Integer teacherId, @Param("search") String search);
+
+    /**
+     * 获取教师的专业技能
+     * @return
+     */
+    List<NamesDto> getTeacherSubNames(String teacherIds);
 }

+ 25 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/NamesDto.java

@@ -0,0 +1,25 @@
+package com.ym.mec.biz.dal.dto;
+
+import java.util.List;
+
+public class NamesDto {
+    private Integer id;
+
+    private List<String> names;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public List<String> getNames() {
+        return names;
+    }
+
+    public void setNames(List<String> names) {
+        this.names = names;
+    }
+}

+ 15 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/Employee.java

@@ -8,6 +8,8 @@ import io.swagger.annotations.ApiModelProperty;
 
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
+import java.util.List;
+
 /**
  * 对应数据库表(employee):
  */
@@ -65,11 +67,22 @@ public class Employee extends SysUser {
 	/** 离职日期 */
 	@ApiModelProperty(value = "离职日期",required = false)
 	private java.util.Date demissionDate;
-	
+
+	@ApiModelProperty(value = "角色id列表",required = false)
+	private List<Integer> roleIds;
+
+	public List<Integer> getRoleIds() {
+		return roleIds;
+	}
+
+	public void setRoleIds(List<Integer> roleIds) {
+		this.roleIds = roleIds;
+	}
+
 	public void setUserId(Integer userId){
 		this.userId = userId;
 	}
-	
+
 	public Integer getUserId(){
 		return this.userId;
 	}

+ 0 - 28
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentRegistration.java

@@ -125,18 +125,6 @@ public class StudentRegistration {
     @ApiModelProperty(value = "班级id", hidden = true)
     private Integer ClassGroupId;
 
-    /**
-     * 最后缴费日期
-     */
-    @ApiModelProperty(value = "最后缴费日期", hidden = true)
-    private java.util.Date lastPaymentDate;
-
-    /**
-     * 预计下次缴费日期
-     */
-    @ApiModelProperty(value = "预计下次缴费日期", hidden = true)
-    private java.util.Date nextPaymentDate;
-
     public Integer getActualSubjectId() {
         return actualSubjectId;
     }
@@ -265,22 +253,6 @@ public class StudentRegistration {
         return paymentStatus;
     }
 
-    public void setLastPaymentDate(java.util.Date lastPaymentDate) {
-        this.lastPaymentDate = lastPaymentDate;
-    }
-
-    public java.util.Date getLastPaymentDate() {
-        return this.lastPaymentDate;
-    }
-
-    public void setNextPaymentDate(java.util.Date nextPaymentDate) {
-        this.nextPaymentDate = nextPaymentDate;
-    }
-
-    public java.util.Date getNextPaymentDate() {
-        return this.nextPaymentDate;
-    }
-
     public Integer getClassGroupId() {
         return ClassGroupId;
     }

+ 93 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysAccount.java

@@ -0,0 +1,93 @@
+package com.ym.mec.biz.dal.entity;
+
+import java.math.BigDecimal;
+
+public class SysAccount {
+    private Integer id;
+
+    /**
+    * 收款商户号
+    */
+    private String merNo;
+
+    /**
+    * 最大收款金额
+    */
+    private BigDecimal maxReceipt;
+
+    /**
+    * 已收金额
+    */
+    private BigDecimal hasReceipt;
+
+    /**
+    * 支付渠道
+    */
+    private String channel;
+
+    /**
+    * 支付渠道类型(PER-个人 COM-公户)
+    */
+    private String channelType;
+
+    /**
+    * 版本号
+    */
+    private Integer version;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getMerNo() {
+        return merNo;
+    }
+
+    public void setMerNo(String merNo) {
+        this.merNo = merNo;
+    }
+
+    public BigDecimal getMaxReceipt() {
+        return maxReceipt;
+    }
+
+    public void setMaxReceipt(BigDecimal maxReceipt) {
+        this.maxReceipt = maxReceipt;
+    }
+
+    public BigDecimal getHasReceipt() {
+        return hasReceipt;
+    }
+
+    public void setHasReceipt(BigDecimal hasReceipt) {
+        this.hasReceipt = hasReceipt;
+    }
+
+    public String getChannel() {
+        return channel;
+    }
+
+    public void setChannel(String channel) {
+        this.channel = channel;
+    }
+
+    public String getChannelType() {
+        return channelType;
+    }
+
+    public void setChannelType(String channelType) {
+        this.channelType = channelType;
+    }
+
+    public Integer getVersion() {
+        return version;
+    }
+
+    public void setVersion(Integer version) {
+        this.version = version;
+    }
+}

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/Teacher.java

@@ -8,6 +8,7 @@ import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.util.Date;
+import java.util.List;
 
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
@@ -52,6 +53,10 @@ public class Teacher extends SysUser {
 	@ApiModelProperty(value = "专业技能(支持多个,用逗号分隔),对应科目表编号", required = false)
 	private String subjectId;
 
+	/** 专业技能(支持多个,用|分隔),对应科目表编号 */
+	@ApiModelProperty(value = "专业技能(支持多个,用逗号分隔),对应科目表名称", required = false)
+	private String subjectName;
+
 	/** 入职时间 */
 	@ApiModelProperty(value = "入职时间", required = false)
 	private java.util.Date entryDate;
@@ -68,6 +73,10 @@ public class Teacher extends SysUser {
 	@ApiModelProperty(value = "流动范围(多个用逗号分开)", required = false)
 	private String flowOrganRange;
 
+	/** 流动范围(多个用|分开) */
+	@ApiModelProperty(value = "流动范围(多个用逗号分开)", required = false)
+	private List<String> flowOrganRangeName;
+
 	@ApiModelProperty(value = "老师介绍", required = false)
 	private String introduction;
 	

+ 26 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/PaymentChannelEnum.java

@@ -0,0 +1,26 @@
+package com.ym.mec.biz.dal.enums;
+
+import com.ym.mec.common.enums.BaseEnum;
+
+public enum PaymentChannelEnum implements BaseEnum<String, PaymentChannelEnum> {
+	YQPAY("YQPAY", "易乾"), UNIONPAY("UNIONPAY", "银联");
+
+	private String code;
+
+	private String desc;
+
+	private PaymentChannelEnum(String code, String desc) {
+		this.code = code;
+		this.desc = desc;
+	}
+
+	@Override
+	public String getCode() {
+		return code;
+	}
+
+	public String getDesc() {
+		return desc;
+	}
+
+}

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

@@ -16,7 +16,7 @@ public interface EmployeeService extends BaseService<Integer, Employee> {
      * @Date: 2019/9/17
      * 根据部门获取下面的员工
      */
-    PageInfo queryEmployByOrganId(EmployeeQueryInfo queryInfo) throws IOException;
+    PageInfo queryEmployByOrganId(EmployeeQueryInfo queryInfo) throws Exception;
 
     /**
      * @Author: Joburgess

+ 18 - 54
mec-biz/src/main/java/com/ym/mec/biz/service/PayService.java

@@ -1,68 +1,32 @@
 package com.ym.mec.biz.service;
 
 
-import com.ym.mec.thirdparty.yqpay.YqPayUtil;
-import org.springframework.core.io.ClassPathResource;
-import org.springframework.stereotype.Service;
+import com.ym.mec.thirdparty.yqpay.Msg;
 
-import java.io.InputStream;
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
 import java.util.Map;
 
-/** 
- * 上传工具服务层实现
+/**
+ * 支付服务
  */
-@Service
-public class PayService {
 
-	/**
-	 * 返回订单提交数据
-	 * @param amount 金额
-	 * @param orderNo 订单编号
-	 * @param notifyUrl 异步通知地址
-	 * @param returnUrl 支付返回地址
-	 * @param orderSubject 订单标题
-	 * @param orderBody 订单内容
-	 * @return
-	 * @throws Exception
-	 */
-	public Map getPayMap(BigDecimal amount, String orderNo, String notifyUrl, String returnUrl, String orderSubject, String orderBody) throws Exception {
+public interface PayService {
 
-//        String notifyUrl = ""; //异步通知地址
-//        String returnUrl = ""; //还回地址
-//        String orderBody = "大雅乐盟培训课程";//订单内容
-//        String orderSubject = "培训订单";//订单标题
-//        String orderNo = "2019121263844";//订单编号
-//        BigDecimal amount = new BigDecimal("6543"); //订单金额
 
-		String payUrl = "https://qyfapi.95epay.com/api/api/hPay/toPayHtml";//支付提交地址
-		String payChannels = "{\"weChatPay\":true,\"weChatPayMobile\":false,\"aliPay\":true,\"fastpayXy\":true,\"aliPayMobile\":false,\"balancePay\":false}";//支付方式配置
+    /**
+     * 返回订单提交数据
+     *
+     * @param amount       金额
+     * @param orderNo      订单编号
+     * @param notifyUrl    异步通知地址
+     * @param returnUrl    支付返回地址
+     * @param orderSubject 订单标题
+     * @param orderBody    订单内容
+     * @return
+     * @throws Exception
+     */
+    public Map getPayMap(BigDecimal amount, String orderNo, String notifyUrl, String returnUrl, String orderSubject, String orderBody) throws Exception;
 
-		//List<Map> tempRoutingList = new ArrayList();
-//        Map<String, Object> routingList = new HashMap<>();
-//        routingList.put("routingMerNo", routingAccount.getSellerNo());//分佣账户
-////      routingList.put("routingFee", order.getAmount()); //分佣金额
-//        routingList.put("routingFee", order.getAmount().subtract((order.getAmount().multiply(new BigDecimal(0.28)).divide(new BigDecimal(100))).setScale(2, BigDecimal.ROUND_HALF_UP))); //分佣金额
-//        tempRoutingList.add(routingList);
-//
-
-		Map<String, Object> resultMap = new LinkedHashMap<String, Object>();
-		resultMap.put("sellerNo", "0021677"); //收款商户号
-		resultMap.put("payChannels", payChannels); //支付方式
-		resultMap.put("orderBody", orderBody); //订单信息
-		resultMap.put("payAmount", amount); //支付金额
-		resultMap.put("apiPayType", "1"); //*API支付类型1-即时支付,2-担保支付,3-预授权支付*/
-		resultMap.put("tradeType", "0"); //*交易类型1—充值,0—收款*
-		resultMap.put("merMerOrderNo", orderNo); //商户订单号
-		resultMap.put("orderSubject", orderSubject); //订单标题
-		resultMap.put("returnUrl", returnUrl); //前台页面地址
-		//resultMap.put("tempRoutingList", JSON.toJSONString(tempRoutingList));//分账设置
-		Map rqMap = new YqPayUtil(notifyUrl, resultMap).getRequestMap();
-		rqMap.put("host", payUrl);
-		return rqMap;
-	}
+    public Map query(String orderNo) throws Exception;
 
 }

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

@@ -35,4 +35,9 @@ public interface StudentPaymentOrderService extends BaseService<Long, StudentPay
 	StudentPaymentOrder findOrderByOrderNo(String orderNo);
 
 
+	/**
+	 * 查找支付成功和支付中订单
+	 * @return
+	 */
+	int findPayOrderNum();
 }

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

@@ -101,4 +101,12 @@ public interface StudentRegistrationService extends BaseService<Long, StudentReg
 	 * @return
 	 */
 	StudentRegistration queryByUserIdAndMusicGroupId(Integer userId, String musicGroupId);
+
+	/**
+	 * 根据乐团id,手机查询乐团注册信息
+	 * @param musicGroupId
+	 * @param parentsPhone
+	 * @return
+	 */
+	StudentRegistration getByPhoneAndMusicGroupId(String musicGroupId, String parentsPhone);
 }

+ 18 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SysAccountService.java

@@ -0,0 +1,18 @@
+package com.ym.mec.biz.service;
+
+import com.ym.mec.biz.dal.entity.SysAccount;
+import com.ym.mec.biz.dal.entity.SysArea;
+import com.ym.mec.common.service.BaseService;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+public interface SysAccountService extends BaseService<Integer, SysAccount> {
+
+    /**
+     * 获取一个私户
+     * @return
+     */
+    SysAccount getPerAccount(BigDecimal amount);
+
+}

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

@@ -59,6 +59,10 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 			if(employee1 == null || employee1.getId() == null){
 				employee.setUserId(user.getId());
 				employeeDao.insert(employee);
+				//删除当前用户角色
+				employeeDao.delEmployeeRole(user.getId());
+				//新增用户角色
+				employeeDao.batchAddEmployeeRole(user.getId(),employee.getRoleIds());
 			}
 			return;
 		}
@@ -67,6 +71,10 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 		teacherDao.addSysUser(employee);
 		employee.setUserId(employee.getId());
         employeeDao.insert(employee);
+		//删除当前用户角色
+		employeeDao.delEmployeeRole(employee.getId());
+		//新增用户角色
+		employeeDao.batchAddEmployeeRole(employee.getId(),employee.getRoleIds());
 		ImResult imResult = imFeignService.register(new ImUserModel(employee.getId().toString(), employee.getUsername(), employee.getAvatar()));
 		employee.setImToken(imResult.getToken());
 		employeeDao.update(employee);
@@ -79,8 +87,13 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 		if(null==employee1){
 			employeeDao.insert(employee);
 		}else{
+			employee.setUserId(employee.getId());
 			employeeDao.update(employee);
 		}
+		//删除当前用户角色
+		employeeDao.delEmployeeRole(employee.getId());
+		//新增用户角色
+		employeeDao.batchAddEmployeeRole(employee.getId(),employee.getRoleIds());
 		teacherDao.updateUser(employee);
 	}
 
@@ -93,8 +106,11 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 	}
 
 	@Override
-	public PageInfo queryEmployByOrganId(EmployeeQueryInfo queryInfo) throws IOException {
+	public PageInfo queryEmployByOrganId(EmployeeQueryInfo queryInfo) throws Exception {
 		SysUser user = sysUserFeignService.queryUserInfo();
+		if(user == null){
+			throw new Exception("获取用户信息失败");
+		}
 
 		queryInfo.setOrganId(user.getOrganId().longValue());
 		PageInfo<EmployeeDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());

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

@@ -0,0 +1,70 @@
+package com.ym.mec.biz.service.impl;
+
+
+import com.ym.mec.biz.dal.entity.SysAccount;
+import com.ym.mec.biz.service.PayService;
+import com.ym.mec.biz.service.StudentPaymentOrderService;
+import com.ym.mec.biz.service.SysAccountService;
+import com.ym.mec.thirdparty.union.UnionPay;
+import com.ym.mec.thirdparty.union.UnionPayFeignService;
+import com.ym.mec.thirdparty.yqpay.YqPayUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.Map;
+
+/**
+ * 支付服务类
+ */
+@Service
+public class PayServiceImpl implements PayService {
+
+    @Autowired
+    private UnionPayFeignService unionPayFeignService;
+    @Autowired
+    private StudentPaymentOrderService studentPaymentOrderService;
+    @Autowired
+    private SysAccountService sysAccountService;
+
+
+    /**
+     * 返回订单提交数据
+     *
+     * @param amount       金额
+     * @param orderNo      订单编号
+     * @param notifyUrl    异步通知地址
+     * @param returnUrl    支付返回地址
+     * @param orderSubject 订单标题
+     * @param orderBody    订单内容
+     * @return
+     * @throws Exception
+     */
+    public Map getPayMap(BigDecimal amount, String orderNo, String notifyUrl, String returnUrl, String orderSubject, String orderBody) throws Exception {
+        //支付通道决策
+        SysAccount routingAccount = getRoutingAccount(amount);
+        if (routingAccount != null) {
+            //易乾支付
+            return YqPayUtil.getPayMap(amount, orderNo, notifyUrl, returnUrl, orderSubject, orderBody, routingAccount.getMerNo());
+        } else {
+            return UnionPay.getPayMap(amount, orderNo, notifyUrl, returnUrl, orderSubject);
+        }
+    }
+
+    public Map<String, Object> query(String orderNo) throws Exception {
+        return new UnionPay(unionPayFeignService).query(orderNo);
+    }
+
+
+    private SysAccount getRoutingAccount(BigDecimal money) {
+        SysAccount routingAccount = null;
+        int payOrderNums = studentPaymentOrderService.findPayOrderNum(); //获取支付中和成功的订单数
+        //分佣账户(1、每10笔,前四笔收入私户)
+        int rem = (payOrderNums + 1) % 10;
+        if (rem > 0 && rem <= 5) { //私人账户
+            routingAccount = sysAccountService.getPerAccount(money);
+        }
+        return routingAccount;
+    }
+
+}

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

@@ -40,4 +40,9 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
         return studentPaymentOrderDao.findOrderByOrderNo(orderNo);
     }
 
+    @Override
+    public int findPayOrderNum() {
+        return studentPaymentOrderDao.findPayOrderNum();
+    }
+
 }

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

@@ -9,6 +9,7 @@ import java.util.Map;
 
 import javax.annotation.Resource;
 
+import com.ym.mec.biz.dal.dao.TeacherDao;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -51,6 +52,8 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     private StudentPaymentOrderService studentPaymentOrderService;
     @Autowired
     private StudentPaymentOrderDetailService studentPaymentOrderDetailService;
+    @Autowired
+    private TeacherDao teacherDao;
 
     @Override
     public BaseDAO<Long, StudentRegistration> getDAO() {
@@ -118,7 +121,8 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     @Transactional(rollbackFor = Exception.class)
     public StudentRegistration addStudent(StudentRegistration studentRegistration) {
         Date date = new Date();
-        SysUser sysUser = sysUserFeignService.queryUserByMobile(studentRegistration.getParentsPhone());
+        int userId = 0;
+        SysUser sysUser = studentRegistrationDao.getSysUserByPhone(studentRegistration.getParentsPhone());
         if (sysUser == null) {
             sysUser = new SysUser();
             sysUser.setPhone(studentRegistration.getParentsPhone());
@@ -131,7 +135,8 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             sysUser.setOrganId(studentRegistration.getOrganId());
             sysUser.setRealName(studentRegistration.getName());
             sysUser.setIdCardNo(studentRegistration.getIdCardNo());
-            sysUserFeignService.addUser(sysUser);
+            teacherDao.addSysUser(sysUser);
+            userId = sysUser.getId();
         }
         studentRegistration.setUserId(sysUser.getId());
         studentRegistrationDao.insert(studentRegistration);
@@ -227,4 +232,9 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 		return studentRegistrationDao.queryByUserIdAndMusicGroupId(userId, musicGroupId);
 	}
 
+    @Override
+    public StudentRegistration getByPhoneAndMusicGroupId(String musicGroupId, String parentsPhone) {
+        return studentRegistrationDao.getByPhoneAndMusicGroupId(musicGroupId, parentsPhone);
+    }
+
 }

+ 31 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysAccountServiceImpl.java

@@ -0,0 +1,31 @@
+package com.ym.mec.biz.service.impl;
+
+import com.ym.mec.biz.dal.dao.SysAccountDao;
+import com.ym.mec.biz.dal.entity.SysAccount;
+import com.ym.mec.biz.dal.entity.SysArea;
+import com.ym.mec.biz.service.SysAccountService;
+import com.ym.mec.common.dal.BaseDAO;
+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.List;
+
+@Service
+public class SysAccountServiceImpl extends BaseServiceImpl<Integer, SysAccount> implements SysAccountService {
+	
+	@Autowired
+	private SysAccountDao sysAccountDao;
+
+	@Override
+	public BaseDAO<Integer, SysAccount> getDAO() {
+		return sysAccountDao;
+	}
+
+	@Override
+	public SysAccount getPerAccount(BigDecimal money) {
+		return sysAccountDao.getPerAccount(money);
+	}
+
+}

+ 13 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherServiceImpl.java

@@ -7,6 +7,7 @@ import com.ym.mec.auth.api.enums.SysUserType;
 import com.ym.mec.auth.api.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.BasicUserDto;
+import com.ym.mec.biz.dal.dto.NamesDto;
 import com.ym.mec.biz.dal.entity.MusicGroup;
 import com.ym.mec.biz.dal.entity.Teacher;
 import com.ym.mec.biz.dal.page.TeacherQueryInfo;
@@ -19,12 +20,15 @@ import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.im.ImFeignService;
+import com.ym.mec.util.collection.MapUtil;
+import org.apache.commons.collections.ListUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.*;
+import java.util.stream.Collectors;
 
 @Service
 public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  implements TeacherService {
@@ -112,7 +116,9 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 				teachers.add(musicGroup.getDirectorUserId());
 				teachers.removeAll(Collections.singleton(null));
 				//获取乐团群用户总数
-				e.setCount(musicGroupDao.countMusicGroupUserNum(e.getId()) + teachers.size());
+				Integer count = musicGroupDao.countMusicGroupUserNum(e.getId());
+				int num = count == null?0:count;
+				e.setCount(teachers.size() + num);
 				e.setId("mg" + e.getId());
 			});
 		}else {
@@ -141,10 +147,15 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 	public PageInfo<Teacher> queryPageDetail(TeacherQueryInfo queryInfo) {
 		PageInfo<Teacher> pageInfo = queryPage(queryInfo);
 		List<Teacher> teachers = pageInfo.getRows();
+		//获取老师的专业技能名称列表
+		List<Integer> teacherIds = teachers.stream().map(e -> e.getId()).collect(Collectors.toList());
+		String join = StringUtils.join(teacherIds, ",");
+		List<NamesDto> namesDto = teacherDao.getTeacherSubNames(join);
+		HashMap map = JSON.parseObject(JSON.toJSONString(namesDto), HashMap.class);
 		if(teachers != null && teachers.size() > 0){
 			teachers.forEach(e->{
 				if(StringUtils.isNotEmpty(e.getSubjectId())){
-					e.setSubjectId(JSON.toJSONString(subjectDao.findBySubIds(e.getSubjectId())));
+					e.setSubjectId(StringUtils.join(subjectDao.findBySubIds(e.getSubjectId()),","));
 				}
 			});
 		}

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

@@ -31,7 +31,6 @@
         <result column="sign_in_status_" property="signInStatus"/>
         <result column="sign_out_status_" property="signOutStatus"/>
         <result column="seal_class_id_" property="sealClassId"/>
-        <result column="teach_mode_" property="teachMode" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
     </resultMap>
 
     <resultMap type="com.ym.mec.biz.dal.entity.StudentCourseScheduleRecordDto" id="studentCourseScheduleRecord">
@@ -276,7 +275,8 @@
             CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
             cs.status_,
 	        su.username_ teacher_name_,
-	        cgsm.status_ attendance_status_
+	        cgsm.status_ attendance_status_,
+	        cs.teach_mode_
         FROM
             course_schedule cs
             LEFT JOIN sys_user su ON cs.teacher_id_=su.id_
@@ -298,9 +298,9 @@
             CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
             cs.status_,
 	        s.name_ school_name_,
-	        cg.teach_mode_,
-	        ta.sign_in_status_ sign_in_status_,
-	        ta.sign_out_status_ sign_out_status_
+	        ta.sign_in_status_,
+	        ta.sign_out_status_,
+	        cg.teach_mode_
         FROM
             course_schedule cs
             LEFT JOIN sys_user su ON cs.teacher_id_=su.id_

+ 109 - 101
mec-biz/src/main/resources/config/mybatis/EmployeeMapper.xml

@@ -6,22 +6,22 @@
 -->
 <mapper namespace="com.ym.mec.biz.dal.dao.EmployeeDao">
 
-	<resultMap type="com.ym.mec.biz.dal.entity.Employee" id="Employee">
-		<result column="user_id_" property="userId" />
-		<result column="organ_id_list_" property="organIdList" />
-		<result column="job_nature_" property="jobNature" />
-		<result column="is_probation_period_" property="isProbationPeriod" />
-		<result column="education_background_" property="educationBackground" />
-		<result column="graduate_school_" property="graduateSchool" />
-		<result column="technical_titles_" property="technicalTitles" />
-		<result column="entry_date_" property="entryDate" />
-		<result column="certificate_type_" property="certificateType" />
-		<result column="certificate_num_" property="certificateNum" />
-		<result column="update_time_" property="updateTime" />
-		<result column="create_time_" property="createTime" />
-		<result column="introduction_" property="introduction" />
-		<result column="demission_date_" property="demissionDate" />
-	</resultMap>
+    <resultMap type="com.ym.mec.biz.dal.entity.Employee" id="Employee">
+        <result column="user_id_" property="userId"/>
+        <result column="organ_id_list_" property="organIdList"/>
+        <result column="job_nature_" property="jobNature"/>
+        <result column="is_probation_period_" property="isProbationPeriod"/>
+        <result column="education_background_" property="educationBackground"/>
+        <result column="graduate_school_" property="graduateSchool"/>
+        <result column="technical_titles_" property="technicalTitles"/>
+        <result column="entry_date_" property="entryDate"/>
+        <result column="certificate_type_" property="certificateType"/>
+        <result column="certificate_num_" property="certificateNum"/>
+        <result column="update_time_" property="updateTime"/>
+        <result column="create_time_" property="createTime"/>
+        <result column="introduction_" property="introduction"/>
+        <result column="demission_date_" property="demissionDate"/>
+    </resultMap>
 
     <resultMap type="com.ym.mec.auth.api.entity.SysUser" id="SysUser">
         <result column="id_" property="id"/>
@@ -44,81 +44,85 @@
         <result column="email_" property="email"/>
         <result column="im_token_" property="imToken"/>
         <result column="id_card_no_" property="idCardNo"/>
-        <result column="esign_id_" property="esignId"/>
         <result column="wechat_id_" property="wechatId"/>
     </resultMap>
 
-	<!-- 根据主键查询一条记录 -->
-	<select id="get" resultMap="Employee" >
-		SELECT * FROM employee WHERE user_id_ = #{userId} 
+    <!-- 根据主键查询一条记录 -->
+    <select id="get" resultMap="Employee">
+		SELECT * FROM employee WHERE user_id_ = #{userId}
 	</select>
 
-	<!-- 全查询 -->
-	<select id="findAll" resultMap="Employee">
+    <!-- 全查询 -->
+    <select id="findAll" resultMap="Employee">
 		SELECT * FROM employee ORDER BY user_id_
 	</select>
-	
-	<!-- 向数据库增加一条记录 -->
-	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.Employee" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
-		<!--
-		<selectKey resultClass="int" keyProperty="id" > 
-		SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL 
-		</selectKey>
-		-->
-		INSERT INTO employee (user_id_,organ_id_list_,job_nature_,is_probation_period_,education_background_,graduate_school_,technical_titles_,entry_date_,certificate_type_,certificate_num_,update_time_,create_time_,introduction_,demission_date_) VALUES(#{userId},#{organIdList},#{jobNature},#{isProbationPeriod},#{educationBackground},#{graduateSchool},#{technicalTitles},#{entryDate},#{certificateType},#{certificateNum},#{updateTime},#{createTime},#{introduction},#{demissionDate})
-	</insert>
+
+    <!-- 向数据库增加一条记录 -->
+    <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.Employee" useGeneratedKeys="true" keyColumn="id"
+            keyProperty="id">
+        <!--
+        <selectKey resultClass="int" keyProperty="id" >
+        SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL
+        </selectKey>
+        -->
+        INSERT INTO employee
+        (user_id_,organ_id_list_,job_nature_,is_probation_period_,education_background_,graduate_school_,technical_titles_,entry_date_,certificate_type_,certificate_num_,update_time_,create_time_,introduction_,demission_date_)
+        VALUES(#{userId},#{organIdList},#{jobNature},#{isProbationPeriod},#{educationBackground},#{graduateSchool},#{technicalTitles},#{entryDate},#{certificateType},#{certificateNum},now(),now(),#{introduction},#{demissionDate})
+    </insert>
+    <insert id="batchAddEmployeeRole">
+        INSERT INTO sys_user_role(user_id_,role_id_) values
+        <foreach collection="roleIds" item="item" index="index" separator=",">
+            (#{userId},#{item})
+        </foreach>
+    </insert>
 
     <select id="queryByPhone" resultMap="SysUser">
 		select * from sys_user where phone_ = #{phone} OR username_ = #{phone}
 	</select>
-	
-	<!-- 根据主键查询一条记录 -->
-	<update id="update" parameterType="com.ym.mec.biz.dal.entity.Employee">
-		UPDATE employee <set>
-        <if test="isProbationPeriod != null">
-        is_probation_period_ = #{isProbationPeriod},
-        </if>
-        <if test="graduateSchool != null">
-        graduate_school_ = #{graduateSchool},
-        </if>
-        <if test="organId != null">
-            organ_id_list_ = #{organIdList},
-        </if>
-        <if test="introduction != null">
-        introduction_ = #{introduction},
-        </if>
-        <if test="technicalTitles != null">
-        technical_titles_ = #{technicalTitles},
-        </if>
-        <if test="entryDate != null">
-        entry_date_ = #{entryDate},
-        </if>
-        <if test="jobNature != null">
-        job_nature_ = #{jobNature},
-        </if>
-        <if test="createTime != null">
-        create_time_ = #{createTime},
-        </if>
-        <if test="userId != null">
-        user_id_ = #{userId},
-        </if>
-        <if test="certificateType != null">
-        certificate_type_ = #{certificateType},
-        </if>
-        <if test="updateTime != null">
-        update_time_ = #{updateTime},
-        </if>
-        <if test="educationBackground != null">
-        education_background_ = #{educationBackground},
-        </if>
-        <if test="certificateNum != null">
-        certificate_num_ = #{certificateNum},
-        </if>
-        <if test="demissionDate != null">
-        demission_date_ = #{demissionDate},
-        </if>
-        </set> WHERE user_id_ = #{userId}
-	</update>
+
+    <!-- 根据主键查询一条记录 -->
+    <update id="update" parameterType="com.ym.mec.biz.dal.entity.Employee">
+        UPDATE employee
+        <set>
+            <if test="isProbationPeriod != null">
+                is_probation_period_ = #{isProbationPeriod},
+            </if>
+            <if test="graduateSchool != null">
+                graduate_school_ = #{graduateSchool},
+            </if>
+            <if test="organIdList != null">
+                organ_id_list_ = #{organIdList},
+            </if>
+            <if test="introduction != null">
+                introduction_ = #{introduction},
+            </if>
+            <if test="technicalTitles != null">
+                technical_titles_ = #{technicalTitles},
+            </if>
+            <if test="entryDate != null">
+                entry_date_ = #{entryDate},
+            </if>
+            <if test="jobNature != null">
+                job_nature_ = #{jobNature},
+            </if>
+            <if test="certificateType != null">
+                certificate_type_ = #{certificateType},
+            </if>
+            <if test="updateTime != null">
+                update_time_ = #{updateTime},
+            </if>
+            <if test="educationBackground != null">
+                education_background_ = #{educationBackground},
+            </if>
+            <if test="certificateNum != null">
+                certificate_num_ = #{certificateNum},
+            </if>
+            <if test="demissionDate != null">
+                demission_date_ = #{demissionDate},
+            </if>
+        </set>
+        WHERE user_id_ = #{userId}
+    </update>
 
     <update id="updatePassword">
         UPDATE sys_user SET password_ = #{password} WHERE id_ = #{userID}
@@ -132,41 +136,45 @@
     </update>
 
     <!-- 根据主键删除一条记录 -->
-	<delete id="delete" >
+    <delete id="delete">
 		DELETE FROM employee WHERE user_id_ = #{userId} 
 	</delete>
-	
-	<!-- 分页查询 -->
-	<select id="queryPage" resultMap="Employee" parameterType="map">
-		SELECT * FROM employee ORDER BY user_id_ <include refid="global.limit"/>
-	</select>
-	
-	<!-- 查询当前表的总记录数 -->
-	<select id="queryCount" resultType="int">
+    <delete id="delEmployeeRole">
+        DELETE FROM sys_user_role WHERE user_id_ = #{userId}
+    </delete>
+
+    <!-- 分页查询 -->
+    <select id="queryPage" resultMap="Employee" parameterType="map">
+        SELECT * FROM employee ORDER BY user_id_
+        <include refid="global.limit"/>
+    </select>
+
+    <!-- 查询当前表的总记录数 -->
+    <select id="queryCount" resultType="int">
 		SELECT COUNT(*) FROM employee
 	</select>
 
 
     <resultMap type="com.ym.mec.biz.dal.dto.EmployeeDto" id="EmployeeDto">
-        <result property="id" column="id_" />
-        <result property="realName" column="real_name_" />
+        <result property="id" column="id_"/>
+        <result property="realName" column="real_name_"/>
         <result property="gender" column="gender_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
-        <result property="phone" column="phone_" />
-        <result property="lockFlag" column="lock_flag_" />
-        <result property="jobNature" column="job_nature_" />
-        <result property="entryDate" column="entry_date_" />
-        <result property="demissionDate" column="demission_date_" />
+        <result property="phone" column="phone_"/>
+        <result property="lockFlag" column="lock_flag_"/>
+        <result property="jobNature" column="job_nature_"/>
+        <result property="entryDate" column="entry_date_"/>
+        <result property="demissionDate" column="demission_date_"/>
         <collection property="roleNames" ofType="string" javaType="list">
-            <result column="role_name_" />
+            <result column="role_name_"/>
         </collection>
         <collection property="organNameList" ofType="string" javaType="list">
-            <result column="organ_name_list_" />
+            <result column="organ_name_list_"/>
         </collection>
         <collection property="roleIds" ofType="integer" javaType="list">
-            <result column="role_id_" />
+            <result column="role_id_"/>
         </collection>
         <collection property="organIdList" ofType="Long" javaType="list">
-            <result column="organ_id_list_" />
+            <result column="organ_id_list_"/>
         </collection>
     </resultMap>
     <select id="queryEmployByOrganId" resultMap="EmployeeDto">
@@ -192,5 +200,5 @@
         <if test="search != null">
             AND (su.real_name_ LIKE CONCAT('%',#{search},'%') OR su.phone_ LIKE CONCAT('%',#{search},'%'))
         </if>
-	</select>
+    </select>
 </mapper>

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

@@ -239,10 +239,10 @@
 		LEFT JOIN sys_user su ON cgsm.user_id_ = su.id_
 		WHERE cg.music_group_id_ = #{musicGroupId} GROUP BY su.id_
 	</select>
-	<select id="queryTeacherGroups" resultMap="ImUserModel">
+	<select id="queryTeacherGroups" resultMap="com.ym.mec.biz.dal.dao.ClassGroupDao.imGroupModel">
 		SELECT mg.id_,mg.name_,mg.img_ FROM music_group mg
 		WHERE (team_teacher_id_ = #{userId} OR educational_teacher_id_ = #{userId} OR operator_user_id_ = #{userId} OR director_user_id_ = #{userId})
-		<if test="search != null">
+		<if test="search != null and search != ''">
 			AND mg.name_ LIKE CONCAT('%',#{search},'%')
 		</if>
 	</select>

+ 36 - 19
mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml

@@ -24,7 +24,7 @@
         <result column="music_group_id_" property="musicGroupId"/>
         <result column="class_group_id_" property="classGroupId"/>
     </resultMap>
-    
+
     <resultMap type="com.ym.mec.biz.dal.entity.Goods" id="Goods">
         <result column="id_" property="id"/>
         <result column="goods_category_id_" property="goodsCategoryId"/>
@@ -52,13 +52,15 @@
 
     <!-- 根据主键查询一条记录 -->
     <select id="get" resultMap="StudentPaymentOrder">
-		SELECT * FROM student_payment_order WHERE id_ = #{id} 
-	</select>
+        SELECT * FROM student_payment_order WHERE id_ = #{id}
+    </select>
 
     <!-- 全查询 -->
     <select id="findAll" resultMap="StudentPaymentOrder">
-		SELECT * FROM student_payment_order ORDER BY id_
-	</select>
+        SELECT *
+        FROM student_payment_order
+        ORDER BY id_
+    </select>
 
     <!-- 向数据库增加一条记录 -->
     <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.StudentPaymentOrder" useGeneratedKeys="true"
@@ -125,8 +127,8 @@
 
     <!-- 根据主键删除一条记录 -->
     <delete id="delete">
-		DELETE FROM student_payment_order WHERE id_ = #{id} 
-	</delete>
+        DELETE FROM student_payment_order WHERE id_ = #{id}
+    </delete>
 
     <!-- 分页查询 -->
     <select id="queryPage" resultMap="StudentPaymentOrder" parameterType="map">
@@ -136,31 +138,46 @@
 
     <!-- 查询当前表的总记录数 -->
     <select id="queryCount" resultType="int">
-		SELECT COUNT(*) FROM student_payment_order
-	</select>
-	
+        SELECT COUNT(*)
+        FROM student_payment_order
+    </select>
+
     <select id="queryApplyGoodsList" resultMap="Goods" parameterType="map">
-		select g.* from goods g where g.id_ in (SELECT spod.goods_id_list_ FROM student_payment_order spo left join student_payment_order_detail spod on spo.id_ = spod.payment_order_id_ where spo.music_group_id_ = #{musicGroupId} and spo.type_ = 'APPLY' and spod.type_ = #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler})
-	</select>
+        select g.* from goods g where g.id_ in (SELECT spod.goods_id_list_ FROM student_payment_order spo left join
+        student_payment_order_detail spod on spo.id_ = spod.payment_order_id_ where spo.music_group_id_ =
+        #{musicGroupId} and spo.type_ = 'APPLY' and spod.type_ =
+        #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler})
+    </select>
     <select id="findByStudentVipGroup" resultMap="StudentPaymentOrder">
         SELECT
-            spo.*
+        spo.*
         FROM
-            student_vip_group_payment svgp
-            LEFT JOIN student_payment_order spo ON svgp.student_payment_order_id_=spo.id_
-            WHERE svgp.user_id_=#{userId} AND svgp.vip_group_id_=#{vipGroupId}
+        student_vip_group_payment svgp
+        LEFT JOIN student_payment_order spo ON svgp.student_payment_order_id_=spo.id_
+        WHERE svgp.user_id_=#{userId} AND svgp.vip_group_id_=#{vipGroupId}
     </select>
     <!-- 查询报名订单 -->
     <select id="findMusicGroupApplyOrderByStatus" resultMap="StudentPaymentOrder">
-        SELECT * FROM student_payment_order WHERE music_group_id_= #{musicGroupId} AND user_id_=#{userId} AND type_ = 'APPLY' AND status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+        SELECT * FROM student_payment_order WHERE music_group_id_= #{musicGroupId} AND user_id_=#{userId} AND type_ =
+        'APPLY' AND status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
     </select>
 
     <!-- 根据订单号查询订单 -->
     <select id="findOrderByOrderNo" resultMap="StudentPaymentOrder">
         SELECT * FROM student_payment_order WHERE order_no_ = #{orderNo}
     </select>
-    
+
     <select id="queryByDealStatus" resultMap="StudentPaymentOrder" parameterType="map">
-        SELECT * FROM student_payment_order WHERE music_group_id_= #{musicGroupId} AND user_id_=#{userId} AND type_ = #{type} AND status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+        SELECT * FROM student_payment_order WHERE music_group_id_= #{musicGroupId} AND user_id_=#{userId} AND type_ =
+        #{type} AND status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+    </select>
+
+    <!-- 查找支付成功和支付中订单 -->
+    <select id="findPayOrderNum" resultType="int">
+        <![CDATA[
+        SELECT COUNT(*)
+        FROM student_payment_order
+        WHERE status_ <= 2
+        ]]>
     </select>
 </mapper>

+ 34 - 11
mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml

@@ -77,9 +77,9 @@
     <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.StudentRegistration" useGeneratedKeys="true"
             keyColumn="id" keyProperty="id">
         INSERT INTO student_registration
-        (parents_phone_,id_,user_id_,name_,music_group_id_,current_grade_,current_class_,subject_id_,is_allow_adjust_,kit_purchase_method_,remark_,create_time_,update_time_,parents_name_,parents_company_,payment_status_,last_payment_date_,next_payment_date_,actual_subject_id_)
+        (parents_phone_,id_,user_id_,name_,music_group_id_,current_grade_,current_class_,subject_id_,is_allow_adjust_,kit_purchase_method_,remark_,create_time_,update_time_,parents_name_,parents_company_,payment_status_,actual_subject_id_)
         VALUES(#{parentsPhone},#{id},#{userId},#{name},#{musicGroupId},#{currentGrade},#{currentClass},#{subjectId},#{isAllowAdjust,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{kitPurchaseMethod,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
-        #{remark},now(),now(),#{parentsName},#{parentsCompany},#{paymentStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{lastPaymentDate},#{nextPaymentDate},#{subjectId})
+        #{remark},now(),now(),#{parentsName},#{parentsCompany},#{paymentStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{subjectId})
     </insert>
 
     <!-- 根据主键查询一条记录 -->
@@ -92,15 +92,6 @@
             <if test="subjectId != null">
                 subject_id_ = #{subjectId},
             </if>
-            <if test="nextPaymentDate != null">
-                next_payment_date_ = #{nextPaymentDate},
-            </if>
-            <if test="currentGrade != null">
-                current_grade_ = #{currentGrade},
-            </if>
-            <if test="lastPaymentDate != null">
-                last_payment_date_ = #{lastPaymentDate},
-            </if>
             <if test="currentClass != null">
                 current_class_ = #{currentClass},
             </if>
@@ -256,4 +247,36 @@
     <select id="queryByUserIdAndMusicGroupId" resultMap="StudentRegistration" parameterType="map">
     	select * from student_registration where music_group_id_ = #{musicGroupId} and user_id_ = #{userId}
     </select>
+
+    <!-- 根据乐团编号和手机号查询注册乐团注册信息-->
+    <select id="getByPhoneAndMusicGroupId" resultMap="StudentRegistration">
+        SELECT * FROM student_registration WHERE music_group_id_=#{musicGroupId} AND parents_phone_ = #{parentsPhone}
+    </select>
+
+    <resultMap type="com.ym.mec.auth.api.entity.SysUser" id="FindSysUser">
+        <result column="id_" property="id"/>
+        <result column="username_" property="username"/>
+        <result column="password_" property="password"/>
+        <result column="salt_" property="salt"/>
+        <result column="phone_" property="phone"/>
+        <result column="avatar_" property="avatar"/>
+        <result column="organ_id_" property="organId"/>
+        <result column="create_time_" property="createTime"/>
+        <result column="update_time_" property="updateTime"/>
+        <result column="lock_flag_" property="lockFlag" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="del_flag_" property="delFlag" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="wx_openid_" property="wxOpenid"/>
+        <result column="qq_openid_" property="qqOpenid"/>
+        <result column="user_type_" property="userType" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="gender_" property="gender"/>
+        <result column="nation_" property="nation"/>
+        <result column="birthdate_" property="birthdate"/>
+        <result column="email_" property="email"/>
+        <result column="im_token_" property="imToken"/>
+        <result column="id_card_no_" property="idCardNo"/>
+        <result column="wechat_id_" property="wechatId"/>
+    </resultMap>
+    <select id="getSysUserByPhone" resultMap="FindSysUser">
+        SELECT * FROM sys_user WHERE phone_ = #{phone}
+    </select>
 </mapper>

+ 114 - 0
mec-biz/src/main/resources/config/mybatis/SysAccountMapper.xml

@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ym.mec.biz.dal.dao.SysAccountDao">
+  <resultMap id="SysAccount" type="com.ym.mec.biz.dal.entity.SysAccount">
+    <!--@Table sys_account-->
+    <id column="id_" jdbcType="INTEGER" property="id" />
+    <result column="mer_no_" jdbcType="VARCHAR" property="merNo" />
+    <result column="max_receipt_" jdbcType="DECIMAL" property="maxReceipt" />
+    <result column="has_receipt_" jdbcType="DECIMAL" property="hasReceipt" />
+    <result column="channel_" jdbcType="VARCHAR" property="channel" />
+    <result column="channel_type_" jdbcType="CHAR" property="channelType" />
+    <result column="version" jdbcType="INTEGER" property="version" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    id_, mer_no_, max_receipt_, has_receipt_, channel_, channel_type_, version
+  </sql>
+  <select id="get" parameterType="java.lang.Integer" resultMap="SysAccount">
+    <!--@mbg.generated-->
+    select 
+    <include refid="Base_Column_List" />
+    from sys_account
+    where id_ = #{id,jdbcType=INTEGER}
+  </select>
+  <delete id="delete" parameterType="java.lang.Integer">
+    <!--@mbg.generated-->
+    delete from sys_account
+    where id_ = #{id,jdbcType=INTEGER}
+  </delete>
+  <insert id="insert" keyColumn="id_" keyProperty="id" parameterType="com.ym.mec.biz.dal.entity.SysAccount" useGeneratedKeys="true">
+    <!--@mbg.generated-->
+    insert into sys_account
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="merNo != null">
+        mer_no_,
+      </if>
+      <if test="maxReceipt != null">
+        max_receipt_,
+      </if>
+      <if test="hasReceipt != null">
+        has_receipt_,
+      </if>
+      <if test="channel != null">
+        channel_,
+      </if>
+      <if test="channelType != null">
+        channel_type_,
+      </if>
+      <if test="version != null">
+        version,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="merNo != null">
+        #{merNo,jdbcType=VARCHAR},
+      </if>
+      <if test="maxReceipt != null">
+        #{maxReceipt,jdbcType=DECIMAL},
+      </if>
+      <if test="hasReceipt != null">
+        #{hasReceipt,jdbcType=DECIMAL},
+      </if>
+      <if test="channel != null">
+        #{channel,jdbcType=VARCHAR},
+      </if>
+      <if test="channelType != null">
+        #{channelType,jdbcType=CHAR},
+      </if>
+      <if test="version != null">
+        #{version,jdbcType=INTEGER},
+      </if>
+    </trim>
+  </insert>
+  <update id="update" parameterType="com.ym.mec.biz.dal.entity.SysAccount">
+    <!--@mbg.generated-->
+    update sys_account
+    <set>
+      <if test="merNo != null">
+        mer_no_ = #{merNo,jdbcType=VARCHAR},
+      </if>
+      <if test="maxReceipt != null">
+        max_receipt_ = #{maxReceipt,jdbcType=DECIMAL},
+      </if>
+      <if test="hasReceipt != null">
+        has_receipt_ = #{hasReceipt,jdbcType=DECIMAL},
+      </if>
+      <if test="channel != null">
+        channel_ = #{channel,jdbcType=VARCHAR},
+      </if>
+      <if test="channelType != null">
+        channel_type_ = #{channelType,jdbcType=CHAR},
+      </if>
+      <if test="version != null">
+        version = #{version,jdbcType=INTEGER},
+      </if>
+    </set>
+    where id_ = #{id,jdbcType=INTEGER}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.ym.mec.biz.dal.entity.SysAccount">
+    <!--@mbg.generated-->
+    update sys_account
+    set mer_no_ = #{merNo,jdbcType=VARCHAR},
+      max_receipt_ = #{maxReceipt,jdbcType=DECIMAL},
+      has_receipt_ = #{hasReceipt,jdbcType=DECIMAL},
+      channel_ = #{channel,jdbcType=VARCHAR},
+      channel_type_ = #{channelType,jdbcType=CHAR},
+      version = #{version,jdbcType=INTEGER}
+    where id_ = #{id,jdbcType=INTEGER}
+  </update>
+  <select id="find"></select>
+  <!-- 获取一个私户账户 -->
+  <select id="getPerAccount" resultMap="SysAccount">
+    SELECT * FROM sys_account WHERE channel_type_ = 'YQPAY' AND channel_type_ = 'PER'
+  </select>
+</mapper>

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

@@ -171,8 +171,8 @@
 		INTERVAL #{recentMin} MINUTE) >= date(send_time_)]]>
 	</select>
 
-	<select id="queryCountOfUnread" resultType="int" parameterType="java.lang.Long">
+	<select id="queryCountOfUnread" resultType="int">
 		select count(*) from sys_message
-		where user_id_ = #{userId,jdbcType=BIGINT} and read_status_ = 0
+		where user_id_ = #{userId} and read_status_ = 0
 	</select>
 </mapper>

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

@@ -71,9 +71,9 @@
     <insert id="addSysUser" parameterType="com.ym.mec.auth.api.entity.SysUser" useGeneratedKeys="true" keyColumn="id"
             keyProperty="id">
         INSERT INTO sys_user
-        (im_token_,id_,username_,salt_,phone_,avatar_,organ_id_,create_time_,update_time_,wx_openid_,qq_openid_,user_type_,gender_,nation_,birthdate_,email_,id_card_no_,esign_id_,wechat_id_)
+        (im_token_,id_,username_,salt_,phone_,avatar_,organ_id_,create_time_,update_time_,wx_openid_,qq_openid_,user_type_,gender_,nation_,birthdate_,email_,id_card_no_,esign_id_,wechat_id_,real_name_,password_)
         VALUES(#{imToken},#{id},#{username},#{salt},#{phone},#{avatar},#{organId},now(),now(),#{wxOpenid},#{qqOpenid},#{userType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
-        #{gender},#{nation},#{birthdate},#{email},#{idCardNo},#{esignId},#{wechatId})
+        #{gender},#{nation},#{birthdate},#{email},#{idCardNo},#{esignId},#{wechatId},#{realName},#{password})
     </insert>
 
     <!-- 根据主键查询一条记录 -->
@@ -248,4 +248,14 @@
             AND su.username_ LIKE CONCAT('%',#{search},'%')
         </if>
     </select>
+
+    <resultMap id="namesDto" type="com.ym.mec.biz.dal.dto.NamesDto">
+        <result property="id" column="id_"/>
+        <collection property="names" javaType="list" ofType="string" column="name_"/>
+    </resultMap>
+    <select id="getTeacherSubNames" resultMap="namesDto">
+        SELECT s.name_,t.id_ FROM teacher t
+        LEFT JOIN `subject` s ON FIND_IN_SET(s.id_,t.subject_id_)
+        WHERE t.id_ IN (#{teacherIds})
+    </select>
 </mapper>

+ 2 - 10
mec-education/src/main/java/com/ym/mec/education/config/WebMvcConfig.java

@@ -9,10 +9,6 @@ import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
 import java.util.Date;
 
-import com.ym.mec.common.config.EnumConverterFactory;
-import com.ym.mec.common.enums.BaseEnum;
-
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Primary;
@@ -36,6 +32,8 @@ import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer;
 import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
 import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
 import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;
+import com.ym.mec.common.config.EnumConverterFactory;
+import com.ym.mec.common.enums.BaseEnum;
 
 @Configuration
 public class WebMvcConfig implements WebMvcConfigurer {
@@ -60,12 +58,6 @@ public class WebMvcConfig implements WebMvcConfigurer {
 		objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
 		// 序列化BigDecimal时不使用科学计数法输出
 		objectMapper.configure(JsonGenerator.Feature.WRITE_BIGDECIMAL_AS_PLAIN, true);
-		objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>() {
-			@Override
-			public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
-				jsonGenerator.writeString(StringUtils.EMPTY);
-			}
-		});
 		// 日期和时间格式化
 		JavaTimeModule javaTimeModule = new JavaTimeModule();
 		javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));

+ 22 - 23
mec-im/src/main/java/com/ym/config/WebMvcConfig.java

@@ -1,9 +1,30 @@
 package com.ym.config;
 
+import java.io.IOException;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.format.DateTimeFormatter;
+import java.util.Date;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
+import org.springframework.format.FormatterRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
 import com.fasterxml.jackson.core.JsonGenerator;
 import com.fasterxml.jackson.core.JsonParser;
 import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.DeserializationContext;
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.JsonDeserializer;
+import com.fasterxml.jackson.databind.JsonSerializer;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import com.fasterxml.jackson.databind.SerializerProvider;
 import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
 import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
 import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
@@ -14,22 +35,6 @@ import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;
 import com.ym.mec.common.config.EnumConverterFactory;
 import com.ym.mec.common.enums.BaseEnum;
 
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Primary;
-import org.springframework.format.FormatterRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-
-import java.io.IOException;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.time.LocalTime;
-import java.time.format.DateTimeFormatter;
-import java.util.Date;
-
 @Configuration
 public class WebMvcConfig implements WebMvcConfigurer {
 
@@ -52,12 +57,6 @@ public class WebMvcConfig implements WebMvcConfigurer {
 		objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
 		// 序列化BigDecimal时不使用科学计数法输出
 		objectMapper.configure(JsonGenerator.Feature.WRITE_BIGDECIMAL_AS_PLAIN, true);
-		objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>() {
-			@Override
-			public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
-				jsonGenerator.writeString(StringUtils.EMPTY);
-			}
-		});
 		// 日期和时间格式化
 		JavaTimeModule javaTimeModule = new JavaTimeModule();
 		javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));

+ 1 - 1
mec-student/src/main/java/com/ym/mec/student/config/ResourceServerConfig.java

@@ -22,7 +22,7 @@ public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
 
 	@Override
 	public void configure(HttpSecurity http) throws Exception {
-		http.csrf().disable().authorizeRequests().antMatchers("/v2/api-docs", "/register/findSubByMusicGroupId", "/register/add","musicGroup/getSubjectGoodsAndInfo","/musicGroup/test").permitAll().anyRequest().authenticated().and().httpBasic();
+		http.csrf().disable().authorizeRequests().antMatchers("/v2/api-docs", "/register/getMusicGroupRegInfo", "/register/add","musicGroup/getSubjectGoodsAndInfo","/musicGroup/test").permitAll().anyRequest().authenticated().and().httpBasic();
 	}
 
 	@Override

+ 13 - 6
mec-student/src/main/java/com/ym/mec/student/config/WebMvcConfig.java

@@ -58,12 +58,7 @@ public class WebMvcConfig implements WebMvcConfigurer {
 		objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
 		// 序列化BigDecimal时不使用科学计数法输出
 		objectMapper.configure(JsonGenerator.Feature.WRITE_BIGDECIMAL_AS_PLAIN, true);
-		objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>() {
-			@Override
-			public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
-				jsonGenerator.writeString(StringUtils.EMPTY);
-			}
-		});
+
 		// 日期和时间格式化
 		JavaTimeModule javaTimeModule = new JavaTimeModule();
 		javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
@@ -106,6 +101,18 @@ public class WebMvcConfig implements WebMvcConfigurer {
 			}
 		});
 
+		javaTimeModule.addSerializer(String.class, new JsonSerializer<String>() {
+
+			@Override
+			public void serialize(String value, JsonGenerator jsonGenerator, SerializerProvider serializers) throws IOException {
+				if (StringUtils.isEmpty(value)) {
+					jsonGenerator.writeString("");
+				} else {
+					jsonGenerator.writeString(value);
+				}
+			}
+		});
+
 		objectMapper.registerModule(javaTimeModule);
 		return objectMapper;
 	}

+ 36 - 15
mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupController.java

@@ -1,5 +1,7 @@
 package com.ym.mec.student.controller;
 
+import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.enums.*;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
@@ -23,14 +25,6 @@ import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dto.MusicGroupSubjectGoodsAndInfoDto;
 import com.ym.mec.biz.dal.dto.RegisterPayDto;
-import com.ym.mec.biz.dal.entity.Goods;
-import com.ym.mec.biz.dal.entity.MusicGroupSubjectGoodsGroup;
-import com.ym.mec.biz.dal.entity.MusicGroupSubjectPlan;
-import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
-import com.ym.mec.biz.dal.entity.StudentRegistration;
-import com.ym.mec.biz.dal.enums.DealStatusEnum;
-import com.ym.mec.biz.dal.enums.GoodsType;
-import com.ym.mec.biz.dal.enums.KitGroupPurchaseTypeEnum;
 import com.ym.mec.biz.service.GoodsService;
 import com.ym.mec.biz.service.MusicGroupService;
 import com.ym.mec.biz.service.MusicGroupSubjectGoodsGroupService;
@@ -62,7 +56,7 @@ public class MusicGroupController extends BaseController {
     @Autowired
     private StudentPaymentOrderService studentPaymentOrderService;
     @Autowired
-    PayService payService;
+    private PayService payService;
 
     @ApiOperation("获取学生所在乐团列表")
     @GetMapping(value = "/queryUserMusicGroups")
@@ -105,6 +99,27 @@ public class MusicGroupController extends BaseController {
         return succeed(subjectGoodsAndInfo);
     }
 
+    @ApiOperation(value = "乐团报名缴费状态查询")
+    @GetMapping("/getMusicGroupStatus")
+    @ApiImplicitParams({@ApiImplicitParam(name = "musicGroupId", value = "乐团id", required = true, dataType = "String")})
+    public HttpResponseResult getMusicGroupStatus(String musicGroupId) throws Exception {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        Integer userId = sysUser.getId();
+        MusicGroup musicGroup = musicGroupService.get(musicGroupId);
+        if (musicGroup == null) {
+            return failed("乐团不存在");
+        }
+        StudentRegistration studentRegistration = studentRegistrationService.queryByUserIdAndMusicGroupId(userId, musicGroupId);
+        if (studentRegistration == null) {
+            return failed("乐团报名信息不存在");
+        }
+        if (!musicGroup.getStatus().equals(MusicGroupStatusEnum.PAY) && !studentRegistration.getPaymentStatus().equals(YesOrNoEnum.YES)) {
+            return failed("乐团还未开启缴费,请等待通知");
+        }
+        return succeed(studentRegistration);
+    }
+
+
     @ApiOperation(value = "乐团报名支付")
     @PostMapping("/pay")
     @ApiImplicitParams({@ApiImplicitParam(name = "registerPayDto", value = "支付信息", required = true, dataType = "Integer")})
@@ -260,12 +275,18 @@ public class MusicGroupController extends BaseController {
 
     @GetMapping("/test")
     public Object test() throws Exception {
-
-        IdWorker idWorker = new IdWorker(0, 0);
-        String orderNo = idWorker.nextId();
-        BigDecimal amount = new BigDecimal("200");
-        Map map = payService.getPayMap(amount, orderNo, "https://pay.dayaedu.com/notify", "https://baodiu.com", "测试订单", "测试订单");
-        return succeed(map);
+        SysUser sysUser = sysUserFeignService.queryUserByMobile("15829292961");
+
+
+//        Map query = payService.query("1017201910111756231647562047");
+//
+//        System.out.println(query);
+//
+//        IdWorker idWorker = new IdWorker(0, 0);
+//        String orderNo = "1017" + idWorker.nextId();
+//        BigDecimal amount = new BigDecimal("200");
+//        Map map = payService.getPayMap(amount, orderNo, "https://pay.dayaedu.com/notify", "https://baodiu.com", "测试订单", "测试订单");
+       return succeed(sysUser);
     }
 
     @ApiOperation(value = "订单状态查询")

+ 9 - 2
mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupRegisterController.java

@@ -42,8 +42,15 @@ public class MusicGroupRegisterController extends BaseController {
 
     @ApiOperation(value = "新增学生报名信息")
     @PostMapping("/add")
-    public Object add(StudentRegistration studentRegistration) {
-        MusicGroup musicGroup = musicGroupService.get(studentRegistration.getMusicGroupId().toString());
+    public HttpResponseResult add(@RequestBody StudentRegistration studentRegistration) {
+        MusicGroup musicGroup = musicGroupService.get(studentRegistration.getMusicGroupId());
+        if (musicGroup == null) {
+            return failed("乐团信息不存在");
+        }
+        StudentRegistration hasReg = studentRegistrationService.getByPhoneAndMusicGroupId(studentRegistration.getMusicGroupId(), studentRegistration.getParentsPhone());
+        if (hasReg != null) {
+            return failed("该乐团您已注册");
+        }
         studentRegistration.setOrganId(musicGroup.getOrganId());
         return succeed(studentRegistrationService.addStudent(studentRegistration));
     }

+ 0 - 7
mec-task/src/main/java/com/ym/mec/task/config/WebMvcConfig.java

@@ -9,7 +9,6 @@ import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
 import java.util.Date;
 
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Primary;
@@ -58,12 +57,6 @@ public class WebMvcConfig implements WebMvcConfigurer {
 		objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
 		// 序列化BigDecimal时不使用科学计数法输出
 		objectMapper.configure(JsonGenerator.Feature.WRITE_BIGDECIMAL_AS_PLAIN, true);
-		objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>() {
-			@Override
-			public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
-				jsonGenerator.writeString(StringUtils.EMPTY);
-			}
-		});
 		// 日期和时间格式化
 		JavaTimeModule javaTimeModule = new JavaTimeModule();
 		javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));

+ 1 - 1
mec-teacher/src/main/java/com/ym/mec/teacher/TeacherApplication.java

@@ -17,7 +17,7 @@ import com.spring4all.swagger.EnableSwagger2Doc;
 @EnableDiscoveryClient
 @EnableFeignClients("com.ym.mec")
 @MapperScan("com.ym.mec.biz.dal.dao")
-@ComponentScan(basePackages = "com.ym.mec")
+@ComponentScan(basePackages = { "com.ym.mec", "org.snaker.engine" })
 @Configuration
 @EnableSwagger2Doc
 public class TeacherApplication {

+ 0 - 7
mec-teacher/src/main/java/com/ym/mec/teacher/config/WebMvcConfig.java

@@ -9,7 +9,6 @@ import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
 import java.util.Date;
 
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Primary;
@@ -58,12 +57,6 @@ public class WebMvcConfig implements WebMvcConfigurer {
 		objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
 		// 序列化BigDecimal时不使用科学计数法输出
 		objectMapper.configure(JsonGenerator.Feature.WRITE_BIGDECIMAL_AS_PLAIN, true);
-		objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>() {
-			@Override
-			public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
-				jsonGenerator.writeString(StringUtils.EMPTY);
-			}
-		});
 		// 日期和时间格式化
 		JavaTimeModule javaTimeModule = new JavaTimeModule();
 		javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));

+ 14 - 13
mec-teacher/src/main/java/com/ym/mec/teacher/controller/OrderController.java

@@ -1,15 +1,16 @@
 package com.ym.mec.teacher.controller;
 
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.commons.lang.StringUtils;
 import org.snaker.engine.SnakerEngine;
-import org.snaker.engine.access.Page;
 import org.snaker.engine.access.QueryFilter;
-import org.snaker.engine.entity.HistoryOrder;
 import org.snaker.engine.entity.HistoryTask;
+import org.snaker.engine.entity.Order;
 import org.snaker.engine.entity.Process;
 import org.snaker.engine.entity.Task;
 import org.snaker.engine.helper.AssertHelper;
@@ -25,6 +26,7 @@ import com.ym.mec.common.controller.BaseController;
 
 @RestController
 @RequestMapping(value = "/snaker/order")
+@Api(tags = "流程实例")
 public class OrderController extends BaseController {
 
 	@Autowired
@@ -40,6 +42,7 @@ public class OrderController extends BaseController {
 	 * @return
 	 */
 	@PostMapping(value = "setCcread")
+	@ApiOperation("抄送实例设置已读")
 	public Object ccread(String orderId) {
 		SysUser user = SysUserFeignService.queryUserInfo();
 
@@ -48,22 +51,20 @@ public class OrderController extends BaseController {
 	}
 
 	@GetMapping(value = "detail")
+	@ApiOperation("流程实例进度")
 	public Object json(String processId, String orderId) {
 		Process process = snakerEngine.process().getProcessById(processId);
 		AssertHelper.notNull(process);
 		Map<String, Object> jsonMap = new HashMap<String, Object>();
-		/*ProcessModel model = process.getModel();
-		if (model != null) {
-			jsonMap.put("process", model);
-		}*/
 
-		if (StringUtils.isNotEmpty(orderId)) {
-			List<Task> tasks = snakerEngine.query().getActiveTasks(new QueryFilter().setOrderId(orderId));
-			jsonMap.put("tasks", tasks);
+		Order order = snakerEngine.query().getOrder(orderId);
+		jsonMap.put("order", order);
+
+		List<Task> tasks = snakerEngine.query().getActiveTasks(new QueryFilter().setOrderId(orderId));
+		jsonMap.put("tasks", tasks);
 
-			List<HistoryTask> historyTasks = snakerEngine.query().getHistoryTasks(new QueryFilter().setOrderId(orderId));
-			jsonMap.put("historyTasks", historyTasks);
-		}
+		List<HistoryTask> historyTasks = snakerEngine.query().getHistoryTasks(new QueryFilter().setOrderId(orderId));
+		jsonMap.put("historyTasks", historyTasks);
 		return jsonMap;
 	}
 

+ 41 - 127
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TaskController.java

@@ -1,23 +1,17 @@
 package com.ym.mec.teacher.controller;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 
-import org.apache.commons.lang.StringUtils;
 import org.snaker.engine.SnakerEngine;
 import org.snaker.engine.access.Page;
 import org.snaker.engine.access.QueryFilter;
 import org.snaker.engine.core.AccessService;
 import org.snaker.engine.entity.HistoryOrder;
-import org.snaker.engine.entity.Task;
 import org.snaker.engine.entity.WorkItem;
-import org.snaker.engine.model.TaskModel.TaskType;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.ui.ModelMap;
+import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -32,6 +26,7 @@ import com.ym.mec.common.controller.BaseController;
  */
 @RestController
 @RequestMapping(value = "/snaker/task")
+@Api(tags = "流程任务")
 public class TaskController extends BaseController {
 
 	@Autowired
@@ -40,170 +35,89 @@ public class TaskController extends BaseController {
 	@Autowired
 	private SysUserFeignService SysUserFeignService;
 
-	@GetMapping(value = "home")
-	public Object homeTaskList() {
-
-		SysUser user = SysUserFeignService.queryUserInfo();
-
-		List<String> list = new ArrayList<String>();
-		list.add(user.getUsername());
-
-		String[] assignees = new String[list.size()];
-		list.toArray(assignees);
-
-		Page<WorkItem> majorPage = new Page<WorkItem>(5);
-		Page<WorkItem> aidantPage = new Page<WorkItem>(3);
-		Page<HistoryOrder> ccorderPage = new Page<HistoryOrder>(3);
-		List<WorkItem> majorWorks = snakerEngine.query().getWorkItems(majorPage,
-				new QueryFilter().setOperators(assignees).setTaskType(TaskType.Major.ordinal()));
-		List<WorkItem> aidantWorks = snakerEngine.query().getWorkItems(aidantPage,
-				new QueryFilter().setOperators(assignees).setTaskType(TaskType.Aidant.ordinal()));
-		List<HistoryOrder> ccWorks = snakerEngine.query().getCCWorks(ccorderPage, new QueryFilter().setOperators(assignees).setState(1));
-
-		ModelMap model = new ModelMap();
-		
-		model.addAttribute("majorWorks", majorWorks);
-		model.addAttribute("majorTotal", majorPage.getTotalCount());
-		model.addAttribute("aidantWorks", aidantWorks);
-		model.addAttribute("aidantTotal", aidantPage.getTotalCount());
-		model.addAttribute("ccorderWorks", ccWorks);
-		model.addAttribute("ccorderTotal", ccorderPage.getTotalCount());
-		return succeed(model);
-	}
-
 	/**
-	 * 根据当前用户查询我发起的任务列表
+	 * 查询我发起的任务列表
 	 * @param model
 	 * @return
 	 */
-	@GetMapping(value = "queryCreatedList")
-	public Object queryCreatedList(Page<HistoryOrder> page) {
+	@GetMapping(value = "queryMyCreatedList")
+	@ApiOperation("查询我发起的任务列表")
+	public Object queryMyCreatedList(Page<HistoryOrder> page) {
 		SysUser user = SysUserFeignService.queryUserInfo();
+		if (user == null) {
+			return failed(HttpStatus.FORBIDDEN, "请登录");
+		}
 
-		snakerEngine.query().getHistoryOrders(page, new QueryFilter().setOperator(user.getUsername()));
+		snakerEngine.query().getHistoryOrders(page, new QueryFilter().setOperator(user.getId()+""));
 		return succeed(page);
 	}
 
 	/**
-	 * 根据当前用户查询待办任务列表
+	 * 查询我待办任务列表
 	 * @param model
 	 * @return
 	 */
 	@GetMapping(value = "queryWaitList")
+	@ApiOperation("查询我待办任务列表")
 	public Object queryWaitList(Page<WorkItem> page) {
 		SysUser user = SysUserFeignService.queryUserInfo();
+		if (user == null) {
+			return failed(HttpStatus.FORBIDDEN, "请登录");
+		}
 
 		snakerEngine.query().getWorkItems(page, new QueryFilter().setOperator(user.getUsername()));
 		return succeed(page);
 	}
 
 	/**
-	 * 根据当前用户查询已办任务列表
+	 * 查询已办任务列表
 	 * @param model
 	 * @return
 	 */
-	@GetMapping(value = "querypProcessedList")
-	public Object querypProcessedList(Page<WorkItem> page) {
+	@GetMapping(value = "queryProcessedList")
+	@ApiOperation("查询我已办任务列表")
+	public Object queryProcessedList(Page<WorkItem> page) {
 		SysUser user = SysUserFeignService.queryUserInfo();
-
-		snakerEngine.query().getHistoryWorkItems(page, new QueryFilter().setOperator(user.getUsername()));
-		return succeed(page);
-	}
-
-	@PostMapping(value = "actor/add")
-	public Object addTaskActor(String orderId, String taskName, String operator) {
-		List<Task> tasks = snakerEngine.query().getActiveTasks(new QueryFilter().setOrderId(orderId));
-		for (Task task : tasks) {
-			if (task.getTaskName().equalsIgnoreCase(taskName) && StringUtils.isNotEmpty(operator)) {
-				snakerEngine.task().addTaskActor(task.getId(), operator);
-			}
-		}
-		return succeed();
-	}
-
-	@GetMapping(value = "tip")
-	public Object addTaskActor(String orderId, String taskName) {
-		List<Task> tasks = snakerEngine.query().getActiveTasks(new QueryFilter().setOrderId(orderId));
-		StringBuilder builder = new StringBuilder();
-		String createTime = "";
-		for (Task task : tasks) {
-			if (task.getTaskName().equalsIgnoreCase(taskName)) {
-				String[] actors = snakerEngine.query().getTaskActorsByTaskId(task.getId());
-				for (String actor : actors) {
-					builder.append(actor).append(",");
-				}
-				createTime = task.getCreateTime();
-			}
-		}
-		if (builder.length() > 0) {
-			builder.deleteCharAt(builder.length() - 1);
+		if (user == null) {
+			return failed(HttpStatus.FORBIDDEN, "请登录");
 		}
-		Map<String, String> data = new HashMap<String, String>();
-		data.put("actors", builder.toString());
-		data.put("createTime", createTime);
-		return succeed(data);
-	}
 
-	/**
-	 * 活动任务查询列表
-	 * @param model
-	 * @return
-	 */
-	@GetMapping(value = "active/more")
-	public Object activeTaskList(Page<WorkItem> page, Integer taskType) {
-		SysUser user = SysUserFeignService.queryUserInfo();
-
-		List<String> list = new ArrayList<String>();
-		list.add(user.getUsername());
-
-		String[] assignees = new String[list.size()];
-		list.toArray(assignees);
-		snakerEngine.query().getWorkItems(page, new QueryFilter().setOperators(assignees).setTaskType(taskType));
+		snakerEngine.query().getHistoryWorkItems(page, new QueryFilter().setOperator(user.getId()+""));
 		return succeed(page);
 	}
 
 	/**
-	 * 活动任务查询列表
+	 * 抄送我的已读列表
 	 * @param model
 	 * @return
 	 */
-	@GetMapping(value = "active/ccmore")
-	public Object activeCCList(Page<HistoryOrder> page) {
+	@GetMapping(value = "queryCCReadList")
+	@ApiOperation("抄送我的已读列表")
+	public Object queryCCReadList(Page<HistoryOrder> page) {
 		SysUser user = SysUserFeignService.queryUserInfo();
+		if (user == null) {
+			return failed(HttpStatus.FORBIDDEN, "请登录");
+		}
 
-		List<String> list = new ArrayList<String>();
-		list.add(user.getUsername());
-
-		String[] assignees = new String[list.size()];
-		list.toArray(assignees);
-		snakerEngine.query().getCCWorks(page, new QueryFilter().setOperators(assignees).setState(AccessService.STATE_ACTIVE));
+		snakerEngine.query().getCCWorks(page, new QueryFilter().setOperator(user.getId()+"").setState(AccessService.STATE_FINISH));
 		return succeed(page);
 	}
 
 	/**
-	 * 活动任务的驳回
+	 * 抄送我的未读列表
 	 * @param model
-	 * @param taskId
 	 * @return
 	 */
-	@PostMapping(value = "reject")
-	public Object activeTaskReject(String taskId) {
-
+	@GetMapping(value = "queryCCUnReadList")
+	@ApiOperation("抄送我的未读列表")
+	public Object queryCCUnReadList(Page<HistoryOrder> page) {
 		SysUser user = SysUserFeignService.queryUserInfo();
+		if (user == null) {
+			return failed(HttpStatus.FORBIDDEN, "请登录");
+		}
 
-		snakerEngine.executeAndJumpTask(taskId, user.getUsername(), null, null);
-		return succeed();
+		snakerEngine.query().getCCWorks(page, new QueryFilter().setOperator(user.getUsername()).setState(AccessService.STATE_ACTIVE));
+		return succeed(page);
 	}
 
-	/**
-	 * 历史任务撤回
-	 * @param orderId
-	 * @return
-	 */
-	@PostMapping(value = "undo")
-	public Object historyTaskUndo(String orderId) {
-		SysUser user = SysUserFeignService.queryUserInfo();
-		snakerEngine.order().withdraw(orderId, user.getUsername());
-		return succeed();
-	}
 }

+ 5 - 2
mec-thirdparty/pom.xml

@@ -66,7 +66,10 @@
 			<scope>system</scope>
 			<systemPath>${project.basedir}/libs/SADK-3.2.5.2.jar</systemPath>
 		</dependency>
-
-	</dependencies>
+		<dependency>
+			<groupId>org.springframework.cloud</groupId>
+			<artifactId>spring-cloud-starter-openfeign</artifactId>
+		</dependency>
+    </dependencies>
 
 </project>

+ 19 - 13
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/union/H5.java

@@ -2,13 +2,12 @@ package com.ym.mec.thirdparty.union;
 
 import com.alibaba.fastjson.JSONObject;
 
-import java.io.ByteArrayInputStream;
-import java.net.URLDecoder;
 import java.net.URLEncoder;
 import java.security.InvalidKeyException;
 import java.security.NoSuchAlgorithmException;
 import java.text.SimpleDateFormat;
 import java.util.Date;
+import java.util.Map;
 import java.util.UUID;
 
 import javax.crypto.Mac;
@@ -32,6 +31,9 @@ import org.apache.http.util.EntityUtils;
 public class H5 {
     static String appId = "10037e6f6a4e6da4016a670fd4530012";
     static String appKey = "f7a74b6c02ae4e1e94aaba311c04acf2";
+    static String mid = "898310148160568";
+    static String tid = "88880001";
+
     static String timestamp = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
     static String nonce = UUID.randomUUID().toString().replace("-", "");
 
@@ -43,19 +45,19 @@ public class H5 {
     }
 
     public static String getOpenBodySigForNetpay(String appId, String appKey, String timestamp, String nonce, String content) throws Exception {
-        String bodyDigest = DigestUtils.sha256Hex(content);
-        String str1_C = appId + timestamp + nonce + bodyDigest;
-        byte[] localSignature = hmacSHA256(str1_C.getBytes(), appKey.getBytes());
+        String signatureStr = appId + timestamp + nonce + DigestUtils.sha256Hex(content);
+        byte[] localSignature = hmacSHA256(signatureStr.getBytes(), appKey.getBytes());
         return ("authorization=OPEN-FORM-PARAM" + "&appId=" + appId + "&timestamp=" + timestamp + "&nonce=" + nonce + "&content=" + URLEncoder.encode(content, "UTF-8") + "&signature=" + URLEncoder.encode(Base64.encodeBase64String(localSignature), "UTF-8"));
     }
 
-    public static void main(String[] args) throws Exception {
+
+    public static String getRequestMap() throws Exception {
         JSONObject json = new JSONObject();
 
         json.put("instMid", "H5DEFAULT");
-        json.put("mid", "898310148160568");
-        json.put("tid", "88880001");
-        json.put("totalAmount", 20000);
+        json.put("mid", mid);
+        json.put("tid", tid);
+        json.put("totalAmount", "20000");
 
         json.put("orderDesc", "大雅乐盟培训课程");
         // json.put("bizType", "B2B");
@@ -63,11 +65,15 @@ public class H5 {
         json.put("requestTimestamp", DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
         json.put("returnUrl", "http://dev.dayaedu.com");
 
-
         String param = getOpenBodySigForNetpay(appId, appKey, timestamp, nonce, json.toString());
-        System.out.println("http://58.247.0.18:29015/v1/netpay/trade/h5-pay?" + param);
-//        GetOpenBodySig.sendGet("http://58.247.0.18:29015/v1/netpay/webpay/pay?"+param);
-        System.out.println(json.toString());
+        return "http://58.247.0.18:29015/v1/netpay/trade/h5-pay?" + param;
+    }
+
+
+    public static void main(String[] args) throws Exception {
+
+        System.out.println(getRequestMap());
+
     }
 }
 

+ 2 - 3
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/union/Mp.java

@@ -32,9 +32,8 @@ public class Mp {
     }
 
     public static String getOpenBodySigForNetpay(String appId, String appKey, String timestamp, String nonce, String content) throws Exception {
-        String bodyDigest = DigestUtils.sha256Hex(content);
-        String str1_C = appId + timestamp + nonce + bodyDigest;
-        byte[] localSignature = hmacSHA256(str1_C.getBytes(), appKey.getBytes());
+        String signatureStr = appId + timestamp + nonce + DigestUtils.sha256Hex(content);
+        byte[] localSignature = hmacSHA256(signatureStr.getBytes(), appKey.getBytes());
         return ("authorization=OPEN-FORM-PARAM" + "&appId=" + appId + "&timestamp=" + timestamp + "&nonce=" + nonce + "&content=" + URLEncoder.encode(content, "UTF-8") + "&signature=" + URLEncoder.encode(Base64.encodeBase64String(localSignature), "UTF-8"));
     }
 

+ 0 - 64
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/union/Qrcode.java

@@ -1,64 +0,0 @@
-package com.ym.mec.thirdparty.union;
-
-import com.alibaba.fastjson.JSONObject;
-import org.apache.commons.codec.binary.Base64;
-import org.apache.commons.codec.digest.DigestUtils;
-import org.apache.commons.lang.RandomStringUtils;
-import org.apache.commons.lang.time.DateFormatUtils;
-
-import javax.crypto.Mac;
-import javax.crypto.spec.SecretKeySpec;
-import java.net.URLEncoder;
-import java.security.InvalidKeyException;
-import java.security.NoSuchAlgorithmException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.UUID;
-
-/**
- * 银联商务主扫
- */
-public class Qrcode {
-    static String appId = "10037e6f66f2d0f901672aa27d690006";
-    static String appKey = "47ace12ae3b348fe93ab46cee97c6fde";
-    static String timestamp = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
-    static String nonce = UUID.randomUUID().toString().replace("-", "");
-
-    public static byte[] hmacSHA256(byte[] data, byte[] key) throws InvalidKeyException, NoSuchAlgorithmException {
-        String algorithm = "HmacSHA256";
-        Mac mac = Mac.getInstance(algorithm);
-        mac.init(new SecretKeySpec(key, algorithm));
-        return mac.doFinal(data);
-    }
-
-    public static String getOpenBodySigForNetpay(String appId, String appKey, String timestamp, String nonce, String content) throws Exception {
-        //String bodyDigest = DigestUtils.sha256Hex(URLDecoder.decode(content, "UTF-8"));
-        String bodyDigest = DigestUtils.sha256Hex(content);
-        System.out.println(bodyDigest);
-        String str1_C = appId + timestamp + nonce + bodyDigest;
-        byte[] localSignature = hmacSHA256(str1_C.getBytes(), appKey.getBytes());
-        return ("authorization=OPEN-FORM-PARAM" + "&appId=" + appId + "&timestamp=" + timestamp + "&nonce=" + nonce + "&content=" + URLEncoder.encode(content, "UTF-8") + "&signature=" + URLEncoder.encode(Base64.encodeBase64String(localSignature), "UTF-8"));
-    }
-
-    public static void main(String[] args) throws Exception {
-        JSONObject json = new JSONObject();
-
-        json.put("instMid", "QRPAYDEFAULT");
-        json.put("mid", "898460107420248");
-        json.put("tid", "88880001");
-        json.put("totalAmount", 20000);
-
-        json.put("orderDesc", "345");
-        // json.put("bizType", "B2B");
-        json.put("merOrderId", "1017" + new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()) + RandomStringUtils.randomNumeric(7));
-        json.put("requestTimestamp", DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
-        json.put("returnUrl","http://dev.dayaedu.com");
-
-
-        String param = getOpenBodySigForNetpay(appId, appKey, timestamp, nonce, json.toString());
-        System.out.println("http://58.247.0.18:29015/v1/netpay/webpay/pay?" + param);
-//        GetOpenBodySig.sendGet("http://58.247.0.18:29015/v1/netpay/webpay/pay?"+param);
-        System.out.println(json.toString());
-    }
-}
-

+ 145 - 0
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/union/UnionPay.java

@@ -0,0 +1,145 @@
+package com.ym.mec.thirdparty.union;
+
+import com.alibaba.fastjson.JSONObject;
+import org.apache.commons.codec.binary.Base64;
+import org.apache.commons.codec.digest.DigestUtils;
+import org.apache.commons.lang.RandomStringUtils;
+import org.apache.commons.lang.time.DateFormatUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import javax.crypto.Mac;
+import javax.crypto.spec.SecretKeySpec;
+import java.math.BigDecimal;
+import java.net.URI;
+import java.net.URLEncoder;
+import java.security.InvalidKeyException;
+import java.security.NoSuchAlgorithmException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+
+/**
+ * 银联商务主扫
+ */
+public class UnionPay {
+
+    private UnionPayFeignService unionPayFeignService;
+
+    static String aliPayUrl = "http://58.247.0.18:29015/v1/netpay/trade/h5-pay";//支付宝
+    static String qmfPayUrl = "http://58.247.0.18:29015/v1/netpay/qmf/h5-pay";//银联无卡
+    static String H5AppId = "10037e6f6a4e6da4016a670fd4530012";
+    static String h5AppKey = "f7a74b6c02ae4e1e94aaba311c04acf2";
+    static String h5Mid = "898310148160568";
+    static String h5Tid = "88880001";
+
+    static String wpPayUrl = "http://58.247.0.18:29015/v1/netpay/webpay/pay";//微信
+    static String wpAppId = "10037e6f6a4e6da4016a62a47e51000c";
+    static String wpAppKey = "b4b70d123a724972bc21f445b0b9f75c";
+    static String wpMid = "898460107420248";
+    static String wpTid = "00000001";
+
+    static String queryUrl = "http://58.247.0.18:29015/v1/netpay/query"; //订单查询地址
+
+    static String timestamp = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
+    static String nonce = UUID.randomUUID().toString().replace("-", "");
+
+    public UnionPay(UnionPayFeignService unionPayFeignService) {
+        this.unionPayFeignService = unionPayFeignService;
+    }
+
+    private static byte[] hmacSHA256(byte[] data, byte[] key) throws InvalidKeyException, NoSuchAlgorithmException {
+        String algorithm = "HmacSHA256";
+        Mac mac = Mac.getInstance(algorithm);
+        mac.init(new SecretKeySpec(key, algorithm));
+        return mac.doFinal(data);
+    }
+
+    private static String getOpenBodySig(String appId, String appKey, String timestamp, String nonce, String content, String method) throws Exception {
+        String signatureStr = appId + timestamp + nonce + DigestUtils.sha256Hex(content);
+        byte[] localSignature = hmacSHA256(signatureStr.getBytes(), appKey.getBytes());
+        if (method.toUpperCase().equals("POST")) {
+            return ("OPEN-BODY-SIG AppId=" + "\"" + appId + "\"" + ", Timestamp=" + "\"" + timestamp + "\"" + ", Nonce=" + "\"" + nonce + "\"" + ", Signature=" + "\"" + Base64.encodeBase64String(localSignature) + "\"");
+        } else {
+            return ("authorization=OPEN-FORM-PARAM" + "&appId=" + appId + "&timestamp=" + timestamp + "&nonce=" + nonce + "&content=" + URLEncoder.encode(content, "UTF-8") + "&signature=" + URLEncoder.encode(Base64.encodeBase64String(localSignature), "UTF-8"));
+        }
+
+    }
+
+
+    /**
+     * 获取支付链接的Map
+     *
+     * @param amount
+     * @param orderNo
+     * @param notifyUrl
+     * @param returnUrl
+     * @param orderSubject
+     * @return
+     * @throws Exception
+     */
+    public static Map<String, String> getPayMap(BigDecimal amount, String orderNo, String notifyUrl, String returnUrl, String orderSubject) throws Exception {
+        Map<String, String> PayMap = new HashMap<>();
+        JSONObject json = new JSONObject();
+        //H5支付链接生成
+        json.put("totalAmount", amount.multiply(new BigDecimal("100")).intValue());
+        json.put("instMid", "H5DEFAULT");
+        json.put("mid", h5Mid);
+        json.put("tid", h5Tid);
+        json.put("orderDesc", orderSubject);
+        json.put("merOrderId", orderNo);
+        json.put("requestTimestamp", DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
+        json.put("expireTime", DateFormatUtils.format(new Date().getTime() + 300000, "yyyy-MM-dd HH:mm:ss"));
+        json.put("notifyUrl", notifyUrl);
+        json.put("returnUrl", returnUrl);
+        String param = getOpenBodySig(H5AppId, h5AppKey, timestamp, nonce, json.toString(), "GET");
+        PayMap.put("aliPay", aliPayUrl + "?" + param);
+        PayMap.put("qmfPay", qmfPayUrl + "?" + param);
+
+        //微信公众号支付链接生成
+        json.put("instMid", "YUEDANDEFAULT");
+        json.put("mid", wpMid);
+        json.put("tid", wpTid);
+
+        param = getOpenBodySig(wpAppId, wpAppKey, timestamp, nonce, json.toString(), "GET");
+        PayMap.put("weChatPay", wpPayUrl + "?" + param);
+        return PayMap;
+    }
+
+    /**
+     * 订单查询
+     *
+     * @param orderNo 自己系统订单号
+     * @return 1017201910111756231647562047 测试订单号
+     */
+    public Map<String, Object> query(String orderNo) throws Exception {
+        JSONObject json = new JSONObject();
+        json.put("instMid", "H5DEFAULT");
+        json.put("mid", h5Mid);
+        json.put("tid", h5Tid);
+        json.put("merOrderId", orderNo);
+        json.put("requestTimestamp", DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
+
+        String authorization = getOpenBodySig(wpAppId, wpAppKey, timestamp, nonce, json.toString(), "POST");
+        HashMap<String, String> header = new HashMap<>();
+        header.put("Authorization", authorization);
+        header.put("Content-Type", "application/json; charset=utf-8");
+        Map query = unionPayFeignService.query(json.getInnerMap(), header);
+        return query;
+    }
+
+
+    public static void main(String[] args) throws Exception {
+        String orderNo = "1017" + new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()) + RandomStringUtils.randomNumeric(7);
+
+        System.out.println(orderNo);
+
+        Map<String, String> payMap = getPayMap(new BigDecimal("0.01"), orderNo, "http://pay.dayaedu.com/pay/notify", "http://dev.daya.com", "大雅测试订单");
+        System.out.println("weChat= " + payMap.get("weChatPay"));
+        System.out.println("H5= " + payMap.get("aliPay"));
+        System.out.println("qmfPay= " + payMap.get("qmfPay"));
+    }
+}
+

+ 15 - 0
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/union/UnionPayFeignService.java

@@ -0,0 +1,15 @@
+package com.ym.mec.thirdparty.union;
+
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Map;
+
+
+@FeignClient(value = "UnionPayFeignService", url = "http://58.247.0.18:29015")
+public interface UnionPayFeignService {
+
+    @RequestMapping(name = "查询订单", value = "/v1/netpay/query", method = RequestMethod.POST)
+    Map query(@RequestBody Map body, @RequestHeader Map Header);
+
+}

+ 56 - 21
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/yqpay/YqPayUtil.java

@@ -2,46 +2,81 @@ package com.ym.mec.thirdparty.yqpay;
 
 import com.alibaba.fastjson.JSON;
 
-import java.util.LinkedHashMap;
-import java.util.Map;
+import java.math.BigDecimal;
+import java.util.*;
 
 public class YqPayUtil {
 
-    private String merNo = "0021677";
+    private static final String merNo = "0021677"; //商户号
     private static final String version = "1.1";
-    private String notifyUrl;
-    private String timestamp;
-    private String apiContent;
     private static final String signType = "CFCA";
-    private String sign;
-    private Map<String, Object> resultMap;
-    private Map<String, Object> requestMap;
-
-    public YqPayUtil(String notifyUrl, Map<String, Object> resultMap) throws Exception {
-        Map<String, Object> rqMap = new LinkedHashMap<String, Object>();
-        rqMap.put("merNo", this.merNo);
-        rqMap.put("version", this.version);
+    private static final String payUrl = "https://qyfapi.95epay.com/api/api/hPay/toPayHtml";//支付提交地址
+    private static final String payChannels = "{\"weChatPay\":true,\"weChatPayMobile\":false,\"aliPay\":true,\"fastpayXy\":true,\"aliPayMobile\":false,\"balancePay\":false}";//支付方式配置
+
+    private static Map<String, Object> getRequestMap(String notifyUrl, Map<String, Object> resultMap) throws Exception {
+        Map<String, Object> rqMap = new LinkedHashMap<>();
+        rqMap.put("merNo", merNo);
+        rqMap.put("version", version);
         rqMap.put("notifyUrl", notifyUrl);
         rqMap.put("timestamp", DateUtils.getDateTime());
         rqMap.put("apiContent", JSON.toJSONString(resultMap));
         rqMap.put("signType", signType);
         String beforeSignedData = CFCARAUtil.joinMapValue(rqMap, '&');
-        this.sign = CFCARAUtil.signMessageByP1(beforeSignedData, "config/certificate/yqpay.pfx","aaa123123");
-        rqMap.put("sign", this.sign);
-        this.requestMap = rqMap;
+        String sign = CFCARAUtil.signMessageByP1(beforeSignedData, "config/certificate/yqpay.pfx", "aaa123123");
+        rqMap.put("sign", sign);
+        return rqMap;
     }
 
-    public Map<String, Object> getRequestMap() {
-        return this.requestMap;
+    /**
+     * 获取支付Map
+     *
+     * @param amount
+     * @param orderNo
+     * @param notifyUrl
+     * @param returnUrl
+     * @param orderSubject
+     * @param orderBody
+     * @param routingMerNo
+     * @return
+     * @throws Exception
+     */
+    public static Map<String, Object> getPayMap(BigDecimal amount, String orderNo, String notifyUrl, String returnUrl, String orderSubject, String orderBody, String routingMerNo) throws Exception {
+        List<Map> tempRoutingList = new ArrayList();
+        Map<String, Object> routingList = new HashMap<>();
+        routingList.put("routingMerNo", routingMerNo);//分佣账户
+        routingList.put("routingFee", amount.subtract((amount.multiply(new BigDecimal(0.28)).divide(new BigDecimal(100))).setScale(2, BigDecimal.ROUND_HALF_UP))); //分佣金额
+        tempRoutingList.add(routingList);
+
+        Map<String, Object> contentMap = new LinkedHashMap<>();
+        contentMap.put("sellerNo", merNo); //收款商户号
+        contentMap.put("payChannels", payChannels); //支付方式
+        contentMap.put("orderBody", orderBody); //订单信息
+        contentMap.put("payAmount", amount); //支付金额
+        contentMap.put("apiPayType", "1"); //*API支付类型1-即时支付,2-担保支付,3-预授权支付*/
+        contentMap.put("tradeType", "0"); //*交易类型1—充值,0—收款*
+        contentMap.put("merMerOrderNo", orderNo); //商户订单号
+        contentMap.put("orderSubject", orderSubject); //订单标题
+        contentMap.put("returnUrl", returnUrl); //前台页面地址
+        if (routingMerNo != null && !routingMerNo.isEmpty()) {
+            contentMap.put("tempRoutingList", JSON.toJSONString(tempRoutingList));//分账设置
+        }
+        Map<String, Object> payMap = getRequestMap(notifyUrl, contentMap);
+        payMap.put("host", payUrl);
+        return payMap;
     }
 
-    //验签
+    /**
+     * 验签
+     *
+     * @param rsMap
+     * @return
+     */
     public static boolean verify(Map<String, Object> rsMap) {
         String sign = (String) rsMap.get("sign");
         rsMap.remove("sign");
         String beforeSignedData = CFCARAUtil.joinMapValue(rsMap, '&');
         try {
-            return CFCARAUtil.verifyMessageByP1(beforeSignedData, sign, "certificate/sq_formal_sign.cer");
+            return CFCARAUtil.verifyMessageByP1(beforeSignedData, sign, "/config/certificate/sq_formal_sign.cer");
         } catch (Exception e) {
             return false;
         }

+ 0 - 7
mec-web/src/main/java/com/ym/mec/web/config/WebMvcConfig.java

@@ -9,7 +9,6 @@ import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
 import java.util.Date;
 
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Primary;
@@ -58,12 +57,6 @@ public class WebMvcConfig implements WebMvcConfigurer {
 		objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
 		// 序列化BigDecimal时不使用科学计数法输出
 		objectMapper.configure(JsonGenerator.Feature.WRITE_BIGDECIMAL_AS_PLAIN, true);
-		objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>() {
-			@Override
-			public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
-				jsonGenerator.writeString(StringUtils.EMPTY);
-			}
-		});
 		// 日期和时间格式化
 		JavaTimeModule javaTimeModule = new JavaTimeModule();
 		javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));

+ 3 - 3
mec-web/src/main/java/com/ym/mec/web/controller/education/EmployeeController.java

@@ -30,7 +30,7 @@ public class EmployeeController extends BaseController {
 
     @ApiOperation(value = "根据部门获取下面的员工")
     @GetMapping("/queryEmployByOrganId")
-    public Object queryEmployByOrganId(EmployeeQueryInfo queryInfo) throws IOException {
+    public Object queryEmployByOrganId(EmployeeQueryInfo queryInfo) throws Exception {
         return succeed(employeeService.queryEmployByOrganId(queryInfo));
     }
 
@@ -43,7 +43,7 @@ public class EmployeeController extends BaseController {
 
     @ApiOperation(value = "新增员工")
     @PostMapping("/add")
-    public Object add(Employee employee) {
+    public Object add(@RequestBody Employee employee) {
         try {
             employeeService.add(employee);
         } catch (Exception e) {
@@ -55,7 +55,7 @@ public class EmployeeController extends BaseController {
 
     @ApiOperation(value = "修改员工")
     @PostMapping("/update")
-    public Object update(Employee employee) {
+    public Object update(@RequestBody Employee employee) {
         employee.setUpdateTime(new Date());
         employeeService.updateEmployee(employee);
         return succeed();

+ 1 - 7
mec-workflow/src/main/java/com/ym/mec/workfow/config/WebMvcConfig.java

@@ -58,12 +58,6 @@ public class WebMvcConfig implements WebMvcConfigurer {
 		objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
 		// 序列化BigDecimal时不使用科学计数法输出
 		objectMapper.configure(JsonGenerator.Feature.WRITE_BIGDECIMAL_AS_PLAIN, true);
-		objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>() {
-			@Override
-			public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
-				jsonGenerator.writeString(StringUtils.EMPTY);
-			}
-		});
 		// 日期和时间格式化
 		JavaTimeModule javaTimeModule = new JavaTimeModule();
 		javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
@@ -101,7 +95,7 @@ public class WebMvcConfig implements WebMvcConfigurer {
 				try {
 					return format.parse(date);
 				} catch (ParseException e) {
-					throw new RuntimeException(e);
+					return null;
 				}
 			}
 		});

+ 8 - 3
mec-workflow/src/main/java/com/ym/mec/workfow/controller/web/LeaveController.java

@@ -53,19 +53,24 @@ public class LeaveController extends BaseController {
 	}
 
 	@PostMapping(value = "approve")
-	public Object approve(String taskId, boolean isAgree) {
+	public Object approve(String taskId, boolean isAgree, String remark) {
 		SysUser user = SysUserFeignService.queryUserInfo();
 
 		System.out.println(user.getUsername() + "审批***************");
 
+		Map<String, Object> params = new HashMap<String, Object>();
+
+		params.put("status", isAgree);
+		params.put("remark", remark);
+
 		List<Task> tasks = null;
 
 		// 审批同意
 		if (isAgree) {
-			tasks = snakerEngine.executeTask(taskId, user.getUsername());
+			tasks = snakerEngine.executeTask(taskId, user.getUsername(), params);
 		} else {
 			// 审批驳回
-			tasks = snakerEngine.executeAndJumpTask(taskId, user.getUsername(), null, null);
+			tasks = snakerEngine.executeAndJumpTask(taskId, user.getUsername(), params, null);
 		}
 		if (tasks.size() == 0) {
 			System.out.println("**********流程已结束*********");

+ 7 - 0
workflowy/src/main/java/org/snaker/engine/IOrderService.java

@@ -68,6 +68,13 @@ public interface IOrderService {
 	void complete(String orderId);
 
 	/**
+	 * 流程实例正常完成
+	 * @param orderId 流程实例id
+	 * @param args 变量数据
+	 */
+	void complete(String orderId, Map<String, Object> args);
+
+	/**
 	 * 保存流程实例
 	 * @param order 流程实例对象
 	 */

+ 8 - 1
workflowy/src/main/java/org/snaker/engine/core/OrderService.java

@@ -165,8 +165,15 @@ public class OrderService extends AccessService implements IOrderService {
 	 */
 	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
 	public void complete(String orderId) {
+		complete(orderId, null);
+	}
+	
+	@Override
+	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
+	public void complete(String orderId, Map<String, Object> args) {
 		Order order = access().getOrder(orderId);
 		HistoryOrder history = access().getHistOrder(orderId);
+		history.setVariable(JsonHelper.toJson(args));
 		history.setOrderState(STATE_FINISH);
 		history.setEndTime(DateHelper.getTime());
 		
@@ -177,7 +184,7 @@ public class OrderService extends AccessService implements IOrderService {
             completion.complete(history);
         }
 	}
-	
+
 	/**
 	 * 强制中止流程实例
 	 * @see org.snaker.engine.core.OrderService#terminate(String, String)

+ 1 - 1
workflowy/src/main/java/org/snaker/engine/handlers/impl/EndProcessHandler.java

@@ -48,7 +48,7 @@ public class EndProcessHandler implements IHandler {
 		/**
 		 * 结束当前流程实例
 		 */
-		engine.order().complete(order.getId());
+		engine.order().complete(order.getId(), execution.getArgs());
 		
 		/**
 		 * 如果存在父流程,则重新构造Execution执行对象,交给父流程的SubProcessModel模型execute