|
@@ -11,11 +11,13 @@ import com.usky.common.core.bean.ApiResult;
|
|
|
import com.usky.common.core.exception.BusinessException;
|
|
|
import com.usky.common.core.util.HttpUtils;
|
|
|
import com.usky.common.redis.core.RedisHelper;
|
|
|
+import com.usky.common.security.utils.SecurityUtils;
|
|
|
import com.usky.iot.constant.constant;
|
|
|
-import com.usky.iot.domain.SysWxOpuser;
|
|
|
-import com.usky.iot.service.SysWxOpuserService;
|
|
|
+import com.usky.iot.domain.MceMbuser;
|
|
|
+import com.usky.iot.service.MceMbuserService;
|
|
|
import com.usky.iot.service.vo.SendWeChatMessageRequestVO;
|
|
|
import com.usky.iot.service.vo.SignUpRequestVO;
|
|
|
+import com.usky.iot.service.vo.TemplateData;
|
|
|
import com.usky.iot.service.vo.TemplateMsgEntityVO;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import ma.glasnost.orika.impl.util.StringUtil;
|
|
@@ -25,7 +27,9 @@ import me.chanjar.weixin.mp.api.WxMpService;
|
|
|
import me.chanjar.weixin.mp.enums.WxMpApiUrl;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.boot.ExitCodeEvent;
|
|
|
+import org.springframework.http.ResponseEntity;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
+import org.springframework.web.client.RestTemplate;
|
|
|
import org.springframework.web.servlet.view.RedirectView;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
@@ -35,7 +39,10 @@ import javax.servlet.http.HttpSession;
|
|
|
import java.io.IOException;
|
|
|
import java.net.URLDecoder;
|
|
|
import java.net.URLEncoder;
|
|
|
+import java.text.ParseException;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
import java.time.LocalDateTime;
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
@@ -52,7 +59,7 @@ public class WeChatController {
|
|
|
@Resource
|
|
|
private HttpServletResponse response;
|
|
|
@Autowired
|
|
|
- private SysWxOpuserService sysWxOpuserService;
|
|
|
+ private MceMbuserService mceMbuserService;
|
|
|
@Autowired
|
|
|
private RedisHelper redisHelper;
|
|
|
|
|
@@ -85,11 +92,10 @@ public class WeChatController {
|
|
|
String access_token = wxOAuth2AccessToken.getAccessToken();
|
|
|
System.out.println("openid: "+openid);
|
|
|
request.getSession().setAttribute("openid",openid);
|
|
|
- LambdaQueryWrapper<SysWxOpuser> queryWrapper = Wrappers.lambdaQuery();
|
|
|
- queryWrapper.select(SysWxOpuser::getPhone)
|
|
|
- .eq(SysWxOpuser::getStatus,1)
|
|
|
- .eq(SysWxOpuser::getOpenid,openid);
|
|
|
- SysWxOpuser one = sysWxOpuserService.getOne(queryWrapper);
|
|
|
+ LambdaQueryWrapper<MceMbuser> queryWrapper = Wrappers.lambdaQuery();
|
|
|
+ queryWrapper.select(MceMbuser::getPhone)
|
|
|
+ .eq(MceMbuser::getOpenid,openid);
|
|
|
+ MceMbuser one = mceMbuserService.getOne(queryWrapper);
|
|
|
if(one != null){
|
|
|
request.getSession().setAttribute("phone",one.getPhone());
|
|
|
}
|
|
@@ -121,11 +127,9 @@ public class WeChatController {
|
|
|
String code = request.getParameter("code");
|
|
|
String userAgent = request.getHeader("User-Agent");
|
|
|
if(null != request.getSession().getAttribute("app_token") && (null != request.getSession().getAttribute("phone"))){
|
|
|
- LambdaQueryWrapper<SysWxOpuser> queryWrapper = Wrappers.lambdaQuery();
|
|
|
- queryWrapper.eq(SysWxOpuser::getPhone,request.getSession().getAttribute("phone"))
|
|
|
- .eq(SysWxOpuser::getStatus,1)
|
|
|
- .eq(SysWxOpuser::getType,"app");
|
|
|
- SysWxOpuser one = sysWxOpuserService.getOne(queryWrapper);
|
|
|
+ LambdaQueryWrapper<MceMbuser> queryWrapper = Wrappers.lambdaQuery();
|
|
|
+ queryWrapper.eq(MceMbuser::getPhone,request.getSession().getAttribute("phone"));
|
|
|
+ MceMbuser one = mceMbuserService.getOne(queryWrapper);
|
|
|
if(one != null){
|
|
|
String sendUrl = "https://manager.usky.cn/mobile/#/pages/index?op="+one.getOpenid();
|
|
|
try{
|
|
@@ -164,11 +168,9 @@ public class WeChatController {
|
|
|
String access_token = wxOAuth2AccessToken.getAccessToken();
|
|
|
System.out.println("openid: "+openid);
|
|
|
request.getSession().setAttribute("openid",openid);
|
|
|
- LambdaQueryWrapper<SysWxOpuser> queryWrapper = Wrappers.lambdaQuery();
|
|
|
- queryWrapper.eq(SysWxOpuser::getType,"wx")
|
|
|
- .eq(SysWxOpuser::getStatus,1)
|
|
|
- .eq(SysWxOpuser::getOpenid,openid);
|
|
|
- SysWxOpuser one = sysWxOpuserService.getOne(queryWrapper);
|
|
|
+ LambdaQueryWrapper<MceMbuser> queryWrapper = Wrappers.lambdaQuery();
|
|
|
+ queryWrapper.eq(MceMbuser::getOpenid,openid);
|
|
|
+ MceMbuser one = mceMbuserService.getOne(queryWrapper);
|
|
|
if(one != null){
|
|
|
request.getSession().setAttribute("phone",one.getPhone());
|
|
|
|
|
@@ -188,11 +190,9 @@ public class WeChatController {
|
|
|
}
|
|
|
}else{
|
|
|
try{
|
|
|
- LambdaQueryWrapper<SysWxOpuser> queryWrapper = Wrappers.lambdaQuery();
|
|
|
- queryWrapper.eq(SysWxOpuser::getType,"wx")
|
|
|
- .eq(SysWxOpuser::getStatus,1)
|
|
|
- .eq(SysWxOpuser::getOpenid,request.getSession().getAttribute("openid"));
|
|
|
- SysWxOpuser one = sysWxOpuserService.getOne(queryWrapper);
|
|
|
+ LambdaQueryWrapper<MceMbuser> queryWrapper = Wrappers.lambdaQuery();
|
|
|
+ queryWrapper.eq(MceMbuser::getOpenid,request.getSession().getAttribute("openid"));
|
|
|
+ MceMbuser one = mceMbuserService.getOne(queryWrapper);
|
|
|
if(one != null){
|
|
|
request.getSession().setAttribute("phone",one.getPhone());
|
|
|
String sendUrl = "https://manager.usky.cn/mobile/#/pages/index?op="+one.getOpenid();
|
|
@@ -234,23 +234,22 @@ public class WeChatController {
|
|
|
throw new BusinessException("验证码错误");
|
|
|
}
|
|
|
|
|
|
- LambdaQueryWrapper<SysWxOpuser> queryWrapper = Wrappers.lambdaQuery();
|
|
|
- queryWrapper.eq(SysWxOpuser::getPhone,phone)
|
|
|
- .eq(SysWxOpuser::getType,request.getSession().getAttribute("type"));
|
|
|
- List<SysWxOpuser> list = sysWxOpuserService.list(queryWrapper);
|
|
|
+ LambdaQueryWrapper<MceMbuser> queryWrapper = Wrappers.lambdaQuery();
|
|
|
+ queryWrapper.eq(MceMbuser::getPhone,phone);
|
|
|
+ List<MceMbuser> list = mceMbuserService.list(queryWrapper);
|
|
|
if(CollectionUtils.isEmpty(list)){
|
|
|
- SysWxOpuser one = new SysWxOpuser();
|
|
|
+ MceMbuser one = new MceMbuser();
|
|
|
one.setPhone(phone);
|
|
|
if(request.getSession().getAttribute("type") == "app"){
|
|
|
one.setOpenid(request.getSession().getAttribute("app_token").toString());
|
|
|
}else{
|
|
|
one.setOpenid(request.getSession().getAttribute("openid").toString());
|
|
|
}
|
|
|
- one.setType(request.getSession().getAttribute("type").toString());
|
|
|
- one.setCreatedTime(LocalDateTime.now());
|
|
|
- one.setStatus(1);
|
|
|
+ one.setCreateBy(SecurityUtils.getUsername());
|
|
|
+ one.setUserId(SecurityUtils.getUserId());
|
|
|
+ one.setCreateTime(LocalDateTime.now());
|
|
|
|
|
|
- if(sysWxOpuserService.save(one)){
|
|
|
+ if(mceMbuserService.save(one)){
|
|
|
|
|
|
}else{
|
|
|
map.put("msg","注册失败,请重新注册");
|
|
@@ -281,70 +280,82 @@ public class WeChatController {
|
|
|
public String getWeChatAccessToken() {
|
|
|
try {
|
|
|
// 微信公众号官方获取AccessToken
|
|
|
- String accessToken = wxMpService.getAccessToken();
|
|
|
+ RestTemplate restTemplate = new RestTemplate();
|
|
|
+ String requestParams = String.format(constant.WE_CHAT_ACCESS_TOKEN_URL, constant.WE_CHAT_APP_ID, constant.WE_CHAT_SECRET);
|
|
|
+ ResponseEntity<String> responseEntity = restTemplate.getForEntity(requestParams, String.class);
|
|
|
+
|
|
|
+ String accessToken = JSONObject.parseObject(responseEntity.getBody()).getString("access_token");
|
|
|
+ log.info("we_chat_access_token: " + accessToken);
|
|
|
|
|
|
return accessToken;
|
|
|
} catch (Exception e) {
|
|
|
-
|
|
|
+ log.info("异常信息:{}", e);
|
|
|
}
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
+ public static long getTimeDifference(String oldTime,String newTime) throws ParseException {
|
|
|
|
|
|
-// /**
|
|
|
-// * 微信消息提醒
|
|
|
-// * @return
|
|
|
-// */
|
|
|
-// @PostMapping("sendWeChatMessage")
|
|
|
-// public Map<String,Object> sendWeChatMessage(@RequestBody SendWeChatMessageRequestVO requestVO){
|
|
|
-// String infoType = requestVO.getInfoType();
|
|
|
-// String infoTitle = requestVO.getInfoTitle();
|
|
|
-// String infoContent = requestVO.getInfoContent();
|
|
|
-// Map<String,Object> map = new HashMap<>();
|
|
|
-//
|
|
|
-// String s = null;
|
|
|
-// try {
|
|
|
-// s = HttpUtils.postForm(URL, body, null);
|
|
|
-// }catch (Exception e){
|
|
|
-// log.info("发送微信推送报警出错"+e);
|
|
|
-// }
|
|
|
-// return map;
|
|
|
-//
|
|
|
-// }
|
|
|
+ SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
+ long NTime =df.parse(newTime).getTime();
|
|
|
+ //从对象中拿到时间
|
|
|
+ long OTime = df.parse(oldTime).getTime();
|
|
|
+ long diff=(NTime-OTime)/1000/60;
|
|
|
+ return diff;
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
|
* 微信消息提醒
|
|
|
* @return
|
|
|
*/
|
|
|
@PostMapping("sendWeChatMessage")
|
|
|
- public JSONObject sendWeChatMessage(@RequestBody SendWeChatMessageRequestVO requestVO){
|
|
|
+ public JSONObject sendWeChatMessage(@RequestBody SendWeChatMessageRequestVO requestVO) {
|
|
|
|
|
|
String infoType = requestVO.getInfoType();
|
|
|
String infoTitle = requestVO.getInfoTitle();
|
|
|
String infoContent = requestVO.getInfoContent();
|
|
|
Integer infoId = requestVO.getInfoId();
|
|
|
String openId = requestVO.getOpenId();
|
|
|
- String token = this.getWeChatAccessToken();
|
|
|
+
|
|
|
+ //access_token时效校验,判断获取access_token获取时间是否超过有效时间,超过就调用更新,保证一直有效
|
|
|
+ if(!redisHelper.hasKey("access_key")){
|
|
|
+ redisHelper.set("access_time",LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
|
|
+ redisHelper.set("access_key",this.getWeChatAccessToken());
|
|
|
+ }else{
|
|
|
+ try{
|
|
|
+ String access_time = redisHelper.get("access_time").toString();
|
|
|
+ String now_time = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
|
|
|
+ long i = getTimeDifference(access_time,now_time);
|
|
|
+ if(i > 115){ //大于115分钟
|
|
|
+ redisHelper.set("access_time",LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
|
|
+ redisHelper.set("access_key",this.getWeChatAccessToken());
|
|
|
+ }
|
|
|
+ }catch (Exception e){
|
|
|
+ throw new BusinessException(e.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ String token = redisHelper.get("access_key").toString();
|
|
|
|
|
|
TemplateMsgEntityVO messageVo=new TemplateMsgEntityVO();
|
|
|
messageVo.setTTitle(infoTitle);
|
|
|
messageVo.setTKeyword1("测试1");
|
|
|
messageVo.setTKeyword2("测试2");
|
|
|
messageVo.setTKeyword3("测试3");
|
|
|
- messageVo.setTKeyword4("测试4");
|
|
|
messageVo.setTRemark(infoContent);
|
|
|
messageVo.setTUrl(String.format(constant.WE_CHAT_CUSTOMER_CALL_URL,infoId));
|
|
|
messageVo.setTemplateId(constant.WE_CHAT_TEMPLATE_ID);
|
|
|
|
|
|
String requestUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + token;
|
|
|
Map<String,Object> content=new HashMap<>();
|
|
|
- JSONObject data = new JSONObject();
|
|
|
- data.put("first",new JSONObject().put("value",messageVo.getTTitle()));
|
|
|
- data.put("keyword1",new JSONObject().put("value",messageVo.getTKeyword1()));
|
|
|
- data.put("keyword2",new JSONObject().put("value",messageVo.getTKeyword2()));
|
|
|
- data.put("keyword3",new JSONObject().put("value",messageVo.getTKeyword3()));
|
|
|
- data.put("keyword4",new JSONObject().put("value",messageVo.getTKeyword4()));
|
|
|
- data.put("remark",new JSONObject().put("value",messageVo.getTRemark()));
|
|
|
+ Map<String, TemplateData> data = new HashMap<>();
|
|
|
+ data.put("first",new TemplateData(messageVo.getTTitle(),"#44b549"));
|
|
|
+ data.put("keyword1",new TemplateData(messageVo.getTKeyword1(),"#173177"));
|
|
|
+ data.put("keyword2",new TemplateData(messageVo.getTKeyword2(),"#173177"));
|
|
|
+ data.put("keyword3",new TemplateData(messageVo.getTKeyword3(),"#173177"));
|
|
|
+ data.put("remark",new TemplateData(messageVo.getTRemark(),"#173177"));
|
|
|
|
|
|
content.put("touser",openId);
|
|
|
content.put("url",messageVo.getTUrl());
|