diff --git a/cash-common/cash-common-service/src/main/java/com/czg/market/entity/ChatMessage.java b/cash-common/cash-common-service/src/main/java/com/czg/market/entity/ChatMessage.java new file mode 100644 index 000000000..ddd82d195 --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/market/entity/ChatMessage.java @@ -0,0 +1,113 @@ +package com.czg.market.entity; + +import com.mybatisflex.annotation.Id; +import com.mybatisflex.annotation.KeyType; +import com.mybatisflex.annotation.Table; +import java.io.Serializable; +import java.math.BigInteger; +import java.time.LocalDateTime; + +import java.io.Serial; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +/** + * 聊天消息表 实体类。 + * + * @author ww + * @since 2025-12-04 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Table("chat_message") +@Accessors(chain = true) +public class ChatMessage implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 消息ID + */ + @Id(keyType = KeyType.Auto) + private BigInteger id; + + /** + * 发送者ID + */ + private String fromId; + + /** + * 接收者ID(单聊=对方ID,群聊=群ID) + */ + private String toId; + + /** + * 群ID + */ + private String groupId; + + /** + * 聊天类型:1=单聊,2=群聊 + */ + private Integer chatType; + + /** + * 消息类型:1=文本/常用语/表情,2=图片,3=订单, 4 优惠券 5视频 + */ + private Integer msgType; + + /** + * 文本/表情代码/常用语ID(仅msg_type=1) + */ + private String content; + + /** + * 图片URL(仅msg_type=2) + */ + private String imageUrl; + + /** + * 订单ID(仅msg_type=3) + */ + private String orderId; + + /** + * 优惠券信息 (仅msg_type=4) + */ + private String coupon; + + /** + * 是否已读:0=未读,1=已读 + */ + private Integer isRead; + + /** + * 发送时间 + */ + private LocalDateTime sendTime; + + /** + * 会话ID:单聊=min(from,to)_max(from,to),群聊=group_群ID + */ + private String sessionId; + + private Long shopId; + + /** + * chat_coupon的 id + */ + private Long chatCouponId; + + /** + * 1 领取 + */ + private Integer couponClaim; + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/market/service/MkShopCouponRecordService.java b/cash-common/cash-common-service/src/main/java/com/czg/market/service/MkShopCouponRecordService.java index 7aabfa0d7..32541c33c 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/market/service/MkShopCouponRecordService.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/market/service/MkShopCouponRecordService.java @@ -66,10 +66,13 @@ public interface MkShopCouponRecordService extends IService Boolean grant(Long shopId, MkRewardCouponDTO rewardCouponDTO, String source); + /** + * 组装 群聊活动优惠券 + */ MkShopCouponRecord assembleRecord(Long chatCouponId, ShopCoupon coupon); /** - * 优惠券发放 + * 群聊活动优惠券发放 */ void grantChatCoupon(MkShopCouponRecord record, Integer number); diff --git a/cash-service/market-service/src/main/java/com/czg/service/market/mapper/ChatMessageMapper.java b/cash-service/market-service/src/main/java/com/czg/service/market/mapper/ChatMessageMapper.java new file mode 100644 index 000000000..a6dbf835d --- /dev/null +++ b/cash-service/market-service/src/main/java/com/czg/service/market/mapper/ChatMessageMapper.java @@ -0,0 +1,14 @@ +package com.czg.service.market.mapper; + +import com.mybatisflex.core.BaseMapper; +import com.czg.market.entity.ChatMessage; + +/** + * 聊天消息表 映射层。 + * + * @author ww + * @since 2025-12-04 + */ +public interface ChatMessageMapper extends BaseMapper { + +} diff --git a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkShopCouponRecordServiceImpl.java b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkShopCouponRecordServiceImpl.java index bf3d57b21..cad2a5cda 100644 --- a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkShopCouponRecordServiceImpl.java +++ b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkShopCouponRecordServiceImpl.java @@ -19,12 +19,14 @@ import com.czg.account.vo.CouponReceiveVo; import com.czg.account.vo.UserCouponVo; import com.czg.exception.CzgException; import com.czg.market.dto.*; +import com.czg.market.entity.ChatMessage; import com.czg.market.entity.MkShopCouponRecord; import com.czg.market.entity.ShopCoupon; import com.czg.market.entity.SmsPushEventUser; import com.czg.market.service.MkShopCouponRecordService; import com.czg.market.vo.CouponRecordCountVO; import com.czg.market.vo.UserCouponVO; +import com.czg.service.market.mapper.ChatMessageMapper; import com.czg.service.market.mapper.MkShopCouponRecordMapper; import com.czg.service.market.mapper.ShopCouponMapper; import com.czg.utils.AssertUtil; @@ -37,6 +39,7 @@ import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.config.annotation.DubboReference; import org.apache.dubbo.config.annotation.DubboService; +import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; import java.time.LocalTime; @@ -66,6 +69,8 @@ public class MkShopCouponRecordServiceImpl extends ServiceImpl TARGET_KEY = Arrays.asList("消费赠券", "充值赠券", "管理员赠送", "兑换码兑换", "群聊发放", "生日赠券", "购买会员赠券", "短信发放", "公众号发放", "用户弹窗领取"); @@ -544,6 +549,7 @@ public class MkShopCouponRecordServiceImpl extends ServiceImpl { q.eq(ShopCoupon::getId, coupon.getSyncId()).or(q1 -> { diff --git a/cash-service/market-service/src/main/resources/mapper/ChatMessageMapper.xml b/cash-service/market-service/src/main/resources/mapper/ChatMessageMapper.xml new file mode 100644 index 000000000..910747060 --- /dev/null +++ b/cash-service/market-service/src/main/resources/mapper/ChatMessageMapper.xml @@ -0,0 +1,7 @@ + + + + +