瀏覽代碼

增加小课续费接口

周箭河 6 年之前
父節點
當前提交
4f66ee5e36

+ 81 - 118
src/main/java/com/ym/mec/collectfee/controller/YqPayController.java

@@ -50,6 +50,9 @@ public class YqPayController extends BaseController {
     @Autowired
     private ApplyInfoService applyInfoService;
 
+    @Autowired
+    private RenewalsService renewalsService;
+
 
     /**
      * 统一下单(乐团缴费)
@@ -135,6 +138,9 @@ public class YqPayController extends BaseController {
 
         //获取分佣账户
         Account account = accountService.getAccountByBranchId(branchId);
+        if (account == null) {
+            return failed("机构没有设置收款账户");
+        }
         String routingMerNo = account.getSellerNo();
         BigDecimal HasRouting = account.getHasRouting().add(order.getAmount());
         account.setHasRouting(HasRouting);
@@ -186,123 +192,80 @@ public class YqPayController extends BaseController {
      * @return String
      * @throws Exception
      */
-    @ApiOperation(value = "续费支付", notes = "易乾支付统一下单")
+    @ApiOperation(value = "续费支付", notes = "续费支付")
     @PostMapping("/renewalsPay")
-    @Transactional
-    //applyInfoService.queryUserCourse(userId) //获取续费课程
-//    public Object renewalsPay(@ModelAttribute @Validated Renewals renewals) throws Exception {
-//        BigDecimal amount = new BigDecimal("0");
-//
-//        //课程组价格
-//        BigDecimal courseFee = courseGroupInfo.getFeeAmount();
-//        amount = amount.add(courseFee);
-//
-//        ClassPathResource classPathResource = new ClassPathResource("instruments.json");
-//
-//        BigDecimal instrumentPrice = new BigDecimal("0");//乐器价格
-//        String instrumentName = "";//乐器名称
-//
-//        //获取乐器的价格
-//        String instrumentId = order.getInstrument();
-//        String jsonString = IOUtils.toString(new InputStreamReader(classPathResource.getInputStream(), "UTF-8"));
-//        Instrument instrument = JSONObject.parseObject(jsonString, Instrument.class);
-//
-//        if (order.getInstrument() != null && !order.getInstrument().isEmpty()) {
-//            instrumentPrice = new BigDecimal(instrument.getInstruments().get(instrumentId).get("referencePrice"));
-//            instrumentName = (String) instrument.getInstruments().get(instrumentId).get("index") + "-" +
-//                    (String) instrument.getInstruments().get(instrumentId).get("name");
-//        }
-//
-//        //2 版本为3.0( 26),不收乐器费用,收押金800放乐器费用
-//        if (courseGroupInfo.getFeeType().equals("26")) {
-//            instrumentPrice = new BigDecimal("800");
-//        }
-//        amount = amount.add(instrumentPrice);
-//
-//        //辅件价格
-//        String adjunctIds = order.getAdjunct();
-//        BigDecimal adjunctPrice = new BigDecimal("0");//辅件价格
-//        String adjunctName = "";//辅件名称
-//        if (adjunctIds != null && !adjunctIds.isEmpty()) {
-//            String[] adjunctIdArr = adjunctIds.split(",");
-//            for (String adjunctId : adjunctIdArr) {
-//                adjunctPrice = adjunctPrice.add(new BigDecimal(instrument.getAuxiliaries().get(adjunctId).get("referencePrice")));
-//                adjunctName += (String) instrument.getAuxiliaries().get(adjunctId).get("name") + "|";
-//            }
-//        }
-//
-//        amount = amount.add(adjunctPrice);
-//        order.setAmount(amount);
-//        order.setRemark(instrumentName);
-//        order.setTuiFee(courseFee);
-//        order.setGoodsFee(instrumentPrice);
-//        order.setSdName(adjunctName + "教材|琴谱");
-//        order.setSdFee(adjunctPrice);
-//
-//
-//        String notifyUrl = "http://47.99.212.176:9000/yqpay/notify"; //异步通知地址
-//        String returnUrl = "http://dev.dayaedu.com";//支付后返回页面
-//        String payUrl = "https://qyfapi.95epay.com/api/api/hPay/toPayHtml";//支付跳转页
-//        String payChannels = "{\"fastpayXy\":true,\"weChatPay\":true,\"weChatPayMobile\":false,\"aliPay\":true,\"aliPayMobile\":true,\"balancePay\":false}";//支付方式配置
-//
-//        String orderNo = GenerateNum.getInstance().GenerateOrderNo(); //自己系统订单号
-//        order.setOrderNo(orderNo);
-//        order.setCreateTime(new Date()); //订单提交时间
-//        order.setStatus(1); //订单状态
-//
-//        //获取支付成功跟支付中的订单数
-//        int branchId = order.getBranchId();
-//        int payOrderNums = orderService.getPayOrderNums();
-//        //分佣账户(1、每10笔,前四笔收入私户 2、私户每个商户最多收款400万)
-//        if ((payOrderNums + 1) % 10 <= 4) { //私人账户
-//            branchId = 0;
-//        }
-//
-//        //获取分佣账户
-//        Account account = accountService.getAccountByBranchId(branchId);
-//        String routingMerNo = account.getSellerNo();
-//        BigDecimal HasRouting = account.getHasRouting().add(order.getAmount());
-//        account.setHasRouting(HasRouting);
-//
-//        Map<String, Object> routingList = new LinkedHashMap<String, Object>();
-//        routingList.put("routingMerNo", routingMerNo);//分佣账户
-//        routingList.put("routingFee", order.getAmount()); //分佣金额
-//        List<Map> tempRoutingList = new ArrayList();
-//        tempRoutingList.add(routingList);
-//
-//        order.setAccount(routingMerNo);
-//
-//        //1、插入订单
-//        orderService.insert(order);
-//        //2、修改已报名人数
-//        courseGroupInfo.setRegNum(courseGroupInfo.getRegNum() + 1);
-//        CourseGroupInfoService.upByIdAndVersion(courseGroupInfo);
-//        //3、修改分佣账户已收金额
-//        accountService.upByIdAndVersion(account);
-//
-//
-//        /*订单信息*/
-//        String orderBody = "大雅乐盟培训课程";
-//        /*订单标题*/
-//        String orderSubject = "培训订单";
-//
-//
-//        Map<String, Object> resultMap = new LinkedHashMap<String, Object>();
-//        resultMap.put("sellerNo", "0021677"); //收款商户号
-//        resultMap.put("payChannels", payChannels); //支付方式
-//        resultMap.put("orderBody", orderBody); //订单信息
-//        resultMap.put("payAmount", order.getAmount()); //支付金额
-//        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 succeed(rqMap);
-//    }
+
+    public Object renewalsPay(@ModelAttribute @Validated Renewals renewals) throws Exception {
+        renewals.setUserId(1000015);
+
+        //课程组价格
+        ArrayList<MecCourse> courses = (ArrayList<MecCourse>) applyInfoService.queryUserCourse(renewals.getUserId());//获取续费课程
+        String[] coursesIdArr = renewals.getCourses().split(",");
+        BigDecimal amount = new BigDecimal("0"); //课程总价
+        String remark = "";
+        for (int i = 0; i < courses.size(); i++) {
+            MecCourse course = courses.get(i);
+            if (Arrays.asList(coursesIdArr).contains(course.getCourseId())) {
+                BigDecimal price = course.getPrice().multiply(BigDecimal.valueOf(course.getBuyCount()));
+                amount = amount.add(price);
+                remark += course.getClassName() + "|";
+            } else {
+                courses.remove(i);
+            }
+        }
+
+        String notifyUrl = "http://47.99.212.176:9000/yqpay/notify"; //异步通知地址
+        String returnUrl = "http://dev.dayaedu.com";//支付后返回页面
+        String payUrl = "https://qyfapi.95epay.com/api/api/hPay/toPayHtml";//支付跳转页
+        String payChannels = "{\"fastpayXy\":true,\"weChatPay\":true,\"weChatPayMobile\":false,\"aliPay\":true,\"aliPayMobile\":true,\"balancePay\":false}";//支付方式配置
+
+        String orderNo = GenerateNum.getInstance().GenerateOrderNo(); //自己系统订单号
+
+        //获取支付成功跟支付中的订单数
+        int branchId = renewals.getBranchId();
+        int payOrderNums = orderService.getPayOrderNums();
+        //分佣账户(1、每10笔,前四笔收入私户 2、私户每个商户最多收款400万)
+        if ((payOrderNums + 1) % 10 <= 4) { //私人账户
+            branchId = 0;
+        }
+
+        //获取分佣账户
+        Account account = accountService.getAccountByBranchId(branchId);
+        if (account == null) {
+            return failed("机构没有设置收款账户");
+        }
+        String routingMerNo = account.getSellerNo();
+        BigDecimal HasRouting = account.getHasRouting().add(amount);
+        account.setHasRouting(HasRouting);
+
+        Map<String, Object> routingList = new LinkedHashMap<String, Object>();
+        routingList.put("routingMerNo", routingMerNo);//分佣账户
+        routingList.put("routingFee", amount); //分佣金额
+        List<Map> tempRoutingList = new ArrayList();
+        tempRoutingList.add(routingList);
+
+        renewalsService.addRenewalsOrder(renewals, amount, orderNo, courses, routingMerNo, remark);
+
+        /*订单信息*/
+        String orderBody = "大雅乐盟培训课程";
+        /*订单标题*/
+        String orderSubject = "培训订单";
+
+        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 succeed(rqMap);
+    }
 
     /**
      * 交易查询
@@ -447,12 +410,12 @@ public class YqPayController extends BaseController {
         //支付中订单存在,更新状态
         if (order != null && msg.getResponseType().equals("1")) {
             //更新订单状态
-            int status = msg.getCode().equals("88") ? 0 : 2;
+            int status = msg.getCode().equals("88") ? 2 : 0;
             order.setStatus(status);
             if (order.getOrderNo().isEmpty()) {
                 order.setPayId(notifyMsg.getOrderNo()); //更新易乾付订单号
             }
-            if (status == 0) {
+            if (status == 2) {
                 order.setPay(notifyMsg.getPayAmount());
                 order.setPayTime(new Date());
             }

+ 5 - 1
src/main/java/com/ym/mec/collectfee/dao/RenewalsDao.java

@@ -3,10 +3,14 @@ package com.ym.mec.collectfee.dao;
 
 import com.ym.mec.collectfee.common.dao.BaseDAO;
 import com.ym.mec.collectfee.entity.Renewals;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Component;
 
+import java.util.ArrayList;
+
 @Component
 public interface RenewalsDao extends BaseDAO<Integer, Renewals> {
 
-	
+    public void renewalsInsert(@Param("renewalses") ArrayList<Renewals> renewalsArrayList);
+
 }

+ 31 - 8
src/main/java/com/ym/mec/collectfee/entity/Renewals.java

@@ -17,7 +17,7 @@ public class Renewals {
 	private Integer userId;
 	
 	/** 乐团id */
-	@ApiModelProperty(name = "classId", value = "乐团id",required = true)
+	@ApiModelProperty(name = "classId", value = "乐团id",hidden = true)
 	private Integer classId;
 
 	/** 分部id */
@@ -25,28 +25,36 @@ public class Renewals {
 	private Integer branchId;
 	
 	/** 支付方式 */
-	@ApiModelProperty(name = "way", value = "支付方式",required = true)
+	@ApiModelProperty(name = "way", value = "支付方式",hidden = true)
 	private Integer way;
 	
 	/** 支付金额 */
-	@ApiModelProperty(name = "pay", value = "支付金额",required = true)
+	@ApiModelProperty(name = "pay", value = "支付金额",hidden = true)
 	private java.math.BigDecimal pay;
 	
 	/** 收费方式 */
-	@ApiModelProperty(name = "changeMode", value = "收费方式",required = true)
+	@ApiModelProperty(name = "changeMode", value = "收费方式",hidden = true)
 	private Integer changeMode;
 	
 	/** 学费单价 */
-	@ApiModelProperty(name = "price", value = "学费单价",required = true)
+	@ApiModelProperty(name = "price", value = "学费单价",hidden = true)
 	private java.math.BigDecimal price;
-	
+
+	/** 课程id */
+	@ApiModelProperty(name = "courseId", value = "课程id",hidden = true)
+	private Integer courseId;
+
 	/** 购买数量 */
-	@ApiModelProperty(name = "buy", value = "购买数量",required = true)
+	@ApiModelProperty(name = "buy", value = "购买数量",hidden = true)
 	private Integer buy;
 	
 	/** 订单号 */
-	@ApiModelProperty(name = "buy", value = "订单号")
+	@ApiModelProperty(name = "orderId", value = "订单号",hidden = true)
 	private Integer orderId;
+
+	/** 订单号 */
+	@ApiModelProperty(name = "buy", value = "购买课程,100012,100098",required = true)
+	private String courses;
 	
 	public void setId(Integer id){
 		this.id = id;
@@ -133,4 +141,19 @@ public class Renewals {
 		return ToStringBuilder.reflectionToString(this);
 	}
 
+	public String getCourses() {
+		return courses;
+	}
+
+	public void setCourses(String courses) {
+		this.courses = courses;
+	}
+
+	public Integer getCourseId() {
+		return courseId;
+	}
+
+	public void setCourseId(Integer courseId) {
+		this.courseId = courseId;
+	}
 }

+ 14 - 1
src/main/java/com/ym/mec/collectfee/service/RenewalsService.java

@@ -1,10 +1,23 @@
 package com.ym.mec.collectfee.service;
 
-import java.util.List;
+import java.math.BigDecimal;
+import java.util.ArrayList;
 
 import com.ym.mec.collectfee.common.service.BaseService;
+import com.ym.mec.collectfee.entity.MecCourse;
+import com.ym.mec.collectfee.entity.Order;
 import com.ym.mec.collectfee.entity.Renewals;
 
 public interface RenewalsService extends BaseService<Integer, Renewals> {
 
+    /**
+     * 生成续费的订单
+     * @param orderNo
+     * @param mecCourses
+     * @return
+     */
+    Order addRenewalsOrder(Renewals renewals,BigDecimal amount, String orderNo, ArrayList<MecCourse> mecCourses, String routingMerNo,String remark);
+
+    void renewalsInsert(ArrayList<Renewals> renewalsArrayList);
+
 }

+ 80 - 9
src/main/java/com/ym/mec/collectfee/service/impl/RenewalsServiceImpl.java

@@ -4,20 +4,91 @@ package com.ym.mec.collectfee.service.impl;
 import com.ym.mec.collectfee.common.dao.BaseDAO;
 import com.ym.mec.collectfee.common.service.impl.BaseServiceImpl;
 import com.ym.mec.collectfee.dao.RenewalsDao;
+import com.ym.mec.collectfee.entity.Account;
+import com.ym.mec.collectfee.entity.MecCourse;
+import com.ym.mec.collectfee.entity.Order;
 import com.ym.mec.collectfee.entity.Renewals;
+import com.ym.mec.collectfee.service.AccountService;
+import com.ym.mec.collectfee.service.CourseGroupInfoService;
+import com.ym.mec.collectfee.service.OrderService;
 import com.ym.mec.collectfee.service.RenewalsService;
 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.ArrayList;
+import java.util.Date;
 
 @Service
 public class RenewalsServiceImpl extends BaseServiceImpl<Integer, Renewals> implements RenewalsService {
-	
-	@Autowired
-	private RenewalsDao renewalsDao;
-
-	@Override
-	public BaseDAO<Integer, Renewals> getDAO() {
-		return renewalsDao;
-	}
-	
+
+    @Autowired
+    private RenewalsDao renewalsDao;
+
+    @Autowired
+    private OrderService orderService;
+    @Autowired
+    private RenewalsService renewalsService;
+    @Autowired
+    private AccountService accountService;
+
+    @Override
+    public BaseDAO<Integer, Renewals> getDAO() {
+        return renewalsDao;
+    }
+
+    @Override
+    public void renewalsInsert(ArrayList<Renewals> renewalsArrayList) {
+        renewalsDao.renewalsInsert(renewalsArrayList);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Order addRenewalsOrder(Renewals renewals, BigDecimal amount, String orderNo, ArrayList<MecCourse> mecCourses, String routingMerNo, String remark) {
+
+        Order order = new Order();
+        order.setBranchId(renewals.getBranchId());
+        order.setUserId(renewals.getUserId());
+        order.setOrderNo(orderNo);
+        order.setAmount(amount);
+        order.setAccount(routingMerNo);
+        order.setRemark(remark);
+        order.setClassId(renewals.getClassId());
+        order.setStatus(1);
+        order.setCreateTime(new Date());
+
+        //1、插入订单
+        int id = (int) orderService.insert(order);
+
+        ArrayList<Renewals> renewalsArrayList = new ArrayList<>();
+
+        for (int i = 0; i < mecCourses.size(); i++) {
+            MecCourse course = mecCourses.get(i);
+            Renewals rws = new Renewals();
+            rws.setUserId(course.getStudentId());
+            rws.setBranchId(renewals.getBranchId());
+            rws.setClassId(course.getClassId());
+            rws.setCourseId(course.getCourseId());
+            rws.setWay(30);
+            rws.setPay(course.getPrice());
+            rws.setChangeMode(course.getChargeMode());
+            rws.setPrice(course.getPrice());
+            rws.setBuy(course.getBuyCount());
+            rws.setOrderId(id);
+            renewalsArrayList.add(rws);
+        }
+
+        //2、添加
+        renewalsService.renewalsInsert(renewalsArrayList);
+        //3、修改分佣账户已收金额
+        //获取分佣账户
+        Account account = accountService.getAccountByBranchId(renewals.getBranchId());
+        BigDecimal HasRouting = account.getHasRouting().add(amount);
+        account.setHasRouting(HasRouting);
+        accountService.upByIdAndVersion(account);
+        return order;
+    }
+
+
 }

+ 8 - 0
src/main/resources/config/mybatis/RenewalsMapper.xml

@@ -9,6 +9,7 @@
 	<resultMap type="com.ym.mec.collectfee.entity.Renewals" id="Renewals">
 		<result column="id" property="id" />
 		<result column="user_id" property="userId" />
+		<result column="branch_id" property="branchId" />
 		<result column="class_id" property="classId" />
 		<result column="way" property="way" />
 		<result column="pay" property="pay" />
@@ -58,4 +59,11 @@
 	<select id="queryCount" resultType="int">
 		SELECT COUNT(*) FROM renewals
 	</select>
+
+	<insert id="renewalsInsert" parameterType="java.util.ArrayList">
+		INSERT INTO `renewals` (id,user_id,branch_id,class_id,course_id,way,pay,change_mode,price,buy,order_id) VALUES
+		<foreach collection="renewalses" item="item" index="index" separator=",">
+			(#{item.id},#{item.userId},#{item.branchId},#{item.classId},#{item.courseId},#{item.way},#{item.pay},#{item.changeMode},#{item.price},#{item.buy},#{item.orderId})
+		</foreach>
+	</insert>
 </mapper>