|
|
|
@@ -1,9 +1,14 @@ |
|
|
|
package com.iformall.controller.callback; |
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSON; |
|
|
|
import com.iformall.controller.base.BaseController; |
|
|
|
import com.iformall.domain.po.TtCouponChannelPoi; |
|
|
|
import com.iformall.domain.po.WxAppinfo; |
|
|
|
import com.iformall.enums.EnumSpuSyncStatus; |
|
|
|
import com.iformall.service.MailService; |
|
|
|
import com.iformall.service.WxAppinfoService; |
|
|
|
import com.iformall.service.WxCouponChannelService; |
|
|
|
import com.iformall.service.WxCouponService; |
|
|
|
import com.iformall.utils.DateUtils; |
|
|
|
import me.chanjar.weixin.common.util.crypto.SHA1; |
|
|
|
import org.slf4j.Logger; |
|
|
|
@@ -32,6 +37,9 @@ public class TtWebController extends BaseController { |
|
|
|
@Autowired |
|
|
|
private WxAppinfoService wxAppinfoService; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private WxCouponService wxCouponService; |
|
|
|
|
|
|
|
/** |
|
|
|
* { |
|
|
|
* "event": "verify_webhook", |
|
|
|
@@ -45,50 +53,67 @@ public class TtWebController extends BaseController { |
|
|
|
@ResponseBody |
|
|
|
public Map<String,Object> notice( @RequestBody Map<String, Object> parameterMap,HttpServletRequest request){ |
|
|
|
logger.debug("[" + getIpAddr() + "] TtOrderCallbackController::notice"); |
|
|
|
logger.info("抖音开放平台通知-----{}"+JSON.toJSONString(parameterMap)); |
|
|
|
Map<String,Object> resultMap = new HashMap<>(); |
|
|
|
|
|
|
|
// String body = ((BodyReaderHttpServletRequestWrapper) request).getBody(); |
|
|
|
logger.info("抖音开放平台通知-----parameterMap{}"+parameterMap); |
|
|
|
String event = (String) parameterMap.get("event"); |
|
|
|
String client_key = (String) parameterMap.get("client_key"); |
|
|
|
logger.info("抖音开放平台通知-----client_key{}"+client_key); |
|
|
|
WxAppinfo appInfo = wxAppinfoService.getByAppId(client_key); |
|
|
|
if(appInfo == null){ |
|
|
|
resultMap.put("err_code",1000); |
|
|
|
resultMap.put("err_tips","error"); |
|
|
|
return resultMap; |
|
|
|
} |
|
|
|
Map<String,Object> content = (HashMap) parameterMap.get("content"); |
|
|
|
|
|
|
|
String header = request.getHeader("X-Douyin-Signature"); |
|
|
|
logger.info("抖音开放平台通知-----header.X-Douyin-Signature{}"+header); |
|
|
|
|
|
|
|
String gen = SHA1.gen(appInfo.getSecret(), parameterMap.toString()); |
|
|
|
|
|
|
|
String sha1gen = SHA1.gen(appInfo.getSecret(), JSON.toJSONString(parameterMap)); |
|
|
|
//发邮件 |
|
|
|
String[] receivers = fmExceptionEmails.split(","); |
|
|
|
StringBuilder sb = new StringBuilder(); |
|
|
|
sb.append(DateUtils.date2String(new Date())); |
|
|
|
sb.append("\n"); |
|
|
|
sb.append("抖音开放平台通知{}"+parameterMap.toString()); |
|
|
|
sb.append("抖音开放平台通知{}"+JSON.toJSONString(parameterMap)); |
|
|
|
sb.append("\n"); |
|
|
|
sb.append("SHA1.gen{}"+gen); |
|
|
|
sb.append("sha1gen{}"+sha1gen); |
|
|
|
sb.append("\n"); |
|
|
|
sb.append("header{}"+header); |
|
|
|
//发送邮件 |
|
|
|
mailService.sendSimpleMail(receivers, "抖音开放平台通知", sb.toString()); |
|
|
|
|
|
|
|
try { |
|
|
|
// Map<String, Object> parameterMap = JSONObject.parseObject(body, Map.class); |
|
|
|
|
|
|
|
String event = (String) parameterMap.get("event"); |
|
|
|
logger.info("抖音开放平台通知-----event{}"+event); |
|
|
|
|
|
|
|
Map content = (HashMap) parameterMap.get("content"); |
|
|
|
logger.info("抖音开放平台通知-----content{}"+content.toString()); |
|
|
|
String challenge = content.get("challenge").toString(); |
|
|
|
logger.info("抖音开放平台通知-----content.challenge{}"+challenge); |
|
|
|
|
|
|
|
if("verify_webhook".equals(event)){ |
|
|
|
String challenge = (String) content.get("challenge"); |
|
|
|
resultMap.put("challenge",challenge); |
|
|
|
return resultMap; |
|
|
|
} catch (Exception e){ |
|
|
|
logger.error(e.getMessage()); |
|
|
|
resultMap.put("err_code",1000); |
|
|
|
resultMap.put("err_tips","error"); |
|
|
|
}else if("life_goods_audit".equals(event)){ |
|
|
|
String product_id = content.get("product_id").toString(); |
|
|
|
String reason = (String) content.get("reason"); |
|
|
|
String status = (String) content.get("status"); |
|
|
|
|
|
|
|
TtCouponChannelPoi couponChannelPoi = new TtCouponChannelPoi(); |
|
|
|
couponChannelPoi.updateTenantInfo(appInfo); |
|
|
|
couponChannelPoi.setSpuId(product_id); |
|
|
|
if("FAIL".equals(status)){ |
|
|
|
couponChannelPoi.setLastStatus(EnumSpuSyncStatus.sync_audit_rejection.getCode()); |
|
|
|
couponChannelPoi.setLastStatusDesc(reason); |
|
|
|
|
|
|
|
}else if("SUCCESS".equals(status)){ |
|
|
|
couponChannelPoi.setLastStatus(EnumSpuSyncStatus.sync_audit_pass.getCode()); |
|
|
|
couponChannelPoi.setLastStatusDesc(reason); |
|
|
|
|
|
|
|
}else{ |
|
|
|
resultMap.put("err_code",1000); |
|
|
|
resultMap.put("err_tips","error"); |
|
|
|
return resultMap; |
|
|
|
} |
|
|
|
wxCouponService.handlerTtGoodsAudit(couponChannelPoi); |
|
|
|
resultMap.put("err_code",0); |
|
|
|
resultMap.put("err_tips","success"); |
|
|
|
return resultMap; |
|
|
|
} |
|
|
|
|
|
|
|
resultMap.put("err_code",1000); |
|
|
|
resultMap.put("err_tips","error"); |
|
|
|
return resultMap; |
|
|
|
} |
|
|
|
|
|
|
|
} |