Ver Fonte

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

# Conflicts:
#	src/main/java/com/ym/mec/collectfee/controller/YqPayController.java
孙镇亮 há 5 anos atrás
pai
commit
0e0bb03260

+ 73 - 29
src/main/java/com/ym/mec/collectfee/controller/YqPayController.java

@@ -2,6 +2,7 @@ package com.ym.mec.collectfee.controller;
 
 import com.alibaba.druid.sql.visitor.functions.Now;
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.ym.mec.collectfee.common.sms.SmsExample;
 import com.ym.mec.collectfee.common.web.BaseController;
@@ -185,15 +186,15 @@ public class YqPayController extends BaseController {
         Map rqMap = orderService.getPayMap(routingAccount, order, school); //获取支付map
 
         //订单金额为0,直接成功
-        if(order.getAmount().compareTo(new BigDecimal("0")) <= 0){
+        if (order.getAmount().compareTo(new BigDecimal("0")) <= 0) {
             HashMap<String, String> notifyMap = new HashMap<>();
-            notifyMap.put("tradeState","1");
-            notifyMap.put("merOrderNo",order.getOrderNo());
-            notifyMap.put("channelType","10");
-            notifyMap.put("orderNo","");
-            notifyMap.put("totalMoney","0");
+            notifyMap.put("tradeState", "1");
+            notifyMap.put("merOrderNo", order.getOrderNo());
+            notifyMap.put("channelType", "10");
+            notifyMap.put("orderNo", "");
+            notifyMap.put("totalMoney", "0");
             this.updateOrder(notifyMap);
-            return failed(HttpStatus.CREATED,"恭喜您,报名成功!");
+            return failed(HttpStatus.CREATED, "恭喜您,报名成功!");
         }
 
         return succeed(rqMap);
@@ -611,7 +612,20 @@ public class YqPayController extends BaseController {
             if (order.getTuiFee() != null) { //乐团报名
                 applyInfoService.userRegister(applyInfo.getPatriarchPhone(), order.getId()); //推送mec
                 schoolService.sendPayMsg(applyInfo.getPatriarchPhone(), order.getAmount().toString());
-            } else {
+                return;
+            }
+            if (order.getPromotionType().equals(1)) {
+                RenewBean renewBean = new RenewBean();
+                renewBean.setUserId(order.getUserId());
+                renewBean.setType(101);
+                renewBean.setIn(order.getAmount());
+                renewBean.setOut(new BigDecimal(0));
+                renewBean.setWay(30);
+                applyInfoService.pushRenew(renewBean);
+                return;
+            }
+
+            if (order.getType() != null && order.getType() == 3) {
                 Renewals renewals = renewalsService.getRenewalsByOrderId(order.getId());
                 RenewBean renewBean = new RenewBean();
 //                renewBean.setUserId(renewals.getUserId());
@@ -626,9 +640,7 @@ public class YqPayController extends BaseController {
                 renewBean.setIn(renewals.getPay());
                 renewBean.setOut(new BigDecimal(0));
                 renewBean.setWay(renewals.getWay());
-                if(order.getType()!= null && order.getType()==3){
-                	applyInfoService.pushRenew(renewBean);
-                }
+                applyInfoService.pushRenew(renewBean);
             }
         }
     }
@@ -668,9 +680,9 @@ public class YqPayController extends BaseController {
         }
 
     }
-    
+
     /**
-     * 续费支付
+     * 双11活动小课续费支付
      *
      * @return String
      * @throws Exception
@@ -678,21 +690,53 @@ public class YqPayController extends BaseController {
 //    @ApiOperation(value = "续费支付", notes = "续费支付")
     @PostMapping("/promotionPay")
     public Object promotionPay(@ModelAttribute @Validated Renewals renewals) throws Exception {
-//        MecUser mecUser = applyInfoService.findMecUser(renewals.getUserId());
-//        if (mecUser == null) {
-//            return failed("续费用户不存在");
-//        }
-//        renewals.setBranchId(mecUser.getBranchId());
-//
-//        String orderNo = GenerateNum.getInstance().GenerateOrderNo(); //自己系统订单号
-//        //获取分佣账户
-//        Integer branchId = 1002;//默认分佣账户;
-//        Account routingAccount = accountService.getRoutingAccount(branchId, amount);
-//
-//        Order order = renewalsService.addRenewalsOrder(renewals, amount, orderNo, pickCourses, routingAccount, remark);
-//
-//        Map rqMap = orderService.getPayMap(routingAccount, order, null); //获取支付map
-//        return succeed(rqMap);
-    	return null;
+        MecUser mecUser = applyInfoService.findMecUser(renewals.getUserId());
+        if (mecUser == null) {
+            return failed("续费用户不存在");
+        }
+
+        ClassPathResource classPathResource = new ClassPathResource("branchRule.json"); //规则json
+        String branchRuleJson = IOUtils.toString(new InputStreamReader(classPathResource.getInputStream(), "UTF-8"));
+        List<BranchRule> branchRules = JSONArray.parseObject(branchRuleJson, List.class);
+
+        BigDecimal amount = new BigDecimal("0");
+        for (BranchRule branchRule : branchRules) {
+            if (!branchRule.getBranchId().equals(mecUser.getBranchId())) continue;
+            amount = branchRule.getBranchPrice();
+        }
+
+        if (!amount.equals(renewals.getPay())) {
+            return failed("金额有误!请勿非法请求");
+        }
+        if (amount.equals(new BigDecimal(0))) {
+            return failed("分部没有相应的活动");
+        }
+
+        String orderNo = GenerateNum.getInstance().GenerateOrderNo(); //自己系统订单号
+
+        //获取分佣账户
+        Integer branchId = 1002;//默认分佣账户;
+        Account routingAccount = accountService.getRoutingAccount(branchId, amount);
+
+        Order order = renewalsService.promotionPay(mecUser, amount, orderNo, routingAccount);
+
+        Map rqMap = orderService.getPayMap(routingAccount, order, null); //获取支付map
+        return succeed(rqMap);
     }
+
+    @RequestMapping("/getPayStatus")
+    public Object getPayStatus(String orderNo) throws Exception {
+        Order order = orderService.getOrderStatusByOrderNo(orderNo);
+        if(order == null){
+            return failed("订单信息不存在");
+        }
+        if(order.getStatus().equals(2)){
+            return succeed("SUCCESS");
+        }
+        if(order.getStatus().equals(1)){
+            return succeed("ING");
+        }
+        return succeed("FAIL");
+    }
+
 }

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

@@ -40,4 +40,6 @@ public interface OrderDao extends BaseDAO<Integer, Order> {
     List<Order> queryOrderPage(Map<String, Object> queryInfo);
 
     Map queryFeeAmount(Map<String, Object> params);
+
+    Order getOrderStatusByOrderNo(@Param("orderNo") String orderNo);
 }

+ 45 - 0
src/main/java/com/ym/mec/collectfee/entity/BranchRule.java

@@ -0,0 +1,45 @@
+package com.ym.mec.collectfee.entity;
+
+import java.math.BigDecimal;
+
+/**
+ * 分部11.11活动实体类
+ */
+public class BranchRule {
+      private Integer branchId;
+      private String branchName;
+      private String branchType;
+      private BigDecimal branchPrice;
+
+    public Integer getBranchId() {
+        return branchId;
+    }
+
+    public void setBranchId(Integer branchId) {
+        this.branchId = branchId;
+    }
+
+    public String getBranchName() {
+        return branchName;
+    }
+
+    public void setBranchName(String branchName) {
+        this.branchName = branchName;
+    }
+
+    public String getBranchType() {
+        return branchType;
+    }
+
+    public void setBranchType(String branchType) {
+        this.branchType = branchType;
+    }
+
+    public BigDecimal getBranchPrice() {
+        return branchPrice;
+    }
+
+    public void setBranchPrice(BigDecimal branchPrice) {
+        this.branchPrice = branchPrice;
+    }
+}

+ 12 - 1
src/main/java/com/ym/mec/collectfee/entity/Order.java

@@ -76,7 +76,7 @@ public class Order {
 //	@ApiModelProperty(name = "classId", value = "小课编号")
 	private Integer classId;
 
-	/** 支付状态,0成功,1支付中,2失败 */
+	/** 支付状态,0失败,1支付中,2成功 */
 //	@ApiModelProperty(name = "status", value = "支付状态",hidden = true)
 	private Integer status;
 
@@ -137,6 +137,9 @@ public class Order {
 	//手续费
 	private BigDecimal commission;
 
+	//活动类型
+	private  Integer promotionType;
+
 	public BigDecimal getTuiFee() {
 		return tuiFee;
 	}
@@ -407,4 +410,12 @@ public class Order {
 	public void setBranchName(String branchName) {
 		this.branchName = branchName;
 	}
+
+	public Integer getPromotionType() {
+		return promotionType;
+	}
+
+	public void setPromotionType(Integer promotionType) {
+		this.promotionType = promotionType;
+	}
 }

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

@@ -108,4 +108,6 @@ public interface OrderService extends BaseService<Integer, Order> {
 
     PageInfo<Order> queryOrderPage(OrderQueryInfo queryInfo);
 
+    Order getOrderStatusByOrderNo(String orderNo);
+
 }

+ 11 - 4
src/main/java/com/ym/mec/collectfee/service/RenewalsService.java

@@ -5,10 +5,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import com.ym.mec.collectfee.common.service.BaseService;
-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.entity.*;
 
 public interface RenewalsService extends BaseService<Integer, Renewals> {
 
@@ -30,4 +27,14 @@ public interface RenewalsService extends BaseService<Integer, Renewals> {
      * @return
      */
     Renewals getRenewalsByOrderId(Integer orderId);
+
+    /**
+     * 双十一小课购买活动
+     * @param amount
+     * @param orderNo
+     * @param routingAccount
+     * @return
+     */
+    Order promotionPay(MecUser mecUser,BigDecimal amount, String orderNo, Account routingAccount);
+
 }

+ 8 - 0
src/main/java/com/ym/mec/collectfee/service/impl/OrderServiceImpl.java

@@ -151,6 +151,9 @@ public class OrderServiceImpl extends BaseServiceImpl<Integer, Order> implements
         if (school != null) {
             returnUrl = this.returnHost + "/#/login?schoolId=" + school.getSchoolId() + "&cityId=" + school.getCityId();//支付后返回页面
         }
+        if(order.getPromotionType().equals(1)){
+            returnUrl = this.returnHost+ "/#/paymentResult";
+        }
         String payUrl = "https://qyfapi.95epay.com/api/api/hPay/toPayHtml";//支付跳转页
         String payChannels = "{\"weChatPay\":true,\"weChatPayMobile\":false,\"aliPay\":true,\"fastpayXy\":true,\"aliPayMobile\":false,\"balancePay\":false}";//支付方式配置
 
@@ -265,5 +268,10 @@ public class OrderServiceImpl extends BaseServiceImpl<Integer, Order> implements
         return pageInfo;
     }
 
+    @Override
+    public Order getOrderStatusByOrderNo(String orderNo) {
+        return orderDao.getOrderStatusByOrderNo(orderNo);
+    }
+
 
 }

+ 27 - 4
src/main/java/com/ym/mec/collectfee/service/impl/RenewalsServiceImpl.java

@@ -4,10 +4,7 @@ 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.entity.*;
 import com.ym.mec.collectfee.service.AccountService;
 import com.ym.mec.collectfee.service.OrderService;
 import com.ym.mec.collectfee.service.RenewalsService;
@@ -102,4 +99,30 @@ public class RenewalsServiceImpl extends BaseServiceImpl<Integer, Renewals> impl
         return renewalsDao.getRenewalsByOrderId(orderId);
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Order promotionPay(MecUser mecUser,BigDecimal amount, String orderNo, Account routingAccount) {
+        Order order = new Order();
+        order.setBranchId(mecUser.getBranchId());
+        order.setUserId(mecUser.getUserId());
+        order.setOrderNo(orderNo);
+        order.setAmount(amount);
+        order.setAccount(routingAccount.getSellerNo());
+        order.setStatus(1);
+        order.setUAccount(String.valueOf(routingAccount.getId()));
+        order.setCreateTime(new Date());
+        order.setType(3);
+        order.setUserName(mecUser.getRealName());
+        order.setPromotionType(1);
+        //1、插入订单
+        orderService.insert(order);
+
+        //2、修改分佣账户已收金额
+        BigDecimal HasRouting = routingAccount.getHasRouting().add(amount);
+        routingAccount.setHasRouting(HasRouting);
+        accountService.upByIdAndVersion(routingAccount);
+
+        return order;
+    }
+
 }

+ 141 - 0
src/main/resources/branchRule.json

@@ -0,0 +1,141 @@
+[{
+  "branchId": 1019,
+  "branchName": "长沙分部",
+  "branchType": "一类",
+  "branchPrice": 180
+}, {
+  "branchId": 1040,
+  "branchName": "常州分部",
+  "branchType": "一类",
+  "branchPrice": 180
+}, {
+  "branchId": 1032,
+  "branchName": "成都分部",
+  "branchType": "一类",
+  "branchPrice": 180
+}, {
+  "branchId": 1039,
+  "branchName": "大连分部",
+  "branchType": "一类",
+  "branchPrice": 180
+}, {
+  "branchId": 1036,
+  "branchName": "福州分部",
+  "branchType": "一类",
+  "branchPrice": 180
+}, {
+  "branchId": 1020,
+  "branchName": "广州分部",
+  "branchType": "二类",
+  "branchPrice": 220
+}, {
+  "branchId": 1013,
+  "branchName": "贵阳分部",
+  "branchType": "一类",
+  "branchPrice": 180
+}, {
+  "branchId": 1025,
+  "branchName": "杭州分部",
+  "branchType": "二类",
+  "branchPrice": 220
+}, {
+  "branchId": 1011,
+  "branchName": "合肥分部",
+  "branchType": "一类",
+  "branchPrice": 180
+}, {
+  "branchId": 1024,
+  "branchName": "惠州分部",
+  "branchType": "一类",
+  "branchPrice": 180
+}, {
+  "branchId": 1008,
+  "branchName": "济南分部",
+  "branchType": "一类",
+  "branchPrice": 180
+}, {
+  "branchId": 1033,
+  "branchName": "嘉兴分部",
+  "branchType": "一类",
+  "branchPrice": 180
+}, {
+  "branchId": 1028,
+  "branchName": "江门分部",
+  "branchType": "一类",
+  "branchPrice": 180
+}, {
+  "branchId": 1035,
+  "branchName": "昆明分部",
+  "branchType": "一类",
+  "branchPrice": 180
+}, {
+  "branchId": 1017,
+  "branchName": "南京分部",
+  "branchType": "二类",
+  "branchPrice": 220
+}, {
+  "branchId": 1034,
+  "branchName": "青岛分部",
+  "branchType": "一类",
+  "branchPrice": 180
+}, {
+  "branchId": 1012,
+  "branchName": "上海分部",
+  "branchType": "三类",
+  "branchPrice": 220
+}, {
+  "branchId": 1010,
+  "branchName": "深圳分部",
+  "branchType": "三类",
+  "branchPrice": 280
+}, {
+  "branchId": 1023,
+  "branchName": "沈阳分部",
+  "branchType": "一类",
+  "branchPrice": 180
+}, {
+  "branchId": 1009,
+  "branchName": "石家庄分",
+  "branchType": "一类",
+  "branchPrice": 180
+}, {
+  "branchId": 1014,
+  "branchName": "苏州分部",
+  "branchType": "一类",
+  "branchPrice": 180
+}, {
+  "branchId": 1015,
+  "branchName": "无锡分部",
+  "branchType": "一类",
+  "branchPrice": 180
+}, {
+  "branchId": 1007,
+  "branchName": "武汉分部",
+  "branchType": "一类",
+  "branchPrice": 180
+}, {
+  "branchId": 1029,
+  "branchName": "西安分部",
+  "branchType": "一类",
+  "branchPrice": 180
+}, {
+  "branchId": 1043,
+  "branchName": "烟台分部",
+  "branchType": "一类",
+  "branchPrice": 180
+}, {
+  "branchId": 1018,
+  "branchName": "中山分部",
+  "branchType": "一类",
+  "branchPrice": 180
+}, {
+  "branchId": 1016,
+  "branchName": "重庆分部",
+  "branchType": "一类",
+  "branchPrice": 180
+}, {
+  "branchId": 1041,
+  "branchName": "淄博分部",
+  "branchType": "一类",
+  "branchPrice": 180
+}]

+ 7 - 2
src/main/resources/config/mybatis/OrderMapper.xml

@@ -34,6 +34,7 @@
         <result column="goods_fee" property="goodsFee"/>
         <result column="sd_name" property="sdName"/>
         <result column="sd_fee" property="sdFee"/>
+        <result column="promotion_type" property="promotionType" />
     </resultMap>
 
     <!-- 根据主键查询一条记录 -->
@@ -57,8 +58,8 @@
         </selectKey>
         -->
         INSERT INTO `order`
-        (id,oid,order_no,branch_id,group_id,user_id,user_name,amount,type,pay,bank,account,u_account,pay_id,pay_time,remark,class_id,status,create_time,po_name,voicy_part,balance,batch_num,tui_fee,goods_fee,sd_name,sd_fee)
-        VALUES(#{id},#{oid},#{orderNo},#{branchId},#{groupId},#{userId},#{userName},#{amount},#{type},#{pay},#{bank},#{account},#{uAccount},#{payId},#{payTime},#{remark},#{classId},#{status},#{createTime},#{poName},#{voicyPart},#{balance},#{batchNum},#{tuiFee},#{goodsFee},#{sdName},#{sdFee})
+        (id,oid,order_no,branch_id,group_id,user_id,user_name,amount,type,pay,bank,account,u_account,pay_id,pay_time,remark,class_id,status,create_time,po_name,voicy_part,balance,batch_num,tui_fee,goods_fee,sd_name,sd_fee,promotion_type)
+        VALUES(#{id},#{oid},#{orderNo},#{branchId},#{groupId},#{userId},#{userName},#{amount},#{type},#{pay},#{bank},#{account},#{uAccount},#{payId},#{payTime},#{remark},#{classId},#{status},#{createTime},#{poName},#{voicyPart},#{balance},#{batchNum},#{tuiFee},#{goodsFee},#{sdName},#{sdFee},#{promotionType})
     </insert>
 
     <!-- 根据主键查询一条记录 -->
@@ -284,4 +285,8 @@
         <include refid="orderPage"/>
         <include refid="global.limit"/>
     </select>
+
+    <select id="getOrderStatusByOrderNo" resultMap="Order">
+        SELECT * FROM `order` WHERE `order_no` = #{orderNo}
+    </select>
 </mapper>