Bläddra i källkod

Merge remote-tracking branch 'origin/dev' into dev

# Conflicts:
#	alien-entity/src/main/java/shop/alien/mapper/LifeUserOrderMapper.java
jyc 1 månad sedan
förälder
incheckning
014675729c

+ 14 - 3
alien-entity/src/main/java/shop/alien/entity/store/LifeUserDynamics.java

@@ -65,7 +65,6 @@ public class LifeUserDynamics {
      */
     private Integer dianzanCount;
 
-
     @ApiModelProperty(value = "1-动态 2-商家社区 3-官方社区")
     private String type;
 
@@ -115,12 +114,24 @@ public class LifeUserDynamics {
     @TableField("enable_status")
     private Integer enableStatus;
 
+    @ApiModelProperty(value = "订单GMV (达人发布动态使用的)")
+    @TableField("order_gmv")
+    private BigDecimal orderGmv;
+
     @ApiModelProperty(value = "达人id")
     @TableField("expert_id")
     private Integer expertId;
 
-    @ApiModelProperty(value = "启用状态0-启用,1-禁用")
-    @TableField("业务id")
+    @ApiModelProperty(value = "业务id")
+    @TableField("business_id")
     private Integer businessId;
 
+    @ApiModelProperty(value = "根据动态进入店铺详情浏览数")
+    @TableField("store_count")
+    private Integer storeCount;
+
+
+    @ApiModelProperty(value = "转发量")
+    @TableField("transfer_count")
+    private Integer transferCount;
 }

+ 2 - 0
alien-entity/src/main/java/shop/alien/entity/store/vo/LifeUserOrderVo.java

@@ -77,6 +77,8 @@ public class LifeUserOrderVo {
 
     private Integer collectNum;
 
+    private String storeUserTel;
+
     private String storeTel;
     @ApiModelProperty(value = "团购/代金券优惠金额")
     private String offprice;

+ 1 - 1
alien-entity/src/main/java/shop/alien/mapper/LifeUserOrderMapper.java

@@ -71,7 +71,7 @@ public interface LifeUserOrderMapper extends BaseMapper<LifeUserOrder> {
      * @param selectWrapper
      * @return
      */
-    List<LifeUserOrderVo> selectRefundList(LambdaUpdateWrapper<LifeUserOrder> selectWrapper);
+    List<LifeUserOrderVo> selectRefundList(@Param(Constants.WRAPPER) QueryWrapper<LifeUserOrder> selectWrapper);
 
     @Select("SELECT count( luo.id ) FROM life_user_order luo LEFT JOIN order_coupon_middle ocm ON luo.id = ocm.order_id WHERE luo.`status` IN ( 0, 1, 2, 7 ) AND luo.delete_flag = 0 AND luo.coupon_type = 2 AND ocm.coupon_id = #{groupId}")
     Integer countBuyGroup(@Param("groupId") String groupId);

+ 3 - 1
alien-entity/src/main/resources/mapper/LifeUserOrderMapper.xml

@@ -45,7 +45,6 @@
         <result column="type" property="type"/>
         <result column="store_type" property="storeType"/>
         <result column="store_status" property="storeStatus"/>
-
         <result column="business_type" property="businessType"/>
         <result column="collect_num" property="collectNum"/>
         <result column="business_date" property="businessDate"/>
@@ -55,6 +54,7 @@
         <result column="reservation_rules" property="reservationRules"/>
         <result column="original_price" property="originalPrice"/>
         <result column="order_str" property="orderStr"/>
+        <result column="store_user_tel" property="storeUserTel"/>
 
         <collection property="orderCouponMiddleList" ofType="shop.alien.entity.store.vo.OrderCouponMiddleVo">
             <id column="ocmId" property="id" />
@@ -86,6 +86,7 @@
         lu.user_phone,lu.user_name,lu.id user_id,
         ocm.id ocmId,ocm.status,ocm.coupon_code,ocm.refund_time,ocm.refund_reason,ocm.price refundPrice,
         si.id store_id,si.store_name,si.commission_rate,si.store_address,si.store_tel,si.business_status,si.collect_num,si.business_section store_type,si.store_status,
+        su.phone store_user_tel,
         <if test="position != null and position != ''">
             ROUND(
             ST_Distance_Sphere(
@@ -106,6 +107,7 @@
         left join life_user lu on lu.id = luo.user_id and lu.delete_flag = 0
         left join store_img simg on simg.id = tc.image_id and simg.delete_flag = 0
         left join store_business_info sbi on sbi.store_id = si.id and sbi.delete_flag = 0
+        left join store_user su on su.store_id = si.id and su.delete_flag = 0
         where luo.id = #{orderId}
         order by luo.created_time desc
     </select>

+ 15 - 0
alien-store/src/main/java/shop/alien/store/controller/LifeUserDynamicsController.java

@@ -299,4 +299,19 @@ public class LifeUserDynamicsController {
         return R.data(lifeUserDynamicsService.addUserStoreBrowseNumber(lifeBrowseRecord));
     }
 
+    /**
+     * 动态被转发次数+1
+     * @param id 动态id
+     * @return 操作结果
+     */
+    @ApiOperation("动态被转发次数+1")
+    @ApiOperationSupport(order = 9)
+    @GetMapping("addTransferCount")
+    public R addTransferCount(String id) {
+        log.info("LifeUserDynamicsController.addTransferCount?id={}", id);
+        if (lifeUserDynamicsService.addTransferCount(id) == 0){
+            return R.fail("操作失败");
+        }
+        return R.success("操作成功");
+    }
 }

+ 7 - 1
alien-store/src/main/java/shop/alien/store/service/LifeUserDynamicsService.java

@@ -17,7 +17,6 @@ import shop.alien.entity.result.R;
 import shop.alien.entity.store.*;
 import shop.alien.entity.store.vo.LifePinglunVo;
 import shop.alien.entity.store.vo.LifeUserDynamicsVo;
-import shop.alien.entity.store.vo.LifeUserOrderVo;
 import shop.alien.entity.store.vo.StoreCommentVo;
 import shop.alien.mapper.*;
 
@@ -666,4 +665,11 @@ public class LifeUserDynamicsService extends ServiceImpl<LifeUserDynamicsMapper,
         }
         return true;
     }
+
+    public int addTransferCount(String id) {
+        LambdaUpdateWrapper<LifeUserDynamics> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
+        lambdaUpdateWrapper.eq(LifeUserDynamics::getId, id)
+                .setSql("transfer_count = transfer_count + 1");
+        return lifeUserDynamicsMapper.update(null, lambdaUpdateWrapper);
+    }
 }

+ 55 - 2
alien-store/src/main/java/shop/alien/store/service/impl/StoreCommentServiceImpl.java

@@ -23,6 +23,7 @@ import shop.alien.entity.store.vo.*;
 import shop.alien.mapper.*;
 import shop.alien.store.config.WebSocketProcess;
 import shop.alien.store.service.StoreCommentService;
+import shop.alien.store.service.StoreImgService;
 import shop.alien.store.util.FileUploadUtil;
 import shop.alien.util.common.DateUtils;
 import shop.alien.util.common.netease.ImageCheckUtil;
@@ -37,6 +38,7 @@ import java.math.RoundingMode;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicReference;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 /**
@@ -76,6 +78,8 @@ public class StoreCommentServiceImpl extends ServiceImpl<StoreCommentMapper, Sto
 
     @Autowired
     private TextModerationUtil textModerationUtil;
+    @Autowired
+    private StoreImgService storeImgService;
 
     /**
      * 评论列表
@@ -737,8 +741,57 @@ public class StoreCommentServiceImpl extends ServiceImpl<StoreCommentMapper, Sto
         List<String> collect = commentOrderPage.getRecords().stream().map(LifeUserOrderCommentVo::getGroupBuyImgId).collect(Collectors.toList());
 
         if (ObjectUtils.isNotEmpty(collect)) {
-            List<StoreImg> storeImgList = storeImgMapper.selectList(new QueryWrapper<StoreImg>().in("id", collect));
-            commentOrderPage.getRecords().forEach(i -> i.setGroupBuyImgUrl(storeImgList.stream().filter(j -> j.getId().toString().equals(i.getGroupBuyImgId())).findFirst().map(StoreImg::getImgUrl).orElse(null)));
+            List<StoreImg> storeImgList = storeImgMapper.selectList(new QueryWrapper<StoreImg>().inSql("id", String.join(",", collect)));
+//            commentOrderPage.getRecords().forEach(i ->
+//                    i.setGroupBuyImgUrl(storeImgList.stream().filter(j -> j.getId().toString().equals(i.getGroupBuyImgId()))
+//                            .findFirst().map(StoreImg::getImgUrl).orElse(null)));
+            // 2. 优化分组:id唯一,直接映射为 Map<Integer, StoreImg>(避免List处理)
+            Map<Integer, StoreImg> imgIdToImgMap = storeImgList.stream()
+                    .collect(Collectors.toMap(
+                            StoreImg::getId,  // 键:图片id
+                            Function.identity(),  // 值:图片对象本身
+                            (existing, replacement) -> existing  // 若有重复id(理论上不会),保留第一个
+                    ));
+
+            // 3. 遍历订单评论记录,处理图片URL拼接
+            for (LifeUserOrderCommentVo record : commentOrderPage.getRecords()) {
+                String groupBuyImgId = record.getGroupBuyImgId();
+                // 空指针防护:如果imgId为空,直接设为空字符串
+                if (groupBuyImgId == null || groupBuyImgId.trim().isEmpty()) {
+                    record.setGroupBuyImgUrl("");
+                    continue;
+                }
+
+                // 分割imgId并一次性转换为Integer(避免重复解析)
+                List<Integer> imgIds = Arrays.stream(groupBuyImgId.split(","))
+                        .map(String::trim)  // 处理可能的空格
+                        .filter(idStr -> !idStr.isEmpty())  // 过滤空字符串(如连续逗号导致的)
+                        .map(idStr -> {
+                            try {
+                                return Integer.parseInt(idStr);
+                            } catch (NumberFormatException e) {
+                                // 处理非数字id的异常(如无效id)
+                                return null;
+                            }
+                        })
+                        .filter(Objects::nonNull)  // 过滤转换失败的null
+                        .collect(Collectors.toList());
+
+                // 拼接图片URL(使用StringBuilder高效拼接)
+                StringBuilder imgUrlBuilder = new StringBuilder();
+                for (Integer imgId : imgIds) {
+                    StoreImg storeImg = imgIdToImgMap.get(imgId);
+                    if (storeImg != null && storeImg.getImgUrl() != null) {
+                        if (imgUrlBuilder.length() > 0) {
+                            imgUrlBuilder.append(",");  // 非第一个元素前加逗号
+                        }
+                        imgUrlBuilder.append(storeImg.getImgUrl());
+                    }
+                }
+
+                // 设置最终的图片URL字符串(去掉末尾可能的逗号,这里通过逻辑避免了)
+                record.setGroupBuyImgUrl(imgUrlBuilder.toString());
+            }
         }
         return commentOrderPage;
     }