| @@ -1,10 +1,12 @@ | |||||
| package com.iformall.controller.callback; | package com.iformall.controller.callback; | ||||
| import com.alibaba.fastjson.JSON; | |||||
| import com.alibaba.fastjson.JSONObject; | import com.alibaba.fastjson.JSONObject; | ||||
| import com.iformall.controller.base.BaseController; | import com.iformall.controller.base.BaseController; | ||||
| import com.iformall.domain.po.TtCouponChannelPoi; | |||||
| import com.iformall.domain.po.WxAppinfo; | import com.iformall.domain.po.WxAppinfo; | ||||
| import com.iformall.service.MailService; | |||||
| import com.iformall.service.WxAppinfoService; | |||||
| import com.iformall.enums.EnumSpuSyncStatus; | |||||
| import com.iformall.service.*; | |||||
| import com.iformall.utils.DateUtils; | import com.iformall.utils.DateUtils; | ||||
| import me.chanjar.weixin.common.util.crypto.SHA1; | import me.chanjar.weixin.common.util.crypto.SHA1; | ||||
| import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
| @@ -33,49 +35,89 @@ public class TtWebController extends BaseController { | |||||
| @Autowired | @Autowired | ||||
| private WxAppinfoService wxAppinfoService; | 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") | @PostMapping(value = "/notice") | ||||
| @ResponseBody | @ResponseBody | ||||
| public Map<String, Object> notice(@RequestBody Map<String, Object> parameterMap, HttpServletRequest request) { | |||||
| public Map notice( @RequestBody Map<String, Object> parameterMap,HttpServletRequest request){ | |||||
| logger.debug("[" + getIpAddr() + "] TtOrderCallbackController::notice"); | logger.debug("[" + getIpAddr() + "] TtOrderCallbackController::notice"); | ||||
| 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 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); | |||||
| 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; | |||||
| } | |||||
| resultMap.put("challenge", challenge); | |||||
| return resultMap; | |||||
| } catch (Exception e) { | |||||
| logger.error(e.getMessage()); | |||||
| resultMap.put("err_code", 1000); | |||||
| resultMap.put("err_tips", "error"); | |||||
| 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 = (HashMap) parameterMap.get("content"); | |||||
| String challenge = content.get("challenge").toString(); | |||||
| resultMap.put("challenge", challenge); | |||||
| 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"); | |||||
| return resultMap; | 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; | |||||
| } | |||||
| } | |||||