From 5d6e99dc8a20dcb8b957871ba662203ebc4d5f6d Mon Sep 17 00:00:00 2001 From: misworga831 Date: Tue, 6 Jun 2023 17:26:04 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=A7=BB=E9=99=A4@Resource=E6=B3=A8?= =?UTF-8?q?=E8=A7=A3=EF=BC=8C=E4=BF=AE=E5=A4=8D=E6=9D=83=E9=99=90=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E5=90=8E=EF=BC=8C=E7=99=BB=E5=BD=95=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E6=9D=83=E9=99=90=E6=B2=A1=E6=9C=89=E6=9B=B4=E6=96=B0=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handler/impl/goods/GoodsExecute.java | 22 ++++------ .../impl/order/OrderEveryDayTaskExecute.java | 20 ++------- .../impl/store/StoreRatingExecute.java | 13 ++---- .../modules/goods/entity/vos/StudioVO.java | 4 ++ .../goods/service/CommodityService.java | 4 ++ .../modules/goods/service/GoodsService.java | 3 ++ .../serviceimpl/CommodityServiceImpl.java | 10 +++++ .../goods/serviceimpl/GoodsServiceImpl.java | 11 +++-- .../goods/serviceimpl/StudioServiceImpl.java | 15 ++++--- .../service/MemberEvaluationService.java | 9 ++++ .../member/service/StoreMenuService.java | 5 ++- .../member/serviceimpl/ClerkServiceImpl.java | 42 ++++++++++--------- .../MemberEvaluationServiceImpl.java | 23 ++++++---- .../StoreDepartmentRoleServiceImpl.java | 15 +++++-- .../serviceimpl/StoreMenuRoleServiceImpl.java | 30 +++++-------- .../serviceimpl/StoreMenuServiceImpl.java | 40 ++++++++++++++---- .../serviceimpl/StoreRoleServiceImpl.java | 10 +++++ .../member/token/StoreTokenGenerate.java | 4 +- .../order/order/service/OrderItemService.java | 3 ++ .../order/order/service/TradeService.java | 4 +- .../serviceimpl/OrderItemServiceImpl.java | 10 +++++ .../serviceimpl/OrderPriceServiceImpl.java | 9 ++-- .../order/serviceimpl/OrderServiceImpl.java | 14 +------ .../order/serviceimpl/TradeServiceImpl.java | 2 +- .../permission/service/MenuService.java | 9 ++++ .../permission/service/RoleMenuService.java | 10 ----- .../serviceimpl/AdminUserServiceImpl.java | 28 ++++++------- .../DepartmentRoleServiceImpl.java | 10 +++++ .../serviceimpl/MenuServiceImpl.java | 28 ++++++++++--- .../serviceimpl/RoleMenuServiceImpl.java | 24 ++++------- .../serviceimpl/RoleServiceImpl.java | 7 ++++ .../serviceimpl/UserRoleServiceImpl.java | 9 ++++ .../serviceimpl/PlatformViewServiceImpl.java | 8 +--- .../system/token/ManagerTokenGenerate.java | 8 ++-- .../security/StoreAuthenticationFilter.java | 2 +- 35 files changed, 276 insertions(+), 189 deletions(-) diff --git a/consumer/src/main/java/cn/lili/timetask/handler/impl/goods/GoodsExecute.java b/consumer/src/main/java/cn/lili/timetask/handler/impl/goods/GoodsExecute.java index 85a68132..2956c457 100644 --- a/consumer/src/main/java/cn/lili/timetask/handler/impl/goods/GoodsExecute.java +++ b/consumer/src/main/java/cn/lili/timetask/handler/impl/goods/GoodsExecute.java @@ -3,14 +3,12 @@ package cn.lili.timetask.handler.impl.goods; import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; -import cn.lili.modules.goods.mapper.GoodsMapper; -import cn.lili.modules.member.entity.dos.MemberEvaluation; -import cn.lili.modules.member.mapper.MemberEvaluationMapper; +import cn.lili.modules.goods.service.GoodsService; +import cn.lili.modules.member.service.MemberEvaluationService; import cn.lili.timetask.handler.EveryDayExecute; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import javax.annotation.Resource; import java.util.List; import java.util.Map; @@ -25,13 +23,13 @@ public class GoodsExecute implements EveryDayExecute { /** * 会员评价 */ - @Resource - private MemberEvaluationMapper memberEvaluationMapper; + @Autowired + private MemberEvaluationService memberEvaluationService; /** * 商品 */ - @Resource - private GoodsMapper goodsMapper; + @Autowired + private GoodsService goodsService; /** * 查询已上架的商品的评价数量并赋值 @@ -40,12 +38,10 @@ public class GoodsExecute implements EveryDayExecute { public void execute() { //查询上次统计到本次的评价数量 - List> list = memberEvaluationMapper.memberEvaluationNum( - new QueryWrapper() - .between("create_time", DateUtil.yesterday(), new DateTime())); + List> list = memberEvaluationService.memberEvaluationNum(DateUtil.yesterday(), new DateTime()); for (Map map : list) { - goodsMapper.addGoodsCommentNum(Convert.toInt(map.get("num").toString()), map.get("goods_id").toString()); + goodsService.addGoodsCommentNum(Convert.toInt(map.get("num").toString()), map.get("goods_id").toString()); } } diff --git a/consumer/src/main/java/cn/lili/timetask/handler/impl/order/OrderEveryDayTaskExecute.java b/consumer/src/main/java/cn/lili/timetask/handler/impl/order/OrderEveryDayTaskExecute.java index 53024820..12bc0491 100644 --- a/consumer/src/main/java/cn/lili/timetask/handler/impl/order/OrderEveryDayTaskExecute.java +++ b/consumer/src/main/java/cn/lili/timetask/handler/impl/order/OrderEveryDayTaskExecute.java @@ -15,7 +15,6 @@ import cn.lili.modules.order.order.entity.enums.CommentStatusEnum; import cn.lili.modules.order.order.entity.enums.OrderComplaintStatusEnum; import cn.lili.modules.order.order.entity.enums.OrderItemAfterSaleStatusEnum; import cn.lili.modules.order.order.entity.enums.OrderStatusEnum; -import cn.lili.modules.order.order.mapper.OrderItemMapper; import cn.lili.modules.order.order.service.OrderItemService; import cn.lili.modules.order.order.service.OrderService; import cn.lili.modules.system.entity.dos.Setting; @@ -24,13 +23,11 @@ import cn.lili.modules.system.entity.enums.SettingEnum; import cn.lili.modules.system.service.SettingService; import cn.lili.timetask.handler.EveryDayExecute; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import javax.annotation.Resource; import java.util.List; import java.util.stream.Collectors; @@ -53,8 +50,6 @@ public class OrderEveryDayTaskExecute implements EveryDayExecute { */ @Autowired private OrderItemService orderItemService; - @Resource - private OrderItemMapper orderItemMapper; /** * 设置 */ @@ -148,10 +143,7 @@ public class OrderEveryDayTaskExecute implements EveryDayExecute { DateTime receiveTime = DateUtil.offsetDay(DateUtil.date(), -orderSetting.getAutoEvaluation()); //订单完成时间 <= 订单自动好评时间 - QueryWrapper queryWrapper = new QueryWrapper(); - queryWrapper.le("o.complete_time", receiveTime); - queryWrapper.eq("oi.comment_status", CommentStatusEnum.UNFINISHED.name()); - List orderItems = orderItemMapper.waitOperationOrderItem(queryWrapper); + List orderItems = orderItemService.waitOperationOrderItem(receiveTime, CommentStatusEnum.UNFINISHED.name()); //判断是否有符合条件的订单,进行自动评价处理 if (!orderItems.isEmpty()) { @@ -191,10 +183,7 @@ public class OrderEveryDayTaskExecute implements EveryDayExecute { DateTime receiveTime = DateUtil.offsetDay(DateUtil.date(), -orderSetting.getCloseAfterSale()); //关闭售后订单=未售后订单+小于订单关闭售后申请时间 - QueryWrapper queryWrapper = new QueryWrapper(); - queryWrapper.le("o.complete_time", receiveTime); - queryWrapper.eq("oi.after_sale_status", OrderItemAfterSaleStatusEnum.NOT_APPLIED.name()); - List orderItems = orderItemMapper.waitOperationOrderItem(queryWrapper); + List orderItems = orderItemService.waitOperationOrderItem(receiveTime, OrderItemAfterSaleStatusEnum.NOT_APPLIED.name()); //判断是否有符合条件的订单,关闭允许售后申请处理 if (!orderItems.isEmpty()) { @@ -235,10 +224,7 @@ public class OrderEveryDayTaskExecute implements EveryDayExecute { DateTime receiveTime = DateUtil.offsetDay(DateUtil.date(), -orderSetting.getCloseComplaint()); //关闭售后订单=未售后订单+小于订单关闭售后申请时间 - QueryWrapper queryWrapper = new QueryWrapper(); - queryWrapper.le("o.complete_time", receiveTime); - queryWrapper.eq("oi.complain_status", OrderComplaintStatusEnum.NO_APPLY.name()); - List orderItems = orderItemMapper.waitOperationOrderItem(queryWrapper); + List orderItems = orderItemService.waitOperationOrderItem(receiveTime, OrderComplaintStatusEnum.NO_APPLY.name()); //判断是否有符合条件的订单,关闭允许售后申请处理 if (!orderItems.isEmpty()) { diff --git a/consumer/src/main/java/cn/lili/timetask/handler/impl/store/StoreRatingExecute.java b/consumer/src/main/java/cn/lili/timetask/handler/impl/store/StoreRatingExecute.java index 269ab947..fe07139a 100644 --- a/consumer/src/main/java/cn/lili/timetask/handler/impl/store/StoreRatingExecute.java +++ b/consumer/src/main/java/cn/lili/timetask/handler/impl/store/StoreRatingExecute.java @@ -1,9 +1,8 @@ package cn.lili.timetask.handler.impl.store; import cn.lili.common.enums.SwitchEnum; -import cn.lili.modules.member.entity.dos.MemberEvaluation; import cn.lili.modules.member.entity.vo.StoreRatingVO; -import cn.lili.modules.member.mapper.MemberEvaluationMapper; +import cn.lili.modules.member.service.MemberEvaluationService; import cn.lili.modules.store.entity.dos.Store; import cn.lili.modules.store.entity.enums.StoreStatusEnum; import cn.lili.modules.store.service.StoreService; @@ -14,7 +13,6 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import javax.annotation.Resource; import java.util.List; /** @@ -33,8 +31,8 @@ public class StoreRatingExecute implements EveryDayExecute { /** * 会员评价 */ - @Resource - private MemberEvaluationMapper memberEvaluationMapper; + @Autowired + private MemberEvaluationService memberEvaluationService; @Override @@ -43,10 +41,7 @@ public class StoreRatingExecute implements EveryDayExecute { List storeList = storeService.list(new LambdaQueryWrapper().eq(Store::getStoreDisable, StoreStatusEnum.OPEN.name())); for (Store store : storeList) { //店铺所有开启的评价 - LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); - lambdaQueryWrapper.eq(MemberEvaluation::getStoreId, store.getId()); - lambdaQueryWrapper.eq(MemberEvaluation::getStatus, SwitchEnum.OPEN.name()); - StoreRatingVO storeRatingVO = memberEvaluationMapper.getStoreRatingVO(lambdaQueryWrapper); + StoreRatingVO storeRatingVO = memberEvaluationService.getStoreRatingVO(store.getId(), SwitchEnum.OPEN.name()); if (storeRatingVO != null) { //保存评分 diff --git a/framework/src/main/java/cn/lili/modules/goods/entity/vos/StudioVO.java b/framework/src/main/java/cn/lili/modules/goods/entity/vos/StudioVO.java index b6e35498..0e258413 100644 --- a/framework/src/main/java/cn/lili/modules/goods/entity/vos/StudioVO.java +++ b/framework/src/main/java/cn/lili/modules/goods/entity/vos/StudioVO.java @@ -4,6 +4,7 @@ import cn.lili.modules.goods.entity.dos.Commodity; import cn.lili.modules.goods.entity.dos.Studio; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import lombok.EqualsAndHashCode; import java.util.List; @@ -13,9 +14,12 @@ import java.util.List; * @author Bulbasaur * @since 2021/5/31 11:58 上午 */ +@EqualsAndHashCode(callSuper = true) @Data public class StudioVO extends Studio { + private static final long serialVersionUID = 3459644787796753594L; + @ApiModelProperty(value = "直播间商品列表") private List commodityList; diff --git a/framework/src/main/java/cn/lili/modules/goods/service/CommodityService.java b/framework/src/main/java/cn/lili/modules/goods/service/CommodityService.java index 98c5e1ca..611a8746 100644 --- a/framework/src/main/java/cn/lili/modules/goods/service/CommodityService.java +++ b/framework/src/main/java/cn/lili/modules/goods/service/CommodityService.java @@ -43,4 +43,8 @@ public interface CommodityService extends IService { * @return 直播商品分页 */ IPage commodityList(PageVO pageVO, String name, String auditStatus); + + List getCommodityByRoomId(Integer roomId); + + List getSimpleCommodityByRoomId(Integer roomId); } diff --git a/framework/src/main/java/cn/lili/modules/goods/service/GoodsService.java b/framework/src/main/java/cn/lili/modules/goods/service/GoodsService.java index 165d1d61..290f62c5 100644 --- a/framework/src/main/java/cn/lili/modules/goods/service/GoodsService.java +++ b/framework/src/main/java/cn/lili/modules/goods/service/GoodsService.java @@ -190,4 +190,7 @@ public interface GoodsService extends IService { * @param categoryId 分类ID */ void categoryGoodsName(String categoryId); + + + void addGoodsCommentNum(Integer commentNum, String goodsId); } diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/CommodityServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/CommodityServiceImpl.java index 0beff15b..5ed7cde0 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/CommodityServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/CommodityServiceImpl.java @@ -121,4 +121,14 @@ public class CommodityServiceImpl extends ServiceImpl getCommodityByRoomId(Integer roomId) { + return this.baseMapper.getCommodityByRoomId(roomId); + } + + @Override + public List getSimpleCommodityByRoomId(Integer roomId) { + return this.baseMapper.getSimpleCommodityByRoomId(roomId); + } } diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java index 5bd264f0..601726c8 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java @@ -170,7 +170,7 @@ public class GoodsServiceImpl extends ServiceImpl implements //检查商品 this.checkGoods(goods); //向goods加入图片 - if (goodsOperationDTO.getGoodsGalleryList().size() > 0 ) { + if (goodsOperationDTO.getGoodsGalleryList().size() > 0) { this.setGoodsGalleryParam(goodsOperationDTO.getGoodsGalleryList().get(0), goods); } //添加商品参数 @@ -190,7 +190,6 @@ public class GoodsServiceImpl extends ServiceImpl implements } - @Override @Transactional(rollbackFor = Exception.class) public void editGoods(GoodsOperationDTO goodsOperationDTO, String goodsId) { @@ -497,13 +496,17 @@ public class GoodsServiceImpl extends ServiceImpl implements @Override public void categoryGoodsName(String categoryId) { //获取分类下的商品 - List list = this.list(new LambdaQueryWrapper().like(Goods::getCategoryPath,categoryId)); - list.parallelStream().forEach(goods->{ + List list = this.list(new LambdaQueryWrapper().like(Goods::getCategoryPath, categoryId)); + list.parallelStream().forEach(goods -> { //移除redis中商品缓存 cache.remove(CachePrefix.GOODS.getPrefix() + goods.getId()); }); } + @Override + public void addGoodsCommentNum(Integer commentNum, String goodsId) { + this.baseMapper.addGoodsCommentNum(commentNum, goodsId); + } /** * 更新商品状态 diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/StudioServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/StudioServiceImpl.java index 540a1f11..8602b8e4 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/StudioServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/StudioServiceImpl.java @@ -16,8 +16,8 @@ import cn.lili.modules.goods.entity.dos.Studio; import cn.lili.modules.goods.entity.dos.StudioCommodity; import cn.lili.modules.goods.entity.enums.StudioStatusEnum; import cn.lili.modules.goods.entity.vos.StudioVO; -import cn.lili.modules.goods.mapper.CommodityMapper; import cn.lili.modules.goods.mapper.StudioMapper; +import cn.lili.modules.goods.service.CommodityService; import cn.lili.modules.goods.service.GoodsService; import cn.lili.modules.goods.service.StudioCommodityService; import cn.lili.modules.goods.service.StudioService; @@ -39,7 +39,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -58,8 +57,8 @@ public class StudioServiceImpl extends ServiceImpl impleme private WechatLivePlayerUtil wechatLivePlayerUtil; @Autowired private StudioCommodityService studioCommodityService; - @Resource - private CommodityMapper commodityMapper; + @Autowired + private CommodityService commodityService; @Autowired private TimeTrigger timeTrigger; @Autowired @@ -141,7 +140,7 @@ public class StudioServiceImpl extends ServiceImpl impleme //获取直播间信息 BeanUtil.copyProperties(studio, studioVO); //获取直播间商品信息 - studioVO.setCommodityList(commodityMapper.getCommodityByRoomId(studioVO.getRoomId())); + studioVO.setCommodityList(commodityService.getCommodityByRoomId(studioVO.getRoomId())); return studioVO; } @@ -183,7 +182,7 @@ public class StudioServiceImpl extends ServiceImpl impleme studio.setRoomGoodsNum(studio.getRoomGoodsNum() != null ? studio.getRoomGoodsNum() + 1 : 1); //设置直播间默认的商品(前台展示)只展示两个 if (studio.getRoomGoodsNum() < 3) { - studio.setRoomGoodsList(JSONUtil.toJsonStr(commodityMapper.getSimpleCommodityByRoomId(roomId))); + studio.setRoomGoodsList(JSONUtil.toJsonStr(commodityService.getSimpleCommodityByRoomId(roomId))); } return this.updateById(studio); } @@ -205,7 +204,7 @@ public class StudioServiceImpl extends ServiceImpl impleme studio.setRoomGoodsNum(studio.getRoomGoodsNum() - 1); //设置直播间默认的商品(前台展示)只展示两个 if (studio.getRoomGoodsNum() < 3) { - studio.setRoomGoodsList(JSONUtil.toJsonStr(commodityMapper.getSimpleCommodityByRoomId(roomId))); + studio.setRoomGoodsList(JSONUtil.toJsonStr(commodityService.getSimpleCommodityByRoomId(roomId))); } return this.updateById(studio); } @@ -229,7 +228,7 @@ public class StudioServiceImpl extends ServiceImpl impleme //获取直播间信息 BeanUtil.copyProperties(record, studioVO); //获取直播间商品信息 - studioVO.setCommodityList(commodityMapper.getCommodityByRoomId(studioVO.getRoomId())); + studioVO.setCommodityList(commodityService.getCommodityByRoomId(studioVO.getRoomId())); studioVOS.add(studioVO); } page.setRecords(studioVOS); diff --git a/framework/src/main/java/cn/lili/modules/member/service/MemberEvaluationService.java b/framework/src/main/java/cn/lili/modules/member/service/MemberEvaluationService.java index 860018be..53a20187 100644 --- a/framework/src/main/java/cn/lili/modules/member/service/MemberEvaluationService.java +++ b/framework/src/main/java/cn/lili/modules/member/service/MemberEvaluationService.java @@ -1,14 +1,19 @@ package cn.lili.modules.member.service; +import cn.hutool.core.date.DateTime; import cn.lili.modules.member.entity.dos.MemberEvaluation; import cn.lili.modules.member.entity.dto.EvaluationQueryParams; import cn.lili.modules.member.entity.dto.MemberEvaluationDTO; import cn.lili.modules.member.entity.vo.EvaluationNumberVO; import cn.lili.modules.member.entity.vo.MemberEvaluationListVO; import cn.lili.modules.member.entity.vo.MemberEvaluationVO; +import cn.lili.modules.member.entity.vo.StoreRatingVO; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; +import java.util.Map; + /** * 会员商品评价业务层 * @@ -111,4 +116,8 @@ public interface MemberEvaluationService extends IService { */ long getEvaluationCount(EvaluationQueryParams evaluationQueryParams); + List> memberEvaluationNum(DateTime startDate, DateTime endDate); + + StoreRatingVO getStoreRatingVO(String storeId, String status); + } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/member/service/StoreMenuService.java b/framework/src/main/java/cn/lili/modules/member/service/StoreMenuService.java index 934e5600..576aa1b1 100644 --- a/framework/src/main/java/cn/lili/modules/member/service/StoreMenuService.java +++ b/framework/src/main/java/cn/lili/modules/member/service/StoreMenuService.java @@ -2,6 +2,7 @@ package cn.lili.modules.member.service; import cn.lili.modules.member.entity.dos.StoreMenu; import cn.lili.modules.member.entity.vo.StoreMenuVO; +import cn.lili.modules.member.entity.vo.StoreUserMenuVO; import cn.lili.modules.permission.entity.dto.MenuSearchParams; import com.baomidou.mybatisplus.extension.service.IService; import org.springframework.cache.annotation.CacheConfig; @@ -30,7 +31,7 @@ public interface StoreMenuService extends IService { * @param userId * @return */ - List findUserList(String userId); + List findUserList(String userId, String clerkId); /** @@ -71,4 +72,6 @@ public interface StoreMenuService extends IService { */ boolean saveOrUpdateMenu(StoreMenu storeMenu); + List getUserRoleMenu(String clerkId); + } diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/ClerkServiceImpl.java b/framework/src/main/java/cn/lili/modules/member/serviceimpl/ClerkServiceImpl.java index 84aea3b4..6d64a4a4 100644 --- a/framework/src/main/java/cn/lili/modules/member/serviceimpl/ClerkServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/member/serviceimpl/ClerkServiceImpl.java @@ -1,9 +1,12 @@ package cn.lili.modules.member.serviceimpl; import cn.hutool.core.text.CharSequenceUtil; +import cn.lili.cache.Cache; +import cn.lili.cache.CachePrefix; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; import cn.lili.common.security.context.UserContext; +import cn.lili.common.security.enums.UserEnums; import cn.lili.common.utils.StringUtils; import cn.lili.common.vo.PageVO; import cn.lili.modules.member.entity.dos.Clerk; @@ -49,6 +52,8 @@ public class ClerkServiceImpl extends ServiceImpl implements private MemberService memberService; @Autowired private StoreClerkRoleService storeClerkRoleService; + @Autowired + private Cache cache; @Override public IPage clerkForPage(PageVO page, ClerkQueryDTO clerkQueryDTO) { @@ -138,7 +143,7 @@ public class ClerkServiceImpl extends ServiceImpl implements .eq("store_id", UserContext.getCurrentUser().getStoreId())); clerkVO.setRoles( roles.stream().filter - (role -> memberRoles.contains(role.getId())) + (role -> memberRoles.contains(role.getId())) .collect(Collectors.toList()) ); } @@ -150,7 +155,7 @@ public class ClerkServiceImpl extends ServiceImpl implements Clerk clerk = this.getById(clerkEditDTO.getId()); if (clerk != null) { //编辑店主限制 - if(clerk.getShopkeeper()){ + if (Boolean.TRUE.equals(clerk.getShopkeeper())) { throw new ServiceException(ResultCode.CANT_EDIT_CLERK_SHOPKEEPER); } @@ -158,17 +163,19 @@ public class ClerkServiceImpl extends ServiceImpl implements if (!clerk.getStoreId().equals(UserContext.getCurrentUser().getStoreId())) { throw new ServiceException(ResultCode.USER_AUTHORITY_ERROR); } - if (clerkEditDTO.getIsSuper()) { + if (Boolean.TRUE.equals(clerkEditDTO.getIsSuper())) { clerk.setRoleIds(""); } else { //角色赋值 if (!clerkEditDTO.getRoles().isEmpty()) { clerk.setRoleIds(CharSequenceUtil.join(",", clerkEditDTO.getRoles())); } + cache.vagueDel(CachePrefix.PERMISSION_LIST.getPrefix(UserEnums.STORE) + UserContext.getCurrentUser().getId()); + cache.vagueDel(CachePrefix.STORE_USER_MENU.getPrefix() + UserContext.getCurrentUser().getId()); } //部门校验 - if (StringUtils.isNotEmpty(clerkEditDTO.getDepartmentId())) { + if (CharSequenceUtil.isNotEmpty(clerkEditDTO.getDepartmentId())) { if (storeDepartmentService.getById(clerkEditDTO.getDepartmentId()) != null) { clerk.setDepartmentId(clerkEditDTO.getDepartmentId()); } else { @@ -194,17 +201,15 @@ public class ClerkServiceImpl extends ServiceImpl implements if (temp != null && !temp.getStoreId().equals(clerkAddDTO.getStoreId())) { throw new ServiceException(ResultCode.CLERK_USER_ERROR); } - if (temp != null && temp.getStoreId().equals(clerkAddDTO.getStoreId())) { + if (temp != null) { throw new ServiceException(ResultCode.CLERK_ALREADY_EXIT_ERROR); } //部门校验 - if (StringUtils.isNotEmpty(clerkAddDTO.getDepartmentId())) { - if (storeDepartmentService.getById(clerkAddDTO.getDepartmentId()) == null) { - throw new ServiceException(ResultCode.PERMISSION_NOT_FOUND_ERROR); - } + if (CharSequenceUtil.isNotEmpty(clerkAddDTO.getDepartmentId()) && storeDepartmentService.getById(clerkAddDTO.getDepartmentId()) == null) { + throw new ServiceException(ResultCode.PERMISSION_NOT_FOUND_ERROR); } //角色校验 - if (clerkAddDTO.getRoles() != null && clerkAddDTO.getRoles().size() > 0) { + if (clerkAddDTO.getRoles() != null && !clerkAddDTO.getRoles().isEmpty()) { List storeRoles = storeRoleService.list(clerkAddDTO.getRoles()); if (storeRoles.size() != clerkAddDTO.getRoles().size()) { throw new ServiceException(ResultCode.USER_AUTHORITY_ERROR); @@ -214,13 +219,12 @@ public class ClerkServiceImpl extends ServiceImpl implements this.save(clerk); //判断用户角色权限不为超级会员且权限路径不为空 - if(clerkAddDTO.getIsSuper()==false && clerkAddDTO.getRoles()!=null){ + if (Boolean.FALSE.equals(clerkAddDTO.getIsSuper()) && clerkAddDTO.getRoles() != null) { //添加店员用户角色 List storeClerkRoleList = new ArrayList<>(); - clerkAddDTO.getRoles().stream().forEach(a -> { - storeClerkRoleList.add(StoreClerkRole.builder().clerkId(clerk.getId()).roleId(a).build()); - }); + clerkAddDTO.getRoles().forEach(a -> storeClerkRoleList.add(StoreClerkRole.builder().clerkId(clerk.getId()).roleId(a).build())); + storeClerkRoleService.saveBatch(storeClerkRoleList); } @@ -246,7 +250,7 @@ public class ClerkServiceImpl extends ServiceImpl implements List memberIds = new ArrayList<>(); clerks.forEach(clerk -> { //如果是店主无法重置密码 - if (clerk.getShopkeeper()) { + if (Boolean.TRUE.equals(clerk.getShopkeeper())) { throw new ServiceException(ResultCode.CLERK_SUPPER); } memberIds.add(clerk.getMemberId()); @@ -261,7 +265,7 @@ public class ClerkServiceImpl extends ServiceImpl implements queryWrapper.eq("store_id", UserContext.getCurrentUser().getStoreId()); queryWrapper.in("id", ids); List clerks = this.baseMapper.selectList(queryWrapper); - if (clerks.size() > 0) { + if (!clerks.isEmpty()) { //校验要重置的店员是否是当前店铺的店员 if (clerks.size() != ids.size()) { throw new ServiceException(ResultCode.USER_AUTHORITY_ERROR); @@ -276,7 +280,7 @@ public class ClerkServiceImpl extends ServiceImpl implements throw new ServiceException(ResultCode.CLERK_CURRENT_SUPPER); } //无法删除店主 - if (clerk.getShopkeeper()) { + if (Boolean.TRUE.equals(clerk.getShopkeeper())) { throw new ServiceException(ResultCode.CLERK_SUPPER); } memberIds.add(clerk.getMemberId()); @@ -291,11 +295,11 @@ public class ClerkServiceImpl extends ServiceImpl implements Member member = memberService.findByMobile(mobile); if (member != null) { //校验要添加的会员是否已经是店主 - if (member.getHaveStore()) { + if (Boolean.TRUE.equals(member.getHaveStore())) { throw new ServiceException(ResultCode.STORE_APPLY_DOUBLE_ERROR); } //校验会员的有效性 - if (!member.getDisabled()) { + if (Boolean.FALSE.equals(member.getDisabled())) { throw new ServiceException(ResultCode.USER_STATUS_ERROR); } //校验此会员是否已经是店员 diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberEvaluationServiceImpl.java b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberEvaluationServiceImpl.java index 6877a97a..2e137778 100644 --- a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberEvaluationServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberEvaluationServiceImpl.java @@ -21,6 +21,7 @@ import cn.lili.modules.member.entity.enums.EvaluationGradeEnum; import cn.lili.modules.member.entity.vo.EvaluationNumberVO; import cn.lili.modules.member.entity.vo.MemberEvaluationListVO; import cn.lili.modules.member.entity.vo.MemberEvaluationVO; +import cn.lili.modules.member.entity.vo.StoreRatingVO; import cn.lili.modules.member.mapper.MemberEvaluationMapper; import cn.lili.modules.member.service.MemberEvaluationService; import cn.lili.modules.member.service.MemberService; @@ -44,7 +45,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import javax.annotation.Resource; import java.util.List; import java.util.Map; @@ -57,11 +57,6 @@ import java.util.Map; @Service public class MemberEvaluationServiceImpl extends ServiceImpl implements MemberEvaluationService { - /** - * 会员评价数据层 - */ - @Resource - private MemberEvaluationMapper memberEvaluationMapper; /** * 订单 */ @@ -101,7 +96,7 @@ public class MemberEvaluationServiceImpl extends ServiceImpl queryPage(EvaluationQueryParams evaluationQueryParams) { - return memberEvaluationMapper.getMemberEvaluationList(PageUtil.initPage(evaluationQueryParams), evaluationQueryParams.queryWrapper()); + return this.baseMapper.getMemberEvaluationList(PageUtil.initPage(evaluationQueryParams), evaluationQueryParams.queryWrapper()); } @Override @@ -231,6 +226,20 @@ public class MemberEvaluationServiceImpl extends ServiceImpl> memberEvaluationNum(DateTime startDate, DateTime endDate) { + return this.baseMapper.memberEvaluationNum(new QueryWrapper() + .between("create_time", startDate, endDate)); + } + + @Override + public StoreRatingVO getStoreRatingVO(String storeId, String status) { + LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); + lambdaQueryWrapper.eq(MemberEvaluation::getStoreId, storeId); + lambdaQueryWrapper.eq(MemberEvaluation::getStatus, SwitchEnum.OPEN.name()); + return this.baseMapper.getStoreRatingVO(lambdaQueryWrapper); + } + /** * 检测会员评价 * diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/StoreDepartmentRoleServiceImpl.java b/framework/src/main/java/cn/lili/modules/member/serviceimpl/StoreDepartmentRoleServiceImpl.java index 17dc7de0..0b3f2c1c 100644 --- a/framework/src/main/java/cn/lili/modules/member/serviceimpl/StoreDepartmentRoleServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/member/serviceimpl/StoreDepartmentRoleServiceImpl.java @@ -1,13 +1,15 @@ package cn.lili.modules.member.serviceimpl; -import cn.lili.common.security.context.UserContext; +import cn.lili.cache.Cache; +import cn.lili.cache.CachePrefix; +import cn.lili.common.security.enums.UserEnums; import cn.lili.modules.member.entity.dos.StoreDepartmentRole; import cn.lili.modules.member.mapper.StoreDepartmentRoleMapper; import cn.lili.modules.member.service.StoreDepartmentRoleService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; import java.util.List; @@ -18,9 +20,10 @@ import java.util.List; * @since 2020/11/22 12:08 */ @Service -@Transactional(rollbackFor = Exception.class) public class StoreDepartmentRoleServiceImpl extends ServiceImpl implements StoreDepartmentRoleService { + @Autowired + private Cache cache; @Override public List listByDepartmentId(String storeDepartmentId) { @@ -31,11 +34,13 @@ public class StoreDepartmentRoleServiceImpl extends ServiceImpl storeDepartmentRoles) { - if (storeDepartmentRoles.size() > 0) { + if (!storeDepartmentRoles.isEmpty()) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("department_id", storeDepartmentId); this.remove(queryWrapper); this.saveBatch(storeDepartmentRoles); + cache.vagueDel(CachePrefix.PERMISSION_LIST.getPrefix(UserEnums.STORE)); + cache.vagueDel(CachePrefix.STORE_USER_MENU.getPrefix()); } } @@ -45,5 +50,7 @@ public class StoreDepartmentRoleServiceImpl extends ServiceImpl(); queryWrapper.in("department_id", ids); this.remove(queryWrapper); + cache.vagueDel(CachePrefix.PERMISSION_LIST.getPrefix(UserEnums.STORE)); + cache.vagueDel(CachePrefix.STORE_USER_MENU.getPrefix()); } } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/StoreMenuRoleServiceImpl.java b/framework/src/main/java/cn/lili/modules/member/serviceimpl/StoreMenuRoleServiceImpl.java index 28e7debd..ed26a220 100644 --- a/framework/src/main/java/cn/lili/modules/member/serviceimpl/StoreMenuRoleServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/member/serviceimpl/StoreMenuRoleServiceImpl.java @@ -3,16 +3,12 @@ package cn.lili.modules.member.serviceimpl; import cn.lili.cache.Cache; import cn.lili.cache.CachePrefix; import cn.lili.common.security.context.UserContext; +import cn.lili.common.security.enums.UserEnums; import cn.lili.modules.member.entity.dos.StoreMenuRole; import cn.lili.modules.member.entity.vo.StoreUserMenuVO; -import cn.lili.modules.member.mapper.StoreMenuMapper; import cn.lili.modules.member.mapper.StoreMenuRoleMapper; import cn.lili.modules.member.service.StoreMenuRoleService; -import cn.lili.modules.permission.entity.dos.RoleMenu; -import cn.lili.modules.permission.entity.vo.UserMenuVO; -import cn.lili.modules.permission.mapper.MenuMapper; -import cn.lili.modules.permission.mapper.RoleMenuMapper; -import cn.lili.modules.permission.service.RoleMenuService; +import cn.lili.modules.member.service.StoreMenuService; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -21,7 +17,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import javax.annotation.Resource; import java.util.List; /** @@ -38,9 +33,8 @@ public class StoreMenuRoleServiceImpl extends ServiceImpl cache; @@ -53,11 +47,11 @@ public class StoreMenuRoleServiceImpl extends ServiceImpl findAllMenu(String clerkId,String memberId) { + public List findAllMenu(String clerkId, String memberId) { String cacheKey = CachePrefix.STORE_USER_MENU.getPrefix() + memberId; List menuList = (List) cache.get(cacheKey); if (menuList == null || menuList.isEmpty()) { - menuList = storeMenuMapper.getUserRoleMenu(clerkId); + menuList = storeMenuService.getUserRoleMenu(clerkId); cache.put(cacheKey, menuList); } return menuList; @@ -67,16 +61,14 @@ public class StoreMenuRoleServiceImpl extends ServiceImpl roleMenus) { try { - roleMenus.forEach(role -> { - role.setStoreId(UserContext.getCurrentUser().getStoreId()); - }); + roleMenus.forEach(role -> role.setStoreId(UserContext.getCurrentUser().getStoreId())); //删除角色已经绑定的菜单 this.delete(roleId); //重新保存角色菜单关系 this.saveBatch(roleMenus); - cache.vagueDel(CachePrefix.MENU_USER_ID.getPrefix()); - cache.vagueDel(CachePrefix.USER_MENU.getPrefix()); + cache.vagueDel(CachePrefix.PERMISSION_LIST.getPrefix(UserEnums.STORE)); + cache.vagueDel(CachePrefix.STORE_USER_MENU.getPrefix()); } catch (Exception e) { log.error("修改用户权限错误", e); } @@ -88,7 +80,7 @@ public class StoreMenuRoleServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<>(); queryWrapper.eq("role_id", roleId); this.remove(queryWrapper); - cache.vagueDel(CachePrefix.STORE_MENU_USER_ID.getPrefix()); + cache.vagueDel(CachePrefix.PERMISSION_LIST.getPrefix(UserEnums.STORE)); cache.vagueDel(CachePrefix.STORE_USER_MENU.getPrefix()); } @@ -98,7 +90,7 @@ public class StoreMenuRoleServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<>(); queryWrapper.in("role_id", roleId); this.remove(queryWrapper); - cache.vagueDel(CachePrefix.STORE_MENU_USER_ID.getPrefix()); + cache.vagueDel(CachePrefix.PERMISSION_LIST.getPrefix(UserEnums.STORE)); cache.vagueDel(CachePrefix.STORE_USER_MENU.getPrefix()); } } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/StoreMenuServiceImpl.java b/framework/src/main/java/cn/lili/modules/member/serviceimpl/StoreMenuServiceImpl.java index c5e0fafc..f9215e33 100644 --- a/framework/src/main/java/cn/lili/modules/member/serviceimpl/StoreMenuServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/member/serviceimpl/StoreMenuServiceImpl.java @@ -7,15 +7,18 @@ import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; import cn.lili.common.security.AuthUser; import cn.lili.common.security.context.UserContext; +import cn.lili.common.security.enums.UserEnums; import cn.lili.common.vo.SearchVO; import cn.lili.modules.member.entity.dos.Clerk; import cn.lili.modules.member.entity.dos.StoreMenu; import cn.lili.modules.member.entity.dos.StoreMenuRole; import cn.lili.modules.member.entity.vo.StoreMenuVO; +import cn.lili.modules.member.entity.vo.StoreUserMenuVO; import cn.lili.modules.member.mapper.StoreMenuMapper; import cn.lili.modules.member.service.ClerkService; import cn.lili.modules.member.service.StoreMenuRoleService; import cn.lili.modules.member.service.StoreMenuService; +import cn.lili.modules.member.token.StoreTokenGenerate; import cn.lili.modules.permission.entity.dto.MenuSearchParams; import cn.lili.mybatis.util.PageUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -24,6 +27,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.*; @@ -43,7 +47,7 @@ public class StoreMenuServiceImpl extends ServiceImpl> cache; + private Cache cache; /** * 店员 @@ -51,7 +55,12 @@ public class StoreMenuServiceImpl extends ServiceImpl ids) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("menu_id", ids); @@ -59,6 +68,8 @@ public class StoreMenuServiceImpl extends ServiceImpl 0) { throw new ServiceException(ResultCode.PERMISSION_MENU_ROLE_ERROR); } + cache.vagueDel(CachePrefix.PERMISSION_LIST.getPrefix(UserEnums.STORE)); + cache.vagueDel(CachePrefix.STORE_USER_MENU.getPrefix()); this.removeByIds(ids); } @@ -72,18 +83,26 @@ public class StoreMenuServiceImpl extends ServiceImpl().eq(Clerk::getMemberId, authUser.getId())); //获取当前店员角色的菜单列表 - List userMenus = this.baseMapper.findByUserId(clerk.getId()); + List userMenus = this.findUserList(authUser.getId(), clerk.getId()); return this.tree(userMenus); } @Override - public List findUserList(String userId) { - String cacheKey = CachePrefix.STORE_MENU_USER_ID.getPrefix() + userId; - List menuList = cache.get(cacheKey); + public List findUserList(String userId, String clerkId) { + String cacheKey = CachePrefix.STORE_USER_MENU.getPrefix() + clerkId; + List menuList = (List) cache.get(cacheKey); if (menuList == null) { - menuList = this.baseMapper.findByUserId(userId); + menuList = this.baseMapper.findByUserId(clerkId); cache.put(cacheKey, menuList); } + + String permissionCacheKey = CachePrefix.PERMISSION_LIST.getPrefix(UserEnums.STORE) + userId; + Map> permission = (Map>) cache.get(permissionCacheKey); + if (permission == null || permission.isEmpty()) { + permission = storeTokenGenerate.permissionList(storeMenuRoleService.findAllMenu(clerkId, userId)); + cache.put(permissionCacheKey, permission); + } + return menuList; } @@ -94,13 +113,20 @@ public class StoreMenuServiceImpl extends ServiceImpl getUserRoleMenu(String clerkId) { + return this.baseMapper.getUserRoleMenu(clerkId); + } + @Override public List findByRoleIds(String roleId) { QueryWrapper queryWrapper = new QueryWrapper<>(); diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/StoreRoleServiceImpl.java b/framework/src/main/java/cn/lili/modules/member/serviceimpl/StoreRoleServiceImpl.java index af2e7a47..0283f2b6 100644 --- a/framework/src/main/java/cn/lili/modules/member/serviceimpl/StoreRoleServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/member/serviceimpl/StoreRoleServiceImpl.java @@ -1,8 +1,11 @@ package cn.lili.modules.member.serviceimpl; +import cn.lili.cache.Cache; +import cn.lili.cache.CachePrefix; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; import cn.lili.common.security.context.UserContext; +import cn.lili.common.security.enums.UserEnums; import cn.lili.modules.member.entity.dos.StoreRole; import cn.lili.modules.member.mapper.StoreRoleMapper; import cn.lili.modules.member.service.StoreClerkRoleService; @@ -41,6 +44,9 @@ public class StoreRoleServiceImpl extends ServiceImpl findByDefaultRole(Boolean defaultRole) { QueryWrapper queryWrapper = new QueryWrapper<>(); @@ -73,6 +79,8 @@ public class StoreRoleServiceImpl extends ServiceImpl { if (clerk == null) { throw new ServiceException(ResultCode.CLERK_NOT_FOUND_ERROR); } - if (!clerk.getStatus()) { + if (Boolean.FALSE.equals(clerk.getStatus())) { throw new ServiceException(ResultCode.CLERK_DISABLED_ERROR); } //获取当前用户权限 @@ -96,7 +96,7 @@ public class StoreTokenGenerate extends AbstractTokenGenerate { * @param userMenuVOList * @return */ - private Map> permissionList(List userMenuVOList) { + public Map> permissionList(List userMenuVOList) { Map> permission = new HashMap<>(2); List superPermissions = new ArrayList<>(); diff --git a/framework/src/main/java/cn/lili/modules/order/order/service/OrderItemService.java b/framework/src/main/java/cn/lili/modules/order/order/service/OrderItemService.java index ca3c3f4a..7b08ca50 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/service/OrderItemService.java +++ b/framework/src/main/java/cn/lili/modules/order/order/service/OrderItemService.java @@ -1,5 +1,6 @@ package cn.lili.modules.order.order.service; +import cn.hutool.core.date.DateTime; import cn.lili.modules.order.order.entity.dos.OrderItem; import cn.lili.modules.order.order.entity.enums.CommentStatusEnum; import cn.lili.modules.order.order.entity.enums.OrderComplaintStatusEnum; @@ -66,4 +67,6 @@ public interface OrderItemService extends IService { * @return 子订单 */ OrderItem getByOrderSnAndSkuId(String orderSn, String skuId); + + List waitOperationOrderItem(DateTime receiveTime, String commentStatus); } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/order/order/service/TradeService.java b/framework/src/main/java/cn/lili/modules/order/order/service/TradeService.java index cf14ea5d..1d3757ee 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/service/TradeService.java +++ b/framework/src/main/java/cn/lili/modules/order/order/service/TradeService.java @@ -1,7 +1,7 @@ package cn.lili.modules.order.order.service; -import cn.lili.modules.order.order.entity.dos.Trade; import cn.lili.modules.order.cart.entity.dto.TradeDTO; +import cn.lili.modules.order.order.entity.dos.Trade; import com.baomidou.mybatisplus.extension.service.IService; /** @@ -44,4 +44,6 @@ public interface TradeService extends IService { */ void payTrade(String tradeSn, String paymentName, String receivableNo); + void updateTradePrice(String tradeSn); + } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderItemServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderItemServiceImpl.java index f58be0bc..b90a55fc 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderItemServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderItemServiceImpl.java @@ -1,5 +1,6 @@ package cn.lili.modules.order.order.serviceimpl; +import cn.hutool.core.date.DateTime; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; import cn.lili.modules.order.order.entity.dos.OrderItem; @@ -9,6 +10,7 @@ import cn.lili.modules.order.order.entity.enums.OrderItemAfterSaleStatusEnum; import cn.lili.modules.order.order.mapper.OrderItemMapper; import cn.lili.modules.order.order.service.OrderItemService; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -82,4 +84,12 @@ public class OrderItemServiceImpl extends ServiceImpl waitOperationOrderItem(DateTime receiveTime, String commentStatus) { + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.le("o.complete_time", receiveTime); + queryWrapper.eq("oi.comment_status", CommentStatusEnum.UNFINISHED.name()); + return this.baseMapper.waitOperationOrderItem(queryWrapper); + } } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderPriceServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderPriceServiceImpl.java index 7b0e997c..7afeb9cb 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderPriceServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderPriceServiceImpl.java @@ -10,17 +10,16 @@ import cn.lili.modules.order.order.entity.dos.Order; import cn.lili.modules.order.order.entity.dos.OrderItem; import cn.lili.modules.order.order.entity.dto.PriceDetailDTO; import cn.lili.modules.order.order.entity.enums.PayStatusEnum; -import cn.lili.modules.order.order.mapper.TradeMapper; import cn.lili.modules.order.order.service.OrderItemService; import cn.lili.modules.order.order.service.OrderPriceService; import cn.lili.modules.order.order.service.OrderService; +import cn.lili.modules.order.order.service.TradeService; import cn.lili.modules.payment.kit.plugin.bank.BankTransferPlugin; import cn.lili.modules.system.aspect.annotation.SystemLogPoint; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import javax.annotation.Resource; import java.util.List; /** @@ -46,8 +45,8 @@ public class OrderPriceServiceImpl implements OrderPriceService { /** * 交易数据层 */ - @Resource - private TradeMapper tradeMapper; + @Autowired + private TradeService tradeService; /** * 订单 */ @@ -63,7 +62,7 @@ public class OrderPriceServiceImpl implements OrderPriceService { Order order = updateOrderPrice(orderSn, orderPrice); //修改交易金额 - tradeMapper.updateTradePrice(order.getTradeSn()); + tradeService.updateTradePrice(order.getTradeSn()); return order; } diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java index 9af389f3..cba6ac1e 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java @@ -18,9 +18,7 @@ import cn.lili.common.security.context.UserContext; import cn.lili.common.security.enums.UserEnums; import cn.lili.common.utils.SnowFlake; import cn.lili.modules.goods.entity.dto.GoodsCompleteMessage; -import cn.lili.modules.logistics.entity.enums.LogisticsEnum; import cn.lili.modules.member.entity.dto.MemberAddressDTO; -import cn.lili.modules.member.service.StoreLogisticsService; import cn.lili.modules.order.cart.entity.dto.TradeDTO; import cn.lili.modules.order.cart.entity.enums.DeliveryMethodEnum; import cn.lili.modules.order.order.aop.OrderLogPoint; @@ -34,7 +32,6 @@ import cn.lili.modules.order.order.entity.vo.OrderDetailVO; import cn.lili.modules.order.order.entity.vo.OrderSimpleVO; import cn.lili.modules.order.order.entity.vo.OrderVO; import cn.lili.modules.order.order.entity.vo.PaymentLog; -import cn.lili.modules.order.order.mapper.OrderItemMapper; import cn.lili.modules.order.order.mapper.OrderMapper; import cn.lili.modules.order.order.service.*; import cn.lili.modules.order.trade.entity.dos.OrderLog; @@ -46,7 +43,6 @@ import cn.lili.modules.store.entity.dto.StoreDeliverGoodsAddressDTO; import cn.lili.modules.store.service.StoreDetailService; import cn.lili.modules.system.aspect.annotation.SystemLogPoint; import cn.lili.modules.system.entity.dos.Logistics; -import cn.lili.modules.system.entity.dto.LogisticsSetting; import cn.lili.modules.system.entity.vo.Traces; import cn.lili.modules.system.service.LogisticsService; import cn.lili.mybatis.util.PageUtil; @@ -75,7 +71,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; -import javax.annotation.Resource; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.io.InputStream; @@ -100,11 +95,6 @@ public class OrderServiceImpl extends ServiceImpl implements */ @Autowired private TimeTrigger timeTrigger; - /** - * 订单货物数据层 - */ - @Resource - private OrderItemMapper orderItemMapper; /** * 发票 */ @@ -285,10 +275,8 @@ public class OrderServiceImpl extends ServiceImpl implements if (order == null) { throw new ServiceException(ResultCode.ORDER_NOT_EXIST); } - QueryWrapper orderItemWrapper = new QueryWrapper<>(); - orderItemWrapper.eq(ORDER_SN_COLUMN, orderSn); //查询订单项信息 - List orderItems = orderItemMapper.selectList(orderItemWrapper); + List orderItems = orderItemService.getByOrderSn(orderSn); //查询订单日志信息 List orderLogs = orderLogService.getOrderLog(orderSn); //查询发票信息 diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/TradeServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/TradeServiceImpl.java index 954ddb3f..ad5bb46e 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/TradeServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/TradeServiceImpl.java @@ -1 +1 @@ -package cn.lili.modules.order.order.serviceimpl; import cn.hutool.json.JSONUtil; import cn.lili.cache.Cache; import cn.lili.cache.CachePrefix; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; import cn.lili.common.properties.RocketmqCustomProperties; import cn.lili.modules.member.entity.dos.MemberAddress; import cn.lili.modules.member.entity.enums.PointTypeEnum; import cn.lili.modules.member.service.MemberService; import cn.lili.modules.order.cart.entity.dto.MemberCouponDTO; import cn.lili.modules.order.cart.entity.dto.TradeDTO; import cn.lili.modules.order.cart.entity.enums.CartTypeEnum; import cn.lili.modules.order.cart.entity.enums.DeliveryMethodEnum; import cn.lili.modules.order.cart.entity.vo.CartVO; import cn.lili.modules.order.order.entity.dos.Order; import cn.lili.modules.order.order.entity.dos.Trade; import cn.lili.modules.order.order.entity.enums.PayStatusEnum; import cn.lili.modules.order.order.mapper.TradeMapper; import cn.lili.modules.order.order.service.OrderService; import cn.lili.modules.order.order.service.TradeService; import cn.lili.modules.promotion.service.CouponService; import cn.lili.modules.promotion.service.KanjiaActivityService; import cn.lili.modules.promotion.service.MemberCouponService; import cn.lili.rocketmq.RocketmqSendCallbackBuilder; import cn.lili.rocketmq.tags.OrderTagsEnum; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.rocketmq.spring.core.RocketMQTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.stream.Collectors; /** * 交易业务层实现 * * @author Chopper * @since 2020/11/17 7:39 下午 */ @Service public class TradeServiceImpl extends ServiceImpl implements TradeService { /** * 缓存 */ @Autowired private Cache cache; /** * 订单 */ @Autowired private OrderService orderService; /** * 会员 */ @Autowired private MemberService memberService; /** * 优惠券 */ @Autowired private CouponService couponService; /** * 会员优惠券 */ @Autowired private MemberCouponService memberCouponService; /** * 砍价 */ @Autowired private KanjiaActivityService kanjiaActivityService; /** * RocketMQ */ @Autowired private RocketMQTemplate rocketMQTemplate; /** * RocketMQ 配置 */ @Autowired private RocketmqCustomProperties rocketmqCustomProperties; @Override @Transactional(rollbackFor = Exception.class) public Trade createTrade(TradeDTO tradeDTO) { //创建订单预校验 createTradeCheck(tradeDTO); Trade trade = new Trade(tradeDTO); String key = CachePrefix.TRADE.getPrefix() + trade.getSn(); //优惠券预处理 couponPretreatment(tradeDTO); //积分预处理 pointPretreatment(tradeDTO); //添加交易 this.save(trade); //添加订单 orderService.intoDB(tradeDTO); //砍价订单处理 kanjiaPretreatment(tradeDTO); //写入缓存,给消费者调用 cache.put(key, JSONUtil.toJsonStr(tradeDTO)); //构建订单创建消息 String destination = rocketmqCustomProperties.getOrderTopic() + ":" + OrderTagsEnum.ORDER_CREATE.name(); //发送订单创建消息 rocketMQTemplate.asyncSend(destination, key, RocketmqSendCallbackBuilder.commonCallback()); return trade; } /** * 创建订单最后一步校验 * * @param tradeDTO 购物车视图 */ private void createTradeCheck(TradeDTO tradeDTO) { if(tradeDTO.getStoreAddress() == null){ //创建订单如果没有收获地址, MemberAddress memberAddress = tradeDTO.getMemberAddress(); if (memberAddress == null) { throw new ServiceException(ResultCode.MEMBER_ADDRESS_NOT_EXIST); } //订单配送区域校验 if (tradeDTO.getNotSupportFreight() != null && !tradeDTO.getNotSupportFreight().isEmpty()) { StringBuilder stringBuilder = new StringBuilder("包含商品有-"); tradeDTO.getNotSupportFreight().forEach(sku -> stringBuilder.append(sku.getGoodsSku().getGoodsName())); throw new ServiceException(ResultCode.ORDER_NOT_SUPPORT_DISTRIBUTION, stringBuilder.toString()); } if (tradeDTO.getCartList().stream().noneMatch(CartVO::getChecked)) { throw new ServiceException(ResultCode.ORDER_NOT_EXIST_VALID); } if(tradeDTO.getCartList().stream().allMatch(item -> item.getDeliveryMethod().equals(DeliveryMethodEnum.SELF_PICK_UP.name()))){ throw new ServiceException(ResultCode.STORE_ADDRESS_NOT_EXIST); } } } @Override public Trade getBySn(String sn) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(Trade::getSn, sn); return this.getOne(queryWrapper); } @Override @Transactional(rollbackFor = Exception.class) public void payTrade(String tradeSn, String paymentName, String receivableNo) { LambdaQueryWrapper orderQueryWrapper = new LambdaQueryWrapper<>(); orderQueryWrapper.eq(Order::getTradeSn, tradeSn); List orders = orderService.list(orderQueryWrapper); for (Order order : orders) { orderService.payOrder(order.getSn(), paymentName, receivableNo); } Trade trade = this.getBySn(tradeSn); trade.setPayStatus(PayStatusEnum.PAID.name()); this.saveOrUpdate(trade); } /** * 优惠券预处理 * 下单同时,扣除优惠券 * * @param tradeDTO 购物车视图 */ private void couponPretreatment(TradeDTO tradeDTO) { List memberCouponDTOList = new ArrayList<>(); if (null != tradeDTO.getPlatformCoupon()) { memberCouponDTOList.add(tradeDTO.getPlatformCoupon()); } Collection storeCoupons = tradeDTO.getStoreCoupons().values(); if (!storeCoupons.isEmpty()) { memberCouponDTOList.addAll(storeCoupons); } List ids = memberCouponDTOList.stream().map(e -> e.getMemberCoupon().getId()).collect(Collectors.toList()); memberCouponService.used(tradeDTO.getMemberId(), ids); memberCouponDTOList.forEach(e -> couponService.usedCoupon(e.getMemberCoupon().getCouponId(), 1)); } /** * 创建交易,积分处理 * * @param tradeDTO 购物车视图 */ private void pointPretreatment(TradeDTO tradeDTO) { //需要支付积分 if (tradeDTO.getPriceDetailDTO() != null && tradeDTO.getPriceDetailDTO().getPayPoint() != null && tradeDTO.getPriceDetailDTO().getPayPoint() > 0) { StringBuilder orderSns = new StringBuilder(); for (CartVO item : tradeDTO.getCartList()) { orderSns.append(item.getSn()); } boolean result = memberService.updateMemberPoint(tradeDTO.getPriceDetailDTO().getPayPoint(), PointTypeEnum.REDUCE.name(), tradeDTO.getMemberId(), "订单【" + orderSns + "】创建,积分扣减"); if (!result) { throw new ServiceException(ResultCode.PAY_POINT_ENOUGH); } } } /** * 创建交易、砍价处理 * * @param tradeDTO 购物车视图 */ private void kanjiaPretreatment(TradeDTO tradeDTO) { if (tradeDTO.getCartTypeEnum().equals(CartTypeEnum.KANJIA)) { String kanjiaId = tradeDTO.getSkuList().get(0).getKanjiaId(); kanjiaActivityService.endKanjiaActivity(kanjiaId); } } } \ No newline at end of file +package cn.lili.modules.order.order.serviceimpl; import cn.hutool.json.JSONUtil; import cn.lili.cache.Cache; import cn.lili.cache.CachePrefix; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; import cn.lili.common.properties.RocketmqCustomProperties; import cn.lili.modules.member.entity.dos.MemberAddress; import cn.lili.modules.member.entity.enums.PointTypeEnum; import cn.lili.modules.member.service.MemberService; import cn.lili.modules.order.cart.entity.dto.MemberCouponDTO; import cn.lili.modules.order.cart.entity.dto.TradeDTO; import cn.lili.modules.order.cart.entity.enums.CartTypeEnum; import cn.lili.modules.order.cart.entity.enums.DeliveryMethodEnum; import cn.lili.modules.order.cart.entity.vo.CartVO; import cn.lili.modules.order.order.entity.dos.Order; import cn.lili.modules.order.order.entity.dos.Trade; import cn.lili.modules.order.order.entity.enums.PayStatusEnum; import cn.lili.modules.order.order.mapper.TradeMapper; import cn.lili.modules.order.order.service.OrderService; import cn.lili.modules.order.order.service.TradeService; import cn.lili.modules.promotion.service.CouponService; import cn.lili.modules.promotion.service.KanjiaActivityService; import cn.lili.modules.promotion.service.MemberCouponService; import cn.lili.rocketmq.RocketmqSendCallbackBuilder; import cn.lili.rocketmq.tags.OrderTagsEnum; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.rocketmq.spring.core.RocketMQTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.stream.Collectors; /** * 交易业务层实现 * * @author Chopper * @since 2020/11/17 7:39 下午 */ @Service public class TradeServiceImpl extends ServiceImpl implements TradeService { /** * 缓存 */ @Autowired private Cache cache; /** * 订单 */ @Autowired private OrderService orderService; /** * 会员 */ @Autowired private MemberService memberService; /** * 优惠券 */ @Autowired private CouponService couponService; /** * 会员优惠券 */ @Autowired private MemberCouponService memberCouponService; /** * 砍价 */ @Autowired private KanjiaActivityService kanjiaActivityService; /** * RocketMQ */ @Autowired private RocketMQTemplate rocketMQTemplate; /** * RocketMQ 配置 */ @Autowired private RocketmqCustomProperties rocketmqCustomProperties; @Override @Transactional(rollbackFor = Exception.class) public Trade createTrade(TradeDTO tradeDTO) { //创建订单预校验 createTradeCheck(tradeDTO); Trade trade = new Trade(tradeDTO); String key = CachePrefix.TRADE.getPrefix() + trade.getSn(); //优惠券预处理 couponPretreatment(tradeDTO); //积分预处理 pointPretreatment(tradeDTO); //添加交易 this.save(trade); //添加订单 orderService.intoDB(tradeDTO); //砍价订单处理 kanjiaPretreatment(tradeDTO); //写入缓存,给消费者调用 cache.put(key, JSONUtil.toJsonStr(tradeDTO)); //构建订单创建消息 String destination = rocketmqCustomProperties.getOrderTopic() + ":" + OrderTagsEnum.ORDER_CREATE.name(); //发送订单创建消息 rocketMQTemplate.asyncSend(destination, key, RocketmqSendCallbackBuilder.commonCallback()); return trade; } /** * 创建订单最后一步校验 * * @param tradeDTO 购物车视图 */ private void createTradeCheck(TradeDTO tradeDTO) { if(tradeDTO.getStoreAddress() == null){ //创建订单如果没有收获地址, MemberAddress memberAddress = tradeDTO.getMemberAddress(); if (memberAddress == null) { throw new ServiceException(ResultCode.MEMBER_ADDRESS_NOT_EXIST); } //订单配送区域校验 if (tradeDTO.getNotSupportFreight() != null && !tradeDTO.getNotSupportFreight().isEmpty()) { StringBuilder stringBuilder = new StringBuilder("包含商品有-"); tradeDTO.getNotSupportFreight().forEach(sku -> stringBuilder.append(sku.getGoodsSku().getGoodsName())); throw new ServiceException(ResultCode.ORDER_NOT_SUPPORT_DISTRIBUTION, stringBuilder.toString()); } if (tradeDTO.getCartList().stream().noneMatch(CartVO::getChecked)) { throw new ServiceException(ResultCode.ORDER_NOT_EXIST_VALID); } if(tradeDTO.getCartList().stream().allMatch(item -> item.getDeliveryMethod().equals(DeliveryMethodEnum.SELF_PICK_UP.name()))){ throw new ServiceException(ResultCode.STORE_ADDRESS_NOT_EXIST); } } } @Override public Trade getBySn(String sn) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(Trade::getSn, sn); return this.getOne(queryWrapper); } @Override @Transactional(rollbackFor = Exception.class) public void payTrade(String tradeSn, String paymentName, String receivableNo) { LambdaQueryWrapper orderQueryWrapper = new LambdaQueryWrapper<>(); orderQueryWrapper.eq(Order::getTradeSn, tradeSn); List orders = orderService.list(orderQueryWrapper); for (Order order : orders) { orderService.payOrder(order.getSn(), paymentName, receivableNo); } Trade trade = this.getBySn(tradeSn); trade.setPayStatus(PayStatusEnum.PAID.name()); this.saveOrUpdate(trade); } @Override public void updateTradePrice(String tradeSn) { this.baseMapper.updateTradePrice(tradeSn); } /** * 优惠券预处理 * 下单同时,扣除优惠券 * * @param tradeDTO 购物车视图 */ private void couponPretreatment(TradeDTO tradeDTO) { List memberCouponDTOList = new ArrayList<>(); if (null != tradeDTO.getPlatformCoupon()) { memberCouponDTOList.add(tradeDTO.getPlatformCoupon()); } Collection storeCoupons = tradeDTO.getStoreCoupons().values(); if (!storeCoupons.isEmpty()) { memberCouponDTOList.addAll(storeCoupons); } List ids = memberCouponDTOList.stream().map(e -> e.getMemberCoupon().getId()).collect(Collectors.toList()); memberCouponService.used(tradeDTO.getMemberId(), ids); memberCouponDTOList.forEach(e -> couponService.usedCoupon(e.getMemberCoupon().getCouponId(), 1)); } /** * 创建交易,积分处理 * * @param tradeDTO 购物车视图 */ private void pointPretreatment(TradeDTO tradeDTO) { //需要支付积分 if (tradeDTO.getPriceDetailDTO() != null && tradeDTO.getPriceDetailDTO().getPayPoint() != null && tradeDTO.getPriceDetailDTO().getPayPoint() > 0) { StringBuilder orderSns = new StringBuilder(); for (CartVO item : tradeDTO.getCartList()) { orderSns.append(item.getSn()); } boolean result = memberService.updateMemberPoint(tradeDTO.getPriceDetailDTO().getPayPoint(), PointTypeEnum.REDUCE.name(), tradeDTO.getMemberId(), "订单【" + orderSns + "】创建,积分扣减"); if (!result) { throw new ServiceException(ResultCode.PAY_POINT_ENOUGH); } } } /** * 创建交易、砍价处理 * * @param tradeDTO 购物车视图 */ private void kanjiaPretreatment(TradeDTO tradeDTO) { if (tradeDTO.getCartTypeEnum().equals(CartTypeEnum.KANJIA)) { String kanjiaId = tradeDTO.getSkuList().get(0).getKanjiaId(); kanjiaActivityService.endKanjiaActivity(kanjiaId); } } } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/permission/service/MenuService.java b/framework/src/main/java/cn/lili/modules/permission/service/MenuService.java index 1d91e510..bccc1b15 100644 --- a/framework/src/main/java/cn/lili/modules/permission/service/MenuService.java +++ b/framework/src/main/java/cn/lili/modules/permission/service/MenuService.java @@ -3,6 +3,7 @@ package cn.lili.modules.permission.service; import cn.lili.modules.permission.entity.dos.Menu; import cn.lili.modules.permission.entity.dto.MenuSearchParams; import cn.lili.modules.permission.entity.vo.MenuVO; +import cn.lili.modules.permission.entity.vo.UserMenuVO; import com.baomidou.mybatisplus.extension.service.IService; import org.springframework.cache.annotation.CacheConfig; @@ -71,4 +72,12 @@ public interface MenuService extends IService { */ boolean saveOrUpdateMenu(Menu menu); + /** + * 根据角色集合获取拥有的菜单具体权限 + * + * @param userId + * @return + */ + List findAllMenu(String userId); + } diff --git a/framework/src/main/java/cn/lili/modules/permission/service/RoleMenuService.java b/framework/src/main/java/cn/lili/modules/permission/service/RoleMenuService.java index f2261c03..d02a88f9 100644 --- a/framework/src/main/java/cn/lili/modules/permission/service/RoleMenuService.java +++ b/framework/src/main/java/cn/lili/modules/permission/service/RoleMenuService.java @@ -1,7 +1,6 @@ package cn.lili.modules.permission.service; import cn.lili.modules.permission.entity.dos.RoleMenu; -import cn.lili.modules.permission.entity.vo.UserMenuVO; import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; @@ -23,15 +22,6 @@ public interface RoleMenuService extends IService { List findByRoleId(String roleId); - /** - * 根据角色集合获取拥有的菜单具体权限 - * - * @param userId - * @return - */ - List findAllMenu(String userId); - - /** * 更新某角色拥有到菜单 * diff --git a/framework/src/main/java/cn/lili/modules/permission/serviceimpl/AdminUserServiceImpl.java b/framework/src/main/java/cn/lili/modules/permission/serviceimpl/AdminUserServiceImpl.java index a0da41fa..c6f8e568 100644 --- a/framework/src/main/java/cn/lili/modules/permission/serviceimpl/AdminUserServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/permission/serviceimpl/AdminUserServiceImpl.java @@ -46,6 +46,10 @@ import java.util.stream.Collectors; @Slf4j @Service public class AdminUserServiceImpl extends ServiceImpl implements AdminUserService { + /** + * 角色长度 + */ + private final int rolesMaxSize = 10; @Autowired private UserRoleService userRoleService; @Autowired @@ -56,15 +60,9 @@ public class AdminUserServiceImpl extends ServiceImpl adminUserPage(Page initPage, QueryWrapper initWrapper) { Page adminUserPage = page(initPage, initWrapper); @@ -102,7 +100,7 @@ public class AdminUserServiceImpl extends ServiceImpl pageResult = new Page(adminUserPage.getCurrent(), adminUserPage.getSize(), adminUserPage.getTotal()); + Page pageResult = new Page<>(adminUserPage.getCurrent(), adminUserPage.getSize(), adminUserPage.getTotal()); pageResult.setRecords(result); return pageResult; @@ -163,13 +161,7 @@ public class AdminUserServiceImpl extends ServiceImpl().eq(AdminUser::getUsername, username)); - - if (user == null) { - return null; - } - return user; + return getOne(new LambdaQueryWrapper().eq(AdminUser::getUsername, username), false); } @@ -185,11 +177,11 @@ public class AdminUserServiceImpl extends ServiceImpl ids) { - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper(); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.in(AdminUser::getId, ids); List adminUsers = this.list(lambdaQueryWrapper); String password = StringUtils.md5("123456"); @@ -239,6 +232,7 @@ public class AdminUserServiceImpl extends ServiceImpl ids) { //彻底删除超级管理员 this.removeByIds(ids); @@ -269,5 +263,7 @@ public class AdminUserServiceImpl extends ServiceImpl userRoles = new ArrayList<>(roles.size()); roles.forEach(id -> userRoles.add(new UserRole(userId, id))); userRoleService.updateUserRole(userId, userRoles); + cache.vagueDel(CachePrefix.USER_MENU.getPrefix(UserEnums.MANAGER)); + cache.vagueDel(CachePrefix.PERMISSION_LIST.getPrefix(UserEnums.MANAGER)); } } diff --git a/framework/src/main/java/cn/lili/modules/permission/serviceimpl/DepartmentRoleServiceImpl.java b/framework/src/main/java/cn/lili/modules/permission/serviceimpl/DepartmentRoleServiceImpl.java index 10e484de..9e2ec204 100644 --- a/framework/src/main/java/cn/lili/modules/permission/serviceimpl/DepartmentRoleServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/permission/serviceimpl/DepartmentRoleServiceImpl.java @@ -1,10 +1,14 @@ package cn.lili.modules.permission.serviceimpl; +import cn.lili.cache.Cache; +import cn.lili.cache.CachePrefix; +import cn.lili.common.security.enums.UserEnums; import cn.lili.modules.permission.entity.dos.DepartmentRole; import cn.lili.modules.permission.mapper.DepartmentRoleMapper; import cn.lili.modules.permission.service.DepartmentRoleService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -19,6 +23,8 @@ import java.util.List; @Service public class DepartmentRoleServiceImpl extends ServiceImpl implements DepartmentRoleService { + @Autowired + private Cache cache; @Override public List listByDepartmentId(String departmentId) { @@ -35,6 +41,8 @@ public class DepartmentRoleServiceImpl extends ServiceImpl(); queryWrapper.in("department_id", ids); this.remove(queryWrapper); + cache.vagueDel(CachePrefix.USER_MENU.getPrefix(UserEnums.MANAGER)); + cache.vagueDel(CachePrefix.PERMISSION_LIST.getPrefix(UserEnums.MANAGER)); } } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/permission/serviceimpl/MenuServiceImpl.java b/framework/src/main/java/cn/lili/modules/permission/serviceimpl/MenuServiceImpl.java index 8e062fd4..17fb5cb4 100644 --- a/framework/src/main/java/cn/lili/modules/permission/serviceimpl/MenuServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/permission/serviceimpl/MenuServiceImpl.java @@ -13,15 +13,18 @@ import cn.lili.modules.permission.entity.dos.Menu; import cn.lili.modules.permission.entity.dos.RoleMenu; import cn.lili.modules.permission.entity.dto.MenuSearchParams; import cn.lili.modules.permission.entity.vo.MenuVO; +import cn.lili.modules.permission.entity.vo.UserMenuVO; import cn.lili.modules.permission.mapper.MenuMapper; import cn.lili.modules.permission.service.MenuService; import cn.lili.modules.permission.service.RoleMenuService; +import cn.lili.modules.system.token.ManagerTokenGenerate; import cn.lili.mybatis.util.PageUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.*; @@ -41,9 +44,13 @@ public class MenuServiceImpl extends ServiceImpl implements Me private RoleMenuService roleMenuService; @Autowired - private Cache> cache; + private ManagerTokenGenerate managerTokenGenerate; + + @Autowired + private Cache cache; @Override + @Transactional(rollbackFor = Exception.class) public void deleteIds(List ids) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("menu_id", ids); @@ -51,6 +58,8 @@ public class MenuServiceImpl extends ServiceImpl implements Me if (roleMenuService.count(queryWrapper) > 0) { throw new ServiceException(ResultCode.PERMISSION_MENU_ROLE_ERROR); } + cache.vagueDel(CachePrefix.USER_MENU.getPrefix(UserEnums.MANAGER)); + cache.vagueDel(CachePrefix.PERMISSION_LIST.getPrefix(UserEnums.MANAGER)); this.removeByIds(ids); } @@ -68,12 +77,17 @@ public class MenuServiceImpl extends ServiceImpl implements Me @Override public List findUserList(String userId) { String cacheKey = CachePrefix.USER_MENU.getPrefix(UserEnums.MANAGER) + userId; - List menuList = cache.get(cacheKey); + List menuList = (List) cache.get(cacheKey); if (menuList == null) { menuList = this.baseMapper.findByUserId(userId); //每5分钟重新确认用户权限 cache.put(cacheKey, menuList, 300L); } + String permissionCacheKey = CachePrefix.PERMISSION_LIST.getPrefix(UserEnums.MANAGER) + userId; + Map> permission = (Map>) cache.get(permissionCacheKey); + if (permission == null || permission.isEmpty()) { + cache.put(permissionCacheKey, this.managerTokenGenerate.permissionList(this.findAllMenu(userId))); + } return menuList; } @@ -84,14 +98,18 @@ public class MenuServiceImpl extends ServiceImpl implements Me * @return 是否成功 */ @Override + @Transactional(rollbackFor = Exception.class) public boolean saveOrUpdateMenu(Menu menu) { - if (CharSequenceUtil.isNotEmpty(menu.getId())) { - - } cache.vagueDel(CachePrefix.USER_MENU.getPrefix(UserEnums.MANAGER)); + cache.vagueDel(CachePrefix.PERMISSION_LIST.getPrefix(UserEnums.MANAGER)); return this.saveOrUpdate(menu); } + @Override + public List findAllMenu(String userId) { + return this.baseMapper.getUserRoleMenu(userId); + } + @Override public List findByRoleIds(String roleId) { QueryWrapper queryWrapper = new QueryWrapper<>(); diff --git a/framework/src/main/java/cn/lili/modules/permission/serviceimpl/RoleMenuServiceImpl.java b/framework/src/main/java/cn/lili/modules/permission/serviceimpl/RoleMenuServiceImpl.java index 0d2a22dc..1ea09fc9 100644 --- a/framework/src/main/java/cn/lili/modules/permission/serviceimpl/RoleMenuServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/permission/serviceimpl/RoleMenuServiceImpl.java @@ -2,9 +2,8 @@ package cn.lili.modules.permission.serviceimpl; import cn.lili.cache.Cache; import cn.lili.cache.CachePrefix; +import cn.lili.common.security.enums.UserEnums; import cn.lili.modules.permission.entity.dos.RoleMenu; -import cn.lili.modules.permission.entity.vo.UserMenuVO; -import cn.lili.modules.permission.mapper.MenuMapper; import cn.lili.modules.permission.mapper.RoleMenuMapper; import cn.lili.modules.permission.service.RoleMenuService; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -15,7 +14,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import javax.annotation.Resource; import java.util.List; /** @@ -28,13 +26,6 @@ import java.util.List; @Service public class RoleMenuServiceImpl extends ServiceImpl implements RoleMenuService { - /** - * 菜单 - */ - @Resource - private MenuMapper menuMapper; - - @Autowired private Cache cache; @@ -45,11 +36,6 @@ public class RoleMenuServiceImpl extends ServiceImpl i return this.baseMapper.selectList(queryWrapper); } - @Override - public List findAllMenu(String userId) { - return menuMapper.getUserRoleMenu(userId); - } - @Override @Transactional(rollbackFor = Exception.class) @@ -59,7 +45,9 @@ public class RoleMenuServiceImpl extends ServiceImpl i this.deleteRoleMenu(roleId); //重新保存角色菜单关系 this.saveBatch(roleMenus); - + + cache.vagueDel(CachePrefix.USER_MENU.getPrefix(UserEnums.MANAGER)); + cache.vagueDel(CachePrefix.PERMISSION_LIST.getPrefix(UserEnums.MANAGER)); } catch (Exception e) { log.error("修改用户权限错误", e); } @@ -70,6 +58,8 @@ public class RoleMenuServiceImpl extends ServiceImpl i //删除 QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("role_id", roleId); + cache.vagueDel(CachePrefix.USER_MENU.getPrefix(UserEnums.MANAGER)); + cache.vagueDel(CachePrefix.PERMISSION_LIST.getPrefix(UserEnums.MANAGER)); this.remove(queryWrapper); } @@ -79,6 +69,8 @@ public class RoleMenuServiceImpl extends ServiceImpl i //删除 QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("role_id", roleId); + cache.vagueDel(CachePrefix.USER_MENU.getPrefix(UserEnums.MANAGER)); + cache.vagueDel(CachePrefix.PERMISSION_LIST.getPrefix(UserEnums.MANAGER)); this.remove(queryWrapper); } diff --git a/framework/src/main/java/cn/lili/modules/permission/serviceimpl/RoleServiceImpl.java b/framework/src/main/java/cn/lili/modules/permission/serviceimpl/RoleServiceImpl.java index 510e7041..ca16fda4 100644 --- a/framework/src/main/java/cn/lili/modules/permission/serviceimpl/RoleServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/permission/serviceimpl/RoleServiceImpl.java @@ -1,7 +1,10 @@ package cn.lili.modules.permission.serviceimpl; +import cn.lili.cache.Cache; +import cn.lili.cache.CachePrefix; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; +import cn.lili.common.security.enums.UserEnums; import cn.lili.modules.permission.entity.dos.Role; import cn.lili.modules.permission.mapper.RoleMapper; import cn.lili.modules.permission.service.DepartmentRoleService; @@ -38,6 +41,8 @@ public class RoleServiceImpl extends ServiceImpl implements Ro @Autowired private RoleMenuService roleMenuService; + @Autowired + private Cache cache; @Override public List findByDefaultRole(Boolean defaultRole) { @@ -61,5 +66,7 @@ public class RoleServiceImpl extends ServiceImpl implements Ro this.removeByIds(roleIds); //删除角色与菜单关联 roleMenuService.remove(queryWrapper); + cache.vagueDel(CachePrefix.USER_MENU.getPrefix(UserEnums.MANAGER)); + cache.vagueDel(CachePrefix.PERMISSION_LIST.getPrefix(UserEnums.MANAGER)); } } diff --git a/framework/src/main/java/cn/lili/modules/permission/serviceimpl/UserRoleServiceImpl.java b/framework/src/main/java/cn/lili/modules/permission/serviceimpl/UserRoleServiceImpl.java index e3e84d4e..76c4d41f 100644 --- a/framework/src/main/java/cn/lili/modules/permission/serviceimpl/UserRoleServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/permission/serviceimpl/UserRoleServiceImpl.java @@ -1,10 +1,14 @@ package cn.lili.modules.permission.serviceimpl; +import cn.lili.cache.Cache; +import cn.lili.cache.CachePrefix; +import cn.lili.common.security.enums.UserEnums; import cn.lili.modules.permission.entity.dos.UserRole; import cn.lili.modules.permission.mapper.UserRoleMapper; import cn.lili.modules.permission.service.UserRoleService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -20,6 +24,9 @@ import java.util.List; @Service public class UserRoleServiceImpl extends ServiceImpl implements UserRoleService { + @Autowired + private Cache cache; + @Override public List listByUserId(String userId) { QueryWrapper queryWrapper = new QueryWrapper<>(); @@ -46,6 +53,8 @@ public class UserRoleServiceImpl extends ServiceImpl i //保存 this.saveBatch(userRoles); + cache.vagueDel(CachePrefix.USER_MENU.getPrefix(UserEnums.MANAGER)); + cache.vagueDel(CachePrefix.PERMISSION_LIST.getPrefix(UserEnums.MANAGER)); } } diff --git a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/PlatformViewServiceImpl.java b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/PlatformViewServiceImpl.java index 5d824068..5438f3d5 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/PlatformViewServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/PlatformViewServiceImpl.java @@ -27,7 +27,6 @@ import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import javax.annotation.Resource; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; @@ -59,11 +58,6 @@ public class PlatformViewServiceImpl extends ServiceImpl { @Autowired private TokenUtil tokenUtil; @Autowired - private RoleMenuService roleMenuService; + private MenuService menuService; @Autowired private Cache cache; @@ -50,7 +50,7 @@ public class ManagerTokenGenerate extends AbstractTokenGenerate { .longTerm(longTerm) .build(); - List userMenuVOList = roleMenuService.findAllMenu(authUser.getId()); + List userMenuVOList = menuService.findAllMenu(authUser.getId()); //缓存权限列表 cache.put(CachePrefix.PERMISSION_LIST.getPrefix(UserEnums.MANAGER) + authUser.getId(), this.permissionList(userMenuVOList)); @@ -68,7 +68,7 @@ public class ManagerTokenGenerate extends AbstractTokenGenerate { * @param userMenuVOList * @return */ - private Map> permissionList(List userMenuVOList) { + public Map> permissionList(List userMenuVOList) { Map> permission = new HashMap<>(2); List superPermissions = new ArrayList<>(); diff --git a/seller-api/src/main/java/cn/lili/security/StoreAuthenticationFilter.java b/seller-api/src/main/java/cn/lili/security/StoreAuthenticationFilter.java index c0b147af..cc0565a5 100644 --- a/seller-api/src/main/java/cn/lili/security/StoreAuthenticationFilter.java +++ b/seller-api/src/main/java/cn/lili/security/StoreAuthenticationFilter.java @@ -123,7 +123,7 @@ public class StoreAuthenticationFilter extends BasicAuthenticationFilter { //如果不是超级管理员, 则鉴权 - if (!authUser.getIsSuper()) { + if (Boolean.FALSE.equals(authUser.getIsSuper())) { //获取缓存中的权限 Map> permission = (Map>) cache.get(CachePrefix.PERMISSION_LIST.getPrefix(UserEnums.STORE) + authUser.getId());