package com.matrix.system.shopXcx.api.action;
|
|
import com.matrix.system.hive.bean.SysVipInfo;
|
import com.matrix.component.redis.RedisUserLoginUtils;
|
import com.matrix.core.pojo.AjaxResult;
|
import com.matrix.core.tools.StringUtils;
|
import com.matrix.system.common.constance.AppConstance;
|
import com.matrix.system.common.dao.CustomerDataDictionaryDao;
|
import com.matrix.system.common.interceptor.HostInterceptor;
|
import com.matrix.system.shopXcx.api.service.WxShopCouponService;
|
import com.matrix.system.shopXcx.bean.*;
|
import com.matrix.system.shopXcx.dao.*;
|
import org.apache.commons.collections.CollectionUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Controller;
|
import org.springframework.web.bind.annotation.*;
|
|
import java.util.ArrayList;
|
import java.util.Collections;
|
import java.util.List;
|
|
/**
|
* @author pengliang
|
* @description 商品查询
|
* @date 2019-06-05 19:00
|
*/
|
@Controller
|
@RequestMapping(value = "/wxapi/ShopProduct")
|
@CrossOrigin(origins = "*", maxAge = 3600)
|
public class WxShopProduct {
|
|
|
@Autowired
|
private ShopProductDao shopProductDao;
|
|
@Autowired
|
private ShopCouponDao shopCouponDao;
|
|
@Autowired
|
private ShopProductAttrRefDao shopProductAttrRefDao;
|
|
@Autowired
|
private ShopSkuDao shopSkuDao;
|
|
@Autowired
|
private ShopProductImgDao shopProductImgDao;
|
|
@Autowired
|
private ShopProductParamRefDao shopProductParamRefDao;
|
|
@Autowired
|
private CustomerDataDictionaryDao dataDictionaryDao;
|
|
@Autowired
|
private ShopSearchRecordDao shopSearchRecordDao;
|
|
@Autowired
|
private ShopProductAttributeDao shopProductAttributeDao;
|
|
@Autowired
|
private ShopArticleDao shopArticleDao;
|
|
@Autowired
|
private RedisUserLoginUtils redisUserLoginUtils;
|
|
@Autowired
|
WxShopCouponService shopCouponService;
|
|
@Autowired
|
private ShopCollectionDao collectionDao;
|
|
@Autowired
|
private ShopProductCommentDao productCommentDao;
|
|
/**
|
* 根据id查询商品信息
|
*
|
* @param id
|
* @return
|
*/
|
@RequestMapping(value = "/getProductById/{shopId}/{id}")
|
@ResponseBody
|
public AjaxResult getProductById(@PathVariable Long shopId, @PathVariable("id") Integer id) {
|
|
ShopProduct shopProduct = shopProductDao.selectById(id);
|
if (shopProduct == null) {
|
return new AjaxResult(AjaxResult.STATUS_FAIL, "没有查询到商品");
|
}
|
|
List<ShopProductAttrRef> shopProductAttrRefs = shopProductAttrRefDao.selectByPid(id);
|
List<ShopProductImg> shopProductImgs = shopProductImgDao.selectByPid(id);
|
List<ShopSku> shopSkus = shopSkuDao.selectByPid(id);
|
List<ShopProductParamRef> shopProductParamRefs = shopProductParamRefDao.selectByPid(id);
|
shopProduct.setAttrRefs(shopProductAttrRefs);
|
shopProduct.setProductImgs(shopProductImgs);
|
shopProduct.setSkus(shopSkus);
|
shopProduct.setParams(shopProductParamRefs);
|
|
|
AjaxResult result = new AjaxResult(AjaxResult.STATUS_SUCCESS, Collections.singletonList(shopProduct));
|
|
//查询产品适配的活动
|
List<ShopCoupon> shopCoupons = shopCouponService.getHdListByProductId(id);
|
result.putInMap("activity", shopCoupons);
|
|
|
|
|
|
if (redisUserLoginUtils.isUserLogin()) {
|
//查询产品适配的优惠券
|
result.putInMap("couponList", shopCouponService.getCouponListByProductId(id));
|
//查询产品是否被用户收藏
|
result.putInMap("checkCollect", CollectionUtils.isNotEmpty(collectionDao.selectByUserIdAndProid(id, redisUserLoginUtils.getLoginUser(SysVipInfo.class).getOpenId())));
|
} else {
|
result.putInMap("checkCollect", false);
|
}
|
|
|
//查询产品的评论
|
ShopProductComment productComment = new ShopProductComment();
|
productComment.setProductId(id);
|
productComment.setLimit(2);
|
productComment.setOffset(0);
|
List<ShopProductComment> list = productCommentDao.selectByProductId(productComment);
|
result.putInMap("evaluateList", list);
|
|
//统计评论总数
|
productComment.setOffset(-1);
|
int total = productCommentDao.selectByProductTotal(productComment);
|
result.putInMap("evaluateNum", total);
|
|
|
return result;
|
}
|
|
|
|
/**
|
* 查询商品
|
*
|
* @param shopProduct
|
* @return
|
*/
|
@RequestMapping(value = "/getShopProductShowList")
|
@ResponseBody
|
public AjaxResult getShopProductShowList(@RequestBody ShopProduct shopProduct) {
|
List<ShopProduct> shopProducts = null;
|
//查询是否匹配优惠条件
|
ShopCoupon shopCoupon = shopCouponDao.getCouponByTitle(shopProduct.getTitle(),HostInterceptor.getCompanyId());
|
if (shopCoupon != null && shopProduct.getOffset() < 1) {
|
shopProducts = getCouponProduct(shopCoupon);
|
}
|
|
//如果根据优惠券没查询到产品则在根据标题查询
|
if (CollectionUtils.isEmpty(shopProducts)) {
|
shopProduct.setDelFlag(AppConstance.DATA_USEABLE);
|
shopProduct.setStatus(AppConstance.IS_PUTAWAY);
|
shopProduct.setCompanyId(HostInterceptor.getCompanyId());
|
shopProducts = shopProductDao.selectByModelWx(shopProduct);
|
}
|
|
|
|
//保存搜索记录
|
//saveSearchHistroy(shopProduct);
|
|
|
AjaxResult result = new AjaxResult(AjaxResult.STATUS_SUCCESS, shopProducts);
|
|
return result;
|
|
|
}
|
|
/**
|
* 根据优惠券查询合适的产品
|
*
|
* @param shopCoupon
|
* @return
|
*/
|
private List<ShopProduct> getCouponProduct(ShopCoupon shopCoupon) {
|
|
//查询优惠券适配的所有产品
|
List<ShopProduct> shopProductList = new ArrayList<>();
|
if (StringUtils.isNotBlank(shopCoupon.getProductIds())) {
|
//根据产品id查询,合适的产品
|
shopProductList.addAll(shopProductDao.selectProductByIds(shopCoupon.getProductIds(), shopCoupon.getShopId()));
|
}
|
if (StringUtils.isNotBlank(shopCoupon.getAttrIds())) {
|
List<Integer> pIds = new ArrayList<>();
|
//根据属性id查询合适的属性
|
List<String> attrIds = StringUtils.strToColl(shopCoupon.getAttrIds(), ",");
|
for (String attrId : attrIds) {
|
List<ShopProduct> tempList = shopProductDao.selectProductByAttrid(attrId, shopCoupon.getShopId());
|
for (ShopProduct product : tempList) {
|
if (!pIds.contains(product.getId())) {
|
shopProductList.add(product);
|
}
|
}
|
}
|
}
|
return shopProductList;
|
}
|
|
/**
|
* 保存历史记录
|
*
|
* @param shopProduct
|
*/
|
private void saveSearchHistroy(@RequestBody ShopProduct shopProduct) {
|
SysVipInfo bigUser = redisUserLoginUtils.getLoginUser(SysVipInfo.class);
|
ShopSearchRecord searchBean = new ShopSearchRecord();
|
if (StringUtils.isNotBlank(shopProduct.getTitle())) {
|
searchBean.setSearchType(AppConstance.SEARCH_TYPE);
|
searchBean.setSearchContent(shopProduct.getTitle());
|
}
|
searchBean.setUserId(bigUser.getId());
|
searchBean.setSearchPriceStart(shopProduct.getStartPrice());
|
searchBean.setSearchPriceEnd(shopProduct.getEndPrice());
|
searchBean.setSearchDel(AppConstance.DATA_USEABLE);
|
if (StringUtils.isNotBlank(shopProduct.getAttrs())) {
|
ShopProductAttribute shopProductAttribute = shopProductAttributeDao.selectById(Integer.valueOf(shopProduct.getAttrs()));
|
searchBean.setSearchAttrs(shopProductAttribute.getAttrName());
|
}
|
searchBean.setCreateBy(bigUser.getOpenId());
|
searchBean.setUpdateBy(bigUser.getOpenId());
|
shopSearchRecordDao.insert(searchBean);
|
}
|
|
|
}
|