| @@ -1,12 +1,10 @@ | |||
| package com.iformall.controller.callback; | |||
| import com.alibaba.fastjson.JSON; | |||
| import com.alibaba.fastjson.JSONObject; | |||
| 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.*; | |||
| import com.iformall.service.MailService; | |||
| import com.iformall.service.WxAppinfoService; | |||
| import com.iformall.utils.DateUtils; | |||
| import me.chanjar.weixin.common.util.crypto.SHA1; | |||
| import org.slf4j.Logger; | |||
| @@ -35,90 +33,49 @@ public class TtWebController extends BaseController { | |||
| @Autowired | |||
| private WxAppinfoService wxAppinfoService; | |||
| @Autowired | |||
| private TtCouponGoodsService ttCouponGoodsService; | |||
| /** | |||
| * { | |||
| * "event": "verify_webhook", | |||
| * "client_key": "", | |||
| * "content": { | |||
| * "challenge": 12345 | |||
| * } | |||
| * "event": "verify_webhook", | |||
| * "client_key": "", | |||
| * "content": { | |||
| * "challenge": 12345 | |||
| * } | |||
| * } | |||
| */ | |||
| @PostMapping(value = "/notice") | |||
| @ResponseBody | |||
| public Map notice( @RequestBody Map<String, Object> parameterMap,HttpServletRequest request){ | |||
| public Map<String, Object> notice(@RequestBody Map<String, Object> parameterMap, HttpServletRequest request) { | |||
| logger.debug("[" + getIpAddr() + "] TtOrderCallbackController::notice"); | |||
| logger.info("抖音开放平台通知-----{}"+JSON.toJSONString(parameterMap)); | |||
| Map resultMap = new HashMap<>(); | |||
| String event = (String) parameterMap.get("event"); | |||
| String client_key = (String) parameterMap.get("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> resultMap = new HashMap<>(); | |||
| // String body = ((BodyReaderHttpServletRequestWrapper) request).getBody(); | |||
| logger.info("抖音开放平台通知-----parameterMap{}" + parameterMap); | |||
| try { | |||
| String header = request.getHeader("X-Douyin-Signature"); | |||
| logger.info("抖音开放平台通知-----header.X-Douyin-Signature{}" + header); | |||
| String client_key = (String) parameterMap.get("client_key"); | |||
| logger.info("抖音开放平台通知-----client_key{}" + client_key); | |||
| WxAppinfo appInfo = wxAppinfoService.getByAppId(client_key); | |||
| // Map<String, Object> parameterMap = JSONObject.parseObject(body, Map.class); | |||
| String header = request.getHeader("X-Douyin-Signature"); | |||
| 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("抖音开放平台通知{}"+JSON.toJSONString(parameterMap)); | |||
| sb.append("\n"); | |||
| sb.append("sha1gen{}"+sha1gen); | |||
| sb.append("\n"); | |||
| sb.append("header{}"+header); | |||
| //发送邮件 | |||
| mailService.sendSimpleMail(receivers, "抖音开放平台通知", sb.toString()); | |||
| if("verify_webhook".equals(event)){ | |||
| Map content = (Map) parameterMap.get("content"); | |||
| Integer challenge = (Integer) content.get("challenge"); | |||
| resultMap.put("challenge",challenge); | |||
| // logger.info(JSON.toJSONString(content)); | |||
| return resultMap; | |||
| }else if("life_goods_audit".equals(event)){ | |||
| String content = (String) parameterMap.get("content"); | |||
| JSONObject jsonObject = JSON.parseObject(content); | |||
| String product_id = jsonObject.getString("product_id"); | |||
| String reason = jsonObject.getString("reason"); | |||
| String status = jsonObject.getString("status"); | |||
| // 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("PASS".equals(status)){ | |||
| couponChannelPoi.setLastStatus(EnumSpuSyncStatus.sync_audit_pass.getCode()); | |||
| couponChannelPoi.setLastStatusDesc(reason); | |||
| }else{ | |||
| resultMap.put("err_code",1000); | |||
| resultMap.put("err_tips","error"); | |||
| 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); | |||
| resultMap.put("challenge", challenge); | |||
| return resultMap; | |||
| } catch (Exception e) { | |||
| logger.error(e.getMessage()); | |||
| resultMap.put("err_code", 1000); | |||
| resultMap.put("err_tips", "error"); | |||
| return resultMap; | |||
| } | |||
| ttCouponGoodsService.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; | |||
| } | |||
| } | |||