framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java
@@ -517,30 +517,253 @@ boolean result; //检测管理员权限 this.checkManagerAuthority(); LambdaUpdateWrapper<Goods> updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.set(Goods::getGoodsSort,req.getSort()); updateWrapper.eq(Goods::getId, req.getGoodsId()); //查询出比当前排序大的商品 LambdaQueryWrapper<Goods> query = Wrappers.<Goods>lambdaQuery(); query.gt(Goods::getGoodsSort,req.getSort()); List<Goods> goods = goodsService.list(query); List<String> goodsIds = new ArrayList<>(); if (goods != null && !goods.isEmpty()) { //适配没有排序的商品排序字段为null goods.forEach(item -> { if (item.getGoodsSort() != null) { item.setGoodsSort(item.getGoodsSort() + 1); goodsIds.add(item.getId()); } }); goodsService.updateBatchById(goods); // 获取当前商品的原始排序值 Goods currentGoods = this.getById(req.getGoodsId()); Integer oldSort = currentGoods != null ? currentGoods.getGoodsSort() : null; Integer newSort = req.getSort(); // 收集需要更新ES的商品ID List<String> goodsIdsToUpdateEs = new ArrayList<>(); goodsIdsToUpdateEs.add(req.getGoodsId()); // 处理数据库中的重复排序值,确保唯一性 List<String> duplicateResolvedGoodsIds = resolveDuplicateSorts(); goodsIdsToUpdateEs.addAll(duplicateResolvedGoodsIds); // 重新获取当前商品的排序值(可能已被resolveDuplicateSorts修改) currentGoods = this.getById(req.getGoodsId()); oldSort = currentGoods != null ? currentGoods.getGoodsSort() : null; // 根据操作类型执行不同的排序逻辑 if (oldSort == null) { // 新增排序 List<String> affectedGoodsIds = adjustForInsert(newSort); goodsIdsToUpdateEs.addAll(affectedGoodsIds); // 处理可能产生的重复排序值 List<String> afterInsertResolvedGoodsIds = resolveDuplicateSorts(); goodsIdsToUpdateEs.addAll(afterInsertResolvedGoodsIds); } else if (!oldSort.equals(newSort)) { // 修改排序 if (newSort > oldSort) { // 排序值增大:将大于等于新排序值的商品+1,直到遇到断层 List<String> affectedGoodsIds = adjustForIncrease(newSort); goodsIdsToUpdateEs.addAll(affectedGoodsIds); // 处理可能产生的重复排序值 List<String> afterIncreaseResolvedGoodsIds = resolveDuplicateSorts(); goodsIdsToUpdateEs.addAll(afterIncreaseResolvedGoodsIds); } else { // 排序值减小:将大于等于新排序值且小于原排序值的商品+1,直到遇到断层 List<String> affectedGoodsIds = adjustForDecrease(oldSort, newSort); goodsIdsToUpdateEs.addAll(affectedGoodsIds); // 处理可能产生的重复排序值 List<String> afterDecreaseResolvedGoodsIds = resolveDuplicateSorts(); goodsIdsToUpdateEs.addAll(afterDecreaseResolvedGoodsIds); } } // 更新当前商品的排序值 LambdaUpdateWrapper<Goods> updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.set(Goods::getGoodsSort, newSort); updateWrapper.eq(Goods::getId, req.getGoodsId()); result = this.update(updateWrapper); goodsIds.add(req.getGoodsId()); this.updateEsGoods(goodsIds); // 更新ES索引 this.updateEsGoods(goodsIdsToUpdateEs); return result; } /** * 处理数据库中的重复排序值,确保唯一性 * @return 受影响的商品ID列表 */ @Transactional(rollbackFor = Exception.class) public List<String> resolveDuplicateSorts() { // 查询所有有排序值的商品 LambdaQueryWrapper<Goods> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.isNotNull(Goods::getGoodsSort); queryWrapper.orderByAsc(Goods::getGoodsSort); List<Goods> allGoods = this.list(queryWrapper); // 按排序值分组 Map<Integer, List<Goods>> sortMap = allGoods.stream() .collect(Collectors.groupingBy(Goods::getGoodsSort)); // 处理重复的排序值,只保留第一个,其余重新分配 List<Goods> toUpdate = new ArrayList<>(); int nextSort = getMaxSortValue(allGoods) + 1; // 从当前最大值+1开始分配 for (Map.Entry<Integer, List<Goods>> entry : sortMap.entrySet()) { List<Goods> goodsList = entry.getValue(); if (goodsList.size() > 1) { // 有重复值,只保留第一个,其余重新分配 for (int i = 1; i < goodsList.size(); i++) { Goods goods = goodsList.get(i); goods.setGoodsSort(nextSort++); toUpdate.add(goods); } } } // 收集受影响的商品ID List<String> affectedGoodsIds = toUpdate.stream() .map(Goods::getId) .collect(Collectors.toList()); // 批量更新 if (!toUpdate.isEmpty()) { this.updateBatchById(toUpdate); } return affectedGoodsIds; } /** * 获取当前最大的排序值 * @param goodsList 商品列表 * @return 最大排序值 */ private int getMaxSortValue(List<Goods> goodsList) { return goodsList.stream() .mapToInt(Goods::getGoodsSort) .max() .orElse(0); } /** * 插入新排序值的处理逻辑 * 将所有大于等于新排序值的商品排序值+1,直到遇到断层 * @param newSort 新的排序值 * @return 受影响的商品ID列表 */ @Transactional(rollbackFor = Exception.class) public List<String> adjustForInsert(Integer newSort) { if (newSort == null) return Collections.emptyList(); // 查询所有大于等于新排序值的商品,按排序值升序排列 LambdaQueryWrapper<Goods> query = Wrappers.<Goods>lambdaQuery(); query.ge(Goods::getGoodsSort, newSort); query.isNotNull(Goods::getGoodsSort); query.orderByAsc(Goods::getGoodsSort); List<Goods> goodsList = this.list(query); // 检查连续性,遇到断层则停止 List<Goods> toUpdate = new ArrayList<>(); int expectedSort = newSort; for (Goods goods : goodsList) { if (goods.getGoodsSort().equals(expectedSort)) { goods.setGoodsSort(goods.getGoodsSort() + 1); toUpdate.add(goods); expectedSort++; } else { // 遇到断层,停止调整 break; } } // 收集受影响的商品ID List<String> affectedGoodsIds = toUpdate.stream() .map(Goods::getId) .collect(Collectors.toList()); // 批量更新 if (!toUpdate.isEmpty()) { this.updateBatchById(toUpdate); } return affectedGoodsIds; } /** * 排序值增大的处理逻辑 * 将所有大于等于新排序值的商品排序值+1,直到遇到断层 * @param newSort 新排序值 * @return 受影响的商品ID列表 */ @Transactional(rollbackFor = Exception.class) public List<String> adjustForIncrease(Integer newSort) { if (newSort == null) return Collections.emptyList(); // 查询所有大于等于新排序值的商品,按排序值升序排列 LambdaQueryWrapper<Goods> query = Wrappers.<Goods>lambdaQuery(); query.ge(Goods::getGoodsSort, newSort); query.isNotNull(Goods::getGoodsSort); query.orderByAsc(Goods::getGoodsSort); List<Goods> goodsList = this.list(query); // 检查连续性,遇到断层则停止 List<Goods> toUpdate = new ArrayList<>(); int expectedSort = newSort; for (Goods goods : goodsList) { if (goods.getGoodsSort().equals(expectedSort)) { goods.setGoodsSort(goods.getGoodsSort() + 1); toUpdate.add(goods); expectedSort++; } else { // 遇到断层,停止调整 break; } } // 收集受影响的商品ID List<String> affectedGoodsIds = toUpdate.stream() .map(Goods::getId) .collect(Collectors.toList()); // 批量更新 if (!toUpdate.isEmpty()) { this.updateBatchById(toUpdate); } return affectedGoodsIds; } /** * 排序值减小的处理逻辑 * 将大于等于新排序值且小于原排序值的商品排序值+1,直到遇到断层 * @param oldSort 原排序值 * @param newSort 新排序值 * @return 受影响的商品ID列表 */ @Transactional(rollbackFor = Exception.class) public List<String> adjustForDecrease(Integer oldSort, Integer newSort) { if (oldSort == null || newSort == null || oldSort.equals(newSort)) return Collections.emptyList(); // 查询大于等于新排序值且小于原排序值的商品,按排序值升序排列 LambdaQueryWrapper<Goods> query = Wrappers.<Goods>lambdaQuery(); query.ge(Goods::getGoodsSort, newSort); query.lt(Goods::getGoodsSort, oldSort); query.isNotNull(Goods::getGoodsSort); query.orderByAsc(Goods::getGoodsSort); List<Goods> goodsList = this.list(query); // 检查连续性,遇到断层则停止 List<Goods> toUpdate = new ArrayList<>(); int expectedSort = newSort; for (Goods goods : goodsList) { if (goods.getGoodsSort().equals(expectedSort)) { goods.setGoodsSort(goods.getGoodsSort() + 1); toUpdate.add(goods); expectedSort++; } else { // 遇到断层,停止调整 break; } } // 收集受影响的商品ID List<String> affectedGoodsIds = toUpdate.stream() .map(Goods::getId) .collect(Collectors.toList()); // 批量更新 if (!toUpdate.isEmpty()) { this.updateBatchById(toUpdate); } return affectedGoodsIds; } @Override @Transactional(rollbackFor = Exception.class) @SystemLogPoint(description = "删除商品", customerLog = "'操作对象:['+#goodsIds+']'") framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoServiceImpl.java
@@ -1098,7 +1098,10 @@ 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())); String authorAvatar = v.getAuthorAvatar(); if (StringUtils.isNotBlank(authorAvatar)&&!authorAvatar.contains("http")) { v.setAuthorAvatar(cosUtil.getPreviewUrl(authorAvatar)); } if (VideoContentTypeEnum.VIDEO.getValue().equals(v.getVideoContentType())) { v.setVideoUrl(cosUtil.getPreviewUrl(v.getVideoFileKey())); v.setCoverUrl(cosUtil.getPreviewUrl(v.getCoverFileKey())); framework/src/main/java/cn/lili/modules/member/entity/dto/UpdateTracesDTO.java
New file @@ -0,0 +1,27 @@ package cn.lili.modules.member.entity.dto; import lombok.Data; @Data public class UpdateTracesDTO { /** * 包裹编号 */ private String packageNo; /** * 订单编号 */ private String orderSn; /** * 快递公司id */ private String logisticsId; /** * 快递单号 */ private String logisticsNo; /** * 快递编码 */ private String logisticsCode; } framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java
@@ -4,6 +4,7 @@ import cn.lili.common.vo.ResultMessage; import cn.lili.modules.lmk.domain.vo.OrderCountVO; import cn.lili.modules.member.entity.dto.MemberAddressDTO; import cn.lili.modules.member.entity.dto.UpdateTracesDTO; import cn.lili.modules.order.cart.entity.dto.TradeDTO; import cn.lili.modules.order.order.entity.dos.Order; import cn.lili.modules.order.order.entity.dto.*; @@ -17,6 +18,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; @@ -216,6 +218,8 @@ */ Traces getTraces(String orderSn); void updateTraces(@RequestBody UpdateTracesDTO updateTracesDTO); /** * 获取地图版 物流踪迹 * framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java
@@ -35,6 +35,7 @@ import cn.lili.modules.lmk.mapper.LmkOrderSelectMapper; import cn.lili.modules.lmk.service.CouponVirtualService; import cn.lili.modules.member.entity.dto.MemberAddressDTO; import cn.lili.modules.member.entity.dto.UpdateTracesDTO; import cn.lili.modules.member.mapper.MemberMapper; import cn.lili.modules.order.cart.entity.dto.TradeDTO; import cn.lili.modules.order.cart.entity.enums.DeliveryMethodEnum; @@ -859,6 +860,26 @@ } @Override public void updateTraces(UpdateTracesDTO updateTracesDTO) { LambdaQueryWrapper<OrderPackage> eq = Wrappers.<OrderPackage>lambdaQuery() .eq(OrderPackage::getOrderSn, updateTracesDTO.getOrderSn()) .eq(OrderPackage::getPackageNo, updateTracesDTO.getPackageNo()); OrderPackage one = orderPackageService.getOne(eq); if (one == null) { throw new ServiceException("当前包裹不存在"); } String logisticsId = updateTracesDTO.getLogisticsId(); if (StringUtils.isNotBlank(logisticsId)) { Logistics logic = logisticsService.getById(logisticsId); one.setLogisticsNo(updateTracesDTO.getLogisticsNo()); one.setLogisticsCode(logic.getCode()); one.setLogisticsName(logic.getName()); orderPackageService.updateById(one); } } @Override public Traces getMapTraces(String orderSn) { //获取订单信息 Order order = this.getBySn(orderSn); @@ -1154,7 +1175,31 @@ checkBatchDeliver(orderBatchDeliverDTOList); //订单批量发货 for (OrderBatchDeliverDTO orderBatchDeliverDTO : orderBatchDeliverDTOList) { this.delivery(orderBatchDeliverDTO.getOrderSn(), orderBatchDeliverDTO.getLogisticsNo(), orderBatchDeliverDTO.getLogisticsId()); String logisticsNo = orderBatchDeliverDTO.getLogisticsNo(); String[] split = logisticsNo.split(","); //如果物流单号包含多个,则进行拆单 if (split.length > 1) { for (int i = 0; i < split.length; i++) { PartDeliveryParamsDTO partDeliveryParamsDTO = new PartDeliveryParamsDTO(); partDeliveryParamsDTO.setOrderSn(orderBatchDeliverDTO.getOrderSn()); partDeliveryParamsDTO.setLogisticsNo(split[i]); partDeliveryParamsDTO.setLogisticsId(orderBatchDeliverDTO.getLogisticsId()); ArrayList<PartDeliveryDTO> partDeliveryDTOList = new ArrayList<>(); partDeliveryParamsDTO.setPartDeliveryDTOList(partDeliveryDTOList); if (i == split.length - 1){ List<OrderItem> orderItemList = orderItemService.getByOrderSn(orderBatchDeliverDTO.getOrderSn()); for (OrderItem orderItem : orderItemList) { if (RefundStatusEnum.NO_REFUND.name().equals(orderItem.getIsRefund())) { PartDeliveryDTO partDeliveryDTO = new PartDeliveryDTO(); partDeliveryDTO.setDeliveryNum(orderItem.getNum()); partDeliveryDTO.setOrderItemId(orderItem.getId()); partDeliveryDTOList.add(partDeliveryDTO); } } } this.partDelivery(partDeliveryParamsDTO); } } } } @@ -1800,7 +1845,10 @@ // 提取商品名(注意:键是resultMap中定义的property值"goodsName") if (Objects.nonNull(map.get("goodsName"))) { String goodsName = map.get("goodsName").toString(); goodsData.add(goodsName); String buyerCount = map.get("buyerCount").toString(); String repurchaseBuyerCount = map.get("repurchaseBuyerCount").toString(); String format = String.format("%s:购买人数 %s 复购人数%s", goodsName, buyerCount, repurchaseBuyerCount); goodsData.add(format); } // 提取复购率(复购率通常是数字类型,这里用BigDecimal接收) framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java
@@ -100,7 +100,7 @@ if (Objects.nonNull(searchDTO.getCanFilter()) && searchDTO.getCanFilter()) { // 使用sn字段排序并在折叠时选择sn最小的记录 searchQueryBuilder.withCollapseField("goodsId.keyword"); searchQueryBuilder.withSort(SortBuilders.fieldSort("sn.keyword").order(SortOrder.ASC)); searchQueryBuilder.withSort(SortBuilders.fieldSort("price").order(SortOrder.ASC)); } NativeSearchQuery searchQuery = searchQueryBuilder.build(); searchQuery.setTrackTotalHits(true); framework/src/main/java/cn/lili/modules/statistics/mapper/PlatformViewMapper.java
@@ -22,4 +22,12 @@ */ @Select("SELECT sum(uv_num) FROM li_s_platform_view_data ${ew.customSqlSegment}") Integer count(@Param(Constants.WRAPPER) QueryWrapper queryWrapper); /** * UV流量统计 * * @param queryWrapper 查询条件 * @return UV流量统计数量 */ @Select("SELECT COUNT(DISTINCT(user_id)) FROM lmk_action_record ${ew.customSqlSegment}") Integer uvCount(@Param(Constants.WRAPPER) QueryWrapper queryWrapper); } framework/src/main/java/cn/lili/modules/statistics/serviceimpl/PlatformViewServiceImpl.java
@@ -220,6 +220,32 @@ return result; } // @Override // public Integer countUv(StatisticsQueryParam queryParam) { // Date[] dates = StatisticsDateUtil.getDateArray(queryParam); // //获取当前时间 // Calendar calendar = Calendar.getInstance(); // // calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0); // calendar.set(Calendar.MILLISECOND, 0); // //如果是今天的统计,则从redis 中拿,否则从数据库中拿 // if (dates[0].equals(calendar.getTime())) { // if (StringUtils.isNotEmpty(queryParam.getStoreId())) { // return cache.counter(CachePrefix.UV.getPrefix() + StatisticsSuffix.suffix(queryParam.getStoreId())).intValue(); // } // return cache.counter(CachePrefix.UV.getPrefix() + StatisticsSuffix.suffix()).intValue(); // } else { // QueryWrapper queryWrapper = new QueryWrapper(); // queryWrapper.between("date", dates[0], dates[1]); // //根据店铺查询判定,如果有,则店铺查询,如果没有,则根据商家查询 // if (StringUtils.isNotEmpty(queryParam.getStoreId())) { // queryWrapper.eq("store_id", queryParam.getStoreId()); // } else { // queryWrapper.eq("store_id", -1); // } // return this.baseMapper.count(queryWrapper); // } // } @Override public Integer countUv(StatisticsQueryParam queryParam) { Date[] dates = StatisticsDateUtil.getDateArray(queryParam); @@ -228,23 +254,11 @@ calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0); calendar.set(Calendar.MILLISECOND, 0); //如果是今天的统计,则从redis 中拿,否则从数据库中拿 if (dates[0].equals(calendar.getTime())) { if (StringUtils.isNotEmpty(queryParam.getStoreId())) { return cache.counter(CachePrefix.UV.getPrefix() + StatisticsSuffix.suffix(queryParam.getStoreId())).intValue(); } return cache.counter(CachePrefix.UV.getPrefix() + StatisticsSuffix.suffix()).intValue(); } else { QueryWrapper queryWrapper = new QueryWrapper(); queryWrapper.between("date", dates[0], dates[1]); //根据店铺查询判定,如果有,则店铺查询,如果没有,则根据商家查询 if (StringUtils.isNotEmpty(queryParam.getStoreId())) { queryWrapper.eq("store_id", queryParam.getStoreId()); } else { queryWrapper.eq("store_id", -1); } return this.baseMapper.count(queryWrapper); } queryWrapper.between("start_time", dates[0], dates[1]); queryWrapper.eq("page_status", "JOIN"); return this.baseMapper.uvCount(queryWrapper); } /** framework/src/main/java/cn/lili/modules/store/entity/dto/BillSearchParams.java
@@ -75,11 +75,11 @@ //创建时间 if (CharSequenceUtil.isNotEmpty(startDate) && CharSequenceUtil.isNotEmpty(endDate)) { wrapper.between("bill_time", startDate, endDate); wrapper.between("create_time", startDate, endDate); } else if (CharSequenceUtil.isNotEmpty(startDate)) { wrapper.ge("bill_time", startDate); wrapper.ge("create_time", startDate); } else if (CharSequenceUtil.isNotEmpty(endDate)) { wrapper.le("bill_time", endDate); wrapper.le("create_time", endDate); } //账单号 wrapper.eq(CharSequenceUtil.isNotEmpty(sn), "sn", sn); framework/src/main/resources/mapper/lmk/GoodsCustomizeTemplateMapper.xml
@@ -36,6 +36,7 @@ <if test="query.status != null and query.status !=''"> AND LGCT.status = #{query.status} </if> order by LGCT.create_time DESC </select> <resultMap id="getCustomizeTemplateMap" type="cn.lili.modules.lmk.domain.vo.CustomizeTemplateVO"> <id property="id" column="id"/> framework/src/main/resources/mapper/lmk/VideoMapper.xml
@@ -814,38 +814,117 @@ <select id="getAuthorLikeVideoPage" 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.video_content_type, LV.video_type, LV.video_imgs, LV.id, LM.nick_name as authorName, LM.face as authorAvatar * FROM lmk_thumbs_up_record LMC INNER JOIN lmk_video LV ON LMC.ref_id = LV.id AND LV.delete_flag = 0 AND LV.status = '1' LEFT JOIN li_member LM ON LV.author_id = LM.id WHERE LMC.delete_flag = 0 AND LMC.user_id = #{query.authorId} AND LMC.thumbs_up_type = 'video' AND LV.video_type = #{query.videoType} ( 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.video_content_type, LV.video_type, LV.video_imgs, LV.id, LM.nick_name AS authorName, LM.face AS authorAvatar, LV.create_time FROM lmk_thumbs_up_record LMC INNER JOIN lmk_video LV ON LMC.ref_id = LV.id AND LV.delete_flag = 0 AND LV.STATUS = '1' LEFT JOIN li_member LM ON LV.author_id = LM.id WHERE LMC.delete_flag = 0 AND LM.id IS NOT NULL AND LMC.user_id = #{query.authorId} AND LMC.thumbs_up_type = 'video' AND LV.video_type = #{query.videoType} UNION ALL 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.video_content_type, LV.video_type, LV.video_imgs, LV.id, LM.nick_name AS authorName, LM.avatar AS authorAvatar, LV.create_time FROM lmk_thumbs_up_record LMC INNER JOIN lmk_video LV ON LMC.ref_id = LV.id AND LV.delete_flag = 0 AND LV.STATUS = '1' LEFT JOIN li_admin_user LM ON LV.author_id = LM.id WHERE LMC.delete_flag = 0 AND LM.id IS NOT NULL AND LMC.user_id = #{query.authorId} AND LMC.thumbs_up_type = 'video' AND LV.video_type = #{query.videoType}) t ORDER BY LMC.create_time DESC t.create_time DESC </select> <!-- <select id="getAuthorLikeVideoPage" 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.video_content_type,--> <!-- LV.video_type,--> <!-- LV.video_imgs,--> <!-- LV.id,--> <!-- LM.nick_name as authorName,--> <!-- LM.face as authorAvatar--> <!-- FROM--> <!-- lmk_thumbs_up_record LMC--> <!-- INNER JOIN lmk_video LV ON LMC.ref_id = LV.id AND LV.delete_flag = 0 AND LV.status = '1'--> <!-- LEFT JOIN li_member LM ON LV.author_id = LM.id--> <!-- WHERE--> <!-- LMC.delete_flag = 0 AND LMC.user_id = #{query.authorId} AND LMC.thumbs_up_type = 'video' AND LV.video_type = #{query.videoType}--> <!-- ORDER BY--> <!-- LMC.create_time DESC--> <!-- </select>--> <!-- 微信视频编辑详情 --> framework/src/main/resources/mapper/lmk/orderMapper.xml
@@ -15,6 +15,8 @@ <resultMap id="productRepurchase" type="java.util.Map"> <result column="goods_name" property="goodsName"/> <result column="repurchase_rate_percent" property="repurchaseRate"/> <result column="buyer_count" property="buyerCount"/> <result column="repurchase_buyer_count" property="repurchaseBuyerCount"/> </resultMap> <resultMap id="viewDataCount" type="java.util.Map"> seller-api/src/main/java/cn/lili/controller/order/OrderStoreController.java
@@ -15,6 +15,7 @@ import cn.lili.modules.lmk.service.GoodsCustomizeTemplateService; import cn.lili.modules.lmk.service.UserCheckTemplateService; import cn.lili.modules.member.entity.dto.MemberAddressDTO; import cn.lili.modules.member.entity.dto.UpdateTracesDTO; import cn.lili.modules.member.service.StoreLogisticsService; import cn.lili.modules.order.cart.entity.vo.BindingTemplateParam; import cn.lili.modules.order.order.entity.dto.OrderSearchParams; @@ -265,6 +266,12 @@ return ResultUtil.data(orderPackageService.getOrderPackageVOList(orderSn)); } @PostMapping(value = "/updateTraces") public ResultMessage<Object> updateTraces(@RequestBody UpdateTracesDTO updateTracesDTO) { orderService.updateTraces(updateTracesDTO); return ResultUtil.success(ResultCode.SUCCESS); } @ApiOperation(value = "查询物流踪迹") @ApiImplicitParams({ @ApiImplicitParam(name = "orderSn", value = "订单编号", required = true, dataType = "String", paramType = "path")