소스 검색

服务费关联

zhijiezhao 1 년 전
부모
커밋
0d4c51d064

+ 0 - 518
src/main/java/com/caimei365/order/controller/PayNonOrderApi.java

@@ -1,518 +0,0 @@
-//package com.caimei365.order.controller;
-//
-//import com.alibaba.fastjson.JSONObject;
-//import com.caimei365.order.model.ResponseJson;
-//import com.caimei365.order.model.dto.PayCouponDto;
-//import com.caimei365.order.model.dto.PayDto;
-//import com.caimei365.order.model.dto.PaySecondDto;
-//import com.caimei365.order.model.dto.PayVipDto;
-//import com.caimei365.order.service.PayNonOrderService;
-//import io.swagger.annotations.Api;
-//import io.swagger.annotations.ApiOperation;
-//import lombok.RequiredArgsConstructor;
-//import org.apache.commons.lang3.StringUtils;
-//import org.springframework.http.HttpHeaders;
-//import org.springframework.web.bind.annotation.*;
-//
-//import java.security.NoSuchAlgorithmException;
-//import java.security.spec.InvalidKeySpecException;
-//
-///**
-// * 二手发布支付,升级超级会员支付
-// *
-// * @author : Charles
-// * @date : 2021/9/27
-// */
-//@Api(tags = "其他(非订单)支付API")
-//@RestController
-//@RequiredArgsConstructor
-//@RequestMapping("/order/pay")
-//public class PayNonOrderApi {
-//
-//    private final PayNonOrderService payNonOrderService;
-//
-//    /**
-//     * 二手发布-微信线上支付
-//     *
-//     * @param paySecondDto {
-//     *                     productId      二手发布商品id
-//     *                     returnUrl     页面回调地址
-//     *                     code          微信小程序code
-//     *                     state         微信公众号state参数
-//     *                     }
-//     */
-//    @ApiOperation("二手发布-微信线上支付(旧:/PayOrder/appletsSecondHandPay)(/PayOrder/secondHandPay[WEIXIN])")
-//    @PostMapping("/second/wechat")
-//    public ResponseJson<JSONObject> paySecondByWeChat(PaySecondDto paySecondDto, @RequestHeader HttpHeaders headers) {
-//        if (null == paySecondDto.getProductId()) {
-//            return ResponseJson.error("二手商品Id不能为空!", null);
-//        }
-//        if (StringUtils.isEmpty(paySecondDto.getCode())) {
-//            return ResponseJson.error("微信code不能为空!", null);
-//        }
-//        return payNonOrderService.paySecondByWeChat(paySecondDto, headers);
-//    }
-//
-//    /**
-//     * 二手发布-支付宝线上支付
-//     *
-//     * @param paySecondDto {
-//     *                     productId      二手发布商品id
-//     *                     returnUrl     页面回调地址
-//     *                     }
-//     */
-//    @ApiOperation("二手发布-支付宝线上支付(旧:/PayOrder/secondHandPay[ALIPAY])")
-//    @PostMapping("/second/alipay")
-//    public ResponseJson<JSONObject> paySecondByAlipay(PaySecondDto paySecondDto, @RequestHeader HttpHeaders headers) {
-//        if (null == paySecondDto.getProductId()) {
-//            return ResponseJson.error("二手商品Id不能为空!", null);
-//        }
-//        if (StringUtils.isEmpty(paySecondDto.getReturnUrl())) {
-//            return ResponseJson.error("回调地址不能为空!", null);
-//        }
-//        return payNonOrderService.paySecondByAlipay(paySecondDto, headers);
-//    }
-//
-//    /**
-//     * 二手发布-银联线上支付
-//     *
-//     * @param paySecondDto {
-//     *                     productId     二手发布商品id
-//     *                     returnUrl     页面回调地址
-//     *                     bankCode      银行编码(银联支付使用)
-//     *                     userType      用户类型(银联支付使用)企业:ENTERPRISE,个人:USER
-//     *                     }
-//     */
-//    @ApiOperation("二手发布-银联线上支付(旧:/PayOrder/secondHandPay[UNIONPAY])")
-//    @PostMapping("/second/union")
-//    public ResponseJson<JSONObject> paySecondByUnionPay(PaySecondDto paySecondDto, @RequestHeader HttpHeaders headers) {
-//        if (null == paySecondDto.getProductId()) {
-//            return ResponseJson.error("二手商品Id不能为空!", null);
-//        }
-//        if (StringUtils.isEmpty(paySecondDto.getReturnUrl())) {
-//            return ResponseJson.error("回调地址不能为空!", null);
-//        }
-//        if (StringUtils.isEmpty(paySecondDto.getBankCode())) {
-//            return ResponseJson.error("银行编码不能为空!", null);
-//        }
-//        if (StringUtils.isEmpty(paySecondDto.getUserType())) {
-//            return ResponseJson.error("银行用户类型不能为空!", null);
-//        }
-//        return payNonOrderService.paySecondByUnionPay(paySecondDto, headers);
-//    }
-//
-//    /**
-//     * 二手发布-支付回调
-//     */
-//    @ApiOperation("二手发布-支付回调(旧:/PayOrder/secondHandPayCallBack)")
-//    @GetMapping("/second/callback")
-//    public String paymentSecondCallback(String data) throws NoSuchAlgorithmException, InvalidKeySpecException {
-//        if (StringUtils.isBlank(data)) {
-//            return "回调参数失败";
-//        }
-//        return payNonOrderService.paymentSecondCallback(data);
-//    }
-//
-//    /**
-//     * 升级超级会员-微信线上支付
-//     *
-//     * @param payVipDto {
-//     *                  vipRecordId   会员购买记录Id
-//     *                  returnUrl     页面回调地址
-//     *                  code          微信小程序code
-//     *                  state         微信公众号state参数
-//     *                  }
-//     */
-//    @ApiOperation("升级超级会员-微信线上支付")
-//    @PostMapping("/vip/wechat")
-//    public ResponseJson<JSONObject> paySuperVipByWeChat(PayVipDto payVipDto, @RequestHeader HttpHeaders headers) {
-//        if (null == payVipDto.getVipRecordId()) {
-//            return ResponseJson.error("会员购买记录Id不能为空!", null);
-//        }
-//        if (StringUtils.isEmpty(payVipDto.getCode())) {
-//            return ResponseJson.error("微信code不能为空!", null);
-//        }
-//        return payNonOrderService.paySuperVipByWeChat(payVipDto, headers);
-//    }
-//
-//    /**
-//     * 升级超级会员-支付宝线上支付
-//     *
-//     * @param payVipDto {
-//     *                  vipRecordId   会员购买记录Id
-//     *                  returnUrl     页面回调地址
-//     *                  }
-//     */
-//    @ApiOperation("升级超级会员-支付宝线上支付")
-//    @PostMapping("/vip/alipay")
-//    public ResponseJson<JSONObject> paySuperVipByAlipay(PayVipDto payVipDto, @RequestHeader HttpHeaders headers) {
-//        if (null == payVipDto.getVipRecordId()) {
-//            return ResponseJson.error("会员购买记录Id不能为空!", null);
-//        }
-//        if (StringUtils.isEmpty(payVipDto.getReturnUrl())) {
-//            return ResponseJson.error("回调地址不能为空!", null);
-//        }
-//        return payNonOrderService.paySuperVipByAlipay(payVipDto, headers);
-//    }
-//
-//    /**
-//     * 升级超级会员-银联线上支付
-//     *
-//     * @param payVipDto {
-//     *                  vipRecordId   会员购买记录Id
-//     *                  returnUrl     页面回调地址
-//     *                  bankCode      银行编码(银联支付使用)
-//     *                  userType      用户类型(银联支付使用)企业:ENTERPRISE,个人:USER
-//     *                  }
-//     */
-//    @ApiOperation("升级超级会员-银联线上支付")
-//    @PostMapping("/vip/union")
-//    public ResponseJson<JSONObject> paySuperVipByUnionPay(PayVipDto payVipDto, @RequestHeader HttpHeaders headers) {
-//        if (null == payVipDto.getVipRecordId()) {
-//            return ResponseJson.error("会员购买记录Id不能为空!", null);
-//        }
-//        if (StringUtils.isEmpty(payVipDto.getReturnUrl())) {
-//            return ResponseJson.error("回调地址不能为空!", null);
-//        }
-//        if (StringUtils.isEmpty(payVipDto.getBankCode())) {
-//            return ResponseJson.error("银行编码不能为空!", null);
-//        }
-//        if (StringUtils.isEmpty(payVipDto.getUserType())) {
-//            return ResponseJson.error("银行用户类型不能为空!", null);
-//        }
-//        return payNonOrderService.paySuperVipByUnionPay(payVipDto, headers);
-//    }
-//
-//    /**
-//     * 升级超级会员-银联线上支付
-//     *
-//     * @param payVipDto {
-//     *                  vipRecordId   会员购买记录Id
-//     *                  }
-//     */
-//    @ApiOperation("超级会员银联转账")
-//    @PostMapping("/vip/transfer/union")
-//    public ResponseJson<JSONObject> paySuperVipByTransfer(PayVipDto payVipDto, @RequestHeader HttpHeaders headers){
-//        if (null == payVipDto.getVipRecordId()) {
-//            return ResponseJson.error("会员购买记录Id不能为空!", null);
-//        }
-//        return payNonOrderService.paySuperVipByTransfer(payVipDto, headers);
-//    }
-//    /**
-//     * 升级超级会员-支付回调
-//     */
-//    @ApiOperation("升级超级会员-支付回调")
-//    @GetMapping("/vip/callback")
-//    public String paymentSuperVipCallback(String data) throws NoSuchAlgorithmException, InvalidKeySpecException {
-//        if (StringUtils.isBlank(data)) {
-//            return "回调参数失败";
-//        }
-//        return payNonOrderService.paymentSuperVipCallback(data);
-//    }
-//
-//    /**
-//     * 升级超级会员-线上退款
-//     *
-//     * @param payVipDto {
-//     *                  vipRecordId   会员购买记录Id
-//     *                  code          退款口令
-//     *                  }
-//     */
-//    @ApiOperation("升级超级会员-线上退款)")
-//    @PostMapping("/vip/online/refund")
-//    public ResponseJson<JSONObject> superVipOnlineRefund(PayVipDto payVipDto) throws NoSuchAlgorithmException, InvalidKeySpecException {
-//        if (null == payVipDto.getVipRecordId()) {
-//            return ResponseJson.error("会员购买记录Id不能为空!", null);
-//        }
-//        if (StringUtils.isEmpty(payVipDto.getCode()) || !"SVIP".equals(payVipDto.getCode())) {
-//            return ResponseJson.error("退款口令code不正确!", null);
-//        }
-//        return payNonOrderService.superVipOnlineRefund(payVipDto);
-//    }
-//
-//
-//    @ApiOperation("购买价值优惠券-获取购买记录id")
-//    @PostMapping("/coupon/record")
-//    public ResponseJson<PayCouponDto> payCouponGetRecord(PayCouponDto payCouponDto, @RequestHeader HttpHeaders headers) {
-//        if (null == payCouponDto.getCouponId()) {
-//            return ResponseJson.error("优惠券Id不能为空!", null);
-//        }
-//        if (null == payCouponDto.getUserId()) {
-//            return ResponseJson.error("userId不能为空!", null);
-//        }
-//        return payNonOrderService.getCouponRecord(payCouponDto, headers);
-//    }
-//
-//    /**
-//     * 升级超级会员-微信线上支付
-//     *
-//     * @param payCouponDto {
-//     *                     couponId      购买优惠券Id
-//     *                     userId        userId
-//     *                     couponRecordId  购买记录id
-//     *                     returnUrl     页面回调地址
-//     *                     code          微信小程序code
-//     *                     state         微信公众号state参数
-//     *                     }
-//     */
-//    @ApiOperation("购买价值优惠券-微信线上支付")
-//    @PostMapping("/coupon/wechat")
-//    public ResponseJson<JSONObject> payCouponByWeChat(PayCouponDto payCouponDto, @RequestHeader HttpHeaders headers) {
-//        if (null == payCouponDto.getCouponRecordId()) {
-//            return ResponseJson.error("购买记录id不能为空!", null);
-//        }
-//        if (null == payCouponDto.getSource()) {
-//            return ResponseJson.error("领取渠道不能为空!", null);
-//        }
-//        if (null == payCouponDto.getCouponId()) {
-//            return ResponseJson.error("优惠券Id不能为空!", null);
-//        }
-//        if (null == payCouponDto.getUserId()) {
-//            return ResponseJson.error("userId不能为空!", null);
-//        }
-//        if (StringUtils.isEmpty(payCouponDto.getCode())) {
-//            return ResponseJson.error("微信code不能为空!", null);
-//        }
-//        return payNonOrderService.payCouponByWeChat(payCouponDto, headers);
-//    }
-//
-//    /**
-//     * 购买价值优惠券-支付宝线上支付
-//     *
-//     * @param payCouponDto {
-//     *                     couponRecordId  购买记录id
-//     *                     couponId      购买优惠券Id
-//     *                     userId        userId
-//     *                     returnUrl     页面回调地址
-//     *                     }
-//     */
-//    @ApiOperation("购买价值优惠券-支付宝线上支付")
-//    @PostMapping("/coupon/alipay")
-//    public ResponseJson<JSONObject> payCouponByAlipay(PayCouponDto payCouponDto, @RequestHeader HttpHeaders headers) {
-//        if (null == payCouponDto.getCouponRecordId()) {
-//            return ResponseJson.error("购买记录id不能为空!", null);
-//        }
-//        if (null == payCouponDto.getSource()) {
-//            return ResponseJson.error("领取渠道不能为空!", null);
-//        }
-//        if (null == payCouponDto.getCouponId()) {
-//            return ResponseJson.error("优惠券Id不能为空!", null);
-//        }
-//        if (StringUtils.isEmpty(payCouponDto.getReturnUrl())) {
-//            return ResponseJson.error("回调地址不能为空!", null);
-//        }
-//        return payNonOrderService.payCouponByAlipay(payCouponDto, headers);
-//    }
-//
-//    /**
-//     * 购买价值优惠券-银联线上支付
-//     *
-//     * @param payCouponDto {
-//     *                     couponRecordId  购买记录id
-//     *                     userID        用户id
-//     *                     couponId      购买优惠券Id
-//     *                     source        购买渠道
-//     *                     returnUrl     页面回调地址
-//     *                     bankCode      银行编码(银联支付使用)
-//     *                     userType      用户类型(银联支付使用)企业:ENTERPRISE,个人:USER
-//     *                     }
-//     */
-//    @ApiOperation("购买价值优惠券-银联线上支付")
-//    @PostMapping("/coupon/union")
-//    public ResponseJson<JSONObject> payCouponByUnionPay(PayCouponDto payCouponDto, @RequestHeader HttpHeaders headers) {
-//        if (null == payCouponDto.getCouponRecordId()) {
-//            return ResponseJson.error("购买记录id不能为空!", null);
-//        }
-//        if (null == payCouponDto.getSource()) {
-//            return ResponseJson.error("领取渠道不能为空!", null);
-//        }
-//        if (null == payCouponDto.getUserId()) {
-//            return ResponseJson.error("用户id不能为空!", null);
-//        }
-//        if (null == payCouponDto.getCouponId()) {
-//            return ResponseJson.error("优惠券Id不能为空!", null);
-//        }
-//        if (StringUtils.isEmpty(payCouponDto.getReturnUrl())) {
-//            return ResponseJson.error("回调地址不能为空!", null);
-//        }
-//        if (StringUtils.isEmpty(payCouponDto.getBankCode())) {
-//            return ResponseJson.error("银行编码不能为空!", null);
-//        }
-//        if (StringUtils.isEmpty(payCouponDto.getUserType())) {
-//            return ResponseJson.error("银行用户类型不能为空!", null);
-//        }
-//        return payNonOrderService.payCouponUnionPay(payCouponDto, headers);
-//    }
-//
-//    /**
-//     * 购买价值优惠券-银联转账支付
-//     *
-//     * @param payCouponDto {
-//     *                     couponRecordId  购买记录id
-//     *                     userID        用户id
-//     *                     couponId      购买优惠券Id
-//     *                     source        购买渠道
-//     *                     }
-//     */
-//    @ApiOperation("购买价值优惠券-银联转账支付")
-//    @PostMapping("/coupon/transfer/union")
-//    public ResponseJson<JSONObject> payCouponByTransfer(PayCouponDto payCouponDto, @RequestHeader HttpHeaders headers) {
-//        if (null == payCouponDto.getCouponRecordId()) {
-//            return ResponseJson.error("购买记录id不能为空!", null);
-//        }
-//        if (null == payCouponDto.getSource()) {
-//            return ResponseJson.error("领取渠道不能为空!", null);
-//        }
-//        if (null == payCouponDto.getUserId()) {
-//            return ResponseJson.error("用户id不能为空!", null);
-//        }
-//        if (null == payCouponDto.getCouponId()) {
-//            return ResponseJson.error("优惠券Id不能为空!", null);
-//        }
-//        return payNonOrderService.payCouponByTransfer(payCouponDto, headers);
-//    }
-//    /**
-//     * 购买优惠券-查询是否购买成功
-//     */
-//    @ApiOperation("购买优惠券-查询是否购买成功")
-//    @GetMapping("/coupon/check")
-//    public ResponseJson couponCheck(Integer couponRecordId) {
-//        if (null == couponRecordId) {
-//            return ResponseJson.error("购买记录id不能为空!", null);
-//        }
-//        return payNonOrderService.couponCheck(couponRecordId);
-//    }
-//
-//
-//    /**
-//     * 购买优惠券-支付回调
-//     */
-//    @ApiOperation("购买优惠券-支付回调")
-//    @GetMapping("/coupon/callback")
-//    public String couponCallback(String data) throws NoSuchAlgorithmException, InvalidKeySpecException {
-//        if (StringUtils.isBlank(data)) {
-//            return "回调参数失败";
-//        }
-//        return payNonOrderService.couponCallback(data);
-//    }
-//
-//    /**
-//     * 购买优惠券-查询是否购买成功
-//     */
-//    @ApiOperation("购买超级会员-查询是否购买成功")
-//    @GetMapping("/vip/check")
-//    public ResponseJson vipCheck(Integer recordId) {
-//        if (null == recordId) {
-//            return ResponseJson.error("购买记录id不能为空!", null);
-//        }
-//        return payNonOrderService.vipCheck(recordId);
-//    }
-//
-//
-//    /**
-//     * 开通认证通会员-微信线上支付
-//     * @param payVipDto {
-//     *                  vipRecordId   会员购买记录Id
-//     *                  returnUrl     页面回调地址
-//     *                  code          微信小程序code
-//     *                  state         微信公众号state参数
-//     * }
-//     */
-//    @ApiOperation("开通认证通会员-微信线上支付")
-//    @PostMapping("/auth/vip/wechat")
-//    public ResponseJson<JSONObject> payAuthVipByWeChat(PayVipDto payVipDto, @RequestHeader HttpHeaders headers){
-//        if (null == payVipDto.getVipRecordId()) {
-//            return ResponseJson.error("会员购买记录Id不能为空!", null);
-//        }
-//        if (StringUtils.isEmpty(payVipDto.getCode())) {
-//            return ResponseJson.error("微信code不能为空!", null);
-//        }
-//        return payNonOrderService.payAuthVipByWeChat(payVipDto, headers);
-//    }
-//
-//    /**
-//     * 开通认证通会员-支付宝线上支付
-//     * @param payVipDto {
-//     *                  vipRecordId   会员购买记录Id
-//     *                  returnUrl     页面回调地址
-//     * }
-//     */
-//    @ApiOperation("开通认证通会员-支付宝线上支付")
-//    @PostMapping("/auth/vip/alipay")
-//    public ResponseJson<JSONObject> payAuthVipByAlipay(PayVipDto payVipDto, @RequestHeader HttpHeaders headers){
-//        if (null == payVipDto.getVipRecordId()) {
-//            return ResponseJson.error("会员购买记录Id不能为空!", null);
-//        }
-//        if (StringUtils.isEmpty(payVipDto.getReturnUrl())) {
-//            return ResponseJson.error("回调地址不能为空!", null);
-//        }
-//        return payNonOrderService.payAuthVipByAlipay(payVipDto, headers);
-//    }
-//
-//    /**
-//     * 开通认证通会员-银联线上支付
-//     * @param payVipDto {
-//     *               vipRecordId   会员购买记录Id
-//     *               returnUrl     页面回调地址
-//     *               bankCode      银行编码(银联支付使用)
-//     *               userType      用户类型(银联支付使用)企业:ENTERPRISE,个人:USER
-//     * }
-//     */
-//    @ApiOperation("开通认证通会员-银联线上支付")
-//    @PostMapping("/auth/vip/union")
-//    public ResponseJson<JSONObject> payAuthVipByUnionPay(PayVipDto payVipDto, @RequestHeader HttpHeaders headers){
-//        if (null == payVipDto.getVipRecordId()) {
-//            return ResponseJson.error("会员购买记录Id不能为空!", null);
-//        }
-//        if (StringUtils.isEmpty(payVipDto.getReturnUrl())) {
-//            return ResponseJson.error("回调地址不能为空!", null);
-//        }
-//        if (StringUtils.isEmpty(payVipDto.getBankCode())) {
-//            return ResponseJson.error("银行编码不能为空!", null);
-//        }
-//        if (StringUtils.isEmpty(payVipDto.getUserType())) {
-//            return ResponseJson.error("银行用户类型不能为空!", null);
-//        }
-//        return payNonOrderService.payAuthVipByUnionPay(payVipDto, headers);
-//    }
-//
-//    /**
-//     * 开通认证通会员-支付回调
-//     */
-//    @ApiOperation("开通认证通会员-支付回调")
-//    @GetMapping("/auth/vip/callback")
-//    public String paymentAuthVipCallback(String data) throws NoSuchAlgorithmException, InvalidKeySpecException {
-//        if (StringUtils.isBlank(data)) {
-//            return "回调参数失败";
-//        }
-//        return payNonOrderService.paymentAuthVipCallback(data);
-//    }
-//
-//    /**
-//     * 开通认证通会员-线上退款
-//     * @param payVipDto {
-//     *               vipRecordId   会员购买记录Id
-//     *               code          退款口令
-//     * }
-//     */
-//    @ApiOperation("开通认证通会员-线上退款)")
-//    @PostMapping("/auth/vip/online/refund")
-//    public ResponseJson<JSONObject> authVipOnlineRefund(PayVipDto payVipDto) throws NoSuchAlgorithmException, InvalidKeySpecException {
-//        if (null == payVipDto.getVipRecordId()) {
-//            return ResponseJson.error("会员购买记录Id不能为空!", null);
-//        }
-//        if (StringUtils.isEmpty(payVipDto.getCode()) || !"SVIP".equals(payVipDto.getCode())) {
-//            return ResponseJson.error("退款口令code不正确!", null);
-//        }
-//        return payNonOrderService.superVipOnlineRefund(payVipDto);
-//    }
-//
-//    @ApiOperation("购买认证通会员-查询是否购买成功")
-//    @GetMapping("/auth/vip/check")
-//    public ResponseJson authVipCheck(Integer vipRecordId) {
-//        if (null == vipRecordId) {
-//            return ResponseJson.error("购买记录id不能为空!", null);
-//        }
-//        return payNonOrderService.authVipCheck(vipRecordId);
-//    }
-//}

+ 0 - 318
src/main/java/com/caimei365/order/controller/PayOrderApi.java

@@ -1,318 +0,0 @@
-//package com.caimei365.order.controller;
-//
-//import com.alibaba.fastjson.JSONObject;
-//import com.caimei365.order.model.ResponseJson;
-//import com.caimei365.order.model.dto.PayDto;
-//import com.caimei365.order.model.dto.PayLinkDto;
-//import com.caimei365.order.service.PayOrderService;
-//import io.swagger.annotations.Api;
-//import io.swagger.annotations.ApiImplicitParam;
-//import io.swagger.annotations.ApiImplicitParams;
-//import io.swagger.annotations.ApiOperation;
-//import lombok.RequiredArgsConstructor;
-//import org.apache.commons.lang3.StringUtils;
-//import org.springframework.http.HttpHeaders;
-//import org.springframework.web.bind.annotation.*;
-//
-//import javax.servlet.http.HttpServletResponse;
-//import java.io.IOException;
-//import java.security.NoSuchAlgorithmException;
-//import java.security.spec.InvalidKeySpecException;
-//import java.util.Map;
-//
-///**
-// * 订单支付API
-// *
-// * @author : Charles
-// * @date : 2021/7/29
-// */
-//@Api(tags="订单支付API")
-//@RestController
-//@RequiredArgsConstructor
-//@RequestMapping("/order/pay")
-//public class PayOrderApi {
-//    private final PayOrderService payOrderService;
-//
-//    /**
-//     * 订单支付前效验付款规则
-//     */
-//    @ApiOperation("订单支付前效验付款规则(旧:/order/paymentValidation)")
-//    @ApiImplicitParam(required = false, name = "orderId", value = "订单Id")
-//    @GetMapping("/check")
-//    public ResponseJson<Map<String, Object>> paymentValidation(Integer orderId) {
-//        if (null == orderId) {
-//            return ResponseJson.error("订单Id不能为空!", null);
-//        }
-//        return payOrderService.payBeforeCheck(orderId);
-//    }
-//
-//    /**
-//     * 订单支付,余额抵扣
-//     * @param payDto {
-//     *                orderId      订单ID
-//     * }
-//     */
-//    @ApiOperation("订单支付,余额抵扣(旧:/order/balanceDeduction)")
-//    @PostMapping("/balance/deduction")
-//    public ResponseJson<Map<String, Object>> balanceDeduction(PayDto payDto){
-//        if (null == payDto.getOrderId()) {
-//            return ResponseJson.error("订单Id不能为空!", null);
-//        }
-//        return payOrderService.balanceDeduction(payDto.getOrderId());
-//    }
-//
-//    /**
-//     * 获取线上支付全局开关状态
-//     */
-//    @ApiOperation("获取线上支付全局开关状态(旧:/PayOrder/onLineSwitch)")
-//    @GetMapping("/online/switch")
-//    public ResponseJson<Integer> getPayOnLineSwitch() {
-//        return payOrderService.getPayOnLineSwitch();
-//    }
-//
-//    /**
-//     * 收银台数据显示
-//     */
-//    @ApiOperation("收银台数据(旧:/PayOrder/checkoutCounter)")
-//    @ApiImplicitParam(required = false, name = "orderId", value = "订单Id")
-//    @GetMapping("/checkout/counter")
-//    public ResponseJson<Map<String, Object>> getCheckoutCounter(Integer orderId) {
-//        if (null == orderId) {
-//            return ResponseJson.error("订单Id不能为空!", null);
-//        }
-//        return payOrderService.getCheckoutCounter(orderId);
-//    }
-//
-//
-//    /**
-//     *  生成网银支付链接
-//     * @param payLinkDto {vvv
-//     *                   orderId       订单ID
-//     *                   vipRecordId   会员购买记录Id
-//     * }
-//     */
-//    @ApiOperation("生成网银支付链接(旧:/PayOrder/payLink)")
-//    @PostMapping("/link")
-//    public ResponseJson<String> getPayLink(PayLinkDto payLinkDto) {
-//        if (null == payLinkDto.getOrderId() && null == payLinkDto.getVipRecordId() && null == payLinkDto.getAuthVipRecordId()) {
-//            return ResponseJson.error("订单Id和会员购买记录Id和认证通会员购买记录Id不能同时为空!", null);
-//        }
-//        if (null != payLinkDto.getOrderId() && null != payLinkDto.getVipRecordId()) {
-//            return ResponseJson.error("订单Id和会员购买记录Id不能同时出现!", null);
-//        }
-//        if (null != payLinkDto.getAuthVipRecordId() && null != payLinkDto.getVipRecordId()) {
-//            return ResponseJson.error("认证通会员购买记录Id和会员购买记录Id不能同时出现!", null);
-//        }
-//        if (null != payLinkDto.getOrderId() && null != payLinkDto.getAuthVipRecordId()) {
-//            return ResponseJson.error("订单Id和认证通会员购买记录Id不能同时出现!", null);
-//        }
-//        return payOrderService.getPayLink(payLinkDto);
-//    }
-//
-//    /**
-//     * 支付链接重定向到页面
-//     * @param linkLogo 链接标识
-//     */
-//    @ApiOperation("支付链接重定向到页面(旧:/PayOrder/jumpPage)")
-//    @ApiImplicitParam(required = false, name = "linkLogo", value = "链接标识")
-//    @GetMapping("/link/jump")
-//    public void jumpPayPage(String linkLogo, HttpServletResponse response) throws IOException {
-//        payOrderService.jumpPayPage(linkLogo, response);
-//    }
-//
-//    /**
-//     * 重定向页面的支付数据
-//     */
-//    @ApiOperation("重定向页面的支付数据(旧:/PayOrder/linkData)")
-//    @GetMapping("/link/data")
-//    public ResponseJson<Map<String, Object>> linkPayData(String linkLogo) {
-//        if (StringUtils.isBlank(linkLogo)) {
-//            return ResponseJson.error("链接标识不能为空!", null);
-//        }
-//        return payOrderService.linkPayData(linkLogo);
-//    }
-//
-//    /**
-//     * 微信线上支付
-//     * @param payDto {
-//     *               orderId      订单ID
-//     *               payAmount     支付金额,单位分,必须大于2
-//     *               returnUrl     页面回调地址
-//     *               code          微信小程序code
-//     *               state         微信公众号state参数
-//     * }
-//     */
-//    @ApiOperation("微信线上支付(旧:/PayOrder/miniWxPay)")
-//    @PostMapping("/wechat")
-//    public ResponseJson<JSONObject> payByWeChat(PayDto payDto, @RequestHeader HttpHeaders headers){
-//        if (null == payDto.getOrderId()) {
-//            return ResponseJson.error("订单Id不能为空!", null);
-//        }
-//        if (null == payDto.getPayAmount() || payDto.getPayAmount() < 2) {
-//            return ResponseJson.error("支付金额不正确!", null);
-//        }
-//        if (StringUtils.isEmpty(payDto.getCode())) {
-//            return ResponseJson.error("微信code不能为空!", null);
-//        }
-//        return payOrderService.payByWeChat(payDto, headers);
-//    }
-//
-//    /**
-//     * 支付宝线上支付
-//     * @param payDto {
-//     *               orderId      订单ID
-//     *               payAmount     支付金额,单位分,必须大于2
-//     *               returnUrl     页面回调地址
-//     * }
-//     */
-//    @ApiOperation("支付宝线上支付(旧:/PayOrder/pcMallPay[ALIPAY])")
-//    @PostMapping("/alipay")
-//    public ResponseJson<JSONObject> payByAlipay(PayDto payDto, @RequestHeader HttpHeaders headers){
-//        if (null == payDto.getOrderId()) {
-//            return ResponseJson.error("订单Id不能为空!", null);
-//        }
-//        if (null == payDto.getPayAmount() || payDto.getPayAmount() < 2) {
-//            return ResponseJson.error("支付金额不正确!", null);
-//        }
-//        if (StringUtils.isEmpty(payDto.getReturnUrl())) {
-//            return ResponseJson.error("回调地址不能为空!", null);
-//        }
-//        return payOrderService.payByAlipay(payDto, headers);
-//    }
-//
-//    /**
-//     * 银联线上支付
-//     * @param payDto {
-//     *               orderId       订单ID
-//     *               payAmount     支付金额,单位分,必须大于2
-//     *               returnUrl     页面回调地址
-//     *               bankCode      银行编码(银联支付使用)
-//     *               userType      用户类型(银联支付使用)企业:ENTERPRISE,个人:USER
-//     * }
-//     */
-//    @ApiOperation("银联线上支付(旧:/PayOrder/pcMallPay[UNIONPAY])")
-//    @PostMapping("/union")
-//    public ResponseJson<JSONObject> payByUnionPay(PayDto payDto, @RequestHeader HttpHeaders headers){
-//        if (null == payDto.getOrderId()) {
-//            return ResponseJson.error("订单Id不能为空!", null);
-//        }
-//        if (null == payDto.getPayAmount() || payDto.getPayAmount() < 2) {
-//            return ResponseJson.error("支付金额不正确!", null);
-//        }
-//        if (StringUtils.isEmpty(payDto.getReturnUrl())) {
-//            return ResponseJson.error("回调地址不能为空!", null);
-//        }
-//        if (StringUtils.isEmpty(payDto.getBankCode())) {
-//            return ResponseJson.error("银行编码不能为空!", null);
-//        }
-//        if (StringUtils.isEmpty(payDto.getUserType())) {
-//            return ResponseJson.error("银行用户类型不能为空!", null);
-//        }
-//        return payOrderService.payByUnionPay(payDto, headers);
-//    }
-//
-//    /**
-//     * 银联线上支付
-//     * @param payDto {
-//     *               orderId       订单ID
-//     *               payAmount     支付金额,单位分,必须大于1200(银联转账金额12)
-//     * }
-//     */
-//    @ApiOperation("银联转账")
-//    @PostMapping("/transfer/union")
-//    public ResponseJson<JSONObject> payByUnion(PayDto payDto, @RequestHeader HttpHeaders headers){
-//        if (null == payDto.getOrderId()) {
-//            return ResponseJson.error("订单Id不能为空!", null);
-//        }
-//        if (null == payDto.getPayAmount() || payDto.getPayAmount() < 1200) {
-//            return ResponseJson.error("支付金额不能小于手续费!", null);
-//        }
-//        return payOrderService.payByUnion(payDto, headers);
-//    }
-//
-//    /**
-//     * 支付异步通知回调
-//     */
-//    @ApiOperation("支付异步通知回调(旧:/PayOrder/paymentCallback)")
-//    @GetMapping("/callback")
-//    public String paymentCallback(String data) throws NoSuchAlgorithmException, InvalidKeySpecException {
-//        if (StringUtils.isBlank(data)) {
-//            return "回调参数失败";
-//        }
-//        return payOrderService.paymentCallback(data);
-//    }
-//
-//    /**
-//     * 判断此次支付是否完成
-//     * @param orderId           订单id
-//     * @param paySuccessCounter 付款次数
-//     */
-//    @ApiOperation("判断此次支付是否完成(旧:/PayOrder/payWhetherSuccess)")
-//    @ApiImplicitParams({
-//            @ApiImplicitParam(required = false, name = "orderId", value = "订单id"),
-//            @ApiImplicitParam(required = false, name = "paySuccessCounter", value = "付款次数")
-//    })
-//    @GetMapping("/result/check")
-//    public ResponseJson<String> payWhetherSuccess(Integer orderId, Integer paySuccessCounter) {
-//        if (null == orderId) {
-//            return ResponseJson.error("订单Id不能为空!", null);
-//        }
-//        if (null == paySuccessCounter) {
-//            return ResponseJson.error("付款次数不能为空!", null);
-//        }
-//        return payOrderService.payWhetherSuccess(orderId, paySuccessCounter);
-//    }
-//
-//    /**
-//     * 查询本次支付订单结果
-//     * @param mbOrderId 平台唯一流水号
-//     */
-//    @ApiOperation("查询本次支付订单结果(旧:/PayOrder/findOrderStatus)")
-//    @ApiImplicitParam(required = false, name = "mbOrderId", value = "平台唯一流水号")
-//    @GetMapping("/result/json")
-//    public ResponseJson<JSONObject> getPayOrderResult(String mbOrderId) {
-//        if (null == mbOrderId) {
-//            return ResponseJson.error("平台唯一流水号不能为空!", null);
-//        }
-//        return payOrderService.getPayOrderResult(mbOrderId);
-//    }
-//
-//    /**
-//     * 延时分账异步通知回调
-//     */
-//    @ApiOperation("延时分账异步通知回调(旧:/PayOrder/delayedSplittingCallback)")
-//    @GetMapping("/delay/split/callback")
-//    public String delayedSplittingCallback(String data) {
-//        if (StringUtils.isBlank(data)) {
-//            return "回调参数失败";
-//        }
-//        return payOrderService.delayedSplittingCallback(data);
-//    }
-//
-//    @ApiOperation("银行通道码获取")
-//    @GetMapping("/bankcode")
-//    public ResponseJson<JSONObject> bankcode() {
-//        return payOrderService.bankCode();
-//    }
-//
-////    /**
-////     * 手动临时分账
-////     */
-////    @PostMapping("/temp/split")
-////    public String temporarySplitting(){
-////        return payOrderService.temporarySplitting();
-////    }
-////
-////    /**
-////     * 手动临时分账异步通知回调
-////     */
-////    @ApiOperation("手动临时分账异步通知回调")
-////    @GetMapping("/temp/split/callback")
-////    public String tempSplittingCallback(String data) {
-////        if (StringUtils.isBlank(data)) {
-////            return "回调参数失败";
-////        }
-////        return payOrderService.tempSplittingCallback(data);
-////    }
-//
-//}

+ 28 - 4
src/main/java/com/caimei365/order/controller/ReceiptApi.java

@@ -165,7 +165,7 @@ public class ReceiptApi {
      */
     @ApiOperation("获取收款列表")
     @ApiImplicitParams({
-            @ApiImplicitParam(required = false, name = "receiptType", value = "收款款项类型:1订单款,2非订单款,3返佣款 4订单款或者非订单款(因财务阶段无法区分订单非订单), 5供应商退款"),
+            @ApiImplicitParam(required = false, name = "receiptType", value = "收款款项类型:1订单款,2非订单款,3返佣款 4订单款或者非订单款(因财务阶段无法区分订单非订单), 5供应商退款, 6返佣服务费, 7返佣服务费欠款"),
             @ApiImplicitParam(required = false, name = "receiptStatus", value = "收款状态:1待确认、2已确认(待审核)、3审核通过、4审核未通过、5收款撤销【线上支付成功为审核通过】"),
             @ApiImplicitParam(required = false, name = "smsContent", value = "收款短信"),
             @ApiImplicitParam(required = false, name = "startDate", value = "筛选开始时间"),
@@ -255,9 +255,9 @@ public class ReceiptApi {
     })
     @GetMapping("/detail/orders")
     public ResponseJson<PageInfo<ShopOrderVo>> getReceiptOrderList(Integer id, Integer type, Integer organizeId, String orderReceiptStatus, String keyword,
-                                                               @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
-                                                               @RequestParam(value = "pageSize", defaultValue = "10") int pageSize,
-                                                               @RequestHeader HttpHeaders headers) {
+                                                                   @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
+                                                                   @RequestParam(value = "pageSize", defaultValue = "10") int pageSize,
+                                                                   @RequestHeader HttpHeaders headers) {
         return receiptService.getReceiptOrderList(id, type, organizeId, orderReceiptStatus, keyword, pageNum, pageSize, headers);
     }
 
@@ -323,6 +323,30 @@ public class ReceiptApi {
         return receiptService.getRebateShopOrderList(id, shopName, pageNum, pageSize, headers);
     }
 
+    @ApiOperation("确认收款-平台服务费")
+    @PostMapping("/confirm/platform")
+    public ResponseJson<Void> receiptPlatformFee(ReceiptOperateDto receiptOperateDto, @RequestHeader HttpHeaders headers) {
+        if (null == receiptOperateDto.getId() || receiptOperateDto.getId() <= 0) {
+            return ResponseJson.error("收款Id不能为空", null);
+        }
+        if (null == receiptOperateDto.getShopOrderId() || receiptOperateDto.getShopOrderId() <= 0) {
+            return ResponseJson.error("关联平台服务费子订单ID不能为空", null);
+        }
+        return receiptService.receiptPlatformFee(receiptOperateDto, headers, 1);
+    }
+
+    @ApiOperation("确认收款-平台服务费欠款")
+    @PostMapping("/confirm/bill")
+    public ResponseJson<Void> receiptPlatformBill(ReceiptOperateDto receiptOperateDto, @RequestHeader HttpHeaders headers) {
+        if (null == receiptOperateDto.getId() || receiptOperateDto.getId() <= 0) {
+            return ResponseJson.error("收款Id不能为空", null);
+        }
+        if (null == receiptOperateDto.getShopOrderId() || receiptOperateDto.getShopOrderId() <= 0) {
+            return ResponseJson.error("关联平台服务费欠款子订单ID不能为空", null);
+        }
+        return receiptService.receiptPlatformFee(receiptOperateDto, headers, 2);
+    }
+
     /**
      * 确认收款-关联订单款
      * crm:/api/user/receivables/confirmReceipt

+ 4 - 0
src/main/java/com/caimei365/order/mapper/ReceiptMapper.java

@@ -298,4 +298,8 @@ public interface ReceiptMapper {
     void insertPutAwayFeeRecordForNew(PutAwayFeePo history);
 
     void insertPutAwayFeeRecordForOld(PutAwayFeePo history);
+
+    Double findCmCost(Integer shopOrderId);
+
+    void updateReceiptStatus(Integer shopOrderId);
 }

+ 1 - 1
src/main/java/com/caimei365/order/model/po/OrderReceiptRelationPo.java

@@ -22,7 +22,7 @@ public class OrderReceiptRelationPo implements Serializable {
      */
     private Integer id;
     /**
-     * 关系类型:1返佣订单(返佣款)、2非返佣订单(订单款或者非订单款)、3超级会员款、4二手商品上架费,5认证通会员款
+     * 关系类型:1返佣订单(返佣款或供应商退款)、2非返佣订单(订单款或者非订单款)、3超级会员款、4二手商品上架费、5认证通会员款、6优惠券购买费、7平台服务费
      */
     private Integer relationType;
     /**

+ 1 - 1
src/main/java/com/caimei365/order/model/po/RebateRecordPo.java

@@ -15,7 +15,7 @@ public class RebateRecordPo implements Serializable {
     private static final long serialVersionUId = 1L;
     private Integer id;
     /**
-     * 记录类型:1供应商欠款录入(口头返佣)、2应付供应商抵扣(不打款欠款抵扣)(付款抵扣), 3供应商退款给采美退款到余额
+     * 记录类型:1供应商欠款录入(口头返佣)、2应付供应商抵扣(不打款欠款抵扣)(付款抵扣), 3供应商退款给采美退款到余额,4平台服务费欠款
      */
     private Integer type;
     /**

+ 3 - 2
src/main/java/com/caimei365/order/model/po/ReceiptPo.java

@@ -31,11 +31,12 @@ public class ReceiptPo implements Serializable {
      */
     private Integer payWay;
     /**
-     * 付款类型:1建设银行7297、2广发银行0115、3中信银行7172、4中信银行0897、5中信银行0897-财付通、6中信银行0897-支付宝、7线上-支付宝、8线上-微信支付、9线上-快钱支付、10口头返佣、11广发银行5461、12PC-B2B网银、13PC-微信支付、14PC-支付宝、15小程序-微信支付、16余额抵扣、17PC-B2C网银
+     * 付款类型:1建设银行7297、2广发银行0115、3中信银行7172、4中信银行0897、5中信银行0897-财付通、6中信银行0897-支付宝、7线上-支付宝、
+     * 8线上-微信支付、9线上-快钱支付、10口头返佣、11广发银行5461、12PC-B2B网银、13PC-微信支付、14PC-支付宝、15小程序-微信支付、16余额抵扣、17PC-B2C网银
      */
     private Integer payType;
     /**
-     * 收款款项类型:1订单款,2非订单款,3返佣款 4订单款或者非订单款(因财务阶段无法区分订单非订单), 5供应商退款
+     * 收款款项类型:1订单款,2非订单款,3返佣款 4订单款或者非订单款(因财务阶段无法区分订单非订单), 5供应商退款, 10平台服务费
      */
     private Integer receiptType;
     /**

+ 11 - 8
src/main/java/com/caimei365/order/service/ReceiptService.java

@@ -76,7 +76,7 @@ public interface ReceiptService {
      * @param pageNum       页码
      * @param pageSize      每页数量
      */
-    ResponseJson<PageInfo<ReceiptVo>> getReceiptList(Integer newReceiptType,Integer receiptType, Integer receiptStatus, String smsContent, String startDate, String endDate, int pageNum, int pageSize, HttpHeaders headers);
+    ResponseJson<PageInfo<ReceiptVo>> getReceiptList(Integer newReceiptType, Integer receiptType, Integer receiptStatus, String smsContent, String startDate, String endDate, int pageNum, int pageSize, HttpHeaders headers);
 
     /**
      * 收款详情(订单/非订单)
@@ -192,10 +192,10 @@ public interface ReceiptService {
      * crm:/api/user/rebate/verballyReceipt
      *
      * @param receiptOperateDto {
-     *                            verbalAmount: 口头返佣佣金
-     *                            shopOrderId: 关联返佣子订单ID
-     *                            rebateRemarks:关联返佣备注
-     *                            }
+     *                          verbalAmount: 口头返佣佣金
+     *                          shopOrderId: 关联返佣子订单ID
+     *                          rebateRemarks:关联返佣备注
+     *                          }
      */
     ResponseJson<Integer> associateVerbalRebate(ReceiptOperateDto receiptOperateDto, HttpHeaders headers);
 
@@ -208,18 +208,21 @@ public interface ReceiptService {
      */
     ResponseJson<Void> receiptAudit(Integer id, Integer receiptStatus, String reviewReason, HttpHeaders headers);
 
-    ResponseJson<PageInfo<ShopOrderVo>> ReceiptDetailVo(String keyWord,int pageNum, int pageSize);
+    ResponseJson<PageInfo<ShopOrderVo>> ReceiptDetailVo(String keyWord, int pageNum, int pageSize);
 
-    ResponseJson<PageInfo<ShopOrderVo>> ReceiptDetail(String keyWord,int pageNum, int pageSize);
+    ResponseJson<PageInfo<ShopOrderVo>> ReceiptDetail(String keyWord, int pageNum, int pageSize);
+
+    ResponseJson<PageInfo<ShopOrderVo>> ReceiptDetails(String keyWord, int pageNum, int pageSize);
 
-    ResponseJson<PageInfo<ShopOrderVo>> ReceiptDetails(String keyWord,int pageNum, int pageSize);
     /**
      * 微信收款信息推送(待确认超时)
      */
     void sendWechatMsgConfirmTimeout(String accessToken);
+
     /**
      * 微信收款信息推送(待审核超时)
      */
     void sendWechatMsgAuditTimeout(String accessToken);
 
+    ResponseJson<Void> receiptPlatformFee(ReceiptOperateDto receiptOperateDto, HttpHeaders headers, Integer flag);
 }

+ 139 - 40
src/main/java/com/caimei365/order/service/impl/ReceiptServiceImpl.java

@@ -578,7 +578,7 @@ public class ReceiptServiceImpl implements ReceiptService {
      * --客服:     非订单款,返佣款,订单款
      * --财务:      不能进入详情,操作权限可配置
      *
-     * @param receiptType   收款款项类型:1订单款,2非订单款,3返佣款 5供应商退款
+     * @param receiptType   收款款项类型:1订单款,2非订单款,3返佣款 5供应商退款、6返佣服务费、7返佣服务费欠款(6/7查出两个type)
      * @param receiptStatus 收款状态:1待确认、2已确认(待审核)、3审核通过、4审核未通过、5收款撤销【线上支付成功为审核通过】
      * @param smsContent    收款短信
      * @param startDate     筛选开始时间
@@ -1005,12 +1005,12 @@ public class ReceiptServiceImpl implements ReceiptService {
         // 供应商名称
         String shopName = baseMapper.getShopNameById(shopOrderVo.getShopId());
         shopOrderVo.setShopName(shopName);
-            List<OrderProductVo> orderProductList = orderCommonMapper.getShopOrderProduct(shopOrderVo.getShopOrderId());
-            for (OrderProductVo orderProduct : orderProductList) {
-                if (null != orderProduct.getTotalAddedValueTax()) {
-                    totalAddedValueTax = MathUtil.add(totalAddedValueTax, orderProduct.getTotalAddedValueTax()).doubleValue();
-                }
+        List<OrderProductVo> orderProductList = orderCommonMapper.getShopOrderProduct(shopOrderVo.getShopOrderId());
+        for (OrderProductVo orderProduct : orderProductList) {
+            if (null != orderProduct.getTotalAddedValueTax()) {
+                totalAddedValueTax = MathUtil.add(totalAddedValueTax, orderProduct.getTotalAddedValueTax()).doubleValue();
             }
+        }
         shopOrderVo.setOrderProductList(orderProductList);
         // }
         shopOrderVo.setTotalAddedValueTax(totalAddedValueTax);
@@ -1088,27 +1088,27 @@ public class ReceiptServiceImpl implements ReceiptService {
         // 订单商品信息
         for (ShopOrderVo shopOrder : shopOrderList) {*/
         double needPayAmount = 0d;
-            // 供应商名称
-            String shopName = baseMapper.getShopNameById(shopOrder.getShopId());
-            shopOrder.setShopName(shopName);
-            needPayAmount += (shopOrder.getNeedPayAmount() == null ? 0d : shopOrder.getNeedPayAmount());
-            List<OrderProductVo> orderProductList = orderCommonMapper.getShopOrderProduct(shopOrder.getShopOrderId());
-            for (OrderProductVo orderProduct : orderProductList) {
-                orderProduct.setImage(ImageUtil.getImageUrl("product", orderProduct.getImage(), domain));
-            }
-            shopOrder.setOrderProductList(orderProductList);
-            List<Integer> rebatePayType = receiptMapper.getRebatePayTypeList(shopOrder.getShopOrderId());
-            if (CollectionUtils.isEmpty(rebatePayType)) {
-                // 没返佣
-                shopOrder.setReceiptedFlag(0);
-            } else if (10 == rebatePayType.get(0)) {
-                // 口头返佣
-                shopOrder.setReceiptedType(10);
-                shopOrder.setReceiptedFlag(1);
-            } else {
-                shopOrder.setReceiptedType(1);
-                shopOrder.setReceiptedFlag(1);
-            }
+        // 供应商名称
+        String shopName = baseMapper.getShopNameById(shopOrder.getShopId());
+        shopOrder.setShopName(shopName);
+        needPayAmount += (shopOrder.getNeedPayAmount() == null ? 0d : shopOrder.getNeedPayAmount());
+        List<OrderProductVo> orderProductList = orderCommonMapper.getShopOrderProduct(shopOrder.getShopOrderId());
+        for (OrderProductVo orderProduct : orderProductList) {
+            orderProduct.setImage(ImageUtil.getImageUrl("product", orderProduct.getImage(), domain));
+        }
+        shopOrder.setOrderProductList(orderProductList);
+        List<Integer> rebatePayType = receiptMapper.getRebatePayTypeList(shopOrder.getShopOrderId());
+        if (CollectionUtils.isEmpty(rebatePayType)) {
+            // 没返佣
+            shopOrder.setReceiptedFlag(0);
+        } else if (10 == rebatePayType.get(0)) {
+            // 口头返佣
+            shopOrder.setReceiptedType(10);
+            shopOrder.setReceiptedFlag(1);
+        } else {
+            shopOrder.setReceiptedType(1);
+            shopOrder.setReceiptedFlag(1);
+        }
         // }
         // order.setShopOrderList(shopOrderList);
         //收款金额
@@ -1215,7 +1215,7 @@ public class ReceiptServiceImpl implements ReceiptService {
                     shopOrderVo.setRealPay(getUnPayMoney(shopOrderVo, true));
                     // 收款金额 = 订单应付金额
                     if (0 == MathUtil.compare(receiptPo.getReceiptAmount(), shopOrderVo.getRealPay())) {
-                        log.info("===shopOrderVo.getRealPay()====111==="+shopOrderVo.getRealPay());
+                        log.info("===shopOrderVo.getRealPay()====111===" + shopOrderVo.getRealPay());
                         //确认关联
                         receiptPo.setConfirmType(4);
                         relation.setReceiptId(receiptPo.getId());
@@ -1225,7 +1225,7 @@ public class ReceiptServiceImpl implements ReceiptService {
                     }
                     // 收款金额 < 订单应付金额
                     else if (-1 == MathUtil.compare(receiptPo.getReceiptAmount(), shopOrderVo.getRealPay())) {
-                        log.info("===shopOrderVo.getRealPay()====222==="+shopOrderVo.getRealPay());
+                        log.info("===shopOrderVo.getRealPay()====222===" + shopOrderVo.getRealPay());
                         // 小额抹平确认
                         if (null != receiptPo.getConfirmType() && 1 == receiptPo.getConfirmType()) {
                             log.info("===小额抹平确认===");
@@ -1245,7 +1245,7 @@ public class ReceiptServiceImpl implements ReceiptService {
                     }
                     // 收款金额 > 订单应付金额
                     else if (1 == MathUtil.compare(receiptPo.getReceiptAmount(), shopOrderVo.getRealPay())) {
-                        log.info("===shopOrderVo.getRealPay()====333==="+shopOrderVo.getRealPay());
+                        log.info("===shopOrderVo.getRealPay()====333===" + shopOrderVo.getRealPay());
                         // 大额抹平确认
                         if (null != receiptPo.getConfirmType() && 2 == receiptPo.getConfirmType()) {
                             log.info("===大额抹平确认===");
@@ -1268,7 +1268,7 @@ public class ReceiptServiceImpl implements ReceiptService {
                 }
                 // 关联多个订单
                 else if (orderIDS.length > 1) {
-                    log.info("===关联多个订单==="+orderIDS);
+                    log.info("===关联多个订单===" + orderIDS);
                     // 先满足金额小的订单,如果金额相等就先满足ID较小的订单
                     List<ShopOrderVo> list = receiptMapper.getOrderListByOrderIds(orderIDS);
                     for (ShopOrderVo item : list) {
@@ -1519,8 +1519,6 @@ public class ReceiptServiceImpl implements ReceiptService {
         if (5 != receipt.getReceiptStatus() && 1 != receipt.getReceiptStatus()) {
             return ResponseJson.error("收款记录状态异常!", null);
         }
-        //删除之前与这个收款的关联
-        receiptMapper.deleteReceiptRelation(receipt.getId());
         // ReceiptVo -- copy to --> ReceiptPo
         String time = DateUtils.getDateTime();
         ReceiptPo receiptPo = new ReceiptPo();
@@ -1620,7 +1618,7 @@ public class ReceiptServiceImpl implements ReceiptService {
                 break;
             }
         }
-        receiptMapper.updateShopOrderPayStatus(shopOrderId, 3,3);
+        receiptMapper.updateShopOrderPayStatus(shopOrderId, 3, 3);
         // 订单信息
         OrderVo order = orderCommonMapper.getOrderByShopOrderId(shopOrderId);
         if (flag) {
@@ -1768,9 +1766,9 @@ public class ReceiptServiceImpl implements ReceiptService {
                     // 获取订单下子订单收款状态
                     List<Integer> orderReceipt = payOrderMapper.getReceiptStatus(shopOrderVo.getOrderId());
                     Integer sta = 1;
-                    if (orderReceipt.stream().allMatch(r -> r==3)) {
+                    if (orderReceipt.stream().allMatch(r -> r == 3)) {
                         sta = 3;
-                    } else if (orderReceipt.stream().allMatch(r -> r==1)) {
+                    } else if (orderReceipt.stream().allMatch(r -> r == 1)) {
                         sta = 1;
                     } else {
                         sta = 2;
@@ -2049,6 +2047,107 @@ public class ReceiptServiceImpl implements ReceiptService {
         }
     }
 
+    /**
+     * @param receiptOperateDto
+     * @param headers
+     * @param flag              1 平台服务费 2平台服务费欠款
+     * @return
+     */
+    @Override
+    public ResponseJson<Void> receiptPlatformFee(ReceiptOperateDto receiptOperateDto, HttpHeaders headers, Integer flag) {
+        // 检查收款用户权限: 20关联平台服务费
+        ReceiptUserVo receiptUser = checkPermissions(20, headers);
+        if (null == receiptUser) {
+            return ResponseJson.error("无权限操作!", null);
+        }
+        ReceiptVo receipt = receiptMapper.getReceiptDetail(receiptOperateDto.getId());
+        if (null == receipt) {
+            return ResponseJson.error("收款数据异常!", null);
+        }
+        // 只有在待确认 和撤销的状态下才能关联  子订单  不然就是状态出错了
+        if (5 != receipt.getReceiptStatus() && 1 != receipt.getReceiptStatus()) {
+            return ResponseJson.error("收款记录状态异常!", null);
+        }
+        // 检查关联金额是否与子订单平台服务费相等,不相等 收款金额与子订单平台服务费不相等,不能关联!
+        Double cmCost = receiptMapper.findCmCost(receiptOperateDto.getShopOrderId());
+        if (0 != MathUtil.compare(cmCost, receipt.getReceiptAmount())) {
+            return ResponseJson.error("收款金额与子订单平台服务费不相等,不能关联!", null);
+        }
+
+        // ReceiptVo -- copy to --> ReceiptPo
+        String time = DateUtils.getDateTime();
+        ReceiptPo receiptPo = new ReceiptPo();
+        BeanUtils.copyProperties(receipt, receiptPo);
+        if (2 == flag) {
+            receiptPo.setPayType(32);
+        }
+        receiptPo.setUpdateDate(time);
+        receiptPo.setReceiptType(10);
+        receiptPo.setReceiptStatus(2);
+        receiptPo.setConfirmDate(time);
+        receiptPo.setConfirmUserPermissionId(receiptUser.getId());
+        receiptMapper.updateReceipt(receiptPo);
+        /**   保存平台服务费收款关系和修改订单状态
+         *  子订单的收款状态不同于以前的返佣(返佣是在关联返佣款后,将收款状态强行置为已收款),现在的新逻辑如下:
+         *
+         * (1)如果关联平台服务费时,子订单是未收款状态,则关联后需要除了生成一条平台服务费的收款记录,还需要生成一条线下凭证的订单收款记录,
+         *      相当于是机构通过商城付了款,然后供应商才给采美付了平台服务费
+         * (2)生成订单收款记录后,将子订单的收款状态置为已收款
+         */
+        savePlatformFee(receiptOperateDto.getShopOrderId(), receiptPo.getId(), receiptUser.getId(), cmCost, flag);
+        return ResponseJson.success("关联平台服务费成功!", null);
+    }
+
+    private void savePlatformFee(Integer shopOrderId, Integer id, Integer receiptUserId, Double cmCost, Integer flag) {
+        // 检查子订单状态是否为未收款
+        ShopOrderVo shopOrderById = receiptMapper.getShopOrderById(shopOrderId);
+        OrderReceiptRelationPo relation = new OrderReceiptRelationPo();
+        relation.setDelFlag(0);
+        relation.setOrderId(shopOrderById.getOrderId());
+        relation.setShopOrderId(shopOrderId);
+        relation.setReceiptId(id);
+        relation.setRelationType(7);
+        relation.setAssociateAmount(cmCost);
+        baseMapper.insertOrderReceiptRelation(relation);
+        if (1 == shopOrderById.getReceiptStatus()) {
+            // 为服务费造的线下凭证付款数据
+            ReceiptPo receiptPo = new ReceiptPo();
+            receiptPo.setPayWay(2);
+            receiptPo.setDelFlag(0);
+            receiptPo.setReceiptDate(DateUtils.getDateTime());
+            receiptPo.setConfirmDate(DateUtils.getDateTime());
+            receiptPo.setPayType(31);
+            receiptPo.setReceiptType(1);
+            receiptPo.setReceiptStatus(3);
+            receiptPo.setConfirmDate(DateUtils.getDateTime());
+            receiptPo.setConfirmUserPermissionId(receiptUserId);
+            receiptPo.setReceiptUserPermissionId(receiptUserId);
+            receiptPo.setReviewUserPermissionId(receiptUserId);
+            receiptPo.setReceiptAmount(shopOrderById.getNeedPayAmount());
+            receiptPo.setRebateRemarks("关联服务费,人工数据");
+            receiptMapper.insertReceipt(receiptPo);
+            relation.setRelationType(2);
+            relation.setReceiptId(receiptPo.getId());
+            relation.setAssociateAmount(shopOrderById.getNeedPayAmount());
+            baseMapper.insertOrderReceiptRelation(relation);
+            // 修改订单状态为已付款
+            receiptMapper.updateReceiptStatus(shopOrderId);
+        }
+        if (2 == flag) {
+            // 当关联欠款时,造一条欠款记录
+            RebateRecordPo crr = new RebateRecordPo();
+            crr.setType(4);
+            crr.setShopId(shopOrderById.getShopId());
+            crr.setReceiptId(id);
+            crr.setRebateAmount(cmCost);
+            crr.setShopOrderId(shopOrderId.toString());
+            crr.setOperateTime(DateUtils.getTime());
+            receiptMapper.insertRebateRecord(crr);
+            // 修改该供应商的欠款金额
+            receiptMapper.updateShopRebateAmount(shopOrderById.getShopId(), cmCost);
+        }
+    }
+
     /**
      * 设置订单的款项信息
      */
@@ -2125,7 +2224,7 @@ public class ReceiptServiceImpl implements ReceiptService {
             // 佣金计算机构运费
             if (order.getPostageFlag() == 1) {
                 if (order.getPostage() > 0) {
-                    brokerage = MathUtil.add(brokerage , order.getPostage());
+                    brokerage = MathUtil.add(brokerage, order.getPostage());
                 }
             }
             shopOrder.setBrokerage(brokerage.doubleValue());
@@ -2445,10 +2544,10 @@ public class ReceiptServiceImpl implements ReceiptService {
      * 获取未支付金额
      *
      * @param shopOrderVo 子订单
-     * @param flag  (true:计算未审核金额,false:不计算)
+     * @param flag        (true:计算未审核金额,false:不计算)
      */
     private Double getUnPayMoney(ShopOrderVo shopOrderVo, Boolean flag) {
-        Double unPayMoney = shopOrderVo.getRealPay() == null?shopOrderVo.getNeedPayAmount() == null?0d:shopOrderVo.getNeedPayAmount():shopOrderVo.getRealPay();
+        Double unPayMoney = shopOrderVo.getRealPay() == null ? shopOrderVo.getNeedPayAmount() == null ? 0d : shopOrderVo.getNeedPayAmount() : shopOrderVo.getRealPay();
         Double receivedAmount = getReceivedAmount(shopOrderVo, flag);
         // 当有余额抵扣 已付金额 = 已付金额 + 余额抵扣
         if (shopOrderVo.getAccountAmount() > 0d && 1 == shopOrderVo.getUseBalanceFlag()) {
@@ -2473,7 +2572,7 @@ public class ReceiptServiceImpl implements ReceiptService {
      */
     private Double getReceivedAmount(ShopOrderVo shopOrderVo, Boolean isCountUncheckAmount) {
         // 设置待付金额
-        shopOrderVo.setRealPay(shopOrderVo.getRealPay() == null?shopOrderVo.getNeedPayAmount() == null?0d:shopOrderVo.getNeedPayAmount():shopOrderVo.getRealPay());
+        shopOrderVo.setRealPay(shopOrderVo.getRealPay() == null ? shopOrderVo.getNeedPayAmount() == null ? 0d : shopOrderVo.getNeedPayAmount() : shopOrderVo.getRealPay());
         Double receivedAmount = 0d;
         if (null != shopOrderVo) {
             // 获取订单已支付金额(待审核状态的收款也算)

+ 57 - 54
src/main/java/com/caimei365/order/service/impl/SubmitServiceImpl.java

@@ -531,7 +531,7 @@ public class SubmitServiceImpl implements SubmitService {
             if (3 == orderParamBo.getCartType()) {
                 /**
                  * todo 协销订单,在添加保存时子订单的协销Id应该保存下单协销的协销Id
-                 * todo 21年改为保存下单人userId,会对订单后续处理产生疑惑,后续应该继续保存协销id
+                 *      21年改为保存下单人userId,会对订单后续处理产生疑惑,后续应该继续保存协销id
                  */
                 shopOrder.setSpId(orderParamBo.getBuyUserId());
             }
@@ -1206,13 +1206,13 @@ public class SubmitServiceImpl implements SubmitService {
         log.info("payTotalFee.get()=------=-=-====" + payTotalFee.get());
         // 运费标志:0包邮 -1到付 1遵循运费规则
         // mainOrder.setPostageFlag(orderParamBo.getPostageFlag());
-        /*if (1 == orderParamBo.getPostageFlag() && orderParamBo.getOffsetBeans() > 0) {
-            // 订单总额 = 商品费 - 优惠券金额
-            payTotalFee.set(MathUtil.sub(productTotalFee.get(), couponAmount).doubleValue());
-        } else {
+//        if (1 == orderParamBo.getPostageFlag() && orderParamBo.getOffsetBeans() > 0) {
+//            // 订单总额 = 商品费 - 优惠券金额
+//            payTotalFee.set(MathUtil.sub(productTotalFee.get(), couponAmount).doubleValue());
+//        } else {
             // 订单总额 -= 优惠券金额
             payTotalFee.set(MathUtil.sub(payTotalFee.get(), couponAmount).doubleValue());
-        }*/
+//        }
         // 超级会员优惠
         mainOrder.setSvipFullReduction(svipFullReduction.get());
         // 商品总额
@@ -1371,53 +1371,56 @@ public class SubmitServiceImpl implements SubmitService {
             // 按分摊前的佣金排序
             shopOrderList.sort((o1, o2) -> o2.getOldBrokerage().compareTo(o1.getOldBrokerage()));
             // 前面子订单的分摊优惠总和
-            AtomicDouble allReduction = new AtomicDouble(0);
-            if (allDiscount > 0) {
-                for (int i = 0; i < shopOrderList.size(); i++) {
-                    if (i < shopOrderList.size() - 1) {
-                        //最终支付金额=分摊前支付金额oldprice-折扣*(分摊前佣金/分摊前总佣金)
-                        //优惠分摊金额
-                        double v = MathUtil.mul(allDiscount, MathUtil.div(shopOrderList.get(i).getOldBrokerage(), oldBrokerage.get()), 2).doubleValue();
-                        shopOrderList.get(i).setEachDiscount(v);
-                        //子订单真实支付金额
-                        double realPay = MathUtil.round(MathUtil.sub(shopOrderList.get(i).getOldPrice(), v), 2).doubleValue();
-                        shopOrderList.get(i).setRealPay(realPay);
-                        allReduction.set(MathUtil.add(v, allReduction.get()).doubleValue());
-                    }
-                    if (i == shopOrderList.size() - 1) {
-                        //最后一个子订单的分摊优惠金额=全优惠allDiscount-已分摊
-                        double v = MathUtil.sub(allDiscount, allReduction.get()).doubleValue();
-                        shopOrderList.get(i).setEachDiscount(v);
-                        shopOrderList.get(i).setRealPay(MathUtil.round(MathUtil.sub(shopOrderList.get(i).getOldPrice(), v), 2).doubleValue());
-                    }
-                    //有优惠金额,最高手续费=支付金额*0.65%>10取0.65,不大于取10(合利宝最高0.65%)
-                    double realPay = shopOrderList.get(i).getRealPay();
-                    //佣金
-                    double bro = MathUtil.sub(realPay, shopOrderList.get(i).getShouldPayShopAmount()).doubleValue();
-                    //成本>实付不能线上
-                    if (bro < 0) {
-                        onlinePay.set(false);
-                    } else {
-                        double WXCharge = MathUtil.mul(realPay, 0.0065, 2).doubleValue();
-                        double QuickCharge = MathUtil.mul(realPay, 0.006, 2).doubleValue();
-                        double AliCharge = MathUtil.mul(realPay, 0.0025, 2).doubleValue();
-                        double B2CCharge = MathUtil.mul(realPay, 0.002, 2).doubleValue();
-                        //佣金和手续费比较,佣金>手续费则可以走当前支付渠道
-                        //支持子订单佣金小于最小手续费时,也能进行线上支付,此时不限制支付方式(佣金大于最大手续费或小于最小手续费支持全渠道付款)
-                        String payWays = "";
-                        payWays += bro >= WXCharge ? "1" : "";
-                        payWays += bro >= AliCharge ? ",2" : "";
-                        payWays += bro >= B2CCharge ? ",3" : "";
-                        payWays += bro >= 10 ? ",4" : "";
-                        payWays += bro >= QuickCharge ? ",5" : "";
-                        //小于所有的情况下线下补手续费,开放所有渠道
-                        if ("".equals(payWays)) {
-                            payWays = "1,2,3,4,5";
-                        }
-                        shopOrderList.get(i).setOnlinePayWays(payWays);
-                    }
-                }
-            } else {
+            /** todo
+             *  当前版本为子订单下单,且优惠仅存在供应商优惠,优惠金额应从供应商成本扣除,暂时去除均摊优惠逻辑
+             */
+//            AtomicDouble allReduction = new AtomicDouble(0);
+//            if (allDiscount > 0) {
+//                for (int i = 0; i < shopOrderList.size(); i++) {
+//                    if (i < shopOrderList.size() - 1) {
+//                        //最终支付金额=分摊前支付金额oldprice-折扣*(分摊前佣金/分摊前总佣金)
+//                        //优惠分摊金额
+//                        double v = MathUtil.mul(allDiscount, MathUtil.div(shopOrderList.get(i).getOldBrokerage(), oldBrokerage.get()), 2).doubleValue();
+//                        shopOrderList.get(i).setEachDiscount(v);
+//                        //子订单真实支付金额
+//                        double realPay = MathUtil.round(MathUtil.sub(shopOrderList.get(i).getOldPrice(), v), 2).doubleValue();
+//                        shopOrderList.get(i).setRealPay(realPay);
+//                        allReduction.set(MathUtil.add(v, allReduction.get()).doubleValue());
+//                    }
+//                    if (i == shopOrderList.size() - 1) {
+//                        //最后一个子订单的分摊优惠金额=全优惠allDiscount-已分摊
+//                        double v = MathUtil.sub(allDiscount, allReduction.get()).doubleValue();
+//                        shopOrderList.get(i).setEachDiscount(v);
+//                        shopOrderList.get(i).setRealPay(MathUtil.round(MathUtil.sub(shopOrderList.get(i).getOldPrice(), v), 2).doubleValue());
+//                    }
+//                    //有优惠金额,最高手续费=支付金额*0.65%>10取0.65,不大于取10(合利宝最高0.65%)
+//                    double realPay = shopOrderList.get(i).getRealPay();
+//                    //佣金
+//                    double bro = MathUtil.sub(realPay, shopOrderList.get(i).getShouldPayShopAmount()).doubleValue();
+//                    //成本>实付不能线上
+//                    if (bro < 0) {
+//                        onlinePay.set(false);
+//                    } else {
+//                        double WXCharge = MathUtil.mul(realPay, 0.0065, 2).doubleValue();
+//                        double QuickCharge = MathUtil.mul(realPay, 0.006, 2).doubleValue();
+//                        double AliCharge = MathUtil.mul(realPay, 0.0025, 2).doubleValue();
+//                        double B2CCharge = MathUtil.mul(realPay, 0.002, 2).doubleValue();
+//                        //佣金和手续费比较,佣金>手续费则可以走当前支付渠道
+//                        //支持子订单佣金小于最小手续费时,也能进行线上支付,此时不限制支付方式(佣金大于最大手续费或小于最小手续费支持全渠道付款)
+//                        String payWays = "";
+//                        payWays += bro >= WXCharge ? "1" : "";
+//                        payWays += bro >= AliCharge ? ",2" : "";
+//                        payWays += bro >= B2CCharge ? ",3" : "";
+//                        payWays += bro >= 10 ? ",4" : "";
+//                        payWays += bro >= QuickCharge ? ",5" : "";
+//                        //小于所有的情况下线下补手续费,开放所有渠道
+//                        if ("".equals(payWays)) {
+//                            payWays = "1,2,3,4,5";
+//                        }
+//                        shopOrderList.get(i).setOnlinePayWays(payWays);
+//                    }
+//                }
+//            } else {
                 //无优惠金额
                 shopOrderList.forEach(so -> {
                     //不包含优惠的真实支付金额=子订单应付?
@@ -1450,7 +1453,7 @@ public class SubmitServiceImpl implements SubmitService {
                         so.setOnlinePayWays(payWays);
                     }
                 });
-            }
+//            }
         }
         /*
          * 整理 子订单信息cm_shop_order

+ 9 - 3
src/main/resources/mapper/ReceiptMapper.xml

@@ -160,6 +160,9 @@
             s.ableRebateAmount = (IFNULL(s.ableRebateAmount, 0) + #{amount})
         WHERE s.shopID = #{shopId}
     </update>
+    <update id="updateReceiptStatus">
+        update cm_shop_order set receiptStatus = 3 where shopOrderID = #{shopOrderId}
+    </update>
     <select id="getReceiptUserByOpenid" resultType="com.caimei365.order.model.vo.ReceiptUserVo">
         SELECT DISTINCT id, user_type AS userType, name, mobile, openid, unionId, password
         FROM cm_receipt_user
@@ -428,9 +431,6 @@
                  LEFT JOIN cm_receipt_order_relation cror ON (cror.receiptID = cdr.id AND cror.delFlag = '0')
                  LEFT JOIN cm_order co ON (cror.orderID = co.orderID AND cror.relationType = 2)
                  LEFT JOIN cm_shop_order cso ON (cror.orderID = cso.shopOrderID AND cror.relationType = 1)
-             -- AND cror.relationType = 1
-
-
         WHERE cdr.delFlag = '0'
           AND cdr.id = #{id}
     </select>
@@ -1210,4 +1210,10 @@
         ORDER BY dateStrings DESC
         LIMIT 1
     </select>
+
+    <select id="findCmCost" resultType="java.lang.Double">
+        select ifnull(sum(cmCostPrice * num),0)
+        from cm_order_product
+        where shopOrderID = #{shopOrderId}
+    </select>
 </mapper>