Selaa lähdekoodia

微信公众号

fanzherong_v 2 kuukautta sitten
vanhempi
commit
d7fcff8ada

+ 123 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/officialinfo/controller/OfficialInfoController.java

@@ -0,0 +1,123 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.biz.modular.officialinfo.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Operation;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+import vip.xiaonuo.common.annotation.CommonLog;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.biz.modular.officialinfo.entity.OfficialInfo;
+import vip.xiaonuo.biz.modular.officialinfo.param.OfficialInfoAddParam;
+import vip.xiaonuo.biz.modular.officialinfo.param.OfficialInfoEditParam;
+import vip.xiaonuo.biz.modular.officialinfo.param.OfficialInfoIdParam;
+import vip.xiaonuo.biz.modular.officialinfo.param.OfficialInfoPageParam;
+import vip.xiaonuo.biz.modular.officialinfo.service.OfficialInfoService;
+
+import jakarta.annotation.Resource;
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotEmpty;
+import java.util.List;
+
+/**
+ * 微信公众号关注表控制器
+ *
+ * @author fanzherong
+ * @date  2025/04/10 17:31
+ */
+@Tag(name = "微信公众号关注表控制器")
+@RestController
+@Validated
+public class OfficialInfoController {
+
+    @Resource
+    private OfficialInfoService officialInfoService;
+
+    /**
+     * 获取微信公众号关注表分页
+     *
+     * @author fanzherong
+     * @date  2025/04/10 17:31
+     */
+    @Operation(summary = "获取微信公众号关注表分页")
+    @SaCheckPermission("/biz/officialinfo/page")
+    @GetMapping("/biz/officialinfo/page")
+    public CommonResult<Page<OfficialInfo>> page(OfficialInfoPageParam officialInfoPageParam) {
+        return CommonResult.data(officialInfoService.page(officialInfoPageParam));
+    }
+
+    /**
+     * 添加微信公众号关注表
+     *
+     * @author fanzherong
+     * @date  2025/04/10 17:31
+     */
+    @Operation(summary = "添加微信公众号关注表")
+    @CommonLog("添加微信公众号关注表")
+    @SaCheckPermission("/biz/officialinfo/add")
+    @PostMapping("/biz/officialinfo/add")
+    public CommonResult<String> add(@RequestBody @Valid OfficialInfoAddParam officialInfoAddParam) {
+        officialInfoService.add(officialInfoAddParam);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 编辑微信公众号关注表
+     *
+     * @author fanzherong
+     * @date  2025/04/10 17:31
+     */
+    @Operation(summary = "编辑微信公众号关注表")
+    @CommonLog("编辑微信公众号关注表")
+    @SaCheckPermission("/biz/officialinfo/edit")
+    @PostMapping("/biz/officialinfo/edit")
+    public CommonResult<String> edit(@RequestBody @Valid OfficialInfoEditParam officialInfoEditParam) {
+        officialInfoService.edit(officialInfoEditParam);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 删除微信公众号关注表
+     *
+     * @author fanzherong
+     * @date  2025/04/10 17:31
+     */
+    @Operation(summary = "删除微信公众号关注表")
+    @CommonLog("删除微信公众号关注表")
+    @SaCheckPermission("/biz/officialinfo/delete")
+    @PostMapping("/biz/officialinfo/delete")
+    public CommonResult<String> delete(@RequestBody @Valid @NotEmpty(message = "集合不能为空")
+                                                   List<OfficialInfoIdParam> officialInfoIdParamList) {
+        officialInfoService.delete(officialInfoIdParamList);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 获取微信公众号关注表详情
+     *
+     * @author fanzherong
+     * @date  2025/04/10 17:31
+     */
+    @Operation(summary = "获取微信公众号关注表详情")
+    @SaCheckPermission("/biz/officialinfo/detail")
+    @GetMapping("/biz/officialinfo/detail")
+    public CommonResult<OfficialInfo> detail(@Valid OfficialInfoIdParam officialInfoIdParam) {
+        return CommonResult.data(officialInfoService.detail(officialInfoIdParam));
+    }
+}

+ 63 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/officialinfo/entity/OfficialInfo.java

@@ -0,0 +1,63 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.biz.modular.officialinfo.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+import vip.xiaonuo.common.pojo.CommonEntity;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 微信公众号关注表实体
+ *
+ * @author fanzherong
+ * @date  2025/04/10 17:31
+ **/
+@Getter
+@Setter
+@TableName("biz_official_info")
+public class OfficialInfo extends CommonEntity {
+
+    /** 主键Id */
+    @TableId
+    @Schema(description = "主键Id")
+    private String id;
+
+    /** 公众号ID */
+    @Schema(description = "公众号ID")
+    private String officialOpenId;
+
+    /** union_id */
+    @Schema(description = "union_id")
+    private String unionId;
+
+    /** 关注状态 0.取消关注  1. 已关注 */
+    @Schema(description = "关注状态 0.取消关注  1. 已关注")
+    private Integer status;
+
+    /** 微信名 */
+    @Schema(description = "微信名")
+    private String nickName;
+
+    /** 微信头像 */
+    @Schema(description = "微信头像")
+    private String wxHead;
+
+    /** 微信地址 */
+    @Schema(description = "微信地址")
+    private String wxAddress;
+}

+ 34 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/officialinfo/enums/OfficialInfoEnum.java

@@ -0,0 +1,34 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.biz.modular.officialinfo.enums;
+
+import lombok.Getter;
+
+/**
+ * 微信公众号关注表枚举
+ *
+ * @author fanzherong
+ * @date  2025/04/10 17:31
+ **/
+@Getter
+public enum OfficialInfoEnum {
+
+    /** 测试 */
+    TEST("TEST");
+
+    private final String value;
+
+    OfficialInfoEnum(String value) {
+        this.value = value;
+    }
+}

+ 25 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/officialinfo/mapper/OfficialInfoMapper.java

@@ -0,0 +1,25 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.biz.modular.officialinfo.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import vip.xiaonuo.biz.modular.officialinfo.entity.OfficialInfo;
+
+/**
+ * 微信公众号关注表Mapper接口
+ *
+ * @author fanzherong
+ * @date  2025/04/10 17:31
+ **/
+public interface OfficialInfoMapper extends BaseMapper<OfficialInfo> {
+}

+ 5 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/officialinfo/mapper/mapping/OfficialInfoMapper.xml

@@ -0,0 +1,5 @@
+<?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="vip.xiaonuo.biz.modular.officialinfo.mapper.OfficialInfoMapper">
+
+</mapper>

+ 58 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/officialinfo/param/OfficialInfoAddParam.java

@@ -0,0 +1,58 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.biz.modular.officialinfo.param;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 微信公众号关注表添加参数
+ *
+ * @author fanzherong
+ * @date  2025/04/10 17:31
+ **/
+@Getter
+@Setter
+public class OfficialInfoAddParam {
+
+    /** 公众号ID */
+    @Schema(description = "公众号ID")
+    private String officialOpenId;
+
+    /** union_id */
+    @Schema(description = "union_id")
+    private String unionId;
+
+    /** 关注状态 0.取消关注  1. 已关注 */
+    @Schema(description = "关注状态 0.取消关注  1. 已关注")
+    private Integer status;
+
+    /** 微信名 */
+    @Schema(description = "微信名")
+    private String nickName;
+
+    /** 微信头像 */
+    @Schema(description = "微信头像")
+    private String wxHead;
+
+    /** 微信地址 */
+    @Schema(description = "微信地址")
+    private String wxAddress;
+
+}

+ 63 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/officialinfo/param/OfficialInfoEditParam.java

@@ -0,0 +1,63 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.biz.modular.officialinfo.param;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 微信公众号关注表编辑参数
+ *
+ * @author fanzherong
+ * @date  2025/04/10 17:31
+ **/
+@Getter
+@Setter
+public class OfficialInfoEditParam {
+
+    /** 主键Id */
+    @Schema(description = "主键Id", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotBlank(message = "id不能为空")
+    private String id;
+
+    /** 公众号ID */
+    @Schema(description = "公众号ID")
+    private String officialOpenId;
+
+    /** union_id */
+    @Schema(description = "union_id")
+    private String unionId;
+
+    /** 关注状态 0.取消关注  1. 已关注 */
+    @Schema(description = "关注状态 0.取消关注  1. 已关注")
+    private Integer status;
+
+    /** 微信名 */
+    @Schema(description = "微信名")
+    private String nickName;
+
+    /** 微信头像 */
+    @Schema(description = "微信头像")
+    private String wxHead;
+
+    /** 微信地址 */
+    @Schema(description = "微信地址")
+    private String wxAddress;
+
+}

+ 35 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/officialinfo/param/OfficialInfoIdParam.java

@@ -0,0 +1,35 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.biz.modular.officialinfo.param;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+
+import jakarta.validation.constraints.NotBlank;
+
+/**
+ * 微信公众号关注表Id参数
+ *
+ * @author fanzherong
+ * @date  2025/04/10 17:31
+ **/
+@Getter
+@Setter
+public class OfficialInfoIdParam {
+
+    /** 主键Id */
+    @Schema(description = "主键Id", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotBlank(message = "id不能为空")
+    private String id;
+}

+ 51 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/officialinfo/param/OfficialInfoPageParam.java

@@ -0,0 +1,51 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.biz.modular.officialinfo.param;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 微信公众号关注表查询参数
+ *
+ * @author fanzherong
+ * @date  2025/04/10 17:31
+ **/
+@Getter
+@Setter
+public class OfficialInfoPageParam {
+
+    /** 当前页 */
+    @Schema(description = "当前页码")
+    private Integer current;
+
+    /** 每页条数 */
+    @Schema(description = "每页条数")
+    private Integer size;
+
+    /** 排序字段 */
+    @Schema(description = "排序字段,字段驼峰名称,如:userName")
+    private String sortField;
+
+    /** 排序方式 */
+    @Schema(description = "排序方式,升序:ASCEND;降序:DESCEND")
+    private String sortOrder;
+
+    /** 关键词 */
+    @Schema(description = "关键词")
+    private String searchKey;
+
+}

+ 80 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/officialinfo/service/OfficialInfoService.java

@@ -0,0 +1,80 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.biz.modular.officialinfo.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.biz.modular.officialinfo.entity.OfficialInfo;
+import vip.xiaonuo.biz.modular.officialinfo.param.OfficialInfoAddParam;
+import vip.xiaonuo.biz.modular.officialinfo.param.OfficialInfoEditParam;
+import vip.xiaonuo.biz.modular.officialinfo.param.OfficialInfoIdParam;
+import vip.xiaonuo.biz.modular.officialinfo.param.OfficialInfoPageParam;
+
+import java.util.List;
+
+/**
+ * 微信公众号关注表Service接口
+ *
+ * @author fanzherong
+ * @date  2025/04/10 17:31
+ **/
+public interface OfficialInfoService extends IService<OfficialInfo> {
+
+    /**
+     * 获取微信公众号关注表分页
+     *
+     * @author fanzherong
+     * @date  2025/04/10 17:31
+     */
+    Page<OfficialInfo> page(OfficialInfoPageParam officialInfoPageParam);
+
+    /**
+     * 添加微信公众号关注表
+     *
+     * @author fanzherong
+     * @date  2025/04/10 17:31
+     */
+    void add(OfficialInfoAddParam officialInfoAddParam);
+
+    /**
+     * 编辑微信公众号关注表
+     *
+     * @author fanzherong
+     * @date  2025/04/10 17:31
+     */
+    void edit(OfficialInfoEditParam officialInfoEditParam);
+
+    /**
+     * 删除微信公众号关注表
+     *
+     * @author fanzherong
+     * @date  2025/04/10 17:31
+     */
+    void delete(List<OfficialInfoIdParam> officialInfoIdParamList);
+
+    /**
+     * 获取微信公众号关注表详情
+     *
+     * @author fanzherong
+     * @date  2025/04/10 17:31
+     */
+    OfficialInfo detail(OfficialInfoIdParam officialInfoIdParam);
+
+    /**
+     * 获取微信公众号关注表详情
+     *
+     * @author fanzherong
+     * @date  2025/04/10 17:31
+     **/
+    OfficialInfo queryEntity(String id);
+}

+ 94 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/officialinfo/service/impl/OfficialInfoServiceImpl.java

@@ -0,0 +1,94 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.biz.modular.officialinfo.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollStreamUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import vip.xiaonuo.common.enums.CommonSortOrderEnum;
+import vip.xiaonuo.common.exception.CommonException;
+import vip.xiaonuo.common.page.CommonPageRequest;
+import vip.xiaonuo.biz.modular.officialinfo.entity.OfficialInfo;
+import vip.xiaonuo.biz.modular.officialinfo.mapper.OfficialInfoMapper;
+import vip.xiaonuo.biz.modular.officialinfo.param.OfficialInfoAddParam;
+import vip.xiaonuo.biz.modular.officialinfo.param.OfficialInfoEditParam;
+import vip.xiaonuo.biz.modular.officialinfo.param.OfficialInfoIdParam;
+import vip.xiaonuo.biz.modular.officialinfo.param.OfficialInfoPageParam;
+import vip.xiaonuo.biz.modular.officialinfo.service.OfficialInfoService;
+
+import java.util.List;
+
+/**
+ * 微信公众号关注表Service接口实现类
+ *
+ * @author fanzherong
+ * @date  2025/04/10 17:31
+ **/
+@Service
+public class OfficialInfoServiceImpl extends ServiceImpl<OfficialInfoMapper, OfficialInfo> implements OfficialInfoService {
+
+    @Override
+    public Page<OfficialInfo> page(OfficialInfoPageParam officialInfoPageParam) {
+        QueryWrapper<OfficialInfo> queryWrapper = new QueryWrapper<OfficialInfo>().checkSqlInjection();
+        if(ObjectUtil.isAllNotEmpty(officialInfoPageParam.getSortField(), officialInfoPageParam.getSortOrder())) {
+            CommonSortOrderEnum.validate(officialInfoPageParam.getSortOrder());
+            queryWrapper.orderBy(true, officialInfoPageParam.getSortOrder().equals(CommonSortOrderEnum.ASC.getValue()),
+                    StrUtil.toUnderlineCase(officialInfoPageParam.getSortField()));
+        } else {
+            queryWrapper.lambda().orderByAsc(OfficialInfo::getId);
+        }
+        return this.page(CommonPageRequest.defaultPage(), queryWrapper);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void add(OfficialInfoAddParam officialInfoAddParam) {
+        OfficialInfo officialInfo = BeanUtil.toBean(officialInfoAddParam, OfficialInfo.class);
+        this.save(officialInfo);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void edit(OfficialInfoEditParam officialInfoEditParam) {
+        OfficialInfo officialInfo = this.queryEntity(officialInfoEditParam.getId());
+        BeanUtil.copyProperties(officialInfoEditParam, officialInfo);
+        this.updateById(officialInfo);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void delete(List<OfficialInfoIdParam> officialInfoIdParamList) {
+        // 执行删除
+        this.removeByIds(CollStreamUtil.toList(officialInfoIdParamList, OfficialInfoIdParam::getId));
+    }
+
+    @Override
+    public OfficialInfo detail(OfficialInfoIdParam officialInfoIdParam) {
+        return this.queryEntity(officialInfoIdParam.getId());
+    }
+
+    @Override
+    public OfficialInfo queryEntity(String id) {
+        OfficialInfo officialInfo = this.getById(id);
+        if(ObjectUtil.isEmpty(officialInfo)) {
+            throw new CommonException("微信公众号关注表不存在,id值为:{}", id);
+        }
+        return officialInfo;
+    }
+}