Commit e14d8ffa by ddx

增加token管理接口

parent 335b3f41
......@@ -56,6 +56,11 @@
<artifactId>feign-httpclient</artifactId>
<version>11.10</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.1</version>
</dependency>
</dependencies>
<build>
<defaultGoal>install</defaultGoal>
......
package com.tax.token.model;
import com.yxcheng.token.common.model.MqMessage;
import com.yxcheng.token.common.model.SafeModel;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
/**
* @ProjectName: tax-sys-nacos
* @Package: com.tax.token.model
* @ClassName: TokenReportReq
* @Author: ddx
* @Description:
* @Date: 2025-04-02 16:07
* @Version: 1.0
*/
@Getter
@Setter
@ToString
public class TokenReportReq extends SafeModel implements MqMessage {
private Integer pageSize;
private Integer pageNumber;
private String userCode;
private String errorCode;
private String zoneCode;
private String loginType;
private String taxLoginName;
private String errorMessage;
private String userType;
private String serverNo;
private String taxno;
}
package com.tax.token.model;
import com.yxcheng.token.common.model.MqMessage;
import com.yxcheng.token.common.model.SafeModel;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
/**
* @ProjectName: tax-sys-nacos
* @Package: com.tax.token.model
* @ClassName: TokenReportReq
* @Author: ddx
* @Description:
* @Date: 2025-04-02 16:07
* @Version: 1.0
*/
@Getter
@Setter
@ToString
public class TokenReportUpdateReq extends SafeModel implements MqMessage {
private String tokenIds;
private String userCode;
private String taxno;
private String serverNo;
private String userType;
}
......@@ -66,4 +66,32 @@ public class CleanCookieUtil {
return cleanCookieVo;
}
public static CleanCookieVo cleanCookiebyMd5(String uuIdFlag, CookieReq cookieReq, String type) throws IOException, HttpException {
CleanCookieVo cleanCookieVo = new CleanCookieVo();
String taxno = cookieReq.getTaxno();
JSONObject json = new JSONObject();
json.put("userCode", cookieReq.getUserCode());
json.put("type", type);
json.put("requestId", uuIdFlag);
JSONArray jsonArray = new JSONArray();
jsonArray.add(cookieReq.getUserCode() + ":" + taxno + ":" + cookieReq.getUserInfo());
json.put("keyList", jsonArray);
String url = TokenConstants.CLEAN_COOKIE_URL;
logger.info(uuIdFlag + " cleanCookiebyMd5 taxno is " + taxno + " url is " + url + ",param is " + json.toString());
cleanCookieVo.setRequestContext(json.toString());
ResponseContent ret = HttpHelper.postJsonEntity(url,json.toString());
String resultStr = ret.getContent();
cleanCookieVo.setResponseContext(resultStr);
logger.info(uuIdFlag + " cleanCookiebyMd5 taxno is " + taxno + ",result is " + resultStr);
if(StringUtils.isNotEmpty(resultStr)) {
Map<String, Object> resultStrMap = JSONHelper.parserToMap(resultStr);
cleanCookieVo.setCode(ObjectUtil.fixNull(resultStrMap.get("code")));
cleanCookieVo.setMessage(ObjectUtil.fixNull(resultStrMap.get("message")));
}
return cleanCookieVo;
}
}
......@@ -2,6 +2,7 @@ package com.tax.token.mapper;
import com.tax.token.model.TkToken;
import com.tax.token.model.TkTokenExample;
import com.tax.token.model.TokenReportReq;
import org.apache.ibatis.annotations.Param;
import java.util.List;
......@@ -101,4 +102,5 @@ public interface TkTokenMapper {
List<TkToken> selectTokenListByErrorCode(@Param("userCode") String userCode,
@Param("errorCode") String errorCode, @Param("zoneCode") String zoneCode);
List<TkToken> selectTokenListPage(TokenReportReq tokenReportReq);
}
\ No newline at end of file
......@@ -477,6 +477,16 @@
retry_second = #{retrySecond,jdbcType=VARCHAR},
proxy_ip = #{proxyIp,jdbcType=VARCHAR},
tax_login_name = #{taxLoginName,jdbcType=VARCHAR},
secret_md5 = #{secretMd5,jdbcType=VARCHAR},
</if>
<if test="updateErrorFlag != null and updateErrorFlag !='' and updateErrorFlag =='2'.toString()">
error_code = null,
error_message = null,
retry_time = null,
retry_second = null,
proxy_ip = null,
tax_login_name = null,
secret_md5 = null,
</if>
</set>
where id = #{id,jdbcType=INTEGER}
......@@ -536,8 +546,7 @@
token_status = #{tokenStatus,jdbcType=CHAR},
user_type = #{userType,jdbcType=VARCHAR},
times = #{times,jdbcType=INTEGER},
update_date = #{updateDate,jdbcType=TIMESTAMP},
is_valid = #{isValid,jdbcType=CHAR}
update_date = #{updateDate,jdbcType=TIMESTAMP}
where id = #{id,jdbcType=INTEGER}
</update>
<select id="selectTokenListByErrorCode" resultMap="BaseResultMap">
......@@ -557,4 +566,37 @@
and t.zone_code = #{zoneCode,jdbcType=VARCHAR}
</if>
</select>
<select id="selectTokenListPage" resultMap="BaseResultMap">
SELECT
*
FROM
tk_token
WHERE
user_code = #{userCode}
<if test="errorCode != null and errorCode !=''">
and error_code = #{errorCode}
</if>
<if test="zoneCode != null and zoneCode !=''">
and zone_code = #{zoneCode}
</if>
<if test="loginType != null and loginType !=''">
and login_type = #{loginType}
</if>
<if test="taxLoginName != null and taxLoginName !=''">
and tax_login_name = #{taxLoginName}
</if>
<if test="errorMessage != null and errorMessage !=''">
and error_message like concat('%', #{errorMessage}, '%')
</if>
<if test="userType != null and userType !=''">
and user_type = #{userType}
</if>
<if test="serverNo != null and serverNo !=''">
and server_no = #{serverNo}
</if>
<if test="taxno != null and taxno !=''">
and taxno = #{taxno}
</if>
order by res_date desc
</select>
</mapper>
\ No newline at end of file
package com.tax.token.service.api;
import com.github.pagehelper.PageInfo;
import com.tax.token.model.*;
import com.yxcheng.token.common.model.JsonResult;
import com.yxcheng.token.common.model.TaxUserInfo;
......@@ -60,4 +61,10 @@ public interface TkTokenService {
void setTokenRealRequestCount(String userCode, String taxno);
JsonResult<String> cleanLoginLockInfo(String uuId, CookieReq cookieReq);
PageInfo<TkToken> selectTokenListPage(TokenReportReq tokenReportReq);
int updateTokenByIds(TokenReportUpdateReq tokenReportUpdateReq);
CleanCookieVo updateTokenById(String applyId);
}
......@@ -2,6 +2,8 @@ package com.tax.token.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.google.common.collect.Lists;
import com.tax.token.constants.TokenConstants;
import com.tax.token.mapper.TkTokenMapper;
......@@ -167,7 +169,7 @@ public class TkTokenServiceImpl implements TkTokenService {
if (StringUtils.isBlank(token)) {
result.errorResponse(ResultEnum.token_not_obtained, tkToken.getTokenCode(), tkToken.getTokenMessage(), tkToken.getRetrySecond());
if(StringUtil.isNotEmpty(tkToken.getTokenCode())) {
if(getStopFlag(tkToken.getUserCode(), tkToken.getTokenCode(), tkToken.getUserType(), tkToken.getTokenStatus())) {
if(getStopFlag(tkToken.getTokenCode(), tkToken.getUserType(), tkToken.getTokenStatus())) {
if(tkToken.getTokenCode().equals("4007")) {
result.errorResponse(ResultEnum.user_taxno_fpy_disable, tkToken.getTokenCode(), tkToken.getTokenMessage(), tkToken.getRetrySecond());
} else {
......@@ -426,7 +428,8 @@ public class TkTokenServiceImpl implements TkTokenService {
uuIdFlag = uuIdFlag + "_" + UUIDGenerator.generate();
Instant start = Instant.now();
tkToken.setTokenStatus(TokenConstants.TOKEN_ON_THE_WAY);
tkToken.setTokenStatus(tkToken.getUserType().equals(TokenConstants.USER_TYPE_HAND)
?TokenConstants.TOKEN_INIT:TokenConstants.TOKEN_ON_THE_WAY);
tkToken.setRequestFrom(requestFrom);
if(TokenConstants.SERVER_LOCAL.equals(tkServer.getTokenType())){
if(StringUtils.isNotBlank(TokenConstants.BRANCH_ZONECODES) && TokenConstants.BRANCH_ZONECODES.contains(tkZoneInfo.getZoneCode())){
......@@ -640,7 +643,7 @@ public class TkTokenServiceImpl implements TkTokenService {
if(tokenCount>0) {
tokenFlag = "1";
}
if(null != tkTokenRemarkLog && getStopFlag(tkTokenRemarkLog.getUserCode(), tkTokenRemarkLog.getTokenCode(), tkToken.getUserType(), tkToken.getTokenStatus())){
if(null != tkTokenRemarkLog && getStopFlag(tkTokenRemarkLog.getTokenCode(), tkToken.getUserType(), tkToken.getTokenStatus())){
tkTokenRemarkLog.setTokenDate(tkTokenRemarkLog.getUpdateDate() != null ? new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(tkTokenRemarkLog.getUpdateDate()) : "");
} else {
tkTokenRemarkLog = new TkTokenRemarkLog();
......@@ -808,7 +811,7 @@ public class TkTokenServiceImpl implements TkTokenService {
updateToken.setErrorMessage(StringUtil.getShortLog(tkToken.getTokenMessage(), 5000));
updateToken.setRetrySecond(tkToken.getRetrySecond());
updateToken.setRetryTime(tkToken.getRetryTime());
if(getStopFlag(tkToken.getUserCode(), tkToken.getTokenCode(), tkToken.getUserType(), tkToken.getTokenStatus())) {
if(getStopFlag(tkToken.getTokenCode(), tkToken.getUserType(), tkToken.getTokenStatus())) {
updateToken.setIsValid("0");
logger.info(uuId + " updateTokenInfo set disable valid! " + tkToken.getUserCode() + "=" + tkToken.getTaxno() + "=" + updateToken.getIsValid());
}
......@@ -831,7 +834,7 @@ public class TkTokenServiceImpl implements TkTokenService {
updateToken.setId(tkToken.getId());
//设置无效开关
if(StringUtils.isNotBlank(tkToken.getTokenCode())){
if(getStopFlag(tkToken.getUserCode(), tkToken.getTokenCode(), tkToken.getUserType(), tkToken.getTokenStatus())) {
if(getStopFlag(tkToken.getTokenCode(), tkToken.getUserType(), tkToken.getTokenStatus())) {
updateToken.setIsValid("0");
logger.info(uuId + " updateTokenInfo set disable valid! " + tkToken.getUserCode() + "=" + tkToken.getTaxno());
}
......@@ -839,7 +842,7 @@ public class TkTokenServiceImpl implements TkTokenService {
tkTokenMapper.updateByPrimaryKeySelective(updateToken);
}
private boolean getStopFlag(String userCode, String tokenCode, String userType, String tokenStatus) {
private boolean getStopFlag(String tokenCode, String userType, String tokenStatus) {
if((tokenCode.length()==4 && tokenCode.startsWith("4"))) {
return true;
}
......@@ -1082,4 +1085,79 @@ public class TkTokenServiceImpl implements TkTokenService {
logger.info(uuId + " cleanLoginLockInfo taxno is " + taxno + ", result is " + result);
return result;
}
public PageInfo<TkToken> selectTokenListPage(TokenReportReq tokenReportReq) {
logger.info("findTokenListPage tokenList params is " + tokenReportReq);
PageHelper.startPage(tokenReportReq.getPageNumber(), tokenReportReq.getPageSize());
List<TkToken> tokenList = tkTokenMapper.selectTokenListPage(tokenReportReq);
logger.info("findTokenListPage tokenList size is " + tokenList.size());
PageInfo<TkToken> pageinfo = new PageInfo<TkToken>(tokenList);
return pageinfo;
}
public int updateTokenByIds(TokenReportUpdateReq tokenReportUpdateReq) {
logger.info("updateTokenByIds params is " + tokenReportUpdateReq);
String[] idArr = tokenReportUpdateReq.getTokenIds().split(",");
for(String id:idArr) {
TkToken tkToken = tkTokenMapper.selectByPrimaryKey(Integer.parseInt(id));
tkToken.setTokenStatus("0");
tkToken.setUpdateErrorFlag("2");
tkToken.setUserType(tokenReportUpdateReq.getUserType());
tkToken.setServerNo(tokenReportUpdateReq.getServerNo());
tkToken.setUpdateDate(DateUtils.getDate());
tkTokenMapper.updateByPrimaryKeySelective(tkToken);
String uuId = UUIDGenerator.generate();
try {
if(StringUtil.isNotEmpty(tkToken.getSecretMd5())) {
CookieReq cookieReq = new CookieReq();
cookieReq.setUserCode(tkToken.getUserCode());
cookieReq.setTaxno(tkToken.getTaxno());
cookieReq.setUserInfo(tkToken.getSecretMd5());
CleanCookieVo cleanMap = CleanCookieUtil.cleanCookiebyMd5(uuId, cookieReq, "2");
logger.info(uuId + " updateTokenByIds taxno is " + tkToken.getTaxno() + " cleanCookie result is " + JSON.toJSONString(cleanMap));
}
} catch (Exception e) {
e.printStackTrace();
logger.error(uuId + " updateTokenByIds cleanCookie taxno is " + tkToken.getTaxno() + " ,send is error!" + e.getMessage());
}
}
return idArr.length;
}
public CleanCookieVo updateTokenById(String applyId) {
logger.info("updateTokenByIds params is " + applyId);
TkToken tkToken = tkTokenMapper.selectByPrimaryKey(Integer.parseInt(applyId));
tkToken.setTokenStatus("0");
tkToken.setUpdateDate(DateUtils.getDate());
tkTokenMapper.updateByPrimaryKeySelective(tkToken);
CleanCookieVo cleanMap = null;
String uuId = UUIDGenerator.generate();
try {
if(StringUtil.isNotEmpty(tkToken.getSecretMd5())) {
CookieReq cookieReq = new CookieReq();
cookieReq.setUserCode(tkToken.getUserCode());
cookieReq.setTaxno(tkToken.getTaxno());
cookieReq.setUserInfo(tkToken.getSecretMd5());
cleanMap = CleanCookieUtil.cleanCookiebyMd5(uuId, cookieReq, "2");
logger.info(uuId + " updateTokenByIds taxno is " + tkToken.getTaxno() + " cleanCookie result is " + JSON.toJSONString(cleanMap));
} else {
cleanMap = new CleanCookieVo();
cleanMap.setCode("-1");
cleanMap.setMessage("没有md5信息");
}
} catch (Exception e) {
e.printStackTrace();
logger.error(uuId + " updateTokenByIds cleanCookie taxno is " + tkToken.getTaxno() + " ,send is error!" + e.getMessage());
}
if(null==cleanMap) {
cleanMap = new CleanCookieVo();
cleanMap.setCode("-1");
cleanMap.setMessage("清理异常");
}
return cleanMap;
}
}
......@@ -43,4 +43,8 @@
<typeAlias alias="ArrayList" type="java.util.ArrayList" />
<typeAlias alias="LinkedList" type="java.util.LinkedList" />
</typeAliases>
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor">
</plugin>
</plugins>
</configuration>
\ No newline at end of file
package com.tax.token.web.controller;
import com.alibaba.fastjson.JSON;
import com.tax.token.model.TokenReportReq;
import com.tax.token.model.TokenReportUpdateReq;
import com.tax.token.service.api.TkTokenService;
import com.tax.token.service.api.TkZoneInfoService;
import com.yxcheng.token.common.model.JsonResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/client/report/")
@ComponentScan(basePackages = {"com.tax.token.service"})
public class TokenReportController {
@Autowired
private TkTokenService tokenService;
@RequestMapping(value ="/selectTokenListPage" , method = RequestMethod.POST)
public String selectTokenListPage(@RequestBody TokenReportReq tokenReportReq){
return JSON.toJSONString(tokenService.selectTokenListPage(tokenReportReq));
}
@RequestMapping(value ="/updateTokenByIds" , method = RequestMethod.POST)
public String updateTokenByIds(@RequestBody TokenReportUpdateReq tokenReportUpdateReq){
return JSON.toJSONString(tokenService.updateTokenByIds(tokenReportUpdateReq));
}
@RequestMapping(value ="/updateTokenById" , method = RequestMethod.GET)
public String updateTokenById(String applyId){
JsonResult result = new JsonResult();
result.setData(tokenService.updateTokenById(applyId));
return JSON.toJSONString(result);
}
}
......@@ -323,6 +323,22 @@ public class TokenUnitTest {
System.out.println(ret);
}
@Test
public void testSelectTokenListPage() throws Exception{
String url = host + "/client/report/selectTokenListPage";
JSONObject json = new JSONObject();
json.put("taxno", "91150802MA7YPNPB9U");
json.put("pageSize", "10");
json.put("pageNumber", "1");
json.put("userCode", "edaxiang");
System.out.println("testUpdateErrorInfo request url:" + url + ",param:" + json.toJSONString());
ResponseContent ret = HttpHelper.postJsonEntity(url, json.toString());
System.out.println(ret.getContent());
}
public static String getSign(String data){
try {
return Security.getSignature(data.getBytes("UTF-8"),accessKeySecret.getBytes("UTF-8"));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment