zhangchen 3 месяцев назад
Родитель
Сommit
a11fc03cf3

+ 89 - 0
alien-service-entity/src/main/java/shop/alien/entity/store/LifeBlacklist.java

@@ -0,0 +1,89 @@
+package shop.alien.entity.store;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 黑名单
+ *
+ * </p>
+ *
+ * @author ssk
+ * @since 2025-04-30
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "LifeBlacklist对象", description = "黑名单")
+public class LifeBlacklist extends Model<LifeBlacklist> {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键")
+    @TableId("id")
+    private Integer id;
+
+    @ApiModelProperty(value = "拉黑方类型(1:商户,2:用户)")
+    @TableField("blocker_type")
+    private String blockerType;
+
+    @ApiModelProperty(value = "拉黑方ID")
+    @TableField("blocker_id")
+    private String blockerId;
+
+    @ApiModelProperty(value = "拉黑方phoneId")
+    @TableField("blocker_phone_id")
+    private String blockerPhoneId;
+
+    @ApiModelProperty(value = "被拉黑方类型(1:商户,2:用户)")
+    @TableField("blocked_type")
+    private String blockedType;
+
+    @ApiModelProperty(value = "被拉黑方ID")
+    @TableField("blocked_id")
+    private String blockedId;
+
+    @ApiModelProperty(value = "被拉黑方phoneId")
+    @TableField("blocked_phone_id")
+    private String blockedPhoneId;
+
+    @ApiModelProperty(value = "删除标记, 0:未删除, 1:已删除")
+    @TableField("delete_flag")
+    @TableLogic
+    private Integer deleteFlag;
+
+    @ApiModelProperty(value = "创建时间")
+    @TableField(value = "created_time", fill = FieldFill.INSERT)
+    private Date createdTime;
+
+    @ApiModelProperty(value = "创建人ID")
+    @TableField(value = "created_user_id", fill = FieldFill.INSERT)
+    private Integer createdUserId;
+
+    @ApiModelProperty(value = "修改时间")
+    @TableField(value = "updated_time", fill = FieldFill.INSERT_UPDATE)
+    private Date updatedTime;
+
+    @ApiModelProperty(value = "修改人ID")
+    @TableField(value = "updated_user_id", fill = FieldFill.INSERT_UPDATE)
+    private Integer updatedUserId;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 56 - 0
alien-service-entity/src/main/java/shop/alien/entity/store/LifeCollect.java

@@ -0,0 +1,56 @@
+package shop.alien.entity.store;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 收藏
+ */
+@Data
+@JsonInclude
+@TableName("life_collect")
+public class LifeCollect {
+
+    @TableId(type = IdType.AUTO)
+    private String id;
+
+    private String storeId;
+
+    private String userId;
+
+    @ApiModelProperty(value = "团购id")
+    @TableField("coupon_id")
+    private String couponId;
+
+    private String businessId;
+
+    private String businessType;
+
+    @ApiModelProperty(value = "删除标记, 0:未删除, 1:已删除")
+    @TableField("delete_flag")
+    @TableLogic
+    private Integer deleteFlag;
+
+    @ApiModelProperty(value = "创建时间")
+    @TableField(value = "created_time", fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createdTime;
+
+    @ApiModelProperty(value = "创建人ID")
+    @TableField("created_user_id")
+    private Integer createdUserId;
+
+    @ApiModelProperty(value = "修改时间")
+    @TableField(value = "updated_time", fill = FieldFill.UPDATE)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date updatedTime;
+
+    @ApiModelProperty(value = "修改人ID")
+    @TableField("updated_user_id")
+    private Integer updatedUserId;
+}

+ 57 - 0
alien-service-entity/src/main/java/shop/alien/entity/store/LifeFans.java

@@ -0,0 +1,57 @@
+package shop.alien.entity.store;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 疑似粉丝表
+ */
+@Data
+@JsonInclude
+@TableName("life_fans")
+public class LifeFans {
+
+    @TableId(value = "id", type = IdType.AUTO)
+    @ApiModelProperty(value = "主键id")
+    private String id;
+
+    @TableField("followed_id")
+    @ApiModelProperty(value = "关注id ('store'或'user' + '_' + 手机号)")
+    private String followedId;
+
+    @TableField("fans_id")
+    @ApiModelProperty(value = "粉丝id ('store'或'user' + '_' + 手机号)")
+    private String fansId;
+
+    @TableField("fans_type")
+    private String fansType;
+
+    @ApiModelProperty(value = "删除标记, 0:未删除, 1:已删除")
+    @TableField("delete_flag")
+    @TableLogic
+    private Integer deleteFlag;
+
+    @ApiModelProperty(value = "创建时间")
+    @TableField(value = "created_time", fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createdTime;
+
+    @ApiModelProperty(value = "创建人ID")
+    @TableField("created_user_id")
+    private Integer createdUserId;
+
+    @ApiModelProperty(value = "修改时间")
+    @TableField(value = "updated_time", fill = FieldFill.UPDATE)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date updatedTime;
+
+    @ApiModelProperty(value = "修改人ID")
+    @TableField("updated_user_id")
+    private Integer updatedUserId;
+
+}

+ 53 - 0
alien-service-entity/src/main/java/shop/alien/entity/store/LifeLikeRecord.java

@@ -0,0 +1,53 @@
+package shop.alien.entity.store;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 点赞记录
+ */
+@Data
+@JsonInclude
+@TableName("life_like_record")
+public class LifeLikeRecord {
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private String id;
+
+    private String dianzanId;
+
+    private String huifuId;
+
+    @ApiModelProperty(value = "1-评论 2-社区动态 3-活动 4-推荐菜 5-店铺打卡 6-二手商品 7-律师评分 8-点赞员工")
+    private String type;
+
+    private Integer dianzanCount;
+
+    @ApiModelProperty(value = "删除标记, 0:未删除, 1:已删除")
+    @TableField("delete_flag")
+    @TableLogic
+    private Integer deleteFlag;
+
+    @ApiModelProperty(value = "创建时间")
+    @TableField(value = "created_time", fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createdTime;
+
+    @ApiModelProperty(value = "创建人ID")
+    @TableField("created_user_id")
+    private Integer createdUserId;
+
+    @ApiModelProperty(value = "修改时间")
+    @TableField(value = "updated_time", fill = FieldFill.UPDATE)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date updatedTime;
+
+    @ApiModelProperty(value = "修改人ID")
+    @TableField("updated_user_id")
+    private Integer updatedUserId;
+}

+ 75 - 0
alien-service-entity/src/main/java/shop/alien/entity/store/LifeMessage.java

@@ -0,0 +1,75 @@
+package shop.alien.entity.store;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 消息
+ */
+@Data
+@JsonInclude
+@TableName("life_message")
+public class LifeMessage {
+
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "发送人id ('store_' 或 'user_' + 手机号)")
+    private String senderId;
+
+    @ApiModelProperty(value = "发送人姓名")
+    private String senderName;
+
+    @ApiModelProperty(value = "接收人id('store_' 或 'user_' + 手机号)")
+    private String receiverId;
+
+    @ApiModelProperty(value = "接收人姓名")
+    private String receiverName;
+
+    @ApiModelProperty(value = "发送内容")
+    private String content;
+
+    @ApiModelProperty(value = "消息类型  1-文本  2-图片 3-链接  4-二手交易创建/确认/拒绝/取消  5-二手交易签到提醒  6-二手交易已签到  7-消息内容不合规  8-律师消息  9-二手交易修改交易请求  10-二手交易提醒进入实时定位  11-二手交易委托  12-二手交易是否与交易有关的言论温馨提示")
+    private String type;
+
+    private Date currentTime;
+
+    @ApiModelProperty(value = "是否已读, 0:未读, 1:已读")
+    private Integer isRead;
+
+    @ApiModelProperty(value = "删除该条消息的phoneId,用逗号分隔")
+    @TableField("delete_phone_id")
+    private String deletePhoneId;
+
+    @ApiModelProperty(value = "删除标记, 0:未删除, 1:已删除")
+    @TableField("delete_flag")
+    @TableLogic
+    private Integer deleteFlag;
+
+    @ApiModelProperty(value = "创建时间")
+    @TableField(value = "created_time", fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createdTime;
+
+    @ApiModelProperty(value = "创建人ID")
+    @TableField("created_user_id")
+    private Integer createdUserId;
+
+    @ApiModelProperty(value = "修改时间")
+    @TableField(value = "updated_time", fill = FieldFill.UPDATE)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date updatedTime;
+
+    @ApiModelProperty(value = "修改人ID")
+    @TableField("updated_user_id")
+    private Integer updatedUserId;
+
+    @ApiModelProperty(value = "业务ID")
+    @TableField("business_id")
+    private Integer businessId;
+}

+ 84 - 0
alien-service-entity/src/main/java/shop/alien/entity/store/StoreCommentAppeal.java

@@ -0,0 +1,84 @@
+package shop.alien.entity.store;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ * 评论申诉表
+ *
+ * @author ssk
+ * @since 2025-01-02
+ */
+@Data
+@JsonInclude
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value = "StoreCommentAppeal对象", description = "评论申诉表")
+public class StoreCommentAppeal extends Model<StoreCommentAppeal> {
+
+    @ApiModelProperty(value = "主键")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "门店id")
+    @TableField("store_id")
+    private Integer storeId;
+
+    @ApiModelProperty(value = "评论id")
+    @TableField("comment_id")
+    private Integer commentId;
+
+    @ApiModelProperty(value = "商家申诉原因")
+    @TableField("appeal_reason")
+    private String appealReason;
+
+    @ApiModelProperty(value = "图片id")
+    @TableField("img_id")
+    private String imgId;
+
+    @ApiModelProperty(value = "申诉状态: 0:待处理, 1:已驳回, 2:已同意, 3:处理中")
+    @TableField("appeal_status")
+    private Integer appealStatus;
+
+    @ApiModelProperty(value = "申诉最后结果")
+    @TableField("final_result")
+    private String finalResult;
+
+    @ApiModelProperty(value = "删除标记, 0:未删除, 1:已删除")
+    @TableField("delete_flag")
+    @TableLogic
+    private Integer deleteFlag;
+
+    @ApiModelProperty(value = "申诉创建时间")
+    @TableField(value = "created_time", fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createdTime;
+
+    @ApiModelProperty(value = "创建人ID")
+    @TableField("created_user_id")
+    private Integer createdUserId;
+
+    @ApiModelProperty(value = "修改时间")
+    @TableField(value = "updated_time", fill = FieldFill.INSERT_UPDATE)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date updatedTime;
+
+    @ApiModelProperty(value = "修改人ID")
+    @TableField("updated_user_id")
+    private Integer updatedUserId;
+
+    @ApiModelProperty(value = "AI接口返回的ID")
+    @TableField("record_id")
+    private Integer recordId;
+
+    @ApiModelProperty(value = "申诉ai审批过程")
+    @TableField("appeal_ai_approval")
+    private String appealAiApproval;
+}

+ 97 - 0
alien-service-entity/src/main/java/shop/alien/entity/store/StoreDictionary.java

@@ -0,0 +1,97 @@
+package shop.alien.entity.store;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * <p>
+ * 门店字典表 新
+ * </p>
+ *
+ * @author ssk
+ * @since 2024-12-26
+ */
+@Data
+@JsonInclude
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("store_dictionary")
+@ApiModel(value = "StoreDictionary对象", description = "门店字典表 新")
+public class StoreDictionary extends Model<StoreDictionary> {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "类型名称")
+    @TableField("type_name")
+    private String typeName;
+
+    @ApiModelProperty(value = "类型描述")
+    @TableField("type_detail")
+    private String typeDetail;
+
+    @ApiModelProperty(value = "父词典主键")
+    @TableField("parent_id")
+    private Integer parentId;
+
+    @ApiModelProperty(value = "字典值id")
+    @TableField("dict_id")
+    private String dictId;
+
+    @ApiModelProperty(value = "字典描述")
+    @TableField("dict_detail")
+    private String dictDetail;
+
+    @ApiModelProperty(value = "删除标记, 0:未删除, 1:已删除")
+    @TableField("delete_flag")
+    @TableLogic
+    private Integer deleteFlag;
+
+    @ApiModelProperty(value = "创建时间")
+    @TableField("created_time")
+    private Date createdTime;
+
+    @ApiModelProperty(value = "创建人ID")
+    @TableField("created_user_id")
+    private Integer createdUserId;
+
+    @ApiModelProperty(value = "修改时间")
+    @TableField("updated_time")
+    private Date updatedTime;
+
+    @ApiModelProperty(value = "修改人ID")
+    @TableField("updated_user_id")
+    private Integer updatedUserId;
+
+    @ApiModelProperty(value = "子节点")
+    @TableField(exist = false)
+    private List<StoreDictionary> storeDictionaryList;
+
+    @ApiModelProperty(value = "是否隐藏, 0:不隐藏, 1:隐藏")
+    @TableField("hidden")
+    private Integer hidden;
+
+    @ApiModelProperty(value = "排序ID")
+    @TableField("sort_id")
+    private Integer sortId;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 32 - 0
alien-service-entity/src/main/java/shop/alien/entity/store/vo/LifeBlacklistVo.java

@@ -0,0 +1,32 @@
+package shop.alien.entity.store.vo;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import shop.alien.entity.store.LifeBlacklist;
+
+/**
+ * @Author: fcw
+ * @CreateTime: 2025-05-08
+ * @Description: 拉黑
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@JsonInclude
+@NoArgsConstructor
+@ApiModel(value = "LifeBlacklistVo对象", description = "拉黑")
+public class LifeBlacklistVo extends LifeBlacklist {
+
+    @ApiModelProperty(value = "名称")
+    private String name;
+
+    @ApiModelProperty(value = "用户头像")
+    private String userImage;
+
+    @ApiModelProperty(value = "用户头像")
+    private String phoneId;
+
+}

+ 54 - 0
alien-service-entity/src/main/java/shop/alien/entity/store/vo/LifeMessageVo.java

@@ -0,0 +1,54 @@
+package shop.alien.entity.store.vo;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import shop.alien.entity.store.LifeMessage;
+
+@Data
+@JsonInclude
+@NoArgsConstructor
+@ApiModel(value = "LifeMessageVo对象", description = "消息通知")
+public class LifeMessageVo extends LifeMessage {
+
+    @ApiModelProperty(value = "名称")
+    private String userName;
+
+    @ApiModelProperty(value = "头像")
+    private String userImage;
+
+    @ApiModelProperty(value = "商户头像")
+    private String storeImg;
+
+    @ApiModelProperty(value = "唯一标识")
+    private String phoneId;
+
+    @ApiModelProperty(value = "用户id")
+    private Integer userId;
+//
+//    @ApiModelProperty(value = "消息列表")
+//    private List<LifeMessage> messageList;
+
+    @ApiModelProperty(value = "未读消息数量")
+    private Long notReadCount;
+
+    @ApiModelProperty(value = "是否免打扰 0-未免打扰 1-免打扰")
+    private String isNotDisturb;
+
+    @ApiModelProperty(value = "我是否关注对方 0-未关注 1-已关注")
+    private String isFollowThis;
+
+    @ApiModelProperty(value = "对方是否关注我 0-未关注 1-已关注")
+    private String isFollowMe;
+
+    @ApiModelProperty(value = "是否是商户 0-不是商户 1-是商户")
+    private String isMerchant;
+
+    @ApiModelProperty(value = "接收方图片展示")
+    private String receiverImg;
+
+    @ApiModelProperty(value = "发送方图片展示")
+    private String senderImg;
+}

+ 39 - 0
alien-service-entity/src/main/java/shop/alien/mapper/LifeBlacklistMapper.java

@@ -0,0 +1,39 @@
+package shop.alien.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import shop.alien.entity.store.LifeBlacklist;
+import shop.alien.entity.store.vo.LifeBlacklistVo;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 黑名单
+ Mapper 接口
+ * </p>
+ *
+ * @author ssk
+ * @since 2025-04-30
+ */
+public interface LifeBlacklistMapper extends BaseMapper<LifeBlacklist> {
+
+    List<LifeBlacklist> selectListByUserId(LambdaUpdateWrapper<LifeBlacklist> wrapper);
+
+    /**
+     * 获取拉黑列表
+     *
+     * @param userId 用户id
+     * @return 拉黑用户id 集合
+     */
+    List<Integer> getBlackList(Integer userId);
+
+    @Select("select if (black.blocked_type = '2', concat('user_', user.user_phone), concat('store_', suser.phone)) phoneId " +
+            "from life_blacklist black " +
+            "left join life_user user on user.id = black.blocked_id and black.blocked_type = '2' and user.delete_flag = 0 " +
+            "left join store_user suser on suser.id = black.blocked_id and black.blocked_type = '1' and suser.delete_flag = 0 " +
+            "where black.blocker_type = #{userType} and black.blocker_id = #{userId} and black.delete_flag = 0 ")
+    List<LifeBlacklistVo> getPhoneIdByUserId(@Param("userType") String userType, @Param("userId") String userId);
+}

+ 12 - 0
alien-service-entity/src/main/java/shop/alien/mapper/LifeCollectMapper.java

@@ -0,0 +1,12 @@
+package shop.alien.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import shop.alien.entity.store.LifeCollect;
+
+/**
+ * 收藏
+ */
+@Mapper
+public interface LifeCollectMapper extends BaseMapper<LifeCollect> {
+}

+ 280 - 0
alien-service-entity/src/main/java/shop/alien/mapper/LifeFansMapper.java

@@ -0,0 +1,280 @@
+package shop.alien.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import shop.alien.entity.store.LifeFans;
+import shop.alien.entity.store.vo.LifeFansVo;
+
+import java.util.List;
+
+@Mapper
+public interface LifeFansMapper extends BaseMapper<LifeFans> {
+
+    @Select("select MAX(foll.id) id, MAX(foll.name) name, MAX(foll.image) image, foll.phoneId, MAX(foll.blurb) blurb, MAX(foll.blockedType) blockedType, MAX(foll.blockedId) blockedId, MAX(foll.username) username, MAX(foll.accountBlurb) accountBlurb, MAX(foll.isMerchant) isMerchant, " +
+            "  MAX(lb.id) blackListid, MAX(if(isnull(fans.id), 0, 1)) isFollowMe, 1 as isFollowThis,  " +
+            "  (select count(1) from life_fans where fans_id= foll.phoneId and delete_flag =0) followNum, " +
+            "  (select count(1) from life_fans where followed_id= foll.phoneId and delete_flag =0) fansNum from ( " +
+            "    with follow as (   " +
+            "        select substring_index(followed_id, '_', 1) as flag, substring_index(followed_id, '_', -1) as phone   " +
+            "        from life_fans   " +
+            "        where delete_flag = 0 and fans_id = #{fansId} " +
+            "    )   " +
+            "    select info.id, IF(info.store_application_status = 0, user.nick_name, info.store_name) AS NAME," +
+            "    user.head_img image, concat('store_', user.phone) phoneId, IF(info.store_application_status = 0, user.account_blurb, info.store_blurb) AS blurb, 1 blockedType,user.id blockedId ,IFNULL(user.nick_name, user.name) username, user.account_blurb accountBlurb, IF(info.store_application_status = 1, '1', '0') AS isMerchant " +
+            "    from follow foll " +
+            "    join store_user user on foll.phone = user.phone " +
+            "    join store_info info on info.id = user.store_id " +
+            "    left join store_img img on img.store_id = user.store_id and img.img_type = '10' and img.delete_flag = 0 " +
+            "    where foll.flag = 'store' and user.delete_flag = 0 and info.delete_flag = 0 " +
+            "    union " +
+            "    select user.id, user.user_name name, user.user_image image, concat('user_', user.user_phone) phoneId, user.jianjie blurb, 2 blockedType,user.id blockedId,'' username, '' accountBlurb, '0' AS isMerchant " +
+            "    from follow foll " +
+            "    join life_user user on foll.phone = user.user_phone   " +
+            "    where foll.flag = 'user' and user.delete_flag = 0   " +
+            ") foll   " +
+            "left join life_fans fans on fans.fans_id = foll.phoneId and fans.followed_id = #{fansId} and fans.delete_flag = 0 " +
+            "left join life_blacklist lb on lb.blocked_type = foll.blockedType and lb.blocked_id = foll.blockedId and lb.blocker_type = #{blockerType} and lb.blocker_id = #{blockerId} and lb.delete_flag = 0 " +
+            "${ew.customSqlSegment} ")
+    IPage<LifeFansVo> getMyFollowed(IPage<LifeFansVo> iPage, @Param("fansId") String fansId, @Param("blockerType") String blockerType, @Param("blockerId") String blockerId, @Param(Constants.WRAPPER) QueryWrapper<LifeFansVo> wrapper);
+
+
+    @Select("select foll.*, if(isnull(fans.id), 0, 1) isFollowMe, 1 as isFollowThis from ( " +
+            "    with follow as (   " +
+            "        select substring_index(followed_id, '_', 1) as flag, substring_index(followed_id, '_', -1) as phone   " +
+            "        from life_fans   " +
+            "        where delete_flag = 0 and fans_id = #{fansId} " +
+            "    )   " +
+            "    select info.id, info.store_name name, img.img_url image, concat('store_', user.phone) phoneId " +
+            "    from follow foll " +
+            "    join store_user user on foll.phone = user.phone " +
+            "    join store_info info on info.id = user.store_id " +
+            "    left join store_img img on img.store_id = user.store_id and img.img_type = '10' and img.delete_flag = 0 " +
+            "    where foll.flag = 'store' and user.delete_flag = 0 and info.delete_flag = 0 " +
+            "    union " +
+            "    select user.id, user.user_name name, user.user_image image, concat('user_', user.user_phone) phoneId " +
+            "    from follow foll " +
+            "    join life_user user on foll.phone = user.user_phone   " +
+            "    where foll.flag = 'user' and user.delete_flag = 0   " +
+            ") foll " +
+            "left join life_fans fans on fans.fans_id = foll.phoneId and fans.followed_id = #{fansId} and fans.delete_flag = 0 ")
+    List<LifeFansVo> getMyFollowedAll(@Param("fansId") String fansId);
+
+    @Select("select MAX(foll.id) id, MAX(foll.name) name, MAX(foll.image) image, foll.phoneId, MAX(foll.blurb) blurb, MAX(foll.blockedType) blockedType, MAX(foll.blockedId) blockedId, MAX(foll.isMerchant) isMerchant, " +
+            "  MAX(lb.id) blackListid, MAX(if(isnull(fans.id), 0, 1)) isFollowThis, 1 as isFollowMe, " +
+            "    (select count(1) from life_fans fans2 where fans2.followed_id = foll.phoneId and fans2.delete_flag = 0) fansNum, " +
+            "    (select count(1) from life_fans fans3 where fans3.fans_id = foll.phoneId and fans3.delete_flag = 0) followNum " +
+            "from ( " +
+            "    with follow as ( " +
+            "        select substring_index(fans_id, '_', 1) as flag, substring_index(fans_id, '_', -1) as phone " +
+            "        from life_fans " +
+            "        where delete_flag = 0 and followed_id = #{fansId} " +
+            "    ) " +
+            "    select user.id, IF(info.store_application_status = 0, user.nick_name, info.store_name) AS name, user.head_img image, concat('store_', user.phone) phoneId, IF(info.store_application_status = 0, user.account_blurb, info.store_blurb) AS blurb, 1 blockedType,user.id blockedId, IF(info.store_application_status = 1, '1', '0') AS isMerchant" +
+            "    from follow foll " +
+            "    join store_user user on foll.phone = user.phone " +
+            "    join store_info info on info.id = user.store_id " +
+            "    left join store_img img on img.store_id = user.store_id and img.img_type = '10' and img.delete_flag = 0 " +
+            "    where foll.flag = 'store' and user.delete_flag = 0 and info.delete_flag = 0" +
+            "    union " +
+            "    select user.id, user.user_name name, user.user_image image, concat('user_', user.user_phone) phoneId, user.jianjie blurb, 2 blockedType,user.id blockedId, '0' AS isMerchant" +
+            "    from follow foll " +
+            "    join life_user user on foll.phone = user.user_phone " +
+            "    where foll.flag = 'user' and user.delete_flag = 0 " +
+            ") foll " +
+            "left join life_fans fans on fans.followed_id = foll.phoneId and fans.fans_id = #{fansId} and fans.delete_flag = 0 " +
+            "left join life_blacklist lb on lb.blocked_type = foll.blockedType and lb.blocked_id = foll.blockedId and lb.blocker_type = #{blockerType} and lb.blocker_id = #{blockerId} and lb.delete_flag = 0 " +
+            "${ew.customSqlSegment} ")
+    IPage<LifeFansVo> getMyFans(IPage<LifeFansVo> iPage, @Param("fansId") String fansId, @Param("blockerType") String blockerType, @Param("blockerId") String blockerId, @Param(Constants.WRAPPER) QueryWrapper<LifeFansVo> wrapper);
+
+//    @Select("select foll.*, if(isnull(fans.id), 0, 1) isFollowThis, 1 as isFollowMe, count(fans2.id) fansNum, count(fans3.id) followNum from ( " +
+//            "    with follow as ( " +
+//            "    select substring_index(fans_id, '_', 1) as flag, substring_index(fans_id, '_', -1) as phone " +
+//            "    from life_fans " +
+//            "    where delete_flag = 0 and followed_id = #{fansId} " +
+//            "    ) " +
+//            "    select info.id," +
+//            "    \"CASE \" +\n" +
+//            "        \"WHEN user.store_id IS NULL OR info.store_application_status = 0 THEN user.nick_name \" +\n" +
+//            "        \"ELSE info.store_name \" +\n" +
+//            "        \"END AS name, \" +\n" +
+//            "        \"CASE \" +\n" +
+//            "        \"WHEN user.store_id IS NULL OR info.store_application_status IN (0, 2) THEN user.account_blurb \" +\n" +
+//            "        \"ELSE info.store_blurb \" +\n" +
+//            "        \"END AS store_blurb, \" + " +
+//            "    user.head_img image, concat('store_', user.phone) phoneId" +
+//            "    from follow foll " +
+//            "    join store_user user on foll.phone = user.phone " +
+//            "    LEFT JOIN store_info info ON user.store_id IS NOT NULL AND info.id = user.store_id " +
+//            "    and info.delete_flag = 0" +
+//            "    left join store_img img on img.store_id = user.store_id and img.img_type = '10' and img.delete_flag = 0 " +
+//            "    where foll.flag = 'store' and user.delete_flag = 0 " +
+//            ") foll " +
+//            "left join life_fans fans on fans.followed_id = foll.phoneId and fans.fans_id = #{fansId} and fans.delete_flag = 0 " +
+//            "left join life_fans fans2 on fans2.followed_id = foll.phoneId and fans2.delete_flag = 0 " +
+//            "left join life_fans fans3 on fans3.fans_id = foll.phoneId and fans3.delete_flag = 0 " +
+//            "${ew.customSqlSegment} ")
+    @Select("SELECT " +
+            "MAX(foll.id) id, " +
+            "MAX(foll.name) name, " +
+            "MAX(foll.blurb) blurb, " +
+            "MAX(foll.image) image, " +
+            "foll.phoneId, " +
+            "MAX(foll.isMerchant) isMerchant, " +
+            "MAX(IF(isnull(fans.id), 0, 1)) isFollowThis, " +
+            "1 AS isFollowMe, " +
+            "count(fans2.id) fansNum, " +
+            "count(fans3.id) followNum " +
+            "FROM " +
+            "( " +
+            "WITH follow AS ( " +
+            "SELECT " +
+            "substring_index(fans_id, '_', 1) AS flag, " +
+            "substring_index(fans_id, '_', -1) AS phone " +
+            "FROM " +
+            "life_fans " +
+            "WHERE " +
+            "delete_flag = 0 " +
+            "AND followed_id = #{fansId} " +
+            ") " +
+            "SELECT " +
+            "info.id, " +
+            "CASE " +
+            "WHEN user.store_id IS NULL OR info.store_application_status = 0 THEN user.nick_name " +
+            "ELSE info.store_name " +
+            "END AS name, " +
+            "CASE " +
+            "WHEN user.store_id IS NULL OR info.store_application_status IN (0, 2) THEN user.account_blurb " +
+            "ELSE info.store_blurb " +
+            "END AS blurb, " +
+            "user.head_img AS image, " +
+            "concat('store_', user.phone) AS phoneId, " +
+            "CASE " +
+            "WHEN user.store_id IS NOT NULL AND info.store_application_status = 1 THEN '1' " +
+            "ELSE '0' " +
+            "END AS isMerchant " +
+            "FROM " +
+            "follow foll " +
+            "JOIN store_user user ON foll.phone = user.phone " +
+            "LEFT JOIN store_info info ON user.store_id IS NOT NULL " +
+            "AND info.id = user.store_id " +
+            "AND info.delete_flag = 0 " +
+            "LEFT JOIN store_img img ON img.store_id = user.store_id " +
+            "AND img.img_type = '10' " +
+            "AND img.delete_flag = 0 " +
+            "WHERE " +
+            "foll.flag = 'store' " +
+            "AND user.delete_flag = 0 " +
+            ") foll " +
+            "LEFT JOIN life_fans fans ON fans.followed_id = foll.phoneId " +
+            "AND fans.fans_id = #{fansId} " +
+            "AND fans.delete_flag = 0 " +
+            "LEFT JOIN life_fans fans2 ON fans2.followed_id = foll.phoneId " +
+            "AND fans2.delete_flag = 0 " +
+            "LEFT JOIN life_fans fans3 ON fans3.fans_id = foll.phoneId " +
+            "AND fans3.delete_flag = 0 " +
+            "${ew.customSqlSegment}")
+    IPage<LifeFansVo> getMyStoreFans(IPage<LifeFansVo> iPage, @Param("fansId") String fansId, @Param(Constants.WRAPPER) QueryWrapper<LifeFansVo> wrapper);
+
+    @Select("select MAX(foll.id) id, MAX(foll.name) name, MAX(foll.image) image, foll.phoneId, MAX(foll.blurb) blurb, " +
+            "  MAX(if(isnull(fans.id), 0, 1)) isFollowThis, 1 as isFollowMe, " +
+            "       (select count(1) from life_fans fans2 where fans2.followed_id = foll.phoneId and fans2.delete_flag = 0) fansNum, " +
+            "       (select count(1) from life_fans fans3 where fans3.fans_id = foll.phoneId and fans3.delete_flag = 0) followNum " +
+            " from ( " +
+            "    with follow as ( " +
+            "    select substring_index(fans_id, '_', 1) as flag, substring_index(fans_id, '_', -1) as phone " +
+            "    from life_fans " +
+            "    where delete_flag = 0 and followed_id = #{fansId} " +
+            "    ) " +
+            "    select user.id, user.user_name name, user.user_image image, concat('user_', user.user_phone) phoneId, user.jianjie blurb " +
+            "    from follow foll " +
+            "    join life_user user on foll.phone = user.user_phone " +
+            "    where foll.flag = 'user' and user.delete_flag = 0 " +
+            ") foll " +
+            "left join life_fans fans on fans.followed_id = foll.phoneId and fans.fans_id = #{fansId} and fans.delete_flag = 0 " +
+            "${ew.customSqlSegment} ")
+    IPage<LifeFansVo> getMyUserFans(IPage<LifeFansVo> iPage, @Param("fansId") String fansId, @Param(Constants.WRAPPER) QueryWrapper<LifeFansVo> wrapper);
+
+    @Select("select MAX(foll.id) id, MAX(foll.name) name, MAX(foll.image) image, foll.phoneId, MAX(foll.blurb) blurb, MAX(foll.blockedType) blockedType, MAX(foll.blockedId) blockedId, MAX(foll.username) username, MAX(foll.accountBlurb) accountBlurb, MAX(foll.isMerchant) isMerchant, " +
+            "  MAX(lb.id) blackListid, 1 as isFollowThis, 1 as isFollowMe, " +
+            "       (select count(1) from life_fans fans2 where fans2.followed_id = foll.phoneId and fans2.delete_flag = 0) fansNum, " +
+            "       (select count(1) from life_fans fans3 where fans3.fans_id = foll.phoneId and fans3.delete_flag = 0) followNum " +
+            "from ( " +
+            "    with follow as ( " +
+            "        select substring_index(fans1.followed_id, '_', 1) as flag, substring_index(fans1.followed_id, '_', -1) as phone " +
+            "        from life_fans fans1 " +
+            "        join life_fans fans2 on fans1.followed_id = fans2.fans_id and fans1.fans_id = fans2.followed_id " +
+            "        where fans1.delete_flag = 0 and fans2.delete_flag = 0 and fans1.fans_id = #{fansId} " +
+            "    ) " +
+            "    select info.id, IF(info.store_application_status = 0, user.nick_name, info.store_name) AS name, user.head_img image, concat('store_', user.phone) phoneId, IF(info.store_application_status = 0, user.account_blurb, info.store_blurb) AS blurb, 1 blockedType,user.id blockedId ,IFNULL(user.nick_name, user.name) username, user.account_blurb accountBlurb, IF(info.store_application_status = 1, '1', '0') AS isMerchant " +
+            "    from follow foll " +
+            "    join store_user user on foll.phone = user.phone " +
+            "    join store_info info on info.id = user.store_id " +
+            "    left join store_img img on img.store_id = user.store_id and img.img_type = '10' and img.delete_flag = 0 " +
+            "    where foll.flag = 'store' and user.delete_flag = 0 and info.delete_flag = 0 " +
+            "    union " +
+            "    select user.id, user.user_name name, user.user_image image, concat('user_', user.user_phone) phoneId, user.jianjie blurb, 2 blockedType,user.id blockedId,'' username, '' accountBlurb, '0' AS isMerchant " +
+            "    from follow foll " +
+            "    join life_user user on foll.phone = user.user_phone " +
+            "    where foll.flag = 'user' and user.delete_flag = 0 " +
+            ") foll " +
+            "left join life_blacklist lb on lb.blocked_type = foll.blockedType and lb.blocked_id = foll.blockedId and lb.blocker_type = #{blockerType} and lb.blocker_id = #{blockerId} and lb.delete_flag = 0 " +
+            "${ew.customSqlSegment} ")
+    IPage<LifeFansVo> getMutualAttention(IPage<LifeFansVo> iPage, @Param("fansId") String fansId, @Param("blockerType") String blockerType, @Param("blockerId") String blockerId, @Param(Constants.WRAPPER) QueryWrapper<LifeFansVo> wrapper);
+
+    @Select("select MAX(foll.id) id, MAX(foll.name) name, MAX(foll.image) image, foll.phoneId, MAX(foll.blurb) blurb, 1 as isFollowThis, 1 as isFollowMe, " +
+            "       (select count(1) from life_fans fans2 where fans2.followed_id = foll.phoneId and fans2.delete_flag = 0) fansNum, " +
+            "       (select count(1) from life_fans fans3 where fans3.fans_id = foll.phoneId and fans3.delete_flag = 0) followNum " +
+            "from ( " +
+            "    with follow as ( " +
+            "        select substring_index(fans1.followed_id, '_', 1) as flag, substring_index(fans1.followed_id, '_', -1) as phone " +
+            "        from life_fans fans1 " +
+            "        join life_fans fans2 on fans1.followed_id = fans2.fans_id and fans1.fans_id = fans2.followed_id " +
+            "        where fans1.delete_flag = 0 and fans2.delete_flag = 0 and fans1.fans_id = #{fansId} " +
+            "    ) " +
+            "    select user.id, user.user_name name, user.user_image image, concat('user_', user.user_phone) phoneId, user.jianjie blurb " +
+            "    from follow foll " +
+            "    join life_user user on foll.phone = user.user_phone " +
+            "    where foll.flag = 'user' and user.delete_flag = 0 " +
+            ") foll " +
+            "${ew.customSqlSegment} ")
+    IPage<LifeFansVo> getMutualAttentionUser(IPage<LifeFansVo> iPage, @Param("fansId") String fansId, @Param(Constants.WRAPPER) QueryWrapper<LifeFansVo> wrapper);
+
+    @Select("select (select count(1) from life_fans where fans_id = #{phoneId} and delete_flag = 0 and followed_id not REGEXP '_$') followNum, " +
+            "(select count(1) from life_fans where followed_id= #{phoneId} and delete_flag = 0 and fans_id not REGEXP '_$') fansNum, " +
+            "(select count(1) from ( " +
+            "        select foll.*, 1 as isFollowThis, 1 as isFollowMe, " +
+            "               (select count(1) from life_fans fans2 where fans2.followed_id = foll.phoneId and fans2.delete_flag = 0) fansNum, " +
+            "               (select count(1) from life_fans fans3 where fans3.fans_id = foll.phoneId and fans3.delete_flag = 0) followNum " +
+            "        from ( " +
+            "            with follow as ( " +
+            "                select substring_index(fans1.followed_id, '_', 1) as flag, substring_index(fans1.followed_id, '_', -1) as phone " +
+            "                from life_fans fans1 " +
+            "                join life_fans fans2 on fans1.followed_id = fans2.fans_id and fans1.fans_id = fans2.followed_id " +
+            "                where fans1.delete_flag = 0 and fans2.delete_flag = 0 and fans1.fans_id = #{phoneId} " +
+            "            ) " +
+            "            select info.id, info.store_name name, img.img_url image, concat('store_', user.phone) phoneId " +
+            "            from follow foll " +
+            "            join store_user user on foll.phone = user.phone " +
+            "            join store_info info on info.id = user.store_id " +
+            "            left join store_img img on img.store_id = user.store_id and img.img_type = '10' and img.delete_flag = 0 " +
+            "            where foll.flag = 'store' and user.delete_flag = 0 and info.delete_flag = 0 " +
+            "            union " +
+            "            select user.id, user.user_name name, user.user_image image, concat('user_', user.user_phone) phoneId " +
+            "            from follow foll " +
+            "            join life_user user on foll.phone = user.user_phone " +
+            "            where foll.flag = 'user' and user.delete_flag = 0 " +
+            "        ) foll " +
+            "    ) a " +
+            ") friendNum, " +
+            "( " +
+            "    select count(id) " +
+            "    from life_user_dynamics " +
+            "    where delete_flag = 0 and phone_id = #{phoneId} and draft = 0 " +
+            ") dynamicsNum")
+    LifeFansVo getHomePageInfo(@Param("phoneId") String phoneId);
+}

+ 9 - 0
alien-service-entity/src/main/java/shop/alien/mapper/LifeLikeRecordMapper.java

@@ -0,0 +1,9 @@
+package shop.alien.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import shop.alien.entity.store.LifeLikeRecord;
+
+@Mapper
+public interface LifeLikeRecordMapper extends BaseMapper<LifeLikeRecord> {
+}

+ 102 - 0
alien-service-entity/src/main/java/shop/alien/mapper/LifeMessageMapper.java

@@ -0,0 +1,102 @@
+package shop.alien.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+import shop.alien.entity.store.LifeMessage;
+import shop.alien.entity.store.vo.LifeFansVo;
+import shop.alien.entity.store.vo.LifeMessageVo;
+
+import java.util.List;
+
+/**
+ * 消息
+ */
+@Mapper
+public interface LifeMessageMapper extends BaseMapper<LifeMessage> {
+
+    @Select("select id, user_name userName, user_image userImage, concat('user_', user_phone) phoneId " +
+            "from life_user " +
+            "where delete_flag = 0 and user_phone != '' and user_phone in (${userPhones})  " +
+            "union " +
+            "select info.id, user.nick_name userName, user.head_img userImage, concat('store_', user.phone) phoneId " +
+            "from store_user user " +
+            "join store_info info on info.id = user.store_id " +
+            "left join store_img img on img.store_id = info.id and img.img_type = '10' and img.delete_flag = 0 " +
+            "where user.delete_flag = 0 and info.delete_flag = 0 and user.phone != '' and phone in (${storePhones}) ")
+    List<LifeMessageVo> getLifeUserAndStoreUserByPhone(@Param("storePhones") String storePhones, @Param("userPhones") String userPhones);
+
+    @Select("with message_num as ( " +
+            "    with message as ( " +
+            "        select id, type, content, created_time, if(sender_id = #{phoneId}, receiver_id, sender_id) phoneId, sender_id, receiver_id, is_read " +
+            "        from life_message " +
+            "        where delete_flag = 0 and (sender_id = #{phoneId} or receiver_id = #{phoneId}) " +
+            "               and (instr(delete_phone_id, #{phoneId}) is null or instr(delete_phone_id, #{phoneId}) = 0)" +
+            "    ) " +
+            "    select *, row_number() over (partition by phoneId order by created_time desc ) num, " +
+            "           substring_index(phoneId, '_', 1) flag, substring_index(phoneId, '_', -1) phone " +
+            "    from message " +
+            ") " +
+            "select message.id, message.type, message.phoneId, message.content, message.created_time createdTime, message.is_read, " +
+            "case "+
+            "when message.flag = 'user' then user.user_name "+
+            "when message.flag = 'store' then suser.nick_name "+
+            "when message.flag = 'lawyer' then luser.name "+
+            "else '' "+
+            "end as userName, "+
+            "case "+
+            "when INSTR(  message.phoneId, 'user' ) > 0 then user.user_image "+
+            "when INSTR(  message.phoneId, 'store' ) > 0 then suser.head_img "+
+            "when INSTR(  message.phoneId, 'lawyer' ) > 0 then luser.head_img "+
+            "else ''  "+
+            "end as user_image, "+
+            "case "+
+            "when message.flag = 'user' then user.id "+
+            "when message.flag = 'store' then suser.id "+
+            "when message.flag = 'lawyer' then luser.id "+
+            "else '' "+
+            "end as userId "+
+            "from message_num message " +
+            "left join life_user user on message.flag = 'user' and message.phone = user.user_phone and user.delete_flag = 0 " +
+            "left join store_user suser on message.flag = 'store' and message.phone = suser.phone and suser.delete_flag = 0 " +
+            "left join lawyer_user luser on message.flag = 'lawyer' and message.phone = luser.phone and luser.delete_flag = 0 "+
+            "left join store_img img on img.store_id = suser.store_id and img.img_type = '10' and img.delete_flag = 0 " +
+            "${ew.customSqlSegment}")
+    List<LifeMessageVo> getLifeMessagePageByPhoneId(@Param("phoneId") String phoneId, @Param(Constants.WRAPPER) QueryWrapper<LifeFansVo> dynamicsWrapper);
+
+    @Update("update life_message set delete_phone_id = (if(delete_phone_id is null, #{receiverId}, concat(delete_phone_id, ',', #{receiverId}))) " +
+            "where ((receiver_id = #{senderId} and sender_id = #{receiverId}) or (sender_id = #{senderId} and receiver_id = #{receiverId})) " +
+            "   and (instr(delete_phone_id, #{receiverId}) is null or instr(delete_phone_id, #{receiverId}) = 0)")
+    int deleteMessageByPhoneId(@Param("senderId") String senderId, @Param("receiverId") String receiverId);
+
+    @Select("select lm.id,lm.updated_time,lm.created_user_id,lm.receiver_name,lm.is_read,lm.type,lm.content,lm.current_time,lm.delete_flag," +
+            "       lm.sender_id,lm.sender_name,lm.receiver_id,lm.delete_phone_id,lm.created_time,lm.updated_user_id,lu.user_image " +
+            "from life_message lm " +
+            "left join life_user lu on SUBSTRING(lm.sender_id, INSTR(lm.sender_id, '_') + 1) = lu.user_phone " +
+            "where lm.delete_flag = 0 " +
+            "   and (((lm.receiver_id = #{senderId} and lm.sender_id = #{receiverId}) or (lm.sender_id = #{senderId} and lm.receiver_id = #{receiverId}))) " +
+            "   and (instr(delete_phone_id, #{receiverId}) is null or instr(delete_phone_id, #{receiverId}) = 0) " +
+            "order by lm.created_time asc ")
+    List<LifeMessageVo> getMessageListByReceiverId(@Param("receiverId") String receiverId, @Param("senderId") String senderId);
+
+    @Select("select user.id, user.user_name name, user.user_image image, concat('user_', user.user_phone) phoneId, user.jianjie blurb " +
+            "from life_user user " +
+            "where user_phone in ( " +
+            "    select substring_index(sender_id, '_', -1) phone from life_message " +
+            "    where sender_id in " +
+            "          (select receiver_id from life_message " +
+            "            where sender_id = #{senderId} and receiver_id != #{senderId} and delete_flag = 0 " +
+            "            and left(receiver_id, 5) = 'user_' and receiver_id not in ( " +
+            "                    select blocked_phone_id from life_blacklist " +
+            "                    where blocker_phone_id = #{senderId} and delete_flag = 0 " +
+            "                ) " +
+            "            group by receiver_id) " +
+            "    and receiver_id = #{senderId} and delete_flag = 0 " +
+            "    group by sender_id) " +
+            "and delete_flag = 0 ")
+    List<LifeFansVo> getTalkedUserList(@Param("senderId") String senderId);
+}

+ 23 - 0
alien-service-entity/src/main/java/shop/alien/mapper/StoreDictionaryMapper.java

@@ -0,0 +1,23 @@
+package shop.alien.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Select;
+import shop.alien.entity.store.StoreDictionary;
+
+/**
+ * <p>
+ * 门店字典表 新 Mapper 接口
+ * </p>
+ *
+ * @author ssk
+ * @since 2024-12-26
+ */
+public interface StoreDictionaryMapper extends BaseMapper<StoreDictionary> {
+
+    @Select("SELECT max(dict_id) num " +
+            "FROM store_dictionary " +
+            "WHERE type_name = #{dictId} " +
+            "ORDER BY dict_id DESC")
+    Integer getMaxDictIdByTypeName(String dictId);
+
+}