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

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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;
}
}