|
|
@@ -2,14 +2,17 @@ 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.commodity.model.Goods;
|
|
|
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.dao.SeekPurchaseGoodsDao;
|
|
|
+import com.uas.platform.b2c.trade.seek.dao.SeekPurchaseOfferDao;
|
|
|
import com.uas.platform.b2c.trade.seek.model.SeekPurchase;
|
|
|
+import com.uas.platform.b2c.trade.seek.model.SeekPurchaseGoods;
|
|
|
+import com.uas.platform.b2c.trade.seek.model.SeekPurchaseOffer;
|
|
|
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;
|
|
|
@@ -18,7 +21,6 @@ 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;
|
|
|
@@ -44,88 +46,87 @@ import org.springframework.util.StringUtils;
|
|
|
@Service
|
|
|
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;
|
|
|
+ private SeekPurchaseOfferDao seekPurchaseOfferDao;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private SeekPurchaseGoodsDao seekPurchaseGoodsDao;
|
|
|
|
|
|
@Override
|
|
|
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)) {
|
|
|
- switch (deadline) {
|
|
|
- case "全部":
|
|
|
- break;
|
|
|
- case "已截止":
|
|
|
- pageInfo.expression(PredicateUtils.lte("deadline", new Date(), false));
|
|
|
- break;
|
|
|
- default:
|
|
|
- pageInfo.expression(PredicateUtils.gt("deadline", new Date(), false));
|
|
|
- break;
|
|
|
- }
|
|
|
+ String maxReleaseDate, String releaseDateSort, String deadlineSort,
|
|
|
+ String offerAmountSort) {
|
|
|
+// // 关键词查询 品牌或者是型号
|
|
|
+// 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)) {
|
|
|
+// 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);
|
|
|
+// }
|
|
|
+//
|
|
|
+// // 排序
|
|
|
+ if (!StringUtils.isEmpty(releaseDateSort)) {
|
|
|
+ pageInfo.sorting("releaseDate", Direction.fromString(releaseDateSort));
|
|
|
} else {
|
|
|
- pageInfo.expression(PredicateUtils.gt("deadline", new Date(), false));
|
|
|
- }
|
|
|
- // 发布时间
|
|
|
- if (!StringUtils.isEmpty(minReleaseDate)) {
|
|
|
- pageInfo.expression(PredicateUtils.gte("releaseDate", minReleaseDate, false));
|
|
|
+ pageInfo.sorting("releaseDate", Direction.DESC);
|
|
|
}
|
|
|
- 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);
|
|
|
+//
|
|
|
+// if (!StringUtils.isEmpty(deadlineSort)) {
|
|
|
+// pageInfo.sorting("deadline", Direction.fromString(deadlineSort));
|
|
|
+// }
|
|
|
+//
|
|
|
+// if (!StringUtils.isEmpty(offerAmountSort)) {
|
|
|
+// pageInfo.sorting("offerAmount", Direction.fromString(offerAmountSort));
|
|
|
+// }
|
|
|
Page<SeekPurchase> pageSeeks = seekPurchasedao.findAll(new Specification<SeekPurchase>() {
|
|
|
public Predicate toPredicate(Root<SeekPurchase> root, CriteriaQuery<?> query,
|
|
|
CriteriaBuilder builder) {
|
|
|
@@ -139,8 +140,8 @@ public class SeekPurchaseServiceImpl implements SeekPurchaseService {
|
|
|
|
|
|
@Override
|
|
|
public List<Map<String, Object>> getSeekRanking() {
|
|
|
- String sql = "SELECT spCode,spAmount,uuAmount FROM "
|
|
|
- + "(SELECT sp_code AS spCode,sum(sp_amount) AS spAmount,count(DISTINCT(sp_uu)) AS uuAmount FROM"
|
|
|
+ String sql = "SELECT spCode,spAmount, uuAmount FROM "
|
|
|
+ + "(SELECT sp_code AS spCode,COALESCE(sum(sp_bought_amount), 0) AS spAmount,COALESCE (count(DISTINCT(sp_uu)), 0) AS uuAmount FROM"
|
|
|
+ " trade$seek_purchase GROUP BY sp_code) a order by spAmount desc limit 0,5";
|
|
|
return jdbcTemplate.queryForList(sql);
|
|
|
}
|
|
|
@@ -177,47 +178,62 @@ public class SeekPurchaseServiceImpl implements SeekPurchaseService {
|
|
|
}
|
|
|
}
|
|
|
seekPurchase.setKind(kind);
|
|
|
- // 设置发布时间
|
|
|
- seekPurchase.setReleaseDate(new Date());
|
|
|
- // 设置求购状态
|
|
|
+ seekPurchase.setReleaseDate(new Date(System.currentTimeMillis()));
|
|
|
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.setEnUu(user.getEnterprise().getUu());
|
|
|
+ seekPurchase.setEnterprise(user.getEnterprise());
|
|
|
}
|
|
|
+ seekPurchase.setUser(user);
|
|
|
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);
|
|
|
+ // 匹配商城现货
|
|
|
+ List<Goods> goods = goodsDao
|
|
|
+ .getGoodsByCodeAndName(seekPurchase.getCode(), seekPurchase.getBrand());
|
|
|
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("请求参数错误...");
|
|
|
- }**/
|
|
|
- // 关键词查询 品牌或者是型号
|
|
|
+ public SeekPurchase updateSeekPurchaseStatus(Long spId, Long ofId) {
|
|
|
+ // 修改求购表的报价状态
|
|
|
+ SeekPurchase seekPurchase = seekPurchasedao.findOne(spId);
|
|
|
+ seekPurchase.setStatus(Status.ACCEPTED.getValue());
|
|
|
+ seekPurchase = seekPurchasedao.save(seekPurchase);
|
|
|
+ // 修改报价表的状态
|
|
|
+ SeekPurchaseOffer seekPurchaseOffer = seekPurchaseOfferDao.findOne(ofId);
|
|
|
+ seekPurchaseOffer.setStatus(Status.ACCEPTED.getValue());
|
|
|
+ seekPurchaseOfferDao.save(seekPurchaseOffer);
|
|
|
+ // 修改中间表的状态
|
|
|
+ return seekPurchase;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Goods> getMallGoodsList(Long spId) {
|
|
|
+ SeekPurchase seekPurchase = seekPurchasedao.findOne(spId);
|
|
|
+ return goodsDao.getGoodsByCodeAndName(seekPurchase.getCode(), seekPurchase.getBrand());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Page<SeekPurchaseGoods> getUserSeekPageInfo(final PageInfo pageInfo, String keyWord,
|
|
|
+ String deadline, Integer status, String minReleaseDate, String maxReleaseDate,
|
|
|
+ boolean isMallGoods, User user) {
|
|
|
+ if (isMallGoods) {
|
|
|
+ pageInfo.expression(PredicateUtils.gt("goodsAmount", 0, false));
|
|
|
+ }
|
|
|
+ // 发布时间
|
|
|
+ if (!StringUtils.isEmpty(minReleaseDate)) {
|
|
|
+ pageInfo.expression(PredicateUtils.gte("releaseDate", new Date(Long.valueOf(minReleaseDate)), false));
|
|
|
+ }
|
|
|
+ if (!StringUtils.isEmpty(maxReleaseDate)) {
|
|
|
+ pageInfo.expression(PredicateUtils.lte("releaseDate", new Date(Long.valueOf(maxReleaseDate)), false));
|
|
|
+ }
|
|
|
+ // 关键字
|
|
|
if (!StringUtils.isEmpty(keyWord)) {
|
|
|
- SimpleExpression code = new SimpleExpression("seekPurchase.code", keyWord, Operator.LIKE);
|
|
|
- SimpleExpression brand = new SimpleExpression("seekPurchase.brand", keyWord, Operator.LIKE);
|
|
|
+ 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);
|
|
|
@@ -228,36 +244,23 @@ public class SeekPurchaseServiceImpl implements SeekPurchaseService {
|
|
|
case "全部":
|
|
|
break;
|
|
|
case "已截止":
|
|
|
- pageInfo.expression(PredicateUtils.lte("seekPurchase.deadline", new Date(), false));
|
|
|
+ pageInfo.expression(PredicateUtils.lte("deadline", new Date(), false));
|
|
|
break;
|
|
|
default:
|
|
|
- pageInfo.expression(PredicateUtils.gt("seekPurchase.deadline", new Date(), false));
|
|
|
+ pageInfo.expression(PredicateUtils.gt("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.expression(PredicateUtils.gt("deadline", new Date(), false));
|
|
|
}
|
|
|
- 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);
|
|
|
+ pageInfo.filter("uu", user.getUserUU());
|
|
|
+ Page<SeekPurchaseGoods> pageSeeks = seekPurchaseGoodsDao.findAll(new Specification<SeekPurchaseGoods>() {
|
|
|
+ public Predicate toPredicate(Root<SeekPurchaseGoods> root, CriteriaQuery<?> query,
|
|
|
+ CriteriaBuilder builder) {
|
|
|
+ query.where(pageInfo.getPredicates(root, query, builder));
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }, pageInfo);
|
|
|
return pageSeeks;
|
|
|
}
|
|
|
}
|