diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/common/CommonController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/common/CommonController.java index 927e67b6a1aba2c7da0280cc817083327dd38e6c..20472616a09fcf2013cbb25288aeac15252f3d76 100644 --- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/common/CommonController.java +++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/common/CommonController.java @@ -1,8 +1,12 @@ package com.linkwechat.web.controller.common; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import com.linkwechat.common.config.RuoYiConfig; +import com.linkwechat.common.config.ServerConfig; +import com.linkwechat.common.constant.Constants; +import com.linkwechat.common.core.domain.AjaxResult; +import com.linkwechat.common.utils.StringUtils; +import com.linkwechat.common.utils.file.FileUploadUtils; +import com.linkwechat.common.utils.file.FileUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -10,16 +14,9 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; -import com.linkwechat.common.config.RuoYiConfig; -import com.linkwechat.common.constant.Constants; -import com.linkwechat.common.core.domain.AjaxResult; -import com.linkwechat.common.utils.StringUtils; -import com.linkwechat.common.utils.file.FileUploadUtils; -import com.linkwechat.common.utils.file.FileUtils; -import com.linkwechat.framework.config.ServerConfig; -import java.io.*; -import java.util.stream.Stream; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; /** * 通用请求处理 diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/system/SysLoginController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/system/SysLoginController.java index 803c9a1fcb00ea29b57f8e57b33d62948f429cca..efc4e302345b5d636c881d9ae0474d3427d4e9aa 100644 --- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/system/SysLoginController.java +++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/system/SysLoginController.java @@ -2,6 +2,12 @@ package com.linkwechat.web.controller.system; import java.util.List; import java.util.Set; + +import com.linkwechat.wecom.client.WeAccessTokenClient; +import com.linkwechat.wecom.domain.WeCorpAccount; +import com.linkwechat.wecom.domain.dto.WeLoginUserInfoDto; +import com.linkwechat.wecom.service.IWeAccessTokenService; +import com.linkwechat.wecom.service.IWeCorpAccountService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -39,6 +45,14 @@ public class SysLoginController @Autowired private TokenService tokenService; + + @Autowired + private IWeCorpAccountService iWxCorpAccountService; + + + @Autowired + private WeAccessTokenClient weAccessTokenClient; + /** * 登录方法 * @@ -56,6 +70,8 @@ public class SysLoginController return ajax; } + + /** * 获取用户信息 * @@ -70,6 +86,12 @@ public class SysLoginController Set roles = permissionService.getRolePermission(user); // 权限集合 Set permissions = permissionService.getMenuPermission(user); + //校验用户是否拥有可用corpid + WeCorpAccount wxCorpAccount + = iWxCorpAccountService.findValidWeCorpAccount(); + if(null != wxCorpAccount){ + user.setValidCropId(true); + } AjaxResult ajax = AjaxResult.success(); ajax.put("user", user); ajax.put("roles", roles); @@ -91,4 +113,39 @@ public class SysLoginController List menus = menuService.selectMenuTreeByUserId(user.getUserId()); return AjaxResult.success(menuService.buildMenus(menus)); } + + /** + * 获取企业扫码登录相关参数 + * @return + */ + @GetMapping("/findQrLoginParm") + public AjaxResult findQrLoginParm(){ + + WeCorpAccount validWeCorpAccount + = iWxCorpAccountService.findValidWeCorpAccount(); + if(null != validWeCorpAccount){ + validWeCorpAccount.setContactSecret(null); + validWeCorpAccount.setCorpSecret(null); + validWeCorpAccount.setProviderSecret(null); + } + + return AjaxResult.success(validWeCorpAccount); + } + + + + /** + * 扫码登录微信端回调 + * @param auth_code + * @return + */ + @GetMapping("/wxQrLogin") + public AjaxResult wxQrLogin(String auth_code){ + + WeLoginUserInfoDto loginInfo = weAccessTokenClient.getLoginInfo(auth_code); + + System.out.println(auth_code); + + return AjaxResult.success(); + } } diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCorpAccountController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCorpAccountController.java index faf7b6c43c06a45f118250015b4f4906ece5ec8f..17be9619de5d570bfea7b3fa94182fd160f00362 100644 --- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCorpAccountController.java +++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCorpAccountController.java @@ -84,4 +84,7 @@ public class WeCorpAccountController extends BaseController } + + + } diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCustomerController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCustomerController.java index 6fab8b7a20f2191431fdaaaa0c49e71002cb06c2..83d3df7228364c0e3ac98a47f5db777a7e165432 100644 --- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCustomerController.java +++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCustomerController.java @@ -12,6 +12,7 @@ import com.linkwechat.common.utils.poi.ExcelUtil; import com.linkwechat.wecom.domain.vo.WeMakeCustomerTag; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; @@ -86,16 +87,17 @@ public class WeCustomerController extends BaseController -// /** -// * 修改企业微信客户 -// */ -// @PreAuthorize("@ss.hasPermi('wecom:customer:edit')") -// @Log(title = "企业微信客户", businessType = BusinessType.UPDATE) -// @PutMapping -// public AjaxResult edit(@RequestBody WeCustomer weCustomer) -// { -// return toAjax(weCustomerService.updateWeCustomer(weCustomer)); -// } + /** + * 修改企业微信客户 + */ + @PreAuthorize("@ss.hasPermi('wecom:customer:edit')") + @Log(title = "企业微信客户", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@Validated @RequestBody WeCustomer weCustomer) + { + weCustomerService.saveOrUpdate(weCustomer); + return AjaxResult.success(); + } /** diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeDepartmentController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeDepartmentController.java index 6454829034c38434759c1bf302555c14d03c0cbe..1f5c2ee70cd9586de6d2b66f28b1ba3ef44b2d22 100644 --- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeDepartmentController.java +++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeDepartmentController.java @@ -70,15 +70,18 @@ public class WeDepartmentController extends BaseController return AjaxResult.success(); } -// /** -// * 删除企业微信组织架构相关 -// */ -// @PreAuthorize("@ss.hasPermi('wecom:department:remove')") -// @Log(title = "企业微信组织架构相关", businessType = BusinessType.DELETE) -// @DeleteMapping("/{ids}") -// public AjaxResult remove(@PathVariable String[] ids) -// { -// return toAjax(weDepartmentService.deleteWeDepartmentByIds(ids)); -// } + /** + * 删除企业微信组织架构相关 + */ + @PreAuthorize("@ss.hasPermi('wecom:department:remove')") + @Log(title = "企业微信组织架构相关", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable String[] ids) + { + + weDepartmentService.deleteWeDepartmentByIds(ids); + + return AjaxResult.success(); + } } diff --git a/linkwe-admin/src/main/resources/application.yml b/linkwe-admin/src/main/resources/application.yml index af5950e96d00c957c509a4096f4df8204e9885ac..21d9b656237d93aae9aa7e9a1dddfa260f6e4e19 100644 --- a/linkwe-admin/src/main/resources/application.yml +++ b/linkwe-admin/src/main/resources/application.yml @@ -14,6 +14,8 @@ ruoyi: addressEnabled: false # 验证码类型 math 数组计算 char 字符验证 captchaType: math + # 企业微信用户首次登录系统默认密码 + weUserDefaultPwd: 123456 # 开发环境配置 server: @@ -90,6 +92,8 @@ mybatis-plus: mapper-locations: classpath*:mapper/**/*Mapper.xml type-aliases-package: com.linkwechat.**.domain type-handlers-package: com.linkwechat.framework.handler.** + configuration: + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl ## MyBatis配置 #mybatis: @@ -132,7 +136,9 @@ forest: wecome: serverUrl: https://qyapi.weixin.qq.com/ weComePrefix: cgi-bin - noAccessTokenUrl: /gettoken + noAccessTokenUrl: + - /gettoken + - /service/get_provider_token needContactTokenUrl: - /externalcontact/get_follow_user_list - /externalcontact/add_contact_way @@ -149,3 +155,6 @@ wecome: - /externalcontact/groupchat/transfer - /externalcontact/get_unassigned_list fileUplodUrl: /media/upload,/media/uploadimg + needProviderTokenUrl: + - /service/get_login_info + diff --git a/linkwe-common/src/main/java/com/linkwechat/common/config/RuoYiConfig.java b/linkwe-common/src/main/java/com/linkwechat/common/config/RuoYiConfig.java index 1a1a2fc1e992a6d7fd044c36194040c71dbfadac..480e09dc2c873867ccf1a482f87b8dfcf60510a4 100644 --- a/linkwe-common/src/main/java/com/linkwechat/common/config/RuoYiConfig.java +++ b/linkwe-common/src/main/java/com/linkwechat/common/config/RuoYiConfig.java @@ -30,6 +30,9 @@ public class RuoYiConfig /** 获取地址开关 */ private static boolean addressEnabled; + /** 企业微信账号登录系统默认密码 */ + private static String weUserDefaultPwd="123456"; + public String getName() { return name; @@ -113,4 +116,12 @@ public class RuoYiConfig { return getProfile() + "/upload"; } + + public String getWeUserDefaultPwd() { + return weUserDefaultPwd; + } + + public void setWeUserDefaultPwd(String weUserDefaultPwd) { + RuoYiConfig.weUserDefaultPwd = weUserDefaultPwd; + } } diff --git a/linkwe-framework/src/main/java/com/linkwechat/framework/config/ServerConfig.java b/linkwe-common/src/main/java/com/linkwechat/common/config/ServerConfig.java similarity index 88% rename from linkwe-framework/src/main/java/com/linkwechat/framework/config/ServerConfig.java rename to linkwe-common/src/main/java/com/linkwechat/common/config/ServerConfig.java index 0396e91f0e820d62ccdbd05ef367fec235a54613..26b0a03a7779894bd56252528d0579b46e73723a 100644 --- a/linkwe-framework/src/main/java/com/linkwechat/framework/config/ServerConfig.java +++ b/linkwe-common/src/main/java/com/linkwechat/common/config/ServerConfig.java @@ -1,12 +1,9 @@ -package com.linkwechat.framework.config; +package com.linkwechat.common.config; -import javax.servlet.http.HttpServletRequest; - -import com.google.common.collect.Lists; -import org.springframework.stereotype.Component; import com.linkwechat.common.utils.ServletUtils; +import org.springframework.stereotype.Component; -import java.util.List; +import javax.servlet.http.HttpServletRequest; /** * 服务相关配置 diff --git a/linkwe-common/src/main/java/com/linkwechat/common/config/WeComeConfig.java b/linkwe-common/src/main/java/com/linkwechat/common/config/WeComeConfig.java index afca633f75acfa91aa5727f9fc946390d947e95b..1cdc6fb9e88b09305bbcdc2d4be417a7f44ea361 100644 --- a/linkwe-common/src/main/java/com/linkwechat/common/config/WeComeConfig.java +++ b/linkwe-common/src/main/java/com/linkwechat/common/config/WeComeConfig.java @@ -20,11 +20,14 @@ public class WeComeConfig { private String weComePrefix; /** 企业微信端无需token的url */ - private String noAccessTokenUrl; + private String[] noAccessTokenUrl; /** 需要使用外部联系人token的url*/ private String[] needContactTokenUrl; /** 文件上传url*/ private String[] fileUplodUrl; + + /** 需要供应商token的url*/ + private String[] needProviderTokenUrl; } diff --git a/linkwe-common/src/main/java/com/linkwechat/common/constant/Constants.java b/linkwe-common/src/main/java/com/linkwechat/common/constant/Constants.java index b1e13337b0d37e8557057ff05a42adc7587fa408..1c7d4f913cd8203969f5d211bc78497e5e2efa61 100644 --- a/linkwe-common/src/main/java/com/linkwechat/common/constant/Constants.java +++ b/linkwe-common/src/main/java/com/linkwechat/common/constant/Constants.java @@ -87,6 +87,7 @@ public class Constants */ public static final String LOGIN_USER_KEY = "login_user_key"; + /** * 用户ID */ @@ -143,6 +144,16 @@ public class Constants public static final Integer SERVICE_RETURN_SUCCESS_CODE=0; + /** 系统用户 */ + public static final String USER_TYPE_SYS="00"; + + /** 企业微信用户 */ + public static final String USER_TYPE_WECOME="11"; + + + /** 企业微信用户系统中默认用户 */ + public static final String DEFAULT_WECOME_ROLE_KEY="WeCome"; + } diff --git a/linkwe-common/src/main/java/com/linkwechat/common/constant/WeConstans.java b/linkwe-common/src/main/java/com/linkwechat/common/constant/WeConstans.java index e735681f54dae87976de014c77b0dcd552e3fc51..3653e47c258f4e3302a852ac0fd61a2736dfb4eb 100644 --- a/linkwe-common/src/main/java/com/linkwechat/common/constant/WeConstans.java +++ b/linkwe-common/src/main/java/com/linkwechat/common/constant/WeConstans.java @@ -19,6 +19,12 @@ public class WeConstans { public static final String WE_CONTACT_ACCESS_TOKEN = "we_contact_access_token"; + /** + * 供应商相关token + */ + public static final String WE_PROVIDER_ACCESS_TOKEN = "we_provider_access_token"; + + /** * 企业微信接口返回成功code */ diff --git a/linkwe-common/src/main/java/com/linkwechat/common/core/domain/entity/SysRole.java b/linkwe-common/src/main/java/com/linkwechat/common/core/domain/entity/SysRole.java index 16756bf68671b1934ae1dbba2333bbc41b30e845..bfe6c4aaffa4025fabe77fa6c180c5fe981008bd 100644 --- a/linkwe-common/src/main/java/com/linkwechat/common/core/domain/entity/SysRole.java +++ b/linkwe-common/src/main/java/com/linkwechat/common/core/domain/entity/SysRole.java @@ -1,18 +1,23 @@ package com.linkwechat.common.core.domain.entity; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.Size; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; import com.linkwechat.common.annotation.Excel; import com.linkwechat.common.annotation.Excel.ColumnType; import com.linkwechat.common.core.domain.BaseEntity; +import lombok.AllArgsConstructor; +import lombok.Builder; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Size; /** * 角色表 sys_role * * @author ruoyi */ +@Builder +@AllArgsConstructor public class SysRole extends BaseEntity { private static final long serialVersionUID = 1L; diff --git a/linkwe-common/src/main/java/com/linkwechat/common/core/domain/entity/SysUser.java b/linkwe-common/src/main/java/com/linkwechat/common/core/domain/entity/SysUser.java index 6ee095912fba93816f7c6d5e0836fc8b2078a234..b67cfce9a6616f66d7274a2bdc4749f68afa89de 100644 --- a/linkwe-common/src/main/java/com/linkwechat/common/core/domain/entity/SysUser.java +++ b/linkwe-common/src/main/java/com/linkwechat/common/core/domain/entity/SysUser.java @@ -1,12 +1,5 @@ package com.linkwechat.common.core.domain.entity; -import java.util.Date; -import java.util.List; -import javax.validation.constraints.Email; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.Size; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; import com.linkwechat.common.annotation.Excel; @@ -14,12 +7,26 @@ import com.linkwechat.common.annotation.Excel.ColumnType; import com.linkwechat.common.annotation.Excel.Type; import com.linkwechat.common.annotation.Excels; import com.linkwechat.common.core.domain.BaseEntity; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +import javax.validation.constraints.Email; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Size; +import java.util.Date; +import java.util.List; /** * 用户对象 sys_user * * @author ruoyi */ +@Data +@Builder +@AllArgsConstructor public class SysUser extends BaseEntity { private static final long serialVersionUID = 1L; @@ -40,6 +47,9 @@ public class SysUser extends BaseEntity @Excel(name = "用户名称") private String nickName; + /** 用户类型(00系统用户)(11:企业微信用户) */ + private String userType; + /** 用户邮箱 */ @Excel(name = "用户邮箱") private String email; @@ -92,6 +102,9 @@ public class SysUser extends BaseEntity /** 岗位组 */ private Long[] postIds; + /** 是否具有有效得cropId */ + private boolean validCropId=false; + public SysUser() { diff --git a/linkwe-framework/pom.xml b/linkwe-framework/pom.xml index 4cb008344f05e7e04b2933ac998bd457a84cf757..54e9a4d1cb5bd931bc9d36b4dcc1ad0c43f995a6 100644 --- a/linkwe-framework/pom.xml +++ b/linkwe-framework/pom.xml @@ -69,6 +69,14 @@ linkwe-system + + + com.linkwechat + linkwe-wecom + + + + \ No newline at end of file diff --git a/linkwe-framework/src/main/java/com/linkwechat/framework/config/SecurityConfig.java b/linkwe-framework/src/main/java/com/linkwechat/framework/config/SecurityConfig.java index 181ab4d6a2d7056c41977a895208ba55fa47f6b2..b99bd32da3fc1a9dd5868f1784e5d678eeab35a3 100644 --- a/linkwe-framework/src/main/java/com/linkwechat/framework/config/SecurityConfig.java +++ b/linkwe-framework/src/main/java/com/linkwechat/framework/config/SecurityConfig.java @@ -97,7 +97,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter // 过滤请求 .authorizeRequests() // 对于登录login 验证码captchaImage 允许匿名访问 - .antMatchers("/login", "/captchaImage").anonymous() + .antMatchers("/login", "/captchaImage","/findQrLoginParm","/wxQrLogin").anonymous() .antMatchers( HttpMethod.GET, "/*.html", diff --git a/linkwe-framework/src/main/java/com/linkwechat/framework/web/service/UserDetailsServiceImpl.java b/linkwe-framework/src/main/java/com/linkwechat/framework/web/service/UserDetailsServiceImpl.java index 2028fa4f299f2c20e3772ffcfd78d2c5aa313f9f..ac46948e4b768edc0aab88796ed4bb8269f801de 100644 --- a/linkwe-framework/src/main/java/com/linkwechat/framework/web/service/UserDetailsServiceImpl.java +++ b/linkwe-framework/src/main/java/com/linkwechat/framework/web/service/UserDetailsServiceImpl.java @@ -1,5 +1,16 @@ package com.linkwechat.framework.web.service; +import cn.hutool.core.util.ArrayUtil; +import com.linkwechat.common.config.RuoYiConfig; +import com.linkwechat.common.constant.Constants; +import com.linkwechat.common.core.domain.entity.SysRole; +import com.linkwechat.common.utils.SecurityUtils; +import com.linkwechat.system.mapper.SysRoleMapper; +import com.linkwechat.system.service.ISysRoleService; +import com.linkwechat.wecom.domain.WeCorpAccount; +import com.linkwechat.wecom.domain.WeUser; +import com.linkwechat.wecom.service.IWeCorpAccountService; +import com.linkwechat.wecom.service.IWeUserService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -14,6 +25,9 @@ import com.linkwechat.common.exception.BaseException; import com.linkwechat.common.utils.StringUtils; import com.linkwechat.system.service.ISysUserService; +import java.util.List; +import java.util.stream.Collectors; + /** * 用户验证处理 * @@ -30,14 +44,49 @@ public class UserDetailsServiceImpl implements UserDetailsService @Autowired private SysPermissionService permissionService; + @Autowired + private IWeUserService iWeUserService; + + + @Autowired + private RuoYiConfig ruoYiConfig; + + @Autowired + private SysRoleMapper roleMapper; + + @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { SysUser user = userService.selectUserByUserName(username); if (StringUtils.isNull(user)) { - log.info("登录用户:{} 不存在.", username); - throw new UsernameNotFoundException("登录用户:" + username + " 不存在"); + //we_user表中去查询,如果该表为空则提示用户不存在,如果不为空,则将用户记录注册到系统用户表中 + WeUser weUser + = iWeUserService.getById(username); + if(null == weUser){ + log.info("登录用户:{} 不存在.", username); + throw new UsernameNotFoundException("登录用户:" + username + " 不存在"); + } + + //注册到we_user表中 + user=SysUser.builder() + .userName(weUser.getUserId()) + .nickName(weUser.getName()) + .userType(Constants.USER_TYPE_WECOME) + .email(weUser.getEmail()) + .phonenumber(weUser.getMobile()) + .sex(weUser.getGender().toString()) + .avatar(weUser.getAvatarMediaid()) + .roleIds(ArrayUtil.toArray(roleMapper.selectRoleList(SysRole.builder() + .roleKey(Constants.DEFAULT_WECOME_ROLE_KEY) + .build()).stream().map(SysRole::getRoleId).collect(Collectors.toList()), Long.class)) + .password(SecurityUtils.encryptPassword(ruoYiConfig.getWeUserDefaultPwd())) + .build(); + + userService.insertUser( + user + ); } else if (UserStatus.DELETED.getCode().equals(user.getDelFlag())) { @@ -50,6 +99,9 @@ public class UserDetailsServiceImpl implements UserDetailsService throw new BaseException("对不起,您的账号:" + username + " 已停用"); } + + + return createLoginUser(user); } diff --git a/linkwe-system/src/main/resources/mapper/system/SysRoleMapper.xml b/linkwe-system/src/main/resources/mapper/system/SysRoleMapper.xml index e7a178f9ead7e34646269c43c884434b8e4d29dd..8d8395007424f0053f00088aefe5ebb03c989b4c 100644 --- a/linkwe-system/src/main/resources/mapper/system/SysRoleMapper.xml +++ b/linkwe-system/src/main/resources/mapper/system/SysRoleMapper.xml @@ -38,7 +38,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND r.status = #{status} - AND r.role_key like concat('%', #{roleKey}, '%') + AND r.role_key = #{roleKey} and date_format(r.create_time,'%y%m%d') >= date_format(#{beginTime},'%y%m%d') diff --git a/linkwe-system/src/main/resources/mapper/system/SysUserMapper.xml b/linkwe-system/src/main/resources/mapper/system/SysUserMapper.xml index e05f8133c19c80585f2e22da6d7ca89f0686360c..2ee08e38988ab22b8f964e79dbb96fdfd63e120b 100644 --- a/linkwe-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/linkwe-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -117,6 +117,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" status, create_by, remark, + user_type, create_time )values( #{userId}, @@ -131,6 +132,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{status}, #{createBy}, #{remark}, + #{userType}, sysdate() ) diff --git a/linkwe-wecom/pom.xml b/linkwe-wecom/pom.xml index 59d4ef2f983aa3a320e316469bd066e017b88379..d0df0e833daead80d34bbda1f52a7958d7187252 100644 --- a/linkwe-wecom/pom.xml +++ b/linkwe-wecom/pom.xml @@ -22,10 +22,6 @@ com.linkwechat linkwe-common - - com.linkwechat - linkwe-framework - diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/client/WeAccessTokenClient.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/client/WeAccessTokenClient.java index 451ed6d306322fcbc10a807905bdfcb430b888b3..2a3e6ec371bbdceb70e5c3cc84469396c28c1997 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/client/WeAccessTokenClient.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/client/WeAccessTokenClient.java @@ -1,8 +1,10 @@ package com.linkwechat.wecom.client; +import com.dtflys.forest.annotation.Body; import com.dtflys.forest.annotation.Query; import com.dtflys.forest.annotation.Request; import com.linkwechat.wecom.domain.dto.WeAccessTokenDtoDto; +import com.linkwechat.wecom.domain.dto.WeLoginUserInfoDto; /** * @description: 获取企业微信Token相关 @@ -14,7 +16,7 @@ public interface WeAccessTokenClient { /** - * 获取token + * 获取token(常用token,联系人token) * @param corpId 企业id * @param corpSecret 应用的凭证密钥 * @return @@ -22,4 +24,26 @@ public interface WeAccessTokenClient { @Request(url = "/gettoken") WeAccessTokenDtoDto getToken(@Query("corpid") String corpId, @Query("corpsecret") String corpSecret); + + /** + * 获取供应商token + * @param corpid 服务商的corpid + * @param provider_secret 服务商的secret,在服务商管理后台可见 + * @return + */ + @Request(url = "/service/get_provider_token", + type="POST") + WeAccessTokenDtoDto getProviderToken(@Body("corpid") String corpid,@Body("provider_secret") String provider_secret); + + + /** + * 获取登录用户信息(扫码) + * @param auth_code + * @return + */ + @Request(url = "/service/get_login_info", + type = "POST" + ) + WeLoginUserInfoDto getLoginInfo(@Body("auth_code") String auth_code); + } \ No newline at end of file diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCorpAccount.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCorpAccount.java index f9ffb6e027ceb7d6e32fe235ecd17f4b54d023f3..d3962521a09699bdd62f0592d714694bb6e3b9ba 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCorpAccount.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCorpAccount.java @@ -58,5 +58,12 @@ public class WeCorpAccount extends BaseEntity @NotBlank(message = "外部联系人密钥凭证不能为空") private String contactSecret; + @ApiModelProperty("应用id") + private String agentId; + + + @ApiModelProperty("服务商密钥") + private String providerSecret; + } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomer.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomer.java index 01ef177cc8a05fed6a59d888cc4b14e04fa56045..97f1f2132f375b54746cf62bd45ede41a1dee84c 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomer.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomer.java @@ -16,6 +16,8 @@ import lombok.NoArgsConstructor; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; +import javax.validation.constraints.NotBlank; + /** * 企业微信客户对象 we_customer * @@ -34,6 +36,7 @@ public class WeCustomer /** 外部联系人的userid */ @TableId + @NotBlank(message = "外部联系人的id不可为空") private String externalUserid; /** 外部联系人名称 */ diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/WeAccessTokenDtoDto.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/WeAccessTokenDtoDto.java index ea24c51f8be7909ab8b54480406474d7b77e7a02..16482ce00015704a865be4385ad35bc9ef3fbd32 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/WeAccessTokenDtoDto.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/WeAccessTokenDtoDto.java @@ -11,4 +11,5 @@ import lombok.Data; public class WeAccessTokenDtoDto extends WeResultDto { private String access_token; private Long expires_in; + private String provider_access_token; } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/WeLoginUserInfoDto.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/WeLoginUserInfoDto.java new file mode 100644 index 0000000000000000000000000000000000000000..33bd80f3e6f0799ec8e19ecc80df341d54871205 --- /dev/null +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/WeLoginUserInfoDto.java @@ -0,0 +1,22 @@ +package com.linkwechat.wecom.domain.dto; + +import lombok.Data; + +/** + * @description: 登录用户 + * @author: HaoN + * @create: 2020-11-01 20:58 + **/ +@Data +public class WeLoginUserInfoDto extends WeResultDto{ + private Integer usertype; + + private UserInfo user_info; + + @Data + public class UserInfo{ + private String userid; + private String name; + private String avatar; + } +} diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/interceptor/WeAccessTokenInterceptor.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/interceptor/WeAccessTokenInterceptor.java index 3a1f21785a0c0860f66fe4cb9efbd704645014b1..2f642a7aba548fa5e90eb2fb0d4d27549cf514c5 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/interceptor/WeAccessTokenInterceptor.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/interceptor/WeAccessTokenInterceptor.java @@ -2,16 +2,12 @@ package com.linkwechat.wecom.interceptor; import cn.hutool.json.JSONUtil; import com.dtflys.forest.exceptions.ForestRuntimeException; -import com.dtflys.forest.http.ForestHeader; import com.dtflys.forest.http.ForestRequest; import com.dtflys.forest.http.ForestResponse; import com.dtflys.forest.interceptor.Interceptor; import com.dtflys.forest.utils.ForestDataType; -import com.linkwechat.common.annotation.Log; import com.linkwechat.common.config.WeComeConfig; import com.linkwechat.common.constant.WeConstans; -import com.linkwechat.common.exception.wecom.WeComException; -import com.linkwechat.framework.web.domain.server.Sys; import com.linkwechat.wecom.domain.dto.WeResultDto; import com.linkwechat.wecom.service.IWeAccessTokenService; import org.springframework.beans.factory.annotation.Autowired; @@ -56,13 +52,21 @@ public class WeAccessTokenInterceptor implements Interceptor{ // 添加请求参数access_token - if(!weComeConfig.getNoAccessTokenUrl().equals(uri)){ - request.addQuery("access_token", - Arrays.asList(weComeConfig.getNeedContactTokenUrl()).contains(uri)? - iWeAccessTokenService.findContactAccessToken(): - iWeAccessTokenService.findCommonAccessToken()); + if(!Arrays.asList(weComeConfig.getNoAccessTokenUrl()).contains(uri)){ + String token=""; + + if(Arrays.asList(weComeConfig.getNeedContactTokenUrl()).contains(uri)){ //需要联系人token + token=iWeAccessTokenService.findContactAccessToken(); + }else if(Arrays.asList(weComeConfig.getNeedProviderTokenUrl()).contains(uri)){ //需要供应商token + token=iWeAccessTokenService.findProviderAccessToken(); + }else{ + token=iWeAccessTokenService.findCommonAccessToken(); + } + + request.addQuery("access_token",token); } + //添加服务器统一请求地址 request.setUrl(weComeConfig.getServerUrl()+weComeConfig.getWeComePrefix()+uri); diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeAccessTokenService.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeAccessTokenService.java index 34fcdc9c9d6acb1c664ef5206792453f9a28c0ca..b8c61db1e7c90221deef9b8a8503e125fae6cde7 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeAccessTokenService.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeAccessTokenService.java @@ -11,4 +11,7 @@ public interface IWeAccessTokenService { public String findContactAccessToken(); + + + public String findProviderAccessToken(); } \ No newline at end of file diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeDepartmentService.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeDepartmentService.java index 03d269582c34ed9b3856a3319704e2483930e028..5dbb8c9f816a7ae29cf9849862e2ea3a2e2e6c2d 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeDepartmentService.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeDepartmentService.java @@ -47,9 +47,9 @@ public interface IWeDepartmentService extends IService public List synchWeDepartment(); -// /** -// * 根据部门id删除部门 -// * @param ids -// */ -// public void deleteWeDepartmentByIds(String[] ids); + /** + * 根据部门id删除部门 + * @param ids + */ + public void deleteWeDepartmentByIds(String[] ids); } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeAccessTokenServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeAccessTokenServiceImpl.java index 211ce64e7adad729fb96394c9aa2629bae746dbc..5020cb09913c8c136d88a86e2729e8428f3914f7 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeAccessTokenServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeAccessTokenServiceImpl.java @@ -58,6 +58,16 @@ public class WeAccessTokenServiceImpl implements IWeAccessTokenService { } + /** + * 获取服务商相关token + * @return + */ + @Override + public String findProviderAccessToken() { + return findAccessToken(WeConstans.WE_PROVIDER_ACCESS_TOKEN); + } + + private String findAccessToken(String accessTokenKey){ String weAccessToken =redisCache.getCacheObject(accessTokenKey); @@ -70,15 +80,24 @@ public class WeAccessTokenServiceImpl implements IWeAccessTokenService { //返回错误异常,让用户绑定企业id相关信息 throw new WeComException("无可用的corpid和secret"); } + String token=""; + Long expires_in=null; + if(WeConstans.WE_COMMON_ACCESS_TOKEN.equals(accessTokenKey) || WeConstans.WE_CONTACT_ACCESS_TOKEN.equals(accessTokenKey)){ + WeAccessTokenDtoDto weAccessTokenDtoDto = accessTokenClient.getToken(wxCorpAccount.getCorpId(), + WeConstans.WE_COMMON_ACCESS_TOKEN.equals(accessTokenKey) ? wxCorpAccount.getCorpSecret() : wxCorpAccount.getContactSecret()); + token=weAccessTokenDtoDto.getAccess_token(); + expires_in=weAccessTokenDtoDto.getExpires_in(); + + }else if(WeConstans.WE_PROVIDER_ACCESS_TOKEN.equals(accessTokenKey)){ + WeAccessTokenDtoDto providerToken = accessTokenClient.getProviderToken(wxCorpAccount.getCorpId(), wxCorpAccount.getProviderSecret()); + token=providerToken.getProvider_access_token(); + expires_in=providerToken.getExpires_in(); + } - WeAccessTokenDtoDto accessToken - = accessTokenClient.getToken(wxCorpAccount.getCorpId(), - WeConstans.WE_COMMON_ACCESS_TOKEN.equals(accessTokenKey)? wxCorpAccount.getCorpSecret():wxCorpAccount.getContactSecret()); - - if(accessToken.getErrcode().equals(WeConstans.WE_SUCCESS_CODE)){ - redisCache.setCacheObject(accessTokenKey,accessToken.getAccess_token(),accessToken.getExpires_in().intValue(), TimeUnit.SECONDS); - weAccessToken=accessToken.getAccess_token(); + if(StringUtils.isNotEmpty(token)){ + redisCache.setCacheObject(accessTokenKey,token,expires_in.intValue(), TimeUnit.SECONDS); } + } return weAccessToken; diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCustomerServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCustomerServiceImpl.java index 04a9232628823b3e87280e4b15fc5c6803de16a1..46f9e93997a3e29dedcd26cca167e93ececc5b0f 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCustomerServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCustomerServiceImpl.java @@ -3,20 +3,16 @@ package com.linkwechat.wecom.service.impl; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ArrayUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.linkwechat.common.constant.WeConstans; -import com.linkwechat.common.utils.DateUtils; import com.linkwechat.common.utils.SecurityUtils; import com.linkwechat.common.utils.SnowFlakeUtil; import com.linkwechat.common.utils.bean.BeanUtils; -import com.linkwechat.framework.web.domain.server.Sys; import com.linkwechat.wecom.client.WeCropTagClient; import com.linkwechat.wecom.client.WeCustomerClient; import com.linkwechat.wecom.client.WeUserClient; import com.linkwechat.wecom.domain.*; import com.linkwechat.wecom.domain.dto.AllocateWeCustomerDto; -import com.linkwechat.wecom.domain.dto.WeResultDto; import com.linkwechat.wecom.domain.dto.customer.*; import com.linkwechat.wecom.domain.dto.tag.WeCropGroupTagDto; import com.linkwechat.wecom.domain.dto.tag.WeCropGroupTagListDto; diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeDepartmentServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeDepartmentServiceImpl.java index fe0ffeb40bfcd83d58f28d411fc07d830d0f667c..a1f7fa1bb8ba9543157da2e44f4c2efb0901abb3 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeDepartmentServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeDepartmentServiceImpl.java @@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.linkwechat.common.constant.HttpStatus; import com.linkwechat.common.constant.WeConstans; +import com.linkwechat.common.enums.WeExceptionTip; +import com.linkwechat.common.exception.CustomException; import com.linkwechat.common.exception.wecom.WeComException; import com.linkwechat.common.utils.SnowFlakeUtil; import com.linkwechat.common.utils.bean.BeanUtils; @@ -35,8 +37,7 @@ import java.util.List; @Service public class WeDepartmentServiceImpl extends ServiceImpl implements IWeDepartmentService { - @Autowired - private WeDepartmentMapper weDepartmentMapper; + @Autowired @@ -49,6 +50,9 @@ public class WeDepartmentServiceImpl extends ServiceImplitem.getId().equals(WeConstans.WE_ROOT_DEPARMENT_ID)).findFirst().get() ) @@ -73,7 +77,7 @@ public class WeDepartmentServiceImpl extends ServiceImpl weDepartments = this.list(new LambdaQueryWrapper() -// .in(WeDepartment::getParentId, ids)); -// if(CollectionUtil.isNotEmpty(weDepartments)) { -// //抛出异常,请删除此部门下的成员或子部门后,再删除此部门 -// -// } -// -// -// List weUsers = weUserService.selectWeUserList(WeUser.builder() -// .department(ids) -// .build()); -// if(CollectionUtil.isNotEmpty(weUsers)){ -// //该部门存在子部门或成员无法删除 -// -// } -// -// -// -// } + /** + * 根据部门id删除部门 + * @param ids + */ + @Override + public void deleteWeDepartmentByIds(String[] ids) { + + //查询当前部门下所有的子部门,如果存在,则不可以删除 + List weDepartments = this.list(new LambdaQueryWrapper() + .in(WeDepartment::getParentId, ids)); + if(CollectionUtil.isNotEmpty(weDepartments)) { + //抛出异常,请删除此部门下的成员或子部门后,再删除此部门 + throw new CustomException(WeExceptionTip.WE_EXCEPTION_TIP_60006.getTipMsg(),WeExceptionTip.WE_EXCEPTION_TIP_60006.getCode()); + } + + List weUsers = weUserService.selectWeUserList(WeUser.builder() + .department(ids) + .build()); + if(CollectionUtil.isNotEmpty(weUsers)){ + //该部门存在成员无法删除 + throw new CustomException(WeExceptionTip.WE_EXCEPTION_TIP_60005.getTipMsg(),WeExceptionTip.WE_EXCEPTION_TIP_60005.getCode()); + } + + //删除数据库中数据 + if(this.removeByIds(ListUtil.toList(ids))){ + + ListUtil.toList(ids).stream().forEach(k->{ + //移除微信端 + weDepartMentClient.deleteWeDepartMent(k); + + }); + + } + + } } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeMaterialServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeMaterialServiceImpl.java index 7e1bb9fad1e9aa3774f353a51d02be14cb1eb422..9fe67a2a24835722529dc69a14db439498aa192a 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeMaterialServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeMaterialServiceImpl.java @@ -1,14 +1,11 @@ package com.linkwechat.wecom.service.impl; import com.linkwechat.common.config.RuoYiConfig; -import com.linkwechat.common.constant.WeConstans; +import com.linkwechat.common.config.ServerConfig; import com.linkwechat.common.enums.MediaType; import com.linkwechat.common.exception.wecom.WeComException; import com.linkwechat.common.utils.file.FileUploadUtils; -import com.linkwechat.framework.config.ServerConfig; -import com.linkwechat.wecom.client.WeMediaClient; import com.linkwechat.wecom.domain.WeMaterial; -import com.linkwechat.wecom.domain.dto.WeMediaDto; import com.linkwechat.wecom.domain.vo.WeMaterialFileVO; import com.linkwechat.wecom.mapper.WeMaterialMapper; import com.linkwechat.wecom.service.IWeMaterialService; diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeUserServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeUserServiceImpl.java index f8fe74012bce1975528a6e66fba3a445c39075a9..453d1593c9e28a348c5cd6bff964cecfad3447c0 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeUserServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeUserServiceImpl.java @@ -2,18 +2,10 @@ package com.linkwechat.wecom.service.impl; import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.linkwechat.common.constant.Constants; import com.linkwechat.common.constant.WeConstans; import com.linkwechat.common.exception.wecom.WeComException; -import com.linkwechat.framework.web.domain.server.Sys; -import com.linkwechat.wecom.client.WeDepartMentClient; import com.linkwechat.wecom.client.WeUserClient; -import com.linkwechat.wecom.domain.WeDepartment; import com.linkwechat.wecom.domain.WeUser; -import com.linkwechat.wecom.domain.dto.LeaveWeUserListsDto; -import com.linkwechat.wecom.domain.dto.WeDepartMentDto; -import com.linkwechat.wecom.domain.dto.WeUserDto; -import com.linkwechat.wecom.domain.dto.WeUserListDto; import com.linkwechat.wecom.domain.vo.WeAllocateCustomersVo; import com.linkwechat.wecom.domain.vo.WeAllocateGroupsVo; import com.linkwechat.wecom.domain.vo.WeLeaveUserInfoAllocateVo; @@ -25,8 +17,6 @@ import com.linkwechat.wecom.service.IWeGroupService; import com.linkwechat.wecom.service.IWeUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Isolation; -import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; diff --git a/linkwe-wecom/src/main/resources/mapper/wecom/WeCorpAccountMapper.xml b/linkwe-wecom/src/main/resources/mapper/wecom/WeCorpAccountMapper.xml index 156f473f328c87a24bbc723f2b50a44159c3fbee..ed84728e924f30ace1a61c1b0123994188a8e46d 100644 --- a/linkwe-wecom/src/main/resources/mapper/wecom/WeCorpAccountMapper.xml +++ b/linkwe-wecom/src/main/resources/mapper/wecom/WeCorpAccountMapper.xml @@ -16,10 +16,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + - select id, company_name, corp_id, corp_secret, status, del_flag, create_by, create_time, update_by, update_time,contact_secret from we_corp_account + select id,provider_secret,company_name, corp_id, corp_secret,agent_id ,status, del_flag, create_by, create_time, update_by, update_time,contact_secret from we_corp_account SELECT - wu.user_id, - wu.user_name, - wu.dimission_time, - (SELECT GROUP_CONCAT(wd.`name`) FROM we_department wd WHERE wd.id=wu.department) as department, - (SELECT COUNT(*) FROM we_flower_customer_rel wfcr WHERE wfcr.user_id=wu.user_id) as allocateCustomerNum, - (SELECT COUNT(*) FROM we_group wg WHERE wg.`owner`=wu.user_id) as allocateGroupNum + * FROM - we_user wu - - and wu.user_name=#{userName} - - DATE_FORMAT(wu.dimission_time,'%Y-%m-%d') BETWEEN #{beginTime} AND #{endTime} - - and wu.is_activate = #{isActivate} - and wu.is_allocate = #{isAllocate} - + ( + SELECT + wu.user_id, + wu.user_name, + wu.dimission_time, + (SELECT GROUP_CONCAT(wd.`name`) FROM we_department wd WHERE wd.id=wu.department) as department, + (SELECT COUNT(*) FROM we_flower_customer_rel wfcr WHERE wfcr.user_id=wu.user_id) as allocateCustomerNum, + (SELECT COUNT(*) FROM we_group wg WHERE wg.`owner`=wu.user_id) as allocateGroupNum + FROM + we_user wu + + and wu.user_name=#{userName} + + DATE_FORMAT(wu.dimission_time,'%Y-%m-%d') BETWEEN #{beginTime} AND #{endTime} + + and wu.is_activate = #{isActivate} + and wu.is_allocate = #{isAllocate} + + )wuu WHERE allocateCustomerNum >0 and allocateGroupNum>0