package com.heyu.api.controller.imageenhan;


import com.aliyun.imageenhan20190930.models.EnhanceImageColorResponse;
import com.aliyun.imageenhan20190930.models.EnhanceImageColorResponseBody;
import com.heyu.api.alibaba.handle.imageenhan.AEnhanceImageColorHandle;
import com.heyu.api.alibaba.request.imageenhan.AEnhanceImageColorRequest;
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.request.imageenhan.ColorizeImageReq;
import com.heyu.api.resp.imageenhan.ColorizeImageResp;
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/EnhanceImageColor?tab=DOC
 *
 * 图像色彩增强
 *
 * EnhancelmageColor
 *
 *
 *功能描述
 * 图像色彩增强能力可以对输入图像进行智能内容分析，根据图像内容自动调整参数，对图像饱和度、亮度、对比度等多个维度进行优化，输出增强后的图像。 关于该接口功能的示例图如下：
 *
 *应用场景
 * 设计素材美化：对设计图像进行智能分析提升，用于创意设计。
 * 照片美化：对拍摄的照片进行智能美化，用于分享和传播。
 *
 */
@Slf4j
@RestController
@RequestMapping("/image")
@NotIntercept
public class EnhanceImageColorController extends BaseController {


    @Autowired
    private AEnhanceImageColorHandle aEnhanceImageColorHandle;


    @RequestMapping("/colorEnhance")
    @CacheResult
    public R exposure(ColorizeImageReq req) {
        ColorizeImageResp resp = new ColorizeImageResp();
        AEnhanceImageColorRequest request = new AEnhanceImageColorRequest();
        request.setImageBase64(req.getImageBase64());
        request.setImageUrl(req.getImageUrl());
        request.setMode(req.getMode());

        ApiR<EnhanceImageColorResponse> aR = aEnhanceImageColorHandle.handle(request);
        if (aR.isSuccess() && isSuccessStatusCode(aR.getData().getStatusCode())) {
            EnhanceImageColorResponseBody.EnhanceImageColorResponseBodyData responseBodyData = aR.getData().getBody().getData();
            resp.setImageURL(responseBodyData.getImageURL());
            return R.ok().setData(resp);
        }
        return R.error(aR.getErrorMsg());
    }
}
