package com.sinata.modular.mall.controller;
|
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
import com.baomidou.mybatisplus.mapper.Wrapper;
|
import com.baomidou.mybatisplus.plugins.Page;
|
import com.sinata.core.base.controller.BaseController;
|
import com.sinata.core.base.tips.ErrorTip;
|
import com.sinata.core.common.annotion.BussinessLog;
|
import com.sinata.core.common.annotion.Permission;
|
import com.sinata.core.common.constant.factory.PageFactory;
|
import com.sinata.core.log.LogObjectHolder;
|
import com.sinata.modular.mall.model.MallClassifyOne;
|
import com.sinata.modular.mall.model.MallClassifyTwo;
|
import com.sinata.modular.mall.model.MallGoods;
|
import com.sinata.modular.mall.service.IMallClassifyOneService;
|
import com.sinata.modular.mall.service.IMallClassifyTwoService;
|
import com.sinata.modular.mall.service.IMallGoodsService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Controller;
|
import org.springframework.ui.Model;
|
import org.springframework.util.StringUtils;
|
import org.springframework.web.bind.annotation.*;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.Optional;
|
import java.util.stream.Collectors;
|
|
/**
|
* 商品分类控制器
|
*
|
* @author goku
|
*/
|
@Controller
|
@RequestMapping("/mallClassifyOne")
|
public class MallClassifyOneController extends BaseController {
|
|
private String PREFIX = "/mall/mallClassifyOne/";
|
|
@Autowired
|
private IMallGoodsService mallGoodsService;
|
|
@Autowired
|
private IMallClassifyOneService mallClassifyOneService;
|
|
@Autowired
|
private IMallClassifyTwoService mallClassifyTwoService;
|
|
/**
|
* 跳转到商品分类首页
|
*/
|
@RequestMapping("")
|
public String index() {
|
return PREFIX + "mallClassifyOne.html";
|
}
|
|
/**
|
* 跳转到添加商品分类
|
*/
|
@RequestMapping("/mallClassifyOne_add")
|
public String mallClassifyOneAdd() {
|
return PREFIX + "mallClassifyOne_add.html";
|
}
|
@ResponseBody
|
@GetMapping("/getClassCount")
|
public Integer getClassCount() {
|
return mallClassifyOneService.selectCount(
|
new EntityWrapper<MallClassifyOne>().eq("is_delete", 0)
|
);
|
}
|
|
/**
|
* 跳转到修改商品分类
|
*/
|
@RequestMapping("/mallClassifyOne_update/{mallClassifyOneId}")
|
public String mallClassifyOneUpdate(@PathVariable Integer mallClassifyOneId, Model model) {
|
MallClassifyOne mallClassifyOne = mallClassifyOneService.selectById(mallClassifyOneId);
|
model.addAttribute("item", mallClassifyOne);
|
LogObjectHolder.me().set(mallClassifyOne);
|
return PREFIX + "mallClassifyOne_edit.html";
|
}
|
|
/**
|
* 获取商品分类列表
|
*/
|
@ResponseBody
|
@RequestMapping(value = "/list")
|
public Object list(String classifyName, Integer isLock) {
|
Page<Map<String, Object>> page = new PageFactory().defaultPage();
|
Wrapper wrapper = new EntityWrapper<MallClassifyOne>().eq("is_delete", 0).orderBy("id", false);
|
|
if (!StringUtils.isEmpty(classifyName)) {
|
wrapper.like("classify_name", classifyName);
|
}
|
if (isLock != null) {
|
wrapper.eq("is_lock", isLock);
|
}
|
|
// 商品分类统计数量
|
List<Map<String, Object>> classCountList = mallGoodsService.selectMaps(
|
new EntityWrapper<MallGoods>()
|
.setSqlSelect("count(1) count, classify_id_one")
|
.isNotNull("classify_id_one")
|
.groupBy("classify_id_one")
|
);
|
|
|
|
// 查询数据列表
|
List<Map<String, Object>> list = mallClassifyOneService.selectMapsPage(page, wrapper).getRecords();
|
page.setRecords(
|
list.stream().map(o -> {
|
o.put("goodsCount",
|
Optional.ofNullable(classCountList).orElse(new ArrayList<>()).stream()
|
.filter(cc -> cc.get("classify_id_one").equals(o.get("id")))
|
.findFirst()
|
.map(cc -> cc.get("count"))
|
.orElse("0")
|
);
|
return o;
|
}).collect(Collectors.toList())
|
);
|
return super.packForBT(page);
|
}
|
|
/**
|
* 新增商品分类
|
*/
|
@Permission
|
@ResponseBody
|
@BussinessLog(value = "新增商品分类")
|
@RequestMapping(value = "/add")
|
public Object add(MallClassifyOne mallClassifyOne) {
|
int count = this.mallClassifyOneService.selectCount(new EntityWrapper<MallClassifyOne>().eq("classify_name", mallClassifyOne.getClassifyName()).eq("is_delete", 0));
|
if (count > 0) {
|
ErrorTip errorTip = new ErrorTip(500, "分类名称已存在,请仔细检查!");
|
return errorTip;
|
}
|
mallClassifyOneService.insert(mallClassifyOne);
|
return SUCCESS_TIP;
|
}
|
|
/**
|
* 删除/批量删除
|
*/
|
@Permission
|
@ResponseBody
|
@BussinessLog(value = "删除/批量删除商品分类")
|
@RequestMapping(value = "/delete")
|
public Object delete(@RequestParam String ids) {
|
String[] idd = ids.split(",");
|
if (idd.length == 1) {
|
int count = this.mallClassifyTwoService.selectCount(new EntityWrapper<MallClassifyTwo>().eq("parent_classify_id", idd[0]).eq("is_delete", 0));
|
if (count == 0) {
|
// 逻辑删除
|
mallClassifyOneService.updateForSet("is_delete = 1", new EntityWrapper<MallClassifyOne>().in("id", ids.split(",")));
|
return SUCCESS_TIP;
|
} else {
|
ErrorTip errorTip = new ErrorTip(500, "已经绑定了二级分类,不能被删除。请解除绑定关系在删除");
|
return errorTip;
|
}
|
} else {
|
boolean state = false;
|
for (String id : idd) {
|
int count = this.mallClassifyTwoService.selectCount(new EntityWrapper<MallClassifyTwo>().eq("parent_classify_id", id).eq("is_delete", 0));
|
if (count == 0) {
|
// 逻辑删除
|
mallClassifyOneService.updateForSet("is_delete = 1", new EntityWrapper<MallClassifyOne>().in("id", ids.split(",")));
|
} else {
|
state = true;
|
}
|
}
|
if (state) {
|
ErrorTip errorTip = new ErrorTip(500, "部分分类绑定了二级分类,删除失败。请解除绑定关系在删除");
|
return errorTip;
|
} else {
|
return SUCCESS_TIP;
|
}
|
}
|
|
}
|
|
/**
|
* 修改商品分类
|
*/
|
@Permission
|
@ResponseBody
|
@BussinessLog(value = "修改商品分类")
|
@RequestMapping(value = "/update")
|
public Object update(MallClassifyOne mallClassifyOne) {
|
mallClassifyOneService.updateById(mallClassifyOne);
|
return SUCCESS_TIP;
|
}
|
|
/**
|
* 修改商品分类状态
|
*/
|
@ResponseBody
|
@BussinessLog(value = "修改商品分类状态")
|
@RequestMapping(value = "/updateState")
|
public Object updateState(Integer mallClassifyOneId, Integer state) {
|
mallClassifyOneService.updateForSet("is_lock = " + state, new EntityWrapper<MallClassifyOne>().eq("id", mallClassifyOneId));
|
return SUCCESS_TIP;
|
}
|
|
/**
|
* 跳转商品分类详情
|
*/
|
@RequestMapping(value = "/detail/{mallClassifyOneId}")
|
public Object detail(@PathVariable("mallClassifyOneId") Integer mallClassifyOneId, Model model) {
|
MallClassifyOne mallClassifyOne = mallClassifyOneService.selectById(mallClassifyOneId);
|
model.addAttribute("item", mallClassifyOne);
|
return PREFIX + "mallClassifyOne_detail.html";
|
}
|
}
|