|
|
@@ -1,10 +1,24 @@
|
|
|
package com.uas.platform.b2c.trade.seek.service.impl;
|
|
|
|
|
|
+import com.uas.platform.b2c.common.account.model.User;
|
|
|
+import com.uas.platform.b2c.prod.commodity.dao.GoodsDao;
|
|
|
+import com.uas.platform.b2c.prod.product.brand.dao.BrandDao;
|
|
|
+import com.uas.platform.b2c.prod.product.brand.modal.Brand;
|
|
|
+import com.uas.platform.b2c.prod.product.component.dao.ComponentDao;
|
|
|
+import com.uas.platform.b2c.prod.product.component.modal.Component;
|
|
|
+import com.uas.platform.b2c.trade.seek.dao.SeekMallGoodsDao;
|
|
|
import com.uas.platform.b2c.trade.seek.dao.SeekPurchaseDao;
|
|
|
+import com.uas.platform.b2c.trade.seek.model.SeekMallGoods;
|
|
|
import com.uas.platform.b2c.trade.seek.model.SeekPurchase;
|
|
|
import com.uas.platform.b2c.trade.seek.service.SeekPurchaseService;
|
|
|
+import com.uas.platform.b2c.trade.seek.status.Status;
|
|
|
+import com.uas.platform.core.exception.IllegalOperatorException;
|
|
|
import com.uas.platform.core.model.PageInfo;
|
|
|
+import com.uas.platform.core.persistence.criteria.CriterionExpression.Operator;
|
|
|
+import com.uas.platform.core.persistence.criteria.LogicalExpression;
|
|
|
import com.uas.platform.core.persistence.criteria.PredicateUtils;
|
|
|
+import com.uas.platform.core.persistence.criteria.SimpleExpression;
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
@@ -12,11 +26,13 @@ import javax.persistence.criteria.CriteriaBuilder;
|
|
|
import javax.persistence.criteria.CriteriaQuery;
|
|
|
import javax.persistence.criteria.Predicate;
|
|
|
import javax.persistence.criteria.Root;
|
|
|
-import org.apache.commons.lang.time.DateUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.data.domain.Page;
|
|
|
+import org.springframework.data.domain.Sort.Direction;
|
|
|
import org.springframework.data.jpa.domain.Specification;
|
|
|
+import org.springframework.jdbc.core.JdbcTemplate;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
/**
|
|
|
@@ -29,36 +45,90 @@ import org.springframework.util.StringUtils;
|
|
|
public class SeekPurchaseServiceImpl implements SeekPurchaseService {
|
|
|
|
|
|
/**
|
|
|
- * 求购接口
|
|
|
+ * 求购dao
|
|
|
*/
|
|
|
@Autowired
|
|
|
private SeekPurchaseDao seekPurchasedao;
|
|
|
|
|
|
+ /**
|
|
|
+ * 品牌dao
|
|
|
+ */
|
|
|
+ @Autowired
|
|
|
+ private BrandDao brandDao;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 器件dao
|
|
|
+ */
|
|
|
+ @Autowired
|
|
|
+ private ComponentDao componentDao;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 数据库操作
|
|
|
+ */
|
|
|
+ @Autowired
|
|
|
+ private JdbcTemplate jdbcTemplate;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 库存dao
|
|
|
+ */
|
|
|
+ @Autowired
|
|
|
+ private GoodsDao goodsDao;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 求购商城现货dao
|
|
|
+ */
|
|
|
+ @Autowired
|
|
|
+ private SeekMallGoodsDao seekMallGoodsDao;
|
|
|
+
|
|
|
@Override
|
|
|
- public Page<SeekPurchase> getSeekPageInfo(final PageInfo pageInfo, String kind, String brand, String deadline) {
|
|
|
- // 产品类目
|
|
|
- if (!StringUtils.isEmpty(kind)) {
|
|
|
- pageInfo.filter("kind", kind);
|
|
|
- }
|
|
|
- // 产品品牌
|
|
|
- if (!StringUtils.isEmpty(brand)) {
|
|
|
- pageInfo.filter("brand", brand);
|
|
|
+ public Page<SeekPurchase> getSeekPageInfo(final PageInfo pageInfo, String keyWord,
|
|
|
+ String deadline, Long uu, Integer status, String minReleaseDate,
|
|
|
+ String maxReleaseDate) {
|
|
|
+ // 关键词查询 品牌或者是型号
|
|
|
+ if (!StringUtils.isEmpty(keyWord)) {
|
|
|
+ SimpleExpression code = new SimpleExpression("code", keyWord, Operator.LIKE);
|
|
|
+ SimpleExpression brand = new SimpleExpression("brand", keyWord, Operator.LIKE);
|
|
|
+ SimpleExpression[] simpleExpressions = new SimpleExpression[]{code, brand};
|
|
|
+ LogicalExpression logicalExpression = PredicateUtils.or(simpleExpressions);
|
|
|
+ pageInfo.expression(logicalExpression);
|
|
|
}
|
|
|
- // 截至时间
|
|
|
+ // 截止时间查询
|
|
|
if (!StringUtils.isEmpty(deadline)) {
|
|
|
- Date deadlineTime = null;
|
|
|
- pageInfo.expression(PredicateUtils.gt("deadline", new Date(), false));
|
|
|
- if (deadline.equals(">15")) {
|
|
|
- deadlineTime = DateUtils.addDays(new Date(), 16);
|
|
|
- pageInfo.expression(PredicateUtils.gte("deadline", deadlineTime, false));
|
|
|
- } else {
|
|
|
- deadlineTime = DateUtils.addDays(new Date(), Integer.valueOf(deadline));
|
|
|
- pageInfo.expression(PredicateUtils.lte("deadline", deadlineTime, false));
|
|
|
+ switch (deadline) {
|
|
|
+ case "全部":
|
|
|
+ break;
|
|
|
+ case "已截止":
|
|
|
+ pageInfo.expression(PredicateUtils.lte("deadline", new Date(), false));
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ pageInfo.expression(PredicateUtils.gt("deadline", new Date(), false));
|
|
|
+ break;
|
|
|
}
|
|
|
+ } else {
|
|
|
+ pageInfo.expression(PredicateUtils.gt("deadline", new Date(), false));
|
|
|
+ }
|
|
|
+ // 发布时间
|
|
|
+ if (!StringUtils.isEmpty(minReleaseDate)) {
|
|
|
+ pageInfo.expression(PredicateUtils.gte("releaseDate", minReleaseDate, false));
|
|
|
+ }
|
|
|
+ if (!StringUtils.isEmpty(maxReleaseDate)) {
|
|
|
+ pageInfo.expression(PredicateUtils.lte("releaseDate", maxReleaseDate, false));
|
|
|
+ }
|
|
|
+
|
|
|
+ // 求购状态
|
|
|
+ if (status != null) {
|
|
|
+ pageInfo.filter("status", status);
|
|
|
}
|
|
|
|
|
|
+ // 买家中心
|
|
|
+ if (uu != null) {
|
|
|
+ pageInfo.filter("uu", uu);
|
|
|
+ }
|
|
|
+
|
|
|
+ pageInfo.sorting("releaseDate", Direction.DESC);
|
|
|
Page<SeekPurchase> pageSeeks = seekPurchasedao.findAll(new Specification<SeekPurchase>() {
|
|
|
- public Predicate toPredicate(Root<SeekPurchase> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
|
|
|
+ public Predicate toPredicate(Root<SeekPurchase> root, CriteriaQuery<?> query,
|
|
|
+ CriteriaBuilder builder) {
|
|
|
query.where(pageInfo.getPredicates(root, query, builder));
|
|
|
return null;
|
|
|
}
|
|
|
@@ -66,8 +136,128 @@ public class SeekPurchaseServiceImpl implements SeekPurchaseService {
|
|
|
return pageSeeks;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
@Override
|
|
|
public List<Map<String, Object>> getSeekRanking() {
|
|
|
- return null;
|
|
|
+ String sql = "SELECT spCode,spAmount,uuAmount FROM "
|
|
|
+ + "(SELECT sp_code AS spCode,sum(sp_amount) AS spAmount,count(DISTINCT(sp_uu)) AS uuAmount FROM"
|
|
|
+ + " trade$seek_purchase GROUP BY sp_code) a order by spAmount desc limit 0,5";
|
|
|
+ return jdbcTemplate.queryForList(sql);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public SeekPurchase saveOneSeekPurchase(SeekPurchase seekPurchase, User user) {
|
|
|
+ // 检查信息是否完整
|
|
|
+ if (seekPurchase == null
|
|
|
+ || StringUtils.isEmpty(seekPurchase.getCode()) || StringUtils
|
|
|
+ .isEmpty(seekPurchase.getBrand()) || StringUtils.isEmpty(seekPurchase.getCode())) {
|
|
|
+ throw new IllegalOperatorException("请完善求购信息...");
|
|
|
+ }
|
|
|
+ // 匹配类目
|
|
|
+ String kind = "";
|
|
|
+ Long brandId = null;
|
|
|
+ List<Brand> brands = brandDao.findByUpperNameEn(seekPurchase.getBrand());
|
|
|
+ if (CollectionUtils.isEmpty(brands)) {
|
|
|
+ brands = brandDao.findByUpperNameCn(seekPurchase.getBrand());
|
|
|
+ if (CollectionUtils.isEmpty(brands)) {
|
|
|
+ kind = "其他";
|
|
|
+ } else {
|
|
|
+ brandId = brands.get(0).getId();
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ brandId = brands.get(0).getId();
|
|
|
+ }
|
|
|
+ if (brandId != null) {
|
|
|
+ List<Component> components = componentDao
|
|
|
+ .findByCodeAndBrandid(seekPurchase.getCode(), brandId);
|
|
|
+ if (!CollectionUtils.isEmpty(components)) {
|
|
|
+ kind = components.get(0).getKind().getNameCn();
|
|
|
+ } else {
|
|
|
+ kind = "其他";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ seekPurchase.setKind(kind);
|
|
|
+ // 设置发布时间
|
|
|
+ seekPurchase.setReleaseDate(new Date());
|
|
|
+ // 设置求购状态
|
|
|
+ seekPurchase.setStatus(Status.NO_OFFER.getValue());
|
|
|
+ // 设置求购次数
|
|
|
+ seekPurchase.setOfferAmount(0);
|
|
|
+ // 设置求购人信息
|
|
|
+ seekPurchase.setUu(user.getUserUU());
|
|
|
+ seekPurchase.setTel(user.getUserTel());
|
|
|
+ if (user.getEnterprise() != null) {
|
|
|
+ seekPurchase.setUserName(user.getEnterprise().getEnName());
|
|
|
+ } else {
|
|
|
+ seekPurchase.setUserName(user.getUserName());
|
|
|
+ }
|
|
|
+ seekPurchase = seekPurchasedao.save(seekPurchase);
|
|
|
+
|
|
|
+ //匹配商城现货
|
|
|
+ List<Long> goods = goodsDao.getGoodsByCodeAndName(seekPurchase.getCode(), seekPurchase.getBrand());
|
|
|
+ List<SeekMallGoods> seekMallGoodsList = new ArrayList<>();
|
|
|
+ SeekMallGoods seekMallGoods = new SeekMallGoods();
|
|
|
+ seekMallGoods.setSpId(seekPurchase.getId());
|
|
|
+ for (Long good : goods) {
|
|
|
+ seekMallGoods.setGoodsId(good);
|
|
|
+ seekMallGoodsList.add(seekMallGoods);
|
|
|
+ }
|
|
|
+ seekMallGoodsDao.save(seekMallGoodsList);
|
|
|
+ return seekPurchase;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Page<SeekMallGoods> getVendorSeekPageInfo(final PageInfo pageInfo, Long uu, Integer status, String minReleaseDate, String maxReleaseDate, String keyWord, String deadline) {
|
|
|
+ /**
|
|
|
+ if (uu != null) {
|
|
|
+ pageInfo.filter("goods.publisherUU", uu);
|
|
|
+ } else {
|
|
|
+ throw new IllegalOperatorException("请求参数错误...");
|
|
|
+ }**/
|
|
|
+ // 关键词查询 品牌或者是型号
|
|
|
+ if (!StringUtils.isEmpty(keyWord)) {
|
|
|
+ SimpleExpression code = new SimpleExpression("seekPurchase.code", keyWord, Operator.LIKE);
|
|
|
+ SimpleExpression brand = new SimpleExpression("seekPurchase.brand", keyWord, Operator.LIKE);
|
|
|
+ SimpleExpression[] simpleExpressions = new SimpleExpression[]{code, brand};
|
|
|
+ LogicalExpression logicalExpression = PredicateUtils.or(simpleExpressions);
|
|
|
+ pageInfo.expression(logicalExpression);
|
|
|
+ }
|
|
|
+ // 截止时间查询
|
|
|
+ if (!StringUtils.isEmpty(deadline)) {
|
|
|
+ switch (deadline) {
|
|
|
+ case "全部":
|
|
|
+ break;
|
|
|
+ case "已截止":
|
|
|
+ pageInfo.expression(PredicateUtils.lte("seekPurchase.deadline", new Date(), false));
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ pageInfo.expression(PredicateUtils.gt("seekPurchase.deadline", new Date(), false));
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ pageInfo.expression(PredicateUtils.gt("seekPurchase.deadline", new Date(), false));
|
|
|
+ }
|
|
|
+ // 发布时间
|
|
|
+ if (!StringUtils.isEmpty(minReleaseDate)) {
|
|
|
+ pageInfo.expression(PredicateUtils.gte("seekPurchase.releaseDate", minReleaseDate, false));
|
|
|
+ }
|
|
|
+ if (!StringUtils.isEmpty(maxReleaseDate)) {
|
|
|
+ pageInfo.expression(PredicateUtils.lte("seekPurchase.releaseDate", maxReleaseDate, false));
|
|
|
+ }
|
|
|
+
|
|
|
+ // 求购状态
|
|
|
+ if (status != null) {
|
|
|
+ pageInfo.filter("seekPurchase.status", status);
|
|
|
+ }
|
|
|
+ pageInfo.sorting("seekPurchase.releaseDate", Direction.DESC);
|
|
|
+ Page<SeekMallGoods> pageSeeks = seekMallGoodsDao
|
|
|
+ .findAll(new Specification<SeekMallGoods>() {
|
|
|
+ public Predicate toPredicate(Root<SeekMallGoods> root, CriteriaQuery<?> query,
|
|
|
+ CriteriaBuilder builder) {
|
|
|
+ query.where(pageInfo.getPredicates(root, query, builder));
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }, pageInfo);
|
|
|
+ return pageSeeks;
|
|
|
}
|
|
|
}
|