master:系统功能完善;
parent
0733e51628
commit
6b443fb998
|
|
@ -69,7 +69,7 @@ public class NoticeController extends BaseController {
|
|||
}
|
||||
|
||||
@PreAuthorize("@ss.hasAnyRoles('admin,general_admin,store')||@ss.hasSupplierSubRole()")
|
||||
@ApiOperation(value = "档口首页获取公告列表", httpMethod = "GET", response = R.class)
|
||||
@ApiOperation(value = "档口首页、电商卖家首页获取公告列表", httpMethod = "GET", response = R.class)
|
||||
@GetMapping("/list")
|
||||
public R<List<NoticeLatest10ResVO>> latest10() {
|
||||
return R.ok(BeanUtil.copyToList(noticeService.latest10(), NoticeLatest10ResVO.class));
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ public class QuickFunctionController extends XktBaseController {
|
|||
private static final String MENU_TYPE_C = "C";
|
||||
|
||||
@PreAuthorize("@ss.hasAnyRoles('admin,general_admin,seller,store')")
|
||||
@ApiOperation(value = "档口首页 档口或电商卖家选择的快捷功能", httpMethod = "GET", response = R.class)
|
||||
@ApiOperation(value = "档口或电商卖家选择的快捷功能", httpMethod = "GET", response = R.class)
|
||||
@GetMapping("/selected/{roleId}/{bizId}")
|
||||
public R<List<StoreQuickFuncVO>> getSelectedList(@PathVariable("roleId") Long roleId, @PathVariable("bizId") Long bizId) {
|
||||
// 找到当前所有的快捷菜单
|
||||
|
|
@ -47,7 +47,7 @@ public class QuickFunctionController extends XktBaseController {
|
|||
}
|
||||
|
||||
@PreAuthorize("@ss.hasAnyRoles('admin,general_admin,seller,store')")
|
||||
@ApiOperation(value = "档口常用功能 点击 设置", httpMethod = "GET", response = R.class)
|
||||
@ApiOperation(value = "常用功能 点击 设置", httpMethod = "GET", response = R.class)
|
||||
@GetMapping("/menus/{roleId}/{bizId}")
|
||||
public R<QuickFuncVO> getMenuList(@PathVariable("roleId") Long roleId, @PathVariable("bizId") Long bizId) {
|
||||
// 找到当前所有的快捷菜单
|
||||
|
|
|
|||
|
|
@ -6,10 +6,8 @@ import com.ruoyi.common.core.controller.XktBaseController;
|
|||
import com.ruoyi.common.core.domain.R;
|
||||
import com.ruoyi.common.core.page.Page;
|
||||
import com.ruoyi.common.enums.BusinessType;
|
||||
import com.ruoyi.web.controller.xkt.vo.userFavorite.UserFavBatchAddToShopCartVO;
|
||||
import com.ruoyi.web.controller.xkt.vo.userFavorite.UserFavBatchDeleteVO;
|
||||
import com.ruoyi.web.controller.xkt.vo.userFavorite.UserFavoritePageVO;
|
||||
import com.ruoyi.web.controller.xkt.vo.userFavorite.UserFavoriteVO;
|
||||
import com.ruoyi.web.controller.xkt.vo.storeProd.StoreProdStatusCountResVO;
|
||||
import com.ruoyi.web.controller.xkt.vo.userFavorite.*;
|
||||
import com.ruoyi.xkt.dto.userFavorite.*;
|
||||
import com.ruoyi.xkt.service.IUserFavoritesService;
|
||||
import io.swagger.annotations.Api;
|
||||
|
|
@ -33,6 +31,12 @@ public class UserFavoritesController extends XktBaseController {
|
|||
|
||||
final IUserFavoritesService userFavService;
|
||||
|
||||
@ApiOperation(value = "获取商品各个状态数量", httpMethod = "GET", response = R.class)
|
||||
@GetMapping(value = "/status/num")
|
||||
public R<UserFavStatusCountResVO> getStatusNum() {
|
||||
return R.ok(BeanUtil.toBean(userFavService.getStatusNum(), UserFavStatusCountResVO.class));
|
||||
}
|
||||
|
||||
@PreAuthorize("@ss.hasAnyRoles('seller')")
|
||||
@ApiOperation(value = "用户收藏商品", httpMethod = "POST", response = R.class)
|
||||
@Log(title = "用户收藏商品", businessType = BusinessType.INSERT)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,22 @@
|
|||
package com.ruoyi.web.controller.xkt.vo.userFavorite;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author liujiang
|
||||
* @version v1.0
|
||||
* @date 2025/3/27 15:12
|
||||
*/
|
||||
@Data
|
||||
@ApiModel
|
||||
public class UserFavStatusCountResVO {
|
||||
|
||||
@ApiModelProperty(value = "在售数量")
|
||||
private Integer onSaleNum;
|
||||
@ApiModelProperty(value = "已失效数量")
|
||||
private Integer expiredNum;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
package com.ruoyi.xkt.dto.userFavorite;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author liujiang
|
||||
* @version v1.0
|
||||
* @date 2025/3/27 15:12
|
||||
*/
|
||||
@Data
|
||||
@ApiModel
|
||||
public class UserFavStatusCountResDTO {
|
||||
|
||||
@ApiModelProperty(value = "在售数量")
|
||||
private Integer onSaleNum;
|
||||
@ApiModelProperty(value = "已失效数量")
|
||||
private Integer expiredNum;
|
||||
|
||||
}
|
||||
|
|
@ -3,6 +3,7 @@ package com.ruoyi.xkt.mapper;
|
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.ruoyi.xkt.domain.UserFavorites;
|
||||
import com.ruoyi.xkt.dto.dailyStoreTag.DailyStoreTagDTO;
|
||||
import com.ruoyi.xkt.dto.userFavorite.UserFavStatusCountResDTO;
|
||||
import com.ruoyi.xkt.dto.userFavorite.UserFavoritePageDTO;
|
||||
import com.ruoyi.xkt.dto.userFavorite.UserFavoritePageResDTO;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
|
@ -35,4 +36,11 @@ public interface UserFavoritesMapper extends BaseMapper<UserFavorites> {
|
|||
*/
|
||||
List<DailyStoreTagDTO> searchTop10Prod(@Param("oneMonthAgo") Date oneMonthAgo, @Param("yesterday") Date yesterday);
|
||||
|
||||
/**
|
||||
* 获取用户收藏商品各状态数量
|
||||
*
|
||||
* @param userId 用户ID
|
||||
* @return
|
||||
*/
|
||||
UserFavStatusCountResDTO getStatusNum(@Param("userId") Long userId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,4 +42,10 @@ public interface IUserFavoritesService {
|
|||
*/
|
||||
Integer batchDelete(UserFavBatchDeleteDTO batchDTO);
|
||||
|
||||
/**
|
||||
* 获取用户收藏商品各个状态数量
|
||||
*
|
||||
* @return UserFavStatusCountResDTO
|
||||
*/
|
||||
UserFavStatusCountResDTO getStatusNum();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,7 +13,6 @@ import com.ruoyi.common.utils.SecurityUtils;
|
|||
import com.ruoyi.xkt.domain.*;
|
||||
import com.ruoyi.xkt.dto.storeProductFile.StoreProdMainPicDTO;
|
||||
import com.ruoyi.xkt.dto.userShoppingCart.*;
|
||||
import com.ruoyi.xkt.enums.EProductStatus;
|
||||
import com.ruoyi.xkt.enums.FileType;
|
||||
import com.ruoyi.xkt.enums.ProductSizeStatus;
|
||||
import com.ruoyi.xkt.mapper.*;
|
||||
|
|
@ -162,6 +161,8 @@ public class ShoppingCartServiceImpl implements IShoppingCartService {
|
|||
List<StoreProductColorSize> standardSizeList = this.prodColorSizeMapper.selectList(new LambdaQueryWrapper<StoreProductColorSize>()
|
||||
.eq(StoreProductColorSize::getStoreProdId, shoppingCart.getStoreProdId()).eq(StoreProductColorSize::getDelFlag, Constants.UNDELETED)
|
||||
.eq(StoreProductColorSize::getStandard, ProductSizeStatus.STANDARD.getValue()));
|
||||
// 标准尺码
|
||||
List<Integer> standardList = standardSizeList.stream().map(StoreProductColorSize::getSize).distinct().collect(Collectors.toList());
|
||||
Map<String, List<StoreProductColorSize>> colorSizeMap = standardSizeList.stream().collect(Collectors
|
||||
.groupingBy(x -> x.getStoreProdId().toString() + x.getStoreColorId().toString()));
|
||||
// 获取商品颜色列表
|
||||
|
|
@ -191,10 +192,7 @@ public class ShoppingCartServiceImpl implements IShoppingCartService {
|
|||
.collect(Collectors.toList());
|
||||
return new ShopCartDetailResDTO() {{
|
||||
setProdArtNum(shoppingCart.getProdArtNum()).setStoreProdId(shoppingCart.getStoreProdId())
|
||||
.setStandardSizeList(standardSizeList.stream().map(StoreProductColorSize::getSize)
|
||||
.sorted(Comparator.comparing(Function.identity()))
|
||||
.collect(Collectors.toList()))
|
||||
.setColorList(colorSizeStockList)
|
||||
.setStandardSizeList(standardList).setColorList(colorSizeStockList)
|
||||
.setDetailList(BeanUtil.copyToList(detailList, ShopCartDetailResDTO.SCDDetailDTO.class));
|
||||
}};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -219,11 +219,13 @@ public class UserFavoritesServiceImpl implements IUserFavoritesService {
|
|||
@Override
|
||||
@Transactional
|
||||
public Integer batchDelete(UserFavBatchDeleteDTO batchDTO) {
|
||||
Long userId = SecurityUtils.getUserIdSafe();
|
||||
if (ObjectUtils.isEmpty(userId)) {
|
||||
throw new ServiceException("用户未登录,请先登录!", HttpStatus.ERROR);
|
||||
}
|
||||
// 获取当前登录用户
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
List<UserFavorites> favoriteList = this.userFavMapper.selectList(new LambdaQueryWrapper<UserFavorites>()
|
||||
.eq(UserFavorites::getUserId, loginUser.getUserId())
|
||||
.in(UserFavorites::getStoreProdId, batchDTO.getStoreProdIdList())
|
||||
.eq(UserFavorites::getUserId, userId).in(UserFavorites::getStoreProdId, batchDTO.getStoreProdIdList())
|
||||
.eq(UserFavorites::getDelFlag, Constants.UNDELETED));
|
||||
if (CollectionUtils.isEmpty(favoriteList)) {
|
||||
return 0;
|
||||
|
|
@ -251,5 +253,20 @@ public class UserFavoritesServiceImpl implements IUserFavoritesService {
|
|||
return count;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户收藏商品各个状态数量
|
||||
*
|
||||
* @return UserFavStatusCountResDTO
|
||||
*/
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public UserFavStatusCountResDTO getStatusNum() {
|
||||
Long userId = SecurityUtils.getUserIdSafe();
|
||||
if (ObjectUtils.isEmpty(userId)) {
|
||||
throw new ServiceException("用户未登录,请先登录!", HttpStatus.ERROR);
|
||||
}
|
||||
return this.userFavMapper.getStatusNum(userId);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -68,18 +68,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
|
||||
<select id="getStatusNum">
|
||||
SELECT
|
||||
sc.id,
|
||||
IFNULL( SUM( CASE WHEN sp.prod_status IN ( 2, 3 ) THEN 1 ELSE 0 END ), 0 ) AS onSaleNum,
|
||||
IFNULL( SUM( CASE WHEN sp.prod_status IN ( 2 ) THEN 1 ELSE 0 END ), 0 ) AS onSaleNum,
|
||||
IFNULL( SUM( CASE WHEN sp.prod_status IN ( 4, 5 ) THEN 1 ELSE 0 END ), 0 ) AS expiredNum
|
||||
FROM
|
||||
shopping_cart sc
|
||||
LEFT JOIN store_product sp ON sc.store_prod_id = sp.id
|
||||
WHERE
|
||||
sc.del_flag = 0
|
||||
AND sp.prod_status IN ( 2, 3, 4, 5 )
|
||||
AND sc.user_id = #{userId}
|
||||
GROUP BY
|
||||
sc.id
|
||||
</select>
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -29,10 +29,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
sp.prod_status
|
||||
FROM
|
||||
user_favorites uf
|
||||
LEFT JOIN store_product sp ON uf.store_prod_id = sp.id
|
||||
LEFT JOIN store s ON uf.store_id = s.id
|
||||
JOIN store_product sp ON uf.store_prod_id = sp.id
|
||||
JOIN store s ON uf.store_id = s.id
|
||||
WHERE
|
||||
uf.del_flag = 0 AND uf.user_id = #{userId}
|
||||
<if test="storeName != null and storeName != ''"> AND s.store_name = #{storeName}</if>
|
||||
<if test="prodArtNum != null and prodArtNum != ''"> AND sp.prod_art_num like concat('%', #{prodArtNum}, '%')</if>
|
||||
</select>
|
||||
|
||||
<select id="searchTop10Prod" resultType="com.ruoyi.xkt.dto.dailyStoreTag.DailyStoreTagDTO">
|
||||
|
|
@ -52,7 +54,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
LIMIT 10
|
||||
</select>
|
||||
|
||||
|
||||
<select id="getStatusNum">
|
||||
SELECT
|
||||
COUNT( CASE WHEN sp.prod_status IN (2) THEN 1 ELSE 0 END ) AS on_sale_num,
|
||||
COUNT( CASE WHEN sp.prod_status IN (4,5) THEN 1 ELSE 0 END ) AS expired_num
|
||||
FROM
|
||||
user_favorites uf
|
||||
JOIN store_product sp ON uf.store_prod_id = sp.id
|
||||
WHERE
|
||||
uf.del_flag = 0
|
||||
AND uf.user_id = #{userId}
|
||||
</select>
|
||||
|
||||
|
||||
</mapper>
|
||||
Loading…
Reference in New Issue