周箭河 5 роки тому
батько
коміт
8203d508a7

+ 13 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/DegreeRegistrationDao.java

@@ -0,0 +1,13 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.ym.mec.biz.dal.entity.DegreeRegistration;
+import com.ym.mec.common.dal.BaseDAO;
+import org.apache.ibatis.annotations.Param;
+
+public interface DegreeRegistrationDao extends BaseDAO<Integer, DegreeRegistration> {
+
+    DegreeRegistration findByMobileAndSporadicId(@Param("mobile") String mobile, @Param("sporadicId") Integer sporadicId);
+
+    DegreeRegistration getLock(@Param("id") Integer id);
+
+}

+ 225 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/DegreeRegistration.java

@@ -0,0 +1,225 @@
+package com.ym.mec.biz.dal.entity;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class DegreeRegistration {
+    private Integer id;
+
+    /**
+     * 零星支付id
+     */
+    @ApiModelProperty(value = "零星支付id",required = true)
+    private Integer sporadicId;
+
+    /**
+     * 姓名
+     */
+    @ApiModelProperty(value = "名字",required = true)
+    private String name;
+
+    /**
+     * 性别
+     */
+    @ApiModelProperty(value = "性别",required = true)
+    private String gender;
+
+    /**
+     * 身份证号
+     */
+    @ApiModelProperty(value = "身份证号",required = true)
+    private String idcard;
+
+    /**
+     * 城市
+     */
+    @ApiModelProperty(value = "城市",required = true)
+    private String city;
+
+    /**
+     * 学校
+     */
+    @ApiModelProperty(value = "学校",required = true)
+    private String school;
+
+    /**
+     * 乐器
+     */
+    @ApiModelProperty(value = "乐器",required = true)
+    private String subject;
+
+    /**
+     * 乐理级别
+     */
+    @ApiModelProperty(value = "乐理级别",required = true)
+    private String theoryLevel;
+
+    /**
+     * 家长联系电话
+     */
+    @ApiModelProperty(value = "家长联系电话",required = true)
+    private String mobile;
+
+    /**
+     * 收费标准
+     */
+    @ApiModelProperty(value = "收费标准",required = false)
+    private BigDecimal money;
+
+    /**
+     * 备注
+     */
+    @ApiModelProperty(value = "备注",required = false)
+    private String memo;
+
+    /**
+     * 报名时间
+     */
+    private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+    /**
+     * 0-未支付 1-支付中 2-支付中
+     */
+    private Integer status;
+
+    /**
+     *  是否重新支付
+     */
+    @ApiModelProperty(value = "是否重新支付",required = false)
+    private Boolean isRepay = false;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getSporadicId() {
+        return sporadicId;
+    }
+
+    public void setSporadicId(Integer sporadicId) {
+        this.sporadicId = sporadicId;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getGender() {
+        return gender;
+    }
+
+    public void setGender(String gender) {
+        this.gender = gender;
+    }
+
+    public String getIdcard() {
+        return idcard;
+    }
+
+    public void setIdcard(String idcard) {
+        this.idcard = idcard;
+    }
+
+    public String getCity() {
+        return city;
+    }
+
+    public void setCity(String city) {
+        this.city = city;
+    }
+
+    public String getSchool() {
+        return school;
+    }
+
+    public void setSchool(String school) {
+        this.school = school;
+    }
+
+    public String getSubject() {
+        return subject;
+    }
+
+    public void setSubject(String subject) {
+        this.subject = subject;
+    }
+
+    public String getTheoryLevel() {
+        return theoryLevel;
+    }
+
+    public void setTheoryLevel(String theoryLevel) {
+        this.theoryLevel = theoryLevel;
+    }
+
+    public String getMobile() {
+        return mobile;
+    }
+
+    public void setMobile(String mobile) {
+        this.mobile = mobile;
+    }
+
+    public BigDecimal getMoney() {
+        return money;
+    }
+
+    public void setMoney(BigDecimal money) {
+        this.money = money;
+    }
+
+    public String getMemo() {
+        return memo;
+    }
+
+    public void setMemo(String memo) {
+        this.memo = memo;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
+    public Boolean getIsRepay() {
+        return isRepay;
+    }
+
+    public void setIsRepay(Boolean repay) {
+        isRepay = repay;
+    }
+}

+ 13 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/DegreeRegistrationService.java

@@ -0,0 +1,13 @@
+package com.ym.mec.biz.service;
+
+import com.ym.mec.biz.dal.entity.DegreeRegistration;
+import com.ym.mec.common.service.BaseService;
+
+import java.util.Map;
+
+public interface DegreeRegistrationService extends BaseService<Integer, DegreeRegistration> {
+
+    Map pay(DegreeRegistration degreeRegistration) throws Exception;
+
+    Boolean updateStatus(Integer id , Integer status);
+}

+ 162 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/DegreeRegistrationServiceImpl.java

@@ -0,0 +1,162 @@
+package com.ym.mec.biz.service.impl;
+
+import com.ym.mec.biz.dal.dao.DegreeRegistrationDao;
+import com.ym.mec.biz.dal.dao.SporadicChargeInfoDao;
+import com.ym.mec.biz.dal.dao.SysConfigDao;
+import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.enums.DealStatusEnum;
+import com.ym.mec.biz.dal.enums.GroupType;
+import com.ym.mec.biz.dal.enums.OrderTypeEnum;
+import com.ym.mec.biz.service.DegreeRegistrationService;
+import com.ym.mec.biz.service.PayService;
+import com.ym.mec.biz.service.StudentPaymentOrderService;
+import com.ym.mec.biz.service.SysConfigService;
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.exception.BizException;
+import com.ym.mec.common.service.IdGeneratorService;
+import com.ym.mec.common.service.impl.BaseServiceImpl;
+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.math.BigDecimal;
+import java.util.*;
+
+@Service
+public class DegreeRegistrationServiceImpl extends BaseServiceImpl<Integer, DegreeRegistration> implements DegreeRegistrationService {
+
+    @Autowired
+    private DegreeRegistrationDao degreeRegistrationDao;
+
+    @Autowired
+    private SporadicChargeInfoDao sporadicChargeInfoDao;
+
+    @Autowired
+    private IdGeneratorService idGeneratorService;
+
+    @Autowired
+    private StudentPaymentOrderService studentPaymentOrderService;
+
+    @Autowired
+    private SysConfigDao sysConfigDao;
+
+    @Autowired
+    private PayService payService;
+
+    @Override
+    public BaseDAO<Integer, DegreeRegistration> getDAO() {
+        return degreeRegistrationDao;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Map pay(DegreeRegistration degreeRegistration) throws Exception {
+        Date nowDate = new Date();
+        //获取收费项价格
+        SporadicChargeInfo chargeInfo = sporadicChargeInfoDao.get(degreeRegistration.getSporadicId());
+        if (chargeInfo == null) {
+            throw new BizException("支付项不存在");
+        }
+
+        DegreeRegistration degree = degreeRegistrationDao.findByMobileAndSporadicId(degreeRegistration.getMobile(), degreeRegistration.getSporadicId());
+        if (degree == null) {
+            degreeRegistration.setMoney(chargeInfo.getAmount());
+            degreeRegistration.setStatus(1);
+            degreeRegistration.setCreateTime(nowDate);
+            degreeRegistration.setUpdateTime(nowDate);
+            degreeRegistrationDao.insert(degreeRegistration);
+        }
+        if (degree != null && !degree.getStatus().equals(2)) {
+            degreeRegistration.setId(degree.getId());
+            degreeRegistrationDao.update(degreeRegistration);
+        }
+        degreeRegistrationDao.getLock(degreeRegistration.getId());
+
+        BigDecimal amount = chargeInfo.getAmount();
+
+        OrderTypeEnum type = OrderTypeEnum.SPORADIC;
+
+        Integer userId = degreeRegistration.getId();
+        String orderNo = idGeneratorService.generatorId("payment") + "";
+        String channelType = "";
+        StudentPaymentOrder studentPaymentOrder = new StudentPaymentOrder();
+        studentPaymentOrder.setUserId(userId);
+        studentPaymentOrder.setGroupType(GroupType.SPORADIC);
+        studentPaymentOrder.setOrderNo(orderNo);
+        studentPaymentOrder.setType(type);
+        studentPaymentOrder.setExpectAmount(amount);
+        studentPaymentOrder.setActualAmount(amount);
+        studentPaymentOrder.setStatus(DealStatusEnum.ING);
+        studentPaymentOrder.setMusicGroupId(degreeRegistration.getSporadicId().toString());
+        studentPaymentOrder.setOrganId(chargeInfo.getOrganId());
+        studentPaymentOrder.setRoutingOrganId(chargeInfo.getOrganId());
+        studentPaymentOrderService.insert(studentPaymentOrder);
+        studentPaymentOrder.setVersion(0);
+
+        if (amount.compareTo(BigDecimal.ZERO) == 0) {
+            Map<String, String> notifyMap = new HashMap<>();
+            notifyMap.put("tradeState", "1");
+            notifyMap.put("merOrderNo", studentPaymentOrder.getOrderNo());
+            notifyMap.put("channelType", channelType);
+            notifyMap.put("orderNo", "");
+            studentPaymentOrderService.updateOrder(notifyMap);
+            return notifyMap;
+        }
+
+        String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
+
+        Map<String, BigDecimal> classFee = new HashMap<>();
+        classFee.put("course", BigDecimal.ZERO);
+        classFee.put("instrument", BigDecimal.ZERO);
+        classFee.put("accessories", BigDecimal.ZERO);
+        classFee.put("other", amount);
+
+        String receiver = "daya";
+        //深圳的零星缴费是在深圳
+        String sDaYaOrganIds = sysConfigDao.findConfigValue(SysConfigService.SZ_DA_YA_ORGAN_IDS);
+        if (StringUtils.isNotBlank(sDaYaOrganIds)) {
+            List<String> sDaYaOrganIdList = Arrays.asList(sDaYaOrganIds.split(","));
+            if (sDaYaOrganIdList.contains(chargeInfo.getOrganId().toString())) {
+                receiver = "sdaya";
+            }
+        }
+
+        Map payMap = payService.getPayMap(
+                amount,
+                orderNo,
+                baseApiUrl + "/api-student/studentOrder/notify",
+                baseApiUrl + "/api-student/studentOrder/paymentResult?orderNo=" + orderNo,
+                chargeInfo.getTitle(),
+                chargeInfo.getTitle(),
+                userId,
+                classFee,
+                chargeInfo.getOrganId(),
+                receiver
+        );
+
+        Map<String, BigDecimal> routingFee = (Map<String, BigDecimal>) payMap.get("routingFee");
+        studentPaymentOrder.setOrganId(chargeInfo.getOrganId());
+        studentPaymentOrder.setRoutingOrganId((Integer) payMap.get("routingOrganId"));
+        studentPaymentOrder.setComAmount(routingFee.get("COM"));
+        studentPaymentOrder.setPerAmount(routingFee.get("PER"));
+        studentPaymentOrder.setMerNos((String) payMap.get("routingMerNos"));
+        studentPaymentOrder.setPaymentChannel((String) payMap.get("type"));
+        studentPaymentOrder.setUpdateTime(nowDate);
+        studentPaymentOrderService.update(studentPaymentOrder);
+        return payMap;
+    }
+
+    @Override
+    public Boolean updateStatus(Integer id, Integer status) {
+        DegreeRegistration degree = degreeRegistrationDao.getLock(id);
+        if (degree == null || degree.getStatus().equals(2)) {
+            return true;
+        }
+        degree.setStatus(status);
+        if (degreeRegistrationDao.update(degree) <= 0) {
+            throw new BizException("更新支付状态失败");
+        }
+        return true;
+    }
+}

+ 14 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SporadicChargeInfoImpl.java

@@ -13,11 +13,9 @@ import com.ym.mec.biz.dal.entity.SysUserCashAccountDetail;
 import com.ym.mec.biz.dal.enums.DealStatusEnum;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.dal.enums.PlatformCashAccountDetailTypeEnum;
+import com.ym.mec.biz.dal.enums.SporadicChargeTypeEnum;
 import com.ym.mec.biz.dal.page.SporadicChargeInfoQueryInfo;
-import com.ym.mec.biz.service.SporadicChargeInfoService;
-import com.ym.mec.biz.service.SysMessageService;
-import com.ym.mec.biz.service.SysUserCashAccountDetailService;
-import com.ym.mec.biz.service.SysUserCashAccountService;
+import com.ym.mec.biz.service.*;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
@@ -53,6 +51,8 @@ public class SporadicChargeInfoImpl extends BaseServiceImpl<Integer, SporadicCha
     private SysUserCashAccountService sysUserCashAccountService;
     @Autowired
     private SysUserCashAccountDetailService sysUserCashAccountDetailService;
+    @Autowired
+    private DegreeRegistrationService degreeRegistrationService;
 
     @Override
     public BaseDAO<Integer, SporadicChargeInfo> getDAO() {
@@ -76,9 +76,12 @@ public class SporadicChargeInfoImpl extends BaseServiceImpl<Integer, SporadicCha
         if (studentPaymentOrder.getStatus() == DealStatusEnum.SUCCESS) {
             //福袋活动,增加课程余额
             if (info.getChargeType().getCode() == 6) {
-                sysUserCashAccountService.appendCourseBalance(userId, studentPaymentOrder.getActualAmount(),PlatformCashAccountDetailTypeEnum.SPORADIC, "活动");
+                sysUserCashAccountService.appendCourseBalance(userId, studentPaymentOrder.getActualAmount(), PlatformCashAccountDetailTypeEnum.SPORADIC, "活动");
             } else if (info.getChargeType().getCode() == 9) { //零星收费账户充值
-                sysUserCashAccountService.updateBalance(userId, studentPaymentOrder.getActualAmount(), PlatformCashAccountDetailTypeEnum.RECHARGE, "零星收费账户充值",studentPaymentOrder.getTransNo());
+                sysUserCashAccountService.updateBalance(userId, studentPaymentOrder.getActualAmount(), PlatformCashAccountDetailTypeEnum.RECHARGE, "零星收费账户充值", studentPaymentOrder.getTransNo());
+            } else if (info.getOrganId().equals(42) && info.getChargeType().equals(SporadicChargeTypeEnum.LEVEL)) {
+                degreeRegistrationService.updateStatus(studentPaymentOrder.getUserId(), 2);
+                return true;
             } else {
                 //插入交易明细
                 BigDecimal amount = studentPaymentOrder.getActualAmount();
@@ -127,6 +130,11 @@ public class SporadicChargeInfoImpl extends BaseServiceImpl<Integer, SporadicCha
             return true;
         }
         if (studentPaymentOrder.getStatus() == DealStatusEnum.CLOSE || studentPaymentOrder.getStatus() == DealStatusEnum.FAILED) {
+            if (info.getOrganId().equals(42) && info.getChargeType().equals(SporadicChargeTypeEnum.LEVEL)){
+                degreeRegistrationService.updateStatus(studentPaymentOrder.getUserId(),0);
+                return true;
+            }
+
             if (studentPaymentOrder.getBalancePaymentAmount() != null && studentPaymentOrder.getBalancePaymentAmount().compareTo(BigDecimal.ZERO) > 0) {
                 sysUserCashAccountService.updateBalance(studentPaymentOrder.getUserId(), studentPaymentOrder.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, info.getTitle() + "支付失败");
             }

+ 118 - 0
mec-biz/src/main/resources/config/mybatis/DegreeRegistrationMapper.xml

@@ -0,0 +1,118 @@
+<?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.DegreeRegistrationDao">
+  <resultMap id="DegreeRegistration" type="com.ym.mec.biz.dal.entity.DegreeRegistration">
+    <!--@mbg.generated-->
+    <!--@Table degree_registration-->
+    <id column="id_" jdbcType="INTEGER" property="id" />
+    <result column="sporadic_id_" jdbcType="INTEGER" property="sporadicId" />
+    <result column="name_" jdbcType="VARCHAR" property="name" />
+    <result column="gender_" jdbcType="VARCHAR" property="gender" />
+    <result column="idcard_" jdbcType="VARCHAR" property="idcard" />
+    <result column="city_" jdbcType="VARCHAR" property="city" />
+    <result column="school_" jdbcType="VARCHAR" property="school" />
+    <result column="subject_" jdbcType="VARCHAR" property="subject" />
+    <result column="theory_level_" jdbcType="VARCHAR" property="theoryLevel" />
+    <result column="mobile_" jdbcType="VARCHAR" property="mobile" />
+    <result column="money_" jdbcType="DECIMAL" property="money" />
+    <result column="memo_" jdbcType="VARCHAR" property="memo" />
+    <result column="create_time_" jdbcType="TIMESTAMP" property="createTime" />
+    <result column="update_time_" jdbcType="TIMESTAMP" property="updateTime" />
+    <result column="status_" jdbcType="TINYINT" property="status" />
+  </resultMap>
+
+  <select id="get" parameterType="java.lang.Integer" resultMap="DegreeRegistration">
+    select * from degree_registration where id_ = #{id,jdbcType=INTEGER}
+  </select>
+
+  <!-- 全查询 -->
+  <select id="findAll" resultMap="DegreeRegistration">
+    SELECT *
+    FROM degree_registration
+    ORDER BY id_
+  </select>
+
+  <!-- 分页查询 -->
+  <select id="queryPage" resultMap="DegreeRegistration" parameterType="map">
+    SELECT * FROM degree_registration ORDER BY id_ <include refid="global.limit"/>
+  </select>
+
+  <!-- 查询当前表的总记录数 -->
+  <select id="queryCount" resultType="int">
+    SELECT COUNT(*) FROM degree_registration
+  </select>
+
+  <delete id="delete" parameterType="java.lang.Integer">
+    delete from degree_registration
+    where id_ = #{id,jdbcType=INTEGER}
+  </delete>
+  <insert id="insert" keyColumn="id_" keyProperty="id" parameterType="com.ym.mec.biz.dal.entity.DegreeRegistration" useGeneratedKeys="true">
+    <!--@mbg.generated-->
+    insert into degree_registration (sporadic_id_, name_, gender_, 
+      idcard_, city_, school_, 
+      subject_, theory_level_, mobile_, 
+      money_, memo_, create_time_, 
+      update_time_, status_)
+    values (#{sporadicId,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, #{gender,jdbcType=VARCHAR}, 
+      #{idcard,jdbcType=VARCHAR}, #{city,jdbcType=VARCHAR}, #{school,jdbcType=VARCHAR}, 
+      #{subject,jdbcType=VARCHAR}, #{theoryLevel,jdbcType=VARCHAR}, #{mobile,jdbcType=VARCHAR}, 
+      #{money,jdbcType=DECIMAL}, #{memo,jdbcType=VARCHAR}, #{createTime,jdbcType=DATE},
+      #{updateTime,jdbcType=DATE}, #{status,jdbcType=TINYINT})
+  </insert>
+  <update id="update" parameterType="com.ym.mec.biz.dal.entity.DegreeRegistration">
+    <!--@mbg.generated-->
+    update degree_registration
+    <set>
+      <if test="sporadicId != null">
+        sporadic_id_ = #{sporadicId,jdbcType=INTEGER},
+      </if>
+      <if test="name != null">
+        name_ = #{name,jdbcType=VARCHAR},
+      </if>
+      <if test="gender != null">
+        gender_ = #{gender,jdbcType=VARCHAR},
+      </if>
+      <if test="idcard != null">
+        idcard_ = #{idcard,jdbcType=VARCHAR},
+      </if>
+      <if test="city != null">
+        city_ = #{city,jdbcType=VARCHAR},
+      </if>
+      <if test="school != null">
+        school_ = #{school,jdbcType=VARCHAR},
+      </if>
+      <if test="subject != null">
+        subject_ = #{subject,jdbcType=VARCHAR},
+      </if>
+      <if test="theoryLevel != null">
+        theory_level_ = #{theoryLevel,jdbcType=VARCHAR},
+      </if>
+      <if test="mobile != null">
+        mobile_ = #{mobile,jdbcType=VARCHAR},
+      </if>
+      <if test="money != null">
+        money_ = #{money,jdbcType=DECIMAL},
+      </if>
+      <if test="memo != null">
+        memo_ = #{memo,jdbcType=VARCHAR},
+      </if>
+      <if test="createTime != null">
+        create_time_ = #{createTime,jdbcType=DATE},
+      </if>
+      <if test="updateTime != null">
+        update_time_ = #{updateTime,jdbcType=DATE},
+      </if>
+      <if test="status != null">
+        status_ = #{status,jdbcType=TINYINT},
+      </if>
+    </set>
+    where id_ = #{id,jdbcType=INTEGER}
+  </update>
+
+  <select id="findByMobileAndSporadicId" resultMap="DegreeRegistration">
+    SELECT * FROM degree_registration WHERE mobile_ = #{mobile} AND sporadic_id_ = #{sporadicId} FOR UPDATE
+  </select>
+  <select id="getLock" resultMap="DegreeRegistration">
+    SELECT * FROM degree_registration WHERE id_ = #{id} FOR UPDATE
+  </select>
+</mapper>

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

@@ -83,7 +83,12 @@
 		SELECT sci.* FROM sporadic_charge_info sci
 		LEFT JOIN sys_user su ON su.id_ = sci.user_id_
 		<include refid="queryPageSql"/>
-		ORDER BY sci.id_ DESC
+		<if test="order != null and order != ''">
+			${order}
+		</if>
+		<if test="order == null or order == ''">
+			ORDER BY sci.id_ DESC
+		</if>
 		<include refid="global.limit" />
 	</select>
 

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

@@ -27,7 +27,7 @@ public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
 		http.csrf().disable().exceptionHandling().accessDeniedHandler(baseAccessDeniedHandler).authenticationEntryPoint(baseAuthenticationEntryPoint).and()
 				.authorizeRequests().antMatchers("/v2/api-docs","/code/*","/register/*","/studentOrder/*","/musicGroup/getSubjectGoodsAndInfo",
 				"/musicGroup/getMusicGroupStatus","/musicGroup/getOrderStatus",
-				"/musicGroup/pay","/musicGroup/rePay","/studentManage/queryStudentPer","/sporadicChargeInfo/get","/sporadicChargeInfo/sporadicPay","/repair/getRepairInfo","/repair/payRepair").permitAll().anyRequest().authenticated().and().httpBasic();
+				"/musicGroup/pay","/musicGroup/rePay","/studentManage/queryStudentPer","/sporadicChargeInfo/get","/sporadicChargeInfo/sporadicPay","/repair/getRepairInfo","/repair/payRepair","/degree/*").permitAll().anyRequest().authenticated().and().httpBasic();
 	}
 
 	@Override

+ 100 - 0
mec-student/src/main/java/com/ym/mec/student/controller/DegreeController.java

@@ -0,0 +1,100 @@
+package com.ym.mec.student.controller;
+
+
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.DegreeRegistrationDao;
+import com.ym.mec.biz.dal.dao.SporadicChargeInfoDao;
+import com.ym.mec.biz.dal.dto.SporadicPayDto;
+import com.ym.mec.biz.dal.entity.DegreeRegistration;
+import com.ym.mec.biz.dal.entity.Employee;
+import com.ym.mec.biz.dal.entity.SporadicChargeInfo;
+import com.ym.mec.biz.dal.enums.DealStatusEnum;
+import com.ym.mec.biz.dal.enums.SporadicChargeTypeEnum;
+import com.ym.mec.biz.dal.page.SporadicChargeInfoQueryInfo;
+import com.ym.mec.biz.service.DegreeRegistrationService;
+import com.ym.mec.biz.service.SporadicChargeInfoService;
+import com.ym.mec.biz.service.StudentPaymentOrderService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.exception.BizException;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+@RequestMapping("degree")
+@Api(tags = "级报名服务")
+@RestController
+public class DegreeController extends BaseController {
+
+    @Autowired
+    private StudentPaymentOrderService studentPaymentOrderService;
+
+    @Autowired
+    private DegreeRegistrationDao degreeRegistrationDao;
+
+    @Autowired
+    private DegreeRegistrationService degreeRegistrationService;
+
+    @Autowired
+    private SporadicChargeInfoDao sporadicChargeInfoDao;
+
+    @Autowired
+    private SporadicChargeInfoService sporadicChargeInfoService;
+
+
+    @ApiOperation(value = "考级报名支付")
+    @PostMapping("/pay")
+    public HttpResponseResult pay(DegreeRegistration degreeRegistration) throws Exception {
+        if (degreeRegistration == null ||
+                degreeRegistration.getSporadicId() == null ||
+                degreeRegistration.getName() == null) {
+            throw new BizException("参数校验失败");
+        }
+
+        SporadicChargeInfo info = sporadicChargeInfoDao.get(degreeRegistration.getSporadicId());
+        if (info == null || info.getDelFlag().equals(1)) {
+            return failed("报名信息不存在");
+        }
+        if (info.getOrganId() != 42 || !info.getChargeType().equals(SporadicChargeTypeEnum.LEVEL)) {
+            return failed("报名信息不存在");
+        }
+
+        DegreeRegistration degree = degreeRegistrationDao.findByMobileAndSporadicId(degreeRegistration.getMobile(), degreeRegistration.getSporadicId());
+
+        if (degree != null && degree.getStatus().equals(2)) {
+            return failed("您本次已报名,请勿重复报名");
+        }
+
+        if (!degreeRegistration.getIsRepay() && degree != null) {
+            Integer ingOrder = studentPaymentOrderService.findOrderByGroupType(degree.getId(), degreeRegistration.getSporadicId(), "SPORADIC", DealStatusEnum.ING);
+            if (ingOrder != null && ingOrder > 0) {
+                return failed(HttpStatus.CONTINUE, "您有待支付的订单");
+            }
+        }
+        Map payMap = degreeRegistrationService.pay(degreeRegistration);
+        if (payMap.containsKey("tradeState")) {
+            return failed(HttpStatus.CREATED, "恭喜您,支付成功!");
+        }
+        return succeed(payMap);
+    }
+
+
+    @ApiOperation(value = "查询收费列表")
+    @GetMapping("/queryList")
+    public HttpResponseResult queryPage(SporadicChargeInfoQueryInfo queryInfo) {
+        queryInfo.setOrganId("42");
+        queryInfo.setChargeType(SporadicChargeTypeEnum.LEVEL);
+        queryInfo.setRows(99);
+        queryInfo.setOrder("ORDER BY amount_ ASC");
+        return succeed(sporadicChargeInfoService.queryDetailPage(queryInfo));
+    }
+
+}