package org.dromara.payment.thirdPlatform.xinyujian.controller;

import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.domain.R;
import org.dromara.payment.thirdPlatform.xinyujian.service.IXyjService;
import org.dromara.payment.thirdPlatform.xinyujian.sign.BaseDataVo;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

/**
 * @author sunzexing
 * @version 1.0
 * @title XyjCallbackController
 * @description 薪遇见回调接口
 * @create 2025-03-28 15:30
 */
@Slf4j
@Data
@RestController
@RequestMapping("/thirdApi/v1/xyj/")
public class XyjCallbackController {


    @Resource
    private IXyjService xyjService;



    /**
     * 处理商户回调请求
     * 该方法用于处理来自合作伙伴系统的商户回调，以实现特定的业务逻辑
     * @param bdvo 包含回调数据的基类对象，通过请求体自动解析获得
     * @param sydId 税源地ID，从请求的URL中提取，用于标识和处理特定商户的回调
     */
    @RequestMapping("addMerchantCallback/{sydId}")
    public R<Void> addMerchantCallback(@RequestBody BaseDataVo bdvo, @PathVariable(value = "sydId", required = true) Long sydId) {
        xyjService.addMerchantCallback(bdvo, sydId);
        return R.ok();
    }




    @RequestMapping("addTaskCallback/{sydId}")
    public R<Void> addTaskCallback(@RequestBody BaseDataVo bdvo, @PathVariable(value = "sydId", required = true) Long sydId) {
        xyjService.addTaskCallback(bdvo, sydId);
        return R.ok();
    }





    @RequestMapping("addSignCallback/{sydId}")
    public R<Void> addSignCallback(@RequestBody BaseDataVo bdvo, @PathVariable(value = "sydId", required = true) Long sydId) {
        xyjService.addSignCallback(bdvo, sydId);
        return R.ok();
    }




    /**
     * 处理充值回调请求
     * 当用户完成充值后，第三方支付平台会调用此接口通知系统充值结果
     * 该方法负责接收充值回调信息并进行处理
     *
     * @param bdvo 包含充值回调数据的请求体，包括但不限于订单号、支付状态等信息
     * @return 返回一个表示操作结果的响应对象，用于告知调用者处理结果
     */
    @RequestMapping("rechargeCallback")
    public R<Void> rechargeCallback(@RequestBody BaseDataVo bdvo) {
        // 调用服务层方法处理充值回调逻辑
        xyjService.rechargeCallback(bdvo);
        // 返回操作成功响应
        return R.ok();
    }


    @RequestMapping("invoiceCallback/{sydId}")
    public R<Void>  invoiceCallback(@RequestBody BaseDataVo bdvo, @PathVariable(value = "sydId", required = true) Long sydId) {
        // 调用服务层方法处理充值回调逻辑
        xyjService.invoiceCallback(bdvo,sydId);
        // 返回操作成功响应
        return R.ok();
    }









}
