Browse Source

Merge remote-tracking branch 'remotes/origin/dev_dingding' into 烟台master

# Conflicts:
#	epmet-module/epmet-third/epmet-third-server/src/main/test/java/com/epmet/ThirdPlatformTest.java
dev
jianjun 3 years ago
parent
commit
7e09293a15
  1. 79
      epmet-auth/src/main/java/com/epmet/controller/DingdingLoginController.java
  2. 21
      epmet-auth/src/main/java/com/epmet/controller/ThirdLoginController.java
  3. 2
      epmet-auth/src/main/java/com/epmet/dto/form/DingAppLoginMdFormDTO.java
  4. 8
      epmet-auth/src/main/java/com/epmet/service/GovWebService.java
  5. 11
      epmet-auth/src/main/java/com/epmet/service/ThirdLoginService.java
  6. 27
      epmet-auth/src/main/java/com/epmet/service/impl/GovWebServiceImpl.java
  7. 36
      epmet-auth/src/main/java/com/epmet/service/impl/ThirdLoginServiceImpl.java
  8. 71
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/DingMiniInfoController.java
  9. 16
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/DingMiniInfoDao.java
  10. 55
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/DingMiniInfoEntity.java
  11. 78
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/DingMiniInfoService.java
  12. 82
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/DingMiniInfoServiceImpl.java
  13. 23
      epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/DingMiniInfoDao.xml
  14. 6
      epmet-module/epmet-third/epmet-third-server/src/main/test/java/com/epmet/ThirdPlatformTest.java
  15. 1
      epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.75__datacode.sql
  16. 27
      epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml

79
epmet-auth/src/main/java/com/epmet/controller/DingdingLoginController.java

@ -0,0 +1,79 @@
package com.epmet.controller;
import com.dingtalk.api.DefaultDingTalkClient;
import com.dingtalk.api.DingTalkClient;
import com.dingtalk.api.request.OapiGettokenRequest;
import com.dingtalk.api.request.OapiSnsGetuserinfoBycodeRequest;
import com.dingtalk.api.request.OapiUserGetbyunionidRequest;
import com.dingtalk.api.request.OapiV2UserGetRequest;
import com.dingtalk.api.response.OapiGettokenResponse;
import com.dingtalk.api.response.OapiSnsGetuserinfoBycodeResponse;
import com.dingtalk.api.response.OapiUserGetbyunionidResponse;
import com.dingtalk.api.response.OapiV2UserGetResponse;
import com.epmet.commons.tools.utils.Result;
import com.taobao.api.ApiException;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* 免登第三方网站
*
* @author openapi@dingtalk
*/
@RestController("dingtalk")
public class DingdingLoginController {
/**
* 获取授权用户的个人信息 openapi@dingtalk
*
* @return
* @throws Exception ServiceResult<Map<String,Object>> 2020-11-4
*/
@RequestMapping(value = "/auth", method = RequestMethod.GET)
public Result<String> getDdScan(@RequestParam("code") String code) throws Exception {
// 获取access_token,注意正式代码要有异常流处理
String access_token = this.getToken();
// 通过临时授权码获取授权用户的个人信息
DefaultDingTalkClient client2 = new DefaultDingTalkClient("https://oapi.dingtalk.com/sns/getuserinfo_bycode");
OapiSnsGetuserinfoBycodeRequest reqBycodeRequest = new OapiSnsGetuserinfoBycodeRequest();
reqBycodeRequest.setTmpAuthCode(code);
OapiSnsGetuserinfoBycodeResponse bycodeResponse = client2.execute(reqBycodeRequest, "yourAppId", "yourAppSecret");
// 根据unionid获取userid
String unionid = bycodeResponse.getUserInfo().getUnionid();
DingTalkClient clientDingTalkClient = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/user/getbyunionid");
OapiUserGetbyunionidRequest reqGetbyunionidRequest = new OapiUserGetbyunionidRequest();
reqGetbyunionidRequest.setUnionid(unionid);
OapiUserGetbyunionidResponse oapiUserGetbyunionidResponse = clientDingTalkClient.execute(reqGetbyunionidRequest, access_token);
// 根据userId获取用户信息
String userid = oapiUserGetbyunionidResponse.getResult().getUserid();
DingTalkClient clientDingTalkClient2 = new DefaultDingTalkClient(
"https://oapi.dingtalk.com/topapi/v2/user/get");
OapiV2UserGetRequest reqGetRequest = new OapiV2UserGetRequest();
reqGetRequest.setUserid(userid);
//reqGetRequest.setLang("zh_CN");
OapiV2UserGetResponse rspGetResponse = clientDingTalkClient2.execute(reqGetRequest, access_token);
System.out.println(rspGetResponse.getBody());
return new Result<String>().ok(rspGetResponse.getBody());
}
private String getToken() throws RuntimeException {
try {
DefaultDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/gettoken");
OapiGettokenRequest request = new OapiGettokenRequest();
request.setAppkey("dingiopfbtn8mktfoaf0");
request.setAppsecret("RcmHIoP5KFLZSM5wzpYhvCKMMKEzLoWPtqu3OqOEBD6myg4IT8oVw4AwvRkKYKJz");
request.setHttpMethod("GET");
OapiGettokenResponse response = client.execute(request);
return response.getAccessToken();
} catch (ApiException e) {
throw new RuntimeException();
}
}
}

21
epmet-auth/src/main/java/com/epmet/controller/ThirdLoginController.java

@ -9,7 +9,10 @@ import com.epmet.dto.result.UserTokenResultDTO;
import com.epmet.service.ThirdLoginService; import com.epmet.service.ThirdLoginService;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List; import java.util.List;
@ -174,7 +177,7 @@ public class ThirdLoginController {
* @return * @return
*/ */
@PostMapping("resilogin-ding-md") @PostMapping("resilogin-ding-md")
public Result<ResiDingAppLoginResDTO> resiLoginDingMd(@RequestBody ResiDingAppLoginMdFormDTO formDTO) { public Result<ResiDingAppLoginResDTO> resiLoginDingMd(@RequestBody DingAppLoginMdFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO); ValidatorUtils.validateEntity(formDTO);
return new Result<ResiDingAppLoginResDTO>().ok(thirdLoginService.resiLoginDingMd(formDTO)); return new Result<ResiDingAppLoginResDTO>().ok(thirdLoginService.resiLoginDingMd(formDTO));
} }
@ -200,8 +203,20 @@ public class ThirdLoginController {
* @return * @return
*/ */
@PostMapping("resilogin-internalding") @PostMapping("resilogin-internalding")
public Result<ResiDingAppLoginResDTO> resiLoginInternalDing(@RequestBody ResiDingAppLoginMdFormDTO formDTO) { public Result<ResiDingAppLoginResDTO> resiLoginInternalDing(@RequestBody DingAppLoginMdFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO); ValidatorUtils.validateEntity(formDTO);
return new Result<ResiDingAppLoginResDTO>().ok(thirdLoginService.resiLoginInternalDing(formDTO)); return new Result<ResiDingAppLoginResDTO>().ok(thirdLoginService.resiLoginInternalDing(formDTO));
} }
/**
* 根据免登授权码, 获取登录用户身份
*
* @param formDTO 免登授权码
* @return
*/
@PostMapping("govlogin-internalding")
public Result<UserTokenResultDTO> login(@RequestBody DingAppLoginMdFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
return new Result<UserTokenResultDTO>().ok(thirdLoginService.govLoginInternalDing(formDTO));
}
} }

2
epmet-auth/src/main/java/com/epmet/dto/form/ResiDingAppLoginMdFormDTO.java → epmet-auth/src/main/java/com/epmet/dto/form/DingAppLoginMdFormDTO.java

@ -10,7 +10,7 @@ import javax.validation.constraints.NotBlank;
* @Date 2022/9/22 10:42 * @Date 2022/9/22 10:42
*/ */
@Data @Data
public class ResiDingAppLoginMdFormDTO { public class DingAppLoginMdFormDTO {
@NotBlank(message = "authCode不能为空") @NotBlank(message = "authCode不能为空")
private String authCode; private String authCode;
/** /**

8
epmet-auth/src/main/java/com/epmet/service/GovWebService.java

@ -18,6 +18,14 @@ public interface GovWebService {
**/ **/
UserTokenResultDTO login(GovWebLoginFormDTO formDTO); UserTokenResultDTO login(GovWebLoginFormDTO formDTO);
/**
* @param formDTO
* @return
* @Author sun
* @Description PC工作端-工作人员 通过第三方系统登录
**/
UserTokenResultDTO loginByThirdPlatform(GovWebLoginFormDTO formDTO);
/** /**
* 区块链系统通过用户密码认证身份 * 区块链系统通过用户密码认证身份
* @param mobile * @param mobile

11
epmet-auth/src/main/java/com/epmet/service/ThirdLoginService.java

@ -102,12 +102,19 @@ public interface ThirdLoginService {
* @param formDTO * @param formDTO
* @return * @return
*/ */
ResiDingAppLoginResDTO resiLoginDingMd(ResiDingAppLoginMdFormDTO formDTO); ResiDingAppLoginResDTO resiLoginDingMd(DingAppLoginMdFormDTO formDTO);
/** /**
* 企业内部应用免登 文档地址https://open.dingtalk.com/document/orgapp-server/enterprise-internal-application-logon-free * 企业内部应用免登 文档地址https://open.dingtalk.com/document/orgapp-server/enterprise-internal-application-logon-free
* @param formDTO * @param formDTO
* @return * @return
*/ */
ResiDingAppLoginResDTO resiLoginInternalDing(ResiDingAppLoginMdFormDTO formDTO); ResiDingAppLoginResDTO resiLoginInternalDing(DingAppLoginMdFormDTO formDTO);
/**
* desc:企业内部应用 工作端登录
* @param formDTO
* @return
*/
UserTokenResultDTO govLoginInternalDing(DingAppLoginMdFormDTO formDTO);
} }

27
epmet-auth/src/main/java/com/epmet/service/impl/GovWebServiceImpl.java

@ -100,6 +100,33 @@ public class GovWebServiceImpl implements GovWebService, ResultDataResolver {
} }
@Override
public UserTokenResultDTO loginByThirdPlatform(GovWebLoginFormDTO formDTO) {
formDTO.setApp(LoginConstant.APP_GOV);
formDTO.setClient(LoginConstant.CLIENT_WEB);
// //1.参数校验
// if (!(LoginConstant.APP_GOV.equals(formDTO.getApp()) && LoginConstant.CLIENT_WEB.equals(formDTO.getClient()))) {
// logger.error("当前接口只适用于PC工作端运营管理后台");
// throw new RenException("当前接口只适用于PC工作端运营管理后台");
// }
//3.校验登陆账号是否存在
//根据客户Id和手机号查询登陆用户信息(此处不需要判断登陆人是否是有效客户以及是否是客户的根管理员,前一接口获取登陆手机号对应客户列表已经判断了)
GovWebOperLoginFormDTO form = new GovWebOperLoginFormDTO();
form.setCustomerId(formDTO.getCustomerId());
form.setMobile(formDTO.getPhone());
Result<GovWebOperLoginResultDTO> result = epmetUserFeignClient.getStaffIdAndPwd(form);
if (!result.success() || null == result.getData() || null == result.getData().getUserId()) {
logger.warn("根据手机号查询PC工作端登陆人员信息失败,返回10003账号不存在");
throw new RenException(EpmetErrorCode.ERR10003.getCode());
}
GovWebOperLoginResultDTO resultDTO = result.getData();
//5.生成token存到redis并返回
UserTokenResultDTO userTokenResultDTO = new UserTokenResultDTO();
userTokenResultDTO.setToken(this.packagingUserToken(formDTO, resultDTO.getUserId()));
return userTokenResultDTO;
}
/** /**
* 生成PC工作端token * 生成PC工作端token
* @author sun * @author sun

36
epmet-auth/src/main/java/com/epmet/service/impl/ThirdLoginServiceImpl.java

@ -34,11 +34,13 @@ import com.epmet.dto.dingres.V2UserGetuserinfoResDTO;
import com.epmet.dto.form.*; import com.epmet.dto.form.*;
import com.epmet.dto.result.*; import com.epmet.dto.result.*;
import com.epmet.feign.EpmetMessageOpenFeignClient; import com.epmet.feign.EpmetMessageOpenFeignClient;
import com.epmet.feign.EpmetUserFeignClient;
import com.epmet.feign.EpmetUserOpenFeignClient; import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.feign.GovOrgOpenFeignClient; import com.epmet.feign.GovOrgOpenFeignClient;
import com.epmet.jwt.JwtTokenProperties; import com.epmet.jwt.JwtTokenProperties;
import com.epmet.jwt.JwtTokenUtils; import com.epmet.jwt.JwtTokenUtils;
import com.epmet.redis.CaptchaRedis; import com.epmet.redis.CaptchaRedis;
import com.epmet.service.GovWebService;
import com.epmet.service.ThirdLoginService; import com.epmet.service.ThirdLoginService;
import com.taobao.api.ApiException; import com.taobao.api.ApiException;
import com.taobao.dingtalk.client.DingTalkClientToken; import com.taobao.dingtalk.client.DingTalkClientToken;
@ -90,6 +92,10 @@ public class ThirdLoginServiceImpl implements ThirdLoginService, ResultDataResol
private DingTalkClientToken dingTalkClientToken; private DingTalkClientToken dingTalkClientToken;
@Autowired @Autowired
private DingTalkClientUser dingTalkClientUser; private DingTalkClientUser dingTalkClientUser;
@Autowired
private EpmetUserFeignClient epmetUserFeignClient;
@Autowired
private GovWebService govWebService;
/** /**
* @param formDTO * @param formDTO
@ -920,7 +926,7 @@ public class ThirdLoginServiceImpl implements ThirdLoginService, ResultDataResol
} }
@Override @Override
public ResiDingAppLoginResDTO resiLoginDingMd(ResiDingAppLoginMdFormDTO formDTO) { public ResiDingAppLoginResDTO resiLoginDingMd(DingAppLoginMdFormDTO formDTO) {
// 获取用户手机号 // 获取用户手机号
log.info("1、钉钉居民端应用登录入参:" + JSON.toJSONString(formDTO)); log.info("1、钉钉居民端应用登录入参:" + JSON.toJSONString(formDTO));
ResiDingAppLoginResDTO resDTO = null; ResiDingAppLoginResDTO resDTO = null;
@ -1020,7 +1026,7 @@ public class ThirdLoginServiceImpl implements ThirdLoginService, ResultDataResol
* @return * @return
*/ */
@Override @Override
public ResiDingAppLoginResDTO resiLoginInternalDing(ResiDingAppLoginMdFormDTO formDTO) { public ResiDingAppLoginResDTO resiLoginInternalDing(DingAppLoginMdFormDTO formDTO) {
// 获取用户手机号 // 获取用户手机号
log.info("1、钉钉居民端应用登录入参:" + JSON.toJSONString(formDTO)); log.info("1、钉钉居民端应用登录入参:" + JSON.toJSONString(formDTO));
ResiDingAppLoginResDTO resDTO = null; ResiDingAppLoginResDTO resDTO = null;
@ -1052,6 +1058,26 @@ public class ThirdLoginServiceImpl implements ThirdLoginService, ResultDataResol
return resDTO; return resDTO;
} }
@Override
public UserTokenResultDTO govLoginInternalDing(DingAppLoginMdFormDTO formDTO) {
// 获取用户手机号
log.info("1、钉钉居民端应用登录入参:" + JSON.toJSONString(formDTO));
ResiDingAppLoginResDTO resDTO = null;
resDTO = new ResiDingAppLoginResDTO();
resDTO.setCustomerId(getCurrentCustomerId());
// 1、获取用户手机号
DingLoginResiFormDTO dingLoginResiFormDTO = getDingLoginResiFormDTOInternal(formDTO.getMiniAppId(), formDTO.getAuthCode());
dingLoginResiFormDTO.setCustomerId(resDTO.getCustomerId());
GovWebLoginFormDTO loginGovParam = new GovWebLoginFormDTO();
loginGovParam.setCustomerId(dingLoginResiFormDTO.getCustomerId());
loginGovParam.setPhone(dingLoginResiFormDTO.getMobile());
return govWebService.loginByThirdPlatform(loginGovParam);
}
/** /**
* 最原始的企业内部应用开发不授权给产品服务商 * 最原始的企业内部应用开发不授权给产品服务商
* @param miniAppId * @param miniAppId
@ -1060,12 +1086,14 @@ public class ThirdLoginServiceImpl implements ThirdLoginService, ResultDataResol
*/ */
private DingLoginResiFormDTO getDingLoginResiFormDTOInternal(String miniAppId, String authCode) { private DingLoginResiFormDTO getDingLoginResiFormDTOInternal(String miniAppId, String authCode) {
DingMiniInfoCache dingMiniInfo = CustomerDingDingRedis.getDingMiniInfo(miniAppId); DingMiniInfoCache dingMiniInfo = CustomerDingDingRedis.getDingMiniInfo(miniAppId);
if (dingMiniInfo == null){
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取钉钉应用配置异常", "获取钉钉应用配置异常");
}
// 1、获取企业内部应用的accessToken文档地址:https://open.dingtalk.com/document/orgapp-server/obtain-the-access_token-of-an-internal-app // 1、获取企业内部应用的accessToken文档地址:https://open.dingtalk.com/document/orgapp-server/obtain-the-access_token-of-an-internal-app
String accessToken = ""; String accessToken = "";
DingTalkResult<String> dingTalkResult = dingTalkClientToken.getAppAccessTokenToken(dingMiniInfo.getSuiteKey(), dingMiniInfo.getSuiteSecret()); DingTalkResult<String> dingTalkResult = dingTalkClientToken.getAppAccessTokenToken(dingMiniInfo.getSuiteKey(), dingMiniInfo.getSuiteSecret());
if (!dingTalkResult.success() || StringUtils.isBlank(dingTalkResult.getData())) { if (!dingTalkResult.success() || StringUtils.isBlank(dingTalkResult.getData())) {
log.error(String.format("获取企业内部应用的accessToken失败,customKey:%s,customSecret:%s", dingMiniInfo.getSuiteSecret(), dingMiniInfo.getSuiteSecret())); log.error(String.format("获取企业内部应用的accessToken失败,customKey:%s,customSecret:%s", dingMiniInfo.getSuiteKey(), dingMiniInfo.getSuiteSecret()));
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取企业内部应用的accessToken异常", "获取企业内部应用的accessToken"); throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取企业内部应用的accessToken异常", "获取企业内部应用的accessToken");
} }
accessToken = dingTalkResult.getData(); accessToken = dingTalkResult.getData();

71
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/DingMiniInfoController.java

@ -0,0 +1,71 @@
package com.epmet.controller;
import com.epmet.commons.tools.aop.NoRepeatSubmit;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.AssertUtils;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.commons.tools.validator.group.AddGroup;
import com.epmet.commons.tools.validator.group.DefaultGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.dto.DingMiniInfoDTO;
import com.epmet.service.DingMiniInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
/**
* 钉钉小程序信息
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-09-14
*/
@RestController
@RequestMapping("dingMiniInfo")
public class DingMiniInfoController {
@Autowired
private DingMiniInfoService dingMiniInfoService;
@RequestMapping("page")
public Result<PageData<DingMiniInfoDTO>> page(@RequestParam Map<String, Object> params){
PageData<DingMiniInfoDTO> page = dingMiniInfoService.page(params);
return new Result<PageData<DingMiniInfoDTO>>().ok(page);
}
@RequestMapping(value = "{id}",method = {RequestMethod.POST,RequestMethod.GET})
public Result<DingMiniInfoDTO> get(@PathVariable("id") String id){
DingMiniInfoDTO data = dingMiniInfoService.get(id);
return new Result<DingMiniInfoDTO>().ok(data);
}
@NoRepeatSubmit
@PostMapping("save")
public Result save(@RequestBody DingMiniInfoDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
dingMiniInfoService.save(dto);
return new Result();
}
@NoRepeatSubmit
@PostMapping("update")
public Result update(@RequestBody DingMiniInfoDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
dingMiniInfoService.update(dto);
return new Result();
}
@PostMapping("delete")
public Result delete(@RequestBody String[] ids){
//效验数据
AssertUtils.isArrayEmpty(ids, "id");
dingMiniInfoService.delete(ids);
return new Result();
}
}

16
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/DingMiniInfoDao.java

@ -0,0 +1,16 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.entity.DingMiniInfoEntity;
import org.apache.ibatis.annotations.Mapper;
/**
* 钉钉小程序信息
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-09-14
*/
@Mapper
public interface DingMiniInfoDao extends BaseDao<DingMiniInfoEntity> {
}

55
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/DingMiniInfoEntity.java

@ -0,0 +1,55 @@
package com.epmet.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 钉钉小程序信息
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-09-14
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("ding_mini_info")
public class DingMiniInfoEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
*
*/
private String suiteId;
/**
*
*/
private String appId;
/**
*
*/
private String miniAppId;
/**
*
*/
private String suiteName;
/**
*
*/
private String suiteKey;
/**
*
*/
private String suiteSecret;
private String token;
private String aesKey;
}

78
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/DingMiniInfoService.java

@ -0,0 +1,78 @@
package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.DingMiniInfoDTO;
import com.epmet.entity.DingMiniInfoEntity;
import java.util.List;
import java.util.Map;
/**
* 钉钉小程序信息
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-09-14
*/
public interface DingMiniInfoService extends BaseService<DingMiniInfoEntity> {
/**
* 默认分页
*
* @param params
* @return PageData<DingMiniInfoDTO>
* @author generator
* @date 2022-09-14
*/
PageData<DingMiniInfoDTO> page(Map<String, Object> params);
/**
* 默认查询
*
* @param params
* @return java.util.List<DingMiniInfoDTO>
* @author generator
* @date 2022-09-14
*/
List<DingMiniInfoDTO> list(Map<String, Object> params);
/**
* 单条查询
*
* @param id
* @return DingMiniInfoDTO
* @author generator
* @date 2022-09-14
*/
DingMiniInfoDTO get(String id);
/**
* 默认保存
*
* @param dto
* @return void
* @author generator
* @date 2022-09-14
*/
void save(DingMiniInfoDTO dto);
/**
* 默认更新
*
* @param dto
* @return void
* @author generator
* @date 2022-09-14
*/
void update(DingMiniInfoDTO dto);
/**
* 批量删除
*
* @param ids
* @return void
* @author generator
* @date 2022-09-14
*/
void delete(String[] ids);
}

82
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/DingMiniInfoServiceImpl.java

@ -0,0 +1,82 @@
package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.dao.DingMiniInfoDao;
import com.epmet.dto.DingMiniInfoDTO;
import com.epmet.entity.DingMiniInfoEntity;
import com.epmet.service.DingMiniInfoService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
* 钉钉小程序信息
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-09-14
*/
@Service
public class DingMiniInfoServiceImpl extends BaseServiceImpl<DingMiniInfoDao, DingMiniInfoEntity> implements DingMiniInfoService {
@Override
public PageData<DingMiniInfoDTO> page(Map<String, Object> params) {
IPage<DingMiniInfoEntity> page = baseDao.selectPage(
getPage(params, FieldConstant.CREATED_TIME, false),
getWrapper(params)
);
return getPageData(page, DingMiniInfoDTO.class);
}
@Override
public List<DingMiniInfoDTO> list(Map<String, Object> params) {
List<DingMiniInfoEntity> entityList = baseDao.selectList(getWrapper(params));
return ConvertUtils.sourceToTarget(entityList, DingMiniInfoDTO.class);
}
private QueryWrapper<DingMiniInfoEntity> getWrapper(Map<String, Object> params){
String id = (String)params.get(FieldConstant.ID_HUMP);
QueryWrapper<DingMiniInfoEntity> wrapper = new QueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id);
return wrapper;
}
@Override
public DingMiniInfoDTO get(String id) {
DingMiniInfoEntity entity = baseDao.selectById(id);
return ConvertUtils.sourceToTarget(entity, DingMiniInfoDTO.class);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void save(DingMiniInfoDTO dto) {
DingMiniInfoEntity entity = ConvertUtils.sourceToTarget(dto, DingMiniInfoEntity.class);
insert(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(DingMiniInfoDTO dto) {
DingMiniInfoEntity entity = ConvertUtils.sourceToTarget(dto, DingMiniInfoEntity.class);
updateById(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(String[] ids) {
// 逻辑删除(@TableLogic 注解)
baseDao.deleteBatchIds(Arrays.asList(ids));
}
}

23
epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/DingMiniInfoDao.xml

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.epmet.dao.DingMiniInfoDao">
<resultMap type="com.epmet.entity.DingMiniInfoEntity" id="dingMiniInfoMap">
<result property="id" column="ID"/>
<result property="suiteId" column="SUITE_ID"/>
<result property="appId" column="APP_ID"/>
<result property="miniAppId" column="MINI_APP_ID"/>
<result property="suiteName" column="SUITE_NAME"/>
<result property="suiteKey" column="SUITE_KEY"/>
<result property="suiteSecret" column="SUITE_SECRET"/>
<result property="delFlag" column="DEL_FLAG"/>
<result property="revision" column="REVISION"/>
<result property="createdBy" column="CREATED_BY"/>
<result property="createdTime" column="CREATED_TIME"/>
<result property="updatedBy" column="UPDATED_BY"/>
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
</mapper>

6
epmet-module/epmet-third/epmet-third-server/src/main/test/java/com/epmet/ThirdPlatformTest.java

@ -1,7 +1,5 @@
package com.epmet; package com.epmet;
import com.alibaba.fastjson.JSON;
import com.aliyun.dingtalk.module.DingTalkResult;
import com.taobao.dingtalk.client.DingTalkClientToken; import com.taobao.dingtalk.client.DingTalkClientToken;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.junit.Test; import org.junit.Test;
@ -24,7 +22,7 @@ public class ThirdPlatformTest {
@Test @Test
public void sendText(){ public void sendText(){
DingTalkResult<String> appAccessTokenToken = dingTalkClientToken.getAppAccessTokenToken("123123123","234234234"); /* DingTalkResult<String> appAccessTokenToken = dingTalkClientToken.getAppAccessTokenToken();
System.out.println("=======:"+JSON.toJSONString(appAccessTokenToken)); System.out.println("=======:"+JSON.toJSONString(appAccessTokenToken));*/
} }
} }

1
epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.75__datacode.sql

@ -0,0 +1 @@
alter table data_sync_config add COLUMN `DATA_CODE` varchar(32) NOT NULL COMMENT '数据key'after SORT;

27
epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml

@ -945,6 +945,33 @@
<if test="gridId != null and gridId != ''"> <if test="gridId != null and gridId != ''">
AND GRID_ID = #{gridId} AND GRID_ID = #{gridId}
</if> </if>
<if test="neighborId != null and neighborId != ''">
AND a.VILLAGE_ID = #{neighborId}
</if>
<if test="buildingId != null and buildingId != ''">
AND a.BUILD_ID = #{buildingId}
</if>
<if test="unitId != null and unitId != ''">
AND a.UNIT_ID = #{unitId}
</if>
<if test="houseId != null and houseId != ''">
AND a.HOME_ID = #{houseId}
</if>
<if test="name != null and name != ''">
AND a.`NAME` LIKE concat( '%', #{name}, '%' )
</if>
<if test="mobile != null and mobile != ''">
AND a.MOBILE LIKE concat( '%', #{mobile}, '%' )
</if>
<if test="idCard != null and idCard != ''">
AND a.ID_CARD LIKE concat( '%', #{idCard}, '%' )
</if>
<if test=" null != startBirthDay and startBirthDay != '' ">
AND a.BIRTHDAY <![CDATA[ >= ]]> #{startBirthDay}
</if>
<if test="null != endBirthDay and endBirthDay != '' ">
AND a.BIRTHDAY <![CDATA[ <= ]]> #{endBirthDay}
</if>
) t ) t
WHERE 1=1 WHERE 1=1
<if test="startDate != null and startDate != ''"> <if test="startDate != null and startDate != ''">

Loading…
Cancel
Save