From 0586a24d8a7ba5f35fb825fbd49a8363b1e5b289 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期三, 15 一月 2025 10:24:45 +0800
Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/qijisheng
---
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java | 149 +++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 129 insertions(+), 20 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 1889c68..68927ec 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,16 +87,17 @@
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;
- String districtCode = null;
+ String provinceCode = "0";
+ String cityCode = "0";
+ String districtCode = "0";
String token = SecurityUtils.getToken(ServletUtils.getRequest());
if(StringUtils.isNotEmpty(token)){
Long userid = tokenService.getLoginUserApplet().getUserid();
@@ -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){
@@ -117,11 +119,83 @@
Integer data = orderClient.getGoodsSaleNum(goods.getGoodsId(), 1).getData();
goods.setSaleNum(data);
}
- return pageInfo.setRecords(list);
+
+ //手动排序
+ 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());
+
+ int pageSize = search.getPageSize();
+ int pageCurr = search.getPageCurr();
+
+ // 计算起始索引
+ int pageNum = (pageCurr - 1) * pageSize;
+
+ // 检查 pageNum 是否合法
+ if (pageNum < 0 || pageNum >= list.size()) {
+ // 如果 pageNum 不合法,返回空列表
+ pageInfo.setRecords(new ArrayList<>());
+ return pageInfo;
+ }
+
+ // 计算结束索引
+ int endIndex = Math.min(pageNum + pageSize, list.size());
+
+ // 获取分页数据
+ List<GoodsVO> pageList = list.subList(pageNum, endIndex);
+
+ // 设置分页结果
+ pageInfo.setRecords(pageList);
+ return pageInfo;
}
@Override
- public GoodsVO goodsDetail(Long goodsId, String longitude, String latitude) {
+ public GoodsVO goodsDetail(Long goodsId, Integer shopId, String longitude, String latitude) {
if (goodsId == null || goodsId <= 0) {
throw new NullPointerException("商品ID不能为空");
}
@@ -141,11 +215,20 @@
}
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());
goodsVO.setGoodsName(goods.getName());
- Price price = getPrice(vipId, goods.getId(), null, 1, provinceCode, cityCode, districtCode);
+ Price price = getPrice(vipId, goods.getId(), shopId, 1, provinceCode, cityCode, districtCode);
if(null != price){
goodsVO.setPointPayment(price.getPointPayment() ? 1 : 0);
goodsVO.setCashPayment(price.getCashPayment() ? 1 : 0);
@@ -189,6 +272,18 @@
}
Integer integer = orderClient.getGoodsSaleNum(goods.getId(), 1).getData();
goodsVO.setSaleNum(integer);
+ GoodsEvaluate goodsEvaluate = goodsEvaluateService.lambdaQuery().eq(GoodsEvaluate::getGoodsId, goodsId).ne(GoodsEvaluate::getComment, "")
+ .orderByDesc(GoodsEvaluate::getGrade).eq(GoodsEvaluate::getStatus, 2).isNotNull(GoodsEvaluate::getComment)
+ .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;
}
@@ -225,7 +320,12 @@
@Override
public IPage<Goods> getManageGoodsList(Page<Goods> page, Goods goods) {
- return goodsMapper.selectManageGoodsList(page, goods);
+ IPage<Goods> goodsIPage = goodsMapper.selectManageGoodsList(page, goods);
+ goodsIPage.getRecords().forEach(goods1 -> {
+ Integer data = orderClient.getGoodsSaleNum(goods1.getId(), 1).getData();
+ goods1.setSaleNum(data);
+ });
+ return goodsIPage;
}
@Override
@@ -265,7 +365,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());
@@ -283,6 +386,10 @@
saveGoodsAreaList(goodsAreaList, goods.getId());
}
+
+
+
+
private void saveGoodsAreaList(List<GoodsArea> goodsAreaList, Integer id) {
goodsAreaService.remove(new LambdaQueryWrapper<GoodsArea>()
.eq(GoodsArea::getGoodsId, id));
@@ -299,9 +406,10 @@
area.setProvinceCode(goodsArea.getProvinceCode());
area.setCityCode(goodsArea.getCityCode());
area.setDistrictsCode(goodsArea.getDistrictsCode());
- if(null != area.getSellingPrice() && null != area.getIntegral()){
- goodsAreaList2.add(area);
- }
+// if(null != area.getSellingPrice() || null != area.getIntegral()){
+// goodsAreaList2.add(area);
+// }
+ goodsAreaList2.add(area);
}
goodsAreaService.saveBatch(goodsAreaList2);
}
@@ -323,7 +431,7 @@
.eq(GoodsAppUser::getGoodsId, id));
if (!CollectionUtils.isEmpty(goodsAppUserList)){
for (GoodsAppUser goodsAppUser : goodsAppUserList) {
- goodsAppUser.setId(null );
+ goodsAppUser.setId(null);
goodsAppUser.setGoodsId(id);
}
}
@@ -370,6 +478,7 @@
List<AppUser> appUsers = appUserClient.listByIds(userIds);
for (GoodsAppUser goodsAppUser : goodsAppUserList) {
appUsers.stream().filter(u -> u.getId().equals(goodsAppUser.getAppUserId())).findFirst().ifPresent( u -> {
+ goodsAppUser.setAppUserIdStr(goodsAppUser.getAppUserId().toString());
goodsAppUser.setUserName(u.getName());
goodsAppUser.setPhone(u.getPhone());
VipSetting vipSetting = vipSettingService.getById(u.getVipId());
@@ -476,15 +585,15 @@
if(null == bargainPriceDetail){
//没有门店特价,判断地区价格配置
LambdaQueryWrapper<GoodsArea> queryWrapper = new LambdaQueryWrapper<GoodsArea>().eq(GoodsArea::getGoodsId, goodsId).eq(GoodsArea::getVip, vip);
- if(StringUtils.isNotEmpty(districtCode)){
- queryWrapper.eq(GoodsArea::getDistrictsCode, districtCode);
- }
- if(StringUtils.isNotEmpty(cityCode)){
- queryWrapper.eq(GoodsArea::getCityCode, cityCode);
- }
if(StringUtils.isNotEmpty(provinceCode)){
queryWrapper.eq(GoodsArea::getProvinceCode, provinceCode);
}
+ if(StringUtils.isNotEmpty(cityCode)){
+ queryWrapper.and(i -> i.eq(GoodsArea::getCityCode, cityCode).or().isNull(GoodsArea::getCityCode));
+ }
+ if(StringUtils.isNotEmpty(districtCode)){
+ queryWrapper.and(i -> i.eq(GoodsArea::getDistrictsCode, districtCode).or().isNull(GoodsArea::getDistrictsCode));
+ }
GoodsArea goodsArea = goodsAreaService.getOne(queryWrapper);
if(null == goodsArea){
//没有地区价格,则使用会员价格
--
Gitblit v1.7.1