parent
5c6125c14a
commit
8bf48d053e
@ -0,0 +1,85 @@
|
||||
package au.com.royalpay.payment.manage.customers.core.impls;
|
||||
|
||||
import au.com.royalpay.payment.core.events.AfterPaymentFinishEvent;
|
||||
import au.com.royalpay.payment.manage.mappers.system.CustomerMapper;
|
||||
import au.com.royalpay.payment.tools.threadpool.RoyalThreadPoolExecutor;
|
||||
import cn.yixblog.platform.http.HttpRequestGenerator;
|
||||
import cn.yixblog.platform.http.HttpRequestResult;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.apache.commons.codec.digest.DigestUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.context.ApplicationListener;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
import org.springframework.web.util.UriComponentsBuilder;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Service
|
||||
public class CustomerLotteryCountServiceImpl implements ApplicationListener<AfterPaymentFinishEvent> {
|
||||
private Logger logger = LoggerFactory.getLogger(getClass());
|
||||
|
||||
@Value("${app.customer.host}")
|
||||
private String CUSTOMER_HOST;
|
||||
|
||||
@Value("${customer.app.appid}")
|
||||
private String CUSTOMER_APP_ID;
|
||||
|
||||
@Value("${customer.app.auth-code}")
|
||||
private String CUSTOMER_AUTH_CODE;
|
||||
|
||||
@Resource
|
||||
private RoyalThreadPoolExecutor royalThreadPoolExecutor;
|
||||
@Resource
|
||||
private CustomerMapper customerMapper;
|
||||
|
||||
@Override
|
||||
public void onApplicationEvent(AfterPaymentFinishEvent event) {
|
||||
final JSONObject order = event.getFinishedEvent().getOrder();
|
||||
BigDecimal clearAmount = event.getFinishedEvent().getAudFee();
|
||||
String channel = order.getString("channel");
|
||||
if ("Wechat".equals(channel)) {
|
||||
JSONObject customerRelation = customerMapper.findCustomerByOpenId(order.getString("customer_id"));
|
||||
if (customerRelation.getString("kanga_openid") == null) {
|
||||
return;
|
||||
}
|
||||
royalThreadPoolExecutor.execute(() -> afterPaymentAddLotteryCount(customerRelation.getString("kanga_openid"),
|
||||
order.getString("order_id"), channel, clearAmount));
|
||||
}
|
||||
if ("Alipay".equals(channel)) {
|
||||
royalThreadPoolExecutor.execute(() -> afterPaymentAddLotteryCount(order.getString("customer_id"),
|
||||
order.getString("order_id"), channel, clearAmount));
|
||||
}
|
||||
}
|
||||
|
||||
private void afterPaymentAddLotteryCount(String id, String orderId, String channel, BigDecimal clearAmount) {
|
||||
String timestamp = System.currentTimeMillis() + "";
|
||||
String base = CUSTOMER_APP_ID + timestamp + CUSTOMER_AUTH_CODE;
|
||||
String sign = DigestUtils.sha256Hex(base).toLowerCase();
|
||||
String uri = UriComponentsBuilder.fromHttpUrl(CUSTOMER_HOST + "activity/luck_draw/payment/lottery/count")
|
||||
.queryParam("appid", CUSTOMER_APP_ID)
|
||||
.queryParam("timestamp", timestamp)
|
||||
.queryParam("sign", sign)
|
||||
.queryParam("id", id)
|
||||
.queryParam("orderId", orderId)
|
||||
.queryParam("channel", channel)
|
||||
.queryParam("amount", clearAmount)
|
||||
.toUriString();
|
||||
HttpRequestGenerator gen = new HttpRequestGenerator(uri, RequestMethod.POST);
|
||||
try {
|
||||
HttpRequestResult result = gen.execute();
|
||||
if (result.isSuccess()) {
|
||||
int statusCode = result.getStatusCode();
|
||||
if (statusCode == 200) {
|
||||
logger.info("抽奖次数添加成功");
|
||||
}
|
||||
}
|
||||
|
||||
} catch (Exception ignored) {
|
||||
ignored.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in new issue