You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

266 lines
11 KiB
Java

package me.mofun.controller;
import me.mofun.entity.Product;
import me.mofun.entity.Producttype;
import me.mofun.entity.Spellbuyproduct;
import me.mofun.entity.pojo.ProductJSON;
import me.mofun.entity.vo.Pagination;
import me.mofun.service.IProducttypeService;
import me.mofun.service.ISpellbuyproductService;
import me.mofun.service.ISpellbuyrecordService;
import me.mofun.test.tree.MenuNode;
import me.mofun.util.ApplicationListenerImpl;
import me.mofun.util.PaginationUtil;
import me.mofun.util.StringUtil;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.PostConstruct;
import java.util.ArrayList;
import java.util.List;
@Controller
@RequestMapping("/list")
public class ListController {
private static final long serialVersionUID = 8452833122481904678L;
@Autowired
private ISpellbuyrecordService spellbuyrecordService;
@Autowired
private ISpellbuyproductService spellbuyproductService;
@Autowired
private IProducttypeService productTypeService;
private static IProducttypeService theProductTypeService;
private Logger logger = Logger.getLogger(this.getClass());
@GetMapping("/index")
public String index(
@RequestParam(value = "id", required = false) String id,
@RequestParam(value = "typeId", required = false) String typeId,
@RequestParam(value = "pages", required = false) String pages,
@RequestParam(value = "pageNo", defaultValue = "1") int pageNo,
Model model) {
// 处理页码
if (pages != null) {
pageNo = Integer.parseInt(pages.split("_")[1]);
}
String tId = null;
String brandId = null;
String typeName = null;
String brandName = null;
// 处理类型和品牌ID
if (StringUtil.isNotBlank(typeId)) {
if (typeId.indexOf("b") != -1) {
brandId = typeId.split("b")[1];
tId = typeId.split("b")[0];
if (StringUtil.isNotBlank(tId)) {
typeName = productTypeService.getById(tId).getTypeName();
} else {
typeName = productTypeService.getById("1000").getTypeName();
}
brandName = productTypeService.findBrandById(brandId).getTypeName();
} else {
tId = typeId;
typeName = productTypeService.getById(tId).getTypeName();
}
} else {
typeName = productTypeService.getById("1000").getTypeName();
}
// 处理产品类型列表
List<Producttype> producttyList = productTypeService.listByProductList();
model.addAttribute("producttyList", producttyList);
// 处理品牌列表
List<Producttype> tList = productTypeService.listByBrand(tId);
int j = 0;
for (int i = 0; i < tList.size(); i++) {
if (StringUtil.isNotBlank(brandId)) {
if (Integer.parseInt(brandId) == tList.get(i).getTypeId()) {
j = i;
}
}
}
List<Producttype> brandList;
if (j > 16) {
if (StringUtil.isNotBlank(brandId)) {
brandList = new ArrayList<>();
for (Producttype type : tList) {
if (Integer.parseInt(brandId) == type.getTypeId()) {
brandList.add(type);
}
}
for (Producttype type : tList) {
if (Integer.parseInt(brandId) != type.getTypeId()) {
brandList.add(type);
}
}
} else {
brandList = productTypeService.listByBrand(tId);
}
} else {
brandList = productTypeService.listByBrand(tId);
}
model.addAttribute("brandList", brandList);
// 处理产品列表数据
List<ProductJSON> productList = new ArrayList<>();
int resultCount = 0;
String pageString = "";
int pageSize = 20;
if ("hot20".equals(id)) {
Pagination hotPage = spellbuyrecordService.ProductByTypeIdList(tId, brandId, "hot", pageNo, pageSize);
List<Object[]> hotList = (List<Object[]>) hotPage.getList();
productList = buildProductJSONList(hotList);
resultCount = hotPage.getResultCount();
pageString = buildPageString(resultCount, pageSize, pageNo, id, tId);
} else if ("date20".equals(id)) {
Pagination datePage = spellbuyrecordService.ProductByTypeIdList(tId, brandId, "date", pageNo, pageSize);
List<Object[]> dateList = (List<Object[]>) datePage.getList();
productList = buildProductJSONList(dateList);
resultCount = datePage.getResultCount();
pageString = buildPageString(resultCount, pageSize, pageNo, id, tId);
} else if ("price20".equals(id)) {
Pagination pricePage = spellbuyrecordService.ProductByTypeIdList(tId, brandId, "price", pageNo, pageSize);
List<Object[]> priceList = (List<Object[]>) pricePage.getList();
productList = buildProductJSONList(priceList);
resultCount = pricePage.getResultCount();
pageString = buildPageString(resultCount, pageSize, pageNo, id, tId);
} else if ("priceAsc20".equals(id)) {
Pagination pricePage = spellbuyrecordService.ProductByTypeIdList(tId, brandId, "priceAsc", pageNo, pageSize);
List<Object[]> priceList = (List<Object[]>) pricePage.getList();
productList = buildProductJSONList(priceList);
resultCount = pricePage.getResultCount();
pageString = buildPageString(resultCount, pageSize, pageNo, id, tId);
} else if ("about20".equals(id)) {
Pagination aboutPage = spellbuyrecordService.ProductByTypeIdList(tId, brandId, "about", pageNo, pageSize);
List<Object[]> aboutList = (List<Object[]>) aboutPage.getList();
productList = buildProductJSONList(aboutList);
resultCount = aboutPage.getResultCount();
pageString = buildPageString(resultCount, pageSize, pageNo, id, tId);
} else if ("surplus20".equals(id)) {
Pagination surplusPage = spellbuyrecordService.ProductByTypeIdList(tId, brandId, "surplus", pageNo, pageSize);
List<Object[]> surplusList = (List<Object[]>) surplusPage.getList();
productList = buildProductJSONList(surplusList);
resultCount = surplusPage.getResultCount();
pageString = buildPageString(resultCount, pageSize, pageNo, id, tId);
}
// 将数据添加到模型
model.addAttribute("productList", productList);
model.addAttribute("resultCount", resultCount);
model.addAttribute("pageString", pageString);
model.addAttribute("typeName", typeName);
model.addAttribute("brandName", brandName);
model.addAttribute("tId", tId);
model.addAttribute("brandId", brandId);
return "index";
}
/**
* JSON
*/
private List<ProductJSON> buildProductJSONList(List<Object[]> objectList) {
List<ProductJSON> productList = new ArrayList<>();
for (Object[] obj : objectList) {
ProductJSON productJSON = new ProductJSON();
Product product;
Spellbuyproduct spellbuyproduct;
// 根据原代码逻辑处理对象转换兼容jdk1.8的调整)
if ("hot20".equals(2) || "date20".equals(1)) {
product = (Product) obj[1];
spellbuyproduct = (Spellbuyproduct) obj[0];
} else {
product = (Product) obj[0];
spellbuyproduct = (Spellbuyproduct) obj[1];
}
productJSON.setCurrentBuyCount(spellbuyproduct.getSpellbuyCount());
productJSON.setHeadImage(product.getHeadImage());
productJSON.setProductId(spellbuyproduct.getFkProductId());
productJSON.setProductName(product.getProductName());
productJSON.setProductPrice(spellbuyproduct.getSpellbuyPrice());
productJSON.setSinglePrice(spellbuyproduct.getSpSinglePrice());
productJSON.setLogicURL(product.getLogicURL());
productJSON.setProductTitle(product.getProductTitle());
productJSON.setProductStyle(product.getStyle());
productList.add(productJSON);
}
return productList;
}
/**
*
*/
private String buildPageString(int resultCount, int pageSize, int pageNo, String id, String tId) {
String baseUrl = ApplicationListenerImpl.sysConfigureJson.getWwwUrl() + "/list/" + id;
if (tId != null && !tId.isEmpty()) {
baseUrl += "/" + tId;
}
return PaginationUtil.getPaginationHtml(resultCount, pageSize, pageNo, 2, 5, baseUrl + "/p_");
}
/**
*
* : /list/isStatus?id=xxx
*/
@GetMapping("/isStatus")
@ResponseBody
public String isStatus(@RequestParam("id") String productId) {
Spellbuyproduct spellbuyproduct = spellbuyproductService.findByFKProductId(productId);
if (spellbuyproduct.getSpStatus() == 1) {
return "false";
} else {
int surplus = spellbuyproduct.getSpellbuyPrice() - spellbuyproduct.getSpellbuyCount();
return surplus == 0 ? "false" : String.valueOf(surplus);
}
}
/**
*
*/
@GetMapping("/getProductTypeSubList")
public String getProductTypeSubList(Model model) {
List<MenuNode> menuNodeList = productTypeService.getAllProductTypeTree();
logger.info("menuNodeList.size=" + menuNodeList.size());
model.addAttribute("menuNodeList", menuNodeList);
return "getMenuList";
}
@PostConstruct
public void init() {
if (this.productTypeService != null) {
theProductTypeService = this.productTypeService;
}
}
public static List<MenuNode> getTypeSubList() {
return theProductTypeService.getAllProductTypeTree();
}
// 仅保留服务类的getter如果有外部依赖
public IProducttypeService getTheProductTypeService() {
return theProductTypeService;
}
}