package com.nova.sankuai.controller.v2; import com.alibaba.fastjson.JSONObject; import com.nova.sankuai.domain.dto.*; import com.nova.sankuai.domain.entity.SystemParam; import com.nova.sankuai.domain.enums.vipservice.PayTypeEnum; import com.nova.sankuai.domain.enums.vipservice.VipCardOrderEnum; import com.nova.sankuai.domain.enums.vipservice.VipCardTypeEnum; import com.nova.sankuai.domain.vo.*; import com.nova.sankuai.domain.vo.vipcard.VipCardVo; import com.nova.sankuai.domain.vo.vipcard.VipUserStatusVo; import com.nova.sankuai.infra.constants.ResultCode; import com.nova.sankuai.infra.mapper.SystemParamMapper; import com.nova.sankuai.infra.utils.ResultJson; import com.nova.sankuai.infra.utils.UserUtil; import com.nova.sankuai.security.UserDetail; import com.nova.sankuai.service.IVipCardOrderService; import com.nova.sankuai.service.IYinShengService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import java.util.List; /** * @author weikangdi * @create 2021/12/22 */ @Api(tags = "会员服务V2") @Slf4j @RestController @RequestMapping(value = "/api/v2/vipCardOrder") @AllArgsConstructor public class VipCardOrderV2Controller { private final IVipCardOrderService vipCardOrderService; private final SystemParamMapper systemParamMapper; private final IYinShengService yinShengService; @GetMapping(value = "/getVipCardList") @ApiOperation(value = "会员卡列表查询接口") public ResultJson getVipCardList(String appId, @AuthenticationPrincipal UserDetail userDetail) { JSONObject result = vipCardOrderService.getVipCardListV2(appId, userDetail.getPhone()); return ResultJson.ok(result); } @PostMapping(value = "/buyCard") @ApiOperation(value = "购买会员卡") public ResultJson buyCard(@RequestBody VipCardVo cardVo, @AuthenticationPrincipal UserDetail userDetail) throws InterruptedException { SystemParam systemParam = systemParamMapper.getDefaultParam(); cardVo.setVipType(VipCardTypeEnum.MEMBER_SERVICE.getCode()); BuyCardParamVo paramVo; if (PayTypeEnum.LIE_XIONG.getCode().equals(systemParam.getPaymentMethod())) { String phone = userDetail.getPhone(); paramVo = vipCardOrderService.buyCard(cardVo, phone); return ResultJson.ok(paramVo); } else if (PayTypeEnum.YIN_SHENG.getCode().equals(systemParam.getPaymentMethod())) { paramVo = vipCardOrderService.buyCardByYinSheng(cardVo, userDetail); return ResultJson.ok(paramVo); } else if (PayTypeEnum.ALIPAY_SDK.getCode().equals(systemParam.getPaymentMethod()) || PayTypeEnum.ALIPAY_H5.getCode().equals(systemParam.getPaymentMethod())) { paramVo = vipCardOrderService.buyCardByAlipay(cardVo, userDetail, systemParam.getPaymentMethod()); return ResultJson.ok(paramVo); } else if (PayTypeEnum.WEI_YA.getCode().equals(systemParam.getPaymentMethod())) { paramVo = vipCardOrderService.buyCardByWeiYa(cardVo, userDetail); return ResultJson.ok(paramVo); } else if (PayTypeEnum.YIN_SHENG_FAST_PROTOCOL.getCode().equals(systemParam.getPaymentMethod())) { paramVo = vipCardOrderService.buyCardByYSProtocol(cardVo, userDetail); return ResultJson.ok(paramVo); } else if (PayTypeEnum.SHAN_TAI_FAST_PROTOCOL.getCode().equals(systemParam.getPaymentMethod())) { //原闪态支付 paramVo = vipCardOrderService.buyCardBySTProtocol(cardVo, userDetail); paramVo = vipCardOrderService.buyCardByHFBProtocol(cardVo, userDetail); return ResultJson.ok(paramVo); } else if (PayTypeEnum.BAOFU_PROTOCOL.getCode().equals(systemParam.getPaymentMethod())) {// 于2022-12-05新增:宝付预支付 paramVo = vipCardOrderService.buyCardByBfProtocol(cardVo, userDetail); return ResultJson.ok(paramVo); } return ResultJson.failure(ResultCode.SERVER_ERROR, "未找到匹配的支付方式"); } @GetMapping(value = "/getOrderStatus") @ApiOperation(value = "查询订单状态") public ResultJson getOrderStatus(String partnerThirdOrderId) { String status = vipCardOrderService.getOrderStatus(partnerThirdOrderId); if (VipCardOrderEnum.STATUS_INVALID.getCode().equals(status) || VipCardOrderEnum.STATUS_CLOSE.getCode().equals(status)) { status = VipCardOrderEnum.message(status); } return ResultJson.ok(status); } @GetMapping(value = "/checkUserStatus") @ApiOperation(value = "校验用户状态") public ResultJson checkUserStatus(@AuthenticationPrincipal UserDetail userDetail, String appId) { VipUserStatusVo result = vipCardOrderService.checkUserStatus(userDetail, appId); return ResultJson.ok(result); } @GetMapping(value = "/updateUserApprovalTime") @ApiOperation(value = "更新用户审核时间") public ResultJson updateUserApprovalTime(String appId, @AuthenticationPrincipal UserDetail userDetail) { VipUserStatusVo result = vipCardOrderService.updateUserApprovalTime(userDetail.getPhone(), appId); return ResultJson.ok(result); } @GetMapping(value = "/updateShowActivationPage") @ApiOperation(value = "更新初审页面展示") public ResultJson updateShowActivationPage(@AuthenticationPrincipal UserDetail userDetail) { vipCardOrderService.updateShowActivationPage(userDetail.getPhone()); return ResultJson.success(); } @GetMapping(value = "/getQueueVipList") @ApiOperation(value = "审核排队特权查询") public ResultJson> getQueueVipList(String appId, @AuthenticationPrincipal UserDetail userDetail) { List result = vipCardOrderService.getQueueVipList(appId, userDetail.getPhone()); return ResultJson.ok(result); } @PostMapping(value = "/buyQueueVip") @ApiOperation(value = "购买审核排队会员") public ResultJson buyQueueVip(@RequestBody VipCardVo cardVo, @AuthenticationPrincipal UserDetail userDetail) throws InterruptedException { SystemParam systemParam = systemParamMapper.getDefaultParam(); cardVo.setVipType(VipCardTypeEnum.AUDIT_QUEUE.getCode()); BuyCardParamVo paramVo; if (PayTypeEnum.YIN_SHENG.getCode().equals(systemParam.getQueuePayType())) { paramVo = vipCardOrderService.buyCardByYinSheng(cardVo, userDetail); return ResultJson.ok(paramVo); } else if (PayTypeEnum.ALIPAY_SDK.getCode().equals(systemParam.getQueuePayType()) || PayTypeEnum.ALIPAY_H5.getCode().equals(systemParam.getQueuePayType())) { paramVo = vipCardOrderService.buyCardByAlipay(cardVo, userDetail, systemParam.getQueuePayType()); return ResultJson.ok(paramVo); } else if (PayTypeEnum.YIN_SHENG_FAST_PROTOCOL.getCode().equals(systemParam.getQueuePayType())) { paramVo = vipCardOrderService.buyCardByYSProtocol(cardVo, userDetail); return ResultJson.ok(paramVo); } else if (PayTypeEnum.SHAN_TAI_FAST_PROTOCOL.getCode().equals(systemParam.getQueuePayType())) { paramVo = vipCardOrderService.buyCardBySTProtocol(cardVo, userDetail); return ResultJson.ok(paramVo); } else if (PayTypeEnum.BAOFU_PROTOCOL.getCode().equals(systemParam.getPaymentMethod())) {// 于2022-12-05新增:宝付预支付 paramVo = vipCardOrderService.buyCardByBfProtocol(cardVo, userDetail); return ResultJson.ok(paramVo); } return ResultJson.failure(ResultCode.SERVER_ERROR, "未找到匹配的支付方式"); } @PostMapping(value = "/getQueue") @ApiOperation(value = "获取审核排队名次") public ResultJson getQueue(HttpServletRequest request) { String token = request.getHeader("Authorization"); UserDetail user = UserUtil.getUser(token); QueueVo result = vipCardOrderService.getQueue(user); return ResultJson.ok(result); } @GetMapping(value = "/getQueueDefaultVip") @ApiOperation(value = "获取审核排队默认会员卡") public ResultJson getQueueDefaultVip(String appId, @AuthenticationPrincipal UserDetail userDetail) { VipCardVo result = vipCardOrderService.getQueueDefaultVip(appId, userDetail.getPhone()); return ResultJson.ok(result); } @PostMapping(value = "/buyLoanMarketVip") @ApiOperation(value = "购买贷超会员") public ResultJson buyLoanMarketVip(@RequestBody VipCardVo cardVo, @AuthenticationPrincipal UserDetail userDetail) throws InterruptedException { SystemParam systemParam = systemParamMapper.getDefaultParam(); cardVo.setVipType(VipCardTypeEnum.LOAN_MARKET_VIP.getCode()); BuyCardParamVo paramVo; if (PayTypeEnum.YIN_SHENG.getCode().equals(systemParam.getLoanVipPayType())) { paramVo = vipCardOrderService.buyCardByYinSheng(cardVo, userDetail); return ResultJson.ok(paramVo); } else if (PayTypeEnum.ALIPAY_SDK.getCode().equals(systemParam.getLoanVipPayType()) || PayTypeEnum.ALIPAY_H5.getCode().equals(systemParam.getLoanVipPayType())) { paramVo = vipCardOrderService.buyCardByAlipay(cardVo, userDetail, systemParam.getLoanVipPayType()); return ResultJson.ok(paramVo); } else if (PayTypeEnum.YIN_SHENG_FAST_PROTOCOL.getCode().equals(systemParam.getLoanVipPayType())) { paramVo = vipCardOrderService.buyCardByYSProtocol(cardVo, userDetail); return ResultJson.ok(paramVo); } else if (PayTypeEnum.SHAN_TAI_FAST_PROTOCOL.getCode().equals(systemParam.getLoanVipPayType())) { paramVo = vipCardOrderService.buyCardBySTProtocol(cardVo, userDetail); return ResultJson.ok(paramVo); } else if (PayTypeEnum.BAOFU_PROTOCOL.getCode().equals(systemParam.getPaymentMethod())) {// 于2022-12-05新增:宝付预支付 paramVo = vipCardOrderService.buyCardByBfProtocol(cardVo, userDetail); return ResultJson.ok(paramVo); } return ResultJson.failure(ResultCode.SERVER_ERROR, "未找到匹配的支付方式"); } @GetMapping(value = "/getLoanMarketVip") @ApiOperation(value = "获取贷超会员卡信息") public ResultJson getLoanMarketVip(String appId, @AuthenticationPrincipal UserDetail userDetail) { VipCardVo result = vipCardOrderService.getLoanMarketVip(appId, userDetail.getPhone()); return ResultJson.ok(result); } @GetMapping(value = "/getSeniorVip") @ApiOperation(value = "获取高级会员卡信息") public ResultJson getSeniorVip(String appId, @AuthenticationPrincipal UserDetail userDetail) { VipCardVo result = vipCardOrderService.getSeniorVip(appId, userDetail.getPhone()); return ResultJson.ok(result); } @PostMapping(value = "/buySeniorVip") @ApiOperation(value = "购买高级会员") public ResultJson buySeniorVip(@RequestBody VipCardVo cardVo, @AuthenticationPrincipal UserDetail userDetail) throws InterruptedException { SystemParam systemParam = systemParamMapper.getDefaultParam(); cardVo.setVipType(VipCardTypeEnum.SENIOR_VIP.getCode()); BuyCardParamVo paramVo; if (PayTypeEnum.YIN_SHENG.getCode().equals(systemParam.getSeniorVipPayType())) { paramVo = vipCardOrderService.buyCardByYinSheng(cardVo, userDetail); return ResultJson.ok(paramVo); } else if (PayTypeEnum.ALIPAY_SDK.getCode().equals(systemParam.getSeniorVipPayType()) || PayTypeEnum.ALIPAY_H5.getCode().equals(systemParam.getSeniorVipPayType())) { paramVo = vipCardOrderService.buyCardByAlipay(cardVo, userDetail, systemParam.getSeniorVipPayType()); return ResultJson.ok(paramVo); } else if (PayTypeEnum.YIN_SHENG_FAST_PROTOCOL.getCode().equals(systemParam.getSeniorVipPayType())) { paramVo = vipCardOrderService.buyCardByYSProtocol(cardVo, userDetail); return ResultJson.ok(paramVo); } else if (PayTypeEnum.SHAN_TAI_FAST_PROTOCOL.getCode().equals(systemParam.getSeniorVipPayType())) { paramVo = vipCardOrderService.buyCardBySTProtocol(cardVo, userDetail); return ResultJson.ok(paramVo); } else if (PayTypeEnum.BAOFU_PROTOCOL.getCode().equals(systemParam.getPaymentMethod())) {// 于2022-12-05新增:宝付预支付 paramVo = vipCardOrderService.buyCardByBfProtocol(cardVo, userDetail); return ResultJson.ok(paramVo); } return ResultJson.failure(ResultCode.SERVER_ERROR, "未找到匹配的支付方式"); } @PostMapping(value = "/checkBeforePayment") @ApiOperation(value = "支付前用户校验") public ResultJson checkBeforePayment(@RequestBody PaymentCheckDto checkDto, HttpServletRequest request) { PaymentCheckVo result = vipCardOrderService.checkBeforePayment(checkDto, request); return ResultJson.ok(result); } @PostMapping(value = "/protocolPaySignByYs") @ApiOperation(value = "银盛快捷支付签约") public ResultJson protocolPaySignByYs(@RequestBody YSProtocolSignDto signDto, HttpServletRequest request) { YSFastProtocolSignVo result = yinShengService.protocolPaySignByYs(signDto, request); return ResultJson.ok(result); } @PostMapping(value = "/protocolPaySignConfirmByYs") @ApiOperation(value = "银盛快捷支付签约确认") public ResultJson protocolPaySignConfirmByYs(@RequestBody YSProtocolSignConfirmDto signConfirmDto, HttpServletRequest request) { boolean result = yinShengService.protocolPaySignConfirmByYs(signConfirmDto, request); return ResultJson.ok(result); } @PostMapping(value = "/protocolPaySmsConfirmByYs") @ApiOperation(value = "银盛快捷支付短信确认") public ResultJson protocolPaySmsConfirmByYs(@RequestBody YSProtocolPaySmsConfirmDto smsConfirmDto) { boolean result = yinShengService.protocolPaySmsConfirmByYs(smsConfirmDto); return ResultJson.ok(result); } @PostMapping(value = "/getProtocolPaySmsByYs") @ApiOperation(value = "银盛快捷支付重新获取短信") public ResultJson getProtocolPaySmsByYs(@RequestBody YSProtocolPaySmsDto smsDto) { yinShengService.getProtocolPaySmsByYs(smsDto); return ResultJson.success(); } @PostMapping(value = "/checkProtocolSignByYs") @ApiOperation(value = "用户银盛快捷支付签约校验") public ResultJson getProtocolPaySmsByYs(HttpServletRequest request) { YSFastProtocolSignCheckVo result = yinShengService.checkProtocolSignByYs(request); return ResultJson.ok(result); } @GetMapping(value = "/getSTOrderStatus") @ApiOperation(value = "查询闪态订单状态") public ResultJson getSTOrderStatus(String partnerThirdOrderId) { // String status = vipCardOrderService.getSTOrderStatus(partnerThirdOrderId); String status = vipCardOrderService.getHFBOrderStatus(partnerThirdOrderId); if (VipCardOrderEnum.STATUS_INVALID.getCode().equals(status) || VipCardOrderEnum.STATUS_CLOSE.getCode().equals(status)) { status = VipCardOrderEnum.message(status); } return ResultJson.ok(status); } }