From f3697f5bda38f787fff66c9e47434005f38b7636 Mon Sep 17 00:00:00 2001 From: wangweijia <495720349@qq.com> Date: Tue, 7 Apr 2020 18:52:55 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BA=97=E9=93=BA=E5=AF=B9=E6=8E=A5=E4=BC=81?= =?UTF-8?q?=E4=B8=9A=E5=BE=AE=E4=BF=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/PrivilageCpUserDOMapper.java | 9 ++ .../ic/employee/service/EmployeeService.java | 17 ++++ src/main/java/com/kiisoo/ic/test/Test.java | 21 +++++ .../ic/wechat/web/CreateWechatController.java | 15 ---- .../com/kiisoo/ic/wx/constants/Constant.java | 14 ++++ .../wx/controller/CreateWechatController.java | 44 ++++++++++ .../com/kiisoo/ic/wx/entity/CreateWXDO.java | 82 +++++++++++++++++++ .../kiisoo/ic/wx/service/AddWXService.java | 48 +++++++++++ .../java/com/kiisoo/ic/wx/utils/UrlUtil.java | 36 ++++++++ 9 files changed, 271 insertions(+), 15 deletions(-) create mode 100644 src/main/java/com/kiisoo/ic/employee/mapper/PrivilageCpUserDOMapper.java create mode 100644 src/main/java/com/kiisoo/ic/test/Test.java delete mode 100644 src/main/java/com/kiisoo/ic/wechat/web/CreateWechatController.java create mode 100644 src/main/java/com/kiisoo/ic/wx/constants/Constant.java create mode 100644 src/main/java/com/kiisoo/ic/wx/controller/CreateWechatController.java create mode 100644 src/main/java/com/kiisoo/ic/wx/entity/CreateWXDO.java create mode 100644 src/main/java/com/kiisoo/ic/wx/service/AddWXService.java create mode 100644 src/main/java/com/kiisoo/ic/wx/utils/UrlUtil.java diff --git a/src/main/java/com/kiisoo/ic/employee/mapper/PrivilageCpUserDOMapper.java b/src/main/java/com/kiisoo/ic/employee/mapper/PrivilageCpUserDOMapper.java new file mode 100644 index 0000000..b3b93a2 --- /dev/null +++ b/src/main/java/com/kiisoo/ic/employee/mapper/PrivilageCpUserDOMapper.java @@ -0,0 +1,9 @@ +package com.kiisoo.ic.employee.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.kiisoo.ic.employee.entity.PrivilageCpUserDO; +import org.springframework.stereotype.Repository; + +@Repository +public interface PrivilageCpUserDOMapper extends BaseMapper { +} diff --git a/src/main/java/com/kiisoo/ic/employee/service/EmployeeService.java b/src/main/java/com/kiisoo/ic/employee/service/EmployeeService.java index 5a7ca5a..469bff0 100644 --- a/src/main/java/com/kiisoo/ic/employee/service/EmployeeService.java +++ b/src/main/java/com/kiisoo/ic/employee/service/EmployeeService.java @@ -1,6 +1,9 @@ package com.kiisoo.ic.employee.service; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.kiisoo.ic.employee.entity.EmployeeDO; +import com.kiisoo.ic.employee.entity.PrivilageCpUserDO; +import com.kiisoo.ic.employee.mapper.PrivilageCpUserDOMapper; import com.kiisoo.ic.wx.service.QWMailListManageService; import me.chanjar.weixin.common.error.WxErrorException; import org.springframework.beans.factory.annotation.Autowired; @@ -19,6 +22,9 @@ public class EmployeeService { @Autowired private QWMailListManageService qwMailListManageService; + @Autowired + private PrivilageCpUserDOMapper privilageCpUserDOMapper; + @Transactional(rollbackFor = Exception.class) public Boolean addUser(EmployeeDO employee) throws WxErrorException { //数据库创建用户 @@ -30,4 +36,15 @@ public class EmployeeService { return true; } + + /** + * 找到微信 + * @param phone + */ + public PrivilageCpUserDO getUserWX(String phone){ + PrivilageCpUserDO privilageCpUserDO = new PrivilageCpUserDO(); + privilageCpUserDO.setMobile(phone); + return privilageCpUserDOMapper.selectOne(new QueryWrapper<>(privilageCpUserDO)); + } + } diff --git a/src/main/java/com/kiisoo/ic/test/Test.java b/src/main/java/com/kiisoo/ic/test/Test.java new file mode 100644 index 0000000..29417dd --- /dev/null +++ b/src/main/java/com/kiisoo/ic/test/Test.java @@ -0,0 +1,21 @@ +package com.kiisoo.ic.test; + +import com.kiisoo.ic.app.IcApplication; +import com.kiisoo.ic.wx.service.AddWXService; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest(classes = IcApplication.class) +public class Test { + + @Autowired + AddWXService addWXService; + + @org.junit.Test + public void te(){ + addWXService.addWX("a","b"); + } +} diff --git a/src/main/java/com/kiisoo/ic/wechat/web/CreateWechatController.java b/src/main/java/com/kiisoo/ic/wechat/web/CreateWechatController.java deleted file mode 100644 index 50003c8..0000000 --- a/src/main/java/com/kiisoo/ic/wechat/web/CreateWechatController.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.kiisoo.ic.wechat.web; - -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; - -@Controller -@RequestMapping("/wechat") -public class CreateWechatController { - - @RequestMapping("/create") - public void createWechat(@RequestParam("code") String code){ - System.out.println(code) ; - } -} diff --git a/src/main/java/com/kiisoo/ic/wx/constants/Constant.java b/src/main/java/com/kiisoo/ic/wx/constants/Constant.java new file mode 100644 index 0000000..0987bee --- /dev/null +++ b/src/main/java/com/kiisoo/ic/wx/constants/Constant.java @@ -0,0 +1,14 @@ +package com.kiisoo.ic.wx.constants; + +/*** + * 微信相关常量 + */ +public class Constant { + + /**增加企业微信返回状态码*/ + public static String ADD_URL_RETURN_PARAM = "errcode"; + + /**增企业微信成功返回码*/ + public static int ADD_URL_SUCC_CODE = 0; + +} diff --git a/src/main/java/com/kiisoo/ic/wx/controller/CreateWechatController.java b/src/main/java/com/kiisoo/ic/wx/controller/CreateWechatController.java new file mode 100644 index 0000000..11f40b9 --- /dev/null +++ b/src/main/java/com/kiisoo/ic/wx/controller/CreateWechatController.java @@ -0,0 +1,44 @@ +package com.kiisoo.ic.wx.controller; + +import com.alibaba.fastjson.JSON; +import com.kiisoo.ic.common.BaseController; +import com.kiisoo.ic.wx.entity.CreateWXDO; +import com.kiisoo.ic.wx.service.AddWXService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.PostConstruct; +import java.util.HashMap; +import java.util.Map; + +@Controller +@RequestMapping("/wechat") +public class CreateWechatController extends BaseController { + + @RequestMapping("/create") + public void createWechat(@RequestParam("code") String code){ + System.out.println(code) ; + } + + @Autowired + private AddWXService addWXService; + /** + * 登录账号 + * @return 成功/失败 + */ + @RequestMapping(value = "/test",method = RequestMethod.POST) + @ResponseBody + public String loginAccount(@RequestBody CreateWXDO createWXDO){ + Map m = new HashMap<>(); + m.put("errcode",0); + return JSON.toJSONString(m); + } + +// @Scheduled(cron = "59 05 17 * * ?") + public void a(){ + addWXService.addWX("a","b"); + } +} diff --git a/src/main/java/com/kiisoo/ic/wx/entity/CreateWXDO.java b/src/main/java/com/kiisoo/ic/wx/entity/CreateWXDO.java new file mode 100644 index 0000000..bc4b40e --- /dev/null +++ b/src/main/java/com/kiisoo/ic/wx/entity/CreateWXDO.java @@ -0,0 +1,82 @@ +package com.kiisoo.ic.wx.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import lombok.Data; + +/** + * 创建企业微信参数 + */ +@Data +public class CreateWXDO { + + /**调用接口凭证。获取方法查看“获取access_token”*/ + @JSONField(name = "access_token") + private String accessToken; + + /**成员UserID。对应管理端的帐号,企业内必须唯一。不区分大小写,长度为1~64个字节。只能由数字、字母和“_-@.”四种字符组成,且第一个字符必须是数字或字母。*/ + private String userid; + + /**成员名称。长度为1~64个utf8字符*/ + private String name; + + /**成员别名。长度1~32个utf8字符*/ + private String alias; + + /**手机号码。企业内必须唯一,mobile/email二者不能同时为空*/ + private String mobile; + + /**成员所属部门id列表,不超过20个*/ + private long[] department; + + /**部门内的排序值,默认为0,成员次序以创建时间从小到大排列。 + * 数量必须和department一致,数值越大排序越前面。有效的值范围是[0, 2^32)*/ + private int[] order; + + /**职务信息。长度为0~128个字符*/ + private String position; + + /**1表示男性,2表示女性*/ + private int gender; + + /**邮箱。长度6~64个字节,且为有效的email格式。企业内必须唯一,mobile/email二者不能同时为空*/ + private String email; + + /** 座机。32字节以内,由纯数字或’-‘号组成。*/ + private String telephone; + + /**个数必须和department一致,表示在所在的部门内是否为上级。 + * 1表示为上级,0表示非上级。在审批等应用里可以用来标识上级审批人*/ + @JSONField(name = "is_leader_in_dept") + private long[] isLeaderInIept; + + /**成员头像的mediaid,通过素材管理接口上传图片获得的mediaid*/ + @JSONField(name = "avatar_mediaid") + private long avatarMediaid; + + /**启用/禁用成员。1表示启用成员,0表示禁用成员*/ + private int enable; + + /**自定义字段。自定义字段需要先在WEB管理端添加,见扩展属性添加方法,否则忽略未知属性的赋值。 + * 与对外属性一致,不过只支持type=0的文本和type=1的网页类型,详细描述查看对外属性*/ + private String extattr; + + /**是否邀请该成员使用企业微信 + * (将通过微信服务通知或短信或邮件下发邀请,每天自动下发一次,最多持续3个工作日),默认值为true。*/ + @JSONField(name = "to_invite") + private boolean toInvite = true; + + /**成员对外属性,字段详情见对外属性*/ + @JSONField(name = "external_profile") + private String externalProfile; + + /**对外职务,如果设置了该值,则以此作为对外展示的职务,否则以position来展示。长度12个汉字内*/ + @JSONField(name = "external_position") + private String externalPosition; + + /**地址。长度最大128个字符*/ + private String address; + + /**主部门*/ + @JSONField(name = "main_department") + private int mainDepartment; +} diff --git a/src/main/java/com/kiisoo/ic/wx/service/AddWXService.java b/src/main/java/com/kiisoo/ic/wx/service/AddWXService.java new file mode 100644 index 0000000..5ad2c0e --- /dev/null +++ b/src/main/java/com/kiisoo/ic/wx/service/AddWXService.java @@ -0,0 +1,48 @@ +package com.kiisoo.ic.wx.service; + +import com.alibaba.fastjson.JSON; +import com.kiisoo.ic.common.utils.httpClientUtil.HttpClientUtil; +import com.kiisoo.ic.common.utils.httpClientUtil.HttpResult; +import com.kiisoo.ic.employee.entity.PrivilageCpUserDO; +import com.kiisoo.ic.employee.service.EmployeeService; +import com.kiisoo.ic.wx.constants.Constant; +import com.kiisoo.ic.wx.utils.UrlUtil; +import com.kiisoo.ic.wx.entity.CreateWXDO; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * 增加企业微信 + */ +@Service +public class AddWXService { + + @Autowired + private EmployeeService employeeServicel; + String token = "a"; + boolean ifHad = false; + String tock = ""; + /** + * 增加企业微信 + */ + public void addWX(String phone, String name){ + //查看此人是否已经创建过企业微信 + PrivilageCpUserDO privilageCpUserDO = employeeServicel.getUserWX(phone); + //如果已经创建过 + if(privilageCpUserDO == null){ + return; + } + //创建企业微信基础数据 + CreateWXDO createWXDO = new CreateWXDO(); + createWXDO.setUserid(phone); + createWXDO.setName(name); + //未创建,则创建 + HttpResult result = HttpClientUtil.httpPost(UrlUtil.getAddWXUrl(token), JSON.toJSONString(createWXDO), tock); + //是否添加微信成功 + boolean ifAdd = UrlUtil.compHttpResult(result, Constant.ADD_URL_RETURN_PARAM, Constant.ADD_URL_SUCC_CODE); + //如果成功,则添加对应的表信息 +// if(ifAdd){ +// +// } + } +} diff --git a/src/main/java/com/kiisoo/ic/wx/utils/UrlUtil.java b/src/main/java/com/kiisoo/ic/wx/utils/UrlUtil.java new file mode 100644 index 0000000..5137b51 --- /dev/null +++ b/src/main/java/com/kiisoo/ic/wx/utils/UrlUtil.java @@ -0,0 +1,36 @@ +package com.kiisoo.ic.wx.utils; + +import com.alibaba.fastjson.JSONObject; +import com.kiisoo.ic.common.utils.httpClientUtil.HttpResult; + +/** + * 公共变量 + */ +public class UrlUtil { + + /**增加企业微信路径*/ + private static String ADD_WX_URL = "https://qyapi.weixin.qq.com/cgi-bin/user/create"; + + /** + * 获取增加企业微信的url路径 + * @param token + * @return + */ + public static String getAddWXUrl(String token){ + return ADD_WX_URL+token; + } + + /** + * 从返回实体中,找到对应的参数名称值,与期待的值进行对比 + * @param httpResult 返回实体 + * @param resultParam 返回实体参数名称 + * @param compData 期待值 + * @return + */ + public static boolean compHttpResult(HttpResult httpResult, String resultParam, int compData){ + //http返回参数 + String resultEntity = httpResult.getMessage(); + int resultData = JSONObject.parseObject(resultEntity).getInteger(resultParam); + return resultData == compData; + } +}