leon 4 лет назад
Родитель
Сommit
f66e2ce1fa
25 измененных файлов с 1022 добавлено и 9 удалено
  1. 55 0
      src/main/java/com/mokamrp/privates/controller/crawer/LoginBanController.java
  2. 55 0
      src/main/java/com/mokamrp/privates/controller/pangu/FosterwxCashOasBoxGroupController.java
  3. 3 3
      src/main/java/com/mokamrp/privates/controller/pangu/FosterwxMobileController.java
  4. 21 0
      src/main/java/com/mokamrp/privates/mapper/crawer/LoginBanMapper.java
  5. 37 0
      src/main/java/com/mokamrp/privates/mapper/crawer/LoginBanMapper.xml
  6. 318 0
      src/main/java/com/mokamrp/privates/mapper/crawer/pojo/LoginBan.java
  7. 21 0
      src/main/java/com/mokamrp/privates/mapper/pangu/FosterwxCashOasBoxGroupMapper.java
  8. 26 0
      src/main/java/com/mokamrp/privates/mapper/pangu/FosterwxCashOasBoxGroupMapper.xml
  9. 1 2
      src/main/java/com/mokamrp/privates/mapper/pangu/PromoteCodeMapper.xml
  10. 5 0
      src/main/java/com/mokamrp/privates/mapper/pangu/pojo/FosterwxCashOasBox.java
  11. 100 0
      src/main/java/com/mokamrp/privates/mapper/pangu/pojo/FosterwxCashOasBoxGroup.java
  12. 1 0
      src/main/java/com/mokamrp/privates/mapper/pangu/pojo/PromoteCodeVo.java
  13. 20 0
      src/main/java/com/mokamrp/privates/service/crawer/LoginBanService.java
  14. 43 0
      src/main/java/com/mokamrp/privates/service/crawer/impl/LoginBanServiceImpl.java
  15. 20 0
      src/main/java/com/mokamrp/privates/service/pangu/FosterwxCashOasBoxGroupService.java
  16. 43 0
      src/main/java/com/mokamrp/privates/service/pangu/impl/FosterwxCashOasBoxGroupServiceImpl.java
  17. 3 3
      src/main/java/com/mokamrp/privates/service/pangu/impl/FosterwxMobileServiceImpl.java
  18. 3 0
      src/main/java/com/mokamrp/privates/service/pangu/impl/PromoteCodeServiceImpl.java
  19. 49 0
      src/main/java/com/mokamrp/privates/task/pangu/UpdateBoxForbiddenStatus.java
  20. 90 0
      src/main/java/com/mokamrp/privates/utils/sign/Aes.java
  21. 6 0
      src/main/resources/application-local.properties
  22. 5 0
      src/main/resources/application-prod.properties
  23. 7 0
      src/main/resources/application-test.properties
  24. 89 0
      src/test/java/com/mokamrp/AutoMPCrawer.java
  25. 1 1
      src/test/java/com/mokamrp/AutoMPPangu.java

+ 55 - 0
src/main/java/com/mokamrp/privates/controller/crawer/LoginBanController.java

@@ -0,0 +1,55 @@
+package com.mokamrp.privates.controller.crawer;
+
+import com.mokamrp.privates.constant.HttpStatus;
+import com.mokamrp.privates.entity.PostBasePageHandle;
+import com.mokamrp.privates.help.AjaxResult;
+import com.mokamrp.privates.entity.ResHandle;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.RequestMapping;
+import com.mokamrp.privates.service.crawer.LoginBanService;
+import com.mokamrp.privates.mapper.crawer.pojo.LoginBan;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import com.mokamrp.privates.controller.BaseController;
+import javax.validation.Valid;
+import java.util.Map;
+import java.util.List;
+
+import org.springframework.web.bind.annotation.RestController;
+
+
+/**
+ * <p>
+ * 微信公众平台-登录封禁 前端控制器
+ * </p>
+ *
+ * @author leon
+ * @since 2021-10-11
+ */
+@RestController
+@RequestMapping("/loginBan")
+public class LoginBanController extends BaseController<LoginBan> {
+
+    @Autowired
+    public LoginBanService loginBanService;
+
+    /*
+     * @fast
+     * 默认生成的控制器所继承的父类中有index/add/edit/del四个基础方法,均为post json请求
+     * 如果需要定制化,需要将BaseController中对应的方法复制到当前控制器,然后进行修改
+     */
+
+    @PostMapping("/list")
+    public Object list(@Valid @RequestBody PostBasePageHandle postBasePageHandle, BindingResult bindingResult){
+        if (bindingResult.hasErrors()) {
+            return AjaxResult.error(HttpStatus.ERROR, bindingResult.getFieldError().getDefaultMessage());
+        }
+        ResHandle<List<LoginBan>> res = loginBanService.getList(postBasePageHandle);
+        return AjaxResult.success(res);
+    }
+
+
+}
+

+ 55 - 0
src/main/java/com/mokamrp/privates/controller/pangu/FosterwxCashOasBoxGroupController.java

@@ -0,0 +1,55 @@
+package com.mokamrp.privates.controller.pangu;
+
+import com.mokamrp.privates.constant.HttpStatus;
+import com.mokamrp.privates.entity.PostBasePageHandle;
+import com.mokamrp.privates.help.AjaxResult;
+import com.mokamrp.privates.entity.ResHandle;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.RequestMapping;
+import com.mokamrp.privates.service.pangu.FosterwxCashOasBoxGroupService;
+import com.mokamrp.privates.mapper.pangu.pojo.FosterwxCashOasBoxGroup;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import com.mokamrp.privates.controller.BaseController;
+import javax.validation.Valid;
+import java.util.Map;
+import java.util.List;
+
+import org.springframework.web.bind.annotation.RestController;
+
+
+/**
+ * <p>
+ * 盘古养号小程序/公众号账号分组库 前端控制器
+ * </p>
+ *
+ * @author leon
+ * @since 2021-10-12
+ */
+@RestController
+@RequestMapping("/fosterwxCashOasBoxGroup")
+public class FosterwxCashOasBoxGroupController extends BaseController<FosterwxCashOasBoxGroup> {
+
+    @Autowired
+    public FosterwxCashOasBoxGroupService fosterwxCashOasBoxGroupService;
+
+    /*
+     * @fast
+     * 默认生成的控制器所继承的父类中有index/add/edit/del四个基础方法,均为post json请求
+     * 如果需要定制化,需要将BaseController中对应的方法复制到当前控制器,然后进行修改
+     */
+
+    @PostMapping("/list")
+    public Object list(@Valid @RequestBody PostBasePageHandle postBasePageHandle, BindingResult bindingResult){
+        if (bindingResult.hasErrors()) {
+            return AjaxResult.error(HttpStatus.ERROR, bindingResult.getFieldError().getDefaultMessage());
+        }
+        ResHandle<List<FosterwxCashOasBoxGroup>> res = fosterwxCashOasBoxGroupService.getList(postBasePageHandle);
+        return AjaxResult.success(res);
+    }
+
+
+}
+

+ 3 - 3
src/main/java/com/mokamrp/privates/controller/pangu/FosterwxMobileController.java

@@ -491,12 +491,12 @@ public class FosterwxMobileController extends BaseController<FosterwxMobile> {
         feild.put(6, "mobileCombo");
         feild.put(7, "mobileComboFlow");
         feild.put(8, "mobileRealName");
-        feild.put(9, "mobileIdentityCardNo");
+        feild.put(9, "mobileIdentityCardNo|default");
         feild.put(10, "wxPassword");
         feild.put(11, "wxRegisterAt");
         feild.put(12, "wxRealName");
-        feild.put(13, "wxIdentityCardNo");
-        feild.put(14, "bankCardNo");
+        feild.put(13, "wxIdentityCardNo|default");
+        feild.put(14, "bankCardNo|default");
         feild.put(15, "bankCardMobileNo");
         feild.put(16, "wxFriendName1");
         feild.put(17, "wxFriendUserName1");

+ 21 - 0
src/main/java/com/mokamrp/privates/mapper/crawer/LoginBanMapper.java

@@ -0,0 +1,21 @@
+package com.mokamrp.privates.mapper.crawer;
+
+import com.mokamrp.privates.mapper.crawer.pojo.LoginBan;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.stereotype.Component;
+import org.apache.ibatis.annotations.Param;
+import java.util.List;
+
+/**
+ * <p>
+ * 微信公众平台-登录封禁 Mapper 接口
+ * </p>
+ *
+ * @author leon
+ * @since 2021-10-11
+ */
+@Component
+public interface LoginBanMapper extends BaseMapper<LoginBan> {
+    public List<LoginBan> getList(Page<LoginBan> pageObj);
+}

+ 37 - 0
src/main/java/com/mokamrp/privates/mapper/crawer/LoginBanMapper.xml

@@ -0,0 +1,37 @@
+<?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="com.mokamrp.privates.mapper.crawer.LoginBanMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.mokamrp.privates.mapper.crawer.pojo.LoginBan">
+        <id column="primary_key" property="primaryKey" />
+        <result column="ghid" property="ghid" />
+        <result column="crawler_collection_time" property="crawlerCollectionTime" />
+        <result column="response" property="response" />
+        <result column="password_error" property="passwordError" />
+        <result column="is_ban" property="isBan" />
+        <result column="is_transfer" property="isTransfer" />
+        <result column="is_forever" property="isForever" />
+        <result column="ban_end_date" property="banEndDate" />
+        <result column="notify_msg" property="notifyMsg" />
+        <result column="rule_title" property="ruleTitle" />
+        <result column="rule_url" property="ruleUrl" />
+        <result column="ban_type" property="banType" />
+        <result column="punish_id" property="punishId" />
+        <result column="new_infraction" property="newInfraction" />
+        <result column="transfer_status" property="transferStatus" />
+        <result column="acct_transfer" property="acctTransfer" />
+        <result column="error_back" property="errorBack" />
+        <result column="is_notice" property="isNotice" />
+        <result column="is_notice_notice" property="isNoticeNotice" />
+        <result column="new_infraction_format" property="newInfractionFormat" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        primary_key, ghid, crawler_collection_time, response, password_error, is_ban, is_transfer, is_forever, ban_end_date, notify_msg, rule_title, rule_url, ban_type, punish_id, new_infraction, transfer_status, acct_transfer, error_back, is_notice, is_notice_notice, new_infraction_format
+    </sql>
+    <select id="getList" resultType="com.mokamrp.privates.mapper.crawer.pojo.LoginBan">
+        SELECT * FROM wx_login_ban
+    </select>
+</mapper>

+ 318 - 0
src/main/java/com/mokamrp/privates/mapper/crawer/pojo/LoginBan.java

@@ -0,0 +1,318 @@
+package com.mokamrp.privates.mapper.crawer.pojo;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 微信公众平台-登录封禁
+ * </p>
+ *
+ * @author leon
+ * @since 2021-10-11
+ */
+@TableName("wx_login_ban")
+public class LoginBan extends Model<LoginBan> {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 原始id
+     */
+      @TableId(value = "primary_key", type = IdType.AUTO)
+    private String primaryKey;
+
+    /**
+     * 原始id
+     */
+    private String ghid;
+
+    /**
+     * 采集时间
+     */
+    private LocalDateTime crawlerCollectionTime;
+
+    /**
+     * 所有返回值
+     */
+    private String response;
+
+    /**
+     * 账号密码是否错误,0=对1=错
+     */
+    private Boolean passwordError;
+
+    /**
+     * 是否被封禁登陆
+     */
+    private Boolean isBan;
+
+    /**
+     * 是否是迁移
+     */
+    private Boolean isTransfer;
+
+    /**
+     * 是否是永久封禁
+     */
+    private Boolean isForever;
+
+    /**
+     * 封禁结束日期(永久默认2099年)
+     */
+    private LocalDate banEndDate;
+
+    private String notifyMsg;
+
+    /**
+     * 违反规则
+     */
+    private String ruleTitle;
+
+    /**
+     * 违反规则的查看地址
+     */
+    private String ruleUrl;
+
+    /**
+     * 封禁类型,2,11=永久,6=临时
+     */
+    private Integer banType;
+
+    private String punishId;
+
+    /**
+     * 违规内容
+     */
+    private String newInfraction;
+
+    /**
+     * 迁移状态,2=已完成,0=迁移中
+     */
+    private Integer transferStatus;
+
+    /**
+     * 迁移信息
+     */
+    private String acctTransfer;
+
+    /**
+     * 被永封的又恢复正常次数
+     */
+    private Integer errorBack;
+
+    /**
+     * 是否通知
+     */
+    private Boolean isNotice;
+
+    private Boolean isNoticeNotice;
+
+    private String newInfractionFormat;
+
+
+    public String getPrimaryKey() {
+        return primaryKey;
+    }
+
+    public void setPrimaryKey(String primaryKey) {
+        this.primaryKey = primaryKey;
+    }
+
+    public String getGhid() {
+        return ghid;
+    }
+
+    public void setGhid(String ghid) {
+        this.ghid = ghid;
+    }
+
+    public LocalDateTime getCrawlerCollectionTime() {
+        return crawlerCollectionTime;
+    }
+
+    public void setCrawlerCollectionTime(LocalDateTime crawlerCollectionTime) {
+        this.crawlerCollectionTime = crawlerCollectionTime;
+    }
+
+    public String getResponse() {
+        return response;
+    }
+
+    public void setResponse(String response) {
+        this.response = response;
+    }
+
+    public Boolean getPasswordError() {
+        return passwordError;
+    }
+
+    public void setPasswordError(Boolean passwordError) {
+        this.passwordError = passwordError;
+    }
+
+    public Boolean getIsBan() {
+        return isBan;
+    }
+
+    public void setIsBan(Boolean isBan) {
+        this.isBan = isBan;
+    }
+
+    public Boolean getIsTransfer() {
+        return isTransfer;
+    }
+
+    public void setIsTransfer(Boolean isTransfer) {
+        this.isTransfer = isTransfer;
+    }
+
+    public Boolean getIsForever() {
+        return isForever;
+    }
+
+    public void setIsForever(Boolean isForever) {
+        this.isForever = isForever;
+    }
+
+    public LocalDate getBanEndDate() {
+        return banEndDate;
+    }
+
+    public void setBanEndDate(LocalDate banEndDate) {
+        this.banEndDate = banEndDate;
+    }
+
+    public String getNotifyMsg() {
+        return notifyMsg;
+    }
+
+    public void setNotifyMsg(String notifyMsg) {
+        this.notifyMsg = notifyMsg;
+    }
+
+    public String getRuleTitle() {
+        return ruleTitle;
+    }
+
+    public void setRuleTitle(String ruleTitle) {
+        this.ruleTitle = ruleTitle;
+    }
+
+    public String getRuleUrl() {
+        return ruleUrl;
+    }
+
+    public void setRuleUrl(String ruleUrl) {
+        this.ruleUrl = ruleUrl;
+    }
+
+    public Integer getBanType() {
+        return banType;
+    }
+
+    public void setBanType(Integer banType) {
+        this.banType = banType;
+    }
+
+    public String getPunishId() {
+        return punishId;
+    }
+
+    public void setPunishId(String punishId) {
+        this.punishId = punishId;
+    }
+
+    public String getNewInfraction() {
+        return newInfraction;
+    }
+
+    public void setNewInfraction(String newInfraction) {
+        this.newInfraction = newInfraction;
+    }
+
+    public Integer getTransferStatus() {
+        return transferStatus;
+    }
+
+    public void setTransferStatus(Integer transferStatus) {
+        this.transferStatus = transferStatus;
+    }
+
+    public String getAcctTransfer() {
+        return acctTransfer;
+    }
+
+    public void setAcctTransfer(String acctTransfer) {
+        this.acctTransfer = acctTransfer;
+    }
+
+    public Integer getErrorBack() {
+        return errorBack;
+    }
+
+    public void setErrorBack(Integer errorBack) {
+        this.errorBack = errorBack;
+    }
+
+    public Boolean getIsNotice() {
+        return isNotice;
+    }
+
+    public void setIsNotice(Boolean isNotice) {
+        this.isNotice = isNotice;
+    }
+
+    public Boolean getIsNoticeNotice() {
+        return isNoticeNotice;
+    }
+
+    public void setIsNoticeNotice(Boolean isNoticeNotice) {
+        this.isNoticeNotice = isNoticeNotice;
+    }
+
+    public String getNewInfractionFormat() {
+        return newInfractionFormat;
+    }
+
+    public void setNewInfractionFormat(String newInfractionFormat) {
+        this.newInfractionFormat = newInfractionFormat;
+    }
+
+    @Override
+    protected Serializable pkVal() {
+        return this.primaryKey;
+    }
+
+    @Override
+    public String toString() {
+        return "LoginBan{" +
+        "primaryKey=" + primaryKey +
+        ", ghid=" + ghid +
+        ", crawlerCollectionTime=" + crawlerCollectionTime +
+        ", response=" + response +
+        ", passwordError=" + passwordError +
+        ", isBan=" + isBan +
+        ", isTransfer=" + isTransfer +
+        ", isForever=" + isForever +
+        ", banEndDate=" + banEndDate +
+        ", notifyMsg=" + notifyMsg +
+        ", ruleTitle=" + ruleTitle +
+        ", ruleUrl=" + ruleUrl +
+        ", banType=" + banType +
+        ", punishId=" + punishId +
+        ", newInfraction=" + newInfraction +
+        ", transferStatus=" + transferStatus +
+        ", acctTransfer=" + acctTransfer +
+        ", errorBack=" + errorBack +
+        ", isNotice=" + isNotice +
+        ", isNoticeNotice=" + isNoticeNotice +
+        ", newInfractionFormat=" + newInfractionFormat +
+        "}";
+    }
+}

+ 21 - 0
src/main/java/com/mokamrp/privates/mapper/pangu/FosterwxCashOasBoxGroupMapper.java

@@ -0,0 +1,21 @@
+package com.mokamrp.privates.mapper.pangu;
+
+import com.mokamrp.privates.mapper.pangu.pojo.FosterwxCashOasBoxGroup;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.stereotype.Component;
+import org.apache.ibatis.annotations.Param;
+import java.util.List;
+
+/**
+ * <p>
+ * 盘古养号小程序/公众号账号分组库 Mapper 接口
+ * </p>
+ *
+ * @author leon
+ * @since 2021-10-12
+ */
+@Component
+public interface FosterwxCashOasBoxGroupMapper extends BaseMapper<FosterwxCashOasBoxGroup> {
+    public List<FosterwxCashOasBoxGroup> getList(Page<FosterwxCashOasBoxGroup> pageObj);
+}

+ 26 - 0
src/main/java/com/mokamrp/privates/mapper/pangu/FosterwxCashOasBoxGroupMapper.xml

@@ -0,0 +1,26 @@
+<?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="com.mokamrp.privates.mapper.pangu.FosterwxCashOasBoxGroupMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.mokamrp.privates.mapper.pangu.pojo.FosterwxCashOasBoxGroup">
+        <id column="id" property="id"/>
+        <result column="dept_id" property="deptId"/>
+        <result column="group_name" property="groupName"/>
+        <result column="create_at" property="createAt"/>
+        <result column="update_at" property="updateAt"/>
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id
+        , dept_id, group_name, create_at, update_at
+    </sql>
+    <select id="getList" resultType="com.mokamrp.privates.mapper.pangu.pojo.FosterwxCashOasBoxGroup">
+        SELECT A.*, B.cnt, B.group_id
+        FROM pan_fosterwx_cash_oas_box_group as A
+        LEFT JOIN (SELECT COUNT(id) AS cnt, group_id
+        from pan_fosterwx_cash_oas_box
+        GROUP BY group_id) AS B ON A.id = B.group_id
+    </select>
+</mapper>

+ 1 - 2
src/main/java/com/mokamrp/privates/mapper/pangu/PromoteCodeMapper.xml

@@ -33,8 +33,7 @@
         E.long_touch_uv_total,
         E.long_touch_pv_total,
         E.take_qrcode_uv_total,
-        E.take_qrcode_pv_total,
-        CONCAT(B1.domain,'/#/dispatch?promoteId=',A.id) AS qrcode
+        E.take_qrcode_pv_total
         FROM pan_promote_code AS A
         LEFT JOIN pan_domain_first AS B1 ON A.domain_id = B1.id
         LEFT JOIN pan_domain_second AS B2 ON A.second_domain_id = B2.id

+ 5 - 0
src/main/java/com/mokamrp/privates/mapper/pangu/pojo/FosterwxCashOasBox.java

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
 import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
 import java.time.LocalDateTime;
 import java.io.Serializable;
 
@@ -15,6 +17,7 @@ import java.io.Serializable;
  * @author leon
  * @since 2021-10-09
  */
+@Data
 @TableName("pan_fosterwx_cash_oas_box")
 public class FosterwxCashOasBox extends Model<FosterwxCashOasBox> {
 
@@ -66,6 +69,8 @@ public class FosterwxCashOasBox extends Model<FosterwxCashOasBox> {
      */
     private String scope;
 
+    private Integer fobiddenStatus;
+
     /**
      * 备注
      */

+ 100 - 0
src/main/java/com/mokamrp/privates/mapper/pangu/pojo/FosterwxCashOasBoxGroup.java

@@ -0,0 +1,100 @@
+package com.mokamrp.privates.mapper.pangu.pojo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 盘古养号小程序/公众号账号分组库
+ * </p>
+ *
+ * @author leon
+ * @since 2021-10-12
+ */
+@Data
+@TableName("pan_fosterwx_cash_oas_box_group")
+public class FosterwxCashOasBoxGroup extends Model<FosterwxCashOasBoxGroup> {
+
+    private static final long serialVersionUID = 1L;
+
+      @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 部门ID
+     */
+    private String deptId;
+
+    private String groupName;
+
+    @TableField(exist = false)
+    private Integer cnt;
+
+    private LocalDateTime createAt;
+
+    private LocalDateTime updateAt;
+
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getDeptId() {
+        return deptId;
+    }
+
+    public void setDeptId(String deptId) {
+        this.deptId = deptId;
+    }
+
+    public String getGroupName() {
+        return groupName;
+    }
+
+    public void setGroupName(String groupName) {
+        this.groupName = groupName;
+    }
+
+    public LocalDateTime getCreateAt() {
+        return createAt;
+    }
+
+    public void setCreateAt(LocalDateTime createAt) {
+        this.createAt = createAt;
+    }
+
+    public LocalDateTime getUpdateAt() {
+        return updateAt;
+    }
+
+    public void setUpdateAt(LocalDateTime updateAt) {
+        this.updateAt = updateAt;
+    }
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+    @Override
+    public String toString() {
+        return "FosterwxCashOasBoxGroup{" +
+        "id=" + id +
+        ", deptId=" + deptId +
+        ", groupName=" + groupName +
+        ", createAt=" + createAt +
+        ", updateAt=" + updateAt +
+        "}";
+    }
+}

+ 1 - 0
src/main/java/com/mokamrp/privates/mapper/pangu/pojo/PromoteCodeVo.java

@@ -83,6 +83,7 @@ public class PromoteCodeVo extends Model<PromoteCodeVo> {
     /**
      * 活码二维码地址
      */
+    @TableField(exist = false)
     private String qrcode;
     /**
      * 过滤城市

+ 20 - 0
src/main/java/com/mokamrp/privates/service/crawer/LoginBanService.java

@@ -0,0 +1,20 @@
+package com.mokamrp.privates.service.crawer;
+
+import com.mokamrp.privates.mapper.crawer.pojo.LoginBan;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.mokamrp.privates.entity.PostBasePageHandle;
+import com.mokamrp.privates.entity.ResHandle;
+import java.util.List;
+import java.util.Map;
+/**
+ * <p>
+ * 微信公众平台-登录封禁 服务类
+ * </p>
+ *
+ * @author leon
+ * @since 2021-10-11
+ */
+public interface LoginBanService extends IService<LoginBan> {
+    //.@leon 获取数据列表
+    public ResHandle<List<LoginBan>> getList(PostBasePageHandle handle);
+}

+ 43 - 0
src/main/java/com/mokamrp/privates/service/crawer/impl/LoginBanServiceImpl.java

@@ -0,0 +1,43 @@
+package com.mokamrp.privates.service.crawer.impl;
+
+import com.mokamrp.privates.mapper.crawer.pojo.LoginBan;
+import com.mokamrp.privates.mapper.crawer.LoginBanMapper;
+import com.mokamrp.privates.service.crawer.LoginBanService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import com.mokamrp.privates.entity.PostBasePageHandle;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import com.mokamrp.privates.entity.ResHandle;
+import java.util.*;
+
+/**
+ * <p>
+ * 微信公众平台-登录封禁 服务实现类
+ * </p>
+ *
+ * @author leon
+ * @since 2021-10-11
+ */
+@Service
+public class LoginBanServiceImpl extends ServiceImpl<LoginBanMapper, LoginBan> implements LoginBanService {
+
+    @Autowired
+    public LoginBanMapper loginBanMapper;
+    /**
+     * 获取数据列表 支持分页
+     * @param handle
+     * @return
+     */
+    public ResHandle<List<LoginBan>> getList(PostBasePageHandle handle) {
+        Integer pagesize = handle.getPagesize();
+        Integer page = handle.getPage();
+        Page<LoginBan> pageObj = new Page<LoginBan>(page, pagesize);
+        List<LoginBan> list = loginBanMapper.getList(pageObj);
+        ResHandle<List<LoginBan>> res = new ResHandle<>();
+        res.setList(list);
+        res.setTotal(pageObj.getTotal());
+        return res;
+    }
+}

+ 20 - 0
src/main/java/com/mokamrp/privates/service/pangu/FosterwxCashOasBoxGroupService.java

@@ -0,0 +1,20 @@
+package com.mokamrp.privates.service.pangu;
+
+import com.mokamrp.privates.mapper.pangu.pojo.FosterwxCashOasBoxGroup;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.mokamrp.privates.entity.PostBasePageHandle;
+import com.mokamrp.privates.entity.ResHandle;
+import java.util.List;
+import java.util.Map;
+/**
+ * <p>
+ * 盘古养号小程序/公众号账号分组库 服务类
+ * </p>
+ *
+ * @author leon
+ * @since 2021-10-12
+ */
+public interface FosterwxCashOasBoxGroupService extends IService<FosterwxCashOasBoxGroup> {
+    //.@leon 获取数据列表
+    public ResHandle<List<FosterwxCashOasBoxGroup>> getList(PostBasePageHandle handle);
+}

+ 43 - 0
src/main/java/com/mokamrp/privates/service/pangu/impl/FosterwxCashOasBoxGroupServiceImpl.java

@@ -0,0 +1,43 @@
+package com.mokamrp.privates.service.pangu.impl;
+
+import com.mokamrp.privates.mapper.pangu.pojo.FosterwxCashOasBoxGroup;
+import com.mokamrp.privates.mapper.pangu.FosterwxCashOasBoxGroupMapper;
+import com.mokamrp.privates.service.pangu.FosterwxCashOasBoxGroupService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import com.mokamrp.privates.entity.PostBasePageHandle;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import com.mokamrp.privates.entity.ResHandle;
+import java.util.*;
+
+/**
+ * <p>
+ * 盘古养号小程序/公众号账号分组库 服务实现类
+ * </p>
+ *
+ * @author leon
+ * @since 2021-10-12
+ */
+@Service
+public class FosterwxCashOasBoxGroupServiceImpl extends ServiceImpl<FosterwxCashOasBoxGroupMapper, FosterwxCashOasBoxGroup> implements FosterwxCashOasBoxGroupService {
+
+    @Autowired
+    public FosterwxCashOasBoxGroupMapper fosterwxCashOasBoxGroupMapper;
+    /**
+     * 获取数据列表 支持分页
+     * @param handle
+     * @return
+     */
+    public ResHandle<List<FosterwxCashOasBoxGroup>> getList(PostBasePageHandle handle) {
+        Integer pagesize = handle.getPagesize();
+        Integer page = handle.getPage();
+        Page<FosterwxCashOasBoxGroup> pageObj = new Page<FosterwxCashOasBoxGroup>(page, pagesize);
+        List<FosterwxCashOasBoxGroup> list = fosterwxCashOasBoxGroupMapper.getList(pageObj);
+        ResHandle<List<FosterwxCashOasBoxGroup>> res = new ResHandle<>();
+        res.setList(list);
+        res.setTotal(pageObj.getTotal());
+        return res;
+    }
+}

+ 3 - 3
src/main/java/com/mokamrp/privates/service/pangu/impl/FosterwxMobileServiceImpl.java

@@ -153,12 +153,12 @@ public class FosterwxMobileServiceImpl extends ServiceImpl<FosterwxMobileMapper,
             fosterwxMobile.setMobileCombo(row.get(i).get("mobileCombo"));
             fosterwxMobile.setMobileComboFlow(row.get(i).get("mobileComboFlow"));
             fosterwxMobile.setMobileRealName(row.get(i).get("mobileRealName"));
-            fosterwxMobile.setMobileIdentityCardNo(row.get(i).get("mobileIdentityCardNo"));
+            if (row.get(i).get("mobileIdentityCardNo") != null) fosterwxMobile.setMobileIdentityCardNo(row.get(i).get("mobileIdentityCardNo"));
             fosterwxMobile.setWxPassword(row.get(i).get("wxPassword"));
             fosterwxMobile.setWxRegisterAt(LocalDateTime.parse(row.get(i).get("wxRegisterAt") + " 08:00:00", df));
             fosterwxMobile.setWxRealName(row.get(i).get("wxRealName"));
-            fosterwxMobile.setWxIdentityCardNo(row.get(i).get("wxIdentityCardNo"));
-            fosterwxMobile.setBankCardNo(row.get(i).get("bankCardNo"));
+            if (row.get(i).get("wxIdentityCardNo") != null) fosterwxMobile.setWxIdentityCardNo(row.get(i).get("wxIdentityCardNo"));
+            if (row.get(i).get("bankCardNo") != null) fosterwxMobile.setBankCardNo(row.get(i).get("bankCardNo"));
             fosterwxMobile.setBankCardMobileNo(row.get(i).get("bankCardMobileNo"));
             if (row.get(i).get("workWxCorp") != null && !row.get(i).get("workWxCorp").isEmpty() && null != corp) {
                 fosterwxMobile.setWorkWxCorpId(corp.getId());

+ 3 - 0
src/main/java/com/mokamrp/privates/service/pangu/impl/PromoteCodeServiceImpl.java

@@ -45,6 +45,9 @@ public class PromoteCodeServiceImpl extends ServiceImpl<PromoteCodeMapper, Promo
         Page<PromoteCodeVo> page = new Page<PromoteCodeVo>(promoteCodeListHandle.getPage(),promoteCodeListHandle.getPagesize());
         List<PromoteCodeVo> list = promoteCodeMapper.getlist(page,promoteCodeListHandle,deptId);
         Map<String,Object> res = new HashMap<>();
+        for (PromoteCodeVo promoteCodeVo : list){
+            promoteCodeVo.setQrcode(promoteCodeVo.getId()+"/#/dispatch?promoteId=");
+        }
         res.put("list",list);
         res.put("total",page.getTotal());
         return res;

+ 49 - 0
src/main/java/com/mokamrp/privates/task/pangu/UpdateBoxForbiddenStatus.java

@@ -0,0 +1,49 @@
+package com.mokamrp.privates.task.pangu;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.mokamrp.privates.mapper.crawer.pojo.LoginBan;
+import com.mokamrp.privates.mapper.pangu.pojo.FosterwxCashOasBox;
+import com.mokamrp.privates.mapper.pangu.pojo.FosterwxMobile;
+import com.mokamrp.privates.service.crawer.LoginBanService;
+import com.mokamrp.privates.service.pangu.FosterwxCashOasBoxService;
+import com.mokamrp.privates.service.pangu.FosterwxStationService;
+import com.mokamrp.privates.service.pangu.FosterwxTaskScheduleService;
+import net.javacrumbs.shedlock.core.SchedulerLock;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.StringRedisTemplate;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Component
+public class UpdateBoxForbiddenStatus {
+    @Autowired
+    public FosterwxCashOasBoxService fosterwxCashOasBoxService;
+
+    @Autowired
+    public StringRedisTemplate stringRedisTemplate;
+
+    @Autowired
+    public LoginBanService loginBanService;
+
+    @Scheduled(cron = "0 */5 * * * ?")
+    @SchedulerLock(name = "pangu:UpdateBoxForbiddenStatus", lockAtLeastForString = "PT5S", lockAtMostForString = "PT15M")
+    public void execute() {
+        List<FosterwxCashOasBox> list = fosterwxCashOasBoxService.list();
+        List<String> ghIds = list.stream().map(FosterwxCashOasBox::getGhId).collect(Collectors.toList());
+        List<LoginBan> boxList = loginBanService.list(new QueryWrapper<LoginBan>().in("primary_key",ghIds));
+        for (LoginBan loginBan : boxList){
+            Integer fobiddenStatus = 1;
+            if (loginBan.getBanType() != 0){
+                fobiddenStatus = 2;
+            }
+            FosterwxCashOasBox save = new FosterwxCashOasBox();
+            save.setFobiddenStatus(fobiddenStatus);
+            save.setUpdateAt(LocalDateTime.now());
+            fosterwxCashOasBoxService.update(save,new QueryWrapper<FosterwxCashOasBox>().eq("gh_id",loginBan.getPrimaryKey()));
+        }
+    }
+}

+ 90 - 0
src/main/java/com/mokamrp/privates/utils/sign/Aes.java

@@ -0,0 +1,90 @@
+package com.mokamrp.privates.utils.sign;
+
+import javax.crypto.Cipher;
+import javax.crypto.spec.IvParameterSpec;
+import javax.crypto.spec.SecretKeySpec;
+
+public class Aes {
+    /*
+     * 加密用的Key 可以用26个字母和数字组成 使用AES-128-CBC加密模式,key需要为16位。
+     */
+    private static final String key="hj7x89H$ZuBI0456";
+    private static final String iv ="NIfb&95GAY86Gfgh";
+    /**
+     * @author miracle.qu
+     * @Description AES算法加密明文
+     * @param data 明文
+     * @return 密文
+     */
+    public static String encryptAES(String data) throws Exception {
+        try {
+            Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
+            int blockSize = cipher.getBlockSize();
+            byte[] dataBytes = data.getBytes();
+            int plaintextLength = dataBytes.length;
+
+            if (plaintextLength % blockSize != 0) {
+                plaintextLength = plaintextLength + (blockSize - (plaintextLength % blockSize));
+            }
+
+            byte[] plaintext = new byte[plaintextLength];
+            System.arraycopy(dataBytes, 0, plaintext, 0, dataBytes.length);
+
+            SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), "AES");
+            IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes());  // CBC模式,需要一个向量iv,可增加加密算法的强度
+
+            cipher.init(Cipher.ENCRYPT_MODE, keyspec, ivspec);
+            byte[] encrypted = cipher.doFinal(plaintext);
+
+            return Aes.encode(encrypted).trim(); // BASE64做转码。
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+    /**
+     * @author miracle.qu
+     * @Description AES算法解密密文
+     * @param data 密文
+     * @return 明文
+     */
+    public static String decryptAES(String data) throws Exception {
+        try
+        {
+            byte[] encrypted1 = Aes.decode(data);//先用base64解密
+
+            Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
+            SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), "AES");
+            IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes());
+
+            cipher.init(Cipher.DECRYPT_MODE, keyspec, ivspec);
+
+            byte[] original = cipher.doFinal(encrypted1);
+            String originalString = new String(original);
+            return originalString.trim();
+        }
+        catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+    /**
+     * 编码
+     * @param byteArray
+     * @return
+     */
+    public static String encode(byte[] byteArray) {
+        return new String(new Base64().encode(byteArray));
+    }
+
+    /**
+     * 解码
+     * @param base64EncodedString
+     * @return
+     */
+    public static byte[] decode(String base64EncodedString) {
+        return new Base64().decode(base64EncodedString);
+    }
+}

+ 6 - 0
src/main/resources/application-local.properties

@@ -25,6 +25,12 @@ spring.datasource.dynamic.datasource.datadb.driverClassName=com.mysql.cj.jdbc.Dr
 spring.datasource.dynamic.datasource.datadb.url=jdbc:mysql://rm-uf6uysb4ncki343q7go.mysql.rds.aliyuncs.com:3306/hera_data
 spring.datasource.dynamic.datasource.datadb.username=yangpeng_data_warehouse
 spring.datasource.dynamic.datasource.datadb.password=YangPeng_Data_War666$%Yp
+#爬虫数据库
+spring.datasource.dynamic.datasource.crawerdb.driverClassName=com.mysql.cj.jdbc.Driver
+spring.datasource.dynamic.datasource.crawerdb.url=jdbc:mysql://rr-uf612eyd79y526d0dbo.mysql.rds.aliyuncs.com:3306/wechat
+spring.datasource.dynamic.datasource.crawerdb.username=dev
+spring.datasource.dynamic.datasource.crawerdb.password=1qazXSW@
+
 
 
 

+ 5 - 0
src/main/resources/application-prod.properties

@@ -22,6 +22,11 @@ spring.datasource.dynamic.datasource.datadb.driverClassName=com.mysql.cj.jdbc.Dr
 spring.datasource.dynamic.datasource.datadb.url=jdbc:mysql://rm-uf6uysb4ncki343q735930.mysql.rds.aliyuncs.com:3306/hera_data
 spring.datasource.dynamic.datasource.datadb.username=yangpeng_data_warehouse
 spring.datasource.dynamic.datasource.datadb.password=YangPeng_Data_War666$%Yp
+#爬虫数据库
+spring.datasource.dynamic.datasource.crawerdb.driverClassName=com.mysql.cj.jdbc.Driver
+spring.datasource.dynamic.datasource.crawerdb.url=jdbc:mysql://rm-uf605292ta9cqm6m7rw.mysql.rds.aliyuncs.com:3306/wechat
+spring.datasource.dynamic.datasource.crawerdb.username=coral_read
+spring.datasource.dynamic.datasource.crawerdb.password=CoRal_666ReaD#!
 
 spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
 spring.jpa.properties.hibernate.hbm2ddl.auto=update

+ 7 - 0
src/main/resources/application-test.properties

@@ -22,6 +22,13 @@ spring.datasource.dynamic.datasource.datadb.driverClassName=com.mysql.cj.jdbc.Dr
 spring.datasource.dynamic.datasource.datadb.url=jdbc:mysql://rm-uf6uysb4ncki343q7go.mysql.rds.aliyuncs.com:3306/hera_data
 spring.datasource.dynamic.datasource.datadb.username=yangpeng_data_warehouse
 spring.datasource.dynamic.datasource.datadb.password=YangPeng_Data_War666$%Yp
+#爬虫数据库
+spring.datasource.dynamic.datasource.crawerdb.driverClassName=com.mysql.cj.jdbc.Driver
+spring.datasource.dynamic.datasource.crawerdb.url=jdbc:mysql://rr-uf612eyd79y526d0dbo.mysql.rds.aliyuncs.com:3306/wechat
+spring.datasource.dynamic.datasource.crawerdb.username=dev
+spring.datasource.dynamic.datasource.crawerdb.password=1qazXSW@
+
+
 spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
 spring.jpa.properties.hibernate.hbm2ddl.auto=update
 #mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

+ 89 - 0
src/test/java/com/mokamrp/AutoMPCrawer.java

@@ -0,0 +1,89 @@
+package com.mokamrp;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.generator.AutoGenerator;
+import com.baomidou.mybatisplus.generator.InjectionConfig;
+import com.baomidou.mybatisplus.generator.config.*;
+import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+import org.junit.Test;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class AutoMPCrawer {
+	/**
+	 * 代码生成    示例代码
+	 */
+	@Test
+	public void testGenerator() {
+
+		//1. 全局配置
+		String outPutDir = "D://project/moka-private/src/main/java";
+		GlobalConfig config = new GlobalConfig();
+		config.setActiveRecord(true) // 是否支持AR模式
+				.setAuthor("leon") // 作者
+				.setOutputDir(outPutDir) // 生成路径
+				.setFileOverride(true)  // 文件覆盖
+				.setIdType(IdType.AUTO) // 主键策略
+				.setServiceName("%sService")  // 设置生成的service接口的名字的首字母是否为I
+				// IEmployeeService
+				.setBaseResultMap(true) //生成sql映射文件
+				.setBaseColumnList(true);//生成sql片段
+
+		//2. 数据源配置
+		DataSourceConfig  dsConfig  = new DataSourceConfig();
+		dsConfig.setDbType(DbType.MYSQL)  // 设置数据库类型
+				.setDriverName("com.mysql.cj.jdbc.Driver")
+				.setUrl("jdbc:mysql://rr-uf612eyd79y526d0dbo.mysql.rds.aliyuncs.com:3306/wechat")
+				.setUsername("dev")
+				.setPassword("1qazXSW@");
+
+		//3. 策略配置
+		StrategyConfig stConfig = new StrategyConfig();
+		stConfig.setCapitalMode(true) //全局大写命名
+				.setRestControllerStyle(true) //.RestController
+				.setSuperControllerClass("BaseController")
+				.setColumnNaming(NamingStrategy.underline_to_camel)
+				.setNaming(NamingStrategy.underline_to_camel) // 数据库表映射到实体的命名策略,下划线转驼峰命名
+				.setTablePrefix("wx_") //表名前缀
+				.setInclude("wx_login_ban");
+		//4. 包名策略配置
+		PackageConfig pkConfig = new PackageConfig();
+		pkConfig.setParent("com.mokamrp.privates")
+				.setMapper("mapper.crawer")
+				.setService("service.crawer")
+				.setServiceImpl("service.crawer.impl")
+				.setController("controller.crawer")
+				.setEntity("mapper.crawer.pojo")
+				.setXml("mapper.crawer");
+		//5. 注入自定义配置
+		InjectionConfig cfg = new InjectionConfig() {
+			@Override
+			public void initMap() {
+				Map<String, Object> map = new HashMap<String, Object>();
+				this.setMap(map);
+			}
+		};
+
+		//6. 整合配置
+		AutoGenerator  ag = new AutoGenerator();
+		ag.setGlobalConfig(config)
+		  .setDataSource(dsConfig)
+		  .setStrategy(stConfig)
+		  .setPackageInfo(pkConfig);
+		//. @leon 自定义模板
+		TemplateConfig tc = new TemplateConfig();
+		tc.setService("/template/service.java.vm");
+		tc.setServiceImpl("/template/serviceImpl.java.vm");
+		tc.setController("/template/controller.java.vm");
+		tc.setMapper("/template/mapper.java.vm");
+		tc.setXml("/template/mapper.xml.vm");
+		ag.setTemplate(tc);
+		//7. 执行
+		ag.execute();
+	}
+
+
+
+}

+ 1 - 1
src/test/java/com/mokamrp/AutoMPPangu.java

@@ -48,7 +48,7 @@ public class AutoMPPangu {
 				.setColumnNaming(NamingStrategy.underline_to_camel)
 				.setNaming(NamingStrategy.underline_to_camel) // 数据库表映射到实体的命名策略,下划线转驼峰命名
 				.setTablePrefix("pan_") //表名前缀
-				.setInclude("pan_fosterwx_cash_account_schedule");
+				.setInclude("pan_fosterwx_cash_oas_box_group");
 		//4. 包名策略配置
 		PackageConfig pkConfig = new PackageConfig();
 		pkConfig.setParent("com.mokamrp.privates")