package com.example.his.api.mis.controller;

import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.annotation.SaMode;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.map.MapUtil;
import com.example.his.api.common.result.R;
import com.example.his.api.mis.service.RuleService;
import com.example.his.api.req.MisRule.EditRuleForm;
import com.example.his.api.req.MisRule.SearchRuleByPageForm;
import com.github.pagehelper.PageInfo;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import javax.validation.Valid;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@RestController
@RequestMapping("/mis/rule")
public class RuleController {
    @Resource
    private RuleService ruleService;

    /**
     * 促销规则-查询全部
     * @return
     */
    @GetMapping("/searchRule")
    @SaCheckPermission(value = {"BUSINESS:RULE","BUSINESS:RULE:SELECT"}, mode = SaMode.OR)
    public R searchRule() {
        ArrayList<HashMap> rules = ruleService.searchRule();
        return R.success(rules);
    }

    /**
     * 促销规则-分页查询
     * @param form
     * @return
     */
    @PostMapping("/searchRuleByPage")
    public R searchRuleByPage(@Valid @RequestBody SearchRuleByPageForm form) {
        Map param = BeanUtil.beanToMap(form);
        PageInfo<HashMap> rules = ruleService.searchRuleByPage(param);
        return R.success(rules);
    }

    /**
     * 促销规则-编辑
     * @param form
     * @return
     */
    @PostMapping("/editRule")
    public R editRule(@Valid @RequestBody EditRuleForm form) {
        Map param = BeanUtil.beanToMap(form);
        int rows = ruleService.editRule(param);
        return R.success(rows);
    }

    /**
     * 促销规则-删除
     * @param id
     * @return
     */
    @GetMapping("/deleteRule")
    public R deleteRule(@RequestParam int id) {
        int rows = ruleService.deleteRule(id);
        return R.success(rows);
    }
}
