소스 검색

Merge branch 'master' of http://git.dayaedu.com/yonge/collect_fee

zouxuan 5 년 전
부모
커밋
2759098246

+ 51 - 39
src/main/java/com/ym/mec/collectfee/controller/YqPayController.java

@@ -1,7 +1,10 @@
 package com.ym.mec.collectfee.controller;
 
 import com.alibaba.fastjson.JSON;
+import com.ym.mec.collectfee.common.web.BaseController;
+import com.ym.mec.collectfee.entity.Account;
 import com.ym.mec.collectfee.entity.Order;
+import com.ym.mec.collectfee.service.AccountService;
 import com.ym.mec.collectfee.service.OrderService;
 import com.ym.mec.collectfee.service.YqPayService;
 import com.ym.mec.collectfee.service.YqQueryService;
@@ -12,6 +15,7 @@ import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.ModelAttribute;
@@ -20,16 +24,14 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 import springfox.documentation.annotations.ApiIgnore;
 
-import java.util.Date;
-import java.util.LinkedHashMap;
-import java.util.Map;
+import java.math.BigDecimal;
+import java.util.*;
 
-@Api(description = "支付")
+@Api("支付")
 @Slf4j
 @RestController
-@RequestMapping("yqPay")
-@ApiIgnore
-public class YqPayController {
+@RequestMapping("yqpay")
+public class YqPayController extends BaseController {
 
     @Autowired
     @Lazy
@@ -39,6 +41,8 @@ public class YqPayController {
     private YqQueryService yqQueryService;
     @Autowired
     private OrderService orderService;
+    @Autowired
+    private AccountService accountService;
 
 
     /**
@@ -50,51 +54,56 @@ public class YqPayController {
     @ApiOperation(value = "提交支付", notes = "易乾支付统一下单")
     @PostMapping("/toPay")
     @Transactional
-    public Msg toPay(@ModelAttribute @Validated Order order) throws Exception {
-        String orderNo = GenerateNum.getInstance().GenerateOrderNo();
+    public Map toPay(@ModelAttribute @Validated Order order) throws Exception {
+
+        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);
+        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();
+
+        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);
 
-        /*卖家双乾商户号*/
-        String sellerNo = "0022652"; //某笔定义到某个商户
-        order.setAccount(sellerNo);
-        Long id = orderService.insert(order);
         /*订单信息*/
         String orderBody = "大雅乐盟培训课程";
         /*订单标题*/
         String orderSubject = "培训订单";
-        /*商品列表信息*/
-        String goodsDetail = "";
 
-        String notifyUrl = "http://47.99.212.176:9000/yqpay/notify";
-        String returnUrl = "http://47.99.212.176:9000/yqpay/notify";//前台页面通知地址(银联H5必填)
 
         Map<String, Object> resultMap = new LinkedHashMap<String, Object>();
-        resultMap.put("sellerNo", sellerNo); //收款商户号
-        resultMap.put("payChannels", order.getBank()); //支付方式(支付渠道)
+        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); //前台页面通知地址(银联H5必填)
-        resultMap.put("mchAppId", returnUrl); //填网站首页地址(银联H5必填)
-        resultMap.put("mchAppName", returnUrl); //传wap网站名(银联H5必填)
-        resultMap.put("deviceInfo", "AND_WAP"); //设置信息(银联H5必填)
-        resultMap.put("clientIp", "27.18.213.149"); //客户端ip地址(银联H5必填)
-        resultMap.put("goodsDetail", goodsDetail);
-        Map<String, Object> requestMap = new YqPayUtil(notifyUrl, resultMap).getRequestMap();
-        Msg msg = yqPayService.toPay(requestMap);
-        if (!msg.getResponseParameters().isEmpty()) {
-            RspMsg rspMsg = JSON.parseObject(msg.getResponseParameters(), RspMsg.class);
-            String merOrderNo = rspMsg.getMerOrderNo();
-            order.setId(id.intValue());
-            order.setPayId(merOrderNo); //乾易付订单号
-            orderService.update(order);
-        }
-        return msg;
+        resultMap.put("returnUrl", returnUrl); //前台页面地址
+        resultMap.put("tempRoutingList", JSON.toJSONString(tempRoutingList));//分账设置
+        Map rqMap = new YqPayUtil(notifyUrl, resultMap).getRequestMap();
+        rqMap.put("host", payUrl);
+        return rqMap;
     }
 
     /**
@@ -104,7 +113,8 @@ public class YqPayController {
      * @return
      * @throws Exception
      */
-    @PostMapping("/query")
+    //@PostMapping("/query")
+    //@Scheduled(cron = "0/3 40 11 * * ?")
     public String query(String merOrderNoList) throws Exception {
         String notifyUrl = ""; //回调地址
         Map<String, Object> resultMap = new LinkedHashMap<>();
@@ -167,6 +177,7 @@ public class YqPayController {
 
     /**
      * 提现短信
+     *
      * @return
      * @throws Exception
      */
@@ -187,6 +198,7 @@ public class YqPayController {
 
     /**
      * 提现
+     *
      * @return
      * @throws Exception
      */
@@ -242,7 +254,7 @@ public class YqPayController {
             if (order.getOrderNo().isEmpty()) {
                 order.setPayId(notifyMsg.getOrderNo()); //更新易乾付订单号
             }
-            if(status == 0){
+            if (status == 0) {
                 order.setPay(notifyMsg.getPayAmount());
                 order.setPayTime(new Date());
             }

+ 58 - 2
src/main/java/com/ym/mec/collectfee/controller/YqRegController.java

@@ -1,21 +1,32 @@
 package com.ym.mec.collectfee.controller;
 
+import com.alibaba.fastjson.JSON;
+import com.ym.mec.collectfee.entity.Order;
+import com.ym.mec.collectfee.service.OrderService;
 import com.ym.mec.collectfee.utils.GenerateNum;
 import com.ym.mec.collectfee.utils.yqpay.YqPayUtil;
+import org.apache.http.impl.auth.GGSSchemeBase;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.ModelMap;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import springfox.documentation.annotations.ApiIgnore;
 
-import java.util.LinkedHashMap;
-import java.util.Map;
+import java.math.BigDecimal;
+import java.util.*;
 
 @ApiIgnore
 @Controller
 @RequestMapping("yqreg")
 public class YqRegController {
 
+    @Autowired
+    private OrderService orderService;
+
     /**
      * 用户(商户)注册
      *
@@ -75,4 +86,49 @@ public class YqRegController {
         return "/reg/register";
     }
 
+    @RequestMapping("/topay")
+    public String toPay(ModelMap map) throws Exception {
+
+        String orderNo = GenerateNum.getInstance().GenerateOrderNo();
+        Order order = new Order();
+        order.setOrderNo(orderNo);
+        order.setCreateTime(new Date());
+        order.setStatus(1);
+        order.setAmount(new BigDecimal(3));
+
+        /*卖家双乾商户号*/
+        String sellerNo = "0021677"; //大雅主体商户号
+        order.setAccount(sellerNo);
+        /*订单信息*/
+        String orderBody = "大雅乐盟培训课程";
+        /*订单标题*/
+        String orderSubject = "培训订单";
+
+        String notifyUrl = "http://47.99.212.176:9000/yqpay/notify";
+        String returnUrl = "http://dev.dayaedu.com";//前台页面通知地址(银联H5必填)
+        String payChannels = "{\"fastpayXy\":true,\"weChatPay\":true,\"weChatPayMobile\":false,\"aliPay\":true,\"aliPayMobile\":true,\"balancePay\":false}";
+
+
+        Map<String, Object> routingList = new LinkedHashMap<String, Object>();
+        routingList.put("routingMerNo", "0022652"); //分佣账户
+        routingList.put("routingFee", "0.1"); //分佣金额
+        List<Map> tempRoutingList = new ArrayList();
+        tempRoutingList.add(routingList);
+
+        Map<String, Object> resultMap = new LinkedHashMap<String, Object>();
+        resultMap.put("sellerNo", sellerNo); //收款商户号
+        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();
+        map.put("info", rqMap);
+        return "/reg/order";
+    }
+
 }

+ 13 - 0
src/main/java/com/ym/mec/collectfee/dao/AccountDao.java

@@ -0,0 +1,13 @@
+package com.ym.mec.collectfee.dao;
+
+import com.ym.mec.collectfee.common.dao.BaseDAO;
+import com.ym.mec.collectfee.entity.Account;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Component;
+
+@Component
+public interface AccountDao extends BaseDAO<Integer, Account> {
+
+    Account getAccountByBranchId(@Param("branchId") int branchId);
+	
+}

+ 2 - 0
src/main/java/com/ym/mec/collectfee/dao/OrderDao.java

@@ -18,4 +18,6 @@ public interface OrderDao extends BaseDAO<Integer, Order> {
     Order getOrderByOrderNo(@Param("orderNo") String orderNo);
 
     Order findOrderByStatus(@Param("userId") Integer userId,@Param("status") Integer status);
+
+    int getPayOrderNums();
 }

+ 70 - 0
src/main/java/com/ym/mec/collectfee/entity/Account.java

@@ -0,0 +1,70 @@
+package com.ym.mec.collectfee.entity;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+/**
+ * 对应数据库表(account):
+ */
+public class Account {
+
+	/** id */
+	private Integer id;
+	
+	/** 分部id 为个人用户 */
+	private Integer branchId;
+	
+	/** 收款账户 */
+	private String sellerNo;
+	
+	/** 最大收款金额 */
+	private java.math.BigDecimal maxRouting;
+	
+	/** 已收金额 */
+	private java.math.BigDecimal hasRouting;
+	
+	public void setId(Integer id){
+		this.id = id;
+	}
+	
+	public Integer getId(){
+		return this.id;
+	}
+			
+	public void setBranchId(Integer branchId){
+		this.branchId = branchId;
+	}
+	
+	public Integer getBranchId(){
+		return this.branchId;
+	}
+			
+	public void setSellerNo(String sellerNo){
+		this.sellerNo = sellerNo;
+	}
+	
+	public String getSellerNo(){
+		return this.sellerNo;
+	}
+			
+	public void setMaxRouting(java.math.BigDecimal maxRouting){
+		this.maxRouting = maxRouting;
+	}
+	
+	public java.math.BigDecimal getMaxRouting(){
+		return this.maxRouting;
+	}
+			
+	public void setHasRouting(java.math.BigDecimal hasRouting){
+		this.hasRouting = hasRouting;
+	}
+	
+	public java.math.BigDecimal getHasRouting(){
+		return this.hasRouting;
+	}
+			
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
+
+}

+ 121 - 39
src/main/java/com/ym/mec/collectfee/entity/Order.java

@@ -14,63 +14,106 @@ import java.util.Date;
 public class Order {
 
 	/**  */
-	@ApiModelProperty(hidden = true)
+	@ApiModelProperty(name = "id", value = "主键", hidden = true)
 	private Integer id;
-	
+
 	/** 订单号。订单流水号 */
+	@ApiModelProperty(name = "oid", value = "mec订单号(废弃)", hidden = true)
 	private Integer oid;
 
+	/** 订单号。订单流水号 */
+	@ApiModelProperty(name = "branchId", value = "分部id", hidden = false)
+	private Integer branchId;
+
 	/**自己系统订单号 */
+	@ApiModelProperty(name = "orderNo", value = "系统订单号", hidden = true)
 	private String orderNo;
-	
+
 	/** 学员的用户编号 */
+	@ApiModelProperty(name = "userId", value = "学员编号",required = true)
 	private Integer userId;
-	
+
 	/** 订单总金额(分) */
+	@ApiModelProperty(name = "amount", value = "订单总金额",required = true)
 	private BigDecimal amount;
-	
+
 	/** 支付成功金额(分)。本次在线支付(充值)的金额,该金额通常应该等于订单总金额;如果该金额少于订单总金额,则自动使用学员账户余额补足订单总金额;该金额不能大于订单总金额 */
+	@ApiModelProperty(name = "pay", value = "支付成功金额",hidden = true)
 	private BigDecimal pay;
-	
+
 	/** 在线支付平台 */
+	@ApiModelProperty(name = "bank", value = "支付平台",hidden = true)
 	private String bank;
-	
+
 	/** 公司收款帐号。本次接收学员款项的公司在线支付平台(支付宝、微信等)账户号 */
+	@ApiModelProperty(name = "account", value = "公司收款账号",hidden = true)
 	private String account;
-	
+
 	/** 学员付款帐号。本次在线支付学员使用的支付宝或微信账户号。银行卡支付可为空。 */
+	@ApiModelProperty(name = "uAccount", value = "学院付款账号",hidden = true)
 	private String uAccount;
-	
+
 	/** 支付流水号或代理商订单号。银行/在线支付平台生成的支付流水号或代理商生成的订单号(必须唯一不重复) */
+	@ApiModelProperty(name = "payId", value = "支付平台流水号",hidden = true)
 	private String payId;
-	
+
 	/** 支付到帐时间 */
+	@ApiModelProperty(name = "payTime", value = "支付到账时间",hidden = true)
 	private Date payTime;
-	
+
 	/** 交易订单明细 */
+	@ApiModelProperty(name = "remark", value = "订单明细",hidden = true)
 	private String remark;
-	
+
 	/** 小课编号 */
+	@ApiModelProperty(name = "classId", value = "小课编号")
 	private Integer classId;
-	
+
 	/** 支付状态,0成功,1支付中,2失败 */
+	@ApiModelProperty(name = "status", value = "支付状态",hidden = true)
 	private Integer status;
-	
+
 	/** 创建时间 */
+	@ApiModelProperty(name = "createTime", value = "创建时间",hidden = true)
 	private Date createTime;
-	
+
 	/** 乐团名称 */
+	@ApiModelProperty(name = "poName", value = "乐团名称")
 	private String poName;
-	
+
+	/** 课程组信息 */
+	@ApiModelProperty(name = "courseId", value = "课程组id",required = true)
+	private String courseId;
+
 	/** 声部 */
+	@ApiModelProperty(name = "voicyPart", value = "声部")
 	private String voicyPart;
-	
+
 	/** 账户扣款金额 */
+	@ApiModelProperty(name = "balance", value = "账号扣款金额",hidden = true)
 	private BigDecimal balance;
-	
+
 	/** 批次号 */
+	@ApiModelProperty(name = "batchNum", value = "批次号",hidden = true)
 	private String batchNum;
 
+	/** 课程 */
+	@ApiModelProperty(name = "course", value = "课程内容-价格(以json内容)",required = true)
+	private String course;
+
+	/** 乐器 */
+	@ApiModelProperty(name = "musicalInstruments", value = "乐器-价格(以json内容)")
+	private String musicalInstruments;
+
+	/** 辅件 */
+	@ApiModelProperty(name = "adjunct", value = "辅件-价格json(以json内容)")
+	private String adjunct;
+
+	/** 其他 */
+	@ApiModelProperty(name = "other", value = "其他-价格json(以json内容)")
+	private String other;
+
+
 	//学费金额(元)。本次缴纳的学费金额。
 	private BigDecimal tuiFee;
 
@@ -174,79 +217,79 @@ public class Order {
 	public void setAccount(String account){
 		this.account = account;
 	}
-	
+
 	public String getAccount(){
 		return this.account;
 	}
-			
+
 	public void setUAccount(String uAccount){
 		this.uAccount = uAccount;
 	}
-	
+
 	public String getUAccount(){
 		return this.uAccount;
 	}
-			
+
 	public void setPayId(String payId){
 		this.payId = payId;
 	}
-	
+
 	public String getPayId(){
 		return this.payId;
 	}
-			
+
 	public void setPayTime(java.util.Date payTime){
 		this.payTime = payTime;
 	}
-	
+
 	public java.util.Date getPayTime(){
 		return this.payTime;
 	}
-			
+
 	public void setRemark(String remark){
 		this.remark = remark;
 	}
-	
+
 	public String getRemark(){
 		return this.remark;
 	}
-			
+
 	public void setClassId(Integer classId){
 		this.classId = classId;
 	}
-	
+
 	public Integer getClassId(){
 		return this.classId;
 	}
-			
+
 	public void setStatus(Integer status){
 		this.status = status;
 	}
-	
+
 	public Integer getStatus(){
 		return this.status;
 	}
-			
+
 	public void setCreateTime(java.util.Date createTime){
 		this.createTime = createTime;
 	}
-	
+
 	public java.util.Date getCreateTime(){
 		return this.createTime;
 	}
-			
+
 	public void setPoName(String poName){
 		this.poName = poName;
 	}
-	
+
 	public String getPoName(){
 		return this.poName;
 	}
-			
+
 	public void setVoicyPart(String voicyPart){
 		this.voicyPart = voicyPart;
 	}
-	
+
 	public String getVoicyPart(){
 		return this.voicyPart;
 	}
@@ -262,7 +305,7 @@ public class Order {
 	public void setBatchNum(String batchNum){
 		this.batchNum = batchNum;
 	}
-	
+
 	public String getBatchNum(){
 		return this.batchNum;
 	}
@@ -275,10 +318,49 @@ public class Order {
 	public void setOrderNo(String orderNo) {
 		this.orderNo = orderNo;
 	}
-			
+
+	public String getCourse() {
+		return course;
+	}
+
+	public void setCourse(String course) {
+		this.course = course;
+	}
+
+	public String getMusicalInstruments() {
+		return musicalInstruments;
+	}
+
+	public void setMusicalInstruments(String musicalInstruments) {
+		this.musicalInstruments = musicalInstruments;
+	}
+
+	public String getAdjunct() {
+		return adjunct;
+	}
+
+	public void setAdjunct(String adjunct) {
+		this.adjunct = adjunct;
+	}
+
+	public String getOther() {
+		return other;
+	}
+
+	public void setOther(String other) {
+		this.other = other;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);
 	}
 
+	public Integer getBranchId() {
+		return branchId;
+	}
+
+	public void setBranchId(Integer branchId) {
+		this.branchId = branchId;
+	}
 }

+ 15 - 0
src/main/java/com/ym/mec/collectfee/service/AccountService.java

@@ -0,0 +1,15 @@
+package com.ym.mec.collectfee.service;
+
+import com.ym.mec.collectfee.common.service.BaseService;
+import com.ym.mec.collectfee.entity.Account;
+import com.ym.mec.collectfee.entity.Order;
+
+public interface AccountService extends BaseService<Integer, Account> {
+
+    /**
+     * 根据分部id获取收款账户信息
+     * @param branchId 分部id
+     * @return
+     */
+    Account getAccountByBranchId(int branchId);
+}

+ 7 - 2
src/main/java/com/ym/mec/collectfee/service/OrderService.java

@@ -2,7 +2,6 @@ package com.ym.mec.collectfee.service;
 
 import com.ym.mec.collectfee.common.service.BaseService;
 import com.ym.mec.collectfee.entity.Order;
-import com.ym.mec.collectfee.entity.ResponseCourseEntity;
 
 import javax.xml.bind.JAXBException;
 import java.util.List;
@@ -41,9 +40,15 @@ public interface OrderService extends BaseService<Integer, Order> {
 
     /**
      * 根据乐团编号获取乐团信息
-     * @param clazzId
+     * @param schoolId
      * @return
      */
     Object getSchoolDetail(Integer schoolId,Integer clazzId);
 
+
+    /**
+     * 获取支付中和成功的订单数
+     * @return
+     */
+    int getPayOrderNums();
 }

+ 26 - 0
src/main/java/com/ym/mec/collectfee/service/impl/AccountServiceImpl.java

@@ -0,0 +1,26 @@
+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 org.springframework.beans.factory.annotation.Autowired;
+import com.ym.mec.collectfee.entity.Account;
+import com.ym.mec.collectfee.service.AccountService;
+import com.ym.mec.collectfee.dao.AccountDao;
+import org.springframework.stereotype.Service;
+
+@Service
+public class AccountServiceImpl extends BaseServiceImpl<Integer, Account> implements AccountService {
+
+	@Autowired
+	AccountDao accountDao;
+
+	@Override
+	public BaseDAO<Integer, Account> getDAO() {
+		return accountDao;
+	}
+
+	public Account getAccountByBranchId(int branchId){
+		return accountDao.getAccountByBranchId(branchId);
+	}
+	
+}

+ 9 - 6
src/main/java/com/ym/mec/collectfee/service/impl/OrderServiceImpl.java

@@ -4,10 +4,7 @@ import com.thoughtworks.xstream.XStream;
 import com.ym.mec.collectfee.common.dao.BaseDAO;
 import com.ym.mec.collectfee.common.service.impl.BaseServiceImpl;
 import com.ym.mec.collectfee.dao.OrderDao;
-import com.ym.mec.collectfee.entity.Order;
-import com.ym.mec.collectfee.entity.Orders;
-import com.ym.mec.collectfee.entity.RequestParamBean;
-import com.ym.mec.collectfee.entity.ResponseCourseEntity;
+import com.ym.mec.collectfee.entity.*;
 import com.ym.mec.collectfee.service.CourseGroupInfoService;
 import com.ym.mec.collectfee.service.OrderService;
 import com.ym.mec.collectfee.service.SchoolService;
@@ -16,14 +13,16 @@ import com.ym.mec.collectfee.utils.XStreamUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
+
 import java.io.StringWriter;
 import java.io.Writer;
 import java.util.Base64;
+import java.util.Date;
 import java.util.List;
 
 @Service
 public class OrderServiceImpl extends BaseServiceImpl<Integer, Order> implements OrderService {
-	
+
 	@Autowired
 	private OrderDao orderDao;
 	@Autowired
@@ -114,10 +113,14 @@ public class OrderServiceImpl extends BaseServiceImpl<Integer, Order> implements
 		return null;
 	}
 
-
 	public String parseBody(String body){
 		body = body.substring(body.indexOf("<body>")+6,body.indexOf("</body>"));
 		return "<body><courses>" + new String(Base64.getDecoder().decode(body)) + "</courses></body>";
 	}
 
+	@Override
+	public int getPayOrderNums() {
+		return orderDao.getPayOrderNums();
+	}
+
 }

+ 61 - 0
src/main/resources/config/mybatis/AccountMapper.xml

@@ -0,0 +1,61 @@
+<?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.collectfee.dao.AccountDao">
+	
+	<resultMap type="com.ym.mec.collectfee.entity.Account" id="Account">
+		<result column="id" property="id" />
+		<result column="branch_id" property="branchId" />
+		<result column="seller_no" property="sellerNo" />
+		<result column="max_routing" property="maxRouting" />
+		<result column="has_routing" property="hasRouting" />
+	</resultMap>
+	
+	<!-- 根据主键查询一条记录 -->
+	<select id="get" resultMap="Account" >
+		SELECT * FROM `account` WHERE id = #{id} 
+	</select>
+	
+	<!-- 全查询 -->
+	<select id="findAll" resultMap="Account">
+		SELECT * FROM `account` ORDER BY id
+	</select>
+	
+	<!-- 向数据库增加一条记录 -->
+	<insert id="insert" parameterType="com.ym.mec.collectfee.entity.Account" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+		<!--
+		<selectKey resultClass="int" keyProperty="id" > 
+		SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL 
+		</selectKey>
+		-->
+		INSERT INTO `account` (id,branch_id,seller_no,max_routing,has_routing) VALUES(#{id},#{branchId},#{sellerNo},#{maxRouting},#{hasRouting})
+	</insert>
+	
+	<!-- 根据主键查询一条记录 -->
+	<update id="update" parameterType="com.ym.mec.collectfee.entity.Account">
+		UPDATE `account` SET has_routing = #{hasRouting},seller_no = #{sellerNo},max_routing = #{maxRouting},branch_id = #{branchId},id = #{id} WHERE id = #{id} 
+	</update>
+	
+	<!-- 根据主键删除一条记录 -->
+	<delete id="delete" >
+		DELETE FROM `account` WHERE id = #{id} 
+	</delete>
+	
+	<!-- 分页查询 -->
+	<select id="queryPage" resultMap="Account" parameterType="map">
+		SELECT * FROM `account` ORDER BY id <include refid="global.limit"/>
+	</select>
+	
+	<!-- 查询当前表的总记录数 -->
+	<select id="queryCount" resultType="int">
+		SELECT COUNT(*) FROM `account`
+	</select>
+
+	<!-- 根据分部id获取分部收款账户 -->
+	<select id="getAccountByBranchId" resultMap="Account" >
+		SELECT * FROM `account` WHERE branch_id = #{branchId} AND `max_routing` > `has_routing` ORDER BY `id` ASC LIMIT 1
+	</select>
+</mapper>

+ 16 - 11
src/main/resources/config/mybatis/OrderMapper.xml

@@ -9,6 +9,7 @@
 	<resultMap type="com.ym.mec.collectfee.entity.Order" id="Order">
 		<result column="id" property="id" />
 		<result column="oid" property="oid" />
+		<result column="branch_id" property="branchId" />
 		<result column="order_no" property="orderNo" />
 		<result column="user_id" property="userId" />
 		<result column="amount" property="amount" />
@@ -31,43 +32,43 @@
 		<result column="sd_name" property="sdName" />
 		<result column="sd_fee" property="sdFee" />
 	</resultMap>
-	
+
 	<!-- 根据主键查询一条记录 -->
 	<select id="get" resultMap="Order" >
 		SELECT * FROM `order` WHERE id = #{id}
 	</select>
-	
+
 	<!-- 全查询 -->
 	<select id="findAll" resultMap="Order">
 		SELECT * FROM `order` ORDER BY id
 	</select>
-	
+
 	<!-- 向数据库增加一条记录 -->
 	<insert id="insert" parameterType="com.ym.mec.collectfee.entity.Order" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
 		<!--
-		<selectKey resultClass="int" keyProperty="id" > 
-		SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL 
+		<selectKey resultClass="int" keyProperty="id" >
+		SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL
 		</selectKey>
 		-->
-		INSERT INTO `order` (tui_fee,goods_fee,sd_name,sd_fee,id,oid,order_no,user_id,amount,pay,bank,account,u_account,pay_id,pay_time,remark,class_id,status,create_time,po_name,voicy_part,balance,batch_num) VALUES(#{tuiFee},#{goodsFee},#{sdName},#{seFee},#{id},#{oid},#{orderNo},#{userId},#{amount},#{pay},#{bank},#{account},#{uAccount},#{payId},#{payTime},#{remark},#{classId},#{status},#{createTime},#{poName},#{voicyPart},#{balance},#{batchNum})
+		INSERT INTO `order` (id,oid,order_no,branch_id,user_id,amount,pay,bank,account,u_account,pay_id,pay_time,remark,class_id,status,create_time,po_name,voicy_part,balance,batch_num) VALUES(#{id},#{oid},#{branchId},#{orderNo},#{userId},#{amount},#{pay},#{bank},#{account},#{uAccount},#{payId},#{payTime},#{remark},#{classId},#{status},#{createTime},#{poName},#{voicyPart},#{balance},#{batchNum})
 	</insert>
-	
+
 	<!-- 根据主键查询一条记录 -->
 	<update id="update" parameterType="com.ym.mec.collectfee.entity.Order">
 		UPDATE order SET tui_fee = #{tuiFee},goods_fee = #{goodsFee},sd_name = #{sdName},sd_fee = #{sdFee},
 		amount = #{amount},create_time = #{createTime},class_id = #{classId},pay = #{pay},u_account = #{uAccount},remark = #{remark},oid = #{oid},batch_num = #{batchNum},pay_time = #{payTime},bank = #{bank},balance = #{balance},user_id = #{userId},voicy_part = #{voicyPart},po_name = #{poName},id = #{id},pay_id = #{payId},account = #{account},status = #{status} WHERE id = #{id}
 	</update>
-	
+
 	<!-- 根据主键删除一条记录 -->
 	<delete id="delete" >
 		DELETE FROM `order` WHERE id = #{id}
 	</delete>
-	
+
 	<!-- 分页查询 -->
 	<select id="queryPage" resultMap="Order" parameterType="map">
 		SELECT * FROM `order` ORDER BY id <include refid="global.limit"/>
 	</select>
-	
+
 	<!-- 查询当前表的总记录数 -->
 	<select id="queryCount" resultType="int">
 		SELECT COUNT(*) FROM `order`
@@ -81,7 +82,7 @@
 		SELECT * FROM `order` WHERE batch_num = #{batchNum}
 	</select>
 	<select id="countOrder" resultType="java.lang.Integer">
-		SELECT COUNT(DISTINCT user_id) num FROM `order` WHERE po_name = #{poName} AND voicy_part = #{voicePort} AND status != 2
+		SELECT COUNT(DISTINCT user_id) num FROM `order` WHERE po_name = #{poName} AND voicy_part = #{voicePort} AND status >= 1
 	</select>
 
 	<select id="getOrderByOrderNo" resultMap="Order">
@@ -90,4 +91,8 @@
     <select id="findOrderByStatus" resultType="com.ym.mec.collectfee.entity.Order">
 		SELECT * FROM `order` WHERE user_id = #{userId} AND status = #{status}
 	</select>
+	<!-- 获取支付中和成功的订单数-->
+	<select id="getPayOrderNums" resultType="java.lang.Integer">
+		SELECT COUNT(*) FROM `order` WHERE status >= 1
+	</select>
 </mapper>

+ 24 - 0
src/main/resources/templates/reg/order.ftl

@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html lang="zh_cn">
+<head>
+    <meta charset="UTF-8">
+    <title>register</title>
+</head>
+<body>
+<form action="https://qyfapi.95epay.com/api/api/hPay/toPayHtml" method="POST" id="sent_register">
+    <p>First merNo: <input type="text" name="merNo" value="${info.merNo}"/></p>
+    <p>Last version: <input type="text" name="version" value="${info.version}"/></p>
+    <p>Last notifyUrl: <input type="text" name="notifyUrl" value="${info.notifyUrl}"/></p>
+    <p>Last timestamp: <input type="text" name="timestamp" value="${info.timestamp}"/></p>
+    <p>Last apiContent: <input type="text" name="apiContent" value='${info.apiContent}'/></p>
+    <p>Last signType: <input type="text" name="signType" value="${info.signType}"/></p>
+    <p>Last sign: <input type="text" name="sign" value="${info.sign}"/></p>
+    <input type="submit">
+</form>
+</body>
+<script type="text/javascript">
+    window.onload = function () {
+        document.getElementById("sent_register").submit()
+    }
+</script>
+</html>