package cn.com.ty.lift.system.faq.controller;


import cn.com.ty.lift.system.faq.dao.entity.Faq;
import cn.com.ty.lift.system.faq.service.impl.FaqServiceImpl;
import cn.com.xwy.boot.web.dto.RestResponse;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;
import java.util.List;

/**
 * 常见问题
 *
 * @author wang-hai-cheng
 * @since 2019/12/4
 */
@RestController
@RequestMapping("/faq")
@AllArgsConstructor
public class FaqController {
    private final FaqServiceImpl faqService;

    /**
     * 获取分类及问题列表
     *
     * @return RestResponse
     */
    @PostMapping("/child")
    public RestResponse child() {
        List<Faq> faqs = faqService.list(new QueryWrapper<Faq>()
                .in("type", 1, 2)
                .orderByAsc("parent_id", "type", "serial"));
        if (faqs.isEmpty()) {
            return RestResponse.success();
        }
        return RestResponse.success(faqs, "成功");
    }

    /**
     * 查询分类或问题或答案
     *
     * @param faq type和parentId
     * @return RestResponse
     */
    @PostMapping("/list")
    public RestResponse one(@RequestBody Faq faq) {
        return faqService.getFaqs(faq);
    }

    /**
     * 新增分类或问题或答案
     *
     * @param faq 新增信息
     * @return RestResponse
     */
    @PostMapping("/add")
    public RestResponse add(@RequestBody Faq faq) {
        return RestResponse.success(faqService.addFaq(faq));
    }


    /**
     * 更新分类名或问题标题或答案内容, 都是title参数,
     *
     * @param faq 需要更新的数据
     * @return RestResponse
     */
    @PostMapping("/update")
    public RestResponse updateOne(@Valid @RequestBody Faq faq) {
        return RestResponse.success(faqService.updateById(faq));
    }

    /**
     * 根据id删除此id下的分类和问答
     *
     * @param faq id 要删除的id
     * @return RestResponse
     */
    @PostMapping("/delete")
    public RestResponse delete(@Valid @RequestBody Faq faq) {
        return faqService.delete(faq.getId());
    }
}