diff --git a/pom.xml b/pom.xml
index 9ec0874bbd542c6e1f101e744bdbc329020282f1..3506f84a0bfa737ddd0ccf0bcac2f5ab0eced6a2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -203,6 +203,7 @@
${silence.version}
+
com.silence
silence-weixin
diff --git a/silence-admin/pom.xml b/silence-admin/pom.xml
index 0f8386024459fba4b47b58b639268d52cfd2a3ed..d6602104b094c98c602d74ce98d3e92b5de55a07 100644
--- a/silence-admin/pom.xml
+++ b/silence-admin/pom.xml
@@ -85,8 +85,10 @@
lombok
provided
+
+
diff --git a/silence-generator/src/main/java/com/silence/generator/controller/FansController.java b/silence-generator/src/main/java/com/silence/generator/controller/FansController.java
new file mode 100644
index 0000000000000000000000000000000000000000..3a1b58cebd291fe79818564615cccb844d178ad8
--- /dev/null
+++ b/silence-generator/src/main/java/com/silence/generator/controller/FansController.java
@@ -0,0 +1,124 @@
+package com.silence.generator.controller;
+
+import com.silence.common.annotation.Log;
+import com.silence.common.core.controller.BaseController;
+import com.silence.common.core.domain.AjaxResult;
+import com.silence.common.core.page.TableDataInfo;
+import com.silence.common.enums.BusinessType;
+import com.silence.common.utils.poi.ExcelUtil;
+import com.silence.generator.domain.Fans;
+import com.silence.generator.service.IFansService;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 粉丝 信息操作处理
+ *
+ * @author silence
+ * @date 2019-09-18
+ */
+@Controller
+@RequestMapping("/system/fans")
+public class FansController extends BaseController
+{
+ private String prefix = "system/fans";
+
+ @Autowired
+ private IFansService fansService;
+
+ @RequiresPermissions("system:fans:view")
+ @GetMapping()
+ public String fans()
+ {
+ return prefix + "/fans";
+ }
+
+ /**
+ * 查询粉丝列表
+ */
+ @RequiresPermissions("system:fans:list")
+ @PostMapping("/list")
+ @ResponseBody
+ public TableDataInfo list(Fans fans)
+ {
+ startPage();
+ List list = fansService.selectFansList(fans);
+ return getDataTable(list);
+ }
+
+
+ /**
+ * 导出粉丝列表
+ */
+ @RequiresPermissions("system:fans:export")
+ @PostMapping("/export")
+ @ResponseBody
+ public AjaxResult export(Fans fans)
+ {
+ List list = fansService.selectFansList(fans);
+ ExcelUtil util = new ExcelUtil(Fans.class);
+ return util.exportExcel(list, "fans");
+ }
+
+ /**
+ * 新增粉丝
+ */
+ @GetMapping("/add")
+ public String add()
+ {
+ return prefix + "/add";
+ }
+
+ /**
+ * 新增保存粉丝
+ */
+ @RequiresPermissions("system:fans:add")
+ @Log(title = "粉丝", businessType = BusinessType.INSERT)
+ @PostMapping("/add")
+ @ResponseBody
+ public AjaxResult addSave(Fans fans)
+ {
+ return toAjax(fansService.insertFans(fans));
+ }
+
+ /**
+ * 修改粉丝
+ */
+ @GetMapping("/edit/{id}")
+ public String edit(@PathVariable("id") String id, ModelMap mmap)
+ {
+ Fans fans = fansService.selectFansById(id);
+ mmap.put("fans", fans);
+ return prefix + "/edit";
+ }
+
+ /**
+ * 修改保存粉丝
+ */
+ @RequiresPermissions("system:fans:edit")
+ @Log(title = "粉丝", businessType = BusinessType.UPDATE)
+ @PostMapping("/edit")
+ @ResponseBody
+ public AjaxResult editSave(Fans fans)
+ {
+ return toAjax(fansService.updateFans(fans));
+ }
+
+ /**
+ * 删除粉丝
+ */
+ @RequiresPermissions("system:fans:remove")
+ @Log(title = "粉丝", businessType = BusinessType.DELETE)
+ @PostMapping( "/remove")
+ @ResponseBody
+ public AjaxResult remove(String ids)
+ {
+ return toAjax(fansService.deleteFansByIds(ids));
+ }
+
+}
diff --git a/silence-generator/src/main/java/com/silence/generator/domain/Fans.java b/silence-generator/src/main/java/com/silence/generator/domain/Fans.java
new file mode 100644
index 0000000000000000000000000000000000000000..db8ee20e52f3230daddaa872138cb9350197759f
--- /dev/null
+++ b/silence-generator/src/main/java/com/silence/generator/domain/Fans.java
@@ -0,0 +1,182 @@
+package com.silence.generator.domain;
+
+
+import com.silence.common.core.domain.BaseEntity;
+import org.apache.commons.lang.builder.ToStringBuilder;
+import org.apache.commons.lang.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 粉丝表 fans
+ *
+ * @author silence
+ * @date 2019-09-18
+ */
+public class Fans extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** ID */
+ private String id;
+ /** OPENID */
+ private String openId;
+ /** */
+ private String nickName;
+ /** 性别 */
+ private String sex;
+ /** 国家 */
+ private String country;
+ /** 省份 */
+ private String province;
+ /** 城市 */
+ private String city;
+ /** 头像 */
+ private String headimgurl;
+ /** 联合ID */
+ private String unionid;
+ /** 真实姓名 */
+ private String realName;
+ /** 手机号 */
+ private String phone;
+ /** 是否关注(0:未关注,1:已关注) */
+ private String isSubscribe;
+ /** 关注时间 */
+ private Date subscribe;
+
+ public void setId(String id)
+ {
+ this.id = id;
+ }
+
+ public String getId()
+ {
+ return id;
+ }
+ public void setOpenId(String openId)
+ {
+ this.openId = openId;
+ }
+
+ public String getOpenId()
+ {
+ return openId;
+ }
+ public void setNickName(String nickName)
+ {
+ this.nickName = nickName;
+ }
+
+ public String getNickName()
+ {
+ return nickName;
+ }
+ public void setSex(String sex)
+ {
+ this.sex = sex;
+ }
+
+ public String getSex()
+ {
+ return sex;
+ }
+ public void setCountry(String country)
+ {
+ this.country = country;
+ }
+
+ public String getCountry()
+ {
+ return country;
+ }
+ public void setProvince(String province)
+ {
+ this.province = province;
+ }
+
+ public String getProvince()
+ {
+ return province;
+ }
+ public void setCity(String city)
+ {
+ this.city = city;
+ }
+
+ public String getCity()
+ {
+ return city;
+ }
+ public void setHeadimgurl(String headimgurl)
+ {
+ this.headimgurl = headimgurl;
+ }
+
+ public String getHeadimgurl()
+ {
+ return headimgurl;
+ }
+ public void setUnionid(String unionid)
+ {
+ this.unionid = unionid;
+ }
+
+ public String getUnionid()
+ {
+ return unionid;
+ }
+ public void setRealName(String realName)
+ {
+ this.realName = realName;
+ }
+
+ public String getRealName()
+ {
+ return realName;
+ }
+ public void setPhone(String phone)
+ {
+ this.phone = phone;
+ }
+
+ public String getPhone()
+ {
+ return phone;
+ }
+ public void setIsSubscribe(String isSubscribe)
+ {
+ this.isSubscribe = isSubscribe;
+ }
+
+ public String getIsSubscribe()
+ {
+ return isSubscribe;
+ }
+ public void setSubscribe(Date subscribe)
+ {
+ this.subscribe = subscribe;
+ }
+
+ public Date getSubscribe()
+ {
+ return subscribe;
+ }
+
+ public String toString() {
+ return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+ .append("id", getId())
+ .append("openId", getOpenId())
+ .append("nickName", getNickName())
+ .append("sex", getSex())
+ .append("country", getCountry())
+ .append("province", getProvince())
+ .append("city", getCity())
+ .append("headimgurl", getHeadimgurl())
+ .append("unionid", getUnionid())
+ .append("realName", getRealName())
+ .append("phone", getPhone())
+ .append("isSubscribe", getIsSubscribe())
+ .append("subscribe", getSubscribe())
+ .toString();
+ }
+}
diff --git a/silence-generator/src/main/java/com/silence/generator/mapper/FansMapper.java b/silence-generator/src/main/java/com/silence/generator/mapper/FansMapper.java
new file mode 100644
index 0000000000000000000000000000000000000000..22d2cf2638b5a277329f130a3d74996475a90cb3
--- /dev/null
+++ b/silence-generator/src/main/java/com/silence/generator/mapper/FansMapper.java
@@ -0,0 +1,63 @@
+package com.silence.generator.mapper;
+
+import com.silence.generator.domain.Fans;
+
+import java.util.List;
+
+/**
+ * 粉丝 数据层
+ *
+ * @author silence
+ * @date 2019-09-18
+ */
+public interface FansMapper
+{
+ /**
+ * 查询粉丝信息
+ *
+ * @param id 粉丝ID
+ * @return 粉丝信息
+ */
+ public Fans selectFansById(String id);
+
+ /**
+ * 查询粉丝列表
+ *
+ * @param fans 粉丝信息
+ * @return 粉丝集合
+ */
+ public List selectFansList(Fans fans);
+
+ /**
+ * 新增粉丝
+ *
+ * @param fans 粉丝信息
+ * @return 结果
+ */
+ public int insertFans(Fans fans);
+
+ /**
+ * 修改粉丝
+ *
+ * @param fans 粉丝信息
+ * @return 结果
+ */
+ public int updateFans(Fans fans);
+
+ /**
+ * 删除粉丝
+ *
+ * @param id 粉丝ID
+ * @return 结果
+ */
+ public int deleteFansById(String id);
+
+ /**
+ * 批量删除粉丝
+ *
+ * @param ids 需要删除的数据ID
+ * @return 结果
+ */
+ public int deleteFansByIds(String[] ids);
+
+}
\ No newline at end of file
diff --git a/silence-generator/src/main/java/com/silence/generator/service/IFansService.java b/silence-generator/src/main/java/com/silence/generator/service/IFansService.java
new file mode 100644
index 0000000000000000000000000000000000000000..52cf19190dfb7af4c3f40247abad9a8972f22e24
--- /dev/null
+++ b/silence-generator/src/main/java/com/silence/generator/service/IFansService.java
@@ -0,0 +1,55 @@
+package com.silence.generator.service;
+
+import com.silence.generator.domain.Fans;
+
+import java.util.List;
+
+/**
+ * 粉丝 服务层
+ *
+ * @author silence
+ * @date 2019-09-18
+ */
+public interface IFansService
+{
+ /**
+ * 查询粉丝信息
+ *
+ * @param id 粉丝ID
+ * @return 粉丝信息
+ */
+ public Fans selectFansById(String id);
+
+ /**
+ * 查询粉丝列表
+ *
+ * @param fans 粉丝信息
+ * @return 粉丝集合
+ */
+ public List selectFansList(Fans fans);
+
+ /**
+ * 新增粉丝
+ *
+ * @param fans 粉丝信息
+ * @return 结果
+ */
+ public int insertFans(Fans fans);
+
+ /**
+ * 修改粉丝
+ *
+ * @param fans 粉丝信息
+ * @return 结果
+ */
+ public int updateFans(Fans fans);
+
+ /**
+ * 删除粉丝信息
+ *
+ * @param ids 需要删除的数据ID
+ * @return 结果
+ */
+ public int deleteFansByIds(String ids);
+
+}
diff --git a/silence-generator/src/main/java/com/silence/generator/service/impl/FansServiceImpl.java b/silence-generator/src/main/java/com/silence/generator/service/impl/FansServiceImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..a50653e9866fb283345d54604b01e27730ef0d7f
--- /dev/null
+++ b/silence-generator/src/main/java/com/silence/generator/service/impl/FansServiceImpl.java
@@ -0,0 +1,84 @@
+package com.silence.generator.service.impl;
+
+import com.silence.common.core.text.Convert;
+import com.silence.generator.domain.Fans;
+import com.silence.generator.mapper.FansMapper;
+import com.silence.generator.service.IFansService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 粉丝 服务层实现
+ *
+ * @author silence
+ * @date 2019-09-18
+ */
+@Service
+public class FansServiceImpl implements IFansService
+{
+ @Autowired
+ private FansMapper fansMapper;
+
+ /**
+ * 查询粉丝信息
+ *
+ * @param id 粉丝ID
+ * @return 粉丝信息
+ */
+ @Override
+ public Fans selectFansById(String id)
+ {
+ return fansMapper.selectFansById(id);
+ }
+
+ /**
+ * 查询粉丝列表
+ *
+ * @param fans 粉丝信息
+ * @return 粉丝集合
+ */
+ @Override
+ public List selectFansList(Fans fans)
+ {
+ return fansMapper.selectFansList(fans);
+ }
+
+ /**
+ * 新增粉丝
+ *
+ * @param fans 粉丝信息
+ * @return 结果
+ */
+ @Override
+ public int insertFans(Fans fans)
+ {
+ return fansMapper.insertFans(fans);
+ }
+
+ /**
+ * 修改粉丝
+ *
+ * @param fans 粉丝信息
+ * @return 结果
+ */
+ @Override
+ public int updateFans(Fans fans)
+ {
+ return fansMapper.updateFans(fans);
+ }
+
+ /**
+ * 删除粉丝对象
+ *
+ * @param ids 需要删除的数据ID
+ * @return 结果
+ */
+ @Override
+ public int deleteFansByIds(String ids)
+ {
+ return fansMapper.deleteFansByIds(Convert.toStrArray(ids));
+ }
+
+}
diff --git a/silence-generator/src/main/resources/mapper/system/FansMapper.xml b/silence-generator/src/main/resources/mapper/system/FansMapper.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4455f769dcac463037a1743256ee99a42df4fc98
--- /dev/null
+++ b/silence-generator/src/main/resources/mapper/system/FansMapper.xml
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select id, open_id, nick_name, sex, country, province, city, headimgurl, unionid, real_name, phone, is_subscribe, subscribe from fans
+
+
+
+
+
+
+
+ insert into fans
+
+ id,
+ open_id,
+ nick_name,
+ sex,
+ country,
+ province,
+ city,
+ headimgurl,
+ unionid,
+ real_name,
+ phone,
+ is_subscribe,
+ subscribe,
+
+
+ #{id},
+ #{openId},
+ #{nickName},
+ #{sex},
+ #{country},
+ #{province},
+ #{city},
+ #{headimgurl},
+ #{unionid},
+ #{realName},
+ #{phone},
+ #{isSubscribe},
+ #{subscribe},
+
+
+
+
+ update fans
+
+ open_id = #{openId},
+ nick_name = #{nickName},
+ sex = #{sex},
+ country = #{country},
+ province = #{province},
+ city = #{city},
+ headimgurl = #{headimgurl},
+ unionid = #{unionid},
+ real_name = #{realName},
+ phone = #{phone},
+ is_subscribe = #{isSubscribe},
+ subscribe = #{subscribe},
+
+ where id = #{id}
+
+
+
+ delete from fans where id = #{id}
+
+
+
+ delete from fans where id in
+
+ #{id}
+
+
+
+
\ No newline at end of file