From 4e6d6e7c8e4ca42e96528a71162f5e58e473f652 Mon Sep 17 00:00:00 2001 From: zxl <763096477@qq.com> Date: 星期五, 11 七月 2025 09:37:15 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev --- framework/src/main/java/cn/lili/modules/lmk/service/impl/GoodsTagServiceImpl.java | 92 + framework/src/main/java/cn/lili/modules/lmk/domain/form/FileInfoForm.java | 4 framework/src/main/resources/mapper/lmk/PriceChangeMapper.xml | 68 framework/src/main/java/cn/lili/modules/lmk/domain/query/PriceChangeQuery.java | 17 framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java | 9 framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java | 72 buyer-api/src/main/java/cn/lili/controller/lmk/MySubscribeController.java | 2 consumer/src/main/resources/application.yml | 6 framework/src/main/java/cn/lili/modules/lmk/mapper/CommissionRecordMapper.java | 32 framework/src/main/java/cn/lili/modules/order/order/mapper/OrderMapper.java | 23 framework/src/main/java/cn/lili/modules/lmk/domain/query/GoodsSimilarlyQuery.java | 27 seller-api/src/main/java/cn/lili/controller/order/OrderStoreController.java | 1 framework/src/main/java/cn/lili/modules/lmk/domain/vo/PriceChangeVO.java | 75 framework/src/main/java/cn/lili/modules/member/entity/vo/MemberVO.java | 4 framework/src/main/java/cn/lili/modules/lmk/enums/general/ChangePriceAudioStatusEnum.java | 29 lmk-job/src/main/java/cn/lili/handler/EveryMinuteExecute.java | 17 framework/src/main/resources/mapper/lmk/MemberMapper.xml | 41 framework/src/main/java/cn/lili/modules/lmk/domain/form/PriceChangeForm.java | 79 + framework/src/main/java/cn/lili/modules/search/entity/dto/EsGoodsSearchDTO.java | 3 framework/src/main/java/cn/lili/modules/lmk/service/PriceChangeService.java | 65 buyer-api/src/main/java/cn/lili/controller/lmk/SupplierController.java | 130 + framework/src/main/java/cn/lili/modules/connect/serviceimpl/ConnectServiceImpl.java | 3 framework/src/main/java/cn/lili/modules/lmk/domain/entity/MemberTag.java | 13 framework/src/main/java/cn/lili/elasticsearch/BaseElasticsearchService.java | 8 lmk-job/src/main/java/cn/lili/handler/impl/statistics/MemberStatisticsExecute.java | 55 framework/src/main/java/cn/lili/modules/member/mapper/MemberMapper.java | 2 framework/src/main/java/cn/lili/modules/lmk/domain/entity/CommissionRecord.java | 92 + framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java | 4 framework/src/main/java/cn/lili/modules/lmk/mapper/MemberTagMapper.java | 16 framework/src/main/java/cn/lili/modules/lmk/domain/query/TagQuery.java | 2 lmk-job/src/main/java/cn/lili/handler/impl/promotion/PromotionEverydayExecute.java | 85 + framework/src/main/java/cn/lili/modules/lmk/service/impl/PriceChangeServiceImpl.java | 119 + framework/src/main/java/cn/lili/modules/goods/entity/dos/Goods.java | 17 framework/src/main/java/cn/lili/modules/order/cart/render/impl/CommissionRender.java | 21 framework/src/main/java/cn/lili/modules/lmk/domain/vo/CommissionRecordVO.java | 100 + framework/src/main/java/cn/lili/modules/lmk/domain/vo/GoodsTagVO.java | 33 framework/src/main/java/cn/lili/modules/lmk/domain/query/CommissionRecordQuery.java | 17 lmk-job/src/main/java/cn/lili/handler/impl/order/OrderEveryDayTaskExecute.java | 287 +++ framework/src/main/java/cn/lili/modules/lmk/enums/general/ChangePriceOperationTypeEnum.java | 28 framework/src/main/java/cn/lili/modules/lmk/domain/form/MemberTagForm.java | 52 lmk-job/src/main/java/cn/lili/handler/EveryDayExecute.java | 18 framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoServiceImpl.java | 100 + framework/src/main/resources/mapper/lmk/CustomerMapper.xml | 10 framework/src/main/java/cn/lili/modules/lmk/mapper/PriceChangeMapper.java | 32 framework/src/main/java/cn/lili/modules/member/serviceimpl/FootprintServiceImpl.java | 4 framework/src/main/resources/mapper/lmk/VideoMapper.xml | 117 + buyer-api/src/main/java/cn/lili/controller/store/StoreBuyerController.java | 50 lmk-job/src/main/java/cn/lili/handler/impl/broadcast/BroadcastExecute.java | 25 buyer-api/src/main/java/cn/lili/controller/order/AfterSaleBuyerController.java | 13 framework/src/main/java/cn/lili/modules/lmk/service/VideoService.java | 8 framework/src/main/java/cn/lili/modules/permission/entity/dos/AdminUser.java | 2 framework/src/main/resources/mapper/lmk/TagMapper.xml | 5 buyer-api/src/main/java/cn/lili/controller/lmk/CustomerController.java | 24 framework/src/main/java/cn/lili/modules/order/order/serviceimpl/StoreFlowServiceImpl.java | 1 lmk-job/src/main/java/cn/lili/handler/impl/view/PageViewStatisticsExecute.java | 195 ++ manager-api/src/main/java/cn/lili/controller/lmk/CustomerController.java | 36 consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java | 2 framework/src/main/java/cn/lili/modules/member/service/FootprintService.java | 5 framework/src/main/resources/mapper/lmk/CommissionRecordMapper.xml | 86 + buyer-api/src/main/java/cn/lili/controller/lmk/VideoController.java | 27 framework/src/main/java/cn/lili/modules/lmk/domain/query/VideoQuery.java | 21 framework/src/main/java/cn/lili/modules/lmk/domain/vo/VideoHistoryVO.java | 26 framework/src/main/java/cn/lili/modules/lmk/domain/query/VideoHistoryQuery.java | 18 framework/src/main/java/cn/lili/modules/member/entity/dos/Member.java | 2 lmk-job/src/main/java/cn/lili/handler/impl/hotwords/HotWordsEveryDayTaskExecute.java | 86 + framework/src/main/java/cn/lili/modules/goods/service/GoodsSkuService.java | 2 framework/src/main/java/cn/lili/modules/lmk/domain/entity/GoodsTag.java | 13 lmk-job/src/main/java/cn/lili/handler/impl/order/RechargeOrderTaskExecute.java | 61 framework/src/main/resources/mapper/lmk/MemberTagMapper.xml | 43 buyer-api/src/main/java/cn/lili/controller/member/FootprintController.java | 11 framework/src/main/resources/mapper/lmk/MySubscribeMapper.xml | 3 lmk-job/src/main/java/cn/lili/handler/impl/store/StoreRatingExecute.java | 60 framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java | 3 framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java | 63 framework/src/main/java/cn/lili/modules/member/entity/dto/ManagerMemberEditDTO.java | 3 framework/src/main/java/cn/lili/modules/search/entity/dos/EsGoodsIndex.java | 15 framework/src/main/java/cn/lili/modules/order/order/entity/dos/OrderItem.java | 4 framework/src/main/java/cn/lili/modules/lmk/domain/entity/PriceChange.java | 72 framework/src/main/java/cn/lili/modules/goods/entity/dto/GoodsOperationDTO.java | 24 seller-api/src/main/java/cn/lili/controller/goods/GoodsStoreController.java | 3 framework/src/main/java/cn/lili/modules/order/order/entity/dto/SupplierOrderSearchParams.java | 227 ++ lmk-job/src/main/java/cn/lili/job/TimedTaskJobHandler.java | 104 + framework/src/main/java/cn/lili/modules/lmk/domain/form/GoodsTagForm.java | 51 framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java | 25 framework/src/main/java/cn/lili/modules/goods/entity/enums/GoodsSalesModeEnum.java | 1 framework/src/main/java/cn/lili/modules/lmk/domain/vo/MemberTagVO.java | 28 framework/src/main/java/cn/lili/modules/lmk/service/GoodsTagService.java | 51 framework/src/main/java/cn/lili/modules/goods/entity/dto/GoodsSkuDTO.java | 16 framework/src/main/java/cn/lili/modules/lmk/service/CommissionRecordService.java | 65 lmk-job/src/main/java/cn/lili/handler/impl/order/CancelOrderTaskExecute.java | 61 lmk-job/src/main/java/cn/lili/handler/impl/store/StoreExecute.java | 49 lmk-job/src/main/java/cn/lili/handler/impl/statistics/OnlineMemberStatistics.java | 114 + framework/src/main/java/cn/lili/modules/lmk/mapper/VideoMapper.java | 19 framework/src/main/resources/mapper/lmk/GoodsTagMapper.xml | 15 framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java | 23 lmk-job/src/main/java/cn/lili/handler/EveryHourExecute.java | 17 framework/src/main/java/cn/lili/modules/lmk/service/MemberTagService.java | 29 framework/src/main/java/cn/lili/modules/lmk/service/impl/CommissionRecordServiceImpl.java | 119 + framework/src/main/java/cn/lili/modules/lmk/service/impl/MemberTagServiceImpl.java | 158 ++ framework/src/main/resources/mapper/lmk/MyCollectMapper.xml | 3 framework/src/main/java/cn/lili/modules/lmk/mapper/GoodsTagMapper.java | 16 lmk-job/src/main/java/cn/lili/handler/impl/coupon/CouponExecute.java | 56 lmk-job/src/main/java/cn/lili/handler/impl/goods/GoodsExecute.java | 48 lmk-job/src/main/java/cn/lili/handler/impl/promotion/MemberCouponSignEverydayExecute.java | 35 /dev/null | 51 framework/src/main/java/cn/lili/modules/goods/mapper/GoodsSkuMapper.java | 2 framework/src/main/java/cn/lili/modules/lmk/domain/form/CommissionRecordForm.java | 104 + 107 files changed, 4,321 insertions(+), 209 deletions(-) diff --git a/buyer-api/src/main/java/cn/lili/controller/lmk/CustomerController.java b/buyer-api/src/main/java/cn/lili/controller/lmk/CustomerController.java index 1478a62..4a7a4d2 100644 --- a/buyer-api/src/main/java/cn/lili/controller/lmk/CustomerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/lmk/CustomerController.java @@ -3,13 +3,13 @@ import cn.lili.base.Result; import cn.lili.group.Add; import cn.lili.group.Update; -import cn.lili.modules.lmk.domain.form.CustomerTagForm; +import cn.lili.modules.lmk.domain.form.MemberTagForm; import cn.lili.modules.lmk.domain.form.CustomerTagRefForm; import cn.lili.modules.lmk.domain.query.CustomerQuery; import cn.lili.modules.lmk.domain.query.CustomerTagQuery; import cn.lili.modules.lmk.service.CustomerService; import cn.lili.modules.lmk.service.CustomerTagRefService; -import cn.lili.modules.lmk.service.CustomerTagService; +import cn.lili.modules.lmk.service.MemberTagService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -27,7 +27,7 @@ public class CustomerController { private final CustomerService customerService; - private final CustomerTagService customerTagService; + private final MemberTagService memberTagService; private final CustomerTagRefService customerTagRefService; @ApiOperation(value = "鍟嗛摵涓嬫媺鍒楄〃") @@ -45,39 +45,39 @@ @PostMapping("/addTag") @ApiOperation(value = "娣诲姞鏍囩", notes = "娣诲姞鏍囩") - public Result add(@RequestBody @Validated(Add.class) CustomerTagForm form) { - return customerTagService.add(form); + public Result add(@RequestBody @Validated(Add.class) MemberTagForm form) { + return memberTagService.add(form); } @PutMapping("/editTag") @ApiOperation(value = "淇敼鏍囩", notes = "淇敼鏍囩") - public Result update(@RequestBody @Validated(Update.class) CustomerTagForm form) { - return customerTagService.update(form); + public Result update(@RequestBody @Validated(Update.class) MemberTagForm form) { + return memberTagService.update(form); } @DeleteMapping("/tag/{id}") @ApiOperation(value = "ID鍒犻櫎鏍囩", notes = "ID鍒犻櫎") public Result removeById(@PathVariable("id") String id) { - return customerTagService.removeById(id); + return memberTagService.removeById(id); } @GetMapping("/tagList") @ApiOperation(value = "鏍囩鍒楄〃", notes = "鏍囩鍒楄〃") public Result list() { - return customerTagService.all(); + return memberTagService.all(); } @GetMapping("/pageTagList") @ApiOperation(value = "鍒嗛〉鏍囩鍒楄〃", notes = "鏍囩鍒楄〃") public Result pageList(CustomerTagQuery query) { - return customerTagService.page(query); + return memberTagService.page(query); } @PostMapping("/customerAddTag") @ApiOperation(value = "娣诲姞瀹㈡埛鏍囩鏍囪瘑", notes = "娣诲姞瀹㈡埛鏍囩鏍囪瘑") - public Result addCustomerTag(@RequestBody @Validated(Add.class) CustomerTagForm form) { - return customerTagService.addCustomerTag(form); + public Result addCustomerTag(@RequestBody @Validated(Add.class) MemberTagForm form) { + return memberTagService.addMemberTag(form); } // @PostMapping("/customerAddTag") diff --git a/buyer-api/src/main/java/cn/lili/controller/lmk/MySubscribeController.java b/buyer-api/src/main/java/cn/lili/controller/lmk/MySubscribeController.java index c741b90..88446a9 100644 --- a/buyer-api/src/main/java/cn/lili/controller/lmk/MySubscribeController.java +++ b/buyer-api/src/main/java/cn/lili/controller/lmk/MySubscribeController.java @@ -38,7 +38,7 @@ } @GetMapping("/page") - @ApiOperation(value = "鍒嗛〉", notes = "鍒嗛〉") + @ApiOperation(value = "鎴戠殑鍏虫敞鐢ㄦ埛鍒嗛〉", notes = "鎴戠殑鍏虫敞鐢ㄦ埛鍒嗛〉") public Result page(MySubscribeQuery query) { return mySubscribeService.page(query); } diff --git a/buyer-api/src/main/java/cn/lili/controller/lmk/SupplierController.java b/buyer-api/src/main/java/cn/lili/controller/lmk/SupplierController.java new file mode 100644 index 0000000..637d39a --- /dev/null +++ b/buyer-api/src/main/java/cn/lili/controller/lmk/SupplierController.java @@ -0,0 +1,130 @@ +package cn.lili.controller.lmk; + +import cn.lili.common.enums.ResultUtil; +import cn.lili.common.security.OperationalJudgment; +import cn.lili.common.security.context.UserContext; +import cn.lili.common.utils.StringUtils; +import cn.lili.common.vo.ResultMessage; +import cn.lili.modules.goods.entity.vos.CategoryVO; +import cn.lili.modules.goods.service.CategoryService; +import cn.lili.modules.member.entity.dos.Clerk; +import cn.lili.modules.member.service.ClerkService; +import cn.lili.modules.member.service.StoreLogisticsService; +import cn.lili.modules.order.order.entity.dto.PartDeliveryParamsDTO; +import cn.lili.modules.order.order.entity.dto.SupplierOrderSearchParams; +import cn.lili.modules.order.order.entity.vo.OrderDetailVO; +import cn.lili.modules.order.order.entity.vo.OrderSimpleXcxVO; +import cn.lili.modules.order.order.service.OrderService; +import cn.lili.modules.store.service.StoreDetailService; +import cn.lili.modules.system.entity.vo.StoreLogisticsVO; +import cn.lili.utils.COSUtil; +import com.baomidou.mybatisplus.core.metadata.IPage; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.constraints.NotNull; +import java.util.List; +import java.util.Objects; + +@Validated +@RequiredArgsConstructor +@Api(value = "灏忕▼搴忓晢鎴风鎺ュ彛", tags = "灏忕▼搴忓晢鎴风鎺ュ彛") +@RestController +@RequestMapping("/buyer/lmk/supplier") +public class SupplierController { + /** + * 鍒嗙被 + */ + @Autowired + private CategoryService categoryService; + /** + * 搴楅摵璇︽儏 + */ + @Autowired + private StoreDetailService storeDetailService; + /** + * 鐗╂祦鍏徃 + */ + @Autowired + private StoreLogisticsService storeLogisticsService; + /** + * 璁㈠崟 + */ + @Autowired + private OrderService orderService; + + @Autowired + private COSUtil cosUtil; + @Autowired + private ClerkService clerkService; + + @ApiOperation(value = "鑾峰彇搴楅摵缁忚惀鐨勫垎绫�") + @GetMapping(value = "/allCategery") + public ResultMessage<List<CategoryVO>> getListAll() { + + String storeId = Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId(); + if (StringUtils.isEmpty(storeId)) { + Clerk clerk = clerkService.getClerkByMemberId(UserContext.getCurrentUserId()); + storeId = clerk.getStoreId(); + } + + //鑾峰彇搴楅摵缁忚惀鑼冨洿 + String goodsManagementCategory = storeDetailService.getStoreDetail(storeId).getGoodsManagementCategory(); + return ResultUtil.data(this.categoryService.getStoreCategory(goodsManagementCategory.split(","))); + } + + @ApiOperation(value = "鏌ヨ浼氬憳璁㈠崟鍒楄〃") + @GetMapping("/orderList") + public ResultMessage<IPage<OrderSimpleXcxVO>> orderList(SupplierOrderSearchParams orderSearchParams) { + String storeId = Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId(); + if (StringUtils.isEmpty(storeId)) { + Clerk clerk = clerkService.getClerkByMemberId(UserContext.getCurrentUserId()); + orderSearchParams.setStoreId(clerk.getStoreId()); + } else { + orderSearchParams.setStoreId(storeId); + } + return ResultUtil.data(orderService.querySupplierOrderParams(orderSearchParams)); + } + + @ApiOperation(value = "璁㈠崟鏄庣粏") + @ApiImplicitParams({ + @ApiImplicitParam(name = "orderSn", value = "璁㈠崟缂栧彿", required = true, dataType = "String", paramType = "path") + }) + @GetMapping(value = "/orderDetail/{orderSn}") + public ResultMessage<OrderDetailVO> detail(@NotNull @PathVariable String orderSn) { + OperationalJudgment.judgment(orderService.getBySn(orderSn)); + OrderDetailVO orderDetailVO = orderService.queryDetail(orderSn); + orderDetailVO.getOrderItems().forEach(orderItem -> { + String image = orderItem.getImage(); + if (StringUtils.isNotBlank(image) && !image.contains("http")) { + orderItem.setImage(cosUtil.getPreviewUrl(image)); + } + }); + return ResultUtil.data(orderDetailVO); + } + + @ApiOperation(value = "鑾峰彇鍟嗗宸查�夋嫨鐗╂祦鍏徃鍒楄〃") + @GetMapping("/getChecked") + public ResultMessage<List<StoreLogisticsVO>> getChecked() { + String storeId = Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId(); + return ResultUtil.data(storeLogisticsService.getStoreSelectedLogistics(storeId)); + } + + @ApiOperation(value = "璁㈠崟鍖呰9鍙戣揣") + @ApiImplicitParams({ + @ApiImplicitParam(name = "orderSn", value = "璁㈠崟sn", required = true, dataType = "String", paramType = "path"), + @ApiImplicitParam(name = "logisticsNo", value = "鍙戣揣鍗曞彿", required = true, dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "logisticsId", value = "鐗╂祦鍏徃", required = true, dataType = "String", paramType = "query") + }) + @PostMapping(value = "/{orderSn}/partDelivery") + public ResultMessage<Object> delivery(@RequestBody PartDeliveryParamsDTO partDeliveryParamsDTO) { + return ResultUtil.data(orderService.partDelivery(partDeliveryParamsDTO)); + } + +} diff --git a/buyer-api/src/main/java/cn/lili/controller/lmk/VideoController.java b/buyer-api/src/main/java/cn/lili/controller/lmk/VideoController.java index 8078d3f..32fc3b6 100644 --- a/buyer-api/src/main/java/cn/lili/controller/lmk/VideoController.java +++ b/buyer-api/src/main/java/cn/lili/controller/lmk/VideoController.java @@ -1,21 +1,22 @@ package cn.lili.controller.lmk; -import cn.lili.group.Update; +import cn.lili.base.Result; import cn.lili.group.Add; +import cn.lili.group.Update; import cn.lili.modules.lmk.domain.form.ThumbsUpRecordForm; import cn.lili.modules.lmk.domain.form.VideoFootPrintForm; import cn.lili.modules.lmk.domain.form.VideoHomePageInfoForm; import cn.lili.modules.lmk.domain.form.WxVideoForm; import cn.lili.modules.lmk.domain.query.*; -import org.springframework.validation.annotation.Validated; -import lombok.RequiredArgsConstructor; -import java.util.List; -import javax.validation.constraints.NotEmpty; +import cn.lili.modules.lmk.service.VideoService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import cn.lili.modules.lmk.service.VideoService; -import cn.lili.base.Result; +import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; + +import javax.validation.constraints.NotEmpty; +import java.util.List; /** * 瑙嗛鍐呭 鍓嶇鎺у埗鍣� @@ -148,4 +149,16 @@ public Result esSearch(VideoEsQuery query) { return videoService.esSearch(query); } + + @PostMapping("/goods/similarly") + @ApiOperation(value = "鎸傜浉鍚屽晢鍝佺殑瑙嗛", notes = "鎸傜浉鍚屽晢鍝佺殑瑙嗛") + public Result goodsSimilarly(@RequestBody VideoQuery query) { + return videoService.recommendVideo(query); + } + + @GetMapping("/history") + @ApiOperation(value = "鑾峰彇鍘嗗彶鎾斁璁板綍") + public Result getHistoryPage(VideoHistoryQuery query) { + return videoService.getHistoryPage(query); + } } diff --git a/buyer-api/src/main/java/cn/lili/controller/member/FootprintController.java b/buyer-api/src/main/java/cn/lili/controller/member/FootprintController.java index 43318e5..caf0910 100644 --- a/buyer-api/src/main/java/cn/lili/controller/member/FootprintController.java +++ b/buyer-api/src/main/java/cn/lili/controller/member/FootprintController.java @@ -3,7 +3,6 @@ import cn.lili.common.enums.ResultUtil; import cn.lili.common.security.context.UserContext; import cn.lili.common.utils.StringUtils; -import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.member.entity.dto.FootPrintQueryParams; import cn.lili.modules.member.service.FootprintService; @@ -13,7 +12,6 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; -import org.apache.catalina.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -40,6 +38,7 @@ @Autowired private COSUtil cosUtil; + @ApiOperation(value = "鍒嗛〉鑾峰彇") @GetMapping public ResultMessage<IPage<EsGoodsIndex>> getByPage(FootPrintQueryParams params) { @@ -65,10 +64,10 @@ } @ApiOperation(value = "鏍规嵁id鍒犻櫎") - @ApiImplicitParam(name = "ids", value = "鍟嗗搧ID", required = true, allowMultiple = true, dataType = "String", paramType = "path") - @DeleteMapping(value = "/delByIds/{ids}") - public ResultMessage<Object> delAllByIds(@NotNull(message = "鍟嗗搧ID涓嶈兘涓虹┖") @PathVariable("ids") List ids) { - footprintService.deleteByIds(ids); + @ApiImplicitParam(name = "ids", value = "鍏宠仈ID", required = true, allowMultiple = true, dataType = "String", paramType = "path") + @DeleteMapping(value = "/delByIds/{viewType}/{ids}") + public ResultMessage<Object> delAllByIds(@NotNull(message = "鍏宠仈ID涓嶈兘涓虹┖") @PathVariable("ids") List ids, @PathVariable("viewType") String viewType) { + footprintService.deleteByIds(ids, viewType); return ResultUtil.success(); } diff --git a/buyer-api/src/main/java/cn/lili/controller/order/AfterSaleBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/order/AfterSaleBuyerController.java index 4f4b802..68a8a0f 100644 --- a/buyer-api/src/main/java/cn/lili/controller/order/AfterSaleBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/order/AfterSaleBuyerController.java @@ -3,6 +3,7 @@ import cn.lili.common.aop.annotation.PreventDuplicateSubmissions; import cn.lili.common.enums.ResultUtil; import cn.lili.common.security.OperationalJudgment; +import cn.lili.common.utils.StringUtils; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.order.aftersale.entity.dos.AfterSale; import cn.lili.modules.order.aftersale.entity.dos.AfterSaleLog; @@ -15,6 +16,7 @@ import cn.lili.modules.order.aftersale.service.AfterSaleReasonService; import cn.lili.modules.order.aftersale.service.AfterSaleService; import cn.lili.modules.store.entity.dto.StoreAfterSaleAddressDTO; +import cn.lili.utils.COSUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; @@ -55,6 +57,8 @@ @Autowired private AfterSaleLogService afterSaleLogService; + @Autowired + private COSUtil cosUtil; @ApiOperation(value = "鏌ョ湅鍞悗鏈嶅姟璇︽儏") @ApiImplicitParam(name = "sn", value = "鍞悗鍗曞彿", required = true, paramType = "path") @GetMapping(value = "/get/{sn}") @@ -66,7 +70,14 @@ @ApiOperation(value = "鍒嗛〉鑾峰彇鍞悗鏈嶅姟") @GetMapping(value = "/page") public ResultMessage<IPage<AfterSaleVO>> getByPage(AfterSaleSearchParams searchParams) { - return ResultUtil.data(afterSaleService.getAfterSalePages(searchParams)); + IPage<AfterSaleVO> afterSalePages = afterSaleService.getAfterSalePages(searchParams); + afterSalePages.getRecords().forEach(item->{ + String goodsImage = item.getGoodsImage(); + if (StringUtils.isNotBlank(goodsImage)&&!goodsImage.contains("http")) { + item.setGoodsImage(cosUtil.getPreviewUrl(goodsImage)); + } + }); + return ResultUtil.data(afterSalePages); } @ApiOperation(value = "鑾峰彇鐢宠鍞悗椤甸潰淇℃伅") diff --git a/buyer-api/src/main/java/cn/lili/controller/store/StoreBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/store/StoreBuyerController.java index 35bdfbd..349ac8d 100644 --- a/buyer-api/src/main/java/cn/lili/controller/store/StoreBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/store/StoreBuyerController.java @@ -1,19 +1,29 @@ package cn.lili.controller.store; +import cn.lili.base.Result; import cn.lili.common.enums.ResultUtil; import cn.lili.common.security.AuthUser; import cn.lili.common.security.context.UserContext; +import cn.lili.common.utils.StringUtils; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; +import cn.lili.modules.goods.entity.dos.GoodsUnit; +import cn.lili.modules.goods.entity.dto.GoodsOperationDTO; import cn.lili.modules.goods.entity.vos.StoreGoodsLabelVO; +import cn.lili.modules.goods.service.GoodsService; +import cn.lili.modules.goods.service.GoodsUnitService; import cn.lili.modules.goods.service.StoreGoodsLabelService; import cn.lili.modules.store.entity.dos.Store; import cn.lili.modules.store.entity.dto.StoreBankDTO; import cn.lili.modules.store.entity.dto.StoreCompanyDTO; import cn.lili.modules.store.entity.dto.StoreOtherInfoDTO; import cn.lili.modules.store.entity.vos.*; +import cn.lili.modules.store.service.FreightTemplateService; import cn.lili.modules.store.service.StoreDetailService; import cn.lili.modules.store.service.StoreService; +import cn.lili.mybatis.util.PageUtil; +import cn.lili.utils.COSUtil; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; @@ -22,8 +32,10 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import javax.validation.Valid; import javax.validation.constraints.NotNull; import java.util.List; +import java.util.Objects; /** @@ -52,6 +64,17 @@ */ @Autowired private StoreDetailService storeDetailService; + @Autowired + private COSUtil cosUtil; + + @Autowired + private FreightTemplateService freightTemplateService; + + @Autowired + private GoodsUnitService goodsUnitService; + + @Autowired + private GoodsService goodsService; @ApiOperation(value = "鑾峰彇搴楅摵鍒楄〃鍒嗛〉") @GetMapping @@ -77,7 +100,11 @@ @ApiImplicitParam(name = "id", value = "搴楅摵ID", required = true, paramType = "path") @GetMapping(value = "/get/detail/{id}") public ResultMessage<StoreBasicInfoVO> detail(@NotNull @PathVariable String id) { - return ResultUtil.data(storeDetailService.getStoreBasicInfoDTO(id)); + StoreBasicInfoVO storeBasicInfoDTO = storeDetailService.getStoreBasicInfoDTO(id); + if (StringUtils.isNotBlank(storeBasicInfoDTO.getStoreLogo())&&!storeBasicInfoDTO.getStoreLogo().contains("http")) { + storeBasicInfoDTO.setStoreLogo(cosUtil.getPreviewUrl(storeBasicInfoDTO.getStoreLogo())); + } + return ResultUtil.data(storeBasicInfoDTO); } @ApiOperation(value = "閫氳繃id鑾峰彇搴楅摵璇︾粏淇℃伅-钀ヤ笟鎵х収") @@ -122,4 +149,25 @@ public ResultMessage<StoreDetailVO> apply() { return ResultUtil.data(storeDetailService.getStoreDetailVOByMemberId(UserContext.getCurrentUser().getId())); } + + + @ApiOperation(value = "鑾峰彇搴楅摵涓嬬殑鐗╂祦妯℃澘") + @GetMapping(value = "/freightTemplate") + public ResultMessage<List<FreightTemplateVO>> freightTemplate() { + String storeId = Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId(); + return ResultUtil.data(freightTemplateService.getFreightTemplateList(storeId)); + } + + @ApiOperation(value = "鑾峰彇搴楅摵涓嬬殑璁¢噺鍗曚綅") + @GetMapping(value = "/goods/unit") + public ResultMessage<IPage<GoodsUnit>> goodsUnit(PageVO pageVO) { + return ResultUtil.data(goodsUnitService.page(PageUtil.initPage(pageVO))); + } + + @ApiOperation(value = "鏂板鍟嗗搧") + @PostMapping(value = "/goods/create", consumes = "application/json", produces = "application/json") + public ResultMessage<GoodsOperationDTO> save(@Valid @RequestBody GoodsOperationDTO goodsOperationDTO) { + goodsService.addGoods(goodsOperationDTO); + return ResultUtil.success(); + } } diff --git a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java index 555d3d4..78a065f 100644 --- a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java +++ b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java @@ -406,6 +406,8 @@ } goodsIndex.setAuthFlag(goods.getAuthFlag()); goodsIndex.setMarketEnable(goods.getMarketEnable()); + goodsIndex.setPreSaleBeginDate(goods.getPreSaleBeginDate()); + goodsIndex.setPreSaleEndDate(goods.getPreSaleEndDate()); this.settingUpGoodsIndexOtherParam(goodsIndex); return goodsIndex; } diff --git a/consumer/src/main/resources/application.yml b/consumer/src/main/resources/application.yml index 042711c..f7351bd 100644 --- a/consumer/src/main/resources/application.yml +++ b/consumer/src/main/resources/application.yml @@ -38,7 +38,7 @@ redis: host: 127.0.0.1 port: 6379 -# password: lilishop + # password: lilishop lettuce: pool: # 杩炴帴姹犳渶澶ц繛鎺ユ暟锛堜娇鐢ㄨ礋鍊艰〃绀烘病鏈夐檺鍒讹級 榛樿 8 @@ -247,8 +247,8 @@ # account: # username: elastic # password: LiLiShopES -# logstash: -# server: 127.0.0.1:4560 + # logstash: + # server: 127.0.0.1:4560 rocketmq: promotion-topic: lili_promotion_topic promotion-group: lili_promotion_group diff --git a/framework/src/main/java/cn/lili/elasticsearch/BaseElasticsearchService.java b/framework/src/main/java/cn/lili/elasticsearch/BaseElasticsearchService.java index e597687..0b2d077 100644 --- a/framework/src/main/java/cn/lili/elasticsearch/BaseElasticsearchService.java +++ b/framework/src/main/java/cn/lili/elasticsearch/BaseElasticsearchService.java @@ -168,6 +168,14 @@ " \"type\": \"date\",\n" + " \"format\": \"yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis\"\n" + " },\n" + + " \"preSaleEndDate\": {\n" + + " \"type\": \"date\",\n" + + " \"format\": \"yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis\"\n" + + " },\n" + + " \"preSaleBeginDate\": {\n" + + " \"type\": \"date\",\n" + + " \"format\": \"yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis\"\n" + + " },\n" + " \"categoryPath\": {\n" + " \"type\": \"text\",\n" + " \"fielddata\": true,\n" + diff --git a/framework/src/main/java/cn/lili/modules/connect/serviceimpl/ConnectServiceImpl.java b/framework/src/main/java/cn/lili/modules/connect/serviceimpl/ConnectServiceImpl.java index e270ab4..f0c599a 100644 --- a/framework/src/main/java/cn/lili/modules/connect/serviceimpl/ConnectServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/connect/serviceimpl/ConnectServiceImpl.java @@ -259,7 +259,8 @@ user.setUsername(UuidUtils.getUUID()); user.setNickName("寰俊鐢ㄦ埛"); user.setPassword(DEFAULT_PASSWORD); - user.setFace("https://i.loli.net/2020/11/19/LyN6JF7zZRskdIe.png"); + user.setFace(""); + user.setDisabled(Boolean.TRUE); memberService.registerHandler(user); } diff --git a/framework/src/main/java/cn/lili/modules/goods/entity/dos/Goods.java b/framework/src/main/java/cn/lili/modules/goods/entity/dos/Goods.java index d8b663a..f233523 100644 --- a/framework/src/main/java/cn/lili/modules/goods/entity/dos/Goods.java +++ b/framework/src/main/java/cn/lili/modules/goods/entity/dos/Goods.java @@ -17,17 +17,21 @@ import com.baomidou.mybatisplus.annotation.FieldStrategy; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; import com.xkcoding.http.util.StringUtil; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; import javax.validation.constraints.Max; import javax.validation.constraints.Min; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; +import java.math.BigDecimal; +import java.util.Date; import java.util.Map; /** @@ -157,7 +161,17 @@ @ApiModelProperty(value = "鍟嗗搧鍙傛暟json", hidden = true) private String params; + @ApiModelProperty(value = "棰勫敭缁撴潫鏃堕棿") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date preSaleEndDate; + @ApiModelProperty(value = "棰勫敭寮�濮嬫椂闂�") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date preSaleBeginDate; + @ApiModelProperty(value = "鎶芥垚姣斾緥") + private BigDecimal commission; public Goods() { } @@ -175,6 +189,9 @@ this.mobileIntro = goodsOperationDTO.getMobileIntro(); this.goodsVideo = goodsOperationDTO.getGoodsVideo(); this.price = goodsOperationDTO.getPrice(); + this.preSaleEndDate = goodsOperationDTO.getPreSaleEndDate(); + this.preSaleBeginDate = goodsOperationDTO.getPreSaleBeginDate(); + this.commission = goodsOperationDTO.getCommission(); if (goodsOperationDTO.getGoodsParamsDTOList() != null && goodsOperationDTO.getGoodsParamsDTOList().isEmpty()) { this.params = JSONUtil.toJsonStr(goodsOperationDTO.getGoodsParamsDTOList()); } diff --git a/framework/src/main/java/cn/lili/modules/goods/entity/dto/GoodsOperationDTO.java b/framework/src/main/java/cn/lili/modules/goods/entity/dto/GoodsOperationDTO.java index b795f16..d96d861 100644 --- a/framework/src/main/java/cn/lili/modules/goods/entity/dto/GoodsOperationDTO.java +++ b/framework/src/main/java/cn/lili/modules/goods/entity/dto/GoodsOperationDTO.java @@ -3,17 +3,17 @@ import cn.lili.common.validation.EnumValue; import cn.lili.modules.goods.entity.enums.GoodsSalesModeEnum; import cn.lili.modules.goods.entity.enums.GoodsTypeEnum; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.*; import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; import javax.validation.Valid; import javax.validation.constraints.*; import java.io.Serializable; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.math.BigDecimal; +import java.util.*; /** * 鍟嗗搧鎿嶄綔DTO @@ -141,6 +141,22 @@ @ApiModelProperty(value = "娴忚鏉冮檺") private String browsePermissions; + + @ApiModelProperty(value = "棰勫敭缁撴潫鏃堕棿") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date preSaleEndDate; + + @ApiModelProperty(value = "棰勫敭寮�濮嬫椂闂�") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date preSaleBeginDate; + + @ApiModelProperty(value = "鎶芥垚姣斾緥") + @DecimalMax(value = "100",message = "鎶芥垚姣斾緥蹇呴』灏忎簬100") + @DecimalMin(value = "0",message = "鎶芥垚姣斾緥蹇呴』澶т簬0") + private BigDecimal commission; + public String getGoodsName() { //瀵瑰晢鍝佸鍚嶇О鍋氫竴涓瀬闄愬鐞嗐�傝繖閲屾病鏈夌敤xss杩囨护鏄洜涓簒ss杩囨护涓哄叏灞�杩囨护锛屽奖鍝嶅緢澶с�� // 涓氬姟涓紝鍏ㄥ眬浠g爜涓彧鏈夊晢鍝佸悕绉颁笉鑳芥嫢鏈夎嫳鏂囬�楀彿锛屾槸鐢变簬鍟嗗搧鍚嶇О瀛樺湪涓�涓暟鎹簱鑱斿悎鏌ヨ锛岀粨鏋滆鏍规嵁閫楀彿鍒嗙粍 diff --git a/framework/src/main/java/cn/lili/modules/goods/entity/dto/GoodsSkuDTO.java b/framework/src/main/java/cn/lili/modules/goods/entity/dto/GoodsSkuDTO.java index a93db09..2d105d4 100644 --- a/framework/src/main/java/cn/lili/modules/goods/entity/dto/GoodsSkuDTO.java +++ b/framework/src/main/java/cn/lili/modules/goods/entity/dto/GoodsSkuDTO.java @@ -1,11 +1,15 @@ package cn.lili.modules.goods.entity.dto; import cn.lili.modules.goods.entity.dos.GoodsSku; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; /** * @author paulG @@ -22,4 +26,16 @@ @ApiModelProperty(value = "鍟嗗搧鍙傛暟json") private String params; + + @ApiModelProperty(value = "棰勫敭缁撴潫鏃堕棿") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date preSaleEndDate; + + @ApiModelProperty(value = "棰勫敭寮�濮嬫椂闂�") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date preSaleBeginDate; + + } diff --git a/framework/src/main/java/cn/lili/modules/goods/entity/enums/GoodsSalesModeEnum.java b/framework/src/main/java/cn/lili/modules/goods/entity/enums/GoodsSalesModeEnum.java index b6d03aa..21e7a3f 100644 --- a/framework/src/main/java/cn/lili/modules/goods/entity/enums/GoodsSalesModeEnum.java +++ b/framework/src/main/java/cn/lili/modules/goods/entity/enums/GoodsSalesModeEnum.java @@ -9,6 +9,7 @@ public enum GoodsSalesModeEnum { RETAIL("闆跺敭"), + PRESALE("棰勫敭"), WHOLESALE("鎵瑰彂"); private final String description; diff --git a/framework/src/main/java/cn/lili/modules/goods/mapper/GoodsSkuMapper.java b/framework/src/main/java/cn/lili/modules/goods/mapper/GoodsSkuMapper.java index 6b65a74..189fa33 100644 --- a/framework/src/main/java/cn/lili/modules/goods/mapper/GoodsSkuMapper.java +++ b/framework/src/main/java/cn/lili/modules/goods/mapper/GoodsSkuMapper.java @@ -114,7 +114,7 @@ * @param queryWrapper 鏌ヨ鏉′欢 * @return 鍞悗VO鍒嗛〉 */ - @Select("SELECT *,g.params as params FROM li_goods_sku gs inner join li_goods g on gs.goods_id = g.id ${ew.customSqlSegment}") + @Select("SELECT *,g.params as params,g.pre_sale_end_date,g.pre_sale_begin_date FROM li_goods_sku gs inner join li_goods g on gs.goods_id = g.id ${ew.customSqlSegment}") IPage<GoodsSkuDTO> queryByParams(IPage<GoodsSkuDTO> page, @Param(Constants.WRAPPER) Wrapper<GoodsSkuDTO> queryWrapper); @Select("SELECT id as sku_id, quantity, goods_id,simple_specs,sn,goods_name FROM li_goods_sku ${ew.customSqlSegment}") diff --git a/framework/src/main/java/cn/lili/modules/goods/service/GoodsSkuService.java b/framework/src/main/java/cn/lili/modules/goods/service/GoodsSkuService.java index 61b555e..ab11843 100644 --- a/framework/src/main/java/cn/lili/modules/goods/service/GoodsSkuService.java +++ b/framework/src/main/java/cn/lili/modules/goods/service/GoodsSkuService.java @@ -60,7 +60,7 @@ * @param goods 鍟嗗搧淇℃伅 * @param goodsOperationDTO 鍟嗗搧鎿嶄綔淇℃伅 */ - void update(Goods goods, GoodsOperationDTO goodsOperationDTO); + void update(Goods goods, GoodsOperationDTO goodsOperationDTO,Goods previousGoods); /** * 鏇存柊鍟嗗搧sku 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 8465e1b..48a6b24 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 @@ -47,7 +47,6 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.rocketmq.spring.core.RocketMQTemplate; @@ -218,10 +217,11 @@ if (goodsOperationDTO.getGoodsParamsDTOList() != null && !goodsOperationDTO.getGoodsParamsDTOList().isEmpty()) { goods.setParams(JSONUtil.toJsonStr(goodsOperationDTO.getGoodsParamsDTOList())); } + Goods previousGoods = this.getById(goodsId); //淇敼鍟嗗搧 this.updateById(goods); //淇敼鍟嗗搧sku淇℃伅 - this.goodsSkuService.update(goods, goodsOperationDTO); + this.goodsSkuService.update(goods, goodsOperationDTO,previousGoods); //娣诲姞鐩稿唽 if (goodsOperationDTO.getGoodsGalleryList() != null && !goodsOperationDTO.getGoodsGalleryList().isEmpty()) { this.goodsGalleryService.add(goodsOperationDTO.getGoodsGalleryList(), goods.getId()); diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java index e05801a..0d8e1d9 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java @@ -37,7 +37,11 @@ import cn.lili.modules.goods.service.WholesaleService; import cn.lili.modules.goods.sku.GoodsSkuBuilder; import cn.lili.modules.goods.sku.render.SalesModelRender; +import cn.lili.modules.lmk.domain.entity.PriceChange; +import cn.lili.modules.lmk.enums.general.ChangePriceAudioStatusEnum; +import cn.lili.modules.lmk.enums.general.ChangePriceOperationTypeEnum; import cn.lili.modules.lmk.enums.general.ViewTypeEnum; +import cn.lili.modules.lmk.service.PriceChangeService; import cn.lili.modules.member.entity.dos.FootPrint; import cn.lili.modules.promotion.entity.dos.Coupon; import cn.lili.modules.promotion.entity.dos.PromotionGoods; @@ -56,6 +60,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.poi.ss.usermodel.*; @@ -73,8 +78,10 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.InputStream; +import java.math.BigDecimal; import java.net.URLEncoder; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -137,6 +144,9 @@ @Autowired private List<SalesModelRender> salesModelRenders; + @Autowired + private PriceChangeService priceChangeService; + @Override @Transactional(rollbackFor = Exception.class) public void add(Goods goods, GoodsOperationDTO goodsOperationDTO) { @@ -151,12 +161,29 @@ if (!goodsSkus.isEmpty()) { this.saveOrUpdateBatch(goodsSkus); this.updateGoodsStock(goodsSkus); + //璁板綍浠锋牸鍙樺姩 + List<PriceChange> priceChangeList = goodsSkus.stream().map(item -> { + PriceChange priceChange = new PriceChange(); + priceChange.setCurrentPrice(BigDecimal.valueOf(item.getPrice())); + priceChange.setSkuId(item.getId()); + priceChange.setGoodsId(item.getGoodsId()); + priceChange.setPreviousPrice(BigDecimal.ZERO); + priceChange.setPreviousCommission(BigDecimal.ZERO); + priceChange.setCurrentCommission(goods.getCommission()); + priceChange.setOperatorType(ChangePriceOperationTypeEnum.STORE.name()); + priceChange.setExamineStatus(ChangePriceAudioStatusEnum.APPLY.name()); + priceChange.setOperatorId(UserContext.getCurrentUser().getId()); + priceChange.setOperatorName(UserContext.getCurrentUser().getNickName()); + priceChange.setStoreId(item.getStoreId()); + return priceChange; + }).collect(Collectors.toList()); + priceChangeService.saveBatch(priceChangeList); } } @Override @Transactional(rollbackFor = Exception.class) - public void update(Goods goods, GoodsOperationDTO goodsOperationDTO) { + public void update(Goods goods, GoodsOperationDTO goodsOperationDTO,Goods previousGoods) { // 鏄惁瀛樺湪瑙勬牸 if (goodsOperationDTO.getSkuList() == null || goodsOperationDTO.getSkuList().isEmpty()) { throw new ServiceException(ResultCode.MUST_HAVE_GOODS_SKU); @@ -199,9 +226,41 @@ unnecessarySkuIdsQuery.eq(GoodsSku::getGoodsId, goods.getId()); unnecessarySkuIdsQuery.notIn(GoodsSku::getId, skuList.stream().map(BaseEntity::getId).collect(Collectors.toList())); + LambdaQueryWrapper<GoodsSku> skuIdsQuery = new LambdaQueryWrapper<>(); + skuIdsQuery.eq(GoodsSku::getGoodsId, goods.getId()); + skuIdsQuery.in(GoodsSku::getId, + skuList.stream().map(BaseEntity::getId).collect(Collectors.toList())); + Map<String, GoodsSku> skuMap = this.list(skuIdsQuery).stream().collect(Collectors.toMap(GoodsSku::getId, Function.identity())); this.remove(unnecessarySkuIdsQuery); this.saveOrUpdateBatch(skuList); this.updateGoodsStock(skuList); + //璁板綍浠锋牸鍙樺姩 + //鍒犻櫎褰撳墠瀹℃牳鐘舵�佷负鐢宠鐨勬敼浠风殑鍟嗗搧 搴楅摵id涓�鑷村晢鍝乮d涓�鑷翠笖涓虹敵璇风姸鎬佺殑绉婚櫎 + LambdaQueryWrapper<PriceChange> needRemove = Wrappers.<PriceChange>lambdaQuery() + .eq(PriceChange::getGoodsId, goods.getId()) + .eq(PriceChange::getStoreId, goods.getStoreId()) + .eq(PriceChange::getExamineStatus, ChangePriceAudioStatusEnum.APPLY.name()); + priceChangeService.remove(needRemove); + //閲嶆柊娣诲姞鏀逛环鍟嗗搧 + List<PriceChange> priceChangeList = skuList.stream().map(item -> { + PriceChange priceChange = new PriceChange(); + priceChange.setCurrentPrice(BigDecimal.valueOf(item.getPrice())); + GoodsSku goodsSku = skuMap.get(item.getId()); + priceChange.setSkuId(item.getId()); + priceChange.setGoodsId(item.getGoodsId()); + if (Objects.nonNull(goodsSku)) { + priceChange.setPreviousPrice(BigDecimal.valueOf(goodsSku.getPrice())); + } + priceChange.setPreviousCommission(previousGoods.getCommission()); + priceChange.setCurrentCommission(goods.getCommission()); + priceChange.setOperatorType(ChangePriceOperationTypeEnum.STORE.name()); + priceChange.setExamineStatus(ChangePriceAudioStatusEnum.APPLY.name()); + priceChange.setOperatorId(UserContext.getCurrentUser().getId()); + priceChange.setOperatorName(UserContext.getCurrentUser().getNickName()); + priceChange.setStoreId(item.getStoreId()); + return priceChange; + }).collect(Collectors.toList()); + priceChangeService.saveBatch(priceChangeList); } } @@ -389,6 +448,17 @@ updateWrapper.set(GoodsSku::getDeleteFlag, goods.getDeleteFlag()); boolean update = this.update(updateWrapper); if (Boolean.TRUE.equals(update)) { + //淇敼璁㈠崟鏀逛环鐘舵�佷负閫氳繃鎴栬�呭け璐� + LambdaUpdateWrapper<PriceChange> updatePriceChange = Wrappers.<PriceChange>lambdaUpdate() + .eq(PriceChange::getGoodsId, goods.getId()) + .eq(PriceChange::getStoreId, goods.getStoreId()) + .eq(PriceChange::getExamineStatus, ChangePriceAudioStatusEnum.APPLY.name()); + if (GoodsAuthEnum.PASS.name().equals(goods.getAuthFlag())) { + updatePriceChange.set(PriceChange::getExamineStatus, ChangePriceAudioStatusEnum.PASS.name()); + }else { + updatePriceChange.set(PriceChange::getExamineStatus, ChangePriceAudioStatusEnum.REFUSE.name()); + } + priceChangeService.update(updatePriceChange); List<GoodsSku> goodsSkus = this.getGoodsSkuListByGoodsId(goods.getId()); for (GoodsSku sku : goodsSkus) { cache.remove(GoodsSkuService.getCacheKeys(sku.getId())); diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/entity/CommissionRecord.java b/framework/src/main/java/cn/lili/modules/lmk/domain/entity/CommissionRecord.java new file mode 100644 index 0000000..cb457ee --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/lmk/domain/entity/CommissionRecord.java @@ -0,0 +1,92 @@ +package cn.lili.modules.lmk.domain.entity; + +import cn.lili.mybatis.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * 鎶芥垚璁板綍琛� + * + * @author peng + * @since 2025-07-04 + */ +@Data +@TableName("lmk_commission_record") +public class CommissionRecord extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @TableField("store_id") + /** 搴楅摵id */ + private Long storeId; + + @TableField("goods_id") + /** 鍟嗗搧id */ + private Long goodsId; + + @TableField("sku_id") + /** skuId */ + private Long skuId; + + @TableField("goods_name") + /** 鍟嗗搧鍚嶇О */ + private String goodsName; + + @TableField("img_url") + /** 鍟嗗搧鍥剧墖鍦板潃 */ + private String imgUrl; + + @TableField("price") + /** 鍟嗗搧鍗曚环 */ + private BigDecimal price; + + @TableField("num") + /** 鍟嗗搧鏁伴噺 */ + private BigDecimal num; + + @TableField("sum_price") + /** 鍟嗗搧鎬讳环 */ + private BigDecimal sumPrice; + + @TableField("commission") + /** 褰撳墠鎶芥垚姣斾緥 */ + private BigDecimal commission; + + @TableField("commission_price") + /** 骞冲彴鎶芥垚閲戦 */ + private BigDecimal commissionPrice; + + @TableField("remain_money") + /** 鎵i櫎骞冲彴鎶芥垚閲戦 */ + private BigDecimal remainMoney; + + @TableField("settlement_status") + /** 缁撶畻璁㈠崟鐘舵�� */ + private String settlementStatus; + + @TableField("can_settlement_time") + /** 鍙互缁撶畻鏃堕棿 */ + private LocalDateTime canSettlementTime; + + @TableField("trade_sn") + /** 浜ゆ槗鍗曞彿 */ + private String tradeSn; + + @TableField("sn") + /** 瀛愯鍗曞彿 */ + private String sn; + + @TableField("type") + /** 鎶芥垚绫诲瀷锛堥��娆鹃��浣i噾锛� */ + private String type; + + @TableField("delivery_status") + /** 鍚︾‘璁ゆ敹璐� */ + private String deliveryStatus; + + +} diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/entity/CustomerTag.java b/framework/src/main/java/cn/lili/modules/lmk/domain/entity/GoodsTag.java similarity index 72% rename from framework/src/main/java/cn/lili/modules/lmk/domain/entity/CustomerTag.java rename to framework/src/main/java/cn/lili/modules/lmk/domain/entity/GoodsTag.java index 3a5ae77..7ead7dc 100644 --- a/framework/src/main/java/cn/lili/modules/lmk/domain/entity/CustomerTag.java +++ b/framework/src/main/java/cn/lili/modules/lmk/domain/entity/GoodsTag.java @@ -3,21 +3,24 @@ import cn.lili.mybatis.BaseEntity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; -import java.time.LocalDateTime; import lombok.Data; /** - * - * * @author zxl * @since 2025-05-14 */ @Data -@TableName("lmk_customer_tag") -public class CustomerTag extends BaseEntity { +@TableName("lmk_goods_tag") +public class GoodsTag extends BaseEntity { private static final long serialVersionUID = 1L; + @TableField("tag_id") + private String tagId; + + @TableField("goods_id") + private String goodsId; + @TableField("tag_name") /** 鏍囩鍚嶇О*/ private String tagName; diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/entity/CustomerTag.java b/framework/src/main/java/cn/lili/modules/lmk/domain/entity/MemberTag.java similarity index 72% copy from framework/src/main/java/cn/lili/modules/lmk/domain/entity/CustomerTag.java copy to framework/src/main/java/cn/lili/modules/lmk/domain/entity/MemberTag.java index 3a5ae77..45c334a 100644 --- a/framework/src/main/java/cn/lili/modules/lmk/domain/entity/CustomerTag.java +++ b/framework/src/main/java/cn/lili/modules/lmk/domain/entity/MemberTag.java @@ -3,21 +3,24 @@ import cn.lili.mybatis.BaseEntity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; -import java.time.LocalDateTime; import lombok.Data; /** - * - * * @author zxl * @since 2025-05-14 */ @Data -@TableName("lmk_customer_tag") -public class CustomerTag extends BaseEntity { +@TableName("lmk_member_tag") +public class MemberTag extends BaseEntity { private static final long serialVersionUID = 1L; + @TableField("tag_id") + private String tagId; + + @TableField("member_id") + private String memberId; + @TableField("tag_name") /** 鏍囩鍚嶇О*/ private String tagName; diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/entity/PriceChange.java b/framework/src/main/java/cn/lili/modules/lmk/domain/entity/PriceChange.java new file mode 100644 index 0000000..dc33c80 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/lmk/domain/entity/PriceChange.java @@ -0,0 +1,72 @@ +package cn.lili.modules.lmk.domain.entity; + +import cn.lili.modules.lmk.enums.general.ChangePriceAudioStatusEnum; +import cn.lili.mybatis.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * 浠锋牸鍙樺姩琛� + * + * @author peng + * @since 2025-07-03 + */ +@Data +@TableName("lmk_price_change") +public class PriceChange extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @TableField("store_id") + /** 搴楅摵id */ + private String storeId; + + @TableField("goods_id") + /** 鍟嗗搧id */ + private String goodsId; + + @TableField("sku_id") + /** 鏈�灏忛攢鍞崟鍏僫d */ + private String skuId; + + @TableField("previous_price") + /** 鍘熶环 */ + private BigDecimal previousPrice; + + @TableField("current_price") + /** 鐜颁环 */ + private BigDecimal currentPrice; + + @TableField("previous_commission") + /** 鍘熸娊鎴愭瘮渚� */ + private BigDecimal previousCommission; + + @TableField("current_commission") + /** 鐜板湪鎶芥垚姣斾緥 */ + private BigDecimal currentCommission; + + @TableField("operator_name") + /** 鎿嶄綔浜哄憳濮撳悕 */ + private String operatorName; + + @TableField("operator_id") + /** 鎿嶄綔浜哄憳id */ + private String operatorId; + + @TableField("examine_status") + /** + * 瀹℃牳鐘舵�� + * + * @see ChangePriceAudioStatusEnum + * */ + private String examineStatus; + + @TableField("operator_type") + /** 鎿嶄綔浜哄憳绫诲瀷 */ + private String operatorType; + + +} diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/form/CommissionRecordForm.java b/framework/src/main/java/cn/lili/modules/lmk/domain/form/CommissionRecordForm.java new file mode 100644 index 0000000..2ce8bbb --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/lmk/domain/form/CommissionRecordForm.java @@ -0,0 +1,104 @@ +package cn.lili.modules.lmk.domain.form; + +import cn.lili.base.AbsForm; +import cn.lili.group.Add; +import cn.lili.group.Update; +import cn.lili.modules.lmk.domain.entity.CommissionRecord; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.beans.BeanUtils; +import org.springframework.lang.NonNull; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 鎶芥垚璁板綍琛ㄨ〃鍗� + * + * @author peng + * @since 2025-07-04 + */ +@Data +@ApiModel(value = "CommissionRecord琛ㄥ崟", description = "鎶芥垚璁板綍琛ㄨ〃鍗�") +public class CommissionRecordForm extends AbsForm { + + @NotNull(message = "搴楅摵id涓嶈兘涓虹┖", groups = {Add.class, Update.class}) + @ApiModelProperty("搴楅摵id") + private Long storeId; + + @NotNull(message = "鍟嗗搧id涓嶈兘涓虹┖", groups = {Add.class, Update.class}) + @ApiModelProperty("鍟嗗搧id") + private Long goodsId; + + @NotNull(message = "skuId涓嶈兘涓虹┖", groups = {Add.class, Update.class}) + @ApiModelProperty("skuId") + private Long skuId; + + @NotBlank(message = "鍟嗗搧鍚嶇О涓嶈兘涓虹┖", groups = {Add.class, Update.class}) + @ApiModelProperty("鍟嗗搧鍚嶇О") + private String goodsName; + + @NotBlank(message = "鍟嗗搧鍥剧墖鍦板潃涓嶈兘涓虹┖", groups = {Add.class, Update.class}) + @ApiModelProperty("鍟嗗搧鍥剧墖鍦板潃") + private String imgUrl; + + @NotNull(message = "鍟嗗搧鍗曚环涓嶈兘涓虹┖", groups = {Add.class, Update.class}) + @ApiModelProperty("鍟嗗搧鍗曚环") + private BigDecimal price; + + @NotNull(message = "鍟嗗搧鏁伴噺涓嶈兘涓虹┖", groups = {Add.class, Update.class}) + @ApiModelProperty("鍟嗗搧鏁伴噺") + private BigDecimal num; + + @NotNull(message = "鍟嗗搧鎬讳环涓嶈兘涓虹┖", groups = {Add.class, Update.class}) + @ApiModelProperty("鍟嗗搧鎬讳环") + private BigDecimal sumPrice; + + @NotNull(message = "褰撳墠鎶芥垚姣斾緥涓嶈兘涓虹┖", groups = {Add.class, Update.class}) + @ApiModelProperty("褰撳墠鎶芥垚姣斾緥") + private BigDecimal commission; + + @NotNull(message = "骞冲彴鎶芥垚閲戦涓嶈兘涓虹┖", groups = {Add.class, Update.class}) + @ApiModelProperty("骞冲彴鎶芥垚閲戦") + private BigDecimal commissionPrice; + + @NotNull(message = "鎵i櫎骞冲彴鎶芥垚閲戦涓嶈兘涓虹┖", groups = {Add.class, Update.class}) + @ApiModelProperty("鎵i櫎骞冲彴鎶芥垚閲戦") + private BigDecimal remainMoney; + + @NotBlank(message = "缁撶畻璁㈠崟鐘舵�佷笉鑳戒负绌�", groups = {Add.class, Update.class}) + @ApiModelProperty("缁撶畻璁㈠崟鐘舵��") + private String settlementStatus; + + @NotNull(message = "鍙互缁撶畻鏃堕棿涓嶈兘涓虹┖", groups = {Add.class, Update.class}) + @ApiModelProperty("鍙互缁撶畻鏃堕棿") + private Date canSettlementTime; + + @NotBlank(message = "浜ゆ槗鍗曞彿涓嶈兘涓虹┖", groups = {Add.class, Update.class}) + @ApiModelProperty("浜ゆ槗鍗曞彿") + private String tradeSn; + + @NotBlank(message = "瀛愯鍗曞彿涓嶈兘涓虹┖", groups = {Add.class, Update.class}) + @ApiModelProperty("瀛愯鍗曞彿") + private String sn; + + @NotBlank(message = "鎶芥垚绫诲瀷锛堥��娆鹃��浣i噾锛変笉鑳戒负绌�", groups = {Add.class, Update.class}) + @ApiModelProperty("鎶芥垚绫诲瀷锛堥��娆鹃��浣i噾锛�") + private String type; + + @NotBlank(message = "鍚︾‘璁ゆ敹璐т笉鑳戒负绌�", groups = {Add.class, Update.class}) + @ApiModelProperty("鍚︾‘璁ゆ敹璐�") + private String deliveryStatus; + + public static CommissionRecord getEntityByForm(@NonNull CommissionRecordForm form, CommissionRecord entity) { + if(entity == null) { + entity = new CommissionRecord(); + } + BeanUtils.copyProperties(form, entity); + return entity; + } + +} diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/form/CustomerTagForm.java b/framework/src/main/java/cn/lili/modules/lmk/domain/form/CustomerTagForm.java deleted file mode 100644 index 9117724..0000000 --- a/framework/src/main/java/cn/lili/modules/lmk/domain/form/CustomerTagForm.java +++ /dev/null @@ -1,50 +0,0 @@ -package cn.lili.modules.lmk.domain.form; - -import cn.lili.base.AbsForm; -import cn.lili.group.Add; -import cn.lili.group.Update; -import cn.lili.modules.lmk.domain.entity.CustomerTag; -import cn.lili.mybatis.BaseEntity; -import org.springframework.beans.BeanUtils; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; -import org.springframework.lang.NonNull; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import java.util.Date; - -/** - * 琛ㄥ崟 - * - * @author zxl - * @since 2025-05-14 - */ -@Data -@ApiModel(value = "CustomerTag琛ㄥ崟", description = "琛ㄥ崟") -public class CustomerTagForm extends AbsForm { - - @NotBlank(message = "涓嶈兘涓虹┖", groups = {Add.class, Update.class}) - @ApiModelProperty("鏍囩鍚�") - private String tagName; - - @NotBlank(message = "涓嶈兘涓虹┖", groups = {Add.class, Update.class}) - @ApiModelProperty("") - private String createType; - - - /** - * 瀹㈡埛id - * */ - @ApiModelProperty("瀹㈡埛id") - private String customerId; - - public static CustomerTag getEntityByForm(@NonNull CustomerTagForm form, CustomerTag entity) { - if(entity == null) { - entity = new CustomerTag(); - } - BeanUtils.copyProperties(form, entity); - return entity; - } - -} diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/form/FileInfoForm.java b/framework/src/main/java/cn/lili/modules/lmk/domain/form/FileInfoForm.java index eebf1e0..20890a2 100644 --- a/framework/src/main/java/cn/lili/modules/lmk/domain/form/FileInfoForm.java +++ b/framework/src/main/java/cn/lili/modules/lmk/domain/form/FileInfoForm.java @@ -28,4 +28,8 @@ @ApiModelProperty("鏂囦欢鍘熷鍚�") private String originalFileName; + private String url; + + private String cover; + } diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/form/GoodsTagForm.java b/framework/src/main/java/cn/lili/modules/lmk/domain/form/GoodsTagForm.java new file mode 100644 index 0000000..2dda2bd --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/lmk/domain/form/GoodsTagForm.java @@ -0,0 +1,51 @@ +package cn.lili.modules.lmk.domain.form; + +import cn.lili.base.AbsForm; +import cn.lili.group.Add; +import cn.lili.group.Update; +import cn.lili.modules.lmk.domain.entity.GoodsTag; +import cn.lili.modules.lmk.domain.entity.MemberTag; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.beans.BeanUtils; +import org.springframework.lang.NonNull; + +import javax.validation.constraints.NotBlank; +import java.util.List; + +/** + * 琛ㄥ崟 + * + * @author zxl + * @since 2025-05-14 + */ +@Data +@ApiModel(value = "GoodsTag琛ㄥ崟", description = "琛ㄥ崟") +public class GoodsTagForm extends AbsForm { + + @NotBlank(message = "涓嶈兘涓虹┖", groups = {Add.class, Update.class}) + @ApiModelProperty("鏍囩Id") + private List<String> tagIds; + + + @NotBlank(message = "涓嶈兘涓虹┖", groups = {Add.class, Update.class}) + @ApiModelProperty("") + private String createType; + + + /** + * 瀹㈡埛id + */ + @ApiModelProperty("鍟嗗搧id") + private String goodsId; + + public static GoodsTag getEntityByForm(@NonNull GoodsTagForm form, GoodsTag entity) { + if (entity == null) { + entity = new GoodsTag(); + } + BeanUtils.copyProperties(form, entity); + return entity; + } + +} diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/form/MemberTagForm.java b/framework/src/main/java/cn/lili/modules/lmk/domain/form/MemberTagForm.java new file mode 100644 index 0000000..da6ff44 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/lmk/domain/form/MemberTagForm.java @@ -0,0 +1,52 @@ +package cn.lili.modules.lmk.domain.form; + +import cn.lili.base.AbsForm; +import cn.lili.group.Add; +import cn.lili.group.Update; +import cn.lili.modules.lmk.domain.entity.MemberTag; +import org.springframework.beans.BeanUtils; + +import javax.validation.constraints.NotBlank; + +import org.springframework.lang.NonNull; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * 琛ㄥ崟 + * + * @author zxl + * @since 2025-05-14 + */ +@Data +@ApiModel(value = "MemberTag琛ㄥ崟", description = "琛ㄥ崟") +public class MemberTagForm extends AbsForm { + + @NotBlank(message = "涓嶈兘涓虹┖", groups = {Add.class, Update.class}) + @ApiModelProperty("鏍囩Id") + private List<String> tagIds; + + + @NotBlank(message = "涓嶈兘涓虹┖", groups = {Add.class, Update.class}) + @ApiModelProperty("") + private String createType; + + + /** + * 瀹㈡埛id + */ + @ApiModelProperty("瀹㈡埛id") + private String memberId; + + public static MemberTag getEntityByForm(@NonNull MemberTagForm form, MemberTag entity) { + if (entity == null) { + entity = new MemberTag(); + } + BeanUtils.copyProperties(form, entity); + return entity; + } + +} diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/form/PriceChangeForm.java b/framework/src/main/java/cn/lili/modules/lmk/domain/form/PriceChangeForm.java new file mode 100644 index 0000000..4ebb3b2 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/lmk/domain/form/PriceChangeForm.java @@ -0,0 +1,79 @@ +package cn.lili.modules.lmk.domain.form; + +import cn.lili.base.AbsForm; +import cn.lili.group.Add; +import cn.lili.group.Update; +import cn.lili.modules.lmk.domain.entity.PriceChange; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.beans.BeanUtils; +import org.springframework.lang.NonNull; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; + +/** + * 浠锋牸鍙樺姩琛ㄨ〃鍗� + * + * @author peng + * @since 2025-07-03 + */ +@Data +@ApiModel(value = "PriceChange琛ㄥ崟", description = "浠锋牸鍙樺姩琛ㄨ〃鍗�") +public class PriceChangeForm extends AbsForm { + + @NotNull(message = "搴楅摵id涓嶈兘涓虹┖", groups = {Add.class, Update.class}) + @ApiModelProperty("搴楅摵id") + private Long storeId; + + @NotNull(message = "鍟嗗搧id涓嶈兘涓虹┖", groups = {Add.class, Update.class}) + @ApiModelProperty("鍟嗗搧id") + private Long goodsId; + + @NotNull(message = "鏈�灏忛攢鍞崟鍏僫d涓嶈兘涓虹┖", groups = {Add.class, Update.class}) + @ApiModelProperty("鏈�灏忛攢鍞崟鍏僫d") + private Long skuId; + + @NotNull(message = "鍘熶环涓嶈兘涓虹┖", groups = {Add.class, Update.class}) + @ApiModelProperty("鍘熶环") + private BigDecimal previousPrice; + + @NotNull(message = "鐜颁环涓嶈兘涓虹┖", groups = {Add.class, Update.class}) + @ApiModelProperty("鐜颁环") + private BigDecimal currentPrice; + + @NotNull(message = "鍘熸娊鎴愭瘮渚嬩笉鑳戒负绌�", groups = {Add.class, Update.class}) + @ApiModelProperty("鍘熸娊鎴愭瘮渚�") + private BigDecimal previousCommission; + + @NotNull(message = "鐜板湪鎶芥垚姣斾緥涓嶈兘涓虹┖", groups = {Add.class, Update.class}) + @ApiModelProperty("鐜板湪鎶芥垚姣斾緥") + private BigDecimal currentCommission; + + @NotBlank(message = "鎿嶄綔浜哄憳濮撳悕涓嶈兘涓虹┖", groups = {Add.class, Update.class}) + @ApiModelProperty("鎿嶄綔浜哄憳濮撳悕") + private String operatorName; + + @NotNull(message = "鎿嶄綔浜哄憳id涓嶈兘涓虹┖", groups = {Add.class, Update.class}) + @ApiModelProperty("鎿嶄綔浜哄憳id") + private Long operatorId; + + @NotBlank(message = "瀹℃牳鐘舵�佷笉鑳戒负绌�", groups = {Add.class, Update.class}) + @ApiModelProperty("瀹℃牳鐘舵��") + private String examineStatus; + + @NotBlank(message = "鎿嶄綔浜哄憳绫诲瀷涓嶈兘涓虹┖", groups = {Add.class, Update.class}) + @ApiModelProperty("鎿嶄綔浜哄憳绫诲瀷") + private String operatorType; + + public static PriceChange getEntityByForm(@NonNull PriceChangeForm form, PriceChange entity) { + if(entity == null) { + entity = new PriceChange(); + } + BeanUtils.copyProperties(form, entity); + return entity; + } + +} diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/query/CommissionRecordQuery.java b/framework/src/main/java/cn/lili/modules/lmk/domain/query/CommissionRecordQuery.java new file mode 100644 index 0000000..3ddb581 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/lmk/domain/query/CommissionRecordQuery.java @@ -0,0 +1,17 @@ +package cn.lili.modules.lmk.domain.query; + +import cn.lili.base.AbsQuery; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +/** + * 鎶芥垚璁板綍琛ㄦ煡璇� + * + * @author peng + * @since 2025-07-04 + */ +@Data +@ApiModel(value = "CommissionRecord鏌ヨ鍙傛暟", description = "鎶芥垚璁板綍琛ㄦ煡璇㈠弬鏁�") +public class CommissionRecordQuery extends AbsQuery { +} + diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/query/GoodsSimilarlyQuery.java b/framework/src/main/java/cn/lili/modules/lmk/domain/query/GoodsSimilarlyQuery.java new file mode 100644 index 0000000..fa27d6e --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/lmk/domain/query/GoodsSimilarlyQuery.java @@ -0,0 +1,27 @@ +package cn.lili.modules.lmk.domain.query; + +import cn.lili.base.AbsQuery; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @author锛歺p + * @date锛�2025/7/2 10:08 + */ +@Data +@ApiModel("鐩稿悓鍟嗗搧瑙嗛") +public class GoodsSimilarlyQuery extends AbsQuery { + + // TODO 鏌ヨ鎸備簡鍚屼竴鍟嗗搧鐨勮棰戜笉搴旇鍖哄垎鏄帹鑽愯棰戣繕鏄ぇ鍋ュ悍锛岃瀛楁鍙槸鍏堝啓鍦ㄨ繖锛屾殏鏃朵笉鐢� + @ApiModelProperty("瑙嗛绫诲瀷") + private String videoType; + + @ApiModelProperty("鍟嗗搧id锛岃繖閲岀敤鍟嗗搧id鑰屼笉鏄痵kuId") + private List<String> goodsIds; + + @ApiModelProperty("褰撳墠鐨勮棰慽d锛屾煡璇㈡椂鐩存帴鎺掗櫎璇ヨ棰�") + private String currentVideoId; +} diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/query/PriceChangeQuery.java b/framework/src/main/java/cn/lili/modules/lmk/domain/query/PriceChangeQuery.java new file mode 100644 index 0000000..6616853 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/lmk/domain/query/PriceChangeQuery.java @@ -0,0 +1,17 @@ +package cn.lili.modules.lmk.domain.query; + +import cn.lili.base.AbsQuery; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +/** + * 浠锋牸鍙樺姩琛ㄦ煡璇� + * + * @author peng + * @since 2025-07-03 + */ +@Data +@ApiModel(value = "PriceChange鏌ヨ鍙傛暟", description = "浠锋牸鍙樺姩琛ㄦ煡璇㈠弬鏁�") +public class PriceChangeQuery extends AbsQuery { +} + diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/query/TagQuery.java b/framework/src/main/java/cn/lili/modules/lmk/domain/query/TagQuery.java index 605e894..f2e7006 100644 --- a/framework/src/main/java/cn/lili/modules/lmk/domain/query/TagQuery.java +++ b/framework/src/main/java/cn/lili/modules/lmk/domain/query/TagQuery.java @@ -26,6 +26,8 @@ @ApiModelProperty("鏍囩鍒嗙被") private String tagTypeId; + @ApiModelProperty("鏍囩绫诲埆key") + private String tagTypeKey; } diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/query/VideoHistoryQuery.java b/framework/src/main/java/cn/lili/modules/lmk/domain/query/VideoHistoryQuery.java new file mode 100644 index 0000000..bd940c4 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/lmk/domain/query/VideoHistoryQuery.java @@ -0,0 +1,18 @@ +package cn.lili.modules.lmk.domain.query; + +import cn.lili.base.AbsQuery; +import lombok.Data; + +/** + * 瑙嗛鏍囩鏌ヨ + * + * @author xp + * @since 2025-05-13 + */ +@Data +public class VideoHistoryQuery extends AbsQuery { + + private String userId; + +} + diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/query/VideoQuery.java b/framework/src/main/java/cn/lili/modules/lmk/domain/query/VideoQuery.java index 3aa3b2a..23800fd 100644 --- a/framework/src/main/java/cn/lili/modules/lmk/domain/query/VideoQuery.java +++ b/framework/src/main/java/cn/lili/modules/lmk/domain/query/VideoQuery.java @@ -21,11 +21,16 @@ @ApiModel(value = "Video鏌ヨ鍙傛暟", description = "瑙嗛鍐呭鏌ヨ鍙傛暟") public class VideoQuery extends AbsQuery { + /* ----------------------------- author鏌愪綔鑰呯殑瑙嗛銆乧ollect鏌愪綔鑰呮敹钘忕殑瑙嗛銆乴ike鏌愪綔鑰呯偣璧炵殑瑙嗛 ------------------------------- */ @ApiModelProperty("浣滆�卛d") private String authorId; - @ApiModelProperty("瑙嗛鏉ユ簮锛歳ecommend鎺ㄨ崘銆乤uthor鏌愪綔鑰呯殑瑙嗛銆乧ollect鏌愪綔鑰呮敹钘忕殑瑙嗛銆乴ike鏌愪綔鑰呯偣璧炵殑瑙嗛") + @ApiModelProperty("瑙嗛鏉ユ簮锛歳ecommend鎺ㄨ崘銆乤uthor鏌愪綔鑰呯殑瑙嗛銆乧ollect鏌愪綔鑰呮敹钘忕殑瑙嗛銆乴ike鏌愪綔鑰呯偣璧炵殑瑙嗛銆乻earch鎼滅储銆乬oodsSimilarly鏌ユ寕鍚屼竴鍟嗗搧鐨勮棰�") private String videoFrom; + + + + /** * @see cn.lili.modules.lmk.enums.general.VideoTypeEnum @@ -33,7 +38,21 @@ @ApiModelProperty("瑙嗛绫诲瀷锛氳棰戙�佸ぇ鍋ュ悍銆佺鍘紝榛樿涓嶄紶鏌ヨ棰�") private String videoType = VideoTypeEnum.VIDEO.getValue(); + + + + + + + /* ----------------------------- search鎼滅储 ------------------------------- */ @ApiModelProperty("鎼滅储瑙嗛鐨勫叧閿瘝") private String keyword; + + /* ----------------------------- goodsSimilarly鏌ユ寕鍚屼竴鍟嗗搧鐨勮棰� ------------------------------- */ + @ApiModelProperty("鍟嗗搧id锛岃繖閲岀敤鍟嗗搧id鑰屼笉鏄痵kuId") + private List<String> goodsIds; + + @ApiModelProperty("褰撳墠鐨勮棰慽d锛屾煡璇㈡椂鐩存帴鎺掗櫎璇ヨ棰�") + private String currentVideoId; } diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/CommissionRecordVO.java b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/CommissionRecordVO.java new file mode 100644 index 0000000..149f1c5 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/CommissionRecordVO.java @@ -0,0 +1,100 @@ +package cn.lili.modules.lmk.domain.vo; + +import cn.lili.base.AbsVo; +import cn.lili.modules.lmk.domain.entity.CommissionRecord; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.beans.BeanUtils; +import org.springframework.lang.NonNull; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 鎶芥垚璁板綍琛ㄥ睍绀� + * + * @author peng + * @since 2025-07-04 + */ +@Data +@ApiModel(value = "鎶芥垚璁板綍琛ㄥ搷搴旀暟鎹�", description = "鎶芥垚璁板綍琛ㄥ搷搴旀暟鎹�") +public class CommissionRecordVO extends AbsVo { + + /** 搴楅摵id */ + @ApiModelProperty("搴楅摵id") + private Long storeId; + + /** 鍟嗗搧id */ + @ApiModelProperty("鍟嗗搧id") + private Long goodsId; + + /** skuId */ + @ApiModelProperty("skuId") + private Long skuId; + + /** 鍟嗗搧鍚嶇О */ + @ApiModelProperty("鍟嗗搧鍚嶇О") + private String goodsName; + + /** 鍟嗗搧鍥剧墖鍦板潃 */ + @ApiModelProperty("鍟嗗搧鍥剧墖鍦板潃") + private String imgUrl; + + /** 鍟嗗搧鍗曚环 */ + @ApiModelProperty("鍟嗗搧鍗曚环") + private BigDecimal price; + + /** 鍟嗗搧鏁伴噺 */ + @ApiModelProperty("鍟嗗搧鏁伴噺") + private BigDecimal num; + + /** 鍟嗗搧鎬讳环 */ + @ApiModelProperty("鍟嗗搧鎬讳环") + private BigDecimal sumPrice; + + /** 褰撳墠鎶芥垚姣斾緥 */ + @ApiModelProperty("褰撳墠鎶芥垚姣斾緥") + private BigDecimal commission; + + /** 骞冲彴鎶芥垚閲戦 */ + @ApiModelProperty("骞冲彴鎶芥垚閲戦") + private BigDecimal commissionPrice; + + /** 鎵i櫎骞冲彴鎶芥垚閲戦 */ + @ApiModelProperty("鎵i櫎骞冲彴鎶芥垚閲戦") + private BigDecimal remainMoney; + + /** 缁撶畻璁㈠崟鐘舵�� */ + @ApiModelProperty("缁撶畻璁㈠崟鐘舵��") + private String settlementStatus; + + /** 鍙互缁撶畻鏃堕棿 */ + @ApiModelProperty("鍙互缁撶畻鏃堕棿") + private Date canSettlementTime; + + /** 浜ゆ槗鍗曞彿 */ + @ApiModelProperty("浜ゆ槗鍗曞彿") + private String tradeSn; + + /** 瀛愯鍗曞彿 */ + @ApiModelProperty("瀛愯鍗曞彿") + private String sn; + + /** 鎶芥垚绫诲瀷锛堥��娆鹃��浣i噾锛� */ + @ApiModelProperty("鎶芥垚绫诲瀷锛堥��娆鹃��浣i噾锛�") + private String type; + + /** 鍚︾‘璁ゆ敹璐� */ + @ApiModelProperty("鍚︾‘璁ゆ敹璐�") + private String deliveryStatus; + + public static CommissionRecordVO getVoByEntity(@NonNull CommissionRecord entity, CommissionRecordVO vo) { + if(vo == null) { + vo = new CommissionRecordVO(); + } + BeanUtils.copyProperties(entity, vo); + return vo; + } + +} diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/CustomerTagVO.java b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/GoodsTagVO.java similarity index 60% copy from framework/src/main/java/cn/lili/modules/lmk/domain/vo/CustomerTagVO.java copy to framework/src/main/java/cn/lili/modules/lmk/domain/vo/GoodsTagVO.java index e0a9236..336360e 100644 --- a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/CustomerTagVO.java +++ b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/GoodsTagVO.java @@ -1,16 +1,12 @@ package cn.lili.modules.lmk.domain.vo; import cn.lili.base.AbsVo; - -import java.util.List; - -import cn.lili.modules.lmk.domain.entity.CustomerTag; -import org.springframework.lang.NonNull; -import org.springframework.beans.BeanUtils; +import cn.lili.modules.lmk.domain.entity.MemberTag; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.util.Date; +import org.springframework.beans.BeanUtils; +import org.springframework.lang.NonNull; /** * 灞曠ず @@ -20,21 +16,30 @@ */ @Data @ApiModel(value = "鍝嶅簲鏁版嵁", description = "鍝嶅簲鏁版嵁") -public class CustomerTagVO extends AbsVo { +public class GoodsTagVO extends AbsVo { - /** */ + @ApiModelProperty("鏍囩Id") + private String tagId; + + @ApiModelProperty("瀹㈡埛id") + private String goodsId; + + /** + * + */ @ApiModelProperty("鏍囩鍚嶇О") private String tagName; - /** */ + /** + * + */ @ApiModelProperty("鍒涘缓鏂瑰紡") private String createType; - - public static CustomerTagVO getVoByEntity(@NonNull CustomerTag entity, CustomerTagVO vo) { - if(vo == null) { - vo = new CustomerTagVO(); + public static GoodsTagVO getVoByEntity(@NonNull MemberTag entity, GoodsTagVO vo) { + if (vo == null) { + vo = new GoodsTagVO(); } BeanUtils.copyProperties(entity, vo); return vo; diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/CustomerTagVO.java b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/MemberTagVO.java similarity index 60% rename from framework/src/main/java/cn/lili/modules/lmk/domain/vo/CustomerTagVO.java rename to framework/src/main/java/cn/lili/modules/lmk/domain/vo/MemberTagVO.java index e0a9236..3595151 100644 --- a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/CustomerTagVO.java +++ b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/MemberTagVO.java @@ -2,15 +2,12 @@ import cn.lili.base.AbsVo; -import java.util.List; - -import cn.lili.modules.lmk.domain.entity.CustomerTag; +import cn.lili.modules.lmk.domain.entity.MemberTag; import org.springframework.lang.NonNull; import org.springframework.beans.BeanUtils; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.util.Date; /** * 灞曠ず @@ -20,21 +17,30 @@ */ @Data @ApiModel(value = "鍝嶅簲鏁版嵁", description = "鍝嶅簲鏁版嵁") -public class CustomerTagVO extends AbsVo { +public class MemberTagVO extends AbsVo { - /** */ + @ApiModelProperty("鏍囩Id") + private String tagId; + + @ApiModelProperty("瀹㈡埛id") + private String memberId; + + /** + * + */ @ApiModelProperty("鏍囩鍚嶇О") private String tagName; - /** */ + /** + * + */ @ApiModelProperty("鍒涘缓鏂瑰紡") private String createType; - - public static CustomerTagVO getVoByEntity(@NonNull CustomerTag entity, CustomerTagVO vo) { - if(vo == null) { - vo = new CustomerTagVO(); + public static MemberTagVO getVoByEntity(@NonNull MemberTag entity, MemberTagVO vo) { + if (vo == null) { + vo = new MemberTagVO(); } BeanUtils.copyProperties(entity, vo); return vo; diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/PriceChangeVO.java b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/PriceChangeVO.java new file mode 100644 index 0000000..25836bc --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/PriceChangeVO.java @@ -0,0 +1,75 @@ +package cn.lili.modules.lmk.domain.vo; + +import cn.lili.base.AbsVo; +import cn.lili.modules.lmk.domain.entity.PriceChange; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.beans.BeanUtils; +import org.springframework.lang.NonNull; + +import java.math.BigDecimal; + +/** + * 浠锋牸鍙樺姩琛ㄥ睍绀� + * + * @author peng + * @since 2025-07-03 + */ +@Data +@ApiModel(value = "浠锋牸鍙樺姩琛ㄥ搷搴旀暟鎹�", description = "浠锋牸鍙樺姩琛ㄥ搷搴旀暟鎹�") +public class PriceChangeVO extends AbsVo { + + /** 搴楅摵id */ + @ApiModelProperty("搴楅摵id") + private Long storeId; + + /** 鍟嗗搧id */ + @ApiModelProperty("鍟嗗搧id") + private Long goodsId; + + /** 鏈�灏忛攢鍞崟鍏僫d */ + @ApiModelProperty("鏈�灏忛攢鍞崟鍏僫d") + private Long skuId; + + /** 鍘熶环 */ + @ApiModelProperty("鍘熶环") + private BigDecimal previousPrice; + + /** 鐜颁环 */ + @ApiModelProperty("鐜颁环") + private BigDecimal currentPrice; + + /** 鍘熸娊鎴愭瘮渚� */ + @ApiModelProperty("鍘熸娊鎴愭瘮渚�") + private BigDecimal previousCommission; + + /** 鐜板湪鎶芥垚姣斾緥 */ + @ApiModelProperty("鐜板湪鎶芥垚姣斾緥") + private BigDecimal currentCommission; + + /** 鎿嶄綔浜哄憳濮撳悕 */ + @ApiModelProperty("鎿嶄綔浜哄憳濮撳悕") + private String operatorName; + + /** 鎿嶄綔浜哄憳id */ + @ApiModelProperty("鎿嶄綔浜哄憳id") + private Long operatorId; + + /** 瀹℃牳鐘舵�� */ + @ApiModelProperty("瀹℃牳鐘舵��") + private String examineStatus; + + /** 鎿嶄綔浜哄憳绫诲瀷 */ + @ApiModelProperty("鎿嶄綔浜哄憳绫诲瀷") + private String operatorType; + + public static PriceChangeVO getVoByEntity(@NonNull PriceChange entity, PriceChangeVO vo) { + if(vo == null) { + vo = new PriceChangeVO(); + } + BeanUtils.copyProperties(entity, vo); + return vo; + } + +} diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/VideoHistoryVO.java b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/VideoHistoryVO.java new file mode 100644 index 0000000..00f0c02 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/VideoHistoryVO.java @@ -0,0 +1,26 @@ +package cn.lili.modules.lmk.domain.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @author锛歺p + * @date锛�2025/7/4 17:43 + */ +@Data +@ApiModel("瑙嗛鎾斁璁板綍") +public class VideoHistoryVO extends WxVideoVO { + + @ApiModelProperty("鍘嗗彶璁板綍id") + private String historyId; + + @ApiModelProperty("鎾斁鑷�") + private String playAt; + + @ApiModelProperty("瑙傜湅鏃ユ湡") + private Date playTime; + +} diff --git a/framework/src/main/java/cn/lili/modules/lmk/enums/general/ChangePriceAudioStatusEnum.java b/framework/src/main/java/cn/lili/modules/lmk/enums/general/ChangePriceAudioStatusEnum.java new file mode 100644 index 0000000..120c2ab --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/lmk/enums/general/ChangePriceAudioStatusEnum.java @@ -0,0 +1,29 @@ +package cn.lili.modules.lmk.enums.general; + +/** + * 鍟嗗搧浠锋牸鏀瑰姩璁板綍琛ㄥ鏍哥姸鎬� + * + * @author peng + * @since 2025-07-03 15:00 + */ +public enum ChangePriceAudioStatusEnum { + + /** + * 鍟嗗搧浠锋牸鏀瑰姩璁板綍琛ㄥ鏍哥姸鎬� + */ + APPLY("鐢宠涓�"), + PASS("宸查�氳繃"), + REFUSE("宸叉嫆缁�"); + + private final String description; + + ChangePriceAudioStatusEnum(String description) { + this.description = description; + } + + public String description() { + return description; + } + + +} diff --git a/framework/src/main/java/cn/lili/modules/lmk/enums/general/ChangePriceOperationTypeEnum.java b/framework/src/main/java/cn/lili/modules/lmk/enums/general/ChangePriceOperationTypeEnum.java new file mode 100644 index 0000000..5a83d4c --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/lmk/enums/general/ChangePriceOperationTypeEnum.java @@ -0,0 +1,28 @@ +package cn.lili.modules.lmk.enums.general; + +/** + * 鍟嗗搧浠锋牸鏀瑰姩璁板綍琛ㄦ搷浣滀汉鍛樼被鍨� + * + * @author peng + * @since 2025-07-03 15:00 + */ +public enum ChangePriceOperationTypeEnum { + + /** + * 鍟嗗搧浠锋牸鏀瑰姩璁板綍琛ㄦ搷浣滀汉鍛樼被鍨� + */ + PLATFORM("骞冲彴"), + STORE("鍟嗗"); + + private final String description; + + ChangePriceOperationTypeEnum(String description) { + this.description = description; + } + + public String description() { + return description; + } + + +} diff --git a/framework/src/main/java/cn/lili/modules/lmk/mapper/CommissionRecordMapper.java b/framework/src/main/java/cn/lili/modules/lmk/mapper/CommissionRecordMapper.java new file mode 100644 index 0000000..13d7f37 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/lmk/mapper/CommissionRecordMapper.java @@ -0,0 +1,32 @@ +package cn.lili.modules.lmk.mapper; + +import cn.lili.modules.lmk.domain.entity.CommissionRecord; +import cn.lili.modules.lmk.domain.query.CommissionRecordQuery; +import cn.lili.modules.lmk.domain.vo.CommissionRecordVO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * 鎶芥垚璁板綍琛� Mapper 鎺ュ彛 + * + * @author peng + * @since 2025-07-04 + */ +@Mapper +public interface CommissionRecordMapper extends BaseMapper<CommissionRecord> { + + /** + * id鏌ユ壘鎶芥垚璁板綍琛� + * @param id + * @return + */ + CommissionRecordVO getById(String id); + + /** + * 鍒嗛〉 + */ + IPage getPage(IPage page, @Param("query") CommissionRecordQuery query); + +} diff --git a/framework/src/main/java/cn/lili/modules/lmk/mapper/CustomerTagMapper.java b/framework/src/main/java/cn/lili/modules/lmk/mapper/CustomerTagMapper.java deleted file mode 100644 index 908b2f6..0000000 --- a/framework/src/main/java/cn/lili/modules/lmk/mapper/CustomerTagMapper.java +++ /dev/null @@ -1,34 +0,0 @@ -package cn.lili.modules.lmk.mapper; - -import java.util.List; - -import cn.lili.modules.lmk.domain.entity.CustomerTag; -import cn.lili.modules.lmk.domain.query.CustomerTagQuery; -import cn.lili.modules.lmk.domain.vo.CustomerTagVO; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -/** - * Mapper 鎺ュ彛 - * - * @author zxl - * @since 2025-05-14 - */ -@Mapper -public interface CustomerTagMapper extends BaseMapper<CustomerTag> { - - /** - * id鏌ユ壘 - * @param id - * @return - */ - CustomerTagVO getById(Integer id); - - /** - * 鍒嗛〉 - */ - IPage getPage(IPage page, @Param("query") CustomerTagQuery query); - -} diff --git a/framework/src/main/java/cn/lili/modules/lmk/mapper/GoodsTagMapper.java b/framework/src/main/java/cn/lili/modules/lmk/mapper/GoodsTagMapper.java new file mode 100644 index 0000000..1525508 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/lmk/mapper/GoodsTagMapper.java @@ -0,0 +1,16 @@ +package cn.lili.modules.lmk.mapper; + +import cn.lili.modules.lmk.domain.entity.GoodsTag; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * Mapper 鎺ュ彛 + * + * @author zxl + * @since 2025-05-14 + */ +@Mapper +public interface GoodsTagMapper extends BaseMapper<GoodsTag> { + +} diff --git a/framework/src/main/java/cn/lili/modules/lmk/mapper/MemberTagMapper.java b/framework/src/main/java/cn/lili/modules/lmk/mapper/MemberTagMapper.java new file mode 100644 index 0000000..bc602b5 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/lmk/mapper/MemberTagMapper.java @@ -0,0 +1,16 @@ +package cn.lili.modules.lmk.mapper; + +import cn.lili.modules.lmk.domain.entity.MemberTag; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * Mapper 鎺ュ彛 + * + * @author zxl + * @since 2025-05-14 + */ +@Mapper +public interface MemberTagMapper extends BaseMapper<MemberTag> { + +} diff --git a/framework/src/main/java/cn/lili/modules/lmk/mapper/PriceChangeMapper.java b/framework/src/main/java/cn/lili/modules/lmk/mapper/PriceChangeMapper.java new file mode 100644 index 0000000..6a9d6d1 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/lmk/mapper/PriceChangeMapper.java @@ -0,0 +1,32 @@ +package cn.lili.modules.lmk.mapper; + +import cn.lili.modules.lmk.domain.entity.PriceChange; +import cn.lili.modules.lmk.domain.query.PriceChangeQuery; +import cn.lili.modules.lmk.domain.vo.PriceChangeVO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * 浠锋牸鍙樺姩琛� Mapper 鎺ュ彛 + * + * @author peng + * @since 2025-07-03 + */ +@Mapper +public interface PriceChangeMapper extends BaseMapper<PriceChange> { + + /** + * id鏌ユ壘浠锋牸鍙樺姩琛� + * @param id + * @return + */ + PriceChangeVO getById(String id); + + /** + * 鍒嗛〉 + */ + IPage getPage(IPage page, @Param("query") PriceChangeQuery query); + +} diff --git a/framework/src/main/java/cn/lili/modules/lmk/mapper/VideoMapper.java b/framework/src/main/java/cn/lili/modules/lmk/mapper/VideoMapper.java index b852d1d..e3d5481 100644 --- a/framework/src/main/java/cn/lili/modules/lmk/mapper/VideoMapper.java +++ b/framework/src/main/java/cn/lili/modules/lmk/mapper/VideoMapper.java @@ -41,7 +41,7 @@ IPage managerPage(IPage page, @Param("query") ManagerVideoQuery query); /** - * 鏌ュ嚭5涓帹鑽愯棰� + * 鏌ユ帹鑽愯棰� * * @return */ @@ -172,4 +172,21 @@ * @return */ List<VideoIndex> getEsPage(@Param("start") int start, @Param("pageSize") int pageSize); + + /** + * 鏌ヨ鎸備簡鍚屼竴鍟嗗搧鐨勮棰� + * + * @param page + * @param goodsSimilarlyQuery + */ + IPage goodsSimilarlyPage(IPage page, @Param("query") GoodsSimilarlyQuery goodsSimilarlyQuery); + + /** + * 鑾峰彇鎾斁璁板綍 + * + * @param page + * @param query + * @return + */ + IPage getHistoryPage(IPage page, @Param("query") VideoHistoryQuery query); } diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/CommissionRecordService.java b/framework/src/main/java/cn/lili/modules/lmk/service/CommissionRecordService.java new file mode 100644 index 0000000..c9bca07 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/lmk/service/CommissionRecordService.java @@ -0,0 +1,65 @@ +package cn.lili.modules.lmk.service; + +import cn.lili.modules.lmk.domain.entity.CommissionRecord; +import com.baomidou.mybatisplus.extension.service.IService; +import cn.lili.base.Result; +import cn.lili.modules.lmk.domain.form.CommissionRecordForm; +import cn.lili.modules.lmk.domain.query.CommissionRecordQuery; +import java.util.List; + +/** + * 鎶芥垚璁板綍琛� 鏈嶅姟绫� + * + * @author peng + * @since 2025-07-04 + */ +public interface CommissionRecordService extends IService<CommissionRecord> { + + /** + * 娣诲姞 + * @param form + * @return + */ + Result add(CommissionRecordForm form); + + /** + * 淇敼 + * @param form + * @return + */ + Result update(CommissionRecordForm form); + + /** + * 鎵归噺鍒犻櫎 + * @param ids + * @return + */ + Result remove(List<String> ids); + + /** + * id鍒犻櫎 + * @param id + * @return + */ + Result removeById(String id); + + /** + * 鍒嗛〉鏌ヨ + * @param query + * @return + */ + Result page(CommissionRecordQuery query); + + /** + * 鏍规嵁id鏌ユ壘 + * @param id + * @return + */ + Result detail(String id); + + /** + * 鍒楄〃 + * @return + */ + Result all(); +} diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/GoodsTagService.java b/framework/src/main/java/cn/lili/modules/lmk/service/GoodsTagService.java new file mode 100644 index 0000000..e3afa30 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/lmk/service/GoodsTagService.java @@ -0,0 +1,51 @@ +package cn.lili.modules.lmk.service; + +import cn.lili.base.Result; +import cn.lili.modules.lmk.domain.entity.GoodsTag; +import cn.lili.modules.lmk.domain.form.GoodsTagForm; +import cn.lili.modules.lmk.domain.query.CustomerTagQuery; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + * 鏈嶅姟绫� + * + * @author zxl + * @since 2025-05-14 + */ +public interface GoodsTagService extends IService<GoodsTag> { + + /** + * 娣诲姞 + * + * @param form + * @return + */ + Result addGoodsTag(GoodsTagForm form); + + + /** + * 鎵归噺鍒犻櫎 + * + * @param ids + * @return + */ + Result remove(List<String> ids); + + /** + * id鍒犻櫎 + * + * @param id + * @return + */ + Result removeById(String id); + + + /** + * 鍒楄〃 + * + * @return + */ + Result getByGoodsId(String goodsId); +} diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/CustomerTagService.java b/framework/src/main/java/cn/lili/modules/lmk/service/MemberTagService.java similarity index 64% rename from framework/src/main/java/cn/lili/modules/lmk/service/CustomerTagService.java rename to framework/src/main/java/cn/lili/modules/lmk/service/MemberTagService.java index e17f760..19c2da5 100644 --- a/framework/src/main/java/cn/lili/modules/lmk/service/CustomerTagService.java +++ b/framework/src/main/java/cn/lili/modules/lmk/service/MemberTagService.java @@ -1,37 +1,40 @@ package cn.lili.modules.lmk.service; import cn.lili.base.Result; -import cn.lili.modules.lmk.domain.entity.CustomerTag; -import cn.lili.modules.lmk.domain.form.CustomerTagForm; +import cn.lili.modules.lmk.domain.entity.MemberTag; +import cn.lili.modules.lmk.domain.form.MemberTagForm; import cn.lili.modules.lmk.domain.query.CustomerTagQuery; import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; /** - * 鏈嶅姟绫� + * 鏈嶅姟绫� * * @author zxl * @since 2025-05-14 */ -public interface CustomerTagService extends IService<CustomerTag> { +public interface MemberTagService extends IService<MemberTag> { /** * 娣诲姞 + * * @param form * @return */ - Result add(CustomerTagForm form); + Result add(MemberTagForm form); /** * 淇敼 + * * @param form * @return */ - Result update(CustomerTagForm form); + Result update(MemberTagForm form); /** * 鎵归噺鍒犻櫎 + * * @param ids * @return */ @@ -39,6 +42,7 @@ /** * id鍒犻櫎 + * * @param id * @return */ @@ -46,23 +50,22 @@ /** * 鍒嗛〉鏌ヨ + * * @param query * @return */ Result page(CustomerTagQuery query); - /** - * 鏍规嵁id鏌ユ壘 - * @param id - * @return - */ - Result detail(Integer id); /** * 鍒楄〃 + * * @return */ Result all(); - Result addCustomerTag(CustomerTagForm form); + Result addMemberTag(MemberTagForm form); + + Result getByMemberId(String memberId); + } diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/PriceChangeService.java b/framework/src/main/java/cn/lili/modules/lmk/service/PriceChangeService.java new file mode 100644 index 0000000..22c0962 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/lmk/service/PriceChangeService.java @@ -0,0 +1,65 @@ +package cn.lili.modules.lmk.service; + +import cn.lili.modules.lmk.domain.entity.PriceChange; +import com.baomidou.mybatisplus.extension.service.IService; +import cn.lili.base.Result; +import cn.lili.modules.lmk.domain.form.PriceChangeForm; +import cn.lili.modules.lmk.domain.query.PriceChangeQuery; +import java.util.List; + +/** + * 浠锋牸鍙樺姩琛� 鏈嶅姟绫� + * + * @author peng + * @since 2025-07-03 + */ +public interface PriceChangeService extends IService<PriceChange> { + + /** + * 娣诲姞 + * @param form + * @return + */ + Result add(PriceChangeForm form); + + /** + * 淇敼 + * @param form + * @return + */ + Result update(PriceChangeForm form); + + /** + * 鎵归噺鍒犻櫎 + * @param ids + * @return + */ + Result remove(List<String> ids); + + /** + * id鍒犻櫎 + * @param id + * @return + */ + Result removeById(String id); + + /** + * 鍒嗛〉鏌ヨ + * @param query + * @return + */ + Result page(PriceChangeQuery query); + + /** + * 鏍规嵁id鏌ユ壘 + * @param id + * @return + */ + Result detail(String id); + + /** + * 鍒楄〃 + * @return + */ + Result all(); +} diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/VideoService.java b/framework/src/main/java/cn/lili/modules/lmk/service/VideoService.java index 2592ed4..95b6784 100644 --- a/framework/src/main/java/cn/lili/modules/lmk/service/VideoService.java +++ b/framework/src/main/java/cn/lili/modules/lmk/service/VideoService.java @@ -297,4 +297,12 @@ * @return */ Result esSearch(VideoEsQuery query); + + /** + * 鑾峰彇鎾斁璁板綍 + * + * @param query + * @return + */ + Result getHistoryPage(VideoHistoryQuery query); } diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/impl/CommissionRecordServiceImpl.java b/framework/src/main/java/cn/lili/modules/lmk/service/impl/CommissionRecordServiceImpl.java new file mode 100644 index 0000000..ceefc10 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/lmk/service/impl/CommissionRecordServiceImpl.java @@ -0,0 +1,119 @@ +package cn.lili.modules.lmk.service.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import cn.lili.modules.lmk.domain.entity.CommissionRecord; +import cn.lili.modules.lmk.mapper.CommissionRecordMapper; +import cn.lili.modules.lmk.service.CommissionRecordService; +import cn.lili.base.Result; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import cn.lili.modules.lmk.domain.form.CommissionRecordForm; +import cn.lili.modules.lmk.domain.vo.CommissionRecordVO; +import cn.lili.modules.lmk.domain.query.CommissionRecordQuery; +import org.springframework.stereotype.Service; +import lombok.RequiredArgsConstructor; +import cn.lili.utils.PageUtil; +import org.springframework.beans.BeanUtils; +import org.springframework.util.Assert; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * 鎶芥垚璁板綍琛� 鏈嶅姟瀹炵幇绫� + * + * @author peng + * @since 2025-07-04 + */ +@Service +@RequiredArgsConstructor +public class CommissionRecordServiceImpl extends ServiceImpl<CommissionRecordMapper, CommissionRecord> implements CommissionRecordService { + + private final CommissionRecordMapper commissionRecordMapper; + + /** + * 娣诲姞 + * @param form + * @return + */ + @Override + public Result add(CommissionRecordForm form) { + CommissionRecord entity = CommissionRecordForm.getEntityByForm(form, null); + baseMapper.insert(entity); + return Result.ok("娣诲姞鎴愬姛"); + } + + /** + * 淇敼 + * @param form + * @return + */ + @Override + public Result update(CommissionRecordForm form) { + CommissionRecord entity = baseMapper.selectById(form.getId()); + + // 涓虹┖鎶汭llegalArgumentException锛屽仛鍏ㄥ眬寮傚父澶勭悊 + Assert.notNull(entity, "璁板綍涓嶅瓨鍦�"); + BeanUtils.copyProperties(form, entity); + baseMapper.updateById(entity); + return Result.ok("淇敼鎴愬姛"); + } + + /** + * 鎵归噺鍒犻櫎 + * @param ids + * @return + */ + @Override + public Result remove(List<String> ids) { + baseMapper.deleteBatchIds(ids); + return Result.ok("鍒犻櫎鎴愬姛"); + } + + /** + * id鍒犻櫎 + * @param id + * @return + */ + @Override + public Result removeById(String id) { + baseMapper.deleteById(id); + return Result.ok("鍒犻櫎鎴愬姛"); + } + + /** + * 鍒嗛〉鏌ヨ + * @param query + * @return + */ + @Override + public Result page(CommissionRecordQuery query) { + IPage<CommissionRecordVO> page = PageUtil.getPage(query, CommissionRecordVO.class); + baseMapper.getPage(page, query); + return Result.ok().data(page.getRecords()).total(page.getTotal()); + } + + /** + * 鏍规嵁id鏌ユ壘 + * @param id + * @return + */ + @Override + public Result detail(String id) { + CommissionRecordVO vo = baseMapper.getById(id); + Assert.notNull(vo, "璁板綍涓嶅瓨鍦�"); + return Result.ok().data(vo); + } + + /** + * 鍒楄〃 + * @return + */ + @Override + public Result all() { + List<CommissionRecord> entities = baseMapper.selectList(null); + List<CommissionRecordVO> vos = entities.stream() + .map(entity -> CommissionRecordVO.getVoByEntity(entity, null)) + .collect(Collectors.toList()); + return Result.ok().data(vos); + } +} diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/impl/CustomerTagServiceImpl.java b/framework/src/main/java/cn/lili/modules/lmk/service/impl/CustomerTagServiceImpl.java deleted file mode 100644 index 59d7a94..0000000 --- a/framework/src/main/java/cn/lili/modules/lmk/service/impl/CustomerTagServiceImpl.java +++ /dev/null @@ -1,144 +0,0 @@ -package cn.lili.modules.lmk.service.impl; - -import cn.lili.base.Result; -import cn.lili.modules.lmk.domain.entity.CustomerTag; -import cn.lili.modules.lmk.domain.entity.CustomerTagRef; -import cn.lili.modules.lmk.domain.form.CustomerTagForm; -import cn.lili.modules.lmk.domain.query.CustomerTagQuery; -import cn.lili.modules.lmk.domain.vo.CustomerTagVO; -import cn.lili.modules.lmk.mapper.CustomerTagMapper; -import cn.lili.modules.lmk.mapper.CustomerTagRefMapper; -import cn.lili.modules.lmk.service.CustomerTagService; -import cn.lili.utils.PageUtil; -import com.baomidou.mybatisplus.core.metadata.IPage; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; -import lombok.RequiredArgsConstructor; -import org.springframework.beans.BeanUtils; -import org.springframework.util.Assert; - -import java.util.List; -import java.util.stream.Collectors; - -/** - * 鏈嶅姟瀹炵幇绫� - * - * @author zxl - * @since 2025-05-14 - */ -@Service -@RequiredArgsConstructor -public class CustomerTagServiceImpl extends ServiceImpl<CustomerTagMapper, CustomerTag> implements CustomerTagService { - - private final CustomerTagMapper customerTagMapper; - - private final CustomerTagRefMapper customerTagRefMapper; - /** - * 娣诲姞 - * @param form - * @return - */ - @Override - public Result add(CustomerTagForm form) { - CustomerTag entity = CustomerTagForm.getEntityByForm(form, null); - baseMapper.insert(entity); - return Result.ok("娣诲姞鎴愬姛"); - } - - /** - * 淇敼 - * @param form - * @return - */ - @Override - public Result update(CustomerTagForm form) { - CustomerTag entity = baseMapper.selectById(form.getId()); - - // 涓虹┖鎶汭llegalArgumentException锛屽仛鍏ㄥ眬寮傚父澶勭悊 - Assert.notNull(entity, "璁板綍涓嶅瓨鍦�"); - BeanUtils.copyProperties(form, entity); - baseMapper.updateById(entity); - return Result.ok("淇敼鎴愬姛"); - } - - /** - * 鎵归噺鍒犻櫎 - * @param ids - * @return - */ - @Override - public Result remove(List<String> ids) { - baseMapper.deleteBatchIds(ids); - return Result.ok("鍒犻櫎鎴愬姛"); - } - - /** - * id鍒犻櫎 - * @param id - * @return - */ - @Override - public Result removeById(String id) { - baseMapper.deleteById(id); - return Result.ok("鍒犻櫎鎴愬姛"); - } - - /** - * 鍒嗛〉鏌ヨ - * @param query - * @return - */ - @Override - public Result page(CustomerTagQuery query) { - IPage<CustomerTagVO> page = PageUtil.getPage(query, CustomerTagVO.class); - baseMapper.getPage(page, query); - return Result.ok().data(page.getRecords()).total(page.getTotal()); - } - - /** - * 鏍规嵁id鏌ユ壘 - * @param id - * @return - */ - @Override - public Result detail(Integer id) { - CustomerTagVO vo = baseMapper.getById(id); - Assert.notNull(vo, "璁板綍涓嶅瓨鍦�"); - return Result.ok().data(vo); - } - - /** - * 鍒楄〃 - * @return - */ - @Override - public Result all() { - List<CustomerTag> entities = baseMapper.selectList(null); - List<CustomerTagVO> vos = entities.stream() - .map(entity -> CustomerTagVO.getVoByEntity(entity, null)) - .collect(Collectors.toList()); - return Result.ok().data(vos); - } - - @Override - public Result addCustomerTag(CustomerTagForm form) { - //鎻掑叆瀹㈡埛鏍囩 - CustomerTag entity = CustomerTagForm.getEntityByForm(form, null); - baseMapper.insert(entity); - - //鎻掑叆瀹㈡埛鏍囩涓棿琛� - CustomerTagRef ref = new CustomerTagRef(); - ref.setCustomerTagId(entity.getId()); - ref.setCustomerId(form.getCustomerId()); - customerTagRefMapper.insert(ref); - return Result.ok("娣诲姞鎴愬姛"); - } - - - - public Result delCustomerTag(String id) { - - return null; - } -} diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/impl/GoodsTagServiceImpl.java b/framework/src/main/java/cn/lili/modules/lmk/service/impl/GoodsTagServiceImpl.java new file mode 100644 index 0000000..e70fb07 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/lmk/service/impl/GoodsTagServiceImpl.java @@ -0,0 +1,92 @@ +package cn.lili.modules.lmk.service.impl; + +import cn.lili.base.Result; +import cn.lili.modules.lmk.domain.entity.GoodsTag; +import cn.lili.modules.lmk.domain.entity.Tag; +import cn.lili.modules.lmk.domain.form.GoodsTagForm; +import cn.lili.modules.lmk.domain.query.CustomerTagQuery; +import cn.lili.modules.lmk.domain.vo.MemberTagVO; +import cn.lili.modules.lmk.mapper.GoodsTagMapper; +import cn.lili.modules.lmk.service.GoodsTagService; +import cn.lili.modules.lmk.service.TagService; +import cn.lili.utils.PageUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.util.Assert; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * 鏈嶅姟瀹炵幇绫� + * + * @author zxl + * @since 2025-05-14 + */ +@Service +@RequiredArgsConstructor +public class GoodsTagServiceImpl extends ServiceImpl<GoodsTagMapper, GoodsTag> implements GoodsTagService { + + private final TagService tagService; + + + /** + * 鎵归噺鍒犻櫎 + * + * @param ids + * @return + */ + @Override + public Result remove(List<String> ids) { + baseMapper.deleteBatchIds(ids); + return Result.ok("鍒犻櫎鎴愬姛"); + } + + /** + * id鍒犻櫎 + * + * @param id + * @return + */ + @Override + public Result removeById(String id) { + baseMapper.deleteById(id); + return Result.ok("鍒犻櫎鎴愬姛"); + } + + @Override + public Result getByGoodsId(String goodsId) { + LambdaQueryWrapper<GoodsTag> queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(GoodsTag::getGoodsId, goodsId); + return Result.ok().data(baseMapper.selectList(queryWrapper)); + } + + + @Override + public Result addGoodsTag(GoodsTagForm form) { + LambdaQueryWrapper<Tag> query = new LambdaQueryWrapper<>(); + query.in(Tag::getId, form.getTagIds()); + List<Tag> tags = tagService.list(query); + List<GoodsTag> GoodsTags = tags.stream().map(tag -> { + GoodsTag GoodsTag = new GoodsTag(); + GoodsTag.setTagId(tag.getId()); + GoodsTag.setGoodsId(form.getGoodsId()); + GoodsTag.setTagName(tag.getTagName()); + GoodsTag.setCreateType(form.getCreateType()); + return GoodsTag; + }).collect(Collectors.toList()); + + this.saveBatch(GoodsTags); + return Result.ok("娣诲姞鎴愬姛"); + } + + + public Result delCustomerTag(String id) { + + return null; + } +} diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/impl/MemberTagServiceImpl.java b/framework/src/main/java/cn/lili/modules/lmk/service/impl/MemberTagServiceImpl.java new file mode 100644 index 0000000..73a7d1a --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/lmk/service/impl/MemberTagServiceImpl.java @@ -0,0 +1,158 @@ +package cn.lili.modules.lmk.service.impl; + +import cn.lili.base.Result; +import cn.lili.modules.lmk.domain.entity.MemberTag; +import cn.lili.modules.lmk.domain.entity.Tag; +import cn.lili.modules.lmk.domain.form.MemberTagForm; +import cn.lili.modules.lmk.domain.query.CustomerTagQuery; +import cn.lili.modules.lmk.domain.vo.MemberTagVO; +import cn.lili.modules.lmk.mapper.MemberTagMapper; +import cn.lili.modules.lmk.service.MemberTagService; +import cn.lili.modules.lmk.service.TagService; +import cn.lili.utils.PageUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.BeanUtils; +import org.springframework.util.Assert; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * 鏈嶅姟瀹炵幇绫� + * + * @author zxl + * @since 2025-05-14 + */ +@Service +@RequiredArgsConstructor +public class MemberTagServiceImpl extends ServiceImpl<MemberTagMapper, MemberTag> implements MemberTagService { + + private final TagService tagService; + + /** + * 娣诲姞 + * + * @param form + * @return + */ + @Override + public Result add(MemberTagForm form) { + MemberTag entity = MemberTagForm.getEntityByForm(form, null); + baseMapper.insert(entity); + return Result.ok("娣诲姞鎴愬姛"); + } + + /** + * 淇敼 + * + * @param form + * @return + */ + @Override + public Result update(MemberTagForm form) { + MemberTag entity = baseMapper.selectById(form.getId()); + + // 涓虹┖鎶汭llegalArgumentException锛屽仛鍏ㄥ眬寮傚父澶勭悊 + Assert.notNull(entity, "璁板綍涓嶅瓨鍦�"); + BeanUtils.copyProperties(form, entity); + baseMapper.updateById(entity); + return Result.ok("淇敼鎴愬姛"); + } + + /** + * 鎵归噺鍒犻櫎 + * + * @param ids + * @return + */ + @Override + public Result remove(List<String> ids) { + baseMapper.deleteBatchIds(ids); + return Result.ok("鍒犻櫎鎴愬姛"); + } + + /** + * id鍒犻櫎 + * + * @param id + * @return + */ + @Override + public Result removeById(String id) { + baseMapper.deleteById(id); + return Result.ok("鍒犻櫎鎴愬姛"); + } + + /** + * 鍒嗛〉鏌ヨ + * + * @param query + * @return + */ + @Override + public Result page(CustomerTagQuery query) { + IPage<MemberTag> page = PageUtil.getPage(query, MemberTag.class); + + LambdaQueryWrapper<MemberTag> lambdaQueryWrapper = new LambdaQueryWrapper<>(); + + baseMapper.selectPage(page, lambdaQueryWrapper); + return Result.ok().data(page.getRecords()).total(page.getTotal()); + } + + + /** + * 鍒楄〃 + * + * @return + */ + @Override + public Result all() { + List<MemberTag> entities = baseMapper.selectList(null); + List<MemberTagVO> vos = entities.stream() + .map(entity -> MemberTagVO.getVoByEntity(entity, null)) + .collect(Collectors.toList()); + return Result.ok().data(vos); + } + + @Override + public Result addMemberTag(MemberTagForm form) { + + LambdaQueryWrapper<MemberTag> deleteQuery = new LambdaQueryWrapper<>(); + deleteQuery.eq(MemberTag::getMemberId, form.getMemberId()); + baseMapper.delete(deleteQuery); + + LambdaQueryWrapper<Tag> query = new LambdaQueryWrapper<>(); + query.in(Tag::getId, form.getTagIds()); + List<Tag> tags = tagService.list(query); + List<MemberTag> memberTags = tags.stream().map(tag -> { + MemberTag memberTag = new MemberTag(); + memberTag.setTagId(tag.getId()); + memberTag.setMemberId(form.getMemberId()); + memberTag.setTagName(tag.getTagName()); + memberTag.setCreateType(form.getCreateType()); + return memberTag; + }).collect(Collectors.toList()); + + this.saveBatch(memberTags); + return Result.ok("娣诲姞鎴愬姛"); + } + + @Override + public Result getByMemberId(String memberId) { + LambdaQueryWrapper<MemberTag> query = new LambdaQueryWrapper<>(); + query.eq(MemberTag::getMemberId, memberId); + List<MemberTag> memberTags = baseMapper.selectList(query); + return Result.ok().data(memberTags); + } + + + public Result delCustomerTag(String id) { + + return null; + } +} diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/impl/PriceChangeServiceImpl.java b/framework/src/main/java/cn/lili/modules/lmk/service/impl/PriceChangeServiceImpl.java new file mode 100644 index 0000000..981ec78 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/lmk/service/impl/PriceChangeServiceImpl.java @@ -0,0 +1,119 @@ +package cn.lili.modules.lmk.service.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import cn.lili.modules.lmk.domain.entity.PriceChange; +import cn.lili.modules.lmk.mapper.PriceChangeMapper; +import cn.lili.modules.lmk.service.PriceChangeService; +import cn.lili.base.Result; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import cn.lili.modules.lmk.domain.form.PriceChangeForm; +import cn.lili.modules.lmk.domain.vo.PriceChangeVO; +import cn.lili.modules.lmk.domain.query.PriceChangeQuery; +import org.springframework.stereotype.Service; +import lombok.RequiredArgsConstructor; +import cn.lili.utils.PageUtil; +import org.springframework.beans.BeanUtils; +import org.springframework.util.Assert; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * 浠锋牸鍙樺姩琛� 鏈嶅姟瀹炵幇绫� + * + * @author peng + * @since 2025-07-03 + */ +@Service +@RequiredArgsConstructor +public class PriceChangeServiceImpl extends ServiceImpl<PriceChangeMapper, PriceChange> implements PriceChangeService { + + private final PriceChangeMapper priceChangeMapper; + + /** + * 娣诲姞 + * @param form + * @return + */ + @Override + public Result add(PriceChangeForm form) { + PriceChange entity = PriceChangeForm.getEntityByForm(form, null); + baseMapper.insert(entity); + return Result.ok("娣诲姞鎴愬姛"); + } + + /** + * 淇敼 + * @param form + * @return + */ + @Override + public Result update(PriceChangeForm form) { + PriceChange entity = baseMapper.selectById(form.getId()); + + // 涓虹┖鎶汭llegalArgumentException锛屽仛鍏ㄥ眬寮傚父澶勭悊 + Assert.notNull(entity, "璁板綍涓嶅瓨鍦�"); + BeanUtils.copyProperties(form, entity); + baseMapper.updateById(entity); + return Result.ok("淇敼鎴愬姛"); + } + + /** + * 鎵归噺鍒犻櫎 + * @param ids + * @return + */ + @Override + public Result remove(List<String> ids) { + baseMapper.deleteBatchIds(ids); + return Result.ok("鍒犻櫎鎴愬姛"); + } + + /** + * id鍒犻櫎 + * @param id + * @return + */ + @Override + public Result removeById(String id) { + baseMapper.deleteById(id); + return Result.ok("鍒犻櫎鎴愬姛"); + } + + /** + * 鍒嗛〉鏌ヨ + * @param query + * @return + */ + @Override + public Result page(PriceChangeQuery query) { + IPage<PriceChangeVO> page = PageUtil.getPage(query, PriceChangeVO.class); + baseMapper.getPage(page, query); + return Result.ok().data(page.getRecords()).total(page.getTotal()); + } + + /** + * 鏍规嵁id鏌ユ壘 + * @param id + * @return + */ + @Override + public Result detail(String id) { + PriceChangeVO vo = baseMapper.getById(id); + Assert.notNull(vo, "璁板綍涓嶅瓨鍦�"); + return Result.ok().data(vo); + } + + /** + * 鍒楄〃 + * @return + */ + @Override + public Result all() { + List<PriceChange> entities = baseMapper.selectList(null); + List<PriceChangeVO> vos = entities.stream() + .map(entity -> PriceChangeVO.getVoByEntity(entity, null)) + .collect(Collectors.toList()); + return Result.ok().data(vos); + } +} diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoServiceImpl.java b/framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoServiceImpl.java index ad439e9..204b995 100644 --- a/framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoServiceImpl.java @@ -492,11 +492,22 @@ baseMapper.getAuthorLikeVideoPage(page, query3); break; case "search": // 鍔犺浇es鎼滅储瑙嗛 - VideoEsQuery query4 = new VideoEsQuery(); - BeanUtils.copyProperties(query, query4); - query4.setPageNumber((int) query.getPageNumber()); - query4.setPageSize((int) query.getPageSize()); - return this.esSearch(query4); + VideoEsQuery videoEsQuery = new VideoEsQuery(); + BeanUtils.copyProperties(query, videoEsQuery); + videoEsQuery.setPageNumber((int) query.getPageNumber()); + videoEsQuery.setPageSize((int) query.getPageSize()); + return this.esSearch(videoEsQuery); + case "goodsSimilarly": // 鎮寕鐩稿悓鍟嗗搧鐨勬帹鑽愯棰� + GoodsSimilarlyQuery goodsSimilarlyQuery = new GoodsSimilarlyQuery(); + BeanUtils.copyProperties(query, goodsSimilarlyQuery); + baseMapper.goodsSimilarlyPage(page, goodsSimilarlyQuery); + break; + case "history": + VideoHistoryQuery videoHistoryQuery = new VideoHistoryQuery(); + BeanUtils.copyProperties(query, videoHistoryQuery); + videoHistoryQuery.setUserId(UserContext.getCurrentUserId()); + baseMapper.getHistoryPage(page, videoHistoryQuery); + break; default: break; } @@ -520,6 +531,7 @@ v.setCommentNum(this.getCommentNum(v.getId(), v.getCommentNum())); v.setCollectNum(this.getCollectNum(v.getId(), v.getCollectNum())); v.setThumbsUpNum(this.getThumbsUpNum(v.getId(), v.getThumbsUpNum())); + v.setAuthorAvatar(cosUtil.getPreviewUrl(v.getAuthorAvatar())); if (VideoContentTypeEnum.VIDEO.getValue().equals(v.getVideoContentType())) { v.setVideoUrl(cosUtil.getPreviewUrl(v.getVideoFileKey())); v.setCoverUrl(cosUtil.getPreviewUrl(v.getCoverFileKey())); @@ -592,9 +604,10 @@ public Result healthRecommendVideo(WxHealthVideoQuery query) { IPage<WxVideoVO> page = PageUtil.getPage(query, WxVideoVO.class); //鑾峰彇澶у仴搴疯棰戝垪琛� - baseMapper.recommendHealthVideo(page,query); + baseMapper.recommendHealthVideo(page,query); if (page.getTotal() > 0) { page.getRecords().forEach(v -> { + v.setAuthorAvatar(cosUtil.getPreviewUrl(v.getAuthorAvatar())); if (VideoContentTypeEnum.VIDEO.getValue().equals(v.getVideoContentType())) { v.setVideoUrl(cosUtil.getPreviewUrl(v.getVideoFileKey())); v.setCoverUrl(cosUtil.getPreviewUrl(v.getCoverFileKey())); @@ -617,6 +630,7 @@ IPage<WxVideoVO> page = PageUtil.getPage(query, WxVideoVO.class); baseMapper.wxKitchenVideoQuery(page, query); page.getRecords().forEach(v -> { + v.setAuthorAvatar(cosUtil.getPreviewUrl(v.getAuthorAvatar())); if (VideoContentTypeEnum.VIDEO.getValue().equals(v.getVideoContentType())) { v.setVideoUrl(cosUtil.getPreviewUrl(v.getVideoFileKey())); v.setCoverUrl(cosUtil.getPreviewUrl(v.getCoverFileKey())); @@ -667,13 +681,24 @@ @Override public Result saveViewRecord(VideoFootPrintForm form) { - FootPrint footPrint = new FootPrint(); - footPrint.setViewType(ViewTypeEnum.VIDEO.getValue()); - footPrint.setRefId(form.getVideoId()); - footPrint.setMemberId(UserContext.getCurrentUserId()); - footPrint.setViewDuration(form.getViewDuration()); - footPrint.setPlayAt(form.getPlayAt()); - footprintService.saveFootprint(footPrint); + FootPrint one = new LambdaQueryChainWrapper<>(footprintService.getBaseMapper()) + .eq(FootPrint::getRefId, form.getVideoId()) + .eq(FootPrint::getMemberId, UserContext.getCurrentUserId()) + .eq(FootPrint::getViewType, ViewTypeEnum.VIDEO.getValue()) + .one(); + if (Objects.nonNull(one)) { + one.setViewDuration(one.getViewDuration() + form.getViewDuration()); + one.setPlayAt(form.getPlayAt()); + footprintService.updateById(one); + } else { + FootPrint footPrint = new FootPrint(); + footPrint.setViewType(ViewTypeEnum.VIDEO.getValue()); + footPrint.setRefId(form.getVideoId()); + footPrint.setMemberId(UserContext.getCurrentUserId()); + footPrint.setViewDuration(form.getViewDuration()); + footPrint.setPlayAt(form.getPlayAt()); + footprintService.saveFootprint(footPrint); + } return Result.ok(); } @@ -715,6 +740,7 @@ v.setCommentNum(this.getCommentNum(v.getId(), v.getCommentNum())); v.setCollectNum(this.getCollectNum(v.getId(), v.getCollectNum())); v.setThumbsUpNum(this.getThumbsUpNum(v.getId(), v.getThumbsUpNum())); + v.setAuthorAvatar(cosUtil.getPreviewUrl(v.getAuthorAvatar())); if (VideoContentTypeEnum.VIDEO.getValue().equals(v.getVideoContentType())) { v.setVideoUrl(cosUtil.getPreviewUrl(v.getVideoFileKey())); v.setCoverUrl(cosUtil.getPreviewUrl(v.getCoverFileKey())); @@ -753,6 +779,7 @@ v.setCommentNum(this.getCommentNum(v.getId(), v.getCommentNum())); v.setCollectNum(this.getCollectNum(v.getId(), v.getCollectNum())); v.setThumbsUpNum(this.getThumbsUpNum(v.getId(), v.getThumbsUpNum())); + v.setAuthorAvatar(cosUtil.getPreviewUrl(v.getAuthorAvatar())); if (VideoContentTypeEnum.VIDEO.getValue().equals(v.getVideoContentType())) { v.setVideoUrl(cosUtil.getPreviewUrl(v.getVideoFileKey())); v.setCoverUrl(cosUtil.getPreviewUrl(v.getCoverFileKey())); @@ -790,6 +817,7 @@ v.setCommentNum(this.getCommentNum(v.getId(), v.getCommentNum())); v.setCollectNum(this.getCollectNum(v.getId(), v.getCollectNum())); v.setThumbsUpNum(this.getThumbsUpNum(v.getId(), v.getThumbsUpNum())); + v.setAuthorAvatar(cosUtil.getPreviewUrl(v.getAuthorAvatar())); if (VideoContentTypeEnum.VIDEO.getValue().equals(v.getVideoContentType())) { v.setVideoUrl(cosUtil.getPreviewUrl(v.getVideoFileKey())); v.setCoverUrl(cosUtil.getPreviewUrl(v.getCoverFileKey())); @@ -1194,6 +1222,7 @@ // 鍒ゆ柇鏄惁鍏虫敞浣滆�呫�佹槸鍚︾偣璧炪�佹槸鍚︽敹钘� wxVideoVO.setCollected(CollectionUtils.isNotEmpty(collectMap.get(wxVideoVO.getId()))); wxVideoVO.setThumbsUp(CollectionUtils.isNotEmpty(thumbsUpMap.get(wxVideoVO.getId()))); + wxVideoVO.setAuthorAvatar(cosUtil.getPreviewUrl(wxVideoVO.getAuthorAvatar())); if (UserContext.getCurrentUserId().equals(wxVideoVO.getAuthorId())) { wxVideoVO.setSubscribeThisAuthor(Boolean.TRUE); } else { @@ -1210,4 +1239,49 @@ }).collect(Collectors.toList()); return Result.ok().data(vos).total(searchHits.getTotalHits()); } + + @Override + public Result getHistoryPage(VideoHistoryQuery query) { + query.setUserId(UserContext.getCurrentUserId()); + IPage<VideoHistoryVO> page = PageUtil.getPage(query, VideoHistoryVO.class); + baseMapper.getHistoryPage(page, query); + if (CollectionUtils.isNotEmpty(page.getRecords())) { + if (page.getTotal() > 0) { + List<String> videoIds = page.getRecords().stream().map(VideoHistoryVO::getId).collect(Collectors.toList()); + Map<String, List<SimpleVideoTagVO>> tagMap = videoTagRefService.getTagsByVideoIds(videoIds) + .stream() + .collect(Collectors.groupingBy(SimpleVideoTagVO::getVideoId)); + Map<String, List<SimpleMyCollectVO>> collectMap = myCollectService.getCollectsByVideoIds(videoIds) + .stream() + .collect(Collectors.groupingBy(SimpleMyCollectVO::getRefId)); + Map<String, List<SimpleMyThumbsUpVO>> thumbsUpMap = thumbsUpRecordService.getThumbssByVideoIds(videoIds) + .stream() + .collect(Collectors.groupingBy(SimpleMyThumbsUpVO::getRefId)); + List<String> subscribes = mySubscribeService.getSubscribesByUserId(UserContext.getCurrentUserId()); + // 3. 鑾峰彇瑙嗛涓存椂璁块棶鍦板潃銆佽缃棰戞爣绛俱�佹垜鏄惁鏀惰棌銆佹槸鍚︾偣璧炪�佷綔鑰呮槸鍚﹀叧娉� + page.getRecords().forEach(v -> { + v.setTagList(tagMap.get(v.getId())); + v.setCollected(CollectionUtils.isNotEmpty(collectMap.get(v.getId()))); + v.setThumbsUp(CollectionUtils.isNotEmpty(thumbsUpMap.get(v.getId()))); + v.setCommentNum(this.getCommentNum(v.getId(), v.getCommentNum())); + v.setCollectNum(this.getCollectNum(v.getId(), v.getCollectNum())); + v.setThumbsUpNum(this.getThumbsUpNum(v.getId(), v.getThumbsUpNum())); + v.setAuthorAvatar(cosUtil.getPreviewUrl(v.getAuthorAvatar())); + if (VideoContentTypeEnum.VIDEO.getValue().equals(v.getVideoContentType())) { + v.setVideoUrl(cosUtil.getPreviewUrl(v.getVideoFileKey())); + v.setCoverUrl(cosUtil.getPreviewUrl(v.getCoverFileKey())); + } else if (VideoContentTypeEnum.IMG.getValue().equals(v.getVideoContentType()) && StringUtils.isNotBlank(v.getVideoImgs())) { + v.setImgs(JSON.parseArray(v.getVideoImgs(), String.class).stream().map(fileKey -> cosUtil.getPreviewUrl(fileKey)).collect(Collectors.toList())); + } + if (CollectionUtils.isNotEmpty(v.getGoodsList())) { + v.getGoodsList().stream().forEach(goods -> { + goods.setThumbnail(cosUtil.getPreviewUrl(goods.getThumbnail())); + }); + } + v.setSubscribeThisAuthor(subscribes.contains(v.getAuthorId())); + }); + } + } + return Result.ok().data(page.getRecords()).total(page.getTotal()); + } } diff --git a/framework/src/main/java/cn/lili/modules/member/entity/dos/Member.java b/framework/src/main/java/cn/lili/modules/member/entity/dos/Member.java index 83bb664..c66c3e2 100644 --- a/framework/src/main/java/cn/lili/modules/member/entity/dos/Member.java +++ b/framework/src/main/java/cn/lili/modules/member/entity/dos/Member.java @@ -72,7 +72,7 @@ @ApiModelProperty(value = "浼氬憳澶村儚") private String face; - @ApiModelProperty(value = "浼氬憳鐘舵��") + @ApiModelProperty(value = "浼氬憳鐘舵�侊細true 琛ㄧず娌¤绂佺敤锛� false 琚鐢�") private Boolean disabled; @ApiModelProperty(value = "鏄惁寮�閫氬簵閾�") diff --git a/framework/src/main/java/cn/lili/modules/member/entity/dto/ManagerMemberEditDTO.java b/framework/src/main/java/cn/lili/modules/member/entity/dto/ManagerMemberEditDTO.java index 13f9c16..efbcc21 100644 --- a/framework/src/main/java/cn/lili/modules/member/entity/dto/ManagerMemberEditDTO.java +++ b/framework/src/main/java/cn/lili/modules/member/entity/dto/ManagerMemberEditDTO.java @@ -10,6 +10,7 @@ import javax.validation.constraints.Min; import javax.validation.constraints.NotNull; import java.util.Date; +import java.util.List; /** * 浼氬憳淇敼 @@ -54,4 +55,6 @@ @ApiModelProperty(value = "浼氬憳澶村儚") private String face; + + private List<String> tags; } diff --git a/framework/src/main/java/cn/lili/modules/member/entity/vo/MemberVO.java b/framework/src/main/java/cn/lili/modules/member/entity/vo/MemberVO.java index 5aba29d..6fa585e 100644 --- a/framework/src/main/java/cn/lili/modules/member/entity/vo/MemberVO.java +++ b/framework/src/main/java/cn/lili/modules/member/entity/vo/MemberVO.java @@ -4,7 +4,7 @@ import cn.lili.common.security.sensitive.Sensitive; import cn.lili.common.security.sensitive.enums.SensitiveStrategy; import cn.lili.common.utils.BeanUtil; -import cn.lili.modules.lmk.domain.vo.CustomerTagVO; +import cn.lili.modules.lmk.domain.vo.MemberTagVO; import cn.lili.modules.member.entity.dos.Member; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; @@ -98,7 +98,7 @@ private Date createTime; @ApiModelProperty(value = "瀹㈡埛鏍囩鍒楄〃") - private List<CustomerTagVO> customerTagList; + private List<MemberTagVO> tags; /** * 涓簄ull鍒欎笉鍦ㄩ粦鍚嶅崟鍐� diff --git a/framework/src/main/java/cn/lili/modules/member/mapper/MemberMapper.java b/framework/src/main/java/cn/lili/modules/member/mapper/MemberMapper.java index 32f09fa..771aa09 100644 --- a/framework/src/main/java/cn/lili/modules/member/mapper/MemberMapper.java +++ b/framework/src/main/java/cn/lili/modules/member/mapper/MemberMapper.java @@ -29,4 +29,6 @@ @Select("select * from li_member ${ew.customSqlSegment}") IPage<MemberVO> pageByMemberVO(IPage<MemberVO> page, @Param(Constants.WRAPPER) Wrapper<Member> queryWrapper); + + MemberVO getVoById(@Param("id") String id); } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/member/service/FootprintService.java b/framework/src/main/java/cn/lili/modules/member/service/FootprintService.java index 9dc441b..8dcc1f9 100644 --- a/framework/src/main/java/cn/lili/modules/member/service/FootprintService.java +++ b/framework/src/main/java/cn/lili/modules/member/service/FootprintService.java @@ -40,9 +40,10 @@ * 鏍规嵁ID杩涜娓呴櫎浼氬憳鐨勫巻鍙茶冻杩� * * @param ids 鍟嗗搧ID鍒楄〃 + * @param viewType 娴忚绫诲瀷 * @return 澶勭悊缁撴灉 */ - boolean deleteByIds(List<String> ids); + boolean deleteByIds(List<String> ids, String viewType); /** * 鑾峰彇浼氬憳娴忚鍘嗗彶鍒嗛〉 @@ -74,4 +75,4 @@ */ long getFootprintNum(); -} \ No newline at end of file +} diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/FootprintServiceImpl.java b/framework/src/main/java/cn/lili/modules/member/serviceimpl/FootprintServiceImpl.java index e995846..b786b99 100644 --- a/framework/src/main/java/cn/lili/modules/member/serviceimpl/FootprintServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/member/serviceimpl/FootprintServiceImpl.java @@ -65,9 +65,10 @@ } @Override - public boolean deleteByIds(List<String> ids) { + public boolean deleteByIds(List<String> ids, String viewType) { LambdaQueryWrapper<FootPrint> lambdaQueryWrapper = Wrappers.lambdaQuery(); lambdaQueryWrapper.eq(FootPrint::getMemberId, UserContext.getCurrentUser().getId()); + lambdaQueryWrapper.eq(FootPrint::getViewType, viewType); lambdaQueryWrapper.in(FootPrint::getRefId, ids); return this.remove(lambdaQueryWrapper); } @@ -169,6 +170,7 @@ + } diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java index 489d7ea..564de14 100644 --- a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java @@ -24,6 +24,8 @@ import cn.lili.modules.connect.entity.dto.ConnectAuthUser; import cn.lili.modules.connect.service.ConnectService; import cn.lili.modules.lmk.domain.entity.VideoAccount; +import cn.lili.modules.lmk.domain.form.MemberTagForm; +import cn.lili.modules.lmk.service.MemberTagService; import cn.lili.modules.lmk.service.VideoAccountService; import cn.lili.modules.member.aop.annotation.PointLogPoint; import cn.lili.modules.member.entity.dos.Member; @@ -44,6 +46,7 @@ import cn.lili.mybatis.util.PageUtil; import cn.lili.rocketmq.RocketmqSendCallbackBuilder; import cn.lili.rocketmq.tags.MemberTagsEnum; +import cn.lili.utils.COSUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -111,6 +114,12 @@ @Autowired private VideoAccountService videoAccountService; + + @Autowired + private MemberTagService memberTagService; + + @Autowired + private COSUtil cosUtil; @Override public Member findByUsername(String userName) { @@ -250,7 +259,7 @@ authUser.setNickname(CommonUtil.getSpecialStr("鐢ㄦ埛")); } if (CharSequenceUtil.isEmpty(authUser.getAvatar())) { - authUser.setAvatar("https://i.loli.net/2020/11/19/LyN6JF7zZRskdIe.png"); + authUser.setAvatar(""); } try { // String username = UuidUtils.getUUID(); @@ -487,6 +496,7 @@ } @Override + @Transactional public Member updateMember(ManagerMemberEditDTO managerMemberEditDTO) { //杩囨护浼氬憳鏄电О鏁忔劅璇� if (CharSequenceUtil.isNotBlank(managerMemberEditDTO.getNickName())) { @@ -501,6 +511,13 @@ //浼犻�掍慨鏀逛細鍛樹俊鎭� BeanUtil.copyProperties(managerMemberEditDTO, member); this.updateById(member); + if (managerMemberEditDTO.getTags() != null) { + MemberTagForm memberTagForm = new MemberTagForm(); + memberTagForm.setMemberId(member.getId()); + memberTagForm.setTagIds(managerMemberEditDTO.getTags()); + memberTagForm.setCreateType("MANAGER"); + memberTagService.addMemberTag(memberTagForm); + } return member; } @@ -786,7 +803,11 @@ @Override public MemberVO getMember(String id) { - return new MemberVO(this.getById(id)); + MemberVO member = baseMapper.getVoById(id); + if (Objects.nonNull(member)) { + member.setFace(cosUtil.getPreviewUrl(member.getFace())); + } + return member; } @Override diff --git a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CommissionRender.java b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CommissionRender.java index 8d35dba..d2f95b9 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CommissionRender.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CommissionRender.java @@ -1,11 +1,12 @@ package cn.lili.modules.order.cart.render.impl; -import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import cn.lili.common.enums.PromotionTypeEnum; import cn.lili.common.utils.CurrencyUtil; +import cn.lili.modules.goods.entity.dos.Goods; import cn.lili.modules.goods.service.CategoryService; +import cn.lili.modules.goods.service.GoodsService; 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.RenderStepEnums; @@ -38,6 +39,8 @@ @Autowired private CategoryService categoryService; + @Autowired + private GoodsService goodsService; @Override public RenderStepEnums step() { return RenderStepEnums.PLATFORM_COMMISSION; @@ -64,11 +67,17 @@ PriceDetailDTO priceDetailDTO = cartSkuVO.getPriceDetailDTO(); //骞冲彴浣i噾鏍规嵁鍒嗙被璁$畻 - String categoryId = cartSkuVO.getGoodsSku().getCategoryPath() - .substring(cartSkuVO.getGoodsSku().getCategoryPath().lastIndexOf(",") + 1); - if (CharSequenceUtil.isNotEmpty(categoryId)) { - Double commissionRate = categoryService.getCategoryById(categoryId).getCommissionRate(); - priceDetailDTO.setPlatFormCommissionPoint(commissionRate); + //鏍规嵁鍟嗗搧鎶芥垚杩涜璁$畻浣i噾 + String goodsId = cartSkuVO.getGoodsSku().getGoodsId(); + Goods goods = goodsService.getById(goodsId); +// String categoryId = cartSkuVO.getGoodsSku().getCategoryPath() +// .substring(cartSkuVO.getGoodsSku().getCategoryPath().lastIndexOf(",") + 1); +// if (CharSequenceUtil.isNotEmpty(categoryId)) { +// Double commissionRate = categoryService.getCategoryById(categoryId).getCommissionRate(); +// priceDetailDTO.setPlatFormCommissionPoint(commissionRate); +// } + if (goods != null&&goods.getCommission()!=null) { + priceDetailDTO.setPlatFormCommissionPoint(Double.valueOf(goods.getCommission().toString())); } //濡傛灉绉垎璁㈠崟 绉垎璁㈠崟锛屽崟鐙搷浣滆鍗曠粨绠楅噾棰濆拰鍟嗗缁撶畻瀛楁 diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/dos/OrderItem.java b/framework/src/main/java/cn/lili/modules/order/order/entity/dos/OrderItem.java index dd0e187..28e4ffe 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/entity/dos/OrderItem.java +++ b/framework/src/main/java/cn/lili/modules/order/order/entity/dos/OrderItem.java @@ -22,6 +22,7 @@ import lombok.Data; import lombok.NoArgsConstructor; +import java.math.BigDecimal; import java.util.stream.Collectors; /** @@ -129,6 +130,9 @@ @ApiModelProperty(value = "宸插彂璐ф暟閲�") private Integer deliverNumber; + @ApiModelProperty(value = "鎶芥垚姣斾緥") + private BigDecimal commission; + public Integer getDeliverNumber() { if(deliverNumber == null){ return 0; diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/dto/SupplierOrderSearchParams.java b/framework/src/main/java/cn/lili/modules/order/order/entity/dto/SupplierOrderSearchParams.java new file mode 100644 index 0000000..0dca2e2 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/order/order/entity/dto/SupplierOrderSearchParams.java @@ -0,0 +1,227 @@ +package cn.lili.modules.order.order.entity.dto; + +import cn.hutool.core.text.CharSequenceUtil; +import cn.lili.common.security.AuthUser; +import cn.lili.common.security.context.UserContext; +import cn.lili.common.utils.DateUtil; +import cn.lili.common.vo.PageVO; +import cn.lili.modules.order.order.entity.enums.*; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +/** + * 璁㈠崟鏌ヨ鍙傛暟 + * + * @author Chopper + * @since 2020/11/17 4:33 涓嬪崍 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class SupplierOrderSearchParams extends PageVO { + + private static final long serialVersionUID = -6380573339089959194L; + + @ApiModelProperty(value = "鍟嗗搧鍚嶇О") + private String goodsName; + + @ApiModelProperty(value = "璁㈠崟缂栧彿") + private String orderSn; + + @ApiModelProperty(value = "椤甸潰鏍囩", + example = "ALL:鍏ㄩ儴," + + "WAIT_PAY:寰呬粯娆�," + + "WAIT_ROG:寰呮敹璐�," + + "CANCELLED:宸插彇娑�," + + "COMPLETE:宸插畬鎴�") + private String tag; + + @ApiModelProperty(value = "鍟嗗ID") + private String storeId; + + @ApiModelProperty(value = "浼氬憳ID") + private String memberId; + + @ApiModelProperty(value = "鏀惰揣浜�") + private String shipName; + + @ApiModelProperty(value = "涔板鏄电О") + private String buyerName; + + @ApiModelProperty(value = "璁㈠崟鐘舵��") + private String orderStatus; + + @ApiModelProperty(value = "浠樻鐘舵��") + private String payStatus; + + @ApiModelProperty(value = "鍏抽敭瀛� 鍟嗗搧鍚嶇О/涔板鍚嶇О/搴楅摵鍚嶇О") + private String keywords; + + @ApiModelProperty(value = "浠樻鏂瑰紡") + private String paymentType; + + /** + * @see OrderTypeEnum + * @see OrderPromotionTypeEnum + */ + @ApiModelProperty(value = "璁㈠崟绫诲瀷", allowableValues = "NORMAL,VIRTUAL,GIFT,PINTUAN,POINT") + private String orderType; + + @ApiModelProperty(value = "鏀粯鏂瑰紡") + private String paymentMethod; + + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "鏀粯鏃堕棿") + private Date paymentTime; + + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "涓嬪崟寮�濮嬫椂闂�") + private Date startDate; + + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "涓嬪崟缁撴潫鏃堕棿") + private Date endDate; + + @ApiModelProperty(value = "璁㈠崟鏉ユ簮") + private String clientType; + + /** + * @see CommentStatusEnum + */ + @ApiModelProperty(value = "璇勮鐘舵��:鏈瘎璁�(UNFINISHED),寰呰拷璇�(WAIT_CHASE),璇勮瀹屾垚(FINISHED)锛�") + private String commentStatus; + + @ApiModelProperty(value = "鏄惁涓哄叾浠栬鍗曚笅鐨勮鍗曪紝濡傛灉鏄垯涓轰緷璧栬鍗曠殑sn锛屽惁鍒欎负绌�") + private String parentOrderSn; + + @ApiModelProperty(value = "鏄惁涓烘煇璁㈠崟绫诲瀷鐨勮鍗曪紝濡傛灉鏄垯涓鸿鍗曠被鍨嬬殑id锛屽惁鍒欎负绌�") + private String promotionId; + + @ApiModelProperty(value = "鎬讳环鏍�,鍙互涓鸿寖鍥达紝濡�10_1000") + private String flowPrice; + + /** + * @see OrderPromotionTypeEnum + */ + @ApiModelProperty(value = "璁㈠崟淇冮攢绫诲瀷") + private String orderPromotionType; + + public <T> QueryWrapper<T> queryWrapper() { + AuthUser currentUser = UserContext.getCurrentUser(); + QueryWrapper<T> wrapper = new QueryWrapper<>(); + + //鍏抽敭瀛楁煡璇� + if (CharSequenceUtil.isNotEmpty(keywords)) { + wrapper.and(keyWrapper -> keyWrapper.like("o.sn", keywords).or().like("oi.goods_name", keywords)); + } +// if (currentUser != null) { +// //鎸夊崠瀹舵煡璇� +// wrapper.eq(CharSequenceUtil.equals(currentUser.getRole().name(), UserEnums.STORE.name()), "o.store_id", currentUser.getStoreId()); +// +// //搴楅摵鏌ヨ +// wrapper.eq(CharSequenceUtil.equals(currentUser.getRole().name(), UserEnums.MANAGER.name()) +// && CharSequenceUtil.isNotEmpty(storeId), "o.store_id", storeId); +// +// //鎸変拱瀹舵煡璇� +// wrapper.eq(CharSequenceUtil.equals(currentUser.getRole().name(), UserEnums.MEMBER.name()) && memberId == null, "o.member_id", currentUser.getId()); +// +// } + wrapper.eq( CharSequenceUtil.isNotEmpty(storeId), "o.store_id", storeId); + //鎸夌収涔板鏌ヨ + wrapper.like(CharSequenceUtil.isNotEmpty(memberId), "o.member_id", memberId); + + //鎸夎鍗曠紪鍙锋煡璇� + wrapper.like(CharSequenceUtil.isNotEmpty(orderSn), "o.sn", orderSn); + + //鎸夋椂闂存煡璇� + wrapper.ge(startDate != null, "o.create_time", startDate); + + wrapper.le(endDate != null, "o.create_time", DateUtil.endOfDate(endDate)); + //鎸夎喘涔颁汉鐢ㄦ埛鍚� + wrapper.like(CharSequenceUtil.isNotEmpty(buyerName), "o.member_name", buyerName); + + //鎸夎鍗曠被鍨� + wrapper.eq(CharSequenceUtil.isNotEmpty(orderType), "o.order_type", orderType); + + //鐗╂祦鏌ヨ + wrapper.like(CharSequenceUtil.isNotEmpty(shipName), "o.consignee_name", shipName); + + //鎸夊晢鍝佸悕绉版煡璇� + wrapper.like(CharSequenceUtil.isNotEmpty(goodsName), "oi.goods_name", goodsName); + + //浠樻鏂瑰紡 + wrapper.like(CharSequenceUtil.isNotEmpty(paymentType), "o.payment_type", paymentType); + + //鎸夋敮浠樻柟寮� + wrapper.eq(CharSequenceUtil.isNotEmpty(paymentMethod), "o.payment_method", paymentMethod); + + //璁㈠崟鐘舵�� + wrapper.eq(CharSequenceUtil.isNotEmpty(orderStatus), "o.order_status", orderStatus); + + //浠樻鐘舵�� + wrapper.eq(CharSequenceUtil.isNotEmpty(payStatus), "o.pay_status", payStatus); + + //璁㈠崟鏉ユ簮 + wrapper.like(CharSequenceUtil.isNotEmpty(clientType), "o.client_type", clientType); + + //鎸夎瘎浠风姸鎬� + wrapper.eq(CharSequenceUtil.isNotEmpty(commentStatus), "oi.comment_status", commentStatus); + + //鎸夋爣绛炬煡璇� + if (CharSequenceUtil.isNotEmpty(tag)) { + String orderStatusColumn = "o.order_status"; + OrderTagEnum tagEnum = OrderTagEnum.valueOf(tag); + switch (tagEnum) { + //寰呬粯娆� + case WAIT_PAY: + wrapper.eq(orderStatusColumn, OrderStatusEnum.UNPAID.name()); + break; + //寰呭彂璐� + case WAIT_SHIP: + wrapper.eq(orderStatusColumn, OrderStatusEnum.UNDELIVERED.name()); + break; + //寰呮敹璐� + case WAIT_ROG: + wrapper.eq(orderStatusColumn, OrderStatusEnum.DELIVERED.name()); + break; + //宸插彇娑� + case CANCELLED: + wrapper.eq(orderStatusColumn, OrderStatusEnum.CANCELLED.name()); + break; + //宸插畬鎴� + case COMPLETE: + wrapper.eq(orderStatusColumn, OrderStatusEnum.COMPLETED.name()); + break; + default: + break; + } + } + + // 渚濊禆璁㈠崟 + wrapper.eq(parentOrderSn != null, "o.parent_order_sn", parentOrderSn); + // 淇冮攢娲诲姩id + wrapper.eq(CharSequenceUtil.isNotEmpty(promotionId), "o.promotion_id", promotionId); + + wrapper.eq(CharSequenceUtil.isNotEmpty(orderPromotionType), "o.order_promotion_type", orderPromotionType); + + if (CharSequenceUtil.isNotEmpty(flowPrice)) { + String[] s = flowPrice.split("_"); + if (s.length > 1) { + wrapper.between("o.flow_price", s[0], s[1]); + } else { + wrapper.ge("o.flow_price", s[0]); + } + } + wrapper.eq("o.delete_flag", false); + return wrapper; + } + +} diff --git a/framework/src/main/java/cn/lili/modules/order/order/mapper/OrderMapper.java b/framework/src/main/java/cn/lili/modules/order/order/mapper/OrderMapper.java index 698f654..45e5d9e 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/mapper/OrderMapper.java +++ b/framework/src/main/java/cn/lili/modules/order/order/mapper/OrderMapper.java @@ -120,6 +120,29 @@ ",GROUP_CONCAT(oi.refund_price) as group_refund_price " + " FROM li_order o LEFT JOIN li_order_item AS oi on o.sn = oi.order_sn ${ew.customSqlSegment} ") IPage<OrderSimpleXcxVO> queryByXcxParams(IPage<OrderSimpleVO> page, @Param(Constants.WRAPPER) Wrapper<OrderSimpleVO> queryWrapper); + /** + * 鍟嗘埛绔煡璇� + * + * @param page 鍒嗛〉 + * @param queryWrapper 鏌ヨ鏉′欢 + * @return 绠�鐭鍗曞垎椤� + */ + @Select("select o.sn,o.flow_price,o.create_time,o.order_status,o.pay_status,o.payment_method,o.payment_time,o.member_name,o.store_name as " + + "store_name,o.store_id as store_id,o.client_type,o.order_type,o.deliver_status,o.order_promotion_type,o.seller_remark " + + ",GROUP_CONCAT(oi.goods_id) as group_goods_id," + + " GROUP_CONCAT(oi.sku_id) as group_sku_id," + + " GROUP_CONCAT(oi.num) as group_num" + + ",GROUP_CONCAT(oi.image) as group_images" + + ",GROUP_CONCAT(oi.goods_name) as group_name " + + ",GROUP_CONCAT(oi.after_sale_status) as group_after_sale_status" + + ",GROUP_CONCAT(oi.complain_status) as group_complain_status" + + ",GROUP_CONCAT(oi.comment_status) as group_comment_status" + + ",GROUP_CONCAT(oi.sn) as group_order_items_sn " + + ",GROUP_CONCAT(oi.goods_price) as group_goods_price " + + ",GROUP_CONCAT(oi.is_refund) as group_is_refund " + + ",GROUP_CONCAT(oi.refund_price) as group_refund_price " + + " FROM li_order o LEFT JOIN li_order_item AS oi on o.sn = oi.order_sn ${ew.customSqlSegment} ") + IPage<OrderSimpleXcxVO> querySupplierOrderParams(IPage<OrderSimpleVO> page, @Param(Constants.WRAPPER) Wrapper<OrderSimpleVO> queryWrapper); /** * 鏌ヨ璁㈠崟淇℃伅 diff --git a/framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java b/framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java index 93d229d..8978fad 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java +++ b/framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java @@ -6,6 +6,7 @@ import cn.lili.modules.order.order.entity.dto.OrderMessage; import cn.lili.modules.order.order.entity.dto.OrderSearchParams; import cn.lili.modules.order.order.entity.dto.PartDeliveryParamsDTO; +import cn.lili.modules.order.order.entity.dto.SupplierOrderSearchParams; 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.OrderSimpleXcxVO; @@ -61,6 +62,8 @@ */ IPage<OrderSimpleXcxVO> queryByXcxParams(OrderSearchParams orderSearchParams); + IPage<OrderSimpleXcxVO> querySupplierOrderParams(SupplierOrderSearchParams orderSearchParams); + /** * 璁㈠崟淇℃伅 * 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 dc4a066..74ee3e3 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 @@ -5,7 +5,6 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.io.IoUtil; import cn.hutool.core.text.CharSequenceUtil; -import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; import cn.hutool.poi.excel.ExcelReader; @@ -205,6 +204,12 @@ UserContext.getCurrentUser().getUsername(), message)); item.getCheckedSkuList().forEach( sku -> { +// OrderItem e = new OrderItem(sku, item, tradeDTO); +// String goodsId = e.getGoodsId(); +// Goods goods = goodsService.getById(goodsId); +// item.getPriceDetailDTO().setPlatFormCommissionPoint(Double.valueOf(goods.getCommission().toString())); +// e.setPriceDetailDTO(item.getPriceDetailDTO()); +// orderItems.add(e); orderItems.add(new OrderItem(sku, item, tradeDTO)); currentOrderItems.add(new OrderItem(sku, item, tradeDTO)); } @@ -237,6 +242,42 @@ queryWrapper.groupBy("o.id"); queryWrapper.orderByDesc("o.id"); IPage<OrderSimpleXcxVO> iPage = this.baseMapper.queryByXcxParams(PageUtil.initPage(orderSearchParams), queryWrapper); + Set<String> goodsIds = new HashSet<>(); + for (OrderSimpleXcxVO orderSimpleVO : iPage.getRecords()) { + orderSimpleVO.setOrderItems(orderSimpleVO.initOrderItems()); + String groupGoodsId = orderSimpleVO.getGroupGoodsId(); + if (StringUtils.isNotBlank(groupGoodsId)) { + goodsIds.addAll(Arrays.asList(groupGoodsId.split(","))); + } + } + if (CollectionUtil.isNotEmpty(goodsIds)) { + List<Goods> list = goodsService.list(Wrappers.<Goods>lambdaQuery().in(Goods::getId, goodsIds)); + Map<String, String> goodsVideos = list + .stream().collect(Collectors.toMap(Goods::getId, g-> + StringUtils.isNotBlank(g.getGoodsVideo())?g.getGoodsVideo():"" + )); + iPage.getRecords().forEach(orderSimpleVO -> { + orderSimpleVO.getOrderItems().forEach(orderItem -> { + String videoUrl = goodsVideos.get(orderItem.getGoodsId()); + if (StringUtils.isNotBlank(videoUrl)&&!videoUrl.contains("http")) { + orderItem.setVideo(cosUtil.getPreviewUrl(videoUrl)); + } + String image = orderItem.getImage(); + if (StringUtils.isNotBlank(image)&&!image.contains("http")) { + orderItem.setImage(cosUtil.getPreviewUrl(image)); + } + }); + }); + } + return iPage; + } + + @Override + public IPage<OrderSimpleXcxVO> querySupplierOrderParams(SupplierOrderSearchParams orderSearchParams) { + QueryWrapper queryWrapper = orderSearchParams.queryWrapper(); + queryWrapper.groupBy("o.id"); + queryWrapper.orderByDesc("o.id"); + IPage<OrderSimpleXcxVO> iPage = this.baseMapper.querySupplierOrderParams(PageUtil.initPage(orderSearchParams), queryWrapper); Set<String> goodsIds = new HashSet<>(); for (OrderSimpleXcxVO orderSimpleVO : iPage.getRecords()) { orderSimpleVO.setOrderItems(orderSimpleVO.initOrderItems()); @@ -454,7 +495,25 @@ //璁板綍搴楅摵璁㈠崟鏀粯娴佹按 storeFlowService.payOrder(orderSn); - + //todo 鐢熸垚璁㈠崟璁板綍琛� +// //鑾峰彇瀛愯鍗曟暟鎹� +// List<OrderItem> orderItems = orderItemService.getByOrderSn(orderSn); +// List<String> goodsIds = orderItems.stream().map(OrderItem::getGoodsId).distinct().collect(Collectors.toList()); +// +// Map<String, OrderItem> orderItem = orderItems.stream() +// .collect(Collectors.toMap(OrderItem::getGoodsId, Function.identity() +// ,(oldValue, newValue) -> oldValue)); +// //鏍规嵁璁㈠崟item椤瑰垱寤烘娊鎴愭祦姘磋鍗� +// List<CommissionRecord> commissionRecords = new ArrayList<>(); +// CommissionRecord commissionRecord; +// for (OrderItem item : orderItems) { +// commissionRecord = new CommissionRecord(); +// commissionRecord.setSn(item.getSn()); +// BigDecimal commission = item.getCommission(); +// commissionRecord.setCommission(commission); +// commissionRecord.setCommissionPrice(); +// +// } //鍙戦�佽鍗曞凡浠樻娑堟伅 OrderMessage orderMessage = new OrderMessage(); orderMessage.setOrderSn(order.getSn()); diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/StoreFlowServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/StoreFlowServiceImpl.java index ae91f6b..daf4a78 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/StoreFlowServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/StoreFlowServiceImpl.java @@ -26,7 +26,6 @@ import cn.lili.modules.store.entity.vos.StoreFlowPayDownloadVO; import cn.lili.modules.store.entity.vos.StoreFlowRefundDownloadVO; import cn.lili.modules.store.service.BillService; -import cn.lili.modules.system.entity.dto.payment.WechatPaymentSetting; import cn.lili.mybatis.util.PageUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; diff --git a/framework/src/main/java/cn/lili/modules/permission/entity/dos/AdminUser.java b/framework/src/main/java/cn/lili/modules/permission/entity/dos/AdminUser.java index 92977e0..500f220 100644 --- a/framework/src/main/java/cn/lili/modules/permission/entity/dos/AdminUser.java +++ b/framework/src/main/java/cn/lili/modules/permission/entity/dos/AdminUser.java @@ -41,7 +41,7 @@ private String email; @ApiModelProperty(value = "鐢ㄦ埛澶村儚") - private String avatar = "https://i.loli.net/2020/11/19/LyN6JF7zZRskdIe.png"; + private String avatar = ""; @ApiModelProperty(value = "鏄惁鏄秴绾х鐞嗗憳 瓒呯骇绠$悊鍛�/鏅�氱鐞嗗憳") private Boolean isSuper = false; diff --git a/framework/src/main/java/cn/lili/modules/search/entity/dos/EsGoodsIndex.java b/framework/src/main/java/cn/lili/modules/search/entity/dos/EsGoodsIndex.java index 493f594..acb53be 100644 --- a/framework/src/main/java/cn/lili/modules/search/entity/dos/EsGoodsIndex.java +++ b/framework/src/main/java/cn/lili/modules/search/entity/dos/EsGoodsIndex.java @@ -6,6 +6,8 @@ import cn.lili.modules.goods.entity.dos.GoodsSku; import cn.lili.modules.goods.entity.dto.GoodsParamsDTO; import cn.lili.modules.promotion.tools.PromotionTools; +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.NoArgsConstructor; @@ -15,6 +17,7 @@ import org.springframework.data.elasticsearch.annotations.Document; import org.springframework.data.elasticsearch.annotations.Field; import org.springframework.data.elasticsearch.annotations.FieldType; +import org.springframework.format.annotation.DateTimeFormat; import java.io.Serializable; import java.util.ArrayList; @@ -271,6 +274,18 @@ @Field(type = FieldType.Nested) private List<EsGoodsAttribute> attrList; + + @ApiModelProperty(value = "棰勫敭缁撴潫鏃堕棿") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @Field(type = FieldType.Date) + private Date preSaleEndDate; + + @ApiModelProperty(value = "棰勫敭寮�濮嬫椂闂�") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @Field(type = FieldType.Date) + private Date preSaleBeginDate; /** * 鍟嗗搧淇冮攢娲诲姩闆嗗悎 * key 涓� 淇冮攢娲诲姩绫诲瀷 diff --git a/framework/src/main/java/cn/lili/modules/search/entity/dto/EsGoodsSearchDTO.java b/framework/src/main/java/cn/lili/modules/search/entity/dto/EsGoodsSearchDTO.java index ba73b62..0563531 100644 --- a/framework/src/main/java/cn/lili/modules/search/entity/dto/EsGoodsSearchDTO.java +++ b/framework/src/main/java/cn/lili/modules/search/entity/dto/EsGoodsSearchDTO.java @@ -79,6 +79,9 @@ @ApiModelProperty("鏄惁寮�鍚晢鍝佽繃婊�") private Boolean canFilter; + @ApiModelProperty("鏄惁闇�瑕佸紑鍚繃婊ら鍞晢鍝�") + private Boolean needFilterPre; + //杩囨护鎼滅储鍏抽敭瀛� diff --git a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java index 0cadc1c..79d904b 100644 --- a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java @@ -48,6 +48,10 @@ import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; import org.springframework.stereotype.Service; +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; @@ -93,7 +97,7 @@ cache.incrementScore(CachePrefix.HOT_WORD.getPrefix(), searchDTO.getKeyword()); } NativeSearchQueryBuilder searchQueryBuilder = createSearchQueryBuilder(searchDTO, pageVo); - if (Objects.nonNull(searchDTO.getCanFilter())&&searchDTO.getCanFilter()){ + if (Objects.nonNull(searchDTO.getCanFilter()) && searchDTO.getCanFilter()) { searchQueryBuilder.withCollapseField("goodsId.keyword"); } NativeSearchQuery searchQuery = searchQueryBuilder.build(); @@ -557,6 +561,23 @@ if (CharSequenceUtil.isNotEmpty(searchDTO.getPromotionsId()) && CharSequenceUtil.isNotEmpty(searchDTO.getPromotionType())) { filterBuilder.must(QueryBuilders.wildcardQuery("promotionMapJson", "*" + searchDTO.getPromotionType() + "-" + searchDTO.getPromotionsId() + "*")); } + + if (Objects.nonNull(searchDTO.getNeedFilterPre()) && searchDTO.getNeedFilterPre()) { + // 杞崲涓哄綋澶� 00:00:00 鐨勬椂闂存埑锛堟绉掞級 + long time = LocalDate.now().atStartOfDay(ZoneId.systemDefault()) + .toInstant() + .toEpochMilli(); + // 鏉′欢2锛氶鍞粨鏉熸椂闂� >= 褰撳墠鏃堕棿 OR 缁撴潫鏃堕棿涓虹┖ + filterBuilder.must(QueryBuilders.boolQuery() + .should(QueryBuilders.rangeQuery("preSaleEndDate").gte(time)) + .should(QueryBuilders.boolQuery() + .mustNot(QueryBuilders.existsQuery("preSaleEndDate")))); + // 鏉′欢1锛氶鍞紑濮嬫椂闂� <= 褰撳墠鏃堕棿 OR 寮�濮嬫椂闂翠负绌� + filterBuilder.must(QueryBuilders.boolQuery() + .should(QueryBuilders.rangeQuery("preSaleBeginDate").lte(time)) + .should(QueryBuilders.boolQuery() + .mustNot(QueryBuilders.existsQuery("preSaleBeginDate")))); + } //浠锋牸鍖洪棿鍒ゅ畾 if (CharSequenceUtil.isNotEmpty(searchDTO.getPrice())) { String[] prices = searchDTO.getPrice().split("_"); diff --git a/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java b/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java index 3f8b4dc..2d6693b 100644 --- a/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java @@ -40,6 +40,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.rocketmq.spring.core.RocketMQTemplate; import org.springframework.beans.factory.annotation.Autowired; @@ -97,8 +98,10 @@ private Cache cache; @Override - public IPage<StoreVO> findByConditionPage(StoreSearchParams storeSearchParams, PageVO page) { - return this.baseMapper.getStoreList(PageUtil.initPage(page), storeSearchParams.queryWrapper()); + public IPage<StoreVO> findByConditionPage(StoreSearchParams storeSearchParams, PageVO vo) { + Page<StoreVO> page = PageUtil.initPage(vo); + this.baseMapper.getStoreList(page, storeSearchParams.queryWrapper()); + return page; } @Override @@ -412,4 +415,4 @@ return this.getOne(lambdaQueryWrapper, false); } -} \ No newline at end of file +} diff --git a/framework/src/main/resources/mapper/lmk/CommissionRecordMapper.xml b/framework/src/main/resources/mapper/lmk/CommissionRecordMapper.xml new file mode 100644 index 0000000..8296ca6 --- /dev/null +++ b/framework/src/main/resources/mapper/lmk/CommissionRecordMapper.xml @@ -0,0 +1,86 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="cn.lili.modules.lmk.mapper.CommissionRecordMapper"> + + <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> + <resultMap id="BaseResultMap" type="cn.lili.modules.lmk.domain.vo.CommissionRecordVO"> + <id column="id" property="id"/> + <result column="store_id" property="storeId" /> + <result column="goods_id" property="goodsId" /> + <result column="sku_id" property="skuId" /> + <result column="goods_name" property="goodsName" /> + <result column="img_url" property="imgUrl" /> + <result column="price" property="price" /> + <result column="num" property="num" /> + <result column="sum_price" property="sumPrice" /> + <result column="commission" property="commission" /> + <result column="commission_price" property="commissionPrice" /> + <result column="remain_money" property="remainMoney" /> + <result column="settlement_status" property="settlementStatus" /> + <result column="can_settlement_time" property="canSettlementTime" /> + <result column="trade_sn" property="tradeSn" /> + <result column="sn" property="sn" /> + <result column="type" property="type" /> + <result column="delivery_status" property="deliveryStatus" /> + </resultMap> + + + + + + + + <select id="getById" resultMap="BaseResultMap"> + SELECT + LCR.store_id, + LCR.goods_id, + LCR.sku_id, + LCR.goods_name, + LCR.img_url, + LCR.price, + LCR.num, + LCR.sum_price, + LCR.commission, + LCR.commission_price, + LCR.remain_money, + LCR.settlement_status, + LCR.can_settlement_time, + LCR.trade_sn, + LCR.sn, + LCR.type, + LCR.delivery_status, + LCR.id + FROM + lmk_commission_record LCR + WHERE + LCR.id = #{id} AND LCR.delete_flag = 0 + </select> + + + <select id="getPage" resultMap="BaseResultMap"> + SELECT + LCR.store_id, + LCR.goods_id, + LCR.sku_id, + LCR.goods_name, + LCR.img_url, + LCR.price, + LCR.num, + LCR.sum_price, + LCR.commission, + LCR.commission_price, + LCR.remain_money, + LCR.settlement_status, + LCR.can_settlement_time, + LCR.trade_sn, + LCR.sn, + LCR.type, + LCR.delivery_status, + LCR.id + FROM + lmk_commission_record LCR + WHERE + LCR.delete_flag = 0 + </select> + +</mapper> diff --git a/framework/src/main/resources/mapper/lmk/CustomerMapper.xml b/framework/src/main/resources/mapper/lmk/CustomerMapper.xml index 951ba0e..690e89f 100644 --- a/framework/src/main/resources/mapper/lmk/CustomerMapper.xml +++ b/framework/src/main/resources/mapper/lmk/CustomerMapper.xml @@ -27,10 +27,10 @@ <result property="experience" column="experience"/> <result property="createTime" column="create_time"/> <result property="blackId" column="blackId"/> -<!-- <collection property="customerTagList" ofType="cn.lili.modules.lmk.domain.vo.CustomerTagVO"--> -<!-- select="selectTagByMemberId"--> -<!-- column="id"--> -<!-- />--> + <collection property="customerTagList" ofType="cn.lili.modules.lmk.domain.vo.MemberTagVO" + select="selectTagByMemberId" + column="id" + /> </resultMap> <select id="getPage" resultMap="BaseResultMap"> @@ -69,7 +69,7 @@ ORDER BY lm.create_time DESC </select> - <select id="selectTagByMemberId" resultType="cn.lili.modules.lmk.domain.vo.CustomerTagVO"> + <select id="selectTagByMemberId" resultType="cn.lili.modules.lmk.domain.vo.MemberTagVO"> SELECT LCT.id, LCT.tag_name, diff --git a/framework/src/main/resources/mapper/lmk/CustomerTagMapper.xml b/framework/src/main/resources/mapper/lmk/CustomerTagMapper.xml deleted file mode 100644 index fe509b3..0000000 --- a/framework/src/main/resources/mapper/lmk/CustomerTagMapper.xml +++ /dev/null @@ -1,51 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> -<mapper namespace="cn.lili.modules.lmk.mapper.CustomerTagMapper"> - - <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> - <resultMap id="BaseResultMap" type="cn.lili.modules.lmk.domain.vo.CustomerTagVO"> - <result column="tag_name" property="tagName" /> - <result column="create_type" property="createType" /> - <result column="create_by" property="createBy" /> - <result column="create_time" property="createTime" /> - <result column="update_by" property="updateBy" /> - <result column="update_time" property="updateTime" /> - </resultMap> - - - - - - - <select id="getById" resultMap="BaseResultMap"> - SELECT - LCT.tag_name, - LCT.create_type, - LCT.create_by, - LCT.create_time, - LCT.update_by, - LCT.update_time, - LCT.id - FROM - lmk_customer_tag LCT - WHERE - LCT.id = #{id} AND LCT.delete_flag = 0 - </select> - - - <select id="getPage" resultMap="BaseResultMap"> - SELECT - LCT.tag_name, - LCT.create_type, - LCT.create_by, - LCT.create_time, - LCT.update_by, - LCT.update_time, - LCT.id - FROM - lmk_customer_tag LCT - WHERE - LCT.delete_flag = 0 - </select> - -</mapper> diff --git a/framework/src/main/resources/mapper/lmk/GoodsTagMapper.xml b/framework/src/main/resources/mapper/lmk/GoodsTagMapper.xml new file mode 100644 index 0000000..6db5194 --- /dev/null +++ b/framework/src/main/resources/mapper/lmk/GoodsTagMapper.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="cn.lili.modules.lmk.mapper.GoodsTagMapper"> + + <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> + <resultMap id="BaseResultMap" type="cn.lili.modules.lmk.domain.vo.GoodsTagVO"> + <result column="tag_id" property="tagId"/> + <result column="tag_name" property="tagName"/> + <result column="create_type" property="createType"/> + <result column="create_by" property="createBy"/> + <result column="create_time" property="createTime"/> + <result column="update_by" property="updateBy"/> + <result column="update_time" property="updateTime"/> + </resultMap> +</mapper> diff --git a/framework/src/main/resources/mapper/lmk/MemberMapper.xml b/framework/src/main/resources/mapper/lmk/MemberMapper.xml new file mode 100644 index 0000000..559581b --- /dev/null +++ b/framework/src/main/resources/mapper/lmk/MemberMapper.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="cn.lili.modules.member.mapper.MemberMapper"> + + <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> + <resultMap id="BaseResultMap" type="cn.lili.modules.member.entity.vo.MemberVO"> + <id column="id" property="id"/> + <result column="username" property="username"/> + <result column="nick_name" property="nickName"/> + <result column="sex" property="sex"/> + <result column="birthday" property="birthday"/> + <result column="region_id" property="regionId"/> + <result column="region" property="region"/> + <result column="mobile" property="mobile"/> + <result column="point" property="point"/> + <result column="total_point" property="totalPoint"/> + <result column="face" property="face"/> + <result column="disabled" property="disabled"/> + <result column="have_store" property="haveStore"/> + <result column="store_id" property="storeId"/> + <result column="open_id" property="openId"/> + <result column="client_enum" property="clientEnum"/> + <result column="last_login_date" property="lastLoginDate"/> + <result column="grade_id" property="gradeId"/> + <result column="experience" property="experience"/> + <collection property="tags" ofType="cn.lili.modules.lmk.domain.vo.MemberTagVO"> + <id column="member_tag_id" property="id"/> + <result column="tag_name" property="tagName"/> + <result column="tag_id" property="tagId"/> + </collection> + + </resultMap> + <select id="getVoById" resultMap="BaseResultMap"> + select m.*, mt.id member_tag_id, mt.tag_name, mt.tag_id + from li_member m + left join lmk_member_tag mt on m.id = mt.member_id and mt.delete_flag = 0 + where m.id = #{id} and m.delete_flag = 0 + </select> + + +</mapper> diff --git a/framework/src/main/resources/mapper/lmk/MemberTagMapper.xml b/framework/src/main/resources/mapper/lmk/MemberTagMapper.xml new file mode 100644 index 0000000..55b6d9a --- /dev/null +++ b/framework/src/main/resources/mapper/lmk/MemberTagMapper.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="cn.lili.modules.lmk.mapper.MemberTagMapper"> + + <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> + <resultMap id="BaseResultMap" type="cn.lili.modules.lmk.domain.vo.MemberTagVO"> + <result column="tag_id" property="tagId"/> + <result column="tag_name" property="tagName"/> + <result column="create_type" property="createType"/> + <result column="create_by" property="createBy"/> + <result column="create_time" property="createTime"/> + <result column="update_by" property="updateBy"/> + <result column="update_time" property="updateTime"/> + </resultMap> + + + <select id="getById" resultMap="BaseResultMap"> + SELECT LCT.tag_name, + LCT.create_type, + LCT.create_by, + LCT.create_time, + LCT.update_by, + LCT.update_time, + LCT.id + FROM lmk_customer_tag LCT + WHERE LCT.id = #{id} + AND LCT.delete_flag = 0 + </select> + + + <select id="getPage" resultMap="BaseResultMap"> + SELECT LCT.tag_name, + LCT.create_type, + LCT.create_by, + LCT.create_time, + LCT.update_by, + LCT.update_time, + LCT.id + FROM lmk_customer_tag LCT + WHERE LCT.delete_flag = 0 + </select> + +</mapper> diff --git a/framework/src/main/resources/mapper/lmk/MyCollectMapper.xml b/framework/src/main/resources/mapper/lmk/MyCollectMapper.xml index f1ff446..71af97c 100644 --- a/framework/src/main/resources/mapper/lmk/MyCollectMapper.xml +++ b/framework/src/main/resources/mapper/lmk/MyCollectMapper.xml @@ -101,10 +101,7 @@ <result column="video_file_key" property="videoFileKey" /> <result column="video_fit" property="videoFit" /> <result column="title" property="title" /> - <result column="goods_id" property="goodsId" /> - <result column="goods_view_num" property="goodsViewNum" /> <result column="video_duration" property="videoDuration" /> - <result column="goods_order_num" property="goodsOrderNum" /> <result column="recommend" property="recommend" /> <result column="status" property="status" /> <result column="play_num" property="playNum" /> diff --git a/framework/src/main/resources/mapper/lmk/MySubscribeMapper.xml b/framework/src/main/resources/mapper/lmk/MySubscribeMapper.xml index 7b4b73f..09fb7ec 100644 --- a/framework/src/main/resources/mapper/lmk/MySubscribeMapper.xml +++ b/framework/src/main/resources/mapper/lmk/MySubscribeMapper.xml @@ -34,8 +34,7 @@ LMS.subscribe_user_id, LMS.id, LM.nick_name, - LM.face, - (SELECT COUNT(*) FROM lmk_my_subscribe WHERE subscribe_user_id = LMS.subscribe_user_id AND delete_flag = 0) as fans_num + LM.face FROM lmk_my_subscribe LMS LEFT JOIN li_member LM ON LMS.subscribe_user_id = LM.id diff --git a/framework/src/main/resources/mapper/lmk/PriceChangeMapper.xml b/framework/src/main/resources/mapper/lmk/PriceChangeMapper.xml new file mode 100644 index 0000000..740ead2 --- /dev/null +++ b/framework/src/main/resources/mapper/lmk/PriceChangeMapper.xml @@ -0,0 +1,68 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="cn.lili.modules.lmk.mapper.PriceChangeMapper"> + + <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> + <resultMap id="BaseResultMap" type="cn.lili.modules.lmk.domain.vo.PriceChangeVO"> + <id column="id" property="id"/> + <result column="store_id" property="storeId" /> + <result column="goods_id" property="goodsId" /> + <result column="sku_id" property="skuId" /> + <result column="previous_price" property="previousPrice" /> + <result column="current_price" property="currentPrice" /> + <result column="previous_commission" property="previousCommission" /> + <result column="current_commission" property="currentCommission" /> + <result column="operator_name" property="operatorName" /> + <result column="operator_id" property="operatorId" /> + <result column="examine_status" property="examineStatus" /> + <result column="operator_type" property="operatorType" /> + </resultMap> + + + + + + + + <select id="getById" resultMap="BaseResultMap"> + SELECT + LPC.store_id, + LPC.goods_id, + LPC.sku_id, + LPC.previous_price, + LPC.current_price, + LPC.previous_commission, + LPC.current_commission, + LPC.operator_name, + LPC.operator_id, + LPC.examine_status, + LPC.operator_type, + LPC.id + FROM + lmk_price_change LPC + WHERE + LPC.id = #{id} AND LPC.delete_flag = 0 + </select> + + + <select id="getPage" resultMap="BaseResultMap"> + SELECT + LPC.store_id, + LPC.goods_id, + LPC.sku_id, + LPC.previous_price, + LPC.current_price, + LPC.previous_commission, + LPC.current_commission, + LPC.operator_name, + LPC.operator_id, + LPC.examine_status, + LPC.operator_type, + LPC.id + FROM + lmk_price_change LPC + WHERE + LPC.delete_flag = 0 + </select> + +</mapper> diff --git a/framework/src/main/resources/mapper/lmk/TagMapper.xml b/framework/src/main/resources/mapper/lmk/TagMapper.xml index c8ceb7f..64261aa 100644 --- a/framework/src/main/resources/mapper/lmk/TagMapper.xml +++ b/framework/src/main/resources/mapper/lmk/TagMapper.xml @@ -20,7 +20,10 @@ and t.tag_name like concat('%',#{query.tagName},'%') </if> <if test="query.tagTypeId != null and query.tagTypeId != ''"> - and t.tag_type_id like concat('%',#{query.tagTypeId},'%') + and t.tag_type_id = #{query.tagTypeId} + </if> + <if test="query.tagTypeKey != null and query.tagTypeKey != ''"> + and tt.type_key = #{query.tagTypeKey} </if> order by t.sort_num </select> diff --git a/framework/src/main/resources/mapper/lmk/VideoMapper.xml b/framework/src/main/resources/mapper/lmk/VideoMapper.xml index 325a5d0..ca87dfc 100644 --- a/framework/src/main/resources/mapper/lmk/VideoMapper.xml +++ b/framework/src/main/resources/mapper/lmk/VideoMapper.xml @@ -48,7 +48,7 @@ LG.price FROM lmk_video_goods LVG - INNER JOIN li_goods LG ON LVG.goods_id = LG.id AND LG.market_enable = 'UPPER' AND LG.delete_flag = 0 + INNER JOIN li_goods_sku LG ON LVG.goods_sku_id = LG.id AND LG.market_enable = 'UPPER' AND LG.delete_flag = 0 WHERE LVG.video_id = #{id} AND LVG.delete_flag = 0 ORDER BY @@ -102,6 +102,29 @@ <collection property="goodsList" column="id" select="getVideoGoods" ofType="cn.lili.modules.lmk.domain.vo.VideoGoodsDetailVO"/> </resultMap> + <!-- 鎾斁鍘嗗彶 --> + <resultMap id="HistoryMap" type="cn.lili.modules.lmk.domain.vo.VideoHistoryVO"> + <id column="id" property="id"/> + <result column="author_id" property="authorId" /> + <result column="authorName" property="authorName" /> + <result column="authorAvatar" property="authorAvatar" /> + <result column="cover_url" property="coverFileKey" /> + <result column="video_file_key" property="videoFileKey" /> + <result column="video_fit" property="videoFit" /> + <result column="video_duration" property="videoDuration" /> + <result column="title" property="title" /> + <result column="collect_num" property="collectNum" /> + <result column="comment_num" property="commentNum" /> + <result column="thumbs_up_num" property="thumbsUpNum" /> + <result column="status" property="status" /> + <result column="video_content_type" property="videoContentType" /> + <result column="video_type" property="videoType" /> + <result column="video_imgs" property="videoImgs" /> + <result column="historyId" property="historyId" /> + <result column="play_at" property="playAt" /> + <result column="playTime" property="playTime" /> + <collection property="goodsList" column="id" select="getVideoGoods" ofType="cn.lili.modules.lmk.domain.vo.VideoGoodsDetailVO"/> + </resultMap> <select id="getById" resultMap="BaseResultMap"> SELECT @@ -244,6 +267,98 @@ ORDER BY LV.create_time DESC </select> + + <select id="goodsSimilarlyPage" resultMap="WxResultMap"> + SELECT + LV.author_id, + LV.cover_url, + LV.video_fit, + LV.video_duration, + LV.video_file_key, + LV.title, + LV.goods_view_num, + LV.goods_order_num, + LV.recommend, + LV.status, + LV.play_num, + LV.comment_num, + LV.collect_num, + LV.thumbs_up_num, + LV.weight, + LV.audit_pass_time, + LV.update_time, + LV.create_time, + LV.video_content_type, + LV.video_type, + LV.video_imgs, + LV.id, + CASE + WHEN LM.nick_name IS NOT NULL THEN LM.nick_name + WHEN LM.nick_name IS NULL THEN (SELECT nick_name FROM li_admin_user WHERE id = LV.author_id) + ELSE '' + END as authorName, + CASE + WHEN LM.face IS NOT NULL THEN LM.face + WHEN LM.face IS NULL THEN (SELECT avatar FROM li_admin_user WHERE id = LV.author_id) + ELSE '' + END as authorAvatar + FROM + lmk_video LV + INNER JOIN lmk_video_goods LVG ON LVG.video_id = LV.id AND LVG.goods_id in <foreach collection="query.goodsIds" open="(" item="goodsId" close=")" separator=",">#{goodsId}</foreach> + LEFT JOIN li_member LM ON LV.author_id = LM.id + WHERE + LV.delete_flag = 0 AND LV.status = '1' AND LV.id != #{query.currentVideoId} + ORDER BY + LV.create_time DESC + </select> + + <select id="getHistoryPage" resultMap="HistoryMap"> + SELECT + LV.author_id, + LV.cover_url, + LV.video_fit, + LV.video_duration, + LV.video_file_key, + LV.title, + LV.goods_view_num, + LV.goods_order_num, + LV.recommend, + LV.status, + LV.play_num, + LV.comment_num, + LV.collect_num, + LV.thumbs_up_num, + LV.weight, + LV.audit_pass_time, + LV.update_time, + LV.create_time, + LV.video_content_type, + LV.video_type, + LV.video_imgs, + LV.id, + CASE + WHEN LM.nick_name IS NOT NULL THEN LM.nick_name + WHEN LM.nick_name IS NULL THEN (SELECT nick_name FROM li_admin_user WHERE id = LV.author_id) + ELSE '' + END as authorName, + CASE + WHEN LM.face IS NOT NULL THEN LM.face + WHEN LM.face IS NULL THEN (SELECT avatar FROM li_admin_user WHERE id = LV.author_id) + ELSE '' + END as authorAvatar, + LFP.id as historyId, + LFP.play_at, + LFP.update_time as playTime + FROM + li_foot_print LFP + INNER JOIN lmk_video LV ON LFP.ref_id = LV.id AND LFP.view_type = 'video' AND LFP.delete_flag = 0 AND LFP.member_id = #{query.userId} + LEFT JOIN li_member LM ON LV.author_id = LM.id + WHERE + LV.delete_flag = 0 AND LV.status = '1' + ORDER BY + LFP.update_time DESC + </select> + <select id="recommendHealthVideo" resultMap="WxResultMap"> SELECT LV.author_id, diff --git a/lmk-job/src/main/java/cn/lili/handler/EveryDayExecute.java b/lmk-job/src/main/java/cn/lili/handler/EveryDayExecute.java new file mode 100644 index 0000000..8f17e5d --- /dev/null +++ b/lmk-job/src/main/java/cn/lili/handler/EveryDayExecute.java @@ -0,0 +1,18 @@ +package cn.lili.handler; + +/** + * 姣忔棩浠诲姟 + * 姣忔棩鍑屾櫒1鐐规墽琛� + * + * @author Chopper + * @since 2020/12/24 11:52 + */ +public interface EveryDayExecute { + + /** + * 鎵ц姣忔棩浠诲姟 + */ + void execute(); + + +} diff --git a/lmk-job/src/main/java/cn/lili/handler/EveryHourExecute.java b/lmk-job/src/main/java/cn/lili/handler/EveryHourExecute.java new file mode 100644 index 0000000..1cc031f --- /dev/null +++ b/lmk-job/src/main/java/cn/lili/handler/EveryHourExecute.java @@ -0,0 +1,17 @@ +package cn.lili.handler; + +/** + * 姣忓皬鏃朵换鍔� + * + * @author Chopper + * @since 2020/12/24 11:52 + */ +public interface EveryHourExecute { + + /** + * 鎵ц + */ + void execute(); + + +} diff --git a/lmk-job/src/main/java/cn/lili/handler/EveryMinuteExecute.java b/lmk-job/src/main/java/cn/lili/handler/EveryMinuteExecute.java new file mode 100644 index 0000000..a312dd9 --- /dev/null +++ b/lmk-job/src/main/java/cn/lili/handler/EveryMinuteExecute.java @@ -0,0 +1,17 @@ +package cn.lili.handler; + +/** + * 姣忓垎閽熶换鍔� + * + * @author Chopper + * @since 2020/12/24 11:52 + */ +public interface EveryMinuteExecute { + + /** + * 鎵ц + */ + void execute(); + + +} diff --git a/lmk-job/src/main/java/cn/lili/handler/impl/broadcast/BroadcastExecute.java b/lmk-job/src/main/java/cn/lili/handler/impl/broadcast/BroadcastExecute.java new file mode 100644 index 0000000..f2c5c1c --- /dev/null +++ b/lmk-job/src/main/java/cn/lili/handler/impl/broadcast/BroadcastExecute.java @@ -0,0 +1,25 @@ +package cn.lili.handler.impl.broadcast; + +import cn.lili.handler.EveryHourExecute; +import cn.lili.modules.goods.service.CommodityService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * 灏忕▼搴忕洿鎾姸鎬佽幏鍙� + * + * @author Bulbasaur + * @since 2021/5/20 2:52 涓嬪崍 + */ +@Component +public class BroadcastExecute implements EveryHourExecute { + + @Autowired + private CommodityService commodityService; + + @Override + public void execute() { + //鍚屾鐩存挱鍟嗗搧鐘舵�� + commodityService.getGoodsWareHouse(); + } +} diff --git a/lmk-job/src/main/java/cn/lili/handler/impl/coupon/CouponExecute.java b/lmk-job/src/main/java/cn/lili/handler/impl/coupon/CouponExecute.java new file mode 100644 index 0000000..60662aa --- /dev/null +++ b/lmk-job/src/main/java/cn/lili/handler/impl/coupon/CouponExecute.java @@ -0,0 +1,56 @@ +package cn.lili.handler.impl.coupon; + +import cn.lili.handler.EveryDayExecute; +import cn.lili.modules.promotion.entity.dos.MemberCoupon; +import cn.lili.modules.promotion.entity.enums.MemberCouponStatusEnum; +import cn.lili.modules.promotion.service.MemberCouponService; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.Calendar; +import java.util.Date; + +/** + * 浼樻儬鍒哥姸鎬佺洃娴� + * + * @author Bulbasaur + * @since 2021/5/24 10:08 涓婂崍 + */ +@Component +public class CouponExecute implements EveryDayExecute { + + /** + * 杩囨湡甯搁噺锛岃繃鏈熷悗鎴栬�呬娇鐢ㄥ悗涓�瀹氭椂闂村唴锛屽垹闄ゆ棤鏁堢殑浼樻儬鍒革紝鐗╃悊鍒犻櫎 + */ + static final int EXPIRATION_DAY = 3; + + @Autowired + private MemberCouponService memberCouponService; + + /** + * 妫�娴嬩紭鎯犲埜鐨勪娇鐢ㄦ椂闂达紝瓒呮湡鏈娇鐢ㄥ垯澶辨晥 + * 姝ゆ柟娉曠敤浜庨鍙�*澶╁悗澶辨晥浼樻儬鍒镐娇鐢� + */ + @Override + public void execute() { + //灏嗚繃鏈熶紭鎯犲埜鍙樻洿涓鸿繃鏈熺姸鎬� + LambdaUpdateWrapper<MemberCoupon> updateWrapper = new LambdaUpdateWrapper<MemberCoupon>() + .eq(MemberCoupon::getMemberCouponStatus, MemberCouponStatusEnum.NEW.name()) + .le(MemberCoupon::getEndTime, new Date()) + .set(MemberCoupon::getMemberCouponStatus, MemberCouponStatusEnum.EXPIRE.name()); + this.memberCouponService.update(updateWrapper); + + Calendar calendar = Calendar.getInstance(); + calendar.set(Calendar.DAY_OF_MONTH, calendar.get(Calendar.DAY_OF_MONTH) - EXPIRATION_DAY); + Date removeTime = calendar.getTime(); + //鍒犻櫎杩囨湡/宸蹭娇鐢ㄧ殑浼樻儬鍒� + LambdaUpdateWrapper<MemberCoupon> deleteWrapper = new LambdaUpdateWrapper<MemberCoupon>() + //濡傛灉缁撴潫鏃堕棿灏忎簬 褰撳墠鏃堕棿澧炲姞鎸囧畾鍒犻櫎鏃ユ湡锛屽垯鍒犻櫎 + .le(MemberCoupon::getEndTime, removeTime); + this.memberCouponService.remove(deleteWrapper); + + + } + +} diff --git a/lmk-job/src/main/java/cn/lili/handler/impl/goods/GoodsExecute.java b/lmk-job/src/main/java/cn/lili/handler/impl/goods/GoodsExecute.java new file mode 100644 index 0000000..6e57aeb --- /dev/null +++ b/lmk-job/src/main/java/cn/lili/handler/impl/goods/GoodsExecute.java @@ -0,0 +1,48 @@ +package cn.lili.handler.impl.goods; + +import cn.hutool.core.convert.Convert; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import cn.lili.handler.EveryDayExecute; +import cn.lili.modules.goods.service.GoodsService; +import cn.lili.modules.member.service.MemberEvaluationService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.Map; + +/** + * 鍟嗗搧瀹氭椂鍣� + * + * @author Chopper + * @since 2021/3/18 3:23 涓嬪崍 + */ +@Component +public class GoodsExecute implements EveryDayExecute { + /** + * 浼氬憳璇勪环 + */ + @Autowired + private MemberEvaluationService memberEvaluationService; + /** + * 鍟嗗搧 + */ + @Autowired + private GoodsService goodsService; + + /** + * 鏌ヨ宸蹭笂鏋剁殑鍟嗗搧鐨勮瘎浠锋暟閲忓苟璧嬪�� + */ + @Override + public void execute() { + + //鏌ヨ涓婃缁熻鍒版湰娆$殑璇勪环鏁伴噺 + List<Map<String, Object>> list = memberEvaluationService.memberEvaluationNum(DateUtil.yesterday(), new DateTime()); + + for (Map<String, Object> map : list) { + goodsService.addGoodsCommentNum(Convert.toInt(map.get("num").toString()), map.get("goods_id").toString()); + } + + } +} diff --git a/lmk-job/src/main/java/cn/lili/handler/impl/hotwords/HotWordsEveryDayTaskExecute.java b/lmk-job/src/main/java/cn/lili/handler/impl/hotwords/HotWordsEveryDayTaskExecute.java new file mode 100644 index 0000000..f299b93 --- /dev/null +++ b/lmk-job/src/main/java/cn/lili/handler/impl/hotwords/HotWordsEveryDayTaskExecute.java @@ -0,0 +1,86 @@ +package cn.lili.handler.impl.hotwords; + +import cn.hutool.json.JSONUtil; +import cn.lili.cache.Cache; +import cn.lili.cache.CachePrefix; +import cn.lili.handler.EveryDayExecute; +import cn.lili.modules.search.entity.dos.HotWordsHistory; +import cn.lili.modules.search.service.HotWordsHistoryService; +import cn.lili.modules.system.entity.dos.Setting; +import cn.lili.modules.system.entity.dto.HotWordsSetting; +import cn.lili.modules.system.entity.dto.HotWordsSettingItem; +import cn.lili.modules.system.entity.enums.SettingEnum; +import cn.lili.modules.system.service.SettingService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.DefaultTypedTuple; +import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; +import java.util.Set; + +/** + * @author paulG + * @since 2021/3/11 + **/ +@Slf4j +@Component +public class HotWordsEveryDayTaskExecute implements EveryDayExecute { + + @Autowired + private Cache cache; + + @Autowired + private HotWordsHistoryService hotWordsHistoryService; + @Autowired + private SettingService settingService; + + /** + * 鎵ц姣忔棩浠诲姟 + */ + @Override + public void execute() { + //鑾峰彇澶т簬0鍒嗙殑鐑瘝 + Set<DefaultTypedTuple> tuples = cache.zRangeByScore(CachePrefix.HOT_WORD.getPrefix(), 1, Integer.MAX_VALUE); + //濡傛灉浠诲姟涓嶄负绌� + if (!CollectionUtils.isEmpty(tuples)) { + + //鍥犱负鏄浜屽ぉ缁熻绗竴澶╃殑鏁版嵁锛屾墍浠ヨ繖閲岃幏鍙栨槰澶╁噷鏅ㄧ殑鏃堕棿 + Calendar calendar = Calendar.getInstance(); + calendar.set(Calendar.HOUR_OF_DAY, 0); + calendar.set(Calendar.SECOND, 0); + calendar.set(Calendar.MILLISECOND, 0); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - 1); + + //鎵归噺淇濆瓨鐑瘝 + List<HotWordsHistory> hotWordsHistories = new ArrayList<>(); + for (DefaultTypedTuple tuple : tuples) { + String keywords = (String) tuple.getValue(); + Double score = tuple.getScore(); + hotWordsHistories.add(new HotWordsHistory(keywords, score.intValue(), calendar.getTime())); + } + + hotWordsHistoryService.saveBatch(hotWordsHistories); + } + //绉婚櫎鏄ㄦ棩鐨勭儹鎼滆瘝 + cache.remove(CachePrefix.HOT_WORD.getPrefix()); + + //璁剧疆浠婃棩榛樿鐑瘝 + Setting setting = settingService.get(SettingEnum.HOT_WORDS.name()); + if (setting == null) { + return; + } + HotWordsSetting hotWordsSetting = JSONUtil.toBean(setting.getSettingValue(), HotWordsSetting.class); + List<HotWordsSettingItem> hotWordsSettingItems = hotWordsSetting.getHotWordsSettingItems(); + if (hotWordsSettingItems != null && !hotWordsSettingItems.isEmpty()) { + for (HotWordsSettingItem hotWordsSettingItem : hotWordsSettingItems) { + cache.zAdd(CachePrefix.HOT_WORD.getPrefix(), hotWordsSettingItem.getScore(), hotWordsSettingItem.getKeywords()); + } + } + } + +} diff --git a/lmk-job/src/main/java/cn/lili/handler/impl/order/CancelOrderTaskExecute.java b/lmk-job/src/main/java/cn/lili/handler/impl/order/CancelOrderTaskExecute.java new file mode 100644 index 0000000..371147f --- /dev/null +++ b/lmk-job/src/main/java/cn/lili/handler/impl/order/CancelOrderTaskExecute.java @@ -0,0 +1,61 @@ +package cn.lili.handler.impl.order; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import cn.hutool.json.JSONUtil; +import cn.lili.handler.EveryMinuteExecute; +import cn.lili.modules.order.order.entity.dos.Order; +import cn.lili.modules.order.order.entity.enums.OrderStatusEnum; +import cn.lili.modules.order.order.service.OrderService; +import cn.lili.modules.system.entity.dos.Setting; +import cn.lili.modules.system.entity.dto.OrderSetting; +import cn.lili.modules.system.entity.enums.SettingEnum; +import cn.lili.modules.system.service.SettingService; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * 璁㈠崟鑷姩鍙栨秷锛堟瘡鍒嗛挓鎵ц锛� + * + * @author paulG + * @since 2021/3/11 + **/ +@Slf4j +@Component +public class CancelOrderTaskExecute implements EveryMinuteExecute { + /** + * 璁㈠崟 + */ + @Autowired + private OrderService orderService; + /** + * 璁剧疆 + */ + @Autowired + private SettingService settingService; + + + @Override + public void execute() { + Setting setting = settingService.get(SettingEnum.ORDER_SETTING.name()); + OrderSetting orderSetting = JSONUtil.toBean(setting.getSettingValue(), OrderSetting.class); + if (orderSetting != null && orderSetting.getAutoCancel() != null) { + //璁㈠崟鑷姩鍙栨秷鏃堕棿 = 褰撳墠鏃堕棿 - 鑷姩鍙栨秷鏃堕棿鍒嗛挓鏁� + DateTime cancelTime = DateUtil.offsetMinute(DateUtil.date(), -orderSetting.getAutoCancel()); + LambdaQueryWrapper<Order> queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(Order::getOrderStatus, OrderStatusEnum.UNPAID.name()); + //璁㈠崟鍒涘缓鏃堕棿 <= 璁㈠崟鑷姩鍙栨秷鏃堕棿 + queryWrapper.le(Order::getCreateTime, cancelTime); + List<Order> list = orderService.list(queryWrapper); + List<String> cancelSnList = list.stream().map(Order::getSn).collect(Collectors.toList()); + for (String sn : cancelSnList) { + orderService.systemCancel(sn, "瓒呮椂鏈敮浠樿嚜鍔ㄥ彇娑�",false); + } + } + } +} diff --git a/lmk-job/src/main/java/cn/lili/handler/impl/order/OrderEveryDayTaskExecute.java b/lmk-job/src/main/java/cn/lili/handler/impl/order/OrderEveryDayTaskExecute.java new file mode 100644 index 0000000..40a1d6b --- /dev/null +++ b/lmk-job/src/main/java/cn/lili/handler/impl/order/OrderEveryDayTaskExecute.java @@ -0,0 +1,287 @@ +package cn.lili.handler.impl.order; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import cn.hutool.json.JSONUtil; +import cn.lili.common.enums.ResultCode; +import cn.lili.common.exception.ServiceException; +import cn.lili.handler.EveryDayExecute; +import cn.lili.modules.distribution.service.DistributionOrderService; +import cn.lili.modules.member.entity.dto.MemberEvaluationDTO; +import cn.lili.modules.member.entity.enums.EvaluationGradeEnum; +import cn.lili.modules.member.service.MemberEvaluationService; +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.OrderItemOperationDTO; +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.service.OrderItemService; +import cn.lili.modules.order.order.service.OrderService; +import cn.lili.modules.order.order.service.StoreFlowService; +import cn.lili.modules.store.entity.dto.StoreSettlementDay; +import cn.lili.modules.store.service.BillService; +import cn.lili.modules.store.service.StoreDetailService; +import cn.lili.modules.system.entity.dos.Setting; +import cn.lili.modules.system.entity.dto.OrderSetting; +import cn.lili.modules.system.entity.enums.SettingEnum; +import cn.lili.modules.system.service.SettingService; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +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 org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author paulG + * @since 2021/3/11 + **/ +@Slf4j +@Component + +public class OrderEveryDayTaskExecute implements EveryDayExecute { + + /** + * 璁㈠崟 + */ + @Autowired + private OrderService orderService; + /** + * 璁㈠崟璐х墿 + */ + @Autowired + private OrderItemService orderItemService; + /** + * 璁剧疆 + */ + @Autowired + private SettingService settingService; + /** + * 浼氬憳璇勪环 + */ + @Autowired + private MemberEvaluationService memberEvaluationService; + + @Autowired + private DistributionOrderService distributionOrderService; + + @Autowired + private StoreFlowService storeFlowService; + + /** + * 缁撶畻鍗� + */ + @Autowired + private BillService billService; + /** + * 搴楅摵璇︽儏 + */ + @Autowired + private StoreDetailService storeDetailService; + + /** + * 鎵ц姣忔棩浠诲姟 + */ + @Override + public void execute() { + + Setting setting = settingService.get(SettingEnum.ORDER_SETTING.name()); + //璁㈠崟璁剧疆 + OrderSetting orderSetting = JSONUtil.toBean(setting.getSettingValue(), OrderSetting.class); + if (orderSetting == null) { + throw new ServiceException(ResultCode.ORDER_SETTING_ERROR); + } + + try { + //鑷姩纭鏀惰揣 + completedOrder(orderSetting); + } catch (Exception e) { + log.error(e.getMessage(), e); + } + try { + //鑷姩濂借瘎 + memberEvaluation(orderSetting); + } catch (Exception e) { + log.error(e.getMessage(), e); + } + try { + //鍏抽棴鍏佽鍞悗鐢宠 + this.closeAfterSale(orderSetting); + } catch (Exception e) { + log.error(e.getMessage(), e); + } + try { + //鍏抽棴鍏佽鎶曡瘔 + closeComplaint(orderSetting); + } catch (Exception e) { + log.error(e.getMessage(), e); + } + + //淇敼鍒嗚处鐘舵�� + try { + storeFlowService.updateProfitSharingStatus(); + } catch (Exception e) { + log.error("淇敼鍒嗚处鐘舵�佸け璐�", e); + } + + //鐢熸垚搴楅摵缁撶畻鍗� + try { + createBill(); + } catch (Exception e) { + log.error("鐢熸垚搴楅摵缁撶畻鍗�", e); + } + + + } + + /** + * 鑷姩纭鏀惰幏锛岃鍗曞畬鎴� + * + * @param orderSetting 璁㈠崟璁剧疆 + */ + private void completedOrder(OrderSetting orderSetting) { + + //璁㈠崟鑷姩鏀惰揣鏃堕棿 = 褰撳墠鏃堕棿 - 鑷姩鏀惰揣鏃堕棿澶╂暟 + DateTime receiveTime = DateUtil.offsetDay(DateUtil.date(), -orderSetting.getAutoReceive()); + LambdaQueryWrapper<Order> queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(Order::getOrderStatus, OrderStatusEnum.DELIVERED.name()); + + //璁㈠崟鍙戣揣鏃堕棿 >= 璁㈠崟鑷姩鏀惰揣鏃堕棿 + queryWrapper.le(Order::getLogisticsTime, receiveTime); + List<Order> list = orderService.list(queryWrapper); + + try { + //鍒ゆ柇鏄惁鏈夌鍚堟潯浠剁殑璁㈠崟锛岃繘琛岃鍗曞畬鎴愬鐞� + if (!list.isEmpty()) { + List<String> receiveSnList = list.stream().map(Order::getSn).collect(Collectors.toList()); + for (String orderSn : receiveSnList) { + orderService.systemComplete(orderSn); + } + } + } catch (Exception e) { + log.error(e.getMessage(), e); + } + } + + /** + * 鑷姩濂借瘎 + * + * @param orderSetting 璁㈠崟璁剧疆 + */ + private void memberEvaluation(OrderSetting orderSetting) { + //璁㈠崟鑷姩鏀惰揣鏃堕棿 = 褰撳墠鏃堕棿 - 鑷姩鏀惰揣鏃堕棿澶╂暟 + DateTime receiveTime = DateUtil.offsetDay(DateUtil.date(), -orderSetting.getAutoEvaluation()); + + //璁㈠崟瀹屾垚鏃堕棿 <= 璁㈠崟鑷姩濂借瘎鏃堕棿 + OrderItemOperationDTO orderItemOperationDTO = + OrderItemOperationDTO.builder().receiveTime(receiveTime).commentStatus(CommentStatusEnum.UNFINISHED.name()) + .build(); + List<OrderItem> orderItems = orderItemService.waitOperationOrderItem(orderItemOperationDTO); + + //鍒ゆ柇鏄惁鏈夌鍚堟潯浠剁殑璁㈠崟锛岃繘琛岃嚜鍔ㄨ瘎浠峰鐞� + if (!orderItems.isEmpty()) { + for (OrderItem orderItem : orderItems) { + MemberEvaluationDTO memberEvaluationDTO = new MemberEvaluationDTO(); + memberEvaluationDTO.setOrderItemSn(orderItem.getSn()); + memberEvaluationDTO.setContent("绯荤粺榛樿濂借瘎"); + memberEvaluationDTO.setGoodsId(orderItem.getGoodsId()); + memberEvaluationDTO.setSkuId(orderItem.getSkuId()); + memberEvaluationDTO.setGrade(EvaluationGradeEnum.GOOD.name()); + memberEvaluationDTO.setDeliveryScore(5); + memberEvaluationDTO.setDescriptionScore(5); + memberEvaluationDTO.setServiceScore(5); + + try { + memberEvaluationService.addMemberEvaluation(memberEvaluationDTO, false); + } catch (Exception e) { + // 淇敼璁㈠崟璐х墿璇勪环鐘舵�佷负宸茶瘎浠烽伩鍏嶆棤闄愯皟鐢ㄨ瘎浠峰紓甯� + orderItemService.updateCommentStatus(orderItem.getSn(), CommentStatusEnum.FINISHED); + log.error(e.getMessage(), e); + } + } + } + } + + /** + * 鍏抽棴鍏佽鍞悗鐢宠 + * + * @param orderSetting 璁㈠崟璁剧疆 + */ + @Transactional(rollbackFor = Exception.class) + public void closeAfterSale(OrderSetting orderSetting) { + //璁㈠崟鍏抽棴鍞悗鐢宠鏃堕棿 = 褰撳墠鏃堕棿 - 鑷姩鍏抽棴鍞悗鐢宠澶╂暟 + DateTime receiveTime = DateUtil.offsetDay(DateUtil.date(), -orderSetting.getCloseAfterSale()); + +// OrderItemOperationDTO build = OrderItemOperationDTO.builder().receiveTime(receiveTime) +// .afterSaleStatus(OrderItemAfterSaleStatusEnum.NOT_APPLIED.name()).build(); +// List<OrderItem> orderItems = orderItemService.waitOperationOrderItem(build); + //鍏抽棴鍞悗璁㈠崟=鏈敭鍚庤鍗�+灏忎簬璁㈠崟鍏抽棴鍞悗鐢宠鏃堕棿 + orderItemService.expiredAfterSaleStatus(receiveTime); + + } + + /** + * 鍏抽棴鍏佽浜ゆ槗鎶曡瘔 + * + * @param orderSetting 璁㈠崟璁剧疆 + */ + private void closeComplaint(OrderSetting orderSetting) { + + //涓�0鍒欎笉闄愬埗 + if (orderSetting.getCloseComplaint() == null || orderSetting.getCloseComplaint() == 0) { + return; + } + //璁㈠崟鍏抽棴浜ゆ槗鎶曡瘔鐢宠鏃堕棿 = 褰撳墠鏃堕棿 - 鑷姩鍏抽棴浜ゆ槗鎶曡瘔鐢宠澶╂暟 + DateTime receiveTime = DateUtil.offsetDay(DateUtil.date(), -orderSetting.getCloseComplaint()); + + //鍏抽棴鍞悗璁㈠崟=鏈敭鍚庤鍗�+灏忎簬璁㈠崟鍏抽棴鍞悗鐢宠鏃堕棿 + OrderItemOperationDTO build = OrderItemOperationDTO.builder().receiveTime(receiveTime) + .complainStatus(OrderComplaintStatusEnum.NO_APPLY.name()).build(); + List<OrderItem> orderItems = orderItemService.waitOperationOrderItem(build); + + //鍒ゆ柇鏄惁鏈夌鍚堟潯浠剁殑璁㈠崟锛屽叧闂厑璁稿敭鍚庣敵璇峰鐞� + if (!orderItems.isEmpty()) { + + //鑾峰彇璁㈠崟璐х墿ID + List<String> orderItemIdList = orderItems.stream().map(OrderItem::getId).collect(Collectors.toList()); + + //淇敼璁㈠崟鎶曡瘔鐘舵�� + LambdaUpdateWrapper<OrderItem> lambdaUpdateWrapper = + new LambdaUpdateWrapper<OrderItem>().set(OrderItem::getComplainStatus, + OrderItemAfterSaleStatusEnum.EXPIRED.name()).in(OrderItem::getId, orderItemIdList); + orderItemService.update(lambdaUpdateWrapper); + } + + } + + /** + * 1.鏌ヨ浠婃棩寰呯粨绠楃殑鍟嗗 + * 2.鏌ヨ鍟嗗涓婃缁撶畻鏃ユ湡锛岀敓鎴愭湰娆$粨绠楀崟 + * 3.璁板綍鍟嗗缁撶畻鏃� + */ + private void createBill() { + //鑾峰彇褰撳墠澶╂暟 + int day = DateUtil.date().dayOfMonth(); + + //鑾峰彇寰呯粨绠楀晢瀹跺垪琛� + List<StoreSettlementDay> storeList = storeDetailService.getSettlementStore(day); + + //鑾峰彇褰撳墠鏃堕棿 + DateTime endTime = DateUtil.date(); + //鎵归噺鍟嗗缁撶畻 + for (StoreSettlementDay storeSettlementDay : storeList) { + + //鐢熸垚缁撶畻鍗� + billService.createBill(storeSettlementDay.getStoreId(), storeSettlementDay.getSettlementDay(), endTime); + + //淇敼搴楅摵缁撶畻鏃堕棿 + storeDetailService.updateSettlementDay(storeSettlementDay.getStoreId(), endTime); + } + } + +} diff --git a/lmk-job/src/main/java/cn/lili/handler/impl/order/RechargeOrderTaskExecute.java b/lmk-job/src/main/java/cn/lili/handler/impl/order/RechargeOrderTaskExecute.java new file mode 100644 index 0000000..7e44a39 --- /dev/null +++ b/lmk-job/src/main/java/cn/lili/handler/impl/order/RechargeOrderTaskExecute.java @@ -0,0 +1,61 @@ +package cn.lili.handler.impl.order; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import cn.hutool.json.JSONUtil; +import cn.lili.handler.EveryMinuteExecute; +import cn.lili.modules.order.order.entity.enums.PayStatusEnum; +import cn.lili.modules.system.entity.dos.Setting; +import cn.lili.modules.system.entity.dto.OrderSetting; +import cn.lili.modules.system.entity.enums.SettingEnum; +import cn.lili.modules.system.service.SettingService; +import cn.lili.modules.wallet.entity.dos.Recharge; +import cn.lili.modules.wallet.service.RechargeService; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * 鍏呭�艰鍗曡嚜鍔ㄥ彇娑堬紙姣忓垎閽熸墽琛岋級 + * + * @author zhuhai + * @since 2021/3/11 + **/ +@Slf4j +@Component +public class RechargeOrderTaskExecute implements EveryMinuteExecute { + /** + * 鍏呭�� + */ + @Autowired + private RechargeService rechargeService; + /** + * 璁剧疆 + */ + @Autowired + private SettingService settingService; + + + @Override + public void execute() { + Setting setting = settingService.get(SettingEnum.ORDER_SETTING.name()); + OrderSetting orderSetting = JSONUtil.toBean(setting.getSettingValue(), OrderSetting.class); + if (orderSetting != null && orderSetting.getAutoCancel() != null) { + //鍏呭�艰鍗曡嚜鍔ㄥ彇娑堟椂闂� = 褰撳墠鏃堕棿 - 鑷姩鍙栨秷鏃堕棿鍒嗛挓鏁� + DateTime cancelTime = DateUtil.offsetMinute(DateUtil.date(), -orderSetting.getAutoCancel()); + LambdaQueryWrapper<Recharge> queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(Recharge::getPayStatus, PayStatusEnum.UNPAID.name()); + //鍏呭�艰鍗曞垱寤烘椂闂� <= 璁㈠崟鑷姩鍙栨秷鏃堕棿 + queryWrapper.le(Recharge::getCreateTime, cancelTime); + List<Recharge> list = rechargeService.list(queryWrapper); + List<String> cancelSnList = list.stream().map(Recharge::getRechargeSn).collect(Collectors.toList()); + for (String sn : cancelSnList) { + rechargeService.rechargeOrderCancel(sn); + } + } + } +} diff --git a/lmk-job/src/main/java/cn/lili/handler/impl/promotion/MemberCouponSignEverydayExecute.java b/lmk-job/src/main/java/cn/lili/handler/impl/promotion/MemberCouponSignEverydayExecute.java new file mode 100644 index 0000000..1349183 --- /dev/null +++ b/lmk-job/src/main/java/cn/lili/handler/impl/promotion/MemberCouponSignEverydayExecute.java @@ -0,0 +1,35 @@ +package cn.lili.handler.impl.promotion; + +import cn.lili.handler.EveryDayExecute; +import cn.lili.modules.promotion.service.MemberCouponSignService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * 淇冮攢娲诲姩姣忔棩瀹氭椂鍣� + * + * @author Chopper + * @since 2021/3/18 3:23 涓嬪崍 + */ +@Slf4j +@Component +public class MemberCouponSignEverydayExecute implements EveryDayExecute { + + @Autowired + private MemberCouponSignService memberCouponSignService; + + /** + * 灏嗗凡杩囨湡鐨勪績閿�娲诲姩缃负缁撴潫 + */ + @Override + public void execute() { + try { + memberCouponSignService.clean(); + } catch (Exception e) { + log.error("娓呴櫎棰嗗彇浼樻儬鍒告爣璁板紓甯�", e); + } + + } + +} diff --git a/lmk-job/src/main/java/cn/lili/handler/impl/promotion/PromotionEverydayExecute.java b/lmk-job/src/main/java/cn/lili/handler/impl/promotion/PromotionEverydayExecute.java new file mode 100644 index 0000000..626fe1c --- /dev/null +++ b/lmk-job/src/main/java/cn/lili/handler/impl/promotion/PromotionEverydayExecute.java @@ -0,0 +1,85 @@ +package cn.lili.handler.impl.promotion; + +import cn.lili.common.enums.PromotionTypeEnum; +import cn.lili.handler.EveryDayExecute; +import cn.lili.modules.promotion.entity.dos.Seckill; +import cn.lili.modules.promotion.service.SeckillService; +import cn.lili.modules.promotion.tools.PromotionTools; +import cn.lili.modules.search.service.EsGoodsIndexService; +import cn.lili.modules.system.entity.dos.Setting; +import cn.lili.modules.system.entity.dto.SeckillSetting; +import cn.lili.modules.system.entity.enums.SettingEnum; +import cn.lili.modules.system.service.SettingService; +import com.google.gson.Gson; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * 淇冮攢娲诲姩姣忔棩瀹氭椂鍣� + * + * @author Chopper + * @since 2021/3/18 3:23 涓嬪崍 + */ +@Slf4j +@Component +public class PromotionEverydayExecute implements EveryDayExecute { + + /** + * ES鍟嗗搧绱㈠紩 + */ + @Autowired + private EsGoodsIndexService esGoodsIndexService; + /** + * 绯荤粺璁剧疆 + */ + @Autowired + private SettingService settingService; + /** + * 绉掓潃娲诲姩 + */ + @Autowired + private SeckillService seckillService; + + /** + * 灏嗗凡杩囨湡鐨勪績閿�娲诲姩缃负缁撴潫 + */ + @Override + public void execute() { + try { + //娓呴櫎鎵�鏈夊晢鍝佺储寮曠殑鏃犳晥淇冮攢娲诲姩 + this.esGoodsIndexService.cleanInvalidPromotion(); + } catch (Exception e) { + log.error("娓呮鍟嗗搧绱㈠紩涓棤鏁堜績閿�寮傚父", e); + } + try { + //瀹氭椂鍒涘缓娲诲姩 + addSeckill(); + } catch (Exception e) { + log.error("绉掓潃娲诲姩娣诲姞寮傚父", e); + } + + } + + /** + * 娣诲姞绉掓潃娲诲姩 + * 浠庣郴缁熻缃腑鑾峰彇绉掓潃娲诲姩鐨勯厤缃� + * 娣诲姞鏄庡ぉ鍚庣殑绉掓潃娲诲姩 + */ + private void addSeckill() { + Setting setting = settingService.get(SettingEnum.SECKILL_SETTING.name()); + SeckillSetting seckillSetting = new Gson().fromJson(setting.getSettingValue(), SeckillSetting.class); + log.info("鐢熸垚绉掓潃娲诲姩璁剧疆锛歿}", seckillSetting); + for (int i = 1; i <= SeckillService.PRE_CREATION; i++) { + Seckill seckill = new Seckill(i, seckillSetting.getHours(), seckillSetting.getSeckillRule()); + seckill.setApplyEndTime(null); + + //濡傛灉宸茬粡瀛樺湪淇冮攢锛屽垯涓嶅啀娆′繚瀛� + if (seckillService.list( + PromotionTools.checkActiveTime(seckill.getStartTime(), seckill.getEndTime(), PromotionTypeEnum.SECKILL, null, seckill.getId())).isEmpty()) { + boolean result = seckillService.savePromotions(seckill); + log.info("鐢熸垚绉掓潃娲诲姩鍙傛暟锛歿},缁撴灉锛歿}", seckill, result); + } + } + } +} diff --git a/lmk-job/src/main/java/cn/lili/handler/impl/statistics/MemberStatisticsExecute.java b/lmk-job/src/main/java/cn/lili/handler/impl/statistics/MemberStatisticsExecute.java new file mode 100644 index 0000000..07df271 --- /dev/null +++ b/lmk-job/src/main/java/cn/lili/handler/impl/statistics/MemberStatisticsExecute.java @@ -0,0 +1,55 @@ +package cn.lili.handler.impl.statistics; + +import cn.lili.handler.EveryDayExecute; +import cn.lili.modules.statistics.entity.dos.MemberStatisticsData; +import cn.lili.modules.statistics.service.MemberStatisticsService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.Calendar; +import java.util.Date; + +/** + * 浼氬憳鏁版嵁缁熻 + * + * @author Chopper + * @since 2021-03-02 14:56 + */ +@Slf4j +@Component +public class MemberStatisticsExecute implements EveryDayExecute { + + /** + * 浼氬憳缁熻 + */ + @Autowired + private MemberStatisticsService memberStatisticsService; + + @Override + public void execute() { + + try { + //缁熻鐨勬椂闂达紙寮�濮嬨�傜粨鏉熸椂闂达級 + Date startTime, endTime; + //鍒濆鍊� + Calendar calendar = Calendar.getInstance(); + calendar.set(Calendar.SECOND, 0); + calendar.set(Calendar.MILLISECOND, 1); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.HOUR_OF_DAY, 0); + endTime = calendar.getTime(); + //-1澶╋紝鍗充负寮�濮嬫椂闂� + calendar.set(Calendar.DAY_OF_MONTH, calendar.get(Calendar.DAY_OF_MONTH) - 1); + startTime = calendar.getTime(); + MemberStatisticsData memberStatisticsData = new MemberStatisticsData(); + memberStatisticsData.setMemberCount(memberStatisticsService.memberCount(endTime)); + memberStatisticsData.setCreateDate(startTime); + memberStatisticsData.setActiveQuantity(memberStatisticsService.activeQuantity(startTime)); + memberStatisticsData.setNewlyAdded(memberStatisticsService.newlyAdded(startTime, endTime)); + memberStatisticsService.save(memberStatisticsData); + } catch (Exception e) { + log.error("姣忔棩浼氬憳缁熻鍔熻兘寮傚父锛�", e); + } + } +} \ No newline at end of file diff --git a/lmk-job/src/main/java/cn/lili/handler/impl/statistics/OnlineMemberStatistics.java b/lmk-job/src/main/java/cn/lili/handler/impl/statistics/OnlineMemberStatistics.java new file mode 100644 index 0000000..32d05a6 --- /dev/null +++ b/lmk-job/src/main/java/cn/lili/handler/impl/statistics/OnlineMemberStatistics.java @@ -0,0 +1,114 @@ +package cn.lili.handler.impl.statistics; + +import cn.lili.cache.Cache; +import cn.lili.cache.CachePrefix; +import cn.lili.common.properties.StatisticsProperties; +import cn.lili.common.security.enums.UserEnums; +import cn.lili.handler.EveryHourExecute; +import cn.lili.modules.statistics.entity.vo.OnlineMemberVO; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.List; +import java.util.concurrent.atomic.AtomicReference; +import java.util.stream.Collectors; + +/** + * 瀹炴椂鍦ㄧ嚎浜烘暟缁熻 + * + * @author Chopper + * @since 2021-02-21 09:47 + */ +@Component +public class OnlineMemberStatistics implements EveryHourExecute { + + /** + * 缂撳瓨 + */ + @Autowired + private Cache<List<OnlineMemberVO>> cache; + /** + * 缁熻灏忔椂 + */ + @Autowired + private StatisticsProperties statisticsProperties; + + + @Override + public void execute() { + + Calendar calendar = Calendar.getInstance(); + + List<OnlineMemberVO> onlineMemberVOS = cache.get(CachePrefix.ONLINE_MEMBER.getPrefix()); + + if (onlineMemberVOS == null) { + onlineMemberVOS = new ArrayList<>(); + } + + //杩囨护 鏈夋晥缁熻鏃堕棿 + calendar.set(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY) - statisticsProperties.getOnlineMember()); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); + calendar.set(Calendar.MILLISECOND, 0); + + Calendar finalCalendar = calendar; + + AtomicReference<Integer> lastNum = new AtomicReference<>(0); + onlineMemberVOS = onlineMemberVOS.stream() + .filter(onlineMemberVO -> { + //濡傛灉涓鸿繃婊ゅ弬鏁帮紝鍒欒褰曚负杩囨湡鍙傛暟锛屽垯涓虹粺涓�鏃舵涓婁竴鍛ㄦ湡鐨勫湪绾夸汉鏁� + if (!onlineMemberVO.getDate().after(finalCalendar.getTime())) { + lastNum.set(onlineMemberVO.getNum()); + } + return onlineMemberVO.getDate().after(finalCalendar.getTime()); + }) + .collect(Collectors.toList()); + + //璁″叆鏂版暟鎹� + calendar = Calendar.getInstance(); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); + calendar.set(Calendar.MILLISECOND, 0); + onlineMemberVOS.add(new OnlineMemberVO(calendar.getTime(), cache.keys(CachePrefix.ACCESS_TOKEN.getPrefix(UserEnums.MEMBER) + "*").size(), + lastNum.get())); + + //鍐欏叆缂撳瓨 + cache.put(CachePrefix.ONLINE_MEMBER.getPrefix(), onlineMemberVOS); + } + + + /** + * 鎵嬪姩璁剧疆鏌愪竴鏃堕棿锛屾椿璺冧汉鏁� + * + * @param time 鏃堕棿 + * @param num 浜烘暟 + */ + public void execute(Date time, Integer num) { + + List<OnlineMemberVO> onlineMemberVOS = cache.get(CachePrefix.ONLINE_MEMBER.getPrefix()); + + if (onlineMemberVOS == null) { + onlineMemberVOS = new ArrayList<>(); + } + + Calendar calendar = Calendar.getInstance(); + calendar.setTime(time); + //杩囨护 鏈夋晥缁熻鏃堕棿 + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); + calendar.set(Calendar.MILLISECOND, 0); + calendar.set(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY) - 48); + + onlineMemberVOS = onlineMemberVOS.stream() + .filter(onlineMemberVO -> onlineMemberVO.getDate().after(calendar.getTime())) + .collect(Collectors.toList()); + onlineMemberVOS.add(new OnlineMemberVO(time, num, num)); + + //鍐欏叆缂撳瓨 + cache.put(CachePrefix.ONLINE_MEMBER.getPrefix(), onlineMemberVOS); + } + +} diff --git a/lmk-job/src/main/java/cn/lili/handler/impl/store/StoreExecute.java b/lmk-job/src/main/java/cn/lili/handler/impl/store/StoreExecute.java new file mode 100644 index 0000000..f6454c5 --- /dev/null +++ b/lmk-job/src/main/java/cn/lili/handler/impl/store/StoreExecute.java @@ -0,0 +1,49 @@ +package cn.lili.handler.impl.store; + +import cn.lili.handler.EveryDayExecute; +import cn.lili.modules.goods.service.GoodsSkuService; +import cn.lili.modules.store.entity.dos.Store; +import cn.lili.modules.store.entity.enums.StoreStatusEnum; +import cn.lili.modules.store.service.StoreService; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * 搴楅摵淇℃伅鏇存柊 + * + * @author Chopper + * @since 2021/3/15 5:30 涓嬪崍 + */ +@Component +@Slf4j +public class StoreExecute implements EveryDayExecute { + /** + * 搴楅摵 + */ + @Autowired + private StoreService storeService; + + @Autowired + private GoodsSkuService goodsSkuService; + + @Override + public void execute() { + //鑾峰彇鎵�鏈夊紑鍚殑搴楅摵 + List<Store> storeList = storeService.list(new LambdaQueryWrapper<Store>().eq(Store::getStoreDisable, StoreStatusEnum.OPEN.name())); + + for (Store store : storeList) { + try { + Long num = goodsSkuService.countSkuNum(store.getId()); + storeService.updateStoreGoodsNum(store.getId(), num); + } catch (Exception e) { + log.error("搴楅摵id涓簕},鏇存柊鍟嗗搧鏁伴噺澶辫触", store.getId(), e); + } + } + + + } +} diff --git a/lmk-job/src/main/java/cn/lili/handler/impl/store/StoreRatingExecute.java b/lmk-job/src/main/java/cn/lili/handler/impl/store/StoreRatingExecute.java new file mode 100644 index 0000000..67d90eb --- /dev/null +++ b/lmk-job/src/main/java/cn/lili/handler/impl/store/StoreRatingExecute.java @@ -0,0 +1,60 @@ +package cn.lili.handler.impl.store; + +import cn.lili.common.enums.SwitchEnum; +import cn.lili.handler.EveryDayExecute; +import cn.lili.modules.member.entity.vo.StoreRatingVO; +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; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * 搴楅摵璇勫垎 + * + * @author Chopper + * @since 2021/3/15 5:30 涓嬪崍 + */ +@Component +public class StoreRatingExecute implements EveryDayExecute { + /** + * 搴楅摵 + */ + @Autowired + private StoreService storeService; + /** + * 浼氬憳璇勪环 + */ + @Autowired + private MemberEvaluationService memberEvaluationService; + + + @Override + public void execute() { + //鑾峰彇鎵�鏈夊紑鍚殑搴楅摵 + List<Store> storeList = storeService.list(new LambdaQueryWrapper<Store>().eq(Store::getStoreDisable, StoreStatusEnum.OPEN.name())); + for (Store store : storeList) { + //搴楅摵鎵�鏈夊紑鍚殑璇勪环 + StoreRatingVO storeRatingVO = memberEvaluationService.getStoreRatingVO(store.getId(), SwitchEnum.OPEN.name()); + + if (storeRatingVO != null) { + //淇濆瓨璇勫垎 + LambdaUpdateWrapper<Store> lambdaUpdateWrapper = Wrappers.lambdaUpdate(); + lambdaUpdateWrapper.eq(Store::getId, store.getId()); + lambdaUpdateWrapper.set(Store::getDescriptionScore, storeRatingVO.getDescriptionScore()); + lambdaUpdateWrapper.set(Store::getDeliveryScore, storeRatingVO.getDeliveryScore()); + lambdaUpdateWrapper.set(Store::getServiceScore, storeRatingVO.getServiceScore()); + storeService.update(lambdaUpdateWrapper); + } + + } + + + } +} diff --git a/lmk-job/src/main/java/cn/lili/handler/impl/view/PageViewStatisticsExecute.java b/lmk-job/src/main/java/cn/lili/handler/impl/view/PageViewStatisticsExecute.java new file mode 100644 index 0000000..8ea96ca --- /dev/null +++ b/lmk-job/src/main/java/cn/lili/handler/impl/view/PageViewStatisticsExecute.java @@ -0,0 +1,195 @@ +package cn.lili.handler.impl.view; + +import cn.hutool.core.convert.Convert; +import cn.lili.cache.Cache; +import cn.lili.cache.CachePrefix; +import cn.lili.common.utils.BeanUtil; +import cn.lili.handler.EveryDayExecute; +import cn.lili.modules.statistics.entity.dos.PlatformViewData; +import cn.lili.modules.statistics.service.PlatformViewService; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.List; + +/** + * 缁熻 鍏ュ簱 + * + * @author Chopper + * @since 2021-01-15 18:20 + */ +@Slf4j +@Component +public class PageViewStatisticsExecute implements EveryDayExecute { + /** + * 缂撳瓨 + */ + @Autowired + private Cache cache; + /** + * 骞冲彴PV缁熻 + */ + @Autowired + private PlatformViewService platformViewService; + + @Override + public void execute() { + + //1銆佺紦瀛榢eys 妯$硦鍖归厤 + //2銆佽繃婊や粖鏃ョ殑鏁版嵁锛屽嵆浠婂ぉ鍙兘缁熻浠婃棩浠ュ墠鐨勬暟鎹� + //4瀵筴ey value 鍒嗗埆浠h〃骞冲彴PV銆佸钩鍙癠V銆佸簵閾篜V銆佸簵閾篣V + List<String> pvKeys = filterKeys(cache.keys(CachePrefix.PV.getPrefix() + "*")); + List<Integer> pvValues = cache.multiGet(pvKeys); + + List<String> storePVKeys = filterKeys(cache.keys(CachePrefix.STORE_PV.getPrefix() + "*")); + List<Integer> storePvValues = cache.multiGet(storePVKeys); + + //澶囦唤UV鏁版嵁锛岃繖閲岃祴鍊间箣鍚庯紝浼氳鍒犻櫎 + List<String> uvKeys = new ArrayList<>(); + List<String> storeUvKeys = new ArrayList<>(); + + log.debug("寮�濮嬬粺璁″钩鍙版暟鎹紝PV鍏辫銆恵}銆戞潯", pvKeys.size()); + log.debug("寮�濮嬬粺璁″簵閾烘暟鎹紝PV鍏辫銆恵}銆戞潯", storePvValues.size()); + + //瀹氫箟瑕佺粺璁$殑鏁版嵁 + List<PlatformViewData> platformViewDataList = new ArrayList<>(); + + //PV 缁熻 + if (pvKeys.size() > 0) { + for (int i = 0; i < pvKeys.size(); i++) { + String key = pvKeys.get(i); + PageViewStatistics pageViewStatistics = new PageViewStatistics(key); + PlatformViewData platformPVData = new PlatformViewData(); + BeanUtil.copyProperties(pageViewStatistics, platformPVData); + platformPVData.setPvNum(pvValues.get(i).longValue()); + //鏍规嵁pvkey 鑾峰彇 uvkey + String uvKey = getUvKey(key); + uvKeys.add(uvKey); + platformPVData.setUvNum(cache.counter(uvKey)); + platformPVData.setStoreId("-1"); + platformViewDataList.add(platformPVData); + } + batchSave(pvKeys, uvKeys, platformViewDataList); + } + //搴楅摵 PV 缁熻 + if (storePVKeys.size() > 0) { + platformViewDataList = new ArrayList<>(); + for (int i = 0; i < storePVKeys.size(); i++) { + String key = storePVKeys.get(i); + PageViewStatistics pageViewStatistics = new PageViewStatistics(key); + PlatformViewData storePVData = new PlatformViewData(); + BeanUtil.copyProperties(pageViewStatistics, storePVData); + storePVData.setPvNum(storePvValues.get(i).longValue()); + //鏍规嵁pvkey 鑾峰彇 uvkey + String uvKey = getUvKey(key); + uvKeys.add(uvKey); + storePVData.setUvNum(cache.counter(uvKey)); + platformViewDataList.add(storePVData); + } + batchSave(storePVKeys, storeUvKeys, platformViewDataList); + } + } + + /** + * 鏍规嵁缂撳瓨鐨凱Vkey 鑾峰彇瀵瑰簲鐨刄Vkey + * + * @param key + * @return + */ + private String getUvKey(String key) { + if (StringUtils.isNotEmpty(key)) { + + key = key.replace(CachePrefix.PV.getPrefix(), CachePrefix.UV.getPrefix()); + key = key.replace(CachePrefix.STORE_PV.getPrefix(), CachePrefix.STORE_UV.getPrefix()); + return key; + } + return key; + } + + /** + * 鎵归噺淇濆瓨鏁版嵁&&娓呴櫎淇濆瓨鏁版嵁鐨勭紦瀛� + * + * @param pvKeys PV key + * @param uvKeys UV key + * @param platformViewData DOS + */ + @Transactional(rollbackFor = Exception.class) + void batchSave(List<String> pvKeys, List<String> uvKeys, List<PlatformViewData> platformViewData) { + log.debug("鎵归噺淇濆瓨娴侀噺鏁版嵁锛屽叡璁°�恵}銆戞潯", platformViewData.size()); + platformViewService.saveBatch(platformViewData); + //鎵归噺鍒犻櫎缂撳瓨key + cache.multiDel(pvKeys); + cache.multiDel(uvKeys); + log.debug("娴侀噺鏁版嵁淇濆瓨瀹屾垚"); + } + + + /** + * 杩囨护缂撳瓨key + * + * @param keys 缂撳瓨key闆嗗悎 + */ + private static List<String> filterKeys(List<String> keys) { + + //鍙粺璁′竴澶╁墠鐨勬暟鎹� + Calendar calendar = Calendar.getInstance(); + calendar.set(Calendar.HOUR_OF_DAY, -24); + + List<String> result = new ArrayList<>(); + for (String key : keys) { + PageViewStatistics temp = new PageViewStatistics(key); + //濡傛灉闇�瑕佺粺璁★紝鍒欏皢key鍐欏叆闆嗗悎 + if (temp.getDate().before(calendar.getTime())) { + result.add(key); + } + } + + return result; + } + +} + +/** + * 鏍规嵁缂撳瓨key 鑾峰彇鍏朵腑闇�瑕佺殑鍙傛暟锛屽勾鏈堟棩锛屼互鍙婂簵閾轰俊鎭� + */ +@Data +class PageViewStatistics { + /** + * 骞� 銆� 鏈� 銆� 鏃� 銆� 搴楅摵id + */ + private Date date; + private String storeId; + + public PageViewStatistics(String str) { + //灏嗗瓧绗︿覆瑙f瀽鎴愰渶瑕佺殑瀵硅薄 + str = str.substring(str.indexOf("}") + 2); + String[] dateStr = str.split("-"); + Integer year = Convert.toInt(dateStr[0]); + Integer month = Convert.toInt(dateStr[1]); + Integer day; + //鏄惁鏈夊簵閾篿d + if (dateStr.length > 3) { + day = Convert.toInt(dateStr[2]); + this.storeId = dateStr[3]; + } else { + day = Convert.toInt(dateStr[2]); + } + Calendar calendar = Calendar.getInstance(); + calendar.set(Calendar.YEAR, year); + calendar.set(Calendar.MONTH, month - 1); + calendar.set(Calendar.DAY_OF_MONTH, day); + calendar.set(Calendar.HOUR_OF_DAY, 0); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); + calendar.set(Calendar.MILLISECOND, 0); + this.date = calendar.getTime(); + } + +} diff --git a/lmk-job/src/main/java/cn/lili/job/TimedTaskJobHandler.java b/lmk-job/src/main/java/cn/lili/job/TimedTaskJobHandler.java new file mode 100644 index 0000000..4cc8716 --- /dev/null +++ b/lmk-job/src/main/java/cn/lili/job/TimedTaskJobHandler.java @@ -0,0 +1,104 @@ +package cn.lili.job; + +import cn.lili.handler.EveryDayExecute; +import cn.lili.handler.EveryHourExecute; +import cn.lili.handler.EveryMinuteExecute; +import com.xxl.job.core.biz.model.ReturnT; +import com.xxl.job.core.handler.annotation.XxlJob; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * 瀹氭椂鍣ㄤ换鍔� + * + * @author Chopper + * @version v1.0 + * 2020-12-24 11:51 + */ +@Slf4j +@Component +public class TimedTaskJobHandler { + + @Autowired(required = false) + private List<EveryMinuteExecute> everyMinuteExecutes; + + + @Autowired(required = false) + private List<EveryHourExecute> everyHourExecutes; + + + @Autowired(required = false) + private List<EveryDayExecute> everyDayExecutes; + + /** + * 姣忓垎閽熶换鍔� + * + * @throws Exception + */ + @XxlJob("everyMinuteExecute") + public ReturnT<String> everyMinuteExecute(String param) { + log.info("姣忓垎閽熶换鍔℃墽琛�"); + if (everyMinuteExecutes == null || everyMinuteExecutes.size() == 0) { + return ReturnT.SUCCESS; + } + + for (int i = 0; i < everyMinuteExecutes.size(); i++) { + try { + everyMinuteExecutes.get(i).execute(); + } catch (Exception e) { + log.error("姣忓垎閽熶换鍔″紓甯�", e); + } + } + return ReturnT.SUCCESS; + } + + /** + * 姣忓皬鏃朵换鍔� + * + * @throws Exception + */ + @XxlJob("everyHourExecuteJobHandler") + public ReturnT<String> everyHourExecuteJobHandler(String param) { + log.info("姣忓皬鏃朵换鍔℃墽琛�"); + if (everyHourExecutes == null || everyHourExecutes.size() == 0) { + return ReturnT.SUCCESS; + } + + for (int i = 0; i < everyHourExecutes.size(); i++) { + try { + everyHourExecutes.get(i).execute(); + } catch (Exception e) { + log.error("姣忓皬鏃朵换鍔″紓甯�", e); + } + } + return ReturnT.SUCCESS; + } + + /** + * 姣忔棩浠诲姟 + * + * @throws Exception + */ + @XxlJob("everyDayExecuteJobHandler") + public ReturnT<String> everyDayExecuteJobHandler(String param) { + + log.info("姣忔棩浠诲姟鎵ц"); + if (everyDayExecutes == null || everyDayExecutes.size() == 0) { + return ReturnT.SUCCESS; + } + + for (int i = 0; i < everyDayExecutes.size(); i++) { + try { + everyDayExecutes.get(i).execute(); + } catch (Exception e) { + log.error("姣忔棩浠诲姟寮傚父", e); + } + } + return ReturnT.SUCCESS; + } + + +} diff --git a/manager-api/src/main/java/cn/lili/controller/lmk/CustomerController.java b/manager-api/src/main/java/cn/lili/controller/lmk/CustomerController.java index ddf4156..f253194 100644 --- a/manager-api/src/main/java/cn/lili/controller/lmk/CustomerController.java +++ b/manager-api/src/main/java/cn/lili/controller/lmk/CustomerController.java @@ -1,12 +1,9 @@ package cn.lili.controller.lmk; import cn.lili.base.Result; -import cn.lili.common.enums.ResultUtil; -import cn.lili.common.vo.PageVO; -import cn.lili.common.vo.ResultMessage; import cn.lili.group.Add; import cn.lili.group.Update; -import cn.lili.modules.lmk.domain.form.CustomerTagForm; +import cn.lili.modules.lmk.domain.form.MemberTagForm; import cn.lili.modules.lmk.domain.form.CustomerTagRefForm; import cn.lili.modules.lmk.domain.query.CustomerQuery; import cn.lili.modules.lmk.domain.query.CustomerTagQuery; @@ -14,6 +11,7 @@ import cn.lili.modules.lmk.domain.vo.VideoFootVO; import cn.lili.modules.lmk.service.CustomerService; import cn.lili.modules.lmk.service.CustomerTagRefService; +import cn.lili.modules.lmk.service.MemberTagService; import cn.lili.modules.lmk.service.CustomerTagService; import cn.lili.modules.member.entity.dto.FootPrintQueryParams; import cn.lili.modules.member.entity.vo.MemberSearchVO; @@ -34,6 +32,7 @@ @RequestMapping("/manager/customerManager") public class CustomerController { private final CustomerService customerService; + private final MemberTagService memberTagService; private final CustomerTagService customerTagService; private final CustomerTagRefService customerTagRefService; private final FootprintService footprintService; @@ -58,39 +57,39 @@ @PostMapping("/addTag") @ApiOperation(value = "娣诲姞鏍囩", notes = "娣诲姞鏍囩") - public Result add(@RequestBody @Validated(Add.class) CustomerTagForm form) { - return customerTagService.add(form); + public Result add(@RequestBody @Validated(Add.class) MemberTagForm form) { + return memberTagService.add(form); } @PutMapping("/editTag") @ApiOperation(value = "淇敼鏍囩", notes = "淇敼鏍囩") - public Result update(@RequestBody @Validated(Update.class) CustomerTagForm form) { - return customerTagService.update(form); + public Result update(@RequestBody @Validated(Update.class) MemberTagForm form) { + return memberTagService.update(form); } @DeleteMapping("/tag/{id}") @ApiOperation(value = "ID鍒犻櫎鏍囩", notes = "ID鍒犻櫎") public Result removeById(@PathVariable("id") String id) { - return customerTagService.removeById(id); + return memberTagService.removeById(id); } @GetMapping("/tagList") @ApiOperation(value = "鏍囩鍒楄〃", notes = "鏍囩鍒楄〃") public Result list() { - return customerTagService.all(); + return memberTagService.all(); } @GetMapping("/pageTagList") @ApiOperation(value = "鍒嗛〉鏍囩鍒楄〃", notes = "鏍囩鍒楄〃") public Result pageList(CustomerTagQuery query) { - return customerTagService.page(query); + return memberTagService.page(query); } @PostMapping("/customerAddTag") @ApiOperation(value = "娣诲姞瀹㈡埛鏍囩鏍囪瘑", notes = "娣诲姞瀹㈡埛鏍囩鏍囪瘑") - public Result addCustomerTag(@RequestBody @Validated(Add.class) CustomerTagForm form) { - return customerTagService.addCustomerTag(form); + public Result addCustomerTag(@RequestBody @Validated(Add.class) MemberTagForm form) { + return memberTagService.addMemberTag(form); } // @PostMapping("/customerAddTag") @@ -98,17 +97,16 @@ // public Result add(@RequestBody @Validated(Add.class) CustomerTagRefForm form) { // return customerTagRefService.add(form); // } - - @PutMapping("/customerEditTag") - @ApiOperation(value = "淇敼瀹㈡埛鏍囩鏍囪瘑", notes = "淇敼瀹㈡埛鏍囩鏍囪瘑") - public Result update(@RequestBody @Validated(Update.class) CustomerTagRefForm form) { - return customerTagRefService.update(form); + @DeleteMapping("/customerDelTag/{id}") + @ApiOperation(value = "鍒犻櫎瀹㈡埛鏍囩鏍囪瘑ID鍒犻櫎", notes = "鍒犻櫎瀹㈡埛鏍囩鏍囪瘑ID鍒犻櫎") + public Result removeCustomerTagById(@PathVariable("id") String id) { + return memberTagService.removeById(id); } @DeleteMapping("/customerDelTag/{id}") @ApiOperation(value = "鍒犻櫎瀹㈡埛鏍囩鏍囪瘑ID鍒犻櫎", notes = "鍒犻櫎瀹㈡埛鏍囩鏍囪瘑ID鍒犻櫎") public Result removeCustomerTagById(@PathVariable("id") String id) { - return customerTagRefService.removeById(id); + return memberTagService.removeById(id); } @GetMapping("/videoFootPage") diff --git a/seller-api/src/main/java/cn/lili/controller/goods/GoodsStoreController.java b/seller-api/src/main/java/cn/lili/controller/goods/GoodsStoreController.java index 8142cdf..ef7bfb9 100644 --- a/seller-api/src/main/java/cn/lili/controller/goods/GoodsStoreController.java +++ b/seller-api/src/main/java/cn/lili/controller/goods/GoodsStoreController.java @@ -27,6 +27,7 @@ import cn.lili.modules.store.entity.dos.StoreDetail; import cn.lili.modules.store.service.StoreDetailService; import cn.lili.utils.COSUtil; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -148,6 +149,7 @@ @ApiOperation(value = "鏂板鍟嗗搧") @PostMapping(value = "/create", consumes = "application/json", produces = "application/json") public ResultMessage<GoodsOperationDTO> save(@Valid @RequestBody GoodsOperationDTO goodsOperationDTO) { + System.err.println(JSONObject.toJSONString(goodsOperationDTO)); goodsService.addGoods(goodsOperationDTO); return ResultUtil.success(); } @@ -155,6 +157,7 @@ @ApiOperation(value = "淇敼鍟嗗搧") @PutMapping(value = "/update/{goodsId}", consumes = "application/json", produces = "application/json") public ResultMessage<GoodsOperationDTO> update(@Valid @RequestBody GoodsOperationDTO goodsOperationDTO, @PathVariable String goodsId) { + System.err.println(JSONObject.toJSONString(goodsOperationDTO)); goodsService.editGoods(goodsOperationDTO, goodsId); return ResultUtil.success(); } diff --git a/seller-api/src/main/java/cn/lili/controller/order/OrderStoreController.java b/seller-api/src/main/java/cn/lili/controller/order/OrderStoreController.java index 3204355..f80547c 100644 --- a/seller-api/src/main/java/cn/lili/controller/order/OrderStoreController.java +++ b/seller-api/src/main/java/cn/lili/controller/order/OrderStoreController.java @@ -12,7 +12,6 @@ import cn.lili.common.vo.ResultMessage; import cn.lili.modules.member.entity.dto.MemberAddressDTO; import cn.lili.modules.member.service.StoreLogisticsService; -import cn.lili.modules.order.order.entity.dto.OrderExportDTO; import cn.lili.modules.order.order.entity.dto.OrderSearchParams; import cn.lili.modules.order.order.entity.dto.PartDeliveryParamsDTO; import cn.lili.modules.order.order.entity.vo.OrderDetailVO; -- Gitblit v1.8.0