Ver código fonte

素材报表 考勤统计

yumeng 4 anos atrás
pai
commit
0768c224a8

+ 13 - 0
jeecg-boot-module-system/pom.xml

@@ -99,6 +99,13 @@
             <scope>compile</scope>
         </dependency>
         <dependency>
+            <groupId>cn.com.ctop</groupId>
+            <artifactId>module-oa</artifactId>
+            <version>2.0.2</version>
+            <scope>compile</scope>
+        </dependency>
+
+        <dependency>
             <groupId>com.aliyun.oss</groupId>
             <artifactId>aliyun-sdk-oss</artifactId>
             <version>3.5.0</version>
@@ -176,6 +183,12 @@
             <artifactId>pagehelper</artifactId>
             <version>5.1.11</version>
         </dependency>
+        <dependency>
+            <groupId>org.jeecgframework.boot</groupId>
+            <artifactId>module-oa</artifactId>
+            <version>2.0.2</version>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
     <dependencyManagement>

+ 12 - 1
jeecg-boot-module-system/src/test/java/org/jeecg/SampleTest.java

@@ -14,6 +14,7 @@ import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouDailyReportTaskServic
 import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouHistoryReportTaskService;
 import cn.com.ctop.kuaishou.modules.graphql.service.IKuaishouWebInterfaceService;
 import cn.com.ctop.kuaishou.modules.report.service.IKuaishouReportDailyAgentService;
+import cn.com.ctop.oa.modules.service.IWechatDepartmentService;
 import cn.com.ctop.toutiao.modules.material.service.IByteDanceAdvertiserDataService;
 import cn.com.ctop.toutiao.modules.report.service.IReportService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -54,13 +55,23 @@ public class SampleTest {
     @Autowired
     private IKuaiShouDailyReportTaskService dailyReportTaskService;
 
+    @Autowired
+    private IWechatDepartmentService wechatDepartment;
+
+
+    @Test
+    public void getDepartment() {
+        wechatDepartment.getDepartment();
+
+    }
+
 
     @Test
     public void loadBytedanceCreativeData() {
         QueryWrapper<CtopOauthToken> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("media_id", 2);
         List<CtopOauthToken> list = oauthTokenService.list(queryWrapper);
-        for (CtopOauthToken token:list) {
+        for (CtopOauthToken token : list) {
             kuaiShouHistoryReportTaskService.createTask(token.getAccountId(), token.getAccessToken(), "2020-03-09", "2020-09-08", "history");
 
         }

+ 4 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaiShouHistoryReportTaskServiceImpl.java

@@ -81,6 +81,7 @@ public class KuaiShouHistoryReportTaskServiceImpl extends ServiceImpl<KuaiShouHi
             JSONObject taskParams = new JSONObject();
             taskParams.put("start_date", startDate);
             taskParams.put("end_date", endDate);
+
             if (null != taskType && taskType.equals(CtopAdConstant.KUAISHOU_LOAD_JOB_TYPE_DAILY)) {
                 if (Check.isNull(dailyTypeList)) {
                     getDailyTypeList();
@@ -91,6 +92,8 @@ public class KuaiShouHistoryReportTaskServiceImpl extends ServiceImpl<KuaiShouHi
                     param.put("task_name", taskName);
                     taskParams.put("view_type", type);
                     param.put("task_params", taskParams);
+                    System.err.println("入参:" + param.toJSONString());
+
                     String result = HttpUtils.kuaiShouhttpPostRequest(url, param.toJSONString(), headers);
                     JSONObject resultJson = JSONObject.parseObject(result);
                     if (!Check.isNull(resultJson)) {
@@ -120,6 +123,7 @@ public class KuaiShouHistoryReportTaskServiceImpl extends ServiceImpl<KuaiShouHi
                     param.put("task_name", taskName);
                     taskParams.put("view_type", type);
                     param.put("task_params", taskParams);
+                    System.err.println("入参:" + param.toJSONString());
                     String result = HttpUtils.kuaiShouhttpPostRequest(url, param.toJSONString(), headers);
                     JSONObject resultJson = JSONObject.parseObject(result);
                     log.info("请求状态返回数据:{}", resultJson);

+ 50 - 0
module-oa/pom.xml

@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>jeecg-boot-parent</artifactId>
+        <groupId>org.jeecgframework.boot</groupId>
+        <version>2.0.2</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>cn.com.ctop</groupId>
+    <artifactId>module-oa</artifactId>
+    <name>module-oa</name>
+    <!-- FIXME change it to the project's website -->
+    <url>http://www.example.com</url>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <maven.compiler.source>1.7</maven.compiler.source>
+        <maven.compiler.target>1.7</maven.compiler.target>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>cn.com.ctop</groupId>
+            <artifactId>module-common</artifactId>
+            <version>2.0.2</version>
+        </dependency>
+
+    </dependencies>
+
+    <build>
+        <resources>
+            <!-- 解决MyBatis配置文件引入问题 -->
+            <resource>
+                <directory>src/main/java</directory>
+                <includes>
+                    <include>**/*.properties</include>
+                    <include>**/*.xml</include>
+                </includes>
+                <!-- 是否替换资源中的属性-->
+                <filtering>false</filtering>
+            </resource>
+            <resource>
+                <directory>src/main/resources</directory>
+            </resource>
+        </resources>
+    </build>
+
+</project>

+ 15 - 0
module-oa/src/main/java/cn/com/ctop/oa/modules/constant/QYWxConstant.java

@@ -0,0 +1,15 @@
+package cn.com.ctop.oa.modules.constant;
+
+public class QYWxConstant {
+    public static final String QYWX_CORP_ID = "ww24b8a47826f5875f";
+    public static final Integer QYWX_AGENT_ID = 1000004;
+    public static final String QYWX_CORP_SECRET = "1YWGDtuZWrQDl6US3OPHG8_pvuNgP1TeUsOmfRk6GmQ";
+    public static final String QYWX_API_URL = "https://qyapi.weixin.qq.com";  //企业微信api域名
+    public static final String QYWX_DEPART_LIST = "https://qyapi.weixin.qq.com/cgi-bin/department/list";  //获取部门列表
+    public static final String QYWX_GET_TOKEN = "/cgi-bin/gettoken";  //获取token
+    public static final String QYWX_USER_SIMPLELIST = "/cgi-bin/user/simplelist";  //获取部门下员工简单信息
+    public static final String QYWX_USER_LIST = "/cgi-bin/user/list";  //获取部门下员工详细信息
+    public static final String QYWX_CONVERT_TO_OPENID = "/cgi-bin/user/convert_to_openid";  //获取部门下员工详细信息
+    public static final String QYWX_GET_LOGIN_USERINFO = "/cgi-bin/user/getuserinfo";  //获取当前登录员工USERID
+
+}

+ 248 - 0
module-oa/src/main/java/cn/com/ctop/oa/modules/controller/WechatDepartmentController.java

@@ -0,0 +1,248 @@
+package cn.com.ctop.oa.modules.controller;
+
+import cn.com.ctop.common.module.annotation.AutoLog;
+import cn.com.ctop.oa.modules.entity.WechatDepartment;
+import cn.com.ctop.oa.modules.service.IWechatDepartmentService;
+import com.alibaba.fastjson.JSON;
+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.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 部门列表
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2020-09-10
+ */
+@Slf4j
+@Api(tags = "部门列表")
+@RestController
+@RequestMapping("/oa/wechatDepartment")
+public class WechatDepartmentController {
+    @Autowired
+    private IWechatDepartmentService wechatDepartmentService;
+
+    /**
+     * 分页列表查询
+     *
+     * @param wechatDepartment
+     * @param pageNo
+     * @param pageSize
+     * @param req
+     * @return
+     */
+    @AutoLog(value = "部门列表-分页列表查询")
+    @ApiOperation(value = "部门列表-分页列表查询", notes = "部门列表-分页列表查询")
+    @GetMapping(value = "/list")
+    public Result<IPage<WechatDepartment>> queryPageList(WechatDepartment wechatDepartment,
+                                                         @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                         @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+                                                         HttpServletRequest req) {
+        Result<IPage<WechatDepartment>> result = new Result<>();
+        QueryWrapper<WechatDepartment> queryWrapper = QueryGenerator.initQueryWrapper(wechatDepartment, req.getParameterMap());
+        Page<WechatDepartment> page = new Page<WechatDepartment>(pageNo, pageSize);
+        IPage<WechatDepartment> pageList = wechatDepartmentService.page(page, queryWrapper);
+        result.setSuccess(true);
+        result.setResult(pageList);
+        return result;
+    }
+
+    /**
+     * 添加
+     *
+     * @param wechatDepartment
+     * @return
+     */
+    @AutoLog(value = "部门列表-添加")
+    @ApiOperation(value = "部门列表-添加", notes = "部门列表-添加")
+    @PostMapping(value = "/add")
+    public Result<WechatDepartment> add(@RequestBody WechatDepartment wechatDepartment) {
+        Result<WechatDepartment> result = new Result<>();
+        try {
+            wechatDepartmentService.save(wechatDepartment);
+            result.success("添加成功!");
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+            result.error500("操作失败");
+        }
+        return result;
+    }
+
+    /**
+     * 编辑
+     *
+     * @param wechatDepartment
+     * @return
+     */
+    @AutoLog(value = "部门列表-编辑")
+    @ApiOperation(value = "部门列表-编辑", notes = "部门列表-编辑")
+    @PutMapping(value = "/edit")
+    public Result<WechatDepartment> edit(@RequestBody WechatDepartment wechatDepartment) {
+        Result<WechatDepartment> result = new Result<WechatDepartment>();
+        WechatDepartment wechatDepartmentEntity = wechatDepartmentService.getById(wechatDepartment.getId());
+        if (wechatDepartmentEntity == null) {
+            result.error500("未找到对应实体");
+        } else {
+            boolean ok = wechatDepartmentService.updateById(wechatDepartment);
+            if (ok) {
+                result.success("修改成功!");
+            }
+        }
+
+        return result;
+    }
+
+    /**
+     * 通过id删除
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "部门列表-通过id删除")
+    @ApiOperation(value = "部门列表-通过id删除", notes = "部门列表-通过id删除")
+    @DeleteMapping(value = "/delete")
+    public Result<?> delete(@RequestParam(name = "id", required = true) String id) {
+        try {
+            wechatDepartmentService.removeById(id);
+        } catch (Exception e) {
+            log.error("删除失败", e.getMessage());
+            return Result.error("删除失败!");
+        }
+        return Result.ok("删除成功!");
+    }
+
+    /**
+     * 批量删除
+     *
+     * @param ids
+     * @return
+     */
+    @AutoLog(value = "部门列表-批量删除")
+    @ApiOperation(value = "部门列表-批量删除", notes = "部门列表-批量删除")
+    @DeleteMapping(value = "/deleteBatch")
+    public Result<WechatDepartment> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
+        Result<WechatDepartment> result = new Result<>();
+        if (ids == null || "".equals(ids.trim())) {
+            result.error500("参数不识别!");
+        } else {
+            this.wechatDepartmentService.removeByIds(Arrays.asList(ids.split(",")));
+            result.success("删除成功!");
+        }
+        return result;
+    }
+
+    /**
+     * 通过id查询
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "部门列表-通过id查询")
+    @ApiOperation(value = "部门列表-通过id查询", notes = "部门列表-通过id查询")
+    @GetMapping(value = "/queryById")
+    public Result<WechatDepartment> queryById(@RequestParam(name = "id", required = true) String id) {
+        Result<WechatDepartment> result = new Result<>();
+        WechatDepartment wechatDepartment = wechatDepartmentService.getById(id);
+        if (wechatDepartment == null) {
+            result.error500("未找到对应实体");
+        } else {
+            result.setResult(wechatDepartment);
+            result.setSuccess(true);
+        }
+        return result;
+    }
+
+    /**
+     * 导出excel
+     *
+     * @param request
+     * @param response
+     */
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, HttpServletResponse response) {
+        // Step.1 组装查询条件
+        QueryWrapper<WechatDepartment> queryWrapper = null;
+        try {
+            String paramsStr = request.getParameter("paramsStr");
+            if (oConvertUtils.isNotEmpty(paramsStr)) {
+                String deString = URLDecoder.decode(paramsStr, "UTF-8");
+                WechatDepartment wechatDepartment = JSON.parseObject(deString, WechatDepartment.class);
+                queryWrapper = QueryGenerator.initQueryWrapper(wechatDepartment, request.getParameterMap());
+            }
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+
+        //Step.2 AutoPoi 导出Excel
+        ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+        List<WechatDepartment> pageList = wechatDepartmentService.list(queryWrapper);
+        //导出文件名称
+        mv.addObject(NormalExcelConstants.FILE_NAME, "部门列表列表");
+        mv.addObject(NormalExcelConstants.CLASS, WechatDepartment.class);
+        mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("部门列表列表数据", "导出人:Jeecg", "导出信息"));
+        mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
+        return mv;
+    }
+
+    /**
+     * 通过excel导入数据
+     *
+     * @param request
+     * @param response
+     * @return
+     */
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+        Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
+        for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
+            MultipartFile file = entity.getValue();
+            ImportParams params = new ImportParams();
+            params.setTitleRows(2);
+            params.setHeadRows(1);
+            params.setNeedSave(true);
+            try {
+                List<WechatDepartment> listWechatDepartments = ExcelImportUtil.importExcel(file.getInputStream(), WechatDepartment.class, params);
+                wechatDepartmentService.saveBatch(listWechatDepartments);
+                return Result.ok("文件导入成功!数据行数:" + listWechatDepartments.size());
+            } catch (Exception e) {
+                log.error(e.getMessage(), e);
+                return Result.error("文件导入失败:" + e.getMessage());
+            } finally {
+                try {
+                    file.getInputStream().close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return Result.ok("文件导入失败!");
+    }
+
+}

+ 69 - 0
module-oa/src/main/java/cn/com/ctop/oa/modules/entity/WechatDepartment.java

@@ -0,0 +1,69 @@
+package cn.com.ctop.oa.modules.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+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 java.util.Date;
+
+/**
+ * 部门列表
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2020-09-10
+ */
+@Data
+@TableName("ctop_wechat_department")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "ctop_wechat_department对象", description = "部门列表")
+public class WechatDepartment {
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "id")
+    private Long id;
+    /**
+     * 部门名称
+     */
+    @Excel(name = "部门名称", width = 15)
+    @ApiModelProperty(value = "部门名称")
+    private String departName;
+    /**
+     * 部门id
+     */
+    @Excel(name = "部门id", width = 15)
+    @ApiModelProperty(value = "部门id")
+    private String departId;
+    /**
+     * 父部门id
+     */
+    @Excel(name = "父部门id", width = 15)
+    @ApiModelProperty(value = "父部门id")
+    private String parentId;
+    /**
+     * 排序
+     */
+    @Excel(name = "排序", width = 15)
+    @ApiModelProperty(value = "排序")
+    private String departOrder;
+    /**
+     * createTime
+     */
+    @ApiModelProperty(value = "createTime")
+    private Date createTime;
+    /**
+     * updateTime
+     */
+    @ApiModelProperty(value = "updateTime")
+    private Date updateTime;
+}

+ 15 - 0
module-oa/src/main/java/cn/com/ctop/oa/modules/mapper/WechatDepartmentMapper.java

@@ -0,0 +1,15 @@
+package cn.com.ctop.oa.modules.mapper;
+
+import cn.com.ctop.oa.modules.entity.WechatDepartment;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 部门列表
+ *
+ * @author: jeecg-boot
+ * @date: 2020-09-10
+ * @cersion: V1.0
+ */
+public interface WechatDepartmentMapper extends BaseMapper<WechatDepartment> {
+
+}

+ 5 - 0
module-oa/src/main/java/cn/com/ctop/oa/modules/mapper/xml/WechatDepartmentMapper.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="cn.com.ctop.oa.modules.mapper.WechatDepartmentMapper">
+
+</mapper>

+ 14 - 0
module-oa/src/main/java/cn/com/ctop/oa/modules/service/IWechatDepartmentService.java

@@ -0,0 +1,14 @@
+package cn.com.ctop.oa.modules.service;
+
+import cn.com.ctop.oa.modules.entity.WechatDepartment;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 部门列表
+ * @Author: jeecg-boot
+ * @Date: 2020-09-10
+ * @Version: V1.0
+ */
+public interface IWechatDepartmentService extends IService<WechatDepartment> {
+    void getDepartment();
+}

+ 7 - 0
module-oa/src/main/java/cn/com/ctop/oa/modules/service/IWechatTokenService.java

@@ -0,0 +1,7 @@
+package cn.com.ctop.oa.modules.service;
+
+import java.util.Map;
+
+public interface IWechatTokenService {
+    Map<String, Object> getQYWXAccessToken();
+}

+ 4 - 0
module-oa/src/main/java/cn/com/ctop/oa/modules/service/IWechatUserInfoService.java

@@ -0,0 +1,4 @@
+package cn.com.ctop.oa.modules.service;
+
+public interface IWechatUserInfoService {
+}

+ 82 - 0
module-oa/src/main/java/cn/com/ctop/oa/modules/service/impl/WechatDepartmentServiceImpl.java

@@ -0,0 +1,82 @@
+package cn.com.ctop.oa.modules.service.impl;
+
+import cn.com.ctop.common.module.utils.Check;
+import cn.com.ctop.common.module.utils.HttpUtils;
+import cn.com.ctop.oa.modules.constant.QYWxConstant;
+import cn.com.ctop.oa.modules.entity.WechatDepartment;
+import cn.com.ctop.oa.modules.mapper.WechatDepartmentMapper;
+import cn.com.ctop.oa.modules.service.IWechatDepartmentService;
+import cn.com.ctop.oa.modules.service.IWechatTokenService;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
+import java.util.TreeMap;
+
+/**
+ * 部门列表
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2020-09-10
+ */
+@Service
+@Slf4j
+public class WechatDepartmentServiceImpl extends ServiceImpl<WechatDepartmentMapper, WechatDepartment> implements IWechatDepartmentService {
+    @Autowired
+    private IWechatTokenService tokenService;
+    @Autowired
+    private WechatDepartmentMapper wechatDepartmentMapper;
+
+
+    @Override
+    public void getDepartment() {
+        try {
+            Map<String, Object> qywxAccessToken = tokenService.getQYWXAccessToken();
+            if ((Integer) qywxAccessToken.get("code") != 0) {
+                log.error("企业微信获取token失败,返回信息:{}", qywxAccessToken.get("message"));
+                throw new Exception("企业微信获取token失败");
+            }
+
+
+            TreeMap<String, Object> params = new TreeMap<>();
+            params.put("access_token", qywxAccessToken.get("accessToken"));
+
+            String resultStr = HttpUtils.httpGetRequest(QYWxConstant.QYWX_DEPART_LIST, null, params);
+            JSONObject resultJson = JSONObject.parseObject(resultStr);
+            System.err.println(resultJson);
+            Integer errcode = resultJson.getInteger("errcode");
+            if (errcode == 0) {
+                JSONArray department = resultJson.getJSONArray("department");
+                if (!Check.isNull(department)) {
+                    for (int i = 0; i < department.size(); i++) {
+                        JSONObject departJson = department.getJSONObject(i);
+                        if (!Check.isNull(departJson)) {
+                            WechatDepartment depart = new WechatDepartment();
+                            depart.setDepartId(departJson.getString("id"));
+                            depart.setDepartName(departJson.getString("name"));
+                            depart.setParentId(departJson.getString("parentid"));
+                            depart.setDepartOrder(departJson.getString("order"));
+                            wechatDepartmentMapper.insert(depart);
+                        }
+
+                    }
+
+                }
+
+
+            } else {
+                throw new Exception("企业微信获取部门列表");
+
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+
+    }
+}

+ 43 - 0
module-oa/src/main/java/cn/com/ctop/oa/modules/service/impl/WechatTokenServiceImpl.java

@@ -0,0 +1,43 @@
+package cn.com.ctop.oa.modules.service.impl;
+
+import cn.com.ctop.common.module.utils.HttpUtils;
+import cn.com.ctop.oa.modules.constant.QYWxConstant;
+import cn.com.ctop.oa.modules.service.IWechatTokenService;
+import com.alibaba.fastjson.JSONObject;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.TreeMap;
+
+@Service
+public class WechatTokenServiceImpl implements IWechatTokenService {
+    public Map<String, Object> getQYWXAccessToken() {
+        Map<String, Object> returnMap = new HashMap<>();
+
+        try {
+            TreeMap<String, Object> params = new TreeMap<>();
+            params.put("corpid", QYWxConstant.QYWX_CORP_ID);
+            params.put("corpsecret", QYWxConstant.QYWX_CORP_SECRET);
+            String resultStr = HttpUtils.httpGetRequest(QYWxConstant.QYWX_API_URL + QYWxConstant.QYWX_GET_TOKEN, null, params);
+            //System.out.println(resultStr);
+            JSONObject resultJson = JSONObject.parseObject(resultStr);
+            Integer errcode = resultJson.getInteger("errcode");
+            if (errcode == 0) {
+                returnMap.put("code", 0);
+                returnMap.put("accessToken", resultJson.getString("access_token"));
+
+
+            } else {
+                returnMap.put("code", errcode);
+                returnMap.put("message", resultJson.getString("errmsg"));
+            }
+        } catch (Exception e) {
+            returnMap.put("code", -1);
+            returnMap.put("message", "系统错误");
+        }
+
+        return returnMap;
+    }
+
+}

+ 8 - 0
module-oa/src/main/java/cn/com/ctop/oa/modules/service/impl/WechatUserInfoServiceImpl.java

@@ -0,0 +1,8 @@
+package cn.com.ctop.oa.modules.service.impl;
+
+import cn.com.ctop.oa.modules.service.IWechatUserInfoService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class WechatUserInfoServiceImpl implements IWechatUserInfoService {
+}

+ 1 - 0
pom.xml

@@ -29,6 +29,7 @@
         <module>module-job-bytedance</module>
         <module>module-job-kuaishou</module>
         <module>module-callback</module>
+        <module>module-oa</module>
     </modules>
 
     <distributionManagement>