Commit 5bbfa686 by xunj

微信分享

1 parent 9204c4c4
package com.polysoft.activity; package com.polysoft.activity;
import org.mybatis.spring.annotation.MapperScan; import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.ComponentScan;
import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.transaction.annotation.EnableTransactionManagement; import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.client.RestTemplate;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
import java.util.Date; import java.util.Date;
......
package com.polysoft.activity.controller; package com.polysoft.activity.controller;
import com.polysoft.activity.model.param.ShareLinkParam;
import com.polysoft.activity.model.param.UserInfoParam; import com.polysoft.activity.model.param.UserInfoParam;
import com.polysoft.activity.service.UserInfoService; import com.polysoft.activity.service.UserInfoService;
import com.polysoft.activity.utils.ApiResult; import com.polysoft.activity.utils.ApiResult;
...@@ -24,4 +25,10 @@ public class UserController { ...@@ -24,4 +25,10 @@ public class UserController {
return userInfoService.queryAuthUser(param.getPhone()); return userInfoService.queryAuthUser(param.getPhone());
} }
@PostMapping("/getShareLink" )
@ResponseBody
public ApiResult getShareLink(@RequestBody @Validated ShareLinkParam param) {
return userInfoService.getShareLink(param);
}
} }
package com.polysoft.activity.mapper; package com.polysoft.activity.mapper;
import com.polysoft.activity.model.dto.WechatTokenDto;
import com.polysoft.activity.model.vo.UserInfoVO; import com.polysoft.activity.model.vo.UserInfoVO;
import com.polysoft.activity.model.vo.WechatToken;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
...@@ -9,4 +11,6 @@ import java.util.List; ...@@ -9,4 +11,6 @@ import java.util.List;
@Mapper @Mapper
public interface UserInfoMapper { public interface UserInfoMapper {
UserInfoVO queryAuthUser(@Param("phone") String phone); UserInfoVO queryAuthUser(@Param("phone") String phone);
WechatToken getWechatToken();
int updateWechatToken(WechatTokenDto dto);
} }
package com.polysoft.activity.model.dto;
import lombok.Data;
/**
* @author lvyp
* @date 2021/1/27
*/
@Data
public class UserCattleBrandDto {
private Long id ;
private Long userId;
private Long cattleBrandId;
}
package com.polysoft.activity.model.dto;
import lombok.Data;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* @author lvyp
* @date 2021/1/27
*/
@Data
public class WechatTokenDto {
private Long id;
private String updateTime;
private String accessToken;
}
package com.polysoft.activity.model.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @author lvyp
* @date 2021/1/27
*/
@Data
public class ShareLinkParam {
@ApiModelProperty("分享的链接全地址")
// @NotBlank(message = "分享的链接不能为空")
private String url;
@ApiModelProperty("用户ID")
// @NotBlank(message = "用户ID不能为空")
private Long userId;
@ApiModelProperty("牛牌ID")
// @NotBlank(message = "牛牌ID不能为空")
private Long cattleId;
}
package com.polysoft.activity.model.vo;
import lombok.Data;
import java.util.UUID;
/**
* @author lvyp
* @date 2021/1/27
*/
@Data
public class ShareLinkVO {
private String appId="wx747674121d6fd50a";
// private String jsapi_ticket ;
private String noncestr = UUID.randomUUID().toString().replaceAll("-","");
private Long timestamp = System.currentTimeMillis()/1000;
private String signature;
}
package com.polysoft.activity.model.vo;
import lombok.Data;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* @author lvyp
* @date 2021/1/27
*/
@Data
public class WechatToken {
private String updateTime;
private String accessToken;
public Long getUpdateTime() {
long ts = 0;
try {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = simpleDateFormat.parse(this.updateTime);
ts = date.getTime();
} catch (ParseException e) {
e.printStackTrace();
}
return ts;
}
}
package com.polysoft.activity.service; package com.polysoft.activity.service;
import com.polysoft.activity.model.param.ShareLinkParam;
import com.polysoft.activity.utils.ApiResult; import com.polysoft.activity.utils.ApiResult;
public interface UserInfoService { public interface UserInfoService {
ApiResult queryAuthUser(String phone); ApiResult queryAuthUser(String phone);
ApiResult getShareLink(ShareLinkParam param);
} }
package com.polysoft.activity.service.impl; package com.polysoft.activity.service.impl;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject;
import com.polysoft.activity.mapper.UserInfoMapper; import com.polysoft.activity.mapper.UserInfoMapper;
import com.polysoft.activity.model.dto.WechatTokenDto;
import com.polysoft.activity.model.param.ShareLinkParam;
import com.polysoft.activity.model.vo.ShareLinkVO;
import com.polysoft.activity.model.vo.UserInfoVO; import com.polysoft.activity.model.vo.UserInfoVO;
import com.polysoft.activity.model.vo.WechatToken;
import com.polysoft.activity.service.UserInfoService; import com.polysoft.activity.service.UserInfoService;
import com.polysoft.activity.utils.ApiResult; import com.polysoft.activity.utils.ApiResult;
import com.polysoft.activity.utils.SHA1;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.text.ParseException;
import java.util.Date;
import java.util.UUID;
@Service @Service
...@@ -14,6 +27,16 @@ public class UserInfoServiceImpl implements UserInfoService { ...@@ -14,6 +27,16 @@ public class UserInfoServiceImpl implements UserInfoService {
@Resource @Resource
private UserInfoMapper mapper; private UserInfoMapper mapper;
@Resource
private RestTemplate restTemplate;
@Value("${wechat.appId}")
private String appId;
@Value("${wechat.password}")
private String passWord;
@Value("${wechat.accessTokenUrl}")
private String accessTokenUrl;
@Value("${wechat.jsapiTicketUrl}")
private String jsapiTicketUrl;
@Override @Override
public ApiResult queryAuthUser(String phone) { public ApiResult queryAuthUser(String phone) {
UserInfoVO user = mapper.queryAuthUser(phone); UserInfoVO user = mapper.queryAuthUser(phone);
...@@ -22,4 +45,31 @@ public class UserInfoServiceImpl implements UserInfoService { ...@@ -22,4 +45,31 @@ public class UserInfoServiceImpl implements UserInfoService {
} }
return ApiResult.ok(user); return ApiResult.ok(user);
} }
@Override
public ApiResult getShareLink(ShareLinkParam param) {
ShareLinkVO shareLinkVO = new ShareLinkVO();
WechatToken wechatToken = mapper.getWechatToken();
String access_token = null;
if((System.currentTimeMillis()/1000 - wechatToken.getUpdateTime()/1000) > 6600){
JSONObject object = restTemplate.getForObject(accessTokenUrl+"appid="+appId+"&secret="+passWord+"", JSONObject.class);
access_token = object.getString("access_token");
WechatTokenDto dto = new WechatTokenDto();
dto.setAccessToken(access_token);
dto.setUpdateTime(DateUtil.format(new Date(),"yyyy-MM-dd HH:mm:ss"));
mapper.updateWechatToken(dto);
}else {
access_token = wechatToken.getAccessToken();
}
JSONObject object = restTemplate.getForObject(jsapiTicketUrl+"access_token="+access_token+"", JSONObject.class);
String jsapi_ticket = object.getString("ticket");
String noncestr = UUID.randomUUID().toString().replaceAll("-","");
Long timestamp = System.currentTimeMillis()/1000;
String signStr = "jsapi_ticket"+jsapi_ticket+"&noncestr"+noncestr+"&timestamp"+timestamp+"&"+param.getUrl();
shareLinkVO.setAppId(appId);
shareLinkVO.setNoncestr(noncestr);
shareLinkVO.setTimestamp(timestamp);
shareLinkVO.setSignature(SHA1.encode(signStr));
return ApiResult.ok(shareLinkVO);
}
} }
...@@ -62,3 +62,9 @@ ftp: ...@@ -62,3 +62,9 @@ ftp:
#存储数据转文件的路径 #存储数据转文件的路径
localDir1: /ccivol_nas/outbound/data_send/ localDir1: /ccivol_nas/outbound/data_send/
roadRescueLocalDir: /ccivol_nas/outbound/roadRescueData/ roadRescueLocalDir: /ccivol_nas/outbound/roadRescueData/
wechat:
appId: wx747674121d6fd50a
password: 0c3b082fa27a5b50f79fb7f91aeaa41a
accessTokenUrl: https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&
jsapiTicketUrl: https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&
<?xml version="1.0" encoding="UTF-8"?> <?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"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.polysoft.activity.mapper.UserInfoMapper"> <mapper namespace="com.polysoft.activity.mapper.UserInfoMapper">
<select id="queryAuthUser" resultType="com.polysoft.activity.model.vo.UserInfoVO"> <select id="queryAuthUser" resultType="com.polysoft.activity.model.vo.UserInfoVO">
select select
user_id , user_id ,
...@@ -12,4 +10,10 @@ ...@@ -12,4 +10,10 @@
from from
t_user where phone=#{phone} t_user where phone=#{phone}
</select> </select>
<select id="getWechatToken" resultType="com.polysoft.activity.model.vo.WechatToken">
select access_token,update_time from wechat_token where id =1
</select>
<update id="updateWechatToken" parameterType="com.polysoft.activity.model.dto.WechatTokenDto">
update wechat_token set access_token=#{accessToken},update_time=#{updateTime} where id =1
</update>
</mapper> </mapper>
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!