CommodityController.java 4.62 KB
package com.jflyfox.api.controller;

import com.alibaba.fastjson.JSON;
import com.jfinal.aop.Before;
import com.jfinal.kit.HttpKit;
import com.jflyfox.api.constant.ApiConstant;
import com.jflyfox.api.entity.TbCommodity;
import com.jflyfox.api.form.ApiForm;
import com.jflyfox.api.form.ApiResp;
import com.jflyfox.api.interceptor.ApiInterceptor;
import com.jflyfox.api.service.IOrderServer;
import com.jflyfox.api.service.impl.ICommodityServiceImpl;
import com.jflyfox.api.service.impl.IOrderServerImpl;
import com.jflyfox.component.base.BaseProjectController;
import com.jflyfox.component.util.JFlyFoxUtils;
import com.jflyfox.jfinal.component.annotation.ControllerBind;
import com.jflyfox.system.user.SysUser;

/**
 * @author :likai
 * @date :Created in 2020/6/22 9:20
 * @description:
 */
@ControllerBind(controllerKey = "/api/commodity")
@Before(ApiInterceptor.class)
public class CommodityController extends BaseProjectController {

    ICommodityServiceImpl commodityService = new ICommodityServiceImpl();

    IOrderServer orderServer = new IOrderServerImpl();

    /**
     * 列表页
     */
    public void list() {
        ApiForm form = getForm();
        getSysUser(form);
        ApiResp resp = commodityService.page(form);
        renderJson(resp);
    }

    /**
     * 获取详情
     */
    public void info() {
        ApiForm form = getForm();
        getSysUser(form);
        Integer id = getParaToInt();
        TbCommodity commodity = commodityService.info(id);

        renderJson(new ApiResp(form).setData(commodity));
    }

    /**
     * 下拉选项
     */
    public void option() {
        ApiForm form = getForm();
        SysUser user = super.getSysUser(form);
        if (user == null) return;
        ApiResp resp = commodityService.list(form, user);
        renderJson(resp);
    }

    /**
     * 添加商品
     */
    public void add() {
        TbCommodity model = JSON.parseObject(HttpKit.readData(getRequest()), TbCommodity.class);
        ApiForm form = getForm();
        SysUser user = getSysUser(form);
        if (user == null) return;
        if (checkName(form, model)) return;
        model.put("create_time", getNow());
        model.put("create_id", user.getUserid());
        model.save();
        renderJson(new ApiResp(form).setData(model));
    }

    /**
     * 获取当前用户 并鉴权
     *
     * @param form
     * @return
     */
    public SysUser getSysUser(ApiForm form) {
        SysUser user = super.getSysUser(form);
        if (user == null) return user;
        if (user.getInt("usertype") != JFlyFoxUtils.USER_TYPE_NORMAL) {
            renderJson(new ApiResp(form).setCode(ApiConstant.CODE_FAIL).setMsg("无权限访问"));
            return null;
        }
        return user;
    }

    /**
     * 修改商品
     */
    public void edit() {
        ApiForm form = getForm();
        SysUser user = getSysUser(form);
        if (user == null) return;
        TbCommodity model = JSON.parseObject(HttpKit.readData(getRequest()), TbCommodity.class);
        if (orderServer.findByCommodityId(model.getInt("id")) != null) {
            renderJson(new ApiResp(form).setCode(ApiConstant.CODE_FAIL).setMsg("商品已使用,无法修改!"));
            return;
        }

        if (checkName(form, model)) return;
        model.update();
        renderJson(new ApiResp(form));
    }

    /**
     * 检查商品名称
     *
     * @param form
     * @param model
     * @return
     */
    private boolean checkName(ApiForm form, TbCommodity model) {
        TbCommodity commodity = model.findFirstByWhere("where name = ?", model.getStr("name"));
        if (commodity != null && commodity.getInt("id") != model.getInt("id")) {
            renderJson(new ApiResp(form).setCode(ApiConstant.CODE_FAIL).setMsg("商品名称已存在!"));
            return true;
        }

        if (commodity != null && commodity.getInt("id") != model.getInt("id")) {
            renderJson(new ApiResp(form).setCode(ApiConstant.CODE_FAIL).setMsg("商品名称已存在!"));
            return true;
        }
        return false;
    }


    /**
     * 删除商品
     */
    public void delete() {
        ApiForm form = getForm();
        SysUser user = getSysUser(form);
        if (user == null) return;
        Integer id = getParaToInt();
        if (orderServer.findByCommodityId(id) != null) {
            renderJson(new ApiResp(form).setCode(ApiConstant.CODE_FAIL).setMsg("商品已使用,无法删除!"));
            return;
        }
        TbCommodity.dao.deleteById(id);
        renderJson(new ApiResp(form));
    }


    public ApiForm getForm() {
        ApiForm form = getBean(ApiForm.class, null);
        return form;
    }
}