Browse Source

Changes 修改数据业务

cyan 1 month ago
parent
commit
a9b6fd5821
11 changed files with 550 additions and 7 deletions
  1. 24 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/wechatgroup/dto/WechatInnerGroupMsgRespDto.java
  2. 2 2
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/wechatgroup/job/SyncWechatGroupMsgJob.java
  3. 1 1
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/wechatgroup/service/IOkkiShopWechatGroupMsgService.java
  4. 5 4
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/wechatgroup/service/impl/OkkiShopWechatGroupMsgServiceImpl.java
  5. 162 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/wechatinnergroup/controller/OkkiShopWechatInnerGroupMsgController.java
  6. 123 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/wechatinnergroup/entity/OkkiShopWechatInnerGroupMsg.java
  7. 35 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/wechatinnergroup/job/SyncWechatInnerGroupMsgJob.java
  8. 24 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/wechatinnergroup/mapper/OkkiShopWechatInnerGroupMsgMapper.java
  9. 18 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/wechatinnergroup/mapper/xml/OkkiShopWechatInnerGroupMsgMapper.xml
  10. 20 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/wechatinnergroup/service/IOkkiShopWechatInnerGroupMsgService.java
  11. 136 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/wechatinnergroup/service/impl/OkkiShopWechatInnerGroupMsgServiceImpl.java

+ 24 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/wechatgroup/dto/WechatInnerGroupMsgRespDto.java

@@ -0,0 +1,24 @@
+package org.jeecg.modules.okki.wechatgroup.dto;
+
+import lombok.Data;
+import org.jeecg.modules.okki.wechatgroup.entity.OkkiShopWechatGroupMsg;
+import org.jeecg.modules.okki.wechatinnergroup.entity.OkkiShopWechatInnerGroupMsg;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author Chen
+ */
+@Data
+public class WechatInnerGroupMsgRespDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private Integer code;
+
+    private String msg;
+
+    private String now;
+
+    private List<OkkiShopWechatInnerGroupMsg> data;
+}

+ 2 - 2
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/wechatgroup/job/SyncWechatGroupMsgJob.java

@@ -27,9 +27,9 @@ public class SyncWechatGroupMsgJob implements Job {
     @Override
     public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
         long start = System.currentTimeMillis();
-        log.info(String.format("开始同步站点-企业微信群组消息-普通定时任务 SyncWechatGroupMsgJob !  时间:" + DateUtils.now()));
+        log.info(String.format("开始同步站点-【企业微信-外部群】消息-普通定时任务 SyncWechatGroupMsgJob !  时间:" + DateUtils.now()));
         okkiShopWechatGroupMsgService.getSiteWechatMsgMaxSeq(this.parameter);
         long end = System.currentTimeMillis();
-        log.info("请求同步站点-企业微信群组消息-普通定时任务 SyncWechatGroupMsgJob !结束,耗时:{}s", (end - start) / 1000);
+        log.info("请求同步站点-【企业微信-外部群】消息-普通定时任务 SyncWechatGroupMsgJob !结束,耗时:{}s", (end - start) / 1000);
     }
 }

+ 1 - 1
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/wechatgroup/service/IOkkiShopWechatGroupMsgService.java

@@ -16,7 +16,7 @@ import java.util.Map;
 public interface IOkkiShopWechatGroupMsgService extends IService<OkkiShopWechatGroupMsg> {
 
     /**
-     * 获取企业微信群消息
+     * 获取企业微信-外部消息
      *
      * @param siteId
      */

+ 5 - 4
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/wechatgroup/service/impl/OkkiShopWechatGroupMsgServiceImpl.java

@@ -66,20 +66,20 @@ public class OkkiShopWechatGroupMsgServiceImpl extends ServiceImpl<OkkiShopWecha
     @Override
     public void getSiteWechatMsgMaxSeq(String siteId) {
         List<OkkiShopWechatGroupMsg> shopWechatGroupMsgs = okkiShopWechatGroupMsgMapper.getSiteWechatMsgList(siteId);
-        log.info("一共有:{}个站点,需要企业微信群消息", shopWechatGroupMsgs.size());
+        log.info("一共有:{}个站点,需要企业微信-外部消息", shopWechatGroupMsgs.size());
         for (int i = 0; i < shopWechatGroupMsgs.size(); i++) {
             int finalI = i;
             ThreadPoolUtil.execute(() -> {
                 OkkiShopWechatGroupMsg okkiShopWechatGroupMsg = shopWechatGroupMsgs.get(finalI);
                 int maxSeq = okkiShopWechatGroupMsg.getSeq() == 0 ? 1 : okkiShopWechatGroupMsg.getSeq();
-                log.info("开始处理第{}个,站点ID为:{},seq为:{},企业微信群消息", finalI + 1, okkiShopWechatGroupMsg.getSiteId(), maxSeq);
+                log.info("开始处理第{}个,站点ID为:{},seq为:{},企业微信-外部消息", finalI + 1, okkiShopWechatGroupMsg.getSiteId(), maxSeq);
                 saveWechatGroupMsg(String.valueOf(okkiShopWechatGroupMsg.getSiteId()), maxSeq);
             });
         }
     }
 
     /**
-     * 保存企业微信群消息
+     * 保存企业微信-外部消息
      *
      * @param siteId
      * @param minSeq
@@ -114,7 +114,7 @@ public class OkkiShopWechatGroupMsgServiceImpl extends ServiceImpl<OkkiShopWecha
     }
 
     /**
-     * 发送获取企业微信群消息请求
+     * 发送获取企业微信-外部消息请求
      *
      * @param siteId
      */
@@ -131,6 +131,7 @@ public class OkkiShopWechatGroupMsgServiceImpl extends ServiceImpl<OkkiShopWecha
         postData.put("page", 1);
         postData.put("page_size", 100);
         postData.put("min_seq", minSeq);
+        postData.put("group_type", 0);
         try {
             String queryStr = HttpClientUtils.buildQueryString(query);
             String body = HttpClientUtils.toJsonString(postData);

+ 162 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/wechatinnergroup/controller/OkkiShopWechatInnerGroupMsgController.java

@@ -0,0 +1,162 @@
+package org.jeecg.modules.okki.wechatinnergroup.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.modules.okki.wechatinnergroup.entity.OkkiShopWechatInnerGroupMsg;
+import org.jeecg.modules.okki.wechatinnergroup.service.IOkkiShopWechatInnerGroupMsgService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.Arrays;
+
+ /**
+ * @Description: okki_shop_wechat_inner_group_msg
+ * @Author: jeecg-boot
+ * @Date:   2025-02-17
+ * @Version: V1.0
+ */
+@Api(tags="okki_shop_wechat_inner_group_msg")
+@RestController
+@RequestMapping("/okki/okkiShopWechatInnerGroupMsg")
+@Slf4j
+public class OkkiShopWechatInnerGroupMsgController extends JeecgController<OkkiShopWechatInnerGroupMsg, IOkkiShopWechatInnerGroupMsgService> {
+	@Autowired
+	private IOkkiShopWechatInnerGroupMsgService okkiShopWechatInnerGroupMsgService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param okkiShopWechatInnerGroupMsg
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "okki_shop_wechat_inner_group_msg-分页列表查询")
+	@ApiOperation(value="okki_shop_wechat_inner_group_msg-分页列表查询", notes="okki_shop_wechat_inner_group_msg-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<OkkiShopWechatInnerGroupMsg>> queryPageList(OkkiShopWechatInnerGroupMsg okkiShopWechatInnerGroupMsg,
+																	@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+																	@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+																	HttpServletRequest req) {
+		QueryWrapper<OkkiShopWechatInnerGroupMsg> queryWrapper = QueryGenerator.initQueryWrapper(okkiShopWechatInnerGroupMsg, req.getParameterMap());
+		Page<OkkiShopWechatInnerGroupMsg> page = new Page<OkkiShopWechatInnerGroupMsg>(pageNo, pageSize);
+		IPage<OkkiShopWechatInnerGroupMsg> pageList = okkiShopWechatInnerGroupMsgService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   添加
+	 *
+	 * @param okkiShopWechatInnerGroupMsg
+	 * @return
+	 */
+	@AutoLog(value = "okki_shop_wechat_inner_group_msg-添加")
+	@ApiOperation(value="okki_shop_wechat_inner_group_msg-添加", notes="okki_shop_wechat_inner_group_msg-添加")
+	@RequiresPermissions("okki:okki_shop_wechat_inner_group_msg:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody OkkiShopWechatInnerGroupMsg okkiShopWechatInnerGroupMsg) {
+		okkiShopWechatInnerGroupMsgService.save(okkiShopWechatInnerGroupMsg);
+		return Result.OK("添加成功!");
+	}
+	
+	/**
+	 *  编辑
+	 *
+	 * @param okkiShopWechatInnerGroupMsg
+	 * @return
+	 */
+	@AutoLog(value = "okki_shop_wechat_inner_group_msg-编辑")
+	@ApiOperation(value="okki_shop_wechat_inner_group_msg-编辑", notes="okki_shop_wechat_inner_group_msg-编辑")
+	@RequiresPermissions("okki:okki_shop_wechat_inner_group_msg:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody OkkiShopWechatInnerGroupMsg okkiShopWechatInnerGroupMsg) {
+		okkiShopWechatInnerGroupMsgService.updateById(okkiShopWechatInnerGroupMsg);
+		return Result.OK("编辑成功!");
+	}
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "okki_shop_wechat_inner_group_msg-通过id删除")
+	@ApiOperation(value="okki_shop_wechat_inner_group_msg-通过id删除", notes="okki_shop_wechat_inner_group_msg-通过id删除")
+	@RequiresPermissions("okki:okki_shop_wechat_inner_group_msg:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		okkiShopWechatInnerGroupMsgService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "okki_shop_wechat_inner_group_msg-批量删除")
+	@ApiOperation(value="okki_shop_wechat_inner_group_msg-批量删除", notes="okki_shop_wechat_inner_group_msg-批量删除")
+	@RequiresPermissions("okki:okki_shop_wechat_inner_group_msg:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.okkiShopWechatInnerGroupMsgService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+	
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "okki_shop_wechat_inner_group_msg-通过id查询")
+	@ApiOperation(value="okki_shop_wechat_inner_group_msg-通过id查询", notes="okki_shop_wechat_inner_group_msg-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<OkkiShopWechatInnerGroupMsg> queryById(@RequestParam(name="id",required=true) String id) {
+		OkkiShopWechatInnerGroupMsg okkiShopWechatInnerGroupMsg = okkiShopWechatInnerGroupMsgService.getById(id);
+		if(okkiShopWechatInnerGroupMsg==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(okkiShopWechatInnerGroupMsg);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param okkiShopWechatInnerGroupMsg
+    */
+    @RequiresPermissions("okki:okki_shop_wechat_inner_group_msg:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, OkkiShopWechatInnerGroupMsg okkiShopWechatInnerGroupMsg) {
+        return super.exportXls(request, okkiShopWechatInnerGroupMsg, OkkiShopWechatInnerGroupMsg.class, "okki_shop_wechat_inner_group_msg");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    @RequiresPermissions("okki:okki_shop_wechat_inner_group_msg:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, OkkiShopWechatInnerGroupMsg.class);
+    }
+
+}

+ 123 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/wechatinnergroup/entity/OkkiShopWechatInnerGroupMsg.java

@@ -0,0 +1,123 @@
+package org.jeecg.modules.okki.wechatinnergroup.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+
+/**
+ * @Description: okki_shop_wechat_inner_group_msg
+ * @Author: jeecg-boot
+ * @Date: 2025-02-17
+ * @Version: V1.0
+ */
+@Data
+@TableName("okki_shop_wechat_inner_group_msg")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value = "okki_shop_wechat_inner_group_msg对象", description = "okki_shop_wechat_inner_group_msg")
+public class OkkiShopWechatInnerGroupMsg implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "id")
+    private java.lang.String id;
+    /**
+     * 消息id
+     */
+    @Excel(name = "消息id", width = 15)
+    @ApiModelProperty(value = "消息id")
+    private java.lang.String msgId;
+    /**
+     * 群id
+     */
+    @Excel(name = "群id", width = 15)
+    @ApiModelProperty(value = "群id")
+    private java.lang.String roomId;
+    /**
+     * seq
+     */
+    @Excel(name = "seq", width = 15)
+    @ApiModelProperty(value = "seq")
+    private java.lang.Integer seq;
+    /**
+     * 目前有send(发送消息)/recall(撤回消息)/switch(切换企业日志)三种类型
+     */
+    @Excel(name = "目前有send(发送消息)/recall(撤回消息)/switch(切换企业日志)三种类型", width = 15)
+    @ApiModelProperty(value = "目前有send(发送消息)/recall(撤回消息)/switch(切换企业日志)三种类型")
+    private java.lang.String action;
+    /**
+     * 消息发送方id。同一企业内容为userid,非相同企业为external_userid
+     */
+    @Excel(name = "消息发送方id。同一企业内容为userid,非相同企业为external_userid", width = 15)
+    @ApiModelProperty(value = "消息发送方id。同一企业内容为userid,非相同企业为external_userid")
+    private java.lang.String fromId;
+    /**
+     * 消息接收方列表,可能是多个,同一个企业内容为userid,非相同企业为external_userid
+     */
+    @Excel(name = "消息接收方列表,可能是多个,同一个企业内容为userid,非相同企业为external_userid", width = 15)
+    @ApiModelProperty(value = "消息接收方列表,可能是多个,同一个企业内容为userid,非相同企业为external_userid")
+    private java.lang.String tolist;
+    /**
+     * 消息发送时间
+     */
+    @Excel(name = "消息发送时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "消息发送时间")
+    private java.util.Date msgTime;
+    /**
+     * 消息类型
+     */
+    @Excel(name = "消息类型", width = 15)
+    @ApiModelProperty(value = "消息类型")
+    private java.lang.String msgType;
+    /**
+     * 消息内容
+     */
+    @Excel(name = "消息内容", width = 15)
+    @ApiModelProperty(value = "消息内容")
+    private java.lang.String content;
+    /**
+     * clientId
+     */
+    @Excel(name = "clientId", width = 15)
+    @ApiModelProperty(value = "clientId")
+    private java.lang.Integer clientId;
+    /**
+     * siteId
+     */
+    @Excel(name = "siteId", width = 15)
+    @ApiModelProperty(value = "siteId")
+    private java.lang.Integer siteId;
+    /**
+     * createTime
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "createTime")
+    private java.util.Date createTime;
+    /**
+     * updateTime
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "updateTime")
+    private java.util.Date updateTime;
+
+    @TableField(exist = false)
+    private String from;
+}

+ 35 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/wechatinnergroup/job/SyncWechatInnerGroupMsgJob.java

@@ -0,0 +1,35 @@
+package org.jeecg.modules.okki.wechatinnergroup.job;
+
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.util.DateUtils;
+import org.jeecg.modules.okki.wechatinnergroup.service.IOkkiShopWechatInnerGroupMsgService;
+import org.quartz.Job;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+
+import javax.annotation.Resource;
+
+/**
+ * @author Chen
+ */
+@Slf4j
+public class SyncWechatInnerGroupMsgJob implements Job {
+
+    @Resource
+    private IOkkiShopWechatInnerGroupMsgService okkiShopWechatInnerGroupMsgService;
+
+    private String parameter;
+
+    public void setParameter(String parameter) {
+        this.parameter = parameter;
+    }
+
+    @Override
+    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
+        long start = System.currentTimeMillis();
+        log.info(String.format("开始同步站点-【企业微信-内部群】消息-普通定时任务 SyncWechatInnerGroupMsgJob !  时间:" + DateUtils.now()));
+        okkiShopWechatInnerGroupMsgService.getSiteWechatInnerMsgMaxSeq(this.parameter);
+        long end = System.currentTimeMillis();
+        log.info("请求同步站点-【企业微信-内部群】消息-普通定时任务 SyncWechatInnerGroupMsgJob !结束,耗时:{}s", (end - start) / 1000);
+    }
+}

+ 24 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/wechatinnergroup/mapper/OkkiShopWechatInnerGroupMsgMapper.java

@@ -0,0 +1,24 @@
+package org.jeecg.modules.okki.wechatinnergroup.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.okki.wechatgroup.entity.OkkiShopWechatGroupMsg;
+import org.jeecg.modules.okki.wechatinnergroup.entity.OkkiShopWechatInnerGroupMsg;
+
+import java.util.List;
+
+/**
+ * @Description: okki_shop_wechat_inner_group_msg
+ * @Author: jeecg-boot
+ * @Date: 2025-02-17
+ * @Version: V1.0
+ */
+public interface OkkiShopWechatInnerGroupMsgMapper extends BaseMapper<OkkiShopWechatInnerGroupMsg> {
+
+    /**
+     * 获取站点列表
+     *
+     * @param siteId
+     * @return
+     */
+    public List<OkkiShopWechatInnerGroupMsg> getSiteWechatInnerMsgList(String siteId);
+}

+ 18 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/wechatinnergroup/mapper/xml/OkkiShopWechatInnerGroupMsgMapper.xml

@@ -0,0 +1,18 @@
+<?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="org.jeecg.modules.okki.wechatinnergroup.mapper.OkkiShopWechatInnerGroupMsgMapper">
+
+    <select id="getSiteWechatInnerMsgList" resultType="org.jeecg.modules.okki.wechatinnergroup.entity.OkkiShopWechatInnerGroupMsg">
+        SELECT
+        t1.site_id,
+        IFNULL( t2.seq, 0 ) AS seq
+        FROM
+        okki_site t1
+        LEFT JOIN ( SELECT site_id, MAX( seq ) AS seq FROM `okki_shop_wechat_inner_group_msg` GROUP BY site_id ) t2 ON t2.site_id = t1.site_id
+        WHERE
+        t1.del_flag =0
+        <if test="siteId != null and siteId != ''">
+            AND t1.site_id = #{siteId}
+        </if>
+    </select>
+</mapper>

+ 20 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/wechatinnergroup/service/IOkkiShopWechatInnerGroupMsgService.java

@@ -0,0 +1,20 @@
+package org.jeecg.modules.okki.wechatinnergroup.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.okki.wechatinnergroup.entity.OkkiShopWechatInnerGroupMsg;
+
+/**
+ * @Description: okki_shop_wechat_inner_group_msg
+ * @Author: jeecg-boot
+ * @Date: 2025-02-17
+ * @Version: V1.0
+ */
+public interface IOkkiShopWechatInnerGroupMsgService extends IService<OkkiShopWechatInnerGroupMsg> {
+
+    /**
+     * 获取【企业微信-内部群】消息
+     *
+     * @param siteId
+     */
+    public void getSiteWechatInnerMsgMaxSeq(String siteId);
+}

+ 136 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/wechatinnergroup/service/impl/OkkiShopWechatInnerGroupMsgServiceImpl.java

@@ -0,0 +1,136 @@
+package org.jeecg.modules.okki.wechatinnergroup.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang.StringUtils;
+import org.jeecg.common.util.ThreadPoolUtil;
+import org.jeecg.modules.okki.utils.HttpClientUtils;
+import org.jeecg.modules.okki.wechatgroup.dto.WechatInnerGroupMsgRespDto;
+import org.jeecg.modules.okki.wechatinnergroup.entity.OkkiShopWechatInnerGroupMsg;
+import org.jeecg.modules.okki.wechatinnergroup.mapper.OkkiShopWechatInnerGroupMsgMapper;
+import org.jeecg.modules.okki.wechatinnergroup.service.IOkkiShopWechatInnerGroupMsgService;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.*;
+
+/**
+ * @Description: okki_shop_wechat_inner_group_msg
+ * @Author: jeecg-boot
+ * @Date: 2025-02-17
+ * @Version: V1.0
+ */
+@Slf4j
+@Service
+public class OkkiShopWechatInnerGroupMsgServiceImpl extends ServiceImpl<OkkiShopWechatInnerGroupMsgMapper, OkkiShopWechatInnerGroupMsg> implements IOkkiShopWechatInnerGroupMsgService {
+
+    @Value("${OKKI.BASE_URL}")
+    private String URL;
+
+    @Value("${OKKI.CLIENT_SECRET}")
+    private String CLIENT_SECRET;
+
+    @Resource
+    private OkkiShopWechatInnerGroupMsgMapper okkiShopWechatInnerGroupMsgMapper;
+
+    /**
+     * 获取站点信息
+     *
+     * @param siteId
+     * @return
+     */
+    @Override
+    public void getSiteWechatInnerMsgMaxSeq(String siteId) {
+        List<OkkiShopWechatInnerGroupMsg> shopWechatInnerGroupMsgs = okkiShopWechatInnerGroupMsgMapper.getSiteWechatInnerMsgList(siteId);
+        log.info("一共有:{}个站点,需要【企业微信-内部群】消息", shopWechatInnerGroupMsgs.size());
+        for (int i = 0; i < shopWechatInnerGroupMsgs.size(); i++) {
+            int finalI = i;
+            ThreadPoolUtil.execute(() -> {
+                OkkiShopWechatInnerGroupMsg okkiShopWechatInnerGroupMsg = shopWechatInnerGroupMsgs.get(finalI);
+                int maxSeq = okkiShopWechatInnerGroupMsg.getSeq() == 0 ? 1 : okkiShopWechatInnerGroupMsg.getSeq();
+                log.info("开始处理第{}个,站点ID为:{},seq为:{},【企业微信-内部群】消息", finalI + 1, okkiShopWechatInnerGroupMsg.getSiteId(), maxSeq);
+                saveWechatInnerGroupMsg(String.valueOf(okkiShopWechatInnerGroupMsg.getSiteId()), maxSeq);
+            });
+        }
+    }
+
+    /**
+     * 保存【企业微信-内部群】消息
+     *
+     * @param siteId
+     * @param minSeq
+     */
+    public void saveWechatInnerGroupMsg(String siteId, Integer minSeq) {
+        List<OkkiShopWechatInnerGroupMsg> wechatInnerGroupMsgList = sendWechatInnerGroupMsgRequest(siteId, minSeq);
+        List<OkkiShopWechatInnerGroupMsg> shopWechatInnerGroupMsgs = new ArrayList<>();
+        if (!CollectionUtils.isEmpty(wechatInnerGroupMsgList)) {
+            wechatInnerGroupMsgList.forEach(c -> {
+                OkkiShopWechatInnerGroupMsg shopWechatInnerGroupMsg = new OkkiShopWechatInnerGroupMsg();
+                shopWechatInnerGroupMsg.setMsgId(c.getMsgId());
+                shopWechatInnerGroupMsg.setRoomId(c.getRoomId());
+                shopWechatInnerGroupMsg.setSeq(c.getSeq());
+                shopWechatInnerGroupMsg.setAction(c.getAction());
+                shopWechatInnerGroupMsg.setFromId(StringUtils.isNotBlank(c.getFrom()) ? c.getFrom() : "");
+                shopWechatInnerGroupMsg.setTolist(c.getTolist());
+                shopWechatInnerGroupMsg.setMsgType(c.getMsgType());
+                shopWechatInnerGroupMsg.setMsgTime(c.getMsgTime());
+                shopWechatInnerGroupMsg.setContent(c.getContent());
+                shopWechatInnerGroupMsg.setClientId(c.getClientId());
+                shopWechatInnerGroupMsg.setSiteId(c.getSiteId());
+                shopWechatInnerGroupMsg.setCreateTime(c.getCreateTime());
+                shopWechatInnerGroupMsg.setUpdateTime(c.getUpdateTime());
+                shopWechatInnerGroupMsgs.add(shopWechatInnerGroupMsg);
+            });
+            this.saveBatch(shopWechatInnerGroupMsgs);
+
+            //获取下一页数据
+            OkkiShopWechatInnerGroupMsg lastWechatInnerGroupMsg = shopWechatInnerGroupMsgs.get(shopWechatInnerGroupMsgs.size() - 1);
+            saveWechatInnerGroupMsg(siteId, lastWechatInnerGroupMsg.getSeq());
+        }
+    }
+
+    /**
+     * 发送获取企业微信群消息请求
+     *
+     * @param siteId
+     */
+    public List<OkkiShopWechatInnerGroupMsg> sendWechatInnerGroupMsgRequest(String siteId, Integer minSeq) {
+        List<OkkiShopWechatInnerGroupMsg> okkiShopWechatInnerGroupMsgs = new ArrayList<>();
+        // 请求okki平台接口
+        Map<String, String> query = new TreeMap<>();
+        query.put("sign_method", "hmac-md5");
+        query.put("timestamp", String.valueOf(System.currentTimeMillis()));
+        query.put("site_id", String.valueOf(siteId));
+        query.put("method", "query_wechat_group_msg");
+
+        Map<String, Object> postData = new HashMap<>();
+        postData.put("page", 1);
+        postData.put("page_size", 100);
+        postData.put("min_seq", minSeq);
+        postData.put("group_type", 1);
+
+        try {
+            String queryStr = HttpClientUtils.buildQueryString(query);
+            String body = HttpClientUtils.toJsonString(postData);
+            String signStr = queryStr + body;
+            query.put("signature", HttpClientUtils.generateHmacMD5(signStr, CLIENT_SECRET));
+            String okkiUrl = URL + "?" + HttpClientUtils.buildQueryString(query);
+            log.info("url:" + okkiUrl + ",body:" + body);
+            String msgResult = HttpClientUtils.doPost(okkiUrl, body);
+            // {"code":0,"msg":"success","now":"2024-09-09 09:42:28","data":[]}
+            WechatInnerGroupMsgRespDto wechatInnerGroupMsgRespDto = JSONObject.parseObject(msgResult, WechatInnerGroupMsgRespDto.class);
+//            log.info("wechatGroupMsgRespDto:{}",FastJsonUtil.toJSONString(wechatGroupMsgRespDto));
+            if (wechatInnerGroupMsgRespDto.getCode() != 0) {
+                throw new RuntimeException(wechatInnerGroupMsgRespDto.getMsg());
+            }
+            okkiShopWechatInnerGroupMsgs = wechatInnerGroupMsgRespDto.getData();
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+        return okkiShopWechatInnerGroupMsgs;
+    }
+
+}