From f94d845814d209b7b5cda0ea70a2e8cb6cda5b39 Mon Sep 17 00:00:00 2001
From: luodangjia <luodangjia>
Date: 星期一, 13 一月 2025 15:22:50 +0800
Subject: [PATCH] 12.18
---
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java | 121 +++++++++++++++++++++++++++++++++++-----
1 files changed, 106 insertions(+), 15 deletions(-)
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java
index 80dc58a..9a6dd4e 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java
@@ -1,5 +1,6 @@
package com.ruoyi.other.service.impl;
+import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -86,12 +87,13 @@
private GoodsBargainPriceDetailService goodsBargainPriceDetailService;
@Resource
private OrderClient orderClient;
+ @Resource
+ private GoodsEvaluateService goodsEvaluateService;
@Override
public PageInfo<GoodsVO> goodsList(Goods search) {
- PageInfo<GoodsVO> pageInfo = new PageInfo(search.getPageCurr(), search.getPageSize());
Integer vipId = 0;
String provinceCode = null;
String cityCode = null;
@@ -105,7 +107,7 @@
cityCode = appUser.getCityCode();
districtCode = appUser.getDistrictCode();
}
- List<GoodsVO> list = this.baseMapper.goodsList(pageInfo, search.getGoodsCategoryId(), search.getName(), vipId);
+ List<GoodsVO> list = this.baseMapper.goodsList(search.getGoodsCategoryId(), search.getName(), vipId);
for (GoodsVO goods : list) {
Price price = getPrice(vipId, goods.getGoodsId(), null, 1, provinceCode, cityCode, districtCode);
if(null != price){
@@ -116,6 +118,66 @@
}
Integer data = orderClient.getGoodsSaleNum(goods.getGoodsId(), 1).getData();
goods.setSaleNum(data);
+ }
+
+ //手动排序
+ if(StringUtils.isNotEmpty(search.getOrderByColumn())){
+ if("selling_price".equals(search.getOrderByColumn())){
+ list.sort(new Comparator<GoodsVO>() {
+ @Override
+ public int compare(GoodsVO o1, GoodsVO o2) {
+ if(null != o1.getSellingPrice() && null != o2.getSellingPrice()){
+ return o1.getSellingPrice().compareTo(o2.getSellingPrice()) * (StringUtils.isNotEmpty(search.getIsAsc()) ? -1 : 1);
+ }
+ if(null == o1.getSellingPrice() && null != o2.getSellingPrice()){
+ return BigDecimal.ZERO.compareTo(o2.getSellingPrice()) * (StringUtils.isNotEmpty(search.getIsAsc()) ? -1 : 1);
+ }
+ if(null != o1.getSellingPrice() && null == o2.getSellingPrice()){
+ return o1.getSellingPrice().compareTo(BigDecimal.ZERO) * (StringUtils.isNotEmpty(search.getIsAsc()) ? -1 : 1);
+ }
+ return 0;
+ }
+ });
+ }
+ if("integral".equals(search.getOrderByColumn())){
+ list.sort(new Comparator<GoodsVO>() {
+ @Override
+ public int compare(GoodsVO o1, GoodsVO o2) {
+ if(null != o1.getIntegral() && null != o2.getIntegral()){
+ return o1.getIntegral().compareTo(o2.getIntegral()) * (StringUtils.isNotEmpty(search.getIsAsc()) ? -1 : 1);
+ }
+ if(null == o1.getIntegral() && null != o2.getIntegral()){
+ return Integer.valueOf(0).compareTo(o2.getIntegral()) * (StringUtils.isNotEmpty(search.getIsAsc()) ? -1 : 1);
+ }
+ if(null != o1.getIntegral() && null == o2.getIntegral()){
+ return o1.getIntegral().compareTo(Integer.valueOf(0)) * (StringUtils.isNotEmpty(search.getIsAsc()) ? -1 : 1);
+ }
+ return 0;
+ }
+ });
+ }
+ if("sale_num".equals(search.getOrderByColumn())){
+ list.sort(new Comparator<GoodsVO>() {
+ @Override
+ public int compare(GoodsVO o1, GoodsVO o2) {
+ return o1.getSaleNum().compareTo(o2.getSaleNum()) * (StringUtils.isNotEmpty(search.getIsAsc()) ? -1 : 1);
+ }
+ });
+ }
+ }
+ //手动处理分页
+ PageInfo<GoodsVO> pageInfo = new PageInfo<>();
+ pageInfo.setSize(search.getPageSize());
+ pageInfo.setTotal(list.size());
+ Integer pageSize = search.getPageSize();
+ Integer pageNum = (search.getPageCurr() - 1) * pageSize;
+
+ if(list.size() >= (pageNum + 1) * pageSize){
+ list = list.subList(pageNum, pageNum + pageSize);
+ }else if(pageNum < list.size() && list.size() < (pageNum + 1) * pageSize){
+ list = list.subList(pageNum, list.size());
+ }else{
+ list = new ArrayList<>();
}
return pageInfo.setRecords(list);
}
@@ -141,6 +203,15 @@
}
Goods goods = this.getById(goodsId);
+ if(null == goods || goods.getDelFlag() == 1){
+ throw new RuntimeException("商品不存在");
+ }
+ if(goods.getStatus() == 1){
+ throw new RuntimeException("商品已被下架");
+ }
+ if(!goods.getCommodityAuthority().contains("-1") && !goods.getCommodityAuthority().contains(vipId.toString())){
+ throw new RuntimeException("权限不足");
+ }
GoodsVO goodsVO = new GoodsVO();
BeanUtils.copyBeanProp(goodsVO, goods);
goodsVO.setGoodsId(goods.getId());
@@ -173,20 +244,33 @@
.in(Shop::getDelFlag, 0));
goodsVO.setShopList(shopList);
}
- List<Shop> shopList = goodsVO.getShopList();
- for (Shop shop : shopList) {
- Double wgs84 = GeodesyUtil.getDistance(longitude + "," + latitude, shop.getLongitude() + "," + shop.getLatitude()).get("WGS84");
- shop.setDistance(wgs84);
- }
- shopList.sort(new Comparator<Shop>() {
- @Override
- public int compare(Shop o1, Shop o2) {
- return o1.getDistance().compareTo(o2.getDistance());
+ if(StringUtils.isNotEmpty(longitude) && StringUtils.isNotEmpty(latitude)){
+ List<Shop> shopList = goodsVO.getShopList();
+ for (Shop shop : shopList) {
+ Double wgs84 = GeodesyUtil.getDistance(longitude + "," + latitude, shop.getLongitude() + "," + shop.getLatitude()).get("WGS84");
+ shop.setDistance(wgs84);
}
- });
- goodsVO.setShopList(shopList);
+ shopList.sort(new Comparator<Shop>() {
+ @Override
+ public int compare(Shop o1, Shop o2) {
+ return o1.getDistance().compareTo(o2.getDistance());
+ }
+ });
+ goodsVO.setShopList(shopList);
+ }
Integer integer = orderClient.getGoodsSaleNum(goods.getId(), 1).getData();
goodsVO.setSaleNum(integer);
+ GoodsEvaluate goodsEvaluate = goodsEvaluateService.lambdaQuery().eq(GoodsEvaluate::getGoodsId, goodsId)
+ .orderByDesc(GoodsEvaluate::getGrade).eq(GoodsEvaluate::getStatus, 2).eq(GoodsEvaluate::getDelFlag, 0).last(" limit 0, 1").one();
+ if (null != goodsEvaluate) {
+ AppUser appUserById = appUserClient.getAppUserById(goodsEvaluate.getAppUserId());
+ if(null != appUserById){
+ goodsEvaluate.setUserName(appUserById.getName());
+ goodsEvaluate.setAvatar(appUserById.getAvatar());
+ goodsEvaluate.setIdStr(String.valueOf(goodsEvaluate.getId()));
+ }
+ }
+ goodsVO.setGoodsEvaluate(goodsEvaluate);
return goodsVO;
}
@@ -263,7 +347,10 @@
@Override
public void updateManageGoods(Goods goods) {
- goodsMapper.updateById(goods);
+ this.updateById(goods);
+ //修改个别字段
+ this.update(new LambdaUpdateWrapper<Goods>().eq(Goods::getId, goods.getId()).set(Goods::getSellingPrice, goods.getSellingPrice())
+ .set(Goods::getIntegral, goods.getIntegral()));
// 指定门店
List<GoodsShop> goodsShopList = goods.getGoodsShopList();
saveGoodsShopList(goodsShopList, goods.getId());
@@ -280,6 +367,10 @@
List<GoodsArea> goodsAreaList = goods.getGoodsAreaList();
saveGoodsAreaList(goodsAreaList, goods.getId());
}
+
+
+
+
private void saveGoodsAreaList(List<GoodsArea> goodsAreaList, Integer id) {
goodsAreaService.remove(new LambdaQueryWrapper<GoodsArea>()
@@ -321,7 +412,7 @@
.eq(GoodsAppUser::getGoodsId, id));
if (!CollectionUtils.isEmpty(goodsAppUserList)){
for (GoodsAppUser goodsAppUser : goodsAppUserList) {
- goodsAppUser.setId(null );
+ goodsAppUser.setId(null);
goodsAppUser.setGoodsId(id);
}
}
--
Gitblit v1.7.1