package com.heyu.api.controller.imageenhan;


import com.aliyun.imageenhan20190930.models.GenerateDynamicImageResponse;
import com.aliyun.imageenhan20190930.models.GenerateDynamicImageResponseBody;
import com.heyu.api.alibaba.handle.imageenhan.AGenerateDynamicImageHandle;
import com.heyu.api.alibaba.request.imageenhan.AGenerateDynamicImageRequest;
import com.heyu.api.controller.BaseController;
import com.heyu.api.data.annotation.CacheResult;
import com.heyu.api.data.annotation.NotIntercept;
import com.heyu.api.data.utils.ApiR;
import com.heyu.api.data.utils.R;
import com.heyu.api.resp.imageenhan.GenerateDynamicImageResp;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


/**
 * https://next.api.aliyun.com/api/imageenhan/2019-09-30/GenerateDynamicImage?tab=DOC
 * <p>
 * 图像微动
 * <p>
 * GenerateDynamiclmage
 *
 * 服务说明
 * 由于产品业务调整，图像微动服务将于 2025 年 01 月 20 日起停止新用户开通调用，历史开通过该服务的老用户可继续调用，2025 年 08 月 12 日后该服务将下架，不再支持新老用户调用，请尽早寻找替代方案。如果对图像微动 API 服务使用有疑问，可通过搜索钉钉群（23109592）加入阿里云视觉智能开放平台咨询群联系我们。
 *
 * 功能描述
 * 图像微动能力可以对输入图像中包括的天空区域及人物头发区域进行静转动处理，得到微动的 AVI 格式视频。
 *
 *
 */

@Slf4j
@RestController
@RequestMapping("/image")
@NotIntercept
public class GenerateDynamicImageController extends BaseController {


    @Autowired
    private AGenerateDynamicImageHandle generateDynamicImageHandle;

    @RequestMapping("/dynamic")
    @CacheResult
    public R dynamic(AGenerateDynamicImageRequest req) {
        GenerateDynamicImageResp resp = new GenerateDynamicImageResp();
        ApiR<GenerateDynamicImageResponse> aR = generateDynamicImageHandle.handle(req);
        if (aR.isSuccess() && isSuccessStatusCode(aR.getData().getStatusCode())) {

            GenerateDynamicImageResponseBody.GenerateDynamicImageResponseBodyData responseBodyData = aR.getData().getBody().getData();
            resp.setImageURL(responseBodyData.getUrl());
            return R.ok().setData(resp);

        }
        return R.error(aR.getErrorMsg());
    }
}
