package cn.com.ty.lift.quan.pay.controller;


import cn.com.ty.lift.quan.pay.dao.entity.UserInfo;
import cn.com.ty.lift.quan.pay.dao.entity.model.PayReq;
import cn.com.ty.lift.quan.pay.service.impl.UserInfoServiceImpl;
import cn.com.xwy.boot.web.dto.RestResponse;
import com.alipay.api.AlipayApiException;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * <p>
 * 用户资金表 前端控制器
 * </p>
 *
 * @author wang-hai-cheng
 * @since 2019-12-26
 */
@RestController
@RequestMapping("/pay")
@AllArgsConstructor
public class PayController {
    private final UserInfoServiceImpl payService;

    /**
     * 绑定/换绑支付宝账号
     *
     * @param userInfo 用户id，支付宝账号
     * @return 操作结果
     * @since 2019/12/26 14:28
     */
    @PostMapping("/bind")
    public RestResponse bind(@RequestBody UserInfo userInfo) {
        return payService.bind(userInfo);
    }

    /**
     * 用户信息
     *
     * @param userInfo 用户id
     * @return 操作结果
     * @since 2020/01/06 09:41
     */
    @PostMapping("/info")
    public RestResponse balance(@RequestBody UserInfo userInfo) {
        UserInfo byId = payService.getById(userInfo.getUserId());
        if (byId == null) {
            return RestResponse.success("无此用户");
        }
        return RestResponse.success(byId);
    }

    /**
     * 创建订单
     *
     * @param req task 1创建充值订单 2提现审核订单,userId,
     * @return 操作结果
     * @since 2019/12/26 16:05
     */
    @PostMapping("/create")
    public RestResponse pay(@RequestBody PayReq req) {
        return payService.pay(req);
    }

    /**
     * 审核订单
     *
     * @param req 商家自定义订单号
     * @return 操作结果
     * @since 2019/12/30 14:03
     */
    @PostMapping("/order")
    public RestResponse order(@RequestBody PayReq req) throws AlipayApiException {
        return payService.order(req);
    }

    /**
     * 取消订单
     *
     * @param req 订单号
     * @return 操作结果
     * @since 2019/12/30 14:05
     */
    @PostMapping("/cancel")
    public RestResponse cancel(@RequestBody PayReq req) throws AlipayApiException {
        return payService.cancel(req);
    }

    /**
     * 订单列表
     *
     * @param req 用户id，类型，状态
     * @return 订单列表
     * @since 2020/2/3 15:43
     */
    @PostMapping("/order/list")
    public RestResponse orders(@RequestBody PayReq req) {
        return payService.orders(req);
    }
}