瀏覽代碼

分帐列表等

zhangbin 1 年之前
父節點
當前提交
a5e7a44f71

+ 0 - 4
nbjk-admin/src/main/java/com/miaxis/app/controller/order/OrderInfoController.java

@@ -2,14 +2,10 @@ package com.miaxis.app.controller.order;
 
 import com.miaxis.common.constant.Constants;
 import com.miaxis.common.core.controller.BaseController;
-import com.miaxis.common.core.domain.Response;
 import com.miaxis.common.core.page.ResponsePageInfo;
-import com.miaxis.common.utils.SecurityUtils;
 import com.miaxis.order.domain.OrderInfo;
 import com.miaxis.order.dto.OrderInfoDto;
-import com.miaxis.order.dto.OrderInfoMonthDto;
 import com.miaxis.order.service.IOrderInfoService;
-import com.miaxis.order.vo.OrderInfoMonthVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;

+ 68 - 10
nbjk-admin/src/main/java/com/miaxis/pc/controller/PcOrderInfoController.java

@@ -7,12 +7,14 @@ import com.miaxis.order.domain.OrderInfo;
 import com.miaxis.order.dto.OrderInfoDto;
 import com.miaxis.order.service.IOrderInfoService;
 import com.miaxis.wx.domain.WxOrder;
+import com.miaxis.wx.dto.WxOrderShareProfitDTO;
 import com.miaxis.wx.service.IRefundRecordService;
 import com.miaxis.wx.service.IWxOrderService;
 import io.swagger.annotations.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.Date;
 import java.util.List;
 
 import static com.miaxis.common.utils.OrderCodeFactory.getOrderCode;
@@ -25,7 +27,7 @@ import static com.miaxis.common.utils.OrderCodeFactory.getOrderCode;
  */
 @RestController
 @RequestMapping("/order/info")
-@Api(tags={"【PC-订单信息】"})
+@Api(tags = {"【PC-订单信息】"})
 public class PcOrderInfoController extends BaseController {
     @Autowired
     private IOrderInfoService orderInfoService;
@@ -40,16 +42,75 @@ public class PcOrderInfoController extends BaseController {
      */
     @GetMapping("/list")
     @ApiOperation("查询订单信息列表")
-        @ApiImplicitParams({
-            @ApiImplicitParam(name = "pageNum",value = "当前页码" ,dataType = "int", paramType = "query", required = false),
-            @ApiImplicitParam(name = "pageSize",value = "每页数据量" , dataType = "int", paramType = "query", required = false),
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "pageNum", value = "当前页码", dataType = "int", paramType = "query", required = false),
+            @ApiImplicitParam(name = "pageSize", value = "每页数据量", dataType = "int", paramType = "query", required = false),
     })
-    public ResponsePageInfo<OrderInfo> list(@ModelAttribute OrderInfoDto orderInfoDto){
+    public ResponsePageInfo<OrderInfo> list(@ModelAttribute OrderInfoDto orderInfoDto) {
         startPage();
         List<OrderInfo> list = orderInfoService.selectOrderInfoList(orderInfoDto);
         return toResponsePageInfo(list);
     }
 
+
+    /**
+     * 查询分帐订单列表
+     */
+    @GetMapping("/wxlist")
+    @ApiOperation("查询分帐订单列表")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "pageNum", value = "当前页码", dataType = "int", paramType = "query", required = false),
+            @ApiImplicitParam(name = "pageSize", value = "每页数据量", dataType = "int", paramType = "query", required = false),
+    })
+    public ResponsePageInfo<WxOrder> wxlist(@ModelAttribute WxOrderShareProfitDTO wxOrderShareProfitDTO) {
+        startPage();
+        List<WxOrder> list = wxOrderService.selectWxOrderProfitList(wxOrderShareProfitDTO);
+        return toResponsePageInfo(list);
+    }
+
+    /**
+     * 发起分账
+     */
+    @PutMapping(value = "/shareProfit/{outTradeNo}")
+    @ApiOperation("发起分账")
+    public Response<OrderInfo> shareProfit(
+            @ApiParam(name = "outTradeNo", value = "商户订单信息", required = true)
+            @PathVariable("outTradeNo") String outTradeNo) throws Exception {
+        WxOrder order = wxOrderService.getByOutTradeNo(outTradeNo);
+
+        if (!"SUCCESS".equals(order.getTradeState())) {
+            Response response = new Response(200, "非支付成功的订单,无法分账。");
+            return response;
+        }
+        if (order.getProfitSharing() != 1) {
+            Response response = new Response(200, "非待分账订单,无法分账。");
+            return response;
+        }
+
+        // 获取当前时间
+        Date currentDate = new Date();
+        // 添加5分钟
+        long fiveMinutesInMillis = 1 * 60 * 1000; // 5分钟的毫秒数
+        Date nowDate = new Date(currentDate.getTime() - fiveMinutesInMillis);
+
+        if (nowDate.compareTo(order.getSuccessTime()) < 0) {
+            Response response = new Response(200, "支付成功的订单,未满5分钟无法分账,请稍后操作。");
+            return response;
+        }
+
+        boolean addFlag = wxOrderService.wxAddFenZhang(order);
+        boolean flag = wxOrderService.wxProfitsharing(order);
+        if (flag && addFlag) {
+            Response response = new Response(200, "分账成功");
+            return response;
+        } else {
+            Response response = new Response(200, "分账失败,请联系管理员");
+            return response;
+        }
+
+    }
+
+
     /**
      * 获取订单信息详细信息
      */
@@ -58,7 +119,7 @@ public class PcOrderInfoController extends BaseController {
     public Response<OrderInfo> getInfo(
             @ApiParam(name = "id", value = "订单信息参数", required = true)
             @PathVariable("id") Long id
-    ){
+    ) {
         return Response.success(orderInfoService.getById(id));
     }
 
@@ -75,14 +136,11 @@ public class PcOrderInfoController extends BaseController {
     ) throws Exception {
         String refundCode = getOrderCode(null);
         WxOrder order = wxOrderService.getByOutTradeNo(outTradeNo);
-        refundRecordService.refund(order,refundCode,reason);
+        refundRecordService.refund(order, refundCode, reason);
         //TODO 取消会员内容
         orderInfoService.refundOrder(order);
         return Response.success();
     }
 
 
-
-
-
 }

+ 2 - 2
nbjk-service/src/main/java/com/miaxis/job/AppAdJob.java

@@ -54,13 +54,13 @@ public class AppAdJob {
     }
 
 
-    @Scheduled(cron = "0 30 6 * * ?")
+    //@Scheduled(cron = "0 30 6 * * ?")
     public void closeAd2()  {
         log.info("--------现在是6点半!~---------------");
     }
 
 
-    @Scheduled(cron = "0 0/1 * * * ?")
+    //@Scheduled(cron = "0 0/5 * * * ?")
     public void wxProfitsharing()  {
         log.info("--------现在开始执行每1分钟一次的微信分帐!~---------------");
 

+ 26 - 0
nbjk-service/src/main/java/com/miaxis/wx/dto/WxOrderShareProfitDTO.java

@@ -0,0 +1,26 @@
+package com.miaxis.wx.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class WxOrderShareProfitDTO {
+    private static final long serialVersionUID = 1L;
+
+
+
+    @ApiModelProperty(value = "是否分账 0不分帐 1待分账  2分账失败  3分账完成",required = true)
+    private Integer profitSharing;
+
+    @ApiModelProperty(value = "商户订单号")
+    private String outTradeNo;
+
+    /** 开始时间 */
+    @ApiModelProperty(value = "开始时间 格式yyyy-MM-dd HH:mm:ss")
+    private String startTime;
+    /** 结束时间 */
+    @ApiModelProperty(value = "结束时间 格式yyyy-MM-dd HH:mm:ss")
+    private String endTime;
+
+
+}

+ 2 - 4
nbjk-service/src/main/java/com/miaxis/wx/mapper/WxOrderMapper.java

@@ -2,10 +2,7 @@ package com.miaxis.wx.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.miaxis.wx.domain.WxOrder;
-import com.miaxis.wx.dto.PcWxOrderListDTO;
-import com.miaxis.wx.dto.QuerySchoolOrderListDTO;
-import com.miaxis.wx.dto.WxOrderListDTO;
-import com.miaxis.wx.dto.WxOrderProfitDTO;
+import com.miaxis.wx.dto.*;
 
 import java.util.Date;
 import java.util.List;
@@ -35,4 +32,5 @@ public interface WxOrderMapper extends BaseMapper<WxOrder> {
 
     List<WxOrder> selectWxOrderByWaitProfit(String nowDate);
 
+    List<WxOrder> selectWxOrderProfitList(WxOrderShareProfitDTO orderShareProfitDTO);
 }

+ 3 - 1
nbjk-service/src/main/java/com/miaxis/wx/service/IWxOrderService.java

@@ -3,6 +3,7 @@ package com.miaxis.wx.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.miaxis.wx.domain.WxOrder;
 import com.miaxis.wx.dto.WxExtractBankDTO;
+import com.miaxis.wx.dto.WxOrderShareProfitDTO;
 
 import java.util.List;
 
@@ -11,7 +12,7 @@ import java.util.List;
 public interface IWxOrderService extends IService<WxOrder>{
 
 
-    void wxAddFenZhang(WxOrder wxOrder) throws Exception;
+    boolean wxAddFenZhang(WxOrder wxOrder) throws Exception;
 
     boolean wxProfitsharing(WxOrder wxOrder) throws  Exception;
 
@@ -23,4 +24,5 @@ public interface IWxOrderService extends IService<WxOrder>{
 
     List<WxOrder> selectWxOrderByWaitProfit();
 
+    List<WxOrder> selectWxOrderProfitList(WxOrderShareProfitDTO orderShareProfitDTO);
 }

+ 17 - 4
nbjk-service/src/main/java/com/miaxis/wx/service/impl/WxOrderServiceImpl.java

@@ -25,6 +25,7 @@ import com.miaxis.wx.domain.WxExtractBank;
 import com.miaxis.wx.domain.WxOrder;
 import com.miaxis.wx.dto.WxExtractBankDTO;
 import com.miaxis.wx.dto.WxOrderProfitDTO;
+import com.miaxis.wx.dto.WxOrderShareProfitDTO;
 import com.miaxis.wx.mapper.WxOrderMapper;
 import com.miaxis.wx.service.IWxExtractBankService;
 import com.miaxis.wx.service.IWxExtractService;
@@ -94,7 +95,7 @@ public class WxOrderServiceImpl extends ServiceImpl<WxOrderMapper, WxOrder> impl
 
     @Override
     @Transactional
-    public void wxAddFenZhang(WxOrder wxOrder) throws Exception {
+    public boolean wxAddFenZhang(WxOrder wxOrder) throws Exception {
         //查询上级
         String account = getAccount(wxOrder);
         String url = "https://api.mch.weixin.qq.com/pay/profitsharingaddreceiver";
@@ -127,9 +128,14 @@ public class WxOrderServiceImpl extends ServiceImpl<WxOrderMapper, WxOrder> impl
 
         Map<String, String> resMap = XmlUtil.xmlToMap(xmlStr);
         if (!"SUCCESS".equals(resMap.get("return_code")) || !"SUCCESS".equals(resMap.get("result_code"))) {
-            throw new CustomException("微信添加分账出错");
+           // throw new CustomException("微信添加分账出错");
+            log.info("微信添加分账出错");
+            log.info(resMap.toString());
+            return false;
+        } else {
+            return true;
         }
-        System.out.println(xmlStr);
+
     }
 
 
@@ -184,10 +190,10 @@ public class WxOrderServiceImpl extends ServiceImpl<WxOrderMapper, WxOrder> impl
         WXPay pay = new WXPay(config);
         String xmlStr = pay.requestWithCert(url, sortMap, config.getHttpConnectTimeoutMs(), config.getHttpReadTimeoutMs());
         Map<String, String> resMap = XmlUtil.xmlToMap(xmlStr);
-        System.out.println(resMap);
         if (!"SUCCESS".equals(resMap.get("return_code")) || !"SUCCESS".equals(resMap.get("result_code"))) {
             //throw new CustomException("微信分账出错");
             log.info("微信分账出错");
+            log.info(resMap.toString());
             return false;
         }
         //更新成交订单表
@@ -338,6 +344,13 @@ public class WxOrderServiceImpl extends ServiceImpl<WxOrderMapper, WxOrder> impl
     }
 
 
+    @Override
+    public List<WxOrder> selectWxOrderProfitList(WxOrderShareProfitDTO orderShareProfitDTO) {
+        List<WxOrder> wxOrderList = wxOrderMapper.selectWxOrderProfitList(orderShareProfitDTO);
+        return wxOrderList;
+    }
+
+
     /**
      * 查询出上级unionId
      * @param wxOrder

+ 17 - 4
nbjk-service/src/main/resources/mapper/wx/WxOrderMapper.xml

@@ -124,6 +124,9 @@
             and DATE_FORMAT(create_time,'%Y-%m-%d') <![CDATA[ < ]]> #{endTime}
         </if>
         order by create_time desc
+
+
+
     </select>
 
 
@@ -137,11 +140,21 @@
 
 
     <select id="selectWxOrderProfitList" resultType="com.miaxis.wx.domain.WxOrder">
-        select * from wx_order where trade_state ='SUCCESS'
-        <if test="nowDate != null"><!-- 开始时间检索 -->
-            and profit_sharing = 1
+        select * from wx_order where trade_state = 'SUCCESS'
+        <if test="profitSharing != null">
+            and profit_sharing = #{profitSharing }
         </if>
-        order by success_time
+        <if test="outTradeNo != null  and outTradeNo != ''">
+            and out_trade_no = #{outTradeNo }
+        </if>
+        <if test="startTime != null and startTime != '' " >
+            and DATE_FORMAT(success_time,'%Y-%m-%d %H:%i:%S')<![CDATA[ >= ]]> #{startTime}
+        </if>
+        <if test="endTime != null and endTime != '' ">
+            and DATE_FORMAT(success_time,'%Y-%m-%d %H:%i:%S') <![CDATA[ < ]]> #{endTime}
+        </if>
+
+        order by success_time desc
     </select>
 
 </mapper>